Skip to content

Promote ov006/dScMgMCarlo_c to a single 23-function C++ TU - #2071

Merged
andrewboudreau merged 3 commits into
mainfrom
cpp/minigame-tu-3
Aug 31, 2026
Merged

Promote ov006/dScMgMCarlo_c to a single 23-function C++ TU#2071
andrewboudreau merged 3 commits into
mainfrom
cpp/minigame-tu-3

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Stacked on #2067 (which is stacked on #2064). Review the top commit pair only; the earlier commits are #2067's.

src_tu/actors/dScMgMCarlo_c.cppsrc/actors/dScMgMCarlo_c.cpp, replacing 23 per-function legacy sources (18 flat-C, 5 already C++). The whole .text range 0x020f7634..0x020f8e44 now reproduces from one object.

Consolidation is where the work was

Each legacy file compiled in isolation with its own private shadow structs and extern declarations, so they were free to contradict each other and never had to say so. Put in one TU they produced ~25 compile errors — every one a real disagreement about the same object. Each was settled against evidence, not against the compiler:

  • Node and the list-Obj are the same struct. Five partial views, agreeing on every offset they share; unified into one layout with the fields commented.
  • A third, unrelated Obj was not a list node at all — it was a shape-only shadow of this scene class's own vtable, used for the slot-18 self-dispatch in InitResources. Revived as SceneVtable so the two meanings stop colliding. It becomes a real base-class virtual call once dScMgBase_c declares slots 18–35.
  • data_ov006_02142500 is the list HEAD and _02142504 the TAIL, proven by func_ov006_020f7740 walking head->next and tail->prev. Render starts from the tail, so both its loops step prev, not next — corroborated independently by func_ov006_020f8a3c's raw *(char**)(r3 + 4).
  • _Z14ApproachLinearRiii / _Z15ApproachLinear2Rsss take references. The mangled names say so, and a reference and a pointer pass the same address, so the accurate spelling costs no code.
  • func_ov006_020f8540 was declared (void) but called with an argument. ARM passes it in r0 and the body ignores it; spelling the parameter keeps the call site honest and changes no byte.
  • include/dScMgBase_c.h already declared data_ov004_020beb68 as void*, which settled that conflict against the TU's char*.

decl_common.h loses the scalar declarations of the four list globals (_021424fc/_02142500/_02142504/_02142508). They were arbitrary winners among 19 contradictory isolated spellings; every consumer is in this TU, which now declares all four with the recovered pointer type.

The destructor is inline, and that is what makes the vtable ours

Out of line, mwcc emits the synthesized D0 ahead of the written D1; the cartridge has D1 first (0x020f7634) then D0 (0x020f76a8). Inlining hands the key-function role to InitResources — the next virtual declared, non-inline, defined here — which is what emits _ZTV13dScMgMCarlo_c. Slots 16 and 17 name D1 then D0, odr-using both, so the compiler emits the pair in cartridge order, and the homeless D2 is gone.

Verification

check result
tubuild verify ov006/dScMgMCarlo_c 23/23 MATCH, objisolate clean, reloc-destinations clean, ROM-ascending section order
tubuild linkcheck (pre-promotion) SCRATCH-LINK-VERIFIED; 106/106 exact; full ROM built and identical to stock
rombuild -j16 (post-promotion) 11,088 source-built functions, reproducing 11,088, mismatching 0; 106/106 exact, 100.000000%
the ROM it builds sha256 d1506e90efae5e2d2cf119926a4ac2a291bd5ca78349d09d5024e1a918c478e8byte-identical to the stock build
premerge_check on the merge tree all 8 gates pass; nothing goes green → red
layout / eligible / langmode / port_refcheck / dead-references clean

dsd check symbols --fail still fails on the same 9 pre-existing errors the baseline control also has — 0 new, so not attributable to this TU, but it is not green and is not reported as such.

Compiler-generated output, byte-compared

All 13 RTTI/vtable symbols are licensed in compiler_only_output, every canonical address confirmed against config/arm9/.../symbols.txt, and romdata_check compares each against the cartridge: 6 VERIFIED, 7 PARTIAL (exact prefixes), 0 DIFFER.

_ZTV13dScMgMCarlo_c reproduces 72 of the cartridge's 144 bytes — 18 of 36 slots — because dScMgBase_c still leaves slots 18–35 undeclared. That is a verified prefix, not a disagreement; widening it is the dScMgBase_c follow-up, not this change.

The cartridge's own _ZTS strings corroborate the names: reading extracted/dsd/arm9_overlays/ov006.bin at overlay base 34340544 gives 13dScMgMCarlo_c at 0x0213d594 and 19dScMgSingle3DBase_c at 0x0213bd00 — so this TU emits no homeless typeinfo record.

Second commit: @symbol boundaries

tiers.score_member slices a member at // @symbol markers and, finding none after a marker, runs to end of file. Only 5 of 21 in-file members carried one, so Render was scored over every flat-C body below it and the CONVERTED ratchet read that as a backslide — neither raw-cast nor mangled-callee is true of Render's own body. 16 markers added; comments only, ROM sha256 unchanged.

src/actors/dScMgBSC_c.cpp has the same gap (6 markers for 17 members). Nothing banked mis-scores there today, so it is latent rather than red — it belongs to #2067, not here.

Attribution

A 23-delete + 1-add collapse ends 22 git lineages, so attribution.json takes 23 explicit override keys on the surviving path, each carrying the first matcher the gate itself computes. prepush_attribution: 47 consolidated with credit intact, 0 changed, 0 lost.

🤖 Generated with Claude Code

@tangos-validator

tangos-validator Bot commented Aug 31, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

Committed merge passes; 23 contributor credit reassignment(s) noted, not a blocker.

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,853 / 11,347 (95.65%, -22)
Byte-verified code bytes 2,023,208 / 2,211,124 (91.50%, -6,044)
Claimed, not byte-verified 364 functions, 82,472 bytes (+22)
Perfect source moves 0 R100
Enrolled ranges (delinks complete) 11,059 functions, 2,053,148 bytes (92.86%, +0) -- differs from byte-verified by +206
Contributor credit 0 added, 23 changed, 0 lost
Relocation check 1196 checked; 5 BLIND, 1191 VERIFIED
Port reference check 405 checked; 0 stale
Module fidelity 106/106 exact; 100.000000% compared bytes
Code linked from verified source 11,088 functions, 2,067,148 bytes (93.49%)
Module bytes from source 2,067,148 / 3,049,600 (67.8%); 811,492 (26.6%) are data no delink entry reaches
ROM data reproduced from source 462 symbol(s) exact, 250 partial, 9 differ

Contributor credit moved (23)

Function Source Before After
ov006:0x020f7634 src/_ZN13dScMgMCarlo_cD1Ev.cpp -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f76a8 src/_ZN13dScMgMCarlo_cD0Ev.cpp -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f7730 src/func_ov006_020f7730.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7740 src/func_ov006_020f7740.cpp -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7994 src/func_ov006_020f7994.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7a00 src/func_ov006_020f7a00.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7a90 src/func_ov006_020f7a90.c -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f7b10 src/func_ov006_020f7b10.c -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f7b90 src/func_ov006_020f7b90.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7c10 src/func_ov006_020f7c10.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7e2c src/func_ov006_020f7e2c.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f7ee4 src/func_ov006_020f7ee4.cpp -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f8154 src/func_ov006_020f8154.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f8224 src/func_ov006_020f8224.c -> src/actors/dScMgMCarlo_c.cpp ruspecial github-actions[bot]
ov006:0x020f82d0 src/func_ov006_020f82d0.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f8320 src/func_ov006_020f8320.c -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f84a8 src/func_ov006_020f84a8.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f8540 src/func_ov006_020f8540.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f85b0 src/_ZN13dScMgMCarlo_c6RenderEv.cpp -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f869c src/_ZN13dScMgMCarlo_c8BehaviorEv.cpp -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f8a3c src/func_ov006_020f8a3c.c -> src/actors/dScMgMCarlo_c.cpp andrewboudreau github-actions[bot]
ov006:0x020f8c68 src/func_ov006_020f8c68.c -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]
ov006:0x020f8d08 src/_ZN13dScMgMCarlo_c13InitResourcesEv.cpp -> src/actors/dScMgMCarlo_c.cpp tangosdev github-actions[bot]

Byte-verified means the range carries complete in a delinks.txt, so the ROM build compiled it and compared it to the cartridge. The 364 claimed functions have a src/ file named after the symbol with no NONMATCHING banner, and nothing compiles them -- dsd fills their addresses with the ROM's own bytes. Both together are the 11,217 this project calls matched.

Warnings: contributor attribution changed, not a blocker (23 changed, 0 lost -- src/actors/dScMgMCarlo_c.cpp: andrewboudreau -> github-actions[bot]; src/actors/dScMgMCarlo_c.cpp: andrewboudreau -> github-actions[bot]; src/actors/dScMgMCarlo_c.cpp: tangosdev -> github-actions[bot]; +20 more); 23 address range(s) left the byte-verified set while enrolled totals held steady: ov006:0x020f7634-0x020f76a8, ov006:0x020f76a8-0x020f7730, ov006:0x020f7730-0x020f7740, ov006:0x020f7740-0x020f7994, ov006:0x020f7994-0x020f7a00, +18 more; 5 linkcheck result(s) have unresolved relocations; 22 more function(s) now claim a match that nothing compiles; enroll them in a delinks.txt to have the ROM build check them.

Per-file link-check detail

All 1098 changed file(s) compile to the ROM byte-for-byte with correct relocation targets.

File Symbol Result Slots checked
src/AmbientSoundEffects_Spawn.c AmbientSoundEffects_Spawn ✅ verified 1
src/Amp_Spawn.c Amp_Spawn ✅ verified 1
src/ArmedRotatingPlatform_Spawn.c ArmedRotatingPlatform_Spawn ✅ verified 1
src/ArrowLift_Spawn.c ArrowLift_Spawn ✅ verified 1
src/ArrowPathLift_Spawn.c ArrowPathLift_Spawn ✅ verified 1
src/ArrowSignLeft_Spawn.c ArrowSignLeft_Spawn ✅ verified 1
src/ArrowSignRight_Spawn.c ArrowSignRight_Spawn ✅ verified 1
src/BabyPenguin_Spawn.c BabyPenguin_Spawn ✅ verified 1
src/BasementWater_Spawn.c BasementWater_Spawn ✅ verified 1
src/BigBrickBlock_Spawn.c BigBrickBlock_Spawn ✅ verified 1
src/BigBully_Spawn.c BigBully_Spawn ✅ verified 1
src/BigMovingIceBlock_Spawn.c BigMovingIceBlock_Spawn ✅ verified 1
src/BigMrI_Spawn.c BigMrI_Spawn ✅ verified 1
src/Bird_Spawn.c Bird_Spawn ✅ verified 1
src/BlackBrickBlock_Spawn.c BlackBrickBlock_Spawn ✅ verified 1
src/BlueCoin_Spawn.c BlueCoin_Spawn ✅ verified 1
src/BlueFlame_Spawn.c BlueFlame_Spawn ✅ verified 1
src/BobOmbBuddy_Spawn.c BobOmbBuddy_Spawn ✅ verified 1
src/BobOmb_Spawn.c BobOmb_Spawn ✅ verified 1
src/BookShotSpawner_Spawn.c BookShotSpawner_Spawn ✅ verified 1
src/BookShot_Spawn.c BookShot_Spawn ✅ verified 1
src/Bookend_Spawn.c Bookend_Spawn ✅ verified 1
src/BowserFireSeaArena_Spawn.c BowserFireSeaArena_Spawn ✅ verified 1
src/BowserFire_Spawn.c BowserFire_Spawn ✅ verified 1
src/BowserPuzzlePiece_Spawn.c BowserPuzzlePiece_Spawn ✅ verified 1
src/BowserShockwaves_Spawn.c BowserShockwaves_Spawn ✅ verified 1
src/BowserTail_Spawn.c BowserTail_Spawn ✅ verified 1
src/Bowser_Spawn.c Bowser_Spawn ✅ verified 1
src/BrickBlockSwitchActivated_Spawn.c BrickBlockSwitchActivated_Spawn ✅ verified 1
src/BrickBlock_Spawn.c BrickBlock_Spawn ✅ verified 1
src/BulletBill_Spawn.c BulletBill_Spawn ✅ verified 1
src/Bullet_Spawn.c Bullet_Spawn ✅ verified 1
src/Bully_Spawn.c Bully_Spawn ✅ verified 1
src/Butterfly_Spawn.c Butterfly_Spawn ✅ verified 1
src/CameraTag_Spawn.c CameraTag_Spawn ✅ verified 1
src/Camera_UpdateMatrices.c Camera_UpdateMatrices ✅ verified 1
src/CapBlockLuigi_Spawn.c CapBlockLuigi_Spawn ✅ verified 1
src/CapBlockMario_Spawn.c CapBlockMario_Spawn ✅ verified 1
src/CapBlockWario_Spawn.c CapBlockWario_Spawn ✅ verified 1
src/Cap_Spawn.c Cap_Spawn ✅ verified 1
src/CastleWater_Spawn.c CastleWater_Spawn ✅ verified 1
src/CccArena_Spawn.c CccArena_Spawn ✅ verified 1
src/CccBigIce_Spawn.c CccBigIce_Spawn ✅ verified 1
src/CccSmallIce_Spawn.c CccSmallIce_Spawn ✅ verified 1
src/CgStairs_Spawn.c CgStairs_Spawn ✅ verified 1
src/ChainChompFence_Spawn.c ChainChompFence_Spawn ✅ verified 1
src/CheepCheep_Spawn.c CheepCheep_Spawn ✅ verified 1
src/ChillBully_Spawn.c ChillBully_Spawn ✅ verified 1
src/Chuckya_Spawn.c Chuckya_Spawn ✅ verified 1
src/ClockPaintingHandLong_Spawn.c ClockPaintingHandLong_Spawn ✅ verified 1
src/ClockPaintingHandShort_Spawn.cpp ClockPaintingHandShort_Spawn ✅ verified 1
src/ClockPaintingPendulum_Spawn.c ClockPaintingPendulum_Spawn ✅ verified 1
src/Cloud_Spawn.c Cloud_Spawn ✅ verified 1
src/Coffin_Spawn.c Coffin_Spawn ✅ verified 1
src/Coin_Spawn.c Coin_Spawn ✅ verified 1
src/CrazedCrate_Spawn.c CrazedCrate_Spawn ✅ verified 1
src/CutsceneObject_Spawn.c CutsceneObject_Spawn ✅ verified 1
src/DonutBlock_Spawn.c DonutBlock_Spawn ✅ verified 1
src/Door_Spawn.c Door_Spawn ✅ verified 1
src/DorrieCap_Spawn.c DorrieCap_Spawn ✅ verified 1
src/EnemySpawner_Spawn.c EnemySpawner_Spawn ✅ verified 1
src/EnemySwitchTag_Spawn.c EnemySwitchTag_Spawn ✅ verified 1
src/ExclamationBlockVs_Spawn.c ExclamationBlockVs_Spawn ✅ verified 1
src/ExclamationBlock_Spawn.c ExclamationBlock_Spawn ✅ verified 1
src/ExclamationSwitch_Spawn.c ExclamationSwitch_Spawn ✅ verified 1
src/Exit_Spawn.c Exit_Spawn ✅ verified 1
src/ExtendingPlatform_Spawn.c ExtendingPlatform_Spawn ✅ verified 1
src/FallBlockBfs_Spawn.c FallBlockBfs_Spawn ✅ verified 1
src/FallBlockLll_Spawn.c FallBlockLll_Spawn ✅ verified 1
src/FirePiranhaPlantBig_Spawn.c FirePiranhaPlantBig_Spawn ✅ verified 1
src/FirePiranhaPlantSmall_Spawn.c FirePiranhaPlantSmall_Spawn ✅ verified 1
src/FirePiranhaPlant_Spawn.c FirePiranhaPlant_Spawn ✅ verified 1
src/Fireball_Spawn.c Fireball_Spawn ✅ verified 1
src/Fish_Spawn.cpp Fish_Spawn ✅ verified 1
src/Flag_Spawn.c Flag_Spawn ✅ verified 1
src/FloatOnLavaPlatform_Spawn.c FloatOnLavaPlatform_Spawn ✅ verified 1
src/FloatOnWaterPlatformJrb_Spawn.c FloatOnWaterPlatformJrb_Spawn ✅ verified 1
src/FloatOnWaterPlatformWdwRectangle_Spawn.c FloatOnWaterPlatformWdwRectangle_Spawn ✅ verified 1
src/FloatOnWaterPlatformWdwSquare_Spawn.c FloatOnWaterPlatformWdwSquare_Spawn ✅ verified 1
src/FloatingFloorBfs_Spawn.c FloatingFloorBfs_Spawn ✅ verified 1
src/FloatingFloorLllBig_Spawn.c FloatingFloorLllBig_Spawn ✅ verified 1
src/FloatingFloorLllSmall_Spawn.c FloatingFloorLllSmall_Spawn ✅ verified 1
src/FlyGuy_Spawn.c FlyGuy_Spawn ✅ verified 1
src/FortressTowerWall_Spawn.c FortressTowerWall_Spawn ✅ verified 1
src/FortressTower_Spawn.c FortressTower_Spawn ✅ verified 1
src/FortressWallBreakable_Spawn.c FortressWallBreakable_Spawn ✅ verified 1
src/FortressWall_Spawn.c FortressWall_Spawn ✅ verified 1
src/Fwoosh_Spawn.c Fwoosh_Spawn ✅ verified 1
src/GoombaLarge_Spawn.c GoombaLarge_Spawn ✅ verified 1
src/GoombaSmall_Spawn.c GoombaSmall_Spawn ✅ verified 1
src/Goomba_Spawn.c Goomba_Spawn ✅ verified 1
src/GreenShellBlockTag_Spawn.c GreenShellBlockTag_Spawn ✅ verified 1
src/Grindel_Spawn.c Grindel_Spawn ✅ verified 1
src/HauntedChair_Spawn.c HauntedChair_Spawn ✅ verified 1
src/HealingHeart_Spawn.c HealingHeart_Spawn ✅ verified 1
src/HeaveHo_Spawn.c HeaveHo_Spawn ✅ verified 1
src/HootTheOwl_Spawn.c HootTheOwl_Spawn ✅ verified 1
src/HugeWater_Spawn.c HugeWater_Spawn ✅ verified 1
src/IceBlock_Spawn.c IceBlock_Spawn ✅ verified 1
src/IceSheet_Spawn.c IceSheet_Spawn ✅ verified 1
src/IceSlideManager_Spawn.c IceSlideManager_Spawn ✅ verified 1
src/JetStream_Spawn.c JetStream_Spawn ✅ verified 1
src/Key_Spawn.c Key_Spawn ✅ verified 1
src/KingBobOmb_Spawn.c KingBobOmb_Spawn ✅ verified 1
src/Klepto_Spawn.c Klepto_Spawn ✅ verified 1
src/KnockDownPlank_Spawn.c KnockDownPlank_Spawn ✅ verified 1
src/KoopaFlag_Spawn.c KoopaFlag_Spawn ✅ verified 1
src/KoopaShell_Spawn.c KoopaShell_Spawn ✅ verified 1
src/KoopaSmall_Spawn.c KoopaSmall_Spawn ✅ verified 1
src/KoopaTheQuick_Spawn.c KoopaTheQuick_Spawn ✅ verified 1
src/Koopa_Spawn.c Koopa_Spawn ✅ verified 1
src/LakituBro_Spawn.c LakituBro_Spawn ✅ verified 1
src/Lakitu_Spawn.c Lakitu_Spawn ✅ verified 1
src/LastStar_Spawn.c LastStar_Spawn ✅ verified 1
src/LavaBubble_Spawn.c LavaBubble_Spawn ✅ verified 1
src/LavaPlank_Spawn.c LavaPlank_Spawn ✅ verified 1
src/LightBeam_Spawn.c LightBeam_Spawn ✅ verified 1
src/MantaRay_Spawn.c MantaRay_Spawn ✅ verified 1
src/MegaMushroomBlockTag_Spawn.c MegaMushroomBlockTag_Spawn ✅ verified 1
src/MegaMushroom_Spawn.c MegaMushroom_Spawn ✅ verified 1
src/MetalNetLift_Spawn.c MetalNetLift_Spawn ✅ verified 1
src/MetalNet_Spawn.c MetalNet_Spawn ✅ verified 1
src/MgBobOmbSquad_Spawn.c MgBobOmbSquad_Spawn ✅ verified 1
src/MgHideAndBooSeek_Spawn.c MgHideAndBooSeek_Spawn ✅ verified 1
src/MgLakituLaunch_Spawn.c MgLakituLaunch_Spawn ✅ verified 1
src/MgPuzzlePanelPuzzlePanic_Spawn.c MgPuzzlePanelPuzzlePanic_Spawn ✅ verified 1
src/MgShuffleShell_Spawn.c MgShuffleShell_Spawn ✅ verified 1
src/MgWanted_Spawn.c MgWanted_Spawn ✅ verified 1
src/Moneybag_Spawn.c Moneybag_Spawn ✅ verified 1
src/MontyMoleRock_Spawn.c MontyMoleRock_Spawn ✅ verified 1
src/MontyMole_Spawn.c MontyMole_Spawn ✅ verified 1
src/MotherPenguin_Spawn.c MotherPenguin_Spawn ✅ verified 1
src/MovingBarBig_Spawn.c MovingBarBig_Spawn ✅ verified 1
src/MovingBarSmall_Spawn.c MovingBarSmall_Spawn ✅ verified 1
src/MrBlizzard_Spawn.c MrBlizzard_Spawn ✅ verified 1
src/MrI_Spawn.c MrI_Spawn ✅ verified 1
src/MugenBgm_Spawn.c MugenBgm_Spawn ✅ verified 1
src/Number_Spawn.c Number_Spawn ✅ verified 1
src/OneUpLogo_Spawn.c OneUpLogo_Spawn ✅ verified 1
src/OneUpMushroomBlockTag_Spawn.c OneUpMushroomBlockTag_Spawn ✅ verified 1
src/OneUpMushroom_Spawn.c OneUpMushroom_Spawn ✅ verified 1
src/OrangeBallBillboard_Spawn.c OrangeBallBillboard_Spawn ✅ verified 1
src/PeachPainting_Spawn.c PeachPainting_Spawn ✅ verified 1
src/PiranhaPlant_Spawn.c PiranhaPlant_Spawn ✅ verified 1
src/PokeySegment_Spawn.c PokeySegment_Spawn ✅ verified 1
src/Pokey_Spawn.c Pokey_Spawn ✅ verified 1
src/PoleBillboard_Spawn.c PoleBillboard_Spawn ✅ verified 1
src/PoleLift_Spawn.c PoleLift_Spawn ✅ verified 1
src/PowerFlower_Spawn.c PowerFlower_Spawn ✅ verified 1
src/PowerStar_Spawn.c PowerStar_Spawn ✅ verified 1
src/PrincessPeach_Spawn.c PrincessPeach_Spawn ✅ verified 1
src/PyramidStep_Spawn.c PyramidStep_Spawn ✅ verified 1
src/PyramidTag_Spawn.c PyramidTag_Spawn ✅ verified 1
src/PyramidTop_Spawn.c PyramidTop_Spawn ✅ verified 1
src/QuestionBlock_Spawn.c QuestionBlock_Spawn ✅ verified 1
src/RabbitKey_Spawn.c RabbitKey_Spawn ✅ verified 1
src/Rabbit_Spawn.c Rabbit_Spawn ✅ verified 1
src/RacingPenguin_Spawn.c RacingPenguin_Spawn ✅ verified 1
src/RedCoin_Spawn.c RedCoin_Spawn ✅ verified 1
src/RedFlame_Spawn.c RedFlame_Spawn ✅ verified 1
src/RickshawBdw_Spawn.c RickshawBdw_Spawn ✅ verified 1
src/RickshawPlatformBdw_Spawn.c RickshawPlatformBdw_Spawn ✅ verified 1
src/RickshawPlatformBs_Spawn.c RickshawPlatformBs_Spawn ✅ verified 1
src/RockTriangle_Spawn.c RockTriangle_Spawn ✅ verified 1
src/RollingIronBall_Spawn.c RollingIronBall_Spawn ✅ verified 1
src/RollingLogLll_Spawn.c RollingLogLll_Spawn ✅ verified 1
src/RollingLogTtm_Spawn.c RollingLogTtm_Spawn ✅ verified 1
src/RopeBarrier_Spawn.c RopeBarrier_Spawn ✅ verified 1
src/RotatingBridge_Spawn.c RotatingBridge_Spawn ✅ verified 1
src/RotatingClockHand_Spawn.c RotatingClockHand_Spawn ✅ verified 1
src/RotatingCogSmall_Spawn.c RotatingCogSmall_Spawn ✅ verified 1
src/RotatingPlatformLll_Spawn.c RotatingPlatformLll_Spawn ✅ verified 1
src/RotatingPlatformRr_Spawn.c RotatingPlatformRr_Spawn ✅ verified 1
src/RotatingPlatformWdw_Spawn.c RotatingPlatformWdw_Spawn ✅ verified 1
src/RotatingPlatformWf_Spawn.c RotatingPlatformWf_Spawn ✅ verified 1
src/RotatingUpDownPlatformUtm_Spawn.c RotatingUpDownPlatformUtm_Spawn ✅ verified 1
src/RotatingUpDownPlatform_Spawn.c RotatingUpDownPlatform_Spawn ✅ verified 1
src/Scuttlebug_Spawn.c Scuttlebug_Spawn ✅ verified 1
src/Seaweed_Spawn.c Seaweed_Spawn ✅ verified 1
src/SeesawBdw_Spawn.c SeesawBdw_Spawn ✅ verified 1
src/SeesawBfs_Spawn.c SeesawBfs_Spawn ✅ verified 1
src/SeesawBob_Spawn.c SeesawBob_Spawn ✅ verified 1
src/SeesawBsPlank_Spawn.c SeesawBsPlank_Spawn ✅ verified 1
src/SeesawBsZigZag_Spawn.c SeesawBsZigZag_Spawn ✅ verified 1
src/SeesawRr_Spawn.c SeesawRr_Spawn ✅ verified 1
src/SeesawUtm_Spawn.c SeesawUtm_Spawn ✅ verified 1
src/Shark_Spawn.c Shark_Spawn ✅ verified 1
src/ShipDown_Spawn.c ShipDown_Spawn ✅ verified 1
src/ShipUp_Spawn.c ShipUp_Spawn ✅ verified 1
src/ShipWater_Spawn.c ShipWater_Spawn ✅ verified 1
src/ShipWing_Spawn.c ShipWing_Spawn ✅ verified 1
src/ShutterBob_Spawn.c ShutterBob_Spawn ✅ verified 1
src/ShutterHmc_Spawn.c ShutterHmc_Spawn ✅ verified 1
src/SignPost_Spawn.c SignPost_Spawn ✅ verified 1
src/SilverStarBlockTag_Spawn.c SilverStarBlockTag_Spawn ✅ verified 1
src/SilverStar_Spawn.c SilverStar_Spawn ✅ verified 1
src/SlideDecorationBlueSmiley_Spawn.c SlideDecorationBlueSmiley_Spawn ✅ verified 1
src/SlideDecorationOrangeSmiley_Spawn.c SlideDecorationOrangeSmiley_Spawn ✅ verified 1
src/SlideDecorationSilverStar_Spawn.c SlideDecorationSilverStar_Spawn ✅ verified 1
src/SlideDecorationYellowStar_Spawn.c SlideDecorationYellowStar_Spawn ✅ verified 1
src/SlidingBox_Spawn.c SlidingBox_Spawn ✅ verified 1
src/SlidingIceSpawner_Spawn.c SlidingIceSpawner_Spawn ✅ verified 1
src/SlidingIce_Spawn.c SlidingIce_Spawn ✅ verified 1
src/SlidingPlatformBdw_Spawn.c SlidingPlatformBdw_Spawn ✅ verified 1
src/SlidingPlatformBfsRectangle_Spawn.c SlidingPlatformBfsRectangle_Spawn ✅ verified 1
src/SlidingPlatformBfsSquare_Spawn.c SlidingPlatformBfsSquare_Spawn ✅ verified 1
src/SlidingPlatformBsLong_Spawn.c SlidingPlatformBsLong_Spawn ✅ verified 1
src/SlidingPlatformBsWide_Spawn.c SlidingPlatformBsWide_Spawn ✅ verified 1
src/SlidingPlatformRr_Spawn.c SlidingPlatformRr_Spawn ✅ verified 1
src/SlidingPlatformWf_Spawn.c SlidingPlatformWf_Spawn ✅ verified 1
src/Snowball_Spawn.c Snowball_Spawn ✅ verified 1
src/SnowmanBody_Spawn.c SnowmanBody_Spawn ✅ verified 1
src/SnowmanHead_Spawn.c SnowmanHead_Spawn ✅ verified 1
src/Snufit_Spawn.c Snufit_Spawn ✅ verified 1
src/SpikeBomb_Spawn.c SpikeBomb_Spawn ✅ verified 1
src/Spindrift_Spawn.c Spindrift_Spawn ✅ verified 1
src/SpinningPlatform_Spawn.c SpinningPlatform_Spawn ✅ verified 1
src/Spiny_Spawn.c Spiny_Spawn ✅ verified 1
src/SquareMetalNetLift_Spawn.c SquareMetalNetLift_Spawn ✅ verified 1
src/SquarePathLift_Spawn.c SquarePathLift_Spawn ✅ verified 1
src/StarDoor_Spawn.c StarDoor_Spawn ✅ verified 1
src/StarMarker_Spawn.c StarMarker_Spawn ✅ verified 1
src/StarSwitch_Spawn.c StarSwitch_Spawn ✅ verified 1
src/StaticRock_Spawn.c StaticRock_Spawn ✅ verified 1
src/SublevelToLevel.c SublevelToLevel ✅ verified 1
src/SwitchActivatedPlank_Spawn.c SwitchActivatedPlank_Spawn ✅ verified 1
src/Swoop_Spawn.c Swoop_Spawn ✅ verified 1
src/TTC_MovingBeam_Spawn.c TTC_MovingBeam_Spawn ✅ verified 1
src/Thwomp_Spawn.c Thwomp_Spawn ✅ verified 1
src/TiltingPlatformBfs_Spawn.c TiltingPlatformBfs_Spawn ✅ verified 1
src/TiltingPlatformLll_Spawn.c TiltingPlatformLll_Spawn ✅ verified 1
src/TinyWater_Spawn.c TinyWater_Spawn ✅ verified 1
src/Toad_Spawn.c Toad_Spawn ✅ verified 1
src/Tornado_Spawn.c Tornado_Spawn ✅ verified 1
src/TowerStep_Spawn.c TowerStep_Spawn ✅ verified 1
src/TreasureChest_Spawn.c TreasureChest_Spawn ✅ verified 1
src/TtcMovingCubeA_Spawn.c TtcMovingCubeA_Spawn ✅ verified 1
src/TtcMovingCubeB_Spawn.c TtcMovingCubeB_Spawn ✅ verified 1
src/TtcRotatingCube_Spawn.c TtcRotatingCube_Spawn ✅ verified 1
src/TtcRotatingGear_Spawn.c TtcRotatingGear_Spawn ✅ verified 1
src/TtcRotatingPrism_Spawn.c TtcRotatingPrism_Spawn ✅ verified 1
src/TtcRotatingTriangle_Spawn.c TtcRotatingTriangle_Spawn ✅ verified 1
src/UkikiCage_Spawn.c UkikiCage_Spawn ✅ verified 1
src/UkikiStar_Spawn.c UkikiStar_Spawn ✅ verified 1
src/UkikiThief_Spawn.c UkikiThief_Spawn ✅ verified 1
src/UpDownLiftBbh_Spawn.c UpDownLiftBbh_Spawn ✅ verified 1
src/UpDownLiftHmc_Spawn.c UpDownLiftHmc_Spawn ✅ verified 1
src/UpDownLiftRr_Spawn.c UpDownLiftRr_Spawn ✅ verified 1
src/VirtualDoor_Spawn.c VirtualDoor_Spawn ✅ verified 1
src/VolcanoFire_Spawn.c VolcanoFire_Spawn ✅ verified 1
src/WDW_Water_Spawn.c WDW_Water_Spawn ✅ verified 1
src/WallSign_Spawn.c WallSign_Spawn ✅ verified 1
src/WarpPipe_Spawn.c WarpPipe_Spawn ✅ verified 1
src/Warp_Spawn.c Warp_Spawn ✅ verified 1
src/WaterBomb_Spawn.c WaterBomb_Spawn ✅ verified 1
src/WaterDiamond_Spawn.c WaterDiamond_Spawn ✅ verified 1
src/WaterRing_Spawn.c WaterRing_Spawn ✅ verified 1
src/WaterSuction_Spawn.c WaterSuction_Spawn ✅ verified 1
src/Whirlpool_Spawn.c Whirlpool_Spawn ✅ verified 1
src/YoshiEgg_Spawn.c YoshiEgg_Spawn ✅ verified 1
src/_ZN10BowserFire8BehaviorEv.cpp _ZN10BowserFire8BehaviorEv ✅ verified 1
src/_ZN10BowserTail8BehaviorEv.cpp _ZN10BowserTail8BehaviorEv ✅ verified 1
src/_ZN10BrickBlock16CleanupResourcesEv.cpp _ZN10BrickBlock16CleanupResourcesEv ✅ verified 1
src/_ZN10ChainChomp13InitResourcesEv.cpp _ZN10ChainChomp13InitResourcesEv ✅ verified 1
src/_ZN10ChainChomp8BehaviorEv.cpp _ZN10ChainChomp8BehaviorEv ✅ verified 1
src/_ZN10CheepCheep13InitResourcesEv.cpp _ZN10CheepCheep13InitResourcesEv ✅ verified 1
src/_ZN10CheepCheep8BehaviorEv.cpp _ZN10CheepCheep8BehaviorEv ✅ verified 1
src/_ZN10ChillBully13InitResourcesEv.cpp _ZN10ChillBully13InitResourcesEv ✅ verified 1
src/_ZN10DonutBlock13InitResourcesEv.cpp _ZN10DonutBlock13InitResourcesEv ✅ verified 1
src/_ZN10DonutBlock16CleanupResourcesEv.cpp _ZN10DonutBlock16CleanupResourcesEv ✅ verified 1
src/_ZN10HootTheOwl13InitResourcesEv.cpp _ZN10HootTheOwl13InitResourcesEv ✅ verified 1
src/_ZN10HootTheOwl8BehaviorEv.cpp _ZN10HootTheOwl8BehaviorEv ✅ verified 1
src/_ZN10KingBobOmb13InitResourcesEv.cpp _ZN10KingBobOmb13InitResourcesEv ✅ verified 1
src/_ZN10KingBobOmb6RenderEv.cpp _ZN10KingBobOmb6RenderEv ✅ verified 1
src/_ZN10KingBobOmb8BehaviorEv.cpp _ZN10KingBobOmb8BehaviorEv ✅ verified 1
src/_ZN10LavaBridge16CleanupResourcesEv.cpp _ZN10LavaBridge16CleanupResourcesEv ✅ verified 1
src/_ZN10LavaBridge8BehaviorEv.cpp _ZN10LavaBridge8BehaviorEv ✅ verified 1
src/_ZN10LavaSeesaw16CleanupResourcesEv.cpp _ZN10LavaSeesaw16CleanupResourcesEv ✅ verified 1
src/_ZN10MrBlizzard13InitResourcesEv.cpp _ZN10MrBlizzard13InitResourcesEv ✅ verified 1
src/_ZN10MrBlizzard8BehaviorEv.cpp _ZN10MrBlizzard8BehaviorEv ✅ verified 1
src/_ZN10PyramidTop13InitResourcesEv.cpp _ZN10PyramidTop13InitResourcesEv ✅ verified 1
src/_ZN10PyramidTop16CleanupResourcesEv.cpp _ZN10PyramidTop16CleanupResourcesEv ✅ verified 1
src/_ZN10PyramidTop8BehaviorEv.cpp _ZN10PyramidTop8BehaviorEv ✅ verified 1
src/_ZN10RockPillar13InitResourcesEv.cpp _ZN10RockPillar13InitResourcesEv ✅ verified 1
src/_ZN10RockPillar16CleanupResourcesEv.cpp _ZN10RockPillar16CleanupResourcesEv ✅ verified 1
src/_ZN10Scuttlebug13InitResourcesEv.cpp _ZN10Scuttlebug13InitResourcesEv ✅ verified 1
src/_ZN10Scuttlebug8BehaviorEv.cpp _ZN10Scuttlebug8BehaviorEv ✅ verified 1
src/_ZN10ShutterBob16CleanupResourcesEv.cpp _ZN10ShutterBob16CleanupResourcesEv ✅ verified 1
src/_ZN10ShutterBob8BehaviorEv.cpp _ZN10ShutterBob8BehaviorEv ✅ verified 1
src/_ZN10ShutterHmc13InitResourcesEv.cpp _ZN10ShutterHmc13InitResourcesEv ✅ verified 1
src/_ZN10ShutterHmc16CleanupResourcesEv.cpp _ZN10ShutterHmc16CleanupResourcesEv ✅ verified 1
src/_ZN10SlidingBox13InitResourcesEv.cpp _ZN10SlidingBox13InitResourcesEv ✅ verified 1
src/_ZN10SlidingBox16CleanupResourcesEv.cpp _ZN10SlidingBox16CleanupResourcesEv ✅ verified 1
src/_ZN10StarMarker13InitResourcesEv.cpp _ZN10StarMarker13InitResourcesEv ✅ verified 1
src/_ZN10StarMarker16CleanupResourcesEv.cpp _ZN10StarMarker16CleanupResourcesEv ✅ verified 1
src/_ZN10StarMarker16OnPendingDestroyEv.cpp _ZN10StarMarker16OnPendingDestroyEv ✅ verified 1
src/_ZN10StarMarker8BehaviorEv.cpp _ZN10StarMarker8BehaviorEv ✅ verified 1
src/_ZN10StarSwitch15OnGroundPoundedER8dActor_c.cpp _ZN10StarSwitch15OnGroundPoundedER8dActor_c ✅ verified 1
src/_ZN10StarSwitch8BehaviorEv.cpp _ZN10StarSwitch8BehaviorEv ✅ verified 1
src/_ZN10dBgActor_c13IsClsnInRangeE5Fix12IiES1_.cpp _ZN10dBgActor_c13IsClsnInRangeE5Fix12IiES1_ ✅ verified 1
src/_ZN10dBgActor_c21IsClsnInRangeOnScreenE5Fix12IiES1_.cpp _ZN10dBgActor_c21IsClsnInRangeOnScreenE5Fix12IiES1_ ✅ verified 1
src/_ZN10dBgCh_Actr16UpdateContinuousEv.cpp _ZN10dBgCh_Actr16UpdateContinuousEv ✅ verified 1
src/_ZN10dBgCh_Actr20UpdateDiscreteNoLavaEv.cpp _ZN10dBgCh_Actr20UpdateDiscreteNoLavaEv ✅ verified 1
src/_ZN10dBgCh_Actr22UpdateContinuousNoLavaEv.cpp _ZN10dBgCh_Actr22UpdateContinuousNoLavaEv ✅ verified 1
src/_ZN10dBgCh_Actr22UpdateDiscreteNoLava_2Ev.cpp _ZN10dBgCh_Actr22UpdateDiscreteNoLava_2Ev ✅ verified 1
src/_ZN10dBgW_KcMbg7SetFileEP8KCL_FileRK9Matrix4x35Fix12IiEsR10CLPS_Block.c _ZN10dBgW_KcMbg7SetFileEP8KCL_FileRK9Matrix4x35Fix12IiEsR10CLPS_Block ✅ verified 1
src/_ZN10dScEntry_c13InitResourcesEv.cpp _ZN10dScEntry_c13InitResourcesEv ✅ verified 1
src/_ZN10dScEntry_c16CleanupResourcesEv.cpp _ZN10dScEntry_c16CleanupResourcesEv ✅ verified 1
src/_ZN10dScEntry_c6RenderEv.cpp _ZN10dScEntry_c6RenderEv ✅ verified 1
src/_ZN10dScEntry_c8BehaviorEv.cpp _ZN10dScEntry_c8BehaviorEv ✅ verified 1
src/_ZN10dScMgCup_c13InitResourcesEv.cpp _ZN10dScMgCup_c13InitResourcesEv ✅ verified 1
src/_ZN10dScMgCup_c8BehaviorEv.cpp _ZN10dScMgCup_c8BehaviorEv ✅ verified 1
src/_ZN10dScTitle_c6RenderEv.cpp _ZN10dScTitle_c6RenderEv ✅ verified 1
src/_ZN10dScTitle_c8BehaviorEv.cpp _ZN10dScTitle_c8BehaviorEv ✅ verified 1
src/_ZN10daPgDfdr_c13InitResourcesEv.cpp _ZN10daPgDfdr_c13InitResourcesEv ✅ verified 1
src/_ZN10daPgDfdr_c8BehaviorEv.cpp _ZN10daPgDfdr_c8BehaviorEv ✅ verified 1
src/_ZN10daPgMthr_c13InitResourcesEv.cpp _ZN10daPgMthr_c13InitResourcesEv ✅ verified 1
src/_ZN11BillBlaster16CleanupResourcesEv.cpp _ZN11BillBlaster16CleanupResourcesEv ✅ verified 1
src/_ZN11ChiefChilly13InitResourcesEv.cpp _ZN11ChiefChilly13InitResourcesEv ✅ verified 1
src/_ZN11CrazedCrate13InitResourcesEv.cpp _ZN11CrazedCrate13InitResourcesEv ✅ verified 1
src/_ZN11CrazedCrate8BehaviorEv.cpp _ZN11CrazedCrate8BehaviorEv ✅ verified 1
src/_ZN11DiamondLift13InitResourcesEv.cpp _ZN11DiamondLift13InitResourcesEv ✅ verified 1
src/_ZN11DiamondLift16CleanupResourcesEv.cpp _ZN11DiamondLift16CleanupResourcesEv ✅ verified 1
src/_ZN11MirrorLuigi13InitResourcesEv.cpp _ZN11MirrorLuigi13InitResourcesEv ✅ verified 1
src/_ZN11MirrorLuigi6RenderEv.cpp _ZN11MirrorLuigi6RenderEv ✅ verified 1
src/_ZN11MirrorLuigi8BehaviorEv.cpp _ZN11MirrorLuigi8BehaviorEv ✅ verified 1
src/_ZN11PowerFlower13InitResourcesEv.cpp _ZN11PowerFlower13InitResourcesEv ✅ verified 1
src/_ZN11PowerFlower8BehaviorEv.cpp _ZN11PowerFlower8BehaviorEv ✅ verified 1
src/_ZN11PyramidLift13InitResourcesEv.cpp _ZN11PyramidLift13InitResourcesEv ✅ verified 1
src/_ZN11PyramidStep16CleanupResourcesEv.cpp _ZN11PyramidStep16CleanupResourcesEv ✅ verified 1
src/_ZN11PyramidStep8BehaviorEv.cpp _ZN11PyramidStep8BehaviorEv ✅ verified 1
src/_ZN11SnowmanBody8BehaviorEv.cpp _ZN11SnowmanBody8BehaviorEv ✅ verified 1
src/_ZN11SnowmanHead13InitResourcesEv.cpp _ZN11SnowmanHead13InitResourcesEv ✅ verified 1
src/_ZN11SoundObject13InitResourcesEv.cpp _ZN11SoundObject13InitResourcesEv ✅ verified 1
src/_ZN11SoundObject8BehaviorEv.cpp _ZN11SoundObject8BehaviorEv ✅ verified 1
src/_ZN11VirtualDoor8BehaviorEv.cpp _ZN11VirtualDoor8BehaviorEv ✅ verified 1
src/_ZN11VolcanoFire13InitResourcesEv.cpp _ZN11VolcanoFire13InitResourcesEv ✅ verified 1
src/_ZN11dCapEnemy_c12Unk_02005d94Ev.cpp _ZN11dCapEnemy_c12Unk_02005d94Ev ✅ verified 1
src/_ZN11dCapEnemy_c15RespawnIfHasCapEv.cpp _ZN11dCapEnemy_c15RespawnIfHasCapEv ✅ verified 1
src/_ZN11dCapEnemy_c21DestroyIfCapNotNeededEv.cpp _ZN11dCapEnemy_c21DestroyIfCapNotNeededEv ✅ verified 1
src/_ZN11dScMgCard_c13InitResourcesEv.cpp _ZN11dScMgCard_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgCard_c6RenderEv.cpp _ZN11dScMgCard_c6RenderEv ✅ verified 1
src/_ZN11dScMgCard_c8BehaviorEv.cpp _ZN11dScMgCard_c8BehaviorEv ✅ verified 1
src/_ZN11dScMgCoin_c13InitResourcesEv.cpp _ZN11dScMgCoin_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgCoin_c13OnYoshiTryEatEv.cpp _ZN11dScMgCoin_c13OnYoshiTryEatEv ✅ verified 1
src/_ZN11dScMgJump_c13InitResourcesEv.cpp _ZN11dScMgJump_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgJump_c16CleanupResourcesEv.cpp _ZN11dScMgJump_c16CleanupResourcesEv ✅ verified 1
src/_ZN11dScMgJump_c6RenderEv.cpp _ZN11dScMgJump_c6RenderEv ✅ verified 1
src/_ZN11dScMiniGm_c13InitResourcesEv.cpp _ZN11dScMiniGm_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMiniGm_c16CleanupResourcesEv.cpp _ZN11dScMiniGm_c16CleanupResourcesEv ✅ verified 1
src/_ZN11dScMiniGm_c8BehaviorEv.cpp _ZN11dScMiniGm_c8BehaviorEv ✅ verified 1
src/_ZN11daBgSnwmn_c13InitResourcesEv.cpp _ZN11daBgSnwmn_c13InitResourcesEv ✅ verified 1
src/_ZN11daBgSnwmn_c16CleanupResourcesEv.cpp _ZN11daBgSnwmn_c16CleanupResourcesEv ✅ verified 1
src/_ZN11daDsnBase_c16CleanupResourcesEv.cpp _ZN11daDsnBase_c16CleanupResourcesEv ✅ verified 1
src/_ZN12Flamethrower13InitResourcesEv.cpp _ZN12Flamethrower13InitResourcesEv ✅ verified 1
src/_ZN12Flamethrower8BehaviorEv.cpp _ZN12Flamethrower8BehaviorEv ✅ verified 1
src/_ZN12FortressWall16CleanupResourcesEv.cpp _ZN12FortressWall16CleanupResourcesEv ✅ verified 1
src/_ZN12FortressWall24OnHitByCannonBlastedCharER8dActor_c.cpp _ZN12FortressWall24OnHitByCannonBlastedCharER8dActor_c ✅ verified 1
src/_ZN12HauntedChair13InitResourcesEv.cpp _ZN12HauntedChair13InitResourcesEv ✅ verified 1
src/_ZN12HauntedChair8BehaviorEv.cpp _ZN12HauntedChair8BehaviorEv ✅ verified 1
src/_ZN12HealingHeart13InitResourcesEv.cpp _ZN12HealingHeart13InitResourcesEv ✅ verified 1
src/_ZN12MetalNetLift13InitResourcesEv.cpp _ZN12MetalNetLift13InitResourcesEv ✅ verified 1
src/_ZN12MetalNetLift16CleanupResourcesEv.cpp _ZN12MetalNetLift16CleanupResourcesEv ✅ verified 1
src/_ZN12PiranhaPlant8BehaviorEv.cpp _ZN12PiranhaPlant8BehaviorEv ✅ verified 1
src/_ZN12SwitchPillar16CleanupResourcesEv.cpp _ZN12SwitchPillar16CleanupResourcesEv ✅ verified 1
src/_ZN12WaterSuction13InitResourcesEv.cpp _ZN12WaterSuction13InitResourcesEv ✅ verified 1
src/_ZN12WaterSuction8BehaviorEv.cpp _ZN12WaterSuction8BehaviorEv ✅ verified 1
src/_ZN12WorkElevator16CleanupResourcesEv.cpp _ZN12WorkElevator16CleanupResourcesEv ✅ verified 1
src/_ZN12dBgCh_SphCrr15SetObjAndSphereERK7Vector35Fix12IiEP8dActor_c.cpp _ZN12dBgCh_SphCrr15SetObjAndSphereERK7Vector35Fix12IiEP8dActor_c ✅ verified 1
src/_ZN12dScMg3DEsp_c13InitResourcesEv.cpp _ZN12dScMg3DEsp_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMg3DEsp_c6RenderEv.cpp _ZN12dScMg3DEsp_c6RenderEv ✅ verified 1
src/_ZN12dScMg3DEsp_c8BehaviorEv.cpp _ZN12dScMg3DEsp_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgAmida_c13InitResourcesEv.cpp _ZN12dScMgAmida_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgAmida_c6RenderEv.cpp _ZN12dScMgAmida_c6RenderEv ✅ verified 1
src/_ZN12dScMgAmida_c8BehaviorEv.cpp _ZN12dScMgAmida_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgJump2_c13InitResourcesEv.cpp _ZN12dScMgJump2_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgJump2_c6RenderEv.cpp _ZN12dScMgJump2_c6RenderEv ✅ verified 1
src/_ZN12dScMgLuigi_c13InitResourcesEv.cpp _ZN12dScMgLuigi_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgLuigi_c21AfterCleanupResourcesEj.cpp _ZN12dScMgLuigi_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN12dScMgLuigi_c6RenderEv.cpp _ZN12dScMgLuigi_c6RenderEv ✅ verified 1
src/_ZN12dScMgPanel_c13InitResourcesEv.cpp _ZN12dScMgPanel_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgPanel_c6RenderEv.cpp _ZN12dScMgPanel_c6RenderEv ✅ verified 1
src/_ZN12dScMgPanel_c8BehaviorEv.cpp _ZN12dScMgPanel_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgSlot1_c13InitResourcesEv.cpp _ZN12dScMgSlot1_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSlot1_c15OnHitByMegaCharER6Player.cpp _ZN12dScMgSlot1_c15OnHitByMegaCharER6Player ✅ verified 1
src/_ZN12dScMgSlot1_c19OnHitFromUnderneathER8dActor_c.cpp _ZN12dScMgSlot1_c19OnHitFromUnderneathER8dActor_c ✅ verified 1
src/_ZN12dScMgSlot3_c13InitResourcesEv.cpp _ZN12dScMgSlot3_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSlot3_c6RenderEv.cpp _ZN12dScMgSlot3_c6RenderEv ✅ verified 1
src/_ZN12dScMgSlot3_c8BehaviorEv.cpp _ZN12dScMgSlot3_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgSound_c13InitResourcesEv.cpp _ZN12dScMgSound_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSound_c6RenderEv.cpp _ZN12dScMgSound_c6RenderEv ✅ verified 1
src/_ZN12dScMgSound_c8BehaviorEv.cpp _ZN12dScMgSound_c8BehaviorEv ✅ verified 1
src/_ZN12dScStarSel_c16CleanupResourcesEv.cpp _ZN12dScStarSel_c16CleanupResourcesEv ✅ verified 1
src/_ZN12daDossyCap_c8BehaviorEv.cpp _ZN12daDossyCap_c8BehaviorEv ✅ verified 1
src/_ZN13BasementWater13InitResourcesEv.cpp _ZN13BasementWater13InitResourcesEv ✅ verified 1
src/_ZN13BasementWater16CleanupResourcesEv.cpp _ZN13BasementWater16CleanupResourcesEv ✅ verified 1
src/_ZN13BowserShutter13InitResourcesEv.cpp _ZN13BowserShutter13InitResourcesEv ✅ verified 1
src/_ZN13BowserShutter16CleanupResourcesEv.cpp _ZN13BowserShutter16CleanupResourcesEv ✅ verified 1
src/_ZN13FortressTower13InitResourcesEv.cpp _ZN13FortressTower13InitResourcesEv ✅ verified 1
src/_ZN13FortressTower16CleanupResourcesEv.cpp _ZN13FortressTower16CleanupResourcesEv ✅ verified 1
src/_ZN13KoopaTheQuick16CleanupResourcesEv.cpp _ZN13KoopaTheQuick16CleanupResourcesEv ✅ verified 1
src/_ZN13KoopaTheQuick8BehaviorEv.cpp _ZN13KoopaTheQuick8BehaviorEv ✅ verified 1
src/_ZN13MontyMoleRock8BehaviorEv.cpp _ZN13MontyMoleRock8BehaviorEv ✅ verified 1
src/_ZN13OneUpMushroom13InitResourcesEv.cpp _ZN13OneUpMushroom13InitResourcesEv ✅ verified 1
src/_ZN13OneUpMushroom8BehaviorEv.cpp _ZN13OneUpMushroom8BehaviorEv ✅ verified 1
src/_ZN13PoleBillboard13InitResourcesEv.cpp _ZN13PoleBillboard13InitResourcesEv ✅ verified 1
src/_ZN13QuestionBlock16CleanupResourcesEv.cpp _ZN13QuestionBlock16CleanupResourcesEv ✅ verified 1
src/_ZN13QuestionBlock8BehaviorEv.cpp _ZN13QuestionBlock8BehaviorEv ✅ verified 1
src/_ZN13RacingPenguin13InitResourcesEv.cpp _ZN13RacingPenguin13InitResourcesEv ✅ verified 1
src/_ZN13RacingPenguin8BehaviorEv.cpp _ZN13RacingPenguin8BehaviorEv ✅ verified 1
src/_ZN13RollingLogLll13InitResourcesEv.cpp _ZN13RollingLogLll13InitResourcesEv ✅ verified 1
src/_ZN13RollingLogLll16CleanupResourcesEv.cpp _ZN13RollingLogLll16CleanupResourcesEv ✅ verified 1
src/_ZN13SnowmanBreath8BehaviorEv.cpp _ZN13SnowmanBreath8BehaviorEv ✅ verified 1
src/_ZN13TTC_MovingBar13InitResourcesEv.cpp _ZN13TTC_MovingBar13InitResourcesEv ✅ verified 1
src/_ZN13TTC_MovingBar16CleanupResourcesEv.cpp _ZN13TTC_MovingBar16CleanupResourcesEv ✅ verified 1
src/_ZN13dScGameOver_c13InitResourcesEv.cpp _ZN13dScGameOver_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgFlower_c13InitResourcesEv.cpp _ZN13dScMgFlower_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgFlower_c6RenderEv.cpp _ZN13dScMgFlower_c6RenderEv ✅ verified 1
src/_ZN13dScMgFlower_c8BehaviorEv.cpp _ZN13dScMgFlower_c8BehaviorEv ✅ verified 1
src/_ZN13dScMgMemory_c13InitResourcesEv.cpp _ZN13dScMgMemory_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgMemory_c6RenderEv.cpp _ZN13dScMgMemory_c6RenderEv ✅ verified 1
src/_ZN13dScMgTeresa_c13InitResourcesEv.cpp _ZN13dScMgTeresa_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgTeresa_c6RenderEv.cpp _ZN13dScMgTeresa_c6RenderEv ✅ verified 1
src/_ZN14ArrowSignRight16CleanupResourcesEv.cpp _ZN14ArrowSignRight16CleanupResourcesEv ✅ verified 1
src/_ZN14BlueCoinSwitch13InitResourcesEv.cpp _ZN14BlueCoinSwitch13InitResourcesEv ✅ verified 1
src/_ZN14BlueCoinSwitch16CleanupResourcesEv.cpp _ZN14BlueCoinSwitch16CleanupResourcesEv ✅ verified 1
src/_ZN14BlueCoinSwitch8BehaviorEv.cpp _ZN14BlueCoinSwitch8BehaviorEv ✅ verified 1
src/_ZN14CutsceneObject13InitResourcesEv.cpp _ZN14CutsceneObject13InitResourcesEv ✅ verified 1
src/_ZN14CutsceneObject6RenderEv.cpp _ZN14CutsceneObject6RenderEv ✅ verified 1
src/_ZN14CutsceneObject8BehaviorEv.cpp _ZN14CutsceneObject8BehaviorEv ✅ verified 1
src/_ZN14KnockDownPlank16CleanupResourcesEv.cpp _ZN14KnockDownPlank16CleanupResourcesEv ✅ verified 1
src/_ZN14RotatingBridge13InitResourcesEv.cpp _ZN14RotatingBridge13InitResourcesEv ✅ verified 1
src/_ZN14RotatingBridge16CleanupResourcesEv.cpp _ZN14RotatingBridge16CleanupResourcesEv ✅ verified 1
src/_ZN14UnchainedChomp8BehaviorEv.cpp _ZN14UnchainedChomp8BehaviorEv ✅ verified 1
src/_ZN14UnknownVsEntry13InitResourcesEv.cpp _ZN14UnknownVsEntry13InitResourcesEv ✅ verified 1
src/_ZN14UnknownVsEntry16CleanupResourcesEv.cpp _ZN14UnknownVsEntry16CleanupResourcesEv ✅ verified 1
src/_ZN14UnknownVsEntry8BehaviorEv.cpp _ZN14UnknownVsEntry8BehaviorEv ✅ verified 1
src/_ZN14dScMgBomroom_c13InitResourcesEv.cpp _ZN14dScMgBomroom_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgCurling_c13InitResourcesEv.cpp _ZN14dScMgCurling_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgCurling_c6RenderEv.cpp _ZN14dScMgCurling_c6RenderEv ✅ verified 1
src/_ZN14dScMgD3DBase_c14BeforeBehaviorEv.cpp _ZN14dScMgD3DBase_c14BeforeBehaviorEv ✅ verified 1
src/_ZN14dScMgD3DBase_c18AfterInitResourcesEj.cpp _ZN14dScMgD3DBase_c18AfterInitResourcesEj ✅ verified 1
src/_ZN14dScMgD3DBase_c19BeforeInitResourcesEv.cpp _ZN14dScMgD3DBase_c19BeforeInitResourcesEv ✅ verified 1
src/_ZN14dScMgD3DBase_c21AfterCleanupResourcesEj.cpp _ZN14dScMgD3DBase_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN14dScMgMCarlo2_c13InitResourcesEv.cpp _ZN14dScMgMCarlo2_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgMCarlo2_c6RenderEv.cpp _ZN14dScMgMCarlo2_c6RenderEv ✅ verified 1
src/_ZN14dScMgMCarlo2_c8BehaviorEv.cpp _ZN14dScMgMCarlo2_c8BehaviorEv ✅ verified 1
src/_ZN14dScMgMemory2_c13InitResourcesEv.cpp _ZN14dScMgMemory2_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgMemory2_c6RenderEv.cpp _ZN14dScMgMemory2_c6RenderEv ✅ verified 1
src/_ZN15BookShotSpawner13InitResourcesEv.cpp _ZN15BookShotSpawner13InitResourcesEv ✅ verified 1
src/_ZN15ChainChompFence13InitResourcesEv.cpp _ZN15ChainChompFence13InitResourcesEv ✅ verified 1
src/_ZN15ChainChompFence16CleanupResourcesEv.cpp _ZN15ChainChompFence16CleanupResourcesEv ✅ verified 1
src/_ZN15FireSeaElevator13InitResourcesEv.cpp _ZN15FireSeaElevator13InitResourcesEv ✅ verified 1
src/_ZN15FireSeaElevator16CleanupResourcesEv.cpp _ZN15FireSeaElevator16CleanupResourcesEv ✅ verified 1
src/_ZN15RollingIronBall13InitResourcesEv.cpp _ZN15RollingIronBall13InitResourcesEv 🔶 blind (a reloc slot could not be resolved) 1
src/_ZN15RotatingFirebar8BehaviorEv.cpp _ZN15RotatingFirebar8BehaviorEv ✅ verified 1
src/_ZN15TtcRotatingCube16CleanupResourcesEv.cpp _ZN15TtcRotatingCube16CleanupResourcesEv ✅ verified 1
src/_ZN15TtcRotatingCube8BehaviorEv.cpp _ZN15TtcRotatingCube8BehaviorEv ✅ verified 1
src/_ZN15TtcRotatingGear13InitResourcesEv.cpp _ZN15TtcRotatingGear13InitResourcesEv ✅ verified 1
src/_ZN15TtcRotatingGear16CleanupResourcesEv.cpp _ZN15TtcRotatingGear16CleanupResourcesEv ✅ verified 1
src/_ZN15dScMgCurling2_c13InitResourcesEv.cpp _ZN15dScMgCurling2_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgHanachan_c13InitResourcesEv.cpp _ZN15dScMgHanachan_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgHanachan_c6RenderEv.cpp _ZN15dScMgHanachan_c6RenderEv ✅ verified 1
src/_ZN15dScMgHanachan_c8BehaviorEv.cpp _ZN15dScMgHanachan_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgPachinko_c13InitResourcesEv.cpp _ZN15dScMgPachinko_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c13InitResourcesEv.cpp _ZN15dScMgRoulette_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c16CleanupResourcesEv.cpp _ZN15dScMgRoulette_c16CleanupResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c6RenderEv.cpp _ZN15dScMgRoulette_c6RenderEv ✅ verified 1
src/_ZN15dScMgSnowball_c13InitResourcesEv.cpp _ZN15dScMgSnowball_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgSnowball_c6RenderEv.cpp _ZN15dScMgSnowball_c6RenderEv ✅ verified 1
src/_ZN15dScMgSnowball_c8BehaviorEv.cpp _ZN15dScMgSnowball_c8BehaviorEv ✅ verified 1
src/_ZN15daObjMarioCap_c13InitResourcesEv.cpp _ZN15daObjMarioCap_c13InitResourcesEv 🔶 blind (a reloc slot could not be resolved) 1
src/_ZN15daObjMarioCap_c16CleanupResourcesEv.cpp _ZN15daObjMarioCap_c16CleanupResourcesEv ✅ verified 1
src/_ZN16BowserShockwaves13InitResourcesEv.cpp _ZN16BowserShockwaves13InitResourcesEv ✅ verified 1
src/_ZN16BowserShockwaves8BehaviorEv.cpp _ZN16BowserShockwaves8BehaviorEv ✅ verified 1
src/_ZN16RotatingCogSmall13InitResourcesEv.cpp _ZN16RotatingCogSmall13InitResourcesEv ✅ verified 1
src/_ZN16RotatingCogSmall16CleanupResourcesEv.cpp _ZN16RotatingCogSmall16CleanupResourcesEv ✅ verified 1
src/_ZN16SwingingPlatform16CleanupResourcesEv.cpp _ZN16SwingingPlatform16CleanupResourcesEv ✅ verified 1
src/_ZN16dScMgPachinko2_c13InitResourcesEv.cpp _ZN16dScMgPachinko2_c13InitResourcesEv ✅ verified 1
src/_ZN16dScMgSmartball_c21AfterCleanupResourcesEj.cpp _ZN16dScMgSmartball_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN16dScMgSmartball_c8BehaviorEv.cpp _ZN16dScMgSmartball_c8BehaviorEv ✅ verified 1
src/_ZN16daObjCtMecha03_c13InitResourcesEv.cpp _ZN16daObjCtMecha03_c13InitResourcesEv ✅ verified 1
src/_ZN16daObjCtMecha03_c16CleanupResourcesEv.cpp _ZN16daObjCtMecha03_c16CleanupResourcesEv ✅ verified 1
src/_ZN16daObjCtMecha03_c8BehaviorEv.cpp _ZN16daObjCtMecha03_c8BehaviorEv ✅ verified 1
src/_ZN16daObjCtMecha04_c13InitResourcesEv.cpp _ZN16daObjCtMecha04_c13InitResourcesEv ✅ verified 1
src/_ZN16daObjCtMecha04_c16CleanupResourcesEv.cpp _ZN16daObjCtMecha04_c16CleanupResourcesEv ✅ verified 1
src/_ZN16daObjCtMecha04_c8BehaviorEv.cpp _ZN16daObjCtMecha04_c8BehaviorEv ✅ verified 1
src/_ZN17BowserPuzzlePiece13InitResourcesEv.cpp _ZN17BowserPuzzlePiece13InitResourcesEv ✅ verified 1
src/_ZN17BowserPuzzlePiece16CleanupResourcesEv.cpp _ZN17BowserPuzzlePiece16CleanupResourcesEv ✅ verified 1
src/_ZN17BowserSkyPlatform16CleanupResourcesEv.cpp _ZN17BowserSkyPlatform16CleanupResourcesEv ✅ verified 1
src/_ZN17SlidingPlatformWf16CleanupResourcesEv.cpp _ZN17SlidingPlatformWf16CleanupResourcesEv ✅ verified 1
src/_ZN17SlidingPlatformWf8BehaviorEv.cpp _ZN17SlidingPlatformWf8BehaviorEv ✅ verified 1
src/_ZN17dScMgTrampoline_c13InitResourcesEv.cpp _ZN17dScMgTrampoline_c13InitResourcesEv ✅ verified 1
src/_ZN17dScMgTrampoline_c6RenderEv.cpp _ZN17dScMgTrampoline_c6RenderEv ✅ verified 1
src/_ZN17dScMgTrampoline_c8BehaviorEv.cpp _ZN17dScMgTrampoline_c8BehaviorEv ✅ verified 1
src/_ZN18BowserFireSeaArena13InitResourcesEv.cpp _ZN18BowserFireSeaArena13InitResourcesEv ✅ verified 1
src/_ZN18BowserFireSeaArena16CleanupResourcesEv.cpp _ZN18BowserFireSeaArena16CleanupResourcesEv ✅ verified 1
src/_ZN18BowserFireSeaArena8BehaviorEv.cpp _ZN18BowserFireSeaArena8BehaviorEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c13InitResourcesEv.cpp _ZN18dScMgTrampoline2_c13InitResourcesEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c16CleanupResourcesEv.cpp _ZN18dScMgTrampoline2_c16CleanupResourcesEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c6RenderEv.cpp _ZN18dScMgTrampoline2_c6RenderEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c8BehaviorEv.cpp _ZN18dScMgTrampoline2_c8BehaviorEv ✅ verified 1
src/_ZN19FirePiranhaPlantBig16CleanupResourcesEv.cpp _ZN19FirePiranhaPlantBig16CleanupResourcesEv ✅ verified 1
src/_ZN19FirePiranhaPlantBig8BehaviorEv.cpp _ZN19FirePiranhaPlantBig8BehaviorEv ✅ verified 1
src/_ZN19FloatOnLavaPlatform13InitResourcesEv.cpp _ZN19FloatOnLavaPlatform13InitResourcesEv ✅ verified 1
src/_ZN19FloatOnLavaPlatform16CleanupResourcesEv.cpp _ZN19FloatOnLavaPlatform16CleanupResourcesEv ✅ verified 1
src/_ZN19FloatOnLavaPlatform8BehaviorEv.cpp _ZN19FloatOnLavaPlatform8BehaviorEv ✅ verified 1
src/_ZN20SwitchActivatedPlank13InitResourcesEv.cpp _ZN20SwitchActivatedPlank13InitResourcesEv ✅ verified 1
src/_ZN20SwitchActivatedPlank16CleanupResourcesEv.cpp _ZN20SwitchActivatedPlank16CleanupResourcesEv ✅ verified 1
src/_ZN22ClockPaintingHandShort13InitResourcesEv.cpp _ZN22ClockPaintingHandShort13InitResourcesEv ✅ verified 1
src/_ZN22ClockPaintingHandShort16CleanupResourcesEv.cpp _ZN22ClockPaintingHandShort16CleanupResourcesEv ✅ verified 1
src/_ZN22ClockPaintingHandShort8BehaviorEv.cpp _ZN22ClockPaintingHandShort8BehaviorEv ✅ verified 1
src/_ZN22RotatingUpDownPlatform13InitResourcesEv.cpp _ZN22RotatingUpDownPlatform13InitResourcesEv ✅ verified 1
src/_ZN22RotatingUpDownPlatform8BehaviorEv.cpp _ZN22RotatingUpDownPlatform8BehaviorEv ✅ verified 1
src/_ZN25RotatingUpDownPlatformUtm13InitResourcesEv.cpp _ZN25RotatingUpDownPlatformUtm13InitResourcesEv ✅ verified 1
src/_ZN25RotatingUpDownPlatformUtm16CleanupResourcesEv.cpp _ZN25RotatingUpDownPlatformUtm16CleanupResourcesEv ✅ verified 1
src/_ZN25RotatingUpDownPlatformUtm8BehaviorEv.cpp _ZN25RotatingUpDownPlatformUtm8BehaviorEv ✅ verified 1
src/_ZN3HUD15RenderTimeTimerEv.cpp _ZN3HUD15RenderTimeTimerEv ✅ verified 1
src/_ZN3HUD17RenderHealthMeterEv.cpp _ZN3HUD17RenderHealthMeterEv ✅ verified 1
src/_ZN3HUD17UpdateHealthMeterEv.cpp _ZN3HUD17UpdateHealthMeterEv ✅ verified 1
src/_ZN3HUD6RenderEv.cpp _ZN3HUD6RenderEv ✅ verified 1
src/_ZN3Key13InitResourcesEv.cpp _ZN3Key13InitResourcesEv ✅ verified 1
src/_ZN3Key16CleanupResourcesEv.cpp _ZN3Key16CleanupResourcesEv ✅ verified 1
src/_ZN3Key8BehaviorEv.cpp _ZN3Key8BehaviorEv ✅ verified 1
src/_ZN3OAM11GetObjWidthEii.cpp _ZN3OAM11GetObjWidthEii ✅ verified 1
src/_ZN3OAM12GetObjHeightEii.cpp _ZN3OAM12GetObjHeightEii ✅ verified 1
src/_ZN3OAM6RenderEbP7OamAttriiiiP9Matrix2x2.cpp _ZN3OAM6RenderEbP7OamAttriiiiP9Matrix2x2 ✅ verified 1
src/_ZN4Coin13OnTurnIntoEggER6Player.cpp _ZN4Coin13OnTurnIntoEggER6Player ✅ verified 1
src/_ZN4Coin8BehaviorEv.cpp _ZN4Coin8BehaviorEv ✅ verified 1
src/_ZN4Door16CleanupResourcesEv.cpp _ZN4Door16CleanupResourcesEv ✅ verified 1
src/_ZN4Fish16CleanupResourcesEv.cpp _ZN4Fish16CleanupResourcesEv ✅ verified 1
src/_ZN4Fish8BehaviorEv.cpp _ZN4Fish8BehaviorEv ✅ verified 1
src/_ZN4Heap11ResizeToFitEv.cpp _ZN4Heap11ResizeToFitEv ✅ verified 1
src/_ZN4Heap6IntactEv.cpp _ZN4Heap6IntactEv ✅ verified 1
src/_ZN4Heap6SizeofEPv.cpp _ZN4Heap6SizeofEPv ✅ verified 1
src/_ZN4Heap8AllocateEji.cpp _ZN4Heap8AllocateEji ✅ verified 1
src/_ZN4Toad16CleanupResourcesEv.cpp _ZN4Toad16CleanupResourcesEv ✅ verified 1
src/_ZN5Bully13InitResourcesEv.cpp _ZN5Bully13InitResourcesEv ✅ verified 1
src/_ZN5Cloud13InitResourcesEv.cpp _ZN5Cloud13InitResourcesEv ✅ verified 1
src/_ZN5Crate13InitResourcesEv.cpp _ZN5Crate13InitResourcesEv ✅ verified 1
src/_ZN5Crate16CleanupResourcesEv.cpp _ZN5Crate16CleanupResourcesEv ✅ verified 1
src/_ZN5Crate4KillEv.cpp _ZN5Crate4KillEv ✅ verified 1
src/_ZN5Crate8BehaviorEv.cpp _ZN5Crate8BehaviorEv ✅ verified 1
src/_ZN5Koopa13InitResourcesEv.cpp _ZN5Koopa13InitResourcesEv ✅ verified 1
src/_ZN5Koopa8BehaviorEv.cpp _ZN5Koopa8BehaviorEv ✅ verified 1
src/_ZN5Pokey16OnPendingDestroyEv.cpp _ZN5Pokey16OnPendingDestroyEv ✅ verified 1
src/_ZN5Pokey8BehaviorEv.cpp _ZN5Pokey8BehaviorEv ✅ verified 1
src/_ZN5Shark13InitResourcesEv.cpp _ZN5Shark13InitResourcesEv ✅ verified 1
src/_ZN5Spiny13InitResourcesEv.cpp _ZN5Spiny13InitResourcesEv ✅ verified 1
src/_ZN5Stage11RenderModelEv.cpp _ZN5Stage11RenderModelEv ✅ verified 1
src/_ZN5Stage14GraphCallback2Ev.cpp _ZN5Stage14GraphCallback2Ev ✅ verified 1
src/_ZN5Stage17PS_UpdateSaveMenuEb.cpp _ZN5Stage17PS_UpdateSaveMenuEb ✅ verified 1
src/_ZN5Stage17UpdateMenuButtonsEb.cpp _ZN5Stage17UpdateMenuButtonsEb ✅ verified 1
src/_ZN5Stage18LoadClsnAndObjectsER11LVL_OverlayjR7dBgW_Kc.cpp _ZN5Stage18LoadClsnAndObjectsER11LVL_OverlayjR7dBgW_Kc ✅ verified 1
src/_ZN5Stage22RenderModelTransparentEv.cpp _ZN5Stage22RenderModelTransparentEv ✅ verified 1
src/_ZN5Stage7LoadFogEv.cpp _ZN5Stage7LoadFogEv ✅ verified 1
src/_ZN5Stump16CleanupResourcesEv.cpp _ZN5Stump16CleanupResourcesEv ✅ verified 1
src/_ZN5Swoop8BehaviorEv.cpp _ZN5Swoop8BehaviorEv ✅ verified 1
src/_ZN5Timer10StartTimerEv.cpp _ZN5Timer10StartTimerEv ✅ verified 1
src/_ZN5Timer7GetTimeEv.cpp _ZN5Timer7GetTimeEv ✅ verified 1
src/_ZN5Timer9StopTimerEv.cpp _ZN5Timer9StopTimerEv ✅ verified 1
src/_ZN5Ukiki13InitResourcesEv.cpp _ZN5Ukiki13InitResourcesEv ✅ verified 1
src/_ZN5Ukiki8BehaviorEv.cpp _ZN5Ukiki8BehaviorEv ✅ verified 1
src/_ZN5Unagi13InitResourcesEv.cpp _ZN5Unagi13InitResourcesEv ✅ verified 1
src/_ZN5Unagi8BehaviorEv.cpp _ZN5Unagi8BehaviorEv ✅ verified 1
src/_ZN5Whomp13InitResourcesEv.cpp _ZN5Whomp13InitResourcesEv ✅ verified 1
src/_ZN5Whomp16CleanupResourcesEv.cpp _ZN5Whomp16CleanupResourcesEv ✅ verified 1
src/_ZN5dBgCh21ShouldPassThroughImplEPvRK4CLPSRKS_b.cpp _ZN5dBgCh21ShouldPassThroughImplEPvRK4CLPSRKS_b ✅ verified 1
src/_ZN5dCc_c6UpdateEv.cpp _ZN5dCc_c6UpdateEv ✅ verified 1
src/_ZN6Bowser8BehaviorEv.cpp _ZN6Bowser8BehaviorEv ✅ verified 1
src/_ZN6Bullet13InitResourcesEv.cpp _ZN6Bullet13InitResourcesEv ✅ verified 1
src/_ZN6Bullet8BehaviorEv.cpp _ZN6Bullet8BehaviorEv ✅ verified 1
src/_ZN6Camera11ChangeStateEPNS_5StateE.cpp _ZN6Camera11ChangeStateEPNS_5StateE ✅ verified 1
src/_ZN6Camera14GoBehindPlayerEj.cpp _ZN6Camera14GoBehindPlayerEj ✅ verified 1
src/_ZN6Camera8BehaviorEv.cpp _ZN6Camera8BehaviorEv ✅ verified 1
src/_ZN6Coffin13InitResourcesEv.cpp _ZN6Coffin13InitResourcesEv ✅ verified 1
src/_ZN6Coffin16CleanupResourcesEv.cpp _ZN6Coffin16CleanupResourcesEv ✅ verified 1
src/_ZN6Coffin8BehaviorEv.cpp _ZN6Coffin8BehaviorEv ✅ verified 1
src/_ZN6Dorrie13InitResourcesEv.cpp _ZN6Dorrie13InitResourcesEv ✅ verified 1
src/_ZN6Dorrie16CleanupResourcesEv.cpp _ZN6Dorrie16CleanupResourcesEv ✅ verified 1
src/_ZN6Eyerok13InitResourcesEv.cpp _ZN6Eyerok13InitResourcesEv ✅ verified 1
src/_ZN6Eyerok16CleanupResourcesEv.cpp _ZN6Eyerok16CleanupResourcesEv ✅ verified 1
src/_ZN6FlyGuy8BehaviorEv.cpp _ZN6FlyGuy8BehaviorEv ✅ verified 1
src/_ZN6Fwoosh13InitResourcesEv.cpp _ZN6Fwoosh13InitResourcesEv ✅ verified 1
src/_ZN6Fwoosh8BehaviorEv.cpp _ZN6Fwoosh8BehaviorEv ✅ verified 1
src/_ZN6Klepto13InitResourcesEv.cpp _ZN6Klepto13InitResourcesEv ✅ verified 1
src/_ZN6Klepto8BehaviorEv.cpp _ZN6Klepto8BehaviorEv ✅ verified 1
src/_ZN6Lakitu13InitResourcesEv.cpp _ZN6Lakitu13InitResourcesEv ✅ verified 1
src/_ZN6Lakitu8BehaviorEv.cpp _ZN6Lakitu8BehaviorEv ✅ verified 1
src/_ZN6Player11ChangeStateERNS_5StateE.cpp _ZN6Player11ChangeStateERNS_5StateE ✅ verified 1
src/_ZN6Player11St_Owl_InitEv.cpp _ZN6Player11St_Owl_InitEv ✅ verified 1
src/_ZN6Player11St_Owl_MainEv.cpp _ZN6Player11St_Owl_MainEv ✅ verified 1
src/_ZN6Player12St_Dive_InitEv.cpp _ZN6Player12St_Dive_InitEv ✅ verified 1
src/_ZN6Player12St_Fall_MainEv.cpp _ZN6Player12St_Fall_MainEv ✅ verified 1
src/_ZN6Player12St_Hurt_InitEv.cpp _ZN6Player12St_Hurt_InitEv ✅ verified 1
src/_ZN6Player12St_Jump_MainEv.cpp _ZN6Player12St_Jump_MainEv ✅ verified 1
src/_ZN6Player12St_Land_MainEv.cpp _ZN6Player12St_Land_MainEv ✅ verified 1
src/_ZN6Player12St_Swim_InitEv.cpp _ZN6Player12St_Swim_InitEv ✅ verified 1
src/_ZN6Player12St_Talk_MainEv.cpp _ZN6Player12St_Talk_MainEv ✅ verified 1
src/_ZN6Player12St_Wait_MainEv.cpp _ZN6Player12St_Wait_MainEv ✅ verified 1
src/_ZN6Player12St_Walk_InitEv.cpp _ZN6Player12St_Walk_InitEv ✅ verified 1
src/_ZN6Player12St_Walk_MainEv.cpp _ZN6Player12St_Walk_MainEv ✅ verified 1
src/_ZN6Player12Unk_020c6a10Ej.cpp _ZN6Player12Unk_020c6a10Ej ✅ verified 1
src/_ZN6Player13St_Climb_MainEv.cpp _ZN6Player13St_Climb_MainEv ✅ verified 1
src/_ZN6Player13St_Crawl_MainEv.cpp _ZN6Player13St_Crawl_MainEv ✅ verified 1
src/_ZN6Player13St_Shell_MainEv.cpp _ZN6Player13St_Shell_MainEv ✅ verified 1
src/_ZN6Player14InitMetalWarioEv.cpp _ZN6Player14InitMetalWarioEv ✅ verified 1
src/_ZN6Player14St_Cannon_MainEv.cpp _ZN6Player14St_Cannon_MainEv ✅ verified 1
src/_ZN6Player14St_Crouch_InitEv.cpp _ZN6Player14St_Crouch_InitEv ✅ verified 1
src/_ZN6Player14St_Crouch_MainEv.cpp _ZN6Player14St_Crouch_MainEv ✅ verified 1
src/_ZN6Player14St_OnWall_InitEv.cpp _ZN6Player14St_OnWall_InitEv ✅ verified 1
src/_ZN6Player14St_OnWall_MainEv.cpp _ZN6Player14St_OnWall_MainEv ✅ verified 1
src/_ZN6Player14St_Squish_MainEv.cpp _ZN6Player14St_Squish_MainEv ✅ verified 1
src/_ZN6Player14St_Thrown_MainEv.cpp _ZN6Player14St_Thrown_MainEv ✅ verified 1
src/_ZN6Player15St_Balloon_InitEv.cpp _ZN6Player15St_Balloon_InitEv ✅ verified 1
src/_ZN6Player15St_DeadHit_InitEv.cpp _ZN6Player15St_DeadHit_InitEv ✅ verified 1
src/_ZN6Player15St_DeadHit_MainEv.cpp _ZN6Player15St_DeadHit_MainEv ✅ verified 1
src/_ZN6Player15St_DeadPit_MainEv.cpp _ZN6Player15St_DeadPit_MainEv ✅ verified 1
src/_ZN6Player15St_Grabbed_MainEv.cpp _ZN6Player15St_Grabbed_MainEv ✅ verified 1
src/_ZN6Player15St_Respawn_MainEv.cpp _ZN6Player15St_Respawn_MainEv ✅ verified 1
src/_ZN6Player15St_Swallow_MainEv.cpp _ZN6Player15St_Swallow_MainEv ✅ verified 1
src/_ZN6Player16CleanupResourcesEv.cpp _ZN6Player16CleanupResourcesEv ✅ verified 1
src/_ZN6Player16IncMegaKillCountEv.cpp _ZN6Player16IncMegaKillCountEv ✅ verified 1
src/_ZN6Player16InitWingFeathersEb.cpp _ZN6Player16InitWingFeathersEb ✅ verified 1
src/_ZN6Player16SetRealCharacterEj.cpp _ZN6Player16SetRealCharacterEj ✅ verified 1
src/_ZN6Player16St_BurnLava_InitEv.cpp _ZN6Player16St_BurnLava_InitEv ✅ verified 1
src/_ZN6Player16St_Climb_CleanupEv.cpp _ZN6Player16St_Climb_CleanupEv ✅ verified 1
src/_ZN6Player16St_SideFlip_MainEv.cpp _ZN6Player16St_SideFlip_MainEv ✅ verified 1
src/_ZN6Player16St_Teleport_MainEv.cpp _ZN6Player16St_Teleport_MainEv ✅ verified 1
src/_ZN6Player16St_WallJump_MainEv.cpp _ZN6Player16St_WallJump_MainEv ✅ verified 1
src/_ZN6Player17St_ButtSlide_MainEv.cpp _ZN6Player17St_ButtSlide_MainEv ✅ verified 1
src/_ZN6Player17St_Headstand_MainEv.cpp _ZN6Player17St_Headstand_MainEv ✅ verified 1
src/_ZN6Player17St_HoldHeavy_InitEv.cpp _ZN6Player17St_HoldHeavy_InitEv ✅ verified 1
src/_ZN6Player17St_HoldHeavy_MainEv.cpp _ZN6Player17St_HoldHeavy_MainEv ✅ verified 1
src/_ZN6Player17St_HoldLight_MainEv.cpp _ZN6Player17St_HoldLight_MainEv ✅ verified 1
src/_ZN6Player17St_HurtWater_InitEv.cpp _ZN6Player17St_HurtWater_InitEv ✅ verified 1
src/_ZN6Player17St_LedgeHang_MainEv.cpp _ZN6Player17St_LedgeHang_MainEv ✅ verified 1
src/_ZN6Player17St_NoControl_MainEv.cpp _ZN6Player17St_NoControl_MainEv ✅ verified 1
src/_ZN6Player17St_PunchKick_InitEv.cpp _ZN6Player17St_PunchKick_InitEv ✅ verified 1
src/_ZN6Player17St_PunchKick_MainEv.cpp _ZN6Player17St_PunchKick_MainEv ✅ verified 1
src/_ZN6Player17St_SlideKick_InitEv.cpp _ZN6Player17St_SlideKick_InitEv ✅ verified 1
src/_ZN6Player17St_SlideKick_MainEv.cpp _ZN6Player17St_SlideKick_MainEv ✅ verified 1
src/_ZN6Player17St_SweepKick_MainEv.cpp _ZN6Player17St_SweepKick_MainEv ✅ verified 1
src/_ZN6Player17St_WallSlide_MainEv.cpp _ZN6Player17St_WallSlide_MainEv ✅ verified 1
src/_ZN6Player17St_WindCarry_InitEv.cpp _ZN6Player17St_WindCarry_InitEv ✅ verified 1
src/_ZN6Player18St_Balloon_CleanupEv.cpp _ZN6Player18St_Balloon_CleanupEv ✅ verified 1
src/_ZN6Player18St_CameraZoom_InitEv.cpp _ZN6Player18St_CameraZoom_InitEv ✅ verified 1
src/_ZN6Player18St_LevelEnter_InitEv.cpp _ZN6Player18St_LevelEnter_InitEv ✅ verified 1
src/_ZN6Player18St_TurnAround_MainEv.cpp _ZN6Player18St_TurnAround_MainEv ✅ verified 1
src/_ZN6Player18St_YoshiPower_InitEv.cpp _ZN6Player18St_YoshiPower_InitEv ✅ verified 1
src/_ZN6Player19St_CrazedCrate_InitEv.cpp _ZN6Player19St_CrazedCrate_InitEv ✅ verified 1
src/_ZN6Player19St_TornadoSpin_InitEv.cpp _ZN6Player19St_TornadoSpin_InitEv ✅ verified 1
src/_ZN6Player20IsStateEnteringLevelEv.cpp _ZN6Player20IsStateEnteringLevelEv ✅ verified 1
src/_ZN6Player20St_CeilingGrate_InitEv.cpp _ZN6Player20St_CeilingGrate_InitEv ✅ verified 1
src/_ZN6Player20St_CeilingGrate_MainEv.cpp _ZN6Player20St_CeilingGrate_MainEv ✅ verified 1
src/_ZN6Player20St_InYoshiMouth_InitEv.cpp _ZN6Player20St_InYoshiMouth_InitEv ✅ verified 1
`src/_ZN6Player20St_InYoshiMouth_Ma

The private worker commits a test merge, builds the stock ROM profile, compares every executable module, measures matched and source-built code, checks contributor lineage, and verifies affected relocations. The mod profile is opt-in and is not part of this merge gate.

Base automatically changed from cpp/minigame-tu-2 to main August 31, 2026 09:03
@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Verified from the cartridge — content approved. One more re-cut, and this one is trivial.

Reviewed at fee055d82f75. I verified this PR's content at the pre-restack head, then confirmed the restack changed nothing: your two commits' own delta is byte-identical across the move.

git diff 7c0f9a92c794..de7e85a0dd57  ->  125583 bytes   (old head, old base)
git diff 3194e6d6e058..fee055d82f75 ->  125583 bytes   (new head, new base)
diff of the two patches -> empty

32 files, +1667/−1106 both ways. So everything below, verified once, still stands — nothing needs re-checking after the next move either, as long as the commits are replayed rather than hand-merged.


Where this stands right now

#2067 is merged — squashed to 244fd4d849c9, main is there now. Its PR validation came back green and I merged it a few minutes ago.

That squash makes this PR DIRTY again, for the same reason as last time: main now carries #2067's content under a commit this branch has never seen, while this branch still carries the three original commits. But the conflict set is one line long this time:

git merge-tree --write-tree --name-only origin/main fee055d82f75
  attribution.json          CONFLICT (content)
  config/arm9/overlays/ov006/delinks.txt      auto-merged
  config/converted-baseline.json              auto-merged
  ... everything else                         clean

attribution.json is the only conflict. Both ledgers auto-merge, which is the pleasant surprise — the squashed content matched line-for-line, so the delinks and the baseline resolve themselves.

Cut from origin/main and replay these two:

9347c7bd8  Promote ov006/dScMgMCarlo_c to a single 23-function C++ TU
fee055d82  Mark every member of the MCarlo TU with its @symbol boundary

Three-way merge attribution.json; do not union the keys. Attribution is a stated non-goal here, so spend the mechanical resolve and nothing more.

I already ran premerge_check on the combined stack — this PR merged into the main that predated #2067, which is exactly the #2067+#2071 tree that is about to exist:

merge tree 51379ec5010b
converted-ratchet / dead-references / duplicate-sources / header-offsets /
langmode-ratchet / layout-check / src-tu-refs / source-coverage   8/8  pass -> pass
  info: entries: 10925 -> 10885 (-40)   (consolidation, not a loss -- bytes are flat)
RESULT: nothing goes green -> red.

I will re-run it against the real merge tree after the re-cut, but I do not expect a surprise.


What I verified independently

Markers: 21, and the two absences are correct

23 declared functions, 21 markers. The two without one are _ZN13dScMgMCarlo_cD1Ev and _ZN13dScMgMCarlo_cD0Ev — correct, since you flipped the destructor inline and the pair is compiler-emitted, covered by the lifecycle fallback. Every other marker matches functions[].symbol exactly: no extras, no misspellings. Last marker is at line 1125 of 1145, so the final fragment is 20 lines, not 354.

Second TU in a row that arrives already conforming to notes/tu-promotion-conventions.md §6 without being asked.

The linked range is exactly contiguous and abuts both neighbours

Chaining the 23 removed delink ranges:

0x020f7634 -> 76a8 -> 7730 -> 7740 -> 7994 -> 7a00 -> 7a90 -> 7b10 -> 7b90 -> 7c10
           -> 7e2c -> 7ee4 -> 8154 -> 8224 -> 82d0 -> 8320 -> 84a8 -> 8540 -> ...
           -> 0x020f8e44

23 for 23, no gap, no overlap. And in the rewritten delinks.txt:

src/MgMemoryMaster_Spawn.c      .text 0x020f75d4..0x020f7634
src/actors/dScMgMCarlo_c.cpp    .text 0x020f7634..0x020f8e44   <- new
src/func_ov006_020f8e44.cpp     .text 0x020f8e44..0x020f8ed8

Both endpoints preserved, both neighbours abut exactly.

All 13 licensing addresses read back correctly from the ROM

This is the part SCRATCH-LINK-VERIFIED does not cover — the link round proves the bytes, not that each canonical_module/canonical_address row points at the record it names. Resolved against extracted/arm9_dec.bin and the overlay images, each row in its own module first:

_ZTI7fBase_c              arm9  0x02086d70 -> name '7fBase_c'                OK
_ZTS7fBase_c              arm9  0x02086e60 -> '7fBase_c'                     OK
_ZTS7dBase_c              arm9  0x02086e54 -> '7dBase_c'                     OK
_ZTS8dScene_c             arm9  0x020914b0 -> '8dScene_c'                    OK
_ZTI7dBase_c              arm9  0x02086e78 -> name '7dBase_c'                OK
_ZTI11dScMgBase_c         ov004 0x020bbf6c -> name '11dScMgBase_c'           OK
_ZTS11dScMgBase_c         ov004 0x020bbf84 -> '11dScMgBase_c'                OK
_ZTI8dScene_c             arm9  0x020914d4 -> name '8dScene_c'               OK
_ZTI19dScMgSingle3DBase_c ov006 0x0213bc64 -> name '19dScMgSingle3DBase_c'   OK
_ZTS19dScMgSingle3DBase_c ov006 0x0213bd00 -> '19dScMgSingle3DBase_c'        OK
_ZTI13dScMgMCarlo_c       ov006 0x0213d588 -> name '13dScMgMCarlo_c'         OK
_ZTS13dScMgMCarlo_c       ov006 0x0213d594 -> '13dScMgMCarlo_c'              OK
_ZTV13dScMgMCarlo_c       ov006 0x0213d664 -> [V-4] = 0x0213d588             OK

Thirteen for thirteen.

The RTTI chain, walked from the vtable

_ZTV13dScMgMCarlo_c @ 0x0213d664
  [V-8] offset-to-top = 0x00000000
  [V-4] typeinfo      = 0x0213d588   manifest says 0x0213d588        MATCH
  TI[1] name ptr      = 0x0213d594 -> '13dScMgMCarlo_c'
  TI[2] base's _ZTI   = 0x0213bc64   = _ZTI19dScMgSingle3DBase_c     MATCH

13 is exactly len("dScMgMCarlo_c"), so the read checks itself, and TI[2] puts dScMgMCarlo_c : dScMgSingle3DBase_c in the cartridge rather than in our headers. The class is in the agreeing set, which is why this promotion can land at all — #2066 is the counter-example where a coined name made it impossible.

Agreed on your point about rtti_name_audit --class for the next unit. A second independent walk of the same three words is worth more than either implementation alone, and it is the difference between "I read the bytes" and "two tools that do not share code read the bytes."

The converted ratchet is one clean re-key

- src/_ZN13dScMgMCarlo_c6RenderEv.cpp -> src/actors/dScMgMCarlo_c.cpp#_ZN13dScMgMCarlo_c6RenderEv

One line, set size unchanged. The other four class files and all eighteen func_ov006_* files were never in the baseline, so nothing is silently dropped.

And on your correction — accepted, and it is the more useful reading. This one went pass → FAIL on the merge tree; #2067's eleven were latent. Worth keeping apart precisely because it tells us what the gate is: it catches a swallowed span only once a banked entry falls inside it. That is a real backstop, not a full one, and it is the argument for markers being mandatory rather than merely tidy.

The decl_common.h edit is safe, and I checked the claim rather than taking it

You remove three declarations and change one signature in a header the whole tree includes, on the stated grounds that every consumer lives in the new TU. Grepping the branch tip for all four symbols across src/, include/, mods/ and port/: every reference to data_ov006_021424fc, _02142500, _02142504 and _02142508 is inside src/actors/dScMgMCarlo_c.cpp. The claim holds.

Recovering all four as one intrusive doubly-linked Node list — two cursors, head, tail — out of four legacy files that spelled them int, void*, char* and struct Node* is the substantive win here, and it is what TU reconstruction is for. data_ov006_021424fc->f_2a > data_ov006_02142508->f_2a reads as the comparison it is, instead of as arithmetic on an int.

The inline-destructor flip is argued from the ROM

D1 at 0x020f7634 sits before D0 at 0x020f76a8. An out-of-line destructor cannot produce that order — mwcc emits the synthesized D0 ahead of the written D1. The flip is forced by the cartridge, InitResources becomes the key function as the first non-inline virtual declared after it, and the TU defining it emits _ZTV13dScMgMCarlo_c. emittedTextOrderIsRomAscending = True is the mechanical confirmation.

The dsd check symbols reporting is honest

checkSymbols: false, with symbolCheckErrors and symbolCheckBaselineErrors both recorded and identical, nine for nine. Zero new errors, and the manifest does not claim the check as green. That is the right way to record a pre-existing failure; I would rather see it than a suppressed row.


Two notes, neither blocking

1. One stale declaration left behind — in the file that proves your array shape

src/func_ov006_020f8e44.cpp:9 still says:

extern "C" void func_ov006_020f7730(void);

It is the only reference to that symbol outside the new TU. It compiles — the file is self-contained, does not include decl_common.h, and the value is cast to void* at the call — so this is not a correctness problem and the 106/106 is unaffected. But the point of this PR on that symbol is that the signature is void(int *); you fixed decl_common.h and the header, and this is the one spelling left disagreeing.

Worth rolling into the re-cut push because that file is the corroboration for the header:

func_020733a8(p + 0x51a8, 0x50, 0x30, (void*)func_ov006_020f8ed8, (void*)func_ov006_020f7730);

is what makes mArray at 0x51a8, 0x50 elements of 0x30, with that element destructor, a measurement rather than an inference.

2. tubuild truncates an Allman-braced conflict record — and this PR carries the proof

Your TU records nine conflict notes. Seven are fine. This one is not:

/* TUBUILD CONFLICT -- alternate body of struct 'Obj', from the legacy file for func_ov006_020f8224, NOT applied:
struct Obj
*/

The declaration it was quoting, in src/func_ov006_020f8224.c:

struct Obj
{
    char pad[0x2a];
    short f2a;
    unsigned char f2c;
};

The splitter stopped at the newline because the brace is on the next line, so the record kept "for review" carries no information at all. Every other body-conflict block in the file has a real body; this one is empty because of brace style alone.

No harm in this instance — the discarded alternate agrees with the kept struct (f2a at 0x2a, f2c at 0x2c both ways), so nothing was lost that would have changed a decision. But it is the same brace-position blindness class as the check_header_offsets hazard, and next time the dropped body may be the one that disagrees.

This is the complement to the headless-struct defect you are taking on next: yours drops the header and keeps the body, this one keeps the header and drops the body. Same splitter, two ends of the same bug. Please put both failing inputs in the test file — the fix without the inputs leaves us re-deriving them next time.


Verdict

Approved on content; re-cut onto main and I will merge it. Every cartridge-derived claim checks out, the markers are complete and correct, the decl_common.h blast radius is bounded and measured, and the ratchet delta is one clean re-key. One conflict to resolve, in a file that is a non-goal.

On the merge itself: that is mine to do and I am doing it — you get branches to green, I decide what lands and in what order. #2067 went in the moment its validator reported; this one goes in the same way once it sits on a clean base.

andrewboudreau and others added 3 commits August 31, 2026 04:12
src_tu/actors/dScMgMCarlo_c.cpp -> src/actors/dScMgMCarlo_c.cpp, replacing
23 per-function legacy sources (18 flat-C, 5 already C++). The whole .text
range 0x020f7634..0x020f8e44 now reproduces from one object.

CONSOLIDATION IS WHERE THE WORK WAS. Each of the 23 legacy files compiled
in isolation with its own private shadow structs and extern declarations,
so they were free to contradict each other and never did so out loud. Put
in one TU they produced ~25 compile errors, every one a real disagreement
about the same object. Each was settled against evidence:

  - `Node` and the list-`Obj` are the SAME struct. Five partial views, all
    agreeing on every offset they share; unified into one layout with the
    fields commented.
  - A THIRD, unrelated `Obj` was not a list node at all -- it was a
    shape-only shadow of this scene class's OWN vtable, used for the
    slot-18 self-dispatch in InitResources. Revived as `SceneVtable` so
    the two meanings stop colliding. It becomes a real base-class virtual
    call once dScMgBase_c declares slots 18-35.
  - data_ov006_02142500 is the list HEAD and _02142504 the TAIL, proven by
    func_ov006_020f7740 walking head->next and tail->prev. Render starts
    from the tail, so both its loops step `prev`, not `next` -- corrobo-
    rated independently by func_ov006_020f8a3c's raw `*(char**)(r3 + 4)`.
  - _Z14ApproachLinearRiii and _Z15ApproachLinear2Rsss take REFERENCES;
    the mangled names say so, and a reference and a pointer pass the same
    address, so the accurate spelling costs no code.
  - func_ov006_020f8540 was declared (void) but called with an argument.
    ARM passes it in r0 and the body ignores it; spelling the parameter
    keeps the call site honest and changes no byte.
  - include/dScMgBase_c.h already declared data_ov004_020beb68 as void*,
    which settled that conflict against the TU's char*.

The destructor is defined inline in the class body, for the same reason as
dScMgBSC_c: out of line, mwcc emits the synthesized D0 ahead of the written
D1, and the cartridge has D1 first (0x020f7634) then D0 (0x020f76a8).
Inlining hands the key-function role to InitResources -- the next virtual
declared, non-inline, and defined here -- which is what emits
_ZTV13dScMgMCarlo_c. Slots 16 and 17 name D1 then D0, odr-using both, so
the compiler emits the pair in cartridge order, and the homeless D2 is gone.

decl_common.h loses the scalar declarations of the four list globals
(_021424fc/_02142500/_02142504/_02142508). They were arbitrary winners
among 19 contradictory isolated spellings; every consumer is in this TU,
which now declares all four with the recovered pointer type.

Verification:
  tubuild verify ov006/dScMgMCarlo_c   23/23 MATCH, objisolate clean,
                                       reloc-destinations clean,
                                       ROM-ascending section order
  tubuild linkcheck (pre-promotion)    SCRATCH-LINK-VERIFIED; 106/106
                                       exact; full ROM built and IDENTICAL
                                       to the stock build. dsd check
                                       symbols --fail still fails on the
                                       same 9 errors the baseline control
                                       has -- 0 new, so not attributable
                                       to this TU, but NOT green and not
                                       reported as such.
  rombuild -j16 (post-promotion)       11,088 source-built functions,
                                       reproducing 11,088, mismatching 0;
                                       106/106 exact, 100.000000%; the ROM
                                       it builds is sha256 d1506e90...,
                                       byte-identical to the stock build.
  layout_check / eligible / langmode / port_refcheck / dead-references: clean

All 13 compiler-emitted RTTI and vtable symbols are licensed in
compiler_only_output, every canonical address confirmed against
config/arm9 symbols.txt, and romdata_check byte-compares each against the
cartridge: 6 VERIFIED, 7 PARTIAL (exact prefixes), 0 DIFFER.
_ZTV13dScMgMCarlo_c reproduces 72 of the cartridge's 144 bytes -- 18 of 36
slots -- because dScMgBase_c still leaves slots 18-35 undeclared. That is a
verified prefix, not a disagreement, and widening it is the dScMgBase_c
follow-up, not this change.

The cartridge's own _ZTS strings corroborate the names: reading
extracted/dsd/arm9_overlays/ov006.bin at overlay base 34340544 gives
13dScMgMCarlo_c at 0x0213d594 and 19dScMgSingle3DBase_c at 0x0213bd00 --
so this TU emits no homeless typeinfo record.

Attribution: a 23-delete + 1-add collapse ends 22 git lineages, so
attribution.json takes 23 explicit override keys on the surviving path,
each carrying the first matcher the gate itself computes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QhhAeJwXBnfPp7B5DNjCwh
tiers.score_member slices a member at `// @symbol` markers and, finding
none after a marker, runs to end of file. Only 5 of the 21 in-file members
carried one, so _ZN13dScMgMCarlo_c6RenderEv was scored over everything
below it -- the flat-C bodies with their raw casts and mangled callees --
and the CONVERTED ratchet read that as a backslide of a banked entry:

  src/actors/dScMgMCarlo_c.cpp#_ZN13dScMgMCarlo_c6RenderEv
      No raw offset arithmetic; Calls things by real names, not mangled _Z

Neither is true of Render's own body. The 16 missing markers are added, so
each member is scored against itself. Comments only:

  tiers_ratchet --check   PASS   baseline 2568   current 2568
  rombuild -j16           106/106 exact, 100.000000%; 11,088/11,088
                          reproducing, 0 mismatching; the ROM is still
                          sha256 d1506e90..., identical to the stock build

dScMgBSC_c.cpp had the same gap -- 6 markers for 17 members -- and none of
its banked members mis-scored, so it was a latent hazard rather
than a regression; it is fixed one commit down, in #2067, where it lives.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QhhAeJwXBnfPp7B5DNjCwh
src/func_ov006_020f8e44.cpp declared the array's element destructor as
`void(void)` while src/actors/dScMgMCarlo_c.cpp recovers it as `void(int *)`.
Both compile -- the factory casts to void* at the call -- but that file is
the corroboration for mArray at 0x51a8 being 0x50 x 0x30 with that element
dtor, so it is the one place the disagreement is expensive to leave.

rombuild: 11,088/11,088 reproducing, 0 mismatching, 106/106 exact,
100.000000%; ROM sha256 unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QhhAeJwXBnfPp7B5DNjCwh
@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Re-cut onto origin/main@ccb65b8b3 (post-#2067 squash 244fd4d849c9). MERGEABLE again.

fee055d82ea0760117. Both commits replayed rather than merged, and neither cherry-pick conflictedattribution.json included, so the three-way merge you predicted resolved itself once the squashed BSC content was line-for-line identical.

The patch is unchanged, which is checkable rather than assertable:

$ diff <(git diff 3194e6d6e058..fee055d82f75) <(git diff origin/main..628f52b31)
$ echo $?
0

Byte-identical, 125583 bytes both sides. Everything verified at the old head carries over untouched.

The one content change: src/func_ov006_020f8e44.cpp:9

Commit ea0760117, on top. It declared the element destructor void(void) while the TU recovers it void(int *):

void func_ov006_020f7730(int *p) { p[0] = (int)data_ov006_0213d5ac; }

Now spelled the same in both, with the reason in a comment — that file is the corroboration for mArray at 0x51a8 being 0x50 × 0x30 with that element dtor, so the disagreement was sitting on the one fact that sizes the array. The factory casts to void* at the call, so no code moved.

Re-verified at ea0760117

rombuild -j16 11,088/11,088 reproducing, 0 mismatching, 106/106 exact, 100.000000%
ROM sha256 d1506e90efae5e2d2cf119926a4ac2a291bd5ca78349d09d5024e1a918c478e8 (unchanged)
tiers_ratchet --check CONVERTED PASS, baseline 2568, current 2568
premerge_check 8/8 pass→pass on merge tree 4e0d92d28a7d; entries 10907 -> 10885 (-22)
prepush_attribution 11189 tracked, 23 consolidated with credit intact, 0 changed, 0 lost
port_refcheck 405 references, 0 stale

(-22 rather than -40 because BSC's half of the consolidation is now in the base.)

Related: the splitter defect is filed

#2072, tools-only off origin/main. Both ends of the bug are in the test file as you asked, from the real inputs: the declaration keeps its Allman body, and the TUBUILD CONFLICT comment carries a real alternate body instead of the two words struct Obj. Fixing the walk turned up two more shapes — an elaborated return type (struct dActor_c *dCapEnemy_c::RespawnIfHasCap()) being filed as a shadow declaration, and definitions wrapped in namespace/extern "C" refusing with a message that named nothing. Measured over all 11150 legacy sources: 82 headless bodies repaired, 10 more files split cleanly, 683 refusals that now name the offending block and line, 0 regressions, and nothing enrolled in a TU is affected.

@andrewboudreau
andrewboudreau merged commit 6d8f8e5 into main Aug 31, 2026
8 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/minigame-tu-3 branch August 31, 2026 09:35
@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Merged as 6d8f8e529b89.

Final state: MERGEABLE / CLEAN, all eight checks green including PR validation (13m29s). main was green across all five gates at 6ca3191b1 before I pushed the button.

I did not re-run premerge_check against the new merge tree, and here is the reasoning so it is on the record rather than assumed. My 8/8 was measured against ccb65b8b3c38 (merge tree 4e0d92d28a7d, entries 10907 → 10885). The only thing that landed on main in between is #2072:

tools/tubuild.py       +79 -5
tools/test_tubuild.py  +154

Neither file is one of the eight gates premerge_check runs, and this PR touches no tools/ at all — so the two trees differ only in files that cannot change the verdict. main itself is green carrying them. That transfers; a third 9-minute run would have measured the same thing.

Thanks for taking the func_ov006_020f8e44.cpp finding in ea0760117 — that file is the corroboration for the mArray shape in the header, so having it spell the signature the same way as decl_common.h is worth the extra commit. Third commit is exactly the one line I asked for and nothing else.

That is #2067, #2072 and #2071 landed in sequence today, each one re-cut onto a clean base rather than hand-merged. The discipline of replaying commits instead of resolving them is why the attribution.json conflict cost a mechanical resolve and nothing else — worth keeping.

andrewboudreau added a commit that referenced this pull request Aug 31, 2026
…oted path (#2073)

`dead references` is red on main. tools/test_tubuild.py, landed in #2072,
cites `src/func_ov006_020f8224.c` as the real-world input its Allman-brace
case was built from. #2071 promoted that file into the ov006/dScMgMCarlo_c
TU an hour later, so the path is gone and the prose reference dangles.

Neither PR could see it. #2072's dead-references run happened while the
file still existed; #2071's premerge_check ran against a merge tree that
predated #2072. The two are individually green and red in combination --
the merge-tree hazard, one step removed.

Fix names the input by symbol instead of by path. `func_ov006_020f8224`
survives both promotion and rename, and check_dead_references reads only
`a/b`-shaped path tokens, so a symbol cannot dangle. The docstring says
why, so the path does not get helpfully restored later.

Not bundled, deliberately: `--update` would also drop the now-stale
`src/game/actors` baseline entry. That is real but unrelated cleanup in a
tracked config file, and main is red now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant