Skip to content

d_a_obj_vyasi: 100% matching (GZLE01) - #1123

Open
LostGoron wants to merge 1 commit into
zeldaret:mainfrom
LostGoron:decompile-d_a_obj_vyasi
Open

d_a_obj_vyasi: 100% matching (GZLE01)#1123
LostGoron wants to merge 1 commit into
zeldaret:mainfrom
LostGoron:decompile-d_a_obj_vyasi

Conversation

@LostGoron

Copy link
Copy Markdown

Palm tree. 100% (GZLE01).

Ports the previously-completed 93/93-function decompilation onto the
current auto-generated actor skeleton (struct offsets and base class
are unchanged upstream, only placeholder names/signatures/includes
were regenerated). Re-verified: full GZLE01 build passes the REL hash
check and objdiff reports 100% fuzzy/matched for all three vyasi units.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@decomp-dev

decomp-dev Bot commented Jul 17, 2026

Copy link
Copy Markdown

Report for GZLE01 (c1513e9 - 2011f86)

📈 Matched code: 71.45% (+0.15%, +11824 bytes)
📈 Linked code: 58.26% (+0.15%, +11976 bytes)
📈 Matched data: 88.82% (+0.08%, +1889 bytes)
📈 Linked data: 48.51% (+0.08%, +1889 bytes)

✅ 90 new matches
Unit Item Bytes Before After
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::calc_dif_angle() +1865 0.21% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_create() +1100 0.36% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::JointNodeCallBack(J3DNode*, int) +960 0.41% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_collision() +921 0.43% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .data +862 11.37% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::quaternion_main() +724 0.55% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .rodata +585 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_init() +485 0.82% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::~Act_c() +468 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::create_heap() +416 0.95% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_init(int) +272 1.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_main() +225 1.75% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::~dCcD_Sph() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cyl::~dCcD_Cyl() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_toNormal_main() +185 2.13% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::leaf_scale_main() +181 2.17% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_draw() +173 2.27% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_mtx() +156 2.50% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Stts::~dCcD_Stts() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_first_process() +133 2.94% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::dCcD_Sph() +132 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_execute() +129 3.03% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .bss +115 65.38% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_main() +113 3.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::SetStopJointAnimation(J3DAnmTransformKey*, float, float) +109 3.57% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_normal_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_main() +93 4.17% 100.00%

...and 60 more new matches


Report for GZLP01 (c1513e9 - 2011f86)

📈 Matched code: 69.60% (+0.15%, +11824 bytes)
📈 Matched data: 87.59% (+0.08%, +1889 bytes)

✅ 90 new matches
Unit Item Bytes Before After
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::calc_dif_angle() +1865 0.21% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_create() +1100 0.36% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::JointNodeCallBack(J3DNode*, int) +960 0.41% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_collision() +921 0.43% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .data +862 11.37% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::quaternion_main() +724 0.55% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .rodata +585 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_init() +485 0.82% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::~Act_c() +468 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::create_heap() +416 0.95% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_init(int) +272 1.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_main() +225 1.75% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::~dCcD_Sph() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cyl::~dCcD_Cyl() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_toNormal_main() +185 2.13% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::leaf_scale_main() +181 2.17% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_draw() +173 2.27% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_mtx() +156 2.50% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Stts::~dCcD_Stts() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_first_process() +133 2.94% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::dCcD_Sph() +132 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_execute() +129 3.03% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .bss +115 65.38% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_main() +113 3.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::SetStopJointAnimation(J3DAnmTransformKey*, float, float) +109 3.57% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_normal_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_main() +93 4.17% 100.00%

...and 60 more new matches


Report for D44J01 (c1513e9 - 2011f86)

📈 Matched code: 63.81% (+0.12%, +9620 bytes)
📈 Matched data: 85.27% (+0.08%, +1889 bytes)

✅ 86 new matches
Unit Item Bytes Before After
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::calc_dif_angle() +1868 0.21% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_create() +1100 0.36% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::JointNodeCallBack(J3DNode*, int) +960 0.41% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .data +864 11.13% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .rodata +585 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_init() +485 0.82% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::~Act_c() +468 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_init(int) +272 1.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_main() +225 1.75% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::~dCcD_Sph() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cyl::~dCcD_Cyl() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_toNormal_main() +185 2.13% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::leaf_scale_main() +181 2.17% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_draw() +173 2.27% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_mtx() +156 2.50% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Stts::~dCcD_Stts() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::dCcD_Sph() +132 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_execute() +129 3.03% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .bss +115 65.38% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_main() +113 3.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::SetStopJointAnimation(J3DAnmTransformKey*, float, float) +109 3.57% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_normal_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_main() +93 4.17% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi cM3dGCps::~cM3dGCps() +92 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi cCcD_ShapeAttr::~cCcD_ShapeAttr() +92 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_GStts::~dCcD_GStts() +92 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_normal_main() +89 4.35% 100.00%

...and 56 more new matches

📈 4 improvements in unmatched items
Unit Item Bytes Before After
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_collision() +896 0.44% 98.17%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::quaternion_main() +700 0.55% 96.70%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::create_heap() +376 1.00% 95.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_first_process() +128 2.78% 91.11%

Report for GZLJ01 (c1513e9 - 2011f86)

📈 Matched code: 69.65% (+0.15%, +11816 bytes)
📈 Matched data: 88.25% (+0.08%, +1889 bytes)

✅ 90 new matches
Unit Item Bytes Before After
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::calc_dif_angle() +1865 0.21% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_create() +1100 0.36% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::JointNodeCallBack(J3DNode*, int) +960 0.41% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_collision() +913 0.44% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .data +862 11.37% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::quaternion_main() +724 0.55% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .rodata +585 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_init() +485 0.82% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::~Act_c() +468 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::create_heap() +416 0.95% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_init(int) +272 1.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_main() +225 1.75% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::~dCcD_Sph() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cyl::~dCcD_Cyl() +204 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_toNormal_main() +185 2.13% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::leaf_scale_main() +181 2.17% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_draw() +173 2.27% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_mtx() +156 2.50% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Stts::~dCcD_Stts() +144 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::set_first_process() +133 2.94% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi dCcD_Sph::dCcD_Sph() +132 0.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::_execute() +129 3.03% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi .bss +115 65.38% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_main() +113 3.45% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::SetStopJointAnimation(J3DAnmTransformKey*, float, float) +109 3.57% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sag_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_normal_init() +96 4.00% 100.00%
d_a_obj_vyasi/d/actor/d_a_obj_vyasi daObjVyasi::Act_c::process_sagWind_main() +93 4.17% 100.00%

...and 60 more new matches

@LostGoron LostGoron mentioned this pull request Jul 18, 2026
@AH64-dll

Copy link
Copy Markdown

Solid work. Small cleanups before merge:

  1. M_bck_data at 0x04F0 is an instance member but is named with the M_ static prefix — per conventions it should be mpBckData (m/mp + UpperCamelCase; M_ is reserved for class statics like M_arcname).
  2. The Attr_c/L_attr struct is never referenced, while its values (79.0f radius, 250.0f height) appear as literals in set_collision. Either wire the table in or remove it — right now the data is duplicated as dead code.
  3. Question: the repeated mCyl.SetTgVec(...) / mCyl.OnTgNoHitMark() inside the mSph init loop (i < 8) — intentional (matches original), or leftover from the mCyl setup above?

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.

2 participants