Skip to content

Declare dScMgBase_c slot 30 (OnAimedAtWithEggReturnVec) across the minigame family - #2102

Merged
andrewboudreau merged 1 commit into
mainfrom
cpp/minigame-slot30
Sep 1, 2026
Merged

Declare dScMgBase_c slot 30 (OnAimedAtWithEggReturnVec) across the minigame family#2102
andrewboudreau merged 1 commit into
mainfrom
cpp/minigame-slot30

Conversation

@andrewboudreau

@andrewboudreau andrewboudreau commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Slot 30 of the 18-35 keystone range. Six vtables gain their thirtieth word;
two of them need a declaration, four inherit dScMgD3DBase_c's. As at slot 29
there is no occupied-slot trap: nothing in the family had declared this member
early, so nothing has to be un-declared alongside it.

romdata_check vs slot 29: verifiedBytes 35408 -> 35412 (+4)
partialBytes 11500 -> 11624 (+124)
128 bytes = 32 tables x one word. _ZTV14dScMgD3DBase_c is the one table
already VERIFIED, so its word lands in the verified pool and the other
thirty-one land in the partial one. Every count -- differs 6, partial 253,
verified 465, symbols 1246, totalRecords 7560 -- is unchanged.

rombuild -j16 --no-rom: 11,088/11,088 reproducing, 106/106 exact,
100.000000% of compared bytes, ROM-build analysis PASS.

THE SLOT THAT SETTLES SLOT 29

0x020aeed8 is the word-for-word mirror of 0x020af094. Slot 29 saves POWCNT1's
screen-swap bit and both BG-enable bytes into the object, blanks both DISPCNTs,
spools 0x400 bytes of BG palette into a buffer at +0x4228 and 0x2000 bytes of
sub-screen OBJ VRAM into +0x2228, then draws the menu over the top. This one
restores every one of those. dScMgBase_c::OnKicked picks between them on an
edge -- it compares mMenuOpen (+0x4628) against unk_462c, does nothing when
they agree, calls slot 30 when mMenuOpen has fallen to zero and slot 29 when it
has risen, then latches mMenuOpen into unk_462c. Slot 29 is the three-item
overlay menu going up; slot 30 is it coming back down.

BOTH HALVES OF THE NAME ARE REFUTED, AND THE NAME IS KEPT ANYWAY

Nothing in the cartridge carries a method name for this class -- its RTTI
carries class names only. Every name in the 18-35 range is transplanted from
include/dActor_c.h at the same index, and the recovered name: comments in the
bodies are that same transplant reached a second time, not an independent
witness. Here the ROM contradicts it outright:

  • AimedAtWithEgg -- see above. It is a screen restore.
  • ReturnVec -- include/dActor_c.h:151 declares slot 30 returning a Vector3
    by value, and in THAT hierarchy that is a real measurement of 0x020100dc.
    In this one it cannot hold. A 12-byte return goes back in memory under
    AAPCS: r0 would carry a hidden result pointer and this would move to r1.
    At the dispatch, ov004:0x020ae168, r0 still holds this and r1 holds the
    loaded function pointer -- and the callee's own first instruction is
    ldr r1,[r0], reading its vptr out of r0.

Over in dActor_c, slots 29 and 30 are a lock-on radius and the aim point
derived from it. Here they are a screen save and the restore that undoes it.
Same two indices, same shared ancestor, nothing else in common. The names stay
because coining replacements would put unverifiable identifiers on byte-exact
symbols -- but they are labels, not claims, and the evidence block in
include/dScMgBase_c.h now says so at the point of use.

ALSO IN THIS CHANGE

  • Eighth recovered name: correction, seventh on dScMgD3DBase_c:
    ov006:0x020e6cac was labelled dScMgTrampoline2_c's and included that
    header. Five vtables reference it, so it is dScMgD3DBase_c's; the include
    and the cast move with the name. Like 29's it is a real body, not a veneer.
  • The 27-method shadow scaffold in the base is retired. Its only use was
    o->f68(), index 26, which is dScMgBase_c::OnHitByCannonBlastedChar now.
  • The base takes void* rather than char*, agreeing with the declaration in
    decl_common.h that both overrides reach it through -- the char* form was an
    illegal overload under C linkage, already logged in the enrollment report.
  • Return type is unpinned for the third consecutive slot, and that is
    measured rather than assumed: OnKicked is the only caller of slot 30 in
    ov004 or ov006, and the instruction after its blx, on both arms of the
    branch, is add r0,r4,#0x4000.
  • Prose re-counted in dScMgBase_c.h, dScMgD3DBase_c.h, dScMgSingle3DBase_c.h
    and dScMgAmida_c.h (Unk36 now lands on 31), plus the two notes files.

Gates: check_dead_references clean, port_refcheck 405/405, check_header_offsets
--changed origin/main 7 headers 0 mismatched, langmode ratchet PASS.

Five slots left: 31-35.

…nigame family

Slot 30 of the 18-35 keystone range. Six vtables gain their thirtieth word;
two of them need a declaration, four inherit dScMgD3DBase_c's. As at slot 29
there is no occupied-slot trap: nothing in the family had declared this member
early, so nothing has to be un-declared alongside it.

  romdata_check vs slot 29:  verifiedBytes 35408 -> 35412  (+4)
                             partialBytes  11500 -> 11624  (+124)
  128 bytes = 32 tables x one word. _ZTV14dScMgD3DBase_c is the one table
  already VERIFIED, so its word lands in the verified pool and the other
  thirty-one land in the partial one. Every count -- differs 6, partial 253,
  verified 465, symbols 1246, totalRecords 7560 -- is unchanged.

  rombuild -j16 --no-rom: 11,088/11,088 reproducing, 106/106 exact,
  100.000000% of compared bytes, ROM-build analysis PASS.

THE SLOT THAT SETTLES SLOT 29

0x020aeed8 is the word-for-word mirror of 0x020af094. Slot 29 saves POWCNT1's
screen-swap bit and both BG-enable bytes into the object, blanks both DISPCNTs,
spools 0x400 bytes of BG palette into a buffer at +0x4228 and 0x2000 bytes of
sub-screen OBJ VRAM into +0x2228, then draws the menu over the top. This one
restores every one of those. dScMgBase_c::OnKicked picks between them on an
edge -- it compares mMenuOpen (+0x4628) against unk_462c, does nothing when
they agree, calls slot 30 when mMenuOpen has fallen to zero and slot 29 when it
has risen, then latches mMenuOpen into unk_462c. Slot 29 is the three-item
overlay menu going up; slot 30 is it coming back down.

BOTH HALVES OF THE NAME ARE REFUTED, AND THE NAME IS KEPT ANYWAY

Nothing in the cartridge carries a method name for this class -- its RTTI
carries class names only. Every name in the 18-35 range is transplanted from
include/dActor_c.h at the same index, and the `recovered name:` comments in the
bodies are that same transplant reached a second time, not an independent
witness. Here the ROM contradicts it outright:

  * `AimedAtWithEgg` -- see above. It is a screen restore.
  * `ReturnVec` -- include/dActor_c.h:151 declares slot 30 returning a Vector3
    by value, and in THAT hierarchy that is a real measurement of 0x020100dc.
    In this one it cannot hold. A 12-byte return goes back in memory under
    AAPCS: r0 would carry a hidden result pointer and `this` would move to r1.
    At the dispatch, ov004:0x020ae168, r0 still holds `this` and r1 holds the
    loaded function pointer -- and the callee's own first instruction is
    `ldr r1,[r0]`, reading its vptr out of r0.

Over in dActor_c, slots 29 and 30 are a lock-on radius and the aim point
derived from it. Here they are a screen save and the restore that undoes it.
Same two indices, same shared ancestor, nothing else in common. The names stay
because coining replacements would put unverifiable identifiers on byte-exact
symbols -- but they are labels, not claims, and the evidence block in
include/dScMgBase_c.h now says so at the point of use.

ALSO IN THIS CHANGE

  * Eighth `recovered name:` correction, seventh on dScMgD3DBase_c:
    ov006:0x020e6cac was labelled dScMgTrampoline2_c's and included that
    header. Five vtables reference it, so it is dScMgD3DBase_c's; the include
    and the cast move with the name. Like 29's it is a real body, not a veneer.
  * The 27-method shadow scaffold in the base is retired. Its only use was
    `o->f68()`, index 26, which is dScMgBase_c::OnHitByCannonBlastedChar now.
  * The base takes void* rather than char*, agreeing with the declaration in
    decl_common.h that both overrides reach it through -- the char* form was an
    illegal overload under C linkage, already logged in the enrollment report.
  * Return type is unpinned for the third consecutive slot, and that is
    measured rather than assumed: OnKicked is the only caller of slot 30 in
    ov004 or ov006, and the instruction after its `blx`, on both arms of the
    branch, is `add r0,r4,#0x4000`.
  * Prose re-counted in dScMgBase_c.h, dScMgD3DBase_c.h, dScMgSingle3DBase_c.h
    and dScMgAmida_c.h (Unk36 now lands on 31), plus the two notes files.

Gates: check_dead_references clean, port_refcheck 405/405, check_header_offsets
--changed origin/main 7 headers 0 mismatched, langmode ratchet PASS.

Five slots left: 31-35.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QhhAeJwXBnfPp7B5DNjCwh
@andrewboudreau andrewboudreau added the attribution-override Maintainer accepts this PR's contributor-credit changes; validation reports them as warnings label Aug 31, 2026
@tangos-validator

tangos-validator Bot commented Aug 31, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

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

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,781 / 11,347 (95.01%, +0)
Byte-verified code bytes 2,004,460 / 2,211,124 (90.65%, +0)
Claimed, not byte-verified 436 functions, 101,220 bytes (+0)
Perfect source moves 0 R100
Enrolled ranges (delinks complete) 11,059 functions, 2,053,148 bytes (92.86%, +0) -- differs from byte-verified by +278
Contributor credit 0 added, 3 changed, 0 lost
Relocation check 1345 checked; 5 BLIND, 1340 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 465 symbol(s) exact, 253 partial, 6 differ

Contributor credit moved (3)

Function Source Before After
ov004:0x020aeed8 src/func_ov004_020aeed8.cpp -> src/_ZN11dScMgBase_c25OnAimedAtWithEggReturnVecEv.cpp tangosdev andrewboudreau
ov006:0x020e6cac src/func_ov006_020e6cac.c -> src/_ZN14dScMgD3DBase_c25OnAimedAtWithEggReturnVecEv.c tangosdev andrewboudreau
ov006:0x0210aa10 src/func_ov006_0210aa10.c -> src/_ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv.c ruspecial andrewboudreau

Byte-verified means the range carries complete in a delinks.txt, so the ROM build compiled it and compared it to the cartridge. The 436 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 (3 changed, 0 lost -- src/_ZN11dScMgBase_c25OnAimedAtWithEggReturnVecEv.cpp: tangosdev -> andrewboudreau; src/_ZN14dScMgD3DBase_c25OnAimedAtWithEggReturnVecEv.c: tangosdev -> andrewboudreau; src/_ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv.c: ruspecial -> andrewboudreau); 5 linkcheck result(s) have unresolved relocations.

Per-file link-check detail

All 1192 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_c6RenderEv.cpp _ZN10dScMgCup_c6RenderEv ✅ verified 1
src/_ZN10dScMgCup_c8BehaviorEv.cpp _ZN10dScMgCup_c8BehaviorEv ✅ verified 1
src/_ZN10dScMgCup_cD0Ev.cpp _ZN10dScMgCup_cD0Ev ✅ verified 1
src/_ZN10dScMgCup_cD1Ev.cpp _ZN10dScMgCup_cD1Ev ✅ 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_c15graphCallback_c14GraphCallback0Ev.cpp _ZN11dScMgBase_c15graphCallback_c14GraphCallback0Ev ✅ verified 1
src/_ZN11dScMgBase_c15graphCallback_c14GraphCallback1Ev.cpp _ZN11dScMgBase_c15graphCallback_c14GraphCallback1Ev ✅ verified 1
src/_ZN11dScMgBase_c15graphCallback_c14GraphCallback2Ev.cpp _ZN11dScMgBase_c15graphCallback_c14GraphCallback2Ev ✅ verified 1
src/_ZN11dScMgBase_c15graphCallback_c14GraphCallback3Ev.cpp _ZN11dScMgBase_c15graphCallback_c14GraphCallback3Ev ✅ 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_c8OnPushedEv.cpp _ZN11dScMgBase_c8OnPushedEv ✅ verified 1
src/_ZN11dScMgBase_cC2Ev.cpp _ZN11dScMgBase_cC2Ev ✅ verified 1
src/_ZN11dScMgBase_cD0Ev.cpp _ZN11dScMgBase_cD0Ev ✅ verified 1
src/_ZN11dScMgBase_cD1Ev.cpp _ZN11dScMgBase_cD1Ev ✅ verified 1
src/_ZN11dScMgBase_cD2Ev.cpp _ZN11dScMgBase_cD2Ev ✅ verified 1
src/_ZN11dScMgCoin_c13InitResourcesEv.cpp _ZN11dScMgCoin_c13InitResourcesEv ✅ verified 1
src/_ZN11dScMgCoin_c13OnYoshiTryEatEi.cpp _ZN11dScMgCoin_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN11dScMgCoin_c6RenderEv.cpp _ZN11dScMgCoin_c6RenderEv ✅ verified 1
src/_ZN11dScMgCoin_c8BehaviorEv.cpp _ZN11dScMgCoin_c8BehaviorEv ✅ verified 1
src/_ZN11dScMgCoin_cD0Ev.cpp _ZN11dScMgCoin_cD0Ev ✅ verified 1
src/_ZN11dScMgCoin_cD1Ev.cpp _ZN11dScMgCoin_cD1Ev ✅ 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/_ZN11dScMgJump_c8BehaviorEv.cpp _ZN11dScMgJump_c8BehaviorEv ✅ verified 1
src/_ZN11dScMgJump_cD0Ev.cpp _ZN11dScMgJump_cD0Ev ✅ verified 1
src/_ZN11dScMgJump_cD1Ev.cpp _ZN11dScMgJump_cD1Ev ✅ 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_c16CleanupResourcesEv.cpp _ZN12dScMg3DEsp_c16CleanupResourcesEv ✅ verified 1
src/_ZN12dScMg3DEsp_c6RenderEv.cpp _ZN12dScMg3DEsp_c6RenderEv ✅ verified 1
src/_ZN12dScMg3DEsp_c8BehaviorEv.cpp _ZN12dScMg3DEsp_c8BehaviorEv ✅ verified 1
src/_ZN12dScMg3DEsp_cD0Ev.cpp _ZN12dScMg3DEsp_cD0Ev ✅ verified 1
src/_ZN12dScMg3DEsp_cD1Ev.cpp _ZN12dScMg3DEsp_cD1Ev ✅ verified 1
src/_ZN12dScMgAmida_c13InitResourcesEv.cpp _ZN12dScMgAmida_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgAmida_c13OnYoshiTryEatEi.c _ZN12dScMgAmida_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgAmida_c21AfterCleanupResourcesEj.cpp _ZN12dScMgAmida_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN12dScMgAmida_c5Unk36Ev.cpp _ZN12dScMgAmida_c5Unk36Ev ✅ verified 1
src/_ZN12dScMgAmida_c6RenderEv.cpp _ZN12dScMgAmida_c6RenderEv ✅ verified 1
src/_ZN12dScMgAmida_c8BehaviorEv.cpp _ZN12dScMgAmida_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgAmida_cD0Ev.cpp _ZN12dScMgAmida_cD0Ev ✅ verified 1
src/_ZN12dScMgAmida_cD1Ev.cpp _ZN12dScMgAmida_cD1Ev ✅ verified 1
src/_ZN12dScMgJump2_c13InitResourcesEv.cpp _ZN12dScMgJump2_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgJump2_c13OnTurnIntoEggEi.c _ZN12dScMgJump2_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN12dScMgJump2_c13OnYoshiTryEatEi.c _ZN12dScMgJump2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgJump2_c16CleanupResourcesEv.cpp _ZN12dScMgJump2_c16CleanupResourcesEv ✅ verified 1
src/_ZN12dScMgJump2_c6RenderEv.cpp _ZN12dScMgJump2_c6RenderEv ✅ verified 1
src/_ZN12dScMgJump2_c8BehaviorEv.cpp _ZN12dScMgJump2_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgJump2_cD0Ev.cpp _ZN12dScMgJump2_cD0Ev ✅ verified 1
src/_ZN12dScMgJump2_cD1Ev.cpp _ZN12dScMgJump2_cD1Ev ✅ verified 1
src/_ZN12dScMgLuigi_c13InitResourcesEv.cpp _ZN12dScMgLuigi_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgLuigi_c13OnYoshiTryEatEi.c _ZN12dScMgLuigi_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgLuigi_c21AfterCleanupResourcesEj.cpp _ZN12dScMgLuigi_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN12dScMgLuigi_c6RenderEv.cpp _ZN12dScMgLuigi_c6RenderEv ✅ verified 1
src/_ZN12dScMgLuigi_c8BehaviorEv.cpp _ZN12dScMgLuigi_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgLuigi_cD0Ev.cpp _ZN12dScMgLuigi_cD0Ev ✅ verified 1
src/_ZN12dScMgLuigi_cD1Ev.cpp _ZN12dScMgLuigi_cD1Ev ✅ verified 1
src/_ZN12dScMgPanel_c13InitResourcesEv.cpp _ZN12dScMgPanel_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgPanel_c13OnYoshiTryEatEi.c _ZN12dScMgPanel_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgPanel_c6RenderEv.cpp _ZN12dScMgPanel_c6RenderEv ✅ verified 1
src/_ZN12dScMgPanel_c8BehaviorEv.cpp _ZN12dScMgPanel_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgPanel_cD0Ev.cpp _ZN12dScMgPanel_cD0Ev ✅ verified 1
src/_ZN12dScMgPanel_cD1Ev.cpp _ZN12dScMgPanel_cD1Ev ✅ verified 1
src/_ZN12dScMgSlot1_c13InitResourcesEv.cpp _ZN12dScMgSlot1_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSlot1_c13OnYoshiTryEatEi.c _ZN12dScMgSlot1_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgSlot1_c15OnHitByMegaCharEv.cpp _ZN12dScMgSlot1_c15OnHitByMegaCharEv ✅ verified 1
src/_ZN12dScMgSlot1_c19OnHitFromUnderneathEv.cpp _ZN12dScMgSlot1_c19OnHitFromUnderneathEv ✅ verified 1
src/_ZN12dScMgSlot1_c6RenderEv.cpp _ZN12dScMgSlot1_c6RenderEv ✅ verified 1
src/_ZN12dScMgSlot1_c9betIcon_c6RenderEv.cpp _ZN12dScMgSlot1_c9betIcon_c6RenderEv ✅ verified 1
src/_ZN12dScMgSlot1_c9betIcon_c8BehaviorEv.cpp _ZN12dScMgSlot1_c9betIcon_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgSlot1_cD0Ev.cpp _ZN12dScMgSlot1_cD0Ev ✅ verified 1
src/_ZN12dScMgSlot1_cD1Ev.cpp _ZN12dScMgSlot1_cD1Ev ✅ verified 1
src/_ZN12dScMgSlot3_c13InitResourcesEv.cpp _ZN12dScMgSlot3_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSlot3_c13OnYoshiTryEatEi.c _ZN12dScMgSlot3_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN12dScMgSlot3_c16OnAimedAtWithEggEv.c _ZN12dScMgSlot3_c16OnAimedAtWithEggEv ✅ verified 1
src/_ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv.c _ZN12dScMgSlot3_c25OnAimedAtWithEggReturnVecEv ✅ verified 1
src/_ZN12dScMgSlot3_c6RenderEv.cpp _ZN12dScMgSlot3_c6RenderEv ✅ verified 1
src/_ZN12dScMgSlot3_c8BehaviorEv.cpp _ZN12dScMgSlot3_c8BehaviorEv ✅ verified 1
src/_ZN12dScMgSlot3_cD0Ev.cpp _ZN12dScMgSlot3_cD0Ev ✅ verified 1
src/_ZN12dScMgSlot3_cD1Ev.cpp _ZN12dScMgSlot3_cD1Ev ✅ verified 1
src/_ZN12dScMgSound_c13InitResourcesEv.cpp _ZN12dScMgSound_c13InitResourcesEv ✅ verified 1
src/_ZN12dScMgSound_c13OnYoshiTryEatEi.c _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/_ZN12dScMgSound_cD0Ev.cpp _ZN12dScMgSound_cD0Ev ✅ verified 1
src/_ZN12dScMgSound_cD1Ev.cpp _ZN12dScMgSound_cD1Ev ✅ 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.c _ZN13dScMgFlower_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN13dScMgFlower_c6RenderEv.cpp _ZN13dScMgFlower_c6RenderEv ✅ verified 1
src/_ZN13dScMgFlower_c8BehaviorEv.cpp _ZN13dScMgFlower_c8BehaviorEv ✅ verified 1
src/_ZN13dScMgFlower_cD0Ev.cpp _ZN13dScMgFlower_cD0Ev ✅ verified 1
src/_ZN13dScMgFlower_cD1Ev.cpp _ZN13dScMgFlower_cD1Ev ✅ verified 1
src/_ZN13dScMgMemory_c13InitResourcesEv.cpp _ZN13dScMgMemory_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgMemory_c13OnTurnIntoEggEi.c _ZN13dScMgMemory_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN13dScMgMemory_c13OnYoshiTryEatEi.c _ZN13dScMgMemory_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN13dScMgMemory_c15OnGroundPoundedEv.c _ZN13dScMgMemory_c15OnGroundPoundedEv ✅ verified 1
src/_ZN13dScMgMemory_c6RenderEv.cpp _ZN13dScMgMemory_c6RenderEv ✅ verified 1
src/_ZN13dScMgMemory_c8BehaviorEv.cpp _ZN13dScMgMemory_c8BehaviorEv ✅ verified 1
src/_ZN13dScMgMemory_cD0Ev.cpp _ZN13dScMgMemory_cD0Ev ✅ verified 1
src/_ZN13dScMgMemory_cD1Ev.cpp _ZN13dScMgMemory_cD1Ev ✅ verified 1
src/_ZN13dScMgTeresa_c13InitResourcesEv.cpp _ZN13dScMgTeresa_c13InitResourcesEv ✅ verified 1
src/_ZN13dScMgTeresa_c6RenderEv.cpp _ZN13dScMgTeresa_c6RenderEv ✅ verified 1
src/_ZN13dScMgTeresa_c8BehaviorEv.cpp _ZN13dScMgTeresa_c8BehaviorEv ✅ verified 1
src/_ZN13dScMgTeresa_cD0Ev.cpp _ZN13dScMgTeresa_cD0Ev ✅ verified 1
src/_ZN13dScMgTeresa_cD1Ev.cpp _ZN13dScMgTeresa_cD1Ev ✅ 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.c _ZN14dScMgBomroom_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN14dScMgBomroom_c6RenderEv.cpp _ZN14dScMgBomroom_c6RenderEv ✅ verified 1
src/_ZN14dScMgBomroom_c8BehaviorEv.cpp _ZN14dScMgBomroom_c8BehaviorEv ✅ verified 1
src/_ZN14dScMgBomroom_cD0Ev.cpp _ZN14dScMgBomroom_cD0Ev ✅ verified 1
src/_ZN14dScMgBomroom_cD1Ev.cpp _ZN14dScMgBomroom_cD1Ev ✅ verified 1
src/_ZN14dScMgCurling_c13InitResourcesEv.cpp _ZN14dScMgCurling_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgCurling_c13OnYoshiTryEatEi.cpp _ZN14dScMgCurling_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN14dScMgCurling_c6RenderEv.cpp _ZN14dScMgCurling_c6RenderEv ✅ verified 1
src/_ZN14dScMgCurling_c8BehaviorEv.cpp _ZN14dScMgCurling_c8BehaviorEv ✅ verified 1
src/_ZN14dScMgCurling_cD0Ev.cpp _ZN14dScMgCurling_cD0Ev ✅ verified 1
src/_ZN14dScMgCurling_cD1Ev.cpp _ZN14dScMgCurling_cD1Ev ✅ verified 1
src/_ZN14dScMgD3DBase_c11AfterRenderEj.cpp _ZN14dScMgD3DBase_c11AfterRenderEj ✅ verified 1
src/_ZN14dScMgD3DBase_c12BeforeRenderEv.cpp _ZN14dScMgD3DBase_c12BeforeRenderEv ✅ verified 1
src/_ZN14dScMgD3DBase_c14BeforeBehaviorEv.cpp _ZN14dScMgD3DBase_c14BeforeBehaviorEv ✅ verified 1
src/_ZN14dScMgD3DBase_c16OnAimedAtWithEggEv.cpp _ZN14dScMgD3DBase_c16OnAimedAtWithEggEv ✅ 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_c25OnAimedAtWithEggReturnVecEv.c _ZN14dScMgD3DBase_c25OnAimedAtWithEggReturnVecEv ✅ verified 1
src/_ZN14dScMgD3DBase_c8OnPushedEv.c _ZN14dScMgD3DBase_c8OnPushedEv ✅ verified 1
src/_ZN14dScMgD3DBase_cD0Ev.cpp _ZN14dScMgD3DBase_cD0Ev ✅ verified 1
src/_ZN14dScMgD3DBase_cD1Ev.cpp _ZN14dScMgD3DBase_cD1Ev ✅ verified 1
src/_ZN14dScMgMemory2_c13InitResourcesEv.cpp _ZN14dScMgMemory2_c13InitResourcesEv ✅ verified 1
src/_ZN14dScMgMemory2_c13OnTurnIntoEggEi.c _ZN14dScMgMemory2_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN14dScMgMemory2_c13OnYoshiTryEatEi.c _ZN14dScMgMemory2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN14dScMgMemory2_c15OnGroundPoundedEv.c _ZN14dScMgMemory2_c15OnGroundPoundedEv ✅ verified 1
src/_ZN14dScMgMemory2_c6RenderEv.cpp _ZN14dScMgMemory2_c6RenderEv ✅ verified 1
src/_ZN14dScMgMemory2_c8BehaviorEv.cpp _ZN14dScMgMemory2_c8BehaviorEv ✅ verified 1
src/_ZN14dScMgMemory2_cD0Ev.cpp _ZN14dScMgMemory2_cD0Ev ✅ verified 1
src/_ZN14dScMgMemory2_cD1Ev.cpp _ZN14dScMgMemory2_cD1Ev ✅ 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/_ZN15dScMgCurling2_c13OnYoshiTryEatEi.cpp _ZN15dScMgCurling2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgCurling2_c6RenderEv.cpp _ZN15dScMgCurling2_c6RenderEv ✅ verified 1
src/_ZN15dScMgCurling2_c8BehaviorEv.cpp _ZN15dScMgCurling2_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgCurling2_cD0Ev.cpp _ZN15dScMgCurling2_cD0Ev ✅ verified 1
src/_ZN15dScMgCurling2_cD1Ev.cpp _ZN15dScMgCurling2_cD1Ev ✅ verified 1
src/_ZN15dScMgHanachan_c13InitResourcesEv.cpp _ZN15dScMgHanachan_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgHanachan_c13OnYoshiTryEatEi.c _ZN15dScMgHanachan_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgHanachan_c16CleanupResourcesEv.cpp _ZN15dScMgHanachan_c16CleanupResourcesEv ✅ verified 1
src/_ZN15dScMgHanachan_c6RenderEv.cpp _ZN15dScMgHanachan_c6RenderEv ✅ verified 1
src/_ZN15dScMgHanachan_c8BehaviorEv.cpp _ZN15dScMgHanachan_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgHanachan_cD0Ev.cpp _ZN15dScMgHanachan_cD0Ev ✅ verified 1
src/_ZN15dScMgHanachan_cD1Ev.cpp _ZN15dScMgHanachan_cD1Ev ✅ verified 1
src/_ZN15dScMgPachinko_c13InitResourcesEv.cpp _ZN15dScMgPachinko_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgPachinko_c13OnYoshiTryEatEi.c _ZN15dScMgPachinko_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgPachinko_c6RenderEv.cpp _ZN15dScMgPachinko_c6RenderEv ✅ verified 1
src/_ZN15dScMgPachinko_c8BehaviorEv.cpp _ZN15dScMgPachinko_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgPachinko_cD0Ev.cpp _ZN15dScMgPachinko_cD0Ev ✅ verified 1
src/_ZN15dScMgPachinko_cD1Ev.cpp _ZN15dScMgPachinko_cD1Ev ✅ verified 1
src/_ZN15dScMgRoulette_c13InitResourcesEv.cpp _ZN15dScMgRoulette_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgRoulette_c13OnTurnIntoEggEi.c _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/_ZN15dScMgRoulette_c8BehaviorEv.cpp _ZN15dScMgRoulette_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgRoulette_cD0Ev.cpp _ZN15dScMgRoulette_cD0Ev ✅ verified 1
src/_ZN15dScMgRoulette_cD1Ev.cpp _ZN15dScMgRoulette_cD1Ev ✅ verified 1
src/_ZN15dScMgSnowball_c11OnAttacked2Ev.c _ZN15dScMgSnowball_c11OnAttacked2Ev ✅ verified 1
src/_ZN15dScMgSnowball_c13InitResourcesEv.cpp _ZN15dScMgSnowball_c13InitResourcesEv ✅ verified 1
src/_ZN15dScMgSnowball_c13OnYoshiTryEatEi.c _ZN15dScMgSnowball_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN15dScMgSnowball_c16CleanupResourcesEv.cpp _ZN15dScMgSnowball_c16CleanupResourcesEv ✅ verified 1
src/_ZN15dScMgSnowball_c6RenderEv.cpp _ZN15dScMgSnowball_c6RenderEv ✅ verified 1
src/_ZN15dScMgSnowball_c8BehaviorEv.cpp _ZN15dScMgSnowball_c8BehaviorEv ✅ verified 1
src/_ZN15dScMgSnowball_c8OnKickedEv.c _ZN15dScMgSnowball_c8OnKickedEv ✅ verified 1
src/_ZN15dScMgSnowball_c8OnPushedEv.c _ZN15dScMgSnowball_c8OnPushedEv ✅ verified 1
src/_ZN15dScMgSnowball_cD0Ev.cpp _ZN15dScMgSnowball_cD0Ev ✅ verified 1
src/_ZN15dScMgSnowball_cD1Ev.cpp _ZN15dScMgSnowball_cD1Ev ✅ 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.c _ZN16dScMgPachinko2_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN16dScMgPachinko2_c6RenderEv.cpp _ZN16dScMgPachinko2_c6RenderEv ✅ verified 1
src/_ZN16dScMgPachinko2_c8BehaviorEv.cpp _ZN16dScMgPachinko2_c8BehaviorEv ✅ verified 1
src/_ZN16dScMgPachinko2_cD0Ev.cpp _ZN16dScMgPachinko2_cD0Ev ✅ verified 1
src/_ZN16dScMgPachinko2_cD1Ev.cpp _ZN16dScMgPachinko2_cD1Ev ✅ verified 1
src/_ZN16dScMgSmartball_c21AfterCleanupResourcesEj.cpp _ZN16dScMgSmartball_c21AfterCleanupResourcesEj ✅ verified 1
src/_ZN16dScMgSmartball_c6RenderEv.cpp _ZN16dScMgSmartball_c6RenderEv ✅ verified 1
src/_ZN16dScMgSmartball_c8BehaviorEv.cpp _ZN16dScMgSmartball_c8BehaviorEv ✅ verified 1
src/_ZN16dScMgSmartball_c8OnPushedEv.c _ZN16dScMgSmartball_c8OnPushedEv ✅ verified 1
src/_ZN16dScMgSmartball_cD0Ev.cpp _ZN16dScMgSmartball_cD0Ev ✅ verified 1
src/_ZN16dScMgSmartball_cD1Ev.cpp _ZN16dScMgSmartball_cD1Ev ✅ 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.c _ZN17dScMgTrampoline_c13OnTurnIntoEggEi ✅ verified 1
src/_ZN17dScMgTrampoline_c13OnYoshiTryEatEi.c _ZN17dScMgTrampoline_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN17dScMgTrampoline_c16CleanupResourcesEv.cpp _ZN17dScMgTrampoline_c16CleanupResourcesEv ✅ verified 1
src/_ZN17dScMgTrampoline_c6RenderEv.cpp _ZN17dScMgTrampoline_c6RenderEv ✅ verified 1
src/_ZN17dScMgTrampoline_c8BehaviorEv.cpp _ZN17dScMgTrampoline_c8BehaviorEv ✅ verified 1
src/_ZN17dScMgTrampoline_c8OnPushedEv.c _ZN17dScMgTrampoline_c8OnPushedEv ✅ verified 1
src/_ZN17dScMgTrampoline_cD0Ev.cpp _ZN17dScMgTrampoline_cD0Ev ✅ verified 1
src/_ZN17dScMgTrampoline_cD1Ev.cpp _ZN17dScMgTrampoline_cD1Ev ✅ 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.c _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.c _ZN18dScMgTrampoline2_c8OnKickedEv ✅ verified 1
src/_ZN18dScMgTrampoline2_c8OnPushedEv.c _ZN18dScMgTrampoline2_c8OnPushedEv ✅ verified 1
src/_ZN18dScMgTrampoline2_cD0Ev.cpp _ZN18dScMgTrampoline2_cD0Ev ✅ verified 1
src/_ZN18dScMgTrampoline2_cD1Ev.cpp _ZN18dScMgTrampoline2_cD1Ev ✅ 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 `_ZN25RotatingUpD

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

Copy link
Copy Markdown
Collaborator Author

Self-review — what I checked, and the one thing a reviewer should push back on

No PR in this repo can be formally APPROVED (one shared account), so this is the sign-off in a comment.

Byte evidence. rombuild -j16 --no-rom: 11,088/11,088 reproducing, 106/106 exact, 100.000000% of compared bytes, ROM-build analysis PASS. romdata_check against slot 29's baseline moves verifiedBytes 35408→35412 (+4) and partialBytes 11500→11624 (+124), and nothing else moves — differs 6, differsRecords 14, partial 253, verified 465, symbols 1246, totalRecords 7560 all unchanged. The 128 bytes are 32 vtables × one word, split 31 partial / 1 verified because _ZTV14dScMgD3DBase_c is the one table already VERIFIED. That product closing is the actual check that no table was missed: a skipped override stays green in rombuild and only shows up here.

Merge-tree gate. premerge_check.py --base origin/main 2102 (script extracted from origin/main, run at b250e59d60e1, merge tree 3de6b59e44c9): all eight gates pass → pass. Static only; no ROM built on the merge tree.

Static gates on the branch. check_dead_references clean, port_refcheck 405/405, check_header_offsets --changed origin/main 7 headers / 0 mismatched (dScMgSlot1_c.h waived as before), langmode_audit --check PASS. Pre-push: 11,038 stems none doubled, 97/97 TUs compile.

Occupied-slot trap: absent, and that is checked, not assumed. Every header in the family was scanned for a class-level virtual that is unmarked or marked past 30 before this was written. dScMgSlot1_c.h's three apparent candidates are a nested class's two plus a destructor. dScMgAmida_c::Unk36 is still the last declaration in its class and simply shifts from 30 to 31; the header prose was updated to say so.

The thing to push back on

I kept a name the ROM refutes in both halves. Slot 30 is declared OnAimedAtWithEggReturnVec. It does not aim anything at an egg — it restores the screen state slot 29 saved — and it does not return a vector: at the sole dispatch site, ov004:0x020ae168, r0 still holds this and r1 holds the loaded function pointer, where a 12-byte AAPCS return would put a hidden result pointer in r0 and displace this to r1. The callee's own first instruction, ldr r1,[r0], reads its vptr out of r0.

I kept it because coining a replacement puts an unverifiable identifier on a byte-exact symbol, and because a mismatched class/method name blocks TU promotion later. The refutation is written into include/dScMgBase_c.h at the point of use instead. A systematic rename of slots 18–30 to menu/interaction semantics is a repo-owner decision and I have not made it.

The wider finding behind that, which is worth more than this PR: the recovered name: comments in the 18–35 range are index transplants from include/dActor_c.h, not independent recoveries. Nothing in the cartridge carries a method name for dScMgBase_c — its RTTI carries class names only. So what looked like two agreeing sources is one source reached twice. Slot 30 is the cleanest demonstration available: in dActor_c, slots 29 and 30 are a lock-on radius and the aim point derived from it (and there the Vector3 return is a genuine measurement of 0x020100dc — dActor_c.h is not wrong, the hierarchies genuinely diverge). Here the same two slots are a screen save and the restore that undoes it.

Also worth a reviewer's eye

  • Eighth recovered name: correction, seventh on dScMgD3DBase_c. ov006:0x020e6cac was labelled dScMgTrampoline2_c's and included that header. Five vtables reference it, so it is dScMgD3DBase_c's. The wrong line is left visible with the correction underneath rather than deleted.
  • The base now takes void* instead of char*, matching the declaration in decl_common.h that both overrides reach it through. The char* form was an illegal overload under C linkage — audit/enrollment_report.md:328 already logged it as line 50: illegal function overloading, so this fixes a pre-existing enrollment defect in passing.
  • A 27-method shadow scaffold is retired. Its only use was o->f68(); index 26 is dScMgBase_c::OnHitByCannonBlastedChar now.
  • audit/enrollment_report.md and notes/data/tu-merge-candidates.json still name the pre-rename paths. Both are tracked generated snapshots, unmodified vs HEAD and outside the dead-reference gate's prose scan; regenerating them belongs in whatever refresh next touches them, not here.

Stacked on #2100 (slot 29), which is stacked on #2099 (slot 28). Five slots left: 31–35. Landing order is yours.

@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 consolidated ask that is really about the whole stack, plus one prose correction. The slot-30 analysis itself is correct and I verified it against the cartridge instruction by instruction.

What I re-derived independently, and it holds

I disassembled ov004 rather than reading your summary, and every load-bearing claim checks out.

The ReturnVec refutation is sound. At the dispatch:

0x020ae144  mov  r4, r0            <- `this` captured, r0 never rewritten after
0x020ae164  ldr  r1, [r0]
0x020ae168  ldr  r1, [r1, #0x78]   <- 0x78 = 4*30, slot 30
0x020ae16c  blx  r1

r0 still holds this and r1 holds the loaded pointer, so there is no room for a hidden result pointer. A by-value Vector3 is refuted. Good catch, and the contrast you draw with dActor_c's genuine measurement at 0x020100dc is the right way to state it — a divergence between branches, not a defect over there.

The return type is unpinned, and your measurement is the right one. The result is dead one instruction later on both arms:

0x020ae16c  blx  r1                 <- slot 30
0x020ae170  b    #0x20ae180
0x020ae17c  blx  r1                 <- slot 29
0x020ae180  add  r0, r4, #0x4000    <- r0 overwritten on both paths

This is a caller discarding r0, which is exactly the shape that settles a return type. It also independently corroborates the slot-29 correction I posted on #2100.

The mirror claim is earned, not asserted. mov r1,#0x6600000 / add r1,r1,#0x6000 / mov r2,#0x2000 is slot 29's buffer at 0x06606000 and its 0x2000 length, in reverse; ldr lr,[r4,#0x224] lands exactly on mSavedScreenSwap, which corroborates the header's field map from the other direction; cmp r0,#2; popeq {r4,lr}; bxeq lr is the bare early return you describe; and the tail really is a bic #0x1f00 / orr / str read-modify-write of DISPCNT. Both slot-26 dispatches are ldr r1,[r1,#0x68], 0x68 = 4*26, as they should be.

The OnKicked edge-latch reading is right too — beq when mMenuOpen and unk_462c agree, slot 30 when it has fallen, slot 29 when it has risen, then the latch. Save at 29, restore at 30.

BLOCKING, but fix it ONCE at the bottom of the stack — not here

This PR adds decl_common.h:2321:

extern void _ZN11dScMgBase_c25OnAimedAtWithEggReturnVecEv(void*);

while dScMgBase_c.h:577, dScMgD3DBase_c.h:99 and dScMgSlot3_c.h:60 all declare:

virtual int  OnAimedAtWithEggReturnVec();          /* slot 30 */

and all three definitions are void. One mangled symbol, two declared return types, in headers that never see each other — the compiler cannot diagnose it and the linker binds by name alone. This is the third time in this stack: I raised the identical shape on #2099 (OnHitFromUnderneath) and #2100 (OnAimedAtWithEgg).

I mechanically matched every zero-argument virtual in include/ to its decl_common.h row. Of the 8 that matched, 3 disagree:

class method class decl decl_common.h
dScMgBase_c BeforeInitResources bool int
dScMgBase_c OnAimedAtWithEgg int void
dScMgBase_c OnAimedAtWithEggReturnVec int void

That 3/8 is a floor, not a census — my matcher only walks zero-arg virtuals in the first struct of each header, so the true count is higher. BeforeInitResources is pre-existing and explicitly not your debt; I am recording it because it shows this is systemic rather than a slot-by-slot slip.

So I am not asking for a separate patch here. #2102 sits on #2100 sits on #2099, both already blocked on this. Fix it once, family-wide, in #2099, and #2100 and #2102 inherit it. Either direction resolves it:

  • flip the decl_common.h rows to int and have the definitions return their tail call — I byte-verified this path end-to-end for slot 29 on #2100, including the illegal function overloading trap a naive edit hits; or
  • declare virtual void in the class headers, which matches both the definitions and the measurement that the result is dead. Given you have now measured three consecutive slots as unpinned, this is arguably the more honest spelling — but please confirm it is byte-free rather than assuming it.

Either resolution merges the whole stack as far as I am concerned.

One factual correction to the header prose

include/dScMgBase_c.h, in the new slot-30 block:

And the base's own body opens ldr r1,[r0], reading its vptr out of r0.

It does not. 0x020aeed8 opens:

0x020aeed8  push  {r4, lr}
0x020aeedc  ldr   r2, [pc, #0x148]

Its first use of r0 is mov r4,r0 at 0x020aef18, +0x40 in. The ldr r1,[r0] you are describing is at 0x020aef8c, +0xb4 in, and it is the slot-26 dispatch (ldr r1,[r1,#0x68]), not an entry vptr read.

I suspect a transposition with slot 29, whose body does read its vptr near the top — push {r4,r5,r6,r7,r8,lr}; sub sp,sp,#8; ldr r1,[r0] at 0x020af09c. Easy to do with two mirrored bodies open side by side.

This does not weaken your conclusion, which is why it is a correction and not the blocker: the AAPCS argument is already carried entirely by the dispatch site. The stronger replacement is the callee's own use of r0 as this:

and the callee consumes r0 as this: mov r4,r0 at 0x020aef18, immediately dereferenced as ldr lr,[r4,#0x224] — mSavedScreenSwap. Nothing anywhere in the body stores through a result pointer.

Worth fixing because this block is the durable record. The next reader will disassemble 0x020aeed8, see push {r4,lr}, and have to work out which of you is wrong.

Still owed from #2099, not fixed here

src/_ZN12dScMgSlot1_c19OnHitFromUnderneathEv.cpp still carries the third copy of the "nothing loads vtable+0x70" claim, which is false. #2100 did not fix it and #2102 does not touch the file. Carrying it forward so it is not lost when the stack lands.

For my part, I owe a correction of my own in dScMgBase_c.h: the row-18 sentence claiming "declaring void would have changed its bytes" is not supported. That is mine to fix in a follow-up once the slot stack stops moving at 35 — do not take it on here.

Sequencing

#2099 first with the family-wide type fix, then #2100, then this. I will merge all three in that order once the bottom one is coherent. Five slots left.

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