From 1e8b4c1e2e7435db6b473ae0b09742cc97ac2c2f Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Sat, 30 Dec 2023 07:47:26 -0600 Subject: [PATCH 1/2] split libmsm --- config/GMPE01_00/splits.txt | 26 ++++++++++++++++++++++++++ config/GMPE01_00/symbols.txt | 7 +++---- configure.py | 19 +++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index a41b4447..683dcaf7 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -1406,5 +1406,31 @@ libhu/setvf.c: libhu/subvf.c: .text start:0x80115474 end:0x801154A8 +msm/msmsys.c: + .text start:0x801154A8 end:0x801176C8 + .bss start:0x801D2C20 end:0x801D3120 + .sdata2 start:0x801D6BB8 end:0x801D6BC0 + +msm/msmmem.c: + .text start:0x801176C8 end:0x801178F8 + .bss start:0x801D3120 end:0x801D3150 + +msm/msmfio.c: + .text start:0x801178F8 end:0x801179E8 + .bss start:0x801D3150 end:0x801D3160 + +msm/msmmus.c: + .text start:0x801179E8 end:0x80118A80 + .bss start:0x801D3160 end:0x801D32D8 + +msm/msmse.c: + .text start:0x80118A80 end:0x8011A044 + .bss start:0x801D32D8 end:0x801D33C0 + .sdata2 start:0x801D6BC0 end:0x801D6BD8 + +msm/msmstream.c: + .text start:0x8011A044 end:0x8011CCC4 + .bss start:0x801D33C0 end:0x801D3420 + game/kerent.c: .text start:0x8011CCC4 end:0x8011DCA8 diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 6e7e35ce..94b8012c 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -5693,11 +5693,11 @@ aramQueueHi = .bss:0x801D053C; // type:object size:0x284 scope:local aramStreamBuffers = .bss:0x801D07C0; // type:object size:0x400 scope:local data:4byte dsp_task = .bss:0x801D0BC0; // type:object size:0x60 scope:local align:8 dram_image = .bss:0x801D0C20; // type:object size:0x2000 scope:local align:32 -sys = .bss:0x801D2C20; // type:object size:0x500 scope:local data:4byte +sys = .bss:0x801D2C20; // type:object size:0x4FC scope:local data:4byte mem = .bss:0x801D3120; // type:object size:0x2C scope:local data:4byte fio = .bss:0x801D3150; // type:object size:0xC scope:local data:4byte mus = .bss:0x801D3160; // type:object size:0x178 scope:local data:2byte -se = .bss:0x801D32D8; // type:object size:0xE8 scope:local data:4byte +se = .bss:0x801D32D8; // type:object size:0xDC scope:local data:4byte StreamInfo = .bss:0x801D33C0; // type:object size:0x60 scope:local align:32 data:4byte lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x5 data:string lbl_801D3425 = .sdata:0x801D3425; // type:object size:0x7 @@ -8556,8 +8556,7 @@ value0_3 = .sdata2:0x801D6BA0; // type:object size:0x4 scope:local data:float value0_6 = .sdata2:0x801D6BA4; // type:object size:0x4 scope:local data:float lbl_801D6BA8 = .sdata2:0x801D6BA8; // type:object size:0x4 data:float i2fMagic = .sdata2:0x801D6BB0; // type:object size:0x8 scope:local data:double -lbl_801D6BB8 = .sdata2:0x801D6BB8; // type:object size:0x4 data:4byte -lbl_801D6BBC = .sdata2:0x801D6BBC; // type:object size:0x4 data:4byte +lbl_801D6BB8 = .sdata2:0x801D6BB8; // type:object size:0x8 data:4byte lbl_801D6BC0 = .sdata2:0x801D6BC0; // type:object size:0x4 data:float lbl_801D6BC4 = .sdata2:0x801D6BC4; // type:object size:0x4 data:float lbl_801D6BC8 = .sdata2:0x801D6BC8; // type:object size:0x4 data:float diff --git a/configure.py b/configure.py index cc796128..84c7baa5 100644 --- a/configure.py +++ b/configure.py @@ -248,6 +248,11 @@ cflags_libhu = [ "-fp_contract off", ] +# Game flags +cflags_msm = [ + *cflags_base, +] + config.linker_version = "GC/2.6" config.rel_strip_partial = False config.rel_empty_file = "REL/empty.c" @@ -734,6 +739,20 @@ config.libs = [ Object(NonMatching, "libhu/subvf.c"), ], }, + { + "lib": "msm", + "mw_version": config.linker_version, + "cflags": cflags_msm, + "host": False, + "objects": [ + Object(NonMatching, "msm/msmsys.c"), + Object(NonMatching, "msm/msmmem.c"), + Object(NonMatching, "msm/msmfio.c"), + Object(NonMatching, "msm/msmmus.c"), + Object(NonMatching, "msm/msmse.c"), + Object(NonMatching, "msm/msmstream.c"), + ], + }, { "lib": "_minigameDLL", "mw_version": config.linker_version, From c6f0d0c7f814dfea654c05039db1c3eab592c2cc Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Sat, 30 Dec 2023 08:00:09 -0600 Subject: [PATCH 2/2] Fix splits --- config/GMPE01_00/splits.txt | 20 +++++++++++++++----- config/GMPE01_00/symbols.txt | 2 +- configure.py | 2 ++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 683dcaf7..845836c0 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -215,6 +215,7 @@ game/code_8003FF68.c: .data start:0x80130100 end:0x80130120 .bss start:0x80192060 end:0x80192360 .sdata start:0x801D35C0 end:0x801D35E0 + .sbss start:0x801D3DA0 end:0x801D3DA8 .sdata2 start:0x801D4EA8 end:0x801D4EC0 game/ClusterExec.c: @@ -225,9 +226,6 @@ game/ShapeExec.c: .text start:0x80040D60 end:0x80041170 .sdata2 start:0x801D4ED0 end:0x801D4EE0 -dolphin/os/__start.c: - .init start:0x80003100 end:0x80003354 - game/wipe.c: .text start:0x80041170 end:0x8004207C .data start:0x80130120 end:0x80130138 @@ -554,6 +552,9 @@ game/board/tutorial.c: .bss start:0x801A52E8 end:0x801A5300 .sbss start:0x801D4288 end:0x801D42B0 +dolphin/os/__start.c: + .init start:0x80003100 end:0x80003354 + dolphin/PPCArch.c: .text start:0x800B42F4 end:0x800B439C @@ -734,6 +735,7 @@ dolphin/demo/DEMOInit.c: dolphin/demo/DEMOPuts.c: .text start:0x800C2988 end:0x800C2F84 + .bss start:0x801A6190 end:0x801A61B0 .sbss start:0x801D4480 end:0x801D4488 .sdata2 start:0x801D63B8 end:0x801D63D8 @@ -1213,12 +1215,16 @@ TRK_MINNOW_DOLPHIN/targimpl.c: .text start:0x800F0454 end:0x800F1CF0 .rodata start:0x8011EA90 end:0x8011EB18 .data start:0x8013EA58 end:0x8013EA88 - .bss start:0x801A91E0 end:0x801A96B8 + .bss start:0x801A9138 end:0x801A96B8 TRK_MINNOW_DOLPHIN/targsupp.c: .text start:0x800F1CF0 end:0x800F1D10 +TRK_MINNOW_DOLPHIN/__exception.c: + .init start:0x80003534 end:0x80005468 + TRK_MINNOW_DOLPHIN/dolphin_trk.c: + .init start:0x80005468 end:0x8000556C .text start:0x800F1D10 end:0x800F1E50 .data start:0x8013EA88 end:0x8013EAC8 .bss start:0x801A96B8 end:0x801A96C0 @@ -1226,8 +1232,12 @@ TRK_MINNOW_DOLPHIN/dolphin_trk.c: TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c: .text start:0x800F1E50 end:0x800F21C8 +TRK_MINNOW_DOLPHIN/main_TRK.c: + .text start:0x800F21C8 end:0x800F220C + .bss start:0x801A96C0 end:0x801A96C8 + TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c: - .text start:0x800F21C8 end:0x800F26B8 + .text start:0x800F220C end:0x800F26B8 .rodata start:0x8011EB18 end:0x8011EB60 .data start:0x8013EAC8 end:0x8013EAE8 .bss start:0x801A96C8 end:0x801AB8F0 diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 94b8012c..8e77c051 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -12,7 +12,7 @@ TRK_memcpy = .init:0x80003510; // type:function size:0x24 gTRKInterruptVectorTable = .init:0x80003534; // type:label scope:global lbl_8000387C = .init:0x8000387C; // type:label lbl_800038E0 = .init:0x800038E0; // type:label -fn_80005468 = .init:0x80005468; // type:function size:0x104 +__TRK_reset = .init:0x80005468; // type:function size:0x104 gTRKInterruptVectorTableEnd = .init:0x80005468; // type:label scope:global _rom_copy_info = .init:0x8000556C; // type:object size:0x84 scope:global data:4byte _bss_init_info = .init:0x800055F0; // type:object size:0x20 scope:global data:4byte diff --git a/configure.py b/configure.py index 84c7baa5..091c3847 100644 --- a/configure.py +++ b/configure.py @@ -649,8 +649,10 @@ config.libs = [ Object(NonMatching, "TRK_MINNOW_DOLPHIN/mem_TRK.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/targimpl.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/targsupp.c"), + Object(NonMatching, "TRK_MINNOW_DOLPHIN/__exception.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c"), + Object(NonMatching, "TRK_MINNOW_DOLPHIN/main_TRK.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/targcont.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/target_options.c"),