Skip to content

Reconstruct five actor profile and classInit symbols - #2128

Merged
andrewboudreau merged 3 commits into
mainfrom
cpp/profile-reconstruction-wave1
Sep 1, 2026
Merged

Reconstruct five actor profile and classInit symbols#2128
andrewboudreau merged 3 commits into
mainfrom
cpp/profile-reconstruction-wave1

Conversation

@andrewboudreau

Copy link
Copy Markdown
Collaborator

Summary

  • applies the profile/classInit reconstruction to BAR, FM_BATTAN, KM3_KURUMAJIKU, BIRIKYU, and EYEKUN_BEAM
  • renames factories to Class_classInit and descriptors to g_profile_ROM_ID
  • keeps the current SpawnInfo type names while documenting the recovered field roles
  • preserves the historical community aliases and explicitly labels the new spellings as lineage-supported reconstruction, not ROM-surviving symbols
  • updates symbols, TU manifests, attribution, and path references without a mass source-file rename

This is the 5-actor source experiment built from the evidence/tooling pilot in #2127.

Validation

  • full ROM build: 11,088 reproducing functions, 0 mismatches
  • source-owned data: 4/4 reproducing
  • module fidelity: 106/106 exact
  • targeted TU verification: 53/53 functions exact
  • standalone daBrq_c_classInit: strict relocations and linkcheck VERIFIED with blind: 0
  • prepush linkcheck: 48 verified, 6 aggregate-TU NO-SYM warnings, 0 blocking
  • attribution: one rename with credit intact, 0 lost
  • references, port refs, manifests, TU compatibility, and Python-name checks 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,719 / 11,347 (94.47%, +0)
Byte-verified code bytes 1,995,008 / 2,211,124 (90.23%, +0)
Claimed, not byte-verified 498 functions, 110,672 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 +340
Contributor credit 0 added, 0 changed, 0 lost
Relocation check 107 checked; 107 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 572 symbol(s) exact, 162 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 498 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 51 changed file(s) compile to the ROM byte-for-byte with correct relocation targets.

File Symbol Result Slots checked
src/CameraTag_Spawn.c CameraTag_Spawn ✅ verified 1
src/_ZN11RickshawBdw13InitResourcesEv.cpp _ZN11RickshawBdw13InitResourcesEv ✅ verified 1
src/_ZN11RickshawBdw16CleanupResourcesEv.cpp _ZN11RickshawBdw16CleanupResourcesEv ✅ verified 1
src/_ZN11RickshawBdwD0Ev.cpp _ZN11RickshawBdwD0Ev ✅ verified 1
src/_ZN11RickshawBdwD1Ev.cpp _ZN11RickshawBdwD1Ev ✅ verified 1
src/_ZN16daObjKaitendai_c6RenderEv.cpp _ZN16daObjKaitendai_c6RenderEv ✅ verified 1
src/_ZN16daObjKaitendai_c8BehaviorEv.cpp _ZN16daObjKaitendai_c8BehaviorEv ✅ verified 1
src/_ZN16daObjKaitendai_cD0Ev.cpp _ZN16daObjKaitendai_cD0Ev ✅ verified 1
src/_ZN16daObjKaitendai_cD1Ev.cpp _ZN16daObjKaitendai_cD1Ev ✅ verified 1
src/_ZN17daObjKurumajiku_c6RenderEv.cpp _ZN17daObjKurumajiku_c6RenderEv ✅ verified 1
src/_ZN17daObjKurumajiku_c8BehaviorEv.cpp _ZN17daObjKurumajiku_c8BehaviorEv ✅ verified 1
src/_ZN17daObjKurumajiku_cD0Ev.cpp _ZN17daObjKurumajiku_cD0Ev ✅ verified 1
src/_ZN17daObjKurumajiku_cD1Ev.cpp _ZN17daObjKurumajiku_cD1Ev ✅ verified 1
src/_ZN18RotatingPlatformRr13InitResourcesEv.cpp _ZN18RotatingPlatformRr13InitResourcesEv ✅ verified 1
src/_ZN18RotatingPlatformRr16CleanupResourcesEv.cpp _ZN18RotatingPlatformRr16CleanupResourcesEv ✅ verified 1
src/_ZN18RotatingPlatformRrD0Ev.cpp _ZN18RotatingPlatformRrD0Ev ✅ verified 1
src/_ZN18RotatingPlatformRrD1Ev.cpp _ZN18RotatingPlatformRrD1Ev ✅ verified 1
src/_ZN18RotatingPlatformWf13InitResourcesEv.cpp _ZN18RotatingPlatformWf13InitResourcesEv ✅ verified 1
src/_ZN18RotatingPlatformWf16CleanupResourcesEv.cpp _ZN18RotatingPlatformWf16CleanupResourcesEv ✅ verified 1
src/_ZN18RotatingPlatformWfD0Ev.cpp _ZN18RotatingPlatformWfD0Ev ✅ verified 1
src/_ZN18RotatingPlatformWfD1Ev.cpp _ZN18RotatingPlatformWfD1Ev ✅ verified 1
src/_ZN19RotatingPlatformLll13InitResourcesEv.cpp _ZN19RotatingPlatformLll13InitResourcesEv ✅ verified 1
src/_ZN19RotatingPlatformLll16CleanupResourcesEv.cpp _ZN19RotatingPlatformLll16CleanupResourcesEv ✅ verified 1
src/_ZN19RotatingPlatformLllD0Ev.cpp _ZN19RotatingPlatformLllD0Ev ✅ verified 1
src/_ZN19RotatingPlatformLllD1Ev.cpp _ZN19RotatingPlatformLllD1Ev ✅ verified 1
src/_ZN19RotatingPlatformWdw13InitResourcesEv.cpp _ZN19RotatingPlatformWdw13InitResourcesEv ✅ verified 1
src/_ZN19RotatingPlatformWdw16CleanupResourcesEv.cpp _ZN19RotatingPlatformWdw16CleanupResourcesEv ✅ verified 1
src/_ZN19RotatingPlatformWdwD0Ev.cpp _ZN19RotatingPlatformWdwD0Ev ✅ verified 1
src/_ZN19RotatingPlatformWdwD1Ev.cpp _ZN19RotatingPlatformWdwD1Ev ✅ verified 1
src/_ZN4Exit13InitResourcesEv.cpp _ZN4Exit13InitResourcesEv ✅ verified 1
src/_ZN4Exit16CleanupResourcesEv.cpp _ZN4Exit16CleanupResourcesEv ✅ verified 1
src/_ZN4Exit16OnPendingDestroyEv.cpp _ZN4Exit16OnPendingDestroyEv ✅ verified 1
src/_ZN4Exit6RenderEv.cpp _ZN4Exit6RenderEv ✅ verified 1
src/_ZN4Exit8BehaviorEv.cpp _ZN4Exit8BehaviorEv ✅ verified 1
src/_ZN4ExitD0Ev.cpp _ZN4ExitD0Ev ✅ verified 1
src/_ZN4ExitD1Ev.cpp _ZN4ExitD1Ev ✅ verified 1
src/_ZN9CameraTag13InitResourcesEv.cpp _ZN9CameraTag13InitResourcesEv ✅ verified 1
src/_ZN9CameraTag16CleanupResourcesEv.cpp _ZN9CameraTag16CleanupResourcesEv ✅ verified 1
src/_ZN9CameraTag16OnPendingDestroyEv.cpp _ZN9CameraTag16OnPendingDestroyEv ✅ verified 1
src/_ZN9CameraTag6RenderEv.cpp _ZN9CameraTag6RenderEv ✅ verified 1
src/_ZN9CameraTag8BehaviorEv.cpp _ZN9CameraTag8BehaviorEv ✅ verified 1
src/_ZN9CameraTagD0Ev.cpp _ZN9CameraTagD0Ev ✅ verified 1
src/_ZN9CameraTagD1Ev.cpp _ZN9CameraTagD1Ev ✅ verified 1
src/actors/daBar_c.cpp _ZN7daBar_cD1Ev + _ZN7daBar_cD0Ev + _ZN7daBar_c16CleanupResourcesEv + _ZN7daBar_c16OnPendingDestroyEv + _ZN7daBar_c6RenderEv + _ZN7daBar_c8BehaviorEv + _ZN7daBar_c13InitResourcesEv + daBar_c_classInit ✅ verified 8
src/actors/daBrq_c.cpp _ZN7daBrq_cD1Ev + _ZN7daBrq_cD0Ev + _ZN7daBrq_c21HandlePlayerCollisionEv + _ZN7daBrq_c20UpdateModelTransformEv + _ZN7daBrq_c19UpdateDefeatedStateEv + _ZN7daBrq_c18EnterDefeatedStateEv + _ZN7daBrq_c17UpdateActiveStateEv + _ZN7daBrq_c16EnterActiveStateEv + _ZN7daBrq_c19UpdateCooldownStateEv + _ZN7daBrq_c18EnterCooldownStateEv + _ZN7daBrq_c11UpdateStateEv + _ZN7daBrq_c10EnterStateEv + _ZN7daBrq_c8SetStateEi + _ZN7daBrq_c16CleanupResourcesEv + _ZN7daBrq_c16OnPendingDestroyEv + _ZN7daBrq_c6RenderEv + _ZN7daBrq_c8BehaviorEv + _ZN7daBrq_c13InitResourcesEv ✅ verified 18
src/actors/daEyBm_c.cpp _ZN8daEyBm_cD1Ev + _ZN8daEyBm_cD0Ev + _ZN8daEyBm_c13OnYoshiTryEatEv + _ZN8daEyBm_c18SpawnDestroyEffectEv + _ZN8daEyBm_c15UpdateCollisionER10dBgCh_Actr + _ZN8daEyBm_c10HurtPlayerEv + _ZN8daEyBm_c12UpdateShadowEv + _ZN8daEyBm_c16CleanupResourcesEv + _ZN8daEyBm_c16OnPendingDestroyEv + _ZN8daEyBm_c6RenderEv + _ZN8daEyBm_c8BehaviorEv + _ZN8daEyBm_c13InitResourcesEv + daEyBm_c_classInit ✅ verified 13
src/actors/daObjFm_Battan_c.cpp _ZN16daObjFm_Battan_cD1Ev + _ZN16daObjFm_Battan_cD0Ev + _ZN16daObjFm_Battan_c12UpdateShadowEv + _ZN16daObjFm_Battan_c20UpdateModelTransformEv + _ZN16daObjFm_Battan_c16CleanupResourcesEv + _ZN16daObjFm_Battan_c6RenderEv + _ZN16daObjFm_Battan_c8BehaviorEv + _ZN16daObjFm_Battan_c13InitResourcesEv + daObjFm_Battan_c_classInit ✅ verified 9
src/actors/daObjKm3_Kaitendai_c.cpp _ZN20daObjKm3_Kaitendai_cD1Ev + _ZN20daObjKm3_Kaitendai_cD0Ev + _ZN20daObjKm3_Kaitendai_c16CleanupResourcesEv + _ZN20daObjKm3_Kaitendai_c13InitResourcesEv + func_ov047_021113bc ✅ verified 5
src/actors/daObjKm3_Kuruma_c.cpp _ZN17daObjKm3_Kuruma_cD1Ev + _ZN17daObjKm3_Kuruma_cD0Ev + _ZN17daObjKm3_Kuruma_c16CleanupResourcesEv + _ZN17daObjKm3_Kuruma_c13InitResourcesEv + RickshawPlatformBs_Spawn ✅ verified 5
src/actors/daObjKm3_Kurumajiku_c.cpp _ZN21daObjKm3_Kurumajiku_cD1Ev + _ZN21daObjKm3_Kurumajiku_cD0Ev + _ZN21daObjKm3_Kurumajiku_c16CleanupResourcesEv + _ZN21daObjKm3_Kurumajiku_c13InitResourcesEv + daObjKm3_Kurumajiku_c_classInit ✅ verified 5
src/daBrq_c_classInit.c daBrq_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 force-pushed the cpp/profile-reconstruction-wave1 branch from 69ae7ca to 5dafaab Compare September 1, 2026 14:11
@andrewboudreau
andrewboudreau marked this pull request as ready for review September 1, 2026 14:30
@andrewboudreau
andrewboudreau merged commit 9489aaf into main Sep 1, 2026
9 checks passed
@andrewboudreau
andrewboudreau deleted the cpp/profile-reconstruction-wave1 branch September 1, 2026 14:57
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