Skip to content

Match d_a_obj_htetu1 - #1131

Open
999sian wants to merge 1 commit into
zeldaret:mainfrom
999sian:decompile-htetu1-full
Open

Match d_a_obj_htetu1#1131
999sian wants to merge 1 commit into
zeldaret:mainfrom
999sian:decompile-htetu1-full

Conversation

@999sian

@999sian 999sian commented Jul 19, 2026

Copy link
Copy Markdown

Replacement for #1121, rebased onto current main and revised after source-fidelity feedback.

Fully decompiles d_a_obj_htetu1 (Tower of the Gods yellow gate): 40/40 functions with 100% code and data.

Source-fidelity cleanup since #1121:

  • Uses native cXyz/csXyz particle members and passes them directly; no reinterpret casts.
  • Uses a normal mUnlockSpeed read with an explicit angle local; no volatile fakematching.
  • Uses the established cBgW::MOVE_BG_e enum instead of numeric 1.
  • Retains the target's demo particle layout and version-specific resource/emitter behavior.

Local verification after rebasing:

  • D44J01: 40/40, 5304/5304 code, 450/450 data, REL c682b31f40aa6ee02acf82665d9a3f782f29e878
  • GZLJ01: 40/40, 5296/5296 code, 450/450 data, REL 734630f4b4cc6b97da1acafe7d77f1944f927934
  • GZLP01: 40/40, 5296/5296 code, 450/450 data, REL 75e808ccf8fe41d3a12548e5de493e94fb3c1566

Full linked manifests pass locally for all three available versions. GZLE01 is covered by CI.

@decomp-dev

decomp-dev Bot commented Jul 19, 2026

Copy link
Copy Markdown

Report for D44J01 (61a3a0a - fe8e6b6)

📈 Matched code: 64.02% (+0.07%, +5156 bytes)
📈 Linked code: 37.05% (+0.07%, +5304 bytes)
📈 Matched data: 85.27% (+0.02%, +450 bytes)
📈 Linked data: 32.12% (+0.02%, +450 bytes)

✅ 37 new matches
Unit Item Bytes Before After
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_execute() +1096 0.36% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_create() +453 0.88% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::get_water_h() +400 0.99% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_WtrChk::~dBgS_WtrChk() +292 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::splash_manager() +280 1.41% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::unlock() +272 1.45% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_delete() +265 1.49% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::create_heap() +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_SplGrpChk::~dBgS_SplGrpChk() +252 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::create_s(unsigned short, cXyz*, csXyz*, dKy_tevstr_c*) +248 1.59% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .data +242 24.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_Chk::~dBgS_Chk() +160 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::init_mtx() +152 2.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .rodata +130 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::~daObjHtetu1Splash_c() +124 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_draw() +93 4.17% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_PolyPassChk::~dBgS_PolyPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_GrpPassChk::~dBgS_GrpPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyInfo::~cBgS_PolyInfo() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyPassChk::~cBgS_PolyPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_GrpPassChk::~cBgS_GrpPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::daObjHtetu1Splash_c() +60 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::check_sw() +49 7.69% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::solidHeapCB(fopAc_ac_c*) +28 12.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @48@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @36@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__14dBgS_SplGrpChkFv +8 0.00% 100.00%

...and 7 more new matches


Report for GZLE01 (61a3a0a - fe8e6b6)

📈 Matched code: 71.70% (+0.07%, +5148 bytes)
📈 Linked code: 58.18% (+0.07%, +5296 bytes)
📈 Matched data: 88.81% (+0.02%, +450 bytes)
📈 Linked data: 48.45% (+0.02%, +450 bytes)

✅ 37 new matches
Unit Item Bytes Before After
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_execute() +1100 0.36% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_create() +453 0.88% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::get_water_h() +400 0.99% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_WtrChk::~dBgS_WtrChk() +292 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::splash_manager() +280 1.41% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::unlock() +272 1.45% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_delete() +261 1.52% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::create_s(unsigned short, cXyz*, csXyz*, dKy_tevstr_c*) +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::create_heap() +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_SplGrpChk::~dBgS_SplGrpChk() +252 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .data +242 24.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_Chk::~dBgS_Chk() +160 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::init_mtx() +152 2.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .rodata +130 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::~daObjHtetu1Splash_c() +112 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_draw() +93 4.17% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_PolyPassChk::~dBgS_PolyPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_GrpPassChk::~dBgS_GrpPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyInfo::~cBgS_PolyInfo() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyPassChk::~cBgS_PolyPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_GrpPassChk::~cBgS_GrpPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::daObjHtetu1Splash_c() +56 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::check_sw() +53 7.14% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::solidHeapCB(fopAc_ac_c*) +28 12.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @48@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @36@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__14dBgS_SplGrpChkFv +8 0.00% 100.00%

...and 7 more new matches


Report for GZLP01 (61a3a0a - fe8e6b6)

📈 Matched code: 69.86% (+0.07%, +5148 bytes)
📈 Linked code: 56.30% (+0.07%, +5296 bytes)
📈 Matched data: 87.59% (+0.02%, +450 bytes)
📈 Linked data: 48.08% (+0.02%, +450 bytes)

✅ 37 new matches
Unit Item Bytes Before After
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_execute() +1100 0.36% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_create() +453 0.88% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::get_water_h() +400 0.99% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_WtrChk::~dBgS_WtrChk() +292 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::splash_manager() +280 1.41% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::unlock() +272 1.45% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_delete() +261 1.52% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::create_s(unsigned short, cXyz*, csXyz*, dKy_tevstr_c*) +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::create_heap() +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_SplGrpChk::~dBgS_SplGrpChk() +252 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .data +242 24.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_Chk::~dBgS_Chk() +160 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::init_mtx() +152 2.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .rodata +130 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::~daObjHtetu1Splash_c() +112 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_draw() +93 4.17% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_PolyPassChk::~dBgS_PolyPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_GrpPassChk::~dBgS_GrpPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyInfo::~cBgS_PolyInfo() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyPassChk::~cBgS_PolyPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_GrpPassChk::~cBgS_GrpPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::daObjHtetu1Splash_c() +56 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::check_sw() +53 7.14% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::solidHeapCB(fopAc_ac_c*) +28 12.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @48@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @36@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__14dBgS_SplGrpChkFv +8 0.00% 100.00%

...and 7 more new matches


Report for GZLJ01 (61a3a0a - fe8e6b6)

📈 Matched code: 69.91% (+0.07%, +5148 bytes)
📈 Linked code: 56.82% (+0.07%, +5296 bytes)
📈 Matched data: 88.25% (+0.02%, +450 bytes)
📈 Linked data: 47.20% (+0.02%, +450 bytes)

✅ 37 new matches
Unit Item Bytes Before After
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_execute() +1100 0.36% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_create() +453 0.88% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::get_water_h() +400 0.99% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_WtrChk::~dBgS_WtrChk() +292 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::splash_manager() +280 1.41% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::unlock() +272 1.45% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_delete() +261 1.52% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::create_s(unsigned short, cXyz*, csXyz*, dKy_tevstr_c*) +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::create_heap() +252 1.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_SplGrpChk::~dBgS_SplGrpChk() +252 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .data +242 24.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_Chk::~dBgS_Chk() +160 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::init_mtx() +152 2.56% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 .rodata +130 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::~daObjHtetu1Splash_c() +112 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::_draw() +93 4.17% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_PolyPassChk::~dBgS_PolyPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dBgS_GrpPassChk::~dBgS_GrpPassChk() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 dPa_levelEcallBack::~dPa_levelEcallBack() +92 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyInfo::~cBgS_PolyInfo() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_PolyPassChk::~cBgS_PolyPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 cBgS_GrpPassChk::~cBgS_GrpPassChk() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 JPACallBackBase<JPABaseEmitter*>::~JPACallBackBase() +72 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1Splash_c::daObjHtetu1Splash_c() +56 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::check_sw() +53 7.14% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 daObjHtetu1_c::solidHeapCB(fopAc_ac_c*) +28 12.50% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @48@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @36@__dt__11dBgS_WtrChkFv +8 0.00% 100.00%
d_a_obj_htetu1/d/actor/d_a_obj_htetu1 @16@__dt__14dBgS_SplGrpChkFv +8 0.00% 100.00%

...and 7 more new matches

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