Skip to content

Reconstruct shared-class actor profile names - #2132

Merged
andrewboudreau merged 6 commits into
mainfrom
cpp/profile-reconstruction-wave3
Sep 2, 2026
Merged

Reconstruct shared-class actor profile names#2132
andrewboudreau merged 6 commits into
mainfrom
cpp/profile-reconstruction-wave3

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Stacked on #2131.

Reconstructs eight actor/process profile globals from literal SM64DS registry IDs:

  • KINOKO_TAG and KINOKO_CREATE_TAG
  • TERESA and BOSS_TERESA
  • KAIDAN, BOOKSHELF, MERRYGOROUND, and TERESAPIT

These are deliberate shared-class edge cases. Each family has multiple binary factories constructing one ROM-proven RTTI class, so a bare classInit rename would collide. This wave applies only the lineage-supported g_profile<ROM_ID> names and preserves the factory aliases with provenance comments.

Verification:

  • daObjKinokoTag_c TU: 9/9 functions exact, relocation and objisolate clean
  • both Kinoko profiles: 28/28 bytes VERIFIED, blindWords 0
  • six ov063 factories: strict-relocation MATCH
  • 98/98 promoted TUs compile
  • full ROM: 11,088/11,088 functions, 4/4 source data, 106/106 modules exact
  • reference, attribution, port, TU compatibility/conflict, and dead-reference gates pass

@tangos-validator

tangos-validator Bot commented Sep 1, 2026

Copy link
Copy Markdown

✅ PR validation — Passed

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

Full merge validation

Check Result
Committed test merge yes
Byte-verified functions 10,691 / 11,347 (94.22%, +0)
Byte-verified code bytes 1,992,356 / 2,211,124 (90.11%, +0)
Claimed, not byte-verified 526 functions, 113,324 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 +368
Contributor credit 0 added, 1 changed, 0 lost
Relocation check 15 checked; 15 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 580 symbol(s) exact, 165 partial, 5 differ

Contributor credit moved (1)

Function Source Before After
ov070:0x021210ac src/daBrq_c_classInit.c tangosdev 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 526 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 (1 changed, 0 lost -- src/daBrq_c_classInit.c: tangosdev -> andrewboudreau).

Per-file link-check detail

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

File Symbol Result Slots checked
src/actors/BigBoo/BigBoo_Spawn.cpp BigBoo_Spawn ✅ verified 1
src/actors/Bookshelf/Bookshelf_Spawn.c Bookshelf_Spawn ✅ verified 1
src/actors/MansionSteps/MansionSteps_Spawn.c MansionSteps_Spawn ✅ verified 1
src/actors/MerryGoRound/MerryGoRound_Spawn.c MerryGoRound_Spawn ✅ verified 1
src/actors/TrapDoor/TrapDoor_Spawn.c TrapDoor_Spawn ✅ verified 1
src/actors/daObjKinokoTag_c.cpp _ZN16daObjKinokoTag_cD1Ev + _ZN16daObjKinokoTag_cD0Ev + _ZN16daObjKinokoTag_c17SpawnMegaMushroomEv + _ZN16daObjKinokoTag_c20TrySpawnMegaMushroomEv + _ZN16daObjKinokoTag_c16CleanupResourcesEv + _ZN16daObjKinokoTag_c8BehaviorEv + _ZN16daObjKinokoTag_c13InitResourcesEv + daObjKinokoTag_c_Spawn + MegaMushroomTag_Spawn ✅ verified 9
src/actors/daTrs_c/Boo_Spawn.cpp Boo_Spawn ✅ 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 force-pushed the cpp/profile-reconstruction-wave2 branch 4 times, most recently from 38912c1 to 34591f8 Compare September 1, 2026 17:11
Base automatically changed from cpp/profile-reconstruction-wave2 to main September 1, 2026 18:33
…ction-wave3

# Conflicts:
#	config/arm9/overlays/ov002/delinks.txt
#	config/tu_manifest.d/ov002/daObjWaterfall_c.json
#	src/daObjWaterfall_c_classInit.cpp
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 2, 2026 01:17
@andrewboudreau
andrewboudreau merged commit 8310256 into main Sep 2, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/profile-reconstruction-wave3 branch September 2, 2026 01:17
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