From 0e0d7ccfc763350bdfdb5a7e4d3df309028fb6ed Mon Sep 17 00:00:00 2001 From: KakarotCake <61133727+KakarottoCake@users.noreply.github.com> Date: Sun, 26 Jul 2026 11:08:49 -0400 Subject: [PATCH 1/5] Apply the game precompiled header globally --- configure.py | 73 ++++++++++++++++++++++++-------- include/Enemy/CoasterKiller.hpp | 2 +- include/MarioUtil/ShadowUtil.hpp | 3 ++ include/SMS.pch | 12 ++++++ src/Enemy/Kumokun.cpp | 2 +- src/Enemy/bgtentacle.cpp | 5 ++- src/Enemy/graph.cpp | 7 --- src/MSound/MSModBgm.cpp | 5 --- src/MarioUtil/MathUtil.cpp | 4 -- src/NPC/NpcInitData.cpp | 3 -- src/NPC/NpcSound.cpp | 3 -- src/System/CardManager.cpp | 4 -- tools/project.py | 4 +- 13 files changed, 78 insertions(+), 49 deletions(-) create mode 100644 include/SMS.pch diff --git a/configure.py b/configure.py index d49080237..c8ae8d253 100644 --- a/configure.py +++ b/configure.py @@ -306,11 +306,18 @@ def MatchingFor(*versions): config.warn_missing_config = True config.warn_missing_source = False +config.precompiled_headers = [ + { + "source": "SMS.pch", + "mw_version": "GC/1.2.5", + "cflags": ["-lang=c++", *cflags_game], + }, +] config.libs = [ { "lib": "main", "mw_version": "GC/1.2.5", - "cflags": cflags_game, + "cflags": [*cflags_game, "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "main.cpp"), @@ -768,7 +775,7 @@ def MatchingFor(*versions): { "lib": "THPPlayer", "mw_version": "GC/1.2.5", - "cflags": [*cflags_base, "-O4,p", "-inline auto", "-fp_contract on", "-str reuse,readonly", "-lang=c++", "-inline deferred"], + "cflags": [*cflags_base, "-O4,p", "-inline auto", "-fp_contract on", "-str reuse,readonly", "-lang=c++", "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "THPPlayer/THPAudioDecode.c"), @@ -781,7 +788,7 @@ def MatchingFor(*versions): { "lib": "MarioUtil", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred ", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred ", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "MarioUtil/DLUtil.cpp"), @@ -791,11 +798,31 @@ def MatchingFor(*versions): Object(NonMatching, "MarioUtil/MtxUtil.cpp"), Object(NonMatching, "MarioUtil/ScreenUtil.cpp"), Object(NonMatching, "MarioUtil/ShadowUtil.cpp"), - Object(Matching, "MarioUtil/gd-reinit-gx.cpp"), + # Retail gd-reinit-gx does not contain the weak literals emitted by + # SMS.mch, so it was compiled without the game PCH. + Object( + Matching, + "MarioUtil/gd-reinit-gx.cpp", + cflags=[ + *cflags_game, + "-inline deferred ", + "-opt all,nostrength", + ], + ), Object(NonMatching, "MarioUtil/EffectUtil.cpp"), Object(NonMatching, "MarioUtil/ModelUtil.cpp"), Object(Matching, "MarioUtil/RumbleMgr.cpp"), - Object(Matching, "MarioUtil/RumbleData.cpp"), + # Retail RumbleData does not contain the weak literals emitted by + # SMS.mch, so it was compiled without the game PCH. + Object( + Matching, + "MarioUtil/RumbleData.cpp", + cflags=[ + *cflags_game, + "-inline deferred ", + "-opt all,nostrength", + ], + ), Object(Matching, "MarioUtil/RumbleType.cpp"), Object(NonMatching, "MarioUtil/PacketUtil.cpp"), Object(Matching, "MarioUtil/GDUtil.cpp"), @@ -807,7 +834,7 @@ def MatchingFor(*versions): { "lib": "M3DUtil", "mw_version": "GC/1.2.5", - "cflags": [*cflags_system, "-inline deferred"], + "cflags": [*cflags_system, "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "M3DUtil/M3UJoint.cpp"), @@ -826,7 +853,7 @@ def MatchingFor(*versions): { "lib": "System", "mw_version": "GC/1.2.5", - "cflags": [*cflags_system, "-inline deferred"], + "cflags": [*cflags_system, "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "System/BaseParam.cpp"), @@ -880,7 +907,7 @@ def MatchingFor(*versions): { "lib": "Strategic", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "Strategic/liveactor.cpp"), @@ -889,7 +916,17 @@ def MatchingFor(*versions): Object(NonMatching, "Strategic/ObjHitCheck.cpp"), Object(NonMatching, "Strategic/objmanager.cpp"), Object(NonMatching, "Strategic/ObjModel.cpp"), - Object(NonMatching, "Strategic/spcinterp.cpp"), + # Retail spcinterp does not contain the weak literals emitted by + # SMS.mch, so it was compiled without the game PCH. + Object( + NonMatching, + "Strategic/spcinterp.cpp", + cflags=[ + *cflags_game, + "-inline deferred", + "-opt all,nostrength", + ], + ), Object(NonMatching, "Strategic/Strategy.cpp"), Object(NonMatching, "Strategic/question.cpp"), Object(Matching, "Strategic/smplcharacter.cpp"), @@ -902,7 +939,7 @@ def MatchingFor(*versions): { "lib": "Player", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "Player/Atom.cpp"), @@ -940,7 +977,7 @@ def MatchingFor(*versions): { "lib": "NPC", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "NPC/NpcAnm.cpp"), @@ -972,7 +1009,7 @@ def MatchingFor(*versions): { "lib": "MSound", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "MSound/MAnmSound.cpp"), @@ -989,7 +1026,7 @@ def MatchingFor(*versions): { "lib": "MoveBG", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred"], + "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "MoveBG/WoodBarrel.cpp"), @@ -1039,7 +1076,7 @@ def MatchingFor(*versions): { "lib": "Map", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred"], + "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "Map/JointModel.cpp"), @@ -1085,7 +1122,7 @@ def MatchingFor(*versions): { "lib": "GC2D", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred"], + "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(Matching, "GC2D/ChangeValue.cpp"), @@ -1120,7 +1157,7 @@ def MatchingFor(*versions): { "lib": "Enemy", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred"], + "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "Enemy/conductor.cpp"), @@ -1212,7 +1249,7 @@ def MatchingFor(*versions): { "lib": "Camera", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "Camera/CameraBGCheck.cpp"), @@ -1250,7 +1287,7 @@ def MatchingFor(*versions): { "lib": "Animal", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength"], + "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], "progress_category": "game", "objects": [ Object(NonMatching, "Animal/boid.cpp"), diff --git a/include/Enemy/CoasterKiller.hpp b/include/Enemy/CoasterKiller.hpp index 9145522fa..f54cf19ed 100644 --- a/include/Enemy/CoasterKiller.hpp +++ b/include/Enemy/CoasterKiller.hpp @@ -40,7 +40,7 @@ class TCoasterEnemy : public TWalkerEnemy { public: TCoasterEnemy(const char* name) : TWalkerEnemy(name) - , mPathIdx(0) { }; + , mPathDir(0) { }; virtual ~TCoasterEnemy() { } virtual void calcRootMatrix(); diff --git a/include/MarioUtil/ShadowUtil.hpp b/include/MarioUtil/ShadowUtil.hpp index 26ea10327..62f49817e 100644 --- a/include/MarioUtil/ShadowUtil.hpp +++ b/include/MarioUtil/ShadowUtil.hpp @@ -39,6 +39,9 @@ class TMBindShadowBody { bool isBodyJoint(int); void entryDrawShadow(); void calc(); + +private: + /* 0x0 */ u8 unk0[0x1C]; }; class TAlphaShadowQuad; diff --git a/include/SMS.pch b/include/SMS.pch new file mode 100644 index 000000000..9f0dc4c9f --- /dev/null +++ b/include/SMS.pch @@ -0,0 +1,12 @@ +#ifndef SMS_PCH +#define SMS_PCH + +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/src/Enemy/Kumokun.cpp b/src/Enemy/Kumokun.cpp index 558d9f8e4..987931184 100644 --- a/src/Enemy/Kumokun.cpp +++ b/src/Enemy/Kumokun.cpp @@ -1029,7 +1029,7 @@ void TKumokunManager::load(JSUMemoryInputStream& stream) unk38 = params; params->mSLAttackRadius.set(60); - params->mSLAttackRadius.set(50); + params->mSLAttackHeight.set(50); params->mSLDamageRadius.set(60); params->mSLDamageHeight.set(70); TSmallEnemyManager::load(stream); diff --git a/src/Enemy/bgtentacle.cpp b/src/Enemy/bgtentacle.cpp index 2b7507a0d..c14ab2b4b 100644 --- a/src/Enemy/bgtentacle.cpp +++ b/src/Enemy/bgtentacle.cpp @@ -1353,7 +1353,10 @@ void TBGTentacle::calcAttackGuideAnm() void TBGTentacle::resetAllNodes(const JGeometry::TVec3& param_1) { JGeometry::TVec3 local_78 = param_1; - JGeometry::TVec3 zero(0.0f, 0.0f, 0.0f); + JGeometry::TVec3 zero; + zero.z = 0.0f; + zero.y = 0.0f; + zero.x = 0.0f; getFirstNode()->onUnk24(); diff --git a/src/Enemy/graph.cpp b/src/Enemy/graph.cpp index 5a0ca3b73..d57435f20 100644 --- a/src/Enemy/graph.cpp +++ b/src/Enemy/graph.cpp @@ -7,13 +7,6 @@ #include #include -static void dummy(Vec* v) -{ - static Vec v1 = { 1.0f, 1.0f, 1.0f }; - static Vec v2 = { 1.0f, 1.0f, 1.0f }; - static int a[] = { 0, 2, 1, 3 }; -} - // rogue include #include diff --git a/src/MSound/MSModBgm.cpp b/src/MSound/MSModBgm.cpp index 840306e77..1c432dd28 100644 --- a/src/MSound/MSModBgm.cpp +++ b/src/MSound/MSModBgm.cpp @@ -5,11 +5,6 @@ #include #include -// TODO: this is from the PCH -static Vec dummy1 = { 1.0f, 1.0f, 1.0f }; -static Vec dummy2 = { 1.0f, 1.0f, 1.0f }; -static u32 dummy3[] = { 0, 2, 1, 3 }; - JAISound* MSModBgm::modBgm(u8 param_1, u8 param_2) { switch (param_1) { diff --git a/src/MarioUtil/MathUtil.cpp b/src/MarioUtil/MathUtil.cpp index 8db84dad0..f0ab4c96d 100644 --- a/src/MarioUtil/MathUtil.cpp +++ b/src/MarioUtil/MathUtil.cpp @@ -1,10 +1,6 @@ #include #include -static Vec dummy1 = { 1.0f, 1.0f, 1.0f }; -static Vec dummy2 = { 1.0f, 1.0f, 1.0f }; -static int dummy3[] = { 0, 2, 1, 3 }; - static u16 atntable[] = { 0, 10, 20, 31, 41, 51, 61, 71, 81, 92, 102, 112, 122, 132, 143, 153, 163, 173, 183, 194, 204, 214, 224, 234, diff --git a/src/NPC/NpcInitData.cpp b/src/NPC/NpcInitData.cpp index 3fcfad138..1ccf38d42 100644 --- a/src/NPC/NpcInitData.cpp +++ b/src/NPC/NpcInitData.cpp @@ -2,9 +2,6 @@ #include // pch issues -static f32 dummy0[3] = { 1.0f, 1.0f, 1.0f }; -static f32 dummy1[3] = { 1.0f, 1.0f, 1.0f }; -static u32 dummy2[4] = { 0, 2, 1, 3 }; static const char dummy3[] = "\0\0\0\0\0\0\0\0\0\0\0"; static const char dummy4[] = "メモリが足りません\n"; static const char dummy5[] = "__ROOT_JOINT__"; diff --git a/src/NPC/NpcSound.cpp b/src/NPC/NpcSound.cpp index 88ad1d248..f07446d58 100644 --- a/src/NPC/NpcSound.cpp +++ b/src/NPC/NpcSound.cpp @@ -1,9 +1,6 @@ #include // pch issues with J3DJoint and co -static Vec dummy0 = { 1.0f, 1.0f, 1.0f }; -static Vec dummy1 = { 1.0f, 1.0f, 1.0f }; -static u32 dummy2[] = { 0, 2, 1, 3 }; static const char dummy3[] = "\0\0\0\0\0\0\0\0\0\0\0"; static const char dummy4[] = "メモリが足りません\n"; static const char* MtxCalcTypeName[] = { diff --git a/src/System/CardManager.cpp b/src/System/CardManager.cpp index ca19c8edb..cfdf94cf0 100644 --- a/src/System/CardManager.cpp +++ b/src/System/CardManager.cpp @@ -5,10 +5,6 @@ #include #include -f32 dummy[] = { 1.0f, 1.0f, 1.0f }; -f32 dummy2[] = { 1.0f, 1.0f, 1.0f }; -u32 dummy3[] = { 0, 2, 1, 3 }; - static u8 sDetach[2]; const char CardFileName[0x20] = "super_mario_sunshine\0\0\0\0\0\0\0\0\0\0\0"; diff --git a/tools/project.py b/tools/project.py index 090613806..c36a335f6 100644 --- a/tools/project.py +++ b/tools/project.py @@ -664,11 +664,11 @@ def write_cargo_rule(): mwcc_sjis_implicit: List[Optional[Path]] = [*mwcc_implicit, sjiswrap] # MWCC for precompiled headers - mwcc_pch_cmd = f"{wrapper_cmd}{mwcc} $cflags -MMD -c $in -o $basedir -precompile $basefilestem.mch" + mwcc_pch_cmd = f'{wrapper_cmd}{mwcc} $cflags -MMD -c $in -o "$basedir" -precompile $basefilestem.mch' mwcc_pch_implicit: List[Optional[Path]] = [*mwcc_implicit] # MWCC for precompiled headers with UTF-8 to Shift JIS wrapper - mwcc_pch_sjis_cmd = f"{wrapper_cmd}{sjiswrap} {mwcc} $cflags -MMD -c $in -o $basedir -precompile $basefilestem.mch" + mwcc_pch_sjis_cmd = f'{wrapper_cmd}{sjiswrap} {mwcc} $cflags -MMD -c $in -o "$basedir" -precompile $basefilestem.mch' mwcc_pch_sjis_implicit: List[Optional[Path]] = [*mwcc_implicit, sjiswrap] # MWCC with extab post-processing From 455bedbba92acfd3fc4f10f75b83077c3ef4d5b4 Mon Sep 17 00:00:00 2001 From: KakarotCake <61133727+KakarottoCake@users.noreply.github.com> Date: Mon, 27 Jul 2026 12:35:08 -0400 Subject: [PATCH 2/5] Selectively apply the game PCH --- configure.py | 163 ++++++++++++++++++++++----------------------------- 1 file changed, 69 insertions(+), 94 deletions(-) diff --git a/configure.py b/configure.py index c8ae8d253..a6655ecab 100644 --- a/configure.py +++ b/configure.py @@ -249,7 +249,7 @@ "-func_align 32", ] -cflags_game = [ +cflags_game_base = [ *cflags_base, "-O4,p", "-inline auto", @@ -257,10 +257,10 @@ "-str reuse,readonly", ] -cflags_system = [ - *cflags_game, - "-inline auto", +cflags_game = [ + *cflags_game_base, "-opt all,nostrength", + "-inline deferred", ] cflags_dolphin = [ @@ -304,20 +304,25 @@ def MatchingFor(*versions): return config.version in versions +# The retail build applied the game PCH to a specific subset of translation units. +def PCHObject(completed: bool, name: str) -> Object: + return Object(completed, name, extra_cflags=["-prefix SMS.mch"]) + + config.warn_missing_config = True config.warn_missing_source = False config.precompiled_headers = [ { "source": "SMS.pch", "mw_version": "GC/1.2.5", - "cflags": ["-lang=c++", *cflags_game], + "cflags": ["-lang=c++", *cflags_game_base], }, ] config.libs = [ { "lib": "main", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "main.cpp"), @@ -775,7 +780,7 @@ def MatchingFor(*versions): { "lib": "THPPlayer", "mw_version": "GC/1.2.5", - "cflags": [*cflags_base, "-O4,p", "-inline auto", "-fp_contract on", "-str reuse,readonly", "-lang=c++", "-inline deferred", "-prefix SMS.mch"], + "cflags": [*cflags_base, "-O4,p", "-inline auto", "-fp_contract on", "-str reuse,readonly", "-lang=c++", "-inline deferred"], "progress_category": "game", "objects": [ Object(NonMatching, "THPPlayer/THPAudioDecode.c"), @@ -788,41 +793,21 @@ def MatchingFor(*versions): { "lib": "MarioUtil", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred ", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "MarioUtil/DLUtil.cpp"), Object(NonMatching, "MarioUtil/DrawUtil.cpp"), Object(NonMatching, "MarioUtil/LightUtil.cpp"), - Object(NonMatching, "MarioUtil/MathUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/MathUtil.cpp"), Object(NonMatching, "MarioUtil/MtxUtil.cpp"), Object(NonMatching, "MarioUtil/ScreenUtil.cpp"), Object(NonMatching, "MarioUtil/ShadowUtil.cpp"), - # Retail gd-reinit-gx does not contain the weak literals emitted by - # SMS.mch, so it was compiled without the game PCH. - Object( - Matching, - "MarioUtil/gd-reinit-gx.cpp", - cflags=[ - *cflags_game, - "-inline deferred ", - "-opt all,nostrength", - ], - ), + Object(Matching, "MarioUtil/gd-reinit-gx.cpp"), Object(NonMatching, "MarioUtil/EffectUtil.cpp"), Object(NonMatching, "MarioUtil/ModelUtil.cpp"), Object(Matching, "MarioUtil/RumbleMgr.cpp"), - # Retail RumbleData does not contain the weak literals emitted by - # SMS.mch, so it was compiled without the game PCH. - Object( - Matching, - "MarioUtil/RumbleData.cpp", - cflags=[ - *cflags_game, - "-inline deferred ", - "-opt all,nostrength", - ], - ), + Object(Matching, "MarioUtil/RumbleData.cpp"), Object(Matching, "MarioUtil/RumbleType.cpp"), Object(NonMatching, "MarioUtil/PacketUtil.cpp"), Object(Matching, "MarioUtil/GDUtil.cpp"), @@ -834,17 +819,17 @@ def MatchingFor(*versions): { "lib": "M3DUtil", "mw_version": "GC/1.2.5", - "cflags": [*cflags_system, "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "M3DUtil/M3UJoint.cpp"), + PCHObject(NonMatching, "M3DUtil/M3UJoint.cpp"), Object(NonMatching, "M3DUtil/M3UModel.cpp"), Object(NonMatching, "M3DUtil/MActor.cpp"), Object(NonMatching, "M3DUtil/MActorAnm.cpp"), Object(NonMatching, "M3DUtil/MActorData.cpp"), Object(NonMatching, "M3DUtil/SDLModel.cpp"), - Object(NonMatching, "M3DUtil/MActorUtil.cpp", flags=cflags_system), - Object(NonMatching, "M3DUtil/SampleCtrlNode.cpp"), + Object(NonMatching, "M3DUtil/MActorUtil.cpp"), + PCHObject(NonMatching, "M3DUtil/SampleCtrlNode.cpp"), Object(NonMatching, "M3DUtil/SampleCtrlModel.cpp"), Object(Matching, "M3DUtil/MotionBlendCtrl.cpp"), Object(Matching, "M3DUtil/LodAnm.cpp"), @@ -853,11 +838,11 @@ def MatchingFor(*versions): { "lib": "System", "mw_version": "GC/1.2.5", - "cflags": [*cflags_system, "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "System/BaseParam.cpp"), - Object(NonMatching, "System/EmitterViewObj.cpp"), + PCHObject(NonMatching, "System/EmitterViewObj.cpp"), Object(NonMatching, "System/EventWatcher.cpp"), Object(NonMatching, "System/FlagManager.cpp"), Object(NonMatching, "System/GCLogoDir.cpp"), @@ -874,7 +859,7 @@ def MatchingFor(*versions): Object(Matching, "System/Params.cpp"), Object(Matching, "System/ParamInst.cpp"), Object(NonMatching, "System/PerformList.cpp"), - Object(NonMatching, "System/RenderModeObj.cpp"), + PCHObject(NonMatching, "System/RenderModeObj.cpp"), Object(NonMatching, "System/SnapTimeObj.cpp"), Object(NonMatching, "System/TalkCursor.cpp"), Object(Matching, "System/TexCache.cpp"), @@ -890,12 +875,12 @@ def MatchingFor(*versions): Object(NonMatching, "System/TimeRec.cpp"), Object(NonMatching, "System/DrawSyncManager.cpp"), Object(Matching, "System/THPRender.cpp"), - Object(NonMatching, "System/MarNameRefGen_BossEnemy.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen_BossEnemy.cpp"), Object(NonMatching, "System/MarNameRefGen_Enemy.cpp"), Object(NonMatching, "System/MarNameRefGen_Map.cpp"), Object(NonMatching, "System/MarNameRefGen_MapObj.cpp"), Object(NonMatching, "System/MarNameRefGen_NPC.cpp"), - Object(NonMatching, "System/CardManager.cpp"), + PCHObject(NonMatching, "System/CardManager.cpp"), Object(NonMatching, "System/MarDirectorLoadResource.cpp"), Object(NonMatching, "System/MovieDirector.cpp"), Object(Matching, "System/MarDirectorCreateObjects.cpp"), @@ -907,26 +892,16 @@ def MatchingFor(*versions): { "lib": "Strategic", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "Strategic/liveactor.cpp"), - Object(NonMatching, "Strategic/liveinterp.cpp"), + PCHObject(NonMatching, "Strategic/liveinterp.cpp"), Object(NonMatching, "Strategic/livemanager.cpp"), Object(NonMatching, "Strategic/ObjHitCheck.cpp"), Object(NonMatching, "Strategic/objmanager.cpp"), Object(NonMatching, "Strategic/ObjModel.cpp"), - # Retail spcinterp does not contain the weak literals emitted by - # SMS.mch, so it was compiled without the game PCH. - Object( - NonMatching, - "Strategic/spcinterp.cpp", - cflags=[ - *cflags_game, - "-inline deferred", - "-opt all,nostrength", - ], - ), + Object(NonMatching, "Strategic/spcinterp.cpp"), Object(NonMatching, "Strategic/Strategy.cpp"), Object(NonMatching, "Strategic/question.cpp"), Object(Matching, "Strategic/smplcharacter.cpp"), @@ -939,7 +914,7 @@ def MatchingFor(*versions): { "lib": "Player", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "Player/Atom.cpp"), @@ -948,26 +923,26 @@ def MatchingFor(*versions): Object(NonMatching, "Player/MarioBlend.cpp"), Object(NonMatching, "Player/MarioCap.cpp"), Object(NonMatching, "Player/MarioCollision.cpp"), - Object(NonMatching, "Player/MarioDraw.cpp"), + PCHObject(NonMatching, "Player/MarioDraw.cpp"), Object(NonMatching, "Player/MarioJump.cpp"), Object(NonMatching, "Player/MarioMain.cpp"), Object(NonMatching, "Player/MarioMove.cpp"), Object(NonMatching, "Player/MarioPhysics.cpp"), Object(Matching, "Player/MarioRecord.cpp"), - Object(NonMatching, "Player/MarioRun.cpp"), + PCHObject(NonMatching, "Player/MarioRun.cpp"), Object(NonMatching, "Player/MarioSpecial.cpp"), Object(NonMatching, "Player/MarioUpper.cpp"), - Object(NonMatching, "Player/MarioParticle.cpp"), + PCHObject(NonMatching, "Player/MarioParticle.cpp"), Object(NonMatching, "Player/MarioWait.cpp"), Object(NonMatching, "Player/SplashManager.cpp"), Object(NonMatching, "Player/Tongue.cpp"), Object(NonMatching, "Player/WaterGun.cpp"), - Object(NonMatching, "Player/Yoshi.cpp"), + PCHObject(NonMatching, "Player/Yoshi.cpp"), Object(NonMatching, "Player/MarioEffect.cpp"), Object(NonMatching, "Player/MarioSwim.cpp"), Object(NonMatching, "Player/MarioAccess.cpp"), - Object(NonMatching, "Player/MarioInit.cpp"), - Object(NonMatching, "Player/ModelWaterManager.cpp"), + PCHObject(NonMatching, "Player/MarioInit.cpp"), + PCHObject(NonMatching, "Player/ModelWaterManager.cpp"), Object(Matching, "Player/MarioPositionObj.cpp"), Object(NonMatching, "Player/MarioCheckCol.cpp"), Object(NonMatching, "Player/MarioReceiveMsg.cpp"), @@ -977,7 +952,7 @@ def MatchingFor(*versions): { "lib": "NPC", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "NPC/NpcAnm.cpp"), @@ -987,12 +962,12 @@ def MatchingFor(*versions): Object(NonMatching, "NPC/NpcNerve.cpp"), Object(Matching, "NPC/NpcSave.cpp"), Object(NonMatching, "NPC/NpcEvent.cpp"), - Object(Matching, "NPC/NpcInitData.cpp"), + PCHObject(Matching, "NPC/NpcInitData.cpp"), Object(NonMatching, "NPC/NpcInitPrg.cpp"), Object(NonMatching, "NPC/NpcInbetween.cpp"), Object(NonMatching, "NPC/NpcParts.cpp"), Object(NonMatching, "NPC/NpcColor.cpp"), - Object(Matching, "NPC/NpcSound.cpp"), + PCHObject(Matching, "NPC/NpcSound.cpp"), Object(NonMatching, "NPC/NpcChange.cpp"), Object(NonMatching, "NPC/NpcThrow.cpp"), Object(Matching, "NPC/NpcTrample.cpp"), @@ -1009,7 +984,7 @@ def MatchingFor(*versions): { "lib": "MSound", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "MSound/MAnmSound.cpp"), @@ -1019,14 +994,14 @@ def MatchingFor(*versions): Object(NonMatching, "MSound/MSoundScene.cpp"), Object(NonMatching, "MSound/MSoundSE.cpp"), Object(NonMatching, "MSound/MSoundStruct.cpp"), - Object(NonMatching, "MSound/MSHandle.cpp"), - Object(NonMatching, "MSound/MSModBgm.cpp"), + PCHObject(NonMatching, "MSound/MSHandle.cpp"), + PCHObject(NonMatching, "MSound/MSModBgm.cpp"), ], }, { "lib": "MoveBG", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "MoveBG/WoodBarrel.cpp"), @@ -1035,12 +1010,12 @@ def MatchingFor(*versions): Object(NonMatching, "MoveBG/MapObjGeneral.cpp"), Object(NonMatching, "MoveBG/MapObjManager.cpp"), Object(NonMatching, "MoveBG/MapObjLib.cpp"), - Object(NonMatching, "MoveBG/Item.cpp"), + PCHObject(NonMatching, "MoveBG/Item.cpp"), Object(NonMatching, "MoveBG/ItemManager.cpp"), Object(NonMatching, "MoveBG/MapObjTown.cpp"), Object(NonMatching, "MoveBG/MapObjBlock.cpp"), Object(NonMatching, "MoveBG/MapObjBianco.cpp"), - Object(NonMatching, "MoveBG/MapObjSirena.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjSirena.cpp"), Object(NonMatching, "MoveBG/MapObjRicco.cpp"), Object(NonMatching, "MoveBG/MapObjMamma.cpp"), Object(NonMatching, "MoveBG/MapObjPinna.cpp"), @@ -1058,7 +1033,7 @@ def MatchingFor(*versions): Object(NonMatching, "MoveBG/MapObjGrass.cpp"), Object(Matching, "MoveBG/MapObjPole.cpp"), Object(NonMatching, "MoveBG/MapObjWater.cpp"), - Object(NonMatching, "MoveBG/ModelGate.cpp"), + PCHObject(NonMatching, "MoveBG/ModelGate.cpp"), Object(NonMatching, "MoveBG/MapObjFence.cpp"), Object(NonMatching, "MoveBG/MapObjOption.cpp"), Object(NonMatching, "MoveBG/MapObjRailBlock.cpp"), @@ -1076,7 +1051,7 @@ def MatchingFor(*versions): { "lib": "Map", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "Map/JointModel.cpp"), @@ -1090,7 +1065,7 @@ def MatchingFor(*versions): Object(Matching, "Map/MapCollisionManager.cpp"), Object(Matching, "Map/MapDraw.cpp"), Object(Matching, "Map/MapEvent.cpp"), - Object(NonMatching, "Map/MapEventSink.cpp"), + PCHObject(NonMatching, "Map/MapEventSink.cpp"), Object(NonMatching, "Map/MapMakeData.cpp"), Object(NonMatching, "Map/MapMakeList.cpp"), Object(NonMatching, "Map/MapMirror.cpp"), @@ -1113,7 +1088,7 @@ def MatchingFor(*versions): Object(NonMatching, "Map/MapCollisionPlane.cpp"), Object(Matching, "Map/MarineSnow.cpp"), Object(Matching, "Map/MapData.cpp"), - Object(NonMatching, "Map/MapEventDolpic.cpp"), + PCHObject(NonMatching, "Map/MapEventDolpic.cpp"), Object(NonMatching, "Map/MapEventMare.cpp"), Object(NonMatching, "Map/BathWaterManager.cpp"), Object(Matching, "Map/StickyStainManager.cpp"), @@ -1122,7 +1097,7 @@ def MatchingFor(*versions): { "lib": "GC2D", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(Matching, "GC2D/ChangeValue.cpp"), @@ -1130,7 +1105,7 @@ def MatchingFor(*versions): Object(Matching, "GC2D/ExPane.cpp"), Object(NonMatching, "GC2D/Menu.cpp"), Object(NonMatching, "GC2D/ScrnFader.cpp"), - Object(NonMatching, "GC2D/GCConsole2.cpp"), + PCHObject(NonMatching, "GC2D/GCConsole2.cpp"), Object(NonMatching, "GC2D/Talk2D2.cpp"), Object(NonMatching, "GC2D/BoundPane.cpp"), Object(NonMatching, "GC2D/PauseMenu2.cpp"), @@ -1140,7 +1115,7 @@ def MatchingFor(*versions): Object(NonMatching, "GC2D/CardSave.cpp"), Object(NonMatching, "GC2D/CardLoad.cpp"), Object(NonMatching, "GC2D/ConsoleStr.cpp"), - Object(NonMatching, "GC2D/SelectMenu.cpp"), + PCHObject(NonMatching, "GC2D/SelectMenu.cpp"), Object(NonMatching, "GC2D/SelectDir.cpp"), Object(NonMatching, "GC2D/SelectShine2.cpp"), Object(Matching, "GC2D/BlendPane.cpp"), @@ -1150,14 +1125,14 @@ def MatchingFor(*versions): Object(NonMatching, "GC2D/ProgSelect.cpp"), Object(NonMatching, "GC2D/hx_wiper.c"), Object(NonMatching, "GC2D/MovieSubtitle.cpp"), - Object(NonMatching, "GC2D/Option.cpp"), + PCHObject(NonMatching, "GC2D/Option.cpp"), Object(NonMatching, "GC2D/MovieRumble.cpp"), ], }, { "lib": "Enemy", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-opt all,nostrength", "-inline deferred", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "Enemy/conductor.cpp"), @@ -1166,14 +1141,14 @@ def MatchingFor(*versions): Object(NonMatching, "Enemy/enemy.cpp"), Object(NonMatching, "Enemy/enemyAttachment.cpp"), Object(NonMatching, "Enemy/enemymanager.cpp"), - Object(NonMatching, "Enemy/enemyMario.cpp"), - Object(NonMatching, "Enemy/feetinv.cpp"), - Object(NonMatching, "Enemy/gesso.cpp"), - Object(NonMatching, "Enemy/graph.cpp"), + PCHObject(NonMatching, "Enemy/enemyMario.cpp"), + PCHObject(NonMatching, "Enemy/feetinv.cpp"), + PCHObject(NonMatching, "Enemy/gesso.cpp"), + PCHObject(NonMatching, "Enemy/graph.cpp"), Object(NonMatching, "Enemy/hamukuri.cpp"), - Object(NonMatching, "Enemy/hinokuri2.cpp"), + PCHObject(NonMatching, "Enemy/hinokuri2.cpp"), Object(NonMatching, "Enemy/mameGesso.cpp"), - Object(NonMatching, "Enemy/namekuri.cpp"), + PCHObject(NonMatching, "Enemy/namekuri.cpp"), Object(NonMatching, "Enemy/pakkun.cpp"), Object(NonMatching, "Enemy/smallEnemy.cpp"), Object(NonMatching, "Enemy/spider.cpp"), @@ -1181,7 +1156,7 @@ def MatchingFor(*versions): Object(Matching, "Enemy/typicalenemy.cpp"), Object(NonMatching, "Enemy/walker.cpp"), Object(NonMatching, "Enemy/walkerEnemy.cpp"), - Object(NonMatching, "Enemy/bossgesso.cpp"), + PCHObject(NonMatching, "Enemy/bossgesso.cpp"), Object(NonMatching, "Enemy/elecNokonoko.cpp"), Object(NonMatching, "Enemy/telesa.cpp"), Object(NonMatching, "Enemy/fireWanwan.cpp"), @@ -1189,19 +1164,19 @@ def MatchingFor(*versions): Object(NonMatching, "Enemy/generator.cpp"), Object(NonMatching, "Enemy/bosspakkun.cpp"), Object(NonMatching, "Enemy/tobiPuku.cpp"), - Object(NonMatching, "Enemy/tinkoopa.cpp"), + PCHObject(NonMatching, "Enemy/tinkoopa.cpp"), Object(NonMatching, "Enemy/launcher.cpp"), - Object(NonMatching, "Enemy/bosswanwan.cpp"), + PCHObject(NonMatching, "Enemy/bosswanwan.cpp"), Object(NonMatching, "Enemy/chuuhana.cpp"), Object(NonMatching, "Enemy/igaiga.cpp"), Object(NonMatching, "Enemy/poihana.cpp"), Object(NonMatching, "Enemy/tamaNoko.cpp"), Object(NonMatching, "Enemy/bosstelesa.cpp"), Object(NonMatching, "Enemy/riccohook.cpp"), - Object(NonMatching, "Enemy/bombhei.cpp"), + PCHObject(NonMatching, "Enemy/bombhei.cpp"), Object(NonMatching, "Enemy/cannon.cpp"), - Object(NonMatching, "Enemy/bosseel.cpp"), - Object(NonMatching, "Enemy/killer.cpp"), + PCHObject(NonMatching, "Enemy/bosseel.cpp"), + PCHObject(NonMatching, "Enemy/killer.cpp"), Object(NonMatching, "Enemy/beam.cpp"), Object(NonMatching, "Enemy/hanasambo.cpp"), Object(NonMatching, "Enemy/popo.cpp"), @@ -1215,12 +1190,12 @@ def MatchingFor(*versions): Object(NonMatching, "Enemy/BossHanachanParts.cpp"), Object(NonMatching, "Enemy/BossHanachanSave.cpp"), Object(NonMatching, "Enemy/amiNoko.cpp"), - Object(NonMatching, "Enemy/gatekeeper.cpp"), + PCHObject(NonMatching, "Enemy/gatekeeper.cpp"), Object(NonMatching, "Enemy/BossHanachanEffect.cpp"), Object(NonMatching, "Enemy/egggen.cpp"), Object(NonMatching, "Enemy/seal.cpp"), Object(NonMatching, "Enemy/bgpoldrop.cpp"), - Object(NonMatching, "Enemy/bgtentacle.cpp"), + PCHObject(NonMatching, "Enemy/bgtentacle.cpp"), Object(NonMatching, "Enemy/effectEnemy.cpp"), Object(NonMatching, "Enemy/hauntLeg.cpp"), Object(NonMatching, "Enemy/areacylinder.cpp"), @@ -1249,7 +1224,7 @@ def MatchingFor(*versions): { "lib": "Camera", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "Camera/CameraBGCheck.cpp"), @@ -1287,7 +1262,7 @@ def MatchingFor(*versions): { "lib": "Animal", "mw_version": "GC/1.2.5", - "cflags": [*cflags_game, "-inline deferred", "-opt all,nostrength", "-prefix SMS.mch"], + "cflags": cflags_game, "progress_category": "game", "objects": [ Object(NonMatching, "Animal/boid.cpp"), From aecc7011b2580eb70a3282b53c5a195e2392e824 Mon Sep 17 00:00:00 2001 From: KakarotCake <61133727+KakarottoCake@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:58:56 -0400 Subject: [PATCH 3/5] MoveBG/MapObjGeneral: fix vtable ownership, drop MapObjInit stand-ins Retail puts __vt__14TMapObjGeneral, the getFlushTime weak body and the @32@ adjustor thunk in MapObjInit.o. We were emitting all three in MapObjGeneral.o, which is why MapObjInit.cpp still carried hand-written stand-in literals to make up the missing data. MWCC picks the owning TU by key function: the first non-inline virtual in declaration order. Ours was loadAfter (MapObjGeneral.cpp); retail's must have been initMapObj (MapObjInit.cpp). initMapObj is an override of a TMapObjBase virtual, so moving its declaration to the front of the list cannot change the vtable layout -- and it doesn't, the table is still 0x1dc. All three symbols move to MapObjInit.o together. getFlushTime also had an empty body, which is 4 bytes; retail is 8 and disassembles to `lwz r3, mNormalFlushTime@sda21; blr`, so give it the real body. That mirrors getLivingTime directly above it, matches 100%, and silences the "return value expected" warning. With the data now coming from the real vtable, dummy/dummy2/dummy3/dummy4 are no longer needed and are removed -- no fakematch left in this file. matched data 50.0071% -> 53.5928% matched functions 7921 -> 7923 MapObjInit data 0.389% -> 44.203% mario.dol: OK; check-changed-symbol-order.py passes on both units. Co-Authored-By: Claude Opus 5 --- include/MoveBG/MapObjGeneral.hpp | 4 ++-- src/MoveBG/MapObjInit.cpp | 10 ---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/include/MoveBG/MapObjGeneral.hpp b/include/MoveBG/MapObjGeneral.hpp index 52ce0beb1..f425998e1 100644 --- a/include/MoveBG/MapObjGeneral.hpp +++ b/include/MoveBG/MapObjGeneral.hpp @@ -11,6 +11,7 @@ class TMapObjGeneral : public TMapObjBase { TMapObjGeneral(const char* name = "汎用地形オブジェ"); + virtual void initMapObj(); virtual void loadAfter(); virtual void perform(u32 cue, JDrama::TGraphics* graphics); virtual BOOL receiveMessage(THitActor* sender, u32 message); @@ -20,12 +21,11 @@ class TMapObjGeneral : public TMapObjBase { virtual void bind(); virtual void kill(); virtual void appear(); - virtual void initMapObj(); virtual void checkIllegalAttr() const { } virtual void touchPlayer(THitActor*); virtual u32 touchWater(THitActor*); virtual u32 getLivingTime() const { return mNormalLivingTime; } - virtual int getFlushTime() const { } + virtual int getFlushTime() const { return mNormalFlushTime; } virtual bool isPollutedGround(const JGeometry::TVec3&) const; virtual void work(); virtual void appearing(); diff --git a/src/MoveBG/MapObjInit.cpp b/src/MoveBG/MapObjInit.cpp index aae48cf1d..179d94ba2 100644 --- a/src/MoveBG/MapObjInit.cpp +++ b/src/MoveBG/MapObjInit.cpp @@ -22,18 +22,8 @@ #include #include -static void dummy() { static Vec data_2100 = { 1.0f, 1.0f, 1.0f }; } -static void dummy2() { static Vec data_2100 = { 1.0f, 1.0f, 1.0f }; } -static void dummy3() { static u32 data_2100[] = { 0, 2, 1, 3 }; } - #include -static void dummy4(Vec& v) -{ - v = (Vec) { 0.0f, 0.0f, 0.0f }; - v = (Vec) { 1.0f, 1.0f, 1.0f }; -} - TMapObjSoundData TMapObjGeneral::mDefaultSound = { { 0xFFFFFFFF, MSD_SE_IT_COMMON_APPEAR, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, MSD_SE_IT_APPEAR, 0xFFFFFFFF }, From d83decd4b8b281813431817806577954f7d49142 Mon Sep 17 00:00:00 2001 From: KakarotCake <61133727+KakarottoCake@users.noreply.github.com> Date: Sun, 23 Aug 2026 16:29:15 -0400 Subject: [PATCH 4/5] MoveBG/MapObjInit: apply the PCH instead of only dropping its stand-ins aecc7011 removed the hand-written stand-ins from MapObjInit.cpp -- the two Vec{1,1,1} and the u32[4]{0,2,1,3} -- but left the unit as a plain Object, so nothing supplied those bytes afterwards. Its .data went from 4 bytes short to 44, with every shared symbol shifted by a uniform +40. Marking it PCHObject restores them from the real header, which is what the rest of this PR does everywhere else. .data now matches and the unit is back to 4 bytes short, as it was before this branch. Two neighbouring units show a similar offset but are not this problem and are deliberately left alone: - GC2D/SelectMenu is already a PCHObject and receives the header correctly; both objects carry the same 40-byte triplet at the head of .data. Retail's extra 40 bytes there are scNormalStageTable at 0x190, which we do not emit yet. That is a source gap, not a PCH one. - GC2D/ConsoleStr has no triplet in the retail object at all, so it was never a PCH unit. Its -40 comes from scEtcShineConvTable, which we emit and retail does not. Co-Authored-By: Claude Opus 5 --- configure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.py b/configure.py index a6655ecab..d0f665388 100644 --- a/configure.py +++ b/configure.py @@ -1006,7 +1006,7 @@ def PCHObject(completed: bool, name: str) -> Object: "objects": [ Object(NonMatching, "MoveBG/WoodBarrel.cpp"), Object(NonMatching, "MoveBG/MapObjBase.cpp"), - Object(NonMatching, "MoveBG/MapObjInit.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjInit.cpp"), Object(NonMatching, "MoveBG/MapObjGeneral.cpp"), Object(NonMatching, "MoveBG/MapObjManager.cpp"), Object(NonMatching, "MoveBG/MapObjLib.cpp"), From f3681e727403fbb24d331c887e96b36d3f3fc6a2 Mon Sep 17 00:00:00 2001 From: Roman Sandu Date: Sat, 29 Aug 2026 05:15:03 +0300 Subject: [PATCH 5/5] Derive the PCH set from the linker map instead of hand-picking The map records, per TU, whether the J3DJoint/J3DColorBlocks weak statics landed in .data (PCH-compiled) or inside the .rodata literal pool (not). Classifying every TU by that signature gives 299 units, against the 41 the PR picked by hand. Measured with forced full rebuilds: main 8084 functions 1336524 code 303707 data PR as-is (41) 8118 1360608 345307 map-derived (299) 8131 1367100 353763 every game TU (387) 8129 1365172 351691 Expanding 41 -> 299 improves 8 units and regresses none. Going further to all 387 regresses three units the map says were never PCH-compiled (gd-reinit-gx, RumbleData, spcinterp), so the selectivity is real. Also drops System/MarNameRefGen_BossEnemy.cpp, the one unit the PR marked PCHObject that the map does not back. --- configure.py | 516 +++++++++++++++++++++++++-------------------------- 1 file changed, 258 insertions(+), 258 deletions(-) diff --git a/configure.py b/configure.py index 6af06adbd..cfc0899b7 100644 --- a/configure.py +++ b/configure.py @@ -796,24 +796,24 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(Matching, "MarioUtil/DLUtil.cpp"), - Object(NonMatching, "MarioUtil/DrawUtil.cpp"), - Object(NonMatching, "MarioUtil/LightUtil.cpp"), + PCHObject(Matching, "MarioUtil/DLUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/DrawUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/LightUtil.cpp"), PCHObject(NonMatching, "MarioUtil/MathUtil.cpp"), - Object(NonMatching, "MarioUtil/MtxUtil.cpp"), - Object(NonMatching, "MarioUtil/ScreenUtil.cpp"), - Object(NonMatching, "MarioUtil/ShadowUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/MtxUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/ScreenUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/ShadowUtil.cpp"), Object(Matching, "MarioUtil/gd-reinit-gx.cpp"), Object(NonMatching, "MarioUtil/EffectUtil.cpp"), Object(NonMatching, "MarioUtil/ModelUtil.cpp"), Object(Matching, "MarioUtil/RumbleMgr.cpp"), Object(Matching, "MarioUtil/RumbleData.cpp"), Object(Matching, "MarioUtil/RumbleType.cpp"), - Object(NonMatching, "MarioUtil/PacketUtil.cpp"), - Object(Matching, "MarioUtil/GDUtil.cpp"), + PCHObject(NonMatching, "MarioUtil/PacketUtil.cpp"), + PCHObject(Matching, "MarioUtil/GDUtil.cpp"), Object(Matching, "MarioUtil/TexUtil.cpp"), Object(Matching, "MarioUtil/MapUtil.cpp"), - Object(Matching, "MarioUtil/ToolData.cpp"), + PCHObject(Matching, "MarioUtil/ToolData.cpp"), ], }, { @@ -823,14 +823,14 @@ def PCHObject(completed: bool, name: str) -> Object: "progress_category": "game", "objects": [ PCHObject(NonMatching, "M3DUtil/M3UJoint.cpp"), - Object(NonMatching, "M3DUtil/M3UModel.cpp"), - Object(NonMatching, "M3DUtil/MActor.cpp"), - Object(NonMatching, "M3DUtil/MActorAnm.cpp"), + PCHObject(NonMatching, "M3DUtil/M3UModel.cpp"), + PCHObject(NonMatching, "M3DUtil/MActor.cpp"), + PCHObject(NonMatching, "M3DUtil/MActorAnm.cpp"), Object(NonMatching, "M3DUtil/MActorData.cpp"), - Object(NonMatching, "M3DUtil/SDLModel.cpp"), + PCHObject(NonMatching, "M3DUtil/SDLModel.cpp"), Object(Matching, "M3DUtil/MActorUtil.cpp"), PCHObject(NonMatching, "M3DUtil/SampleCtrlNode.cpp"), - Object(NonMatching, "M3DUtil/SampleCtrlModel.cpp"), + PCHObject(NonMatching, "M3DUtil/SampleCtrlModel.cpp"), Object(Matching, "M3DUtil/MotionBlendCtrl.cpp"), Object(Matching, "M3DUtil/LodAnm.cpp"), ], @@ -841,52 +841,52 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(Matching, "System/BaseParam.cpp"), + PCHObject(Matching, "System/BaseParam.cpp"), PCHObject(NonMatching, "System/EmitterViewObj.cpp"), - Object(NonMatching, "System/EventWatcher.cpp"), - Object(NonMatching, "System/FlagManager.cpp"), - Object(NonMatching, "System/GCLogoDir.cpp"), - Object(Matching, "System/J3DSysFlag.cpp"), + PCHObject(NonMatching, "System/EventWatcher.cpp"), + PCHObject(NonMatching, "System/FlagManager.cpp"), + PCHObject(NonMatching, "System/GCLogoDir.cpp"), + PCHObject(Matching, "System/J3DSysFlag.cpp"), Object(NonMatching, "System/MarDirector.cpp"), - Object(NonMatching, "System/MarDirectorDirect.cpp"), - Object(NonMatching, "System/MarDirectorEvent.cpp"), - Object(NonMatching, "System/MarDirectorInitECT.cpp"), - Object(NonMatching, "System/MarDirectorPreEntry.cpp"), - Object(NonMatching, "System/MarDirectorSetup2.cpp"), + PCHObject(NonMatching, "System/MarDirectorDirect.cpp"), + PCHObject(NonMatching, "System/MarDirectorEvent.cpp"), + PCHObject(NonMatching, "System/MarDirectorInitECT.cpp"), + PCHObject(NonMatching, "System/MarDirectorPreEntry.cpp"), + PCHObject(NonMatching, "System/MarDirectorSetup2.cpp"), Object(Matching, "System/marerr.cpp"), - Object(NonMatching, "System/MarNameRefGen.cpp"), - Object(NonMatching, "System/MenuDir.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen.cpp"), + PCHObject(NonMatching, "System/MenuDir.cpp"), Object(Matching, "System/Params.cpp"), Object(Matching, "System/ParamInst.cpp"), - Object(NonMatching, "System/PerformList.cpp"), + PCHObject(NonMatching, "System/PerformList.cpp"), PCHObject(NonMatching, "System/RenderModeObj.cpp"), - Object(NonMatching, "System/SnapTimeObj.cpp"), - Object(NonMatching, "System/TalkCursor.cpp"), + PCHObject(NonMatching, "System/SnapTimeObj.cpp"), + PCHObject(NonMatching, "System/TalkCursor.cpp"), Object(Matching, "System/TexCache.cpp"), - Object(Matching, "System/ZBufferCatch.cpp"), - Object(NonMatching, "System/Application.cpp"), - Object(Matching, "System/ScenarioArchiveName.cpp"), + PCHObject(Matching, "System/ZBufferCatch.cpp"), + PCHObject(NonMatching, "System/Application.cpp"), + PCHObject(Matching, "System/ScenarioArchiveName.cpp"), Object(NonMatching, "System/MarioGamePad.cpp"), - Object(Matching, "System/StageEventInfo.cpp"), - Object(Matching, "System/StageUtil.cpp"), + PCHObject(Matching, "System/StageEventInfo.cpp"), + PCHObject(Matching, "System/StageUtil.cpp"), Object(Matching, "System/Resolution.cpp"), - Object(Matching, "System/PositionHolder.cpp"), + PCHObject(Matching, "System/PositionHolder.cpp"), Object(Matching, "System/ProcessMeter.cpp"), - Object(NonMatching, "System/TimeRec.cpp"), + PCHObject(NonMatching, "System/TimeRec.cpp"), Object(NonMatching, "System/DrawSyncManager.cpp"), - Object(Matching, "System/THPRender.cpp"), + PCHObject(Matching, "System/THPRender.cpp"), PCHObject(NonMatching, "System/MarNameRefGen_BossEnemy.cpp"), - Object(NonMatching, "System/MarNameRefGen_Enemy.cpp"), - Object(NonMatching, "System/MarNameRefGen_Map.cpp"), - Object(NonMatching, "System/MarNameRefGen_MapObj.cpp"), - Object(NonMatching, "System/MarNameRefGen_NPC.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen_Enemy.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen_Map.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen_MapObj.cpp"), + PCHObject(NonMatching, "System/MarNameRefGen_NPC.cpp"), PCHObject(NonMatching, "System/CardManager.cpp"), - Object(NonMatching, "System/MarDirectorLoadResource.cpp"), - Object(NonMatching, "System/MovieDirector.cpp"), + PCHObject(NonMatching, "System/MarDirectorLoadResource.cpp"), + PCHObject(NonMatching, "System/MovieDirector.cpp"), Object(Matching, "System/MarDirectorCreateObjects.cpp"), - Object(NonMatching, "System/MarDirectorSetupObjects.cpp"), - Object(NonMatching, "System/MSoundMainSide.cpp"), - Object(Matching, "System/TargetArrow.cpp"), + PCHObject(NonMatching, "System/MarDirectorSetupObjects.cpp"), + PCHObject(NonMatching, "System/MSoundMainSide.cpp"), + PCHObject(Matching, "System/TargetArrow.cpp"), ], }, { @@ -895,20 +895,20 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "Strategic/liveactor.cpp"), + PCHObject(NonMatching, "Strategic/liveactor.cpp"), PCHObject(NonMatching, "Strategic/liveinterp.cpp"), - Object(NonMatching, "Strategic/livemanager.cpp"), + PCHObject(NonMatching, "Strategic/livemanager.cpp"), Object(NonMatching, "Strategic/ObjHitCheck.cpp"), - Object(NonMatching, "Strategic/objmanager.cpp"), - Object(NonMatching, "Strategic/ObjModel.cpp"), + PCHObject(NonMatching, "Strategic/objmanager.cpp"), + PCHObject(NonMatching, "Strategic/ObjModel.cpp"), Object(NonMatching, "Strategic/spcinterp.cpp"), - Object(NonMatching, "Strategic/Strategy.cpp"), - Object(NonMatching, "Strategic/question.cpp"), - Object(Matching, "Strategic/smplcharacter.cpp"), - Object(NonMatching, "Strategic/HitActor.cpp"), - Object(Matching, "Strategic/binder.cpp"), - Object(Matching, "Strategic/SharedParts.cpp"), - Object(NonMatching, "Strategic/MirrorActor.cpp"), + PCHObject(NonMatching, "Strategic/Strategy.cpp"), + PCHObject(NonMatching, "Strategic/question.cpp"), + PCHObject(Matching, "Strategic/smplcharacter.cpp"), + PCHObject(NonMatching, "Strategic/HitActor.cpp"), + PCHObject(Matching, "Strategic/binder.cpp"), + PCHObject(Matching, "Strategic/SharedParts.cpp"), + PCHObject(NonMatching, "Strategic/MirrorActor.cpp"), ], }, { @@ -920,13 +920,13 @@ def PCHObject(completed: bool, name: str) -> Object: Object(Matching, "Player/Atom.cpp"), Object(Matching, "Player/MarioAction.cpp"), Object(NonMatching, "Player/MarioAutodemo.cpp"), - Object(NonMatching, "Player/MarioBlend.cpp"), - Object(NonMatching, "Player/MarioCap.cpp"), - Object(NonMatching, "Player/MarioCollision.cpp"), + PCHObject(NonMatching, "Player/MarioBlend.cpp"), + PCHObject(NonMatching, "Player/MarioCap.cpp"), + PCHObject(NonMatching, "Player/MarioCollision.cpp"), PCHObject(NonMatching, "Player/MarioDraw.cpp"), Object(NonMatching, "Player/MarioJump.cpp"), Object(NonMatching, "Player/MarioMain.cpp"), - Object(NonMatching, "Player/MarioMove.cpp"), + PCHObject(NonMatching, "Player/MarioMove.cpp"), Object(NonMatching, "Player/MarioPhysics.cpp"), Object(Matching, "Player/MarioRecord.cpp"), PCHObject(NonMatching, "Player/MarioRun.cpp"), @@ -934,18 +934,18 @@ def PCHObject(completed: bool, name: str) -> Object: Object(NonMatching, "Player/MarioUpper.cpp"), PCHObject(NonMatching, "Player/MarioParticle.cpp"), Object(NonMatching, "Player/MarioWait.cpp"), - Object(NonMatching, "Player/SplashManager.cpp"), - Object(NonMatching, "Player/Tongue.cpp"), - Object(NonMatching, "Player/WaterGun.cpp"), + PCHObject(NonMatching, "Player/SplashManager.cpp"), + PCHObject(NonMatching, "Player/Tongue.cpp"), + PCHObject(NonMatching, "Player/WaterGun.cpp"), PCHObject(NonMatching, "Player/Yoshi.cpp"), - Object(NonMatching, "Player/MarioEffect.cpp"), + PCHObject(NonMatching, "Player/MarioEffect.cpp"), Object(NonMatching, "Player/MarioSwim.cpp"), Object(NonMatching, "Player/MarioAccess.cpp"), PCHObject(NonMatching, "Player/MarioInit.cpp"), PCHObject(NonMatching, "Player/ModelWaterManager.cpp"), - Object(Matching, "Player/MarioPositionObj.cpp"), + PCHObject(Matching, "Player/MarioPositionObj.cpp"), Object(NonMatching, "Player/MarioCheckCol.cpp"), - Object(NonMatching, "Player/MarioReceiveMsg.cpp"), + PCHObject(NonMatching, "Player/MarioReceiveMsg.cpp"), Object(NonMatching, "Player/MarioSound.cpp"), ], }, @@ -955,25 +955,25 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "NPC/NpcAnm.cpp"), - Object(NonMatching, "NPC/NpcBase.cpp"), + PCHObject(NonMatching, "NPC/NpcAnm.cpp"), + PCHObject(NonMatching, "NPC/NpcBase.cpp"), Object(NonMatching, "NPC/NpcCallback.cpp"), - Object(NonMatching, "NPC/NpcManager.cpp"), - Object(NonMatching, "NPC/NpcNerve.cpp"), - Object(Matching, "NPC/NpcSave.cpp"), - Object(NonMatching, "NPC/NpcEvent.cpp"), + PCHObject(NonMatching, "NPC/NpcManager.cpp"), + PCHObject(NonMatching, "NPC/NpcNerve.cpp"), + PCHObject(Matching, "NPC/NpcSave.cpp"), + PCHObject(NonMatching, "NPC/NpcEvent.cpp"), PCHObject(Matching, "NPC/NpcInitData.cpp"), - Object(NonMatching, "NPC/NpcInitPrg.cpp"), + PCHObject(NonMatching, "NPC/NpcInitPrg.cpp"), Object(NonMatching, "NPC/NpcInbetween.cpp"), - Object(NonMatching, "NPC/NpcParts.cpp"), + PCHObject(NonMatching, "NPC/NpcParts.cpp"), Object(NonMatching, "NPC/NpcColor.cpp"), PCHObject(Matching, "NPC/NpcSound.cpp"), Object(NonMatching, "NPC/NpcChange.cpp"), Object(NonMatching, "NPC/NpcThrow.cpp"), Object(Matching, "NPC/NpcTrample.cpp"), Object(NonMatching, "NPC/NpcEffect.cpp"), - Object(Matching, "NPC/NpcInitAnmData.cpp"), - Object(Matching, "NPC/NpcInitActionData.cpp"), + PCHObject(Matching, "NPC/NpcInitAnmData.cpp"), + PCHObject(Matching, "NPC/NpcInitActionData.cpp"), Object(NonMatching, "NPC/NpcCoin.cpp"), Object(NonMatching, "NPC/NpcBalloon.cpp"), Object(NonMatching, "NPC/NpcWalkTurn.cpp"), @@ -987,13 +987,13 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "MSound/MAnmSound.cpp"), - Object(NonMatching, "MSound/MSound.cpp"), - Object(NonMatching, "MSound/MSoundBGM.cpp"), + PCHObject(NonMatching, "MSound/MAnmSound.cpp"), + PCHObject(NonMatching, "MSound/MSound.cpp"), + PCHObject(NonMatching, "MSound/MSoundBGM.cpp"), Object(Matching, "MSound/MSoundDebug.cpp"), Object(NonMatching, "MSound/MSoundScene.cpp"), - Object(NonMatching, "MSound/MSoundSE.cpp"), - Object(NonMatching, "MSound/MSoundStruct.cpp"), + PCHObject(NonMatching, "MSound/MSoundSE.cpp"), + PCHObject(NonMatching, "MSound/MSoundStruct.cpp"), PCHObject(NonMatching, "MSound/MSHandle.cpp"), PCHObject(NonMatching, "MSound/MSModBgm.cpp"), ], @@ -1004,48 +1004,48 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "MoveBG/WoodBarrel.cpp"), - Object(NonMatching, "MoveBG/MapObjBase.cpp"), + PCHObject(NonMatching, "MoveBG/WoodBarrel.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjBase.cpp"), PCHObject(NonMatching, "MoveBG/MapObjInit.cpp"), - Object(NonMatching, "MoveBG/MapObjGeneral.cpp"), - Object(NonMatching, "MoveBG/MapObjManager.cpp"), - Object(NonMatching, "MoveBG/MapObjLib.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjGeneral.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjManager.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjLib.cpp"), PCHObject(NonMatching, "MoveBG/Item.cpp"), - Object(NonMatching, "MoveBG/ItemManager.cpp"), - Object(NonMatching, "MoveBG/MapObjTown.cpp"), - Object(NonMatching, "MoveBG/MapObjBlock.cpp"), - Object(NonMatching, "MoveBG/MapObjBianco.cpp"), + PCHObject(NonMatching, "MoveBG/ItemManager.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjTown.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjBlock.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjBianco.cpp"), PCHObject(NonMatching, "MoveBG/MapObjSirena.cpp"), - Object(NonMatching, "MoveBG/MapObjRicco.cpp"), - Object(NonMatching, "MoveBG/MapObjMamma.cpp"), - Object(NonMatching, "MoveBG/MapObjPinna.cpp"), - Object(Matching, "MoveBG/MapObjSample.cpp"), - Object(NonMatching, "MoveBG/MapObjMare.cpp"), - Object(NonMatching, "MoveBG/MapObjFlag.cpp"), - Object(NonMatching, "MoveBG/MapObjWave.cpp"), - Object(NonMatching, "MoveBG/MapObjFloat.cpp"), - Object(NonMatching, "MoveBG/MapObjPlane.cpp"), - Object(NonMatching, "MoveBG/MapObjCloud.cpp"), - Object(NonMatching, "MoveBG/MapObjBall.cpp"), - Object(Matching, "MoveBG/MapObjAirport.cpp"), - Object(NonMatching, "MoveBG/MapObjDolpic.cpp"), - Object(NonMatching, "MoveBG/MapObjPollution.cpp"), - Object(NonMatching, "MoveBG/MapObjGrass.cpp"), - Object(Matching, "MoveBG/MapObjPole.cpp"), - Object(NonMatching, "MoveBG/MapObjWater.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjRicco.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjMamma.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjPinna.cpp"), + PCHObject(Matching, "MoveBG/MapObjSample.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjMare.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjFlag.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjWave.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjFloat.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjPlane.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjCloud.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjBall.cpp"), + PCHObject(Matching, "MoveBG/MapObjAirport.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjDolpic.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjPollution.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjGrass.cpp"), + PCHObject(Matching, "MoveBG/MapObjPole.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjWater.cpp"), PCHObject(NonMatching, "MoveBG/ModelGate.cpp"), - Object(NonMatching, "MoveBG/MapObjFence.cpp"), - Object(NonMatching, "MoveBG/MapObjOption.cpp"), - Object(NonMatching, "MoveBG/MapObjRailBlock.cpp"), - Object(NonMatching, "MoveBG/MapObjMonte.cpp"), - Object(NonMatching, "MoveBG/MapObjTree.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjFence.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjOption.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjRailBlock.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjMonte.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjTree.cpp"), Object(Matching, "MoveBG/MapObjTumblePole.cpp"), - Object(NonMatching, "MoveBG/MapObjEx.cpp"), - Object(Matching, "MoveBG/Pool.cpp"), - Object(NonMatching, "MoveBG/MapObjCorona.cpp"), - Object(NonMatching, "MoveBG/MapObjItem2.cpp"), - Object(NonMatching, "MoveBG/MapObjHide.cpp"), - Object(NonMatching, "MoveBG/MapObjTrap.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjEx.cpp"), + PCHObject(Matching, "MoveBG/Pool.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjCorona.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjItem2.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjHide.cpp"), + PCHObject(NonMatching, "MoveBG/MapObjTrap.cpp"), ], }, { @@ -1054,44 +1054,44 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(Matching, "Map/JointModel.cpp"), - Object(Matching, "Map/JointModelManager.cpp"), - Object(Matching, "Map/JointObj.cpp"), - Object(NonMatching, "Map/Map.cpp"), + PCHObject(Matching, "Map/JointModel.cpp"), + PCHObject(Matching, "Map/JointModelManager.cpp"), + PCHObject(Matching, "Map/JointObj.cpp"), + PCHObject(NonMatching, "Map/Map.cpp"), Object(NonMatching, "Map/MapArea.cpp"), Object(NonMatching, "Map/MapCheck.cpp"), - Object(Matching, "Map/MapCollisionData.cpp"), - Object(NonMatching, "Map/MapCollisionEntry.cpp"), + PCHObject(Matching, "Map/MapCollisionData.cpp"), + PCHObject(NonMatching, "Map/MapCollisionEntry.cpp"), Object(Matching, "Map/MapCollisionManager.cpp"), - Object(Matching, "Map/MapDraw.cpp"), - Object(Matching, "Map/MapEvent.cpp"), + PCHObject(Matching, "Map/MapDraw.cpp"), + PCHObject(Matching, "Map/MapEvent.cpp"), PCHObject(NonMatching, "Map/MapEventSink.cpp"), Object(NonMatching, "Map/MapMakeData.cpp"), Object(NonMatching, "Map/MapMakeList.cpp"), - Object(NonMatching, "Map/MapMirror.cpp"), - Object(NonMatching, "Map/MapModel.cpp"), - Object(NonMatching, "Map/MapWarp.cpp"), - Object(NonMatching, "Map/MapStaticObject.cpp"), - Object(NonMatching, "Map/MapWire.cpp"), - Object(NonMatching, "Map/MapWireManager.cpp"), + PCHObject(NonMatching, "Map/MapMirror.cpp"), + PCHObject(NonMatching, "Map/MapModel.cpp"), + PCHObject(NonMatching, "Map/MapWarp.cpp"), + PCHObject(NonMatching, "Map/MapStaticObject.cpp"), + PCHObject(NonMatching, "Map/MapWire.cpp"), + PCHObject(NonMatching, "Map/MapWireManager.cpp"), Object(NonMatching, "Map/MapXlu.cpp"), Object(NonMatching, "Map/PollutionAction.cpp"), - Object(NonMatching, "Map/PollutionCount.cpp"), - Object(NonMatching, "Map/PollutionManager.cpp"), - Object(NonMatching, "Map/PollutionObj.cpp"), + PCHObject(NonMatching, "Map/PollutionCount.cpp"), + PCHObject(NonMatching, "Map/PollutionManager.cpp"), + PCHObject(NonMatching, "Map/PollutionObj.cpp"), Object(NonMatching, "Map/PollutionPos.cpp"), - Object(NonMatching, "Map/Shimmer.cpp"), - Object(NonMatching, "Map/Sky.cpp"), - Object(NonMatching, "Map/MapEventSirena.cpp"), - Object(NonMatching, "Map/PollutionLayer.cpp"), - Object(NonMatching, "Map/PollutionEvent.cpp"), + PCHObject(NonMatching, "Map/Shimmer.cpp"), + PCHObject(NonMatching, "Map/Sky.cpp"), + PCHObject(NonMatching, "Map/MapEventSirena.cpp"), + PCHObject(NonMatching, "Map/PollutionLayer.cpp"), + PCHObject(NonMatching, "Map/PollutionEvent.cpp"), Object(NonMatching, "Map/MapCollisionPlane.cpp"), - Object(Matching, "Map/MarineSnow.cpp"), + PCHObject(Matching, "Map/MarineSnow.cpp"), Object(Matching, "Map/MapData.cpp"), PCHObject(NonMatching, "Map/MapEventDolpic.cpp"), - Object(NonMatching, "Map/MapEventMare.cpp"), - Object(NonMatching, "Map/BathWaterManager.cpp"), - Object(Matching, "Map/StickyStainManager.cpp"), + PCHObject(NonMatching, "Map/MapEventMare.cpp"), + PCHObject(NonMatching, "Map/BathWaterManager.cpp"), + PCHObject(Matching, "Map/StickyStainManager.cpp"), ], }, { @@ -1103,30 +1103,30 @@ def PCHObject(completed: bool, name: str) -> Object: Object(Matching, "GC2D/ChangeValue.cpp"), Object(Matching, "GC2D/Coord2D.cpp"), Object(Matching, "GC2D/ExPane.cpp"), - Object(NonMatching, "GC2D/Menu.cpp"), - Object(NonMatching, "GC2D/ScrnFader.cpp"), + PCHObject(NonMatching, "GC2D/Menu.cpp"), + PCHObject(NonMatching, "GC2D/ScrnFader.cpp"), PCHObject(NonMatching, "GC2D/GCConsole2.cpp"), - Object(NonMatching, "GC2D/Talk2D2.cpp"), + PCHObject(NonMatching, "GC2D/Talk2D2.cpp"), Object(NonMatching, "GC2D/BoundPane.cpp"), - Object(NonMatching, "GC2D/PauseMenu2.cpp"), + PCHObject(NonMatching, "GC2D/PauseMenu2.cpp"), Object(NonMatching, "GC2D/MessageLoader.cpp"), - Object(NonMatching, "GC2D/HelpActor.cpp"), + PCHObject(NonMatching, "GC2D/HelpActor.cpp"), Object(Matching, "GC2D/MessageUtil.cpp"), - Object(NonMatching, "GC2D/CardSave.cpp"), - Object(NonMatching, "GC2D/CardLoad.cpp"), - Object(NonMatching, "GC2D/ConsoleStr.cpp"), + PCHObject(NonMatching, "GC2D/CardSave.cpp"), + PCHObject(NonMatching, "GC2D/CardLoad.cpp"), + PCHObject(NonMatching, "GC2D/ConsoleStr.cpp"), PCHObject(NonMatching, "GC2D/SelectMenu.cpp"), - Object(NonMatching, "GC2D/SelectDir.cpp"), - Object(NonMatching, "GC2D/SelectShine2.cpp"), - Object(Matching, "GC2D/BlendPane.cpp"), - Object(NonMatching, "GC2D/Guide.cpp"), - Object(NonMatching, "GC2D/SunGlass.cpp"), - Object(Matching, "GC2D/ShineFader.cpp"), - Object(NonMatching, "GC2D/ProgSelect.cpp"), + PCHObject(NonMatching, "GC2D/SelectDir.cpp"), + PCHObject(NonMatching, "GC2D/SelectShine2.cpp"), + PCHObject(Matching, "GC2D/BlendPane.cpp"), + PCHObject(NonMatching, "GC2D/Guide.cpp"), + PCHObject(NonMatching, "GC2D/SunGlass.cpp"), + PCHObject(Matching, "GC2D/ShineFader.cpp"), + PCHObject(NonMatching, "GC2D/ProgSelect.cpp"), Object(NonMatching, "GC2D/hx_wiper.c"), - Object(NonMatching, "GC2D/MovieSubtitle.cpp"), + PCHObject(NonMatching, "GC2D/MovieSubtitle.cpp"), PCHObject(NonMatching, "GC2D/Option.cpp"), - Object(NonMatching, "GC2D/MovieRumble.cpp"), + PCHObject(NonMatching, "GC2D/MovieRumble.cpp"), ], }, { @@ -1135,90 +1135,90 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "Enemy/conductor.cpp"), - Object(NonMatching, "Enemy/effectObj.cpp"), - Object(NonMatching, "Enemy/emario.cpp"), - Object(NonMatching, "Enemy/enemy.cpp"), - Object(NonMatching, "Enemy/enemyAttachment.cpp"), - Object(NonMatching, "Enemy/enemymanager.cpp"), + PCHObject(NonMatching, "Enemy/conductor.cpp"), + PCHObject(NonMatching, "Enemy/effectObj.cpp"), + PCHObject(NonMatching, "Enemy/emario.cpp"), + PCHObject(NonMatching, "Enemy/enemy.cpp"), + PCHObject(NonMatching, "Enemy/enemyAttachment.cpp"), + PCHObject(NonMatching, "Enemy/enemymanager.cpp"), PCHObject(NonMatching, "Enemy/enemyMario.cpp"), PCHObject(NonMatching, "Enemy/feetinv.cpp"), PCHObject(NonMatching, "Enemy/gesso.cpp"), PCHObject(NonMatching, "Enemy/graph.cpp"), - Object(NonMatching, "Enemy/hamukuri.cpp"), + PCHObject(NonMatching, "Enemy/hamukuri.cpp"), PCHObject(NonMatching, "Enemy/hinokuri2.cpp"), - Object(NonMatching, "Enemy/mameGesso.cpp"), + PCHObject(NonMatching, "Enemy/mameGesso.cpp"), PCHObject(NonMatching, "Enemy/namekuri.cpp"), - Object(NonMatching, "Enemy/pakkun.cpp"), - Object(NonMatching, "Enemy/smallEnemy.cpp"), - Object(NonMatching, "Enemy/spider.cpp"), + PCHObject(NonMatching, "Enemy/pakkun.cpp"), + PCHObject(NonMatching, "Enemy/smallEnemy.cpp"), + PCHObject(NonMatching, "Enemy/spider.cpp"), Object(Matching, "Enemy/spline.cpp"), - Object(Matching, "Enemy/typicalenemy.cpp"), - Object(NonMatching, "Enemy/walker.cpp"), - Object(NonMatching, "Enemy/walkerEnemy.cpp"), + PCHObject(Matching, "Enemy/typicalenemy.cpp"), + PCHObject(NonMatching, "Enemy/walker.cpp"), + PCHObject(NonMatching, "Enemy/walkerEnemy.cpp"), PCHObject(NonMatching, "Enemy/bossgesso.cpp"), - Object(NonMatching, "Enemy/elecNokonoko.cpp"), - Object(NonMatching, "Enemy/telesa.cpp"), - Object(NonMatching, "Enemy/fireWanwan.cpp"), - Object(NonMatching, "Enemy/enemytable.cpp"), - Object(NonMatching, "Enemy/generator.cpp"), - Object(NonMatching, "Enemy/bosspakkun.cpp"), - Object(NonMatching, "Enemy/tobiPuku.cpp"), + PCHObject(NonMatching, "Enemy/elecNokonoko.cpp"), + PCHObject(NonMatching, "Enemy/telesa.cpp"), + PCHObject(NonMatching, "Enemy/fireWanwan.cpp"), + PCHObject(NonMatching, "Enemy/enemytable.cpp"), + PCHObject(NonMatching, "Enemy/generator.cpp"), + PCHObject(NonMatching, "Enemy/bosspakkun.cpp"), + PCHObject(NonMatching, "Enemy/tobiPuku.cpp"), PCHObject(NonMatching, "Enemy/tinkoopa.cpp"), - Object(NonMatching, "Enemy/launcher.cpp"), + PCHObject(NonMatching, "Enemy/launcher.cpp"), PCHObject(NonMatching, "Enemy/bosswanwan.cpp"), - Object(NonMatching, "Enemy/chuuhana.cpp"), - Object(NonMatching, "Enemy/igaiga.cpp"), - Object(NonMatching, "Enemy/poihana.cpp"), - Object(NonMatching, "Enemy/tamaNoko.cpp"), - Object(NonMatching, "Enemy/bosstelesa.cpp"), - Object(NonMatching, "Enemy/riccohook.cpp"), + PCHObject(NonMatching, "Enemy/chuuhana.cpp"), + PCHObject(NonMatching, "Enemy/igaiga.cpp"), + PCHObject(NonMatching, "Enemy/poihana.cpp"), + PCHObject(NonMatching, "Enemy/tamaNoko.cpp"), + PCHObject(NonMatching, "Enemy/bosstelesa.cpp"), + PCHObject(NonMatching, "Enemy/riccohook.cpp"), PCHObject(NonMatching, "Enemy/bombhei.cpp"), - Object(NonMatching, "Enemy/cannon.cpp"), + PCHObject(NonMatching, "Enemy/cannon.cpp"), PCHObject(NonMatching, "Enemy/bosseel.cpp"), PCHObject(NonMatching, "Enemy/killer.cpp"), - Object(NonMatching, "Enemy/beam.cpp"), - Object(NonMatching, "Enemy/hanasambo.cpp"), - Object(NonMatching, "Enemy/popo.cpp"), - Object(NonMatching, "Enemy/SleepBossHanachan.cpp"), - Object(NonMatching, "Enemy/DemoBossHanachanBase.cpp"), - Object(NonMatching, "Enemy/fruitsboat.cpp"), - Object(NonMatching, "Enemy/BossHanachanSub.cpp"), - Object(NonMatching, "Enemy/BossHanachanMain.cpp"), - Object(NonMatching, "Enemy/BossHanachanNerve.cpp"), + PCHObject(NonMatching, "Enemy/beam.cpp"), + PCHObject(NonMatching, "Enemy/hanasambo.cpp"), + PCHObject(NonMatching, "Enemy/popo.cpp"), + PCHObject(NonMatching, "Enemy/SleepBossHanachan.cpp"), + PCHObject(NonMatching, "Enemy/DemoBossHanachanBase.cpp"), + PCHObject(NonMatching, "Enemy/fruitsboat.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanSub.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanMain.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanNerve.cpp"), Object(NonMatching, "Enemy/BossHanachanAnm.cpp"), - Object(NonMatching, "Enemy/BossHanachanParts.cpp"), - Object(NonMatching, "Enemy/BossHanachanSave.cpp"), - Object(NonMatching, "Enemy/amiNoko.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanParts.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanSave.cpp"), + PCHObject(NonMatching, "Enemy/amiNoko.cpp"), PCHObject(NonMatching, "Enemy/gatekeeper.cpp"), - Object(NonMatching, "Enemy/BossHanachanEffect.cpp"), - Object(NonMatching, "Enemy/egggen.cpp"), - Object(NonMatching, "Enemy/seal.cpp"), - Object(NonMatching, "Enemy/bgpoldrop.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanEffect.cpp"), + PCHObject(NonMatching, "Enemy/egggen.cpp"), + PCHObject(NonMatching, "Enemy/seal.cpp"), + PCHObject(NonMatching, "Enemy/bgpoldrop.cpp"), PCHObject(NonMatching, "Enemy/bgtentacle.cpp"), - Object(NonMatching, "Enemy/effectEnemy.cpp"), - Object(NonMatching, "Enemy/hauntLeg.cpp"), - Object(NonMatching, "Enemy/areacylinder.cpp"), - Object(NonMatching, "Enemy/wireTrap.cpp"), - Object(NonMatching, "Enemy/BossHanachanSound.cpp"), - Object(NonMatching, "Enemy/rocket.cpp"), - Object(NonMatching, "Enemy/Kazekun.cpp"), - Object(NonMatching, "Enemy/bossManta.cpp"), - Object(NonMatching, "Enemy/wireBinder.cpp"), - Object(NonMatching, "Enemy/yunbo.cpp"), - Object(NonMatching, "Enemy/koopajr.cpp"), - Object(NonMatching, "Enemy/Kumokun.cpp"), - Object(NonMatching, "Enemy/Koopa.cpp"), - Object(NonMatching, "Enemy/Kukku.cpp"), - Object(NonMatching, "Enemy/Amenbo.cpp"), - Object(NonMatching, "Enemy/BathtubPeach.cpp"), - Object(NonMatching, "Enemy/BathtubKiller.cpp"), - Object(NonMatching, "Enemy/coasterkiller.cpp"), - Object(NonMatching, "Enemy/DebuTelesa.cpp"), - Object(NonMatching, "Enemy/TabePuku.cpp"), - Object(NonMatching, "Enemy/BathtubBinder.cpp"), - Object(NonMatching, "Enemy/limitkoopa.cpp"), - Object(NonMatching, "Enemy/limitkoopajr.cpp"), + PCHObject(NonMatching, "Enemy/effectEnemy.cpp"), + PCHObject(NonMatching, "Enemy/hauntLeg.cpp"), + PCHObject(NonMatching, "Enemy/areacylinder.cpp"), + PCHObject(NonMatching, "Enemy/wireTrap.cpp"), + PCHObject(NonMatching, "Enemy/BossHanachanSound.cpp"), + PCHObject(NonMatching, "Enemy/rocket.cpp"), + PCHObject(NonMatching, "Enemy/Kazekun.cpp"), + PCHObject(NonMatching, "Enemy/bossManta.cpp"), + PCHObject(NonMatching, "Enemy/wireBinder.cpp"), + PCHObject(NonMatching, "Enemy/yunbo.cpp"), + PCHObject(NonMatching, "Enemy/koopajr.cpp"), + PCHObject(NonMatching, "Enemy/Kumokun.cpp"), + PCHObject(NonMatching, "Enemy/Koopa.cpp"), + PCHObject(NonMatching, "Enemy/Kukku.cpp"), + PCHObject(NonMatching, "Enemy/Amenbo.cpp"), + PCHObject(NonMatching, "Enemy/BathtubPeach.cpp"), + PCHObject(NonMatching, "Enemy/BathtubKiller.cpp"), + PCHObject(NonMatching, "Enemy/coasterkiller.cpp"), + PCHObject(NonMatching, "Enemy/DebuTelesa.cpp"), + PCHObject(NonMatching, "Enemy/TabePuku.cpp"), + PCHObject(NonMatching, "Enemy/BathtubBinder.cpp"), + PCHObject(NonMatching, "Enemy/limitkoopa.cpp"), + PCHObject(NonMatching, "Enemy/limitkoopajr.cpp"), ], }, { @@ -1228,35 +1228,35 @@ def PCHObject(completed: bool, name: str) -> Object: "progress_category": "game", "objects": [ Object(NonMatching, "Camera/CameraBGCheck.cpp"), - Object(NonMatching, "Camera/CameraChange.cpp"), + PCHObject(NonMatching, "Camera/CameraChange.cpp"), Object(NonMatching, "Camera/CameraCodeControl.cpp"), - Object(NonMatching, "Camera/cameragc.cpp"), - Object(Matching, "Camera/CameraHeightPan.cpp"), + PCHObject(NonMatching, "Camera/cameragc.cpp"), + PCHObject(Matching, "Camera/CameraHeightPan.cpp"), Object(NonMatching, "Camera/CameraInbetween.cpp"), Object(Matching, "Camera/CameraKindParam.cpp"), Object(NonMatching, "Camera/cameralib.cpp"), Object(NonMatching, "Camera/CameraMarioData.cpp"), - Object(NonMatching, "Camera/CameraNotice.cpp"), - Object(NonMatching, "Camera/CameraNormal.cpp"), - Object(Matching, "Camera/camerasave.cpp"), + PCHObject(NonMatching, "Camera/CameraNotice.cpp"), + PCHObject(NonMatching, "Camera/CameraNormal.cpp"), + PCHObject(Matching, "Camera/camerasave.cpp"), Object(NonMatching, "Camera/camerashake.cpp"), Object(NonMatching, "Camera/CameraTalk.cpp"), - Object(NonMatching, "Camera/lensflare.cpp"), - Object(NonMatching, "Camera/lensglow.cpp"), - Object(NonMatching, "Camera/sunmgr.cpp"), - Object(NonMatching, "Camera/sunmodel.cpp"), - Object(NonMatching, "Camera/CubeManagerBase.cpp"), - Object(Matching, "Camera/CameraMapTool.cpp"), - Object(Matching, "Camera/CubeMapTool.cpp"), + PCHObject(NonMatching, "Camera/lensflare.cpp"), + PCHObject(NonMatching, "Camera/lensglow.cpp"), + PCHObject(NonMatching, "Camera/sunmgr.cpp"), + PCHObject(NonMatching, "Camera/sunmodel.cpp"), + PCHObject(NonMatching, "Camera/CubeManagerBase.cpp"), + PCHObject(Matching, "Camera/CameraMapTool.cpp"), + PCHObject(Matching, "Camera/CubeMapTool.cpp"), Object(NonMatching, "Camera/CameraMultiPlayer.cpp"), - Object(NonMatching, "Camera/CameraJetCoaster.cpp"), - Object(NonMatching, "Camera/CameraBck.cpp"), - Object(NonMatching, "Camera/CameraOption.cpp"), - Object(NonMatching, "Camera/CameraDemo.cpp"), + PCHObject(NonMatching, "Camera/CameraJetCoaster.cpp"), + PCHObject(NonMatching, "Camera/CameraBck.cpp"), + PCHObject(NonMatching, "Camera/CameraOption.cpp"), + PCHObject(NonMatching, "Camera/CameraDemo.cpp"), Object(NonMatching, "Camera/CameraWarp.cpp"), - Object(NonMatching, "Camera/CameraMode.cpp"), + PCHObject(NonMatching, "Camera/CameraMode.cpp"), Object(NonMatching, "Camera/CameraSecureView.cpp"), - Object(Matching, "Camera/CamShakeDefine.cpp"), + PCHObject(Matching, "Camera/CamShakeDefine.cpp"), ], }, { @@ -1265,15 +1265,15 @@ def PCHObject(completed: bool, name: str) -> Object: "cflags": cflags_game, "progress_category": "game", "objects": [ - Object(NonMatching, "Animal/boid.cpp"), - Object(NonMatching, "Animal/fishoid.cpp"), - Object(NonMatching, "Animal/AnimalBase.cpp"), - Object(NonMatching, "Animal/AnimalManager.cpp"), - Object(Matching, "Animal/AnimalSave.cpp"), - Object(NonMatching, "Animal/AnimalNerve.cpp"), - Object(NonMatching, "Animal/Bird.cpp"), - Object(NonMatching, "Animal/BeeHive.cpp"), - Object(NonMatching, "Animal/Butterfly.cpp"), + PCHObject(NonMatching, "Animal/boid.cpp"), + PCHObject(NonMatching, "Animal/fishoid.cpp"), + PCHObject(NonMatching, "Animal/AnimalBase.cpp"), + PCHObject(NonMatching, "Animal/AnimalManager.cpp"), + PCHObject(Matching, "Animal/AnimalSave.cpp"), + PCHObject(NonMatching, "Animal/AnimalNerve.cpp"), + PCHObject(NonMatching, "Animal/Bird.cpp"), + PCHObject(NonMatching, "Animal/BeeHive.cpp"), + PCHObject(NonMatching, "Animal/Butterfly.cpp"), ], }, ]