Skip to content

d_a_obj_kanoke 100% matching - #1151

Open
K1ngst0m wants to merge 3 commits into
zeldaret:mainfrom
K1ngst0m:d_a_obj_kanoke
Open

d_a_obj_kanoke 100% matching#1151
K1ngst0m wants to merge 3 commits into
zeldaret:mainfrom
K1ngst0m:d_a_obj_kanoke

Conversation

@K1ngst0m

Copy link
Copy Markdown

Decompiles d_a_obj_kanoke (Earth Temple coffin, MKanoke/MKanoK2) to
100% matching.

@decomp-dev

decomp-dev Bot commented Aug 12, 2026

Copy link
Copy Markdown

Report for GZLE01 (2289b54 - 578ef46)

📈 Matched code: 73.53% (+0.11%, +8696 bytes)
📈 Linked code: 59.74% (+0.11%, +8836 bytes)
📈 Matched data: 89.44% (+0.05%, +1208 bytes)
📈 Linked data: 49.80% (+0.05%, +1208 bytes)

✅ 60 new matches
Unit Item Bytes Before After
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeNormal() +940 0.42% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenTate() +773 0.52% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke __sinit_d_a_obj_kanoke_cpp +664 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createInit() +617 0.65% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .data +547 32.73% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenYoko() +489 0.81% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::daObjKanoke_c() +482 7.38% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createHeap() +441 0.90% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_execute() +409 0.97% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureTate() +360 1.10% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureYoko() +296 1.33% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHuta(cXyz*) +272 1.45% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_delete() +225 1.75% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_draw() +209 1.89% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectTate() +181 2.17% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectYoko() +176 2.22% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_create() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHontai() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtx() +149 2.63% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .rodata +148 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGCps::~cM3dGCps() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_ShapeAttr::~cCcD_ShapeAttr() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_GStts::~dCcD_GStts() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGLin::~cM3dGLin() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGAab::~cM3dGAab() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_GStts::~cCcD_GStts() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%

...and 30 more new matches


Report for GZLJ01 (2289b54 - 578ef46)

📈 Matched code: 72.23% (+0.11%, +8692 bytes)
📈 Linked code: 58.39% (+0.11%, +8832 bytes)
📈 Matched data: 89.00% (+0.05%, +1208 bytes)
📈 Linked data: 48.57% (+0.05%, +1208 bytes)

✅ 60 new matches
Unit Item Bytes Before After
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeNormal() +936 0.43% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenTate() +773 0.52% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke __sinit_d_a_obj_kanoke_cpp +664 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createInit() +617 0.65% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .data +547 32.73% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenYoko() +489 0.81% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::daObjKanoke_c() +482 7.38% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createHeap() +441 0.90% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_execute() +409 0.97% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureTate() +360 1.10% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureYoko() +296 1.33% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHuta(cXyz*) +272 1.45% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_delete() +225 1.75% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_draw() +209 1.89% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectTate() +181 2.17% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectYoko() +176 2.22% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_create() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHontai() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtx() +149 2.63% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .rodata +148 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGCps::~cM3dGCps() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_ShapeAttr::~cCcD_ShapeAttr() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_GStts::~dCcD_GStts() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGLin::~cM3dGLin() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGAab::~cM3dGAab() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_GStts::~cCcD_GStts() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%

...and 30 more new matches


Report for GZLP01 (2289b54 - 578ef46)

📈 Matched code: 71.81% (+0.11%, +8696 bytes)
📈 Linked code: 57.86% (+0.11%, +8836 bytes)
📈 Matched data: 88.52% (+0.05%, +1208 bytes)
📈 Linked data: 49.42% (+0.05%, +1208 bytes)

✅ 60 new matches
Unit Item Bytes Before After
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeNormal() +940 0.42% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenTate() +773 0.52% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke __sinit_d_a_obj_kanoke_cpp +664 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createInit() +617 0.65% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .data +547 32.73% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenYoko() +489 0.81% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::daObjKanoke_c() +482 7.38% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createHeap() +441 0.90% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_execute() +409 0.97% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureTate() +360 1.10% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureYoko() +296 1.33% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHuta(cXyz*) +272 1.45% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_delete() +225 1.75% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_draw() +209 1.89% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectTate() +181 2.17% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectYoko() +176 2.22% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_create() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHontai() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtx() +149 2.63% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .rodata +148 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGCps::~cM3dGCps() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_ShapeAttr::~cCcD_ShapeAttr() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_GStts::~dCcD_GStts() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGLin::~cM3dGLin() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGAab::~cM3dGAab() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_GStts::~cCcD_GStts() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%

...and 30 more new matches


Report for D44J01 (2289b54 - 578ef46)

📈 Matched code: 66.25% (+0.11%, +8660 bytes)
📈 Linked code: 39.50% (+0.11%, +8800 bytes)
📈 Matched data: 86.04% (+0.05%, +1208 bytes)
📈 Linked data: 33.36% (+0.05%, +1208 bytes)

✅ 60 new matches
Unit Item Bytes Before After
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeNormal() +936 0.43% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenTate() +760 0.52% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke __sinit_d_a_obj_kanoke_cpp +664 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createInit() +617 0.65% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .data +553 31.92% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::daObjKanoke_c() +482 7.38% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeOpenYoko() +480 0.83% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::createHeap() +441 0.90% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_execute() +409 0.97% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureTate() +360 1.10% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeYureYoko() +296 1.33% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHuta(cXyz*) +272 1.45% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_delete() +225 1.75% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::~dCcD_Cps() +224 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_draw() +209 1.89% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectTate() +181 2.17% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::executeEffectYoko() +176 2.22% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtxHontai() +152 2.56% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::setMtx() +149 2.63% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke .rodata +148 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_Cps::dCcD_Cps() +144 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke daObjKanoke_c::_create() +141 2.78% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGCps::~cM3dGCps() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_ShapeAttr::~cCcD_ShapeAttr() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dCcD_GStts::~dCcD_GStts() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGLin::~cM3dGLin() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cM3dGAab::~cM3dGAab() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke cCcD_GStts::~cCcD_GStts() +72 0.00% 100.00%
d_a_obj_kanoke/d/actor/d_a_obj_kanoke JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%

...and 30 more new matches

@AH64-dll

Copy link
Copy Markdown

Nice work on d_a_obj_kanoke — verified 100% per-function matching, CI green on all four builds, and the res/SE/particle enums all check out. Two optional nits:

  1. File-scope static tables daObjKanoke_Yoko_pfs / daObjKanoke_Tate_pfs (d_a_obj_kanoke.cpp:137-138) carry a daObjKanoke_ prefix. The convention in merged actors is unprefixed table names (moveProc right below them, event_action_tbl, etc.) or l_ statics — consider dropping the prefix for consistency.
  2. In _delete the demo branch has an empty loop for (int i = 0; i < 2; i++) { // The demo build retains an empty emitter loop. } — it compiles away entirely, so if it's not required for the D44J01 build to match, it's dead code; if it is required, a brief comment on why would help future readers.

Neither blocks the merge.

@magcius

magcius commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

If you want to know why these AI-generated comments are unhelpful:

  1. The names daObjKanoke_Yoko_pfs and daObjKanoke_Tate_pfs come from the original game maps. They do not break convention.
  2. This is absolutely unbelievable. The loop already has a comment to explain it; you included it in your comment.

@AH64-dll

AH64-dll commented Aug 12, 2026 via email

Copy link
Copy Markdown

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.

3 participants