Skip to content

Reconstruct five more actor profile and classInit symbols - #2131

Merged
andrewboudreau merged 1 commit into
mainfrom
cpp/profile-reconstruction-wave2
Sep 1, 2026
Merged

Reconstruct five more actor profile and classInit symbols#2131
andrewboudreau merged 1 commit into
mainfrom
cpp/profile-reconstruction-wave2

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Summary

  • stacks five additional unique profile/factory pairs on Reconstruct five actor profile and classInit symbols #2128: WATERFALL, CANNON_SHUTTER, KERONPA, KERONPA_FIRE, and OBJ_ABUKU
  • renames each factory to Class_classInit and each descriptor to g_profile_ROM_ID
  • adds the previously missing explicit g_profile_CANNON_SHUTTER definition to its promoted class TU
  • records recovered profile field roles while keeping exact original SM64DS member spellings explicitly unresolved
  • preserves all community/class-anchored aliases in the rename ledger and provenance comments
  • moves the standalone Waterfall factory to its reconstructed symbol path as a separate R100 commit

This PR is intentionally based on cpp/profile-reconstruction-wave1 so its diff contains only wave 2. The evidence/tooling pilot is #2127.

Validation

  • targeted TU verification: 66/66 functions exact, relocation-aware, objisolate clean
  • all five 0x1c profile globals individually VERIFIED: 28/28 bytes, blindWords 0
  • daObjWaterfall_c_classInit: strict-relocation MATCH and linkcheck VERIFIED with blind 0
  • full ROM build: 11,088 reproducing functions, 0 mismatches
  • source-owned data: 4/4 reproducing
  • module fidelity: 106/106 exact
  • ROM-data coverage increases to 564 verified symbols with 0 new differences
  • all 98 TUs compile; references, port refs, manifests, TU compatibility, and attribution 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,704 / 11,347 (94.33%, +0)
Byte-verified code bytes 1,993,536 / 2,211,124 (90.16%, +0)
Claimed, not byte-verified 513 functions, 112,144 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 +355
Contributor credit 0 added, 0 changed, 0 lost
Relocation check 75 checked; 1 BLIND, 74 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 577 symbol(s) exact, 164 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 513 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: 1 linkcheck result(s) have unresolved relocations.

Per-file link-check detail

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

File Symbol Result Slots checked
src/_ZN15daObjMarioCap_c13InitResourcesEv.cpp _ZN15daObjMarioCap_c13InitResourcesEv 🔶 blind (a reloc slot could not be resolved) 1
src/_ZN15daObjMarioCap_c13OnTurnIntoEggER6Player.cpp _ZN15daObjMarioCap_c13OnTurnIntoEggER6Player ✅ verified 1
src/_ZN15daObjMarioCap_c13OnYoshiTryEatEv.cpp _ZN15daObjMarioCap_c13OnYoshiTryEatEv ✅ verified 1
src/_ZN15daObjMarioCap_c16CleanupResourcesEv.cpp _ZN15daObjMarioCap_c16CleanupResourcesEv ✅ verified 1
src/_ZN15daObjMarioCap_c16OnPendingDestroyEv.cpp _ZN15daObjMarioCap_c16OnPendingDestroyEv ✅ verified 1
src/_ZN15daObjMarioCap_c6RenderEv.cpp _ZN15daObjMarioCap_c6RenderEv ✅ verified 1
src/_ZN15daObjMarioCap_c8BehaviorEv.cpp _ZN15daObjMarioCap_c8BehaviorEv ✅ verified 1
src/_ZN15daObjMarioCap_cD0Ev.cpp _ZN15daObjMarioCap_cD0Ev ✅ verified 1
src/_ZN15daObjMarioCap_cD1Ev.cpp _ZN15daObjMarioCap_cD1Ev ✅ verified 1
src/actors/d_a_obj_waterfall.cpp _ZN16daObjWaterfall_cD1Ev + _ZN16daObjWaterfall_cD0Ev + _ZN16daObjWaterfall_c8BehaviorEv + _ZN16daObjWaterfall_c13InitResourcesEv + daObjWaterfall_c_classInit ✅ verified 5
src/actors/daKpFr_c.cpp _ZN8daKpFr_cD1Ev + _ZN8daKpFr_cD0Ev + _ZN8daKpFr_c13OnYoshiTryEatEv + func_ov070_02121be4 + func_ov070_02121c8c + func_ov070_02121cbc + func_ov070_02121d50 + func_ov070_02121e14 + func_ov070_02121eb0 + func_ov070_02121ef8 + func_ov070_02121f18 + func_ov070_02121fb0 + func_ov070_02121fd0 + func_ov070_0212200c + func_ov070_02122044 + _ZN8daKpFr_c16CleanupResourcesEv + _ZN8daKpFr_c16OnPendingDestroyEv + _ZN8daKpFr_c6RenderEv + _ZN8daKpFr_c8BehaviorEv + _ZN8daKpFr_c13InitResourcesEv + daKpFr_c_classInit ✅ verified 21
src/actors/daKrpa_c.cpp _ZN8daKrpa_cD1Ev + _ZN8daKrpa_cD0Ev + _ZN8daKrpa_c13OnYoshiTryEatEv + func_ov070_021211c4 + func_ov070_02121298 + func_ov070_02121310 + func_ov070_021213cc + func_ov070_02121438 + func_ov070_021214f8 + func_ov070_02121548 + func_ov070_0212156c + func_ov070_021216b8 + func_ov070_02121710 + func_ov070_021217ac + func_ov070_0212180c + func_ov070_02121848 + func_ov070_02121880 + _ZN8daKrpa_c16CleanupResourcesEv + _ZN8daKrpa_c16OnPendingDestroyEv + _ZN8daKrpa_c6RenderEv + _ZN8daKrpa_c8BehaviorEv + _ZN8daKrpa_c13InitResourcesEv + func_ov070_02121a64 + func_ov070_02121ae0 + daKrpa_c_classInit ✅ verified 25
src/actors/daObjAbuku_c.cpp _ZN12daObjAbuku_cD1Ev + _ZN12daObjAbuku_cD0Ev + func_ov002_020b330c + func_ov002_020b3344 + _ZN12daObjAbuku_c8BehaviorEv + _ZN12daObjAbuku_c13InitResourcesEv + daObjAbuku_c_classInit ✅ verified 7
src/actors/daObjCannonShutter_c.cpp _ZN20daObjCannonShutter_cD1Ev + _ZN20daObjCannonShutter_cD0Ev + func_ov002_020bc990 + _ZN20daObjCannonShutter_c16CleanupResourcesEv + _ZN20daObjCannonShutter_c6RenderEv + _ZN20daObjCannonShutter_c8BehaviorEv + _ZN20daObjCannonShutter_c13InitResourcesEv + daObjCannonShutter_c_classInit ✅ verified 8

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-wave1 branch from 69ae7ca to 5dafaab Compare September 1, 2026 14:11
Base automatically changed from cpp/profile-reconstruction-wave1 to main September 1, 2026 14:57
@andrewboudreau
andrewboudreau force-pushed the cpp/profile-reconstruction-wave2 branch from 195337d to b9e0ee2 Compare September 1, 2026 14:59
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 1, 2026 15:00
@andrewboudreau
andrewboudreau marked this pull request as draft September 1, 2026 15:17
@andrewboudreau
andrewboudreau force-pushed the cpp/profile-reconstruction-wave2 branch from b9e0ee2 to 9042534 Compare September 1, 2026 15:24
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 1, 2026 15:25
@andrewboudreau
andrewboudreau marked this pull request as draft September 1, 2026 16:17
@andrewboudreau
andrewboudreau force-pushed the cpp/profile-reconstruction-wave2 branch from 9042534 to 38912c1 Compare September 1, 2026 16:24
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 1, 2026 16:25
@andrewboudreau
andrewboudreau marked this pull request as draft September 1, 2026 17:04
@andrewboudreau
andrewboudreau force-pushed the cpp/profile-reconstruction-wave2 branch from 38912c1 to 34591f8 Compare September 1, 2026 17:11
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 1, 2026 17:12
@andrewboudreau
andrewboudreau merged commit 0749267 into main Sep 1, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/profile-reconstruction-wave2 branch September 1, 2026 18:33
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