Skip to content

Reconstruct five unique actor profile pairs - #2137

Merged
andrewboudreau merged 5 commits into
mainfrom
cpp/profile-reconstruction-wave7
Sep 2, 2026
Merged

Reconstruct five unique actor profile pairs#2137
andrewboudreau merged 5 commits into
mainfrom
cpp/profile-reconstruction-wave7

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Stacked on #2136.

Reconstructs five additional unique profile/class-initializer pairs:

  • WANWAN -> daWanwan_c_classInit and g_profile_WANWAN
  • PROPELLER_HEYHO -> daPropeller_Heyho_c_classInit and g_profile_PROPELLER_HEYHO
  • BOOK_GENERATOR -> daBookGen_c_classInit and g_profile_BOOK_GENERATOR
  • MINIGAME -> dScMiniGm_c_classInit and g_profile_MINIGAME
  • MG_CUP -> dScMgCup_c_classInit and g_profile_MG_CUP

The spellings are explicitly lineage-supported reconstructions. ROM evidence independently proves each literal profile ID, RTTI class, unique factory relationship, allocation size, and vtable identity. Historical and generic aliases remain in the rename ledger.

Verification:

  • all five factories strict-relocation MATCH
  • ChainChomp, FlyGuy, and BookShot/BookGenerator TU checks retain 87/87 matching members
  • profiles remain ROM-backed config symbols; no source-owned descriptor data was invented
  • affected-source gate: 25/25 VERIFIED, 0 warnings, 0 blocking
  • all five standalone filenames are pure R100 moves with attribution intact
  • 98/98 reconstructed TUs compile
  • full ROM: 11,088/11,088 functions, 4/4 source data, 106/106 modules exact
  • references, port, attribution, language-mode, TU compatibility/conflict, Python-name, and dead-reference gates pass

@tangos-validator

tangos-validator Bot commented Sep 1, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

Committed merge introduces no reconstruction or attribution regression.

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,655 / 11,347 (93.90%, +0)
Byte-verified code bytes 1,989,784 / 2,211,124 (89.99%, +0)
Claimed, not byte-verified 562 functions, 115,896 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 +404
Contributor credit 0 added, 0 changed, 0 lost
Relocation check 43 checked; 43 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 589 symbol(s) exact, 172 partial, 5 differ

Byte-verified means the range carries complete in a delinks.txt, so the ROM build compiled it and compared it to the cartridge. The 562 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.

Per-file link-check detail

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

File Symbol Result Slots checked
src/_ZN10dScMgCup_c13InitResourcesEv.cpp _ZN10dScMgCup_c13InitResourcesEv ✅ verified 1
src/_ZN10dScMgCup_c13OnYoshiTryEatEi.cpp _ZN10dScMgCup_c13OnYoshiTryEatEi ✅ verified 1
src/_ZN10dScMgCup_c6RenderEv.cpp _ZN10dScMgCup_c6RenderEv ✅ verified 1
src/_ZN10dScMgCup_c8BehaviorEv.cpp _ZN10dScMgCup_c8BehaviorEv ✅ verified 1
src/_ZN10dScMgCup_c9Virtual50Ev.cpp _ZN10dScMgCup_c9Virtual50Ev ✅ verified 1
src/_ZN10dScMgCup_cD0Ev.cpp _ZN10dScMgCup_cD0Ev ✅ verified 1
src/_ZN10dScMgCup_cD1Ev.cpp _ZN10dScMgCup_cD1Ev ✅ verified 1
src/_ZN15BookShotSpawner13InitResourcesEv.cpp _ZN15BookShotSpawner13InitResourcesEv ✅ verified 1
src/_ZN15BookShotSpawner16CleanupResourcesEv.cpp _ZN15BookShotSpawner16CleanupResourcesEv ✅ verified 1
src/_ZN15BookShotSpawner8BehaviorEv.cpp _ZN15BookShotSpawner8BehaviorEv ✅ verified 1
src/_ZN15BookShotSpawnerD0Ev.cpp _ZN15BookShotSpawnerD0Ev ✅ verified 1
src/_ZN15BookShotSpawnerD1Ev.cpp _ZN15BookShotSpawnerD1Ev ✅ verified 1
src/actors/daPropeller_Heyho_c.cpp _ZN19daPropeller_Heyho_cD1Ev + _ZN19daPropeller_Heyho_cD0Ev + func_ov070_0211f0a4 + func_ov070_0211f100 + func_ov070_0211f368 + func_ov070_0211f450 + func_ov070_0211f48c + func_ov070_0211f5f0 + func_ov070_0211f62c + func_ov070_0211f694 + func_ov070_0211f6e0 + func_ov070_0211fa80 + func_ov070_0211fae4 + func_ov070_0211fd60 + func_ov070_0211fd98 + func_ov070_0211ffa8 + FlyGuy_ChangeState + func_ov070_02120070 + _ZN19daPropeller_Heyho_c16CleanupResourcesEv + _ZN19daPropeller_Heyho_c16OnPendingDestroyEv + _ZN19daPropeller_Heyho_c6RenderEv + _ZN19daPropeller_Heyho_c8BehaviorEv + _ZN19daPropeller_Heyho_c13InitResourcesEv + _ZN19daPropeller_Heyho_c16OnAimedAtWithEggEv + _ZN19daPropeller_Heyho_c13OnTurnIntoEggER6Player + _ZN19daPropeller_Heyho_c13OnYoshiTryEatEv + FlyGuy_Spawn ✅ verified 27
src/dScMgCup_c_classInit.cpp dScMgCup_c_classInit ✅ verified 1
src/dScMiniGm_c_classInit.c dScMiniGm_c_classInit ✅ verified 1
src/daBookGen_c_classInit.c daBookGen_c_classInit ✅ verified 1
src/daWanwan_c_classInit.cpp daWanwan_c_classInit ✅ verified 1

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 marked this pull request as ready for review September 2, 2026 04:44
Base automatically changed from cpp/profile-reconstruction-wave6 to main September 2, 2026 04:45
…ction-wave7

# Conflicts:
#	config/arm9/overlays/ov070/delinks.txt
#	config/arm9/overlays/ov070/symbols.txt
#	config/tu_manifest.d/ov070/FlyGuy.json
#	include/daPropeller_Heyho_c.h
#	src/actors/daPropeller_Heyho_c.cpp
#	src/daPropeller_Heyho_c_classInit.c
#	symbols/actor_renames.tsv
@andrewboudreau
andrewboudreau merged commit 26ac772 into main Sep 2, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/profile-reconstruction-wave7 branch September 2, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant