Skip to content

Promote daPropeller_Heyho_c as a compiler-owned C++ TU - #2096

Merged
andrewboudreau merged 5 commits into
mainfrom
cpp/flyguy-genuine-tu
Sep 1, 2026
Merged

Promote daPropeller_Heyho_c as a compiler-owned C++ TU#2096
andrewboudreau merged 5 commits into
mainfrom
cpp/flyguy-genuine-tu

Conversation

@andrewboudreau

@andrewboudreau andrewboudreau commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Promotes the ROM-proven daPropeller_Heyho_c / FlyGuy overlay unit into one compiler-owned production translation unit. Twenty-seven legacy source files become src/actors/daPropeller_Heyho_c.cpp, owning text 0x0211f000..0x02120570 and data 0x02123120..0x021231e4. The compiler emits D1/D0, RTTI, the type name, and the vtable; FlyGuy_Spawn remains the evidence-bounded C-ABI factory seam.

Reviewer follow-up:

  • restacked repeatedly through the completed slot-definition chain (Declare dScMgBase_c slot 35 (Virtual8C) — the 18-35 range is complete #2112); the live merge tree remains conflict-free after the subsequent minigame-method merges
  • added the 12 missing // @symbol markers, so every intended legacy member is scored
  • removed the false FlyGuy_ChangeState converted-backslide waiver
  • retained neutral partition aliases data_ov070_02123184 and data_ov070_021231a0

Fresh validation:

  • full production ROM build: 11,088/11,088 functions, 5/5 source-owned data claims, 106/106 modules, zero mismatches
  • stock ROM SHA-256 d1506e90efae5e2d2cf119926a4ac2a291bd5ca78349d09d5024e1a918c478e8
  • affected-source relocation sweep: 1,086 checked; 1,070 verified, 16 known warnings, 0 blocking
  • source-owned data audit: 7 verified, 5 partial, 0 differing, 0 unnamed
  • 98/98 reconstructed TUs compile; port references 405/405; shared-TU compatibility READY
  • converted ratchet PASS: baseline 2,562, current 2,572 (+10); generated state note current
  • premerge static gates: 8/8 pass to pass

The expected squash-attribution changes are covered by the attribution-override label. No claims, attempt-ledger, or dashboard artifacts are included.

@tangos-validator

tangos-validator Bot commented Aug 31, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

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

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,739 / 11,347 (94.64%, -26)
Byte-verified code bytes 1,996,776 / 2,211,124 (90.31%, -5,416)
Claimed, not byte-verified 478 functions, 108,904 bytes (+26)
Perfect source moves 0 R100
Enrolled ranges (delinks complete) 11,059 functions, 2,053,148 bytes (92.86%, +0) -- differs from byte-verified by +320
Contributor credit 0 added, 26 changed, 0 lost
Relocation check 1265 checked; 5 BLIND, 1 NO-SYM, 1259 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 565 symbol(s) exact, 162 partial, 5 differ

Contributor credit moved (26)

Function Source Before After
ov070:0x0211f000 src/_ZN6FlyGuyD1Ev.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f048 src/_ZN6FlyGuyD0Ev.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f0a4 src/func_ov070_0211f0a4.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f100 src/func_ov070_0211f100.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f368 src/func_ov070_0211f368.cpp -> src/actors/daPropeller_Heyho_c.cpp lunavyqo github-actions[bot]
ov070:0x0211f450 src/func_ov070_0211f450.c -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f48c src/func_ov070_0211f48c.c -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f5f0 src/func_ov070_0211f5f0.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f62c src/func_ov070_0211f62c.c -> src/actors/daPropeller_Heyho_c.cpp ruspecial github-actions[bot]
ov070:0x0211f694 src/func_ov070_0211f694.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211f6e0 src/func_ov070_0211f6e0.c -> src/actors/daPropeller_Heyho_c.cpp lunavyqo github-actions[bot]
ov070:0x0211fa80 src/func_ov070_0211fa80.c -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211fae4 src/func_ov070_0211fae4.c -> src/actors/daPropeller_Heyho_c.cpp andrewboudreau github-actions[bot]
ov070:0x0211fd60 src/func_ov070_0211fd60.c -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x0211fd98 src/func_ov070_0211fd98.c -> src/actors/daPropeller_Heyho_c.cpp aitddlabs github-actions[bot]
ov070:0x0211ffa8 src/func_ov070_0211ffa8.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x02120020 src/FlyGuy_ChangeState.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x02120070 src/func_ov070_02120070.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x02120150 src/_ZN6FlyGuy16CleanupResourcesEv.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x021201bc src/_ZN6FlyGuy16OnPendingDestroyEv.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x021201c0 src/_ZN6FlyGuy6RenderEv.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x02120210 src/_ZN6FlyGuy8BehaviorEv.cpp -> src/actors/daPropeller_Heyho_c.cpp lunavyqo github-actions[bot]
ov070:0x021203b4 src/_ZN6FlyGuy13InitResourcesEv.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x021204e4 src/_ZN6FlyGuy16OnAimedAtWithEggEv.cpp -> src/actors/daPropeller_Heyho_c.cpp tangosdev github-actions[bot]
ov070:0x02120518 src/_ZN6FlyGuy13OnYoshiTryEatEv.cpp -> src/actors/daPropeller_Heyho_c.cpp andrewboudreau github-actions[bot]

+1 more; the full list is in the JSON report's attribution section.

Byte-verified means the range carries complete in a delinks.txt, so the ROM build compiled it and compared it to the cartridge. The 478 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 (26 changed, 0 lost -- src/actors/daPropeller_Heyho_c.cpp: tangosdev -> github-actions[bot]; src/actors/daPropeller_Heyho_c.cpp: tangosdev -> github-actions[bot]; src/actors/daPropeller_Heyho_c.cpp: tangosdev -> github-actions[bot]; +23 more); 27 address range(s) left the byte-verified set while enrolled totals held steady: ov070:0x0211f000-0x0211f048, ov070:0x0211f048-0x0211f0a4, ov070:0x0211f0a4-0x0211f100, ov070:0x0211f100-0x0211f368, ov070:0x0211f368-0x0211f450, +22 more; 5 linkcheck result(s) have unresolved relocations; 1 affected source file(s) could not be fully link-checked; 26 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

1 of 1086 changed file(s) do not match the ROM (NO-SYM).

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/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/_ZN11dScMgBase_c15OnHitByMegaCharEv.cpp _ZN11dScMgBase_c15OnHitByMegaCharEv ✅ verified 1
src/_ZN11dScMgBase_c16OnAimedAtWithEggEv.cpp _ZN11dScMgBase_c16OnAimedAtWithEggEv ✅ verified 1
src/_ZN11dScMgBase_c19OnHitFromUnderneathEv.cpp _ZN11dScMgBase_c19OnHitFromUnderneathEv ✅ verified 1
src/_ZN11dScMgBase_c25OnAimedAtWithEggReturnVecEv.cpp _ZN11dScMgBase_c25OnAimedAtWithEggReturnVecEv ✅ verified 1
src/_ZN11dScMgBase_c9Virtual7CEv.cpp _ZN11dScMgBase_c9Virtual7CEv ✅ verified 1
src/_ZN11dScMgBase_c9Virtual80Ev.cpp _ZN11dScMgBase_c9Virtual80Ev ✅ verified 1
src/_ZN11dScMgCoin_c13InitResourcesEv.cpp _ZN11dScMgCoin_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgCoin_c13OnYoshiTryEatEi.cpp _ZN11dScMgCoin_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN11dScMgJump_c13InitResourcesEv.cpp _ZN11dScMgJump_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgJump_c13OnTurnIntoEggEi.cpp _ZN11dScMgJump_c13OnTurnIntoEggEi ✅ 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_c13OnYoshiTryEatEi.cpp _ZN12dScMg3DEsp_c13OnYoshiTryEatEi ✅ 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_c13OnYoshiTryEatEi.cpp _ZN12dScMgAmida_c13OnYoshiTryEatEi ✅ 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_c13OnTurnIntoEggEi.cpp _ZN12dScMgJump2_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN12dScMgJump2_c13OnYoshiTryEatEi.cpp _ZN12dScMgJump2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgJump2_c6RenderEv.cpp _ZN12dScMgJump2_c6RenderEv ✅ verified 1
src/_ZN12dScMgLuigi_c13InitResourcesEv.cpp _ZN12dScMgLuigi_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgLuigi_c13OnYoshiTryEatEi.cpp _ZN12dScMgLuigi_c13OnYoshiTryEatEi ✅ 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_c13OnYoshiTryEatEi.cpp _ZN12dScMgPanel_c13OnYoshiTryEatEi ✅ 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_c13OnYoshiTryEatEi.cpp _ZN12dScMgSlot1_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgSlot1_c15OnHitByMegaCharEv.cpp _ZN12dScMgSlot1_c15OnHitByMegaCharEv ✅ verified 1
src/_ZN12dScMgSlot1_c19OnHitFromUnderneathEv.cpp _ZN12dScMgSlot1_c19OnHitFromUnderneathEv ✅ verified 1
src/_ZN12dScMgSlot3_c13InitResourcesEv.cpp _ZN12dScMgSlot3_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSlot3_c13OnYoshiTryEatEi.cpp _ZN12dScMgSlot3_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgSlot3_c16OnAimedAtWithEggEv.cpp _ZN12dScMgSlot3_c16OnAimedAtWithEggEv ✅ verified 1
src/_ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv.cpp _ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv ✅ verified 1
src/_ZN12dScMgSlot3_c6RenderEv.cpp _ZN12dScMgSlot3_c6RenderEv ✅ verified 1
src/_ZN12dScMgSlot3_c8BehaviorEv.cpp _ZN12dScMgSlot3_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgSlot3_c9Virtual80Ev.cpp _ZN12dScMgSlot3_c9Virtual80Ev ✅ verified 1
src/_ZN12dScMgSound_c13InitResourcesEv.cpp _ZN12dScMgSound_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSound_c13OnYoshiTryEatEi.cpp _ZN12dScMgSound_c13OnYoshiTryEatEi 🔶 blind (a reloc slot could not be resolved) 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_c13OnYoshiTryEatEi.cpp _ZN13dScMgFlower_c13OnYoshiTryEatEi ✅ 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_c13OnYoshiTryEatEi.cpp _ZN13dScMgMemory_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN13dScMgMemory_c15OnGroundPoundedEv.cpp _ZN13dScMgMemory_c15OnGroundPoundedEv ✅ 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/_ZN14dScMgBomroom_c13OnYoshiTryEatEi.cpp _ZN14dScMgBomroom_c13OnYoshiTryEatEi ✅ 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/_ZN14dScMgD3DBase_c8OnPushedEv.cpp _ZN14dScMgD3DBase_c8OnPushedEv ✅ verified 1
src/_ZN14dScMgD3DBase_c9Virtual7CEv.cpp _ZN14dScMgD3DBase_c9Virtual7CEv ✅ verified 1
src/_ZN14dScMgMemory2_c13InitResourcesEv.cpp _ZN14dScMgMemory2_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgMemory2_c13OnYoshiTryEatEi.cpp _ZN14dScMgMemory2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN14dScMgMemory2_c15OnGroundPoundedEv.cpp _ZN14dScMgMemory2_c15OnGroundPoundedEv ✅ 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_c13OnYoshiTryEatEi.cpp _ZN15dScMgHanachan_c13OnYoshiTryEatEi 🔶 no-sym 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/_ZN15dScMgPachinko_c13OnYoshiTryEatEi.cpp _ZN15dScMgPachinko_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgRoulette_c13InitResourcesEv.cpp _ZN15dScMgRoulette_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c13OnTurnIntoEggEi.cpp _ZN15dScMgRoulette_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN15dScMgRoulette_c13OnYoshiTryEatEi.cpp _ZN15dScMgRoulette_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgRoulette_c16CleanupResourcesEv.cpp _ZN15dScMgRoulette_c16CleanupResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c6RenderEv.cpp _ZN15dScMgRoulette_c6RenderEv ✅ verified 1
src/_ZN15dScMgSnowball_c11OnAttacked2Ev.cpp _ZN15dScMgSnowball_c11OnAttacked2Ev ✅ verified 1
src/_ZN15dScMgSnowball_c13InitResourcesEv.cpp _ZN15dScMgSnowball_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgSnowball_c13OnYoshiTryEatEi.cpp _ZN15dScMgSnowball_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgSnowball_c6RenderEv.cpp _ZN15dScMgSnowball_c6RenderEv ✅ verified 1
src/_ZN15dScMgSnowball_c8BehaviorEv.cpp _ZN15dScMgSnowball_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgSnowball_c8OnKickedEv.cpp _ZN15dScMgSnowball_c8OnKickedEv ✅ verified 1
src/_ZN15dScMgSnowball_c8OnPushedEv.cpp _ZN15dScMgSnowball_c8OnPushedEv ✅ 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/_ZN16dScMgPachinko2_c13OnYoshiTryEatEi.cpp _ZN16dScMgPachinko2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN16dScMgSmartball_c21AfterCleanupResourcesEj.cpp _ZN16dScMgSmartball_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN16dScMgSmartball_c8BehaviorEv.cpp _ZN16dScMgSmartball_c8BehaviorEv ✅ verified 1
src/_ZN16dScMgSmartball_c8OnPushedEv.cpp _ZN16dScMgSmartball_c8OnPushedEv ✅ verified 1
src/_ZN16dScMgSmartball_c9Virtual7CEv.cpp _ZN16dScMgSmartball_c9Virtual7CEv ✅ 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_c13OnTurnIntoEggEi.cpp _ZN17dScMgTrampoline_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN17dScMgTrampoline_c13OnYoshiTryEatEi.cpp _ZN17dScMgTrampoline_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN17dScMgTrampoline_c6RenderEv.cpp _ZN17dScMgTrampoline_c6RenderEv ✅ verified 1
src/_ZN17dScMgTrampoline_c8BehaviorEv.cpp _ZN17dScMgTrampoline_c8BehaviorEv ✅ verified 1
src/_ZN17dScMgTrampoline_c8OnPushedEv.cpp _ZN17dScMgTrampoline_c8OnPushedEv ✅ 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_c13OnTurnIntoEggEi.cpp _ZN18dScMgTrampoline2_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN18dScMgTrampoline2_c13OnYoshiTryEatEi.cpp _ZN18dScMgTrampoline2_c13OnYoshiTryEatEi ✅ 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/_ZN18dScMgTrampoline2_c8OnKickedEv.cpp _ZN18dScMgTrampoline2_c8OnKickedEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c8OnPushedEv.cpp _ZN18dScMgTrampoline2_c8OnPushedEv ✅ 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/_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

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.

@andrewboudreau andrewboudreau added the attribution-override Maintainer accepts this PR's contributor-credit changes; validation reports them as warnings label Aug 31, 2026
Base automatically changed from tools/partition-undefined-vtable-rebias to main August 31, 2026 18:34

@andrewboudreau andrewboudreau left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CHANGES REQUESTED

One blocking ask, and it is a two-line rename. Everything else here is merge-ready and some of it is the best-evidenced work in this series — I re-derived the central claim from the cartridge myself and it holds.

The rename is ROM-proven — independently verified

I did not take the manifest's word for this. Straight out of the ov070 image:

  • 19daPropeller_Heyho_c sits at ov070 offset 0x00412c (0x0212312c), length prefix 19, matching the 19-character name exactly, NUL-terminated. _ZTV19daPropeller_Heyho_c at 0x02123168 points through _ZTI19daPropeller_Heyho_c at 0x02123120 to it.
  • FlyGuy appears in no ROM image, anywhere.
  • The sibling 24daPropeller_Heyho_Fire_c is in ov002, consistent.

So FlyGuy was a coined decomp name and this PR is right to retire it. Dropping the duplicate _ZTV6FlyGuy that shared 0x02123168 with _ZTV19daPropeller_Heyho_c is a real cleanup on its own — two symbols at one address is exactly the shape that makes later data verification ambiguous.

Also verified independently:

  • Converted baseline moves as a SET, not a count. The raw diff looks like it drops seven rows belonging to dScMgBSC_c, dScMgCard_c, dScMgMCarlo_c and dScMgMCarlo2_c. It does not — those are re-sorted, and a set difference confirms it. The only real motion is 8 removed / 7 added, all FlyGuy, with src/FlyGuy_ChangeState.cpp the single genuine drop. 2571 -> 2570 is honest.
  • source-coverage -25 is arithmetic, not loss. 26 files deleted plus one renamed in. Consolidation.
  • Premerge against current main (b250e59d6): 8/8 gates pass -> pass. Nothing goes green to red.
  • src_tu/actors/FlyGuy.cpp -> src/actors/daPropeller_Heyho_c.cpp is recorded as a rename (R090), so attribution lineage survives.

BLOCKING: this PR disproves FlyGuy, then coins two brand-new symbols carrying it

-data_ov070_02123184 kind:data(any) addr:0x02123184 ambiguous
-data_ov070_021231a0 kind:data(any) addr:0x021231a0 ambiguous
+FlyGuy_VT7          kind:data(any) addr:0x02123184 ambiguous
+FlyGuy_VT14         kind:data(any) addr:0x021231a0 ambiguous

These are new coinings, not preserved aliases. They replace neutral, address-derived names that were already correct and already worked, with a class name this very commit demonstrates the cartridge does not carry.

Three things make it worth stopping for, when I would otherwise have merged this today:

  1. They are the first partition_symbols rows that have ever existed. I checked: partition_symbols appears in zero manifests on origin/main. Whatever these are called is the pattern the next twenty partitions get copied from.
  2. The fix is free precisely because they are new here. Nothing outside this PR references either name. Reverting is a pure rename with no downstream reach — unlike the 238-row coined-name backlog, which is expensive exactly because it was never caught at this moment.
  3. The naming scheme is right; only the prefix is falsified. _ZTV19daPropeller_Heyho_c is at 0x02123168; 0x02123184 is +0x1c = word 7, 0x021231a0 is +0x38 = word 14, and the two spans are contiguous (0x1c then 0x44). "VT7"/"VT14" is genuinely descriptive. It is the class token in front of it that the PR itself refutes.

Preferred fix — keep your scheme, fix the token:

daPropeller_Heyho_c_VT7   addr:0x02123184
daPropeller_Heyho_c_VT14  addr:0x021231a0

Also acceptable — revert to the neutral names, which assert nothing:

data_ov070_02123184
data_ov070_021231a0

Either resolution merges. Update the two partition_symbols rows and the evidence/audit blocks that echo them.

Explicitly NOT this PR's debt

FlyGuy_ChangeState, FlyGuy_Spawn and FlyGuy_SpawnInfo (symbols.txt lines 17, 27, 134) are pre-existing and unchanged by this commit. Your manifest note at line 834 already states the honest position — the cartridge proves their addresses and their relationship to this class, not those source spellings — and I am not asking you to churn them here. I am flagging only that after this lands they are the last FlyGuy left, so whoever retires them inherits a smaller job than it looks.

I also deliberately did not block on the converted-backslide-exceptions.jsonl row. It is structurally identical to three Kurumajiku rows already accepted on main from #2004, and blocking on it without first measuring whether the backslide is avoidable would be me applying a standard I have not applied elsewhere.

Non-blocking, for whenever you next touch these lines

  • The exception key src/actors/daPropeller_Heyho_c.cpp#FlyGuy_ChangeState embeds a symbol name. When that alias is eventually retired the key strands silently — the row stops matching and stops protecting anything, with no error.
  • That row's reason is generic ("raw offsets, unknown fields, and mangled imports"). The actual blocker is specific and worth recording: the shadow struct C { char pad[0x3bc]; PMF *pp; } and the pointer-to-member-function type it exists to carry. A future reader can act on that; they cannot act on the generic phrase.
  • src/actors/daPropeller_Heyho_c.cpp:117 and :137 still carry // recovered name: FlyGuy_OnTurnIntoEgg / FlyGuy_OnAimedAtWithEgg. Carried over, not introduced here, but they now name a class this file's own header disproves.

Credit where it is due

The struct-copy lever documented in the manifest — mwccarm's C++ front end scalarizing a plain struct assignment where the C front end emits an ldm/stm block copy, and an array-wrapper view restoring it — is a genuinely new and reusable finding, and you proved it with fdiff before applying it rather than after. The block-scope extern trick for the two members needing a different ApproachAngle signature is the right answer to a real C++ name-hiding constraint. 27/27 matching, objisolate clean, reloc-destinations clean.

Fix the two names and I will merge this.

Alberto12345678999 pushed a commit to Alberto12345678999/sm64ds-decomp that referenced this pull request Aug 31, 2026
tangosdev#2091 added a fail-closed boundary -- validated_vtable_partition_symbols,
manifest_vtable_partition_rows, and audit_tu_object's validated_vtable_policies
parameter, none of which exist on main before it -- that refuses a
manifest-declared symbol carved out of a vtable's public range unless
partition_vtable_rebiases independently validated it against content-bound
baseline ELF metadata.

Six tests describe that boundary. Five of them never execute:

  test_tu_production.py  1 test   module IS in tool-tests.yml   -> runs
  test_objisolate.py     1 test   module NOT in the list        -> never runs
  test_tubuild.py        4 tests  module runs, finds 0 tests    -> never run

test_tubuild.py has bare `def test_` functions and no unittest.TestCase, so
`python -m unittest tools.test_tubuild` prints "Ran 0 tests ... OK" and exits 0.

That matters now rather than eventually. Measured on tangosdev#2091's merge tree, the
boundary licenses nothing at all -- 0 of 97 manifest entries, 0
partition_symbols rows tree-wide -- and tangosdev#2096 introduces the first two rows
that have ever existed (FlyGuy_VT7, FlyGuy_VT14). It goes from unexercised to
load-bearing in one PR, with a decorative safety net.

tools/test_tubuild_vtable_partitions.py -- new, four tests, 4 of 4 run in CI
and none skips. Mock- and dict-driven: no compiler, no ROM, no config/, no
build/. Three of the four are tangosdev#2091's own toolchain-free tests, moved verbatim
out of test_tubuild.py -- bodies unchanged, `def f():` to `def f(self):` plus
one indent level, plain asserts kept -- so the move reviews as a move.

The fourth is new and pins the invariant that is easiest to re-break:
licensing compares sectionIndex, never section NAMES. A linked ELF names a
vtable's output section after its overlay (OV036/OV047/OV070, measured on the
baseline link) while a manifest section is one of .rodata/.init/.ctor/.data/
.bss. Comparing them refuses every real input, which is what made the whole
path unreachable, and 0b0e319 removed exactly that comparison. Mutation-checked
in both directions:

  drop the sectionIndex invariant  -> caught by the new test
  restore the section-NAME compare -> caught by the new test AND by the moved
                                      licensing test

tools/test_tubuild.py -- the three moved tests removed (58 -> 55 functions),
and all sixteen `if not _toolchain(): return` guards converted to
`raise unittest.SkipTest(...)`. A bare return reports PASS having asserted
nothing; `pytest -rs` cannot see it and neither can a reviewer reading a green
log. This does NOT make the module wirable -- it still has no TestCase and a
third of it still compiles with mwccarm -- and the workflow comments that
implied otherwise are corrected.

.github/workflows/tool-tests.yml -- the new module added to the invocation
list (28 -> 29), plus the inventory entry, and every claim in the header that
this change falsified. tools.test_objisolate is deliberately still NOT wired:
it is a single @unittest.skipUnless(_compiler(), ...) class, so on a runner it
contributes 35 tests and 35 skips -- a green that asserts nothing, the exact
shape the header refuses a glob for.

Full CI invocation, run locally on a tree WITH the toolchain:

  Ran 519 tests in 61.934s
  OK (skipped=3)

check_python_names.py PASS. check_dead_references.py: no new dead references,
no broken markdown links.

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

@andrewboudreau andrewboudreau left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correcting my own earlier review. I told you the preferred fix was to rename these to daPropeller_Heyho_c_VT7 / daPropeller_Heyho_c_VT14, and that reverting to the neutral data_ov070_* names was the lesser alternative. That was wrong, and following it would have made this worse rather than better. Please revert to the neutral names.

I found this while reviewing #2104, which coins two symbols the same way. Chasing it there turned up what these addresses actually are.

What FlyGuy_VT7 and FlyGuy_VT14 really name

My earlier objection was that the FlyGuy prefix is falsified by your own PR. That much holds. But the slot half is wrong too — and more seriously, because it is the half that looks checkable.

_ZTV19daPropeller_Heyho_c is at 0x02123168, so +7*4 = 0x02123184 and +14*4 = 0x021231a0. The arithmetic is right. Nothing else about the reading is.

Both words are ordinary function pointers mid-table. From overlay_0070.bin (base 0x0211f000):

slot 6  0x02120210        slot 13 0x0204357c
slot 7  0x02010fd4  <--   slot 14 0x0204349c  <--
slot 8  0x02010fc8        slot 15 0x02043494

Slot 16/17 are 0x0211f000 / 0x0211f048 — your D1/D0. It is one contiguous vtable with no break at 7 or 14.

The vtable's own relocations do not explain the symbols. In config/arm9/overlays/ov070/relocs.txt these addresses appear as relocation sources, not targets:

from:0x02123184 kind:load to:0x02010fd4 module:main
from:0x021231a0 kind:load to:0x0204349c module:main

Many slots in this table relocate to main. Two got symbols. So the cause is external.

The cause is overlay aliasing, and the referent is ov073. Each address occurs as a word exactly once in the cartridge, and the two occurrences are adjacent in an arm9 pointer table:

arm9 0x08cb0c -> 0x02123168
arm9 0x08cb10 -> 0x02123184
arm9 0x08cb14 -> 0x021231a0

Three consecutive entries. ov006, ov070 and ov073 all cover that address window. And config/arm9/overlays/ov073/symbols.txt — already on this branch — names all three:

CccArena_SpawnInfo     addr:0x02123168
CccBigIce_SpawnInfo    addr:0x02123184
CccSmallIce_SpawnInfo  addr:0x021231a0

Three consecutive SpawnInfo objects for three actors of one family, reached from an arm9 spawn table. That is a complete and coherent account of what those arm9 words point at, and it is ov073's, not ov070's.

The clincher is the first entry. 0x02123168 is _ZTV19daPropeller_Heyho_c's own base address, and dsd created no spurious ov070 symbol there — because the vtable symbol already occupied it. The only reason ov070 has symbols at vtable+0x1c and vtable+0x38 is that arm9 table, and that table is ov073's.

So FlyGuy_VT7 and FlyGuy_VT14 are not a good name with a falsified prefix. They are names for CccBigIce_SpawnInfo and CccSmallIce_SpawnInfo, borrowed into the wrong overlay's address space by an alias.

Why my earlier advice was actively harmful

daPropeller_Heyho_c_VT7 would have replaced a false prefix with a true one while leaving the false referent in place — a wrong claim wearing a ROM-proven class name, which is harder to catch later, not easier. I gave that as the preferred option. Please disregard it.

The ask

Revert both rows to data_ov070_02123184 / data_ov070_021231a0, in config/arm9/overlays/ov070/symbols.txt and the two symbols/actor_renames.tsv rows.

The neutral names are still artifacts of the same alias, but they assert nothing, and that is the whole difference. Deleting the two entries outright may be the real answer — that is the anti-pattern-3 shape from #2061 — but I have not proven dsd tolerates their absence, so I am not asking for it here.

I have asked for the same reversion on #2104 (RcCarpet_VT22 / RcCarpet_VT29, ten overlays aliased, referents already named in ov022 and ov029). Same defect, same fix. Settling it here settles it for the stack.

Nothing above touches your byte match, and none of it is a criticism of the TU work in this PR, which I reviewed separately and which holds up. This is one config row pair, and it is the only thing between this and my approval.

@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Reviewer blocker resolved: both coined FlyGuy_VT7 and FlyGuy_VT14 aliases are replaced by the neutral exact config symbols data_ov070_02123184 and data_ov070_021231a0, and the two actor_renames rows were removed. The generic fail-closed ELF string-table growth needed for those longer aliases is isolated in #2126; this PR is now based on it. All three source commits are patch-identical after restacking. Independent integration proof: strict TU 27/27 exact with clean relocation destinations and exact Vector3D dead-strip behavior; full production 11,088/11,088, 3/3 source-data claims, 106/106 modules, exact stock ROM, zero mismatches; control 11,038/11,038 exact with the same nine pre-existing symbol errors; affected-consumer linkcheck 1,069 verified, 16 known baseline warnings, zero blocking; port references 405/405; TU state note current. The four lifecycle credit-loss warnings are the expected attribution-override case.

@andrewboudreau
andrewboudreau force-pushed the tools/objisolate-strtab-growth branch from c2f3dc5 to ab3956d Compare September 1, 2026 03:48
Base automatically changed from tools/objisolate-strtab-growth to main September 1, 2026 03:50

@andrewboudreau andrewboudreau left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rename is right, and I verified it against the cartridge rather than taking the manifest's word for it — every address in your ROM-PROVEN CLASS IDENTITY note checks out byte for byte. One measured blocker remains (the backslide row), plus the mechanical restack now that #2126 has landed.

The class identity is ROM-proven — independently confirmed

I derived ov070's load base from the vtable itself rather than from config: slot 0 of _ZTV at 0x02123168 is 0x021203b4 = InitResources, which puts the base at 0x0211f000. From there:

0x02123160  00 00 00 00  20 31 12 02      <- _ZTV preamble: offset-to-top 0, typeinfo -> 0x02123120
0x02123120  64 a7 09 02                   <- __si_class_type_info vtable
            2c 31 12 02                   <- name  -> 0x0212312c
            c0 81 10 02                   <- base class _ZTI
0x0212312c  "19daPropeller_Heyho_c\0"     <- prefix 19 == len("daPropeller_Heyho_c") == 19

Exact. And the refutation of the old name is total: FlyGuy occurs in zero bytes of arm9_dec.bin or any of the overlays. It was coined.

Two siblings corroborate the family, both exact-length:

  • overlay_0002.bin24daPropeller_Heyho_Fire_c
  • overlay_0006.bin22dMg3DHeyhoObjAdapter_c, which is exactly the class your new src/_ZN22dMg3DHeyhoObjAdapter_cC2Ev.cpp names.

symbols/actor_renames.tsv moves the ten methods and _ZTV in one commit, which is what I ask for on every class rename — a vtable that moves separately from its methods leaves a window where the table names a class that no longer exists. Mangled lengths are all correct (_ZN19daPropeller_Heyho_c...).

Net effect on the refuted-spelling count in ov070/symbols.txt: 11 of 14 retired (ten _ZN6FlyGuy* plus _ZTV6FlyGuy).

Blocker — the backslide-exception row is a marker artifact, not a regression

You added one row:

{"path": "src/actors/daPropeller_Heyho_c.cpp#FlyGuy_ChangeState",
 "reason": "... scored with byte-exact legacy members in the same file; their raw offsets,
            unknown fields, and mangled imports are required by the intact stock-ROM match"}

That reason is an accurate description of the mis-scoring mechanism, but it is describing a bug, not a property of the code. tools/tiers.py:_marked_member_fragment slices a member's source from its own // @symbol marker to the next marker. A member with no marker has no slice of its own, so it gets scored against text that is not its body.

The file has 25 ROM ordinal banners but only 13 @symbol markers. Twelve members are unmarked, and FlyGuy_ChangeState (ordinal 16, line 386) is the first of them — the nearest marker above it is func_ov070_02120070 at line 358, and the next one is not until line 823, so a twelve-member span is in play.

Measured, by inserting a marker under each of the twelve unmarked banners and re-running tiers.score_member on the same file:

FlyGuy_ChangeState        as-is    with 12 markers
  no_raw_offset           False -> True     FLIPS
  no_unk_field            False -> True     FLIPS
  no_mangled_refs         False -> True     FLIPS
  real_name               True     True
  no_codegen_trick        True     True
  shared_header           True     True

all-criteria-pass members in the file:  5/25 -> 6/25

All three failing criteria flip, and nothing else in the file regresses. So the waiver is unnecessary: add the twelve markers and delete the row. This is the same shape as #2062, where adding markers flipped all eight waived flags and the ratchet went up.

The twelve to add (the D0/D1 pair stays unmarked by convention — _lifecycle_member_fragment scores those from the inline destructor, and 25 banners + 2 structors is your 27):

ordinal 16  FlyGuy_ChangeState          ordinal 10  func_ov070_0211f6e0
ordinal 15  func_ov070_0211ffa8         ordinal  9  func_ov070_0211f694
ordinal 14  func_ov070_0211fd98         ordinal  8  func_ov070_0211f62c
ordinal 13  func_ov070_0211fd60         ordinal  7  func_ov070_0211f5f0
ordinal 12  func_ov070_0211fae4         ordinal  5  func_ov070_0211f450
ordinal 11  func_ov070_0211fa80         ordinal  3  func_ov070_0211f100

Accepting the row instead would write a false regression into tracked config that nothing later re-examines.

Restack — #2126 landed, and two files need regenerating not resolving

main is now e1b878601; #2126 is merged, so tools/objisolate.py and tools/test_objisolate.py drop out of your delta entirely. Your 19-character neutral names (data_ov070_02123184, data_ov070_021231a0) now fit — that was the point of it, and it is the right resolution of the FlyGuy_VT7/VT14 ask.

git merge-tree origin/main <head> reports exactly two conflicts:

CONFLICT (content): attribution.json
CONFLICT (content): notes/cpp-tu-current-state.md

Please do not hand-merge either.

  • notes/cpp-tu-current-state.md is generated — its own header says so. Take either side to clear the markers, then python tools/cpp_tu_state.py --write-note and --check-note. Hand-merging splices two stale snapshots: the counts derive from the post-merge tree, not from either parent, so a hand-resolved file is wrong even when both sides look right. Generation refuses unstaged/untracked src/, src_tu/, include/, config/ inputs, so stage first.
  • attribution.json conflicts three-way rather than as a key union. Attribution is a stated non-goal here — taking main's side is fine.

One check I did make sure of: the two-tree diff against the new main looks like this branch reverts the Kaitendai promotion ({src => src_tu}/actors/daObjKm3_Kaitendai_c.cpp). It does not — that is just your merge base predating #2125. The actual merge tree keeps src/actors/daObjKm3_Kaitendai_c.cpp and drops src/func_ov047_021113bc.c, which is correct. No action needed; flagging it so nobody else reads that diff and panics.

Follow-up, not blocking this PR

Three FlyGuy_* spellings survive in ov070/symbols.txtFlyGuy_ChangeState, FlyGuy_Spawn, FlyGuy_SpawnInfo. Your manifest note is correctly hedged about them ("the cartridge proves their addresses and relationship to this class, not those exact source spellings"), and all three are pre-existing on main, so this PR does not make anything worse. But now that FlyGuy is positively refuted rather than merely unattested, they are known-wrong coined names, and the neutral spellings (func_ov070_02120020, func_ov070_02120520, data_ov070_02123144) are the safe landing spot. Separate PR.

Verdict

Approve on content. The rename is the strongest-evidenced one I have reviewed — ROM-attested name, zero-hit refutation of the old one, atomic vtable move, correct mangled lengths. Two things before merge:

  1. Add the twelve @symbol markers and delete the backslide-exception row. Measured above; not negotiable, because the row records a regression that does not exist.
  2. Restack onto e1b878601, regenerating notes/cpp-tu-current-state.md rather than resolving it.

Push those and I will re-read and gate it — full ROM build, since this is a promotion. Everything else here is clear.

@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Restacked onto current main after #2126 merged. The previous private-validator failure was solely the validator's test-merge conflict in attribution.json and notes/cpp-tu-current-state.md; it was not a byte or relocation failure.

Fresh head e24f64c140797e901b9537d713132580f265361e has been revalidated from a clean wired worktree:

  • candidate: 11,088/11,088 functions, 4/4 source-owned data claims, 106/106 modules, zero mismatches
  • exact ROM SHA-256: d1506e90efae5e2d2cf119926a4ac2a291bd5ca78349d09d5024e1a918c478e8
  • control: 11,033/11,033 functions and the same nine pre-existing symbol diagnostics
  • intact-TU gates: PASS; both neutral FlyGuy storage aliases resolve exactly
  • shared-header fanout: 1,068 verified consumers, 16 known baseline warnings, zero blockers
  • attribution: 23 consolidated intact, four expected squash-credit losses, zero changed
  • source coverage: +196 bytes, zero handed back
  • all 97 src_tu units compile; port_refcheck: 405/405

The attribution-override label remains applied. Private validation is running on this refreshed head now.

@andrewboudreau

Copy link
Copy Markdown
Collaborator Author

Addressed the blocking review items in head c77441b6b71d1a947d58117fb549fd645ad59d28:

Fresh proof: exact ROM (d1506e90...), 11,088/11,088 functions, 5/5 source-owned data claims, 106/106 modules, zero mismatches; relocation sweep 1,086 checked / 0 blocking; 98/98 TUs; 405/405 port refs; converted ratchet +10. The attribution override label remains present for the expected 10 squash-credit changes.

@andrewboudreau
andrewboudreau merged commit f556fbf into main Sep 1, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/flyguy-genuine-tu branch September 1, 2026 08:08
andrewboudreau added a commit that referenced this pull request Sep 1, 2026
…o main

converted-baseline.json is a SET ratchet and cpp-tu-current-state.md is a
generated note, so the merge conflict from #2096 landing was resolved by
regenerating both with tools/tiers_ratchet.py --update and
tools/cpp_tu_state.py --write-note rather than by hand-editing either side.
Proved by tools/rombuild.py -j16 on this branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FsXWgEM3Gtbqs6zEdwLMYV
andrewboudreau added a commit that referenced this pull request Sep 1, 2026
…to main

converted-baseline.json is a SET ratchet and cpp-tu-current-state.md is a
generated note, so the merge conflict from #2096 landing was resolved by
regenerating both with tools/tiers_ratchet.py --update and
tools/cpp_tu_state.py --write-note rather than by hand-editing either side.
Proved by tools/rombuild.py -j16 on this branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FsXWgEM3Gtbqs6zEdwLMYV
andrewboudreau added a commit that referenced this pull request Sep 1, 2026
…tacking onto main

converted-baseline.json is a SET ratchet and cpp-tu-current-state.md is a
generated note, so the merge conflict from #2096 landing was resolved by
regenerating both with tools/tiers_ratchet.py --update and
tools/cpp_tu_state.py --write-note rather than by hand-editing either side.
Proved by tools/rombuild.py -j16 on this branch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FsXWgEM3Gtbqs6zEdwLMYV
andrewboudreau added a commit that referenced this pull request Sep 1, 2026
…obj_c0_switch.cpp (#2134)

* Rename class SwitchPillar to its cartridge RTTI name daObjC0_Switch_c

tools/rom_class_names.py reports ov012 0x02112344 NAKED SwitchPillar ->
daObjC0_Switch_c: the ROM's own _ZTS/_ZTI records beside this vtable spell
daObjC0_Switch_c, and the decomp carried a coined name. Applied with
tools/class_rename.py --with-derived, which rewrites mangled tokens
length-first and verifies idempotence.

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

* Promote ov012/daObjC0_Switch_c to a genuine TU as src/actors/d_a_obj_c0_switch.cpp

Eight one-function sources collapse into one real translation unit, enrolled
as a single `complete` delinks span 0x021111a0-0x02111450.

This is the first promotion that goes through the rename first, and that
ordering is the point. The class was called `SwitchPillar`, a coined name.
tools/tubuild.py apply_compiler_only_policy is explicit that a coined class
reaches no symbol home -- an _ZTI/_ZTS record is a length-prefixed mangled
string, so a coined spelling misses on both the prefix and the body, the miss
reads as "the ROM has no such record", and the record is dropped unverified.
A key-function TU therefore cannot be promoted while the class is coined.

The cartridge's own spelling was read out of the ROM, not guessed:
_ZTS16daObjC0_Switch_c at ov012:0x0211230c is the byte string
"16daObjC0_Switch_c", and _ZTI16daObjC0_Switch_c at 0x02112300 reads
[0x0209a764, 0x0211230c, 0x021089ec] -- __si_class_type_info's vtable+8, that
typeinfo name, and _ZTI10dBgActor_c, which is the cartridge stating the direct
base as well. The preceding commit applied that rename with
tools/class_rename.py. With the ROM name in place the eleven vague-linkage
records this TU emits resolve as `deadstrip-data` and romdata_check compares
them word by word.

The destructor moved INLINE into include/daObjC0_Switch_c.h. Written
out-of-line, mwcc emits D0 before D1 -- the reverse of the ROM's order, which
objisolate refuses -- plus a third D2 base-object body with no ROM home.
Inline, the retail D1/D0 pair comes out in cartridge order with no D2, while
InitResources, the first out-of-line virtual, keeps this TU as the class's
key-function TU so it still owns the complete _ZTV/_ZTI/_ZTS group.

Proof: tools/rombuild.py -j16 -> 106/106 exact, 100.000000%, mismatching 0,
source-owned data claims 4/4 reproducing. tiers_ratchet 2570 -> 2570 (+0/-0):
no backslide, unlike the Tree promotion, because the inline destructor keeps
both destructor members as real C++ instead of mangled shims. eligible,
port_refcheck, check_dead_references and layout_check all clean.

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

* Regenerate the ledger for cpp/c0switch-rtti-rename-snake-tu after restacking onto main

converted-baseline.json is a SET ratchet and cpp-tu-current-state.md is a
generated note, so the merge conflict from #2096 landing was resolved by
regenerating both with tools/tiers_ratchet.py --update and
tools/cpp_tu_state.py --write-note rather than by hand-editing either side.
Proved by tools/rombuild.py -j16 on this branch.

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

* Correct the manifest claims an agent review showed were stale

An agent review of this promotion re-read the cartridge bytes and confirmed
the RTTI claims, all 11 compiler_only_output addresses and the exact `complete`
span, but found the entry's own verification block still describing the
pre-promotion state and, in one case, asserting the opposite of what this
change proves:

- functions_occur_in_expected_order read "PARTIAL -- ordinal pair(s) not in ROM
  order: [(0, 1)]". Ordinals 0 and 1 are D1 and D0, and putting them in the
  cartridge's order is the whole point of defining the destructor inline in the
  class header -- written out-of-line mwcc emits D0 before D1 and objisolate
  refuses the TU outright. The criterion is now PASS and says why.
- declared_function_set_equals_defined_function_set pointed at an
  `unlicensed_output_observed` key that does not exist in this JSON, with a
  count (12) that no longer matched the 11 compiler_only_output rows. It now
  cites compiler_only_output and the licensed span.
- verification.round and .object still named a src_tu/ shadow object that no
  longer exists; they now name the production build that proves this entry.
- partial_isolation records a superseded round: it describes a consolidation
  whose linker contribution stayed per-function with delinks.txt untouched,
  which stopped being true when this entry was enrolled as one `complete` span.
  Marked superseded rather than deleted, since its byte evidence still holds.

Also two inaccuracies in the file's header comment: a legacy source listed as
`.c` that was always `.cpp`, and "__si_class_type_info's vtable+8" -- 0x0209a764
is where config/arm9/symbols.txt puts _ZTVN3abi20__si_class_type_infoE itself.

Prose and manifest metadata only; no code changed. Re-proved with
tools/rombuild.py -j16: 106/106 exact, 100.000000%, mismatching 0.

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

* Regenerate the ledger for cpp/c0switch-rtti-rename-snake-tu on top of cpp/ov002-tree-snake-tu

config/converted-baseline.json is a SET ratchet and notes/cpp-tu-current-state.md
is a generated note, so both are regenerated with tools/tiers_ratchet.py --update
and tools/cpp_tu_state.py --write-note rather than hand-merged. Regenerating them
in the same pass as the merge -- rather than in a second pass afterwards, which is
what left every child diverged from its parent -- is what keeps the stack
trivially mergeable. Proved by tools/rombuild.py -j16 on this branch.

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

* Restore the eight pre-rename tree.cpp attribution keys

The merge of cpp/ov002-tree-snake-tu resolved attribution.json by dropping
the pre-rename src/actors/tree.cpp#_ZN4Tree* keys in favour of their
post-rename src/actors/d_a_tree.cpp#_ZN8daTree_c* counterparts. That was
wrong: overrides is a historical credit ledger and legitimately retains
path#symbol keys whose file is long gone -- it already carries hundreds of
src/_ZN*.c per-function paths from earlier consolidations. Resolve by union,
as the ledger's own contents require.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

attribution-override Maintainer accepts this PR's contributor-credit changes; validation reports them as warnings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant