Skip to content

Reconstruct remaining actor profile pilot anchors - #2133

Merged
andrewboudreau merged 4 commits into
mainfrom
cpp/profile-reconstruction-wave4
Sep 2, 2026
Merged

Reconstruct remaining actor profile pilot anchors#2133
andrewboudreau merged 4 commits into
mainfrom
cpp/profile-reconstruction-wave4

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Stacked on #2132.

Completes the pilot's remaining required source-symbol anchors:

  • OBJ_MIP_KEY -> daObj_Mip_Key_c_classInit and g_profile_OBJ_MIP_KEY
  • MG_CURLING -> dScMgCurling_c_classInit and g_profile_MG_CURLING
  • MG_CURLING_J -> dScMgCurling2_c_classInit and g_profile_MG_CURLING_J

The Curling pair is the explicit profile/class namespace mismatch test: the ROM profile IDs remain MG_CURLING and MG_CURLING_J while RTTI independently proves dScMgCurling_c and dScMgCurling2_c. All spellings are documented as lineage-supported reconstruction, not surviving SM64DS symbols. Historical aliases remain in the rename ledger.

Verification:

  • three factories strict-relocation MATCH
  • range gate: 10/10 VERIFIED, including seven Rabbit Key header consumers
  • filename changes are pure R100 moves; attribution preserves all three contributors
  • 98/98 promoted TUs compile
  • full ROM: 11,088/11,088 functions, 4/4 source data, 106/106 modules exact
  • reference, port, attribution, 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,668 / 11,347 (94.02%, +0)
Byte-verified code bytes 1,990,608 / 2,211,124 (90.03%, +0)
Claimed, not byte-verified 549 functions, 115,072 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 +391
Contributor credit 0 added, 0 changed, 0 lost
Relocation check 10 checked; 10 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 585 symbol(s) exact, 170 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 549 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 10 changed file(s) compile to the ROM byte-for-byte with correct relocation targets.

File Symbol Result Slots checked
src/_ZN9RabbitKey13InitResourcesEv.cpp _ZN9RabbitKey13InitResourcesEv ✅ verified 1
src/_ZN9RabbitKey16CleanupResourcesEv.cpp _ZN9RabbitKey16CleanupResourcesEv ✅ verified 1
src/_ZN9RabbitKey16OnPendingDestroyEv.cpp _ZN9RabbitKey16OnPendingDestroyEv ✅ verified 1
src/_ZN9RabbitKey6RenderEv.cpp _ZN9RabbitKey6RenderEv ✅ verified 1
src/_ZN9RabbitKey8BehaviorEv.cpp _ZN9RabbitKey8BehaviorEv ✅ verified 1
src/_ZN9RabbitKeyD0Ev.cpp _ZN9RabbitKeyD0Ev ✅ verified 1
src/_ZN9RabbitKeyD1Ev.cpp _ZN9RabbitKeyD1Ev ✅ verified 1
src/dScMgCurling2_c_classInit.c dScMgCurling2_c_classInit ✅ verified 1
src/dScMgCurling_c_classInit.c dScMgCurling_c_classInit ✅ verified 1
src/daObj_Mip_Key_c_classInit.c daObj_Mip_Key_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.

Base automatically changed from cpp/profile-reconstruction-wave3 to main September 2, 2026 01:17
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 2, 2026 01:20
Three rows still named the pre-rename *_Spawn.c / func_ov006_* filenames;
those sources were renamed to their _classInit.c form by an earlier
'Move remaining pilot factories to reconstructed paths' commit and the
prose never caught up. check_dead_references was failing on this.
@andrewboudreau
andrewboudreau merged commit 7cffa4d into main Sep 2, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/profile-reconstruction-wave4 branch September 2, 2026 01:42
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