diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7ec1eb..9e1d495 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,4 +35,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{matrix.version}}.MAP - path: build/${{matrix.version}}.MAP + path: build/${{matrix.version}}/main.MAP diff --git a/config/G2MJ01/config.yml b/config/G2MJ01/config.yml index 6ec8d95..64881d6 100644 --- a/config/G2MJ01/config.yml +++ b/config/G2MJ01/config.yml @@ -1,3 +1,91 @@ object: orig/G2MJ01/sys/main.dol splits: config/G2MJ01/splits.txt symbols: config/G2MJ01/symbols.txt +auto_force_files: false +modules: + - object: orig/G2MJ01/files/RelProd/AIMannedTurret.rel + - object: orig/G2MJ01/files/RelProd/AtomicAlpha.rel + - object: orig/G2MJ01/files/RelProd/AtomicBeta.rel + - object: orig/G2MJ01/files/RelProd/BacteriaSwarm.rel + - object: orig/G2MJ01/files/RelProd/Blogg.rel + - object: orig/G2MJ01/files/RelProd/ChozoGhost.rel + - object: orig/G2MJ01/files/RelProd/CommandoPirate.rel + - object: orig/G2MJ01/files/RelProd/DarkCommando.rel + - object: orig/G2MJ01/files/RelProd/DarkSamus.rel + - object: orig/G2MJ01/files/RelProd/DarkSamusBattleStage.rel + - object: orig/G2MJ01/files/RelProd/DarkTrooper.rel + - object: orig/G2MJ01/files/RelProd/DestructibleBarrier.rel + - object: orig/G2MJ01/files/RelProd/DigitalGuardian.rel + - object: orig/G2MJ01/files/RelProd/ElitePirate.rel + - object: orig/G2MJ01/files/RelProd/EmperorIngStage1.rel + - object: orig/G2MJ01/files/RelProd/EmperorIngStage2Tentacle.rel + - object: orig/G2MJ01/files/RelProd/EmperorIngStage3.rel + - object: orig/G2MJ01/files/RelProd/EyeBall.rel + - object: orig/G2MJ01/files/RelProd/FishCloud.rel + - object: orig/G2MJ01/files/RelProd/FlyerSwarm.rel + - object: orig/G2MJ01/files/RelProd/FlyingPirate.rel + - object: orig/G2MJ01/files/RelProd/FogOverlay.rel + - object: orig/G2MJ01/files/RelProd/ForgottenObject.rel + - object: orig/G2MJ01/files/RelProd/GeomBlobV2.rel + - object: orig/G2MJ01/files/RelProd/Glowbug.rel + - object: orig/G2MJ01/files/RelProd/Grenchler.rel + - object: orig/G2MJ01/files/RelProd/GunTurret.rel + - object: orig/G2MJ01/files/RelProd/Ing.rel + - object: orig/G2MJ01/files/RelProd/IngBlobSwarm.rel + - object: orig/G2MJ01/files/RelProd/IngBoostBallGuardian.rel + - object: orig/G2MJ01/files/RelProd/IngPuddle.rel + - object: orig/G2MJ01/files/RelProd/IngSnatchingSwarm.rel + - object: orig/G2MJ01/files/RelProd/IngSpaceJumpGuardian.rel + - object: orig/G2MJ01/files/RelProd/IngSpiderballGuardian.rel + - object: orig/G2MJ01/files/RelProd/IngSwarm.rel + - object: orig/G2MJ01/files/RelProd/Kralee.rel + - object: orig/G2MJ01/files/RelProd/Krocuss.rel + - object: orig/G2MJ01/files/RelProd/Lumite.rel + - object: orig/G2MJ01/files/RelProd/MediumIng.rel + - object: orig/G2MJ01/files/RelProd/Metaree.rel + - object: orig/G2MJ01/files/RelProd/MetareeSwarm.rel + - object: orig/G2MJ01/files/RelProd/Metroid.rel + - object: orig/G2MJ01/files/RelProd/MinorIng.rel + - object: orig/G2MJ01/files/RelProd/MysteryFlyer.rel + - object: orig/G2MJ01/files/RelProd/OctapedeSegment.rel + - object: orig/G2MJ01/files/RelProd/Parasite.rel + - object: orig/G2MJ01/files/RelProd/PillBug.rel + - object: orig/G2MJ01/files/RelProd/PirateRagDoll.rel + - object: orig/G2MJ01/files/RelProd/PlantScarabSwarm.rel + - object: orig/G2MJ01/files/RelProd/PuddleSpore.rel + - object: orig/G2MJ01/files/RelProd/Puffer.rel + - object: orig/G2MJ01/files/RelProd/Rezbit.rel + - object: orig/G2MJ01/files/RelProd/Ripper.rel + - object: orig/G2MJ01/files/RelProd/RubiksPuzzle.rel + - object: orig/G2MJ01/files/RelProd/SandBoss.rel + - object: orig/G2MJ01/files/RelProd/Sandworm.rel + - object: orig/G2MJ01/files/RelProd/ScriptCannonBall.rel + - object: orig/G2MJ01/files/RelProd/ScriptCoin.rel + - object: orig/G2MJ01/files/RelProd/ScriptFrontEndDataNetwork.rel + - object: orig/G2MJ01/files/RelProd/ScriptGui.rel + - object: orig/G2MJ01/files/RelProd/ScriptPlayerActor.rel + - object: orig/G2MJ01/files/RelProd/ScriptPlayerProxy.rel + - object: orig/G2MJ01/files/RelProd/ScriptPlayerTurret.rel + - object: orig/G2MJ01/files/RelProd/ScriptRiftPortal.rel + - object: orig/G2MJ01/files/RelProd/ScriptRsfAudio.rel + - object: orig/G2MJ01/files/RelProd/ScriptSafeZone.rel + - object: orig/G2MJ01/files/RelProd/ScriptStreamedMovie.rel + - object: orig/G2MJ01/files/RelProd/Shredder.rel + - object: orig/G2MJ01/files/RelProd/Shrieker.rel + - object: orig/G2MJ01/files/RelProd/SkyRipple.rel + - object: orig/G2MJ01/files/RelProd/SnakeWeedSwarm.rel + - object: orig/G2MJ01/files/RelProd/SpacePirate.rel + - object: orig/G2MJ01/files/RelProd/SpankWeed.rel + - object: orig/G2MJ01/files/RelProd/Splinter.rel + - object: orig/G2MJ01/files/RelProd/Splitter.rel + - object: orig/G2MJ01/files/RelProd/Sporb.rel + - object: orig/G2MJ01/files/RelProd/StoneToad.rel + - object: orig/G2MJ01/files/RelProd/SwampBossStage1.rel + - object: orig/G2MJ01/files/RelProd/SwampBossStage2.rel + - object: orig/G2MJ01/files/RelProd/SwarmBasics.rel + - object: orig/G2MJ01/files/RelProd/Tryclops.rel + - object: orig/G2MJ01/files/RelProd/Tweaks.rel + - object: orig/G2MJ01/files/RelProd/WallCrawler.rel + - object: orig/G2MJ01/files/RelProd/WallCrawlerSwarm.rel + - object: orig/G2MJ01/files/RelProd/WallWalker.rel + - object: orig/G2MJ01/files/RelProd/WispTentacle.rel diff --git a/config/G2MJ01/splits.txt b/config/G2MJ01/splits.txt index e69de29..e8dd61c 100644 --- a/config/G2MJ01/splits.txt +++ b/config/G2MJ01/splits.txt @@ -0,0 +1,13 @@ +MetroidPrime/CAxisAngle.cpp: + .bss start:0x8040DCE0 end:0x8040DCEC common + +Runtime/global_destructor_chain.c: + .text start:0x80347074 end:0x803470D4 + .sbss start:0x8041CD40 end:0x8041CD44 + +Runtime/__init_cpp_exceptions.cpp: + .text start:0x80347ED0 end:0x80347F40 + .ctors start:0x803A7740 end:0x803A7744 rename:.ctors$10 + .dtors start:0x803A7940 end:0x803A7944 rename:.dtors$10 + .dtors start:0x803A7944 end:0x803A7948 rename:.dtors$15 + .sdata start:0x8041BD50 end:0x8041BD58 diff --git a/config/G2MJ01/symbols.txt b/config/G2MJ01/symbols.txt index 4be5e41..8308481 100644 --- a/config/G2MJ01/symbols.txt +++ b/config/G2MJ01/symbols.txt @@ -15473,7 +15473,7 @@ fn_80346EB8 = .text:0x80346EB8; // type:function size:0x54 align:0x4 fn_80346F0C = .text:0x80346F0C; // type:function size:0xA0 align:0x4 __va_arg = .text:0x80346FAC; // type:function size:0xC8 scope:global __destroy_global_chain = .text:0x80347074; // type:function size:0x48 scope:global -fn_803470BC = .text:0x803470BC; // type:function size:0x18 align:0x4 +__register_global_object = .text:0x803470BC; // type:function size:0x18 scope:global align:0x4 fn_803470D4 = .text:0x803470D4; // type:function size:0x30 fn_80347104 = .text:0x80347104; // type:function size:0x74 fn_80347178 = .text:0x80347178; // type:function size:0x4C @@ -16856,10 +16856,10 @@ fn_803A724C = .text:0x803A724C; // type:function size:0x2BC fn_803A7508 = .text:0x803A7508; // type:function size:0x200 fn_803A7708 = .text:0x803A7708; // type:function size:0x28 _ctors = .ctors:0x803A7740; // type:label scope:global data:4byte -__init_cpp_exceptions_reference = .ctors:0x803A7740; // type:object size:0x4 scope:local +__init_cpp_exceptions_reference = .ctors:0x803A7740; // type:object size:0x4 scope:global _dtors = .dtors:0x803A7940; // type:label scope:global data:4byte -__destroy_global_chain_reference = .dtors:0x803A7940; // type:object size:0x4 scope:local -__fini_cpp_exceptions_reference = .dtors:0x803A7944; // type:object size:0x4 scope:local +__destroy_global_chain_reference = .dtors:0x803A7940; // type:object size:0x4 scope:global +__fini_cpp_exceptions_reference = .dtors:0x803A7944; // type:object size:0x4 scope:global lbl_803A7960 = .rodata:0x803A7960; // type:object size:0x1F0 lbl_803A7B50 = .rodata:0x803A7B50; // type:object size:0x448 lbl_803A7F98 = .rodata:0x803A7F98; // type:object size:0x14 @@ -18118,7 +18118,7 @@ lbl_803B7DE8 = .data:0x803B7DE8; // type:object size:0x98 lbl_803B7E80 = .data:0x803B7E80; // type:object size:0x20 lbl_803B7EA0 = .data:0x803B7EA0; // type:object size:0x40 lbl_803B7EE0 = .data:0x803B7EE0; // type:object size:0x98 -lbl_803B7F78 = .data:0x803B7F78; // type:object size:0x68 +jumptable_803B7F78 = .data:0x803B7F78; // type:object size:0x68 scope:local lbl_803B7FE0 = .data:0x803B7FE0; // type:object size:0x10 lbl_803B7FF0 = .data:0x803B7FF0; // type:object size:0x10 lbl_803B8000 = .data:0x803B8000; // type:object size:0x10 @@ -18312,7 +18312,7 @@ jumptable_803BB224 = .data:0x803BB224; // type:object size:0x20 scope:local jumptable_803BB244 = .data:0x803BB244; // type:object size:0x20 scope:local jumptable_803BB264 = .data:0x803BB264; // type:object size:0x20 scope:local jumptable_803BB284 = .data:0x803BB284; // type:object size:0x20 scope:local -lbl_803BB2A8 = .data:0x803BB2A8; // type:object size:0x68 +jumptable_803BB2A8 = .data:0x803BB2A8; // type:object size:0x68 scope:local lbl_803BB310 = .data:0x803BB310; // type:object size:0x80 lbl_803BB390 = .data:0x803BB390; // type:object size:0x80 lbl_803BB410 = .data:0x803BB410; // type:object size:0xC data:4byte @@ -18718,9 +18718,9 @@ lbl_803C0BC0 = .data:0x803C0BC0; // type:object size:0x16C lbl_803C0D2C = .data:0x803C0D2C; // type:object size:0xC0 data:4byte lbl_803C0DEC = .data:0x803C0DEC; // type:object size:0x14 jumptable_803C0E00 = .data:0x803C0E00; // type:object size:0x68 scope:local -lbl_803C0E68 = .data:0x803C0E68; // type:object size:0x68 +jumptable_803C0E68 = .data:0x803C0E68; // type:object size:0x68 scope:local jumptable_803C0ED0 = .data:0x803C0ED0; // type:object size:0x44 scope:local -lbl_803C0F14 = .data:0x803C0F14; // type:object size:0x44 +jumptable_803C0F14 = .data:0x803C0F14; // type:object size:0x44 scope:local jumptable_803C0F58 = .data:0x803C0F58; // type:object size:0x1C scope:local jumptable_803C0F74 = .data:0x803C0F74; // type:object size:0x54 scope:local lbl_803C0FC8 = .data:0x803C0FC8; // type:object size:0x3C @@ -19030,8 +19030,8 @@ lbl_8040B5FC = .bss:0x8040B5FC; // type:object size:0x284 lbl_8040B880 = .bss:0x8040B880; // type:object size:0x400 data:4byte lbl_8040BC80 = .bss:0x8040BC80; // type:object size:0x60 lbl_8040BCE0 = .bss:0x8040BCE0; // type:object size:0x2000 -lbl_8040DCE0 = .bss:0x8040DCE0; // type:object size:0xC -lbl_8040DCEC = .bss:0x8040DCEC; // type:object size:0xC data:float +sIdentity__10CAxisAngle = .bss:0x8040DCE0; // type:object size:0xC scope:global align:0x4 +sIdentity__12CEulerAngles = .bss:0x8040DCEC; // type:object size:0xC scope:global align:0x4 data:float lbl_8040DCF8 = .bss:0x8040DCF8; // type:object size:0x184 data:4byte lbl_8040DE7C = .bss:0x8040DE7C; // type:object size:0x404 data:4byte lbl_8040E280 = .bss:0x8040E280; // type:object size:0x1104 data:4byte @@ -20453,7 +20453,8 @@ lbl_8041C41A = .sbss:0x8041C41A; // type:object size:0x6 data:byte lbl_8041C420 = .sbss:0x8041C420; // type:object size:0x1 data:byte lbl_8041C424 = .sbss:0x8041C424; // type:object size:0x1 data:byte lbl_8041C428 = .sbss:0x8041C428; // type:object size:0x8 data:byte -lbl_8041C430 = .sbss:0x8041C430; // type:object size:0x10 data:4byte +lbl_8041C430 = .sbss:0x8041C430; // type:object size:0x8 data:4byte +lbl_8041C438 = .sbss:0x8041C438; // type:object size:0x8 lbl_8041C440 = .sbss:0x8041C440; // type:object size:0x8 data:4byte lbl_8041C448 = .sbss:0x8041C448; // type:object size:0x8 data:4byte lbl_8041C450 = .sbss:0x8041C450; // type:object size:0x8 data:4byte @@ -22776,7 +22777,8 @@ lbl_8041F108 = .sdata2:0x8041F108; // type:object size:0x4 data:float lbl_8041F10C = .sdata2:0x8041F10C; // type:object size:0x4 data:float lbl_8041F110 = .sdata2:0x8041F110; // type:object size:0x4 data:float lbl_8041F118 = .sdata2:0x8041F118; // type:object size:0x8 data:double -lbl_8041F120 = .sdata2:0x8041F120; // type:object size:0xC data:float +lbl_8041F120 = .sdata2:0x8041F120; // type:object size:0x8 data:float +lbl_8041F128 = .sdata2:0x8041F128; // type:object size:0x4 lbl_8041F12C = .sdata2:0x8041F12C; // type:object size:0x4 data:float lbl_8041F130 = .sdata2:0x8041F130; // type:object size:0x4 data:float lbl_8041F134 = .sdata2:0x8041F134; // type:object size:0x4 data:float @@ -23014,7 +23016,11 @@ lbl_8041F568 = .sdata2:0x8041F568; // type:object size:0x4 data:float lbl_8041F56C = .sdata2:0x8041F56C; // type:object size:0x4 data:float lbl_8041F570 = .sdata2:0x8041F570; // type:object size:0x4 data:float lbl_8041F574 = .sdata2:0x8041F574; // type:object size:0x4 data:float -lbl_8041F578 = .sdata2:0x8041F578; // type:object size:0xC data:float +lbl_8041F578 = .sdata2:0x8041F578; // type:object size:0x8 data:float +lbl_8041F580 = .sdata2:0x8041F580; // type:object size:0x1 +lbl_8041F581 = .sdata2:0x8041F581; // type:object size:0x1 +lbl_8041F582 = .sdata2:0x8041F582; // type:object size:0x1 +lbl_8041F583 = .sdata2:0x8041F583; // type:object size:0x1 lbl_8041F584 = .sdata2:0x8041F584; // type:object size:0x4 data:float lbl_8041F588 = .sdata2:0x8041F588; // type:object size:0x8 data:double lbl_8041F590 = .sdata2:0x8041F590; // type:object size:0x4 data:float @@ -23371,7 +23377,8 @@ lbl_8041FB94 = .sdata2:0x8041FB94; // type:object size:0x4 data:float lbl_8041FB98 = .sdata2:0x8041FB98; // type:object size:0x8 data:float lbl_8041FBA0 = .sdata2:0x8041FBA0; // type:object size:0x4 data:float lbl_8041FBA4 = .sdata2:0x8041FBA4; // type:object size:0x4 data:float -lbl_8041FBA8 = .sdata2:0x8041FBA8; // type:object size:0x10 data:float +lbl_8041FBA8 = .sdata2:0x8041FBA8; // type:object size:0x8 data:float +lbl_8041FBB0 = .sdata2:0x8041FBB0; // type:object size:0x8 lbl_8041FBB8 = .sdata2:0x8041FBB8; // type:object size:0x8 data:float lbl_8041FBC0 = .sdata2:0x8041FBC0; // type:object size:0x4 data:float lbl_8041FBC4 = .sdata2:0x8041FBC4; // type:object size:0x4 data:float @@ -23952,7 +23959,8 @@ lbl_804205DC = .sdata2:0x804205DC; // type:object size:0x4 data:float lbl_804205E0 = .sdata2:0x804205E0; // type:object size:0x4 data:float lbl_804205E4 = .sdata2:0x804205E4; // type:object size:0x4 data:float lbl_804205E8 = .sdata2:0x804205E8; // type:object size:0x8 data:float -lbl_804205F0 = .sdata2:0x804205F0; // type:object size:0xC data:4byte +lbl_804205F0 = .sdata2:0x804205F0; // type:object size:0x8 data:4byte +lbl_804205F8 = .sdata2:0x804205F8; // type:object size:0x4 lbl_804205FC = .sdata2:0x804205FC; // type:object size:0x4 data:float lbl_80420600 = .sdata2:0x80420600; // type:object size:0x4 data:float lbl_80420604 = .sdata2:0x80420604; // type:object size:0x4 data:float diff --git a/config/G2MP01/config.yml b/config/G2MP01/config.yml index ae1b193..82de87a 100644 --- a/config/G2MP01/config.yml +++ b/config/G2MP01/config.yml @@ -1,3 +1,91 @@ object: orig/G2MP01/sys/main.dol splits: config/G2MP01/splits.txt symbols: config/G2MP01/symbols.txt +auto_force_files: false +modules: + - object: orig/G2MP01/files/RelProd/AIMannedTurret.rel + - object: orig/G2MP01/files/RelProd/AtomicAlpha.rel + - object: orig/G2MP01/files/RelProd/AtomicBeta.rel + - object: orig/G2MP01/files/RelProd/BacteriaSwarm.rel + - object: orig/G2MP01/files/RelProd/Blogg.rel + - object: orig/G2MP01/files/RelProd/ChozoGhost.rel + - object: orig/G2MP01/files/RelProd/CommandoPirate.rel + - object: orig/G2MP01/files/RelProd/DarkCommando.rel + - object: orig/G2MP01/files/RelProd/DarkSamus.rel + - object: orig/G2MP01/files/RelProd/DarkSamusBattleStage.rel + - object: orig/G2MP01/files/RelProd/DarkTrooper.rel + - object: orig/G2MP01/files/RelProd/DestructibleBarrier.rel + - object: orig/G2MP01/files/RelProd/DigitalGuardian.rel + - object: orig/G2MP01/files/RelProd/ElitePirate.rel + - object: orig/G2MP01/files/RelProd/EmperorIngStage1.rel + - object: orig/G2MP01/files/RelProd/EmperorIngStage2Tentacle.rel + - object: orig/G2MP01/files/RelProd/EmperorIngStage3.rel + - object: orig/G2MP01/files/RelProd/EyeBall.rel + - object: orig/G2MP01/files/RelProd/FishCloud.rel + - object: orig/G2MP01/files/RelProd/FlyerSwarm.rel + - object: orig/G2MP01/files/RelProd/FlyingPirate.rel + - object: orig/G2MP01/files/RelProd/FogOverlay.rel + - object: orig/G2MP01/files/RelProd/ForgottenObject.rel + - object: orig/G2MP01/files/RelProd/GeomBlobV2.rel + - object: orig/G2MP01/files/RelProd/Glowbug.rel + - object: orig/G2MP01/files/RelProd/Grenchler.rel + - object: orig/G2MP01/files/RelProd/GunTurret.rel + - object: orig/G2MP01/files/RelProd/Ing.rel + - object: orig/G2MP01/files/RelProd/IngBlobSwarm.rel + - object: orig/G2MP01/files/RelProd/IngBoostBallGuardian.rel + - object: orig/G2MP01/files/RelProd/IngPuddle.rel + - object: orig/G2MP01/files/RelProd/IngSnatchingSwarm.rel + - object: orig/G2MP01/files/RelProd/IngSpaceJumpGuardian.rel + - object: orig/G2MP01/files/RelProd/IngSpiderballGuardian.rel + - object: orig/G2MP01/files/RelProd/IngSwarm.rel + - object: orig/G2MP01/files/RelProd/Kralee.rel + - object: orig/G2MP01/files/RelProd/Krocuss.rel + - object: orig/G2MP01/files/RelProd/Lumite.rel + - object: orig/G2MP01/files/RelProd/MediumIng.rel + - object: orig/G2MP01/files/RelProd/Metaree.rel + - object: orig/G2MP01/files/RelProd/MetareeSwarm.rel + - object: orig/G2MP01/files/RelProd/Metroid.rel + - object: orig/G2MP01/files/RelProd/MinorIng.rel + - object: orig/G2MP01/files/RelProd/MysteryFlyer.rel + - object: orig/G2MP01/files/RelProd/OctapedeSegment.rel + - object: orig/G2MP01/files/RelProd/Parasite.rel + - object: orig/G2MP01/files/RelProd/PillBug.rel + - object: orig/G2MP01/files/RelProd/PirateRagDoll.rel + - object: orig/G2MP01/files/RelProd/PlantScarabSwarm.rel + - object: orig/G2MP01/files/RelProd/PuddleSpore.rel + - object: orig/G2MP01/files/RelProd/Puffer.rel + - object: orig/G2MP01/files/RelProd/Rezbit.rel + - object: orig/G2MP01/files/RelProd/Ripper.rel + - object: orig/G2MP01/files/RelProd/RubiksPuzzle.rel + - object: orig/G2MP01/files/RelProd/SandBoss.rel + - object: orig/G2MP01/files/RelProd/Sandworm.rel + - object: orig/G2MP01/files/RelProd/ScriptCannonBall.rel + - object: orig/G2MP01/files/RelProd/ScriptCoin.rel + - object: orig/G2MP01/files/RelProd/ScriptFrontEndDataNetwork.rel + - object: orig/G2MP01/files/RelProd/ScriptGui.rel + - object: orig/G2MP01/files/RelProd/ScriptPlayerActor.rel + - object: orig/G2MP01/files/RelProd/ScriptPlayerProxy.rel + - object: orig/G2MP01/files/RelProd/ScriptPlayerTurret.rel + - object: orig/G2MP01/files/RelProd/ScriptRiftPortal.rel + - object: orig/G2MP01/files/RelProd/ScriptRsfAudio.rel + - object: orig/G2MP01/files/RelProd/ScriptSafeZone.rel + - object: orig/G2MP01/files/RelProd/ScriptStreamedMovie.rel + - object: orig/G2MP01/files/RelProd/Shredder.rel + - object: orig/G2MP01/files/RelProd/Shrieker.rel + - object: orig/G2MP01/files/RelProd/SkyRipple.rel + - object: orig/G2MP01/files/RelProd/SnakeWeedSwarm.rel + - object: orig/G2MP01/files/RelProd/SpacePirate.rel + - object: orig/G2MP01/files/RelProd/SpankWeed.rel + - object: orig/G2MP01/files/RelProd/Splinter.rel + - object: orig/G2MP01/files/RelProd/Splitter.rel + - object: orig/G2MP01/files/RelProd/Sporb.rel + - object: orig/G2MP01/files/RelProd/StoneToad.rel + - object: orig/G2MP01/files/RelProd/SwampBossStage1.rel + - object: orig/G2MP01/files/RelProd/SwampBossStage2.rel + - object: orig/G2MP01/files/RelProd/SwarmBasics.rel + - object: orig/G2MP01/files/RelProd/Tryclops.rel + - object: orig/G2MP01/files/RelProd/Tweaks.rel + - object: orig/G2MP01/files/RelProd/WallCrawler.rel + - object: orig/G2MP01/files/RelProd/WallCrawlerSwarm.rel + - object: orig/G2MP01/files/RelProd/WallWalker.rel + - object: orig/G2MP01/files/RelProd/WispTentacle.rel diff --git a/config/G2MP01/splits.txt b/config/G2MP01/splits.txt index e69de29..8defdff 100644 --- a/config/G2MP01/splits.txt +++ b/config/G2MP01/splits.txt @@ -0,0 +1,13 @@ +MetroidPrime/CAxisAngle.cpp: + .bss start:0x8040BF60 end:0x8040BF6C common + +Runtime/global_destructor_chain.c: + .text start:0x80345230 end:0x80345290 + .sbss start:0x8041AFB8 end:0x8041AFBC + +Runtime/__init_cpp_exceptions.cpp: + .text start:0x8034608C end:0x803460FC + .ctors start:0x803A5860 end:0x803A5864 rename:.ctors$10 + .dtors start:0x803A5A60 end:0x803A5A64 rename:.dtors$10 + .dtors start:0x803A5A64 end:0x803A5A68 rename:.dtors$15 + .sdata start:0x80419F98 end:0x80419FA0 diff --git a/config/G2MP01/symbols.txt b/config/G2MP01/symbols.txt index 8326cd9..ea4f00c 100644 --- a/config/G2MP01/symbols.txt +++ b/config/G2MP01/symbols.txt @@ -15460,7 +15460,7 @@ fn_80345074 = .text:0x80345074; // type:function size:0x54 align:0x4 fn_803450C8 = .text:0x803450C8; // type:function size:0xA0 align:0x4 __va_arg = .text:0x80345168; // type:function size:0xC8 scope:global __destroy_global_chain = .text:0x80345230; // type:function size:0x48 scope:global -fn_80345278 = .text:0x80345278; // type:function size:0x18 align:0x4 +__register_global_object = .text:0x80345278; // type:function size:0x18 scope:global align:0x4 fn_80345290 = .text:0x80345290; // type:function size:0x30 fn_803452C0 = .text:0x803452C0; // type:function size:0x74 fn_80345334 = .text:0x80345334; // type:function size:0x4C @@ -16841,10 +16841,10 @@ fn_803A5370 = .text:0x803A5370; // type:function size:0x2BC fn_803A562C = .text:0x803A562C; // type:function size:0x200 fn_803A582C = .text:0x803A582C; // type:function size:0x28 _ctors = .ctors:0x803A5860; // type:label scope:global data:4byte -__init_cpp_exceptions_reference = .ctors:0x803A5860; // type:object size:0x4 scope:local +__init_cpp_exceptions_reference = .ctors:0x803A5860; // type:object size:0x4 scope:global _dtors = .dtors:0x803A5A60; // type:label scope:global data:4byte -__destroy_global_chain_reference = .dtors:0x803A5A60; // type:object size:0x4 scope:local -__fini_cpp_exceptions_reference = .dtors:0x803A5A64; // type:object size:0x4 scope:local +__destroy_global_chain_reference = .dtors:0x803A5A60; // type:object size:0x4 scope:global +__fini_cpp_exceptions_reference = .dtors:0x803A5A64; // type:object size:0x4 scope:global lbl_803A5A80 = .rodata:0x803A5A80; // type:object size:0x1C0 lbl_803A5C40 = .rodata:0x803A5C40; // type:object size:0x448 lbl_803A6088 = .rodata:0x803A6088; // type:object size:0x14 @@ -18153,7 +18153,7 @@ lbl_803B60C8 = .data:0x803B60C8; // type:object size:0x98 lbl_803B6160 = .data:0x803B6160; // type:object size:0x20 lbl_803B6180 = .data:0x803B6180; // type:object size:0x40 lbl_803B61C0 = .data:0x803B61C0; // type:object size:0x98 -lbl_803B6258 = .data:0x803B6258; // type:object size:0x68 +jumptable_803B6258 = .data:0x803B6258; // type:object size:0x68 scope:local lbl_803B62C0 = .data:0x803B62C0; // type:object size:0x10 lbl_803B62D0 = .data:0x803B62D0; // type:object size:0x10 lbl_803B62E0 = .data:0x803B62E0; // type:object size:0x10 @@ -18346,7 +18346,7 @@ jumptable_803B94E4 = .data:0x803B94E4; // type:object size:0x20 scope:local jumptable_803B9504 = .data:0x803B9504; // type:object size:0x20 scope:local jumptable_803B9524 = .data:0x803B9524; // type:object size:0x20 scope:local jumptable_803B9544 = .data:0x803B9544; // type:object size:0x20 scope:local -lbl_803B9568 = .data:0x803B9568; // type:object size:0x68 +jumptable_803B9568 = .data:0x803B9568; // type:object size:0x68 scope:local lbl_803B95D0 = .data:0x803B95D0; // type:object size:0x80 lbl_803B9650 = .data:0x803B9650; // type:object size:0x80 lbl_803B96D0 = .data:0x803B96D0; // type:object size:0xC data:4byte @@ -18752,9 +18752,9 @@ lbl_803BEE80 = .data:0x803BEE80; // type:object size:0x16C lbl_803BEFEC = .data:0x803BEFEC; // type:object size:0xC0 data:4byte lbl_803BF0AC = .data:0x803BF0AC; // type:object size:0x14 jumptable_803BF0C0 = .data:0x803BF0C0; // type:object size:0x68 scope:local -lbl_803BF128 = .data:0x803BF128; // type:object size:0x68 +jumptable_803BF128 = .data:0x803BF128; // type:object size:0x68 scope:local jumptable_803BF190 = .data:0x803BF190; // type:object size:0x44 scope:local -lbl_803BF1D4 = .data:0x803BF1D4; // type:object size:0x44 +jumptable_803BF1D4 = .data:0x803BF1D4; // type:object size:0x44 scope:local jumptable_803BF218 = .data:0x803BF218; // type:object size:0x1C scope:local jumptable_803BF234 = .data:0x803BF234; // type:object size:0x54 scope:local lbl_803BF288 = .data:0x803BF288; // type:object size:0x3C @@ -19063,8 +19063,8 @@ lbl_8040987C = .bss:0x8040987C; // type:object size:0x284 lbl_80409B00 = .bss:0x80409B00; // type:object size:0x400 data:4byte lbl_80409F00 = .bss:0x80409F00; // type:object size:0x60 lbl_80409F60 = .bss:0x80409F60; // type:object size:0x2000 -lbl_8040BF60 = .bss:0x8040BF60; // type:object size:0xC -lbl_8040BF6C = .bss:0x8040BF6C; // type:object size:0xC data:float +sIdentity__10CAxisAngle = .bss:0x8040BF60; // type:object size:0xC scope:global align:0x4 +sIdentity__12CEulerAngles = .bss:0x8040BF6C; // type:object size:0xC scope:global align:0x4 data:float lbl_8040BF78 = .bss:0x8040BF78; // type:object size:0x184 data:4byte lbl_8040C0FC = .bss:0x8040C0FC; // type:object size:0x404 data:4byte lbl_8040C500 = .bss:0x8040C500; // type:object size:0x1104 data:4byte @@ -20478,7 +20478,8 @@ lbl_8041A67A = .sbss:0x8041A67A; // type:object size:0x6 data:byte lbl_8041A680 = .sbss:0x8041A680; // type:object size:0x1 data:byte lbl_8041A684 = .sbss:0x8041A684; // type:object size:0x1 data:byte lbl_8041A688 = .sbss:0x8041A688; // type:object size:0x8 data:byte -lbl_8041A690 = .sbss:0x8041A690; // type:object size:0x10 data:4byte +lbl_8041A690 = .sbss:0x8041A690; // type:object size:0x8 data:4byte +lbl_8041A698 = .sbss:0x8041A698; // type:object size:0x8 lbl_8041A6A0 = .sbss:0x8041A6A0; // type:object size:0x8 data:4byte lbl_8041A6A8 = .sbss:0x8041A6A8; // type:object size:0x8 data:4byte lbl_8041A6B0 = .sbss:0x8041A6B0; // type:object size:0x8 data:4byte @@ -22792,7 +22793,8 @@ lbl_8041D360 = .sdata2:0x8041D360; // type:object size:0x4 data:float lbl_8041D364 = .sdata2:0x8041D364; // type:object size:0x4 data:float lbl_8041D368 = .sdata2:0x8041D368; // type:object size:0x4 data:float lbl_8041D370 = .sdata2:0x8041D370; // type:object size:0x8 data:double -lbl_8041D378 = .sdata2:0x8041D378; // type:object size:0xC data:float +lbl_8041D378 = .sdata2:0x8041D378; // type:object size:0x8 data:float +lbl_8041D380 = .sdata2:0x8041D380; // type:object size:0x4 lbl_8041D384 = .sdata2:0x8041D384; // type:object size:0x4 data:float lbl_8041D388 = .sdata2:0x8041D388; // type:object size:0x4 data:float lbl_8041D38C = .sdata2:0x8041D38C; // type:object size:0x4 data:float @@ -23029,7 +23031,11 @@ lbl_8041D7C0 = .sdata2:0x8041D7C0; // type:object size:0x4 data:float lbl_8041D7C4 = .sdata2:0x8041D7C4; // type:object size:0x4 data:float lbl_8041D7C8 = .sdata2:0x8041D7C8; // type:object size:0x4 data:float lbl_8041D7CC = .sdata2:0x8041D7CC; // type:object size:0x4 data:float -lbl_8041D7D0 = .sdata2:0x8041D7D0; // type:object size:0xC data:float +lbl_8041D7D0 = .sdata2:0x8041D7D0; // type:object size:0x8 data:float +lbl_8041D7D8 = .sdata2:0x8041D7D8; // type:object size:0x1 +lbl_8041D7D9 = .sdata2:0x8041D7D9; // type:object size:0x1 +lbl_8041D7DA = .sdata2:0x8041D7DA; // type:object size:0x1 +lbl_8041D7DB = .sdata2:0x8041D7DB; // type:object size:0x1 lbl_8041D7DC = .sdata2:0x8041D7DC; // type:object size:0x4 data:float lbl_8041D7E0 = .sdata2:0x8041D7E0; // type:object size:0x8 data:double lbl_8041D7E8 = .sdata2:0x8041D7E8; // type:object size:0x4 data:float @@ -23383,7 +23389,8 @@ lbl_8041DDE4 = .sdata2:0x8041DDE4; // type:object size:0x4 data:float lbl_8041DDE8 = .sdata2:0x8041DDE8; // type:object size:0x8 data:float lbl_8041DDF0 = .sdata2:0x8041DDF0; // type:object size:0x4 data:float lbl_8041DDF4 = .sdata2:0x8041DDF4; // type:object size:0x4 data:float -lbl_8041DDF8 = .sdata2:0x8041DDF8; // type:object size:0x10 data:float +lbl_8041DDF8 = .sdata2:0x8041DDF8; // type:object size:0x8 data:float +lbl_8041DE00 = .sdata2:0x8041DE00; // type:object size:0x8 lbl_8041DE08 = .sdata2:0x8041DE08; // type:object size:0x8 data:float lbl_8041DE10 = .sdata2:0x8041DE10; // type:object size:0x4 data:float lbl_8041DE14 = .sdata2:0x8041DE14; // type:object size:0x4 data:float @@ -23964,7 +23971,8 @@ lbl_8041E82C = .sdata2:0x8041E82C; // type:object size:0x4 data:float lbl_8041E830 = .sdata2:0x8041E830; // type:object size:0x4 data:float lbl_8041E834 = .sdata2:0x8041E834; // type:object size:0x4 data:float lbl_8041E838 = .sdata2:0x8041E838; // type:object size:0x8 data:float -lbl_8041E840 = .sdata2:0x8041E840; // type:object size:0xC data:4byte +lbl_8041E840 = .sdata2:0x8041E840; // type:object size:0x8 data:4byte +lbl_8041E848 = .sdata2:0x8041E848; // type:object size:0x4 lbl_8041E84C = .sdata2:0x8041E84C; // type:object size:0x4 data:float lbl_8041E850 = .sdata2:0x8041E850; // type:object size:0x4 data:float lbl_8041E854 = .sdata2:0x8041E854; // type:object size:0x4 data:float diff --git a/configure.py b/configure.py index c58dbe4..50aeaa5 100644 --- a/configure.py +++ b/configure.py @@ -6,8 +6,7 @@ LIBS = [ "cflags": "$cflags_runtime", "host": False, "objects": [ - # TODO: need to remove from FORCEFILES - ["Runtime/__init_cpp_exceptions.cpp", False], + ["Runtime/__init_cpp_exceptions.cpp", True], # TODO: need to implement all ["Runtime/Gecko_ExceptionPPC.cp", False], ["Runtime/global_destructor_chain.c", True], @@ -148,6 +147,7 @@ n.comment("Variables") version = args.version version_num = VERSIONS.index(args.version) build_path = args.build_dir / version +config_path = Path("config") / version / "config.yml" cflags_base = f"-proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp hard -fp_contract on -O4,p -maxerrors 1 -enum int -inline auto -str reuse -nosyspath -DVERSION={version_num} -i include -i libc" if args.debug: @@ -166,7 +166,7 @@ n.variable( n.variable("cflags_musyx", "$cflags_base -str reuse,pool,readonly -fp_contract off") ldscript_path = build_path / "ldscript.lcf" ldflags = f"-fp fmadd -nodefaults -lcf {ldscript_path}" -map_path = args.build_dir / f"{version}.MAP" +map_path = build_path / f"main.MAP" if args.map: ldflags += f" -map {map_path} -mapunused -listclosure" if args.debug: @@ -509,11 +509,49 @@ if build_config_path.is_file(): ) n.newline() + ### + # Helper tools + ### + n.comment("Check for mismatching symbols") + n.rule( + name="dol_diff", + command=f"{dtk} -L error dol diff $in", + description=f"DIFF {elf_path}", + ) + n.build( + inputs=path([config_path, elf_path, map_path]), + outputs="dol_diff", + rule="dol_diff", + ) + n.build( + outputs="diff", + rule="phony", + inputs="dol_diff", + ) + n.newline() + + n.comment("Apply symbols from linked ELF") + n.rule( + name="dol_apply", + command=f"{dtk} dol apply $in", + description=f"APPLY {elf_path}", + ) + n.build( + inputs=path([config_path, elf_path, map_path]), + outputs="dol_apply", + rule="dol_apply", + implicit=path([dol_ok_path]) + ) + n.build( + outputs="apply", + rule="phony", + inputs="dol_apply", + ) + ### # DOL split ### n.comment("Generate objects from original DOL") -config_path = Path("config") / version / "config.yml" n.rule( name="split", command=f"{dtk} dol split $in $out_dir", @@ -530,45 +568,6 @@ n.build( ) n.newline() -### -# Helper tools -### -n.comment("Check for mismatching symbols") -n.rule( - name="dol_diff", - command=f"{dtk} -L error dol diff $in", - description=f"DIFF {elf_path}", -) -n.build( - inputs=path([config_path, elf_path, map_path]), - outputs="dol_diff", - rule="dol_diff", -) -n.build( - outputs="diff", - rule="phony", - inputs="dol_diff", -) -n.newline() - -n.comment("Apply symbols from linked ELF") -n.rule( - name="dol_apply", - command=f"{dtk} dol apply $in", - description=f"APPLY {elf_path}", -) -n.build( - inputs=path([config_path, elf_path, map_path]), - outputs="dol_apply", - rule="dol_apply", - implicit=path([dol_ok_path]) -) -n.build( - outputs="apply", - rule="phony", - inputs="dol_apply", -) - ### # Regenerate on change ### diff --git a/src/Runtime/__init_cpp_exceptions.cpp b/src/Runtime/__init_cpp_exceptions.cpp index 99433cb..ca9f3f8 100644 --- a/src/Runtime/__init_cpp_exceptions.cpp +++ b/src/Runtime/__init_cpp_exceptions.cpp @@ -51,11 +51,11 @@ void __fini_cpp_exceptions(void) { /* clang-format off */ #pragma section ".ctors$10" __declspec(section ".ctors$10") -void *const __init_cpp_exceptions_reference = __init_cpp_exceptions; +extern void* const __init_cpp_exceptions_reference = __init_cpp_exceptions; #pragma section ".dtors$10" -__declspec(section ".dtors$10") -void *const __destroy_global_chain_reference = __destroy_global_chain; +__declspec(section ".dtors$10") +extern void* const __destroy_global_chain_reference = __destroy_global_chain; #pragma section ".dtors$15" -__declspec(section ".dtors$15") -void *const __fini_cpp_exceptions_reference = __fini_cpp_exceptions; +__declspec(section ".dtors$15") +extern void* const __fini_cpp_exceptions_reference = __fini_cpp_exceptions; /* clang-format on */