From 03efb3f79a551172b1e724eff26d8c8116f96ca5 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sun, 30 Nov 2025 18:46:36 -0500 Subject: [PATCH 01/18] d_bg_w_kcol OK (#2897) * Match dBgWKCol::WallCorrect * Match dBgWKCol::ShdwDraw * Match dBgWKCol::WallCorrectSort * d_bg_w_kcol OK * Fix debug asserts --- configure.py | 2 +- src/d/d_bg_w_kcol.cpp | 235 +++++++++++++++++++----------------------- 2 files changed, 106 insertions(+), 131 deletions(-) diff --git a/configure.py b/configure.py index 9318d6967c..a8949d03c1 100755 --- a/configure.py +++ b/configure.py @@ -731,7 +731,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN, "Shield", "ShieldD"), "d/d_bg_s_wtr_chk.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_base.cpp"), - Object(NonMatching, "d/d_bg_w_kcol.cpp"), + Object(MatchingFor(ALL_GCN), "d/d_bg_w_kcol.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_sv.cpp"), Object(Equivalent, "d/d_cc_d.cpp"), # weak func order Object(MatchingFor(ALL_GCN), "d/d_cc_mass_s.cpp"), diff --git a/src/d/d_bg_w_kcol.cpp b/src/d/d_bg_w_kcol.cpp index 14da5ec83a..f08202e857 100644 --- a/src/d/d_bg_w_kcol.cpp +++ b/src/d/d_bg_w_kcol.cpp @@ -483,15 +483,9 @@ bool dBgWKCol::LineCheck(cBgS_LinChk* plinchk) { JUT_ASSERT(738, !isnan(pcross->x)); JUT_ASSERT(739, !isnan(pcross->y)); JUT_ASSERT(740, !isnan(pcross->z)); - JUT_ASSERT(745, - -FP_INFINITE < pcross->x && - pcross->x < FP_INFINITE); - JUT_ASSERT(747, - -FP_INFINITE < pcross->y && - pcross->y < FP_INFINITE); - JUT_ASSERT(749, - -FP_INFINITE < pcross->z && - pcross->z < FP_INFINITE); + JUT_ASSERT(745, -INF < pcross->x && pcross->x < INF); + JUT_ASSERT(747, -INF < pcross->y && pcross->y < INF); + JUT_ASSERT(749, -INF < pcross->z && pcross->z < INF); plinchk->SetPolyIndex(sp28[0]); } @@ -613,17 +607,13 @@ bool dBgWKCol::GroundCross(cBgS_GndChk* i_chk) { return var_r24; } -// NONMATCHING - stack void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) { - dBgPc polyCode_sp108; - cM3dGAab* bnd_spAC = param_0->GetBndP(); cXyz* minP_spA8 = bnd_spAC->GetMinP(); cXyz* maxP_spA4 = bnd_spAC->GetMaxP(); - Vec offset1_sp134; - Vec offset2_sp128; - Vec prismPos_sp11C; + dBgPc polyCode_sp108; + Vec sp11C[3]; cXyz localMin_spD4; cXyz localMax_spC8; @@ -799,7 +789,7 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) { if (!ChkShdwDrawThrough(&polyCode_sp108)) { prismData_sp20 = getPrismData(prism_sp34[0]); - prismPos_sp11C = + sp11C[0] = m_pkc_head->m_pos_data[prismData_sp20->pos_i]; nrm1_sp1C = @@ -815,8 +805,8 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) { if (!cM3d_IsZero(dot)) { PSVECScale(&cross1_spBC, &cross1_spBC, prismData_sp20->height / dot); - PSVECAdd(&cross1_spBC, &prismPos_sp11C, - &offset1_sp134); + PSVECAdd(&cross1_spBC, &sp11C[0], + &sp11C[2]); // Second edge direction temp_sp10 = m_pkc_head->m_nrm_data + @@ -828,13 +818,13 @@ void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) { if (!cM3d_IsZero(dot2)) { PSVECScale(&cross2_spB0, &cross2_spB0, prismData_sp20->height / dot2); - PSVECAdd(&cross2_spB0, &prismPos_sp11C, - &offset2_sp128); + PSVECAdd(&cross2_spB0, &sp11C[0], + &sp11C[1]); cM3dGPla pla_spF4; pla_spF4 = GetTriPla(prism_sp34[0]); (param_0->mCallbackFun)( - param_0, (cBgD_Vtx_t*)&prismPos_sp11C, + param_0, (cBgD_Vtx_t*)&sp11C, 0, 1, 2, &pla_spF4); } } @@ -1020,7 +1010,6 @@ static u8 lit_5300[8] = { }; #endif -// NONMATCHING - regalloc bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { bool sp_10 = false; @@ -1154,7 +1143,7 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { if (sp_c8 == sp_120 || sp_c8 == sp_11c || sp_c8 == sp_118) { } else { while (*++sp_c8 != 0) { - KC_PrismData* sp_c0 = getPrismData(*sp_c8); + KC_PrismData* sp_c0 = (KC_PrismData*)getPrismData(*sp_c8); Vec* sp_bc = m_pkc_head->m_nrm_data + sp_c0->fnrm_i; if (!cBgW_CheckBGround(sp_bc->y)) { f32 sp_b8 = JMAFastSqrt(sp_bc->x * sp_bc->x + sp_bc->z * sp_bc->z); @@ -1256,8 +1245,8 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { if (sp_a4 == NULL) { break; } - u32 sp_a0 = (u16)sp_a4->_4; - KC_PrismData* sp_9c = getPrismData(sp_a0); + int sp_a0 = sp_a4->_4; + KC_PrismData* sp_9c = (KC_PrismData*)getPrismData(sp_a0); Vec* sp_98 = m_pkc_head->m_nrm_data + sp_9c->fnrm_i; f32 sp_94 = JMAFastSqrt(sp_98->x * sp_98->x + sp_98->z * sp_98->z); cXyz sp_168; @@ -1265,15 +1254,15 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { cXyz sp_150; if (GetTriPnt(sp_9c, &sp_168, &sp_15c, &sp_150)) { f32 sp_90 = 1.0f / sp_94; - for (s32 cir_index_8c = 0; cir_index_8c < pwi->GetTblSize(); cir_index_8c++) { - f32 sp_88 = sp_90 * pwi->GetWallR(cir_index_8c); + for (int cir_index = 0; cir_index < pwi->GetTblSize(); cir_index++) { + f32 sp_88 = sp_90 * pwi->GetWallR(cir_index); sp_18c.x = sp_98->x * sp_88; sp_18c.z = sp_98->z * sp_88; f32 sp_84; - if (!pwi->ChkWallHDirect(cir_index_8c)) { - sp_84 = pwi->GetPos()->y + pwi->GetWallH(cir_index_8c) + pwi->GetWallAddY(sp_18c) - pwi->GetSpeedY(); + if (!pwi->ChkWallHDirect(cir_index)) { + sp_84 = pwi->GetPos()->y + pwi->GetWallH(cir_index) + pwi->GetWallAddY(sp_18c) - pwi->GetSpeedY(); } else { - sp_84 = pwi->GetWallHDirect(cir_index_8c); + sp_84 = pwi->GetWallHDirect(cir_index); } f32 sp_144[3]; sp_144[0] = sp_168.y - sp_84; @@ -1325,39 +1314,39 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { if (!cM3d_IsZero(sp_6c)) { f32 sp_68 = -sp_144[sp_7c] / sp_70; f32 sp_64 = -sp_144[sp_78] / sp_6c; - f32 cx0_60; - f32 cy0_5c; - f32 cx1_58; - f32 cy1_54; + f32 cx0; + f32 cy0; + f32 cx1; + f32 cy1; if (sp_80 == 0) { - cx0_60 = sp_15c.x + sp_68 * (sp_168.x - sp_15c.x); - cy0_5c = sp_15c.z + sp_68 * (sp_168.z - sp_15c.z); - cx1_58 = sp_150.x + sp_64 * (sp_168.x - sp_150.x); - cy1_54 = sp_150.z + sp_64 * (sp_168.z - sp_150.z); + cx0 = sp_15c.x + sp_68 * (sp_168.x - sp_15c.x); + cy0 = sp_15c.z + sp_68 * (sp_168.z - sp_15c.z); + cx1 = sp_150.x + sp_64 * (sp_168.x - sp_150.x); + cy1 = sp_150.z + sp_64 * (sp_168.z - sp_150.z); } else if (sp_80 == 1) { - cx0_60 = sp_168.x + sp_68 * (sp_15c.x - sp_168.x); - cy0_5c = sp_168.z + sp_68 * (sp_15c.z - sp_168.z); - cx1_58 = sp_150.x + sp_64 * (sp_15c.x - sp_150.x); - cy1_54 = sp_150.z + sp_64 * (sp_15c.z - sp_150.z); + cx0 = sp_168.x + sp_68 * (sp_15c.x - sp_168.x); + cy0 = sp_168.z + sp_68 * (sp_15c.z - sp_168.z); + cx1 = sp_150.x + sp_64 * (sp_15c.x - sp_150.x); + cy1 = sp_150.z + sp_64 * (sp_15c.z - sp_150.z); } else { - cx0_60 = sp_168.x + sp_68 * (sp_150.x - sp_168.x); - cy0_5c = sp_168.z + sp_68 * (sp_150.z - sp_168.z); - cx1_58 = sp_15c.x + sp_64 * (sp_150.x - sp_15c.x); - cy1_54 = sp_15c.z + sp_64 * (sp_150.z - sp_15c.z); + cx0 = sp_168.x + sp_68 * (sp_150.x - sp_168.x); + cy0 = sp_168.z + sp_68 * (sp_150.z - sp_168.z); + cx1 = sp_15c.x + sp_64 * (sp_150.x - sp_15c.x); + cy1 = sp_15c.z + sp_64 * (sp_150.z - sp_15c.z); } - cx0_60 += sp_18c.x; - cy0_5c += sp_18c.z; - cx1_58 += sp_18c.x; - cy1_54 += sp_18c.z; + cx0 += sp_18c.x; + cy0 += sp_18c.z; + cx1 += sp_18c.x; + cy1 += sp_18c.z; f32 sp_50; f32 sp_4c; f32 sp_48; bool sp_0f = - cM3d_Len2dSqPntAndSegLine(pwi->GetCx(), pwi->GetCz(), cx0_60, cy0_5c, cx1_58, - cy1_54, &sp_4c, &sp_48, &sp_50); + cM3d_Len2dSqPntAndSegLine(pwi->GetCx(), pwi->GetCz(), cx0, cy0, cx1, + cy1, &sp_4c, &sp_48, &sp_50); f32 sp_44 = sp_4c - pwi->GetCx(); f32 sp_40 = sp_48 - pwi->GetCz(); - f32 sp_3c = pwi->GetWallRR(cir_index_8c); + f32 sp_3c = pwi->GetWallRR(cir_index); if (sp_50 > sp_3c || sp_44 * sp_18c.x + sp_40 * sp_18c.z < 0.0f) { continue; @@ -1376,36 +1365,30 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { JUT_ASSERT(0x77e, !isnan(pwi->GetPos()->x)); JUT_ASSERT(0x77f, !isnan(pwi->GetPos()->z)); - JUT_ASSERT(0x782, -INF < pwi->GetPos()->x && - pwi->GetPos()->x < INF); - JUT_ASSERT(0x784, -INF < pwi->GetPos()->z && - pwi->GetPos()->z < INF); + JUT_ASSERT(0x782, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF); + JUT_ASSERT(0x784, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF); pwi->CalcMovePosWork(); - pwi->SetWallCirHit(cir_index_8c); - pwi->SetWallPolyIndex(cir_index_8c, sp_a0); + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, sp_a0); s16 sp_16 = cM_atan2s(sp_98->x, sp_98->z); - pwi->SetWallAngleY(cir_index_8c, sp_16); + pwi->SetWallAngleY(cir_index, sp_16); sp_10 = true; } else { - cx0_60 -= sp_18c.x; - cy0_5c -= sp_18c.z; - cx1_58 -= sp_18c.x; - cy1_54 -= sp_18c.z; + cx0 -= sp_18c.x; + cy0 -= sp_18c.z; + cx1 -= sp_18c.x; + cy1 -= sp_18c.z; - JUT_ASSERT(0x797, - pwi->GetPos()->x == pwi->GetWallCirP(cir_index_8c)->GetCx()) - JUT_ASSERT(0x799, pwi->GetPos()->z == - pwi->GetWallCirP(cir_index_8c)->GetCy()); + JUT_ASSERT(0x797, pwi->GetPos()->x == pwi->GetWallCirP(cir_index)->GetCx()) + JUT_ASSERT(0x799, pwi->GetPos()->z == pwi->GetWallCirP(cir_index)->GetCy()); - f32 sp_34 = - cM3d_Len2dSq(cx0_60, cy0_5c, pwi->GetPos()->x, pwi->GetPos()->z); - f32 sp_30 = - cM3d_Len2dSq(cx1_58, cy1_54, pwi->GetPos()->x, pwi->GetPos()->z); - f32 onx_2c = -sp_98->x; - f32 ony_28 = -sp_98->z; + f32 sp_34 = cM3d_Len2dSq(cx0, cy0, pwi->GetPos()->x, pwi->GetPos()->z); + f32 sp_30 = cM3d_Len2dSq(cx1, cy1, pwi->GetPos()->x, pwi->GetPos()->z); + f32 onx = -sp_98->x; + f32 ony = -sp_98->z; - JUT_ASSERT(0x7a8, !(cM3d_IsZero(onx_2c) && cM3d_IsZero(ony_28))); + JUT_ASSERT(0x7a8, !(cM3d_IsZero(onx) && cM3d_IsZero(ony))); if (sp_34 < sp_30) { if (sp_34 > sp_3c) { @@ -1418,53 +1401,49 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { f32 sp_1c; f32 sp_18; - JUT_ASSERT(0x7b3, !isnan(cx0_60)); - JUT_ASSERT(0x7b4, !isnan(cy0_5c)); + JUT_ASSERT(0x7b3, !isnan(cx0)); + JUT_ASSERT(0x7b4, !isnan(cy0)); - cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index_8c), cx0_60, - cy0_5c, onx_2c, ony_28, &sp_1c, &sp_18); + cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index), cx0, + cy0, onx, ony, &sp_1c, &sp_18); - pwi->GetPos()->x += (cx0_60 - sp_1c); - pwi->GetPos()->z += (cy0_5c - sp_18); + pwi->GetPos()->x += (cx0 - sp_1c); + pwi->GetPos()->z += (cy0 - sp_18); - JUT_ASSERT(0x7bf, !isnan(pwi->GetPos()->x)); - JUT_ASSERT(0x7c0, !isnan(pwi->GetPos()->z)); - JUT_ASSERT(0x7c3, -INF < pwi->GetPos()->x && - pwi->GetPos()->x < INF) - JUT_ASSERT(0x7c5, -INF < pwi->GetPos()->z && - pwi->GetPos()->z < INF) + JUT_ASSERT(1983, !isnan(pwi->GetPos()->x)); + JUT_ASSERT(1984, !isnan(pwi->GetPos()->z)); + JUT_ASSERT(1987, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF) + JUT_ASSERT(1989, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF) pwi->CalcMovePosWork(); - pwi->SetWallCirHit(cir_index_8c); - pwi->SetWallPolyIndex(cir_index_8c, sp_a0); + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, sp_a0); s16 sp_14 = cM_atan2s(sp_98->x, sp_98->z); - pwi->SetWallAngleY(cir_index_8c, sp_14); + pwi->SetWallAngleY(cir_index, sp_14); sp_10 = true; pwi->SetWallHit(); } else if (!(sp_30 > sp_3c || fabsf(sp_30 - sp_3c) < 0.008f)) { f32 sp_1c; f32 sp_18; - JUT_ASSERT(0x7e2, !isnan(cx1_58)); - JUT_ASSERT(0x7e3, !isnan(cy1_54)); + JUT_ASSERT(0x7e2, !isnan(cx1)); + JUT_ASSERT(0x7e3, !isnan(cy1)); - cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index_8c), cx1_58, cy1_54, onx_2c, ony_28, &sp_1c, &sp_18); + cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index), cx1, cy1, onx, ony, &sp_1c, &sp_18); - pwi->GetPos()->x += (cx1_58 - sp_1c); - pwi->GetPos()->z += (cy1_54 - sp_18); + pwi->GetPos()->x += (cx1 - sp_1c); + pwi->GetPos()->z += (cy1 - sp_18); - JUT_ASSERT(0x7ed, !isnan(pwi->GetPos()->x)); - JUT_ASSERT(0x7ed, !isnan(pwi->GetPos()->z)); + JUT_ASSERT(2029, !isnan(pwi->GetPos()->x)); + JUT_ASSERT(2030, !isnan(pwi->GetPos()->z)); - JUT_ASSERT(0x7f1, -INF < pwi->GetPos()->x && - pwi->GetPos()->x < INF) - JUT_ASSERT(0x7f1, -INF < pwi->GetPos()->z && - pwi->GetPos()->z < INF) + JUT_ASSERT(2033, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF) + JUT_ASSERT(2035, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF) pwi->CalcMovePosWork(); - pwi->SetWallCirHit(cir_index_8c); - pwi->SetWallPolyIndex(cir_index_8c, sp_a0); + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, sp_a0); s16 sp_12 = cM_atan2s(sp_98->x, sp_98->z); - pwi->SetWallAngleY(cir_index_8c, sp_12); + pwi->SetWallAngleY(cir_index, sp_12); sp_10 = true; pwi->SetWallHit(); } @@ -1480,7 +1459,6 @@ bool dBgWKCol::WallCorrectSort(dBgS_Acch* pwi) { return sp_10; } -// NONMATCHING - missing mr bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { bool sp10 = false; @@ -1628,7 +1606,7 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { } while (*++spA4 != 0) { - KC_PrismData* sp9C = getPrismData(*spA4); + KC_PrismData* sp9C = (KC_PrismData*)getPrismData(*spA4); Vec* sp98 = m_pkc_head->m_nrm_data + sp9C->fnrm_i; if (cBgW_CheckBGround(sp98->y)) { continue; @@ -1655,18 +1633,18 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { } f32 sp90 = 1.0f / sp94; - for (int sp8C = 0; sp8C < pwi->GetTblSize(); sp8C++) { - f32 sp88 = sp90 * pwi->GetWallR(sp8C); + for (int cir_index = 0; cir_index < pwi->GetTblSize(); cir_index++) { + f32 sp88 = sp90 * pwi->GetWallR(cir_index); sp154.x = sp98->x * sp88; sp154.z = sp98->z * sp88; f32 sp84; - if (!pwi->ChkWallHDirect(sp8C)) { + if (!pwi->ChkWallHDirect(cir_index)) { sp84 = pwi->GetWallAddY(sp154) + - (pwi->GetPos()->y + pwi->GetWallH(sp8C)) - + (pwi->GetPos()->y + pwi->GetWallH(cir_index)) - pwi->GetSpeedY(); } else { - sp84 = pwi->GetWallHDirect(sp8C); + sp84 = pwi->GetWallHDirect(cir_index); } @@ -1762,7 +1740,7 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { f32 sp44 = sp4C - pwi->GetCx(); f32 sp40 = sp48 - pwi->GetCz(); - f32 sp3C = pwi->GetWallRR(sp8C); + f32 sp3C = pwi->GetWallRR(cir_index); if (sp50 > sp3C || sp44 * sp154.x + sp40 * sp154.z < 0.0f) { continue; } @@ -1781,19 +1759,19 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { JUT_ASSERT(0x98d, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF); JUT_ASSERT(0x98f, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF); pwi->CalcMovePosWork(); - pwi->SetWallCirHit(sp8C); - pwi->SetWallPolyIndex(sp8C, + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, *spA4); s16 sp16 = cM_atan2s(sp98->x, sp98->z); - pwi->SetWallAngleY(sp8C, sp16); + pwi->SetWallAngleY(cir_index, sp16); sp10 = true; } else { cx0 -= sp154.x; cy0 -= sp154.z; cx1 -= sp154.x; cy1 -= sp154.z; - JUT_ASSERT(0x9a2, pwi->GetPos()->x == pwi->GetWallCirP(sp8C)->GetCx()); - JUT_ASSERT(0x9a4, pwi->GetPos()->z == pwi->GetWallCirP(sp8C)->GetCy()); + JUT_ASSERT(0x9a2, pwi->GetPos()->x == pwi->GetWallCirP(cir_index)->GetCx()); + JUT_ASSERT(0x9a4, pwi->GetPos()->z == pwi->GetWallCirP(cir_index)->GetCy()); f32 sp34 = cM3d_Len2dSq(cx0, cy0, pwi->GetPos()->x, pwi->GetPos()->z); f32 sp30 = cM3d_Len2dSq(cx1, cy1, pwi->GetPos()->x, pwi->GetPos()->z); f32 onx = -sp98->x; @@ -1808,7 +1786,7 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { JUT_ASSERT(0x9bf, !isnan(cy0)); f32 sp24; f32 sp20; - cM2d_CrossCirLin(*pwi->GetWallCirP(sp8C), cx0, cy0, onx, ony, + cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index), cx0, cy0, onx, ony, &sp24, &sp20); pwi->GetPos()->x += cx0 - sp24; pwi->GetPos()->z += cy0 - sp20; @@ -1817,14 +1795,13 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { JUT_ASSERT(0x9d5, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF); - JUT_ASSERT(0x9d7, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF); pwi->CalcMovePosWork(); - pwi->SetWallCirHit(sp8C); - pwi->SetWallPolyIndex(sp8C, *spA4); + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, *spA4); s16 sp14 = cM_atan2s(sp98->x, sp98->z); - pwi->SetWallAngleY(sp8C, sp14); + pwi->SetWallAngleY(cir_index, sp14); sp10 = true; pwi->SetWallHit(); } else { @@ -1836,7 +1813,7 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { JUT_ASSERT(0x9f5, !isnan(cy1)); f32 sp1C; f32 sp18; - cM2d_CrossCirLin(*pwi->GetWallCirP(sp8C), cx1, cy1, onx, ony, &sp1C, + cM2d_CrossCirLin(*pwi->GetWallCirP(cir_index), cx1, cy1, onx, ony, &sp1C, &sp18); pwi->GetPos()->x += cx1 - sp1C; pwi->GetPos()->z += cy1 - sp18; @@ -1844,14 +1821,13 @@ bool dBgWKCol::WallCorrect(dBgS_Acch* pwi) { JUT_ASSERT(0xa07, !isnan(pwi->GetPos()->z)); JUT_ASSERT(0xa0a, -INF < pwi->GetPos()->x && pwi->GetPos()->x < INF); - JUT_ASSERT(0xa0c, -INF < pwi->GetPos()->z && pwi->GetPos()->z < INF); pwi->CalcMovePosWork(); - pwi->SetWallCirHit(sp8C); - pwi->SetWallPolyIndex(sp8C, *spA4); + pwi->SetWallCirHit(cir_index); + pwi->SetWallPolyIndex(cir_index, *spA4); s16 sp12 = cM_atan2s(sp98->x, sp98->z); - pwi->SetWallAngleY(sp8C, sp12); + pwi->SetWallAngleY(cir_index, sp12); sp10 = true; pwi->SetWallHit(); } @@ -1970,7 +1946,7 @@ bool dBgWKCol::RoofChk(dBgS_RoofChk* param_0) { param_0->SetNowY(tmp_height_kcw); sp0A = true; JUT_ASSERT(0xac8, !isnan(tmp_height_kcw)); - JUT_ASSERT(0xacb, -FP_INFINITE < tmp_height_kcw && tmp_height_kcw < FP_INFINITE); + JUT_ASSERT(0xacb, -INF < tmp_height_kcw && tmp_height_kcw < INF); bool sp08 = true; if (!(tmp_height_kcw - m_pkc_head->m_area_min_pos.y >= 0.0f)) { OS_PANIC(0xacf, "Failed assertion tmp_height_kcw - m_pkc_head->m_area_min_pos.y >= 0.0f"); @@ -2088,8 +2064,7 @@ bool dBgWKCol::SplGrpChk(dBgS_SplGrpChk* param_0) { sp09 = true; JUT_ASSERT(0xb73, !isnan(tmp_height_kcw)); - JUT_ASSERT(0xb76, - -FP_INFINITE < tmp_height_kcw && tmp_height_kcw < FP_INFINITE); + JUT_ASSERT(0xb76, -INF < tmp_height_kcw && tmp_height_kcw < INF); } } } From 1e2d9151a0ba815d9ebe11dcc0a66d037fb41449 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 1 Dec 2025 16:33:12 -0500 Subject: [PATCH 02/18] d_a_tag_kmsg OK (#2901) --- configure.py | 2 +- include/d/actor/d_a_tag_kmsg.h | 42 +++++++++++++--------------- src/d/actor/d_a_tag_kmsg.cpp | 51 ++++++++++++++++++++-------------- 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/configure.py b/configure.py index a8949d03c1..5c97518748 100755 --- a/configure.py +++ b/configure.py @@ -1714,7 +1714,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_tag_evtarea"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_evtmsg"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_howl"), - ActorRel(NonMatching, "d_a_tag_kmsg"), + ActorRel(MatchingFor(ALL_GCN), "d_a_tag_kmsg"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_lantern"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_mist"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_msg"), diff --git a/include/d/actor/d_a_tag_kmsg.h b/include/d/actor/d_a_tag_kmsg.h index 7b75e3d43c..7fe9c21a92 100644 --- a/include/d/actor/d_a_tag_kmsg.h +++ b/include/d/actor/d_a_tag_kmsg.h @@ -59,50 +59,46 @@ public: u32 getFlowNodeNo() { u16 rv = home.angle.z; - if (rv == 0xffff) { - return -1; - } - return rv; + return rv == 0xFFFF ? -1 : rv; } u8 getBitSW() { - return home.angle.x; + u16 r31 = home.angle.x; + return (u16)(r31 & 0xFF); } u32 getTalkAngle() { - u32 talkAngle = (fopAcM_GetParam(this) >> 5) & 0x7; - if (talkAngle == 7) { - return 0; - } else { - return talkAngle > 6 ? 6 : talkAngle; - } + u32 talkAngle = (fopAcM_GetParam(this) & 0xE0) >> 5; + return talkAngle == 7 ? 0 : + talkAngle > 6 ? 6 : + talkAngle; } u32 getTalkDis() { - u32 talkDis = fopAcM_GetParam(this) & 0x1f; - if (talkDis == 0x1f) { - return 0; - } else { - return talkDis > 0x13 ? 0x13 : talkDis; - } + u32 talkDis = fopAcM_GetParam(this) & 0x1F; + return talkDis == 0x1F ? 0 : + talkDis > 0x13 ? 0x13 : + talkDis; } f32 getAttnPosOffset() { u32 attnPosOffset = (fopAcM_GetParam(this) & 0xff0000) >> 0x10; - if (attnPosOffset == 0xff) { + if (attnPosOffset == 0xFF) { return G_CM3D_F_INF; - } else { - return attnPosOffset; } + f32 f31 = attnPosOffset; + return f31; } - u32 getChkType() { - return home.angle.x & 0x8000; + u8 getChkType() { + u16 r31 = home.angle.x; + return (bool)(r31 & 0x8000); } f32 getEyePosOffset() { u32 eyeOffset = (fopAcM_GetParam(this) & 0xff00) >> 8; - return (eyeOffset == 0xff) ? 0 : eyeOffset; + f32 f31 = eyeOffset == 0xFF ? 0 : eyeOffset; + return f31; } }; diff --git a/src/d/actor/d_a_tag_kmsg.cpp b/src/d/actor/d_a_tag_kmsg.cpp index f1b81cd1d4..2737dc370f 100644 --- a/src/d/actor/d_a_tag_kmsg.cpp +++ b/src/d/actor/d_a_tag_kmsg.cpp @@ -24,12 +24,14 @@ static char* l_resNameList[3] = { }; int daTag_KMsg_c::create() { - attention_info.position = current.pos; - eyePos = attention_info.position; + int r27 = 0; + + eyePos = attention_info.position = current.pos; + fopAcM_ct(this, daTag_KMsg_c); - int rv; + if (getType() == KMSG_TYPE_3) { - rv = dComIfG_resLoad(&mPhase, "Lv6Gate"); + int rv = dComIfG_resLoad(&mPhase, "Lv6Gate"); if (rv != cPhs_COMPLEATE_e) { return rv; } @@ -40,6 +42,22 @@ int daTag_KMsg_c::create() { mFlowNodeNo = getFlowNodeNo(); mEventIdx = -1; + OS_REPORT( + "\t(%s:%d) flowNo:%d, BitSW:%02x, dis:%d, angle:%d, eye:%f, attn:%f, scale:%f,%f,%f<%08x>(%d/%04x)\n", + fopAcM_getProcNameString(this), + getType(), + getFlowNodeNo(), + getBitSW(), + getTalkDis(), + getTalkAngle(), + getEyePosOffset(), + getAttnPosOffset(), + scale.x, scale.y, scale.z, + fopAcM_GetParam(this), + getChkType(), + home.angle.x + ); + if (isDelete()) { return cPhs_ERROR_e; } else { @@ -49,12 +67,11 @@ int daTag_KMsg_c::create() { int daTag_KMsg_c::Delete() { OS_REPORT("|%06d:%x|daTag_KMsg_c -> Delete\n", g_Counter.mCounter0, this); - fopAcM_GetID(this); + fopAcM_RegisterDeleteID(this, "TAG_KMSG"); this->~daTag_KMsg_c(); return 1; } -// NONMATCHING Various issues: stack, getTalkAngle int daTag_KMsg_c::Execute() { bool var_r28 = false; if (home.roomNo == dComIfGp_roomControl_getStayNo()) { @@ -70,11 +87,7 @@ int daTag_KMsg_c::Execute() { attention_info.flags = 0; } } else { -#if VERSION == VERSION_SHIELD_DEBUG attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkDis(), getTalkAngle()); -#else - attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkAngle(), getTalkDis()); -#endif attention_info.distances[fopAc_attn_SPEAK_e] = attention_info.distances[fopAc_attn_TALK_e]; if (getAttnPosOffset() != G_CM3D_F_INF) { attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; @@ -88,7 +101,9 @@ int daTag_KMsg_c::Execute() { attention_info.flags = 0; } - if (dComIfGp_event_runCheck()) { + // TODO: gameInfo fake match to force reuse of pointer + dComIfG_play_c* play = &g_dComIfG_gameInfo.play; + if (play->getEvent().runCheck()) { if (eventInfo.checkCommandTalk()) { u16 iVar10 = 0; switch (getType()) { @@ -104,7 +119,7 @@ int daTag_KMsg_c::Execute() { } mEventIdx = dComIfGp_getEventManager().getEventIdx(this, l_evtList[iVar10].mEventName, 0xff); - dComIfGp_getEvent().reset(this); + play->getEvent().reset(this); fopAcM_orderChangeEventId(this, mEventIdx, 1, 0xffff); } @@ -146,7 +161,7 @@ int daTag_KMsg_c::Execute() { } else { eventInfo.onCondition(1); if (getType() != KMSG_TYPE_1 && daNpcT_chkDoBtnIsSpeak(this)) { - if (getChkType() != KMSG_TYPE_0) { + if (getChkType()) { dComIfGp_setDoStatusForce(0x80, 2); } else { dComIfGp_setDoStatus(8, 0); @@ -193,9 +208,7 @@ int daTag_KMsg_c::Execute() { lin_chk.OnFrontFlag(); lin_chk.Set(&vec54, &vec60, NULL); if (dComIfG_Bgsp().LineCross(&lin_chk)) { - cXyz vec48; - cXyz vec30 = vec54 - vec60; - vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f; + cXyz vec48 = lin_chk.GetCross() + cXyz(vec54 - vec60).norm() * 10.0f; attention_info.position.x = vec48.x; attention_info.position.z = vec48.z; } @@ -220,11 +233,7 @@ int daTag_KMsg_c::isDelete() { case KMSG_TYPE_2: return 0; case KMSG_TYPE_3: - bool rv = false; - if (getBitSW() != 0xff && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) { - rv = true; - } - return rv; + return getBitSW() != 0xff && dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this)); case KMSG_TYPE_4: return 0; case KMSG_TYPE_5: From 6a5397e847ecb16a607a58daa51c8e20cc1b5fd1 Mon Sep 17 00:00:00 2001 From: robojumper Date: Tue, 2 Dec 2025 01:33:32 +0100 Subject: [PATCH 03/18] JStudio debug improvements (#2902) --- include/JSystem/JGadget/binary.h | 6 ++ include/JSystem/JGadget/linklist.h | 2 +- include/JSystem/JGadget/vector.h | 4 +- include/JSystem/JStudio/JStudio/ctb.h | 9 ++- .../JSystem/JStudio/JStudio/functionvalue.h | 2 +- .../JSystem/JStudio/JStudio/jstudio-control.h | 56 +++++++++---------- include/JSystem/JStudio/JStudio/object-id.h | 20 ++++--- .../JSystem/JStudio/JStudio_JStage/control.h | 4 +- src/JSystem/JStage/JSGCamera.cpp | 1 - src/JSystem/JStage/JSGFog.cpp | 4 +- src/JSystem/JStudio/JStudio/ctb.cpp | 32 ++++++----- src/JSystem/JStudio/JStudio/functionvalue.cpp | 2 +- .../JStudio/JStudio/fvb-data-parse.cpp | 16 +++--- .../JStudio/JStudio/jstudio-object.cpp | 8 ++- .../JStudio/JStudio/stb-data-parse.cpp | 32 ++++++----- .../JStudio/JStudio_JAudio2/object-sound.cpp | 4 +- .../JStudio_JParticle/object-particle.cpp | 4 +- .../JStudio/JStudio_JStage/object-actor.cpp | 6 +- .../JStudio_JStage/object-ambientlight.cpp | 5 +- .../JStudio/JStudio_JStage/object-camera.cpp | 18 +++--- .../JStudio/JStudio_JStage/object-fog.cpp | 2 +- .../JStudio/JStudio_JStage/object-light.cpp | 12 ++-- .../MSL_C++/MSL_Common/Include/algorithm.h | 1 + 23 files changed, 138 insertions(+), 112 deletions(-) diff --git a/include/JSystem/JGadget/binary.h b/include/JSystem/JGadget/binary.h index 77e74ffc5d..93b2a9c008 100644 --- a/include/JSystem/JGadget/binary.h +++ b/include/JSystem/JGadget/binary.h @@ -1,6 +1,7 @@ #ifndef BINARY_H #define BINARY_H +#include "JSystem/JUtility/JUTAssert.h" #include "dolphin/types.h" #include "JSystem/JGadget/search.h" @@ -14,7 +15,12 @@ struct TEBit { const void* parseVariableUInt_16_32_following(const void* pu16, u32* pu32First, u32* pu32Second, TEBit* tebit); +inline bool isPower2(unsigned int arg0) { + return arg0 != 0 && (arg0 & arg0 - 1) == 0; +} + inline u32 align_roundUp(unsigned int arg0, unsigned int uAlign) { + JUT_ASSERT(98, isPower2(uAlign)); return (arg0 + uAlign - 1) & ~(uAlign - 1); } diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index 3c378b1771..0ecc12669b 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -235,7 +235,7 @@ struct TLinkList : TNodeLinkList { iterator end() { return iterator(TNodeLinkList::end()); } const_iterator end() const { return const_iterator(const_cast(this)->end()); } T& front() { return *begin(); } - T& back() { return *--end(); } + T& back() { JUT_ASSERT(652, !empty()); return *--end(); } void pop_front() { erase(TNodeLinkList::begin()); } void Push_front(T* element) { Insert(begin(), element); } void Push_back(T* element) { Insert(end(), element); } diff --git a/include/JSystem/JGadget/vector.h b/include/JSystem/JGadget/vector.h index 73a2410885..ad18fa6dbb 100644 --- a/include/JSystem/JGadget/vector.h +++ b/include/JSystem/JGadget/vector.h @@ -51,7 +51,7 @@ struct TVector_pointer_void : TVector { void insert(void**, void* const&); void clear() { erase(begin(), end()); } - void push_back(const void*& ref) { insert(end(), (void* const&)ref); } + void push_back(void* const& ref) { insert(end(), ref); } }; template @@ -66,7 +66,7 @@ struct TVector_pointer : TVector_pointer_void { T* end() { return (T*)TVector_pointer_void::end(); } void push_back(const T& ref) { - static_cast(this)->push_back((const void*&)ref); + static_cast(this)->push_back(ref); } }; diff --git a/include/JSystem/JStudio/JStudio/ctb.h b/include/JSystem/JStudio/JStudio/ctb.h index acb7c06432..fb1312b870 100644 --- a/include/JSystem/JStudio/JStudio/ctb.h +++ b/include/JSystem/JStudio/JStudio/ctb.h @@ -55,8 +55,7 @@ struct data { } const void* getContent() const { - const THeaderData* header = (THeaderData*) getRaw(); - return header->content; + return ((THeaderData*) getRaw())->content; } }; @@ -86,7 +85,7 @@ struct data { } const void* getBlockEnd_() const { - return get()->field_0x8; + return ((const TBlockData*)getRaw())->field_0x8; } const void* get_ID() const { @@ -134,11 +133,11 @@ struct TControl { JStudio::ctb::TObject* getObject(void const*, u32); JStudio::ctb::TObject* getObject_index(u32); - TFactory* getFactory() { return pFactory_; } + TFactory* getFactory() const { return pFactory_; } void setFactory(TFactory* factory) { pFactory_ = factory; } /* 0x4 */ TFactory* pFactory_; - /* 0x8 */ JGadget::TLinkList mList; + /* 0x8 */ JGadget::TLinkList ocObject_; }; struct TParse : public JGadget::binary::TParse_header_block { diff --git a/include/JSystem/JStudio/JStudio/functionvalue.h b/include/JSystem/JStudio/JStudio/functionvalue.h index 25a71de8dd..69309a4219 100644 --- a/include/JSystem/JStudio/JStudio/functionvalue.h +++ b/include/JSystem/JStudio/JStudio/functionvalue.h @@ -545,7 +545,7 @@ inline f64 extrapolateParameter_clamp(f64 value, f64 max) { return 0.0; if (max <= value) - value = max; + return max; return value; } diff --git a/include/JSystem/JStudio/JStudio/jstudio-control.h b/include/JSystem/JStudio/JStudio/jstudio-control.h index e6fbb99957..a41df62dd3 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-control.h +++ b/include/JSystem/JStudio/JStudio/jstudio-control.h @@ -142,31 +142,31 @@ public: *pDst = rSrc; } - void transformOnSet_transform(TTransform_position* param_1, TTransform_position* param_2) const { - transformOnSet_transformTranslation(*param_1, param_2); + void transformOnSet_transform(const TTransform_position ¶m_1, TTransform_position* param_2) const { + transformOnSet_transformTranslation(param_1, param_2); } - void transformOnSet_transform(TTransform_translation_rotation_scaling* param_1, + void transformOnSet_transform(const TTransform_translation_rotation_scaling& param_1, TTransform_translation_rotation_scaling* param_2) const { - transformOnSet_transformTranslation(param_1->translation, ¶m_2->translation); - transformOnSet_transformRotation(param_1->rotation, ¶m_2->rotation); - transformOnSet_transformScaling(param_1->scaling, ¶m_2->scaling); + transformOnSet_transformTranslation(param_1.translation, ¶m_2->translation); + transformOnSet_transformRotation(param_1.rotation, ¶m_2->rotation); + transformOnSet_transformScaling(param_1.scaling, ¶m_2->scaling); } - TTransform_position* transformOnSet_transform_ifEnabled(TTransform_position* param_1, + const TTransform_position* transformOnSet_transform_ifEnabled(const TTransform_position& param_1, TTransform_position* param_2) const { if (!transformOnSet_isEnabled()) { - return param_1; + return ¶m_1; } transformOnSet_transform(param_1, param_2); return param_2; } - TTransform_translation_rotation_scaling* - transformOnSet_transform_ifEnabled(TTransform_translation_rotation_scaling* param_1, + const TTransform_translation_rotation_scaling* + transformOnSet_transform_ifEnabled(const TTransform_translation_rotation_scaling& param_1, TTransform_translation_rotation_scaling* param_2) const { if (!transformOnSet_isEnabled()) { - return param_1; + return ¶m_1; } transformOnSet_transform(param_1, param_2); return param_2; @@ -187,33 +187,33 @@ public: MTXMultVecSR(transformOnGet_getMatrix(), &rSrc, pDst); } - void transformOnGet_transform(TTransform_position_direction* param_1, + void transformOnGet_transform(const TTransform_position_direction& param_1, TTransform_position_direction* pDst) const { JUT_ASSERT(289, pDst!=NULL); - transformOnGet_transformTranslation(param_1->position, &pDst->position); - transformOnGet_transformDirection(param_1->direction, &pDst->direction); + transformOnGet_transformTranslation(param_1.position, &pDst->position); + transformOnGet_transformDirection(param_1.direction, &pDst->direction); } - TTransform_position_direction* - transformOnGet_transform_ifEnabled(TTransform_position_direction& param_1, + const TTransform_position_direction* + transformOnGet_transform_ifEnabled(const TTransform_position_direction& param_1, TTransform_position_direction* param_2) const { if (!transformOnGet_isEnabled()) { return ¶m_1; } - transformOnGet_transform(¶m_1, param_2); + transformOnGet_transform(param_1, param_2); return param_2; } - void transformOnGet_transform(TTransform_position* param_1, + void transformOnGet_transform(const TTransform_position& param_1, TTransform_position* pDst) const { - transformOnGet_transformTranslation(*param_1, pDst); + transformOnGet_transformTranslation(param_1, pDst); } - TTransform_position* - transformOnGet_transform_ifEnabled(TTransform_position* param_1, + const TTransform_position* + transformOnGet_transform_ifEnabled(const TTransform_position& param_1, TTransform_position* param_2) const { if (!transformOnGet_isEnabled()) { - return param_1; + return ¶m_1; } transformOnGet_transform(param_1, param_2); return param_2; @@ -257,18 +257,18 @@ public: MTXMultVecSR(transformOnSet_getMatrix(), &rSrc, pDst); } - void transformOnSet_transform(TTransform_position_direction* param_1, + void transformOnSet_transform(const TTransform_position_direction& param_1, TTransform_position_direction* pDst) const { JUT_ASSERT(219, pDst!=NULL); - transformOnSet_transformTranslation(param_1->position, &pDst->position); - transformOnSet_transformDirection(param_1->direction, &pDst->direction); + transformOnSet_transformTranslation(param_1.position, &pDst->position); + transformOnSet_transformDirection(param_1.direction, &pDst->direction); } - TTransform_position_direction* - transformOnSet_transform_ifEnabled(TTransform_position_direction* param_1, + const TTransform_position_direction* + transformOnSet_transform_ifEnabled(const TTransform_position_direction& param_1, TTransform_position_direction* param_2) const { if (!transformOnSet_isEnabled()) { - return param_1; + return ¶m_1; } transformOnSet_transform(param_1, param_2); return param_2; diff --git a/include/JSystem/JStudio/JStudio/object-id.h b/include/JSystem/JStudio/JStudio/object-id.h index 470667030d..a2699d4b47 100644 --- a/include/JSystem/JStudio/JStudio/object-id.h +++ b/include/JSystem/JStudio/JStudio/object-id.h @@ -9,7 +9,7 @@ namespace object { struct TIDData { public: - TIDData(const void* id, u32 id_size) : mID(id), mID_size(id_size) {} + TIDData(const void* pID, u32 uIDSize_) : mID(pID), mID_size(uIDSize_) {} static bool isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&); inline const u8* getID() const { return (const u8*)mID; } @@ -20,17 +20,21 @@ protected: /* 0x04 */ u32 mID_size; }; -struct TObject_ID : public TIDData { - TObject_ID(const void* id, u32 id_size) : TIDData(id, id_size) {} +struct TObject_ID { + TObject_ID(const void* id, u32 id_size) : mData(id, id_size) {} ~TObject_ID() {} - TIDData const& getIDData() const { return *this; } - const u8 *getID() const { return TIDData::getID(); } + TIDData const& getIDData() const { return mData; } + const u8 *getID() const { return mData.getID(); } + + TIDData mData; }; -struct TPRObject_ID_equal : public TIDData { - TPRObject_ID_equal(const void* id, u32 id_size) : TIDData(id, id_size) {} +struct TPRObject_ID_equal { + TPRObject_ID_equal(const void* id, u32 id_size) : mData(id, id_size) {} ~TPRObject_ID_equal() {} - bool operator()(TObject_ID const& id) const { return TIDData::isEqual(id.getIDData(), *this); } + bool operator()(TObject_ID const& id) const { return TIDData::isEqual(id.getIDData(), mData); } + + TIDData mData; }; } // namespace object diff --git a/include/JSystem/JStudio/JStudio_JStage/control.h b/include/JSystem/JStudio/JStudio_JStage/control.h index 9b813b5695..2afcf959ce 100644 --- a/include/JSystem/JStudio/JStudio_JStage/control.h +++ b/include/JSystem/JStudio/JStudio_JStage/control.h @@ -28,7 +28,7 @@ struct TCreateObject : public JStudio::TCreateObject { }; struct TAdaptor_object_ { - TAdaptor_object_(JStage::TSystem const*param_2, JStage::TObject *param_3) : + TAdaptor_object_(const JStudio::TAdaptor *, JStage::TSystem const*param_2, JStage::TObject *param_3) : pJSGSystem_(param_2), pJSGObject_(param_3) {} void adaptor_object_data_(void const*, u32, void const*, u32); JStage::TObject* adaptor_object_findJSGObject_(char const*); @@ -258,7 +258,7 @@ struct TAdaptor_light : public JStudio::TAdaptor_light, public TAdaptor_object_ virtual void operator()(f32, JStudio::TAdaptor*) const; virtual ~TVVOutput_direction_() {} - void adaptor_setOutput_(TAdaptor* adaptor) { + void adaptor_setOutput_(TAdaptor* adaptor) const { adaptor->adaptor_referVariableValue(field_0x4)->setOutput(this); } diff --git a/src/JSystem/JStage/JSGCamera.cpp b/src/JSystem/JStage/JSGCamera.cpp index 33cbbf5410..caf5865873 100644 --- a/src/JSystem/JStage/JSGCamera.cpp +++ b/src/JSystem/JStage/JSGCamera.cpp @@ -1,7 +1,6 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JStage/JSGCamera.h" -#include "math.h" #include "limits.h" JStage::TCamera::~TCamera() {} diff --git a/src/JSystem/JStage/JSGFog.cpp b/src/JSystem/JStage/JSGFog.cpp index e9b4506d08..b0fd300031 100644 --- a/src/JSystem/JStage/JSGFog.cpp +++ b/src/JSystem/JStage/JSGFog.cpp @@ -1,7 +1,7 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JStage/JSGFog.h" -#include "math.h" +#include "limits.h" JStage::TFog::~TFog() {} @@ -22,7 +22,7 @@ f32 JStage::TFog::JSGGetStartZ() const { void JStage::TFog::JSGSetStartZ(f32) {} f32 JStage::TFog::JSGGetEndZ() const { - return FLT_MAX; + return std::numeric_limits::max(); } void JStage::TFog::JSGSetEndZ(f32) {} diff --git a/src/JSystem/JStudio/JStudio/ctb.cpp b/src/JSystem/JStudio/JStudio/ctb.cpp index ac3bd711d3..9d98328def 100644 --- a/src/JSystem/JStudio/JStudio/ctb.cpp +++ b/src/JSystem/JStudio/JStudio/ctb.cpp @@ -16,31 +16,37 @@ int JStudio::ctb::TObject_TxyzRy::getScheme() const { JStudio::ctb::TControl::TControl() : pFactory_(NULL) {} -JStudio::ctb::TControl::~TControl() {} - -void JStudio::ctb::TControl::appendObject(JStudio::ctb::TObject* param_0) { - mList.Push_back(param_0); +JStudio::ctb::TControl::~TControl() { + JGADGET_ASSERTWARN(94, ocObject_.empty()); } -void JStudio::ctb::TControl::removeObject(JStudio::ctb::TObject* param_0) { - mList.Erase(param_0); +void JStudio::ctb::TControl::appendObject(JStudio::ctb::TObject* p) { + JUT_ASSERT(106, p!=NULL) + ocObject_.Push_back(p); +} + +void JStudio::ctb::TControl::removeObject(JStudio::ctb::TObject* p) { + JUT_ASSERT(113, p!=NULL) + ocObject_.Erase(p); } void JStudio::ctb::TControl::destroyObject(JStudio::ctb::TObject* param_0) { removeObject(param_0); - getFactory()->destroy(param_0); + TFactory *pFactory = getFactory(); + JUT_ASSERT(129, pFactory!=NULL); + pFactory->destroy(param_0); } void JStudio::ctb::TControl::destroyObject_all() { - while (!mList.empty()) { - destroyObject(&mList.back()); + while (!ocObject_.empty()) { + destroyObject(&ocObject_.back()); } } // NONMATCHING - TPRObject_ID_equal issues JStudio::ctb::TObject* JStudio::ctb::TControl::getObject(void const* param_0, u32 param_1) { - JGadget::TLinkList::iterator begin = mList.begin(); - JGadget::TLinkList::iterator end = mList.end(); + JGadget::TLinkList::iterator begin = ocObject_.begin(); + JGadget::TLinkList::iterator end = ocObject_.end(); JGadget::TLinkList::iterator local_50 = std::find_if(begin, end, object::TPRObject_ID_equal(param_0, param_1)); if ((local_50 != end) != false) { return &*local_50; @@ -49,10 +55,10 @@ JStudio::ctb::TObject* JStudio::ctb::TControl::getObject(void const* param_0, u3 } JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) { - if (param_0 >= mList.size()) { + if (param_0 >= ocObject_.size()) { return 0; } - JGadget::TLinkList::iterator aiStack_14 = mList.begin(); + JGadget::TLinkList::iterator aiStack_14 = ocObject_.begin(); std::advance_fake(aiStack_14, param_0); return &*aiStack_14; } diff --git a/src/JSystem/JStudio/JStudio/functionvalue.cpp b/src/JSystem/JStudio/JStudio/functionvalue.cpp index f87f5f0699..c84ee0f76c 100644 --- a/src/JSystem/JStudio/JStudio/functionvalue.cpp +++ b/src/JSystem/JStudio/JStudio/functionvalue.cpp @@ -185,7 +185,7 @@ void TFunctionValueAttribute_range::range_set(f64 begin, f64 end) { fEnd_ = end; fDifference_ = end - begin; - JUT_ASSERT(458, fDifference_ >= TValue(0)); + JUT_ASSERT(458, fDifference_>=TValue(0)); } // /* 80281A08-80281D18 27C348 0310+00 2/2 0/0 0/0 .text diff --git a/src/JSystem/JStudio/JStudio/fvb-data-parse.cpp b/src/JSystem/JStudio/JStudio/fvb-data-parse.cpp index c5d374b619..a2a397e126 100644 --- a/src/JSystem/JStudio/JStudio/fvb-data-parse.cpp +++ b/src/JSystem/JStudio/JStudio/fvb-data-parse.cpp @@ -2,15 +2,17 @@ #include "JSystem/JStudio/JStudio/fvb-data-parse.h" -void JStudio::fvb::data::TParse_TParagraph::getData(TParse_TParagraph::TData* data) const +void JStudio::fvb::data::TParse_TParagraph::getData(TParse_TParagraph::TData* pData) const { - u16* parse = (u16*)JGadget::binary::parseVariableUInt_16_32_following(getRaw(), (u32*)data, (u32*)&data->u32Type, NULL); - u32 t = (u32)data->u32Size; + JUT_ASSERT(24, pData!=NULL); + const void *ptr = getRaw(); + ptr = JGadget::binary::parseVariableUInt_16_32_following(ptr, (u32*)pData, (u32*)&pData->u32Type, NULL); + u32 t = (u32)pData->u32Size; if (!t) { - data->pContent = NULL; - data->next = parse; + pData->pContent = NULL; + pData->next = (const u16*)ptr; } else { - data->pContent = parse; - data->next = parse + ((t + 3) >> 1 & ~1); + pData->pContent = (const u16*)ptr; + pData->next = (u8*)ptr + JGadget::binary::align_roundUp(t, 4); } } diff --git a/src/JSystem/JStudio/JStudio/jstudio-object.cpp b/src/JSystem/JStudio/JStudio/jstudio-object.cpp index 8a3fde8851..00308345df 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-object.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-object.cpp @@ -73,12 +73,16 @@ void JStudio::TVariableValue::update_immediate_(JStudio::TVariableValue* param_0 } void JStudio::TVariableValue::update_time_(JStudio::TVariableValue* param_0, f64 param_1) { - param_0->mValue = param_0->field_0xc.val * (param_0->field_0x4 * param_1); + f64 v = param_0->field_0xc.val * (param_0->field_0x4 * param_1); + param_0->mValue = v; } void JStudio::TVariableValue::update_functionValue_(JStudio::TVariableValue* param_0, f64 param_1) { - param_0->mValue = param_0->field_0xc.fv->getValue(param_0->field_0x4 * param_1); + + TFunctionValue *fv = param_0->field_0xc.fv; + f64 v = fv->getValue(param_0->field_0x4 * param_1); + param_0->mValue = v; } JStudio::TVariableValue::TOutput_none_::~TOutput_none_() {} diff --git a/src/JSystem/JStudio/JStudio/stb-data-parse.cpp b/src/JSystem/JStudio/JStudio/stb-data-parse.cpp index c98f658239..5a1dd03a7a 100644 --- a/src/JSystem/JStudio/JStudio/stb-data-parse.cpp +++ b/src/JSystem/JStudio/JStudio/stb-data-parse.cpp @@ -9,39 +9,41 @@ namespace stb { namespace data { void TParse_TSequence::getData(TData* pData) const { - ASSERT(pData != NULL); + JUT_ASSERT(50, pData!=NULL); pData->content = NULL; pData->next = NULL; u32 head = get_head(); u8 type = head >> 24; u32 param = head & 0xffffff; - pData->type = type; + pData->type = type & 0xff; pData->param = param; - if (type != 0) { - const void* next = (const void*)((int)getRaw() + 4); - if (type <= 0x7f) { - pData->next = next; - } else { - pData->content = next; - pData->next = (const void*)((int)next + param); - } + + if (type == 0) + return; + + const void* next = (const void*)((int)getRaw() + 4); + if (type <= 0x7f) { + pData->next = next; + } else { + pData->content = next; + pData->next = (const void*)((int)next + param); } } void TParse_TParagraph::getData(TData* pData) const { - ASSERT(pData != NULL); + JUT_ASSERT(80, pData!=NULL); const void* data = getRaw(); u32 result; - const void* next = parseVariableUInt_16_32_following(data, &result, &pData->type, NULL); + data = parseVariableUInt_16_32_following(data, &result, &pData->type, NULL); pData->param = result; if (result == 0) { pData->content = NULL; - pData->next = next; + pData->next = data; } else { - pData->content = next; - pData->next = (const void*)((int)next + align_roundUp(result, 4)); + pData->content = data; + pData->next = (const void*)((int)data + align_roundUp(result, 4)); } } diff --git a/src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp b/src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp index 223e740245..756e4ee0a9 100644 --- a/src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp +++ b/src/JSystem/JStudio/JStudio_JAudio2/object-sound.cpp @@ -109,11 +109,11 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_update(u32 param_1) { JUT_ASSERT(196, pControl!=NULL); JStudio::TControl::TTransform_position VStack_148; JStudio::TControl::TTransform_position VStack_154; - JStudio::TControl::TTransform_position* pVVar2; + const JStudio::TControl::TTransform_position* pVVar2; adaptor_getVariableValue_Vec(&VStack_148, JStudio::TAdaptor_sound::sauVariableValue_3_POSITION_XYZ); if (field_0x144 == 0) { - pVVar2 = pControl->transformOnSet_transform_ifEnabled(&VStack_148, &VStack_154); + pVVar2 = pControl->transformOnSet_transform_ifEnabled(VStack_148, &VStack_154); } else { if (!JStudio_JStage::transform_toGlobalFromLocal(&VStack_154, VStack_148, field_0x13c, field_0x140)) { return; diff --git a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp index 95257c90d8..532d51ab1a 100644 --- a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp +++ b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp @@ -281,10 +281,10 @@ JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmit &VStack_19c.scaling, sauVariableValue_3_SCALING_XYZ); if (pThis_->field_0x1d8 == 0) { - JStudio::TControl::TTransform_translation_rotation_scaling* pVVar9 = &VStack_19c; + const JStudio::TControl::TTransform_translation_rotation_scaling* pVVar9 = &VStack_19c; switch(pThis_->field_0x1cc) { case 0: - pVVar9 = pControl->transformOnSet_transform_ifEnabled(&VStack_19c, &aTStack_1c0); + pVVar9 = pControl->transformOnSet_transform_ifEnabled(VStack_19c, &aTStack_1c0); break; case 1: break; diff --git a/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp b/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp index f7ba8bea84..6fde196a91 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-actor.cpp @@ -4,7 +4,7 @@ JStudio_JStage::TAdaptor_actor::TAdaptor_actor(JStage::TSystem const* param_1, JStage::TActor* param_2) : - TAdaptor_object_(param_1,param_2) { + TAdaptor_object_(this, param_1,param_2) { field_0x130 = 0; field_0x134 = 0; field_0x138 = 0; @@ -265,9 +265,9 @@ void JStudio_JStage::TAdaptor_actor::setJSG_SRT_(JStudio::TControl const* pContr adaptor_getVariableValue_Vec(&transform.translation, sauVariableValue_3_TRANSLATION_XYZ); adaptor_getVariableValue_Vec(&transform.rotation, sauVariableValue_3_ROTATION_XYZ); adaptor_getVariableValue_Vec(&transform.scaling, sauVariableValue_3_SCALING_XYZ); - JStudio::TControl::TTransform_translation_rotation_scaling* pTransform; + const JStudio::TControl::TTransform_translation_rotation_scaling* pTransform; if (field_0x144 == 0) { - pTransform = pControl->transformOnSet_transform_ifEnabled(&transform, &multipliedTransform); + pTransform = pControl->transformOnSet_transform_ifEnabled(transform, &multipliedTransform); } else { pTransform = &transform; switch (field_0x138) { diff --git a/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp b/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp index 2d14618769..570855d29b 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-ambientlight.cpp @@ -8,7 +8,7 @@ JStudio_JStage::TAdaptor_ambientLight::TAdaptor_ambientLight(JStage::TSystem const* param_1, JStage::TAmbientLight* param_2) - : TAdaptor_object_(param_1, param_2) {} + : TAdaptor_object_(this, param_1, param_2) {} JStudio_JStage::TAdaptor_ambientLight::~TAdaptor_ambientLight() { adaptor_do_end(); @@ -19,7 +19,8 @@ void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_prepare() { void JStudio_JStage::TAdaptor_ambientLight::adaptor_do_begin() { adaptor_object_begin_(); - GXColor color = get_pJSG_()->JSGGetColor(); + JStage::TAmbientLight* light = get_pJSG_(); + GXColor color = light->JSGGetColor(); adaptor_setVariableValue_GXColor(sauVariableValue_4_COLOR_RGBA, color); } diff --git a/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp b/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp index 7f5849bb1b..173f821ae7 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp @@ -8,7 +8,7 @@ JStudio_JStage::TAdaptor_camera::TAdaptor_camera(JStage::TSystem const* param_1, JStage::TCamera* param_2) - : TAdaptor_object_(param_1, param_2) { + : TAdaptor_object_(this, param_1, param_2) { field_0x108 = 0; field_0x10c = 0; field_0x110 = -1; @@ -201,9 +201,9 @@ void JStudio_JStage::TAdaptor_camera::setJSG_position_(JStudio::TControl const* JStudio::TControl::TTransform_position VStack_138; JStudio::TControl::TTransform_position VStack_144; adaptor_getVariableValue_Vec(&VStack_138, sauVariableValue_3_POSITION_XYZ); - Vec* pViewPosition; + const Vec* pViewPosition; if (field_0x114 == 0) { - pViewPosition = param_1->transformOnSet_transform_ifEnabled(&VStack_138, &VStack_144); + pViewPosition = param_1->transformOnSet_transform_ifEnabled(VStack_138, &VStack_144); } else { pViewPosition = &VStack_138; switch (field_0x108) { @@ -226,12 +226,12 @@ void JStudio_JStage::TAdaptor_camera::getJSG_position_(JStudio::TControl const* Mtx mtx; JStudio::TControl::TTransform_position transform; JStudio::TControl::TTransform_position tempTransform; - JStudio::TControl::TTransform_position* outTransform; + const JStudio::TControl::TTransform_position* outTransform; get_pJSG_()->JSGGetViewPosition(&transform); if (!field_0x114) { - outTransform = param_1->transformOnGet_transform_ifEnabled(&transform, &tempTransform); + outTransform = param_1->transformOnGet_transform_ifEnabled(transform, &tempTransform); } else { outTransform = &transform; switch (field_0x108) { @@ -262,11 +262,11 @@ void JStudio_JStage::TAdaptor_camera::getJSG_position_(JStudio::TControl const* void JStudio_JStage::TAdaptor_camera::setJSG_targetPosition_(JStudio::TControl const* param_1) { JStudio::TControl::TTransform_position transform; JStudio::TControl::TTransform_position tempTransform; - JStudio::TControl::TTransform_position* outTransform; + const JStudio::TControl::TTransform_position* outTransform; adaptor_getVariableValue_Vec(&transform, sauVariableValue_3_TARGET_POSITION_XYZ); if (field_0x120 == 0) { outTransform = param_1->transformOnSet_transform_ifEnabled( - &transform, &tempTransform); + transform, &tempTransform); } else { if (transform_toGlobalFromLocal(&tempTransform, transform, field_0x118, field_0x11c) == 0) { @@ -281,12 +281,12 @@ void JStudio_JStage::TAdaptor_camera::getJSG_targetPosition_(JStudio::TControl c Mtx mtx; JStudio::TControl::TTransform_position transform; JStudio::TControl::TTransform_position tempTransform; - JStudio::TControl::TTransform_position* outTransform; + const JStudio::TControl::TTransform_position* outTransform; get_pJSG_()->JSGGetViewTargetPosition(&transform); if (!field_0x120) { - outTransform = param_1->transformOnGet_transform_ifEnabled(&transform, &tempTransform); + outTransform = param_1->transformOnGet_transform_ifEnabled(transform, &tempTransform); } else { outTransform = &transform; bool check; diff --git a/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp b/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp index 9d884d2aa9..ba1f2391e3 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-fog.cpp @@ -7,7 +7,7 @@ #include "JSystem/JStudio/JStudio_JStage/object-fog.h" JStudio_JStage::TAdaptor_fog::TAdaptor_fog(JStage::TSystem const* param_0, JStage::TFog* param_1) - : TAdaptor_object_(param_0, param_1) {} + : TAdaptor_object_(this, param_0, param_1) {} JStudio_JStage::TAdaptor_fog::~TAdaptor_fog() { adaptor_do_end(); diff --git a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp index 21536bd449..f7e1e93696 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp @@ -4,7 +4,7 @@ JStudio_JStage::TAdaptor_light::TAdaptor_light(JStage::TSystem const* param_1, JStage::TLight* param_2) - : JStudio_JStage::TAdaptor_object_(param_1, param_2) { + : JStudio_JStage::TAdaptor_object_(this, param_1, param_2) { field_0x11c = 0; } @@ -55,7 +55,7 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_begin() { JStudio::TControl::TTransform_position_direction aTStack_b8; pLightObj->JSGGetPosition(&lightObjTransform.position); pLightObj->JSGGetDirection(&lightObjTransform.direction); - JStudio::TControl::TTransform_position_direction* finalTransform = + const JStudio::TControl::TTransform_position_direction* finalTransform = pControl->transformOnGet_transform_ifEnabled(lightObjTransform, &aTStack_b8); adaptor_setVariableValue_Vec(sauVariableValue_3_POSITION_XYZ, finalTransform->position); f32 dirx = finalTransform->direction.x; @@ -106,8 +106,8 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_update(u32 param_1) { adaptor_getVariableValue_Vec(&VStack_1c0, sauVariableValue_3_TARGET_POSITION_XYZ); VECSubtract(&VStack_1c0, &VStack_198.position, &VStack_198.direction); } - JStudio::TControl::TTransform_position_direction* pTrans = - pControl->transformOnSet_transform_ifEnabled(&VStack_198, &aTStack_1b0); + const JStudio::TControl::TTransform_position_direction* pTrans = + pControl->transformOnSet_transform_ifEnabled(VStack_198, &aTStack_1b0); lightObj->JSGSetPosition(pTrans->position); lightObj->JSGSetDirection(pTrans->direction); pJSGObject_->JSGUpdate(); @@ -152,5 +152,7 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_ENABLE(JStudio::data::TEOperatio void JStudio_JStage::TAdaptor_light::TVVOutput_direction_::operator()( f32 param_0, JStudio::TAdaptor* param_1) const { - ((JStudio_JStage::TAdaptor_light*)param_1)->field_0x11c = field_0x8; + JStudio_JStage::TAdaptor_light* p = (JStudio_JStage::TAdaptor_light*)param_1; + JUT_ASSERT(246, p!=NULL); + p->field_0x11c = field_0x8; } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h index e34b4ea75a..ea42bc41c9 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h @@ -73,6 +73,7 @@ ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T return first; } +// should be inline, but breaks JStudio/JStudio/ctb weak function order template InputIt find_if(InputIt first, InputIt last, UnaryPredicate p) { while (first != last && !p(*first)) { From 737db261e90ce8d501eb84f864b906c2f940d32e Mon Sep 17 00:00:00 2001 From: Sven Elmendorp <31472764+oga-sven@users.noreply.github.com> Date: Tue, 2 Dec 2025 01:36:09 +0100 Subject: [PATCH 04/18] Some variable names for hookshot and moved some values (#2900) * Some variable names for hookshot and moved some values * Revert using data.inc file --- include/d/actor/d_a_alink.h | 9 ++++---- src/d/actor/d_a_alink_effect.inc | 24 ++++++++++----------- src/d/actor/d_a_alink_hook.inc | 36 ++++++++++++++++---------------- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 888e8a899c..4677b0b5b5 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -13,6 +13,7 @@ #include "d/d_save.h" #include "f_op/f_op_actor_mng.h" #include "f_op/f_op_camera_mng.h" +#include "res/Object/AlAnm.h" class J2DAnmColorKey; class J2DAnmTransformKey; @@ -35,7 +36,7 @@ public: void initFrame() { field_0x4 = 0; - field_0x2c = 4.0f; + mLockCursorAngle = 4.0f; field_0x30 = 0.0f; } @@ -56,7 +57,7 @@ private: /* 0x20 */ J2DAnmTevRegKey* field_0x20; /* 0x24 */ J2DAnmColorKey* field_0x24; /* 0x28 */ J2DAnmTransformKey* field_0x28; - /* 0x2C */ f32 field_0x2c; + /* 0x2C */ f32 mLockCursorAngle; /* 0x30 */ f32 field_0x30; /* 0x34 */ f32 mPosX; /* 0x38 */ f32 mPosY; @@ -6708,8 +6709,8 @@ public: bool checkHorseTurnLAnime() const { return checkUpperAnime(0x24C); } bool checkHorseTurnRAnime() const { return checkUpperAnime(0x24D); } bool checkHorseTurnAnime() const { return checkHorseTurnLAnime() || checkHorseTurnRAnime(); } - bool checkHookshotShootAnime() const { return checkUpperAnime(0x18C); } - bool checkHookshotReadyAnime() const { return checkUpperAnime(0x18D); } + bool checkHookshotShootAnime() const { return checkUpperAnime(dRes_ID_ALANM_BCK_HSSHOOT_e); } + bool checkHookshotReadyAnime() const { return checkUpperAnime(dRes_ID_ALANM_BCK_HSWAIT_e); } BOOL checkHookshotAnime() const { return checkHookshotReadyAnime() || checkHookshotShootAnime(); } diff --git a/src/d/actor/d_a_alink_effect.inc b/src/d/actor/d_a_alink_effect.inc index 55b345bcd4..d7364c8301 100644 --- a/src/d/actor/d_a_alink_effect.inc +++ b/src/d/actor/d_a_alink_effect.inc @@ -1977,7 +1977,7 @@ void daAlink_blur_c::draw() { BOOL daAlink_lockCursor_c::create() { JKRArchive* arc = dComIfG_getObjectResInfo(l_arcName)->getArchive(); - field_0x2c = 0.0f; + mLockCursorAngle = 0.0f; field_0x4 = false; field_0x30 = 0.0f; @@ -2060,14 +2060,14 @@ extern "C" void setAnimation__7J2DPaneFP11J2DAnmColor() { } void daAlink_lockCursor_c::update() { - if (field_0x2c < 21.0f) { - field_0x2c = 21.0f; + if (mLockCursorAngle < 21.0f) { + mLockCursorAngle = 21.0f; } - field_0x2c += 0.9f; + mLockCursorAngle += 0.9f; - if (field_0x2c >= 50.0f) { - field_0x2c += -29.0f; + if (mLockCursorAngle >= 50.0f) { + mLockCursorAngle += -29.0f; } field_0x30 += 0.9f; @@ -2081,13 +2081,13 @@ void daAlink_lockCursor_c::update() { void daAlink_lockCursor_c::draw() { if (field_0x4 != 0) { - field_0x28->setFrame(field_0x2c); + field_0x28->setFrame(mLockCursorAngle); f32 var_f30; - if (field_0x2c > 21.0f) { + if (mLockCursorAngle > 21.0f) { var_f30 = 21.0f; } else { - var_f30 = field_0x2c; + var_f30 = mLockCursorAngle; } field_0x24->setFrame(var_f30); @@ -2097,10 +2097,10 @@ void daAlink_lockCursor_c::draw() { field_0xc->scale(0.6f, 0.6f); field_0xc->translate(mPosX, mPosY); - if (!(field_0x2c < 15.0f)) { + if (!(mLockCursorAngle < 15.0f)) { f32 var_f31; - if (field_0x2c < 21.0f) { - var_f31 = ((field_0x2c - 15.0f) * 40.0f) * 0.16666667f; + if (mLockCursorAngle < 21.0f) { + var_f31 = ((mLockCursorAngle - 15.0f) * 40.0f) * 0.16666667f; } else { var_f31 = ((field_0x4 * 0.00390625f) + 0.5f) * 40.0f; } diff --git a/src/d/actor/d_a_alink_hook.inc b/src/d/actor/d_a_alink_hook.inc index c500f5ad88..5648f66296 100644 --- a/src/d/actor/d_a_alink_hook.inc +++ b/src/d/actor/d_a_alink_hook.inc @@ -123,26 +123,26 @@ void daAlink_c::hsChainShape_c::draw() { } } } else { - const cXyz& sp3C = temp_r3->getHsChainRootPos(); - const cXyz& sp38 = temp_r3->getHsChainTopPos(); - cXyz spA4 = sp3C - sp38; + const cXyz& chainRootPos = temp_r3->getHsChainRootPos(); + const cXyz& chainTopPos = temp_r3->getHsChainTopPos(); + cXyz maxDistance = chainRootPos - chainTopPos; - f32 temp_f31 = spA4.abs(); + f32 maxDistanceF = maxDistance.abs(); f32 var_f30; cXyz sp98; csXyz sp6C; - if (temp_f31 > 1.0f) { - spA4 *= (1.0f / temp_f31); + if (maxDistanceF > 1.0f) { + maxDistance *= (1.0f / maxDistanceF); var_f30 = 0.0f; - sp98 = sp38; - sp6C.set(spA4.atan2sY_XZ(), spA4.atan2sX_Z(), 0); - sp98 = sp38; + sp98 = chainTopPos; + sp6C.set(maxDistance.atan2sY_XZ(), maxDistance.atan2sX_Z(), 0); + sp98 = chainTopPos; csXyz sp64(sp6C); - f32 sp34 = M_PI / temp_f31; + f32 sp34 = M_PI / maxDistanceF; f32 temp_f27; f32 var_f26 = 0.0f; @@ -153,7 +153,7 @@ void daAlink_c::hsChainShape_c::draw() { var_f28 *= -1.0f; } - while (temp_f31 > var_f30) { + while (maxDistanceF > var_f30) { temp_f27 = var_f28 * cM_fsin(sp34 * var_f30); s16 spC = cM_atan2s(temp_f27 - var_f26, 5.0f); sp64.x = sp6C.x + spC; @@ -180,15 +180,15 @@ void daAlink_c::hsChainShape_c::draw() { const cXyz& sp30 = temp_r3->getHsSubChainRootPos(); const cXyz& sp2C = temp_r3->getHsSubChainTopPos(); - spA4 = sp30 - sp2C; + maxDistance = sp30 - sp2C; - f32 temp_f1 = spA4.abs(); + f32 temp_f1 = maxDistance.abs(); if (temp_f1 > 1.0f) { - spA4 *= (1.0f / temp_f1); + maxDistance *= (1.0f / temp_f1); var_f30 = 0.0f; sp98 = sp2C; - sp6C.set(spA4.atan2sY_XZ(), spA4.atan2sX_Z(), 0); + sp6C.set(maxDistance.atan2sY_XZ(), maxDistance.atan2sX_Z(), 0); while (temp_f1 > var_f30) { mDoMtx_stack_c::copy(j3dSys.getViewMtx()); @@ -200,7 +200,7 @@ void daAlink_c::hsChainShape_c::draw() { sp5C->getShape()->simpleDrawCache(); - sp98 += spA4 * 5.0f; + sp98 += maxDistance * 5.0f; sp6C.z += 0x3000; var_f30 += 5.0f; } @@ -395,7 +395,7 @@ void daAlink_c::setHookshotModel() { mpHookshotLinChk->OffFullGrp(); mpHookshotLinChk->OnWaterGrp(); - J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(0x17F, 0x800); + J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_HS_TIP_OPEN_e, 0x800); mHookTipBck.init(bck2, 0, 2, 1.0f, 0, -1, false); mDoExt_setCurrentHeap(heap); @@ -548,7 +548,7 @@ void daAlink_c::setHookshotReadyAnime() { speed = daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed; } - setUpperAnimeBaseSpeed(0x18D, speed, 3.0f); + setUpperAnimeBaseSpeed(dRes_INDEX_ALANM_BCK_HSWAIT_e, speed, 3.0f); field_0x3020 = 0; initHookshotReady(); } From ffc86e0412d619136089b4b5d9e92cfc892f79d7 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 1 Dec 2025 21:37:04 -0500 Subject: [PATCH 05/18] Fix HIO load issues (#2903) * Fix HIO load order in daHoZelda_c::searchBodyAngle * Fix regression in daHoZelda_c::createHeap Apparently the HIO class being constructed having an explicit ctor breaks the compiler ability to branchlessly optimize the false/true return afterwards. Without an explicit ctor the compiler is able to optimize it successfully, which breaks the match. * Fix HIO load order in daNpc_ykW_c::setAttnPos * Remove false version diff * Update configure.py * Remove old comment * Fix alink HIO members being private * alink: Fix HIO loads in 3 retail functions and almost all debug functions --- configure.py | 2 +- include/d/actor/d_a_alink.h | 752 +++++++++++++++---- include/d/actor/d_a_hozelda.h | 14 +- include/d/actor/d_a_npc_ykw.h | 9 +- src/d/actor/d_a_alink.cpp | 947 ++++++++++++------------ src/d/actor/d_a_alink_HIO.inc | 16 +- src/d/actor/d_a_alink_bomb.inc | 26 +- src/d/actor/d_a_alink_boom.inc | 44 +- src/d/actor/d_a_alink_bottle.inc | 40 +- src/d/actor/d_a_alink_bow.inc | 58 +- src/d/actor/d_a_alink_canoe.inc | 82 +-- src/d/actor/d_a_alink_copyrod.inc | 34 +- src/d/actor/d_a_alink_crawl.inc | 28 +- src/d/actor/d_a_alink_cut.inc | 276 +++---- src/d/actor/d_a_alink_damage.inc | 128 ++-- src/d/actor/d_a_alink_demo.inc | 114 +-- src/d/actor/d_a_alink_effect.inc | 8 +- src/d/actor/d_a_alink_grab.inc | 158 ++-- src/d/actor/d_a_alink_guard.inc | 49 +- src/d/actor/d_a_alink_hang.inc | 200 ++--- src/d/actor/d_a_alink_hook.inc | 52 +- src/d/actor/d_a_alink_horse.inc | 88 +-- src/d/actor/d_a_alink_hvyboots.inc | 8 +- src/d/actor/d_a_alink_iceleaf.inc | 83 ++- src/d/actor/d_a_alink_ironball.inc | 82 +-- src/d/actor/d_a_alink_kandelaar.inc | 28 +- src/d/actor/d_a_alink_link.inc | 13 +- src/d/actor/d_a_alink_spinner.inc | 66 +- src/d/actor/d_a_alink_sumou.inc | 8 +- src/d/actor/d_a_alink_swim.inc | 216 +++--- src/d/actor/d_a_alink_whistle.inc | 6 +- src/d/actor/d_a_alink_wolf.inc | 1043 ++++++++++++++------------- src/d/actor/d_a_hozelda.cpp | 33 +- src/d/actor/d_a_npc_ykm.cpp | 1 - src/d/actor/d_a_npc_ykw.cpp | 103 ++- 35 files changed, 2658 insertions(+), 2157 deletions(-) diff --git a/configure.py b/configure.py index 5c97518748..6595502427 100755 --- a/configure.py +++ b/configure.py @@ -1942,7 +1942,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_formation_mng"), ActorRel(MatchingFor(ALL_GCN), "d_a_guard_mng"), ActorRel(NonMatching, "d_a_horse"), - ActorRel(NonMatching, "d_a_hozelda"), + ActorRel(Equivalent, "d_a_hozelda"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_izumi_gate"), ActorRel(MatchingFor(ALL_GCN), "d_a_kago"), ActorRel(MatchingFor(ALL_GCN), "d_a_kytag01"), diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 4677b0b5b5..2bd37b5d86 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -45,7 +45,7 @@ public: mPosY = i_posY; } -private: +public: /* 0x04 */ u8 field_0x4; /* 0x05 */ u8 field_0x5[3]; /* 0x08 */ J2DScreen* mScrn; @@ -211,6 +211,7 @@ struct daAlink_WlAnmData { class daAlinkHIO_data_c : public JORReflexible { public: +#ifdef DEBUG daAlinkHIO_data_c(); ~daAlinkHIO_data_c(); @@ -219,9 +220,13 @@ public: void baseCopy(); void update(); +#ifdef DEBUG virtual void listenPropertyEvent(const JORPropertyEvent* event); +#endif +#endif public: +#ifdef DEBUG /* 0x04 */ int m_anm_num; /* 0x08 */ int m_u8_num; /* 0x0C */ int m_s16_num; @@ -234,6 +239,7 @@ public: /* 0x28 */ void* mp_data; /* 0x2C */ const char* m_name_string; /* 0x30 */ daAlinkHIO_data_c* mpNext; +#endif }; struct daAlinkHIO_basic_c1 { @@ -272,13 +278,17 @@ public: class daAlinkHIO_basic_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_basic_c(); - ~daAlinkHIO_basic_c() {}; + ~daAlinkHIO_basic_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_basic_c1 m; +#endif }; struct daAlinkHIO_anm_c { @@ -319,13 +329,17 @@ public: class daAlinkHIO_move_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_move_c(); - ~daAlinkHIO_move_c() {}; + ~daAlinkHIO_move_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_move_c1 m; +#endif }; class daAlinkHIO_noActAtnMove_c1 { @@ -361,13 +375,17 @@ public: class daAlinkHIO_noActAtnMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_noActAtnMove_c(); - ~daAlinkHIO_noActAtnMove_c() {}; + ~daAlinkHIO_noActAtnMove_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_noActAtnMove_c1 m; +#endif }; class daAlinkHIO_frontRoll_c1 { @@ -399,13 +417,17 @@ public: class daAlinkHIO_frontRoll_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_frontRoll_c(); - ~daAlinkHIO_frontRoll_c() {}; + ~daAlinkHIO_frontRoll_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_frontRoll_c1 m; +#endif }; class daAlinkHIO_backJump_c1 { @@ -425,13 +447,17 @@ public: class daAlinkHIO_backJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_backJump_c(); - ~daAlinkHIO_backJump_c() {}; + ~daAlinkHIO_backJump_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_backJump_c1 m; +#endif }; class daAlinkHIO_sideStep_c1 { @@ -455,13 +481,17 @@ public: class daAlinkHIO_sideStep_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_sideStep_c(); - ~daAlinkHIO_sideStep_c() {}; + ~daAlinkHIO_sideStep_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_sideStep_c1 m; +#endif }; class daAlinkHIO_slide_c1 { @@ -489,13 +519,17 @@ public: class daAlinkHIO_slide_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_slide_c(); - ~daAlinkHIO_slide_c() {}; + ~daAlinkHIO_slide_c() {} virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_slide_c1 m; +#endif }; class daAlinkHIO_atnMove_c1 { @@ -531,13 +565,17 @@ public: class daAlinkHIO_atnMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_atnMove_c(); ~daAlinkHIO_atnMove_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_atnMove_c1 m; +#endif }; class daAlinkHIO_cutNormal_c1 { @@ -575,12 +613,14 @@ public: class daAlinkHIO_cutNormal_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutNormal_c(int, float); ~daAlinkHIO_cutNormal_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_cutNormal_c1 m; }; // Size: 0x58 @@ -629,12 +669,14 @@ public: class daAlinkHIO_cutFinish_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutFinish_c(int, float); ~daAlinkHIO_cutFinish_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_cutFinish_c1 m; }; @@ -664,13 +706,17 @@ public: class daAlinkHIO_cutFnJU_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutFnJU_c(); ~daAlinkHIO_cutFnJU_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutFnJU_c1 m; +#endif }; // Size: 0x88 class daAlinkHIO_cutDash_c1 { @@ -697,12 +743,14 @@ public: class daAlinkHIO_cutDash_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutDash_c(int, float); ~daAlinkHIO_cutDash_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_cutDash_c1 m; }; @@ -727,13 +775,17 @@ public: class daAlinkHIO_cutJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutJump_c(); ~daAlinkHIO_cutJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutJump_c1 m; +#endif }; // Size: 0x78 class daAlinkHIO_cutTurn_c1 { @@ -774,13 +826,17 @@ public: class daAlinkHIO_cutTurn_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutTurn_c(); ~daAlinkHIO_cutTurn_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutTurn_c1 m; +#endif }; // Size: 0xCC class daAlinkHIO_hoCut_c1 { @@ -813,12 +869,14 @@ public: class daAlinkHIO_hoCut_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_hoCut_c(int, float); ~daAlinkHIO_hoCut_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_hoCut_c1 m; }; // Size: 0x58 @@ -844,13 +902,17 @@ public: class daAlinkHIO_hoCutCharge_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_hoCutCharge_c(); ~daAlinkHIO_hoCutCharge_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_hoCutCharge_c1 m; +#endif }; // Size: 0x88 class daAlinkHIO_cutDown_c1 { @@ -874,13 +936,17 @@ public: class daAlinkHIO_cutDown_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutDown_c(); ~daAlinkHIO_cutDown_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutDown_c1 m; +#endif }; // Size: 0xA8 class daAlinkHIO_cutHead_c1 { @@ -906,13 +972,17 @@ public: class daAlinkHIO_cutHead_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutHead_c(); ~daAlinkHIO_cutHead_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutHead_c1 m; +#endif }; // Size: 0x94 class daAlinkHIO_cutLargeJump_c1 { @@ -939,13 +1009,17 @@ public: class daAlinkHIO_cutLargeJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_cutLargeJump_c(); ~daAlinkHIO_cutLargeJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_cutLargeJump_c1 m; +#endif }; // Size: 0xA8 class daAlinkHIO_cut_c1 { @@ -982,24 +1056,47 @@ public: class daAlinkHIO_cut_c0 { public: + static daAlinkHIO_cutNmV_c0 const mCutVertical; + static daAlinkHIO_cutNmL_c0 const mCutLeft; + static daAlinkHIO_cutNmR_c0 const mCutRight; + static daAlinkHIO_cutNmSL_c0 const mCutLeftStab; + static daAlinkHIO_cutNmSR_c0 const mCutRightStab; + static daAlinkHIO_cutFnL_c0 const mCutFinishLeft; + static daAlinkHIO_cutFnV_c0 const mCutFinishVertical; + static daAlinkHIO_cutFnS_c0 const mCutFinishStab; + static daAlinkHIO_cutFnSl_c0 const mCutFinishSweep; + static daAlinkHIO_cutFnSm_c0 const mCutFinishSlash; + static daAlinkHIO_cutFnR_c0 const mCutFinishRight; + static daAlinkHIO_cutFnJU_c0 const mCutFinishJumpUppercut; + static daAlinkHIO_cutJump_c0 const mCutJump; + static daAlinkHIO_cutTurn_c0 const mCutTurn; + static daAlinkHIO_hoCutLA_c0 const mHorseCutLeftA; + static daAlinkHIO_hoCutLB_c0 const mHorseCutLeftB; + static daAlinkHIO_hoCutRA_c0 const mHorseCutRightA; + static daAlinkHIO_hoCutRB_c0 const mHorseCutRightB; + static daAlinkHIO_hoCutCharge_c0 const mHorseCutCharge; + static daAlinkHIO_cutDaL_c0 const mCutDashLeft; + static daAlinkHIO_cutDaR_c0 const mCutDashRight; + static daAlinkHIO_cutDaCharge_c0 const mCutDashCharge; + static daAlinkHIO_cutDown_c0 const mCutDown; + static daAlinkHIO_cutHead_c0 const mCutHead; + static daAlinkHIO_cutLargeJump_c0 const mCutLargeJump; static daAlinkHIO_cut_c1 const m; }; -class daAlinkHIO_cut_c -#ifdef DEBUG - : public daAlinkHIO_data_c -#endif -{ +class daAlinkHIO_cut_c : public daAlinkHIO_data_c { public: #ifdef DEBUG daAlinkHIO_cut_c(); -#endif ~daAlinkHIO_cut_c(); -#ifdef DEBUG virtual void genMessage(JORMContext*); +#else + ~daAlinkHIO_cut_c(); +#endif -private: +public: +#ifdef DEBUG /* 0x034 */ daAlinkHIO_cutNormal_c mCutVertical; /* 0x08C */ daAlinkHIO_cutNormal_c mCutLeft; /* 0x0E4 */ daAlinkHIO_cutNormal_c mCutRight; @@ -1050,12 +1147,14 @@ public: class daAlinkHIO_guardAttack_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_guardAttack_c(int, float); ~daAlinkHIO_guardAttack_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_guardAttack_c1 m; }; @@ -1080,13 +1179,17 @@ public: class daAlinkHIO_turnMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_turnMove_c(); ~daAlinkHIO_turnMove_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_turnMove_c1 m; +#endif }; class daAlinkHIO_guard_c1 { @@ -1113,21 +1216,28 @@ public: class daAlinkHIO_guard_c0 { public: + static daAlinkHIO_gAtPush_c0 const mAtPush; + static daAlinkHIO_gAtKick_c0 const mAtKick; + static daAlinkHIO_turnMove_c0 const mTurnMove; static daAlinkHIO_guard_c1 const m; }; class daAlinkHIO_guard_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_guard_c(); ~daAlinkHIO_guard_c(); virtual void genMessage(JORMContext*); +#endif -private: - /* 0x034 */ daAlinkHIO_guardAttack_c mGuardAttack1; - /* 0x090 */ daAlinkHIO_guardAttack_c mGuardAttack2; +public: +#ifdef DEBUG + /* 0x034 */ daAlinkHIO_guardAttack_c mAtPush; + /* 0x090 */ daAlinkHIO_guardAttack_c mAtKick; /* 0x0EC */ daAlinkHIO_turnMove_c mTurnMove; /* 0x14C */ daAlinkHIO_guard_c1 m; +#endif }; class daAlinkHIO_crouch_c1 { @@ -1153,13 +1263,17 @@ public: class daAlinkHIO_crouch_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_crouch_c(); ~daAlinkHIO_crouch_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_crouch_c1 m; +#endif }; class daAlinkHIO_autoJump_c1 { @@ -1204,13 +1318,17 @@ public: class daAlinkHIO_autoJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_autoJump_c(); ~daAlinkHIO_autoJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_autoJump_c1 m; +#endif }; class daAlinkHIO_smallJump_c1 { @@ -1230,13 +1348,17 @@ public: class daAlinkHIO_smallJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_smallJump_c(); ~daAlinkHIO_smallJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_smallJump_c1 m; +#endif }; class daAlinkHIO_wallCatch_c1 { @@ -1255,13 +1377,17 @@ public: class daAlinkHIO_wallCatch_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wallCatch_c(); ~daAlinkHIO_wallCatch_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_wallCatch_c1 m; +#endif }; class daAlinkHIO_wallFall_c1 { @@ -1277,13 +1403,17 @@ public: class daAlinkHIO_wallFall_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wallFall_c(); ~daAlinkHIO_wallFall_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_wallFall_c1 m; +#endif }; class daAlinkHIO_wallMove_c1 { @@ -1302,13 +1432,17 @@ public: class daAlinkHIO_wallMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wallMove_c(); ~daAlinkHIO_wallMove_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_wallMove_c1 m; +#endif }; class daAlinkHIO_wallHang_c1 { @@ -1325,22 +1459,30 @@ public: class daAlinkHIO_wallHang_c0 { public: + static daAlinkHIO_smallJump_c0 const mSmallJump; + static daAlinkHIO_wallCatch_c0 const mWallCatch; + static daAlinkHIO_wallFall_c0 const mWallFall; + static daAlinkHIO_wallMove_c0 const mWallMove; static daAlinkHIO_wallHang_c1 const m; }; class daAlinkHIO_wallHang_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wallHang_c(); ~daAlinkHIO_wallHang_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_smallJump_c mSmallJump; /* 0x00 */ daAlinkHIO_wallCatch_c mWallCatch; /* 0x00 */ daAlinkHIO_wallFall_c mWallFall; /* 0x00 */ daAlinkHIO_wallMove_c mWallMove; /* 0x00 */ daAlinkHIO_wallHang_c1 m; +#endif }; class daAlinkHIO_pushpull_c1 { @@ -1373,13 +1515,17 @@ public: class daAlinkHIO_pushpull_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_pushpull_c(); ~daAlinkHIO_pushpull_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_pushpull_c1 m; +#endif }; class daAlinkHIO_damNormal_c1 { @@ -1403,13 +1549,17 @@ public: class daAlinkHIO_damNormal_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damNormal_c(); ~daAlinkHIO_damNormal_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_damNormal_c1 m; +#endif }; class daAlinkHIO_damLaHu_c1 { @@ -1443,13 +1593,17 @@ public: class daAlinkHIO_damLaHu_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damLaHu_c(int); ~daAlinkHIO_damLaHu_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG daAlinkHIO_damLaHu_c1 m; +#endif }; class daAlinkHIO_damHorse_c1 { @@ -1467,13 +1621,17 @@ public: class daAlinkHIO_damHorse_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damHorse_c(); ~daAlinkHIO_damHorse_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_damHorse_c1 m; +#endif }; class daAlinkHIO_damFall_c1 { @@ -1498,13 +1656,17 @@ public: class daAlinkHIO_damFall_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damFall_c(); ~daAlinkHIO_damFall_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_damFall_c1 m; +#endif }; class daAlinkHIO_damCaught_c1 { @@ -1524,13 +1686,17 @@ public: class daAlinkHIO_damCaught_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damCaught_c(); ~daAlinkHIO_damCaught_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_damCaught_c1 m; +#endif }; class daAlinkHIO_damSwim_c1 { @@ -1556,13 +1722,17 @@ public: class daAlinkHIO_damSwim_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damSwim_c(); ~daAlinkHIO_damSwim_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_damSwim_c1 m; +#endif }; class daAlinkHIO_damage_c1 { @@ -1595,24 +1765,35 @@ public: class daAlinkHIO_damage_c0 { public: static daAlinkHIO_damage_c1 const m; + static daAlinkHIO_damNormal_c0 const mDamNormal; + static daAlinkHIO_damLarge_c0 const mDamLarge; + static daAlinkHIO_damHuge_c0 const mDamHuge; + static daAlinkHIO_damHorse_c0 const mDamHorse; + static daAlinkHIO_damFall_c0 const mDamFall; + static daAlinkHIO_damCaught_c0 const mDamCaught; + static daAlinkHIO_damSwim_c0 const mDamSwim; }; class daAlinkHIO_damage_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_damage_c(); ~daAlinkHIO_damage_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_damage_c1 m; /* 0x34 */ daAlinkHIO_damNormal_c mDamNormal; - /* 0x00 */ daAlinkHIO_damLaHu_c mDamLaHu0; - /* 0x00 */ daAlinkHIO_damLaHu_c mDamLaHu1; + /* 0x00 */ daAlinkHIO_damLaHu_c mDamLarge; + /* 0x00 */ daAlinkHIO_damLaHu_c mDamHuge; /* 0x00 */ daAlinkHIO_damHorse_c mDamHorse; /* 0x00 */ daAlinkHIO_damFall_c mDamFall; /* 0x00 */ daAlinkHIO_damCaught_c mDamCaught; /* 0x00 */ daAlinkHIO_damSwim_c mDamSwim; +#endif }; class daAlinkHIO_horse_c1 { @@ -1640,13 +1821,17 @@ public: class daAlinkHIO_horse_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_horse_c(); ~daAlinkHIO_horse_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_horse_c1 m; +#endif }; class daAlinkHIO_canoe_c1 { @@ -1675,13 +1860,17 @@ public: class daAlinkHIO_canoe_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_canoe_c(); ~daAlinkHIO_canoe_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_canoe_c1 m; +#endif }; class daAlinkHIO_bow_c1 { @@ -1716,13 +1905,17 @@ public: class daAlinkHIO_bow_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_bow_c(); ~daAlinkHIO_bow_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_bow_c1 m; +#endif }; class daAlinkHIO_boom_c1 { @@ -1748,13 +1941,17 @@ public: class daAlinkHIO_boom_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_boom_c(); ~daAlinkHIO_boom_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_boom_c1 m; +#endif }; class daAlinkHIO_bomb_c1 { @@ -1788,13 +1985,17 @@ public: class daAlinkHIO_bomb_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_bomb_c(); ~daAlinkHIO_bomb_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_bomb_c1 m; +#endif }; class daAlinkHIO_huLight_c1 { @@ -1857,13 +2058,17 @@ public: class daAlinkHIO_light_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_light_c(int); ~daAlinkHIO_light_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_huLight_c1 m; +#endif }; class daAlinkHIO_kandelaar_c1 { @@ -1889,13 +2094,17 @@ public: class daAlinkHIO_kandelaar_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_kandelaar_c(); ~daAlinkHIO_kandelaar_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_kandelaar_c1 m; +#endif }; class daAlinkHIO_magneBoots_c1 { @@ -1924,13 +2133,17 @@ public: class daAlinkHIO_magneBoots_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_magneBoots_c(); ~daAlinkHIO_magneBoots_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_magneBoots_c1 m; +#endif }; class daAlinkHIO_fmChain_c1 { @@ -1946,13 +2159,17 @@ public: class daAlinkHIO_fmChain_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_fmChain_c(); ~daAlinkHIO_fmChain_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_fmChain_c1 m; +#endif }; class daAlinkHIO_hookshot_c1 { @@ -1982,13 +2199,17 @@ public: class daAlinkHIO_hookshot_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_hookshot_c(); ~daAlinkHIO_hookshot_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_hookshot_c1 m; +#endif }; class daAlinkHIO_spinner_c1 { @@ -2016,13 +2237,17 @@ public: class daAlinkHIO_spinner_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_spinner_c(); ~daAlinkHIO_spinner_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_spinner_c1 m; +#endif }; class daAlinkHIO_ironBall_c1 { @@ -2068,13 +2293,17 @@ public: class daAlinkHIO_ironBall_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_ironBall_c(); ~daAlinkHIO_ironBall_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_ironBall_c1 m; +#endif }; class daAlinkHIO_copyRod_c1 { @@ -2094,13 +2323,17 @@ public: class daAlinkHIO_copyRod_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_copyRod_c(); ~daAlinkHIO_copyRod_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_copyRod_c1 m; +#endif }; class daAlinkHIO_pickUp_c1 { @@ -2118,13 +2351,17 @@ public: class daAlinkHIO_pickUp_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_pickUp_c(); ~daAlinkHIO_pickUp_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_pickUp_c1 m; +#endif }; class daAlinkHIO_board_c1 { @@ -2161,13 +2398,17 @@ public: class daAlinkHIO_board_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_board_c(); ~daAlinkHIO_board_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_board_c1 m; +#endif }; class daAlinkHIO_bottle_c1 { @@ -2190,13 +2431,17 @@ public: class daAlinkHIO_bottle_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_bottle_c(); ~daAlinkHIO_bottle_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_bottle_c1 m; +#endif }; class daAlinkHIO_item_c1 { @@ -2214,17 +2459,35 @@ public: class daAlinkHIO_item_c0 { public: + static daAlinkHIO_bow_c0 const mBow; + static daAlinkHIO_boom_c0 const mBoomerang; + static daAlinkHIO_bomb_c0 const mBomb; + static daAlinkHIO_huLight_c0 const mLanternPL; + static daAlinkHIO_kandelaar_c0 const mLantern; + static daAlinkHIO_fmChain_c0 const mFmChain; + static daAlinkHIO_magneBoots_c0 const mIronBoots; + static daAlinkHIO_pickUp_c0 const mPickUp; + static daAlinkHIO_board_c0 const mBoard; + static daAlinkHIO_bottle_c0 const mBottle; + static daAlinkHIO_hookshot_c0 const mHookshot; + static daAlinkHIO_spinner_c0 const mSpinner; + static daAlinkHIO_ironBall_c0 const mIronBall; + static daAlinkHIO_copyRod_c0 const mCopyRod; + static daAlinkHIO_zwLight_c0 const mZoraArmorPL; static daAlinkHIO_item_c1 const m; }; class daAlinkHIO_item_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_item_c(); ~daAlinkHIO_item_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_bow_c mBow; /* 0x00 */ daAlinkHIO_boom_c mBoomerang; /* 0x00 */ daAlinkHIO_bomb_c mBomb; @@ -2241,6 +2504,7 @@ private: /* 0x00 */ daAlinkHIO_copyRod_c mCopyRod; /* 0x00 */ daAlinkHIO_light_c mZoraArmorPL; /* 0x00 */ daAlinkHIO_item_c1 m; +#endif }; class daAlinkHIO_ladder_c1 { @@ -2274,13 +2538,17 @@ public: class daAlinkHIO_ladder_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_ladder_c(); ~daAlinkHIO_ladder_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_ladder_c1 m; +#endif }; class daAlinkHIO_roofHang_c1 { @@ -2310,13 +2578,17 @@ public: class daAlinkHIO_roofHang_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_roofHang_c(); ~daAlinkHIO_roofHang_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_roofHang_c1 m; +#endif }; class daAlinkHIO_grab_c1 { @@ -2344,13 +2616,17 @@ public: class daAlinkHIO_grab_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_grab_c(); ~daAlinkHIO_grab_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_grab_c1 m; +#endif }; class daAlinkHIO_swim_c1 { @@ -2415,13 +2691,17 @@ public: class daAlinkHIO_swim_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_swim_c(); ~daAlinkHIO_swim_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_swim_c1 m; +#endif }; class daAlinkHIO_wlMove_c1 { @@ -2487,13 +2767,17 @@ public: class daAlinkHIO_wlMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlMove_c(); ~daAlinkHIO_wlMove_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlMove_c1 m; +#endif }; class daAlinkHIO_wlMoveNoP_c1 { @@ -2526,13 +2810,17 @@ public: class daAlinkHIO_wlMoveNoP_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlMoveNoP_c(); ~daAlinkHIO_wlMoveNoP_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlMoveNoP_c1 m; +#endif }; class daAlinkHIO_wlAtnMove_c1 { @@ -2561,13 +2849,17 @@ public: class daAlinkHIO_wlAtnMove_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtnMove_c(); ~daAlinkHIO_wlAtnMove_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlAtnMove_c1 m; +#endif }; class daAlinkHIO_wlHowl_c1 { @@ -2589,13 +2881,17 @@ public: class daAlinkHIO_wlHowl_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlHowl_c(); ~daAlinkHIO_wlHowl_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlHowl_c1 m; +#endif }; class daAlinkHIO_wlSideStep_c1 { @@ -2619,13 +2915,17 @@ public: class daAlinkHIO_wlSideStep_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlSideStep_c(); ~daAlinkHIO_wlSideStep_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlSideStep_c1 m; +#endif }; class daAlinkHIO_wlBackJump_c1 { @@ -2645,13 +2945,17 @@ public: class daAlinkHIO_wlBackJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlBackJump_c(); ~daAlinkHIO_wlBackJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlBackJump_c1 m; +#endif }; class daAlinkHIO_wlAutoJump_c1 { @@ -2686,13 +2990,17 @@ public: class daAlinkHIO_wlAutoJump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAutoJump_c(); ~daAlinkHIO_wlAutoJump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlAutoJump_c1 m; +#endif }; class daAlinkHIO_wlPush_c1 { @@ -2711,13 +3019,17 @@ public: class daAlinkHIO_wlPush_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlPush_c(); ~daAlinkHIO_wlPush_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlPush_c1 m; +#endif }; class daAlinkHIO_wlLie_c1 { @@ -2743,13 +3055,17 @@ public: class daAlinkHIO_wlLie_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlLie_c(); ~daAlinkHIO_wlLie_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlLie_c1 m; +#endif }; class daAlinkHIO_wlWallHang_c1 { @@ -2778,13 +3094,17 @@ public: class daAlinkHIO_wlWallHang_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlWallHang_c(); ~daAlinkHIO_wlWallHang_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlWallHang_c1 m; +#endif }; class daAlinkHIO_wlDamNormal_c1 { @@ -2806,13 +3126,17 @@ public: class daAlinkHIO_wlDamNormal_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlDamNormal_c(); ~daAlinkHIO_wlDamNormal_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlDamNormal_c1 m; +#endif }; class daAlinkHIO_wlDamLaHu_c1 { @@ -2842,13 +3166,17 @@ public: class daAlinkHIO_wlDamLaHu_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlDamLaHu_c(int); ~daAlinkHIO_wlDamLaHu_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlDamLaHu_c1 m; +#endif }; class daAlinkHIO_wlDamCaught_c1 { @@ -2867,13 +3195,17 @@ public: class daAlinkHIO_wlDamCaught_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlDamCaught_c(); ~daAlinkHIO_wlDamCaught_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlDamCaught_c1 m; +#endif }; class daAlinkHIO_wlDamFall_c1 { @@ -2896,13 +3228,17 @@ public: class daAlinkHIO_wlDamFall_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlDamFall_c(); ~daAlinkHIO_wlDamFall_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlDamFall_c1 m; +#endif }; class daAlinkHIO_wlDamage_c1 { @@ -2915,20 +3251,29 @@ public: class daAlinkHIO_wlDamage_c0 { public: static daAlinkHIO_wlDamage_c1 const m; + static daAlinkHIO_wlDamNormal_c0 const mNormal; + static daAlinkHIO_wlDamLarge_c0 const mLarge; + static daAlinkHIO_wlDamHuge_c0 const mHuge; + static daAlinkHIO_wlDamFall_c0 const mFall; + static daAlinkHIO_wlDamCaught_c0 const mCapture; }; class daAlinkHIO_wlDamage_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlDamage_c(); ~daAlinkHIO_wlDamage_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlDamage_c1 m; +#endif /* 0x00 */ daAlinkHIO_wlDamNormal_c mNormal; /* 0x00 */ daAlinkHIO_wlDamLaHu_c mLarge; - /* 0x00 */ daAlinkHIO_wlDamLaHu_c mStrongLarge; + /* 0x00 */ daAlinkHIO_wlDamLaHu_c mHuge; /* 0x00 */ daAlinkHIO_wlDamFall_c mFall; /* 0x00 */ daAlinkHIO_wlDamCaught_c mCapture; }; @@ -2960,13 +3305,17 @@ public: class daAlinkHIO_wlSlide_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlSlide_c(); ~daAlinkHIO_wlSlide_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlSlide_c1 m; +#endif }; class daAlinkHIO_wlRope_c1 { @@ -2991,13 +3340,17 @@ public: class daAlinkHIO_wlRope_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlRope_c(); ~daAlinkHIO_wlRope_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlRope_c1 m; +#endif }; class daAlinkHIO_wlAtWait_c1 { @@ -3033,12 +3386,14 @@ public: class daAlinkHIO_wlAtWait_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtWait_c(int, float); ~daAlinkHIO_wlAtWait_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x34 */ f32 field_0x34; /* 0x38 */ daAlinkHIO_wlAtWait_c1 m; }; // Size: 0x74 @@ -3058,13 +3413,17 @@ public: class daAlinkHIO_wlAtRoll_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtRoll_c(); ~daAlinkHIO_wlAtRoll_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtRoll_c1 m; +#endif }; // Size: 0x54 class daAlinkHIO_wlAtNjump_c1 { @@ -3089,13 +3448,17 @@ public: class daAlinkHIO_wlAtNjump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtNjump_c(); ~daAlinkHIO_wlAtNjump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtNjump_c1 m; +#endif }; // Size: 0x70 class daAlinkHIO_wlAtCjump_c1 { @@ -3126,13 +3489,17 @@ public: class daAlinkHIO_wlAtCjump_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtCjump_c(); ~daAlinkHIO_wlAtCjump_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtCjump_c1 m; +#endif }; // Size: 0x98 class daAlinkHIO_wlAtLand_c1 { @@ -3150,13 +3517,17 @@ public: class daAlinkHIO_wlAtLand_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtLand_c(); ~daAlinkHIO_wlAtLand_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtLand_c1 m; +#endif }; // Size: 0x74 class daAlinkHIO_wlAtDown_c1 { @@ -3182,13 +3553,17 @@ public: class daAlinkHIO_wlAtDown_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtDown_c(); ~daAlinkHIO_wlAtDown_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtDown_c1 m; +#endif }; // Size: 0xD0 class daAlinkHIO_wlAtLock_c1 { @@ -3215,13 +3590,17 @@ public: class daAlinkHIO_wlAtLock_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtLock_c(); ~daAlinkHIO_wlAtLock_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtLock_c1 m; +#endif }; // Size: 0x88 class daAlinkHIO_wlAtBite_c1 { @@ -3251,13 +3630,17 @@ public: class daAlinkHIO_wlAtBite_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAtBite_c(); ~daAlinkHIO_wlAtBite_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlAtBite_c1 m; +#endif }; // Size: 0x90 class daAlinkHIO_wlAttack_c1 { @@ -3277,17 +3660,29 @@ public: class daAlinkHIO_wlAttack_c0 { public: - static daAlinkHIO_wlAttack_c1 const m; + static daAlinkHIO_wlAtWaLr_c0 const mHorizontalAttack; + static daAlinkHIO_wlAtWaSc_c0 const mScratchAttack; + static daAlinkHIO_wlAtWaTl_c0 const mTailAttack; + static daAlinkHIO_wlAtRoll_c0 const mAtRoll; + static daAlinkHIO_wlAtNjump_c0 const mWlAtNjump; + static daAlinkHIO_wlAtCjump_c0 const mWlAtCjump; + static daAlinkHIO_wlAtLand_c0 const mWlAtLand; + static daAlinkHIO_wlAtDown_c0 const mWlAtDown; + static daAlinkHIO_wlAtLock_c0 const mWlAtLock; + static daAlinkHIO_wlAtBite_c0 const mWlAtBite; + static daAlinkHIO_wlAttack_c1 const m; }; class daAlinkHIO_wlAttack_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlAttack_c(); ~daAlinkHIO_wlAttack_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: /* 0x034 */ daAlinkHIO_wlAtWait_c mHorizontalAttack; /* 0x0A8 */ daAlinkHIO_wlAtWait_c mScratchAttack; /* 0x11C */ daAlinkHIO_wlAtWait_c mTailAttack; @@ -3327,13 +3722,17 @@ public: class daAlinkHIO_wlPoint_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlPoint_c(); ~daAlinkHIO_wlPoint_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlPoint_c1 m; +#endif }; class daAlinkHIO_wlChain_c1 { @@ -3359,13 +3758,17 @@ public: class daAlinkHIO_wlChain_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlChain_c(); ~daAlinkHIO_wlChain_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlChain_c1 m; +#endif }; class daAlinkHIO_wlSwim_c1 { @@ -3412,13 +3815,17 @@ public: class daAlinkHIO_wlSwim_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlSwim_c(); ~daAlinkHIO_wlSwim_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlSwim_c1 m; +#endif }; class daAlinkHIO_wlGrab_c1 { @@ -3437,13 +3844,17 @@ public: class daAlinkHIO_wlGrab_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlGrab_c(); ~daAlinkHIO_wlGrab_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlGrab_c1 m; +#endif }; class daAlinkHIO_wlBall_c1 { @@ -3463,13 +3874,17 @@ public: class daAlinkHIO_wlBall_c : public daAlinkHIO_data_c { public: +#ifdef DEBUG daAlinkHIO_wlBall_c(); ~daAlinkHIO_wlBall_c(); virtual void genMessage(JORMContext*); +#endif -private: +public: +#ifdef DEBUG /* 0x00 */ daAlinkHIO_wlBall_c1 m; +#endif }; class daAlinkHIO_wolf_c1 { @@ -3489,24 +3904,42 @@ public: class daAlinkHIO_wolf_c0 { public: + static daAlinkHIO_wlMove_c0 const mWlMove; + static daAlinkHIO_wlMoveNoP_c0 const mWlMoveNoP; + static daAlinkHIO_wlAtnMove_c0 const mWlAtnMove; + static daAlinkHIO_wlSideStep_c0 const mWlSideStep; + static daAlinkHIO_wlBackJump_c0 const mWlBackJump; + static daAlinkHIO_wlHowl_c0 const mWlHowl; + static daAlinkHIO_wlAutoJump_c0 const mWlAutoJump; + static daAlinkHIO_wlPush_c0 const mWlPush; + static daAlinkHIO_wlLie_c0 const mWlLie; + static daAlinkHIO_wlLight_c0 const mLight; + static daAlinkHIO_wlWallHang_c0 const mWlWallHang; + static daAlinkHIO_wlDamage_c0 const mWlDamage; + static daAlinkHIO_wlSlide_c0 const mWlSlide; + static daAlinkHIO_wlRope_c0 const mWlRope; + static daAlinkHIO_wlAttack_c0 const mWlAttack; + static daAlinkHIO_wlPoint_c0 const mWlPoint; + static daAlinkHIO_wlChain_c0 const mWlChain; + static daAlinkHIO_wlSwim_c0 const mWlSwim; + static daAlinkHIO_wlGrab_c0 const mWlGrab; + static daAlinkHIO_wlBall_c0 const mWlBall; static daAlinkHIO_wolf_c1 const m; }; -class daAlinkHIO_wolf_c -#ifdef DEBUG - : public daAlinkHIO_data_c -#endif -{ +class daAlinkHIO_wolf_c : public daAlinkHIO_data_c { public: #ifdef DEBUG daAlinkHIO_wolf_c(); -#endif ~daAlinkHIO_wolf_c(); -#ifdef DEBUG virtual void genMessage(JORMContext*); +#else + ~daAlinkHIO_wolf_c(); +#endif -private: +public: +#ifdef DEBUG /* 0x34 */ daAlinkHIO_wlMove_c mWlMove; /* 0x00 */ daAlinkHIO_wlMoveNoP_c mWlMoveNoP; /* 0x00 */ daAlinkHIO_wlAtnMove_c mWlAtnMove; @@ -3547,35 +3980,64 @@ public: size_t makeFileOutData(char*, char*); void listenPropertyEvent(const JORPropertyEvent*); - daAlinkHIO_basic_c mBasic; - daAlinkHIO_move_c mMove; - daAlinkHIO_atnMove_c mAtnMove; - daAlinkHIO_noActAtnMove_c mNoActAtnMove; - daAlinkHIO_frontRoll_c mFrontRoll; - daAlinkHIO_backJump_c mBackJump; - daAlinkHIO_sideStep_c mSideStep; - daAlinkHIO_slide_c mSlide; - daAlinkHIO_cut_c mCut; - daAlinkHIO_guard_c mGuard; - daAlinkHIO_crouch_c mCrouch; - daAlinkHIO_autoJump_c mAutoJump; - daAlinkHIO_wallHang_c mWallHang; - daAlinkHIO_pushpull_c mPushpull; - daAlinkHIO_damage_c mDamage; - daAlinkHIO_horse_c mHorse; - daAlinkHIO_canoe_c mCanoe; - daAlinkHIO_item_c mItem; - daAlinkHIO_ladder_c mLadder; - daAlinkHIO_roofHang_c mRoofHang; - daAlinkHIO_grab_c mGrab; - daAlinkHIO_swim_c mSwim; - daAlinkHIO_wolf_c mWolf; + /* 0x0008 */ daAlinkHIO_basic_c mBasic; + /* 0x0094 */ daAlinkHIO_move_c mMove; + /* 0x0120 */ daAlinkHIO_atnMove_c mAtnMove; + /* 0x01A8 */ daAlinkHIO_noActAtnMove_c mNoActAtnMove; + /* 0x0230 */ daAlinkHIO_frontRoll_c mFrontRoll; + /* 0x02D4 */ daAlinkHIO_backJump_c mBackJump; + /* 0x0340 */ daAlinkHIO_sideStep_c mSideStep; + /* 0x03DC */ daAlinkHIO_slide_c mSlide; + /* 0x0488 */ daAlinkHIO_cut_c mCut; + /* 0x0FFC */ daAlinkHIO_guard_c mGuard; + /* 0x11C8 */ daAlinkHIO_crouch_c mCrouch; + /* 0x1248 */ daAlinkHIO_autoJump_c mAutoJump; + /* 0x1330 */ daAlinkHIO_wallHang_c mWallHang; + /* 0x1528 */ daAlinkHIO_pushpull_c mPushpull; + /* 0x1598 */ daAlinkHIO_damage_c mDamage; + /* 0x1A90 */ daAlinkHIO_horse_c mHorse; + /* 0x1B30 */ daAlinkHIO_canoe_c mCanoe; + /* 0x1BAC */ daAlinkHIO_item_c mItem; + /* 0x2420 */ daAlinkHIO_ladder_c mLadder; + /* 0x24C4 */ daAlinkHIO_roofHang_c mRoofHang; + /* 0x2544 */ daAlinkHIO_grab_c mGrab; + /* 0x265C */ daAlinkHIO_swim_c mSwim; + /* 0x278C */ daAlinkHIO_wolf_c mWolf; #else + // TODO: What's with these first few members on retail? + // The individual HIO members (e.g. mCut) have their class changed on retail compared to debug (_c -> _c0). + // But it seems like the debug _c members might also exist on retail based on the dtor. + // But they can't have the same name as they do on debug since those names are reserved for the _c0 version. /* 0x04 */ u8 field_0x4[0xC - 0x4]; - /* 0x0C */ daAlinkHIO_cut_c mCut; + /* 0x0C */ daAlinkHIO_cut_c mCut_2; /* 0x0D */ u8 field_0xD[0x4B - 0xD]; - /* 0x4B */ daAlinkHIO_wolf_c mWolf; - /* 0x4C */ u8 field_0x4C[0x6C - 0x4C]; + /* 0x4B */ daAlinkHIO_wolf_c mWolf_2; + + daAlinkHIO_basic_c0 mBasic; + daAlinkHIO_move_c0 mMove; + daAlinkHIO_atnMove_c0 mAtnMove; + daAlinkHIO_noActAtnMove_c0 mNoActAtnMove; + daAlinkHIO_frontRoll_c0 mFrontRoll; + daAlinkHIO_backJump_c0 mBackJump; + daAlinkHIO_sideStep_c0 mSideStep; + daAlinkHIO_slide_c0 mSlide; + daAlinkHIO_cut_c0 mCut; + daAlinkHIO_guard_c0 mGuard; + daAlinkHIO_crouch_c0 mCrouch; + daAlinkHIO_autoJump_c0 mAutoJump; + daAlinkHIO_wallHang_c0 mWallHang; + daAlinkHIO_pushpull_c0 mPushpull; + daAlinkHIO_damage_c0 mDamage; + daAlinkHIO_horse_c0 mHorse; + daAlinkHIO_canoe_c0 mCanoe; + daAlinkHIO_item_c0 mItem; + daAlinkHIO_ladder_c0 mLadder; + daAlinkHIO_roofHang_c0 mRoofHang; + daAlinkHIO_grab_c0 mGrab; + daAlinkHIO_swim_c0 mSwim; + daAlinkHIO_wolf_c0 mWolf; + + u8 padding[0x6C - 0x64]; #endif }; diff --git a/include/d/actor/d_a_hozelda.h b/include/d/actor/d_a_hozelda.h index 7ed33de864..0c640e779c 100644 --- a/include/d/actor/d_a_hozelda.h +++ b/include/d/actor/d_a_hozelda.h @@ -48,6 +48,8 @@ struct daHoZelda_hio_c1 { }; struct daHoZelda_hio_c0 { + daHoZelda_hio_c0() {} + static daHoZelda_hio_c1 const m; }; @@ -55,7 +57,7 @@ class daHoZelda_hio_c : public JORReflexible { public: daHoZelda_hio_c() { #if DEBUG - mParameters = daHoZelda_hio_c0::m; + m = daHoZelda_hio_c0::m; #endif } @@ -64,10 +66,16 @@ public: #if DEBUG void genMessage(JORMContext*); virtual ~daHoZelda_hio_c() {} - /* 0x8 */ daHoZelda_hio_c1 mParameters; + /* 0x8 */ daHoZelda_hio_c1 m; #endif }; +#if DEBUG +#define HOZELDA_HIO_CLASS daHoZelda_hio_c +#else +#define HOZELDA_HIO_CLASS daHoZelda_hio_c0 +#endif + /** * @ingroup actors-unsorted * @class daHoZelda_c @@ -125,7 +133,7 @@ public: /* 0x6A8 */ mDoExt_bckAnm mBowBck; /* 0x6C4 */ daPy_actorKeep_c mArrowAcKeep; /* 0x6CC */ daPy_actorKeep_c mGndAcKeep; - /* 0x6D4 */ daHoZelda_hio_c* mpHIO; + /* 0x6D4 */ HOZELDA_HIO_CLASS* mpHIO; /* 0x6D8 */ u8 mBowMode; /* 0x6D9 */ u8 mAnmTimer; /* 0x6DA */ u8 field_0x6da; diff --git a/include/d/actor/d_a_npc_ykw.h b/include/d/actor/d_a_npc_ykw.h index 6e6f15c8d2..cc53c2a0dc 100644 --- a/include/d/actor/d_a_npc_ykw.h +++ b/include/d/actor/d_a_npc_ykw.h @@ -4,6 +4,13 @@ #include "d/actor/d_a_npc.h" class daNpc_ykW_HIO_c; +class daNpc_ykW_Param_c; + +#if DEBUG +#define NPC_YKW_HIO_CLASS daNpc_ykW_HIO_c +#else +#define NPC_YKW_HIO_CLASS daNpc_ykW_Param_c +#endif /** * @ingroup actors-npcs @@ -139,7 +146,7 @@ public: field_0x101c = 10; } - /* 0x0E40 */ daNpc_ykW_HIO_c* mpHIO; + /* 0x0E40 */ NPC_YKW_HIO_CLASS* mpHIO; /* 0x0E44 */ dCcD_Cyl mCyl; /* 0x0F80 */ u8 field_0xf80; /* 0x0F84 */ daNpcT_ActorMngr_c mActorMngrs[5]; diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 0b5e6371bd..ec533cb3bf 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -1684,8 +1684,40 @@ static dJntColData_c l_wolfJntColData[] = { daAlinkHIO_c::daAlinkHIO_c() {} +// TODO: these dtors are probably supposed to be weak functions from the header + daAlinkHIO_wolf_c::~daAlinkHIO_wolf_c() {} +#ifdef DEBUG +daAlinkHIO_swim_c::~daAlinkHIO_swim_c() {} + +daAlinkHIO_grab_c::~daAlinkHIO_grab_c() {} + +daAlinkHIO_roofHang_c::~daAlinkHIO_roofHang_c() {} + +daAlinkHIO_ladder_c::~daAlinkHIO_ladder_c() {} + +daAlinkHIO_item_c::~daAlinkHIO_item_c() {} + +daAlinkHIO_canoe_c::~daAlinkHIO_canoe_c() {} + +daAlinkHIO_horse_c::~daAlinkHIO_horse_c() {} + +daAlinkHIO_damage_c::~daAlinkHIO_damage_c() {} + +daAlinkHIO_pushpull_c::~daAlinkHIO_pushpull_c() {} + +daAlinkHIO_wallHang_c::~daAlinkHIO_wallHang_c() {} + +daAlinkHIO_autoJump_c::~daAlinkHIO_autoJump_c() {} + +daAlinkHIO_crouch_c::~daAlinkHIO_crouch_c() {} + +daAlinkHIO_guard_c::~daAlinkHIO_guard_c() {} + +daAlinkHIO_atnMove_c::~daAlinkHIO_atnMove_c() {} +#endif + daAlinkHIO_cut_c::~daAlinkHIO_cut_c() {} daAlinkHIO_c::~daAlinkHIO_c() {} @@ -2565,7 +2597,7 @@ bool daAlink_c::checkAttentionPosAngle(cXyz* param_0) { int tmp; if (checkModeFlg(MODE_RIDING) || checkEndResetFlg0(ERFLG0_UNK_400)) { - tmp = daAlinkHIO_horse_c0::m.mSearchRangeAngle; + tmp = mpHIO->mHorse.m.mSearchRangeAngle; } else { tmp = 0x6000; } @@ -2810,7 +2842,6 @@ cXyz* daAlink_c::getNeckAimPos(cXyz* param_0, int* param_1, int param_2) { return NULL; } -// NONMATCHING - regalloc / one clib_minMaxLimit instance with issues s16 daAlink_c::getNeckAimAngle(cXyz* param_0, s16* param_1, s16* param_2, s16* param_3, s16* param_4) { s16 sp1A; @@ -2850,32 +2881,32 @@ s16 daAlink_c::getNeckAimAngle(cXyz* param_0, s16* param_1, s16* param_2, s16* p if (checkWolf()) { if (mProcID == PROC_WOLF_TIRED_WAIT) { - temp_r24 = cLib_minMaxLimit((s16)temp_r24, daAlinkHIO_wolf_c0::m.mMaxTiredNeckTurnUp, daAlinkHIO_wolf_c0::m.mMaxTiredNeckTurnDown); - var_r28 = cLib_minMaxLimit((s16)var_r28, -daAlinkHIO_wolf_c0::m.mMaxTiredNeckTurnH, daAlinkHIO_wolf_c0::m.mMaxTiredNeckTurnH); + temp_r24 = cLib_minMaxLimit((s16)temp_r24, mpHIO->mWolf.m.mMaxTiredNeckTurnUp, mpHIO->mWolf.m.mMaxTiredNeckTurnDown); + var_r28 = cLib_minMaxLimit((s16)var_r28, -mpHIO->mWolf.m.mMaxTiredNeckTurnH, mpHIO->mWolf.m.mMaxTiredNeckTurnH); } else { - temp_r24 = cLib_minMaxLimit((s16)temp_r24, daAlinkHIO_wolf_c0::m.mMaxNeckTurnUp, daAlinkHIO_wolf_c0::m.mMaxNeckTurnDown); - var_r28 = cLib_minMaxLimit((s16)var_r28, -daAlinkHIO_wolf_c0::m.mMaxNeckTurnH, daAlinkHIO_wolf_c0::m.mMaxNeckTurnH); + temp_r24 = cLib_minMaxLimit((s16)temp_r24, mpHIO->mWolf.m.mMaxNeckTurnUp, mpHIO->mWolf.m.mMaxNeckTurnDown); + var_r28 = cLib_minMaxLimit((s16)var_r28, -mpHIO->mWolf.m.mMaxNeckTurnH, mpHIO->mWolf.m.mMaxNeckTurnH); } } else { - temp_r24 = cLib_minMaxLimit((s16)temp_r24, daAlinkHIO_basic_c0::m.mHeadMaxTurnUp, daAlinkHIO_basic_c0::m.mHeadMaxTurnDown); + temp_r24 = cLib_minMaxLimit((s16)temp_r24, mpHIO->mBasic.m.mHeadMaxTurnUp, mpHIO->mBasic.m.mHeadMaxTurnDown); s16 spC; s16 spA; if (dComIfGp_checkPlayerStatus1(0, 0x02000000)) { if (field_0x3020 == 1) { spC = -0x1000; - spA = daAlinkHIO_basic_c0::m.mHeadMaxTurnHorizontal; + spA = mpHIO->mBasic.m.mHeadMaxTurnHorizontal; } else { - spC = -daAlinkHIO_basic_c0::m.mHeadMaxTurnHorizontal; + spC = -mpHIO->mBasic.m.mHeadMaxTurnHorizontal; spA = 0x1000; } } else { if (checkGrabAnimeCarry()) { spC = 0; } else { - spC = -daAlinkHIO_basic_c0::m.mHeadMaxTurnHorizontal; + spC = -mpHIO->mBasic.m.mHeadMaxTurnHorizontal; } - spA = daAlinkHIO_basic_c0::m.mHeadMaxTurnHorizontal; + spA = mpHIO->mBasic.m.mHeadMaxTurnHorizontal; } var_r28 = cLib_minMaxLimit((s16)var_r28, spC, spA); @@ -3136,7 +3167,7 @@ void daAlink_c::setMoveSlantAngle() { s16 var_r29; s16 var_r28; - if ((mProcID == PROC_MOVE && temp_f31 > daAlinkHIO_move_c0::m.mRunChangeRate) || (mProcID == PROC_WOLF_MOVE && temp_f31 > daAlinkHIO_wlMove_c0::m.mIdleToWalkRate)) { + if ((mProcID == PROC_MOVE && temp_f31 > mpHIO->mMove.m.mRunChangeRate) || (mProcID == PROC_WOLF_MOVE && temp_f31 > mpHIO->mWolf.mWlMove.m.mIdleToWalkRate)) { var_r28 = cLib_minMaxLimit((s16)(field_0x2fe6 - shape_angle.y) * 2, -0xC00, 0xC00); if (abs(var_r28) > 0x800) { int var_r27; @@ -3151,7 +3182,7 @@ void daAlink_c::setMoveSlantAngle() { var_r29 = 0; } - if ((mProcID == PROC_WOLF_MOVE && checkAttentionState()) || temp_f31 < daAlinkHIO_wlMove_c0::m.mStandbyRunToRunRate) { + if ((mProcID == PROC_WOLF_MOVE && checkAttentionState()) || temp_f31 < mpHIO->mWolf.mWlMove.m.mStandbyRunToRunRate) { var_r28 = 0; } } else if ((mProcID == PROC_WOLF_WAIT || mProcID == PROC_WOLF_SWIM_MOVE) && shape_angle.y != field_0x2fe6) { @@ -4255,7 +4286,7 @@ void daAlink_c::playerInit() { field_0x28f8 = -1; field_0x28fc = -1; - field_0x2e54.init(&mLinkAcch, daAlinkHIO_basic_c0::m.mWaterSurfaceEffectHeight, field_0x598); + field_0x2e54.init(&mLinkAcch, mpHIO->mBasic.m.mWaterSurfaceEffectHeight, field_0x598); field_0x3108 = shape_angle.y; field_0x2f20.setOldPosP(&field_0x3624, &field_0x3630); @@ -4402,9 +4433,9 @@ int daAlink_c::setStartProcInit() { } else if (checkSwimAction(1)) { if (start_mode == 1) { if (checkWolf()) { - mNormalSpeed = 0.5f * daAlinkHIO_wlSwim_c0::m.mMaxSpeed; + mNormalSpeed = 0.5f * mpHIO->mWolf.mWlSwim.m.mMaxSpeed; } else { - mNormalSpeed = 0.5f * daAlinkHIO_swim_c0::m.mForwardMaxSpeed; + mNormalSpeed = 0.5f * mpHIO->mSwim.m.mForwardMaxSpeed; } } @@ -4412,7 +4443,7 @@ int daAlink_c::setStartProcInit() { if (checkWolf()) { procWolfSwimMoveInit(); - } else if (mNormalSpeed < daAlinkHIO_swim_c0::m.mForwardMinSpeed) { + } else if (mNormalSpeed < mpHIO->mSwim.m.mForwardMinSpeed) { procSwimWaitInit(0); } else { procSwimMoveInit(); @@ -4421,11 +4452,11 @@ int daAlink_c::setStartProcInit() { field_0x2f99 = 0; } else if (start_mode == 1) { if (checkWolf()) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mIdleToWalkRate * daAlinkHIO_wlMove_c0::m.mMaxSpeed; + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mIdleToWalkRate * mpHIO->mWolf.mWlMove.m.mMaxSpeed; speedF = mNormalSpeed; procWolfMoveInit(); } else { - mNormalSpeed = daAlinkHIO_move_c0::m.mWalkChangeRate * daAlinkHIO_move_c0::m.mMaxSpeed; + mNormalSpeed = mpHIO->mMove.m.mWalkChangeRate * mpHIO->mMove.m.mMaxSpeed; speedF = mNormalSpeed; procMoveInit(); } @@ -4447,14 +4478,14 @@ int daAlink_c::setStartProcInit() { procCrawlMoveInit(0, 0); } } else if (checkWolf()) { - if (mNormalSpeed > daAlinkHIO_wlMove_c0::m.mMaxSpeed) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mMaxSpeed; + if (mNormalSpeed > mpHIO->mWolf.mWlMove.m.mMaxSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mMaxSpeed; } speedF = mNormalSpeed; procWolfMoveInit(); } else { - if (mNormalSpeed > daAlinkHIO_move_c0::m.mMaxSpeed) { - mNormalSpeed = daAlinkHIO_move_c0::m.mMaxSpeed; + if (mNormalSpeed > mpHIO->mMove.m.mMaxSpeed) { + mNormalSpeed = mpHIO->mMove.m.mMaxSpeed; } speedF = mNormalSpeed; procMoveInit(); @@ -4902,7 +4933,7 @@ void daAlink_c::setPolygonSpeed() { } else if (!checkModeFlg(0x40000)) { onNoResetFlg3(FLG3_UNK_1000); - var_f31 = fabsf(mNormalSpeed / daAlinkHIO_move_c0::m.mMaxSpeed); + var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed); if (var_f31 > 1.0f) { var_f31 = 1.0f; } @@ -4945,14 +4976,14 @@ void daAlink_c::setPolygonSpeed() { f32 var_f29; if (temp_f27 < sp3C - 29.9f) { if (checkWolf()) { - var_f29 = daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed; + var_f29 = mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed; } else { - var_f29 = daAlinkHIO_move_c0::m.mMaxSpeed; + var_f29 = mpHIO->mMove.m.mMaxSpeed; } } else if (checkWolf()) { - var_f29 = daAlinkHIO_wlSlide_c0::m.mClimbingMaxSpeedWeak; + var_f29 = mpHIO->mWolf.mWlSlide.m.mClimbingMaxSpeedWeak; } else { - var_f29 = daAlinkHIO_slide_c0::m.mMaxClimbSpeed; + var_f29 = mpHIO->mSlide.m.mMaxClimbSpeed; } f32 var_f28 = 0.016887419f * (temp_f27 * temp_f26); @@ -4990,11 +5021,11 @@ bool daAlink_c::checkDashAnime() const { f32 daAlink_c::checkWindWallRate(cXyz const& param_0) { cXyz sp24(current.pos.x, current.pos.y + (0.5f * field_0x598), current.pos.z); - cXyz sp18 = sp24 - (param_0 * daAlinkHIO_basic_c0::m.mMaxWindInfluenceDist); + cXyz sp18 = sp24 - (param_0 * mpHIO->mBasic.m.mMaxWindInfluenceDist); f32 var_f31; if (commonLineCheck(&sp24, &sp18) && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 0xA) { - var_f31 = (1.0f / (daAlinkHIO_basic_c0::m.mMaxWindInfluenceDist - daAlinkHIO_basic_c0::m.mNoWindInfluenceDist)) * (sp24.abs(mLinkLinChk.GetCross()) - daAlinkHIO_basic_c0::m.mNoWindInfluenceDist); + var_f31 = (1.0f / (mpHIO->mBasic.m.mMaxWindInfluenceDist - mpHIO->mBasic.m.mNoWindInfluenceDist)) * (sp24.abs(mLinkLinChk.GetCross()) - mpHIO->mBasic.m.mNoWindInfluenceDist); if (var_f31 < 0.0f) { var_f31 = 0.0f; } @@ -5056,7 +5087,7 @@ void daAlink_c::setWindSpeed() { sp8 *= checkWindWallRate(sp3C); } - sp8 *= daAlinkHIO_basic_c0::m.mMaxWindSpeed; + sp8 *= mpHIO->mBasic.m.mMaxWindSpeed; sp3C *= sp8; if (mWindSpeed.abs2() > sp8 * sp8) { @@ -5680,9 +5711,9 @@ void daAlink_c::setSwordAtCollision(int param_0) { } if (mProcID == PROC_CUT_FINISH_JUMP_UP) { - sp74.set(current.pos.x + daAlinkHIO_cutFnJU_c0::m.mAttackOffset * cM_ssin(shape_angle.y), + sp74.set(current.pos.x + mpHIO->mCut.mCutFinishJumpUppercut.m.mAttackOffset * cM_ssin(shape_angle.y), field_0x3478, - current.pos.z + daAlinkHIO_cutFnJU_c0::m.mAttackOffset * cM_scos(shape_angle.y)); + current.pos.z + mpHIO->mCut.mCutFinishJumpUppercut.m.mAttackOffset * cM_scos(shape_angle.y)); f32 height = mSwordTopPos.y - field_0x3478; if (height < 10.0f) { @@ -5905,7 +5936,7 @@ void daAlink_c::setAtCollision() { mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &spA4); - spBC = current.pos + (spA4 * daAlinkHIO_guard_c0::m.mAttackPosOffset); + spBC = current.pos + (spA4 * mpHIO->mGuard.m.mAttackPosOffset); mDoMtx_stack_c::multVecSR(&cXyz::BaseY, &spC8); spB0 = spBC + (spC8 * 130.0f); @@ -5920,7 +5951,7 @@ void daAlink_c::setAtCollision() { mGuardAtCps.ResetAtHit(); } } else if (mProcID == PROC_FRONT_ROLL) { - if (checkEquipHeavyBoots() && temp_r29->getFrame() >= daAlinkHIO_frontRoll_c0::m.mBootsAttackInitF && temp_r29->getFrame() < daAlinkHIO_frontRoll_c0::m.mBootsAttackEndF) { + if (checkEquipHeavyBoots() && temp_r29->getFrame() >= mpHIO->mFrontRoll.m.mBootsAttackInitF && temp_r29->getFrame() < mpHIO->mFrontRoll.m.mBootsAttackEndF) { cXyz sp98 = (mLeftFootPos + mRightFootPos) * 0.5f; field_0xFB8.SetC(sp98); sp98.set(mNormalSpeed * cM_ssin(shape_angle.y), 0.0f, mNormalSpeed * cM_scos(shape_angle.y)); @@ -5935,11 +5966,11 @@ void daAlink_c::setAtCollision() { f32 var_f30; f32 var_f29; if (checkLv7BossRoom()) { - var_f29 = daAlinkHIO_hookshot_c0::m.mBossShootSpeed; - var_f30 = daAlinkHIO_hookshot_c0::m.mBossMaxLength; + var_f29 = mpHIO->mItem.mHookshot.m.mBossShootSpeed; + var_f30 = mpHIO->mItem.mHookshot.m.mBossMaxLength; } else { - var_f29 = daAlinkHIO_hookshot_c0::m.mShootSpeed; - var_f30 = daAlinkHIO_hookshot_c0::m.mMaxLength; + var_f29 = mpHIO->mItem.mHookshot.m.mShootSpeed; + var_f30 = mpHIO->mItem.mHookshot.m.mMaxLength; } f32 var_f31; @@ -6026,10 +6057,10 @@ void daAlink_c::setAtCollision() { } if (checkCutDashAnime()) { - m_swordBlur.field_0x20 = daAlinkHIO_cut_c0::m.mDashBlurAlpha; + m_swordBlur.field_0x20 = mpHIO->mCut.m.mDashBlurAlpha; spC8.set(current.pos.x + (50.0f * cM_ssin(shape_angle.y)), 20.0f + current.pos.y, current.pos.z + (50.0f * cM_scos(shape_angle.y))); } else { - m_swordBlur.field_0x20 = daAlinkHIO_cut_c0::m.mBlurAlpha; + m_swordBlur.field_0x20 = mpHIO->mCut.m.mBlurAlpha; spC8.set(current.pos.x + (50.0f * cM_ssin(shape_angle.y)), field_0x3478, current.pos.z + (50.0f * cM_scos(shape_angle.y))); } @@ -6378,9 +6409,9 @@ void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* i_ctrl, u8 i_attr, s16 i_start, s f32 i_rate, f32 i_frame) { if (checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { - i_rate *= daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; + i_rate *= mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed; } else { - i_rate *= daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate; + i_rate *= mpHIO->mItem.mIronBoots.m.mWaterStartWalkAnmRate; } } @@ -6558,26 +6589,26 @@ int daAlink_c::setDoubleAnime(f32 i_blendRate, f32 i_anmSpeedA, f32 i_anmSpeedB, if ((temp_r3 | temp_r0) != 0 && i_morf < 0.0f) { if (i_anmA == ANM_WAIT_B && checkModeFlg(1)) { - i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation; + i_morf = mpHIO->mMove.m.mWaitBInterpolation; } else { - i_morf = daAlinkHIO_basic_c0::m.mBasicInterpolation; + i_morf = mpHIO->mBasic.m.mBasicInterpolation; } if (checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { - i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed); + i_morf *= (1.0f / mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed); } else { - i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate); + i_morf *= (1.0f / mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate); } } } else if (i_anmA == ANM_WAIT_B && checkModeFlg(1) && i_morf > 0.0f) { - i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation; + i_morf = mpHIO->mMove.m.mWaitBInterpolation; if (checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { - i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed); + i_morf *= (1.0f / mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed); } else { - i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate); + i_morf *= (1.0f / mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate); } } } @@ -6596,7 +6627,7 @@ int daAlink_c::setDoubleAnime(f32 i_blendRate, f32 i_anmSpeedA, f32 i_anmSpeedB, checkUnderMove0BckNoArc(ANM_HORSE_WALK_B))) { if (checkNoUpperAnime()) { - setUpperAnimeBaseMorf(0x263, daAlinkHIO_horse_c0::m.mTiredWaitInterpolation); + setUpperAnimeBaseMorf(0x263, mpHIO->mHorse.m.mTiredWaitInterpolation); } setFaceBasicAnime(ANM_WAIT_TIRED); @@ -6642,9 +6673,9 @@ void daAlink_c::commonSingleAnime(J3DAnmTransform* param_0, J3DAnmTransform* par if (checkNoResetFlg0(FLG0_UNDERWATER) && checkModeFlg(0x200)) { if (checkZoraWearAbility() && mProcID != PROC_FRONT_ROLL && mEquipItem == 0x103) { - param_2 *= daAlinkHIO_magneBoots_c0::m.mWaterVelRateSword * (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed); + param_2 *= mpHIO->mItem.mIronBoots.m.mWaterVelRateSword * (1.0f / mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed); } else if (!checkZoraWearAbility()) { - param_2 *= daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate * (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate); + param_2 *= mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate * (1.0f / mpHIO->mItem.mIronBoots.m.mWaterStartWalkAnmRate); } } @@ -6844,7 +6875,7 @@ int daAlink_c::setUpperAnime(u16 i_anmResID, daAlink_c::daAlink_UPPER param_1, f } if (!checkZoraWearAbility() && (checkEquipAnime() || checkCutDashAnime()) && (checkNoResetFlg0(FLG0_UNDERWATER) || !checkNoResetFlg0(FLG0_SWIM_UP))) { - i_speed *= daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate * (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate); + i_speed *= mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate * (1.0f / mpHIO->mItem.mIronBoots.m.mWaterStartWalkAnmRate); } setFrameCtrl(&mUpperFrameCtrl[param_1], var_r30->getAttribute(), i_startFrame, i_endFrame, i_speed, var_f31); @@ -7026,7 +7057,7 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { f32 var_f31 = getMoveGroundAngleSpeedRate(); f32 sp2C; - f32 sp28 = daAlinkHIO_move_c0::m.mFootPositionRatio; + f32 sp28 = mpHIO->mMove.m.mFootPositionRatio; BOOL sp24 = checkEventRun(); BOOL sp20 = checkBootsMoveAnime(1); @@ -7036,8 +7067,8 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { var_f29 = 1.0f; sp2C = 1.0f; } else { - var_f29 = daAlinkHIO_move_c0::m.mWalkAnmSpeed; - sp2C = daAlinkHIO_move_c0::m.mRunAnmSpeed; + var_f29 = mpHIO->mMove.m.mWalkAnmSpeed; + sp2C = mpHIO->mMove.m.mRunAnmSpeed; } if (field_0x2fb3 != 0) { @@ -7077,37 +7108,37 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { if (sp20) { if (checkBootsMoveAnime(0)) { var_r28 = ANM_WALK_HEAVY; - sp28 = daAlinkHIO_magneBoots_c0::m.mFeetPositionRatio; + sp28 = mpHIO->mItem.mIronBoots.m.mFeetPositionRatio; var_f31 *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier); f32 sp14; if (checkHeavyStateOn(1, 0) && mSinkShapeOffset < -30.0f) { - sp14 = 0.5f * daAlinkHIO_magneBoots_c0::m.mWalkAnmSpeedMax; + sp14 = 0.5f * mpHIO->mItem.mIronBoots.m.mWalkAnmSpeedMax; } else { - sp14 = daAlinkHIO_magneBoots_c0::m.mWalkAnmSpeedMax; + sp14 = mpHIO->mItem.mIronBoots.m.mWalkAnmSpeedMax; } - var_f29 = daAlinkHIO_magneBoots_c0::m.mWalkAnmSpeedMin + (var_f31 * (sp14 - daAlinkHIO_magneBoots_c0::m.mWalkAnmSpeedMin)); + var_f29 = mpHIO->mItem.mIronBoots.m.mWalkAnmSpeedMin + (var_f31 * (sp14 - mpHIO->mItem.mIronBoots.m.mWalkAnmSpeedMin)); var_f27 = 0.0f; var_f26 = 23.0f; } else { var_r29 = ANM_IRONBALL_WAIT; var_r28 = ANM_IRONBALL_WALK; - sp28 = daAlinkHIO_ironBall_c0::m.mFeetPosRatio; + sp28 = mpHIO->mItem.mIronBall.m.mFeetPosRatio; var_f31 = var_f31 * (1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier)); - var_f29 = daAlinkHIO_ironBall_c0::m.mWalkAnmSpeedMin + (var_f31 * (daAlinkHIO_ironBall_c0::m.mWalkAnmSpeedMax - daAlinkHIO_ironBall_c0::m.mWalkAnmSpeedMin)); + var_f29 = mpHIO->mItem.mIronBall.m.mWalkAnmSpeedMin + (var_f31 * (mpHIO->mItem.mIronBall.m.mWalkAnmSpeedMax - mpHIO->mItem.mIronBall.m.mWalkAnmSpeedMin)); var_f27 = 18.0f; var_f26 = 3.0f; } - var_f31 = var_f31 * daAlinkHIO_move_c0::m.mWalkChangeRate; - if (var_f31 >= daAlinkHIO_move_c0::m.mWalkChangeRate) { - var_f31 = daAlinkHIO_move_c0::m.mWalkChangeRate - 0.001f; + var_f31 = var_f31 * mpHIO->mMove.m.mWalkChangeRate; + if (var_f31 >= mpHIO->mMove.m.mWalkChangeRate) { + var_f31 = mpHIO->mMove.m.mWalkChangeRate - 0.001f; } } else if (checkSlope()) { var_r28 = ANM_WALK_SLOPE; sp18 = ANM_WALK_SLOPE; - var_f29 = daAlinkHIO_slide_c0::m.mClimbAnmMinSpeed + (var_f31 * (daAlinkHIO_slide_c0::m.mMaxClimbAnmSpeed - daAlinkHIO_slide_c0::m.mClimbAnmMinSpeed)); + var_f29 = mpHIO->mSlide.m.mClimbAnmMinSpeed + (var_f31 * (mpHIO->mSlide.m.mMaxClimbAnmSpeed - mpHIO->mSlide.m.mClimbAnmMinSpeed)); sp2C = var_f29; } @@ -7115,8 +7146,8 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { f32 var_f28; f32 var_f30; - if (var_f31 < daAlinkHIO_move_c0::m.mWalkChangeRate) { - var_f28 = var_f31 / daAlinkHIO_move_c0::m.mWalkChangeRate; + if (var_f31 < mpHIO->mMove.m.mWalkChangeRate) { + var_f28 = var_f31 / mpHIO->mMove.m.mWalkChangeRate; if (checkModeFlg(1) || checkZeroSpeedF()) { mSpeedModifier = 0.0f; @@ -7139,15 +7170,15 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { } if (mTargetedActor != NULL) { - var_f30 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; - var_f29 = daAlinkHIO_atnMove_c0::m.mWalkAnmSpeed; + var_f30 = mpHIO->mAtnMove.m.mWaitAnmSpeed; + var_f29 = mpHIO->mAtnMove.m.mWalkAnmSpeed; } else { - var_f30 = daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed; - var_f29 = daAlinkHIO_noActAtnMove_c0::m.mWalkAnmSpeed; + var_f30 = mpHIO->mNoActAtnMove.m.mWaitAnmSpeed; + var_f29 = mpHIO->mNoActAtnMove.m.mWalkAnmSpeed; } if (var_r29 == ANM_IRONBALL_WAIT) { - var_f30 = daAlinkHIO_ironBall_c0::m.mWaitAnmSpeed; + var_f30 = mpHIO->mItem.mIronBall.m.mWaitAnmSpeed; } setDoubleAnime(0.0f, var_f30, var_f29, var_r29, var_r28, 2, param_0); @@ -7177,7 +7208,7 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { var_r28 = ANM_SMALL_GUARD; } - var_f30 = daAlinkHIO_move_c0::m.mWaitAnmSpeed; + var_f30 = mpHIO->mMove.m.mWaitAnmSpeed; } if (sp8 > 0) { @@ -7188,7 +7219,7 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { var_f27 = 19.0f; } - var_f29 = daAlinkHIO_basic_c0::m.mRotationASpeed; + var_f29 = mpHIO->mBasic.m.mRotationASpeed; var_f28 = 0.85f + (0.001f * abs(sp8)); if (var_f28 > 1.0f) { var_f28 = 1.0f; @@ -7202,7 +7233,7 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { voiceStartLevel(Z2SE_AL_V_INSECT_LOOP); var_f30 = 1.0f; } else { - var_f30 = daAlinkHIO_move_c0::m.mWaitAnmSpeed; + var_f30 = mpHIO->mMove.m.mWaitAnmSpeed; if (var_r29 == ANM_WAIT_TIRED) { if (checkUnderMove1BckNoArc(ANM_STEP_TURN)) { var_r28 = ANM_STEP_TURN_TIRED; @@ -7216,19 +7247,19 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { } else { f32 spC; if (var_r29 == ANM_WAIT_TIRED) { - spC = daAlinkHIO_move_c0::m.mMinTiredWalkRate; + spC = mpHIO->mMove.m.mMinTiredWalkRate; } else { - spC = daAlinkHIO_move_c0::m.mMinWalkRate; + spC = mpHIO->mMove.m.mMinWalkRate; } var_f28 = spC + (var_f28 * (1.0f - spC)); mSpeedModifier = 1.0f - ((1.0f - sp28) * var_f28); sp10 = 1; - var_f30 = daAlinkHIO_move_c0::m.mWaitAnmSpeed; + var_f30 = mpHIO->mMove.m.mWaitAnmSpeed; } if (var_r29 == ANM_IRONBALL_WAIT) { - var_f30 = daAlinkHIO_ironBall_c0::m.mWaitAnmSpeed; + var_f30 = mpHIO->mItem.mIronBall.m.mWaitAnmSpeed; } else if (var_r29 == ANM_HORSE_WAIT_D_B || var_r29 == ANM_WAIT_TIRED) { var_f30 = 1.0f; } @@ -7244,8 +7275,8 @@ void daAlink_c::setBlendMoveAnime(f32 param_0) { field_0x2f97 = 6; } } - } else if (var_f31 < daAlinkHIO_move_c0::m.mRunChangeRate) { - var_f28 = (var_f31 - daAlinkHIO_move_c0::m.mWalkChangeRate) / (daAlinkHIO_move_c0::m.mRunChangeRate - daAlinkHIO_move_c0::m.mWalkChangeRate); + } else if (var_f31 < mpHIO->mMove.m.mRunChangeRate) { + var_f28 = (var_f31 - mpHIO->mMove.m.mWalkChangeRate) / (mpHIO->mMove.m.mRunChangeRate - mpHIO->mMove.m.mWalkChangeRate); setDoubleAnime(var_f28, var_f29, sp2C, var_r28, sp18, 1, param_0); mSpeedModifier = sp28 * (1.0f - var_f28); @@ -7329,9 +7360,9 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { if (checkFmChainGrabAnime()) { field_0x594 = 13.0f; } else if (mTargetedActor != 0) { - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed; } else { - field_0x594 = daAlinkHIO_noActAtnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mNoActAtnMove.m.mMaxSpeed; } if (mTargetedActor != NULL && sp40 >= 0.866f) { @@ -7380,7 +7411,7 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { } if (sp3C) { - field_0x594 = daAlinkHIO_move_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mMove.m.mMaxSpeed; setBlendMoveAnime(param_0); return; } @@ -7396,19 +7427,19 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { f32 var_f30; if (mTargetedActor != NULL) { - sp30 = daAlinkHIO_atnMove_c0::m.mMinWalkFrame; - sp2C = daAlinkHIO_atnMove_c0::m.mWalkChangeRate; - sp28 = daAlinkHIO_atnMove_c0::m.mRunChangeRate; - sp24 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; - sp20 = daAlinkHIO_atnMove_c0::m.mWalkAnmSpeed; - var_f30 = daAlinkHIO_atnMove_c0::m.mRunAnmSpeed; + sp30 = mpHIO->mAtnMove.m.mMinWalkFrame; + sp2C = mpHIO->mAtnMove.m.mWalkChangeRate; + sp28 = mpHIO->mAtnMove.m.mRunChangeRate; + sp24 = mpHIO->mAtnMove.m.mWaitAnmSpeed; + sp20 = mpHIO->mAtnMove.m.mWalkAnmSpeed; + var_f30 = mpHIO->mAtnMove.m.mRunAnmSpeed; } else { - sp30 = daAlinkHIO_noActAtnMove_c0::m.mMinWalkFrame; - sp2C = daAlinkHIO_noActAtnMove_c0::m.mWalkChangeRate; - sp28 = daAlinkHIO_noActAtnMove_c0::m.mRunChangeRate; - sp24 = daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed; - sp20 = daAlinkHIO_noActAtnMove_c0::m.mWalkAnmSpeed; - var_f30 = daAlinkHIO_noActAtnMove_c0::m.mRunAnmSpeed; + sp30 = mpHIO->mNoActAtnMove.m.mMinWalkFrame; + sp2C = mpHIO->mNoActAtnMove.m.mWalkChangeRate; + sp28 = mpHIO->mNoActAtnMove.m.mRunChangeRate; + sp24 = mpHIO->mNoActAtnMove.m.mWaitAnmSpeed; + sp20 = mpHIO->mNoActAtnMove.m.mWalkAnmSpeed; + var_f30 = mpHIO->mNoActAtnMove.m.mRunAnmSpeed; } if (sp34 < sp2C) { @@ -7417,7 +7448,7 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { if (field_0x2f98 == 0) { var_r28 = ANM_ATN_WAIT_RIGHT; var_r29 = ANM_ATN_RETURN_FROM_WALK; - sp20 = daAlinkHIO_atnMove_c0::m.mWalkForwardAnmSpeed; + sp20 = mpHIO->mAtnMove.m.mWalkForwardAnmSpeed; } else if (field_0x2f98 == 2) { var_r28 = ANM_ATN_WAIT_LEFT; if (mTargetedActor != NULL) { @@ -7451,8 +7482,8 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { if (field_0x2f98 == 0) { var_r28 = ANM_ATN_RETURN_FROM_WALK; var_r29 = ANM_ATN_RETURN_FROM_RUN; - sp20 = daAlinkHIO_atnMove_c0::m.mWalkForwardAnmSpeed; - var_f30 = daAlinkHIO_atnMove_c0::m.mRunForwardAnmSpeed; + sp20 = mpHIO->mAtnMove.m.mWalkForwardAnmSpeed; + var_f30 = mpHIO->mAtnMove.m.mRunForwardAnmSpeed; } else if (field_0x2f98 == 2) { if (mTargetedActor != NULL) { var_r28 = ANM_ATN_LOCK_WALK_LEFT; @@ -7474,7 +7505,7 @@ void daAlink_c::setBlendAtnMoveAnime(f32 param_0) { } else { if (field_0x2f98 == 0) { var_r29 = ANM_ATN_RETURN_FROM_RUN; - var_f30 = daAlinkHIO_atnMove_c0::m.mRunForwardAnmSpeed; + var_f30 = mpHIO->mAtnMove.m.mRunForwardAnmSpeed; } else if (field_0x2f98 == 2) { if (mTargetedActor != NULL) { var_r29 = ANM_ATN_LOCK_RUN_LEFT; @@ -7540,35 +7571,35 @@ void daAlink_c::setBlendAtnBackMoveAnime(f32 param_0) { daAlink_ANM var_r29; if (checkBootsMoveAnime(1)) { - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxBackwardsSpeed; - var_f27 = daAlinkHIO_atnMove_c0::m.mMinBackWalkFrame; - var_f31 = daAlinkHIO_atnMove_c0::m.mBackWalkChangeRate; - var_f26 = daAlinkHIO_atnMove_c0::m.mBackRunChangeRate; - var_f24 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxBackwardsSpeed; + var_f27 = mpHIO->mAtnMove.m.mMinBackWalkFrame; + var_f31 = mpHIO->mAtnMove.m.mBackWalkChangeRate; + var_f26 = mpHIO->mAtnMove.m.mBackRunChangeRate; + var_f24 = mpHIO->mAtnMove.m.mWaitAnmSpeed; var_f25 = 1.0f; var_f29 = 1.0f; var_r26 = ANM_ATN_WAIT_RIGHT; var_r27 = ANM_ATN_BACK_WALK_HEAVY; var_r29 = ANM_ATN_BACK_WALK_HEAVY; } else if (mTargetedActor != NULL) { - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxBackwardsSpeed; - var_f27 = daAlinkHIO_atnMove_c0::m.mMinBackWalkFrame; - var_f31 = daAlinkHIO_atnMove_c0::m.mBackWalkChangeRate; - var_f26 = daAlinkHIO_atnMove_c0::m.mBackRunChangeRate; - var_f24 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; - var_f25 = daAlinkHIO_atnMove_c0::m.mBackWalkAnmSpeed; - var_f29 = daAlinkHIO_atnMove_c0::m.mBackRunAnmSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxBackwardsSpeed; + var_f27 = mpHIO->mAtnMove.m.mMinBackWalkFrame; + var_f31 = mpHIO->mAtnMove.m.mBackWalkChangeRate; + var_f26 = mpHIO->mAtnMove.m.mBackRunChangeRate; + var_f24 = mpHIO->mAtnMove.m.mWaitAnmSpeed; + var_f25 = mpHIO->mAtnMove.m.mBackWalkAnmSpeed; + var_f29 = mpHIO->mAtnMove.m.mBackRunAnmSpeed; var_r26 = ANM_ATN_WAIT_RIGHT; var_r27 = ANM_ATN_LOCK_BACK_WALK; var_r29 = ANM_ATN_LOCK_BACK_RUN; } else { - field_0x594 = daAlinkHIO_noActAtnMove_c0::m.mMaxBackwardsSpeed; - var_f27 = daAlinkHIO_noActAtnMove_c0::m.mMinBackWalkFrame; - var_f31 = daAlinkHIO_noActAtnMove_c0::m.mBackWalkChangeRate; - var_f26 = daAlinkHIO_noActAtnMove_c0::m.mBackRunChangeRate; - var_f24 = daAlinkHIO_move_c0::m.mWaitAnmSpeed; - var_f25 = daAlinkHIO_noActAtnMove_c0::m.mBackWalkAnmSpeed; - var_f29 = daAlinkHIO_noActAtnMove_c0::m.mBackRunAnmSpeed; + field_0x594 = mpHIO->mNoActAtnMove.m.mMaxBackwardsSpeed; + var_f27 = mpHIO->mNoActAtnMove.m.mMinBackWalkFrame; + var_f31 = mpHIO->mNoActAtnMove.m.mBackWalkChangeRate; + var_f26 = mpHIO->mNoActAtnMove.m.mBackRunChangeRate; + var_f24 = mpHIO->mMove.m.mWaitAnmSpeed; + var_f25 = mpHIO->mNoActAtnMove.m.mBackWalkAnmSpeed; + var_f29 = mpHIO->mNoActAtnMove.m.mBackRunAnmSpeed; var_r26 = ANM_WAIT; var_r27 = ANM_ATN_BACK_WALK; var_r29 = ANM_ATN_BACK_RUN; @@ -8240,20 +8271,20 @@ void daAlink_c::setFrontWallType() { if (checkWolf()) { if (checkModeFlg(2)) { - hang_height = daAlinkHIO_wlAutoJump_c0::m.mHangLimitHeight; + hang_height = mpHIO->mWolf.mWlAutoJump.m.mHangLimitHeight; } else { - hang_height = daAlinkHIO_wlWallHang_c0::m.mClimbHeight; + hang_height = mpHIO->mWolf.mWlWallHang.m.mClimbHeight; } - small_jump_height = daAlinkHIO_wlWallHang_c0::m.mSmallJumpHeight; - climb_height = daAlinkHIO_wlWallHang_c0::m.mWallGrabHeight; + small_jump_height = mpHIO->mWolf.mWlWallHang.m.mSmallJumpHeight; + climb_height = mpHIO->mWolf.mWlWallHang.m.mWallGrabHeight; } else { if (checkModeFlg(2)) { - hang_height = daAlinkHIO_autoJump_c0::m.mHangHeightLimit; + hang_height = mpHIO->mAutoJump.m.mHangHeightLimit; } else { - hang_height = daAlinkHIO_wallHang_c0::m.jump_hang_height; + hang_height = mpHIO->mWallHang.m.jump_hang_height; } - small_jump_height = daAlinkHIO_wallHang_c0::m.small_jump_height; - climb_height = daAlinkHIO_wallHang_c0::m.climb_height; + small_jump_height = mpHIO->mWallHang.m.small_jump_height; + climb_height = mpHIO->mWallHang.m.climb_height; } body_height = current.pos.y + mSinkShapeOffset; @@ -8328,11 +8359,11 @@ void daAlink_c::setFrontWallType() { f32 sp14; f32 sp10; if (checkWolf()) { - sp14 = 0.01f + daAlinkHIO_wlSwim_c0::m.mClimbHeight; - sp10 = daAlinkHIO_wlSwim_c0::m.mClimbBelowWaterSurface; + sp14 = 0.01f + mpHIO->mWolf.mWlSwim.m.mClimbHeight; + sp10 = mpHIO->mWolf.mWlSwim.m.mClimbBelowWaterSurface; } else { - sp14 = 0.01f + daAlinkHIO_swim_c0::m.mClimbHeight; - sp10 = daAlinkHIO_swim_c0::m.mClimbWaterSurfaceUnder; + sp14 = 0.01f + mpHIO->mSwim.m.mClimbHeight; + sp10 = mpHIO->mSwim.m.mClimbWaterSurfaceUnder; } if (checkNoResetFlg0(FLG0_SWIM_UP)) { @@ -8344,7 +8375,7 @@ void daAlink_c::setFrontWallType() { } } else if (checkModeFlg(2)) { if (sp38 - mLinkAcch.GetGroundH() > field_0x598 && temp_f29 < hang_height) { - if (!checkWolf() && mProcID != PROC_HOOKSHOT_FLY && temp_f29 < daAlinkHIO_autoJump_c0::m.mGrabHeightLimit) { + if (!checkWolf() && mProcID != PROC_HOOKSHOT_FLY && temp_f29 < mpHIO->mAutoJump.m.mGrabHeightLimit) { field_0x2f91 = 0xB; } else { field_0x2f91 = 0xA; @@ -8355,7 +8386,7 @@ void daAlink_c::setFrontWallType() { field_0x2f91 = 6; } else if (temp_f29 < 0.01f + climb_height) { field_0x2f91 = 7; - } else if (checkWolf() || (temp_f29 < 0.01f + daAlinkHIO_wallHang_c0::m.jump_climb_height)) { + } else if (checkWolf() || (temp_f29 < 0.01f + mpHIO->mWallHang.m.jump_climb_height)) { field_0x2f91 = 8; } else { field_0x2f91 = 9; @@ -8576,7 +8607,7 @@ void daAlink_c::setSandShapeOffset() { if (mSinkShapeOffset > -15.0f) { var_f31 = 10.0f; } else { - var_f31 = daAlinkHIO_basic_c0::m.mSandSinkSpeed; + var_f31 = mpHIO->mBasic.m.mSandSinkSpeed; } } else if (field_0x2fbd == 2) { var_f30 = field_0x345c; @@ -8586,7 +8617,7 @@ void daAlink_c::setSandShapeOffset() { if (mSinkShapeOffset > -15.0f) { var_f31 = 10.0f; } else { - var_f31 = daAlinkHIO_basic_c0::m.mSandSinkSpeed; + var_f31 = mpHIO->mBasic.m.mSandSinkSpeed; if (checkWolf()) { var_f31 *= 0.42857143f; } @@ -8597,7 +8628,7 @@ void daAlink_c::setSandShapeOffset() { if (mSinkShapeOffset > -15.0f) { var_f31 = 10.0f; } else { - var_f31 = daAlinkHIO_basic_c0::m.mSandSinkSpeed; + var_f31 = mpHIO->mBasic.m.mSandSinkSpeed; } if (checkWolf()) { @@ -8605,14 +8636,14 @@ void daAlink_c::setSandShapeOffset() { } } else { var_f30 = -15.0f; - var_f31 = daAlinkHIO_basic_c0::m.mSandSurfaceSpeed; + var_f31 = mpHIO->mBasic.m.mSandSurfaceSpeed; } } else if (!(mNormalSpeed < 2.0f) || !(mSinkShapeOffset < -15.0f)) { var_f30 = -15.0f; if (mSinkShapeOffset < -15.0f) { - var_f31 = daAlinkHIO_basic_c0::m.mSandSurfaceSpeed; + var_f31 = mpHIO->mBasic.m.mSandSurfaceSpeed; } else { - var_f31 = daAlinkHIO_basic_c0::m.mSandSinkSpeed; + var_f31 = mpHIO->mBasic.m.mSandSinkSpeed; } } } @@ -8675,7 +8706,7 @@ bool daAlink_c::getSlidePolygon(cM3dGPla* param_0) { ((field_0x3174 != 8 && (mGndPolySpecialCode == 1 || (param_0->mNormal.y < field_0x3470 && mGndPolySpecialCode != 2))) || (mGndPolySpecialCode == 5 && !checkWolf() && (!checkInputOnR() || mProcID == PROC_SLIDE) && (param_0->mNormal.y < cM_scos(field_0x3122))) || (!checkEquipHeavyBoots() && !dComIfGp_checkPlayerStatus0(0, 0x100) && checkLv2MiddleBossBgRide(temp_r28) && - (param_0->mNormal.y < cM_scos(cM_deg2s(daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle)))))) + (param_0->mNormal.y < cM_scos(cM_deg2s(mpHIO->mSlide.m.mLV2MinibossFloorSlideAngle)))))) { return 1; } @@ -8953,24 +8984,24 @@ void daAlink_c::setStickData() { (!checkBootsOrArmorHeavy() || !checkNoResetFlg0(FLG0_UNDERWATER))) { if (checkWolf() && checkHeavyStateOn(1, 0) && mSinkShapeOffset < -30.0f) { - mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mInputFactor * 0.7f; + mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mInputFactor * 0.7f; } else { - mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mInputFactor; + mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mInputFactor; } field_0x33a8 *= mHeavySpeedMultiplier; } else if (checkBootsOrArmorHeavy()) { if (checkZoraWearAbility()) { - mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mZoraWaterInputFactor; + mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mZoraWaterInputFactor; } else { - mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mWaterInputFactor; + mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mWaterInputFactor; } field_0x33a8 *= mHeavySpeedMultiplier; } else if ((checkWolf() && field_0x2fbc == 11 && checkWaterPolygonUnder()) || field_0x2fbb == 11) { onNoResetFlg0(FLG0_UNK_40000000); - field_0x33a8 *= daAlinkHIO_wolf_c0::m.mUnderwaterInputRate; - mHeavySpeedMultiplier = daAlinkHIO_wolf_c0::m.mUnderwaterInputRate; + field_0x33a8 *= mpHIO->mWolf.m.mUnderwaterInputRate; + mHeavySpeedMultiplier = mpHIO->mWolf.m.mUnderwaterInputRate; } } @@ -9253,7 +9284,7 @@ void daAlink_c::setNormalSpeedF(f32 i_incSpeed, f32 param_1) { } if ((checkUpperReadyThrowAnime() && mLinkAcch.ChkGroundHit() && field_0x2f8c == 1) || ((checkRoomOnly() || checkCopyRodControllAnime() || checkGrabSlowMoveActor() || (checkUpperGuardAnime() && field_0x2f8c == 1) || (field_0x2fbd == 4 && mSinkShapeOffset < -15.0f)) && (mProcID == PROC_MOVE || mProcID == PROC_ATN_MOVE || mProcID == PROC_ATN_ACTOR_MOVE || mProcID == PROC_WOLF_MOVE || mProcID == PROC_WOLF_ATN_AC_MOVE || mProcID == PROC_MOVE_TURN))) { - f32 temp_f30 = field_0x594 * daAlinkHIO_basic_c0::m.mIndoorSpeedFactor; + f32 temp_f30 = field_0x594 * mpHIO->mBasic.m.mIndoorSpeedFactor; if (var_f31 > temp_f30) { var_f31 = temp_f30; } @@ -9269,9 +9300,9 @@ void daAlink_c::setNormalSpeedF(f32 i_incSpeed, f32 param_1) { if (checkNoResetFlg3(FLG3_UNK_1000)) { f32 sp18; if (checkWolf()) { - sp18 = daAlinkHIO_wlSwim_c0::m.mStartHeight; + sp18 = mpHIO->mWolf.mWlSwim.m.mStartHeight; } else { - sp18 = daAlinkHIO_swim_c0::m.mStartHeight; + sp18 = mpHIO->mSwim.m.mStartHeight; } f32 sp14 = cLib_minMaxLimit((mWaterY - (30.0f + current.pos.y)) / (sp18 - 30.0f), 0.0f, 1.0f); @@ -9411,46 +9442,46 @@ void daAlink_c::setSpeedAndAngleNormal() { } if (mProcID == PROC_MOVE) { - if ((speedF / field_0x594) > daAlinkHIO_move_c0::m.mSlideThresholdSpeed) { + if ((speedF / field_0x594) > mpHIO->mMove.m.mSlideThresholdSpeed) { if (getDirectionFromAngle(mPrevStickAngle - mStickAngle) == DIR_BACKWARD) { return; } } - if ((speedF / field_0x594) <= daAlinkHIO_move_c0::m.mSlideThresholdSpeed) { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_move_c0::m.mTurnAngleRate, daAlinkHIO_move_c0::m.mMaxTurnAngle, daAlinkHIO_move_c0::m.mMinTurnAngle); + if ((speedF / field_0x594) <= mpHIO->mMove.m.mSlideThresholdSpeed) { + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mMove.m.mTurnAngleRate, mpHIO->mMove.m.mMaxTurnAngle, mpHIO->mMove.m.mMinTurnAngle); return; } var_r24 = true; } else { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_move_c0::m.mTurnAngleRate, daAlinkHIO_move_c0::m.mMaxTurnAngle, daAlinkHIO_move_c0::m.mMinTurnAngle); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mMove.m.mTurnAngleRate, mpHIO->mMove.m.mMaxTurnAngle, mpHIO->mMove.m.mMinTurnAngle); } } else { s16 var_r28; s16 var_r27; if (checkEventRun()) { - var_r28 = daAlinkHIO_move_c0::m.mMaxTurnAngle; - var_r27 = daAlinkHIO_move_c0::m.mMinTurnAngle; + var_r28 = mpHIO->mMove.m.mMaxTurnAngle; + var_r27 = mpHIO->mMove.m.mMinTurnAngle; } else { - var_r28 = daAlinkHIO_move_c0::m.mMaxTurnAngle * temp_f30; + var_r28 = mpHIO->mMove.m.mMaxTurnAngle * temp_f30; if (var_r28 < 10) { var_r28 = 10; } - var_r27 = daAlinkHIO_move_c0::m.mMinTurnAngle * temp_f30; + var_r27 = mpHIO->mMove.m.mMinTurnAngle * temp_f30; if (var_r27 < 1) { var_r27 = 1; } } - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_move_c0::m.mTurnAngleRate, var_r28, var_r27); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mMove.m.mTurnAngleRate, var_r28, var_r27); } if (!var_r24) { f32 temp_f28 = getStickAngleDistanceRate(); if (checkEventRun()) { - var_f31 = temp_f28 * (daAlinkHIO_move_c0::m.mAcceleration * field_0x33a8); + var_f31 = temp_f28 * (mpHIO->mMove.m.mAcceleration * field_0x33a8); } else { f32 var_f29 = 0.3f * (1.0f - fabsf(mNormalSpeed / field_0x594)); if (checkHeavyStateOn(1, 1)) { @@ -9458,7 +9489,7 @@ void daAlink_c::setSpeedAndAngleNormal() { } if (field_0x33a8 > var_f29) { - var_f31 = temp_f28 * (daAlinkHIO_move_c0::m.mAcceleration * temp_f30); + var_f31 = temp_f28 * (mpHIO->mMove.m.mAcceleration * temp_f30); } else { var_f31 = 0.0f; } @@ -9472,7 +9503,7 @@ void daAlink_c::setSpeedAndAngleNormal() { if (!checkAttentionLock() && mProcID != PROC_MOVE_TURN && checkInputOnR()) { s16 sp8 = shape_angle.y; - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_move_c0::m.mTurnAngleRate, daAlinkHIO_move_c0::m.mMaxTurnAngle * 2, daAlinkHIO_move_c0::m.mMinTurnAngle * 2); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mMove.m.mTurnAngleRate, mpHIO->mMove.m.mMaxTurnAngle * 2, mpHIO->mMove.m.mMinTurnAngle * 2); int temp_r23 = (s16)(sp8 - current.angle.y) * (s16)(shape_angle.y - current.angle.y); if (temp_r23 <= 0 && temp_r23 >= -0x1000000) { @@ -9480,7 +9511,7 @@ void daAlink_c::setSpeedAndAngleNormal() { } } - setNormalSpeedF(var_f31, daAlinkHIO_move_c0::m.mDeceleration); + setNormalSpeedF(var_f31, mpHIO->mMove.m.mDeceleration); } void daAlink_c::setSpeedAndAngleAtn() { @@ -9515,16 +9546,16 @@ void daAlink_c::setSpeedAndAngleAtn() { f32 var_f28; if (mTargetedActor != NULL) { - var_r27 = daAlinkHIO_atnMove_c0::m.mTurnAngleRate; - var_r26 = daAlinkHIO_atnMove_c0::m.mMaxTurnAngle; - var_r25 = daAlinkHIO_atnMove_c0::m.mMinTurnAngle; + var_r27 = mpHIO->mAtnMove.m.mTurnAngleRate; + var_r26 = mpHIO->mAtnMove.m.mMaxTurnAngle; + var_r25 = mpHIO->mAtnMove.m.mMinTurnAngle; if (var_r29 == 1) { - var_f31 = daAlinkHIO_atnMove_c0::m.mBackAcceleration; - var_f30 = daAlinkHIO_atnMove_c0::m.mBackDeceleration; + var_f31 = mpHIO->mAtnMove.m.mBackAcceleration; + var_f30 = mpHIO->mAtnMove.m.mBackDeceleration; } else { - var_f31 = daAlinkHIO_atnMove_c0::m.mAcceleration; - var_f30 = daAlinkHIO_atnMove_c0::m.mDeceleration; + var_f31 = mpHIO->mAtnMove.m.mAcceleration; + var_f30 = mpHIO->mAtnMove.m.mDeceleration; } } else { if (var_r29 == 0) { @@ -9542,16 +9573,16 @@ void daAlink_c::setSpeedAndAngleAtn() { return; } - var_r27 = daAlinkHIO_noActAtnMove_c0::m.mTurnAngleRate; - var_r26 = daAlinkHIO_noActAtnMove_c0::m.mMaxTurnAngle; - var_r25 = daAlinkHIO_noActAtnMove_c0::m.mMinTurnAngle; + var_r27 = mpHIO->mNoActAtnMove.m.mTurnAngleRate; + var_r26 = mpHIO->mNoActAtnMove.m.mMaxTurnAngle; + var_r25 = mpHIO->mNoActAtnMove.m.mMinTurnAngle; if (var_r29 == 1) { - var_f31 = daAlinkHIO_noActAtnMove_c0::m.mBackAcceleration; - var_f30 = daAlinkHIO_noActAtnMove_c0::m.mBackDeceleration; + var_f31 = mpHIO->mNoActAtnMove.m.mBackAcceleration; + var_f30 = mpHIO->mNoActAtnMove.m.mBackDeceleration; } else { - var_f31 = daAlinkHIO_noActAtnMove_c0::m.mAcceleration; - var_f30 = daAlinkHIO_noActAtnMove_c0::m.mDeceleration; + var_f31 = mpHIO->mNoActAtnMove.m.mAcceleration; + var_f30 = mpHIO->mNoActAtnMove.m.mDeceleration; } } @@ -9623,15 +9654,15 @@ void daAlink_c::setJumpMode() { } f32 daAlink_c::getMetamorphoseNearDis() const { - return daAlinkHIO_basic_c0::m.mTransformBlockNearDis; + return mpHIO->mBasic.m.mTransformBlockNearDis; } f32 daAlink_c::getMetamorphoseFarDis() const { - return daAlinkHIO_basic_c0::m.mTransformBlockFarDis; + return mpHIO->mBasic.m.mTransformBlockFarDis; } s16 daAlink_c::getMetamorphoseFarAngle() const { - return daAlinkHIO_basic_c0::m.mTransformBlockFarAngle; + return mpHIO->mBasic.m.mTransformBlockFarAngle; } void daAlink_c::setMidnaMsg() { @@ -10083,8 +10114,8 @@ BOOL daAlink_c::checkLandAction(int param_0) { BOOL var_r29 = field_0x33a8 > 0.8f && temp_r27 != 1 && !checkGrabAnime() && mProcID != PROC_CUT_HEAD && temp_r3 == DIR_FORWARD; - if ((param_0 || temp_f31 >= daAlinkHIO_damFall_c0::m.mMinRollHeight) && - temp_f31 < daAlinkHIO_damFall_c0::m.mMaxRollHeight && var_r29) + if ((param_0 || temp_f31 >= mpHIO->mDamage.mDamFall.m.mMinRollHeight) && + temp_f31 < mpHIO->mDamage.mDamFall.m.mMaxRollHeight && var_r29) { if (temp_r27 == DIR_FORWARD) { procFrontRollInit(); @@ -10092,7 +10123,7 @@ BOOL daAlink_c::checkLandAction(int param_0) { procSideRollInit(temp_r27); } } else if (checkNoLandDamageSlidePolygon() || - temp_f31 < daAlinkHIO_damFall_c0::m.mSmallDmgHeight) + temp_f31 < mpHIO->mDamage.mDamFall.m.mSmallDmgHeight) { if (param_0) { procLandDamageInit(0); @@ -10105,8 +10136,8 @@ BOOL daAlink_c::checkLandAction(int param_0) { } else if (checkInputOnR() && temp_r27 == DIR_FORWARD && temp_r3 == DIR_FORWARD && mNormalSpeed > 5.0f) { - if (mNormalSpeed > daAlinkHIO_move_c0::m.mMaxSpeed) { - mNormalSpeed = daAlinkHIO_move_c0::m.mMaxSpeed; + if (mNormalSpeed > mpHIO->mMove.m.mMaxSpeed) { + mNormalSpeed = mpHIO->mMove.m.mMaxSpeed; } mNormalSpeed *= 0.6f; current.angle.y = shape_angle.y; @@ -10123,7 +10154,7 @@ BOOL daAlink_c::checkLandAction(int param_0) { } } else { int var_r4; - if (temp_f31 < daAlinkHIO_damFall_c0::m.mBigDmgHeight) { + if (temp_f31 < mpHIO->mDamage.mDamFall.m.mBigDmgHeight) { var_r4 = 1; } else { var_r4 = 2; @@ -10248,16 +10279,16 @@ BOOL daAlink_c::checkAutoJumpAction() { f32 sp10; if (checkWolf()) { if (checkWolfDashMode()) { - sp10 = daAlinkHIO_wlAutoJump_c0::m.mJumpLimitSpeed; + sp10 = mpHIO->mWolf.mWlAutoJump.m.mJumpLimitSpeed; } else { - sp10 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpLimitSpeed; + sp10 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpLimitSpeed; } sp18 = 0.0f; } else { if (checkIronBallWaitAnime()) { sp10 = 3.0f; } else { - sp10 = daAlinkHIO_autoJump_c0::m.mJumpSpeedLimit; + sp10 = mpHIO->mAutoJump.m.mJumpSpeedLimit; } sp18 = 60.0f; } @@ -10283,7 +10314,7 @@ BOOL daAlink_c::checkAutoJumpAction() { } } - if (!checkEndResetFlg0(ERFLG0_NOT_HANG) && mSpecialMode != 0x2B && var_r29 && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 2 && sp28 < -daAlinkHIO_wallHang_c0::m.hang_foot_pos_height && current.pos.y - mWaterY > sp18 && (fabsf(sp44.mNormal.y) <= 0.05f || (sp44.mNormal.y < 0.05f && var_r27 && getWallEdgePos(mLinkLinChk.GetCross(), &sp44, &sp58, mLinkLinChk.GetCrossP(), 0)))) { + if (!checkEndResetFlg0(ERFLG0_NOT_HANG) && mSpecialMode != 0x2B && var_r29 && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 2 && sp28 < -mpHIO->mWallHang.m.hang_foot_pos_height && current.pos.y - mWaterY > sp18 && (fabsf(sp44.mNormal.y) <= 0.05f || (sp44.mNormal.y < 0.05f && var_r27 && getWallEdgePos(mLinkLinChk.GetCross(), &sp44, &sp58, mLinkLinChk.GetCrossP(), 0)))) { current.pos.x = mLinkLinChk.GetCross().x; current.pos.z = mLinkLinChk.GetCross().z; @@ -10302,7 +10333,7 @@ BOOL daAlink_c::checkAutoJumpAction() { if (mProcID == PROC_FRONT_ROLL) { sp24 = 0.0f; } else { - sp24 = daAlinkHIO_autoJump_c0::m.mFallInterpolation; + sp24 = mpHIO->mAutoJump.m.mFallInterpolation; } f32 spC, sp8; @@ -10322,11 +10353,11 @@ BOOL daAlink_c::checkAutoJumpAction() { current.pos.z -= 75.0f * cM_scos(shape_angle.y); } } else { - sp24 = daAlinkHIO_autoJump_c0::m.mFallInterpolation; + sp24 = mpHIO->mAutoJump.m.mFallInterpolation; } if (checkWolf()) { - return procWolfFallInit(1, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + return procWolfFallInit(1, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } else { return procFallInit(1, sp24); } @@ -10437,7 +10468,7 @@ BOOL daAlink_c::checkFrontWallTypeAction() { field_0x3078 = var_r27 + 1; if (field_0x2f91 == 6) { - if (field_0x3078 > daAlinkHIO_wallHang_c0::m.small_jump_input_time) { + if (field_0x3078 > mpHIO->mWallHang.m.small_jump_input_time) { if (checkWolf()) { return procWolfStepMoveInit(); } else { @@ -10445,7 +10476,7 @@ BOOL daAlink_c::checkFrontWallTypeAction() { } } } else if (field_0x2f91 == 7 || field_0x2f91 == 8 || field_0x2f91 == 9) { - if (field_0x3078 > daAlinkHIO_wallHang_c0::m.grab_input_time) { + if (field_0x3078 > mpHIO->mWallHang.m.grab_input_time) { if (checkWolf()) { if (field_0x2f91 == 7 || field_0x2f91 == 8) { if (checkModeFlg(0x40000)) { @@ -10532,7 +10563,7 @@ int daAlink_c::checkItemChangeAutoAction() { void daAlink_c::setFastShotTimer() { if (!dComIfGp_checkPlayerStatus0(0, 0x2000)) { - mFastShotTime = daAlinkHIO_item_c0::m.mItemFPTransitionTimer; + mFastShotTime = mpHIO->mItem.m.mItemFPTransitionTimer; } } @@ -10607,7 +10638,7 @@ bool daAlink_c::checkSwordTwirlAction() { anm = 0x40; } - setUpperAnimeBaseSpeed(anm, daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed, 3.0f); + setUpperAnimeBaseSpeed(anm, mpHIO->mAtnMove.m.mWaitAnmSpeed, 3.0f); seStartSwordCut(Z2SE_AL_WAIT_SWORD_SWING); } } @@ -10715,11 +10746,11 @@ BOOL daAlink_c::checkUpperItemAction() { field_0x30f6--; if (swordTrigger() || doTrigger()) { - field_0x30f6 -= daAlinkHIO_damCaught_c0::m.mInputFadeTime; + field_0x30f6 -= mpHIO->mDamage.mDamCaught.m.mInputFadeTime; } if (checkInputOnR() && abs((s16)(mStickAngle - mPrevStickAngle)) > 0x1000) { - field_0x30f6 -= daAlinkHIO_damCaught_c0::m.mInputFadeTime; + field_0x30f6 -= mpHIO->mDamage.mDamCaught.m.mInputFadeTime; } if (field_0x30f6 < 0 || !checkNoResetFlg0(FLG0_DK_CAUGHT)) { @@ -11098,9 +11129,9 @@ BOOL daAlink_c::checkItemAction() { if (mEquipItem == 0x103) { daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2]; - if ((checkUpperAnime(0x80) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaL_c0::m.mCutAnm.mCancelFrame) || - (checkUpperAnime(0x81) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaR_c0::m.mCutAnm.mCancelFrame) || - (checkUpperAnime(0x82) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaCharge_c0::m.mCutAnm.mCancelFrame) || + if ((checkUpperAnime(0x80) && frame_ctrl->getFrame() <= mpHIO->mCut.mCutDashLeft.m.mCutAnm.mCancelFrame) || + (checkUpperAnime(0x81) && frame_ctrl->getFrame() <= mpHIO->mCut.mCutDashRight.m.mCutAnm.mCancelFrame) || + (checkUpperAnime(0x82) && frame_ctrl->getFrame() <= mpHIO->mCut.mCutDashCharge.m.mCutAnm.mCancelFrame) || checkModeFlg(0x40000)) { return false; @@ -11305,11 +11336,11 @@ void daAlink_c::swordEquip(int param_0) { field_0x2fde = 0x103; if (checkReinRide()) { - setUpperAnimeParam(0x261, UPPER_2, &daAlinkHIO_cut_c0::m.mEquipAnm); + setUpperAnimeParam(0x261, UPPER_2, &mpHIO->mCut.m.mEquipAnm); offNoResetFlg3(FLG3_UNK_8000); } else { u32 var_r29 = checkNoResetFlg0(FLG0_UNK_1000000); - setUpperAnimeParam(0x255, UPPER_2, &daAlinkHIO_cut_c0::m.mEquipAnm); + setUpperAnimeParam(0x255, UPPER_2, &mpHIO->mCut.m.mEquipAnm); if (var_r29) { mUpperFrameCtrl[2].setFrame(12); @@ -11342,16 +11373,16 @@ void daAlink_c::swordEquip(int param_0) { void daAlink_c::swordUnequip() { f32 anm_speed; if (checkFastUnequip()) { - anm_speed = daAlinkHIO_cut_c0::m.mFastUnequipAnmSpeed; + anm_speed = mpHIO->mCut.m.mFastUnequipAnmSpeed; } else { - anm_speed = daAlinkHIO_cut_c0::m.mUnequipAnm.mSpeed; + anm_speed = mpHIO->mCut.m.mUnequipAnm.mSpeed; } u16 anm_id = checkReinRide() ? (u16)0x261 : (u16)0x255; - setUpperAnime(anm_id, UPPER_2, anm_speed, daAlinkHIO_cut_c0::m.mUnequipAnm.mStartFrame, - daAlinkHIO_cut_c0::m.mUnequipAnm.mEndFrame, - daAlinkHIO_cut_c0::m.mUnequipAnm.mInterpolation); + setUpperAnime(anm_id, UPPER_2, anm_speed, mpHIO->mCut.m.mUnequipAnm.mStartFrame, + mpHIO->mCut.m.mUnequipAnm.mEndFrame, + mpHIO->mCut.m.mUnequipAnm.mInterpolation); setFacePriTexture(FTANM_UNK_2D); setFaceBck(0x15E, 1, 0xFFFF); } @@ -11379,21 +11410,21 @@ void daAlink_c::itemUnequip(u16 i_itemID, f32 i_playSpeed) { i_itemID == fpcNm_ITEM_HOOKSHOT || checkBottleItem(i_itemID)) { anm_id = 0x247; - anm_data = &daAlinkHIO_item_c0::m.mOneHandEquipAnm; + anm_data = &mpHIO->mItem.m.mOneHandEquipAnm; } else if (checkBowAndSlingItem(i_itemID)) { anm_id = checkBowGrabLeftHand() ? (u16)0x247 : (u16)0x248; - anm_data = &daAlinkHIO_item_c0::m.mOneHandEquipAnm; + anm_data = &mpHIO->mItem.m.mOneHandEquipAnm; } else { anm_id = 0x245; - anm_data = &daAlinkHIO_item_c0::m.mTwoHandEquipAnm; + anm_data = &mpHIO->mItem.m.mTwoHandEquipAnm; } f32 anm_speed; if (i_playSpeed > 0.0f && checkFastUnequip()) { if (anm_id == 0x245) { - anm_speed = daAlinkHIO_item_c0::m.mTwoHandReleaseAnmSpeed; + anm_speed = mpHIO->mItem.m.mTwoHandReleaseAnmSpeed; } else { - anm_speed = daAlinkHIO_item_c0::m.mOneHandReleaseAnmSpeed; + anm_speed = mpHIO->mItem.m.mOneHandReleaseAnmSpeed; } } else { anm_speed = anm_data->mSpeed * i_playSpeed; @@ -11641,14 +11672,14 @@ int daAlink_c::checkNextAction(int param_0) { if (checkFmChainGrabAnime()) { field_0x594 = 13.0f; } else if (mTargetedActor != NULL) { - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed; } else { - field_0x594 = daAlinkHIO_noActAtnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mNoActAtnMove.m.mMaxSpeed; } } else if (checkSlope()) { - field_0x594 = daAlinkHIO_slide_c0::m.mMaxClimbSpeed; + field_0x594 = mpHIO->mSlide.m.mMaxClimbSpeed; } else { - field_0x594 = daAlinkHIO_move_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mMove.m.mMaxSpeed; } if (checkEndResetFlg0(ERFLG0_UNK_100000) && mLinkAcch.ChkGroundHit() && @@ -11708,7 +11739,7 @@ int daAlink_c::checkNextAction(int param_0) { } else if (mProcID == PROC_MOVE_TURN && current.angle.y != shape_angle.y) { ret = procMoveTurnInit(0); } else if (checkInputOnR() && cLib_distanceAngleS(field_0x2fe2, current.angle.y) > 0x7800) { - if (speedF / field_0x594 > daAlinkHIO_move_c0::m.mSlideThresholdSpeed && + if (speedF / field_0x594 > mpHIO->mMove.m.mSlideThresholdSpeed && mGndPolySpecialCode != dBgW_SPCODE_ICE && !checkGrabAnime() && getDirectionFromAngle(mPrevStickAngle - mStickAngle) == DIR_BACKWARD) { @@ -11819,25 +11850,25 @@ void daAlink_c::setItemAction() { setCopyRodControllUpperSpeedRate(); } } else if (checkBoomerangCatchAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > mpHIO->mItem.mBoomerang.m.mCatchAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->getFrame() >= 20.0f) { field_0x2f97 = 6; } } else if (checkBoomerangThrowAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCancelFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > mpHIO->mItem.mBoomerang.m.mThrowAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->checkPass(5.5f)) { throwBoomerang(); } } else if (checkCopyRodThrowAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCancelFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > mpHIO->mItem.mBoomerang.m.mThrowAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->checkPass(6.5f)) { throwCopyRod(); } } else if (checkKandelaarSwingAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCancelFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > mpHIO->mItem.mLantern.m.mShakeAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } } else if (checkEquipAnime()) { @@ -11872,7 +11903,7 @@ void daAlink_c::setItemAction() { commonChangeItem(); } } else if (checkCutDashAnime()) { - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; if (checkAnmEnd(frame_ctrl)) { resetUpperAnime(UPPER_2, 3.0f); @@ -11881,11 +11912,11 @@ void daAlink_c::setItemAction() { const daAlinkHIO_cutDash_c1* cut_hio; if (checkUpperAnime(0x80)) { - cut_hio = &daAlinkHIO_cutDaL_c0::m; + cut_hio = &mpHIO->mCut.mCutDashLeft.m; } else if (checkUpperAnime(0x81)) { - cut_hio = &daAlinkHIO_cutDaR_c0::m; + cut_hio = &mpHIO->mCut.mCutDashRight.m; } else { - cut_hio = &daAlinkHIO_cutDaCharge_c0::m; + cut_hio = &mpHIO->mCut.mCutDashCharge.m; } if (frame_ctrl->getFrame() >= cut_hio->mAttackStartFrame && frame_ctrl->getFrame() < cut_hio->mAttackEndFrame) { @@ -11922,7 +11953,7 @@ void daAlink_c::setItemAction() { BOOL daAlink_c::checkNextActionFromCrouch(int param_0) { if (checkNextAction(param_0)) { if (field_0x2f8c == 1 || field_0x2f8c == 2 || field_0x2f8c == 3) { - field_0x2060->initOldFrameMorf(daAlinkHIO_crouch_c0::m.mStandInterpolation, 0, 0x23); + field_0x2060->initOldFrameMorf(mpHIO->mCrouch.m.mStandInterpolation, 0, 0x23); } return true; @@ -11969,7 +12000,7 @@ s16 daAlink_c::getBodyAngleXAtnActor(int param_0) { } else { var_r30 = spC.atan2sY_XZ(); if (param_0 != 0) { - var_r30 = cLib_minMaxLimit((s16)var_r30, daAlinkHIO_cut_c0::m.mUnkBodyUpwards, daAlinkHIO_cut_c0::m.mUnkBodyDownwards); + var_r30 = cLib_minMaxLimit((s16)var_r30, mpHIO->mCut.m.mUnkBodyUpwards, mpHIO->mCut.m.mUnkBodyDownwards); } else { var_r30 = cLib_minMaxLimit((s16)var_r30, -0x2000, 0x2000); } @@ -12065,26 +12096,26 @@ void daAlink_c::initGravity() { if (checkWolf()) { if (checkModeFlg(MODE_SWIMMING)) { if (checkHeavyStateOn(1, 1)) { - gravity = -daAlinkHIO_wlSwim_c0::m.mHeavyBuoyancy; - max_fall_speed = daAlinkHIO_wlSwim_c0::m.mHeavyMaxFallSpeed; + gravity = -mpHIO->mWolf.mWlSwim.m.mHeavyBuoyancy; + max_fall_speed = mpHIO->mWolf.mWlSwim.m.mHeavyMaxFallSpeed; } else { - gravity = -daAlinkHIO_wlSwim_c0::m.mBuoyancy; - max_fall_speed = daAlinkHIO_wlSwim_c0::m.mMaxFallSpeed; + gravity = -mpHIO->mWolf.mWlSwim.m.mBuoyancy; + max_fall_speed = mpHIO->mWolf.mWlSwim.m.mMaxFallSpeed; } } else { - gravity = daAlinkHIO_wlAutoJump_c0::m.mGravity; - max_fall_speed = daAlinkHIO_wlAutoJump_c0::m.mMaxFallSpeed; + gravity = mpHIO->mWolf.mWlAutoJump.m.mGravity; + max_fall_speed = mpHIO->mWolf.mWlAutoJump.m.mMaxFallSpeed; } } else if (checkModeFlg(MODE_SWIMMING) || checkNoResetFlg0(FLG0_UNDERWATER)) { max_fall_speed = getSwimMaxFallSpeed(); if (checkHeavyStateOn(1, 1) && mProcID != PROC_OCTAIEAL_SPIT) { - gravity = daAlinkHIO_swim_c0::m.mBootsGravity; + gravity = mpHIO->mSwim.m.mBootsGravity; } else { - gravity = -daAlinkHIO_swim_c0::m.mBuoyancy; + gravity = -mpHIO->mSwim.m.mBuoyancy; } } else { - gravity = daAlinkHIO_autoJump_c0::m.mGravity; - max_fall_speed = daAlinkHIO_autoJump_c0::m.mMaxFallSpeed; + gravity = mpHIO->mAutoJump.m.mGravity; + max_fall_speed = mpHIO->mAutoJump.m.mMaxFallSpeed; } setSpecialGravity(gravity, max_fall_speed, 1); @@ -12308,7 +12339,7 @@ void daAlink_c::posMove() { } if (getZoraSwim() && !checkZoraWearAbility()) { - speedF *= daAlinkHIO_swim_c0::m.mFloatUpSwimSpeedRate; + speedF *= mpHIO->mSwim.m.mFloatUpSwimSpeedRate; } f32 var_f31 = speedF; @@ -12342,13 +12373,13 @@ void daAlink_c::posMove() { f32 temp_f0 = cM_sht2d(cM_atan2s(plane.mNormal.absXZ(), plane.mNormal.y)); - if (temp_f0 >= daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle && - temp_f0 <= daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle) + if (temp_f0 >= mpHIO->mSlide.m.mLV2MinibossFloorWeakSlideAngle && + temp_f0 <= mpHIO->mSlide.m.mLV2MinibossFloorSlideAngle) { - temp_f0 = ((temp_f0 - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle) * - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideSpeed) / - (daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle - - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle); + temp_f0 = ((temp_f0 - mpHIO->mSlide.m.mLV2MinibossFloorWeakSlideAngle) * + mpHIO->mSlide.m.mLV2MinibossFloorWeakSlideSpeed) / + (mpHIO->mSlide.m.mLV2MinibossFloorSlideAngle - + mpHIO->mSlide.m.mLV2MinibossFloorWeakSlideAngle); plane.mNormal.y = 0.0f; plane.mNormal.normalizeZP(); @@ -12359,7 +12390,7 @@ void daAlink_c::posMove() { } if (checkModeFlg(MODE_SWIMMING)) { - cLib_chasePos(&field_0x3750, cXyz::Zero, daAlinkHIO_damSwim_c0::m.mDeceleration); + cLib_chasePos(&field_0x3750, cXyz::Zero, mpHIO->mDamage.mDamSwim.m.mDeceleration); current.pos += field_0x3750; if (checkNoResetFlg0(FLG0_SWIM_UP) && mProcID != PROC_SWIM_DIVE) { @@ -12370,16 +12401,16 @@ void daAlink_c::posMove() { speed.y = 0.0f; } else if (checkWolf()) { if (checkHeavyStateOn(1, 1)) { - speed.y += daAlinkHIO_wlSwim_c0::m.mHeavyBuoyancy; + speed.y += mpHIO->mWolf.mWlSwim.m.mHeavyBuoyancy; - if (speed.y > daAlinkHIO_wlSwim_c0::m.mHeavyMaxSurfacingSpeed) { - speed.y = daAlinkHIO_wlSwim_c0::m.mHeavyMaxSurfacingSpeed; + if (speed.y > mpHIO->mWolf.mWlSwim.m.mHeavyMaxSurfacingSpeed) { + speed.y = mpHIO->mWolf.mWlSwim.m.mHeavyMaxSurfacingSpeed; } } else { - speed.y += daAlinkHIO_wlSwim_c0::m.mBuoyancy; + speed.y += mpHIO->mWolf.mWlSwim.m.mBuoyancy; - if (speed.y > daAlinkHIO_wlSwim_c0::m.mMaxSurfacingSpeed) { - speed.y = daAlinkHIO_wlSwim_c0::m.mMaxSurfacingSpeed; + if (speed.y > mpHIO->mWolf.mWlSwim.m.mMaxSurfacingSpeed) { + speed.y = mpHIO->mWolf.mWlSwim.m.mMaxSurfacingSpeed; } } } else if (!checkEquipHeavyBoots() && getZoraSwim()) { @@ -12391,25 +12422,25 @@ void daAlink_c::posMove() { if (speed.y < maxFallSpeed) { speed.y = maxFallSpeed; } - } else if (speed.y > daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed) { + } else if (speed.y > mpHIO->mSwim.m.mMaxFloatUpSpeed) { speed.y += gravity; } else if (speed.y < maxFallSpeed) { speed.y += 1.0f; } else { if (checkZoraWearAbility() && - mWaterY > current.pos.y + daAlinkHIO_swim_c0::m.mNormalBuoyancyWaterDepth) + mWaterY > current.pos.y + mpHIO->mSwim.m.mNormalBuoyancyWaterDepth) { - speed.y += daAlinkHIO_swim_c0::m.mZoraClothesBuoyancy; + speed.y += mpHIO->mSwim.m.mZoraClothesBuoyancy; if (speed.y < 0.0f) { speed.y = 0.0f; } } else { - speed.y += daAlinkHIO_swim_c0::m.mBuoyancy; + speed.y += mpHIO->mSwim.m.mBuoyancy; } - if (speed.y > daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed) { - speed.y = daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed; + if (speed.y > mpHIO->mSwim.m.mMaxFloatUpSpeed) { + speed.y = mpHIO->mSwim.m.mMaxFloatUpSpeed; } } } else if (!checkModeFlg(0x400)) { @@ -12920,7 +12951,7 @@ BOOL daAlink_c::checkRestartRoom() { } } else if (mLinkAcch.ChkGroundHit() && field_0x2fbd == 2) { return procCoLavaReturnInit(1); - } else if ((checkModeFlg(0x40000) || (checkNoResetFlg0(FLG0_UNK_80) && mWaterY - current.pos.y > daAlinkHIO_swim_c0::m.mStartHeight)) && fopAcM_GetRoomNo(this) == 0 && checkStageName("F_SP114")) { + } else if ((checkModeFlg(0x40000) || (checkNoResetFlg0(FLG0_UNK_80) && mWaterY - current.pos.y > mpHIO->mSwim.m.mStartHeight)) && fopAcM_GetRoomNo(this) == 0 && checkStageName("F_SP114")) { return procCoSwimFreezeReturnInit(); } else if (!checkCargoCarry() && (field_0x3174 == 4 || field_0x3174 == 10 || (-G_CM3D_F_INF == mLinkAcch.GetGroundH() && !checkModeFlg(0x40000)))) { BOOL temp_r28 = mWaterY > mLinkAcch.GetGroundH(); @@ -12990,7 +13021,7 @@ BOOL daAlink_c::checkRestartRoom() { return true; } - } else if ((mLinkAcch.ChkGroundHit() && (dKy_pol_argument_get(&mLinkAcch.m_gnd) & 0x80)) || (checkWaterPolygonUnder() && checkNoResetFlg0(FLG0_UNK_80) && (dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x80)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -G_CM3D_F_INF != field_0x33b8 && (field_0x2fc6 & 0x80)) || (field_0x2fbc == 6 && checkNoResetFlg0(FLG0_UNK_80) && checkWaterPolygonUnder() && mWaterY > (daAlinkHIO_basic_c0::m.mLavaDeathDepth + mLinkAcch.GetGroundH())) || (field_0x2fc5 == 6 && -G_CM3D_F_INF != field_0x33b8 && field_0x33bc < field_0x33b8 && checkModeFlg(0x40) && field_0x33b8 > (field_0x33d8 + daAlinkHIO_basic_c0::m.mLavaDeathDepth))) { + } else if ((mLinkAcch.ChkGroundHit() && (dKy_pol_argument_get(&mLinkAcch.m_gnd) & 0x80)) || (checkWaterPolygonUnder() && checkNoResetFlg0(FLG0_UNK_80) && (dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x80)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -G_CM3D_F_INF != field_0x33b8 && (field_0x2fc6 & 0x80)) || (field_0x2fbc == 6 && checkNoResetFlg0(FLG0_UNK_80) && checkWaterPolygonUnder() && mWaterY > (mpHIO->mBasic.m.mLavaDeathDepth + mLinkAcch.GetGroundH())) || (field_0x2fc5 == 6 && -G_CM3D_F_INF != field_0x33b8 && field_0x33bc < field_0x33b8 && checkModeFlg(0x40) && field_0x33b8 > (field_0x33d8 + mpHIO->mBasic.m.mLavaDeathDepth))) { if (field_0x2fbc == 6 || (checkModeFlg(0x40) && field_0x2fc5 == 6)) { return procCoLavaReturnInit(0); } @@ -13095,14 +13126,14 @@ int daAlink_c::checkSceneChange(int exitID) { exit_speed = 10.0f; demo_stick = 0.6f; } else { - exit_speed = daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed; + exit_speed = mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed; demo_stick = 1.0f; } } else if (mNormalSpeed < 10.0f || var_r3) { exit_speed = 10.0f; demo_stick = 0.65f; } else { - exit_speed = daAlinkHIO_move_c0::m.mMaxSpeed; + exit_speed = mpHIO->mMove.m.mMaxSpeed; demo_stick = 1.0f; } @@ -13505,7 +13536,7 @@ BOOL daAlink_c::setItemActor() { setGrabItemActor(actor); dComIfGp_addSelectItemNum(mSelectItemId, -1); field_0x33e4 = 38.0f; - setGrabUpperAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setGrabUpperAnime(mpHIO->mBasic.m.mBasicInterpolation); } } mEquipItem = fpcNm_ITEM_NONE; @@ -14061,7 +14092,7 @@ void daAlink_c::setLight() { onNoResetFlg1(FLG1_UNK_80); if (!checkEventRun() && !checkEndResetFlg1(ERFLG1_UNK_4)) { - dComIfGp_setItemOilCount(-daAlinkHIO_kandelaar_c0::m.mNormalOilLoss); + dComIfGp_setItemOilCount(-mpHIO->mItem.mLantern.m.mNormalOilLoss); } u16 ptcl_id; @@ -14512,7 +14543,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) { if (((!checkEquipAnime() || !checkModeFlg(4)) && (!checkModeFlg(0x40000) || !checkWolfEnemyThrowAnime()) && !checkModeFlg(0x1000)) || (checkSwordTwirlAnime() && mProcID != PROC_ATN_ACTOR_WAIT && mProcID != PROC_ATN_ACTOR_MOVE) || (checkWolf() && checkFmChainGrabAnime() && checkModeFlg(0x40)) || checkNoResetFlg1(FLG1_UNK_10000000)) { if ((!checkDkCaught2Anime() || mProcID != PROC_DAMAGE) && !checkNoSetUpperAnime()) { - resetUpperAnime(UPPER_2, daAlinkHIO_basic_c0::m.mBasicInterpolation); + resetUpperAnime(UPPER_2, mpHIO->mBasic.m.mBasicInterpolation); } if (checkBombItem(mEquipItem)) { @@ -14632,7 +14663,7 @@ BOOL daAlink_c::commonProcInitNotSameProc(daAlink_PROC procID) { int daAlink_c::procPreActionUnequipInit(int i_procAfter, fopAc_ac_c* param_1) { commonProcInit(PROC_PREACTION_UNEQUIP); mNormalSpeed = 0.0f; - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); allUnequip(0); mProcVar4.field_0x3010 = 0; @@ -14801,7 +14832,7 @@ int daAlink_c::procWaitInit() { commonProcInit(PROC_WAIT); mNormalSpeed = 0.0f; - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); current.angle.y = shape_angle.y; if (var_r30) { @@ -14863,7 +14894,7 @@ int daAlink_c::procMoveInit() { return 0; } - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); setFootEffectProcType(3); return 1; } @@ -14872,16 +14903,16 @@ int daAlink_c::procMove() { setFootEffectProcType(3); if (!checkNextAction(0) && !checkFrontWallTypeAction()) { if (mDemo.getDemoMode() == 2 && - mNormalSpeed > field_0x594 * daAlinkHIO_move_c0::m.mWalkChangeRate) + mNormalSpeed > field_0x594 * mpHIO->mMove.m.mWalkChangeRate) { - mNormalSpeed = field_0x594 * daAlinkHIO_move_c0::m.mWalkChangeRate; + mNormalSpeed = field_0x594 * mpHIO->mMove.m.mWalkChangeRate; } setBlendMoveAnime(-1.0f); if (field_0x3174 != 8) { field_0x30a0 = - cLib_minMaxLimit((s16)(field_0x2ff0 >> 1), daAlinkHIO_basic_c0::m.mHeadMaxTurnUp, - daAlinkHIO_basic_c0::m.mHeadMaxTurnDown); + cLib_minMaxLimit((s16)(field_0x2ff0 >> 1), mpHIO->mBasic.m.mHeadMaxTurnUp, + mpHIO->mBasic.m.mHeadMaxTurnDown); } } @@ -14893,7 +14924,7 @@ int daAlink_c::procAtnMoveInit() { return 0; } - setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendAtnMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); return 1; } @@ -14922,9 +14953,9 @@ int daAlink_c::procAtnActorWaitInit() { } if (checkAtnWaitAnime()) { - setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendAtnMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } else { - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } return 1; @@ -14948,7 +14979,7 @@ int daAlink_c::procAtnActorMoveInit() { return 0; } - setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendAtnMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); return 1; } @@ -14966,8 +14997,8 @@ int daAlink_c::procWaitTurnInit() { return 0; } - setSingleAnimeBaseSpeed(ANM_STEP_TURN, daAlinkHIO_basic_c0::m.mRotationASpeed, - daAlinkHIO_basic_c0::m.mBasicInterpolation); + setSingleAnimeBaseSpeed(ANM_STEP_TURN, mpHIO->mBasic.m.mRotationASpeed, + mpHIO->mBasic.m.mBasicInterpolation); if (checkEventRun()) { mNormalSpeed = 0.0f; } @@ -14978,7 +15009,7 @@ int daAlink_c::procWaitTurnInit() { } int daAlink_c::procWaitTurn() { - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); if (checkGroundSpecialMode()) { return 1; @@ -15011,23 +15042,23 @@ int daAlink_c::procMoveTurnInit(int param_0) { return 0; } - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); dComIfGp_setPlayerStatus0(0, 0x800); if (param_0 != 0) { - mProcVar3.field_0x300e = (daAlinkHIO_move_c0::m.mMaxTurnAngle * 4) + 19030; - mProcVar4.field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle * 2; + mProcVar3.field_0x300e = (mpHIO->mMove.m.mMaxTurnAngle * 4) + 19030; + mProcVar4.field_0x3010 = mpHIO->mMove.m.mMaxTurnAngle * 2; mProcVar1.field_0x300a = 2; current.angle.y = field_0x2fe2; mNormalSpeed *= 0.5f; } else { - mProcVar3.field_0x300e = daAlinkHIO_move_c0::m.mMaxTurnAngle * 2; - mProcVar4.field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle; + mProcVar3.field_0x300e = mpHIO->mMove.m.mMaxTurnAngle * 2; + mProcVar4.field_0x3010 = mpHIO->mMove.m.mMaxTurnAngle; mProcVar1.field_0x300a = 3; } - mProcVar3.field_0x300e = daAlinkHIO_move_c0::m.mMaxTurnAngle * 2; - mProcVar4.field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle; + mProcVar3.field_0x300e = mpHIO->mMove.m.mMaxTurnAngle * 2; + mProcVar4.field_0x3010 = mpHIO->mMove.m.mMaxTurnAngle; return 1; } @@ -15054,9 +15085,9 @@ int daAlink_c::procSideStepInit(int jump_type) { if (field_0x2f98 == 1) { current.angle.y = shape_angle.y + 0x8000; - setSingleAnimeParam(ANM_BACK_JUMP, &daAlinkHIO_sideStep_c0::m.mBackJumpAnm); - mNormalSpeed = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedH; - speed.y = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedV; + setSingleAnimeParam(ANM_BACK_JUMP, &mpHIO->mSideStep.m.mBackJumpAnm); + mNormalSpeed = mpHIO->mSideStep.m.mBackJumpSpeedH; + speed.y = mpHIO->mSideStep.m.mBackJumpSpeedV; mProcVar1.field_0x300a = 0; } else { daAlink_ANM anm_id; @@ -15068,15 +15099,15 @@ int daAlink_c::procSideStepInit(int jump_type) { current.angle.y = shape_angle.y - 0x4000; } - setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideJumpAnm); - mNormalSpeed = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedH; - speed.y = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedV; + setSingleAnimeParam(anm_id, &mpHIO->mSideStep.m.mSideJumpAnm); + mNormalSpeed = mpHIO->mSideStep.m.mSideJumpSpeedH; + speed.y = mpHIO->mSideStep.m.mSideJumpSpeedV; mProcVar1.field_0x300a = 1; } if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; - speed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; + speed.y *= mpHIO->mItem.mIronBoots.m.mWaterVelocityY; } voiceStart(Z2SE_AL_V_JUMP_S); @@ -15112,9 +15143,9 @@ int daAlink_c::procSideStep() { } else if (checkNoUpperAnime() && checkForceSwordSwing()) { setCutDash(1, 0); } else if (mDemo.getDemoMode() != 16 && - current.pos.y < mLastJumpPos.y - daAlinkHIO_sideStep_c0::m.mFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mSideStep.m.mFallHeight) { - return procFallInit(2, daAlinkHIO_sideStep_c0::m.mFallInterpolation); + return procFallInit(2, mpHIO->mSideStep.m.mFallInterpolation); } mProcVar3.field_0x300e = 1; @@ -15127,8 +15158,8 @@ int daAlink_c::procSideStepLandInit() { if (field_0x2f98 == 1) { field_0x2f9d = 4; - setSingleAnimeParam(ANM_BACK_JUMP_LAND, &daAlinkHIO_sideStep_c0::m.mBackLandAnm); - field_0x3478 = daAlinkHIO_sideStep_c0::m.mBackLandAnm.mCancelFrame; + setSingleAnimeParam(ANM_BACK_JUMP_LAND, &mpHIO->mSideStep.m.mBackLandAnm); + field_0x3478 = mpHIO->mSideStep.m.mBackLandAnm.mCancelFrame; field_0x2f98 = 2; mProcVar1.field_0x300a = 0; field_0x2fb0 = 0; @@ -15144,14 +15175,14 @@ int daAlink_c::procSideStepLandInit() { uvar3 = 0x40; } - setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideLandAnm); - field_0x3478 = daAlinkHIO_sideStep_c0::m.mSideLandAnm.mCancelFrame; + setSingleAnimeParam(anm_id, &mpHIO->mSideStep.m.mSideLandAnm); + field_0x3478 = mpHIO->mSideStep.m.mSideLandAnm.mCancelFrame; mProcVar1.field_0x300a = 1; field_0x2fb0 = 8; field_0x2fcc = 0; if (checkEnemyGroup(mTargetedActor) && mEquipItem == 0x103 && checkNoUpperAnime()) { - setUpperAnimeBaseSpeed(uvar3, daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed, -1.0f); + setUpperAnimeBaseSpeed(uvar3, mpHIO->mAtnMove.m.mWaitAnmSpeed, -1.0f); seStartSwordCut(Z2SE_AL_WAIT_SWORD_SWING); } } @@ -15209,7 +15240,7 @@ int daAlink_c::procSlideInit(s16 param_0) { if (cLib_distanceAngleS(param_0, shape_angle.y) < 0x3800 || mProcVar3.field_0x300e != 0) { field_0x3198 = 1; - setSingleAnimeParam(ANM_SLIDE_FORWARD, &daAlinkHIO_slide_c0::m.mForwardSlideAnm); + setSingleAnimeParam(ANM_SLIDE_FORWARD, &mpHIO->mSlide.m.mForwardSlideAnm); dComIfGp_setPlayerStatus1(0, 0x100); onModeFlg(MODE_UNK_8000); onModeFlg(MODE_UNK_2000000); @@ -15221,13 +15252,13 @@ int daAlink_c::procSlideInit(s16 param_0) { setFootEffectProcType(0); } else { field_0x3198 = 0; - setSingleAnimeParam(ANM_SLIDE_BACKWARD, &daAlinkHIO_slide_c0::m.mBackwardSlideAnm); + setSingleAnimeParam(ANM_SLIDE_BACKWARD, &mpHIO->mSlide.m.mBackwardSlideAnm); dComIfGp_setPlayerStatus1(0, 0x200); field_0x2f9d = 0x60; setFootEffectProcType(1); } - field_0x594 = daAlinkHIO_slide_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mSlide.m.mMaxSpeed; field_0x33cc = 0.0f; mProcVar2.field_0x300c = 0; mProcVar4.field_0x3010 = 0; @@ -15267,7 +15298,7 @@ int daAlink_c::procSlide() { cLib_addCalcAngleS(&shape_angle.y, shape_angleY, 4, 0x1000, 0x400); if (field_0x3198 == 0 || mUnderFrameCtrl[0].getFrame() > 6.0f) { - f32 accel = daAlinkHIO_slide_c0::m.mAcceleration; + f32 accel = mpHIO->mSlide.m.mAcceleration; f32 var_f6 = field_0x594; if (checkNoResetFlg0(FLG0_UNDERWATER)) { @@ -15299,14 +15330,14 @@ int daAlink_c::procSlideLandInit(int param_0) { commonProcInit(PROC_SLIDE_LAND); if (param_0 != 0) { - setSingleAnimeParam(ANM_SLIDE_FORWARD_END, &daAlinkHIO_slide_c0::m.mForwardLandAnm); - field_0x3478 = daAlinkHIO_slide_c0::m.mForwardLandAnm.mCancelFrame; + setSingleAnimeParam(ANM_SLIDE_FORWARD_END, &mpHIO->mSlide.m.mForwardLandAnm); + field_0x3478 = mpHIO->mSlide.m.mForwardLandAnm.mCancelFrame; field_0x3198 = 1; field_0x2f99 = 4; field_0x3588 = l_waitBaseAnime; } else { - setSingleAnimeParam(ANM_SLIDE_BACKWARD_END, &daAlinkHIO_slide_c0::m.mBackwardLandAnm); - field_0x3478 = daAlinkHIO_slide_c0::m.mBackwardLandAnm.mCancelFrame; + setSingleAnimeParam(ANM_SLIDE_BACKWARD_END, &mpHIO->mSlide.m.mBackwardLandAnm); + field_0x3478 = mpHIO->mSlide.m.mBackwardLandAnm.mCancelFrame; field_0x3198 = 0; } @@ -15348,26 +15379,26 @@ int daAlink_c::procFrontRollInit() { BOOL is_dive_jump = mProcID == PROC_DIVE_JUMP; commonProcInit(PROC_FRONT_ROLL); - f32 roll_anm_speed = is_dive_jump ? 6.0f : daAlinkHIO_frontRoll_c0::m.mRollAnm.mStartFrame; + f32 roll_anm_speed = is_dive_jump ? 6.0f : mpHIO->mFrontRoll.m.mRollAnm.mStartFrame; - setSingleAnime(ANM_FRONT_ROLL, daAlinkHIO_frontRoll_c0::m.mRollAnm.mSpeed, roll_anm_speed, - daAlinkHIO_frontRoll_c0::m.mRollAnm.mEndFrame, - daAlinkHIO_frontRoll_c0::m.mRollAnm.mInterpolation); + setSingleAnime(ANM_FRONT_ROLL, mpHIO->mFrontRoll.m.mRollAnm.mSpeed, roll_anm_speed, + mpHIO->mFrontRoll.m.mRollAnm.mEndFrame, + mpHIO->mFrontRoll.m.mRollAnm.mInterpolation); mNormalSpeed = - speedF * daAlinkHIO_frontRoll_c0::m.mSpeedRate + daAlinkHIO_frontRoll_c0::m.mInitSpeed; + speedF * mpHIO->mFrontRoll.m.mSpeedRate + mpHIO->mFrontRoll.m.mInitSpeed; - f32 var_f30 = daAlinkHIO_frontRoll_c0::m.mInitSpeed + daAlinkHIO_move_c0::m.mMaxSpeed * daAlinkHIO_frontRoll_c0::m.mSpeedRate; + f32 var_f30 = mpHIO->mFrontRoll.m.mInitSpeed + mpHIO->mMove.m.mMaxSpeed * mpHIO->mFrontRoll.m.mSpeedRate; if (mNormalSpeed > var_f30) { mNormalSpeed = var_f30; } - if (mNormalSpeed < daAlinkHIO_frontRoll_c0::m.mMinSpeed) { - mNormalSpeed = daAlinkHIO_frontRoll_c0::m.mMinSpeed; + if (mNormalSpeed < mpHIO->mFrontRoll.m.mMinSpeed) { + mNormalSpeed = mpHIO->mFrontRoll.m.mMinSpeed; } if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; } else if (checkHeavyStateOn(1, 1)) { mNormalSpeed *= mHeavySpeedMultiplier; } @@ -15388,7 +15419,7 @@ int daAlink_c::procFrontRollInit() { field_0xFB8.SetAtAtp(2); field_0xFB8.SetAtMtrl(dCcD_MTRL_NONE); field_0xFB8.ResetAtHit(); - field_0xFB8.SetR(daAlinkHIO_frontRoll_c0::m.mBootsAttackRadius); + field_0xFB8.SetR(mpHIO->mFrontRoll.m.mBootsAttackRadius); field_0xFB8.OnAtSetBit(); } @@ -15405,9 +15436,9 @@ int daAlink_c::procFrontRoll() { } if (checkInputOnR()) { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_frontRoll_c0::m.mTurnRate, - daAlinkHIO_frontRoll_c0::m.mMaxTurnAngle, - daAlinkHIO_frontRoll_c0::m.mTurnMinAngle); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mFrontRoll.m.mTurnRate, + mpHIO->mFrontRoll.m.mMaxTurnAngle, + mpHIO->mFrontRoll.m.mTurnMinAngle); shape_angle.y = current.angle.y; } @@ -15420,7 +15451,7 @@ int daAlink_c::procFrontRoll() { dComIfGp_evmng_cutEnd(mAlinkStaffId); } else { if (!checkInputOnR()) { - mNormalSpeed -= daAlinkHIO_frontRoll_c0::m.mMinSpeed; + mNormalSpeed -= mpHIO->mFrontRoll.m.mMinSpeed; if (mNormalSpeed < 0.0f) { mNormalSpeed = 0.0f; } @@ -15428,7 +15459,7 @@ int daAlink_c::procFrontRoll() { checkNextAction(0); } - } else if (frameCtrl_p->getFrame() > daAlinkHIO_frontRoll_c0::m.mRollAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mFrontRoll.m.mRollAnm.mCancelFrame) { onModeFlg(4); cLib_chaseF(&mNormalSpeed, 0.0f, 2.5f); @@ -15442,16 +15473,16 @@ int daAlink_c::procFrontRoll() { cLib_chaseF(&mNormalSpeed, 0.0f, 2.5f); } } else if (mDemo.getDemoMode() != 0x28 && - speedF >= daAlinkHIO_frontRoll_c0::m.mCrashSpeedThreshold && + speedF >= mpHIO->mFrontRoll.m.mCrashSpeedThreshold && (checkNoResetFlg0(FLG0_UNK_18) || (mAcchCir[0].ChkWallHit() && !dComIfG_Bgsp().GetPolyAttackThrough(mAcchCir[0])) && dComIfG_Bgsp().GetWallCode(mAcchCir[0]) != 7 && cLib_distanceAngleS(current.angle.y + 0x8000, mAcchCir[0].GetWallAngleY()) <= - daAlinkHIO_frontRoll_c0::m.mCrashAngleThreshold && - frameCtrl_p->getFrame() >= daAlinkHIO_frontRoll_c0::m.mCrashInitF && - frameCtrl_p->getFrame() <= daAlinkHIO_frontRoll_c0::m.mCrashEndF)) + mpHIO->mFrontRoll.m.mCrashAngleThreshold && + frameCtrl_p->getFrame() >= mpHIO->mFrontRoll.m.mCrashInitF && + frameCtrl_p->getFrame() <= mpHIO->mFrontRoll.m.mCrashEndF)) { if (!checkNoResetFlg0(FLG0_UNK_18)) { mRollCrashFlg = dKy_pol_sound_get(&mAcchCir[0]); @@ -15493,16 +15524,16 @@ int daAlink_c::procFrontRoll() { int daAlink_c::procFrontRollCrashInit() { commonProcInit(PROC_FRONT_ROLL_CRASH); setSingleAnime(ANM_ROLL_CRASH, 0.0f, - daAlinkHIO_frontRoll_c0::m.mCrashAnm.mStartFrame, - daAlinkHIO_frontRoll_c0::m.mCrashAnm.mEndFrame, - daAlinkHIO_frontRoll_c0::m.mCrashAnm.mInterpolation); + mpHIO->mFrontRoll.m.mCrashAnm.mStartFrame, + mpHIO->mFrontRoll.m.mCrashAnm.mEndFrame, + mpHIO->mFrontRoll.m.mCrashAnm.mInterpolation); - mNormalSpeed = daAlinkHIO_frontRoll_c0::m.mCrashSpeedH; - speed.y = daAlinkHIO_frontRoll_c0::m.mCrashSpeedV; + mNormalSpeed = mpHIO->mFrontRoll.m.mCrashSpeedH; + speed.y = mpHIO->mFrontRoll.m.mCrashSpeedV; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; - speed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; + speed.y *= mpHIO->mItem.mIronBoots.m.mWaterVelocityY; } current.angle.y -= -0x8000; @@ -15519,7 +15550,7 @@ int daAlink_c::procFrontRollCrash() { if (!checkModeFlg(2)) { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mFrontRoll.m.mCrashAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (frameCtrl->getFrame() >= 18.0f) { @@ -15532,7 +15563,7 @@ int daAlink_c::procFrontRollCrash() { checkModeFlg(2)) { mNormalSpeed = 0.0f; - setWaterInAnmRate(frameCtrl, daAlinkHIO_frontRoll_c0::m.mCrashAnm.mSpeed); + setWaterInAnmRate(frameCtrl, mpHIO->mFrontRoll.m.mCrashAnm.mSpeed); frameCtrl->offEndFlg(); current.angle.y = shape_angle.y; voiceStart(Z2SE_AL_V_ZENTEN_FAIL_2); @@ -15547,7 +15578,7 @@ int daAlink_c::procFrontRollSuccessInit() { BOOL dk_caught = mProcID == PROC_DK_CAUGHT; commonProcInit(PROC_FRONT_ROLL_SUCCESS); - setSingleAnimeParam(ANM_BARRIER_RECOIL, &daAlinkHIO_frontRoll_c0::m.mCrashHitAnm); + setSingleAnimeParam(ANM_BARRIER_RECOIL, &mpHIO->mFrontRoll.m.mCrashHitAnm); mNormalSpeed = 0.0f; if (!dk_caught) { @@ -15576,7 +15607,7 @@ int daAlink_c::procFrontRollSuccess() { if (frameCtrl->checkAnmEnd()) { current.angle.y = shape_angle.y; checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashHitAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mFrontRoll.m.mCrashHitAnm.mCancelFrame) { onModeFlg(4); current.angle.y = shape_angle.y; checkNextAction(1); @@ -15608,14 +15639,14 @@ int daAlink_c::procSideRollInit(int param_0) { current.angle.y = shape_angle.y + -0x4000; } - setSingleAnime(anmID, daAlinkHIO_turnMove_c0::m.mSideRollAnmSpeed, - daAlinkHIO_turnMove_c0::m.mTurnAnm.mStartFrame, - daAlinkHIO_turnMove_c0::m.mTurnAnm.mEndFrame, - daAlinkHIO_turnMove_c0::m.mTurnAnm.mInterpolation); - mNormalSpeed = daAlinkHIO_turnMove_c0::m.mSideRollSpeed; + setSingleAnime(anmID, mpHIO->mGuard.mTurnMove.m.mSideRollAnmSpeed, + mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, + mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, + mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation); + mNormalSpeed = mpHIO->mGuard.mTurnMove.m.mSideRollSpeed; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; } else if (checkHeavyStateOn(1, 1)) { mNormalSpeed *= mHeavySpeedMultiplier; } @@ -15669,10 +15700,10 @@ int daAlink_c::procSideRoll() { checkNextAction(0); } } else if (mProcVar2.field_0x300c != 0 && !checkNotJumpSinkLimit() && - frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) + frameCtrl_p->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) { procCutFinishJumpUpInit(); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) { onModeFlg(4); if (!checkNextAction(1)) { cLib_chaseF(&mNormalSpeed, 0.0f, 7.5f); @@ -15720,14 +15751,14 @@ int daAlink_c::procBackJumpInit(int param_0) { commonProcInit(PROC_BACK_JUMP); if (param_0) { - setSingleAnimeParam(ANM_BACKFLIP, &daAlinkHIO_cutDown_c0::m.mRecoverAnm); - mNormalSpeed = daAlinkHIO_cutDown_c0::m.mRecoverSpeedV; - speed.y = daAlinkHIO_cutDown_c0::m.mSpeedV; + setSingleAnimeParam(ANM_BACKFLIP, &mpHIO->mCut.mCutDown.m.mRecoverAnm); + mNormalSpeed = mpHIO->mCut.mCutDown.m.mRecoverSpeedV; + speed.y = mpHIO->mCut.mCutDown.m.mSpeedV; voiceStart(Z2SE_AL_V_TODOME_RETURN); } else { - setSingleAnimeParam(ANM_BACKFLIP, &daAlinkHIO_backJump_c0::m.mBackflipAnm); - mNormalSpeed = daAlinkHIO_backJump_c0::m.mBackflipSpeedH; - speed.y = daAlinkHIO_backJump_c0::m.mBackflipSpeedV; + setSingleAnimeParam(ANM_BACKFLIP, &mpHIO->mBackJump.m.mBackflipAnm); + mNormalSpeed = mpHIO->mBackJump.m.mBackflipSpeedH; + speed.y = mpHIO->mBackJump.m.mBackflipSpeedV; voiceStart(Z2SE_AL_V_BACKTEN); } @@ -15773,9 +15804,9 @@ int daAlink_c::procBackJump() { if (mLinkAcch.ChkGroundHit() && mUnderFrameCtrl[0].checkAnmEnd()) { procBackJumpLandInit(field_0x3198); } else if (mDemo.getDemoMode() != 0x10 && - current.pos.y < mLastJumpPos.y - daAlinkHIO_backJump_c0::m.mFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mBackJump.m.mFallHeight) { - procFallInit(2, daAlinkHIO_backJump_c0::m.mFallInterpolation); + procFallInit(2, mpHIO->mBackJump.m.mFallInterpolation); } checkItemChangeFromButton(); @@ -15784,7 +15815,7 @@ int daAlink_c::procBackJump() { int daAlink_c::procBackJumpLandInit(int i_cutDirection) { commonProcInit(PROC_BACK_JUMP_LAND); - setSingleAnimeParam(ANM_BACKFLIP_LAND, &daAlinkHIO_backJump_c0::m.mLandAnm); + setSingleAnimeParam(ANM_BACKFLIP_LAND, &mpHIO->mBackJump.m.mLandAnm); mNormalSpeed = 0.0f; field_0x2f9d = 4; @@ -15817,7 +15848,7 @@ int daAlink_c::procBackJumpLand() { } checkNextAction(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_backJump_c0::m.mLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mBackJump.m.mLandAnm.mCancelFrame) { if (mEquipItem == 0x103 && (field_0x3198 != 2 || checkCutTurnInput())) { return procCutTurnInit(1, field_0x3198); } @@ -15830,8 +15861,8 @@ int daAlink_c::procBackJumpLand() { int daAlink_c::procSlipInit() { commonProcInit(PROC_SLIP); - setSingleAnimeParam(ANM_SLIP, &daAlinkHIO_move_c0::m.mSlideAnm); - mNormalSpeed = speedF * daAlinkHIO_move_c0::m.mSlideSpeed; + setSingleAnimeParam(ANM_SLIP, &mpHIO->mMove.m.mSlideAnm); + mNormalSpeed = speedF * mpHIO->mMove.m.mSlideSpeed; field_0x2f9d = 0x40; setFootEffectProcType(1); @@ -15841,7 +15872,7 @@ int daAlink_c::procSlipInit() { } int daAlink_c::procSlip() { - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mSlideDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mSlideDeceleration); if (checkZeroSpeedF()) { if (checkInputOnR()) { @@ -15918,11 +15949,11 @@ int daAlink_c::procAutoJumpInit(int param_0) { } setSingleAnimeBaseSpeed(ANM_JUMP_LAND, 0.0f, - daAlinkHIO_autoJump_c0::m.mJumpFallInterpolation); + mpHIO->mAutoJump.m.mJumpFallInterpolation); field_0x3198 = 0x33; current.angle.y = shape_angle.y + 0x8000; } else { - setSingleAnimeParam(ANM_JUMP_START, &daAlinkHIO_autoJump_c0::m.mJumpAnm); + setSingleAnimeParam(ANM_JUMP_START, &mpHIO->mAutoJump.m.mJumpAnm); if (!not_front_roll) { field_0x2060->initOldFrameMorf(0.0f, 0, 35); } @@ -15938,7 +15969,7 @@ int daAlink_c::procAutoJumpInit(int param_0) { grab_actor_name = PROC_ALINK; } - s16 angle = daAlinkHIO_autoJump_c0::m.mJumpAngle; + s16 angle = mpHIO->mAutoJump.m.mJumpAngle; BOOL cucco_jump = false; field_0x3478 = -10.0f; if (grab_actor_name == PROC_NI || grab_actor_name == PROC_NPC_TKJ2) { @@ -15951,15 +15982,15 @@ int daAlink_c::procAutoJumpInit(int param_0) { field_0x594 = 27.0f; field_0x3478 = -10.0f; } else { - field_0x594 = daAlinkHIO_autoJump_c0::m.mCuccoJumpMaxSpeed; - field_0x3478 = daAlinkHIO_autoJump_c0::m.mCuccoFallMaxSpeed; + field_0x594 = mpHIO->mAutoJump.m.mCuccoJumpMaxSpeed; + field_0x3478 = mpHIO->mAutoJump.m.mCuccoFallMaxSpeed; } - angle = daAlinkHIO_autoJump_c0::m.mCuccoJumpAngle; + angle = mpHIO->mAutoJump.m.mCuccoJumpAngle; cucco_jump = true; } } else { - field_0x594 = daAlinkHIO_autoJump_c0::m.mMaxJumpSpeed; + field_0x594 = mpHIO->mAutoJump.m.mMaxJumpSpeed; } if (checkGrabGlide()) { @@ -15970,20 +16001,20 @@ int daAlink_c::procAutoJumpInit(int param_0) { speedF = field_0x594 * 0.75f; } else { if (speedF > field_0x594 || param_0 || - daAlinkHIO_autoJump_c0::m.mAlwaysMaxSpeedJump == true) + mpHIO->mAutoJump.m.mAlwaysMaxSpeedJump == true) { speedF = field_0x594; - } else if (speedF < daAlinkHIO_autoJump_c0::m.mMinJumpSpeed) { - speedF = daAlinkHIO_autoJump_c0::m.mMinJumpSpeed; + } else if (speedF < mpHIO->mAutoJump.m.mMinJumpSpeed) { + speedF = mpHIO->mAutoJump.m.mMinJumpSpeed; } } - mNormalSpeed = speedF * daAlinkHIO_autoJump_c0::m.mJumpSpeedRate; + mNormalSpeed = speedF * mpHIO->mAutoJump.m.mJumpSpeedRate; speed.y = mNormalSpeed * cM_ssin(angle); mNormalSpeed *= cM_scos(angle); if (cucco_jump) { - mNormalSpeed = daAlinkHIO_autoJump_c0::m.mCuccoStartSpeed; + mNormalSpeed = mpHIO->mAutoJump.m.mCuccoStartSpeed; } field_0x3588 = l_waitBaseAnime; @@ -16058,8 +16089,8 @@ int daAlink_c::procAutoJump() { } if (!checkGrabGlide()) { - setSpecialGravity(daAlinkHIO_autoJump_c0::m.mGravity, - daAlinkHIO_autoJump_c0::m.mMaxFallSpeed, 1); + setSpecialGravity(mpHIO->mAutoJump.m.mGravity, + mpHIO->mAutoJump.m.mMaxFallSpeed, 1); mProcVar2.field_0x300c = 0; resetUpperAnime(UPPER_1, 3.0f); field_0x30a0 = 0; @@ -16071,8 +16102,8 @@ int daAlink_c::procAutoJump() { mFallHeight = current.pos.y; setSpecialGravity(-1.0f, field_0x3478, 0); } else { - setSpecialGravity(daAlinkHIO_autoJump_c0::m.mGravity, - daAlinkHIO_autoJump_c0::m.mMaxFallSpeed * 0.6666667f, 0); + setSpecialGravity(mpHIO->mAutoJump.m.mGravity, + mpHIO->mAutoJump.m.mMaxFallSpeed * 0.6666667f, 0); } s16 diff; @@ -16092,8 +16123,8 @@ int daAlink_c::procAutoJump() { setFallVoice(); f32 temp_f1 = (mFallHeight - current.pos.y) * 0.01f; - if (field_0x3198 != 0x8C && temp_f1 > daAlinkHIO_damFall_c0::m.mFallAnmTransitionHeight) { - setSingleAnimeBaseSpeed(ANM_DMG_FALL, 0.0f, daAlinkHIO_damFall_c0::m.mFallAnmMorf); + if (field_0x3198 != 0x8C && temp_f1 > mpHIO->mDamage.mDamFall.m.mFallAnmTransitionHeight) { + setSingleAnimeBaseSpeed(ANM_DMG_FALL, 0.0f, mpHIO->mDamage.mDamFall.m.mFallAnmMorf); field_0x3198 = 0x8C; } else if (speed.y < -gravity && field_0x2f99 == 4) { if (checkGrabGlide()) { @@ -16102,7 +16133,7 @@ int daAlink_c::procAutoJump() { } setSingleAnimeBaseSpeed(ANM_JUMP_LAND, 0.0f, - daAlinkHIO_autoJump_c0::m.mJumpFallInterpolation); + mpHIO->mAutoJump.m.mJumpFallInterpolation); if (mProcVar2.field_0x300c != 0) { setUpperAnime(0x276, UPPER_1, 1.0f, 0.0f, -1, 3.0f); @@ -16111,7 +16142,7 @@ int daAlink_c::procAutoJump() { field_0x2f99 = 0x20; field_0x3198 = 0x33; } else if (field_0x3198 == 0x31 && mUnderFrameCtrl[0].checkAnmEnd()) { - setSingleAnimeBaseSpeed(ANM_JUMP, 0.0f, daAlinkHIO_autoJump_c0::m.mAirborneInterpolation); + setSingleAnimeBaseSpeed(ANM_JUMP, 0.0f, mpHIO->mAutoJump.m.mAirborneInterpolation); field_0x3198 = 0x32; } @@ -16126,13 +16157,13 @@ int daAlink_c::procAutoJump() { int daAlink_c::procDiveJumpInit() { commonProcInit(PROC_DIVE_JUMP); - setSingleAnimeParam(ANM_DIVE_START, &daAlinkHIO_autoJump_c0::m.mDiveAnm); + setSingleAnimeParam(ANM_DIVE_START, &mpHIO->mAutoJump.m.mDiveAnm); deleteEquipItem(TRUE, TRUE); setHeavyBoots(0); - speed.y = daAlinkHIO_autoJump_c0::m.mDiveSpeedV; - mNormalSpeed = daAlinkHIO_autoJump_c0::m.mDiveSpeedH; - gravity = daAlinkHIO_autoJump_c0::m.mDiveGravity; + speed.y = mpHIO->mAutoJump.m.mDiveSpeedV; + mNormalSpeed = mpHIO->mAutoJump.m.mDiveSpeedH; + gravity = mpHIO->mAutoJump.m.mDiveGravity; mProcVar2.field_0x300c = 0; current.angle.y = shape_angle.y; @@ -16151,7 +16182,7 @@ int daAlink_c::procDiveJump() { if (mProcVar2.field_0x300c == 0) { if (frameCtrl->checkAnmEnd()) { - setSingleAnimeParam(ANM_DIVE, &daAlinkHIO_autoJump_c0::m.mDiveConnectAnm); + setSingleAnimeParam(ANM_DIVE, &mpHIO->mAutoJump.m.mDiveConnectAnm); mProcVar2.field_0x300c = 1; field_0x2f99 = 2; } @@ -16169,7 +16200,7 @@ int daAlink_c::procDiveJump() { int daAlink_c::procRollJumpInit() { commonProcInit(PROC_ROLL_JUMP); setSingleAnimeBaseSpeed(ANM_ROLL_JUMP, 0.0f, - daAlinkHIO_autoJump_c0::m.mSpinJumpInterpolation); + mpHIO->mAutoJump.m.mSpinJumpInterpolation); field_0x3478 = field_0x3410; mNormalSpeed = field_0x3410; @@ -16196,10 +16227,10 @@ int daAlink_c::procRollJump() { } if (speed.y < 0.0f) { - procFallInit(3, daAlinkHIO_autoJump_c0::m.mSpinJumpFallInterpolation); + procFallInit(3, mpHIO->mAutoJump.m.mSpinJumpFallInterpolation); } else { s16 old_angle = shape_angle.x; - shape_angle.x += daAlinkHIO_autoJump_c0::m.mSpinJumpRotateSpeed; + shape_angle.x += mpHIO->mAutoJump.m.mSpinJumpRotateSpeed; if (shape_angle.x * old_angle <= 0) { if (mProcVar2.field_0x300c != 0) { @@ -16212,8 +16243,8 @@ int daAlink_c::procRollJump() { cLib_chaseF(&field_0x347c, field_0x33a8 * cM_scos(field_0x2fe2 - shape_angle.y) * - daAlinkHIO_autoJump_c0::m.mSpinJumpAddSpeed, - daAlinkHIO_autoJump_c0::m.mSpinJumpAccel); + mpHIO->mAutoJump.m.mSpinJumpAddSpeed, + mpHIO->mAutoJump.m.mSpinJumpAccel); mNormalSpeed = field_0x3478 + field_0x347c; } @@ -16337,9 +16368,9 @@ int daAlink_c::procFall() { setFallVoice(); f32 tmp_f1 = (mFallHeight - current.pos.y) * 0.0099999998f; - if (mProcVar2.field_0x300c == 0 && tmp_f1 > daAlinkHIO_damFall_c0::m.mFallAnmTransitionHeight) { + if (mProcVar2.field_0x300c == 0 && tmp_f1 > mpHIO->mDamage.mDamFall.m.mFallAnmTransitionHeight) { setSingleAnimeBaseSpeed(ANM_DMG_FALL, 0.0f, - daAlinkHIO_damFall_c0::m.mFallAnmMorf); + mpHIO->mDamage.mDamFall.m.mFallAnmMorf); mProcVar2.field_0x300c = 1; } @@ -16359,7 +16390,7 @@ int daAlink_c::procLandInit(f32 param_0) { commonProcInit(PROC_LAND); mNormalSpeed = 0.0f; - setSingleAnimeParam(ANM_JUMP_LAND, &daAlinkHIO_autoJump_c0::m.mLandAnm); + setSingleAnimeParam(ANM_JUMP_LAND, &mpHIO->mAutoJump.m.mLandAnm); if (checkGrabGlide()) { mUnderFrameCtrl[0].setRate(0.5f); @@ -16383,14 +16414,14 @@ int daAlink_c::procLand() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mAutoJump.m.mLandAnm.mCancelFrame) { checkNextAction(1); } else if (frameCtrl->checkPass(4.0f)) { int var_r4; if (checkBootsOrArmorHeavy()) { var_r4 = 3; } else if (checkNoResetFlg0(FLG0_UNDERWATER) || - field_0x3478 < daAlinkHIO_damFall_c0::m.mMinRollHeight) + field_0x3478 < mpHIO->mDamage.mDamFall.m.mMinRollHeight) { var_r4 = 1; } else { @@ -16408,9 +16439,9 @@ int daAlink_c::procSmallJumpInit(int param_0) { commonProcInit(PROC_SMALL_JUMP); if (param_0 == 2) { - setSingleAnime(ANM_VJUMP_START, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mSpeed, 6.0f, - daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mEndFrame, - daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mInterpolation); + setSingleAnime(ANM_VJUMP_START, mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mSpeed, 6.0f, + mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mEndFrame, + mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mInterpolation); setJumpMode(); speed.y = 24.0f; voiceStart(Z2SE_AL_V_JUMP_S); @@ -16418,7 +16449,7 @@ int daAlink_c::procSmallJumpInit(int param_0) { field_0x33b0 = field_0x3588.y; field_0x34d4 = l_waitBaseAnime; } else { - setSingleAnimeParam(ANM_VJUMP_START, &daAlinkHIO_smallJump_c0::m.mSmallJumpAnm); + setSingleAnimeParam(ANM_VJUMP_START, &mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm); if (param_0 == 1) { field_0x3478 = field_0x27f4->current.pos.y + 20.0f; @@ -16457,21 +16488,21 @@ int daAlink_c::procSmallJump() { if (mLinkAcch.ChkGroundHit()) { checkLandAction(0); } else if (speed.y < -gravity) { - procFallInit(2, daAlinkHIO_smallJump_c0::m.mFallInterpolation); + procFallInit(2, mpHIO->mWallHang.mSmallJump.m.mFallInterpolation); } else { field_0x2f99 = 7; } } else if (mUnderFrameCtrl[0].checkPass(6.0f)) { setJumpMode(); - mNormalSpeed = daAlinkHIO_smallJump_c0::m.mSpeedH; + mNormalSpeed = mpHIO->mWallHang.mSmallJump.m.mSpeedH; if (checkHeavyStateOn(1, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) { - f32 temp = daAlinkHIO_smallJump_c0::m.mTargetHeightOffset + + f32 temp = mpHIO->mWallHang.mSmallJump.m.mTargetHeightOffset + (field_0x3478 - current.pos.y); speed.y = JMAFastSqrt(2.0f * (temp * -(gravity * 2.25f))); } else { speed.y = - JMAFastSqrt(2.0f * (-gravity * (daAlinkHIO_smallJump_c0::m.mTargetHeightOffset + + JMAFastSqrt(2.0f * (-gravity * (mpHIO->mWallHang.mSmallJump.m.mTargetHeightOffset + (field_0x3478 - current.pos.y)))); } @@ -16492,7 +16523,7 @@ int daAlink_c::procSmallJump() { int daAlink_c::procStepMoveInit() { commonProcInit(PROC_STEP_MOVE); - setSingleAnimeParam(ANM_S_JUMP_START, &daAlinkHIO_smallJump_c0::m.mStepClimbAnm); + setSingleAnimeParam(ANM_S_JUMP_START, &mpHIO->mWallHang.mSmallJump.m.mStepClimbAnm); field_0x3478 = 0.5f * mNormalSpeed; mNormalSpeed = 0.0f; @@ -16512,7 +16543,7 @@ int daAlink_c::procStepMove() { return checkNextAction(0); } - if (frameCtrl->getFrame() > daAlinkHIO_smallJump_c0::m.mStepLandAnm.mCancelFrame) { + if (frameCtrl->getFrame() > mpHIO->mWallHang.mSmallJump.m.mStepLandAnm.mCancelFrame) { mNormalSpeed = field_0x3478; if (checkNextAction(1)) { @@ -16522,7 +16553,7 @@ int daAlink_c::procStepMove() { mNormalSpeed = 0.0f; } } else if (frameCtrl->checkAnmEnd()) { - setSingleAnimeParam(ANM_S_JUMP_END, &daAlinkHIO_smallJump_c0::m.mStepLandAnm); + setSingleAnimeParam(ANM_S_JUMP_END, &mpHIO->mWallHang.mSmallJump.m.mStepLandAnm); current.pos.set(field_0x34ec.x + cM_ssin(shape_angle.y) * 2.0f, field_0x34ec.y, field_0x34ec.z + cM_scos(shape_angle.y) * 2.0f); field_0x2f99 = 80; @@ -16537,14 +16568,14 @@ int daAlink_c::procCrouchInit() { return 0; } - setSingleAnimeBaseSpeed(ANM_CROUCH, daAlinkHIO_crouch_c0::m.mCrouchAnmSpeed, - daAlinkHIO_crouch_c0::m.mCrouchInterpolation); + setSingleAnimeBaseSpeed(ANM_CROUCH, mpHIO->mCrouch.m.mCrouchAnmSpeed, + mpHIO->mCrouch.m.mCrouchInterpolation); current.angle.y = shape_angle.y; return 1; } int daAlink_c::procCrouch() { - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); if (checkAttentionState()) { setFaceBasicBck(0xE8); @@ -16607,7 +16638,7 @@ int daAlink_c::procCoMetamorphoseInit() { setSingleAnimeWolfBase(WANM_TRANSFORM_TO_HUMAN); field_0x3588 = l_wolfBaseAnime; field_0x347c = 0.5f; - field_0x3480 = daAlinkHIO_basic_c0::m.mWolfToLinkCancelFrame; + field_0x3480 = mpHIO->mBasic.m.mWolfToLinkCancelFrame; mProcVar2.field_0x300c = shape_angle.x; daMidna_c* midna = (daMidna_c*)getMidnaActor(); @@ -16625,7 +16656,7 @@ int daAlink_c::procCoMetamorphoseInit() { setSingleAnimeBase(ANM_TRANSFORM_TO_WOLF); setMetamorphoseModel(1); field_0x3588 = l_waitBaseAnime; - field_0x3480 = daAlinkHIO_basic_c0::m.mLinkToWolfCancelFrame; + field_0x3480 = mpHIO->mBasic.m.mLinkToWolfCancelFrame; cXyz pos(current.pos.x + (cM_ssin(shape_angle.y) * 100.0f), current.pos.y + 300.0f, current.pos.z + (cM_scos(shape_angle.y) * 100.0f)); @@ -16706,9 +16737,9 @@ int daAlink_c::procCoMetamorphose() { dComIfGp_evmng_cutEnd(mAlinkStaffId); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed, -1.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed, -1.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, -1.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, -1.0f); } field_0x2f99 = 0xC; @@ -16752,9 +16783,9 @@ int daAlink_c::procCoMetamorphose() { dComIfGp_evmng_cutEnd(mAlinkStaffId); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed, -1.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed, -1.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, -1.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, -1.0f); } field_0x2f99 = 0xC; @@ -16867,10 +16898,10 @@ int daAlink_c::procCoMetamorphoseOnly() { mProcVar3.field_0x300e = 1; if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed, + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed, -1.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, -1.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, -1.0f); } } @@ -16882,8 +16913,8 @@ int daAlink_c::procCoMetamorphoseOnly() { int daAlink_c::procFloorDownReboundInit() { commonProcInit(PROC_FLOOR_DOWN_REBOUND); - setSingleAnime(ANM_JUMP_LAND, 0.69999999f, daAlinkHIO_autoJump_c0::m.mLandAnm.mStartFrame, - daAlinkHIO_autoJump_c0::m.mLandAnm.mEndFrame, 10.0f); + setSingleAnime(ANM_JUMP_LAND, 0.69999999f, mpHIO->mAutoJump.m.mLandAnm.mStartFrame, + mpHIO->mAutoJump.m.mLandAnm.mEndFrame, 10.0f); mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; field_0x2f98 = 4; @@ -16896,7 +16927,7 @@ int daAlink_c::procFloorDownRebound() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mAutoJump.m.mLandAnm.mCancelFrame) { checkNextAction(1); } @@ -16913,7 +16944,7 @@ int daAlink_c::procGoronRideWaitInit(fopAc_ac_c* param_0) { current.pos.z = param_0->current.pos.z; field_0x2f99 = 0x50; current.angle.y = shape_angle.y; - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); return 1; } @@ -16943,7 +16974,7 @@ int daAlink_c::procGoronRideWait() { var_f31 = 1.0f - var_f31; - setDoubleAnime(var_f31, daAlinkHIO_basic_c0::m.mRotationASpeed, daAlinkHIO_move_c0::m.mWaitAnmSpeed, var_r28, ANM_WAIT, 2, -1.0f); + setDoubleAnime(var_f31, mpHIO->mBasic.m.mRotationASpeed, mpHIO->mMove.m.mWaitAnmSpeed, var_r28, ANM_WAIT, 2, -1.0f); current.angle.y = shape_angle.y; } @@ -17231,7 +17262,7 @@ int daAlink_c::execute() { !strcmp(event_name, "MapToolCamera19") || !strcmp(event_name, "fire_insect"))) || (checkStageName("F_SP115") && !strcmp(event_name, "MapToolCamera23")))) { - mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime + 1; + mWolfEyeUp = mpHIO->mWolf.m.mSensesLingerTime + 1; } else if (checkEndResetFlg1(ERFLG1_WOLF_EYE_KEEP) || (checkDungeon() && eventInfo.checkCommandDoor()) || mProcID == PROC_WOLF_GET_SMELL || mProcID == PROC_WOLF_DIG || mProcID == PROC_WOLF_DIG_THROUGH || checkNoResetFlg0(FLG0_UNK_4000) || @@ -17239,11 +17270,11 @@ int daAlink_c::execute() { (checkEventRun() && partner != NULL && (partner->attention_info.flags & fopAc_AttnFlag_UNK_0x400000)) || !strcmp(dComIfGp_getEventManager().getRunEventName(), l_defaultGetEventName)) { - mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime; + mWolfEyeUp = mpHIO->mWolf.m.mSensesLingerTime; } else if (mTargetedActor != NULL || dComIfGp_checkPlayerStatus0(0, 0x2000)) { - mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime - 1; + mWolfEyeUp = mpHIO->mWolf.m.mSensesLingerTime - 1; } else if (!dComIfGp_getEvent().isOrderOK() && mProcID != PROC_GET_ITEM && - mWolfEyeUp <= daAlinkHIO_wolf_c0::m.mSensesLingerTime) + mWolfEyeUp <= mpHIO->mWolf.m.mSensesLingerTime) { offWolfEyeUp(); } else { @@ -17252,7 +17283,7 @@ int daAlink_c::execute() { } if (checkEndResetFlg0(ERFLG0_ENEMY_DEAD) && mEquipItem == 0x103) { - mSwordFlourishTimer = daAlinkHIO_cut_c0::m.mFlourishTime; + mSwordFlourishTimer = mpHIO->mCut.m.mFlourishTime; } if ((checkWolf() && field_0x2fbc == 11 && checkWaterPolygonUnder()) || field_0x2fbb == 11) { @@ -17317,9 +17348,9 @@ int daAlink_c::execute() { if (checkCutFastReady()) { if (checkNoUpperAnime()) { - setUpperAnime(0x255, UPPER_2, daAlinkHIO_cut_c0::m.mEquipAnm.mSpeed, 12.0f, - daAlinkHIO_cut_c0::m.mEquipAnm.mEndFrame, - daAlinkHIO_cut_c0::m.mEquipAnm.mInterpolation); + setUpperAnime(0x255, UPPER_2, mpHIO->mCut.m.mEquipAnm.mSpeed, 12.0f, + mpHIO->mCut.m.mEquipAnm.mEndFrame, + mpHIO->mCut.m.mEquipAnm.mInterpolation); onNoResetFlg0(FLG0_UNK_1000000); } } else if (checkNoResetFlg0(FLG0_UNK_1000000)) { @@ -17383,13 +17414,13 @@ int daAlink_c::execute() { if (mProcID == PROC_HOOKSHOT_FLY) { var_f31 = current.pos.y - (field_0x598 * 0.5f); } else if (dComIfGp_checkPlayerStatus1(0, 0x2000000)) { - var_f31 = (current.pos.y + -65.0f) - (daAlinkHIO_swim_c0::m.mStartHeight - 5.0f); + var_f31 = (current.pos.y + -65.0f) - (mpHIO->mSwim.m.mStartHeight - 5.0f); } else { var_f31 = current.pos.y; } if (!checkNoResetFlg0(FLG0_UNK_80) || - mWaterY - var_f31 <= daAlinkHIO_swim_c0::m.mStartHeight - 5.0f) + mWaterY - var_f31 <= mpHIO->mSwim.m.mStartHeight - 5.0f) { swimOutAfter(0); } @@ -17709,11 +17740,11 @@ int daAlink_c::execute() { if (mHotspringRecoverTimer != 0) { mHotspringRecoverTimer--; } else { - mHotspringRecoverTimer = daAlinkHIO_basic_c0::m.mHotspringRecoverTime; + mHotspringRecoverTimer = mpHIO->mBasic.m.mHotspringRecoverTime; dComIfGp_setItemLifeCount(1.0f, 1); } } else { - mHotspringRecoverTimer = daAlinkHIO_basic_c0::m.mHotspringRecoverTime; + mHotspringRecoverTimer = mpHIO->mBasic.m.mHotspringRecoverTime; } if (checkAttentionLock() || (!checkUpperReadyThrowAnime() && @@ -18503,30 +18534,30 @@ int daAlink_c::draw() { tevStr.TevColor.b = mProcVar3.field_0x300e; } else if (field_0x346c != 0.0f) { f32 var_f2 = fabsf(field_0x346c); - tevStr.TevColor.r = var_f2 * daAlinkHIO_wolf_c0::m.mLightDropR; - tevStr.TevColor.g = var_f2 * daAlinkHIO_wolf_c0::m.mLightDropG; - tevStr.TevColor.b = var_f2 * daAlinkHIO_wolf_c0::m.mLightDropB; + tevStr.TevColor.r = var_f2 * mpHIO->mWolf.m.mLightDropR; + tevStr.TevColor.g = var_f2 * mpHIO->mWolf.m.mLightDropG; + tevStr.TevColor.b = var_f2 * mpHIO->mWolf.m.mLightDropB; } else if (checkFreezeDamage()) { - tevStr.TevColor.r = daAlinkHIO_damage_c0::m.mFreezeR; - tevStr.TevColor.g = daAlinkHIO_damage_c0::m.mFreezeG; - tevStr.TevColor.b = daAlinkHIO_damage_c0::m.mFreezeB; + tevStr.TevColor.r = mpHIO->mDamage.m.mFreezeR; + tevStr.TevColor.g = mpHIO->mDamage.m.mFreezeG; + tevStr.TevColor.b = mpHIO->mDamage.m.mFreezeB; } else if (mDamageTimer != 0) { if (!checkMagicArmorNoDamage()) { int color_timer = mDamageTimer + mDamageColorTime; int r, g, b; if (color_timer > 32) { - r = daAlinkHIO_damage_c0::m.mDamageR0; - g = daAlinkHIO_damage_c0::m.mDamageG0; - b = daAlinkHIO_damage_c0::m.mDamageB0; + r = mpHIO->mDamage.m.mDamageR0; + g = mpHIO->mDamage.m.mDamageG0; + b = mpHIO->mDamage.m.mDamageB0; } else if (color_timer > 16) { - r = daAlinkHIO_damage_c0::m.mDamageR1; - g = daAlinkHIO_damage_c0::m.mDamageG1; - b = daAlinkHIO_damage_c0::m.mDamageB1; + r = mpHIO->mDamage.m.mDamageR1; + g = mpHIO->mDamage.m.mDamageG1; + b = mpHIO->mDamage.m.mDamageB1; } else { - r = daAlinkHIO_damage_c0::m.mDamageR2; - g = daAlinkHIO_damage_c0::m.mDamageG2; - b = daAlinkHIO_damage_c0::m.mDamageB2; + r = mpHIO->mDamage.m.mDamageR2; + g = mpHIO->mDamage.m.mDamageG2; + b = mpHIO->mDamage.m.mDamageB2; } f32 var_f2 = fabsf(cM_ssin(color_timer * 0x800)); @@ -18536,15 +18567,15 @@ int daAlink_c::draw() { var_r31 = 0; } } else if (mIceDamageWaitTimer != 0) { - f32 temp_f4 = 1.0f - (mIceDamageWaitTimer * (1.0f / daAlinkHIO_damage_c0::m.mFreezeTime)); + f32 temp_f4 = 1.0f - (mIceDamageWaitTimer * (1.0f / mpHIO->mDamage.m.mFreezeTime)); f32 temp_f3 = 1.0f - temp_f4; - tevStr.TevColor.r = (temp_f4 * daAlinkHIO_damage_c0::m.mFreezeInitR) + - (temp_f3 * daAlinkHIO_damage_c0::m.mFreezeR); - tevStr.TevColor.g = (temp_f4 * daAlinkHIO_damage_c0::m.mFreezeInitG) + - (temp_f3 * daAlinkHIO_damage_c0::m.mFreezeG); - tevStr.TevColor.b = (temp_f4 * daAlinkHIO_damage_c0::m.mFreezeInitB) + - (temp_f3 * daAlinkHIO_damage_c0::m.mFreezeB); + tevStr.TevColor.r = (temp_f4 * mpHIO->mDamage.m.mFreezeInitR) + + (temp_f3 * mpHIO->mDamage.m.mFreezeR); + tevStr.TevColor.g = (temp_f4 * mpHIO->mDamage.m.mFreezeInitG) + + (temp_f3 * mpHIO->mDamage.m.mFreezeG); + tevStr.TevColor.b = (temp_f4 * mpHIO->mDamage.m.mFreezeInitB) + + (temp_f3 * mpHIO->mDamage.m.mFreezeB); } else if (field_0x32b0[0].r != 0) { tevStr.TevColor.r = field_0x32b0[0].r; tevStr.TevColor.g = field_0x32b0[0].g; diff --git a/src/d/actor/d_a_alink_HIO.inc b/src/d/actor/d_a_alink_HIO.inc index ab34289138..45a476364e 100644 --- a/src/d/actor/d_a_alink_HIO.inc +++ b/src/d/actor/d_a_alink_HIO.inc @@ -1601,7 +1601,7 @@ void daAlinkHIO_guard_c::genMessage(JORMContext* ctx) { // Reset ctx->genButton("リセット", 0x4000003, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); // Shield - ctx->genNode("盾", &mGuardAttack1, 0, 0); + ctx->genNode("盾", &mAtPush, 0, 0); // Sidestep ctx->genNode("回り込み", &mTurnMove, 0, 0); // Crouch guard anm speed @@ -1657,7 +1657,7 @@ void daAlinkHIO_guard_c::genMessage(JORMContext* ctx) { } daAlinkHIO_guard_c::daAlinkHIO_guard_c() - : mGuardAttack1(0, 17.0f), mGuardAttack2(1, 21.0f), mTurnMove() { + : mAtPush(0, 17.0f), mAtKick(1, 21.0f), mTurnMove() { static const char plabel[] = "const daAlinkHIO_guard_c1 daAlinkHIO_guard_c0::m = {\n"; m_len = 128; mp_src_data = (void*)&daAlinkHIO_guard_c0::m; @@ -2388,9 +2388,9 @@ void daAlinkHIO_damage_c::genMessage(JORMContext* ctx) { // Normal ctx->genNode("通常", &mDamNormal, 0, 0); // Large - ctx->genNode("大", &mDamLaHu0, 0, 0); + ctx->genNode("大", &mDamLarge, 0, 0); // Heavy large - ctx->genNode("強大", &mDamLaHu1, 0, 0); + ctx->genNode("強大", &mDamHuge, 0, 0); // On horse ctx->genNode("馬上", &mDamHorse, 0, 0); // Fall @@ -2454,7 +2454,7 @@ void daAlinkHIO_damage_c::genMessage(JORMContext* ctx) { } daAlinkHIO_damage_c::daAlinkHIO_damage_c() - : mDamNormal(), mDamLaHu0(0), mDamLaHu1(1), mDamHorse(), mDamFall(), mDamCaught(), mDamSwim() { + : mDamNormal(), mDamLarge(0), mDamHuge(1), mDamHorse(), mDamFall(), mDamCaught(), mDamSwim() { static const char plabel[] = "const daAlinkHIO_damage_c1 daAlinkHIO_damage_c0::m = {\n"; m_len = 88; mp_src_data = (void*)&daAlinkHIO_damage_c0::m; @@ -4740,8 +4740,8 @@ void daAlinkHIO_wlDamage_c::genMessage(JORMContext* ctx) { ctx->genNode("通常", &mNormal, 0, 0); // Large ctx->genNode("大", &mLarge, 0, 0); - // Strong large - ctx->genNode("強大", &mStrongLarge, 0, 0); + // Huge + ctx->genNode("強大", &mHuge, 0, 0); // Fall ctx->genNode("落下", &mFall, 0, 0); // Capture @@ -4756,7 +4756,7 @@ void daAlinkHIO_wlDamage_c::genMessage(JORMContext* ctx) { } daAlinkHIO_wlDamage_c::daAlinkHIO_wlDamage_c() - : mNormal(), mLarge(0), mStrongLarge(1), mFall(), mCapture() { + : mNormal(), mLarge(0), mHuge(1), mFall(), mCapture() { static const char plabel[] = "const daAlinkHIO_wlDamage_c1 daAlinkHIO_wlDamage_c0::m = {\n"; m_len = 44; mp_src_data = (void*)&daAlinkHIO_wlDamage_c0::m; diff --git a/src/d/actor/d_a_alink_bomb.inc b/src/d/actor/d_a_alink_bomb.inc index b0d1a9a3ba..e80219b16d 100644 --- a/src/d/actor/d_a_alink_bomb.inc +++ b/src/d/actor/d_a_alink_bomb.inc @@ -6,53 +6,53 @@ #include "d/actor/d_a_alink.h" s16 daAlink_c::getBombExplodeTime() const { - return daAlinkHIO_bomb_c0::m.mExplodeTime; + return mpHIO->mItem.mBomb.m.mExplodeTime; } f32 daAlink_c::getBombGravity() const { - return daAlinkHIO_bomb_c0::m.mGravity; + return mpHIO->mItem.mBomb.m.mGravity; } f32 daAlink_c::getBombMaxFallSpeed() const { - return daAlinkHIO_bomb_c0::m.mMaxFallSpeed; + return mpHIO->mItem.mBomb.m.mMaxFallSpeed; } f32 daAlink_c::getBombBoundRate() const { - return daAlinkHIO_bomb_c0::m.mBoundRate; + return mpHIO->mItem.mBomb.m.mBoundRate; } f32 daAlink_c::getBombStopSpeedY() const { - return daAlinkHIO_bomb_c0::m.mStopSpeedY; + return mpHIO->mItem.mBomb.m.mStopSpeedY; } f32 daAlink_c::getBombMaxSpeedY() const { - return daAlinkHIO_bomb_c0::m.mMaxSpeedY; + return mpHIO->mItem.mBomb.m.mMaxSpeedY; } f32 daAlink_c::getBombEffScale() const { - return daAlinkHIO_bomb_c0::m.mEffScale; + return mpHIO->mItem.mBomb.m.mEffScale; } f32 daAlink_c::getBombAtR() const { - return daAlinkHIO_bomb_c0::m.mAttackRadius; + return mpHIO->mItem.mBomb.m.mAttackRadius; } s16 daAlink_c::getEnemyBombColorR() const { - return daAlinkHIO_bomb_c0::m.mEnemyBombColorR; + return mpHIO->mItem.mBomb.m.mEnemyBombColorR; } f32 daAlink_c::getBombWaterGravity() const { - return daAlinkHIO_bomb_c0::m.mWaterGravity; + return mpHIO->mItem.mBomb.m.mWaterGravity; } f32 daAlink_c::getBombWaterMaxFallSpeed() const { - return daAlinkHIO_bomb_c0::m.mWaterMaxFallSpeed; + return mpHIO->mItem.mBomb.m.mWaterMaxFallSpeed; } f32 daAlink_c::getBombExplodeWaterEffectLimit() const { - return daAlinkHIO_bomb_c0::m.mExplodeWaterEffectLimit; + return mpHIO->mItem.mBomb.m.mExplodeWaterEffectLimit; } s16 daAlink_c::getBombInsectLimitAngle() const { - return daAlinkHIO_bomb_c0::m.mBombInsectLimitAngle; + return mpHIO->mItem.mBomb.m.mBombInsectLimitAngle; } diff --git a/src/d/actor/d_a_alink_boom.inc b/src/d/actor/d_a_alink_boom.inc index ec1409db3e..47b92eac7e 100644 --- a/src/d/actor/d_a_alink_boom.inc +++ b/src/d/actor/d_a_alink_boom.inc @@ -13,9 +13,9 @@ BOOL daAlink_c::checkBoomerangLockAccept() { f32 daAlink_c::getBoomSpeed() { f32 speed; if (checkBoomerangChargeEndWait()) { - speed = daAlinkHIO_boom_c0::m.mChargeFlySpeed; + speed = mpHIO->mItem.mBoomerang.m.mChargeFlySpeed; } else { - speed = daAlinkHIO_boom_c0::m.mFlySpeed; + speed = mpHIO->mItem.mBoomerang.m.mFlySpeed; } if (checkModeFlg(0x400)) { @@ -29,14 +29,14 @@ f32 daAlink_c::getBoomSpeed() { } f32 daAlink_c::getBoomCatchSpeed() const { - return daAlinkHIO_boom_c0::m.mCatchSpeed; + return mpHIO->mItem.mBoomerang.m.mCatchSpeed; } f32 daAlink_c::getBoomFlyMax() const { if (checkModeFlg(0x400) && !checkCanoeRide()) { - return daAlinkHIO_boom_c0::m.mHorsebackFlyDistMax; + return mpHIO->mItem.mBoomerang.m.mHorsebackFlyDistMax; } else { - return daAlinkHIO_boom_c0::m.mFlyDistMax; + return mpHIO->mItem.mBoomerang.m.mFlyDistMax; } } @@ -45,15 +45,15 @@ f32 daAlink_c::getBoomLockMax() { if (checkBossBabaRoom()) { return 2600.0f; - } else if (daAlinkHIO_boom_c0::m.mLockDistMax > fly_max) { - return daAlinkHIO_boom_c0::m.mLockDistMax; + } else if (mpHIO->mItem.mBoomerang.m.mLockDistMax > fly_max) { + return mpHIO->mItem.mBoomerang.m.mLockDistMax; } else { return fly_max; } } s16 daAlink_c::getBoomBgThroughTime() const { - return daAlinkHIO_boom_c0::m.mBgThroughTime; + return mpHIO->mItem.mBoomerang.m.mBgThroughTime; } bool daAlink_c::checkBossBabaRoom() { @@ -103,7 +103,7 @@ BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) { setGrabItemActor(i_grabActor); field_0x33e4 = 38.0f; - setGrabUpperAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setGrabUpperAnime(mpHIO->mBasic.m.mBasicInterpolation); return 1; } @@ -118,7 +118,7 @@ void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) { mUpperFrameCtrl[2].setFrame(tmp); getNowAnmPackUpper(UPPER_2)->setFrame(tmp); } else { - mUpperFrameCtrl[2].setRate(daAlinkHIO_boom_c0::m.mIdleAnmSpeed); + mUpperFrameCtrl[2].setRate(mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed); } } } @@ -137,13 +137,13 @@ void daAlink_c::setBoomerangReadyQuake() { dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, 1.0f, tmp_0)); onNoResetFlg3(FLG3_UNK_4); - mItemVar0.field_0x3018 = daAlinkHIO_boom_c0::m.mChargeTime; + mItemVar0.field_0x3018 = mpHIO->mItem.mBoomerang.m.mChargeTime; } void daAlink_c::setBoomerangReadyAnime() { f32 var_f31; if (checkAttentionLock()) { - var_f31 = daAlinkHIO_boom_c0::m.mIdleAnmSpeed; + var_f31 = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed; } else { var_f31 = 0.0f; } @@ -153,12 +153,12 @@ void daAlink_c::setBoomerangReadyAnime() { } void daAlink_c::setThrowBoomerangAnime() { - setUpperAnimeParam(0x53, UPPER_2, &daAlinkHIO_boom_c0::m.mThrowAnm); + setUpperAnimeParam(0x53, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm); cancelItemUseQuake(0); } void daAlink_c::setBoomerangCatchAnime() { - setUpperAnimeParam(0x52, UPPER_2, &daAlinkHIO_boom_c0::m.mCatchAnm); + setUpperAnimeParam(0x52, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm); setFacePriBck(0xE8); field_0x2f97 = 254; @@ -190,8 +190,8 @@ void daAlink_c::throwBoomerang() { mFastShotTime = -1; daPy_boomerangMove_c::offEventKeepFlg(); } else { - item->speedF = daAlinkHIO_pickUp_c0::m.field_0x28; - item->speed.y = daAlinkHIO_pickUp_c0::m.field_0x2C; + item->speedF = mpHIO->mItem.mPickUp.m.field_0x28; + item->speed.y = mpHIO->mItem.mPickUp.m.field_0x2C; item->current.angle.y = shape_angle.y; fopAcM_cancelCarryNow(item); @@ -283,7 +283,7 @@ void daAlink_c::checkUpperItemActionBoomerangFly() { int daAlink_c::checkNextActionBoomerang() { if ((checkBoomerangCatchAnime() && - mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) || + mUpperFrameCtrl[2].getFrame() <= mpHIO->mItem.mBoomerang.m.mCatchAnm.mCancelFrame) || checkNoResetFlg1(FLG1_UNK_2)) { return 0; } @@ -363,7 +363,7 @@ int daAlink_c::procBoomerangSubjectInit() { mNormalSpeed = 0.0f; initBoomerangUpperAnimeSpeed(1); setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, 0.0f, - daAlinkHIO_boom_c0::m.mStartInterpolation); + mpHIO->mItem.mBoomerang.m.mStartInterpolation); dComIfGp_setPlayerStatus0(0, 0x80000); current.angle.y = shape_angle.y; @@ -402,7 +402,7 @@ int daAlink_c::procBoomerangMoveInit() { } initBoomerangUpperAnimeSpeed(0); - setBlendAtnMoveAnime(daAlinkHIO_boom_c0::m.mStartInterpolation); + setBlendAtnMoveAnime(mpHIO->mItem.mBoomerang.m.mStartInterpolation); dComIfGp_setPlayerStatus0(0, 0x80000); return 1; @@ -421,7 +421,7 @@ int daAlink_c::procBoomerangMove() { if (field_0x2f98 != 3) { field_0x2f98 = 3; - var_f31 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + var_f31 = mpHIO->mBasic.m.mBasicInterpolation; } } else { offModeFlg(1); @@ -444,7 +444,7 @@ int daAlink_c::procBoomerangCatchInit() { return 0; } - setSingleAnimeParam(ANM_BOOMERANG_CATCH, &daAlinkHIO_boom_c0::m.mCatchAnm); + setSingleAnimeParam(ANM_BOOMERANG_CATCH, &mpHIO->mItem.mBoomerang.m.mCatchAnm); setBoomerangCatchAnime(); offNoResetFlg0(FLG0_UNK_20); @@ -455,7 +455,7 @@ int daAlink_c::procBoomerangCatch() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; onEndResetFlg0(ERFLG0_UNK_8000000); - if (frameCtrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) { + if (frameCtrl->getFrame() > mpHIO->mItem.mBoomerang.m.mCatchAnm.mCancelFrame) { onModeFlg(4); } diff --git a/src/d/actor/d_a_alink_bottle.inc b/src/d/actor/d_a_alink_bottle.inc index 6e3de0e917..c120591690 100644 --- a/src/d/actor/d_a_alink_bottle.inc +++ b/src/d/actor/d_a_alink_bottle.inc @@ -203,11 +203,11 @@ int daAlink_c::commonBottleDrink(int param_0) { if (mEquipItem == fpcNm_ITEM_MILK_BOTTLE) { if (param_0) { setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_END)->m_upperID, UPPER_2, - &daAlinkHIO_bottle_c0::m.mEndDrinkAnm); + &mpHIO->mItem.mBottle.m.mEndDrinkAnm); setFacePriAnime(ANM_BOTTLE_DRINK_END); } else { setSingleAnimeParam(ANM_BOTTLE_DRINK_END, - &daAlinkHIO_bottle_c0::m.mEndDrinkAnm); + &mpHIO->mItem.mBottle.m.mEndDrinkAnm); } field_0x072c->setFrame(1.0f); @@ -253,19 +253,19 @@ int daAlink_c::commonBottleDrink(int param_0) { if (mItemVar0.mBottleItemHealAmount < 0 || mEquipItem == fpcNm_ITEM_BEE_CHILD) { if (param_0) { setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_NASTY)->m_upperID, - UPPER_2, &daAlinkHIO_bottle_c0::m.mDrinkNastyAnm); + UPPER_2, &mpHIO->mItem.mBottle.m.mDrinkNastyAnm); setFacePriAnime(ANM_BOTTLE_DRINK_NASTY); } else { setSingleAnimeParam(ANM_BOTTLE_DRINK_NASTY, - &daAlinkHIO_bottle_c0::m.mDrinkNastyAnm); + &mpHIO->mItem.mBottle.m.mDrinkNastyAnm); } } else if (param_0) { setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_END)->m_upperID, UPPER_2, - &daAlinkHIO_bottle_c0::m.mEndDrinkAnm); + &mpHIO->mItem.mBottle.m.mEndDrinkAnm); setFacePriAnime(ANM_BOTTLE_DRINK_END); } else { setSingleAnimeParam(ANM_BOTTLE_DRINK_END, - &daAlinkHIO_bottle_c0::m.mEndDrinkAnm); + &mpHIO->mItem.mBottle.m.mEndDrinkAnm); } field_0x072c->setFrame(2.0f); @@ -283,7 +283,7 @@ int daAlink_c::commonBottleDrink(int param_0) { { if (checkAnmEnd(frameCtrl_p)) { if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_42_e) { - setSingleAnimeParam(ANM_PICK_UP, &daAlinkHIO_pickUp_c0::m.mPlaceAnm); + setSingleAnimeParam(ANM_PICK_UP, &mpHIO->mItem.mPickUp.m.mPlaceAnm); } else { allUnequip(mKeepItem == fpcNm_ITEM_KANTERA); } @@ -377,7 +377,7 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) { mNormalSpeed = 0.0f; field_0x2f98 = 4; - setSingleAnimeParam(ANM_BOTTLE_DRINK_START, &daAlinkHIO_bottle_c0::m.mStartDrinkAnm); + setSingleAnimeParam(ANM_BOTTLE_DRINK_START, &mpHIO->mItem.mBottle.m.mStartDrinkAnm); keepItemData(); setBottleModel(i_itemNo); dComIfGp_setPlayerStatus1(0, 0x2000); @@ -412,7 +412,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) { mNormalSpeed = 0.0f; field_0x2f98 = 4; - setSingleAnimeParam(ANM_BOTTLE_OPEN, &daAlinkHIO_bottle_c0::m.mOpenBottleAnm); + setSingleAnimeParam(ANM_BOTTLE_OPEN, &mpHIO->mItem.mBottle.m.mOpenBottleAnm); keepItemData(); setBottleModel(param_0); dComIfGp_setPlayerStatus1(0, 0x4000); @@ -470,7 +470,7 @@ int daAlink_c::procBottleOpen() { if (mEquipItem == fpcNm_ITEM_FAIRY) { setSingleAnimeBaseMorf(ANM_BOTTLE_FAIRY, -1.0f); } else { - setSingleAnimeParam(ANM_BOTTLE_POUR, &daAlinkHIO_bottle_c0::m.mPourAnm); + setSingleAnimeParam(ANM_BOTTLE_POUR, &mpHIO->mItem.mBottle.m.mPourAnm); if (mEquipItem == fpcNm_ITEM_WATER_BOTTLE) { if (mWaterY > mLeftHandPos.y) { @@ -580,7 +580,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) { if (temp_r30 == PROC_OBJ_OILTUBO || temp_r30 == PROC_TAG_SSDRINK || temp_r30 == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA) { - setSingleAnimeParam(ANM_BOTTLE_SCOOP, &daAlinkHIO_bottle_c0::m.mScoopAnm); + setSingleAnimeParam(ANM_BOTTLE_SCOOP, &mpHIO->mItem.mBottle.m.mScoopAnm); if (mEquipItem == fpcNm_ITEM_KANTERA) { onNoResetFlg2(FLG2_UNK_10000000); @@ -591,7 +591,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) { } } - field_0x3478 = daAlinkHIO_bottle_c0::m.mScoopAnm.mCancelFrame; + field_0x3478 = mpHIO->mItem.mBottle.m.mScoopAnm.mCancelFrame; field_0x347c = 14.0f; if (var_r31 != NULL) { @@ -606,12 +606,12 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) { onModeFlg(0x2000); } } else if (temp_r3) { - setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCancelFrame; + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm); + field_0x3478 = mpHIO->mItem.mBottle.m.mSwingDownAnm.mCancelFrame; field_0x347c = 8.0f; } else { - setSingleAnimeParam(ANM_BOTTLE_SWING, &daAlinkHIO_bottle_c0::m.mSwingSideAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingSideAnm.mCancelFrame; + setSingleAnimeParam(ANM_BOTTLE_SWING, &mpHIO->mItem.mBottle.m.mSwingSideAnm); + field_0x3478 = mpHIO->mItem.mBottle.m.mSwingSideAnm.mCancelFrame; field_0x347c = 4.0f; } @@ -709,9 +709,9 @@ int daAlink_c::procBottleGetInit(int param_0) { int var_r30; if (mEquipItem == fpcNm_ITEM_KANTERA) { - setSingleAnime(ANM_BOTTLE_GET, daAlinkHIO_bottle_c0::m.mGetAnm.mSpeed, 40.0f, - daAlinkHIO_bottle_c0::m.mGetAnm.mEndFrame, - daAlinkHIO_bottle_c0::m.mGetAnm.mInterpolation); + setSingleAnime(ANM_BOTTLE_GET, mpHIO->mItem.mBottle.m.mGetAnm.mSpeed, 40.0f, + mpHIO->mItem.mBottle.m.mGetAnm.mEndFrame, + mpHIO->mItem.mBottle.m.mGetAnm.mInterpolation); field_0x2f93 = 0xFE; if (proc_pickup) { @@ -730,7 +730,7 @@ int daAlink_c::procBottleGetInit(int param_0) { setGetSubBgm(var_r30); } else { - setSingleAnimeParam(ANM_BOTTLE_GET, &daAlinkHIO_bottle_c0::m.mGetAnm); + setSingleAnimeParam(ANM_BOTTLE_GET, &mpHIO->mItem.mBottle.m.mGetAnm); var_r30 = mEquipItem; } diff --git a/src/d/actor/d_a_alink_bow.inc b/src/d/actor/d_a_alink_bow.inc index c4fa78568c..621e2cc6ad 100644 --- a/src/d/actor/d_a_alink_bow.inc +++ b/src/d/actor/d_a_alink_bow.inc @@ -10,42 +10,42 @@ void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, int i_forceCharge) const { if (mEquipItem == fpcNm_ITEM_PACHINKO) { - *o_distance = daAlinkHIO_bow_c0::m.mSlingshotDistance; - *o_speed = daAlinkHIO_bow_c0::m.mSlingshotSpeed; + *o_distance = mpHIO->mItem.mBow.m.mSlingshotDistance; + *o_speed = mpHIO->mItem.mBow.m.mSlingshotSpeed; } else if (dComIfGp_checkPlayerStatus0(0, 0x200000)) { - *o_distance = daAlinkHIO_bow_c0::m.mScopeArrowDistance; - *o_speed = daAlinkHIO_bow_c0::m.mScopeArrowSpeed; + *o_distance = mpHIO->mItem.mBow.m.mScopeArrowDistance; + *o_speed = mpHIO->mItem.mBow.m.mScopeArrowSpeed; } else if (field_0x301c == 0 || i_forceCharge) { if (field_0x301e == 1) { - *o_distance = daAlinkHIO_bow_c0::m.mChargeBombArrowDistance; - *o_speed = daAlinkHIO_bow_c0::m.mChargeBombArrowSpeed; + *o_distance = mpHIO->mItem.mBow.m.mChargeBombArrowDistance; + *o_speed = mpHIO->mItem.mBow.m.mChargeBombArrowSpeed; } else { - *o_distance = daAlinkHIO_bow_c0::m.mChargeArrowDistance; - *o_speed = daAlinkHIO_bow_c0::m.mChargeArrowSpeed; + *o_distance = mpHIO->mItem.mBow.m.mChargeArrowDistance; + *o_speed = mpHIO->mItem.mBow.m.mChargeArrowSpeed; } } else if (field_0x301e == 1) { - *o_distance = daAlinkHIO_bow_c0::m.mBombArrowDistance; - *o_speed = daAlinkHIO_bow_c0::m.mBombArrowSpeed; + *o_distance = mpHIO->mItem.mBow.m.mBombArrowDistance; + *o_speed = mpHIO->mItem.mBow.m.mBombArrowSpeed; } else { - *o_distance = daAlinkHIO_bow_c0::m.mArrowDistance; - *o_speed = daAlinkHIO_bow_c0::m.mArrowSpeed; + *o_distance = mpHIO->mItem.mBow.m.mArrowDistance; + *o_speed = mpHIO->mItem.mBow.m.mArrowSpeed; } } f32 daAlink_c::getArrowIncAtR() const { - return daAlinkHIO_bow_c0::m.mArrowAttackRadius; + return mpHIO->mItem.mBow.m.mArrowAttackRadius; } s16 daAlink_c::getBombArrowFlyExplodeTime() const { - return daAlinkHIO_bow_c0::m.mBombArrowFlyExplodeTime; + return mpHIO->mItem.mBow.m.mBombArrowFlyExplodeTime; } f32 daAlink_c::getArrowIncAtMaxStart() const { - return daAlinkHIO_bow_c0::m.mArrowIncAttackMaxStart; + return mpHIO->mItem.mBow.m.mArrowIncAttackMaxStart; } f32 daAlink_c::getArrowIncAtMax() const { - return daAlinkHIO_bow_c0::m.mArrowIncAttackMax; + return mpHIO->mItem.mBow.m.mArrowIncAttackMax; } BOOL daAlink_c::checkBowAndSlingItem(int i_itemNo) { @@ -123,7 +123,7 @@ void daAlink_c::deleteArrow() { if (arrow_p != NULL && fopAcM_GetName(arrow_p) == PROC_ARROW) { if (arrow_p->checkBombArrow() && - (mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || checkModeFlg(8))) + (mDamageTimer == mpHIO->mDamage.m.mInvincibleTime || checkModeFlg(8))) { arrow_p->setBombArrowExplode(); dComIfGp_addSelectItemNum(mSelectItemId, -1); @@ -227,22 +227,22 @@ void daAlink_c::setBowReadyAnime() { } void daAlink_c::setBowReloadAnime() { - setUpperAnimeParam(9, UPPER_2, &daAlinkHIO_bow_c0::m.mLoadAnm); + setUpperAnimeParam(9, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm); setFacePriTexture(FTANM_UNK_8); setFacePriBck(0xE5); if (mEquipItem == fpcNm_ITEM_PACHINKO) { - changeItemBck(0x1F0, daAlinkHIO_bow_c0::m.mLoadAnm.mStartFrame); + changeItemBck(0x1F0, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame); field_0x2f97 = 5; seStartOnlyReverb(Z2SE_AL_PACHINKO_DRAW); } else { - changeItemBck(0x41, daAlinkHIO_bow_c0::m.mLoadAnm.mStartFrame); + changeItemBck(0x41, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame); field_0x2f97 = 7; seStartOnlyReverb(Z2SE_AL_DRAW_BOW); } field_0x2f96 = 0; - field_0x301c = daAlinkHIO_bow_c0::m.mChargeArrowTime; + field_0x301c = mpHIO->mItem.mBow.m.mChargeArrowTime; } BOOL daAlink_c::checkUpperItemActionBow() { @@ -273,7 +273,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { if (checkReadyItem()) { if (mItemVar0.field_0x3018 != 0) { - setUpperAnimeParam(0xC, UPPER_2, &daAlinkHIO_bow_c0::m.mShootAnm); + setUpperAnimeParam(0xC, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm); setFacePriBck(0xE8); field_0x2f96 = 0; @@ -291,7 +291,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { var_r29 = 0x44; } - changeItemBck(var_r29, daAlinkHIO_bow_c0::m.mShootAnm.mStartFrame); + changeItemBck(var_r29, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame); mItemVar0.field_0x3018 = 0; } else if (mEquipItem == fpcNm_ITEM_PACHINKO) { if (!itemButton()) { @@ -335,7 +335,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { dComIfGp_setItemArrowNumCount(-1); mItemAcKeep.clearData(); onResetFlg0(RFLG0_UNK_20000000); - field_0x30a4 = daAlinkHIO_bow_c0::m.mBombArrowHoldTime; + field_0x30a4 = mpHIO->mItem.mBow.m.mBombArrowHoldTime; } else { seStartOnlyReverb(Z2SE_AL_ARROW_EMPTY); } @@ -403,7 +403,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { } if (checkAnmEnd(&mUpperFrameCtrl[2]) || - (mUpperFrameCtrl[2].getFrame() > daAlinkHIO_bow_c0::m.mShootAnm.mCancelFrame && + (mUpperFrameCtrl[2].getFrame() > mpHIO->mItem.mBow.m.mShootAnm.mCancelFrame && itemButton())) { setBowReadyAnime(); @@ -415,7 +415,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { } if (checkBowWaitAnime() || (mEquipItem == fpcNm_ITEM_PACHINKO && checkBowChargeWaitAnime())) { - field_0x33dc += daAlinkHIO_bow_c0::m.mShootAnm.mSpeed; + field_0x33dc += mpHIO->mItem.mBow.m.mShootAnm.mSpeed; } else { field_0x33dc = mUpperFrameCtrl[2].getFrame(); } @@ -556,7 +556,7 @@ int daAlink_c::procBowSubjectInit() { } setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, 0.0f, - daAlinkHIO_bow_c0::m.mStartInterpolation); + mpHIO->mItem.mBow.m.mStartInterpolation); mNormalSpeed = 0.0f; setBowOrSlingStatus(); return 1; @@ -580,7 +580,7 @@ int daAlink_c::procBowMoveInit() { onModeFlg(1); } - setBlendAtnMoveAnime(daAlinkHIO_bow_c0::m.mStartInterpolation); + setBlendAtnMoveAnime(mpHIO->mItem.mBow.m.mStartInterpolation); mProcVar2.field_0x300c = 0; setBowOrSlingStatus(); return 1; @@ -604,7 +604,7 @@ int daAlink_c::procBowMove() { if (field_0x2f98 != 3) { field_0x2f98 = 3; - var_f31 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + var_f31 = mpHIO->mBasic.m.mBasicInterpolation; } current.angle.y = shape_angle.y - 0x4000; } else { diff --git a/src/d/actor/d_a_alink_canoe.inc b/src/d/actor/d_a_alink_canoe.inc index 38472f1b46..e2bbd910e3 100644 --- a/src/d/actor/d_a_alink_canoe.inc +++ b/src/d/actor/d_a_alink_canoe.inc @@ -10,41 +10,41 @@ f32 daAlink_c::getCanoeMaxSpeed() const { if (checkCanoeSlider()) { - return daAlinkHIO_canoe_c0::m.mMaxSpeed_RiverRide; + return mpHIO->mCanoe.m.mMaxSpeed_RiverRide; } else { - return daAlinkHIO_canoe_c0::m.mMaxSpeed; + return mpHIO->mCanoe.m.mMaxSpeed; } } f32 daAlink_c::getCanoeBackMaxSpeed() const { - return daAlinkHIO_canoe_c0::m.mBackMaxSpeed; + return mpHIO->mCanoe.m.mBackMaxSpeed; } f32 daAlink_c::getCanoeCres() const { if (checkCanoeSlider()) { - return daAlinkHIO_canoe_c0::m.mDeceleration_RiverRide; + return mpHIO->mCanoe.m.mDeceleration_RiverRide; } else { - return daAlinkHIO_canoe_c0::m.mDeceleration; + return mpHIO->mCanoe.m.mDeceleration; } } f32 daAlink_c::getCanoeSpeedRate() const { if (checkCanoeSlider()) { - return daAlinkHIO_canoe_c0::m.mSpeedRate_RiverRide; + return mpHIO->mCanoe.m.mSpeedRate_RiverRide; } else { - return daAlinkHIO_canoe_c0::m.mSpeedRate; + return mpHIO->mCanoe.m.mSpeedRate; } } s16 daAlink_c::getCanoeMaxRotSpeed() const { s16 var_r30; if (checkCanoeSlider()) { - var_r30 = daAlinkHIO_canoe_c0::m.mMaxTurnAngle_RiverRide; + var_r30 = mpHIO->mCanoe.m.mMaxTurnAngle_RiverRide; } else { - var_r30 = daAlinkHIO_canoe_c0::m.mMaxTurnAngle; + var_r30 = mpHIO->mCanoe.m.mMaxTurnAngle; } - return var_r30 * (((mUnderFrameCtrl[0].getRate() - daAlinkHIO_canoe_c0::m.mStickRowAnmSpeed) * 0.5f) + 1.0f); + return var_r30 * (((mUnderFrameCtrl[0].getRate() - mpHIO->mCanoe.m.mStickRowAnmSpeed) * 0.5f) + 1.0f); } cXyz* daAlink_c::getCanoeLocalPaddleTop() { @@ -299,7 +299,7 @@ int daAlink_c::canoeCommon() { var_r29 = 0x20021; } - int var_r27 = cLib_minMaxLimit(((fabsf(var_f31) - daAlinkHIO_canoe_c0::m.mStickRowAnmSpeed) / (daAlinkHIO_canoe_c0::m.mBtnRowStartAnmSpeed - daAlinkHIO_canoe_c0::m.mStickRowAnmSpeed)) * 127.0f, 0, 0x7F); + int var_r27 = cLib_minMaxLimit(((fabsf(var_f31) - mpHIO->mCanoe.m.mStickRowAnmSpeed) / (mpHIO->mCanoe.m.mBtnRowStartAnmSpeed - mpHIO->mCanoe.m.mStickRowAnmSpeed)) * 127.0f, 0, 0x7F); mZ2Link.startLinkSwordSound(var_r29, var_r27, mVoiceReverbIntensity); } @@ -335,10 +335,10 @@ int daAlink_c::procCanoeRideInit() { deleteEquipItem(0, 0); daCanoe_c* canoe = (daCanoe_c*)field_0x27f4; - setSingleAnime(ANM_HANG_CLIMB_TOP, daAlinkHIO_wallCatch_c0::m.mClimbAnm.mSpeed, - daAlinkHIO_wallCatch_c0::m.mClimbStartFrame, - daAlinkHIO_wallCatch_c0::m.mClimbAnm.mEndFrame, - daAlinkHIO_wallCatch_c0::m.mClimbAnm.mInterpolation); + setSingleAnime(ANM_HANG_CLIMB_TOP, mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mSpeed, + mpHIO->mWallHang.mWallCatch.m.mClimbStartFrame, + mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mEndFrame, + mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mInterpolation); setSpecialGravity(0.0f, maxFallSpeed, 0); mNormalSpeed = 0.0f; @@ -403,7 +403,7 @@ int daAlink_c::procCanoeJumpRideInit(fopAc_ac_c* param_0) { } setHeavyBoots(0); - setSingleAnimeParam(ANM_JUMP_LAND, &daAlinkHIO_autoJump_c0::m.mLandAnm); + setSingleAnimeParam(ANM_JUMP_LAND, &mpHIO->mAutoJump.m.mLandAnm); deleteEquipItem(0, 0); mRideAcKeep.setData(canoe); @@ -445,7 +445,7 @@ int daAlink_c::procCanoeGetOffInit() { field_0x2f99 = 0; mNormalSpeed = 0.0f; - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 6.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 6.0f); setSpecialGravity(0.0f, maxFallSpeed, 0); mNormalSpeed = 0.0f; speed.y = 0.0f; @@ -509,7 +509,7 @@ int daAlink_c::procCanoeGetOff() { if (mLinkAcch.ChkGroundHit()) { checkLandAction(0); } else if (speed.y < -gravity) { - procFallInit(2, daAlinkHIO_smallJump_c0::m.mFallInterpolation); + procFallInit(2, mpHIO->mWallHang.mSmallJump.m.mFallInterpolation); } else { field_0x2f99 = 7; } @@ -517,7 +517,7 @@ int daAlink_c::procCanoeGetOff() { if (mProcVar3.field_0x300e == 0) { if (field_0x2060->getOldFrameRate() < 0.01f) { mProcVar3.field_0x300e = 1; - setSingleAnimeParam(ANM_VJUMP_START, &daAlinkHIO_smallJump_c0::m.mSmallJumpAnm); + setSingleAnimeParam(ANM_VJUMP_START, &mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm); field_0x33b0 = l_waitBaseAnime.y; field_0x3588 = l_waitBaseAnime; } @@ -525,7 +525,7 @@ int daAlink_c::procCanoeGetOff() { rideGetOff(); offModeFlg(0x400); setJumpMode(); - setSpecialGravity(daAlinkHIO_autoJump_c0::m.mGravity, maxFallSpeed, 0); + setSpecialGravity(mpHIO->mAutoJump.m.mGravity, maxFallSpeed, 0); mNormalSpeed = 15.0f; speed.y = 20.0f; } @@ -756,12 +756,12 @@ int daAlink_c::procCanoeRowInit(int param_0) { } commonProcInit(PROC_CANOE_ROW); - f32 var_f31 = daAlinkHIO_canoe_c0::m.mBtnRowAnmSpeed; + f32 var_f31 = mpHIO->mCanoe.m.mBtnRowAnmSpeed; BOOL var_r24 = 0; if (var_r29 == ANM_CANOE_ROW_LEFT_BACK || var_r29 == ANM_CANOE_ROW_RIGHT_BACK) { mProcVar3.field_0x300e = 1; - if (temp_r26->speedF > 0.5f * (-var_f31 * daAlinkHIO_canoe_c0::m.mBackSpeedRate)) { + if (temp_r26->speedF > 0.5f * (-var_f31 * mpHIO->mCanoe.m.mBackSpeedRate)) { var_r24 = 1; } @@ -783,7 +783,7 @@ int daAlink_c::procCanoeRowInit(int param_0) { } if (var_r24 != 0) { - var_f31 = daAlinkHIO_canoe_c0::m.mBtnRowStartAnmSpeed; + var_f31 = mpHIO->mCanoe.m.mBtnRowStartAnmSpeed; } setSingleAnime((daAlink_ANM)var_r29, var_f31, 0.0f, 35, 3.0f); @@ -809,9 +809,9 @@ int daAlink_c::procCanoeRow() { procCanoeWaitInit(0); } } else { - f32 var_f30 = daAlinkHIO_canoe_c0::m.mBtnRowAnmSpeed; - if ((mProcVar3.field_0x300e == 1 && temp_r29->speedF > 0.5f * (-var_f30 * daAlinkHIO_canoe_c0::m.mBackSpeedRate)) || (mProcVar3.field_0x300e == 0 && temp_r29->speedF < 0.5f * (var_f30 * getCanoeSpeedRate()))) { - var_f30 = daAlinkHIO_canoe_c0::m.mBtnRowStartAnmSpeed; + f32 var_f30 = mpHIO->mCanoe.m.mBtnRowAnmSpeed; + if ((mProcVar3.field_0x300e == 1 && temp_r29->speedF > 0.5f * (-var_f30 * mpHIO->mCanoe.m.mBackSpeedRate)) || (mProcVar3.field_0x300e == 0 && temp_r29->speedF < 0.5f * (var_f30 * getCanoeSpeedRate()))) { + var_f30 = mpHIO->mCanoe.m.mBtnRowStartAnmSpeed; } f32 sp8 = temp_r27->getRate(); @@ -851,7 +851,7 @@ int daAlink_c::procCanoeRow() { if (mProcVar3.field_0x300e == 0) { temp_r29->setAimSpeed(var_f31 * getCanoeSpeedRate()); } else { - temp_r29->setAimSpeed(-var_f31 * daAlinkHIO_canoe_c0::m.mBackSpeedRate); + temp_r29->setAimSpeed(-var_f31 * mpHIO->mCanoe.m.mBackSpeedRate); } } @@ -873,12 +873,12 @@ int daAlink_c::procCanoePaddleShiftInit(int param_0) { f32 speed; if (mProcVar5.field_0x3012 == 0) { - speed = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + speed = mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } else { - speed = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + speed = -mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } - setSingleAnime(ANM_CANOE_CHANGE_HAND, speed, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mStartFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mEndFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mInterpolation); + setSingleAnime(ANM_CANOE_CHANGE_HAND, speed, mpHIO->mCanoe.m.mLeftRightChangeAnm.mStartFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mEndFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mInterpolation); if (mProcVar5.field_0x3012 == 1) { field_0x2f92 = 0; @@ -932,12 +932,12 @@ int daAlink_c::procCanoePaddlePutInit(int param_0) { f32 var_f31; if (mProcVar5.field_0x3012 == 0) { - var_f31 = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + var_f31 = mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } else { - var_f31 = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + var_f31 = -mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } - setSingleAnime(ANM_CANOE_CHANGE_HAND, var_f31, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mStartFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mEndFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mInterpolation); + setSingleAnime(ANM_CANOE_CHANGE_HAND, var_f31, mpHIO->mCanoe.m.mLeftRightChangeAnm.mStartFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mEndFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mInterpolation); if (mProcVar5.field_0x3012 == 1) { field_0x2f92 = 0; @@ -1017,12 +1017,12 @@ int daAlink_c::procCanoePaddleGrab() { if (checkAnmEnd(temp_r29) != 0) { f32 var_f31; if (mProcVar5.field_0x3012 == 0) { - var_f31 = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + var_f31 = -mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } else { - var_f31 = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed; + var_f31 = mpHIO->mCanoe.m.mLeftRightChangeAnm.mSpeed; } - setSingleAnime(ANM_CANOE_CHANGE_HAND, var_f31, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mStartFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mEndFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mInterpolation); + setSingleAnime(ANM_CANOE_CHANGE_HAND, var_f31, mpHIO->mCanoe.m.mLeftRightChangeAnm.mStartFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mEndFrame, mpHIO->mCanoe.m.mLeftRightChangeAnm.mInterpolation); mUpperFrameCtrl[0].setFrame(11.0f); getNowAnmPackUpper(UPPER_0)->setFrame(11.0f); @@ -1545,7 +1545,7 @@ int daAlink_c::procCanoeBottleDrinkInit(u16 param_0) { temp_r3->setAimSpeed(0.0f); temp_r3->setAimAngle(shape_angle.y); - setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_START)->m_upperID, UPPER_2, &daAlinkHIO_bottle_c0::m.mStartDrinkAnm); + setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_START)->m_upperID, UPPER_2, &mpHIO->mItem.mBottle.m.mStartDrinkAnm); setFacePriAnime(ANM_BOTTLE_DRINK_START); keepItemData(); setBottleModel(param_0); @@ -1583,7 +1583,7 @@ int daAlink_c::procCanoeKandelaarPourInit() { canoe->setAimSpeed(0.0f); canoe->setAimAngle(shape_angle.y); - setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_upperID, UPPER_2, &daAlinkHIO_kandelaar_c0::m.mBeginUnkAnm); + setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_upperID, UPPER_2, &mpHIO->mItem.mLantern.m.mBeginUnkAnm); commonKandelaarPourInit(); return 1; } @@ -1613,7 +1613,7 @@ int daAlink_c::procFishingCastInit() { return 1; } - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); setUpperAnimeBase(0x260); field_0x2f96 = 0xFE; field_0x2f97 = 8; @@ -1656,7 +1656,7 @@ int daAlink_c::procFishingCast() { } if (checkInputOnR()) { - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_move_c0::m.mTurnAngleRate, daAlinkHIO_move_c0::m.mMaxTurnAngle, daAlinkHIO_move_c0::m.mMinTurnAngle); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mMove.m.mTurnAngleRate, mpHIO->mMove.m.mMaxTurnAngle, mpHIO->mMove.m.mMinTurnAngle); current.angle.y = shape_angle.y; } @@ -1669,7 +1669,7 @@ int daAlink_c::procFishingCast() { mUnderFrameCtrl[0].setFrame(0.0f); getNowAnmPackUnder(UNDER_0)->setFrame(0.0f); } else if (mUnderFrameCtrl[0].getRate() < 0.01f) { - mUnderFrameCtrl[0].setRate(daAlinkHIO_move_c0::m.mWaitAnmSpeed); + mUnderFrameCtrl[0].setRate(mpHIO->mMove.m.mWaitAnmSpeed); mUpperFrameCtrl[2].setRate(1.0f); } diff --git a/src/d/actor/d_a_alink_copyrod.inc b/src/d/actor/d_a_alink_copyrod.inc index 7cc9e5fd7d..0490a62087 100644 --- a/src/d/actor/d_a_alink_copyrod.inc +++ b/src/d/actor/d_a_alink_copyrod.inc @@ -12,19 +12,19 @@ BOOL daAlink_c::checkLv6BossRoom() { } f32 daAlink_c::getCopyRodBallSpeed() const { - return daAlinkHIO_copyRod_c0::m.mBallSpeed; + return mpHIO->mItem.mCopyRod.m.mBallSpeed; } f32 daAlink_c::getCopyRodBallReturnSpeed() const { - return daAlinkHIO_copyRod_c0::m.mBallReturnSpeed; + return mpHIO->mItem.mCopyRod.m.mBallReturnSpeed; } f32 daAlink_c::getCopyRodBallDisMax() const { if (checkLv6BossRoom()) { - return daAlinkHIO_copyRod_c0::m.mBossBallMaxDistance; + return mpHIO->mItem.mCopyRod.m.mBossBallMaxDistance; } - return daAlinkHIO_copyRod_c0::m.mBallMaxDistance; + return mpHIO->mItem.mCopyRod.m.mBallMaxDistance; } fopAc_ac_c* daAlink_c::getCopyRodControllActor() { @@ -50,7 +50,7 @@ void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) { mUpperFrameCtrl[2].setFrame(0.0f); getNowAnmPackUpper(UPPER_2)->setFrame(0.0f); } else { - mUpperFrameCtrl[2].setRate(daAlinkHIO_boom_c0::m.mIdleAnmSpeed); + mUpperFrameCtrl[2].setRate(mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed); } } } @@ -86,9 +86,9 @@ void daAlink_c::setCopyRodControllUpperSpeedRate() { var_f31 = 1.0f; } else { if (mProcID == PROC_STEP_MOVE) { - var_f31 = fabsf(field_0x3478 / daAlinkHIO_move_c0::m.mMaxSpeed); + var_f31 = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed); } else { - var_f31 = fabsf(mNormalSpeed / daAlinkHIO_move_c0::m.mMaxSpeed); + var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed); } if (checkHeavyStateOn(1, 1)) { @@ -132,7 +132,7 @@ void daAlink_c::setCopyRodModel() { void daAlink_c::setCopyRodReadyAnime() { f32 speed; if (checkAttentionLock()) { - speed = daAlinkHIO_boom_c0::m.mIdleAnmSpeed; + speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed; } else { speed = 0.0f; } @@ -201,7 +201,7 @@ BOOL daAlink_c::checkUpperItemActionCopyRod() { } if (checkReadyItem() && !itemButton() && checkCopyRodReadyAnime()) { - setUpperAnimeParam(0x53, UPPER_2, &daAlinkHIO_boom_c0::m.mThrowAnm); + setUpperAnimeParam(0x53, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm); mSearchBallScale = getCopyRodBallDisMax(); if (!mSight.getLockFlg()) { @@ -226,7 +226,7 @@ void daAlink_c::checkUpperItemActionCopyRodFly() { int daAlink_c::checkNextActionCopyRod() { if ((checkBoomerangCatchAnime() && - mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) || + mUpperFrameCtrl[2].getFrame() <= mpHIO->mItem.mBoomerang.m.mCatchAnm.mCancelFrame) || checkNoResetFlg1(FLG1_UNK_10000)) { return 0; @@ -275,7 +275,7 @@ int daAlink_c::procCopyRodSubjectInit() { mNormalSpeed = 0.0f; initCopyRodUpperAnimeSpeed(1); - setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, 0.0f, daAlinkHIO_boom_c0::m.mStartInterpolation); + setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, 0.0f, mpHIO->mItem.mBoomerang.m.mStartInterpolation); dComIfGp_setPlayerStatus0(0, 0x80); current.angle.y = shape_angle.y; @@ -314,7 +314,7 @@ int daAlink_c::procCopyRodMoveInit() { } initCopyRodUpperAnimeSpeed(0); - setBlendAtnMoveAnime(daAlinkHIO_boom_c0::m.mStartInterpolation); + setBlendAtnMoveAnime(mpHIO->mItem.mBoomerang.m.mStartInterpolation); dComIfGp_setPlayerStatus0(0, 0x80); return 1; @@ -333,7 +333,7 @@ int daAlink_c::procCopyRodMove() { if (field_0x2f98 != 3) { field_0x2f98 = 3; - var_f31 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + var_f31 = mpHIO->mBasic.m.mBasicInterpolation; } } else { offModeFlg(1); @@ -354,16 +354,16 @@ int daAlink_c::procCopyRodSwingInit() { ((fopAcM_GetName(statue) == PROC_CSTATUE && statue->checkNotSmallType()) || fopAcM_GetName(statue) != PROC_CSTATUE)) { - setSingleAnimeParam(ANM_COPYROD_SWING_LARGE, &daAlinkHIO_copyRod_c0::m.mBigSwingAnm); + setSingleAnimeParam(ANM_COPYROD_SWING_LARGE, &mpHIO->mItem.mCopyRod.m.mBigSwingAnm); field_0x3478 = 13.0f; field_0x347c = 21.0f; - field_0x3480 = daAlinkHIO_copyRod_c0::m.mBigSwingAnm.mCancelFrame; + field_0x3480 = mpHIO->mItem.mCopyRod.m.mBigSwingAnm.mCancelFrame; field_0x3484 = 27.0f; } else { - setSingleAnimeParam(ANM_COPYROD_SWING, &daAlinkHIO_copyRod_c0::m.mSwingAnm); + setSingleAnimeParam(ANM_COPYROD_SWING, &mpHIO->mItem.mCopyRod.m.mSwingAnm); field_0x3478 = 4.0f; field_0x347c = 8.0f; - field_0x3480 = daAlinkHIO_copyRod_c0::m.mSwingAnm.mCancelFrame; + field_0x3480 = mpHIO->mItem.mCopyRod.m.mSwingAnm.mCancelFrame; field_0x3484 = 14.0f; } diff --git a/src/d/actor/d_a_alink_crawl.inc b/src/d/actor/d_a_alink_crawl.inc index 3d8407fb4a..5a5ebd7880 100644 --- a/src/d/actor/d_a_alink_crawl.inc +++ b/src/d/actor/d_a_alink_crawl.inc @@ -6,8 +6,8 @@ #include "d/actor/d_a_alink.h" f32 daAlink_c::getCrawlMoveAnmSpeed() { - return getAnmSpeedStickRate(daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMin, - daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMax); + return getAnmSpeedStickRate(mpHIO->mCrouch.m.mCrawlAnmSpeedMin, + mpHIO->mCrouch.m.mCrawlAnmSpeedMax); } f32 daAlink_c::getCrawlMoveSpeed() { @@ -20,7 +20,7 @@ f32 daAlink_c::getCrawlMoveSpeed() { frame = frame_ctrl->getFrame(); } - return (daAlinkHIO_crouch_c0::m.mCrawlMoveRate * frame_ctrl->getRate()) * cM_fsin(frame * 0.18479956686496735f); + return (mpHIO->mCrouch.m.mCrawlMoveRate * frame_ctrl->getRate()) * cM_fsin(frame * 0.18479956686496735f); } void daAlink_c::setCrawlMoveDirectionArrow() { @@ -357,9 +357,9 @@ void daAlink_c::setCrawlMoveAngle() { cXyz sp2C; cXyz sp38; - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_crouch_c0::m.mCrawlTurnRate, - daAlinkHIO_crouch_c0::m.mCrawlTurnMax, - daAlinkHIO_crouch_c0::m.mCrawlTurnMin); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mCrouch.m.mCrawlTurnRate, + mpHIO->mCrouch.m.mCrawlTurnMax, + mpHIO->mCrouch.m.mCrawlTurnMin); if (shape_angle.y != current.angle.y) { if ((s16)(shape_angle.y - current.angle.y) > 0) { @@ -457,7 +457,7 @@ int daAlink_c::procCrawlStartInit() { commonProcInit(PROC_CRAWL_START); field_0x3588 = l_waitBaseAnime; - setSingleAnimeParam(ANM_CRAWL_START, &daAlinkHIO_crouch_c0::m.mCrawlStartAnm); + setSingleAnimeParam(ANM_CRAWL_START, &mpHIO->mCrouch.m.mCrawlStartAnm); mNormalSpeed = 0.0f; shape_angle.y = field_0x306e + 0x8000; @@ -465,13 +465,13 @@ int daAlink_c::procCrawlStartInit() { current.pos.x = field_0x34ec.x + (35.0f * cM_ssin(field_0x306e)); current.pos.z = field_0x34ec.z + (35.0f * cM_scos(field_0x306e)); - if (daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCancelFrame > daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mEndFrame) { - field_0x347c = daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mEndFrame; + if (mpHIO->mCrouch.m.mCrawlStartAnm.mCancelFrame > mpHIO->mCrouch.m.mCrawlStartAnm.mEndFrame) { + field_0x347c = mpHIO->mCrouch.m.mCrawlStartAnm.mEndFrame; } else { - field_0x347c = daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCancelFrame; + field_0x347c = mpHIO->mCrouch.m.mCrawlStartAnm.mCancelFrame; } - field_0x3478 = 1.0f / (field_0x347c - daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mStartFrame); + field_0x3478 = 1.0f / (field_0x347c - mpHIO->mCrouch.m.mCrawlStartAnm.mStartFrame); field_0x33cc = 0.0f; dComIfGp_setPlayerStatus0(0, 0x08000000); @@ -534,7 +534,7 @@ int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) { } current.angle.y = shape_angle.y; - setSingleAnimeBaseSpeed(ANM_CRAWL, var_f31, daAlinkHIO_crouch_c0::m.mCrawlInterpolation); + setSingleAnimeBaseSpeed(ANM_CRAWL, var_f31, mpHIO->mCrouch.m.mCrawlInterpolation); } field_0x3198 = var_r29 ^ 1; @@ -762,7 +762,7 @@ int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) { current.angle.y = shape_angle.y; field_0x2f99 = 0xC; - const daAlinkHIO_anm_c* temp_r30 = &daAlinkHIO_crouch_c0::m.mCrawlEndAnm; + const daAlinkHIO_anm_c* temp_r30 = &mpHIO->mCrouch.m.mCrawlEndAnm; f32 var_f30; if (param_0 != 0) { @@ -816,7 +816,7 @@ int daAlink_c::procCrawlEnd() { if (!checkNextActionFromCrouch(0)) { procWaitInit(); } - } else if (frame_ctrl->getFrame() < daAlinkHIO_crouch_c0::m.mCrawlEndAnm.mCancelFrame) { + } else if (frame_ctrl->getFrame() < mpHIO->mCrouch.m.mCrawlEndAnm.mCancelFrame) { checkNextActionFromCrouch(1); } diff --git a/src/d/actor/d_a_alink_cut.inc b/src/d/actor/d_a_alink_cut.inc index 3c0fbcfcdc..553144c2e8 100644 --- a/src/d/actor/d_a_alink_cut.inc +++ b/src/d/actor/d_a_alink_cut.inc @@ -412,13 +412,13 @@ void daAlink_c::setCutDash(int param_0, int param_1) { resetCombo(0); offNoResetFlg2(FLG2_UNK_2); - setSwordAtParam(dCcG_At_Spl_UNK_0, 7, 16, 1, daAlinkHIO_cut_c0::m.mRunCutLength, - daAlinkHIO_cut_c0::m.mRunCutRadius); + setSwordAtParam(dCcG_At_Spl_UNK_0, 7, 16, 1, mpHIO->mCut.m.mRunCutLength, + mpHIO->mCut.m.mRunCutRadius); field_0x2fd0 = 2; mRunCutComboCount++; if (param_1) { - setUpperAnimeParam(0x82, UPPER_2, &daAlinkHIO_cutDaCharge_c0::m.mCutAnm); + setUpperAnimeParam(0x82, UPPER_2, &mpHIO->mCut.mCutDashCharge.m.mCutAnm); if (checkBoardRide()) { setCutType(13); @@ -430,7 +430,7 @@ void daAlink_c::setCutDash(int param_0, int param_1) { mRunCutComboCount = 1; } } else if (mRunCutComboCount == 1 || mRunCutComboCount == 3) { - setUpperAnimeParam(0x80, UPPER_2, &daAlinkHIO_cutDaL_c0::m.mCutAnm); + setUpperAnimeParam(0x80, UPPER_2, &mpHIO->mCut.mCutDashLeft.m.mCutAnm); if (checkBoardRide()) { setCutType(11); @@ -443,7 +443,7 @@ void daAlink_c::setCutDash(int param_0, int param_1) { mRunCutComboCount = 1; setFacePriTexture(FTANM_UNK_13); } else { - setUpperAnimeParam(0x81, UPPER_2, &daAlinkHIO_cutDaR_c0::m.mCutAnm); + setUpperAnimeParam(0x81, UPPER_2, &mpHIO->mCut.mCutDashRight.m.mCutAnm); if (checkBoardRide()) { setCutType(12); @@ -458,7 +458,7 @@ void daAlink_c::setCutDash(int param_0, int param_1) { setFacePriBck(0x104); field_0x2f96 = 2; - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; setSwordVoiceSe(Z2SE_AL_V_ATTACK_RUN); setCylAtParam(getSwordAtType(), dCcG_At_Spl_UNK_0, 7, 16, 1, 50.0f, 130.0f); @@ -473,9 +473,9 @@ BOOL daAlink_c::checkForceSwordSwing() { void daAlink_c::setComboReserb() { if (checkWolf()) { - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; } else { - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; } if (mComboCutCount != 4 && field_0x2fce == 0 && swordSwingTrigger()) { @@ -735,8 +735,8 @@ void daAlink_c::checkCutAtnActorChange() { void daAlink_c::setCutJumpSpeed(int i_airAt) { if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; - speed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; + speed.y *= mpHIO->mItem.mIronBoots.m.mWaterVelocityY; } else if (checkHeavyStateOn(1, 1)) { speed.y *= 1.35f; } @@ -828,15 +828,15 @@ int daAlink_c::procCutNormalInit(int i_type) { const daAlinkHIO_cutNormal_c1* cutData; if (i_type == 1) { - cutData = &daAlinkHIO_cutNmL_c0::m; + cutData = &mpHIO->mCut.mCutLeft.m; } else if (i_type == 2) { - cutData = &daAlinkHIO_cutNmR_c0::m; + cutData = &mpHIO->mCut.mCutRight.m; } else if (i_type == 4) { - cutData = &daAlinkHIO_cutNmSR_c0::m; + cutData = &mpHIO->mCut.mCutRightStab.m; } else if (i_type == 3) { - cutData = &daAlinkHIO_cutNmSL_c0::m; + cutData = &mpHIO->mCut.mCutLeftStab.m; } else { - cutData = &daAlinkHIO_cutNmV_c0::m; + cutData = &mpHIO->mCut.mCutVertical.m; } field_0x3478 = cutData->mAttackStartFrame; @@ -871,10 +871,10 @@ int daAlink_c::procCutNormalInit(int i_type) { } field_0x3588 = l_halfAtnWaitBaseAnime; - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; - setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2, daAlinkHIO_cut_c0::m.mSwordLength, - daAlinkHIO_cut_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2, mpHIO->mCut.m.mSwordLength, + mpHIO->mCut.m.mSwordRadius); setSwordComboVoice(); mProcVar5.field_0x3012 = 0; @@ -904,7 +904,7 @@ int daAlink_c::procCutNormal() { checkCutTurnCharge(); checkCutAtnActorChange(); - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); onEndResetFlg0(ERFLG0_UNK_8000000); field_0x2f99 = 4; @@ -1049,19 +1049,19 @@ int daAlink_c::procCutFinishInit(int i_type) { BOOL var_r30 = FALSE; if (i_type == 0) { - cutData = &daAlinkHIO_cutFnL_c0::m; + cutData = &mpHIO->mCut.mCutFinishLeft.m; } else if (i_type == 1) { - cutData = &daAlinkHIO_cutFnV_c0::m; + cutData = &mpHIO->mCut.mCutFinishVertical.m; } else if (i_type == 2) { - cutData = &daAlinkHIO_cutFnS_c0::m; + cutData = &mpHIO->mCut.mCutFinishStab.m; } else if (i_type == 3) { - cutData = &daAlinkHIO_cutFnSl_c0::m; + cutData = &mpHIO->mCut.mCutFinishSweep.m; var_r30 = TRUE; } else if (i_type == 4) { - cutData = &daAlinkHIO_cutFnSm_c0::m; + cutData = &mpHIO->mCut.mCutFinishSlash.m; var_r30 = TRUE; } else { - cutData = &daAlinkHIO_cutFnR_c0::m; + cutData = &mpHIO->mCut.mCutFinishRight.m; } f32 var_f31; @@ -1092,19 +1092,19 @@ int daAlink_c::procCutFinishInit(int i_type) { } current.angle.y = shape_angle.y; - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; if (mComboCutCount == 3) { field_0x3484 = cutData->mComboCheckFrame; mProcVar0.field_0x3008 = cutData->mComboStopTime; setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2, - daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius); + mpHIO->mCut.m.mSwordLength, mpHIO->mCut.m.mSwordRadius); field_0x32d0 = Z2SE_AL_SWORD_SWING_S; } else { field_0x3484 = cutData->mCutAnm.mCancelFrame; mProcVar0.field_0x3008 = cutData->mStopTime; setSwordAtParam(dCcG_At_Spl_UNK_1, 3, cutParams->m_atSe, (var_r30 ? TRUE : FALSE) + 3, - daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius); + mpHIO->mCut.m.mSwordLength, mpHIO->mCut.m.mSwordRadius); if (i_type == 2) { field_0x32d0 = Z2SE_AL_SWORD_THRUST; @@ -1154,7 +1154,7 @@ int daAlink_c::procCutFinish() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; setBodyAngleXReadyAnime(1); - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); onEndResetFlg0(ERFLG0_UNK_8000000); setComboReserb(); @@ -1229,12 +1229,12 @@ int daAlink_c::procCutFinishJumpUpInit() { } setCutType(CUT_TYPE_TWIRL); - speed.y = daAlinkHIO_cutFnJU_c0::m.mSpeedV; - mNormalSpeed = daAlinkHIO_cutFnJU_c0::m.mSpeedH; + speed.y = mpHIO->mCut.mCutFinishJumpUppercut.m.mSpeedV; + mNormalSpeed = mpHIO->mCut.mCutFinishJumpUppercut.m.mSpeedH; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; - speed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; + speed.y *= mpHIO->mItem.mIronBoots.m.mWaterVelocityY; } else if (checkHeavyStateOn(1, 1)) { speed.y *= 1.5f; } @@ -1249,16 +1249,16 @@ int daAlink_c::procCutFinishJumpUpInit() { current.angle.y = shape_angle.y; } - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; - f32 var_f31 = daAlinkHIO_cutFnJU_c0::m.mCutAnm.mStartFrame; + field_0x307e = mpHIO->mCut.m.mComboDuration; + f32 var_f31 = mpHIO->mCut.mCutFinishJumpUppercut.m.mCutAnm.mStartFrame; setCylAtParam(getSwordAtType(), dCcG_At_Spl_UNK_1, 3, 1, 3, - daAlinkHIO_cutFnJU_c0::m.mAttackRadius, 10.0f); + mpHIO->mCut.mCutFinishJumpUppercut.m.mAttackRadius, 10.0f); field_0x32cc = Z2SE_AL_SWORD_SWING_L; - setSingleAnime(ANM_CUT_TWIRL, daAlinkHIO_cutFnJU_c0::m.mCutAnm.mSpeed, var_f31, - daAlinkHIO_cutFnJU_c0::m.mCutAnm.mEndFrame, - daAlinkHIO_cutFnJU_c0::m.mCutAnm.mInterpolation); + setSingleAnime(ANM_CUT_TWIRL, mpHIO->mCut.mCutFinishJumpUppercut.m.mCutAnm.mSpeed, var_f31, + mpHIO->mCut.mCutFinishJumpUppercut.m.mCutAnm.mEndFrame, + mpHIO->mCut.mCutFinishJumpUppercut.m.mCutAnm.mInterpolation); setSwordVoiceSe(Z2SE_AL_V_SOTOMO_ATK); mProcVar5.field_0x3012 = 0; field_0x3478 = current.pos.y; @@ -1284,13 +1284,13 @@ int daAlink_c::procCutFinishJumpUp() { } if (mDemo.getDemoMode() != 0x52 && - current.pos.y < mLastJumpPos.y - daAlinkHIO_cutFnJU_c0::m.mFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mCut.mCutFinishJumpUppercut.m.mFallHeight) { - return procFallInit(2, daAlinkHIO_cutFnJU_c0::m.mFallInterpolation); + return procFallInit(2, mpHIO->mCut.mCutFinishJumpUppercut.m.mFallInterpolation); } - if (frameCtrl->getFrame() >= daAlinkHIO_cutFnJU_c0::m.mAttackStartFrame && - frameCtrl->getFrame() < daAlinkHIO_cutFnJU_c0::m.mAttackEndFrame) + if (frameCtrl->getFrame() >= mpHIO->mCut.mCutFinishJumpUppercut.m.mAttackStartFrame && + frameCtrl->getFrame() < mpHIO->mCut.mCutFinishJumpUppercut.m.mAttackEndFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(field_0x32cc); @@ -1306,7 +1306,7 @@ int daAlink_c::procCutFinishJumpUpLandInit() { commonProcInit(PROC_CUT_FINISH_JUMP_UP_LAND); checkCutLandDamage(); - setSingleAnimeParam(ANM_CUT_TWIRL_LAND, &daAlinkHIO_cutFnJU_c0::m.mLandAnm); + setSingleAnimeParam(ANM_CUT_TWIRL_LAND, &mpHIO->mCut.mCutFinishJumpUppercut.m.mLandAnm); mNormalSpeed = 0.0f; setCutType(CUT_TYPE_TWIRL); @@ -1315,11 +1315,11 @@ int daAlink_c::procCutFinishJumpUpLandInit() { onResetFlg1(RFLG1_UNK_30); if (mComboCutCount == 3) { - field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mComboCheckFrame; - mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mComboStopTime; + field_0x3484 = mpHIO->mCut.mCutFinishJumpUppercut.m.mComboCheckFrame; + mProcVar0.field_0x3008 = mpHIO->mCut.mCutFinishJumpUppercut.m.mComboStopTime; } else { - field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mLandAnm.mCancelFrame; - mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mStopTime; + field_0x3484 = mpHIO->mCut.mCutFinishJumpUppercut.m.mLandAnm.mCancelFrame; + mProcVar0.field_0x3008 = mpHIO->mCut.mCutFinishJumpUppercut.m.mStopTime; } mProcVar5.field_0x3012 = 0; @@ -1384,19 +1384,19 @@ int daAlink_c::procCutReverseInit(daAlink_c::daAlink_ANM i_anmID) { commonProcInit(PROC_CUT_REVERSE); if (i_anmID == ANM_SHIELD_ATTACK_RECOIL) { - setSingleAnimeParam(i_anmID, &daAlinkHIO_guard_c0::m.mRecoilAnm); + setSingleAnimeParam(i_anmID, &mpHIO->mGuard.m.mRecoilAnm); mProcVar2.field_0x300c = 1; - field_0x3478 = daAlinkHIO_guard_c0::m.mRecoilAnm.mCancelFrame; + field_0x3478 = mpHIO->mGuard.m.mRecoilAnm.mCancelFrame; field_0x2f98 = 2; setUpperGuardAnime(-1.0f); } else { - setSingleAnimeParam(i_anmID, &daAlinkHIO_cut_c0::m.mRecoilAnm); + setSingleAnimeParam(i_anmID, &mpHIO->mCut.m.mRecoilAnm); mProcVar2.field_0x300c = 0; - field_0x3478 = daAlinkHIO_cut_c0::m.mRecoilAnm.mCancelFrame; + field_0x3478 = mpHIO->mCut.m.mRecoilAnm.mCancelFrame; field_0x2f98 = 4; } - mNormalSpeed = daAlinkHIO_cut_c0::m.mRecoilSpeed; + mNormalSpeed = mpHIO->mCut.m.mRecoilSpeed; current.angle.y = shape_angle.y - -0x8000; field_0x307e = 0; mProcVar5.field_0x3012 = 0; @@ -1421,7 +1421,7 @@ int daAlink_c::procCutReverse() { } daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_cut_c0::m.mRecoilDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mCut.m.mRecoilDeceleration); if (mProcVar2.field_0x300c == 0) { checkCutTurnCharge(); @@ -1448,20 +1448,20 @@ int daAlink_c::procCutReverse() { int daAlink_c::procCutJumpInit(int i_airCut) { commonProcInit(PROC_CUT_JUMP); - setSingleAnimeParam(ANM_CUT_JUMP, &daAlinkHIO_cutJump_c0::m.mCutAnm); + setSingleAnimeParam(ANM_CUT_JUMP, &mpHIO->mCut.mCutJump.m.mCutAnm); if (i_airCut) { - mNormalSpeed = daAlinkHIO_cutJump_c0::m.mAirJumpSpeedH; - speed.y = daAlinkHIO_cutJump_c0::m.mAirJumpSpeedV; + mNormalSpeed = mpHIO->mCut.mCutJump.m.mAirJumpSpeedH; + speed.y = mpHIO->mCut.mCutJump.m.mAirJumpSpeedV; } else { - mNormalSpeed = daAlinkHIO_cutJump_c0::m.mBaseJumpSpeedH; - speed.y = daAlinkHIO_cutJump_c0::m.mBaseJumpSpeedV; + mNormalSpeed = mpHIO->mCut.mCutJump.m.mBaseJumpSpeedH; + speed.y = mpHIO->mCut.mCutJump.m.mBaseJumpSpeedV; } setCutJumpSpeed(i_airCut); current.angle.y = shape_angle.y; - setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, daAlinkHIO_cut_c0::m.mSwordLength, - daAlinkHIO_cut_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, mpHIO->mCut.m.mSwordLength, + mpHIO->mCut.m.mSwordRadius); setCutType(CUT_TYPE_JUMP); setSwordComboVoice(); dComIfGp_setPlayerStatus0(0, 0x8000); @@ -1486,7 +1486,7 @@ int daAlink_c::procCutJump() { if (mLinkAcch.ChkGroundHit()) { procCutJumpLandInit(field_0x3198); - } else if (mUnderFrameCtrl[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) { + } else if (mUnderFrameCtrl[0].getFrame() >= mpHIO->mCut.mCutJump.m.mStartAttackFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_L); } @@ -1500,18 +1500,18 @@ int daAlink_c::procCutJump() { int daAlink_c::procCutJumpLandInit(int param_0) { commonProcInit(PROC_CUT_JUMP_LAND); checkCutLandDamage(); - setSingleAnimeParam(ANM_CUT_JUMP_LAND, &daAlinkHIO_cutJump_c0::m.mLandAnm); + setSingleAnimeParam(ANM_CUT_JUMP_LAND, &mpHIO->mCut.mCutJump.m.mLandAnm); if (checkNoResetFlg0(FLG0_UNDERWATER)) { - field_0x2060->initOldFrameMorf(5.0f * daAlinkHIO_cutJump_c0::m.mLandAnm.mInterpolation, + field_0x2060->initOldFrameMorf(5.0f * mpHIO->mCut.mCutJump.m.mLandAnm.mInterpolation, 0, 0x23); } if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_L); m_swordBlur.initBlur(0.0f, 0, &mSwordTopPos, &field_0x3498, &field_0x34a4); - setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, daAlinkHIO_cut_c0::m.mSwordLength, - daAlinkHIO_cut_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, mpHIO->mCut.m.mSwordLength, + mpHIO->mCut.m.mSwordRadius); } onResetFlg0(RFLG0_UNK_2); @@ -1547,11 +1547,11 @@ int daAlink_c::procCutJumpLand() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_cutJump_c0::m.mJumpSpinDelay && field_0x3198 != 2) + } else if (frameCtrl->getFrame() > mpHIO->mCut.mCutJump.m.mJumpSpinDelay && field_0x3198 != 2) { procCutTurnInit(1, field_0x3198); } else { - if (frameCtrl->getFrame() > daAlinkHIO_cutJump_c0::m.mLandAnm.mCancelFrame) { + if (frameCtrl->getFrame() > mpHIO->mCut.mCutJump.m.mLandAnm.mCancelFrame) { onModeFlg(4); if (checkNextAction(1)) { @@ -1559,7 +1559,7 @@ int daAlink_c::procCutJumpLand() { } } - if (frameCtrl->getFrame() < daAlinkHIO_cutJump_c0::m.mEndAttackFrame) { + if (frameCtrl->getFrame() < mpHIO->mCut.mCutJump.m.mEndAttackFrame) { onResetFlg0(RFLG0_UNK_2); } } @@ -1567,9 +1567,8 @@ int daAlink_c::procCutJumpLand() { return 1; } -// NONMATCHING - regalloc int daAlink_c::procCutTurnInit(int param_0, int param_1) { - const daAlinkHIO_cutTurn_c1* cutData = &daAlinkHIO_cutTurn_c0::m; + const daAlinkHIO_cutTurn_c1* cutData = &mpHIO->mCut.mCutTurn.m; const daAlinkHIO_anm_c* anm_data; daAlink_ANM anmID; @@ -1622,8 +1621,9 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) { setSingleAnime(anmID, anm_data->mSpeed, var_f31, anm_data->mEndFrame, morf); + int sp08; if (checkCutLargeTurnState()) { - param_1 = 4; + sp08 = 4; field_0x32cc = Z2SE_AL_KAITEN_L_SLASH; setSwordVoiceSe(Z2SE_AL_V_KAITENGIRI_L); field_0x3478 = cutData->mLargeAttackRadius; @@ -1635,7 +1635,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) { setCutType(CUT_TYPE_LARGE_TURN_LEFT); } } else { - param_1 = 3; + sp08 = 3; field_0x32cc = Z2SE_AL_KAITENGIRI; setSwordVoiceSe(Z2SE_AL_V_KAITEN); @@ -1663,7 +1663,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) { mNormalSpeed = 0.0f; mProcVar5.field_0x3012 = 0; setCutWaterDropEffect(); - initCutTurnAt(field_0x347c, param_1); + initCutTurnAt(field_0x347c, sp08); return 1; } @@ -1674,11 +1674,11 @@ int daAlink_c::procCutTurn() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; field_0x2f99 = 4; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); onEndResetFlg0(ERFLG0_UNK_8000000); if (mComboCutCount != 0) { - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; } if (frameCtrl->getFrame() >= 44.0f) { @@ -1700,7 +1700,7 @@ int daAlink_c::procCutTurn() { if (frameCtrl->getFrame() >= field_0x3484 && frameCtrl->getFrame() < field_0x3488) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(field_0x32cc); - mNormalSpeed = daAlinkHIO_cutTurn_c0::m.mSpeed; + mNormalSpeed = mpHIO->mCut.mCutTurn.m.mSpeed; if (checkHeavyStateOn(1, 1)) { mNormalSpeed *= mHeavySpeedMultiplier; @@ -1723,10 +1723,10 @@ int daAlink_c::procCutTurnChargeInit() { } commonProcInit(PROC_CUT_TURN_CHARGE); - setSingleAnimeParam(ANM_CUT_TURN_CHARGE_START, &daAlinkHIO_cutTurn_c0::m.mChargeAnm); + setSingleAnimeParam(ANM_CUT_TURN_CHARGE_START, &mpHIO->mCut.mCutTurn.m.mChargeAnm); mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; - mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration; + mProcVar2.field_0x300c = mpHIO->mCut.m.mNormalSwingDuration; return 1; } @@ -1736,7 +1736,7 @@ int daAlink_c::procCutTurnCharge() { } setSwordChargeVoiceSe(); - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; if (!swordButton() && mDemo.getDemoMode() != 0x5B) { if (mProcVar2.field_0x300c != 0) { @@ -1771,9 +1771,9 @@ int daAlink_c::procCutTurnMoveInit(int param_0) { } setSingleAnimeBaseSpeed(ANM_CUT_TURN_CHARGE, 0.0f, - daAlinkHIO_cutTurn_c0::m.mMoveFBInterpolation); + mpHIO->mCut.mCutTurn.m.mMoveFBInterpolation); field_0x2f98 = 0; - field_0x594 = daAlinkHIO_cutTurn_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mCut.mCutTurn.m.mMaxSpeed; if (!checkWoodSwordEquip()) { simpleAnmPlay(m_nSwordBtk); @@ -1817,7 +1817,7 @@ int daAlink_c::procCutTurnMove() { setDoStatus(0x86); } } else { - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; } if (mDemo.getDemoMode() == 0x5B || mDemo.getDemoMode() == 0x5C) { @@ -1838,7 +1838,7 @@ int daAlink_c::procCutTurnMove() { if (field_0x2f98 == 0 || field_0x2f98 == 1) { if (direction == DIR_LEFT || direction == DIR_RIGHT) { anm = ANM_CUT_TURN_CHARGE_MOVE; - var_f31 = daAlinkHIO_cutTurn_c0::m.mMoveLRInterpolation; + var_f31 = mpHIO->mCut.mCutTurn.m.mMoveLRInterpolation; mNormalSpeed *= 0.5f; } else if (field_0x2f98 != direction) { mNormalSpeed *= -0.5f; @@ -1846,7 +1846,7 @@ int daAlink_c::procCutTurnMove() { } } else if (direction == DIR_FORWARD || direction == DIR_BACKWARD) { anm = ANM_CUT_TURN_CHARGE; - var_f31 = daAlinkHIO_cutTurn_c0::m.mMoveFBInterpolation; + var_f31 = mpHIO->mCut.mCutTurn.m.mMoveFBInterpolation; mNormalSpeed *= 0.5f; } else if (field_0x2f98 != direction) { mNormalSpeed *= -0.5f; @@ -1854,7 +1854,7 @@ int daAlink_c::procCutTurnMove() { } if (field_0x2f98 == direction) { - var_f30 = daAlinkHIO_cutTurn_c0::m.mChargeMoveAccel * field_0x33ac; + var_f30 = mpHIO->mCut.mCutTurn.m.mChargeMoveAccel * field_0x33ac; } else { field_0x2f98 = direction; } @@ -1864,17 +1864,17 @@ int daAlink_c::procCutTurnMove() { } } - setNormalSpeedF(var_f30, daAlinkHIO_cutTurn_c0::m.mChargeMoveDecel); + setNormalSpeedF(var_f30, mpHIO->mCut.mCutTurn.m.mChargeMoveDecel); f32 var_f31_2; if (field_0x2f98 == DIR_FORWARD) { - var_f31_2 = daAlinkHIO_cutTurn_c0::m.mMoveFBAnmSpeed; + var_f31_2 = mpHIO->mCut.mCutTurn.m.mMoveFBAnmSpeed; } else if (field_0x2f98 == DIR_BACKWARD) { - var_f31_2 = -daAlinkHIO_cutTurn_c0::m.mMoveFBAnmSpeed; + var_f31_2 = -mpHIO->mCut.mCutTurn.m.mMoveFBAnmSpeed; } else if (field_0x2f98 == DIR_RIGHT) { - var_f31_2 = -daAlinkHIO_cutTurn_c0::m.mMoveLRAnmSpeed; + var_f31_2 = -mpHIO->mCut.mCutTurn.m.mMoveLRAnmSpeed; } else { - var_f31_2 = daAlinkHIO_cutTurn_c0::m.mMoveLRAnmSpeed; + var_f31_2 = mpHIO->mCut.mCutTurn.m.mMoveLRAnmSpeed; } daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; @@ -1943,7 +1943,7 @@ int daAlink_c::procCutDownInit() { speed.y = 0.0f; offModeFlg(2); } else { - setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_JUMP, &daAlinkHIO_cutDown_c0::m.mJumpAnm); + setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_JUMP, &mpHIO->mCut.mCutDown.m.mJumpAnm); sp2C.y += 50.0f; if (fopAcM_gc_c::gndCheck(&sp2C)) { @@ -1963,11 +1963,11 @@ int daAlink_c::procCutDownInit() { var_f31 = 800.0f; } - speed.y = daAlinkHIO_cutDown_c0::m.mRecoverSpeedH; + speed.y = mpHIO->mCut.mCutDown.m.mRecoverSpeedH; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; - speed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + mNormalSpeed *= mpHIO->mItem.mIronBoots.m.mWaterVelocityX; + speed.y *= mpHIO->mItem.mIronBoots.m.mWaterVelocityY; } else if (checkHeavyStateOn(1, 1)) { speed.y *= 1.5f; } @@ -2001,7 +2001,7 @@ int daAlink_c::procCutDown() { procCutDownLandInit((fopEn_enemy_c*)field_0x280c.getActor()); } else if (mUnderFrameCtrl[0].checkAnmEnd() && mProcVar2.field_0x300c == 0) { mProcVar2.field_0x300c = 1; - setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_FALL, &daAlinkHIO_cutDown_c0::m.mFallAnm); + setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_FALL, &mpHIO->mCut.mCutDown.m.mFallAnm); } return 1; @@ -2010,7 +2010,7 @@ int daAlink_c::procCutDown() { int daAlink_c::procCutDownLandInit(fopEn_enemy_c* i_enemy) { commonProcInit(PROC_CUT_DOWN_LAND); checkCutLandDamage(); - setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_STAB, &daAlinkHIO_cutDown_c0::m.mLandAnm); + setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_STAB, &mpHIO->mCut.mCutDown.m.mLandAnm); u32 var_r30; if (mDemo.getDemoMode() == 0x51 || (i_enemy != NULL && i_enemy->checkDownFlg() && @@ -2026,12 +2026,12 @@ int daAlink_c::procCutDownLandInit(fopEn_enemy_c* i_enemy) { } var_r30 = 0x20; - mProcVar0.field_0x3008 = daAlinkHIO_cutDown_c0::m.mSuccessStopTime; + mProcVar0.field_0x3008 = mpHIO->mCut.mCutDown.m.mSuccessStopTime; dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); } else { var_r30 = mPolySound; mProcVar3.field_0x300e = 0; - mProcVar0.field_0x3008 = daAlinkHIO_cutDown_c0::m.mFailStopTime; + mProcVar0.field_0x3008 = mpHIO->mCut.mCutDown.m.mFailStopTime; } mZ2Link.startCollisionSE(Z2SE_HIT_SWORD_STAB, var_r30); @@ -2076,7 +2076,7 @@ int daAlink_c::procCutDownLand() { } } else { setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_MISS, - &daAlinkHIO_cutDown_c0::m.mMissAnm); + &mpHIO->mCut.mCutDown.m.mMissAnm); mProcVar2.field_0x300c = 1; } } else { @@ -2093,7 +2093,7 @@ int daAlink_c::procCutDownLand() { seStartSwordCut(Z2SE_SWORD_STICK_PULLOUT); } - if (frameCtrl_p->getFrame() > daAlinkHIO_cutDown_c0::m.mMissAnm.mCancelFrame) { + if (frameCtrl_p->getFrame() > mpHIO->mCut.mCutDown.m.mMissAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -2113,8 +2113,8 @@ int daAlink_c::procCutHeadInit() { commonProcInit(PROC_CUT_HEAD); resetCombo(1); - setSingleAnimeParam(ANM_CUT_HEAD_JUMP, &daAlinkHIO_cutHead_c0::m.mJumpAnm); - setSpecialGravity(daAlinkHIO_cutHead_c0::m.mGravity, maxFallSpeed, 0); + setSingleAnimeParam(ANM_CUT_HEAD_JUMP, &mpHIO->mCut.mCutHead.m.mJumpAnm); + setSpecialGravity(mpHIO->mCut.mCutHead.m.mGravity, maxFallSpeed, 0); cXyz sp2C; if (enemy_p != NULL) { @@ -2125,13 +2125,13 @@ int daAlink_c::procCutHeadInit() { field_0x280c.clearData(); } - f32 fvar9 = cLib_minMaxLimit(sp2C.y, 30.0f, daAlinkHIO_cutHead_c0::m.mMaxHeight); + f32 fvar9 = cLib_minMaxLimit(sp2C.y, 30.0f, mpHIO->mCut.mCutHead.m.mMaxHeight); f32 fvar10 = JMAFastSqrt((fvar9 * -2.0f) / gravity); speed.y = fvar10 * -gravity; f32 fvar5 = sp2C.absXZ(); - if (fvar5 > daAlinkHIO_cutHead_c0::m.mMaxDistance) { - fvar5 = daAlinkHIO_cutHead_c0::m.mMaxDistance; + if (fvar5 > mpHIO->mCut.mCutHead.m.mMaxDistance) { + fvar5 = mpHIO->mCut.mCutHead.m.mMaxDistance; } field_0x3478 = (fvar5 * 2.0f) / (fvar10 * 3.0f * fvar10); @@ -2142,8 +2142,8 @@ int daAlink_c::procCutHeadInit() { shape_angle.y = current.angle.y; setSwordVoiceSe(Z2SE_AL_V_KABUTO_JUMP); - setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, daAlinkHIO_cutHead_c0::m.mSwordLength, - daAlinkHIO_cutHead_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 3, mpHIO->mCut.mCutHead.m.mSwordLength, + mpHIO->mCut.mCutHead.m.mSwordRadius); setCutType(5); return 1; @@ -2154,7 +2154,7 @@ int daAlink_c::procCutHead() { cLib_chaseF(&mNormalSpeed, 0.0f, field_0x3478); if (speed.y <= 0.0f) { - setSingleAnimeParam(ANM_CUT_HEAD, &daAlinkHIO_cutHead_c0::m.mCutAnm); + setSingleAnimeParam(ANM_CUT_HEAD, &mpHIO->mCut.mCutHead.m.mCutAnm); f32 tmp_0 = 0.0f; mNormalSpeed = tmp_0; speed.y = tmp_0; @@ -2168,13 +2168,13 @@ int daAlink_c::procCutHead() { mNormalSpeed *= 0.99f; if (frameCtrl->checkPass(7.0f)) { - speed.y = daAlinkHIO_cutHead_c0::m.mAddSpeedV; - mNormalSpeed = daAlinkHIO_cutHead_c0::m.mAddSpeedH; + speed.y = mpHIO->mCut.mCutHead.m.mAddSpeedV; + mNormalSpeed = mpHIO->mCut.mCutHead.m.mAddSpeedH; initGravity(); } - if (frameCtrl->getFrame() >= daAlinkHIO_cutHead_c0::m.mAttackStartFrame && - frameCtrl->getFrame() < daAlinkHIO_cutHead_c0::m.mAttackEndFrame) + if (frameCtrl->getFrame() >= mpHIO->mCut.mCutHead.m.mAttackStartFrame && + frameCtrl->getFrame() < mpHIO->mCut.mCutHead.m.mAttackEndFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_L); @@ -2194,7 +2194,7 @@ int daAlink_c::procCutHead() { int daAlink_c::procCutHeadLandInit() { commonProcInit(PROC_CUT_HEAD_LAND); checkCutLandDamage(); - setSingleAnimeParam(ANM_CUT_HEAD_LAND, &daAlinkHIO_cutHead_c0::m.mLandAnm); + setSingleAnimeParam(ANM_CUT_HEAD_LAND, &mpHIO->mCut.mCutHead.m.mLandAnm); mNormalSpeed = 0.0f; return 1; } @@ -2209,7 +2209,7 @@ int daAlink_c::procCutHeadLand() { } else { checkNextAction(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_cutHead_c0::m.mLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mCut.mCutHead.m.mLandAnm.mCancelFrame) { checkNextAction(1); } @@ -2218,10 +2218,10 @@ int daAlink_c::procCutHeadLand() { int daAlink_c::procCutLargeJumpChargeInit() { commonProcInit(PROC_CUT_LARGE_JUMP_CHARGE); - setSingleAnimeParam(ANM_CUT_JUMP_LARGE_CHARGE, &daAlinkHIO_cutLargeJump_c0::m.mChargeAnm); + setSingleAnimeParam(ANM_CUT_JUMP_LARGE_CHARGE, &mpHIO->mCut.mCutLargeJump.m.mChargeAnm); mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; - mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration; + mProcVar2.field_0x300c = mpHIO->mCut.m.mNormalSwingDuration; return 1; } @@ -2257,14 +2257,14 @@ int daAlink_c::procCutLargeJumpInit() { } commonProcInit(PROC_CUT_LARGE_JUMP); - setSingleAnimeParam(ANM_CUT_JUMP_LARGE_START, &daAlinkHIO_cutLargeJump_c0::m.mChargeMoveAnm); + setSingleAnimeParam(ANM_CUT_JUMP_LARGE_START, &mpHIO->mCut.mCutLargeJump.m.mChargeMoveAnm); field_0x3588 = l_halfAtnWaitBaseAnime; mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; mProcVar2.field_0x300c = 0; - setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, daAlinkHIO_cut_c0::m.mSwordLength, - daAlinkHIO_cut_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, mpHIO->mCut.m.mSwordLength, + mpHIO->mCut.m.mSwordRadius); setCutType(CUT_TYPE_LARGE_JUMP_INIT); setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_1); setCutWaterDropEffect(); @@ -2288,7 +2288,7 @@ int daAlink_c::procCutLargeJump() { if (mProcVar2.field_0x300c == 0) { if (frameCtrl->checkAnmEnd()) { field_0x2f99 = 12; - setSingleAnimeParam(ANM_CUT_JUMP_LARGE, &daAlinkHIO_cutLargeJump_c0::m.mCutAnm); + setSingleAnimeParam(ANM_CUT_JUMP_LARGE, &mpHIO->mCut.mCutLargeJump.m.mCutAnm); mProcVar2.field_0x300c = 1; setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_2); } else { @@ -2298,13 +2298,13 @@ int daAlink_c::procCutLargeJump() { if (!checkModeFlg(2) && frameCtrl->getFrame() >= 5.0f) { setJumpMode(); - mNormalSpeed = daAlinkHIO_cutLargeJump_c0::m.mCutSpeedH; - speed.y = daAlinkHIO_cutLargeJump_c0::m.mCutSpeedV; + mNormalSpeed = mpHIO->mCut.mCutLargeJump.m.mCutSpeedH; + speed.y = mpHIO->mCut.mCutLargeJump.m.mCutSpeedV; setCutJumpSpeed(0); } - if (frameCtrl->getFrame() >= daAlinkHIO_cutLargeJump_c0::m.mJumpAttackStartFrame && - frameCtrl->getFrame() < daAlinkHIO_cutLargeJump_c0::m.mJumpAttackEndFrame) + if (frameCtrl->getFrame() >= mpHIO->mCut.mCutLargeJump.m.mJumpAttackStartFrame && + frameCtrl->getFrame() < mpHIO->mCut.mCutLargeJump.m.mJumpAttackEndFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_S); @@ -2317,15 +2317,15 @@ int daAlink_c::procCutLargeJump() { mProcVar3.field_0x300e--; if (mProcVar3.field_0x300e == 0) { - setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 4, daAlinkHIO_cut_c0::m.mSwordLength, - daAlinkHIO_cut_c0::m.mSwordRadius); + setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 4, mpHIO->mCut.m.mSwordLength, + mpHIO->mCut.m.mSwordRadius); setCutType(CUT_TYPE_LARGE_JUMP); } } if (mLinkAcch.ChkGroundHit()) { procCutLargeJumpLandInit(field_0x3198); - } else if (frameCtrl->getFrame() >= daAlinkHIO_cutLargeJump_c0::m.mCutInitFrame) { + } else if (frameCtrl->getFrame() >= mpHIO->mCut.mCutLargeJump.m.mCutInitFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_S); } @@ -2340,7 +2340,7 @@ int daAlink_c::procCutLargeJump() { int daAlink_c::procCutLargeJumpLandInit(int param_0) { commonProcInit(PROC_CUT_LARGE_JUMP_LAND); checkCutLandDamage(); - setSingleAnimeParam(ANM_CUT_JUMP_LARGE_LAND, &daAlinkHIO_cutLargeJump_c0::m.mLandAnm); + setSingleAnimeParam(ANM_CUT_JUMP_LARGE_LAND, &mpHIO->mCut.mCutLargeJump.m.mLandAnm); mNormalSpeed = 0.0f; field_0x2f99 = 12; field_0x3588 = l_halfAtnWaitBaseAnime; @@ -2349,7 +2349,7 @@ int daAlink_c::procCutLargeJumpLandInit(int param_0) { onResetFlg1(RFLG1_UNK_30); onResetFlg0(RFLG0_UNK_2); setCutType(CUT_TYPE_LARGE_JUMP); - field_0x3478 = daAlinkHIO_cutLargeJump_c0::m.mLandAttackRadius; + field_0x3478 = mpHIO->mCut.mCutLargeJump.m.mLandAttackRadius; field_0x347c = 130.0f; mProcVar2.field_0x300c = 0; field_0x3198 = param_0; @@ -2377,16 +2377,16 @@ int daAlink_c::procCutLargeJumpLand() { } else { checkNextAction(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_cutLargeJump_c0::m.mSpinSlashCheckFrame && + } else if (frameCtrl->getFrame() > mpHIO->mCut.mCutLargeJump.m.mSpinSlashCheckFrame && field_0x3198 != 2) { procCutTurnInit(1, field_0x3198); - } else if (frameCtrl->getFrame() > daAlinkHIO_cutLargeJump_c0::m.mLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mCut.mCutLargeJump.m.mLandAnm.mCancelFrame) { checkNextAction(1); - } else if (frameCtrl->getFrame() < daAlinkHIO_cutLargeJump_c0::m.mLandAttackEndFrame) { + } else if (frameCtrl->getFrame() < mpHIO->mCut.mCutLargeJump.m.mLandAttackEndFrame) { onResetFlg0(RFLG0_UNK_2); - if (frameCtrl->getFrame() >= daAlinkHIO_cutLargeJump_c0::m.mLandAttackInitFrame) { + if (frameCtrl->getFrame() >= mpHIO->mCut.mCutLargeJump.m.mLandAttackInitFrame) { if (mProcVar2.field_0x300c == 0) { resetAtCollision(0); mProcVar2.field_0x300c = 1; @@ -2407,7 +2407,7 @@ int daAlink_c::procSwordUnequipSpInit() { return 0; } - setSingleAnimeBaseSpeed(ANM_FINISH, daAlinkHIO_cut_c0::m.mFlourishAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_FINISH, mpHIO->mCut.m.mFlourishAnmSpeed, 3.0f); mNormalSpeed = 0.0f; field_0x3588 = l_halfAtnWaitBaseAnime; field_0x3198 = 0; @@ -2452,11 +2452,11 @@ int daAlink_c::procSwordUnequipSp() { } } else { field_0x3198 = 1; - setSingleAnimeBaseSpeed(ANM_FINISH_END, daAlinkHIO_cut_c0::m.mFlourishEndAnmSpeed, + setSingleAnimeBaseSpeed(ANM_FINISH_END, mpHIO->mCut.m.mFlourishEndAnmSpeed, 3.0f); } } else if (field_0x3198 != 0) { - if (!(frameCtrl->getFrame() > daAlinkHIO_cut_c0::m.mFlourishControlStartFrame) || + if (!(frameCtrl->getFrame() > mpHIO->mCut.m.mFlourishControlStartFrame) || !checkNextAction(1)) { if (frameCtrl->getFrame() >= 39.0f) { @@ -2472,7 +2472,7 @@ int daAlink_c::procSwordUnequipSp() { frameCtrl->setRate(0.0f); dComIfGp_evmng_cutEnd(mAlinkStaffId); } else if (frameCtrl->getRate() < 0.0099999998f) { - setWaterInAnmRate(frameCtrl, daAlinkHIO_cut_c0::m.mFlourishEndAnmSpeed); + setWaterInAnmRate(frameCtrl, mpHIO->mCut.m.mFlourishEndAnmSpeed); } } deleteEquipItem(0, 1); diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc index 553fd37d9c..d7e0018f58 100644 --- a/src/d/actor/d_a_alink_damage.inc +++ b/src/d/actor/d_a_alink_damage.inc @@ -10,15 +10,15 @@ #include "d/d_msg_object.h" s16 daAlink_c::getFreezeR() const { - return daAlinkHIO_damage_c0::m.mFreezeR; + return mpHIO->mDamage.m.mFreezeR; } s16 daAlink_c::getFreezeG() const { - return daAlinkHIO_damage_c0::m.mFreezeG; + return mpHIO->mDamage.m.mFreezeG; } s16 daAlink_c::getFreezeB() const { - return daAlinkHIO_damage_c0::m.mFreezeB; + return mpHIO->mDamage.m.mFreezeB; } bool daAlink_c::checkMiddleBossGoronRoom() { @@ -81,9 +81,9 @@ void daAlink_c::checkCutLandDamage() { if (!checkEventRun()) { f32 var_f31 = (mFallHeight - current.pos.y) * 0.0099999998f; - if (var_f31 >= daAlinkHIO_damFall_c0::m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon()) + if (var_f31 >= mpHIO->mDamage.mDamFall.m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon()) { - if (var_f31 >= daAlinkHIO_damFall_c0::m.mBigDmgHeight) { + if (var_f31 >= mpHIO->mDamage.mDamFall.m.mBigDmgHeight) { setLandDamagePoint(8); } else { setLandDamagePoint(4); @@ -187,7 +187,7 @@ int daAlink_c::setDamagePoint(int i_dmgAmount, int i_checkZoraMag, int i_setDmgT mSwordUpTimer = 0; if (i_setDmgTimer) { - mDamageTimer = daAlinkHIO_damage_c0::m.mInvincibleTime; + mDamageTimer = mpHIO->mDamage.m.mInvincibleTime; setDamageColorTime(); } @@ -238,7 +238,7 @@ cXyz* daAlink_c::getDamageVec(dCcD_GObjInf* i_hitObj) { } void daAlink_c::setDashDamage() { - setUpperAnimeParam(0xAD, UPPER_2, &daAlinkHIO_damage_c0::m.mDashDmgAnm); + setUpperAnimeParam(0xAD, UPPER_2, &mpHIO->mDamage.m.mDashDmgAnm); setFacePriBck(0x121); setFacePriTexture(FTANM_UNK_27); voiceStart(Z2SE_AL_V_DAMAGE_S); @@ -282,7 +282,7 @@ int daAlink_c::checkPolyDamage() { } } - if (!checkBoardRide() && ((checkWaterPolygonUnder() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_wtr) && ((dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x60) || field_0x2fbc == 6)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -G_CM3D_F_INF != field_0x33b8 && ((field_0x2fc6 & 0x60) || field_0x2fc5 == 6) && (field_0x2fc5 != 6 || !(field_0x33b8 > field_0x33d8 + daAlinkHIO_basic_c0::m.mLavaDeathDepth))))) { + if (!checkBoardRide() && ((checkWaterPolygonUnder() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_wtr) && ((dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x60) || field_0x2fbc == 6)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -G_CM3D_F_INF != field_0x33b8 && ((field_0x2fc6 & 0x60) || field_0x2fc5 == 6) && (field_0x2fc5 != 6 || !(field_0x33b8 > field_0x33d8 + mpHIO->mBasic.m.mLavaDeathDepth))))) { return 2; } @@ -366,7 +366,7 @@ BOOL daAlink_c::checkDamageAction() { if (checkAnmEnd(&mUpperFrameCtrl[2])) { if (checkDashDamageAnime()) { - resetUpperAnime(UPPER_2, daAlinkHIO_damage_c0::m.mDashDmgAnm.mInterpolation); + resetUpperAnime(UPPER_2, mpHIO->mDamage.m.mDashDmgAnm.mInterpolation); } else if (checkWolfHeadDamageAnime()) { resetUpperAnime(UPPER_2, 3.0f); } else if (checkSmallUpperGuardAnime()) { @@ -417,7 +417,7 @@ BOOL daAlink_c::checkDamageAction() { if ((!checkModeFlg(0x70C52)) && (!checkWolf()) && (!checkDkCaught2Anime())) { setUpperAnimeBase(getMainBckData(ANM_HORSE_WAIT_D_B)->m_underID); setFacePriAnime(ANM_HORSE_WAIT_D_B); - field_0x30f6 = daAlinkHIO_damCaught_c0::m.mGrabDuration; + field_0x30f6 = mpHIO->mDamage.mDamCaught.m.mGrabDuration; field_0x2f96 = 1; field_0x2f97 = 6; onNoResetFlg1(FLG1_UNK_100000); @@ -484,7 +484,7 @@ BOOL daAlink_c::checkDamageAction() { if (sp2C & 0x80) { mIceDamageWaitTimer++; - if (mIceDamageWaitTimer < daAlinkHIO_damage_c0::m.mFreezeTime) { + if (mIceDamageWaitTimer < mpHIO->mDamage.m.mFreezeTime) { sp2C = 0; } } else if (mIceDamageWaitTimer > 3) { @@ -498,7 +498,7 @@ BOOL daAlink_c::checkDamageAction() { setDamagePoint(1, sp2C & 0x80, TRUE, 0); if (checkWolf()) { - mDamageTimer = daAlinkHIO_damage_c0::m.mWolfFloorInvincibleTime; + mDamageTimer = mpHIO->mDamage.m.mWolfFloorInvincibleTime; setDamageColorTime(); } @@ -705,7 +705,7 @@ BOOL daAlink_c::checkDamageAction() { if (checkModeFlg(0x10000) && !checkLargeAttack(at_spl)) { voiceStart(Z2SE_AL_V_DAMAGE_S); seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL); - procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); onModeFlg(8); return 1; } @@ -797,15 +797,15 @@ int daAlink_c::procDamageInit(dCcD_GObjInf* param_0, int param_1) { var_r29->y, var_r29->z * var_f29 + var_r29->x * var_f30); - mProcVar2.field_0x300c = cLib_minMaxLimit(cM_atan2s(sp88.z, sp88.y), -daAlinkHIO_damNormal_c0::m.mFrontBackBodyMaxAngle, daAlinkHIO_damNormal_c0::m.mFrontBackBodyMaxAngle); - mProcVar3.field_0x300e = cLib_minMaxLimit(cM_atan2s(sp88.x, -JMAFastSqrt(sp88.y * sp88.y + sp88.z * sp88.z)), -daAlinkHIO_damNormal_c0::m.mLeftRightBodyMaxAngle, daAlinkHIO_damNormal_c0::m.mLeftRightBodyMaxAngle); + mProcVar2.field_0x300c = cLib_minMaxLimit(cM_atan2s(sp88.z, sp88.y), -mpHIO->mDamage.mDamNormal.m.mFrontBackBodyMaxAngle, mpHIO->mDamage.mDamNormal.m.mFrontBackBodyMaxAngle); + mProcVar3.field_0x300e = cLib_minMaxLimit(cM_atan2s(sp88.x, -JMAFastSqrt(sp88.y * sp88.y + sp88.z * sp88.z)), -mpHIO->mDamage.mDamNormal.m.mLeftRightBodyMaxAngle, mpHIO->mDamage.mDamNormal.m.mLeftRightBodyMaxAngle); if (freeze_player) { var_f31 = 0.0f; } else if (mTargetedActor != NULL) { - var_f31 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; + var_f31 = mpHIO->mAtnMove.m.mWaitAnmSpeed; } else { - var_f31 = daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed; + var_f31 = mpHIO->mNoActAtnMove.m.mWaitAnmSpeed; } if (checkAtnLeftAnime()) { @@ -816,32 +816,32 @@ int daAlink_c::procDamageInit(dCcD_GObjInf* param_0, int param_1) { int direction = getDirectionFromAngle(cM_atan2s(-sp88.x, -sp88.z)); if (direction == DIR_FORWARD) { - setSingleAnimeParam(ANM_DMG_SMALL_A, &daAlinkHIO_damNormal_c0::m.mFrontAnm); - field_0x3478 = daAlinkHIO_damNormal_c0::m.mFrontAnm.mCancelFrame; + setSingleAnimeParam(ANM_DMG_SMALL_A, &mpHIO->mDamage.mDamNormal.m.mFrontAnm); + field_0x3478 = mpHIO->mDamage.mDamNormal.m.mFrontAnm.mCancelFrame; } else if (direction == DIR_BACKWARD) { - setSingleAnimeParam(ANM_DMG_SMALL_B, &daAlinkHIO_damNormal_c0::m.mRearAnm); - field_0x3478 = daAlinkHIO_damNormal_c0::m.mRearAnm.mCancelFrame; + setSingleAnimeParam(ANM_DMG_SMALL_B, &mpHIO->mDamage.mDamNormal.m.mRearAnm); + field_0x3478 = mpHIO->mDamage.mDamNormal.m.mRearAnm.mCancelFrame; } else if (direction == DIR_LEFT) { - setSingleAnimeParam(ANM_DMG_SMALL_LEFT, &daAlinkHIO_damNormal_c0::m.mLeftAnm); - field_0x3478 = daAlinkHIO_damNormal_c0::m.mLeftAnm.mCancelFrame; + setSingleAnimeParam(ANM_DMG_SMALL_LEFT, &mpHIO->mDamage.mDamNormal.m.mLeftAnm); + field_0x3478 = mpHIO->mDamage.mDamNormal.m.mLeftAnm.mCancelFrame; } else { - setSingleAnimeParam(ANM_DMG_SMALL_RIGHT, &daAlinkHIO_damNormal_c0::m.mRightAnm); - field_0x3478 = daAlinkHIO_damNormal_c0::m.mRightAnm.mCancelFrame; + setSingleAnimeParam(ANM_DMG_SMALL_RIGHT, &mpHIO->mDamage.mDamNormal.m.mRightAnm); + field_0x3478 = mpHIO->mDamage.mDamNormal.m.mRightAnm.mCancelFrame; } current.angle.y = var_r29->atan2sX_Z(); mProcVar4.field_0x3010 = current.angle.y; - mNormalSpeed = var_r29->absXZ() * daAlinkHIO_damNormal_c0::m.mAttackSpeedRate + daAlinkHIO_damNormal_c0::m.mInitialSpeed; - if (mNormalSpeed > daAlinkHIO_move_c0::m.mMaxSpeed) { - mNormalSpeed = daAlinkHIO_move_c0::m.mMaxSpeed; + mNormalSpeed = var_r29->absXZ() * mpHIO->mDamage.mDamNormal.m.mAttackSpeedRate + mpHIO->mDamage.mDamNormal.m.mInitialSpeed; + if (mNormalSpeed > mpHIO->mMove.m.mMaxSpeed) { + mNormalSpeed = mpHIO->mMove.m.mMaxSpeed; } daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl; field_0x347c = M_PI / (frame_ctrl->getEnd() - frame_ctrl->getStart()); if (freeze_player) { - frame_ctrl->setRate(daAlinkHIO_damNormal_c0::m.mIceDamageASpeed); + frame_ctrl->setRate(mpHIO->mDamage.mDamNormal.m.mIceDamageASpeed); frame_ctrl->setEnd(7); mNormalSpeed = 0.0f; mProcVar0.mIceFreezeTimer = 90; @@ -863,7 +863,7 @@ int daAlink_c::procDamage() { mBodyAngle.z = -mProcVar3.field_0x300e * var_f31; mBodyAngle.y = 0; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_damNormal_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mDamage.mDamNormal.m.mDeceleration); if (checkFreezeDamage()) { freezeTimerDamage(); @@ -1028,9 +1028,9 @@ int daAlink_c::procCoLargeDamageInit(int param_0, int param_1, s16 param_2, s16 const daAlinkHIO_damLaHu_c1* var_r28; if (checkWolf()) { if (param_1 != 0) { - var_r29 = &daAlinkHIO_wlDamLarge_c0::m; + var_r29 = &mpHIO->mWolf.mWlDamage.mLarge.m; } else { - var_r29 = &daAlinkHIO_wlDamHuge_c0::m; + var_r29 = &mpHIO->mWolf.mWlDamage.mHuge.m; } setSpecialGravity(var_r29->mGravity, maxFallSpeed, 0); @@ -1176,7 +1176,7 @@ int daAlink_c::procCoLargeDamage() { mProcVar5.field_0x3012--; } else { voiceStart(Z2SE_AL_V_FALL); - setSingleAnimeBaseMorf(ANM_FALL, daAlinkHIO_damage_c0::m.mInvertedFallInterpolation); + setSingleAnimeBaseMorf(ANM_FALL, mpHIO->mDamage.m.mInvertedFallInterpolation); setOldRootQuaternion(field_0x3080, 0, field_0x3082); field_0x3080 = 0; field_0x3082 = 0; @@ -1257,7 +1257,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 if (param_0 == -2) { var_f30 = 0.0f; } else { - var_f30 = daAlinkHIO_damLarge_c0::m.mBackGetUpAnm.mInterpolation; + var_f30 = mpHIO->mDamage.mDamLarge.m.mBackGetUpAnm.mInterpolation; } field_0x3484 = 9.0f; @@ -1274,7 +1274,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 var_f31 = 0.0f; } else { mProcVar0.field_0x3008 = -1; - var_f31 = daAlinkHIO_damage_c0::m.mRecoverStandAnmSpeed; + var_f31 = mpHIO->mDamage.m.mRecoverStandAnmSpeed; } mProcVar1.field_0x300a = 1; @@ -1343,7 +1343,7 @@ int daAlink_c::procLargeDamageUp() { return 1; } - setSingleAnime(ANM_DMG_LARGE_LAND, daAlinkHIO_damLarge_c0::m.mBackGetUpAnm.mSpeed, 9.0f, -1, daAlinkHIO_damLarge_c0::m.mBackGetUpAnm.mInterpolation); + setSingleAnime(ANM_DMG_LARGE_LAND, mpHIO->mDamage.mDamLarge.m.mBackGetUpAnm.mSpeed, 9.0f, -1, mpHIO->mDamage.mDamLarge.m.mBackGetUpAnm.mInterpolation); field_0x3198 = -3; field_0x347c = 2.0f / (field_0x3478 - 9.0f); } @@ -1353,7 +1353,7 @@ int daAlink_c::procLargeDamageUp() { if (mProcVar0.field_0x3008 == 0) { mProcVar0.field_0x3008 = -1; - setWaterInAnmRate(temp_r30, daAlinkHIO_damage_c0::m.mRecoverStandAnmSpeed); + setWaterInAnmRate(temp_r30, mpHIO->mDamage.m.mRecoverStandAnmSpeed); temp_r30->offEndFlg(); } } else { @@ -1498,12 +1498,12 @@ int daAlink_c::procCoPolyDamageInit() { commonProcInit(PROC_POLY_DAMAGE); if (checkWolf()) { - setSingleAnimeWolfParam(WANM_DMG_SMALL, &daAlinkHIO_wlDamage_c0::m.mPolygonAnm); + setSingleAnimeWolfParam(WANM_DMG_SMALL, &mpHIO->mWolf.mWlDamage.m.mPolygonAnm); voiceStart(Z2SE_WL_V_DAMAGE); - field_0x3478 = daAlinkHIO_wlDamage_c0::m.mPolygonAnm.mCancelFrame; + field_0x3478 = mpHIO->mWolf.mWlDamage.m.mPolygonAnm.mCancelFrame; } else { - setSingleAnimeParam(ANM_DMG, &daAlinkHIO_damage_c0::m.mFloorDmgAnm); - field_0x3478 = daAlinkHIO_damage_c0::m.mFloorDmgAnm.mCancelFrame; + setSingleAnimeParam(ANM_DMG, &mpHIO->mDamage.m.mFloorDmgAnm); + field_0x3478 = mpHIO->mDamage.m.mFloorDmgAnm.mCancelFrame; } mNormalSpeed = 0.0f; @@ -1527,8 +1527,8 @@ int daAlink_c::procCoPolyDamage() { int daAlink_c::procLandDamageInit(int param_0) { f32 var_f31; if (param_0 == 0) { - var_f31 = daAlinkHIO_damFall_c0::m.mSmallDmgLandStartFrame; - mProcVar0.field_0x3008 = daAlinkHIO_autoJump_c0::m.mSpinJumpLandStopTime; + var_f31 = mpHIO->mDamage.mDamFall.m.mSmallDmgLandStartFrame; + mProcVar0.field_0x3008 = mpHIO->mAutoJump.m.mSpinJumpLandStopTime; if (mProcID == PROC_MAGNE_BOOTS_FLY) { dComIfGp_getVibration().StartShock(6, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); @@ -1540,16 +1540,16 @@ int daAlink_c::procLandDamageInit(int param_0) { setLandDamagePoint(4); } - var_f31 = daAlinkHIO_damFall_c0::m.mSmallDmgLandStartFrame; - mProcVar0.field_0x3008 = daAlinkHIO_damFall_c0::m.mSmallStopTime; + var_f31 = mpHIO->mDamage.mDamFall.m.mSmallDmgLandStartFrame; + mProcVar0.field_0x3008 = mpHIO->mDamage.mDamFall.m.mSmallStopTime; dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); } else { if (!checkEventRun()) { setLandDamagePoint(8); } - var_f31 = daAlinkHIO_damFall_c0::m.mLandAnm.mStartFrame; - mProcVar0.field_0x3008 = daAlinkHIO_damFall_c0::m.mBigStopTime; + var_f31 = mpHIO->mDamage.mDamFall.m.mLandAnm.mStartFrame; + mProcVar0.field_0x3008 = mpHIO->mDamage.mDamFall.m.mBigStopTime; dComIfGp_getVibration().StartShock(5, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); } @@ -1563,7 +1563,7 @@ int daAlink_c::procLandDamageInit(int param_0) { voiceStart(Z2SE_AL_V_LANDING_FAIL); } - setSingleAnime(ANM_DMG_FALL, daAlinkHIO_damFall_c0::m.mLandAnm.mSpeed, var_f31, daAlinkHIO_damFall_c0::m.mLandAnm.mEndFrame, daAlinkHIO_damFall_c0::m.mLandAnm.mInterpolation); + setSingleAnime(ANM_DMG_FALL, mpHIO->mDamage.mDamFall.m.mLandAnm.mSpeed, var_f31, mpHIO->mDamage.mDamFall.m.mLandAnm.mEndFrame, mpHIO->mDamage.mDamFall.m.mLandAnm.mInterpolation); field_0x3198 = 0; field_0x2f9d = 4; setFootEffectProcType(4); @@ -1577,7 +1577,7 @@ int daAlink_c::procLandDamage() { if (field_0x3198 != 0) { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_damFall_c0::m.mStandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mDamage.mDamFall.m.mStandAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -1586,7 +1586,7 @@ int daAlink_c::procLandDamage() { if (mProcVar0.field_0x3008 > 0) { mProcVar0.field_0x3008--; } else { - setSingleAnimeParam(ANM_DMG_FALL_RECOVER, &daAlinkHIO_damFall_c0::m.mStandAnm); + setSingleAnimeParam(ANM_DMG_FALL_RECOVER, &mpHIO->mDamage.mDamFall.m.mStandAnm); field_0x3198 = 1; } } @@ -1716,7 +1716,7 @@ int daAlink_c::procCoElecDamage() { int daAlink_c::procStEscapeInit() { commonProcInit(PROC_HUMAN_ST_ESCAPE); - setSingleAnimeParam(ANM_FROZEN_FREE, &daAlinkHIO_damCaught_c0::m.mEscapeAnm); + setSingleAnimeParam(ANM_FROZEN_FREE, &mpHIO->mDamage.mDamCaught.m.mEscapeAnm); mUnderFrameCtrl[0].setFrame(7.0f); getNowAnmPackUnder(UNDER_0)->setFrame(7.0f); @@ -1731,7 +1731,7 @@ int daAlink_c::procStEscape() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_damCaught_c0::m.mEscapeAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mDamage.mDamCaught.m.mEscapeAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -1753,7 +1753,7 @@ int daAlink_c::procDkCaughtInit(fpc_ProcID param_0) { field_0x28f8 = param_0; mNormalSpeed = 0.0f; - mProcVar0.field_0x3008 = daAlinkHIO_damCaught_c0::m.mGrabDuration; + mProcVar0.field_0x3008 = mpHIO->mDamage.mDamCaught.m.mGrabDuration; fopAc_ac_c* temp_r3 = fopAcM_SearchByID(field_0x28f8); if (temp_r3 != NULL) { @@ -1797,13 +1797,13 @@ int daAlink_c::procDkCaught() { } s16 temp_r28 = current.angle.y; - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_atnMove_c0::m.mTurnAngleRate, daAlinkHIO_atnMove_c0::m.mMaxTurnAngle, daAlinkHIO_atnMove_c0::m.mMinTurnAngle); - var_f30 = daAlinkHIO_atnMove_c0::m.mAcceleration * field_0x33a8 * cM_scos((current.angle.y - temp_r28)); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mAtnMove.m.mTurnAngleRate, mpHIO->mAtnMove.m.mMaxTurnAngle, mpHIO->mAtnMove.m.mMinTurnAngle); + var_f30 = mpHIO->mAtnMove.m.mAcceleration * field_0x33a8 * cM_scos((current.angle.y - temp_r28)); } else { var_f30 = 0.0f; } - setNormalSpeedF(var_f30, daAlinkHIO_atnMove_c0::m.mDeceleration); + setNormalSpeedF(var_f30, mpHIO->mAtnMove.m.mDeceleration); if (checkZeroSpeedF()) { onModeFlg(1); @@ -1814,11 +1814,11 @@ int daAlink_c::procDkCaught() { mProcVar0.field_0x3008--; if (escapeTrigger()) { - mProcVar0.field_0x3008 -= daAlinkHIO_damCaught_c0::m.mInputFadeTime; + mProcVar0.field_0x3008 -= mpHIO->mDamage.mDamCaught.m.mInputFadeTime; } if (checkInputOnR() && abs((s16)(mStickAngle - mPrevStickAngle)) > 0x1000) { - mProcVar0.field_0x3008 -= daAlinkHIO_damCaught_c0::m.mInputFadeTime; + mProcVar0.field_0x3008 -= mpHIO->mDamage.mDamCaught.m.mInputFadeTime; } if (mProcVar0.field_0x3008 < 0) { @@ -1846,8 +1846,8 @@ int daAlink_c::procScreamWaitInit() { if (checkEndResetFlg1(ERFLG1_UNK_2)) { setScreamWaitAnime(); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, - daAlinkHIO_basic_c0::m.mBasicInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, + mpHIO->mBasic.m.mBasicInterpolation); mProcVar2.field_0x300c = 0; } @@ -1996,18 +1996,18 @@ int daAlink_c::procCoSwimFreezeReturnInit() { f32 var_f31; if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlDamNormal_c0::m.mIceDamageAnmSpeed, + setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, mpHIO->mWolf.mWlDamage.mNormal.m.mIceDamageAnmSpeed, 10.0f); mUnderFrameCtrl[0].setEnd(3); mUnderFrameCtrl[0].setAttribute(0); setFaceBasicTexture(FTANM_UNK_90); mMidnaAnm = 1; - var_f31 = daAlinkHIO_wlSwim_c0::m.mStartHeight; + var_f31 = mpHIO->mWolf.mWlSwim.m.mStartHeight; } else { - setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.mIceDamageASpeed, + setSingleAnime(ANM_SWIM_DMG_FREEZE, mpHIO->mDamage.mDamNormal.m.mIceDamageASpeed, 0.0f, 5, 10.0f); voiceStart(Z2SE_AL_V_DAMAGE_FREEZE); - var_f31 = daAlinkHIO_swim_c0::m.mStartHeight; + var_f31 = mpHIO->mSwim.m.mStartHeight; } seStartOnlyReverb(Z2SE_AL_FREEZE); diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc index afec347a5e..8892cf5fd8 100644 --- a/src/d/actor/d_a_alink_demo.inc +++ b/src/d/actor/d_a_alink_demo.inc @@ -146,7 +146,7 @@ int daAlink_c::checkDemoAction() { } if (mProcID == PROC_SPINNER_WAIT) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } if (checkModeFlg(0x4000000) || checkModeFlg(0x40000) || checkHorseRide() || @@ -463,7 +463,7 @@ int daAlink_c::checkDemoAction() { } else if (checkBoardRide()) { return checkNextActionBoard(); } else if (checkSpinnerRide()) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } return commonCheckNextAction(0); @@ -486,7 +486,7 @@ void daAlink_c::setDemoMoveData(u32* o_mode, cXyz const* i_goal) { f32 temp_f28; f32 var_f27; if (checkWolf()) { - var_f27 = daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed / daAlinkHIO_move_c0::m.mMaxSpeed; + var_f27 = mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed / mpHIO->mMove.m.mMaxSpeed; var_f27 *= var_f27; } else { var_f27 = 1.0f; @@ -850,12 +850,12 @@ void daAlink_c::resetDemoBck() { mFaceBtkHeap.resetIdx(); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed, - daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed, + mpHIO->mWolf.mWlMove.m.mNormalInterpolation); setFaceBasicAnime(ANM_WAIT); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, - daAlinkHIO_basic_c0::m.mBasicInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, + mpHIO->mBasic.m.mBasicInterpolation); } } @@ -960,7 +960,7 @@ void daAlink_c::endDemoMode() { checkWaitAction(); } } else if (mProcID == PROC_MONKEY_MOVE) { - procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } else if (checkCanoeRide()) { procCanoeWaitInit(0); } @@ -1029,7 +1029,7 @@ int daAlink_c::setTalkStartBack(cXyz* param_0) { if (dComIfG_Bgsp().GroundCross(&mLinkGndChk) - current.pos.y >= l_autoDownHeight) { current.angle.y = sp24.atan2sX_Z(); mNormalSpeed = 5.0f; - setSingleAnimeBaseSpeed(ANM_WALK, -daAlinkHIO_move_c0::m.mWalkAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WALK, -mpHIO->mMove.m.mWalkAnmSpeed, 3.0f); return 1; } } @@ -1069,8 +1069,8 @@ void daAlink_c::setTalkAnime() { if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_8_e || mEquipItem == fpcNm_ITEM_KANTERA || (checkNoResetFlg2(FLG2_UNK_1) && field_0x2fde == 0x48)) { - setDoubleAnime(0.0f, daAlinkHIO_move_c0::m.mWaitAnmSpeed, - daAlinkHIO_move_c0::m.mWaitAnmSpeed, ANM_WAIT, ANM_WAIT, 2, 3.0f); + setDoubleAnime(0.0f, mpHIO->mMove.m.mWaitAnmSpeed, + mpHIO->mMove.m.mWaitAnmSpeed, ANM_WAIT, ANM_WAIT, 2, 3.0f); } else { setSingleAnimeBase(ANM_TALK); } @@ -1688,12 +1688,12 @@ int daAlink_c::procCoTalkInit() { mNormalSpeed = 0.0f; if (var_r30 == 0) { - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mIdleInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mIdleInterpolation); } else { if (var_r30 == 1) { field_0x2f99 = 13; setSingleAnimeWolfBaseSpeed(WANM_CROUCH_WALK, 0.0f, - daAlinkHIO_wlLie_c0::m.mProneMoveInterp); + mpHIO->mWolf.mWlLie.m.mProneMoveInterp); } else { field_0x2f99 = 13; daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; @@ -1765,7 +1765,7 @@ int daAlink_c::procCoTalk() { } else { if (mEquipItem == fpcNm_ITEM_KANTERA) { if (mUpperAnmHeap[0].getIdx() != getMainBckData(ANM_WAIT)->m_upperID) { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); } } @@ -1866,9 +1866,9 @@ int daAlink_c::procCoUnequipInit() { mProcVar3.field_0x300e = 0; if (checkWolf()) { - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mNormalInterpolation); } else { - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); if (mDemo.getParam1() == 0) { if (mEquipItem != fpcNm_ITEM_NONE) { @@ -2277,7 +2277,7 @@ int daAlink_c::procCoGetItem() { field_0x2f99 = 12; if (checkWolf()) { - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mNormalInterpolation); } else { if (mEquipItem == fpcNm_ITEM_KANTERA) { field_0x2f94 = 0; @@ -2289,7 +2289,7 @@ int daAlink_c::procCoGetItem() { 3.0f); field_0x2f99 = 0x60; } else { - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } } } @@ -2327,8 +2327,8 @@ int daAlink_c::procCoTurnBack() { if (checkWolf()) { setBlendWolfMoveAnime(5.0f); } else { - setDoubleAnime(0.0f, daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, - daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, + setDoubleAnime(0.0f, mpHIO->mNoActAtnMove.m.mWaitAnmSpeed, + mpHIO->mNoActAtnMove.m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, 2, 3.0f); } @@ -2356,7 +2356,7 @@ int daAlink_c::procDoorOpenInit() { f32 start_f = 0.0f; s16 end_f = -1; - field_0x3478 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + field_0x3478 = mpHIO->mBasic.m.mBasicInterpolation; mProcVar0.field_0x3008 = 0; if (mDemo.getParam0() == 4) { @@ -2487,9 +2487,9 @@ int daAlink_c::procCoLookWaitInit() { mNormalSpeed = 0.0f; if (checkWolf()) { - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mNormalInterpolation); } else { - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } current.angle.y = shape_angle.y; @@ -2528,8 +2528,8 @@ int daAlink_c::procCoDemoPushPullWaitInit() { if (checkWolf()) { setSingleAnimeWolfBase(WANM_WAIT_PP); } else { - setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, daAlinkHIO_pushpull_c0::m.mStandbyASpeed, - daAlinkHIO_pushpull_c0::m.mStandbyInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, mpHIO->mPushpull.m.mStandbyASpeed, + mpHIO->mPushpull.m.mStandbyInterpolation); } mNormalSpeed = 0.0f; @@ -2545,15 +2545,15 @@ int daAlink_c::procCoDemoPushMoveInit() { if (mDemo.getParam0() != 0) { setSingleAnimeWolfBase(WANM_PUSH); } else { - setSingleAnimeWolf(WANM_PUSH_LIGHT, daAlinkHIO_wlPush_c0::m.mPushAnmSpeed, - 0.0f, 24, daAlinkHIO_wlPush_c0::m.mPushInterp); + setSingleAnimeWolf(WANM_PUSH_LIGHT, mpHIO->mWolf.mWlPush.m.mPushAnmSpeed, + 0.0f, 24, mpHIO->mWolf.mWlPush.m.mPushInterp); } } else { if (mDemo.getParam0() != 0) { setSingleAnimeBase(ANM_PUSH); } else { - setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, daAlinkHIO_pushpull_c0::m.mPushASpeed, - daAlinkHIO_pushpull_c0::m.mPushInterpolation); + setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, mpHIO->mPushpull.m.mPushASpeed, + mpHIO->mPushpull.m.mPushInterpolation); } } @@ -2617,7 +2617,7 @@ int daAlink_c::procDemoBoomerangCatchInit() { deleteEquipItem(FALSE, FALSE); mEquipItem = fpcNm_ITEM_BOOMERANG; setItemActor(); - setSingleAnimeParam(ANM_BOOMERANG_CATCH, &daAlinkHIO_boom_c0::m.mCatchAnm); + setSingleAnimeParam(ANM_BOOMERANG_CATCH, &mpHIO->mItem.mBoomerang.m.mCatchAnm); return 1; } @@ -2625,7 +2625,7 @@ int daAlink_c::procDemoBoomerangCatch() { dComIfGp_evmng_cutEnd(mAlinkStaffId); if (checkAnmEnd(mUnderFrameCtrl)) { - setBlendMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } return 1; } @@ -2651,9 +2651,9 @@ int daAlink_c::procCoDeadInit(int param_0) { if (checkNoResetFlg2(FLG2_FORCE_GAMEOVER)) { if (param_0) { if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed, 3.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed, 3.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); } } @@ -2904,9 +2904,9 @@ int daAlink_c::procCoCaughtInit() { } if (checkWolf()) { - setSingleAnimeWolfBaseMorf(WANM_WAIT_START, daAlinkHIO_wlDamCaught_c0::m.mWaitInterp); + setSingleAnimeWolfBaseMorf(WANM_WAIT_START, mpHIO->mWolf.mWlDamage.mCapture.m.mWaitInterp); } else { - setSingleAnimeBaseMorf(ANM_WAIT_START, daAlinkHIO_damCaught_c0::m.mStandbyInterp); + setSingleAnimeBaseMorf(ANM_WAIT_START, mpHIO->mDamage.mDamCaught.m.mStandbyInterp); } if (chk_40000) { @@ -2999,7 +2999,7 @@ int daAlink_c::procHandPat() { dComIfGp_evmng_cutEnd(mAlinkStaffId); if (mProcVar3.field_0x300e == 0) { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); mProcVar3.field_0x300e = 1; } } @@ -3048,10 +3048,10 @@ int daAlink_c::procCoFogDeadInit() { if (checkWolf()) { setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f, - daAlinkHIO_wlDamFall_c0::m.mAirAnmInterp); + mpHIO->mWolf.mWlDamage.mFall.m.mAirAnmInterp); } else { setSingleAnimeBaseSpeed(ANM_DMG_FALL, 0.0f, - daAlinkHIO_damFall_c0::m.mFallAnmMorf); + mpHIO->mDamage.mDamFall.m.mFallAnmMorf); } } @@ -3097,8 +3097,8 @@ int daAlink_c::procWolfSmellWaitInit() { return 1; } - setSingleAnimeWolfBaseSpeed(WANM_SMELL, daAlinkHIO_wlChain_c0::m.mSniffAnmSpeed, - daAlinkHIO_wlChain_c0::m.mSniffInterp); + setSingleAnimeWolfBaseSpeed(WANM_SMELL, mpHIO->mWolf.mWlChain.m.mSniffAnmSpeed, + mpHIO->mWolf.mWlChain.m.mSniffInterp); current.angle.y = shape_angle.y; mNormalSpeed = 0.0f; return 1; @@ -3245,7 +3245,7 @@ int daAlink_c::procCoGetReadySitInit() { commonProcInit(PROC_GET_READY_SIT); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed, 3.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed, 3.0f); mProcVar2.field_0x300c = 1; } else { setSingleAnime(ANM_TRES_OPEN_SMALL, 1.0f, 36.0f, -1, 3.0f); @@ -3350,13 +3350,13 @@ int daAlink_c::procWolfSnowEscape() { if (mProcVar2.field_0x300c == 0) { mProcVar2.field_0x300c = 1; - setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &daAlinkHIO_wlSlide_c0::m.mFrontSlideAnm); + setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &mpHIO->mWolf.mWlSlide.m.mFrontSlideAnm); field_0x3588 = l_wolfBaseAnime; field_0x3478 = 1.0f / (f32)frameCtrl_p->getEnd(); field_0x2f99 = 13; voiceStart(Z2SE_WL_V_SLIP_ROLL); } else { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed, 3.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed, 3.0f); field_0x2f99 = 0x30; mProcVar3.field_0x300e = 1; } @@ -3658,8 +3658,8 @@ int daAlink_c::procSwordReady() { if (checkAnmEnd(frame_ctrl)) { if (mProcVar2.field_0x300c == 0) { - setDoubleAnime(0.0f, daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, - daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, 2, + setDoubleAnime(0.0f, mpHIO->mNoActAtnMove.m.mWaitAnmSpeed, + mpHIO->mNoActAtnMove.m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, 2, 3.0f); } @@ -3751,10 +3751,10 @@ int daAlink_c::procCutFastReadyInit() { mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); - setUpperAnime(0x255, UPPER_2, daAlinkHIO_cut_c0::m.mEquipAnm.mSpeed, 12.0f, - daAlinkHIO_cut_c0::m.mEquipAnm.mEndFrame, - daAlinkHIO_cut_c0::m.mEquipAnm.mInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); + setUpperAnime(0x255, UPPER_2, mpHIO->mCut.m.mEquipAnm.mSpeed, 12.0f, + mpHIO->mCut.m.mEquipAnm.mEndFrame, + mpHIO->mCut.m.mEquipAnm.mInterpolation); onNoResetFlg0(FLG0_UNK_1000000); return 1; } @@ -3953,8 +3953,8 @@ int daAlink_c::procDungeonWarpSceneStartInit() { commonProcInit(PROC_DUNGEON_WARP_SCN_START); setSpecialGravity(0.0f, maxFallSpeed, 0); - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, - daAlinkHIO_basic_c0::m.mBasicInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, + mpHIO->mBasic.m.mBasicInterpolation); if (checkDungeon() && !checkLv7DungeonShop()) { createNpcTks(¤t.pos, fopAcM_GetRoomNo(this), 4); @@ -4184,9 +4184,9 @@ int daAlink_c::procCoWarpInit(int param_0, int param_1) { deleteEquipItem(FALSE, TRUE); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed, 3.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed, 3.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); } u32 var_r29; @@ -4305,9 +4305,9 @@ int daAlink_c::procCoWarp() { f32 var_f1; if (checkWolf()) { - var_f1 = daAlinkHIO_wlAutoJump_c0::m.mGravity; + var_f1 = mpHIO->mWolf.mWlAutoJump.m.mGravity; } else { - var_f1 = daAlinkHIO_autoJump_c0::m.mGravity; + var_f1 = mpHIO->mAutoJump.m.mGravity; } setSpecialGravity(var_f1, maxFallSpeed, 1); @@ -4409,8 +4409,8 @@ int daAlink_c::commonLargeDamageUpInit(int param_0, int param_1, s16 param_2, s1 int daAlink_c::commonFallInit(int param_0) { if (checkWolf()) { - return procWolfFallInit(param_0, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + return procWolfFallInit(param_0, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } else { - return procFallInit(param_0, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(param_0, mpHIO->mAutoJump.m.mFallInterpolation); } } diff --git a/src/d/actor/d_a_alink_effect.inc b/src/d/actor/d_a_alink_effect.inc index d7364c8301..7ad7c2f4df 100644 --- a/src/d/actor/d_a_alink_effect.inc +++ b/src/d/actor/d_a_alink_effect.inc @@ -420,9 +420,9 @@ void daAlink_c::setEffect() { if (checkWolf()) { spB8.x += 40.0f * cM_ssin(current.angle.y); spB8.z += 40.0f * cM_scos(current.angle.y); - spAC.y -= daAlinkHIO_wlSwim_c0::m.mStartHeight; + spAC.y -= mpHIO->mWolf.mWlSwim.m.mStartHeight; } else { - spAC.y -= daAlinkHIO_swim_c0::m.mStartHeight; + spAC.y -= mpHIO->mSwim.m.mStartHeight; } spB8.y = mWaterY; @@ -562,7 +562,7 @@ void daAlink_c::setEffect() { ¤t.pos, &shape_angle); if (sp38 != NULL) { cXyz sp58; - f32 var_f31 = temp_f30 / daAlinkHIO_board_c0::m.mEffectMaxSpeed; + f32 var_f31 = temp_f30 / mpHIO->mItem.mBoard.m.mEffectMaxSpeed; if (var_f31 > 1.0f) { var_f31 = 1.0f; } @@ -1494,7 +1494,7 @@ void daAlink_c::setMetamorphoseEffect() { void daAlink_c::setRunSplash() { if (mProcID == PROC_MOVE && checkNoResetFlg0(FLG0_UNK_80) && checkDashAnime()) { f32 temp_f31 = mWaterY - current.pos.y; - if (temp_f31 >= daAlinkHIO_basic_c0::m.mWaterSurfaceEffectHeight && temp_f31 < field_0x598 && dKy_pol_efftype_get(&mLinkAcch.m_wtr) == 2) { + if (temp_f31 >= mpHIO->mBasic.m.mWaterSurfaceEffectHeight && temp_f31 < field_0x598 && dKy_pol_efftype_get(&mLinkAcch.m_wtr) == 2) { cXyz sp8(current.pos.x, mWaterY, current.pos.z); JPABaseEmitter* temp_r3 = setEmitterPolyColor(&field_0x31f8, 0x1AF, mLinkAcch.m_wtr, &sp8, ¤t.angle); diff --git a/src/d/actor/d_a_alink_grab.inc b/src/d/actor/d_a_alink_grab.inc index 86536e654c..7058fcd063 100644 --- a/src/d/actor/d_a_alink_grab.inc +++ b/src/d/actor/d_a_alink_grab.inc @@ -84,7 +84,7 @@ BOOL daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) { deleteEquipItem(TRUE, FALSE); setGrabItemActor(p_actor); field_0x33e4 = 38.0f; - setGrabUpperAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setGrabUpperAnime(mpHIO->mBasic.m.mBasicInterpolation); return true; } @@ -136,9 +136,9 @@ BOOL daAlink_c::checkGrabSideActor() { void daAlink_c::setGrabUpperAnime(f32 param_0) { if (param_0 > 0.0f && checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { - param_0 *= 1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; + param_0 *= 1.0f / mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed; } else { - param_0 *= 1.0f / daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate; + param_0 *= 1.0f / mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate; } } @@ -444,9 +444,9 @@ void daAlink_c::setGrabUpperSpeedRate() { var_f31 = 1.0f; } else { if (mProcID == PROC_STEP_MOVE) { - var_f31 = fabsf(field_0x3478 / daAlinkHIO_move_c0::m.mMaxSpeed); + var_f31 = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed); } else { - var_f31 = fabsf(mNormalSpeed / daAlinkHIO_move_c0::m.mMaxSpeed); + var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed); } if (checkHeavyStateOn(1, 1)) { @@ -550,17 +550,17 @@ void daAlink_c::setGrabItemThrow() { temp_r3->current.angle.y = shape_angle.y; if (checkWolf()) { - temp_r3->speedF = daAlinkHIO_bomb_c0::m.mWolfThrowSpeedH; - temp_r3->speed.y = daAlinkHIO_bomb_c0::m.mWolfThrowSpeedV; + temp_r3->speedF = mpHIO->mItem.mBomb.m.mWolfThrowSpeedH; + temp_r3->speed.y = mpHIO->mItem.mBomb.m.mWolfThrowSpeedV; } else { f32 var_f31; f32 var_f30; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - var_f31 = daAlinkHIO_bomb_c0::m.mWaterThrowSpeedH; - var_f30 = daAlinkHIO_bomb_c0::m.mWaterThrowSpeedV; + var_f31 = mpHIO->mItem.mBomb.m.mWaterThrowSpeedH; + var_f30 = mpHIO->mItem.mBomb.m.mWaterThrowSpeedV; } else { - var_f31 = daAlinkHIO_bomb_c0::m.mThrowSpeedH; - var_f30 = daAlinkHIO_bomb_c0::m.mThrowSpeedV; + var_f31 = mpHIO->mItem.mBomb.m.mThrowSpeedH; + var_f30 = mpHIO->mItem.mBomb.m.mThrowSpeedV; } if (checkMagneBootsOn()) { @@ -706,9 +706,9 @@ int daAlink_c::procGrabReadyInit() { } if (checkGrabCarryActor()) { - setSingleAnime(ANM_CARRY, daAlinkHIO_grab_c0::m.mFailAnm.mSpeed, daAlinkHIO_grab_c0::m.mFailAnm.mStartFrame, 9, daAlinkHIO_grab_c0::m.mFailAnm.mInterpolation); + setSingleAnime(ANM_CARRY, mpHIO->mGrab.m.mFailAnm.mSpeed, mpHIO->mGrab.m.mFailAnm.mStartFrame, 9, mpHIO->mGrab.m.mFailAnm.mInterpolation); mProcVar3.field_0x300e = 1; - field_0x347c = 1.0f / (9.0f - daAlinkHIO_grab_c0::m.mFailAnm.mStartFrame); + field_0x347c = 1.0f / (9.0f - mpHIO->mGrab.m.mFailAnm.mStartFrame); f32 var_f31; if (fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_DO) { @@ -720,8 +720,8 @@ int daAlink_c::procGrabReadyInit() { field_0x33ec = 4.0f * ((var_f31 * mGrabItemAcKeep.getActor()->scale.x) - 1.0f); } else { field_0x33ec = 0.0f; - setSingleAnimeParam(ANM_GRAB_UP_START, &daAlinkHIO_grab_c0::m.mPrepareAnm); - field_0x347c = 1.0f / (daAlinkHIO_grab_c0::m.mPrepareAnm.mEndFrame - daAlinkHIO_grab_c0::m.mPrepareAnm.mStartFrame); + setSingleAnimeParam(ANM_GRAB_UP_START, &mpHIO->mGrab.m.mPrepareAnm); + field_0x347c = 1.0f / (mpHIO->mGrab.m.mPrepareAnm.mEndFrame - mpHIO->mGrab.m.mPrepareAnm.mStartFrame); mProcVar3.field_0x300e = 0; } @@ -741,15 +741,15 @@ int daAlink_c::procGrabReady() { if (checkAnmEnd(&mUnderFrameCtrl[0])) { if (field_0x3198 != 0) { - setSingleAnime(ANM_PICK_UP_LARGE_START, daAlinkHIO_grab_c0::m.mRecoilAnm.mSpeed, daAlinkHIO_grab_c0::m.mRecoilAnm.mStartFrame, daAlinkHIO_grab_c0::m.mRecoilAnm.mCancelFrame, daAlinkHIO_grab_c0::m.mRecoilAnm.mInterpolation); + setSingleAnime(ANM_PICK_UP_LARGE_START, mpHIO->mGrab.m.mRecoilAnm.mSpeed, mpHIO->mGrab.m.mRecoilAnm.mStartFrame, mpHIO->mGrab.m.mRecoilAnm.mCancelFrame, mpHIO->mGrab.m.mRecoilAnm.mInterpolation); field_0x3198 = 0; } else { procGrabUpInit(); } } else if (mProcVar3.field_0x300e != 0) { - setCarryArmAngle(field_0x347c * (mUnderFrameCtrl[0].getFrame() - daAlinkHIO_grab_c0::m.mFailAnm.mStartFrame), 0.0f); + setCarryArmAngle(field_0x347c * (mUnderFrameCtrl[0].getFrame() - mpHIO->mGrab.m.mFailAnm.mStartFrame), 0.0f); } else { - setCarryArmAngle(0.0f, field_0x347c * (mUnderFrameCtrl[0].getFrame() - daAlinkHIO_grab_c0::m.mPrepareAnm.mStartFrame)); + setCarryArmAngle(0.0f, field_0x347c * (mUnderFrameCtrl[0].getFrame() - mpHIO->mGrab.m.mPrepareAnm.mStartFrame)); } return 1; @@ -760,11 +760,11 @@ int daAlink_c::procGrabUpInit() { commonProcInit(PROC_GRAB_UP); if (checkGrabCarryActor()) { - setSingleAnime(ANM_CARRY, daAlinkHIO_grab_c0::m.mFailAnm.mSpeed, 9.0f + daAlinkHIO_grab_c0::m.mFailAnm.mSpeed, daAlinkHIO_grab_c0::m.mFailAnm.mEndFrame, 0.0f); + setSingleAnime(ANM_CARRY, mpHIO->mGrab.m.mFailAnm.mSpeed, 9.0f + mpHIO->mGrab.m.mFailAnm.mSpeed, mpHIO->mGrab.m.mFailAnm.mEndFrame, 0.0f); mProcVar3.field_0x300e = 1; setCarryArmAngle(1.0f, 0.0f); } else { - setSingleAnimeParam(ANM_GRAB_UP, &daAlinkHIO_grab_c0::m.mLiftBackAnm); + setSingleAnimeParam(ANM_GRAB_UP, &mpHIO->mGrab.m.mLiftBackAnm); mProcVar3.field_0x300e = 0; setCarryArmAngle(0.0f, 1.0f); } @@ -792,7 +792,7 @@ int daAlink_c::procGrabUp() { return checkNextAction(0); } - if (checkAnmEnd(temp_r29) || (checkInputOnR() && (temp_r29->getFrame() > daAlinkHIO_grab_c0::m.mLiftBackAnm.mCancelFrame))) { + if (checkAnmEnd(temp_r29) || (checkInputOnR() && (temp_r29->getFrame() > mpHIO->mGrab.m.mLiftBackAnm.mCancelFrame))) { onResetFlg0(RFLG0_GRAB_UP_END); if (fopAcM_CheckCarryType(temp_r3, fopAcM_CARRY(fopAcM_CARRY_UNK_40 | fopAcM_CARRY_HEAVY | fopAcM_CARRY_TYPE_1))) { @@ -831,13 +831,13 @@ int daAlink_c::procGrabMiss() { int daAlink_c::procGrabThrowInit(int param_0) { if (checkModeFlg(0x400)) { if (checkGrabHeavyActor()) { - setUpperAnimeParam(0x17B, UPPER_2, &daAlinkHIO_grab_c0::m.mIronBallThrowAnm); + setUpperAnimeParam(0x17B, UPPER_2, &mpHIO->mGrab.m.mIronBallThrowAnm); field_0x343c = 14.0f; } else if (checkGrabAnimeSide()) { - setUpperAnimeParam(0x51, UPPER_2, &daAlinkHIO_grab_c0::m.mCarryPlaceReverseAnm); + setUpperAnimeParam(0x51, UPPER_2, &mpHIO->mGrab.m.mCarryPlaceReverseAnm); field_0x343c = 4.0f; } else { - setUpperAnimeParam(0x170, UPPER_2, &daAlinkHIO_grab_c0::m.mLiftAnm); + setUpperAnimeParam(0x170, UPPER_2, &mpHIO->mGrab.m.mLiftAnm); field_0x343c = 5.0f; } @@ -850,27 +850,27 @@ int daAlink_c::procGrabThrowInit(int param_0) { } if (checkGrabHeavyActor()) { - setSingleAnimeParam(ANM_THROW_HEAVY, &daAlinkHIO_grab_c0::m.mIronBallThrowAnm); + setSingleAnimeParam(ANM_THROW_HEAVY, &mpHIO->mGrab.m.mIronBallThrowAnm); field_0x343c = 14.0f; - field_0x347c = daAlinkHIO_grab_c0::m.mIronBallThrowAnm.mCancelFrame; + field_0x347c = mpHIO->mGrab.m.mIronBallThrowAnm.mCancelFrame; mProcVar2.field_0x300c = 2; } else if (checkGrabSideActor()) { f32 var_f31; if (mTargetedActor != NULL) { - var_f31 = daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed; + var_f31 = mpHIO->mAtnMove.m.mWaitAnmSpeed; } else { - var_f31 = daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed; + var_f31 = mpHIO->mNoActAtnMove.m.mWaitAnmSpeed; } - setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, var_f31, daAlinkHIO_basic_c0::m.mBasicInterpolation); - setUpperAnimeParam(0x51, UPPER_0, &daAlinkHIO_grab_c0::m.mCarryPlaceReverseAnm); + setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, var_f31, mpHIO->mBasic.m.mBasicInterpolation); + setUpperAnimeParam(0x51, UPPER_0, &mpHIO->mGrab.m.mCarryPlaceReverseAnm); field_0x343c = 4.0f; - field_0x347c = daAlinkHIO_grab_c0::m.mCarryPlaceReverseAnm.mCancelFrame; + field_0x347c = mpHIO->mGrab.m.mCarryPlaceReverseAnm.mCancelFrame; mProcVar2.field_0x300c = 1; } else { - setSingleAnimeParam(ANM_THROW, &daAlinkHIO_grab_c0::m.mLiftAnm); + setSingleAnimeParam(ANM_THROW, &mpHIO->mGrab.m.mLiftAnm); field_0x343c = 5.0f; - field_0x347c = daAlinkHIO_grab_c0::m.mLiftAnm.mCancelFrame; + field_0x347c = mpHIO->mGrab.m.mLiftAnm.mCancelFrame; mProcVar2.field_0x300c = 0; } @@ -891,7 +891,7 @@ int daAlink_c::procGrabThrow() { var_r30 = &mUnderFrameCtrl[0]; } - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); if (var_r30->checkPass(field_0x343c)) { setGrabItemThrow(); @@ -934,15 +934,15 @@ int daAlink_c::procGrabPutInit() { if (checkGrabCarryActor()) { field_0x3198 = 0; - setSingleAnime(ANM_CARRY, daAlinkHIO_grab_c0::m.mCarryLiftAnm.mSpeed, 9.0f, daAlinkHIO_grab_c0::m.mCarryLiftAnm.mEndFrame, daAlinkHIO_grab_c0::m.mCarryLiftAnm.mInterpolation); + setSingleAnime(ANM_CARRY, mpHIO->mGrab.m.mCarryLiftAnm.mSpeed, 9.0f, mpHIO->mGrab.m.mCarryLiftAnm.mEndFrame, mpHIO->mGrab.m.mCarryLiftAnm.mInterpolation); mProcVar3.field_0x300e = 1; - field_0x347c = 1.0f / (daAlinkHIO_grab_c0::m.mCarryLiftAnm.mEndFrame - 9.0f); - field_0x3480 = 1.0f / (daAlinkHIO_grab_c0::m.mCarryLiftAnm.mEndFrame - field_0x3478); + field_0x347c = 1.0f / (mpHIO->mGrab.m.mCarryLiftAnm.mEndFrame - 9.0f); + field_0x3480 = 1.0f / (mpHIO->mGrab.m.mCarryLiftAnm.mEndFrame - field_0x3478); } else { mProcVar3.field_0x300e = 0; field_0x3198 = 0; - setSingleAnimeParam(ANM_GRAB_UP, &daAlinkHIO_grab_c0::m.mThrowAnm); - field_0x347c = 1.0f / (daAlinkHIO_grab_c0::m.mThrowAnm.mEndFrame - daAlinkHIO_grab_c0::m.mThrowAnm.mStartFrame); + setSingleAnimeParam(ANM_GRAB_UP, &mpHIO->mGrab.m.mThrowAnm); + field_0x347c = 1.0f / (mpHIO->mGrab.m.mThrowAnm.mEndFrame - mpHIO->mGrab.m.mThrowAnm.mStartFrame); } if (mGrabItemAcKeep.getActor() != NULL) { @@ -990,7 +990,7 @@ int daAlink_c::procGrabPut() { } setCarryArmAngle(1.0f - (field_0x347c * (temp_r28->getFrame() - 9.0f)), var_f31); } else { - setCarryArmAngle(0.0f, field_0x347c * (temp_r28->getFrame() - daAlinkHIO_grab_c0::m.mThrowAnm.mStartFrame)); + setCarryArmAngle(0.0f, field_0x347c * (temp_r28->getFrame() - mpHIO->mGrab.m.mThrowAnm.mStartFrame)); } return 1; @@ -1012,7 +1012,7 @@ int daAlink_c::procGrabWaitInit() { return 0; } - f32 var_f31 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + f32 var_f31 = mpHIO->mBasic.m.mBasicInterpolation; if (!checkGrabAnime()) { setGrabUpperAnime(-1.0f); } else { @@ -1021,14 +1021,14 @@ int daAlink_c::procGrabWaitInit() { if (var_r30) { if (checkZoraWearAbility() ) { - var_f31 *= 1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; + var_f31 *= 1.0f / mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed; } else { - var_f31 *= 1.0f / daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate; + var_f31 *= 1.0f / mpHIO->mItem.mIronBoots.m.mWaterWalkAnmRate; } } if (checkAttentionLock() && (checkGrabAnimeUp() || checkGrabAnimeSide())) { - setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mBasicInterpolation); + setBlendAtnMoveAnime(mpHIO->mBasic.m.mBasicInterpolation); } else { setBlendMoveAnime(var_f31); } @@ -1066,7 +1066,7 @@ int daAlink_c::procGrabWait() { int daAlink_c::procGrabReboundInit(int param_0) { commonProcInit(PROC_GRAB_REBOUND); - setSingleAnimeParam(ANM_PICK_UP_LARGE, &daAlinkHIO_grab_c0::m.mCarryAnm); + setSingleAnimeParam(ANM_PICK_UP_LARGE, &mpHIO->mGrab.m.mCarryAnm); mNormalSpeed = 0.0f; field_0x3198 = param_0; @@ -1089,10 +1089,10 @@ int daAlink_c::procGrabRebound() { if (field_0x3198 != 0) { if (field_0x2060->getOldFrameRate() < 0.1f) { - setWaterInAnmRate(temp_r30, daAlinkHIO_grab_c0::m.mCarryAnm.mSpeed); + setWaterInAnmRate(temp_r30, mpHIO->mGrab.m.mCarryAnm.mSpeed); field_0x3198 = 0; } - } else if (checkAnmEnd(temp_r30) || (checkInputOnR() && (temp_r30->getFrame() > daAlinkHIO_grab_c0::m.mCarryAnm.mCancelFrame))) { + } else if (checkAnmEnd(temp_r30) || (checkInputOnR() && (temp_r30->getFrame() > mpHIO->mGrab.m.mCarryAnm.mCancelFrame))) { initGrabNextMode(); } @@ -1103,14 +1103,14 @@ int daAlink_c::procGrabStandInit() { commonProcInit(PROC_GRAB_STAND); if (checkUnderMove0BckNoArc(ANM_CARRY)) { - setSingleAnime(ANM_CARRY, daAlinkHIO_grab_c0::m.mCarryLiftAnm.mSpeed, daAlinkHIO_grab_c0::m.mCarryLiftAnm.mStartFrame, (9.0f + daAlinkHIO_grab_c0::m.mCarryLiftAnm.mSpeed), 0.0f); - field_0x3478 = daAlinkHIO_grab_c0::m.mCarryLiftAnm.mCancelFrame; - field_0x347c = 1.0f / (9.0f - daAlinkHIO_grab_c0::m.mCarryLiftAnm.mStartFrame); + setSingleAnime(ANM_CARRY, mpHIO->mGrab.m.mCarryLiftAnm.mSpeed, mpHIO->mGrab.m.mCarryLiftAnm.mStartFrame, (9.0f + mpHIO->mGrab.m.mCarryLiftAnm.mSpeed), 0.0f); + field_0x3478 = mpHIO->mGrab.m.mCarryLiftAnm.mCancelFrame; + field_0x347c = 1.0f / (9.0f - mpHIO->mGrab.m.mCarryLiftAnm.mStartFrame); mProcVar3.field_0x300e = 1; setCarryArmAngle(1.0f, 0.0f); } else { - setSingleAnimeParam(ANM_GRAB_UP_START, &daAlinkHIO_grab_c0::m.mStandReverseAnm); - field_0x3478 = daAlinkHIO_grab_c0::m.mStandReverseAnm.mCancelFrame; + setSingleAnimeParam(ANM_GRAB_UP_START, &mpHIO->mGrab.m.mStandReverseAnm); + field_0x3478 = mpHIO->mGrab.m.mStandReverseAnm.mCancelFrame; mProcVar3.field_0x300e = 0; } @@ -1130,7 +1130,7 @@ int daAlink_c::procGrabStand() { onModeFlg(4); if (!checkNextAction(1) && mProcVar3.field_0x300e != 0) { - setCarryArmAngle(field_0x347c * (mUnderFrameCtrl[0].getFrame() - daAlinkHIO_grab_c0::m.mCarryLiftAnm.mStartFrame), 0.0f); + setCarryArmAngle(field_0x347c * (mUnderFrameCtrl[0].getFrame() - mpHIO->mGrab.m.mCarryLiftAnm.mStartFrame), 0.0f); } } @@ -1161,10 +1161,10 @@ int daAlink_c::procInsectCatchInit() { mNormalSpeed = 0.0f; if (field_0x27f4->attention_info.position.y > field_0x3834.y - 30.0f) { - setSingleAnimeParam(ANM_BOTTLE_SWING, &daAlinkHIO_bottle_c0::m.mSwingSideAnm); + setSingleAnimeParam(ANM_BOTTLE_SWING, &mpHIO->mItem.mBottle.m.mSwingSideAnm); field_0x3478 = 4.0f; } else { - setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm); field_0x3478 = 8.0f; } @@ -1222,20 +1222,20 @@ int daAlink_c::procPickUpInit() { int var_r29; if (temp_r3 == PROC_Obj_Kantera) { - setSingleAnimeParam(ANM_BOTTLE_SWING, &daAlinkHIO_bottle_c0::m.mSwingSideAnm); + setSingleAnimeParam(ANM_BOTTLE_SWING, &mpHIO->mItem.mBottle.m.mSwingSideAnm); mProcVar3.field_0x300e = 1; field_0x3478 = 7.0f; mProcVar4.field_0x3010 = 0; var_r29 = 0; } else if (temp_r3 == PROC_NPC_KS) { - setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm); mProcVar3.field_0x300e = 1; field_0x3478 = 7.0f; mProcVar4.field_0x3010 = 1; fopAcM_onSwitch(field_0x27f4, 0x3F); var_r29 = 0; } else { - setSingleAnimeParam(ANM_PICK_UP, &daAlinkHIO_pickUp_c0::m.mGrabAnm); + setSingleAnimeParam(ANM_PICK_UP, &mpHIO->mItem.mPickUp.m.mGrabAnm); mProcVar3.field_0x300e = 0; mProcVar4.field_0x3010 = 0; var_r29 = 1; @@ -1269,7 +1269,7 @@ int daAlink_c::procPickUp() { } } else if (checkAnmEnd(temp_r30)) { checkNextAction(0); - } else if (temp_r30->getFrame() > daAlinkHIO_pickUp_c0::m.mGrabAnm.mCancelFrame) { + } else if (temp_r30->getFrame() > mpHIO->mItem.mPickUp.m.mGrabAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (temp_r30->checkPass(9.0f)) { @@ -1290,7 +1290,7 @@ int daAlink_c::procPickPutInit(int param_0) { commonProcInit(PROC_PICK_PUT); mNormalSpeed = 0.0f; - setSingleAnimeParam(ANM_PICK_UP, &daAlinkHIO_pickUp_c0::m.mPlaceAnm); + setSingleAnimeParam(ANM_PICK_UP, &mpHIO->mItem.mPickUp.m.mPlaceAnm); if (mItemAcKeep.getActor() != NULL) { field_0x37c8 = mItemAcKeep.getActor()->current.pos; @@ -1326,7 +1326,7 @@ int daAlink_c::procPickPut() { if (checkAnmEnd(temp_r28)) { checkNextAction(0); - } else if (temp_r28->getFrame() < daAlinkHIO_pickUp_c0::m.mPlaceAnm.mCancelFrame) { + } else if (temp_r28->getFrame() < mpHIO->mItem.mPickUp.m.mPlaceAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (temp_r28->checkPass(9.0f)) { @@ -1430,7 +1430,7 @@ int daAlink_c::procFmChainUpInit() { } commonProcInit(PROC_CHAIN_UP); - setSingleAnimeParam(ANM_CHAIN_PICK_UP, &daAlinkHIO_fmChain_c0::m.mGripAnm); + setSingleAnimeParam(ANM_CHAIN_PICK_UP, &mpHIO->mItem.mFmChain.m.mGripAnm); mNormalSpeed = 0.0f; return 1; } @@ -1441,7 +1441,7 @@ int daAlink_c::procFmChainUp() { setGrabStatus(0x96, 2); setShapeAngleToAtnActor(0); - if (checkAnmEnd(temp_r29) || (checkInputOnR() && temp_r29->getFrame() > daAlinkHIO_fmChain_c0::m.mGripAnm.mCancelFrame)) { + if (checkAnmEnd(temp_r29) || (checkInputOnR() && temp_r29->getFrame() > mpHIO->mItem.mFmChain.m.mGripAnm.mCancelFrame)) { u8 temp_r27 = field_0x2fa3; fopAc_ac_c* temp_r28 = field_0x2844.getActor(); @@ -1614,14 +1614,14 @@ f32 daAlink_c::getPushPullAnimeSpeed() { getMoveBGActorName(mPolyInfo1, 0) == PROC_Obj_Bemos) { if (checkWolf()) { - var_f31 = daAlinkHIO_wlPush_c0::m.mHeavyPushAnmSpeed; + var_f31 = mpHIO->mWolf.mWlPush.m.mHeavyPushAnmSpeed; } else { - var_f31 = daAlinkHIO_pushpull_c0::m.mPushASpeedHeavy; + var_f31 = mpHIO->mPushpull.m.mPushASpeedHeavy; } } else if (checkWolf()) { - var_f31 = daAlinkHIO_wlPush_c0::m.mPushAnmSpeed; + var_f31 = mpHIO->mWolf.mWlPush.m.mPushAnmSpeed; } else { - var_f31 = daAlinkHIO_pushpull_c0::m.mPushASpeed; + var_f31 = mpHIO->mPushpull.m.mPushASpeed; } return var_f31; @@ -1639,14 +1639,14 @@ int daAlink_c::procCoPushPullWaitInit(int param_0) { f32 var_f31; if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_PP, daAlinkHIO_wlPush_c0::m.mIdleAnmSpeed, daAlinkHIO_wlPush_c0::m.mIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_PP, mpHIO->mWolf.mWlPush.m.mIdleAnmSpeed, mpHIO->mWolf.mWlPush.m.mIdleInterp); var_f31 = 50.0f; } else { if (checkEquipAnime()) { resetUpperAnime(UPPER_2, -1.0f); } - setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, daAlinkHIO_pushpull_c0::m.mStandbyASpeed, daAlinkHIO_pushpull_c0::m.mStandbyInterpolation); + setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, mpHIO->mPushpull.m.mStandbyASpeed, mpHIO->mPushpull.m.mStandbyInterpolation); var_f31 = 50.0f; } @@ -1717,7 +1717,7 @@ int daAlink_c::procCoPushMoveInit(int param_0, int param_1) { setSingleAnimeWolfBase(WANM_PUSH_START); var_f31 = 1.0f; } else { - setSingleAnimeWolf(WANM_PUSH_LIGHT, var_f31, 0.0f, 24, daAlinkHIO_wlPush_c0::m.mPushInterp); + setSingleAnimeWolf(WANM_PUSH_LIGHT, var_f31, 0.0f, 24, mpHIO->mWolf.mWlPush.m.mPushInterp); } field_0x3478 = 17.0f; @@ -1726,7 +1726,7 @@ int daAlink_c::procCoPushMoveInit(int param_0, int param_1) { setSingleAnimeBase(ANM_PUSH_START); var_f31 = 1.0f; } else { - setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, var_f31, daAlinkHIO_pushpull_c0::m.mPushInterpolation); + setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, var_f31, mpHIO->mPushpull.m.mPushInterpolation); } field_0x3478 = 15.0f; @@ -1853,7 +1853,7 @@ int daAlink_c::procPullMoveInit(int param_0) { setSingleAnimeBase(ANM_PULL_START); } else { var_f31 = getPushPullAnimeSpeed(); - setSingleAnimeBaseSpeed(ANM_PULL_LIGHT, var_f31, daAlinkHIO_pushpull_c0::m.mPullInterpolation); + setSingleAnimeBaseSpeed(ANM_PULL_LIGHT, var_f31, mpHIO->mPushpull.m.mPullInterpolation); } mUnderFrameCtrl[0].setRate(var_f31); @@ -2000,7 +2000,7 @@ int daAlink_c::procGoatMoveInit() { field_0x37c8 = current.pos; field_0x2f98 = 3; current.angle.y = shape_angle.y + -0x4000; - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed; setSingleAnimeBase(ANM_ATN_COW); mProcVar2.field_0x300c = 0; @@ -2085,7 +2085,7 @@ int daAlink_c::procGoatMove() { } if (field_0x33a8 > (0.3f * (1.0f - fabsf(mNormalSpeed / field_0x594)))) { - var_f31 = daAlinkHIO_atnMove_c0::m.mAcceleration * field_0x33a8; + var_f31 = mpHIO->mAtnMove.m.mAcceleration * field_0x33a8; } else { var_f31 = 0.0f; } @@ -2093,7 +2093,7 @@ int daAlink_c::procGoatMove() { var_f31 = 0.0f; } - setNormalSpeedF(var_f31, daAlinkHIO_atnMove_c0::m.mDeceleration); + setNormalSpeedF(var_f31, mpHIO->mAtnMove.m.mDeceleration); if (checkZeroSpeedF()) { onModeFlg(1); @@ -2272,7 +2272,7 @@ int daAlink_c::procGoatCatch() { if (temp_r27 == PROC_OBJ_GRA) { field_0x2f99 = 0x30; - setSingleAnimeBaseSpeed(ANM_WAIT_B, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT_B, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); offModeFlg(0x8000); mProcVar1.field_0x300a = 0x1E; return 1; @@ -2457,7 +2457,7 @@ int daAlink_c::procGoronMoveInit() { mNormalSpeed = 0.0f; field_0x2f98 = 3; current.angle.y = shape_angle.y + -0x4000; - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed; setSingleAnimeBase(ANM_ATN_RIGHT); mProcVar2.field_0x300c = 1; mProcVar3.field_0x300e = 0; @@ -2518,7 +2518,7 @@ int daAlink_c::procGoronMove() { } if (field_0x33a8 > (0.3f * (1.0f - fabsf(mNormalSpeed / field_0x594)))) { - var_f31 = daAlinkHIO_atnMove_c0::m.mAcceleration * field_0x33a8; + var_f31 = mpHIO->mAtnMove.m.mAcceleration * field_0x33a8; } else { var_f31 = 0.0f; } @@ -2526,7 +2526,7 @@ int daAlink_c::procGoronMove() { var_f31 = 0.0f; } - setNormalSpeedF(var_f31, daAlinkHIO_atnMove_c0::m.mDeceleration); + setNormalSpeedF(var_f31, mpHIO->mAtnMove.m.mDeceleration); if (checkZeroSpeedF()) { onModeFlg(1); diff --git a/src/d/actor/d_a_alink_guard.inc b/src/d/actor/d_a_alink_guard.inc index edc20df0e2..084103d8ff 100644 --- a/src/d/actor/d_a_alink_guard.inc +++ b/src/d/actor/d_a_alink_guard.inc @@ -220,14 +220,13 @@ void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) { mBodyAngle.y = 0; } else { mBodyAngle.y = - cLib_minMaxLimit((s16)mBodyAngle.y, -daAlinkHIO_guard_c0::m.mSmallGuardLRAngleMax, - daAlinkHIO_guard_c0::m.mSmallGuardLRAngleMax); + cLib_minMaxLimit((s16)mBodyAngle.y, -mpHIO->mGuard.m.mSmallGuardLRAngleMax, + mpHIO->mGuard.m.mSmallGuardLRAngleMax); } - mBodyAngle.x = cLib_minMaxLimit(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -daAlinkHIO_guard_c0::m.mSmallGuardFBAngleMax, daAlinkHIO_guard_c0::m.mSmallGuardFBAngleMax); + mBodyAngle.x = cLib_minMaxLimit(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mSmallGuardFBAngleMax, mpHIO->mGuard.m.mSmallGuardFBAngleMax); } -// NONMATCHING - extra useless mr int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) { if (mProcID == PROC_GUARD_SLIP) { return 0; @@ -254,7 +253,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) { mProcVar2.field_0x300c = 0; mProcVar3.field_0x300e = 0; } else { - const daAlinkHIO_anm_c* var_r27 = &daAlinkHIO_guard_c0::m.mGuardHitAnm; + const daAlinkHIO_anm_c* var_r27 = &mpHIO->mGuard.m.mGuardHitAnm; daAlink_ANM var_r28; if (field_0x2f98 == 2) { var_r28 = ANM_GUARD_LEFT; @@ -269,11 +268,11 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) { if (abs(mProcVar2.field_0x300c) > 0x7000) { mProcVar2.field_0x300c = 0; } else { - mProcVar2.field_0x300c = cLib_minMaxLimit((s16)mProcVar2.field_0x300c, -daAlinkHIO_guard_c0::m.mGuardLRAngleMax, daAlinkHIO_guard_c0::m.mGuardLRAngleMax); + mProcVar2.field_0x300c = cLib_minMaxLimit((s16)mProcVar2.field_0x300c, -mpHIO->mGuard.m.mGuardLRAngleMax, mpHIO->mGuard.m.mGuardLRAngleMax); } - mProcVar3.field_0x300e = cLib_minMaxLimit(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -daAlinkHIO_guard_c0::m.mGuardFBAngleMax, daAlinkHIO_guard_c0::m.mGuardFBAngleMax); - mProcVar1.field_0x300a = daAlinkHIO_guard_c0::m.mGuardBodyInterpolation + 1; + mProcVar3.field_0x300e = cLib_minMaxLimit(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax); + mProcVar1.field_0x300a = mpHIO->mGuard.m.mGuardBodyInterpolation + 1; mProcVar2.field_0x300c = (mProcVar2.field_0x300c - mBodyAngle.y) / mProcVar1.field_0x300a; mProcVar3.field_0x300e = (mProcVar3.field_0x300e - mBodyAngle.x) / mProcVar1.field_0x300a; mProcVar1.field_0x300a--; @@ -287,10 +286,10 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) { if (param_1 != NULL && param_1->GetTgHitAc() != NULL && fopAcM_GetName(param_1->GetTgHitAc()) == PROC_E_MM_MT && param_1->GetTgHitAc()->argument == 1) { if (checkBootsOrArmorHeavy()) { - mNormalSpeed = daAlinkHIO_guard_c0::m.mMagneHvyGuardSpeed; + mNormalSpeed = mpHIO->mGuard.m.mMagneHvyGuardSpeed; mProcVar5.field_0x3012 = 1; } else { - mNormalSpeed = daAlinkHIO_guard_c0::m.mMagneGuardSpeed; + mNormalSpeed = mpHIO->mGuard.m.mMagneGuardSpeed; mProcVar5.field_0x3012 = 0; } @@ -299,12 +298,12 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) { if ((!checkBootsOrArmorHeavy() && checkMiddleBossGoronRoom()) || checkStageName("D_MN07B")) { mNormalSpeed = 40.0f; } else { - mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedHuge; + mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedHuge; } } else if (checkLargeAttack(param_0)) { - mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedLarge; + mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedLarge; } else { - mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedNormal; + mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedNormal; } field_0x2f9d = 0x60; @@ -363,7 +362,7 @@ int daAlink_c::procGuardAttackInit() { } commonProcInit(PROC_GUARD_ATTACK); - const daAlinkHIO_guardAttack_c1* temp_r30 = &daAlinkHIO_gAtPush_c0::m; + const daAlinkHIO_guardAttack_c1* temp_r30 = &mpHIO->mGuard.mAtPush.m; field_0x2f98 = 3; field_0x34d4 = l_rWaitBaseAnime; @@ -393,7 +392,7 @@ int daAlink_c::procGuardAttackInit() { mGuardAtCps.ResetAtHit(); mGuardAtCps.SetAtSe(2); - mGuardAtCps.SetR(daAlinkHIO_guard_c0::m.mAttackRadius); + mGuardAtCps.SetR(mpHIO->mGuard.m.mAttackRadius); current.angle.y = shape_angle.y; @@ -410,7 +409,7 @@ int daAlink_c::procGuardAttack() { setUpperGuardAnime(-1.0f); field_0x2f99 = 4; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mMove.m.mDeceleration); setShapeAngleToAtnActor(1); current.angle.y = shape_angle.y; @@ -481,7 +480,7 @@ int daAlink_c::procGuardAttack() { int daAlink_c::procGuardBreakInit() { commonProcInit(PROC_GUARD_BREAK); - setSingleAnimeParam(ANM_GUARD_BREAK, &daAlinkHIO_guard_c0::m.mGuardBreakAnm); + setSingleAnimeParam(ANM_GUARD_BREAK, &mpHIO->mGuard.m.mGuardBreakAnm); if (mEquipItem == fpcNm_ITEM_IRONBALL) { deleteEquipItem(0, 0); @@ -506,7 +505,7 @@ int daAlink_c::procGuardBreak() { onEndResetFlg1(ERFLG1_UNK_20); } checkNextAction(0); - } else if (temp_r30->getFrame() > daAlinkHIO_guard_c0::m.mGuardBreakAnm.mCancelFrame) { + } else if (temp_r30->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) { if (!checkGuardActionChange()) { onEndResetFlg1(ERFLG1_UNK_20); } @@ -540,14 +539,14 @@ int daAlink_c::procTurnMoveInit(int param_0) { var_r29 = ANM_SIDE_ROLL_LEFT; } - f32 temp_f31 = daAlinkHIO_turnMove_c0::m.mTurnAnm.mSpeed; - mProcVar1.field_0x300a = daAlinkHIO_turnMove_c0::m.mMaxTurnSpeed; + f32 temp_f31 = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed; + mProcVar1.field_0x300a = mpHIO->mGuard.mTurnMove.m.mMaxTurnSpeed; if (checkNoResetFlg0(FLG0_UNDERWATER)) { - mProcVar1.field_0x300a = mProcVar1.field_0x300a * daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + mProcVar1.field_0x300a = mProcVar1.field_0x300a * mpHIO->mItem.mIronBoots.m.mWaterVelocityX; } - setSingleAnime(var_r29, temp_f31, daAlinkHIO_turnMove_c0::m.mTurnAnm.mStartFrame, daAlinkHIO_turnMove_c0::m.mTurnAnm.mEndFrame, daAlinkHIO_turnMove_c0::m.mTurnAnm.mInterpolation); + setSingleAnime(var_r29, temp_f31, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation); if (var_r29 == ANM_SIDE_ROLL_LEFT) { mProcVar2.field_0x300c = -0x7FF0; @@ -591,7 +590,7 @@ int daAlink_c::procTurnMove() { onEndResetFlg0(ERFLG0_UNK_8000000); s16 temp_r28 = mProcVar2.field_0x300c; - cLib_addCalcAngleS(&mProcVar2.field_0x300c, 0, daAlinkHIO_turnMove_c0::m.mTurnSpeedRate, mProcVar1.field_0x300a, daAlinkHIO_turnMove_c0::m.mMinTurnSpeed); + cLib_addCalcAngleS(&mProcVar2.field_0x300c, 0, mpHIO->mGuard.mTurnMove.m.mTurnSpeedRate, mProcVar1.field_0x300a, mpHIO->mGuard.mTurnMove.m.mMinTurnSpeed); s16 temp_r29 = temp_r28 - mProcVar2.field_0x300c; if (temp_r28 > 0) { @@ -623,11 +622,11 @@ int daAlink_c::procTurnMove() { offNoResetFlg2(FLG2_UNK_8000000); } checkNextAction(0); - } else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTwirlCutDelayF) { + } else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) { procCutFinishJumpUpInit(); dComIfGp_setPlayerStatus0(0, 4); } else { - if (temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) { + if (temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) { onModeFlg(4); if (checkNextAction(1)) { diff --git a/src/d/actor/d_a_alink_hang.inc b/src/d/actor/d_a_alink_hang.inc index 414792af90..6633b830f7 100644 --- a/src/d/actor/d_a_alink_hang.inc +++ b/src/d/actor/d_a_alink_hang.inc @@ -13,8 +13,8 @@ #include "d/actor/d_a_obj_swhang.h" f32 daAlink_c::getHangMoveAnmSpeed() { - return getAnmSpeedStickRate(daAlinkHIO_wallMove_c0::m.mMinAnmSpeed, - daAlinkHIO_wallMove_c0::m.mMaxAnmSpeed); + return getAnmSpeedStickRate(mpHIO->mWallHang.mWallMove.m.mMinAnmSpeed, + mpHIO->mWallHang.mWallMove.m.mMaxAnmSpeed); } int daAlink_c::getHangDirectionFromAngle() { @@ -189,7 +189,7 @@ void daAlink_c::setHangGroundY() { int daAlink_c::changeHangEndProc() { setHangGroundY(); - if (current.pos.y < field_0x33d8 + daAlinkHIO_wallHang_c0::m.hang_foot_pos_height - 1.0f && + if (current.pos.y < field_0x33d8 + mpHIO->mWallHang.m.hang_foot_pos_height - 1.0f && (mProcID != PROC_HANG_FALL_START || !(mUnderFrameCtrl->getFrame() < 3.0f)) && field_0x33d8 < current.pos.y - 5.0f) { @@ -200,7 +200,7 @@ int daAlink_c::changeHangEndProc() { if (doTrigger()) { speed.y = 0.0f; - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } return 0; @@ -280,20 +280,20 @@ int daAlink_c::procHangStartInit() { if (checkHangFootWall()) { if (!hang_ready && cM_rnd() < 0.7f) { - setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.mWallAttachMissAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachMissAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &mpHIO->mLadder.m.mWallAttachMissAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachMissAnm.mCancelFrame; voiceStart(Z2SE_AL_V_FOOT_MISS); } else { - setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.mWallAttachAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG, &mpHIO->mLadder.m.mWallAttachAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachAnm.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } field_0x2f92 = 0xFE; field_0x2f93 = 0xFE; } else { - setSingleAnimeParam(ANM_HANG_READY, &daAlinkHIO_wallCatch_c0::m.mGrabAAnm); - field_0x3478 = daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mCancelFrame; + setSingleAnimeParam(ANM_HANG_READY, &mpHIO->mWallHang.mWallCatch.m.mGrabAAnm); + field_0x3478 = mpHIO->mWallHang.mWallCatch.m.mGrabAAnm.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } @@ -322,7 +322,7 @@ int daAlink_c::procHangStart() { } else if (frame_ctrl->getFrame() > field_0x3478 && checkInputOnR() && getDirectionFromShapeAngle() == DIR_FORWARD) { - procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); + procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mStartFrame); } return 1; @@ -379,14 +379,14 @@ int daAlink_c::procHangFallStartInit(cM3dGPla* param_0) { if (mProcID == PROC_FRONT_ROLL) { morf = 0.0f; } else { - morf = daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mInterpolation; + morf = mpHIO->mWallHang.mWallFall.m.mOneHandGrabAnm.mInterpolation; } commonProcInit(PROC_HANG_FALL_START); offNoResetFlg2(FLG2_UNK_2000); - setSingleAnime(ANM_HANG_ONE_HAND, daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mSpeed, - daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mStartFrame, - daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mEndFrame, morf); + setSingleAnime(ANM_HANG_ONE_HAND, mpHIO->mWallHang.mWallFall.m.mOneHandGrabAnm.mSpeed, + mpHIO->mWallHang.mWallFall.m.mOneHandGrabAnm.mStartFrame, + mpHIO->mWallHang.mWallFall.m.mOneHandGrabAnm.mEndFrame, morf); mNormalSpeed = 0.0f; speed.y = 0.0f; @@ -403,7 +403,7 @@ int daAlink_c::procHangFallStart() { BOOL bvar; if (checkAnmEnd(frame_ctrl) || - frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mCancelFrame) + frame_ctrl->getFrame() > mpHIO->mWallHang.mWallFall.m.mOneHandGrabAnm.mCancelFrame) { bvar = true; } else { @@ -431,7 +431,7 @@ int daAlink_c::procHangFallStart() { int daAlink_c::procHangUpInit(int param_0) { commonProcInit(PROC_HANG_UP); - setSingleAnimeParam(ANM_HANG_ONE_HAND_MOVE, &daAlinkHIO_wallFall_c0::m.mTwoHandGrabAnm); + setSingleAnimeParam(ANM_HANG_ONE_HAND_MOVE, &mpHIO->mWallHang.mWallFall.m.mTwoHandGrabAnm); dComIfGp_setPlayerStatus0(0, 0x100); setBowHangAnime(); field_0x3198 = param_0; @@ -451,10 +451,10 @@ int daAlink_c::procHangUp() { } return 1; } else if (checkAnmEnd(frame_ctrl) || - frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mTwoHandGrabAnm.mCancelFrame) + frame_ctrl->getFrame() > mpHIO->mWallHang.mWallFall.m.mTwoHandGrabAnm.mCancelFrame) { if (field_0x3198 == 0) { - procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); + procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mStartFrame); } else if (changeHangMoveProc(field_0x3198)) { procHangMoveInit(field_0x3198); } else { @@ -470,13 +470,13 @@ int daAlink_c::procHangWaitInit() { commonProcInit(PROC_HANG_WAIT); if (checkNoResetFlg2(FLG2_UNK_2000) && checkHangFootWall()) { - setSingleAnime(ANM_CLIMB_HANG, 0.0f, daAlinkHIO_ladder_c0::m.mWallAttachAnm.mEndFrame, - daAlinkHIO_ladder_c0::m.mWallAttachAnm.mEndFrame, 5.0f); + setSingleAnime(ANM_CLIMB_HANG, 0.0f, mpHIO->mLadder.m.mWallAttachAnm.mEndFrame, + mpHIO->mLadder.m.mWallAttachAnm.mEndFrame, 5.0f); field_0x2f92 = 0xFE; field_0x2f93 = 0xFE; } else { - setSingleAnime(ANM_HANG_READY, 0.0f, daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mEndFrame, - daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mEndFrame, 5.0f); + setSingleAnime(ANM_HANG_READY, 0.0f, mpHIO->mWallHang.mWallCatch.m.mGrabAAnm.mEndFrame, + mpHIO->mWallHang.mWallCatch.m.mGrabAAnm.mEndFrame, 5.0f); } setBowHangAnime(); @@ -497,14 +497,14 @@ int daAlink_c::procHangWait() { setClimbShapeOffset(); if (checkNoResetFlg2(FLG2_UNK_2000) && !checkHangFootWall()) { - setSingleAnime(ANM_HANG_READY, 0.0f, daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mEndFrame, - daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mEndFrame, 10.0f); + setSingleAnime(ANM_HANG_READY, 0.0f, mpHIO->mWallHang.mWallCatch.m.mGrabAAnm.mEndFrame, + mpHIO->mWallHang.mWallCatch.m.mGrabAAnm.mEndFrame, 10.0f); } if (checkInputOnR()) { int direction = getHangDirectionFromAngle(); if (direction == DIR_FORWARD) { - return procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); + return procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mStartFrame); } if (direction != DIR_BACKWARD && changeHangMoveProc(direction)) { @@ -547,7 +547,7 @@ int daAlink_c::procHangMoveInit(int param_0) { } setSingleAnimeBaseSpeed(anm, getHangMoveAnmSpeed(), - daAlinkHIO_wallMove_c0::m.mInterpolation); + mpHIO->mWallHang.mWallMove.m.mInterpolation); } if (param_0 == 2) { @@ -571,7 +571,7 @@ int daAlink_c::procHangMove() { if (!changeHangEndProc()) { if (direction == DIR_FORWARD && checkInputOnR()) { - procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); + procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mStartFrame); } else { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; @@ -680,9 +680,9 @@ int daAlink_c::procHangClimbInit(f32 param_0) { BOOL wall_catch = mProcID == PROC_HANG_WALL_CATCH; commonProcInit(PROC_HANG_CLIMB); - setSingleAnime(ANM_HANG_CLIMB_TOP, daAlinkHIO_wallCatch_c0::m.mClimbAnm.mSpeed, param_0, - daAlinkHIO_wallCatch_c0::m.mClimbAnm.mEndFrame, - daAlinkHIO_wallCatch_c0::m.mClimbAnm.mInterpolation); + setSingleAnime(ANM_HANG_CLIMB_TOP, mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mSpeed, param_0, + mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mEndFrame, + mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mInterpolation); if (checkBowItem(mEquipItem)) { field_0x33dc = mUnderFrameCtrl[0].getFrame(); @@ -730,7 +730,7 @@ int daAlink_c::procHangClimb() { if (checkAnmEnd(frameCtrl)) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wallCatch_c0::m.mClimbAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -760,7 +760,7 @@ int daAlink_c::procHangWallCatchInit() { } commonProcInit(PROC_HANG_WALL_CATCH); - setSingleAnimeParam(ANM_CLIMB_TOP_SMALL, &daAlinkHIO_wallCatch_c0::m.mGrabBAnm); + setSingleAnimeParam(ANM_CLIMB_TOP_SMALL, &mpHIO->mWallHang.mWallCatch.m.mGrabBAnm); setBowHangAnime(); current.pos.x = sp38.x; current.pos.y = sp38.y; @@ -785,9 +785,9 @@ int daAlink_c::procHangWallCatch() { } if (checkAnmEnd(mUnderFrameCtrl) && - !procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbStartFrame)) + !procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbStartFrame)) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } return 1; @@ -805,7 +805,7 @@ int daAlink_c::procHangReadyInit() { } commonProcInit(PROC_HANG_READY); - setSingleAnimeParam(ANM_CLIMB_JUMP, &daAlinkHIO_wallCatch_c0::m.mJumpAnm); + setSingleAnimeParam(ANM_CLIMB_JUMP, &mpHIO->mWallHang.mWallCatch.m.mJumpAnm); mProcVar2.field_0x300c = field_0x306e + 0x8000; field_0x3198 = field_0x2f91; @@ -847,7 +847,7 @@ int daAlink_c::procHangLeverDownInit() { commonProcInit(PROC_HANG_LEVER_DOWN); field_0x280c.setData(field_0x27f4); - setSingleAnimeParam(ANM_CLIMB_JUMP, &daAlinkHIO_wallCatch_c0::m.mJumpAnm); + setSingleAnimeParam(ANM_CLIMB_JUMP, &mpHIO->mWallHang.mWallCatch.m.mJumpAnm); mProcVar2.field_0x300c = field_0x27f4->shape_angle.y + 0x8000; field_0x3198 = ANM_CLIMB_JUMP; @@ -875,7 +875,7 @@ int daAlink_c::procHangLeverDown() { offModeFlg(1); onModeFlg(0x6042); - setSingleAnimeParam(ANM_HANG_READY, &daAlinkHIO_wallCatch_c0::m.mGrabAAnm); + setSingleAnimeParam(ANM_HANG_READY, &mpHIO->mWallHang.mWallCatch.m.mGrabAAnm); voiceStart(Z2SE_AL_V_JUMP_HANG); field_0x2f99 = 0x50; field_0x3198 = ANM_HANG_READY; @@ -1090,13 +1090,13 @@ int daAlink_c::procBossBodyHang() { mProcVar1.field_0x300a = 3; } else { if (field_0x32cc != 0) { - setSingleAnimeParam(ANM_DRAGON_CUT, &daAlinkHIO_cut_c0::m.mStabAnm); + setSingleAnimeParam(ANM_DRAGON_CUT, &mpHIO->mCut.m.mStabAnm); } else { - setSingleAnimeParam(ANM_MORPHEEL_CUT, &daAlinkHIO_cut_c0::m.mStabAnm); + setSingleAnimeParam(ANM_MORPHEEL_CUT, &mpHIO->mCut.m.mStabAnm); } field_0x3198 = 0x16C; - field_0x3478 = daAlinkHIO_cut_c0::m.mStabAnm.mCancelFrame; + field_0x3478 = mpHIO->mCut.m.mStabAnm.mCancelFrame; field_0x347c = 10.0f; mProcVar4.field_0x3010 = 0; mProcVar1.field_0x300a = 1; @@ -1161,7 +1161,7 @@ int daAlink_c::setLadderInit() { if (checkModeFlg(0x40000)) { setLadderPos(getLadderUnitCount() - 2); - while (mWaterY - current.pos.y > daAlinkHIO_swim_c0::m.mStartHeight) { + while (mWaterY - current.pos.y > mpHIO->mSwim.m.mStartHeight) { current.pos.y += 37.5f; } @@ -1235,8 +1235,8 @@ void daAlink_c::setLadderPos(int param_0) { f32 daAlink_c::getLadderMoveAnmSpeed() { - return getAnmSpeedStickRate(daAlinkHIO_ladder_c0::m.mMoveMinASpeed, - daAlinkHIO_ladder_c0::m.mMoveMaxSpeed); + return getAnmSpeedStickRate(mpHIO->mLadder.m.mMoveMinASpeed, + mpHIO->mLadder.m.mMoveMaxSpeed); } int daAlink_c::changeLadderMoveProc(int param_0) { @@ -1302,7 +1302,7 @@ int daAlink_c::setMoveBGLadderCorrect() { field_0x37c8.z + cM_scos(current.angle.y) * 50.0f); if (!commonLineCheck(&field_0x37c8, &sp28) || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 4) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } mPolyInfo1.SetPolyInfo(mLinkLinChk); @@ -1315,7 +1315,7 @@ int daAlink_c::checkLadderFall() { if (doTrigger()) { field_0x2f99 = 0; - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } return 0; @@ -1332,8 +1332,8 @@ int daAlink_c::procLadderUpStartInit() { mNormalSpeed = 0.0f; speedF = 0.0f; - setSingleAnimeBaseSpeed(ANM_LADDER_UP_START, daAlinkHIO_ladder_c0::m.mClimbUpStartASpeed, - daAlinkHIO_ladder_c0::m.mClimbUpStartInterp); + setSingleAnimeBaseSpeed(ANM_LADDER_UP_START, mpHIO->mLadder.m.mClimbUpStartASpeed, + mpHIO->mLadder.m.mClimbUpStartInterp); field_0x2f99 = 0x10; field_0x3588 = l_waitBaseAnime; dComIfGp_setPlayerStatus0(0, 0x2000000); @@ -1376,8 +1376,8 @@ int daAlink_c::procLadderUpEndInit(int param_0) { commonProcInit(PROC_LADDER_UP_END); daAlink_ANM anm_id = param_0 != 0 ? ANM_LADDER_UP_END_LEFT : ANM_LADDER_UP_END_RIGHT; - setSingleAnimeBaseSpeed(anm_id, daAlinkHIO_ladder_c0::m.mClimbUpEndASpeed, - daAlinkHIO_ladder_c0::m.mClimbUpEndInterp); + setSingleAnimeBaseSpeed(anm_id, mpHIO->mLadder.m.mClimbUpEndASpeed, + mpHIO->mLadder.m.mClimbUpEndInterp); field_0x2f99 = 14; setSpecialGravity(0.0f, maxFallSpeed, 0); @@ -1403,7 +1403,7 @@ int daAlink_c::procLadderUpEnd() { if (checkAnmEnd(frame_ctrl)) { checkNextAction(0); - } else if (!(frame_ctrl->getFrame() > daAlinkHIO_ladder_c0::m.mClimbUpEndCF) || + } else if (!(frame_ctrl->getFrame() > mpHIO->mLadder.m.mClimbUpEndCF) || !checkNextAction(1)) { if (frame_ctrl->getFrame() >= 23.0f) { @@ -1436,8 +1436,8 @@ int daAlink_c::procLadderDownStartInit() { shape_angle.y = field_0x306e + 0x8000; current.angle.y = field_0x306e; - setSingleAnimeBaseSpeed(ANM_LADDER_DOWN_START, daAlinkHIO_ladder_c0::m.mClimbDownStartASpeed, - daAlinkHIO_ladder_c0::m.mClimbDownStartInterp); + setSingleAnimeBaseSpeed(ANM_LADDER_DOWN_START, mpHIO->mLadder.m.mClimbDownStartASpeed, + mpHIO->mLadder.m.mClimbDownStartInterp); field_0x2f99 = 0x10; field_0x3588 = l_waitBaseAnime; dComIfGp_setPlayerStatus0(0, 0x2000000); @@ -1487,8 +1487,8 @@ int daAlink_c::procLadderDownEndInit(int param_0) { commonProcInit(PROC_LADDER_DOWN_END); daAlink_ANM anm_id = param_0 != 0 ? ANM_LADDER_DOWN_END_LEFT : ANM_LADDER_DOWN_END_RIGHT; - setSingleAnimeBaseSpeed(anm_id, daAlinkHIO_ladder_c0::m.mClimbDownEndASpeed, - daAlinkHIO_ladder_c0::m.mClimbDownEndInterp); + setSingleAnimeBaseSpeed(anm_id, mpHIO->mLadder.m.mClimbDownEndASpeed, + mpHIO->mLadder.m.mClimbDownEndInterp); field_0x2f99 = 14; setSpecialGravity(0.0f, maxFallSpeed, 0); @@ -1509,7 +1509,7 @@ int daAlink_c::procLadderDownEnd() { if (checkAnmEnd(frame_ctrl)) { checkNextAction(0); - } else if (!(frame_ctrl->getFrame() > daAlinkHIO_ladder_c0::m.mClimbDownEndCF) || + } else if (!(frame_ctrl->getFrame() > mpHIO->mLadder.m.mClimbDownEndCF) || !checkNextAction(1)) { if (frame_ctrl->getFrame() >= 11.0f) { @@ -1566,7 +1566,7 @@ int daAlink_c::procLadderMoveInit(int param_0, int param_1, cXyz* param_2) { } } - setSingleAnimeBaseSpeed(anm, anm_speed, daAlinkHIO_ladder_c0::m.mMoveInterp); + setSingleAnimeBaseSpeed(anm, anm_speed, mpHIO->mLadder.m.mMoveInterp); field_0x2f98 = param_1; if (!param_1) { @@ -1614,13 +1614,13 @@ int daAlink_c::procLadderMove() { } f32 daAlink_c::getClimbMoveUpDownAnmSpeed() { - return getAnmSpeedStickRate(daAlinkHIO_ladder_c0::m.mWallVerticalMinAnmSpeed, - daAlinkHIO_ladder_c0::m.mWallVerticalMaxAnmSpeed); + return getAnmSpeedStickRate(mpHIO->mLadder.m.mWallVerticalMinAnmSpeed, + mpHIO->mLadder.m.mWallVerticalMaxAnmSpeed); } f32 daAlink_c::getClimbMoveSideAnmSpeed() { - return getAnmSpeedStickRate(daAlinkHIO_ladder_c0::m.mWallHorizontalMinAnmSpeed, - daAlinkHIO_ladder_c0::m.mWallHorizontalMaxAnmSpeed); + return getAnmSpeedStickRate(mpHIO->mLadder.m.mWallHorizontalMinAnmSpeed, + mpHIO->mLadder.m.mWallHorizontalMaxAnmSpeed); } BOOL daAlink_c::checkClimbCode(cBgS_PolyInfo& i_poly) { @@ -1810,7 +1810,7 @@ int daAlink_c::setMoveBGClimbCorrect() { } if (mLinkAcch.ChkGroundHit()) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } f32 var_f31 = cM_ssin(shape_angle.y); @@ -1837,7 +1837,7 @@ int daAlink_c::setMoveBGClimbCorrect() { ((mProcID == PROC_CLIMB_MOVE_UPDOWN || mProcID == PROC_CLIMB_MOVE_SIDE) && current.pos.y - 15.0f < dComIfG_Bgsp().GroundCross(&mLinkGndChk))) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } cM3dGPla sp44; @@ -1845,7 +1845,7 @@ int daAlink_c::setMoveBGClimbCorrect() { s16 temp_r29 = sp44.mNormal.atan2sX_Z(); if (cLib_distanceAngleS(temp_r29, shape_angle.y) <= 0x549F) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } s16 temp_r28 = shape_angle.y; @@ -1993,7 +1993,7 @@ BOOL daAlink_c::checkBgClimbMove(int i_direction) { if (checkClimbGround(&sp8C, sp98.y)) { current.pos = sp8C; onResetFlg0(RFLG0_UNK_40000); - return procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); + return procHangClimbInit(mpHIO->mWallHang.mWallCatch.m.mClimbAnm.mStartFrame); } else { current.pos.y -= 30.0f; return procClimbWaitInit(1, 1); @@ -2059,12 +2059,12 @@ int daAlink_c::procClimbUpStartInit(int param_0) { mNormalSpeed = 0.0f; if (param_0 || var_r29 || cM_rnd() < 0.3f) { - setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.mWallAttachAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG, &mpHIO->mLadder.m.mWallAttachAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachAnm.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } else { - setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.mWallAttachMissAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachMissAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &mpHIO->mLadder.m.mWallAttachMissAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachMissAnm.mCancelFrame; voiceStart(Z2SE_AL_V_FOOT_MISS); } @@ -2072,7 +2072,7 @@ int daAlink_c::procClimbUpStartInit(int param_0) { dComIfGp_setPlayerStatus0(0, 8); if (param_0) { - current.pos.y = field_0x34ec.y + daAlinkHIO_ladder_c0::m.mWallApproachOffset; + current.pos.y = field_0x34ec.y + mpHIO->mLadder.m.mWallApproachOffset; } field_0x2f99 = 2; @@ -2138,12 +2138,12 @@ int daAlink_c::procClimbDownStartInit(s16 param_0) { deleteEquipItem(TRUE, FALSE); if (cM_rnd() < 0.7f) { - setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.mWallAttachAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG, &mpHIO->mLadder.m.mWallAttachAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachAnm.mCancelFrame; mProcVar0.field_0x3008 = 0; } else { - setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.mWallAttachMissAnm); - field_0x3478 = daAlinkHIO_ladder_c0::m.mWallAttachMissAnm.mCancelFrame; + setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &mpHIO->mLadder.m.mWallAttachMissAnm); + field_0x3478 = mpHIO->mLadder.m.mWallAttachMissAnm.mCancelFrame; mProcVar0.field_0x3008 = 1; voiceStart(Z2SE_AL_V_FOOT_MISS); } @@ -2504,7 +2504,7 @@ int daAlink_c::procClimbToRoof() { if (sp38.y < current.pos.y + 214.0f + 110.0f) { procRoofHangStartInit(mLinkRoofChk, sp38, 1); } else { - procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } } @@ -2513,13 +2513,13 @@ int daAlink_c::procClimbToRoof() { f32 daAlink_c::getRoofHangFMoveAnmSpeed() const { - return getAnmSpeedStickRate(daAlinkHIO_roofHang_c0::m.mVertMoveMinASpeed, - daAlinkHIO_roofHang_c0::m.mVertMoveMaxASpeed); + return getAnmSpeedStickRate(mpHIO->mRoofHang.m.mVertMoveMinASpeed, + mpHIO->mRoofHang.m.mVertMoveMaxASpeed); } f32 daAlink_c::getRoofHangSMoveAnmSpeed() const { - return getAnmSpeedStickRate(daAlinkHIO_roofHang_c0::m.mHorizMoveMinASpeed, - daAlinkHIO_roofHang_c0::m.mHorizMoveMaxASpeed); + return getAnmSpeedStickRate(mpHIO->mRoofHang.m.mHorizMoveMinASpeed, + mpHIO->mRoofHang.m.mHorizMoveMaxASpeed); } void daAlink_c::setRoofHangHandOnSE(cBgS_PolyInfo* unused) { @@ -2566,7 +2566,7 @@ int daAlink_c::commonRoofHangProc() { setDoStatus(0x33); if (doTrigger()) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } cXyz sp28(current.pos.x, (current.pos.y + 214.0f) - 10.0f, current.pos.z); @@ -2579,7 +2579,7 @@ int daAlink_c::commonRoofHangProc() { current.pos.y = roof_y - 214.0f; mPolyInfo2.SetPolyInfo(mLinkRoofChk); } else { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } return 0; @@ -2624,7 +2624,7 @@ int daAlink_c::checkNextActionRoofHang() { int daAlink_c::procRoofHangStartInit(cBgS_PolyInfo const& param_0, cXyz const& param_1, int param_2) { commonProcInit(PROC_ROOF_HANG_START); - setSingleAnimeParam(ANM_ROOF_HANG, &daAlinkHIO_roofHang_c0::m.mRoofHangAnm); + setSingleAnimeParam(ANM_ROOF_HANG, &mpHIO->mRoofHang.m.mRoofHangAnm); mPolyInfo2.SetPolyInfo(param_0); current.pos = param_1; @@ -2655,7 +2655,7 @@ int daAlink_c::procRoofHangStart() { if (mProcVar0.field_0x3008 == 0 && (checkAnmEnd(frame_ctrl) || (checkInputOnR() && - frame_ctrl->getFrame() > daAlinkHIO_roofHang_c0::m.mRoofHangAnm.mCancelFrame))) + frame_ctrl->getFrame() > mpHIO->mRoofHang.m.mRoofHangAnm.mCancelFrame))) { checkNextActionRoofHang(); } else if (checkAnmEnd(frame_ctrl)) { @@ -2684,7 +2684,7 @@ int daAlink_c::procRoofHangWaitInit(int param_0) { } } - setSingleAnimeBaseSpeed(ANM_ROOF_HANG_WAIT, daAlinkHIO_roofHang_c0::m.mStandbyASpeed, daAlinkHIO_roofHang_c0::m.mStandbyInterp); + setSingleAnimeBaseSpeed(ANM_ROOF_HANG_WAIT, mpHIO->mRoofHang.m.mStandbyASpeed, mpHIO->mRoofHang.m.mStandbyInterp); current.angle.y = shape_angle.y; setSpecialGravity(0.0f, maxFallSpeed, 0); @@ -2731,7 +2731,7 @@ int daAlink_c::procRoofHangFrontMoveInit() { frame = mUnderFrameCtrl[0].getFrame(); } - setSingleAnimeBaseSpeed(ANM_ROOF_HANG_MOVE, anm_speed, daAlinkHIO_roofHang_c0::m.mVertMoveInterp); + setSingleAnimeBaseSpeed(ANM_ROOF_HANG_MOVE, anm_speed, mpHIO->mRoofHang.m.mVertMoveInterp); if (frame >= 0) { mUnderFrameCtrl[0].setFrame(frame); @@ -2758,9 +2758,9 @@ int daAlink_c::procRoofHangFrontMove() { checkNextActionRoofHang(); } else { if (!checkAttentionLock()) { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_roofHang_c0::m.mTurnAngleRate, - daAlinkHIO_roofHang_c0::m.mMaxTurnAngle, - daAlinkHIO_roofHang_c0::m.mMinTurnAngle); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mRoofHang.m.mTurnAngleRate, + mpHIO->mRoofHang.m.mMaxTurnAngle, + mpHIO->mRoofHang.m.mMinTurnAngle); if (field_0x2f98 == 0) { shape_angle.y = current.angle.y; @@ -2776,8 +2776,8 @@ int daAlink_c::procRoofHangFrontMove() { frame = frameCtrl->getFrame(); } - mNormalSpeed = getAnmSpeedStickRate(daAlinkHIO_roofHang_c0::m.mVertMoveMinSpeed, - daAlinkHIO_roofHang_c0::m.mVertMoveMaxSpeed) * + mNormalSpeed = getAnmSpeedStickRate(mpHIO->mRoofHang.m.mVertMoveMinSpeed, + mpHIO->mRoofHang.m.mVertMoveMaxSpeed) * cM_fsin((frame * M_PI) * 0.083333336f); if (mNormalSpeed < 0.0f) { mNormalSpeed = 0.0f; @@ -2804,7 +2804,7 @@ int daAlink_c::procRoofHangFrontMove() { if (cLib_distanceAngleS(sp70.mNormal.atan2sX_Z(), shape_angle.y) > 0x6000) { current.pos.x = sp70.mNormal.x * 15.0f + mLinkLinChk.GetCross().x; current.pos.z = sp70.mNormal.z * 15.0f + mLinkLinChk.GetCross().z; - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } } } @@ -2833,7 +2833,7 @@ int daAlink_c::procRoofHangSideMoveInit() { } setSingleAnimeBaseSpeed(anm_id, getRoofHangSMoveAnmSpeed(), - daAlinkHIO_roofHang_c0::m.mHorizMoveInterp); + mpHIO->mRoofHang.m.mHorizMoveInterp); setSpecialGravity(0.0f, maxFallSpeed, 0); f32 tmp_0 = 0.0f; @@ -2874,7 +2874,7 @@ int daAlink_c::procRoofHangTurnInit() { f32 anm_speed; if ((s16)(field_0x2fe2 - shape_angle.y) < 0) { - anm_speed = -daAlinkHIO_roofHang_c0::m.mInvertASpeed; + anm_speed = -mpHIO->mRoofHang.m.mInvertASpeed; mProcVar0.field_0x3008 = 1; shape_angle.y += 0x8000; setOldRootQuaternion(0, -0x8000, 0); @@ -2883,7 +2883,7 @@ int daAlink_c::procRoofHangTurnInit() { field_0x3478 = 0.0f; field_0x347c = 10.0f; } else { - anm_speed = daAlinkHIO_roofHang_c0::m.mInvertASpeed; + anm_speed = mpHIO->mRoofHang.m.mInvertASpeed; mProcVar0.field_0x3008 = 0; mProcVar2.field_0x300c = field_0x2fe2 + 0x8000; field_0x3478 = 10.0f; @@ -2891,7 +2891,7 @@ int daAlink_c::procRoofHangTurnInit() { } current.angle.y = shape_angle.y; - setSingleAnimeBaseSpeed(ANM_ROOF_HANG_TURN, anm_speed, daAlinkHIO_roofHang_c0::m.mInvertInterp); + setSingleAnimeBaseSpeed(ANM_ROOF_HANG_TURN, anm_speed, mpHIO->mRoofHang.m.mInvertInterp); if (mProcVar0.field_0x3008 != 0) { setFaceBasicTexture(FTANM_UNK_4); @@ -2945,7 +2945,7 @@ void daAlink_c::setRoofHangSwitch() { int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) { commonProcInit(PROC_ROOF_SWITCH_HANG); deleteEquipItem(TRUE, FALSE); - setSingleAnimeParam(ANM_ROOF_HANG, &daAlinkHIO_roofHang_c0::m.mRoofHangAnm); + setSingleAnimeParam(ANM_ROOF_HANG, &mpHIO->mRoofHang.m.mRoofHangAnm); setSpecialGravity(0.0f, maxFallSpeed, 0); f32 tmp_0 = 0.0f; @@ -2970,20 +2970,20 @@ int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) { int daAlink_c::procRoofSwitchHang() { if (field_0x280c.getActor() == NULL) { - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } setRoofHangSwitch(); if (checkAnmEnd(mUnderFrameCtrl)) { - setSingleAnimeBaseSpeed(ANM_ROOF_HANG_WAIT, daAlinkHIO_roofHang_c0::m.mStandbyASpeed, - daAlinkHIO_roofHang_c0::m.mStandbyInterp); + setSingleAnimeBaseSpeed(ANM_ROOF_HANG_WAIT, mpHIO->mRoofHang.m.mStandbyASpeed, + mpHIO->mRoofHang.m.mStandbyInterp); mProcVar2.field_0x300c = 1; } else if (mProcVar2.field_0x300c != 0) { setDoStatus(0x33); if (doTrigger()) { - procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } } diff --git a/src/d/actor/d_a_alink_hook.inc b/src/d/actor/d_a_alink_hook.inc index 5648f66296..00a6cf4ce6 100644 --- a/src/d/actor/d_a_alink_hook.inc +++ b/src/d/actor/d_a_alink_hook.inc @@ -426,9 +426,9 @@ void daAlink_c::setHookshotSight() { cXyz sight_pos; f32 length; if (checkLv7BossRoom()) { - length = daAlinkHIO_hookshot_c0::m.mBossMaxLength; + length = mpHIO->mItem.mHookshot.m.mBossMaxLength; } else { - length = daAlinkHIO_hookshot_c0::m.mMaxLength; + length = mpHIO->mItem.mHookshot.m.mMaxLength; } BOOL line_cross = checkSightLine(length, &sight_pos); @@ -519,7 +519,7 @@ int daAlink_c::initHookshotUpperAnimeSpeed(int param_0) { mUpperFrameCtrl[2].setFrame(tmp_0); getNowAnmPackUpper(UPPER_2)->setFrame(tmp_0); } else { - setWaterInAnmRate(&mUpperFrameCtrl[2], daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed); + setWaterInAnmRate(&mUpperFrameCtrl[2], mpHIO->mItem.mHookshot.m.mWaitAnmSpeed); } return 1; @@ -545,7 +545,7 @@ void daAlink_c::setHookshotReadyAnime() { if (!checkAttentionLock() && mFastShotTime == 0) { speed = 0.0f; } else { - speed = daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed; + speed = mpHIO->mItem.mHookshot.m.mWaitAnmSpeed; } setUpperAnimeBaseSpeed(dRes_INDEX_ALANM_BCK_HSWAIT_e, speed, 3.0f); @@ -583,7 +583,7 @@ int daAlink_c::checkUpperItemActionHookshot() { setSingleAnimeBaseMorf(anmID, 0.0f); } else if (checkModeFlg(0x40400)) { - setUpperAnimeParam(0x18C, UPPER_2, &daAlinkHIO_hookshot_c0::m.mShootAnm); + setUpperAnimeParam(0x18C, UPPER_2, &mpHIO->mItem.mHookshot.m.mShootAnm); if (checkModeFlg(0x40000)) { mNormalSpeed = 0.0f; @@ -599,7 +599,7 @@ int daAlink_c::checkUpperItemActionHookshot() { mSpeedModifier = tmp_0; mNowAnmPackUpper[2].setRatio(tmp_0); - setSingleAnimeParam(ANM_HOOKSHOT_SHOOT, &daAlinkHIO_hookshot_c0::m.mShootAnm); + setSingleAnimeParam(ANM_HOOKSHOT_SHOOT, &mpHIO->mItem.mHookshot.m.mShootAnm); } if (!checkNoResetFlg3(FLG3_UNK_4)) { @@ -701,7 +701,7 @@ void daAlink_c::setHookshotReturnEnd() { field_0x2060->initOldFrameMorf(3.0f, field_0x30a8, field_0x30aa); } else if (checkHookshotShootAnime()) { setUpperAnimeBaseSpeed( - 0x18D, checkAttentionLock() ? daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed : 0.0f, 3.0f); + 0x18D, checkAttentionLock() ? mpHIO->mItem.mHookshot.m.mWaitAnmSpeed : 0.0f, 3.0f); } mFastShotTime = 0; @@ -863,21 +863,21 @@ void daAlink_c::setHookshotPos() { f32 shoot_speed; f32 length; if (checkLv7BossRoom()) { - return_speed = daAlinkHIO_hookshot_c0::m.mBossReturnSpeed; - shoot_speed = daAlinkHIO_hookshot_c0::m.mBossShootSpeed; - length = daAlinkHIO_hookshot_c0::m.mBossMaxLength; + return_speed = mpHIO->mItem.mHookshot.m.mBossReturnSpeed; + shoot_speed = mpHIO->mItem.mHookshot.m.mBossShootSpeed; + length = mpHIO->mItem.mHookshot.m.mBossMaxLength; } else { - return_speed = daAlinkHIO_hookshot_c0::m.mReturnSpeed; - shoot_speed = daAlinkHIO_hookshot_c0::m.mShootSpeed; - length = daAlinkHIO_hookshot_c0::m.mMaxLength; + return_speed = mpHIO->mItem.mHookshot.m.mReturnSpeed; + shoot_speed = mpHIO->mItem.mHookshot.m.mShootSpeed; + length = mpHIO->mItem.mHookshot.m.mMaxLength; } if (mItemMode == HS_MODE_RETURN_e) { if (targetAc_p != NULL) { if (checkLv7BossRoom()) { - return_speed = daAlinkHIO_hookshot_c0::m.mBossStickReturnSpeed; + return_speed = mpHIO->mItem.mHookshot.m.mBossStickReturnSpeed; } else { - return_speed = daAlinkHIO_hookshot_c0::m.mStickReturnSpeed; + return_speed = mpHIO->mItem.mHookshot.m.mStickReturnSpeed; } } @@ -1209,7 +1209,7 @@ void daAlink_c::hookshotRoofTurn() { BOOL play_sound = false; if (!dComIfGp_checkPlayerStatus0(0, 0x2000)) { f32 max_rise_y = (mIronBallBgChkPos.y + 15.0f) - 1.5f; - f32 min_descend_y = mIronBallBgChkPos.y - daAlinkHIO_hookshot_c0::m.mMaxLength; + f32 min_descend_y = mIronBallBgChkPos.y - mpHIO->mItem.mHookshot.m.mMaxLength; if (checkInputOnR()) { int stick_direction = getDirectionFromAngle(mStickAngle); @@ -1223,7 +1223,7 @@ void daAlink_c::hookshotRoofTurn() { current.angle.y = shape_angle.y; if (stick_direction == DIR_FORWARD) { - current.pos.y += daAlinkHIO_hookshot_c0::m.mRoofHangRiseSpeed * field_0x33a8; + current.pos.y += mpHIO->mItem.mHookshot.m.mRoofHangRiseSpeed * field_0x33a8; if (current.pos.y > max_rise_y) { current.pos.y = max_rise_y; } else { @@ -1231,7 +1231,7 @@ void daAlink_c::hookshotRoofTurn() { play_sound = true; } } else if (stick_direction == DIR_BACKWARD) { - f32 descend_speed = daAlinkHIO_hookshot_c0::m.mRoofHangDecendSpeed * field_0x33ac; + f32 descend_speed = mpHIO->mItem.mHookshot.m.mRoofHangDecendSpeed * field_0x33ac; if (checkBootsOrArmorHeavy()) { descend_speed *= 1.5f; } @@ -1379,7 +1379,7 @@ int daAlink_c::procHookshotSubjectInit() { if (initHookshotUpperAnimeSpeed(1)) { setSingleAnimeBaseSpeed(ANM_ATN_WAIT_LEFT, 0.0f, - daAlinkHIO_hookshot_c0::m.mStartInterpolation); + mpHIO->mItem.mHookshot.m.mStartInterpolation); } dComIfGp_setPlayerStatus0(0, 0x4000); @@ -1422,7 +1422,7 @@ int daAlink_c::procHookshotMoveInit() { } if (initHookshotUpperAnimeSpeed(0)) { - setBlendAtnMoveAnime(daAlinkHIO_hookshot_c0::m.mStartInterpolation); + setBlendAtnMoveAnime(mpHIO->mItem.mHookshot.m.mStartInterpolation); } dComIfGp_setPlayerStatus0(0, 0x4000); @@ -1440,7 +1440,7 @@ int daAlink_c::procHookshotMove() { if (field_0x2f98 != 2) { field_0x2f98 = 2; - blend = daAlinkHIO_basic_c0::m.mBasicInterpolation; + blend = mpHIO->mBasic.m.mBasicInterpolation; } } else { offModeFlg(1); @@ -1529,7 +1529,7 @@ int daAlink_c::procHookshotFly() { } else { mProcVar0.field_0x3008 = 0; f32 temp_f31 = field_0x37d4.abs(); - f32 temp_f30 = daAlinkHIO_hookshot_c0::m.mStickReturnSpeed + spAC.abs(mHookshotTopPos); + f32 temp_f30 = mpHIO->mItem.mHookshot.m.mStickReturnSpeed + spAC.abs(mHookshotTopPos); if (temp_f31 < temp_f30 || mProcVar1.field_0x300a == 0) { setHookshotReturnEnd(); @@ -1665,7 +1665,7 @@ int daAlink_c::procHookshotRoofWaitInit(int param_0, fopAc_ac_c* param_1, int pa } mProcVar2.field_0x300c = 0; - setSingleAnimeParam(anm, &daAlinkHIO_hookshot_c0::m.mRoofHangAnm); + setSingleAnimeParam(anm, &mpHIO->mItem.mHookshot.m.mRoofHangAnm); } else { setHookshotRoofWaitAnime(); mProcVar2.field_0x300c = 1; @@ -1737,7 +1737,7 @@ int daAlink_c::procHookshotRoofWait() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; if (frameCtrl_p->checkAnmEnd() || ((checkInputOnR() || mProcVar5.field_0x3012 != 0 || checkHookshotRoofLv7Boss()) && - frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mRoofHangAnm.mCancelFrame)) + frameCtrl_p->getFrame() > mpHIO->mItem.mHookshot.m.mRoofHangAnm.mCancelFrame)) { setHookshotRoofWaitAnime(); mProcVar2.field_0x300c = 1; @@ -1930,7 +1930,7 @@ int daAlink_c::procHookshotWallWaitInit(int param_0, s16 param_1, int param_2) { } mProcVar2.field_0x300c = 0; - setSingleAnimeParam(anm, &daAlinkHIO_hookshot_c0::m.mWallHangAnm); + setSingleAnimeParam(anm, &mpHIO->mItem.mHookshot.m.mWallHangAnm); } else { setHookshotWallWaitAnime(); mProcVar2.field_0x300c = 1; @@ -2003,7 +2003,7 @@ int daAlink_c::procHookshotWallWait() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; if (frameCtrl_p->checkAnmEnd() || ((checkInputOnR() || mProcVar5.field_0x3012 != 0) && - frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mWallHangAnm.mCancelFrame)) + frameCtrl_p->getFrame() > mpHIO->mItem.mHookshot.m.mWallHangAnm.mCancelFrame)) { setHookshotWallWaitAnime(); mProcVar2.field_0x300c = 1; diff --git a/src/d/actor/d_a_alink_horse.inc b/src/d/actor/d_a_alink_horse.inc index b965b6e9b5..431ee62947 100644 --- a/src/d/actor/d_a_alink_horse.inc +++ b/src/d/actor/d_a_alink_horse.inc @@ -270,8 +270,8 @@ BOOL daAlink_c::checkHorseSubjectivity() const { } void daAlink_c::setHorseSwordUpAnime() { - setUpperAnimeBaseSpeed(0xCC, daAlinkHIO_horse_c0::m.mSwordUpAnmSpeed, - daAlinkHIO_horse_c0::m.mSwordUpInterpolation); + setUpperAnimeBaseSpeed(0xCC, mpHIO->mHorse.m.mSwordUpAnmSpeed, + mpHIO->mHorse.m.mSwordUpInterpolation); setFaceBck(0xE8, 1, 0xFFFF); } @@ -661,8 +661,8 @@ int daAlink_c::setSyncHorse(int param_0) { s32 dir = getDirectionFromShapeAngle(); if (dir == DIR_FORWARD) { - field_0x3004 = daAlinkHIO_horse_c0::m.mWalkOutProhibitionTime; - setSingleAnimeParam(ANM_WSTARTH, &daAlinkHIO_horse_c0::m.mWalkOutAnm); + field_0x3004 = mpHIO->mHorse.m.mWalkOutProhibitionTime; + setSingleAnimeParam(ANM_WSTARTH, &mpHIO->mHorse.m.mWalkOutAnm); offNoResetFlg1(FLG1_UNK_1000); } } @@ -697,18 +697,18 @@ int daAlink_c::setSyncHorse(int param_0) { if (doTrigger()) { onResetFlg0(RFLG0_COW_GAME_LEASH); voiceStart(Z2SE_AL_V_RUSH_HORSE); - field_0x30a6 = daAlinkHIO_horse_c0::m.mWhipWaitTime; + field_0x30a6 = mpHIO->mHorse.m.mWhipWaitTime; setHorseSwordUpAnime(); - field_0x3002 = -daAlinkHIO_horse_c0::m.mWhipWaitTime; + field_0x3002 = -mpHIO->mHorse.m.mWhipWaitTime; } } } else if (checkHorseDashAccept()) { setDoStatus(9); if (doTrigger()) { - field_0x3004 = daAlinkHIO_horse_c0::m.mWalkOutProhibitionTime; + field_0x3004 = mpHIO->mHorse.m.mWalkOutProhibitionTime; daAlink_ANM anm; - const daAlinkHIO_anm_c* anmparam_p = &daAlinkHIO_horse_c0::m.mWhipAnm; + const daAlinkHIO_anm_c* anmparam_p = &mpHIO->mHorse.m.mWhipAnm; anm = ANM_HORSE_LASH; if (mProcID != PROC_HORSE_CUT && mProcID != PROC_HORSE_CUT_TURN && @@ -718,7 +718,7 @@ int daAlink_c::setSyncHorse(int param_0) { } setUnderAnimeParam(getMainBckData(anm)->m_underID, UNDER_2, - &daAlinkHIO_horse_c0::m.mWhipAnm); + &mpHIO->mHorse.m.mWhipAnm); onNoResetFlg1(FLG1_UNK_1000); horse_p->offPlayerBackRideLash(); voiceStart(Z2SE_AL_V_RUSH_HORSE); @@ -727,13 +727,13 @@ int daAlink_c::setSyncHorse(int param_0) { onNoResetFlg1(FLG1_UNK_800); } - field_0x30a6 = daAlinkHIO_horse_c0::m.mWhipWaitTime; + field_0x30a6 = mpHIO->mHorse.m.mWhipWaitTime; } } } if ((checkHorseWalkStartAnm() && - sp24->getFrame() > daAlinkHIO_horse_c0::m.mHorseWalkStartFrame) || + sp24->getFrame() > mpHIO->mHorse.m.mHorseWalkStartFrame) || (checkHorseWaitLashAnime() && sp20->getFrame() > 13.0f)) { horse_p->onMoveAccept(); @@ -749,22 +749,22 @@ int daAlink_c::setSyncHorse(int param_0) { if (checkHorseSwordUpAnime()) { if (checkHorseZeldaBowMode()) { - resetUpperAnime(UPPER_2, daAlinkHIO_horse_c0::m.mSwordUpInterpolation); + resetUpperAnime(UPPER_2, mpHIO->mHorse.m.mSwordUpInterpolation); field_0x3002 = 0; } else if (field_0x3002 > 0) { field_0x3002--; if (field_0x3002 == 0 || horse_p->speedF < horse_p->getNormalMaxSpeedF()) { - resetUpperAnime(UPPER_2, daAlinkHIO_horse_c0::m.mSwordUpInterpolation); + resetUpperAnime(UPPER_2, mpHIO->mHorse.m.mSwordUpInterpolation); field_0x3002 = 0; } } else { - field_0x30ec = daAlinkHIO_horse_c0::m.mSwordUpInterpolation; + field_0x30ec = mpHIO->mHorse.m.mSwordUpInterpolation; field_0x3002++; if (field_0x3002 == 0) { - resetUpperAnime(UPPER_2, daAlinkHIO_horse_c0::m.mSwordUpInterpolation); - field_0x30ec = daAlinkHIO_horse_c0::m.mSwordUpInterpolation; + resetUpperAnime(UPPER_2, mpHIO->mHorse.m.mSwordUpInterpolation); + field_0x30ec = mpHIO->mHorse.m.mSwordUpInterpolation; } } } @@ -780,7 +780,7 @@ int daAlink_c::setSyncHorse(int param_0) { mProcID != PROC_HORSE_CUT_TURN) || field_0x2f8c == 10) { - if ((var_r28 || field_0x3004 != daAlinkHIO_horse_c0::m.mWalkOutProhibitionTime) && field_0x3004 != 0) { + if ((var_r28 || field_0x3004 != mpHIO->mHorse.m.mWalkOutProhibitionTime) && field_0x3004 != 0) { field_0x3004--; } @@ -828,8 +828,8 @@ int daAlink_c::setSyncBoar(int param_0) { { int direction = getDirectionFromShapeAngle(); if (direction == DIR_FORWARD || direction == DIR_BACKWARD) { - field_0x3004 = daAlinkHIO_horse_c0::m.mWalkOutProhibitionTime; - setSingleAnimeParam(ANM_WSTARTH, &daAlinkHIO_horse_c0::m.mWalkOutAnm); + field_0x3004 = mpHIO->mHorse.m.mWalkOutProhibitionTime; + setSingleAnimeParam(ANM_WSTARTH, &mpHIO->mHorse.m.mWalkOutAnm); } } @@ -995,7 +995,7 @@ void daAlink_c::setHorseSwordUp(int param_0) { (!param_0 && checkEnemyGroup(mTargetedActor) && checkNoResetFlg1(FLG1_UNK_800)))) { setHorseSwordUpAnime(); - field_0x3002 = daAlinkHIO_horse_c0::m.mSwordUpTime; + field_0x3002 = mpHIO->mHorse.m.mSwordUpTime; } offNoResetFlg1(FLG1_UNK_800); @@ -1009,10 +1009,10 @@ int daAlink_c::setRideSubjectAngle(s16 param_0) { if (mTargetedActor != NULL) { var_r30 = 10000; } else { - var_r30 = daAlinkHIO_horse_c0::m.mSubjectiveDownwardMaxAngle; + var_r30 = mpHIO->mHorse.m.mSubjectiveDownwardMaxAngle; } - mBodyAngle.x = cLib_minMaxLimit((s16)mBodyAngle.x, daAlinkHIO_horse_c0::m.mSubjectiveUpwardMaxAngle, var_r30); + mBodyAngle.x = cLib_minMaxLimit((s16)mBodyAngle.x, mpHIO->mHorse.m.mSubjectiveUpwardMaxAngle, var_r30); s16 temp_r29 = shape_angle.y - param_0; if (checkHorseZelda()) { @@ -1057,7 +1057,7 @@ BOOL daAlink_c::checkHorseGetOffWallCheck(cXyz* i_lineStartPos, cXyz* i_lineEndP return TRUE; } - if (getGroundAngle(&mLinkLinChk, param_2) < -cM_deg2s(daAlinkHIO_wlSlide_c0::m.mSlidingAngle)) { + if (getGroundAngle(&mLinkLinChk, param_2) < -cM_deg2s(mpHIO->mWolf.mWlSlide.m.mSlidingAngle)) { return TRUE; } @@ -1222,7 +1222,7 @@ int daAlink_c::setHorseGetOff(int param_0) { if ((checkHorseRide() && horse_p->checkEnemySearch()) || checkHorseLieAnime()) { resetUpperAnime(UPPER_2, -1.0f); procBackJumpInit(0); - current.pos.y += daAlinkHIO_backJump_c0::m.mBackflipSpeedV; + current.pos.y += mpHIO->mBackJump.m.mBackflipSpeedV; } else { return procHorseGetOffInit(param_0); } @@ -1461,13 +1461,13 @@ int daAlink_c::procHorseRide() { field_0x2fc0 = 0; if (checkHorseDashAccept()) { - setSingleAnimeParam(ANM_HORSE_LASH, &daAlinkHIO_horse_c0::m.mWhipAnm); - setUnderAnimeParam(getMainBckData(ANM_HORSE_LASH)->m_underID, UNDER_2, &daAlinkHIO_horse_c0::m.mWhipAnm); + setSingleAnimeParam(ANM_HORSE_LASH, &mpHIO->mHorse.m.mWhipAnm); + setUnderAnimeParam(getMainBckData(ANM_HORSE_LASH)->m_underID, UNDER_2, &mpHIO->mHorse.m.mWhipAnm); onNoResetFlg1(FLG1_UNK_1000); voiceStart(Z2SE_AL_V_RUSH_HORSE); - field_0x30a6 = daAlinkHIO_horse_c0::m.mWhipWaitTime; - field_0x3004 = daAlinkHIO_horse_c0::m.mWalkOutProhibitionTime; + field_0x30a6 = mpHIO->mHorse.m.mWhipWaitTime; + field_0x3004 = mpHIO->mHorse.m.mWalkOutProhibitionTime; var_r26->onPlayerBackRideLash(); } } else if (mProcVar2.field_0x300c == 0 && checkHorseRide()) { @@ -1996,14 +1996,14 @@ int daAlink_c::procHorseCutInit() { field_0x3484 = var_r29->mCutAnm.mCancelFrame; if (checkBoarSingleBattle()) { - setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, daAlinkHIO_cut_c0::m.mSwordLengthHorsebackFight, daAlinkHIO_cut_c0::m.mSwordRadiusHorsebackFight); + setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, mpHIO->mCut.m.mSwordLengthHorsebackFight, mpHIO->mCut.m.mSwordRadiusHorsebackFight); } else { - setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, daAlinkHIO_cut_c0::m.mSwordLengthHorseback, daAlinkHIO_cut_c0::m.mSwordRadiusHorseback); + setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, mpHIO->mCut.m.mSwordLengthHorseback, mpHIO->mCut.m.mSwordRadiusHorseback); } voiceStart(Z2SE_AL_V_ATTACK_S); - field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + field_0x307e = mpHIO->mCut.m.mComboDuration; mProcVar5.field_0x3012 = 0; field_0x3004 = 0; @@ -2069,7 +2069,7 @@ int daAlink_c::procHorseCut() { int daAlink_c::procHorseCutChargeReadyInit() { commonProcInit(PROC_HORSE_CUT_CHARGE_READY); - setUpperAnimeParam(0x96, UPPER_2, &daAlinkHIO_hoCutCharge_c0::m.mChargeAnm); + setUpperAnimeParam(0x96, UPPER_2, &mpHIO->mCut.mHorseCutCharge.m.mChargeAnm); setFacePriBck(0xE8); field_0x2f96 = 2; @@ -2078,7 +2078,7 @@ int daAlink_c::procHorseCutChargeReadyInit() { resetUnderAnime(UNDER_2, -1.0f); } - mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration; + mProcVar2.field_0x300c = mpHIO->mCut.m.mNormalSwingDuration; field_0x3004 = 0; onNoResetFlg1(FLG1_UNK_10000000); return 1; @@ -2130,12 +2130,12 @@ int daAlink_c::procHorseCutTurnInit() { resetUnderAnime(UNDER_2, -1.0f); } - setSingleAnimeParam(ANM_HORSE_CUT_TURN, &daAlinkHIO_hoCutCharge_c0::m.mSpinAnm); + setSingleAnimeParam(ANM_HORSE_CUT_TURN, &mpHIO->mCut.mHorseCutCharge.m.mSpinAnm); setCutType(43); setSyncRide(1); - field_0x3478 = daAlinkHIO_hoCutCharge_c0::m.mSpinAttackRadius; + field_0x3478 = mpHIO->mCut.mHorseCutCharge.m.mSpinAttackRadius; setCylAtParam(getSwordAtType(), dCcG_At_Spl_UNK_1, 3, 1, 3, field_0x3478 * 0.5f, 200.0f); - mProcVar4.field_0x3010 = daAlinkHIO_hoCutCharge_c0::m.mSpinStopTime; + mProcVar4.field_0x3010 = mpHIO->mCut.mHorseCutCharge.m.mSpinStopTime; voiceStart(Z2SE_AL_V_KAITEN); setCutWaterDropEffect(); setHorseZeldaDamage(); @@ -2153,7 +2153,7 @@ int daAlink_c::procHorseCutTurn() { procHorseWaitInit(); field_0x2060->initOldFrameMorf(4.0f, 0, 0x23); } else { - if (temp_r30->getFrame() > daAlinkHIO_hoCutCharge_c0::m.mSpinAnm.mCancelFrame) { + if (temp_r30->getFrame() > mpHIO->mCut.mHorseCutCharge.m.mSpinAnm.mCancelFrame) { if (orderTalk(1)) { return 1; } @@ -2168,7 +2168,7 @@ int daAlink_c::procHorseCutTurn() { } } - if (temp_r30->getFrame() >= daAlinkHIO_hoCutCharge_c0::m.mSpinAttackStartFrame && temp_r30->getFrame() < daAlinkHIO_hoCutCharge_c0::m.mSpinAttackEndFrame) { + if (temp_r30->getFrame() >= mpHIO->mCut.mHorseCutCharge.m.mSpinAttackStartFrame && temp_r30->getFrame() < mpHIO->mCut.mHorseCutCharge.m.mSpinAttackEndFrame) { if (!checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_KAITENGIRI); } @@ -2201,7 +2201,7 @@ int daAlink_c::procHorseDamageInit(dCcD_GObjInf* param_0) { if (checkUnderMove0BckNoArc(ANM_HORSE_STOP) || checkUnderMove0BckNoArc(ANM_HORSE_STOP_TO_STAND) || checkUnderMove0BckNoArc(ANM_HORSE_STAND) || checkUnderMove0BckNoArc(ANM_HORSE_DASH_B) || checkUnderMove0BckNoArc(ANM_HORSE_DASH_A) || checkUnderMove0BckNoArc(ANM_HORSE_DASH_START)) { mProcVar4.field_0x3010 = 0; mProcVar5.field_0x3012 = 0; - setUpperAnimeParam(anmIdx[4], UPPER_2, &daAlinkHIO_damHorse_c0::m.mNoDirectionAnm); + setUpperAnimeParam(anmIdx[4], UPPER_2, &mpHIO->mDamage.mDamHorse.m.mNoDirectionAnm); } else { cXyz* temp_r29 = getDamageVec(param_0); @@ -2209,11 +2209,11 @@ int daAlink_c::procHorseDamageInit(dCcD_GObjInf* param_0) { f32 temp_f1 = cM_scos(shape_angle.y); cXyz spC((temp_r29->z * -temp_f31) + (temp_r29->x * temp_f1), temp_r29->y, (temp_r29->z * temp_f1) + (temp_r29->x * temp_f31)); - mProcVar4.field_0x3010 = cLib_minMaxLimit(cM_atan2s(spC.z, spC.y), -daAlinkHIO_damHorse_c0::m.mFrontBackBodyMaxAngle, daAlinkHIO_damHorse_c0::m.mFrontBackBodyMaxAngle); - mProcVar5.field_0x3012 = cLib_minMaxLimit(cM_atan2s(spC.x, -JMAFastSqrt((spC.y * spC.y) + (spC.z * spC.z))), -daAlinkHIO_damHorse_c0::m.mLeftRightBodyMaxAngle, daAlinkHIO_damHorse_c0::m.mLeftRightBodyMaxAngle); + mProcVar4.field_0x3010 = cLib_minMaxLimit(cM_atan2s(spC.z, spC.y), -mpHIO->mDamage.mDamHorse.m.mFrontBackBodyMaxAngle, mpHIO->mDamage.mDamHorse.m.mFrontBackBodyMaxAngle); + mProcVar5.field_0x3012 = cLib_minMaxLimit(cM_atan2s(spC.x, -JMAFastSqrt((spC.y * spC.y) + (spC.z * spC.z))), -mpHIO->mDamage.mDamHorse.m.mLeftRightBodyMaxAngle, mpHIO->mDamage.mDamHorse.m.mLeftRightBodyMaxAngle); int direction = getDirectionFromAngle(cM_atan2s(-spC.x, -spC.z)); - setUpperAnimeParam(anmIdx[direction], UPPER_2, &daAlinkHIO_damHorse_c0::m.mWithDirectionAnm); + setUpperAnimeParam(anmIdx[direction], UPPER_2, &mpHIO->mDamage.mDamHorse.m.mWithDirectionAnm); } setFacePriBck(0xEA); @@ -2526,7 +2526,7 @@ int daAlink_c::procHorseBottleDrinkInit(u16 param_0) { mRideAcKeep.getActor()->speedF = 0.0f; } - setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_START)->m_upperID, UPPER_2, &daAlinkHIO_bottle_c0::m.mStartDrinkAnm); + setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_START)->m_upperID, UPPER_2, &mpHIO->mItem.mBottle.m.mStartDrinkAnm); setFacePriAnime(ANM_BOTTLE_DRINK_START); keepItemData(); @@ -2579,7 +2579,7 @@ int daAlink_c::procHorseKandelaarPourInit() { mRideAcKeep.getActor()->speedF = 0.0f; } - setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_upperID, UPPER_2, &daAlinkHIO_kandelaar_c0::m.mBeginUnkAnm); + setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_upperID, UPPER_2, &mpHIO->mItem.mLantern.m.mBeginUnkAnm); commonKandelaarPourInit(); return 1; } diff --git a/src/d/actor/d_a_alink_hvyboots.inc b/src/d/actor/d_a_alink_hvyboots.inc index 9465d66435..a1fc4f7680 100644 --- a/src/d/actor/d_a_alink_hvyboots.inc +++ b/src/d/actor/d_a_alink_hvyboots.inc @@ -260,7 +260,7 @@ int daAlink_c::checkMagneBootsFly() { int daAlink_c::procBootsEquipInit() { commonProcInit(PROC_BOOTS_EQUIP); - setSingleAnimeParam(ANM_HVY_BOOTS_PUT_ON, &daAlinkHIO_magneBoots_c0::m.mEquipAnm); + setSingleAnimeParam(ANM_HVY_BOOTS_PUT_ON, &mpHIO->mItem.mIronBoots.m.mEquipAnm); if (checkUpperReadyThrowAnime()) { resetUpperAnime(UPPER_2, -1.0f); @@ -287,7 +287,7 @@ int daAlink_c::procBootsEquip() { } offModeFlg(2); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_magneBoots_c0::m.mEquipAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mItem.mIronBoots.m.mEquipAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (frameCtrl_p->getFrame() >= 5.0f) { @@ -338,7 +338,7 @@ int daAlink_c::procMagneBootsFlyInit() { } field_0x3478 = 0.0f; - field_0x594 = daAlinkHIO_magneBoots_c0::m.mMaxMagneFlySpeed; + field_0x594 = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed; mProcVar2.field_0x300c = 0; voiceStart(Z2SE_AL_V_MAGNET_CAUGHT); return 1; @@ -346,7 +346,7 @@ int daAlink_c::procMagneBootsFlyInit() { int daAlink_c::procMagneBootsFly() { - field_0x3478 += daAlinkHIO_magneBoots_c0::m.mMagneFlyAccelRate; + field_0x3478 += mpHIO->mItem.mIronBoots.m.mMagneFlyAccelRate; if (field_0x3478 > field_0x594) { field_0x3478 = field_0x594; } diff --git a/src/d/actor/d_a_alink_iceleaf.inc b/src/d/actor/d_a_alink_iceleaf.inc index a9582b1edb..b65645f7ef 100644 --- a/src/d/actor/d_a_alink_iceleaf.inc +++ b/src/d/actor/d_a_alink_iceleaf.inc @@ -114,7 +114,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) { } } } else if (temp_r26 < 0x2000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && (mProcVar3.field_0x300e < field_0x3122) && (checkUnderMove0BckNoArc(ANM_RIDE_WAIT) || checkUnderMove0BckNoArc(ANM_RIDE_FRONT))) { - if (mNormalSpeed <= daAlinkHIO_board_c0::m.mMaxPushSpeed) { + if (mNormalSpeed <= mpHIO->mItem.mBoard.m.mMaxPushSpeed) { return procBoardRowInit(); } } @@ -228,9 +228,18 @@ int daAlink_c::boardCommon(BOOL i_canMove) { } void daAlink_c::setCommonBoardAnime(BOOL i_is_ride_front) { - setDoubleAnime(0.0f, daAlinkHIO_board_c0::m.mStandAnmSpeed, 1.0f, - i_is_ride_front ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP, - 11, daAlinkHIO_board_c0::m.mStandInterpolation); + setDoubleAnime( + 0.0f, + // Fakematch, should be + // mpHIO->mItem.mBoard.m.mStandAnmSpeed, + daAlinkHIO_board_c0::m.mStandAnmSpeed, + 1.0f, + i_is_ride_front ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP, + 11, + // Fakematch, should be + // mpHIO->mItem.mBoard.m.mStandInterpolation + daAlinkHIO_board_c0::m.mStandInterpolation + ); } int daAlink_c::checkNextActionBoard() { @@ -270,20 +279,20 @@ int daAlink_c::commonProcBoardInit(daAlink_c::daAlink_PROC i_procID) { } f32 daAlink_c::getBoardRowAnmSpeed() { - return daAlinkHIO_board_c0::m.mPushAnmMinSpeed + - ((daAlinkHIO_board_c0::m.mPushAnmMaxSpeed - daAlinkHIO_board_c0::m.mPushAnmMinSpeed) * - (1.0f - (mNormalSpeed / daAlinkHIO_board_c0::m.mFastPushSwitchSpeed))); + return mpHIO->mItem.mBoard.m.mPushAnmMinSpeed + + ((mpHIO->mItem.mBoard.m.mPushAnmMaxSpeed - mpHIO->mItem.mBoard.m.mPushAnmMinSpeed) * + (1.0f - (mNormalSpeed / mpHIO->mItem.mBoard.m.mFastPushSwitchSpeed))); } void daAlink_c::setBoardLandAnime() { - setSingleAnimeParam(ANM_RIDE_JUMP_LAND, &daAlinkHIO_board_c0::m.mLandAnm); + setSingleAnimeParam(ANM_RIDE_JUMP_LAND, &mpHIO->mItem.mBoard.m.mLandAnm); seStartOnlyReverb(Z2SE_AL_SNOBO_LAND); dComIfGp_getVibration().StartShock(2, 15, cXyz(0.0f, 1.0f, 0.0f)); } int daAlink_c::procBoardRideInit() { commonProcInit(PROC_BOARD_RIDE); - setSingleAnime(ANM_VJUMP_START, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mSpeed, 6.0f, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mEndFrame, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mInterpolation); + setSingleAnime(ANM_VJUMP_START, mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mSpeed, 6.0f, mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mEndFrame, mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mInterpolation); setHeavyBoots(0); if (mEquipItem != 0x103) { @@ -355,17 +364,17 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) { ((daObjIceLeaf_c*)i_board)->onRide(); if (prev_ride) { - f32 speed_ratio = mNormalSpeed / daAlinkHIO_move_c0::m.mMaxSpeed; + f32 speed_ratio = mNormalSpeed / mpHIO->mMove.m.mMaxSpeed; if (speed_ratio > 1.0f) { speed_ratio = 1.0f; } - mNormalSpeed = daAlinkHIO_board_c0::m.mStartMinSpeed + (daAlinkHIO_board_c0::m.mStartAddSpeed * speed_ratio); + mNormalSpeed = mpHIO->mItem.mBoard.m.mStartMinSpeed + (mpHIO->mItem.mBoard.m.mStartAddSpeed * speed_ratio); } else { mNormalSpeed = 0.0f; } - field_0x594 = daAlinkHIO_board_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mItem.mBoard.m.mMaxSpeed; mProcVar2.field_0x300c = 0; mProcVar3.field_0x300e = 0; setCommonBoardAnime(FALSE); @@ -394,7 +403,7 @@ int daAlink_c::procBoardWait() { mProcVar1.mBoardSwordChargeTime++; - if (mProcVar1.mBoardSwordChargeTime == daAlinkHIO_cut_c0::m.mNormalSwingDuration) { + if (mProcVar1.mBoardSwordChargeTime == mpHIO->mCut.m.mNormalSwingDuration) { setSwordVoiceSe(Z2SE_AL_V_TAME); } @@ -424,7 +433,7 @@ int daAlink_c::procBoardWait() { blend_ratio = 0.0f; } - setDoubleAnime(0.0f, daAlinkHIO_board_c0::m.mSitAnmSpeed, 1.0f, ANM_RIDE_CROUCH, ANM_RIDE_STOP, 0xB, daAlinkHIO_board_c0::m.mSitInterpolation); + setDoubleAnime(0.0f, mpHIO->mItem.mBoard.m.mSitAnmSpeed, 1.0f, ANM_RIDE_CROUCH, ANM_RIDE_STOP, 0xB, mpHIO->mItem.mBoard.m.mSitInterpolation); setDoubleAnimeBlendRatio(blend_ratio); mProcVar5.field_0x3012 = 1; } @@ -453,7 +462,7 @@ int daAlink_c::procBoardWait() { int daAlink_c::procBoardRowInit() { commonProcInit(PROC_BOARD_ROW); - setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), daAlinkHIO_board_c0::m.mPushInterpolation); + setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), mpHIO->mItem.mBoard.m.mPushInterpolation); onResetFlg1(RFLG1_UNK_40); mProcVar0.field_0x3008 = 4; mProcVar4.field_0x3010 = 1; @@ -475,17 +484,17 @@ int daAlink_c::procBoardRow() { daPy_frameCtrl_c* frame_ctrl = &mUnderFrameCtrl[0]; if (frame_ctrl->checkPass(0.0f)) { - if (checkInputOnR() && abs(mStickAngle) < 0x2000 && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && mProcVar3.field_0x300e < field_0x3122 && mNormalSpeed <= daAlinkHIO_board_c0::m.mMaxPushSpeed) { + if (checkInputOnR() && abs(mStickAngle) < 0x2000 && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && mProcVar3.field_0x300e < field_0x3122 && mNormalSpeed <= mpHIO->mItem.mBoard.m.mMaxPushSpeed) { mProcVar5.field_0x3012 = 0; } else { setCommonBoardAnime(FALSE); procBoardWaitInit(NULL); } } else if (frame_ctrl->checkPass(7.0f)) { - mNormalSpeed += daAlinkHIO_board_c0::m.mPushAccel; + mNormalSpeed += mpHIO->mItem.mBoard.m.mPushAccel; - if (mNormalSpeed > daAlinkHIO_board_c0::m.mMaxPushSpeed) { - mNormalSpeed = daAlinkHIO_board_c0::m.mMaxPushSpeed; + if (mNormalSpeed > mpHIO->mItem.mBoard.m.mMaxPushSpeed) { + mNormalSpeed = mpHIO->mItem.mBoard.m.mMaxPushSpeed; } } } @@ -495,7 +504,7 @@ int daAlink_c::procBoardRow() { int daAlink_c::procBoardTurnInit() { commonProcInit(PROC_BOARD_TURN); - setSingleAnime(ANM_RIDE_JUMP, 0.0f, 1.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, 3.0f); + setSingleAnime(ANM_RIDE_JUMP, 0.0f, 1.0f, mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, 3.0f); mNormalSpeed = 0.0f; mProcVar4.field_0x3010 = shape_angle.y + 0x8000; @@ -512,7 +521,7 @@ int daAlink_c::procBoardTurn() { if (mProcVar5.field_0x3012 == 0) { if (field_0x2060->getOldFrameRate() < 0.01f) { mProcVar5.field_0x3012 = 1; - setSingleAnime(ANM_RIDE_JUMP, 1.5f, 1.5f + mUnderFrameCtrl[0].getStart(), daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, -1.0f); + setSingleAnime(ANM_RIDE_JUMP, 1.5f, 1.5f + mUnderFrameCtrl[0].getStart(), mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f); } } else if (mProcVar1.field_0x300a == 0) { if (mUnderFrameCtrl[0].checkPass(6.0f)) { @@ -541,12 +550,12 @@ int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) { mProcVar5.field_0x3012 = 1; setSingleAnime(ANM_RIDE_JUMP, 0.0f, - daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation); + mpHIO->mItem.mBoard.m.mAirborneAnm.mStartFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mInterpolation); if (!i_no_speed_set) { - speed.y = cLib_minMaxLimit(i_jump_speed, daAlinkHIO_board_c0::m.mMinJumpSpeedY, daAlinkHIO_board_c0::m.mMaxJumpSpeedY); + speed.y = cLib_minMaxLimit(i_jump_speed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY); } mProcVar4.field_0x3010 = 0; @@ -564,9 +573,9 @@ int daAlink_c::procBoardJump() { setBoardLandAnime(); procBoardWaitInit(NULL); } else if (mProcVar5.field_0x3012 != 0 && mProcVar4.field_0x3010 == 0 && field_0x2060->getOldFrameRate() < 0.0099999998f) { - setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed, - daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, + setSingleAnime(ANM_RIDE_JUMP, mpHIO->mItem.mBoard.m.mAirborneAnm.mSpeed, + mpHIO->mItem.mBoard.m.mAirborneAnm.mStartFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f); mProcVar4.field_0x3010 = 1; } @@ -608,7 +617,7 @@ int daAlink_c::procBoardCutInit() { bool cut_charge = false; if (checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE)) { - if (mUnderFrameCtrl[0].getFrame() > daAlinkHIO_cut_c0::m.mNormalSwingDuration) { + if (mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration) { cut_charge = true; } } @@ -635,10 +644,10 @@ int daAlink_c::procBoardCut() { int daAlink_c::procBoardCutTurnInit() { commonProcBoardInit(PROC_BOARD_CUT_TURN); - setSingleAnimeParam(ANM_RIDE_CUT_TURN, &daAlinkHIO_board_c0::m.mSpinAnm); + setSingleAnimeParam(ANM_RIDE_CUT_TURN, &mpHIO->mItem.mBoard.m.mSpinAnm); - if (daAlinkHIO_board_c0::m.mSpinAnm.mStartFrame >= 3.0f) { - speed.y = cLib_minMaxLimit(mNormalSpeed * -cM_ssin(shape_angle.x), daAlinkHIO_board_c0::m.mSpinMinJumpSpeedY, daAlinkHIO_board_c0::m.mSpinMaxJumpSpeedY); + if (mpHIO->mItem.mBoard.m.mSpinAnm.mStartFrame >= 3.0f) { + speed.y = cLib_minMaxLimit(mNormalSpeed * -cM_ssin(shape_angle.x), mpHIO->mItem.mBoard.m.mSpinMinJumpSpeedY, mpHIO->mItem.mBoard.m.mSpinMaxJumpSpeedY); if (!checkModeFlg(2)) { seStartOnlyReverb(Z2SE_AL_SNOBO_JUMP); } @@ -653,7 +662,7 @@ int daAlink_c::procBoardCutTurnInit() { mProcVar5.field_0x3012 = 0; resetCombo(1); - field_0x3478 = daAlinkHIO_cutTurn_c0::m.mAttackRadius; + field_0x3478 = mpHIO->mCut.mCutTurn.m.mAttackRadius; field_0x347c = 0.5f * field_0x3478; initCutTurnAt(field_0x347c, 3); @@ -691,10 +700,10 @@ int daAlink_c::procBoardCutTurn() { if (frame_ctrl->getFrame() >= 3.0f) { speed.y = mNormalSpeed * -cM_ssin(shape_angle.x); - if (speed.y < daAlinkHIO_board_c0::m.mSpinMinJumpSpeedY) { - speed.y = daAlinkHIO_board_c0::m.mSpinMinJumpSpeedY; - } else if (speed.y > daAlinkHIO_board_c0::m.mSpinMaxJumpSpeedY) { - speed.y = daAlinkHIO_board_c0::m.mSpinMaxJumpSpeedY; + if (speed.y < mpHIO->mItem.mBoard.m.mSpinMinJumpSpeedY) { + speed.y = mpHIO->mItem.mBoard.m.mSpinMinJumpSpeedY; + } else if (speed.y > mpHIO->mItem.mBoard.m.mSpinMaxJumpSpeedY) { + speed.y = mpHIO->mItem.mBoard.m.mSpinMaxJumpSpeedY; } setJumpMode(); diff --git a/src/d/actor/d_a_alink_ironball.inc b/src/d/actor/d_a_alink_ironball.inc index 58ac7642b1..a716b8587e 100644 --- a/src/d/actor/d_a_alink_ironball.inc +++ b/src/d/actor/d_a_alink_ironball.inc @@ -43,8 +43,8 @@ bool daAlink_c::checkIronBallGroundStop() const { void daAlink_c::setIronBallWaitUpperAnime(int param_0) { if (!checkIronBallWaitAnime() && !checkIronBallPreSwingAnime() && (mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) { - setUpperAnimeBaseSpeed(0x19C, daAlinkHIO_ironBall_c0::m.mWaitAnmSpeed, - daAlinkHIO_basic_c0::m.mBasicInterpolation); + setUpperAnimeBaseSpeed(0x19C, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed, + mpHIO->mBasic.m.mBasicInterpolation); setFacePriBck(0xE8); field_0x2f96 = 254; field_0x2f97 = 5; @@ -118,7 +118,7 @@ void daAlink_c::setIronBallModel() { field_0xFB8.SetAtSe(dCcD_SE_HAMMER); field_0xFB8.SetAtAtp(2); field_0xFB8.SetAtMtrl(dCcD_MTRL_NONE); - field_0xFB8.SetR(daAlinkHIO_ironBall_c0::m.mAttackRadius); + field_0xFB8.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius); csXyz* var_r28 = mIronBallChainAngle; for (int i = 0; i < 102; i++, var_r28++) { @@ -224,7 +224,7 @@ void daAlink_c::setIronBallChainPos() { sp28C = *var_r29; *var_r29 = *var_r27 + (sp2A4 * 10.0f); - *var_r26 = (*var_r29 - sp28C) * daAlinkHIO_ironBall_c0::m.mChainSpeedRate; + *var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate; var_r27 = var_r29; } } else if (mItemVar0.field_0x3018 == 7) { @@ -232,20 +232,20 @@ void daAlink_c::setIronBallChainPos() { var_r26 = &field_0x3848[mItemMode]; var_r27 = var_r29 + 1; - sp38 = mItemMode * daAlinkHIO_ironBall_c0::m.mReturnChainRate; + sp38 = mItemMode * mpHIO->mItem.mIronBall.m.mReturnChainRate; sp34 = sp38; for (i = mItemMode; i >= 0; i--, var_r29--, var_r26--) { sp2A4 = (*var_r29 - *var_r27) + *var_r26; if (i == 0) { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mReturnBallGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mReturnBallGravity; } else { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mChainGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mChainGravity; } if (sp38 >= 0) { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mReturnChainAccelY; + sp2A4.y += mpHIO->mItem.mIronBall.m.mReturnChainAccelY; sp38--; } @@ -271,9 +271,9 @@ void daAlink_c::setIronBallChainPos() { for (i = 0; i < mItemMode; i++, var_r29++, var_r26++) { sp28C = *var_r29; sp2A4 = (*var_r29 - *var_r27) + *var_r26; - sp2A4.y += daAlinkHIO_ironBall_c0::m.mChainGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mChainGravity; if (i >= mItemMode - sp34) { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mReturnChainAccelY; + sp2A4.y += mpHIO->mItem.mIronBall.m.mReturnChainAccelY; } sp280 = sp2A4; @@ -286,7 +286,7 @@ void daAlink_c::setIronBallChainPos() { } var_r27 = var_r29; - *var_r26 = (*var_r29 - sp28C) * daAlinkHIO_ironBall_c0::m.mChainSpeedRate; + *var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate; } } else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) { daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0]; @@ -304,8 +304,8 @@ void daAlink_c::setIronBallChainPos() { sp38 = 1000; } else if (mItemVar0.field_0x3018 == 4) { Vec sp268 = {0.0f, 0.0f, 0.0f}; - sp268.y = daAlinkHIO_ironBall_c0::m.mThrowChainAccelY; - sp268.z = daAlinkHIO_ironBall_c0::m.mThrowChainAccelZ; + sp268.y = mpHIO->mItem.mIronBall.m.mThrowChainAccelY; + sp268.z = mpHIO->mItem.mIronBall.m.mThrowChainAccelZ; mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0); mDoMtx_stack_c::multVec(&sp268, &sp298); @@ -324,9 +324,9 @@ void daAlink_c::setIronBallChainPos() { sp2A4 = (*var_r29 - *var_r27) + *var_r26; if (i == 0) { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mBallGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mBallGravity; } else { - sp2A4.y += daAlinkHIO_ironBall_c0::m.mChainGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mChainGravity; } if (sp38 >= 0) { @@ -343,12 +343,12 @@ void daAlink_c::setIronBallChainPos() { *var_r29 = *var_r27 + (sp280 * 10.0f); } - *var_r26 = (*var_r29 - sp28C) * daAlinkHIO_ironBall_c0::m.mChainSpeedRate; + *var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate; var_r27 = var_r29; } sp2A4 = mIronBallCenterPos - *mIronBallChainPos; - sp2A4.y += daAlinkHIO_ironBall_c0::m.mBallGravity; + sp2A4.y += mpHIO->mItem.mIronBall.m.mBallGravity; if (sp38 >= 0) { sp2A4 += sp298; @@ -359,9 +359,9 @@ void daAlink_c::setIronBallChainPos() { } else { f32 var_f30; if (mItemVar0.field_0x3018 == 4 || mItemVar0.field_0x3018 == 5) { - var_f30 = daAlinkHIO_ironBall_c0::m.mThrowChainGravity; + var_f30 = mpHIO->mItem.mIronBall.m.mThrowChainGravity; } else { - var_f30 = daAlinkHIO_ironBall_c0::m.mChainGravity; + var_f30 = mpHIO->mItem.mIronBall.m.mChainGravity; } var_r29 = mIronBallChainPos + 1; @@ -410,7 +410,7 @@ void daAlink_c::setIronBallChainPos() { } var_r27 = var_r29; - *var_r26 = (*var_r29 - sp28C) * daAlinkHIO_ironBall_c0::m.mChainSpeedRate; + *var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate; } } @@ -534,10 +534,10 @@ void daAlink_c::setIronBallPos() { if (!checkIronBallReturnChange()) { f32 var_f29; - f32 var_f28 = daAlinkHIO_ironBall_c0::m.mBallMaxFallSpeed; + f32 var_f28 = mpHIO->mItem.mIronBall.m.mBallMaxFallSpeed; if (mItemVar0.field_0x3018 == 5) { - var_f29 = daAlinkHIO_ironBall_c0::m.mThrowBallGravity; + var_f29 = mpHIO->mItem.mIronBall.m.mThrowBallGravity; f32 sp1C; if (fopAcM_getWaterY(mIronBallChainPos, &sp1C) && sp1C > mIronBallChainPos->y) { @@ -549,12 +549,12 @@ void daAlink_c::setIronBallPos() { var_f28 *= 0.5f; } } else { - var_f29 = daAlinkHIO_ironBall_c0::m.mBallGravity; + var_f29 = mpHIO->mItem.mIronBall.m.mBallGravity; } sp10C = mIronBallCenterPos + (*field_0x3848 * 1.25f); - s16 temp_r27 = daAlinkHIO_ironBall_c0::m.mThrowChainNum + 0.1f * mIronBallChainPos->abs(mHookshotTopPos); + s16 temp_r27 = mpHIO->mItem.mIronBall.m.mThrowChainNum + 0.1f * mIronBallChainPos->abs(mHookshotTopPos); if (temp_r27 > 100) { mItemMode = 100; } else if (mItemMode < temp_r27) { @@ -700,7 +700,7 @@ void daAlink_c::setIronBallPos() { mItemVar0.field_0x3018 = 6; } else if (field_0x3494 < 0.0f) { setIronBallReturn(0); - } else if (field_0x3848->y < daAlinkHIO_ironBall_c0::m.field_0x6C) { + } else if (field_0x3848->y < mpHIO->mItem.mIronBall.m.field_0x6C) { setIronBallReturn(1); } } else if (mItemVar0.field_0x3018 == 6 && var_r26 != 0) { @@ -713,9 +713,9 @@ void daAlink_c::setIronBallPos() { f32 sp18; int var_r22; if (fopAcM_getWaterY(mIronBallChainPos, &sp18) && sp18 > mIronBallChainPos->y) { - var_r22 = daAlinkHIO_ironBall_c0::m.mReturnChainRemoveNum - 1; + var_r22 = mpHIO->mItem.mIronBall.m.mReturnChainRemoveNum - 1; } else { - var_r22 = daAlinkHIO_ironBall_c0::m.mReturnChainRemoveNum; + var_r22 = mpHIO->mItem.mIronBall.m.mReturnChainRemoveNum; } if (mItemMode > 6) { @@ -810,9 +810,9 @@ BOOL daAlink_c::checkIronBallAnime() const { void daAlink_c::setIronBallReadyAnime() { resetUpperAnime(UPPER_2, -1.0f); - setSingleAnime(ANM_IRONBALL_ATTACK, daAlinkHIO_ironBall_c0::m.mPrepareAnmSpeed, 0.0f, - 0x15, daAlinkHIO_ironBall_c0::m.mPrepareInterpolation); - setUpperAnimeBaseSpeed(0x19A, daAlinkHIO_ironBall_c0::m.mPrepareAnmSpeed, -1.0f); + setSingleAnime(ANM_IRONBALL_ATTACK, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, 0.0f, + 0x15, mpHIO->mItem.mIronBall.m.mPrepareInterpolation); + setUpperAnimeBaseSpeed(0x19A, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f); mNowAnmPackUpper[2].setRatio(0.0f); voiceStart(Z2SE_AL_V_SWING_IB); @@ -828,7 +828,7 @@ void daAlink_c::setIronBallReadyAnime() { void daAlink_c::setIronBallBaseAnime() { if (checkIronBallSwingAnime() && !checkUnderMove0BckNoArc(ANM_IRONBALL_TURN)) { - setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, daAlinkHIO_ironBall_c0::m.mTurnAnmSpeed, daAlinkHIO_ironBall_c0::m.mTurnInterpolation); + setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation); mUnderFrameCtrl[0].setFrame(mUpperFrameCtrl[2].getFrame()); getNowAnmPackUnder(UNDER_0)->setFrame(mUpperFrameCtrl[2].getFrame()); } @@ -847,11 +847,11 @@ BOOL daAlink_c::checkUpperItemActionIronBall() { if (frameCtrl->checkAnmEnd()) { if (checkModeFlg(1)) { - setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, daAlinkHIO_ironBall_c0::m.mTurnAnmSpeed, daAlinkHIO_ironBall_c0::m.mTurnInterpolation); + setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation); } u16 upperId = getMainBckData(ANM_IRONBALL_TURN)->m_upperID; - setUpperAnimeBaseSpeed(upperId, daAlinkHIO_ironBall_c0::m.mTurnAnmSpeed, daAlinkHIO_ironBall_c0::m.mTurnInterpolation); + setUpperAnimeBaseSpeed(upperId, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation); mItemVar0.field_0x3018 = 2; seStartOnlyReverb(Z2SE_AL_IB_SWING); return 1; @@ -960,7 +960,7 @@ int daAlink_c::procIronBallMove() { if (field_0x2f98 != 2) { field_0x2f98 = 2; - var_f31 = daAlinkHIO_basic_c0::m.mBasicInterpolation; + var_f31 = mpHIO->mBasic.m.mBasicInterpolation; } } else { offModeFlg(1); @@ -980,7 +980,7 @@ int daAlink_c::procIronBallMove() { int daAlink_c::procIronBallThrowInit() { commonProcInit(PROC_IRON_BALL_THROW); - setSingleAnime(ANM_IRONBALL_ATTACK, daAlinkHIO_ironBall_c0::m.mPreThrowAnmSpeed, 22.0f, 30, daAlinkHIO_ironBall_c0::m.mPreThrowAnmInterpolation); + setSingleAnime(ANM_IRONBALL_ATTACK, mpHIO->mItem.mIronBall.m.mPreThrowAnmSpeed, 22.0f, 30, mpHIO->mItem.mIronBall.m.mPreThrowAnmInterpolation); field_0x2f99 = 12; field_0x3588 = l_ironBallBaseAnime; mNormalSpeed = 0.0f; @@ -1013,7 +1013,7 @@ int daAlink_c::procIronBallThrow() { mItemVar0.field_0x3018 = 5; mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0); - Vec sp8 = {0.0f, daAlinkHIO_ironBall_c0::m.mThrowSpeedY, daAlinkHIO_ironBall_c0::m.mThrowSpeedZ}; + Vec sp8 = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ}; mDoMtx_stack_c::multVec(&sp8, field_0x3848); field_0x3022 = 0; } @@ -1021,7 +1021,7 @@ int daAlink_c::procIronBallThrow() { if (checkAnmEnd(temp_r29)) { if (mProcVar2.field_0x300c == 0) { mProcVar2.field_0x300c = 1; - setSingleAnimeBaseSpeed(ANM_IRONBALL_THROW, daAlinkHIO_ironBall_c0::m.mThrowAnmSpeed, daAlinkHIO_ironBall_c0::m.mThrowInterpolation); + setSingleAnimeBaseSpeed(ANM_IRONBALL_THROW, mpHIO->mItem.mIronBall.m.mThrowAnmSpeed, mpHIO->mItem.mIronBall.m.mThrowInterpolation); field_0x2f99 = 0xC; mItemVar0.field_0x3018 = 4; } else if (mItemVar0.field_0x3018 == 7) { @@ -1042,10 +1042,10 @@ int daAlink_c::procIronBallReturnInit() { if (mItemVar0.field_0x3018 == 8) { mProcVar2.field_0x300c = 1; - setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm); + setSingleAnimeParam(ANM_IRONBALL_CATCH, &mpHIO->mItem.mIronBall.m.mCatchAnm); field_0x2f99 = 12; } else { - setSingleAnimeBaseSpeed(ANM_IRONBALL_PULL, daAlinkHIO_ironBall_c0::m.mPullAnmSpeed, daAlinkHIO_ironBall_c0::m.mPullInterpolation); + setSingleAnimeBaseSpeed(ANM_IRONBALL_PULL, mpHIO->mItem.mIronBall.m.mPullAnmSpeed, mpHIO->mItem.mIronBall.m.mPullInterpolation); field_0x2f99 = 12; mProcVar2.field_0x300c = 0; } @@ -1065,7 +1065,7 @@ int daAlink_c::procIronBallReturn() { if (mItemVar0.field_0x3018 == 8 && mProcVar2.field_0x300c == 0) { mProcVar2.field_0x300c = 1; - setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm); + setSingleAnimeParam(ANM_IRONBALL_CATCH, &mpHIO->mItem.mIronBall.m.mCatchAnm); field_0x2f99 = 12; seStartOnlyReverb(Z2SE_AL_IB_CATCH); @@ -1076,7 +1076,7 @@ int daAlink_c::procIronBallReturn() { setIronBallWaitUpperAnime(1); checkNextAction(0); } - } else if (mItemVar0.field_0x3018 == 8 && frameCtrl->getFrame() > daAlinkHIO_ironBall_c0::m.mCatchAnm.mCancelFrame) { + } else if (mItemVar0.field_0x3018 == 8 && frameCtrl->getFrame() > mpHIO->mItem.mIronBall.m.mCatchAnm.mCancelFrame) { mItemVar0.field_0x3018 = 0; setIronBallWaitUpperAnime(1); diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc index a9529caf36..2f4a7ff867 100644 --- a/src/d/actor/d_a_alink_kandelaar.inc +++ b/src/d/actor/d_a_alink_kandelaar.inc @@ -164,15 +164,15 @@ void daAlink_c::preKandelaarDraw() { J3DMaterial* mat_p = mpKanteraGlowModel->getModelData()->getMaterialNodePointer(0); J3DGXColorS10 color; - color.r = daAlinkHIO_kandelaar_c0::m.mColorReg1R; - color.g = daAlinkHIO_kandelaar_c0::m.mColorReg1G; - color.b = daAlinkHIO_kandelaar_c0::m.mColorReg1B; + color.r = mpHIO->mItem.mLantern.m.mColorReg1R; + color.g = mpHIO->mItem.mLantern.m.mColorReg1G; + color.b = mpHIO->mItem.mLantern.m.mColorReg1B; color.a = 255; mat_p->setTevColor(1, &color); - color.r = daAlinkHIO_kandelaar_c0::m.mColorReg2R; - color.g = daAlinkHIO_kandelaar_c0::m.mColorReg2G; - color.b = daAlinkHIO_kandelaar_c0::m.mColorReg2B; + color.r = mpHIO->mItem.mLantern.m.mColorReg2R; + color.g = mpHIO->mItem.mLantern.m.mColorReg2G; + color.b = mpHIO->mItem.mLantern.m.mColorReg2B; mat_p->setTevColor(2, &color); cXyz proj; @@ -293,10 +293,10 @@ int daAlink_c::commonKandelaarPour(int param_0) { } else if (simpleAnmPlay(field_0x0720)) { if (param_0) { setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_END)->m_upperID, UPPER_2, - &daAlinkHIO_kandelaar_c0::m.mEndUnkAnm); + &mpHIO->mItem.mLantern.m.mEndUnkAnm); } else { setSingleAnimeParam(ANM_OIL_BOTTLE_POUR_END, - &daAlinkHIO_kandelaar_c0::m.mEndUnkAnm); + &mpHIO->mItem.mLantern.m.mEndUnkAnm); } field_0x072c->setFrame(2.0f); @@ -331,7 +331,7 @@ void daAlink_c::initKandelaarSwing() { field_0xFB8.ResetAtHit(); if (!checkEventRun()) { - dComIfGp_setItemOilCount(-daAlinkHIO_kandelaar_c0::m.mShakeOilLoss); + dComIfGp_setItemOilCount(-mpHIO->mItem.mLantern.m.mShakeOilLoss); } field_0xFB8.OffAtSetBit(); @@ -368,13 +368,13 @@ int daAlink_c::procKandelaarSwingInit() { (checkStageName("F_SP108") && fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchTagKtOnFire, NULL) != NULL)) { - setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCancelFrame; + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm); + field_0x3478 = mpHIO->mItem.mBottle.m.mSwingDownAnm.mCancelFrame; field_0x347c = 5.0f; field_0x3480 = 12.0f; } else { - setSingleAnimeParam(ANM_LANTERN_SWING, &daAlinkHIO_kandelaar_c0::m.mShakeAnm); - field_0x3478 = daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCancelFrame; + setSingleAnimeParam(ANM_LANTERN_SWING, &mpHIO->mItem.mLantern.m.mShakeAnm); + field_0x3478 = mpHIO->mItem.mLantern.m.mShakeAnm.mCancelFrame; field_0x347c = 4.0f; field_0x3480 = 11.0f; } @@ -411,7 +411,7 @@ int daAlink_c::procKandelaarPourInit() { current.angle.y = shape_angle.y; mNormalSpeed = 0.0f; field_0x2f98 = 4; - setSingleAnimeParam(ANM_OIL_BOTTLE_POUR_START, &daAlinkHIO_kandelaar_c0::m.mBeginUnkAnm); + setSingleAnimeParam(ANM_OIL_BOTTLE_POUR_START, &mpHIO->mItem.mLantern.m.mBeginUnkAnm); commonKandelaarPourInit(); return 1; } diff --git a/src/d/actor/d_a_alink_link.inc b/src/d/actor/d_a_alink_link.inc index 629ac2381f..d6db8966e1 100644 --- a/src/d/actor/d_a_alink_link.inc +++ b/src/d/actor/d_a_alink_link.inc @@ -6,6 +6,7 @@ #include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "d/actor/d_a_alink.h" #include "d/actor/d_a_canoe.h" +#include "d/actor/d_a_kytag05.h" #include "d/actor/d_a_tag_mstop.h" #include "d/actor/d_a_tag_mhint.h" @@ -131,10 +132,10 @@ BOOL daAlink_c::setBodyAngleToCamera() { if (!dComIfGp_checkPlayerStatus0(0, 0x202000) && mEquipItem == fpcNm_ITEM_IRONBALL) { var_r29 = -10000; } else { - var_r29 = daAlinkHIO_item_c0::m.mItemFPUpMaxUnk; + var_r29 = mpHIO->mItem.m.mItemFPUpMaxUnk; } - mBodyAngle.x = cLib_minMaxLimit((s16)sp8, var_r29, daAlinkHIO_item_c0::m.mItemFPMaxUnk); + mBodyAngle.x = cLib_minMaxLimit((s16)sp8, var_r29, mpHIO->mItem.m.mItemFPMaxUnk); checkBodyAngleX(mBodyAngle.x); field_0x310a = mBodyAngle.x; field_0x310c = shape_angle.y; @@ -240,11 +241,11 @@ int daAlink_c::procCoSwimSubjectivityInit() { setSubjectMode(); if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlSwim_c0::m.mIdleAnmSpeedWeak, - daAlinkHIO_wlSwim_c0::m.mIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, mpHIO->mWolf.mWlSwim.m.mIdleAnmSpeedWeak, + mpHIO->mWolf.mWlSwim.m.mIdleInterp); } else { - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, - daAlinkHIO_swim_c0::m.mWaitInterpolation); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, + mpHIO->mSwim.m.mWaitInterpolation); } dComIfGp_setPlayerStatus0(0, 0x100000); diff --git a/src/d/actor/d_a_alink_spinner.inc b/src/d/actor/d_a_alink_spinner.inc index b4ceeb4c23..398d4e0408 100644 --- a/src/d/actor/d_a_alink_spinner.inc +++ b/src/d/actor/d_a_alink_spinner.inc @@ -7,51 +7,51 @@ #include "d/actor/d_a_spinner.h" f32 daAlink_c::getSpinnerGravity() const { - return daAlinkHIO_spinner_c0::m.mGravity; + return mpHIO->mItem.mSpinner.m.mGravity; } f32 daAlink_c::getSpinnerMaxFallSpeed() const { - return daAlinkHIO_spinner_c0::m.mMaxFallSpeed; + return mpHIO->mItem.mSpinner.m.mMaxFallSpeed; } f32 daAlink_c::getSpinnerJumpRate() const { - return daAlinkHIO_spinner_c0::m.mJumpRate; + return mpHIO->mItem.mSpinner.m.mJumpRate; } s16 daAlink_c::getSpinnerRideMoveTime() { if (checkLv4BossRoom()) { - return daAlinkHIO_spinner_c0::m.mBossRideMoveTime; + return mpHIO->mItem.mSpinner.m.mBossRideMoveTime; } - return daAlinkHIO_spinner_c0::m.mRideMoveTime; + return mpHIO->mItem.mSpinner.m.mRideMoveTime; } f32 daAlink_c::getSpinnerRideSpeedF() { if (checkLv4BossRoom()) { - return daAlinkHIO_spinner_c0::m.mBossRideSpeed; + return mpHIO->mItem.mSpinner.m.mBossRideSpeed; } - return daAlinkHIO_spinner_c0::m.mRideSpeed; + return mpHIO->mItem.mSpinner.m.mRideSpeed; } f32 daAlink_c::getSpinnerRideDecSpeedMax() const { - return daAlinkHIO_spinner_c0::m.mDecelSpeedMax; + return mpHIO->mItem.mSpinner.m.mDecelSpeedMax; } f32 daAlink_c::getSpinnerRideDecSpeedMin() const { - return daAlinkHIO_spinner_c0::m.mDecelSpeedMin; + return mpHIO->mItem.mSpinner.m.mDecelSpeedMin; } f32 daAlink_c::getSpinnerRideDecSpeedRate() const { - return daAlinkHIO_spinner_c0::m.mDecelRate; + return mpHIO->mItem.mSpinner.m.mDecelRate; } s16 daAlink_c::getSpinnerRideRotAngleMax() const { - return daAlinkHIO_spinner_c0::m.mRideRotAngleMax; + return mpHIO->mItem.mSpinner.m.mRideRotAngleMax; } s16 daAlink_c::getSpinnerRideRotAngleMin() const { - return daAlinkHIO_spinner_c0::m.mRideRotAngleMin; + return mpHIO->mItem.mSpinner.m.mRideRotAngleMin; } void daAlink_c::onSpinnerPathForceRemove() { @@ -106,9 +106,9 @@ int daAlink_c::procSpinnerReadyInit() { commonProcInit(PROC_SPINNER_READY); mRideAcKeep.setData(spinner); - setSingleAnime(ANM_VJUMP_START, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mSpeed, 6.0f, - daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mEndFrame, - daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mInterpolation); + setSingleAnime(ANM_VJUMP_START, mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mSpeed, 6.0f, + mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mEndFrame, + mpHIO->mWallHang.mSmallJump.m.mSmallJumpAnm.mInterpolation); mNormalSpeed = 0.0f; setHeavyBoots(0); @@ -161,7 +161,7 @@ int daAlink_c::procSpinnerWaitInit() { mRideStatus = 5; setBgCheckParam(); - setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, 4.0f); + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, 4.0f); speed.y = 0.0f; setSpecialGravity(0.0f, maxFallSpeed, 0); mNormalSpeed = 0.0f; @@ -185,7 +185,7 @@ int daAlink_c::procSpinnerWait() { checkEndResetFlg1(ERFLG1_UNK_1) || checkEndResetFlg0(ERFLG0_UNK_2)) { mNormalSpeed = 0.0f; setJumpMode(); - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } if (spinner->checkSpinnerTagEnd()) { @@ -218,7 +218,7 @@ int daAlink_c::procSpinnerWait() { } setJumpMode(); mNormalSpeed = 0.0f; - return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation); } daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; @@ -240,8 +240,8 @@ int daAlink_c::procSpinnerWait() { setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION); if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) { - setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, - daAlinkHIO_board_c0::m.mFastPushInterpolation); + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, + mpHIO->mItem.mBoard.m.mFastPushInterpolation); field_0x3198 = ANM_RIDE_KICK; fopAcM_seStartCurrent(spinner, Z2SE_OBJ_SPNR_SW_PUSH, 0); } @@ -254,32 +254,32 @@ int daAlink_c::procSpinnerWait() { if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) || (field_0x3198 != ANM_RIDE_KICK && field_0x3198 != ANM_RIDE_WAIT)) { - setSingleAnimeBaseSpeed(ANM_RIDE_WAIT, daAlinkHIO_board_c0::m.mStandAnmSpeed, - daAlinkHIO_board_c0::m.mStandInterpolation); + setSingleAnimeBaseSpeed(ANM_RIDE_WAIT, mpHIO->mItem.mBoard.m.mStandAnmSpeed, + mpHIO->mItem.mBoard.m.mStandInterpolation); field_0x3198 = ANM_RIDE_WAIT; } } else if (spinner->getButtonJump() && field_0x3198 != ANM_RIDE_JUMP) { field_0x3198 = ANM_RIDE_JUMP; - setSingleAnime(ANM_RIDE_JUMP, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation); + setSingleAnime(ANM_RIDE_JUMP, 0.0f, mpHIO->mItem.mBoard.m.mAirborneAnm.mStartFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mInterpolation); mProcVar4.field_0x3010 = 0; } else if (field_0x3198 == ANM_RIDE_JUMP) { if (!spinner->getJumpFlg()) { - setSingleAnime(ANM_RIDE_JUMP_LAND, daAlinkHIO_board_c0::m.mLandAnm.mSpeed, - daAlinkHIO_board_c0::m.mLandAnm.mStartFrame, 16, - daAlinkHIO_board_c0::m.mLandAnm.mInterpolation); + setSingleAnime(ANM_RIDE_JUMP_LAND, mpHIO->mItem.mBoard.m.mLandAnm.mSpeed, + mpHIO->mItem.mBoard.m.mLandAnm.mStartFrame, 16, + mpHIO->mItem.mBoard.m.mLandAnm.mInterpolation); field_0x3198 = ANM_RIDE_JUMP_LAND; } else if (mProcVar4.field_0x3010 == 0 && field_0x2060->getOldFrameRate() < 0.01f) { - setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed, - daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame, - daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, -1.0f); + setSingleAnime(ANM_RIDE_JUMP, mpHIO->mItem.mBoard.m.mAirborneAnm.mSpeed, + mpHIO->mItem.mBoard.m.mAirborneAnm.mStartFrame, + mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f); mProcVar4.field_0x3010 = 1; } } else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) || (field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) { - setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, - daAlinkHIO_board_c0::m.mSitInterpolation); + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, + mpHIO->mItem.mBoard.m.mSitInterpolation); field_0x3198 = ANM_RIDE_CROUCH; } } diff --git a/src/d/actor/d_a_alink_sumou.inc b/src/d/actor/d_a_alink_sumou.inc index 506b16c5c9..4c9b9ffe79 100644 --- a/src/d/actor/d_a_alink_sumou.inc +++ b/src/d/actor/d_a_alink_sumou.inc @@ -272,7 +272,7 @@ int daAlink_c::procSumouMove() { if (mSpeedModifier > 0.0f && checkInputOnR()) { int direction = getDirectionFromAngle(mStickAngle); if (direction == DIR_LEFT || direction == DIR_RIGHT) { - var_r31 = field_0x33ac * (daAlinkHIO_pushpull_c0::m.mSumoRotationAngle * field_0x33ac); + var_r31 = field_0x33ac * (mpHIO->mPushpull.m.mSumoRotationAngle * field_0x33ac); if (direction == DIR_RIGHT) { var_r31 = -var_r31; @@ -317,7 +317,7 @@ int daAlink_c::procSumouSideMoveInit() { mSpecialMode = 0x16; field_0x2f98 = 3; current.angle.y = shape_angle.y + -0x4000; - field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed; setSingleAnimeBase(ANM_SUMOU_FIGHT_WAIT); field_0x3198 = 0x141; @@ -379,7 +379,7 @@ int daAlink_c::procSumouSideMove() { } if (field_0x33ac > (1.0f - fabsf(mNormalSpeed / field_0x594)) * 0.3f) { - var_f1 = daAlinkHIO_atnMove_c0::m.mAcceleration * field_0x33ac; + var_f1 = mpHIO->mAtnMove.m.mAcceleration * field_0x33ac; } else { var_f1 = 0.0f; } @@ -387,7 +387,7 @@ int daAlink_c::procSumouSideMove() { var_f1 = 0.0f; } - setNormalSpeedF(var_f1, daAlinkHIO_atnMove_c0::m.mDeceleration); + setNormalSpeedF(var_f1, mpHIO->mAtnMove.m.mDeceleration); if (checkZeroSpeedF()) { onModeFlg(1); diff --git a/src/d/actor/d_a_alink_swim.inc b/src/d/actor/d_a_alink_swim.inc index 9d4ceb63cd..4cd7a0c15b 100644 --- a/src/d/actor/d_a_alink_swim.inc +++ b/src/d/actor/d_a_alink_swim.inc @@ -31,25 +31,25 @@ bool daAlink_c::getZoraSwim() const { f32 daAlink_c::getSwimFrontMaxSpeed() const { if (checkBootsOrArmorHeavy()) { - return daAlinkHIO_swim_c0::m.mUnderwaterFallMaxSpeed; + return mpHIO->mSwim.m.mUnderwaterFallMaxSpeed; } else if (checkZoraWearAbility()) { return 14.0f; } else if (checkSwimDashMode()) { - return daAlinkHIO_swim_c0::m.mDashMaxSpeed; + return mpHIO->mSwim.m.mDashMaxSpeed; } else { - return daAlinkHIO_swim_c0::m.mForwardMaxSpeed; + return mpHIO->mSwim.m.mForwardMaxSpeed; } } f32 daAlink_c::getSwimMaxFallSpeed() const { if (mProcID == PROC_DIVE_JUMP) { - return -daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed; + return -mpHIO->mSwim.m.mUnderwaterMaxSpeed; } else if (checkBootsOrArmorHeavy()) { - return daAlinkHIO_swim_c0::m.mBootsMaxFallSpeed; + return mpHIO->mSwim.m.mBootsMaxFallSpeed; } else if (getZoraSwim()) { - return daAlinkHIO_swim_c0::m.mMaxFallSpeed; + return mpHIO->mSwim.m.mMaxFallSpeed; } else { - return daAlinkHIO_swim_c0::m.mStandingMaxFallSpeed; + return mpHIO->mSwim.m.mStandingMaxFallSpeed; } } @@ -105,9 +105,9 @@ BOOL daAlink_c::checkPossibleWaterInMode() const { void daAlink_c::setWaterInAnmRate(daPy_frameCtrl_c* i_frameCtrl, f32 i_rate) { if (checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { - i_rate *= daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; + i_rate *= mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed; } else { - i_rate *= daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate; + i_rate *= mpHIO->mItem.mIronBoots.m.mWaterStartWalkAnmRate; } } @@ -129,7 +129,7 @@ void daAlink_c::swimBgCheck(f32 param_0) { var_r29 = field_0x3080; } else { var_r29 = mProcVar2.field_0x300c; - start_pos.y += daAlinkHIO_wlWallHang_c0::m.mAutoWalkHeight; + start_pos.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight; } f32 var_f28 = param_0 * cM_scos(var_r29); @@ -226,7 +226,7 @@ void daAlink_c::setSpeedAndAngleSwim() { var_r28 = shape_angle.y + (16384.0f * cM_ssin(mStickAngle)); } - cLib_addCalcAngleS(&shape_angle.y, var_r28, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterMaxTurn, daAlinkHIO_swim_c0::m.mUnderwaterMinTurn); + cLib_addCalcAngleS(&shape_angle.y, var_r28, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn); } current.angle.y = shape_angle.y; @@ -235,9 +235,9 @@ void daAlink_c::setSpeedAndAngleSwim() { if (checkInputOnR()) { s16 temp_r29_2 = shape_angle.y; if (checkNoResetFlg0(FLG0_SWIM_UP)) { - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mTurnRate, daAlinkHIO_swim_c0::m.mMaxTurn, daAlinkHIO_swim_c0::m.mMinTurn); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn); } else { - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterMaxTurn, daAlinkHIO_swim_c0::m.mUnderwaterMinTurn); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn); } f32 var_f29; @@ -271,22 +271,22 @@ void daAlink_c::setSpeedAndAngleSwim() { s16 temp_r29_3 = current.angle.y; if (checkNoResetFlg0(FLG0_SWIM_UP)) { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mTurnRate, daAlinkHIO_swim_c0::m.mMaxTurn, daAlinkHIO_swim_c0::m.mMinTurn); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn); } else { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterMaxTurn, daAlinkHIO_swim_c0::m.mUnderwaterMinTurn); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn); } - var_f30 = daAlinkHIO_swim_c0::m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3)); + var_f30 = mpHIO->mSwim.m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3)); } else { var_f30 = 0.0f; } } f32 var_f28; - if (daAlinkHIO_swim_c0::m.mForwardMaxSpeed < mNormalSpeed && !checkZoraWearAbility()) { - var_f28 = daAlinkHIO_swim_c0::m.mDashDeceleration; + if (mpHIO->mSwim.m.mForwardMaxSpeed < mNormalSpeed && !checkZoraWearAbility()) { + var_f28 = mpHIO->mSwim.m.mDashDeceleration; } else { - var_f28 = daAlinkHIO_swim_c0::m.mDeceleration; + var_f28 = mpHIO->mSwim.m.mDeceleration; } setNormalSpeedF(var_f30, var_f28); @@ -298,7 +298,7 @@ void daAlink_c::setSpeedAndAngleSwim() { if (checkSwimNeckUpDown()) { s16 sp14; if (speed.y >= 0.0f) { - var_f31 = -speed.y / daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed; + var_f31 = -speed.y / mpHIO->mSwim.m.mMaxFloatUpSpeed; if (var_f31 < -1.0f) { var_f31 = -1.0f; } @@ -356,10 +356,10 @@ int daAlink_c::checkSwimAction(int param_0) { if (getMoveBGActorName(mLinkAcch.m_gnd, NULL) == PROC_Obj_ITA) { var_f31 = 200.0f; } else { - var_f31 = daAlinkHIO_wlSwim_c0::m.mStartHeight; + var_f31 = mpHIO->mWolf.mWlSwim.m.mStartHeight; } } else { - var_f31 = daAlinkHIO_swim_c0::m.mStartHeight; + var_f31 = mpHIO->mSwim.m.mStartHeight; } if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && !checkModeFlg(0x40000) && mProcID != PROC_MAGNE_BOOTS_FLY && ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0) && mDemo.getDemoMode() != 0x11) { @@ -369,12 +369,12 @@ int daAlink_c::checkSwimAction(int param_0) { if (checkWolf()) { if (checkWolfDashMode()) { - var_f29 = daAlinkHIO_wlSwim_c0::m.mMaxSpeed; + var_f29 = mpHIO->mWolf.mWlSwim.m.mMaxSpeed; } else { - var_f29 = daAlinkHIO_wlSwim_c0::m.mMaxSpeedWeak; + var_f29 = mpHIO->mWolf.mWlSwim.m.mMaxSpeedWeak; } - var_f28 = daAlinkHIO_wlSwim_c0::m.mMaxFallSpeed; + var_f28 = mpHIO->mWolf.mWlSwim.m.mMaxFallSpeed; } else { var_f29 = getSwimFrontMaxSpeed(); var_f28 = getSwimMaxFallSpeed(); @@ -503,9 +503,9 @@ int daAlink_c::checkSwimUpAction() { if (!getZoraSwim()) { if (checkWolf()) { - field_0x3480 = daAlinkHIO_wlSwim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mWolf.mWlSwim.m.mStartHeight; } else { - cLib_addCalc(&field_0x3480, daAlinkHIO_swim_c0::m.mStartHeight, 0.5f, 15.0f, 1.0f); + cLib_addCalc(&field_0x3480, mpHIO->mSwim.m.mStartHeight, 0.5f, 15.0f, 1.0f); } } else { field_0x3480 = 65.0f; @@ -513,9 +513,9 @@ int daAlink_c::checkSwimUpAction() { f32 var_f31; if (checkWolf()) { - var_f31 = daAlinkHIO_wlSwim_c0::m.mSurfacingHeight; + var_f31 = mpHIO->mWolf.mWlSwim.m.mSurfacingHeight; } else { - var_f31 = daAlinkHIO_swim_c0::m.mFloatUpHeight; + var_f31 = mpHIO->mSwim.m.mFloatUpHeight; } if (!checkBootsOrArmorHeavy() && !checkNoResetFlg0(FLG0_SWIM_UP)) { @@ -590,9 +590,9 @@ BOOL daAlink_c::checkSwimFall() { int daAlink_c::checkSwimOutAction() { f32 var_f31; if (checkWolf()) { - var_f31 = daAlinkHIO_wlSwim_c0::m.mStartHeight; + var_f31 = mpHIO->mWolf.mWlSwim.m.mStartHeight; } else { - var_f31 = daAlinkHIO_swim_c0::m.mStartHeight; + var_f31 = mpHIO->mSwim.m.mStartHeight; } if (checkSwimFall()) { @@ -603,15 +603,15 @@ int daAlink_c::checkSwimOutAction() { current.angle.y = sp8.atan2sX_Z(); if (checkWolf()) { - if (mNormalSpeed > daAlinkHIO_wlAutoJump_c0::m.mWeakJumpMaxSpeed) { - mNormalSpeed = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpMaxSpeed; + if (mNormalSpeed > mpHIO->mWolf.mWlAutoJump.m.mWeakJumpMaxSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpMaxSpeed; } - return procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + return procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } else { - if (mNormalSpeed > daAlinkHIO_autoJump_c0::m.mMaxJumpSpeed) { - mNormalSpeed = daAlinkHIO_autoJump_c0::m.mMaxJumpSpeed; + if (mNormalSpeed > mpHIO->mAutoJump.m.mMaxJumpSpeed) { + mNormalSpeed = mpHIO->mAutoJump.m.mMaxJumpSpeed; } - return procFallInit(2, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(2, mpHIO->mAutoJump.m.mFallInterpolation); } } @@ -655,13 +655,13 @@ void daAlink_c::setSwimMoveAnime() { BOOL var_r25 = 0; if (field_0x2f98 == 4) { - f32 temp_f29 = daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed + daAlinkHIO_swim_c0::m.mUnderwaterButtonAdditionalSpeed; + f32 temp_f29 = mpHIO->mSwim.m.mUnderwaterMaxSpeed + mpHIO->mSwim.m.mUnderwaterButtonAdditionalSpeed; - field_0x3478 = daAlinkHIO_swim_c0::m.mUnderwaterMinAnmSpeed; - field_0x347c = daAlinkHIO_swim_c0::m.mUnderwaterMaxAnmSpeed; + field_0x3478 = mpHIO->mSwim.m.mUnderwaterMinAnmSpeed; + field_0x347c = mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed; - if (field_0x594 < daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed) { - field_0x594 = daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed; + if (field_0x594 < mpHIO->mSwim.m.mUnderwaterMaxSpeed) { + field_0x594 = mpHIO->mSwim.m.mUnderwaterMaxSpeed; } else if (doTrigger()) { field_0x594 += 0.75f; if (field_0x594 > temp_f29) { @@ -683,10 +683,10 @@ void daAlink_c::setSwimMoveAnime() { mProcVar5.field_0x3012 = 1; } } else if (!checkSwimMoveHandAnime()) { - cLib_chaseF(&field_0x594, daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed, 0.4f); + cLib_chaseF(&field_0x594, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f); } - var_f31 = 1.0f / daAlinkHIO_swim_c0::m.mUnderwaterMaxSpeed; + var_f31 = 1.0f / mpHIO->mSwim.m.mUnderwaterMaxSpeed; if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(temp_r28)))) { var_r29 = ANM_SWIM_ZORA_START; @@ -711,25 +711,25 @@ void daAlink_c::setSwimMoveAnime() { } if (checkSwimDashMode()) { - field_0x3478 = daAlinkHIO_swim_c0::m.mDashMinAnmSpeed; - field_0x347c = daAlinkHIO_swim_c0::m.mDashMaxAnmSpeed; - field_0x594 = daAlinkHIO_swim_c0::m.mDashMaxSpeed; + field_0x3478 = mpHIO->mSwim.m.mDashMinAnmSpeed; + field_0x347c = mpHIO->mSwim.m.mDashMaxAnmSpeed; + field_0x594 = mpHIO->mSwim.m.mDashMaxSpeed; } else { - field_0x3478 = daAlinkHIO_swim_c0::m.mForwardMinAnmSpeed; - field_0x347c = daAlinkHIO_swim_c0::m.mForwardMaxAnmSpeed; + field_0x3478 = mpHIO->mSwim.m.mForwardMinAnmSpeed; + field_0x347c = mpHIO->mSwim.m.mForwardMaxAnmSpeed; field_0x594 = getSwimFrontMaxSpeed(); } var_f31 = 1.0f / field_0x594; } else if (field_0x2f98 == 1) { var_r29 = ANM_ATN_SWIM_BACK; - field_0x3478 = daAlinkHIO_swim_c0::m.mBackwardMinAnmSpeed; - field_0x347c = daAlinkHIO_swim_c0::m.mBackwardMaxAnmSpeed; + field_0x3478 = mpHIO->mSwim.m.mBackwardMinAnmSpeed; + field_0x347c = mpHIO->mSwim.m.mBackwardMaxAnmSpeed; if (checkZoraWearAbility()) { field_0x594 = 10.0f; } else { - field_0x594 = daAlinkHIO_swim_c0::m.mBackwardMaxSpeed; + field_0x594 = mpHIO->mSwim.m.mBackwardMaxSpeed; } var_f31 = 1.0f / field_0x594; @@ -740,13 +740,13 @@ void daAlink_c::setSwimMoveAnime() { var_r29 = ANM_ATN_SWIM_RIGHT; } - field_0x3478 = daAlinkHIO_swim_c0::m.mStrafeMinAnmSpeed; - field_0x347c = daAlinkHIO_swim_c0::m.mStrafeMaxAnmSpeed; + field_0x3478 = mpHIO->mSwim.m.mStrafeMinAnmSpeed; + field_0x347c = mpHIO->mSwim.m.mStrafeMaxAnmSpeed; if (checkZoraWearAbility()) { field_0x594 = 12.0f; } else { - field_0x594 = daAlinkHIO_swim_c0::m.mStrafeMaxSpeed; + field_0x594 = mpHIO->mSwim.m.mStrafeMaxSpeed; } var_f31 = 1.0f / field_0x594; @@ -760,7 +760,7 @@ void daAlink_c::setSwimMoveAnime() { if (checkBootsOrArmorHeavy()) { var_r29 = ANM_SWIM_WAIT; - field_0x594 = daAlinkHIO_swim_c0::m.mUnderwaterFallMaxSpeed; + field_0x594 = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed; if (mEquipItem != fpcNm_ITEM_NONE && !checkHookshotAnime()) { setDoStatus(4); } @@ -774,15 +774,15 @@ void daAlink_c::setSwimMoveAnime() { field_0x3198 = var_r29; if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) { - field_0x30d2 = daAlinkHIO_swim_c0::m.field_0x5e; + field_0x30d2 = mpHIO->mSwim.m.field_0x5e; } if (var_r29 == ANM_SWIM_WAIT) { - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, daAlinkHIO_swim_c0::m.mWaitInterpolation); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, mpHIO->mSwim.m.mWaitInterpolation); } else { f32 var_f27; if (var_r26 != 0) { - var_f27 = daAlinkHIO_swim_c0::m.mMoveInterpolation; + var_f27 = mpHIO->mSwim.m.mMoveInterpolation; } else { var_f27 = 0.0f; } @@ -793,7 +793,7 @@ void daAlink_c::setSwimMoveAnime() { if (var_r29 != ANM_SWIM_WAIT && var_r29 != ANM_SWIM_DASH) { f32 temp_f30 = var_f31 * fabsf(mNormalSpeed); if (temp_f30 > 1.0f && field_0x2f98 == 4) { - temp_r28->setRate(daAlinkHIO_swim_c0::m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * daAlinkHIO_swim_c0::m.mUnderwaterAdditionalAnmSpeed)); + temp_r28->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed)); } else { temp_r28->setRate(field_0x3478 + (field_0x347c * temp_f30)); } @@ -880,12 +880,12 @@ void daAlink_c::setSwimUpDownOffset() { f32 var_f1; if (checkWolf()) { if (checkHeavyStateOn(1, 1)) { - var_f1 = daAlinkHIO_wlSwim_c0::m.mHeavyIdleUpDownSwayAmount; + var_f1 = mpHIO->mWolf.mWlSwim.m.mHeavyIdleUpDownSwayAmount; } else { - var_f1 = daAlinkHIO_wlSwim_c0::m.mIdleUpDownSwayAmount; + var_f1 = mpHIO->mWolf.mWlSwim.m.mIdleUpDownSwayAmount; } } else { - var_f1 = daAlinkHIO_swim_c0::m.mWaitUpDownShakeAmount; + var_f1 = mpHIO->mSwim.m.mWaitUpDownShakeAmount; } field_0x2b98 = var_f1 * cM_ssin(mProcVar2.field_0x300c); @@ -903,11 +903,11 @@ int daAlink_c::procSwimUpInit() { field_0x3080 = 0; onNoResetFlg0(FLG0_SWIM_UP); mZ2Link.setInWater(false); - setSingleAnimeParam(ANM_SWIM_RESURFACE, &daAlinkHIO_swim_c0::m.mFloatUpAnm); + setSingleAnimeParam(ANM_SWIM_RESURFACE, &mpHIO->mSwim.m.mFloatUpAnm); dComIfGp_setPlayerStatus0(0, 0x100000); mProcVar0.field_0x3008 = 0; mProcVar4.field_0x3010 = 0; - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; field_0x3000 = 0; seStartMapInfo(Z2SE_AL_OUTOF_WATER); @@ -919,7 +919,7 @@ int daAlink_c::procSwimUpInit() { int daAlink_c::procSwimUp() { daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl; - setNormalSpeedF(0.0f, daAlinkHIO_swim_c0::m.mDeceleration); + setNormalSpeedF(0.0f, mpHIO->mSwim.m.mDeceleration); if (checkSetItemTrigger(fpcNm_ITEM_HVY_BOOTS)) { setHeavyBoots(1); @@ -933,7 +933,7 @@ int daAlink_c::procSwimUp() { } } else if (checkAnmEnd(frame_ctrl)) { procSwimWaitInit(0); - } else if (frame_ctrl->getFrame() > daAlinkHIO_swim_c0::m.mFloatUpAnm.mCancelFrame && + } else if (frame_ctrl->getFrame() > mpHIO->mSwim.m.mFloatUpAnm.mCancelFrame && checkInputOnR()) { procSwimMoveInit(); @@ -950,7 +950,7 @@ int daAlink_c::procSwimWaitInit(int param_0) { if (checkNoResetFlg0(FLG0_UNDERWATER)) { offNoResetFlg0(FLG0_UNDERWATER); - current.pos.y += daAlinkHIO_swim_c0::m.mStartHeight; + current.pos.y += mpHIO->mSwim.m.mStartHeight; } commonProcInit(PROC_SWIM_WAIT); @@ -958,19 +958,19 @@ int daAlink_c::procSwimWaitInit(int param_0) { if (param_0) { seStartMapInfo(Z2SE_AL_INTO_WATER); mProcVar4.field_0x3010 = 0; - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; } else if (!mode_40000) { mProcVar4.field_0x3010 = 0; - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; } swimDeleteItem(); if (!checkUnderMove0BckNoArc(ANM_SWIM_WAIT)) { - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, - daAlinkHIO_swim_c0::m.mWaitInterpolation); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, + mpHIO->mSwim.m.mWaitInterpolation); } else if (frame_ctrl->getRate() < 0.1f) { - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, -1.0f); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, -1.0f); } field_0x30d0 = 0; @@ -1008,8 +1008,8 @@ int daAlink_c::procSwimWait() { if (mEquipItem != field_0x32cc) { field_0x32cc = mEquipItem; - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, - daAlinkHIO_swim_c0::m.mWaitInterpolation); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, + mpHIO->mSwim.m.mWaitInterpolation); } setSwimUpDownOffset(); @@ -1033,7 +1033,7 @@ int daAlink_c::procSwimWait() { if (checkSwimButtonAccept() && doTrigger()) { procSwimDiveInit(); - } else if ((checkInputOnR() && mNormalSpeed >= daAlinkHIO_swim_c0::m.mForwardMinSpeed) || + } else if ((checkInputOnR() && mNormalSpeed >= mpHIO->mSwim.m.mForwardMinSpeed) || (checkUpSwimButtonAccept() && doButton())) { if (checkUpSwimButtonAccept() && doButton()) { @@ -1058,7 +1058,7 @@ int daAlink_c::procSwimMoveInit() { } if (!mode_40000) { - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; mProcVar4.field_0x3010 = 0; } @@ -1115,11 +1115,11 @@ int daAlink_c::procSwimMove() { procSwimDiveInit(); } else if (dComIfGp_getDoStatus() == 9 && doTrigger()) { onNoResetFlg1(FLG1_DASH_MODE); - field_0x30d0 = daAlinkHIO_swim_c0::m.field_0x5c; - setSingleAnimeParam(ANM_SWIM_DASH, &daAlinkHIO_swim_c0::m.mDashAnm); + field_0x30d0 = mpHIO->mSwim.m.field_0x5c; + setSingleAnimeParam(ANM_SWIM_DASH, &mpHIO->mSwim.m.mDashAnm); field_0x3198 = ANM_SWIM_DASH; } else if (!checkZoraSwimMove() && (!checkUpSwimButtonAccept() || !doButton()) && - mNormalSpeed < daAlinkHIO_swim_c0::m.mForwardMinSpeed) + mNormalSpeed < mpHIO->mSwim.m.mForwardMinSpeed) { procSwimWaitInit(0); } @@ -1134,22 +1134,22 @@ int daAlink_c::procSwimDiveInit() { if (checkNoResetFlg0(FLG0_SWIM_UP)) { mProcVar2.field_0x300c = 1; - setSingleAnimeParam(ANM_SWIM_DIVE, &daAlinkHIO_swim_c0::m.mDiveAnm); + setSingleAnimeParam(ANM_SWIM_DIVE, &mpHIO->mSwim.m.mDiveAnm); voiceStart(Z2SE_AL_V_DIVING); } else { mProcVar2.field_0x300c = 0; - setSingleAnimeParam(ANM_SWIM_DIVE, &daAlinkHIO_swim_c0::m.mUnderwaterDiveAnm); + setSingleAnimeParam(ANM_SWIM_DIVE, &mpHIO->mSwim.m.mUnderwaterDiveAnm); } field_0x2f99 = 0x10; field_0x3588 = l_waitBaseAnime; - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; mProcVar4.field_0x3010 = 0; dComIfGp_setPlayerStatus0(0, 0x100000); field_0x3000 = 30; field_0x3478 = 0.0f; - field_0x347c = 1.0f / daAlinkHIO_swim_c0::m.mUnderwaterDiveAnm.mEndFrame; + field_0x347c = 1.0f / mpHIO->mSwim.m.mUnderwaterDiveAnm.mEndFrame; return 1; } @@ -1166,7 +1166,7 @@ int daAlink_c::procSwimDive() { field_0x2f99 = 7; field_0x3000 = 30; - setNormalSpeedF(0.0f, daAlinkHIO_swim_c0::m.mDeceleration); + setNormalSpeedF(0.0f, mpHIO->mSwim.m.mDeceleration); field_0x3478 = field_0x347c * frame_ctrl->getFrame(); if (field_0x3478 > 1.0f) { @@ -1183,7 +1183,7 @@ int daAlink_c::procSwimDive() { } if (checkAnmEnd(frame_ctrl)) { - speed.y = daAlinkHIO_swim_c0::m.mMaxFallSpeed; + speed.y = mpHIO->mSwim.m.mMaxFallSpeed; if (mProcVar2.field_0x300c != 0) { field_0x3080 = 0x2800; @@ -1207,8 +1207,8 @@ int daAlink_c::procSwimHookshotSubjectInit() { initHookshotUpperAnimeSpeed(1); if (!checkUnderMove0BckNoArc(ANM_SWIM_WAIT)) { - setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, - daAlinkHIO_hookshot_c0::m.mStartInterpolation); + setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, + mpHIO->mItem.mHookshot.m.mStartInterpolation); } mNormalSpeed = 0.0f; @@ -1228,7 +1228,7 @@ int daAlink_c::procSwimHookshotSubjectInit() { mProcVar0.field_0x3008 = 0; field_0x594 = getSwimFrontMaxSpeed(); - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; mProcVar4.field_0x3010 = 0; field_0x30d0 = 0; @@ -1304,7 +1304,7 @@ int daAlink_c::procSwimHookshotMoveInit() { field_0x3080 = 0; } - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; mProcVar4.field_0x3010 = 0; field_0x30d0 = 0; @@ -1387,16 +1387,16 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) { } f32 scale = - temp_r30->abs() * daAlinkHIO_damSwim_c0::m.mAttackSpeedRate + daAlinkHIO_damSwim_c0::m.mInitialSpeed; - if (scale > daAlinkHIO_damSwim_c0::m.mMaxSpeed) { - scale = daAlinkHIO_damSwim_c0::m.mMaxSpeed; + temp_r30->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed; + if (scale > mpHIO->mDamage.mDamSwim.m.mMaxSpeed) { + scale = mpHIO->mDamage.mDamSwim.m.mMaxSpeed; } field_0x3750 = temp_r30->normZP(); field_0x3750 *= scale; if (getZoraSwim()) { - setUpperAnimeParam(0xBF, UPPER_2, &daAlinkHIO_damSwim_c0::m.mSinkAnm); + setUpperAnimeParam(0xBF, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm); setFacePriBck(0xEA); setFacePriTexture(FTANM_UNK_27); return 1; @@ -1408,36 +1408,36 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) { temp_r30->z * cM_scos(shape_angle.y) + temp_r30->x * cM_ssin(shape_angle.y)); mProcVar0.field_0x3008 = - cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-daAlinkHIO_damSwim_c0::m.mFrontBackBodyMaxAngle, - (s16)daAlinkHIO_damSwim_c0::m.mFrontBackBodyMaxAngle); + cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle, + (s16)mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle); mProcVar1.field_0x300a = cLib_minMaxLimit( cM_atan2s(sp24.x, -JMAFastSqrt(sp24.y * sp24.y + sp24.z * sp24.z)), - (s16)-daAlinkHIO_damSwim_c0::m.mLeftRightBodyMaxAngle, (s16)daAlinkHIO_damSwim_c0::m.mLeftRightBodyMaxAngle); + (s16)-mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle, (s16)mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle); int dir = getDirectionFromAngle(cM_atan2s(-sp24.x, -sp24.z)); if (bvar4) { - setSingleAnimeParam(ANM_SWIM_DMG_FREEZE, &daAlinkHIO_damSwim_c0::m.mSurfaceAnm); - field_0x3478 = daAlinkHIO_damSwim_c0::m.mSurfaceAnm.mCancelFrame; + setSingleAnimeParam(ANM_SWIM_DMG_FREEZE, &mpHIO->mDamage.mDamSwim.m.mSurfaceAnm); + field_0x3478 = mpHIO->mDamage.mDamSwim.m.mSurfaceAnm.mCancelFrame; mProcVar0.field_0x3008 = 0; mProcVar1.field_0x300a = 0; } else if (dir == DIR_FORWARD) { - setSingleAnimeParam(ANM_SWIM_DMG_FRONT, &daAlinkHIO_damSwim_c0::m.mFrontAnm); - field_0x3478 = daAlinkHIO_damSwim_c0::m.mFrontAnm.mCancelFrame; + setSingleAnimeParam(ANM_SWIM_DMG_FRONT, &mpHIO->mDamage.mDamSwim.m.mFrontAnm); + field_0x3478 = mpHIO->mDamage.mDamSwim.m.mFrontAnm.mCancelFrame; } else if (dir == DIR_BACKWARD) { - setSingleAnimeParam(ANM_SWIM_DMG_BACK, &daAlinkHIO_damSwim_c0::m.mRearAnm); - field_0x3478 = daAlinkHIO_damSwim_c0::m.mRearAnm.mCancelFrame; + setSingleAnimeParam(ANM_SWIM_DMG_BACK, &mpHIO->mDamage.mDamSwim.m.mRearAnm); + field_0x3478 = mpHIO->mDamage.mDamSwim.m.mRearAnm.mCancelFrame; } else if (dir == DIR_LEFT) { - setSingleAnimeParam(ANM_SWIM_DMG_LEFT, &daAlinkHIO_damSwim_c0::m.mLeftAnm); - field_0x3478 = daAlinkHIO_damSwim_c0::m.mLeftAnm.mCancelFrame; + setSingleAnimeParam(ANM_SWIM_DMG_LEFT, &mpHIO->mDamage.mDamSwim.m.mLeftAnm); + field_0x3478 = mpHIO->mDamage.mDamSwim.m.mLeftAnm.mCancelFrame; } else { - setSingleAnimeParam(ANM_SWIM_DMG_RIGHT, &daAlinkHIO_damSwim_c0::m.mRightAnm); - field_0x3478 = daAlinkHIO_damSwim_c0::m.mRightAnm.mCancelFrame; + setSingleAnimeParam(ANM_SWIM_DMG_RIGHT, &mpHIO->mDamage.mDamSwim.m.mRightAnm); + field_0x3478 = mpHIO->mDamage.mDamSwim.m.mRightAnm.mCancelFrame; } mNormalSpeed = 0.0f; field_0x347c = M_PI / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart()); - field_0x3480 = daAlinkHIO_swim_c0::m.mStartHeight; + field_0x3480 = mpHIO->mSwim.m.mStartHeight; current.angle.y = shape_angle.y; return 1; diff --git a/src/d/actor/d_a_alink_whistle.inc b/src/d/actor/d_a_alink_whistle.inc index f96a9af975..ea07c1d6e9 100644 --- a/src/d/actor/d_a_alink_whistle.inc +++ b/src/d/actor/d_a_alink_whistle.inc @@ -67,7 +67,7 @@ int daAlink_c::procGrassWhistleGetInit() { current.angle.y = shape_angle.y; field_0x2f98 = 4; - setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm); field_0x2f92 = 0xFE; field_0x280c.setData(field_0x27f4); @@ -276,9 +276,9 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) { } if (checkWolf()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed, 3.0f); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed, 3.0f); } else { - setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f); } setGrassCancelStatus(0); diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc index 3c2be85cb8..8095f93a0a 100644 --- a/src/d/actor/d_a_alink_wolf.inc +++ b/src/d/actor/d_a_alink_wolf.inc @@ -131,7 +131,7 @@ void daAlink_c::changeCommon() { field_0x32a0[1].b = 0; field_0x2fc4 = 0; - mHotspringRecoverTimer = daAlinkHIO_basic_c0::m.mHotspringRecoverTime; + mHotspringRecoverTimer = mpHIO->mBasic.m.mHotspringRecoverTime; field_0x2fc9 = 0x10; for (; i < 4; i++) { @@ -200,12 +200,12 @@ void daAlink_c::changeWolf() { field_0x598 = 115.0f; mLinkAcch.SetRoofCrrHeight(field_0x598); - field_0x594 = daAlinkHIO_wlMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlMove.m.mMaxSpeed; - l_autoUpHeight = daAlinkHIO_wlWallHang_c0::m.mAutoWalkHeight + 0.01f; + l_autoUpHeight = mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight + 0.01f; l_autoDownHeight = -l_autoUpHeight; - field_0x3470 = cM_scos(cM_deg2s(daAlinkHIO_wlSlide_c0::m.mSlidingAngle)); - field_0x3122 = cM_deg2s(daAlinkHIO_wlSlide_c0::m.mClimbingAngle); + field_0x3470 = cM_scos(cM_deg2s(mpHIO->mWolf.mWlSlide.m.mSlidingAngle)); + field_0x3122 = cM_deg2s(mpHIO->mWolf.mWlSlide.m.mClimbingAngle); field_0x3458 = -60.0f; field_0x345c = -130.0f; @@ -223,7 +223,7 @@ void daAlink_c::changeWolf() { mZ2Link.setLinkState(1); field_0x30d6 = 0; field_0x2fa6 = 0; - field_0x2e54.changeWaterOffset(daAlinkHIO_basic_c0::m.mWolfWaterSurfaceEffectHeight); + field_0x2e54.changeWaterOffset(mpHIO->mBasic.m.mWolfWaterSurfaceEffectHeight); field_0x2e54.changeRippleOffset(field_0x598); mWoodSwordModel = NULL; field_0x3420 = 1.25f; @@ -466,16 +466,16 @@ void daAlink_c::changeLink(int param_0) { field_0x598 = 180.0f; mLinkAcch.SetRoofCrrHeight(field_0x598); - field_0x594 = daAlinkHIO_move_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mMove.m.mMaxSpeed; - l_autoUpHeight = daAlinkHIO_wallHang_c0::m.auto_walk_height + 0.01f; + l_autoUpHeight = mpHIO->mWallHang.m.auto_walk_height + 0.01f; l_autoDownHeight = -l_autoUpHeight; - field_0x3470 = cM_scos(cM_deg2s(daAlinkHIO_slide_c0::m.mSlideAngle)); - field_0x3122 = cM_deg2s(daAlinkHIO_slide_c0::m.mClimbAngle); + field_0x3470 = cM_scos(cM_deg2s(mpHIO->mSlide.m.mSlideAngle)); + field_0x3122 = cM_deg2s(mpHIO->mSlide.m.mClimbAngle); field_0x3458 = -120.0f; field_0x345c = -200.0f; - field_0x2e54.changeWaterOffset(daAlinkHIO_basic_c0::m.mWaterSurfaceEffectHeight); + field_0x2e54.changeWaterOffset(mpHIO->mBasic.m.mWaterSurfaceEffectHeight); field_0x2e54.changeRippleOffset(field_0x598); offWolfEyeUp(); @@ -534,7 +534,7 @@ void daAlink_c::changeLink(int param_0) { void daAlink_c::onWolfEyeUp() { if (mWolfEyeUp == 0) { mZ2Link.setWolfEyeOpen(true); - mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime; + mWolfEyeUp = mpHIO->mWolf.m.mSensesLingerTime; field_0x2fd2 = 20; } } @@ -617,23 +617,23 @@ void daAlink_c::setSpeedAndAngleWolf() { s16 var_r29; s16 var_r28; if (checkWolfDashMode()) { - var_r30 = daAlinkHIO_wlMove_c0::m.mTurnAngleRate; - var_r29 = daAlinkHIO_wlMove_c0::m.mTurnMax; - var_r28 = daAlinkHIO_wlMove_c0::m.mTurnMin; + var_r30 = mpHIO->mWolf.mWlMove.m.mTurnAngleRate; + var_r29 = mpHIO->mWolf.mWlMove.m.mTurnMax; + var_r28 = mpHIO->mWolf.mWlMove.m.mTurnMin; if (checkWolfSlowDash()) { - var_f30 = daAlinkHIO_wlMove_c0::m.mADashAccelerationSlow; + var_f30 = mpHIO->mWolf.mWlMove.m.mADashAccelerationSlow; } else if (field_0x2fc7 == 2) { - var_f30 = daAlinkHIO_wlMove_c0::m.mADashAccelerationSlow2; + var_f30 = mpHIO->mWolf.mWlMove.m.mADashAccelerationSlow2; } else { - var_f30 = daAlinkHIO_wlMove_c0::m.mADashAcceleration; + var_f30 = mpHIO->mWolf.mWlMove.m.mADashAcceleration; } - var_f29 = daAlinkHIO_wlMove_c0::m.mDeceleration; + var_f29 = mpHIO->mWolf.mWlMove.m.mDeceleration; } else { - var_r30 = daAlinkHIO_wlMoveNoP_c0::m.mTurnAngleRate; - var_r29 = daAlinkHIO_wlMoveNoP_c0::m.mTurnMax; - var_r28 = daAlinkHIO_wlMoveNoP_c0::m.mTurnMin; - var_f30 = daAlinkHIO_wlMoveNoP_c0::m.mAcceleration; - var_f29 = daAlinkHIO_wlMoveNoP_c0::m.mDeceleration; + var_r30 = mpHIO->mWolf.mWlMoveNoP.m.mTurnAngleRate; + var_r29 = mpHIO->mWolf.mWlMoveNoP.m.mTurnMax; + var_r28 = mpHIO->mWolf.mWlMoveNoP.m.mTurnMin; + var_f30 = mpHIO->mWolf.mWlMoveNoP.m.mAcceleration; + var_f29 = mpHIO->mWolf.mWlMoveNoP.m.mDeceleration; } BOOL temp_r31 = checkEventRun(); @@ -655,8 +655,8 @@ void daAlink_c::setSpeedAndAngleWolf() { var_r26 = 1; } } else if (mProcID == PROC_WOLF_MOVE && - ((checkWolfDashMode() && temp_f27 > daAlinkHIO_wlMove_c0::m.mSlipStartRate) || - (!checkWolfDashMode() && temp_f27 > daAlinkHIO_wlMoveNoP_c0::m.mSlideStartRate))) + ((checkWolfDashMode() && temp_f27 > mpHIO->mWolf.mWlMove.m.mSlipStartRate) || + (!checkWolfDashMode() && temp_f27 > mpHIO->mWolf.mWlMoveNoP.m.mSlideStartRate))) { return; } else { @@ -745,18 +745,18 @@ void daAlink_c::setSpeedAndAngleWolfAtn() { f32 var_f30; f32 var_f29; if (field_0x2f98 == 1) { - var_f30 = daAlinkHIO_wlAtnMove_c0::m.mRearAcceleration; - var_f29 = daAlinkHIO_wlAtnMove_c0::m.mRearDeceleration; + var_f30 = mpHIO->mWolf.mWlAtnMove.m.mRearAcceleration; + var_f29 = mpHIO->mWolf.mWlAtnMove.m.mRearDeceleration; } else { - var_f30 = daAlinkHIO_wlAtnMove_c0::m.mAcceleration; - var_f29 = daAlinkHIO_wlAtnMove_c0::m.mDeceleration; + var_f30 = mpHIO->mWolf.mWlAtnMove.m.mAcceleration; + var_f29 = mpHIO->mWolf.mWlAtnMove.m.mDeceleration; } s16 var_r29; if (checkFmChainGrabAnime()) { var_r29 = 1000; } else { - var_r29 = daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMax; + var_r29 = mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMax; } s16 var_r27; @@ -781,8 +781,8 @@ void daAlink_c::setSpeedAndAngleWolfAtn() { } s16 temp_r28 = current.angle.y; - cLib_addCalcAngleS(¤t.angle.y, var_r27, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleRate, var_r29, - daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMin); + cLib_addCalcAngleS(¤t.angle.y, var_r27, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleRate, var_r29, + mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin); if (wolfSideBgCheck(temp_r28)) { current.angle.y = temp_r28; @@ -819,8 +819,8 @@ void daAlink_c::setSpeedAndAngleWolfAtn() { var_r26 = current.angle.y; } - cLib_addCalcAngleS(&shape_angle.y, var_r26, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleRate, - var_r29 * 2, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMin * 2); + cLib_addCalcAngleS(&shape_angle.y, var_r26, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleRate, + var_r29 * 2, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin * 2); } setNormalSpeedF(var_f31, var_f29); @@ -858,27 +858,27 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) { f32 sp34, sp30, sp2C, sp28, sp24, sp20, sp1C, sp18, sp14, sp10; if (checkWolfDashMode()) { - sp20 = daAlinkHIO_wlMove_c0::m.mWalkToBriskWalkRate; - sp14 = daAlinkHIO_wlMove_c0::m.mWalkRunInterpolation; - sp1C = daAlinkHIO_wlMove_c0::m.mIdleToWalkRate; - sp18 = daAlinkHIO_wlMove_c0::m.mStandbyRunToRunRate; - sp34 = daAlinkHIO_wlMove_c0::m.mIdleAnmSpeed; - sp30 = daAlinkHIO_wlMove_c0::m.mWalkAnmSpeed; - sp2C = daAlinkHIO_wlMove_c0::m.mBriskWalkAnmSpeed; - sp28 = daAlinkHIO_wlMove_c0::m.mRunAnmSpeed; - sp24 = daAlinkHIO_wlSlide_c0::m.mClimbingAnmSpeed; - sp10 = daAlinkHIO_wlMove_c0::m.mRunAnmMinBlendRate; + sp20 = mpHIO->mWolf.mWlMove.m.mWalkToBriskWalkRate; + sp14 = mpHIO->mWolf.mWlMove.m.mWalkRunInterpolation; + sp1C = mpHIO->mWolf.mWlMove.m.mIdleToWalkRate; + sp18 = mpHIO->mWolf.mWlMove.m.mStandbyRunToRunRate; + sp34 = mpHIO->mWolf.mWlMove.m.mIdleAnmSpeed; + sp30 = mpHIO->mWolf.mWlMove.m.mWalkAnmSpeed; + sp2C = mpHIO->mWolf.mWlMove.m.mBriskWalkAnmSpeed; + sp28 = mpHIO->mWolf.mWlMove.m.mRunAnmSpeed; + sp24 = mpHIO->mWolf.mWlSlide.m.mClimbingAnmSpeed; + sp10 = mpHIO->mWolf.mWlMove.m.mRunAnmMinBlendRate; } else { - sp20 = daAlinkHIO_wlMoveNoP_c0::m.mWalkToJogRate; - sp14 = daAlinkHIO_wlMoveNoP_c0::m.mWalkRunInterpolation; - sp1C = daAlinkHIO_wlMoveNoP_c0::m.mIdleToWalkRate; - sp18 = daAlinkHIO_wlMoveNoP_c0::m.mJogToRunRate; - sp34 = daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed; - sp30 = daAlinkHIO_wlMoveNoP_c0::m.mWalkAnmSpeed; - sp2C = daAlinkHIO_wlMoveNoP_c0::m.mJogAnmSpeed; - sp28 = daAlinkHIO_wlMoveNoP_c0::m.mRunAnmSpeed; - sp24 = daAlinkHIO_wlSlide_c0::m.mClimbingAnmSpeedWeak; - sp10 = daAlinkHIO_wlMoveNoP_c0::m.mRunAnmMinBlendRate; + sp20 = mpHIO->mWolf.mWlMoveNoP.m.mWalkToJogRate; + sp14 = mpHIO->mWolf.mWlMoveNoP.m.mWalkRunInterpolation; + sp1C = mpHIO->mWolf.mWlMoveNoP.m.mIdleToWalkRate; + sp18 = mpHIO->mWolf.mWlMoveNoP.m.mJogToRunRate; + sp34 = mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed; + sp30 = mpHIO->mWolf.mWlMoveNoP.m.mWalkAnmSpeed; + sp2C = mpHIO->mWolf.mWlMoveNoP.m.mJogAnmSpeed; + sp28 = mpHIO->mWolf.mWlMoveNoP.m.mRunAnmSpeed; + sp24 = mpHIO->mWolf.mWlSlide.m.mClimbingAnmSpeedWeak; + sp10 = mpHIO->mWolf.mWlMoveNoP.m.mRunAnmMinBlendRate; } if (temp_f30 < sp20 || checkAttentionState() || checkHeavyStateOn(1, 1) || checkSlope()) { @@ -928,7 +928,7 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) { if (checkAttentionState()) { var_r27 = WANM_ATN; - sp34 = daAlinkHIO_wlMove_c0::m.mGazeIdleAnmSpeed; + sp34 = mpHIO->mWolf.mWlMove.m.mGazeIdleAnmSpeed; } else if (checkWindSpeedOnXZ() && !checkEventRun()) { var_r27 = WANM_WAIT_WIND; sp34 = 1.0f; @@ -976,7 +976,7 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) { if (!checkWolfDashMode()) { setDoubleAnimeWolf(1.0f, sp28, sp28, WANM_DASH_A, WANM_DASH_A, 1, param_0); } else { - var_f31 = (temp_f30 - sp18) / (daAlinkHIO_wlMove_c0::m.mRunToQuickRunRate - sp18); + var_f31 = (temp_f30 - sp18) / (mpHIO->mWolf.mWlMove.m.mRunToQuickRunRate - sp18); if (var_f31 > 1.0f) { var_f31 = 1.0f; } @@ -984,14 +984,14 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) { f32 spC; if (checkNoResetFlg1(FLG1_DASH_MODE)) { if (checkWolfSlowDash() != 0) { - spC = daAlinkHIO_wlMove_c0::m.mADashQuickRunASpeedSlow; + spC = mpHIO->mWolf.mWlMove.m.mADashQuickRunASpeedSlow; } else if (field_0x2fc7 == 2) { - spC = daAlinkHIO_wlMove_c0::m.mADashQuickRunASpeedSlow2; + spC = mpHIO->mWolf.mWlMove.m.mADashQuickRunASpeedSlow2; } else { - spC = daAlinkHIO_wlMove_c0::m.mADashQuickRunAnmSpeed; + spC = mpHIO->mWolf.mWlMove.m.mADashQuickRunAnmSpeed; } } else { - spC = daAlinkHIO_wlMove_c0::m.mQuickRunAnmSpeed; + spC = mpHIO->mWolf.mWlMove.m.mQuickRunAnmSpeed; } setDoubleAnimeWolf(var_f31, sp28, spC, WANM_DASH_A, WANM_DASH_B, 1, param_0); @@ -1111,8 +1111,8 @@ void daAlink_c::setBlendWolfAtnMoveAnime(f32 param_0) { f32 var_f31 = fabsf((mNormalSpeed * cM_scos(var_r28)) / field_0x594); f32 var_f30; - if (var_f31 < daAlinkHIO_wlAtnMove_c0::m.mWalkChangeRate) { - var_f30 = var_f31 / daAlinkHIO_wlAtnMove_c0::m.mWalkChangeRate; + if (var_f31 < mpHIO->mWolf.mWlAtnMove.m.mWalkChangeRate) { + var_f30 = var_f31 / mpHIO->mWolf.mWlAtnMove.m.mWalkChangeRate; int var_r27; if (checkModeFlg(1)) { var_r27 = 2; @@ -1124,31 +1124,31 @@ void daAlink_c::setBlendWolfAtnMoveAnime(f32 param_0) { f32 var_f28; if (checkWolfAtnWait()) { var_r26 = WANM_ATN; - var_f28 = daAlinkHIO_wlMove_c0::m.mGazeIdleAnmSpeed; + var_f28 = mpHIO->mWolf.mWlMove.m.mGazeIdleAnmSpeed; } else { var_r26 = WANM_WAIT; - var_f28 = daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed; + var_f28 = mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed; } - setDoubleAnimeWolf(var_f30, var_f28, daAlinkHIO_wlAtnMove_c0::m.mWalkAnmSpeed, var_r26, + setDoubleAnimeWolf(var_f30, var_f28, mpHIO->mWolf.mWlAtnMove.m.mWalkAnmSpeed, var_r26, WANM_ATN_LOCK_WALK_FRONT, var_r27, param_0); - } else if (var_f31 < daAlinkHIO_wlAtnMove_c0::m.mRunChangeRate) { + } else if (var_f31 < mpHIO->mWolf.mWlAtnMove.m.mRunChangeRate) { var_f30 = - (var_f31 - daAlinkHIO_wlAtnMove_c0::m.mWalkChangeRate) / - (daAlinkHIO_wlAtnMove_c0::m.mRunChangeRate - daAlinkHIO_wlAtnMove_c0::m.mWalkChangeRate); - setDoubleAnimeWolf(var_f30, daAlinkHIO_wlAtnMove_c0::m.mWalkAnmSpeed, - daAlinkHIO_wlAtnMove_c0::m.mRunAnmSpeed, WANM_ATN_LOCK_WALK_FRONT, + (var_f31 - mpHIO->mWolf.mWlAtnMove.m.mWalkChangeRate) / + (mpHIO->mWolf.mWlAtnMove.m.mRunChangeRate - mpHIO->mWolf.mWlAtnMove.m.mWalkChangeRate); + setDoubleAnimeWolf(var_f30, mpHIO->mWolf.mWlAtnMove.m.mWalkAnmSpeed, + mpHIO->mWolf.mWlAtnMove.m.mRunAnmSpeed, WANM_ATN_LOCK_WALK_FRONT, WANM_ATN_LOCK_RUN, 3, param_0); } else { - setDoubleAnimeWolf(1.0f, daAlinkHIO_wlAtnMove_c0::m.mRunAnmSpeed, - daAlinkHIO_wlAtnMove_c0::m.mRunAnmSpeed, WANM_ATN_LOCK_RUN, + setDoubleAnimeWolf(1.0f, mpHIO->mWolf.mWlAtnMove.m.mRunAnmSpeed, + mpHIO->mWolf.mWlAtnMove.m.mRunAnmSpeed, WANM_ATN_LOCK_RUN, WANM_ATN_LOCK_RUN, 3, param_0); } } } void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) { - field_0x594 = daAlinkHIO_wlAtnMove_c0::m.mRearMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlAtnMove.m.mRearMaxSpeed; f32 var_f28; if (field_0x3174 == 8) { @@ -1162,8 +1162,8 @@ void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) { field_0x2fc1 = 3; - if (temp_f31 < daAlinkHIO_wlAtnMove_c0::m.mRearWalkChangeRate) { - f32 temp_f29 = temp_f31 / daAlinkHIO_wlAtnMove_c0::m.mRearWalkChangeRate; + if (temp_f31 < mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate) { + f32 temp_f29 = temp_f31 / mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate; int var_r29; if (checkModeFlg(1)) { @@ -1175,17 +1175,17 @@ void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) { daAlink_WANM var_r28; if (checkWolfAtnWait()) { var_r28 = WANM_ATN; - var_f30 = daAlinkHIO_wlMove_c0::m.mGazeIdleAnmSpeed; + var_f30 = mpHIO->mWolf.mWlMove.m.mGazeIdleAnmSpeed; } else { var_r28 = WANM_WAIT; - var_f30 = daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed; + var_f30 = mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed; } - setDoubleAnimeWolf(temp_f29, var_f30, daAlinkHIO_wlAtnMove_c0::m.mRearWalkAnmSpeed, var_r28, + setDoubleAnimeWolf(temp_f29, var_f30, mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed, var_r28, WANM_ATN_LOCK_WALK_BACK, var_r29, param_0); } else { - setDoubleAnimeWolf(1.0f, daAlinkHIO_wlAtnMove_c0::m.mRearWalkAnmSpeed, - daAlinkHIO_wlAtnMove_c0::m.mRearWalkAnmSpeed, WANM_ATN_LOCK_WALK_BACK, + setDoubleAnimeWolf(1.0f, mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed, + mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed, WANM_ATN_LOCK_WALK_BACK, WANM_ATN_LOCK_WALK_BACK, 3, param_0); } } @@ -1217,7 +1217,7 @@ int daAlink_c::setDoubleAnimeWolf(f32 param_0, f32 param_1, f32 param_2, } if (var_r30 != 0 && param_6 < 0.0f) { - param_6 = daAlinkHIO_wlMove_c0::m.mNormalInterpolation; + param_6 = mpHIO->mWolf.mWlMove.m.mNormalInterpolation; } commonDoubleAnime(var_r29, NULL, var_r28, NULL, param_0, param_1, param_2, param_5); @@ -1303,7 +1303,7 @@ void daAlink_c::setSingleAnimeWolfParam(daAlink_c::daAlink_WANM i_anmID, int daAlink_c::checkWolfLandAction(int param_0) { f32 temp_f31 = 0.0099999998f * (mFallHeight - current.pos.y); - if (checkNoLandDamageSlidePolygon() || temp_f31 < daAlinkHIO_wlDamFall_c0::m.mSmallDamageHeight) { + if (checkNoLandDamageSlidePolygon() || temp_f31 < mpHIO->mWolf.mWlDamage.mFall.m.mSmallDamageHeight) { if (param_0 != 0) { procWolfLandDamageInit(0); } else if (mProcID == PROC_WOLF_JUMP_ATTACK || mProcID == PROC_WOLF_DASH_REVERSE) { @@ -1313,7 +1313,7 @@ int daAlink_c::checkWolfLandAction(int param_0) { } } else { int var_r4; - if (temp_f31 < daAlinkHIO_wlDamFall_c0::m.mLargeDamageHeight) { + if (temp_f31 < mpHIO->mWolf.mWlDamage.mFall.m.mLargeDamageHeight) { var_r4 = 1; } else { var_r4 = 2; @@ -1339,7 +1339,7 @@ void daAlink_c::checkWolfUseAbility() { } else { // event flag 0x4308: senses ability unlocked if (dComIfGs_isEventBit(0x4308) && field_0x2fd2 == 0 && !checkEventRun() && - mWolfEyeUp < daAlinkHIO_wolf_c0::m.mSensesLingerTime && wolfSenseTrigger()) + mWolfEyeUp < mpHIO->mWolf.m.mSensesLingerTime && wolfSenseTrigger()) { if (mWolfEyeUp == 0) { onWolfEyeUp(); @@ -1396,28 +1396,28 @@ int daAlink_c::checkNextActionWolf(int param_0) { if (checkSlope()) { if (checkWolfDashMode()) { - field_0x594 = daAlinkHIO_wlSlide_c0::m.mClimbingMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlSlide.m.mClimbingMaxSpeed; } else { - field_0x594 = daAlinkHIO_wlSlide_c0::m.mClimbingMaxSpeedWeak; + field_0x594 = mpHIO->mWolf.mWlSlide.m.mClimbingMaxSpeedWeak; } } else if (checkFmChainGrabAnime()) { field_0x594 = 13.0f; } else if (mTargetedActor != NULL) { - field_0x594 = daAlinkHIO_wlAtnMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlAtnMove.m.mMaxSpeed; } else if (checkAttentionState()) { - field_0x594 = daAlinkHIO_wlMove_c0::m.mGazeMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlMove.m.mGazeMaxSpeed; } else if (checkNoResetFlg1(FLG1_DASH_MODE)) { if (checkWolfSlowDash()) { - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeedSlow; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeedSlow; } else if (field_0x2fc7 == 2) { - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeedSlow2; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeedSlow2; } else { - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeed; } } else if (checkWolfDashMode()) { - field_0x594 = daAlinkHIO_wlMove_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlMove.m.mMaxSpeed; } else { - field_0x594 = daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed; } if (checkWolfGroundSpecialMode()) { @@ -1475,9 +1475,9 @@ int daAlink_c::checkNextActionWolf(int param_0) { abs(field_0x3180) < 0x5000 && cLib_distanceAngleS(field_0x2fe2, current.angle.y) > 0x7000 && ((checkWolfDashMode() && - speedF / field_0x594 > daAlinkHIO_wlMove_c0::m.mSlipStartRate) || + speedF / field_0x594 > mpHIO->mWolf.mWlMove.m.mSlipStartRate) || (!checkWolfDashMode() && - speedF / field_0x594 > daAlinkHIO_wlMoveNoP_c0::m.mSlideStartRate))) + speedF / field_0x594 > mpHIO->mWolf.mWlMoveNoP.m.mSlideStartRate))) { var_r30 = procWolfSlipInit(); } else { @@ -2144,7 +2144,7 @@ BOOL daAlink_c::checkWolfWaitSlipPolygon() { return 0; } - if (mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW && sp8.mNormal.y < cM_scos(cM_deg2s(daAlinkHIO_slide_c0::m.mClimbAngle))) { + if (mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW && sp8.mNormal.y < cM_scos(cM_deg2s(mpHIO->mSlide.m.mClimbAngle))) { return 1; } @@ -2353,9 +2353,9 @@ int daAlink_c::procWolfServiceWaitInit(int param_0) { field_0x3198 = 0; mProcVar2.field_0x300c = 0; } else { - setSingleAnimeWolf(WANM_SIT, 1.0f, daAlinkHIO_wlLie_c0::m.mSittingAnm.mStartFrame, - daAlinkHIO_wlLie_c0::m.mSittingAnm.mEndFrame, - daAlinkHIO_wlLie_c0::m.mSittingAnm.mInterpolation); + setSingleAnimeWolf(WANM_SIT, 1.0f, mpHIO->mWolf.mWlLie.m.mSittingAnm.mStartFrame, + mpHIO->mWolf.mWlLie.m.mSittingAnm.mEndFrame, + mpHIO->mWolf.mWlLie.m.mSittingAnm.mInterpolation); field_0x3198 = 0; mProcVar2.field_0x300c = 1; } @@ -2386,7 +2386,7 @@ int daAlink_c::procWolfServiceWait() { field_0x3198 = 0; mProcVar2.field_0x300c = 0; } else if (mProcVar2.field_0x300c != 0) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } else if (mProcVar4.field_0x3010 == 0) { setSingleAnimeWolfBase(WANM_SERVICE_WAIT_D); } else { @@ -2490,7 +2490,7 @@ int daAlink_c::procWolfWaitInit() { } commonProcInit(PROC_WOLF_WAIT); - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mIdleInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mIdleInterpolation); current.angle.y = shape_angle.y; field_0x2f98 = 4; mNormalSpeed = 0.0f; @@ -2524,7 +2524,7 @@ int daAlink_c::procWolfMoveInit() { return 0; } - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mNormalInterpolation); setFootEffectProcType(3); return 1; @@ -2533,8 +2533,8 @@ int daAlink_c::procWolfMoveInit() { int daAlink_c::procWolfMove() { if (!checkNextActionWolf(0) && !checkFrontWallTypeAction()) { if (mDemo.getDemoMode() == 2) { - if (mNormalSpeed > field_0x594 * daAlinkHIO_wlMoveNoP_c0::m.mWalkToJogRate) { - mNormalSpeed = field_0x594 * daAlinkHIO_wlMoveNoP_c0::m.mWalkToJogRate; + if (mNormalSpeed > field_0x594 * mpHIO->mWolf.mWlMoveNoP.m.mWalkToJogRate) { + mNormalSpeed = field_0x594 * mpHIO->mWolf.mWlMoveNoP.m.mWalkToJogRate; } } @@ -2547,7 +2547,7 @@ int daAlink_c::procWolfMove() { int daAlink_c::procWolfDashInit() { commonProcInit(PROC_WOLF_DASH); - setSingleAnimeWolfParam(WANM_DASH_START, &daAlinkHIO_wlMove_c0::m.mADashAnm); + setSingleAnimeWolfParam(WANM_DASH_START, &mpHIO->mWolf.mWlMove.m.mADashAnm); setFootEffectProcType(3); current.angle.y = shape_angle.y; @@ -2556,25 +2556,25 @@ int daAlink_c::procWolfDashInit() { mProcVar3.field_0x300e = 0; if (checkWolfSlowDash()) { - field_0x30d0 = daAlinkHIO_wlMove_c0::m.mADashDurationSlow; - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeedSlow; + field_0x30d0 = mpHIO->mWolf.mWlMove.m.mADashDurationSlow; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeedSlow; - if (mNormalSpeed < daAlinkHIO_wlMove_c0::m.mADashInitSpeedSlow) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mADashInitSpeedSlow; + if (mNormalSpeed < mpHIO->mWolf.mWlMove.m.mADashInitSpeedSlow) { + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mADashInitSpeedSlow; } } else if (field_0x2fc7 == 2) { - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeedSlow2; - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeedSlow2; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeedSlow2; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeedSlow2; - if (mNormalSpeed < daAlinkHIO_wlMove_c0::m.mADashInitSpeedSlow2) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mADashInitSpeedSlow2; + if (mNormalSpeed < mpHIO->mWolf.mWlMove.m.mADashInitSpeedSlow2) { + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mADashInitSpeedSlow2; } } else { - field_0x30d0 = daAlinkHIO_wlMove_c0::m.mADashDuration; - field_0x594 = daAlinkHIO_wlMove_c0::m.mADashMaxSpeed; + field_0x30d0 = mpHIO->mWolf.mWlMove.m.mADashDuration; + field_0x594 = mpHIO->mWolf.mWlMove.m.mADashMaxSpeed; - if (mNormalSpeed < daAlinkHIO_wlMove_c0::m.mADashInitSpeed) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mADashInitSpeed; + if (mNormalSpeed < mpHIO->mWolf.mWlMove.m.mADashInitSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mADashInitSpeed; } } @@ -2591,17 +2591,17 @@ int daAlink_c::procWolfDash() { f32 step_amount; if (checkWolfSlowDash()) { - step_amount = daAlinkHIO_wlMove_c0::m.mADashAccelerationSlow; + step_amount = mpHIO->mWolf.mWlMove.m.mADashAccelerationSlow; } else if (field_0x2fc7 == 2) { - step_amount = daAlinkHIO_wlMove_c0::m.mADashAccelerationSlow2; + step_amount = mpHIO->mWolf.mWlMove.m.mADashAccelerationSlow2; } else { - step_amount = daAlinkHIO_wlMove_c0::m.mADashAcceleration; + step_amount = mpHIO->mWolf.mWlMove.m.mADashAcceleration; } cLib_chaseF(&mNormalSpeed, field_0x594, step_amount); if (checkInputOnR()) { - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_wlMove_c0::m.mTurnAngleRate, - daAlinkHIO_wlMove_c0::m.mTurnMax, daAlinkHIO_wlMove_c0::m.mTurnMin); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mWolf.mWlMove.m.mTurnAngleRate, + mpHIO->mWolf.mWlMove.m.mTurnMax, mpHIO->mWolf.mWlMove.m.mTurnMin); shape_angle.y = current.angle.y; } @@ -2619,25 +2619,25 @@ int daAlink_c::procWolfDash() { } if (checkWolfSlowDash()) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow; } else if (field_0x2fc7 == 2) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow2; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow2; } else { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTime; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTime; } return checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.mADashAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlMove.m.mADashAnm.mCancelFrame) { if (mProcVar3.field_0x300e != 0) { return checkWolfAttackAction(); } if (checkWolfSlowDash()) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow; } else if (field_0x2fc7 == 2) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow2; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow2; } else { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTime; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTime; } checkNextActionWolf(1); @@ -2656,9 +2656,9 @@ int daAlink_c::procWolfDash() { int daAlink_c::procWolfDashReverseInit(int param_0) { commonProcInit(PROC_WOLF_DASH_REVERSE); - setSingleAnimeWolf(WANM_ATTACK_RECOIL_GROUND, daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mSpeed, - daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mStartFrame, 5, - daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mInterpolation); + setSingleAnimeWolf(WANM_ATTACK_RECOIL_GROUND, mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mSpeed, + mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mStartFrame, 5, + mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mInterpolation); if (param_0) { current.angle.y = field_0x3102 + 0x8000; @@ -2672,8 +2672,8 @@ int daAlink_c::procWolfDashReverseInit(int param_0) { mProcVar2.field_0x300c = 1; } else { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mDashReboundHorizontalSpeed; - speed.y = daAlinkHIO_wlMove_c0::m.mDashReboundVerticalSpeed; + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mDashReboundHorizontalSpeed; + speed.y = mpHIO->mWolf.mWlMove.m.mDashReboundVerticalSpeed; current.angle.y += 0x8000; mProcVar2.field_0x300c = 0; } @@ -2696,7 +2696,7 @@ int daAlink_c::procWolfDashReverse() { if (!checkModeFlg(0x2)) { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mCancelFrame) { checkNextActionWolf(1); } } else if (mProcVar2.field_0x300c != 0) { @@ -2709,10 +2709,10 @@ int daAlink_c::procWolfDashReverse() { } mNormalSpeed = 0.0f; - frameCtrl_p->setFrame(daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mSpeed + frameCtrl_p->getFrame()); + frameCtrl_p->setFrame(mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mSpeed + frameCtrl_p->getFrame()); getNowAnmPackUnder(UNDER_0)->setFrame(frameCtrl_p->getFrame()); - frameCtrl_p->setRate(daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mSpeed); - frameCtrl_p->setEnd(daAlinkHIO_wlMove_c0::m.mDashReboundAnm.mEndFrame); + frameCtrl_p->setRate(mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mSpeed); + frameCtrl_p->setEnd(mpHIO->mWolf.mWlMove.m.mDashReboundAnm.mEndFrame); current.angle.y = shape_angle.y; offModeFlg(0x2); @@ -2732,7 +2732,7 @@ int daAlink_c::procWolfAtnActorMoveInit() { } setWolfAtnMoveDirection(); - setBlendWolfAtnMoveAnime(daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setBlendWolfAtnMoveAnime(mpHIO->mWolf.mWlMove.m.mNormalInterpolation); if (checkWolfAtnWait()) { voiceStartLevel(Z2SE_WL_V_ROAR); @@ -2772,12 +2772,12 @@ int daAlink_c::procWolfWaitTurnInit() { f32 anm_speed; if (checkWolfDashMode()) { - anm_speed = daAlinkHIO_wlMove_c0::m.mWalkAnmSpeed; + anm_speed = mpHIO->mWolf.mWlMove.m.mWalkAnmSpeed; } else { - anm_speed = daAlinkHIO_wlMoveNoP_c0::m.mWalkAnmSpeed; + anm_speed = mpHIO->mWolf.mWlMoveNoP.m.mWalkAnmSpeed; } - setSingleAnimeWolfBaseSpeed(WANM_WALK_A, anm_speed, daAlinkHIO_wlMove_c0::m.mNormalInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_WALK_A, anm_speed, mpHIO->mWolf.mWlMove.m.mNormalInterpolation); if (checkEventRun()) { mNormalSpeed = 0.0f; @@ -2791,9 +2791,9 @@ int daAlink_c::procWolfWaitTurnInit() { int daAlink_c::procWolfWaitTurn() { f32 step_amount; if (checkWolfDashMode()) { - step_amount = daAlinkHIO_wlMove_c0::m.mDeceleration; + step_amount = mpHIO->mWolf.mWlMove.m.mDeceleration; } else { - step_amount = daAlinkHIO_wlMoveNoP_c0::m.mDeceleration; + step_amount = mpHIO->mWolf.mWlMoveNoP.m.mDeceleration; } cLib_chaseF(&mNormalSpeed, 0.0f, step_amount); @@ -2844,9 +2844,9 @@ int daAlink_c::procWolfSideStepInit(int param_0) { } current.angle.y = shape_angle.y + 0x8000; - setSingleAnimeWolfParam(WANM_BACK_JUMP_START, &daAlinkHIO_wlSideStep_c0::m.mBackJumpAnm); - mNormalSpeed = daAlinkHIO_wlSideStep_c0::m.mBackJumpHorizSpeed; - speed.y = daAlinkHIO_wlSideStep_c0::m.mBackJumpVertSpeed; + setSingleAnimeWolfParam(WANM_BACK_JUMP_START, &mpHIO->mWolf.mWlSideStep.m.mBackJumpAnm); + mNormalSpeed = mpHIO->mWolf.mWlSideStep.m.mBackJumpHorizSpeed; + speed.y = mpHIO->mWolf.mWlSideStep.m.mBackJumpVertSpeed; mProcVar1.field_0x300a = 0; } else { shape_angle.y = field_0x2fe4; @@ -2860,9 +2860,9 @@ int daAlink_c::procWolfSideStepInit(int param_0) { current.angle.y = shape_angle.y - 0x4000; } - setSingleAnimeWolfParam(jump_anm, &daAlinkHIO_wlSideStep_c0::m.mSideJumpAnm); - mNormalSpeed = daAlinkHIO_wlSideStep_c0::m.mSideJumpHorizSpeed; - speed.y = daAlinkHIO_wlSideStep_c0::m.mSideJumpVertSpeed; + setSingleAnimeWolfParam(jump_anm, &mpHIO->mWolf.mWlSideStep.m.mSideJumpAnm); + mNormalSpeed = mpHIO->mWolf.mWlSideStep.m.mSideJumpHorizSpeed; + speed.y = mpHIO->mWolf.mWlSideStep.m.mSideJumpVertSpeed; mProcVar1.field_0x300a = 1; } @@ -2875,8 +2875,8 @@ int daAlink_c::procWolfSideStepInit(int param_0) { int daAlink_c::procWolfSideStep() { if (mProcVar1.field_0x300a == 0) { cLib_addCalcAngleS( - &shape_angle.y, mProcVar2.field_0x300c, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleRate, - daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMax, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMin); + &shape_angle.y, mProcVar2.field_0x300c, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleRate, + mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMax, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin); current.angle.y = shape_angle.y + 0x8000; } else if (mTargetedActor != NULL) { cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchActorAngleY(this, mTargetedActor), 5, 0x5E8, @@ -2896,10 +2896,10 @@ int daAlink_c::procWolfSideStep() { } if (mDemo.getDemoMode() != 0x10 && - current.pos.y < mLastJumpPos.y - daAlinkHIO_wlSideStep_c0::m.mFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mWolf.mWlSideStep.m.mFallHeight) { field_0x2f98 = 0; - return procWolfFallInit(2, daAlinkHIO_wlSideStep_c0::m.mFallInterp); + return procWolfFallInit(2, mpHIO->mWolf.mWlSideStep.m.mFallInterp); } mProcVar3.field_0x300e = 1; @@ -2910,15 +2910,18 @@ int daAlink_c::procWolfSideStepLandInit(s16 param_0) { commonProcInit(PROC_WOLF_SIDESTEP_LAND); if (field_0x2f98 == 1) { - setSingleAnimeWolfParam(WANM_BACK_JUMP_END, &daAlinkHIO_wlSideStep_c0::m.mBackLandAnm); - field_0x3478 = daAlinkHIO_wlSideStep_c0::m.mBackLandAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_BACK_JUMP_END, &mpHIO->mWolf.mWlSideStep.m.mBackLandAnm); + field_0x3478 = mpHIO->mWolf.mWlSideStep.m.mBackLandAnm.mCancelFrame; field_0x2fcc = 10; } else { field_0x2fcc = 0; - setSingleAnimeWolfParam(field_0x2f98 == 2 ? WANM_SIDE_JUMP_LEFT_END : - WANM_SIDE_JUMP_RIGHT_END, - &daAlinkHIO_wlSideStep_c0::m.mSideLandAnm); - field_0x3478 = daAlinkHIO_wlSideStep_c0::m.mSideLandAnm.mCancelFrame; + setSingleAnimeWolfParam( + field_0x2f98 == 2 ? WANM_SIDE_JUMP_LEFT_END : WANM_SIDE_JUMP_RIGHT_END, + // Fakematch, should be + // &mpHIO->mWolf.mWlSideStep.m.mSideLandAnm + &daAlinkHIO_wlSideStep_c0::m.mSideLandAnm + ); + field_0x3478 = mpHIO->mWolf.mWlSideStep.m.mSideLandAnm.mCancelFrame; } mProcVar5.field_0x3012 = param_0; @@ -2958,23 +2961,23 @@ int daAlink_c::procWolfBackJumpInit(int param_0) { commonProcInit(PROC_WOLF_BACKJUMP); if (param_0 == 1) { - setSingleAnimeWolfParam(WANM_BACKFLIP_START, &daAlinkHIO_wlAtDown_c0::m.mBackRollAnm); - mNormalSpeed = daAlinkHIO_wlAtDown_c0::m.mLandingSideRollMovementWidth; - speed.y = daAlinkHIO_wlAtDown_c0::m.mLandingFrontBackMovementWidth; + setSingleAnimeWolfParam(WANM_BACKFLIP_START, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mBackRollAnm); + mNormalSpeed = mpHIO->mWolf.mWlAttack.mWlAtDown.m.mLandingSideRollMovementWidth; + speed.y = mpHIO->mWolf.mWlAttack.mWlAtDown.m.mLandingFrontBackMovementWidth; voiceStart(Z2SE_WL_V_BREATH_JUMP); } else { if (param_0 == 2) { - setSingleAnimeWolf(WANM_BACKFLIP_START, daAlinkHIO_wlAtCjump_c0::m.mFlipKickPostAnmSpeed, - daAlinkHIO_wlAtCjump_c0::m.mFlipKickPostStartF, - daAlinkHIO_wlBackJump_c0::m.mBackJumpAnm.mEndFrame, - daAlinkHIO_wlBackJump_c0::m.mBackJumpAnm.mInterpolation); + setSingleAnimeWolf(WANM_BACKFLIP_START, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mFlipKickPostAnmSpeed, + mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mFlipKickPostStartF, + mpHIO->mWolf.mWlBackJump.m.mBackJumpAnm.mEndFrame, + mpHIO->mWolf.mWlBackJump.m.mBackJumpAnm.mInterpolation); } else { - setSingleAnimeWolfParam(WANM_BACKFLIP_START, &daAlinkHIO_wlBackJump_c0::m.mBackJumpAnm); + setSingleAnimeWolfParam(WANM_BACKFLIP_START, &mpHIO->mWolf.mWlBackJump.m.mBackJumpAnm); voiceStart(Z2SE_WL_V_BREATH_JUMP); } - mNormalSpeed = daAlinkHIO_wlBackJump_c0::m.mBackJumpHorizSpeed; - speed.y = daAlinkHIO_wlBackJump_c0::m.mBackJumpVertSpeed; + mNormalSpeed = mpHIO->mWolf.mWlBackJump.m.mBackJumpHorizSpeed; + speed.y = mpHIO->mWolf.mWlBackJump.m.mBackJumpVertSpeed; } if (mTargetedActor != NULL && param_0 == 0) { @@ -2997,8 +3000,8 @@ int daAlink_c::procWolfBackJumpInit(int param_0) { } int daAlink_c::procWolfBackJump() { - cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleRate, - daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMax, daAlinkHIO_wlAtnMove_c0::m.mTurnAngleMin); + cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleRate, + mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMax, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin); current.angle.y = shape_angle.y - -0x8000; if (mProcVar4.field_0x3010 != 0) { @@ -3010,10 +3013,10 @@ int daAlink_c::procWolfBackJump() { if (mUnderFrameCtrl[0].checkAnmEnd() && mLinkAcch.ChkGroundHit()) { procWolfBackJumpLandInit(mProcVar5.field_0x3012, mProcVar4.field_0x3010); } else if (mDemo.getDemoMode() != 0x10 && - current.pos.y < mLastJumpPos.y - daAlinkHIO_wlBackJump_c0::m.mFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mWolf.mWlBackJump.m.mFallHeight) { field_0x2f98 = 0; - procWolfFallInit(2, daAlinkHIO_wlBackJump_c0::m.mFallInterp); + procWolfFallInit(2, mpHIO->mWolf.mWlBackJump.m.mFallInterp); } return 1; @@ -3021,7 +3024,7 @@ int daAlink_c::procWolfBackJump() { int daAlink_c::procWolfBackJumpLandInit(s16 param_0, s16 param_1) { commonProcInit(PROC_WOLF_BACKJUMP_LAND); - setSingleAnimeWolfParam(WANM_BACKFLIP_END, &daAlinkHIO_wlBackJump_c0::m.mBackLandAnm); + setSingleAnimeWolfParam(WANM_BACKFLIP_END, &mpHIO->mWolf.mWlBackJump.m.mBackLandAnm); mNormalSpeed = 0.0f; field_0x2f9d = 4; setFootEffectProcType(2); @@ -3052,7 +3055,7 @@ int daAlink_c::procWolfBackJumpLand() { } else { checkNextActionWolf(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_wlBackJump_c0::m.mBackLandAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlBackJump.m.mBackLandAnm.mCancelFrame) { checkNextActionWolf(1); } @@ -3067,13 +3070,13 @@ int daAlink_c::procWolfHowlInit(int param_0) { commonProcInit(PROC_WOLF_HOWL); if (param_0 != 0) { - setSingleAnimeWolfParam(WANM_HOWL_SIT, &daAlinkHIO_wlHowl_c0::m.mSittingHowlAnm); + setSingleAnimeWolfParam(WANM_HOWL_SIT, &mpHIO->mWolf.mWlHowl.m.mSittingHowlAnm); onModeFlg(0x800000); - field_0x3478 = daAlinkHIO_wlHowl_c0::m.mSittingHowlAnm.mCancelFrame; + field_0x3478 = mpHIO->mWolf.mWlHowl.m.mSittingHowlAnm.mCancelFrame; mProcVar3.field_0x300e = 1; } else { - setSingleAnimeWolfParam(WANM_HOWL, &daAlinkHIO_wlHowl_c0::m.mHowlAnm); - field_0x3478 = daAlinkHIO_wlHowl_c0::m.mHowlAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_HOWL, &mpHIO->mWolf.mWlHowl.m.mHowlAnm); + field_0x3478 = mpHIO->mWolf.mWlHowl.m.mHowlAnm.mCancelFrame; mProcVar3.field_0x300e = 0; } @@ -3128,25 +3131,25 @@ int daAlink_c::procWolfAutoJumpInit(int param_0) { s16 var_r30; if (checkWolfDashMode() && field_0x2fc7 != 3) { - var_f1 = daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mSpeed; - field_0x594 = daAlinkHIO_wlAutoJump_c0::m.mJumpMaxSpeed; - var_f31 = daAlinkHIO_wlAutoJump_c0::m.mJumpMinSpeed; - var_f30 = daAlinkHIO_wlAutoJump_c0::m.mJumpSpeedRate; - var_r30 = daAlinkHIO_wlAutoJump_c0::m.mJumpAngle; + var_f1 = mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mSpeed; + field_0x594 = mpHIO->mWolf.mWlAutoJump.m.mJumpMaxSpeed; + var_f31 = mpHIO->mWolf.mWlAutoJump.m.mJumpMinSpeed; + var_f30 = mpHIO->mWolf.mWlAutoJump.m.mJumpSpeedRate; + var_r30 = mpHIO->mWolf.mWlAutoJump.m.mJumpAngle; onNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); } else { - var_f1 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpAnmSpeed; - field_0x594 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpMaxSpeed; - var_f31 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpMinSpeed; - var_f30 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpSpeedRate; - var_r30 = daAlinkHIO_wlAutoJump_c0::m.mWeakJumpAngle; + var_f1 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpAnmSpeed; + field_0x594 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpMaxSpeed; + var_f31 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpMinSpeed; + var_f30 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpSpeedRate; + var_r30 = mpHIO->mWolf.mWlAutoJump.m.mWeakJumpAngle; } setSingleAnimeWolf(WANM_JUMP_ATTACK_START, var_f1, - daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mStartFrame, - daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mEndFrame, - daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mInterpolation); - if (speedF > field_0x594 || param_0 || daAlinkHIO_wlAutoJump_c0::m.mAlwaysMaxSpeedJump == true) { + mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mStartFrame, + mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mEndFrame, + mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mInterpolation); + if (speedF > field_0x594 || param_0 || mpHIO->mWolf.mWlAutoJump.m.mAlwaysMaxSpeedJump == true) { speedF = field_0x594; } else if (speedF < var_f31) { speedF = var_f31; @@ -3193,27 +3196,27 @@ int daAlink_c::procWolfAutoJump() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; if (!checkUnderMove0BckNoArcWolf(WANM_FALL_LAND) && - (mFallHeight - current.pos.y) * 0.01f > daAlinkHIO_wlDamFall_c0::m.mAirAnmTransitionHeight) + (mFallHeight - current.pos.y) * 0.01f > mpHIO->mWolf.mWlDamage.mFall.m.mAirAnmTransitionHeight) { field_0x2f99 = 12; - setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f, daAlinkHIO_wlDamFall_c0::m.mAirAnmInterp); + setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f, mpHIO->mWolf.mWlDamage.mFall.m.mAirAnmInterp); } else if (checkUnderMove0BckNoArcWolf(WANM_JUMP_ATTACK_START)) { if (speed.y < -gravity) { field_0x2f99 = 12; - setSingleAnimeWolfParam(WANM_JUMP_ATTACK, &daAlinkHIO_wlAutoJump_c0::m.mClimbAnm); + setSingleAnimeWolfParam(WANM_JUMP_ATTACK, &mpHIO->mWolf.mWlAutoJump.m.mClimbAnm); } else if (checkAnmEnd(frameCtrl_p)) { field_0x2f99 = 12; setSingleAnimeWolf(WANM_JUMP_ATTACK, 0.0f, - daAlinkHIO_wlAutoJump_c0::m.mClimbAnm.mStartFrame, - daAlinkHIO_wlAutoJump_c0::m.mClimbAnm.mEndFrame, - daAlinkHIO_wlAutoJump_c0::m.mClimbAnm.mInterpolation); + mpHIO->mWolf.mWlAutoJump.m.mClimbAnm.mStartFrame, + mpHIO->mWolf.mWlAutoJump.m.mClimbAnm.mEndFrame, + mpHIO->mWolf.mWlAutoJump.m.mClimbAnm.mInterpolation); mProcVar2.field_0x300c = 0; } } else if (mProcVar2.field_0x300c == 0 && checkUnderMove0BckNoArcWolf(WANM_JUMP_ATTACK) && speed.y < -gravity) { mProcVar2.field_0x300c = 1; - frameCtrl_p->setRate(daAlinkHIO_wlAutoJump_c0::m.mClimbAnm.mSpeed); + frameCtrl_p->setRate(mpHIO->mWolf.mWlAutoJump.m.mClimbAnm.mSpeed); } return 1; @@ -3301,10 +3304,10 @@ int daAlink_c::procWolfFall() { } if (!checkUnderMove0BckNoArcWolf(WANM_FALL_LAND) && - (mFallHeight - current.pos.y) * 0.01f > daAlinkHIO_wlDamFall_c0::m.mAirAnmTransitionHeight) + (mFallHeight - current.pos.y) * 0.01f > mpHIO->mWolf.mWlDamage.mFall.m.mAirAnmTransitionHeight) { field_0x2f99 = 12; - setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f, daAlinkHIO_wlDamFall_c0::m.mAirAnmInterp); + setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f, mpHIO->mWolf.mWlDamage.mFall.m.mAirAnmInterp); } return 1; @@ -3315,8 +3318,8 @@ int daAlink_c::procWolfLandInit() { mNormalSpeed = 0.0f; field_0x2f99 = 12; - setSingleAnimeWolfParam(WANM_JUMP_ATTACK_END, &daAlinkHIO_wlAutoJump_c0::m.mLandingAnm); - field_0x3478 = daAlinkHIO_wlAutoJump_c0::m.mLandingAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_JUMP_ATTACK_END, &mpHIO->mWolf.mWlAutoJump.m.mLandingAnm); + field_0x3478 = mpHIO->mWolf.mWlAutoJump.m.mLandingAnm.mCancelFrame; mProcVar2.field_0x300c = 1; field_0x2f9d = 4; @@ -3350,14 +3353,14 @@ int daAlink_c::procWolfSitInit(int param_0) { if (param_0 != 0 && !checkUnderMove0BckNoArcWolf(WANM_WAIT_SIT) && !checkUnderMove0BckNoArcWolf(WANM_HOWL_SIT)) { - setSingleAnimeWolfParam(WANM_SIT, &daAlinkHIO_wlLie_c0::m.mSittingAnm); + setSingleAnimeWolfParam(WANM_SIT, &mpHIO->mWolf.mWlLie.m.mSittingAnm); field_0x3198 = 0; } else { field_0x3198 = 1; if (!checkUnderMove0BckNoArcWolf(WANM_WAIT_SIT)) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } } @@ -3369,14 +3372,14 @@ int daAlink_c::procWolfSit() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; cLib_chaseF(&mNormalSpeed, 0.0f, - checkWolfDashMode() ? daAlinkHIO_wlMove_c0::m.mDeceleration : - daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + checkWolfDashMode() ? mpHIO->mWolf.mWlMove.m.mDeceleration : + mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); if (!spActionButton() && mDemo.getDemoMode() != 0xF) { checkNextActionWolfFromLie(); } else if (frameCtrl->checkAnmEnd()) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); field_0x3198 = 1; } @@ -3385,7 +3388,7 @@ int daAlink_c::procWolfSit() { int daAlink_c::procWolfStepMoveInit() { commonProcInit(PROC_WOLF_STEP_MOVE); - setSingleAnimeWolfParam(WANM_BUMP_START, &daAlinkHIO_wlWallHang_c0::m.mLedgeClimbAnm); + setSingleAnimeWolfParam(WANM_BUMP_START, &mpHIO->mWolf.mWlWallHang.m.mLedgeClimbAnm); field_0x3478 = 0.5f * mNormalSpeed; mNormalSpeed = 0.0f; mProcVar2.field_0x300c = 0; @@ -3408,7 +3411,7 @@ int daAlink_c::procWolfStepMove() { return checkNextActionWolf(0); } - if (frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.mLedgeLandAnm.mCancelFrame) { + if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlWallHang.m.mLedgeLandAnm.mCancelFrame) { mNormalSpeed = field_0x3478; if (checkNextActionWolf(1)) { @@ -3418,7 +3421,7 @@ int daAlink_c::procWolfStepMove() { mNormalSpeed = 0.0f; } } else if (checkAnmEnd(frameCtrl_p)) { - setSingleAnimeWolfParam(WANM_BUMP_END, &daAlinkHIO_wlWallHang_c0::m.mLedgeLandAnm); + setSingleAnimeWolfParam(WANM_BUMP_END, &mpHIO->mWolf.mWlWallHang.m.mLedgeLandAnm); current.pos.set(field_0x34ec.x + cM_ssin(shape_angle.y) * 2.0f, field_0x34ec.y, field_0x34ec.z + cM_scos(shape_angle.y) * 2.0f); field_0x2f99 = 0x50; @@ -3430,12 +3433,12 @@ int daAlink_c::procWolfStepMove() { int daAlink_c::procWolfSlipInit() { commonProcInit(PROC_WOLF_SLIP); - setSingleAnimeWolfParam(WANM_SLIP, &daAlinkHIO_wlMove_c0::m.mSlipAnm); + setSingleAnimeWolfParam(WANM_SLIP, &mpHIO->mWolf.mWlMove.m.mSlipAnm); if (checkWolfDashMode()) { - mNormalSpeed = speedF * daAlinkHIO_wlMove_c0::m.mSlipInitSpeedRate; + mNormalSpeed = speedF * mpHIO->mWolf.mWlMove.m.mSlipInitSpeedRate; } else { - mNormalSpeed = speedF * daAlinkHIO_wlMoveNoP_c0::m.mSlideInitSpeed; + mNormalSpeed = speedF * mpHIO->mWolf.mWlMoveNoP.m.mSlideInitSpeed; } current.angle.y = shape_angle.y; @@ -3451,9 +3454,9 @@ int daAlink_c::procWolfSlip() { f32 var_f2; if (checkWolfDashMode()) { - var_f2 = daAlinkHIO_wlMove_c0::m.mSlipDeceleration; + var_f2 = mpHIO->mWolf.mWlMove.m.mSlipDeceleration; } else { - var_f2 = daAlinkHIO_wlMoveNoP_c0::m.mSlideDeceleration; + var_f2 = mpHIO->mWolf.mWlMoveNoP.m.mSlideDeceleration; } cLib_chaseF(&mNormalSpeed, 0.0f, var_f2); @@ -3487,24 +3490,24 @@ int daAlink_c::procWolfSlipTurnInit(int param_0) { f32 var_f31; if (param_0) { - var_f31 = daAlinkHIO_wlMove_c0::m.mReverseAnm.mStartFrame; + var_f31 = mpHIO->mWolf.mWlMove.m.mReverseAnm.mStartFrame; current.angle.y = shape_angle.y + 0x8000; if (checkWolfDashMode()) { - field_0x347c = daAlinkHIO_wlMove_c0::m.mReverseSpeed; + field_0x347c = mpHIO->mWolf.mWlMove.m.mReverseSpeed; } else { - field_0x347c = daAlinkHIO_wlMoveNoP_c0::m.mReverseSpeed; + field_0x347c = mpHIO->mWolf.mWlMoveNoP.m.mReverseSpeed; } } else { - var_f31 = daAlinkHIO_wlMove_c0::m.mIdleReverseStartFrame; + var_f31 = mpHIO->mWolf.mWlMove.m.mIdleReverseStartFrame; current.angle.y = field_0x2fe2; setOldRootQuaternion(0, (shape_angle.y - current.angle.y) - 0x8000, 0); shape_angle.y = current.angle.y + 0x8000; field_0x347c = 10.0f; } - setSingleAnimeWolf(WANM_TURN, daAlinkHIO_wlMove_c0::m.mReverseAnm.mSpeed, var_f31, 12, - daAlinkHIO_wlMove_c0::m.mReverseAnm.mInterpolation); + setSingleAnimeWolf(WANM_TURN, mpHIO->mWolf.mWlMove.m.mReverseAnm.mSpeed, var_f31, 12, + mpHIO->mWolf.mWlMove.m.mReverseAnm.mInterpolation); voiceStart(Z2SE_WL_V_BREATH_JUMP); mNormalSpeed = 0.0f; @@ -3531,12 +3534,12 @@ int daAlink_c::procWolfSlipTurn() { mNormalSpeed = field_0x347c; setJumpMode(); } else if (checkModeFlg(2) && - current.pos.y < mLastJumpPos.y - daAlinkHIO_wlMove_c0::m.mReverseFallHeight) + current.pos.y < mLastJumpPos.y - mpHIO->mWolf.mWlMove.m.mReverseFallHeight) { setOldRootQuaternion(0, -0x8000, 0); shape_angle.y = current.angle.y; field_0x2fe6 = shape_angle.y; - procWolfFallInit(2, daAlinkHIO_wlMove_c0::m.mReverseFallInterpolation); + procWolfFallInit(2, mpHIO->mWolf.mWlMove.m.mReverseFallInterpolation); } return 1; @@ -3546,11 +3549,11 @@ int daAlink_c::procWolfSlipTurnLandInit() { commonProcInit(PROC_WOLF_SLIP_TURN_LAND); daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; - setFrameCtrl(frameCtrl, 0, 0, daAlinkHIO_wlMove_c0::m.mReverseAnm.mEndFrame, - daAlinkHIO_wlMove_c0::m.mReverseAnm.mSpeed, - frameCtrl->getFrame() + daAlinkHIO_wlMove_c0::m.mReverseAnm.mSpeed); + setFrameCtrl(frameCtrl, 0, 0, mpHIO->mWolf.mWlMove.m.mReverseAnm.mEndFrame, + mpHIO->mWolf.mWlMove.m.mReverseAnm.mSpeed, + frameCtrl->getFrame() + mpHIO->mWolf.mWlMove.m.mReverseAnm.mSpeed); - mNormalSpeed = 0.25f * daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed; + mNormalSpeed = 0.25f * mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed; field_0x2f99 = 5; setFootEffectProcType(2); field_0x2f9d = 8; @@ -3565,7 +3568,7 @@ int daAlink_c::procWolfSlipTurnLand() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlMove_c0::m.mReverseAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlMove.m.mReverseAnm.mCancelFrame) { checkNextActionWolf(1); } @@ -3576,11 +3579,11 @@ int daAlink_c::procWolfSlideReadyInit(s16 i_angle, int param_1) { commonProcInit(PROC_WOLF_SLIDE_READY); field_0x3090 = 8; current.angle.y = i_angle; - setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &daAlinkHIO_wlSlide_c0::m.mFrontSlideAnm); + setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &mpHIO->mWolf.mWlSlide.m.mFrontSlideAnm); voiceStart(Z2SE_WL_V_SLIP_ROLL); mNormalSpeed = 0.0f; - field_0x594 = daAlinkHIO_wlSlide_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlSlide.m.mMaxSpeed; field_0x3588 = l_wolfBaseAnime; field_0x3478 = 1.0f / mUnderFrameCtrl[0].getEnd(); mProcVar2.field_0x300c = 0; @@ -3629,17 +3632,17 @@ int daAlink_c::procWolfSlideInit(s16 i_angle, int param_1) { field_0x814.SetWeight(0xFF); field_0x3090 = 8; current.angle.y = i_angle; - setSingleAnimeWolfParam(WANM_SLIDE_BACKWARD, &daAlinkHIO_wlSlide_c0::m.mBackSlideAnm); + setSingleAnimeWolfParam(WANM_SLIDE_BACKWARD, &mpHIO->mWolf.mWlSlide.m.mBackSlideAnm); if (param_1) { - mUnderFrameCtrl[0].setFrame(daAlinkHIO_wlSlide_c0::m.mBackSlideAnm.mEndFrame); - getNowAnmPackUnder(UNDER_0)->setFrame(daAlinkHIO_wlSlide_c0::m.mBackSlideAnm.mEndFrame); + mUnderFrameCtrl[0].setFrame(mpHIO->mWolf.mWlSlide.m.mBackSlideAnm.mEndFrame); + getNowAnmPackUnder(UNDER_0)->setFrame(mpHIO->mWolf.mWlSlide.m.mBackSlideAnm.mEndFrame); } dComIfGp_setPlayerStatus1(0, 0x200); field_0x2f9d = 0x78; setFootEffectProcType(1); - field_0x594 = daAlinkHIO_wlSlide_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlSlide.m.mMaxSpeed; return 1; } @@ -3651,7 +3654,7 @@ int daAlink_c::procWolfSlide() { cLib_addCalcAngleS(¤t.angle.y, var_r30, 4, 0x1000, 0x400); cLib_addCalcAngleS(&shape_angle.y, current.angle.y + 0x8000, 4, 0x1000, 0x400); - mNormalSpeed += daAlinkHIO_wlSlide_c0::m.mAcceleration * + mNormalSpeed += mpHIO->mWolf.mWlSlide.m.mAcceleration * ((1.0f - slide_poly.mNormal.y) * 0.5f + 1.0f) * cM_scos(current.angle.y - var_r30); if (mNormalSpeed > field_0x594) { @@ -3669,7 +3672,7 @@ int daAlink_c::procWolfSlide() { int daAlink_c::procWolfSlideLandInit() { commonProcInit(PROC_WOLF_SLIDE_LAND); - setSingleAnimeWolfParam(WANM_SLIDE_BACKWARD_END, &daAlinkHIO_wlSlide_c0::m.mLandingAnm); + setSingleAnimeWolfParam(WANM_SLIDE_BACKWARD_END, &mpHIO->mWolf.mWlSlide.m.mLandingAnm); mNormalSpeed *= 0.5f; field_0x814.SetWeight(0xFF); @@ -3684,7 +3687,7 @@ int daAlink_c::procWolfSlideLand() { if (frameCtrl->checkAnmEnd()) { current.angle.y = shape_angle.y; checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.mLandingAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlSlide.m.mLandingAnm.mCancelFrame) { s16 old_angle = current.angle.y; current.angle.y = shape_angle.y; @@ -3701,8 +3704,8 @@ int daAlink_c::procWolfWaitSlipInit() { return 0; } - setSingleAnimeWolfBaseSpeed(WANM_ATN, daAlinkHIO_wlMove_c0::m.mGazeIdleAnmSpeed, - daAlinkHIO_wlMove_c0::m.mIdleInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_ATN, mpHIO->mWolf.mWlMove.m.mGazeIdleAnmSpeed, + mpHIO->mWolf.mWlMove.m.mIdleInterpolation); mNormalSpeed = 0.0f; setWolfWaitSlip(); field_0x2f9d = 120; @@ -3734,9 +3737,9 @@ int daAlink_c::procWolfWaitSlip() { if (!checkNextActionWolf(0)) { f32 temp_f1 = setWolfWaitSlip(); - mNormalSpeed = var_f31 + (daAlinkHIO_wlSlide_c0::m.mSlipDownAcceleration * (temp_f1 + 1.0f)); - if (mNormalSpeed > daAlinkHIO_wlSlide_c0::m.mSlipDownMaxSpeed) { - mNormalSpeed = daAlinkHIO_wlSlide_c0::m.mSlipDownMaxSpeed; + mNormalSpeed = var_f31 + (mpHIO->mWolf.mWlSlide.m.mSlipDownAcceleration * (temp_f1 + 1.0f)); + if (mNormalSpeed > mpHIO->mWolf.mWlSlide.m.mSlipDownMaxSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlSlide.m.mSlipDownMaxSpeed; } field_0x2f9d = 0x78; @@ -3748,8 +3751,8 @@ int daAlink_c::procWolfWaitSlip() { var_r4 = current.angle.y; } - cLib_addCalcAngleS(&shape_angle.y, var_r4, 4, daAlinkHIO_wlSlide_c0::m.mSlipDownRotationMax, - daAlinkHIO_wlSlide_c0::m.mSlipDownRotationMin); + cLib_addCalcAngleS(&shape_angle.y, var_r4, 4, mpHIO->mWolf.mWlSlide.m.mSlipDownRotationMax, + mpHIO->mWolf.mWlSlide.m.mSlipDownRotationMin); seStartMapInfoLevel(Z2SE_FN_WOLF_SLIP); } @@ -3758,7 +3761,7 @@ int daAlink_c::procWolfWaitSlip() { int daAlink_c::procWolfSlopeStartInit(int param_0) { commonProcInit(PROC_WOLF_SLOPE_START); - setSingleAnimeWolfParam(WANM_SLIDE_W, &daAlinkHIO_wlSlide_c0::m.mSlipDownRecoveryAnm); + setSingleAnimeWolfParam(WANM_SLIDE_W, &mpHIO->mWolf.mWlSlide.m.mSlipDownRecoveryAnm); field_0x3588 = l_wolfBaseAnime; mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; @@ -3775,7 +3778,7 @@ int daAlink_c::procWolfSlopeStart() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.mSlipDownRecoveryAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlSlide.m.mSlipDownRecoveryAnm.mCancelFrame) { if (!checkNextActionWolf(1)) { field_0x2f99 = 5; } @@ -3823,8 +3826,8 @@ void daAlink_c::setWolfHowlNotHappen(int param_0) { if (!checkUnderMove0BckNoArcWolf(WANM_HOWL_END)) { if (param_0 != 0) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } else { setSingleAnimeWolfBase(WANM_SERVICE_WAIT_D); } @@ -3926,14 +3929,14 @@ int daAlink_c::procWolfHowlDemoInit() { if (!checkUnderMove0BckNoArcWolf(WANM_WAIT_SIT) && !checkUnderMove0BckNoArcWolf(WANM_LISTEN) && !checkUnderMove0BckNoArcWolf(WANM_HOWL_SIT)) { - setSingleAnimeWolfParam(WANM_SIT, &daAlinkHIO_wlLie_c0::m.mSittingAnm); + setSingleAnimeWolfParam(WANM_SIT, &mpHIO->mWolf.mWlLie.m.mSittingAnm); field_0x347c = -1.0f; } else { field_0x347c = 10.0f; if (mProcVar4.field_0x3010 == 0) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } else { setSingleAnimeWolfBase(WANM_LISTEN); setFaceBasicTexture(FTANM_UNK_A2); @@ -3993,8 +3996,8 @@ int daAlink_c::procWolfHowlDemo() { setSingleAnimeWolfBase(WANM_LISTEN); setFaceBasicTexture(FTANM_UNK_A2); } else { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } field_0x347c = 1.0f; @@ -4020,7 +4023,7 @@ int daAlink_c::procWolfHowlDemo() { { if (!checkUnderMove0BckNoArcWolf(WANM_HOWL_SIT) || mProcVar1.field_0x300a == 0) { mProcVar1.field_0x300a = 1; - setSingleAnimeWolfParam(WANM_HOWL_SIT, &daAlinkHIO_wlHowl_c0::m.mSittingHowlAnm); + setSingleAnimeWolfParam(WANM_HOWL_SIT, &mpHIO->mWolf.mWlHowl.m.mSittingHowlAnm); } else { if (frameCtrl_p->getFrame() > 56.0f) { frameCtrl_p->setFrame((frameCtrl_p->getFrame() - 56.0f) + 38.0f); @@ -4044,8 +4047,8 @@ int daAlink_c::procWolfHowlDemo() { setSingleAnimeWolfBase(WANM_LISTEN); setFaceBasicTexture(FTANM_UNK_A2); } else if (checkAnmEnd(frameCtrl_p)) { - setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, daAlinkHIO_wlLie_c0::m.mSittingIdleAnmSpeed, - daAlinkHIO_wlLie_c0::m.mSittingIdleInterp); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_SIT, mpHIO->mWolf.mWlLie.m.mSittingIdleAnmSpeed, + mpHIO->mWolf.mWlLie.m.mSittingIdleInterp); } } @@ -4207,7 +4210,7 @@ f32 daAlink_c::getWolfRopeMoveSpeed() { frame -= 13.5f; } - return daAlinkHIO_wlRope_c0::m.mMovementRate * frameCtrl->getRate() * cM_fsin(0.23271057f * frame); + return mpHIO->mWolf.mWlRope.m.mMovementRate * frameCtrl->getRate() * cM_fsin(0.23271057f * frame); } int daAlink_c::setWolfRopePosY() { @@ -4319,7 +4322,7 @@ int daAlink_c::procWolfRopeMoveInit(int param_0, int param_1) { mProcVar2.field_0x300c = initWolfRopeShapeAngle(); current.angle.y = shape_angle.y; - setSingleAnimeWolfBaseSpeed(WANM_ROPE_WALK, 0.0f, daAlinkHIO_wlRope_c0::m.mMovementInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_ROPE_WALK, 0.0f, mpHIO->mWolf.mWlRope.m.mMovementInterpolation); if (param_0) { mUnderFrameCtrl[0].setFrame(13.5f); getNowAnmPackUnder(UNDER_0)->setFrame(13.5f); @@ -4349,8 +4352,8 @@ int daAlink_c::procWolfRopeMove() { daObjCrope_c* temp_r29 = (daObjCrope_c*)field_0x280c.getActor(); int var_r27 = 0; - f32 temp_f26 = getAnmSpeedStickRate(daAlinkHIO_wlRope_c0::m.mMovementMinAnmSpeed, daAlinkHIO_wlRope_c0::m.mMovementMaxAnmSpeed); - f32 temp_f25 = -1.0f * getAnmSpeedStickRate(daAlinkHIO_wlRope_c0::m.mMovementMinAnmSpeed, daAlinkHIO_wlRope_c0::m.mBackMovementMaxAnmSpeed); + f32 temp_f26 = getAnmSpeedStickRate(mpHIO->mWolf.mWlRope.m.mMovementMinAnmSpeed, mpHIO->mWolf.mWlRope.m.mMovementMaxAnmSpeed); + f32 temp_f25 = -1.0f * getAnmSpeedStickRate(mpHIO->mWolf.mWlRope.m.mMovementMinAnmSpeed, mpHIO->mWolf.mWlRope.m.mBackMovementMaxAnmSpeed); if (temp_r28->getRate() > 0.0f) { temp_r28->setRate(temp_f26); @@ -4513,8 +4516,8 @@ int daAlink_c::procWolfRopeHangInit(int param_0) { if (param_0 != 4) { mProcVar3.field_0x300e = 0; - setSingleAnimeWolf(WANM_HANG, daAlinkHIO_wlRope_c0::m.mTwistClimbAnmSpeed, 0.0f, 16, - daAlinkHIO_wlRope_c0::m.mFallInterpolation); + setSingleAnimeWolf(WANM_HANG, mpHIO->mWolf.mWlRope.m.mTwistClimbAnmSpeed, 0.0f, 16, + mpHIO->mWolf.mWlRope.m.mFallInterpolation); rope_p->rideKeep(); } else { mProcVar3.field_0x300e = 1; @@ -4529,8 +4532,8 @@ int daAlink_c::procWolfRopeHangInit(int param_0) { climb_anm = WANM_ROPE_CLIMB_LEFT; } - setSingleAnimeWolfBaseSpeed(climb_anm, daAlinkHIO_wlRope_c0::m.mTwistClimbAnmSpeed, - daAlinkHIO_wlRope_c0::m.mTwistClimbInterpolation); + setSingleAnimeWolfBaseSpeed(climb_anm, mpHIO->mWolf.mWlRope.m.mTwistClimbAnmSpeed, + mpHIO->mWolf.mWlRope.m.mTwistClimbInterpolation); rope_p->setFrontJoint(19); rope_p->setBackJoint(23); current.pos = rope_p->getPlayerNearPos(); @@ -4595,7 +4598,7 @@ int daAlink_c::procWolfRopeHang() { var_r27 = WANM_ROPE_CLIMB_RIGHT; } - setSingleAnimeWolfBaseSpeed(var_r27, daAlinkHIO_wlRope_c0::m.mTwistClimbAnmSpeed, daAlinkHIO_wlRope_c0::m.mTwistClimbInterpolation); + setSingleAnimeWolfBaseSpeed(var_r27, mpHIO->mWolf.mWlRope.m.mTwistClimbAnmSpeed, mpHIO->mWolf.mWlRope.m.mTwistClimbInterpolation); } f32 temp_f31 = temp_r28->getFrame(); @@ -4609,7 +4612,7 @@ int daAlink_c::procWolfRopeHang() { current.pos.z -= 80.0f * cM_scos(shape_angle.y); field_0x2060->getOldFrameTransInfo(0)->mTranslate.z += 80.0f; - return procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + return procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } } @@ -4681,7 +4684,7 @@ int daAlink_c::procWolfRopeHang() { int daAlink_c::procWolfRopeTurnInit() { commonProcInit(PROC_WOLF_ROPE_TURN); - setSingleAnimeWolfParam(WANM_ROPE_TURN, &daAlinkHIO_wlRope_c0::m.mFlipAnm); + setSingleAnimeWolfParam(WANM_ROPE_TURN, &mpHIO->mWolf.mWlRope.m.mFlipAnm); voiceStart(Z2SE_WL_V_BREATH_JUMP); setSpecialGravity(0.0f, maxFallSpeed, 0); speed.y = 0.0f; @@ -4857,7 +4860,7 @@ int daAlink_c::procWolfRopeSubjectivityInit() { commonProcInit(PROC_WOLF_ROPE_SUBJECTIVITY); if (!checkUnderMove0BckNoArcWolf(WANM_ROPE_WALK)) { - setSingleAnimeWolfBaseSpeed(WANM_ROPE_WALK, 0.0f, daAlinkHIO_wlRope_c0::m.mMovementInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_ROPE_WALK, 0.0f, mpHIO->mWolf.mWlRope.m.mMovementInterpolation); } mProcVar2.field_0x300c = initWolfRopeShapeAngle(); @@ -4928,12 +4931,12 @@ int daAlink_c::procWolfRopeSubjectivity() { int daAlink_c::getWolfTagJumpTime() const { int time; if (mProcID == PROC_WOLF_TAG_JUMP) { - time = mProcVar0.field_0x3008 + (int)((daAlinkHIO_wlPoint_c0::m.mLandingAnm.mCancelFrame - - daAlinkHIO_wlPoint_c0::m.mLandingAnm.mStartFrame) / - daAlinkHIO_wlPoint_c0::m.mLandingAnm.mSpeed); + time = mProcVar0.field_0x3008 + (int)((mpHIO->mWolf.mWlPoint.m.mLandingAnm.mCancelFrame - + mpHIO->mWolf.mWlPoint.m.mLandingAnm.mStartFrame) / + mpHIO->mWolf.mWlPoint.m.mLandingAnm.mSpeed); } else { time = (int)(checkMidnaLockJumpPoint()->abs(current.pos) / - daAlinkHIO_wlPoint_c0::m.mTagJumpSpeed); + mpHIO->mWolf.mWlPoint.m.mTagJumpSpeed); } time -= 2; @@ -4977,7 +4980,7 @@ const cXyz* daAlink_c::checkMidnaLockJumpPoint() const { int daAlink_c::procWolfTagJumpInit(fopAc_ac_c* param_0) { commonProcInit(PROC_WOLF_TAG_JUMP); - field_0x3480 = daAlinkHIO_wlPoint_c0::m.mTagJumpSpeed; + field_0x3480 = mpHIO->mWolf.mWlPoint.m.mTagJumpSpeed; field_0x3198 = 0; if (param_0 == NULL) { @@ -5000,7 +5003,7 @@ int daAlink_c::procWolfTagJumpInit(fopAc_ac_c* param_0) { mProcVar1.field_0x300a = ((daTagWljump_c*)param_0)->getNotSlideFlg(); } - setSingleAnimeWolf(WANM_JUMP_ATTACK_START, daAlinkHIO_wlAutoJump_c0::m.mWeakJumpAnmSpeed, daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mStartFrame, daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mEndFrame, daAlinkHIO_wlAutoJump_c0::m.mJumpAnm.mInterpolation); + setSingleAnimeWolf(WANM_JUMP_ATTACK_START, mpHIO->mWolf.mWlAutoJump.m.mWeakJumpAnmSpeed, mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mStartFrame, mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mEndFrame, mpHIO->mWolf.mWlAutoJump.m.mJumpAnm.mInterpolation); field_0x3588 = l_wolfBaseAnime; cXyz sp8 = field_0x37c8 - current.pos; @@ -5046,7 +5049,7 @@ int daAlink_c::procWolfTagJump() { mProcVar0.field_0x3008--; if (mProcVar0.field_0x3008 < 0) { - if (temp_r29 == NULL || temp_r29->getLockPos() == NULL || mProcVar0.field_0x3008 < -daAlinkHIO_wlPoint_c0::m.mLockJumpStopTime) { + if (temp_r29 == NULL || temp_r29->getLockPos() == NULL || mProcVar0.field_0x3008 < -mpHIO->mWolf.mWlPoint.m.mLockJumpStopTime) { procWolfWaitInit(); } else { if (field_0x3198 == 0) { @@ -5063,11 +5066,11 @@ int daAlink_c::procWolfTagJump() { mProcVar5.field_0x3012 = 1; } - if (mProcVar5.field_0x3012 && (checkModeFlg(0x100) || checkAnmEnd(temp_r28) || temp_r28->getFrame() > daAlinkHIO_wlPoint_c0::m.mLandingAnm.mCancelFrame)) { + if (mProcVar5.field_0x3012 && (checkModeFlg(0x100) || checkAnmEnd(temp_r28) || temp_r28->getFrame() > mpHIO->mWolf.mWlPoint.m.mLandingAnm.mCancelFrame)) { procWolfTagJumpInit(temp_r29); } else if (checkAnmEnd(temp_r28)) { onModeFlg(0x100); - setSingleAnimeWolfBaseSpeed(WANM_WAIT_B, daAlinkHIO_wlPoint_c0::m.mIdleAnmSpeed, daAlinkHIO_wlPoint_c0::m.mIdleInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_WAIT_B, mpHIO->mWolf.mWlPoint.m.mIdleAnmSpeed, mpHIO->mWolf.mWlPoint.m.mIdleInterpolation); } } @@ -5085,7 +5088,7 @@ int daAlink_c::procWolfTagJump() { if (checkUnderMove0BckNoArcWolf(WANM_JUMP_ATTACK_START) && checkAnmEnd(temp_r28)) { field_0x2f99 = 0xC; - setSingleAnimeWolfBaseSpeed(WANM_JUMP_ATTACK, 0.0f, daAlinkHIO_wlAutoJump_c0::m.mClimbAnm.mInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_JUMP_ATTACK, 0.0f, mpHIO->mWolf.mWlAutoJump.m.mClimbAnm.mInterpolation); } if (mProcVar0.field_0x3008 == 0) { @@ -5102,7 +5105,7 @@ int daAlink_c::procWolfTagJump() { if (mProcVar1.field_0x300a != 0) { field_0x2f99 = 0x50; - setSingleAnimeWolfParam(WANM_JUMP_B_END, &daAlinkHIO_wlPoint_c0::m.mLandingAnm); + setSingleAnimeWolfParam(WANM_JUMP_B_END, &mpHIO->mWolf.mWlPoint.m.mLandingAnm); mNormalSpeed = 0.0f; speed = cXyz::Zero; @@ -5118,14 +5121,14 @@ int daAlink_c::procWolfTagJump() { procWolfTagJumpLandInit(NULL); } } else if (field_0x3198 != 0) { - procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } else { current.pos.x -= 50.0f * cM_ssin(shape_angle.y); current.pos.z -= 50.0f * cM_scos(shape_angle.y); procWolfTagJumpLandInit(NULL); } } else { - procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } } @@ -5134,10 +5137,10 @@ int daAlink_c::procWolfTagJump() { int daAlink_c::procWolfTagJumpLandInit(fopAc_ac_c* param_0) { commonProcInit(PROC_WOLF_TAG_JUMP_LAND); - setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &daAlinkHIO_wlPoint_c0::m.mTagLandingAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &mpHIO->mWolf.mWlPoint.m.mTagLandingAnm); if (mGndPolySpecialCode == dBgW_SPCODE_ICE) { - mNormalSpeed = daAlinkHIO_wlPoint_c0::m.mLockLandingIceInitSpeed; + mNormalSpeed = mpHIO->mWolf.mWlPoint.m.mLockLandingIceInitSpeed; } else { mNormalSpeed = 0.0f; } @@ -5165,7 +5168,7 @@ int daAlink_c::procWolfTagJumpLand() { onResetFlg0(RFLG0_UNK_20000); field_0x3738 = *wljump_p->getLockPos(); - if (frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.mTagLandingAnm.mCancelFrame) { + if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlPoint.m.mTagLandingAnm.mCancelFrame) { setDoStatus(0x93); if (doTrigger()) { @@ -5175,13 +5178,13 @@ int daAlink_c::procWolfTagJumpLand() { } field_0x2f99 = 4; - if (cLib_addCalc(&mNormalSpeed, 0.0f, daAlinkHIO_wlPoint_c0::m.mLockLandingIceDecelRate, - daAlinkHIO_wlPoint_c0::m.mLockLandingIceMaxDecel, - daAlinkHIO_wlPoint_c0::m.mLockLandingIceMinDecel) < 3.0f) + if (cLib_addCalc(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlPoint.m.mLockLandingIceDecelRate, + mpHIO->mWolf.mWlPoint.m.mLockLandingIceMaxDecel, + mpHIO->mWolf.mWlPoint.m.mLockLandingIceMinDecel) < 3.0f) { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (!(frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.mTagLandingAnm.mCancelFrame) || + } else if (!(frameCtrl_p->getFrame() > mpHIO->mWolf.mWlPoint.m.mTagLandingAnm.mCancelFrame) || !checkNextActionWolf(1)) { field_0x2f9d = 0x78; @@ -5222,14 +5225,14 @@ int daAlink_c::procWolfGiantPuzzleInit() { return 0; } - setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.mIdleInterpolation); + setBlendWolfMoveAnime(mpHIO->mWolf.mWlMove.m.mIdleInterpolation); current.angle.y = shape_angle.y; field_0x2f98 = 4; mProcVar2.mPuzzleAimAngle = shape_angle.y; field_0x3478 = 0.0f; - field_0x347c = daAlinkHIO_wlMoveNoP_c0::m.mDeceleration; - field_0x594 = daAlinkHIO_wlMoveNoP_c0::m.mMaxSpeed; + field_0x347c = mpHIO->mWolf.mWlMoveNoP.m.mDeceleration; + field_0x594 = mpHIO->mWolf.mWlMoveNoP.m.mMaxSpeed; offWolfEyeUp(); return 1; @@ -5262,7 +5265,7 @@ int daAlink_c::procWolfGiantPuzzle() { if (fabsf(dComIfG_Bgsp().GroundCross(&mLinkGndChk) - current.pos.y) < 0.1f && fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchGiant, &gnd_chk_pos) == NULL) { - field_0x347c = daAlinkHIO_wlMoveNoP_c0::m.mAcceleration; + field_0x347c = mpHIO->mWolf.mWlMoveNoP.m.mAcceleration; field_0x3478 = field_0x594; } } else if (direction == DIR_LEFT) { @@ -5279,8 +5282,8 @@ int daAlink_c::procWolfGiantPuzzle() { if (mProcVar2.mPuzzleAimAngle != shape_angle.y) { cLib_addCalcAngleS( - &shape_angle.y, mProcVar2.mPuzzleAimAngle, daAlinkHIO_wlMoveNoP_c0::m.mTurnAngleRate, - daAlinkHIO_wlMoveNoP_c0::m.mTurnMax, daAlinkHIO_wlMoveNoP_c0::m.mTurnMin); + &shape_angle.y, mProcVar2.mPuzzleAimAngle, mpHIO->mWolf.mWlMoveNoP.m.mTurnAngleRate, + mpHIO->mWolf.mWlMoveNoP.m.mTurnMax, mpHIO->mWolf.mWlMoveNoP.m.mTurnMin); current.angle.y = shape_angle.y; } @@ -5307,9 +5310,9 @@ int daAlink_c::changeWolfHangEndProc() { f32 var_f1; if (checkNoResetFlg0(FLG0_UNK_80) && mWaterY > field_0x33d8) { - var_f1 = daAlinkHIO_wlSwim_c0::m.mStartHeight + daAlinkHIO_wlSwim_c0::m.mClimbBelowWaterSurface; + var_f1 = mpHIO->mWolf.mWlSwim.m.mStartHeight + mpHIO->mWolf.mWlSwim.m.mClimbBelowWaterSurface; } else { - var_f1 = daAlinkHIO_wlWallHang_c0::m.mHangingFootHeight; + var_f1 = mpHIO->mWolf.mWlWallHang.m.mHangingFootHeight; } if (current.pos.y < (field_0x33d8 + var_f1) - 1.0f) { @@ -5322,7 +5325,7 @@ int daAlink_c::changeWolfHangEndProc() { current.pos.z -= cM_scos(shape_angle.y) * 50.0f; onNoResetFlg2(FLG2_UNK_200); - procWolfFallInit(2, daAlinkHIO_wlWallHang_c0::m.mHangingFallInterp); + procWolfFallInit(2, mpHIO->mWolf.mWlWallHang.m.mHangingFallInterp); return 1; } } @@ -5332,9 +5335,9 @@ int daAlink_c::changeWolfHangEndProc() { int daAlink_c::procWolfHangReadyInit() { commonProcInit(PROC_WOLF_HANG_READY); - setSingleAnimeWolf(WANM_VJMP_START, daAlinkHIO_wlWallHang_c0::m.mPreGrabJumpAnm.mSpeed, - daAlinkHIO_wlWallHang_c0::m.mPreGrabJumpAnm.mStartFrame, 12, - daAlinkHIO_wlWallHang_c0::m.mPreGrabJumpAnm.mInterpolation); + setSingleAnimeWolf(WANM_VJMP_START, mpHIO->mWolf.mWlWallHang.m.mPreGrabJumpAnm.mSpeed, + mpHIO->mWolf.mWlWallHang.m.mPreGrabJumpAnm.mStartFrame, 12, + mpHIO->mWolf.mWlWallHang.m.mPreGrabJumpAnm.mInterpolation); field_0x3198 = field_0x2f91; mProcVar2.field_0x300c = field_0x306e + 0x8000; @@ -5408,10 +5411,10 @@ int daAlink_c::procWolfHangWallCatchInit(int param_0) { commonProcInit(PROC_WOLF_HANG_WALL_CATCH); if (param_0 == 8 && var_r29 != 6) { - setSingleAnimeWolfParam(WANM_VJMP_CLIMB, &daAlinkHIO_wlWallHang_c0::m.mClimbAnm); + setSingleAnimeWolfParam(WANM_VJMP_CLIMB, &mpHIO->mWolf.mWlWallHang.m.mClimbAnm); mProcVar3.field_0x300e = 1; } else { - setSingleAnimeWolfParam(WANM_VJMP_CLIMB_HANG, &daAlinkHIO_wlWallHang_c0::m.mWallGrabAnm); + setSingleAnimeWolfParam(WANM_VJMP_CLIMB_HANG, &mpHIO->mWolf.mWlWallHang.m.mWallGrabAnm); mProcVar3.field_0x300e = 0; } @@ -5454,14 +5457,14 @@ int daAlink_c::procWolfHangWallCatch() { if (mProcVar3.field_0x300e == 0) { if (field_0x3174 == 6) { if (mProcVar4.field_0x3010 == 0) { - setSingleAnimeWolf(WANM_HANG, daAlinkHIO_wlWallHang_c0::m.mFallGrabAnm.mSpeed, - 35.0f, daAlinkHIO_wlWallHang_c0::m.mFallGrabAnm.mEndFrame, + setSingleAnimeWolf(WANM_HANG, mpHIO->mWolf.mWlWallHang.m.mFallGrabAnm.mSpeed, + 35.0f, mpHIO->mWolf.mWlWallHang.m.mFallGrabAnm.mEndFrame, 5.0f); mProcVar4.field_0x3010 = 1; } } else { - setSingleAnimeWolf(WANM_VJMP_CLIMB, daAlinkHIO_wlWallHang_c0::m.mClimbAnm.mSpeed, - 17.0f, daAlinkHIO_wlWallHang_c0::m.mClimbAnm.mEndFrame, 2.0f); + setSingleAnimeWolf(WANM_VJMP_CLIMB, mpHIO->mWolf.mWlWallHang.m.mClimbAnm.mSpeed, + 17.0f, mpHIO->mWolf.mWlWallHang.m.mClimbAnm.mEndFrame, 2.0f); mProcVar3.field_0x300e = 1; } } else { @@ -5475,7 +5478,7 @@ int daAlink_c::procWolfHangWallCatch() { onNoResetFlg1(FLG1_UNK_20); } } else if (mProcVar3.field_0x300e != 0 && - frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.mClimbAnm.mCancelFrame && + frameCtrl_p->getFrame() > mpHIO->mWolf.mWlWallHang.m.mClimbAnm.mCancelFrame && checkNextActionWolf(1)) { onNoResetFlg1(FLG1_UNK_20); @@ -5512,7 +5515,7 @@ int daAlink_c::procWolfHangFallStartInit(cM3dGPla* param_0) { shape_angle.y = var_r30 + 0x8000; current.angle.y = shape_angle.y; - setSingleAnimeWolfParam(WANM_HANG, &daAlinkHIO_wlWallHang_c0::m.mFallGrabAnm); + setSingleAnimeWolfParam(WANM_HANG, &mpHIO->mWolf.mWlWallHang.m.mFallGrabAnm); f32 sin = cM_ssin(shape_angle.y); f32 cos = cM_scos(shape_angle.y); @@ -5565,7 +5568,7 @@ int daAlink_c::procWolfHangFallStart() { } void daAlink_c::setWolfHeadDamage() { - setUpperAnimeParam(0x2A7, UPPER_2, &daAlinkHIO_wlDamage_c0::m.mRunningAnm); + setUpperAnimeParam(0x2A7, UPPER_2, &mpHIO->mWolf.mWlDamage.m.mRunningAnm); seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL); freeGrabItem(); setFacePriTexture(FTANM_UNK_90); @@ -5591,17 +5594,17 @@ int daAlink_c::procWolfDamageInit(dCcD_GObjInf* param_0) { int temp_r3 = getDirectionFromAngle(cM_atan2s(-sp8.x, -sp8.z)); if (temp_r3 == DIR_FORWARD) { - setSingleAnimeWolfParam(WANM_DMG_FRONT, &daAlinkHIO_wlDamNormal_c0::m.mForwardAnm); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.mForwardAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_DMG_FRONT, &mpHIO->mWolf.mWlDamage.mNormal.m.mForwardAnm); + field_0x3478 = mpHIO->mWolf.mWlDamage.mNormal.m.mForwardAnm.mCancelFrame; } else if (temp_r3 == DIR_BACKWARD) { - setSingleAnimeWolfParam(WANM_DMG_BACK, &daAlinkHIO_wlDamNormal_c0::m.mBackwardAnm); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.mBackwardAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_DMG_BACK, &mpHIO->mWolf.mWlDamage.mNormal.m.mBackwardAnm); + field_0x3478 = mpHIO->mWolf.mWlDamage.mNormal.m.mBackwardAnm.mCancelFrame; } else if (temp_r3 == DIR_LEFT) { - setSingleAnimeWolfParam(WANM_DMG_LEFT, &daAlinkHIO_wlDamNormal_c0::m.mLeftAnm); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.mLeftAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_DMG_LEFT, &mpHIO->mWolf.mWlDamage.mNormal.m.mLeftAnm); + field_0x3478 = mpHIO->mWolf.mWlDamage.mNormal.m.mLeftAnm.mCancelFrame; } else { - setSingleAnimeWolfParam(WANM_DMG_RIGHT, &daAlinkHIO_wlDamNormal_c0::m.mRightAnm); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.mRightAnm.mCancelFrame; + setSingleAnimeWolfParam(WANM_DMG_RIGHT, &mpHIO->mWolf.mWlDamage.mNormal.m.mRightAnm); + field_0x3478 = mpHIO->mWolf.mWlDamage.mNormal.m.mRightAnm.mCancelFrame; } setFaceBasicTexture(FTANM_UNK_90); @@ -5609,15 +5612,15 @@ int daAlink_c::procWolfDamageInit(dCcD_GObjInf* param_0) { current.angle.y = var_r30->atan2sX_Z(); mProcVar4.field_0x3010 = current.angle.y; - mNormalSpeed = daAlinkHIO_wlDamNormal_c0::m.mInitSpeed + (daAlinkHIO_wlDamNormal_c0::m.mAttackSpeedRate * var_r30->absXZ()); - if (mNormalSpeed > daAlinkHIO_wlMove_c0::m.mMaxSpeed) { - mNormalSpeed = daAlinkHIO_wlMove_c0::m.mMaxSpeed; + mNormalSpeed = mpHIO->mWolf.mWlDamage.mNormal.m.mInitSpeed + (mpHIO->mWolf.mWlDamage.mNormal.m.mAttackSpeedRate * var_r30->absXZ()); + if (mNormalSpeed > mpHIO->mWolf.mWlMove.m.mMaxSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlMove.m.mMaxSpeed; } field_0x3588 = l_wolfBaseAnime; if (param_0 == NULL || (param_0->GetTgHitGObj() != NULL && param_0->GetTgHitGObj()->GetAtMtrl() == dCcD_MTRL_ICE)) { - mUnderFrameCtrl[0].setRate(daAlinkHIO_wlDamNormal_c0::m.mIceDamageAnmSpeed); + mUnderFrameCtrl[0].setRate(mpHIO->mWolf.mWlDamage.mNormal.m.mIceDamageAnmSpeed); mUnderFrameCtrl[0].setEnd(3); mNormalSpeed = 0.0f; mProcVar0.field_0x3008 = 90; @@ -5639,7 +5642,7 @@ int daAlink_c::procWolfDamageInit(dCcD_GObjInf* param_0) { int daAlink_c::procWolfDamage() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlDamNormal_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlDamage.mNormal.m.mDeceleration); field_0x2f99 = 5; if (checkFreezeDamage()) { @@ -5674,9 +5677,9 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2, const daAlinkHIO_wlDamLaHu_c1* var_r30; if (param_1 != 0) { - var_r30 = &daAlinkHIO_wlDamLarge_c0::m; + var_r30 = &mpHIO->mWolf.mWlDamage.mLarge.m; } else { - var_r30 = &daAlinkHIO_wlDamHuge_c0::m; + var_r30 = &mpHIO->mWolf.mWlDamage.mHuge.m; } field_0x3198 = 0; @@ -5711,14 +5714,14 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2, mProcVar5.field_0x3012 = 1; } } else { - var_f30 = daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mInterpolation; + var_f30 = mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mInterpolation; } var_r28 = WANM_DMG_AIR_FRONT_GETUP; var_f29 = 16.0f; var_r27 = -1; - field_0x3478 = daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mCancelFrame; + field_0x3478 = mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mCancelFrame; if (param_0 == -4) { onNoResetFlg2(FLG2_PRESSED_DAMAGE); @@ -5732,7 +5735,7 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2, var_f31 = 0.0f; } else { mProcVar0.field_0x3008 = 1; - var_f31 = daAlinkHIO_wlDamage_c0::m.mReturnWakeupAnmSpeed; + var_f31 = mpHIO->mWolf.mWlDamage.m.mReturnWakeupAnmSpeed; } offModeFlg(0x10008000); @@ -5812,7 +5815,7 @@ int daAlink_c::procWolfLargeDamageUp() { if (checkNoResetFlg2(FLG2_PRESSED_DAMAGE)) { return 1; } - temp_r29->setRate(daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mSpeed); + temp_r29->setRate(mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mSpeed); } if (mProcVar0.field_0x3008 > 0) { @@ -5820,7 +5823,7 @@ int daAlink_c::procWolfLargeDamageUp() { if (mProcVar0.field_0x3008 == 0) { mProcVar0.field_0x3008 = -1; - temp_r29->setRate(daAlinkHIO_wlDamage_c0::m.mReturnWakeupAnmSpeed); + temp_r29->setRate(mpHIO->mWolf.mWlDamage.m.mReturnWakeupAnmSpeed); temp_r29->offEndFlg(); } } else { @@ -5865,12 +5868,12 @@ int daAlink_c::procWolfLandDamageInit(int param_0) { setLandDamagePoint(8); } - var_f31 = daAlinkHIO_wlDamFall_c0::m.mLandingAnm.mStartFrame; - mProcVar0.field_0x3008 = daAlinkHIO_damFall_c0::m.mBigStopTime; + var_f31 = mpHIO->mWolf.mWlDamage.mFall.m.mLandingAnm.mStartFrame; + mProcVar0.field_0x3008 = mpHIO->mDamage.mDamFall.m.mBigStopTime; dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f)); } else { - var_f31 = daAlinkHIO_wlDamFall_c0::m.mSmallDamageLandingStartFrame; - mProcVar0.field_0x3008 = daAlinkHIO_wlDamFall_c0::m.mSmallStopTime; + var_f31 = mpHIO->mWolf.mWlDamage.mFall.m.mSmallDamageLandingStartFrame; + mProcVar0.field_0x3008 = mpHIO->mWolf.mWlDamage.mFall.m.mSmallStopTime; if (param_0 == 1) { if (!checkEventRun()) { @@ -5891,9 +5894,9 @@ int daAlink_c::procWolfLandDamageInit(int param_0) { voiceStart(Z2SE_WL_V_LAND_DAMAGE); } - setSingleAnimeWolf(WANM_FALL_LAND, daAlinkHIO_wlDamFall_c0::m.mLandingAnm.mSpeed, var_f31, - daAlinkHIO_wlDamFall_c0::m.mLandingAnm.mEndFrame, - daAlinkHIO_wlDamFall_c0::m.mLandingAnm.mInterpolation); + setSingleAnimeWolf(WANM_FALL_LAND, mpHIO->mWolf.mWlDamage.mFall.m.mLandingAnm.mSpeed, var_f31, + mpHIO->mWolf.mWlDamage.mFall.m.mLandingAnm.mEndFrame, + mpHIO->mWolf.mWlDamage.mFall.m.mLandingAnm.mInterpolation); setFaceBasicTexture(FTANM_UNK_95); field_0x3198 = 0; field_0x2f9d = 4; @@ -5907,14 +5910,14 @@ int daAlink_c::procWolfLandDamage() { if (field_0x3198 != 0) { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamFall_c0::m.mRightRiseAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlDamage.mFall.m.mRightRiseAnm.mCancelFrame) { checkNextActionWolf(1); } } else if (frameCtrl->checkAnmEnd()) { if (mProcVar0.field_0x3008 > 0) { mProcVar0.field_0x3008--; } else { - setSingleAnimeWolfParam(WANM_FALL_LAND_START, &daAlinkHIO_wlDamFall_c0::m.mRightRiseAnm); + setSingleAnimeWolfParam(WANM_FALL_LAND_START, &mpHIO->mWolf.mWlDamage.mFall.m.mRightRiseAnm); setFaceBasicTexture(FTANM_UNK_96); field_0x3198 = 1; } @@ -5937,8 +5940,8 @@ int daAlink_c::procWolfScreamWaitInit() { if (checkEndResetFlg1(ERFLG1_UNK_2)) { setWolfScreamWaitAnime(); } else { - setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.mIdleAnmSpeed, - daAlinkHIO_wlMove_c0::m.mIdleInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_WAIT, mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed, + mpHIO->mWolf.mWlMove.m.mIdleInterpolation); mProcVar2.field_0x300c = 0; } @@ -5958,15 +5961,15 @@ int daAlink_c::procWolfScreamWait() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mCancelFrame) { checkNextActionWolf(1); } } else { mProcVar3.field_0x300e = 1; setSingleAnimeWolf(WANM_DMG_AIR_FRONT_GETUP, - daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mSpeed, 20.0f, - daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mEndFrame, - daAlinkHIO_wlDamLarge_c0::m.mFrontRiseAnm.mInterpolation); + mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mSpeed, 20.0f, + mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mEndFrame, + mpHIO->mWolf.mWlDamage.mLarge.m.mFrontRiseAnm.mInterpolation); field_0x2f99 = 13; } } else if (mProcVar2.field_0x300c == 0 && checkEndResetFlg1(ERFLG1_UNK_2)) { @@ -5981,8 +5984,8 @@ f32 daAlink_c::getWolfLieMoveAnmSpeed() { return getAnmSpeedStickRate(0.5f, 2.0f); } - return getAnmSpeedStickRate(daAlinkHIO_wlLie_c0::m.mProneMinAnmSpeed, - daAlinkHIO_wlLie_c0::m.mProneMaxAnmSpeed); + return getAnmSpeedStickRate(mpHIO->mWolf.mWlLie.m.mProneMinAnmSpeed, + mpHIO->mWolf.mWlLie.m.mProneMaxAnmSpeed); } f32 daAlink_c::getWolfLieMoveSpeed() { @@ -5995,7 +5998,7 @@ f32 daAlink_c::getWolfLieMoveSpeed() { var_f1 = frameCtrl_p->getFrame(); } - return daAlinkHIO_wlLie_c0::m.mProneMoveRate * frameCtrl_p->getRate() * + return mpHIO->mWolf.mWlLie.m.mProneMoveRate * frameCtrl_p->getRate() * cM_fsin(var_f1 * 0.20943952f); } @@ -6024,7 +6027,7 @@ BOOL daAlink_c::checkWolfLieContinue(int param_0) { int daAlink_c::checkNextActionWolfFromLie() { if (checkNextActionWolf(0)) { if (field_0x2f8c == 1 || field_0x2f8c == 2 || field_0x2f8c == 3) { - field_0x2060->initOldFrameMorf(daAlinkHIO_wlLie_c0::m.mStandUpInterp, 0, 40); + field_0x2060->initOldFrameMorf(mpHIO->mWolf.mWlLie.m.mStandUpInterp, 0, 40); } return true; } @@ -6058,7 +6061,7 @@ bool daAlink_c::checkWolfLieCode() { int daAlink_c::procWolfLieStartInit(int param_0) { commonProcInit(PROC_WOLF_LIE_START); field_0x3588 = l_wolfBaseAnime; - setSingleAnimeWolfParam(WANM_CROUCH, &daAlinkHIO_wlLie_c0::m.mProneStartAnm); + setSingleAnimeWolfParam(WANM_CROUCH, &mpHIO->mWolf.mWlLie.m.mProneStartAnm); if (param_0) { shape_angle.y = field_0x306e + 0x8000; @@ -6089,7 +6092,7 @@ int daAlink_c::procWolfLieStart() { checkNextActionWolfFromLie(); } else if (checkInputOnR() && (checkAnmEnd(frameCtrl_p) || - frameCtrl_p->getFrame() > daAlinkHIO_wlLie_c0::m.mProneStartAnm.mCancelFrame)) + frameCtrl_p->getFrame() > mpHIO->mWolf.mWlLie.m.mProneStartAnm.mCancelFrame)) { procWolfLieMoveInit(0); } else { @@ -6137,7 +6140,7 @@ int daAlink_c::procWolfLieMoveInit(int param_0) { } current.angle.y = shape_angle.y; - setSingleAnimeWolfBaseSpeed(WANM_CROUCH_WALK, anm_speed, daAlinkHIO_wlLie_c0::m.mProneMoveInterp); + setSingleAnimeWolfBaseSpeed(WANM_CROUCH_WALK, anm_speed, mpHIO->mWolf.mWlLie.m.mProneMoveInterp); } field_0x3198 = var_r29 ^ 1; @@ -6247,7 +6250,7 @@ int daAlink_c::procWolfLieMove() { spA = field_0x2fe2 + 0x8000; } - cLib_addCalcAngleS(&shape_angle.y, spA, daAlinkHIO_wlLie_c0::m.mProneTurnRate, daAlinkHIO_wlLie_c0::m.mProneTurnMax, daAlinkHIO_wlLie_c0::m.mProneTurnMin); + cLib_addCalcAngleS(&shape_angle.y, spA, mpHIO->mWolf.mWlLie.m.mProneTurnRate, mpHIO->mWolf.mWlLie.m.mProneTurnMax, mpHIO->mWolf.mWlLie.m.mProneTurnMin); } mNormalSpeed = getWolfLieMoveSpeed(); @@ -6388,16 +6391,16 @@ int daAlink_c::procWolfLieAutoMove() { void daAlink_c::setSpeedAndAngleSwimWolf() { if (checkWolfDashMode()) { - field_0x594 = daAlinkHIO_wlSwim_c0::m.mMaxSpeed; + field_0x594 = mpHIO->mWolf.mWlSwim.m.mMaxSpeed; } else { - field_0x594 = daAlinkHIO_wlSwim_c0::m.mMaxSpeedWeak; + field_0x594 = mpHIO->mWolf.mWlSwim.m.mMaxSpeedWeak; } f32 var_f31; if (checkInputOnR()) { s16 prev_angle = current.angle.y; - cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_wlSwim_c0::m.mTurnRate, - daAlinkHIO_wlSwim_c0::m.mTurnMax, daAlinkHIO_wlSwim_c0::m.mTurnMin); + cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mWolf.mWlSwim.m.mTurnRate, + mpHIO->mWolf.mWlSwim.m.mTurnMax, mpHIO->mWolf.mWlSwim.m.mTurnMin); var_f31 = field_0x33a8 * 3.0f * cM_scos(current.angle.y - prev_angle); shape_angle.y = current.angle.y; @@ -6413,15 +6416,15 @@ void daAlink_c::setSpeedAndAngleSwimWolf() { if (mTargetedActor != NULL) { setShapeAngleToAtnActor(0); } else { - cLib_addCalcAngleS(&shape_angle.y, field_0x2fe4, daAlinkHIO_wlSwim_c0::m.mIdleTurnRate, - daAlinkHIO_wlSwim_c0::m.mIdleTurnMax, - daAlinkHIO_wlSwim_c0::m.mIdleTurnMin); + cLib_addCalcAngleS(&shape_angle.y, field_0x2fe4, mpHIO->mWolf.mWlSwim.m.mIdleTurnRate, + mpHIO->mWolf.mWlSwim.m.mIdleTurnMax, + mpHIO->mWolf.mWlSwim.m.mIdleTurnMin); } current.angle.y = shape_angle.y; } - setNormalSpeedF(var_f31, daAlinkHIO_wlSwim_c0::m.mDeceleration); + setNormalSpeedF(var_f31, mpHIO->mWolf.mWlSwim.m.mDeceleration); if (dComIfGp_checkPlayerStatus0(0, 0x10)) { mNormalSpeed = 0.0f; @@ -6436,12 +6439,12 @@ f32 daAlink_c::getWolfSwimMoveAnmSpeed() { if (checkWolfDashMode()) { anm_speed = - daAlinkHIO_wlSwim_c0::m.mMoveMinAnmSpeed + - anm_speed * (daAlinkHIO_wlSwim_c0::m.mMoveMaxAnmSpeed - daAlinkHIO_wlSwim_c0::m.mMoveMinAnmSpeed); + mpHIO->mWolf.mWlSwim.m.mMoveMinAnmSpeed + + anm_speed * (mpHIO->mWolf.mWlSwim.m.mMoveMaxAnmSpeed - mpHIO->mWolf.mWlSwim.m.mMoveMinAnmSpeed); } else { anm_speed = - daAlinkHIO_wlSwim_c0::m.mMoveMinAnmSpeedWeak + - anm_speed * (daAlinkHIO_wlSwim_c0::m.mMoveMaxAnmSpeedWeak - daAlinkHIO_wlSwim_c0::m.mMoveMinAnmSpeedWeak); + mpHIO->mWolf.mWlSwim.m.mMoveMinAnmSpeedWeak + + anm_speed * (mpHIO->mWolf.mWlSwim.m.mMoveMaxAnmSpeedWeak - mpHIO->mWolf.mWlSwim.m.mMoveMinAnmSpeedWeak); } return anm_speed; @@ -6469,14 +6472,14 @@ int daAlink_c::decideDoStatusSwimWolf() { onNoResetFlg1(FLG1_DASH_MODE); if (field_0x2fc7 == 1 || field_0x2fc7 == 3) { - field_0x30d0 = daAlinkHIO_wlMove_c0::m.mADashDurationSlow; + field_0x30d0 = mpHIO->mWolf.mWlMove.m.mADashDurationSlow; } else if (field_0x2fc7 == 2) { - field_0x30d0 = daAlinkHIO_wlMove_c0::m.mADashDurationSlow2; + field_0x30d0 = mpHIO->mWolf.mWlMove.m.mADashDurationSlow2; } else { - field_0x30d0 = daAlinkHIO_wlMove_c0::m.mADashDuration; + field_0x30d0 = mpHIO->mWolf.mWlMove.m.mADashDuration; } - setSingleAnimeWolfParam(WANM_SWIM_DASH, &daAlinkHIO_wlSwim_c0::m.mDashAnm); + setSingleAnimeWolfParam(WANM_SWIM_DASH, &mpHIO->mWolf.mWlSwim.m.mDashAnm); } } @@ -6496,7 +6499,7 @@ int daAlink_c::procWolfSwimUpInit() { onNoResetFlg0(FLG0_SWIM_UP); mZ2Link.setInWater(false); - setSingleAnimeWolfParam(WANM_SWIM_RESURFACE, &daAlinkHIO_wlSwim_c0::m.mSurfacingAnm); + setSingleAnimeWolfParam(WANM_SWIM_RESURFACE, &mpHIO->mWolf.mWlSwim.m.mSurfacingAnm); setFaceBasicTexture(FTANM_UNK_8E); dComIfGp_setPlayerStatus0(0, 0x100000); seStartMapInfo(Z2SE_WL_OUTOF_WATER); @@ -6506,12 +6509,12 @@ int daAlink_c::procWolfSwimUpInit() { int daAlink_c::procWolfSwimUp() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; - setNormalSpeedF(0.0f, daAlinkHIO_wlSwim_c0::m.mDeceleration); + setNormalSpeedF(0.0f, mpHIO->mWolf.mWlSwim.m.mDeceleration); if (frameCtrl->checkAnmEnd()) { procWolfSwimWaitInit(0); } else if (checkInputOnR() && - frameCtrl->getFrame() > daAlinkHIO_wlSwim_c0::m.mSurfacingAnm.mCancelFrame) + frameCtrl->getFrame() > mpHIO->mWolf.mWlSwim.m.mSurfacingAnm.mCancelFrame) { procWolfSwimMoveInit(); } else { @@ -6526,7 +6529,7 @@ int daAlink_c::procWolfSwimWaitInit(int param_0) { if (mProcID == PROC_WOLF_SWIM_UP) { morf = 0.0f; } else { - morf = daAlinkHIO_wlSwim_c0::m.mIdleInterp; + morf = mpHIO->mWolf.mWlSwim.m.mIdleInterp; } commonProcInit(PROC_WOLF_SWIM_WAIT); @@ -6541,9 +6544,9 @@ int daAlink_c::procWolfSwimWaitInit(int param_0) { f32 anm_speed; if (checkWolfDashMode()) { - anm_speed = daAlinkHIO_wlSwim_c0::m.mIdleAnmSpeed; + anm_speed = mpHIO->mWolf.mWlSwim.m.mIdleAnmSpeed; } else { - anm_speed = daAlinkHIO_wlSwim_c0::m.mIdleAnmSpeedWeak; + anm_speed = mpHIO->mWolf.mWlSwim.m.mIdleAnmSpeedWeak; } setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, anm_speed, morf); @@ -6568,9 +6571,9 @@ int daAlink_c::procWolfSwimWait() { setSwimUpDownOffset(); if (checkWolfDashMode()) { - mUnderFrameCtrl[0].setRate(daAlinkHIO_wlSwim_c0::m.mIdleAnmSpeed); + mUnderFrameCtrl[0].setRate(mpHIO->mWolf.mWlSwim.m.mIdleAnmSpeed); } else { - mUnderFrameCtrl[0].setRate(daAlinkHIO_wlSwim_c0::m.mIdleAnmSpeedWeak); + mUnderFrameCtrl[0].setRate(mpHIO->mWolf.mWlSwim.m.mIdleAnmSpeedWeak); } if (checkSwimUpAction()) { @@ -6591,7 +6594,7 @@ int daAlink_c::procWolfSwimWait() { int daAlink_c::procWolfSwimMoveInit() { commonProcInit(PROC_WOLF_SWIM_MOVE); setSingleAnimeWolfBaseSpeed(WANM_SWIM, getWolfSwimMoveAnmSpeed(), - daAlinkHIO_wlSwim_c0::m.mMoveInterp); + mpHIO->mWolf.mWlSwim.m.mMoveInterp); if (checkNoResetFlg0(FLG0_SWIM_UP)) { current.pos.y = mWaterY; @@ -6619,14 +6622,14 @@ int daAlink_c::procWolfSwimMove() { if (checkAnmEnd(mUnderFrameCtrl) && checkWolfSwimDashAnime()) { setSingleAnimeWolfBaseSpeed(WANM_SWIM, getWolfSwimMoveAnmSpeed(), - daAlinkHIO_wlSwim_c0::m.mMoveInterp); + mpHIO->mWolf.mWlSwim.m.mMoveInterp); if (field_0x2fc7 == 1 || field_0x2fc7 == 3) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow; } else if (field_0x2fc7 == 2) { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTimeSlow2; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTimeSlow2; } else { - field_0x30d2 = daAlinkHIO_wlMove_c0::m.mADashCooldownTime; + field_0x30d2 = mpHIO->mWolf.mWlMove.m.mADashCooldownTime; } } @@ -6644,7 +6647,7 @@ int daAlink_c::procWolfSwimMove() { int daAlink_c::procWolfSwimEndWaitInit(int param_0) { commonProcInit(PROC_WOLF_SWIM_END_WAIT); - setSingleAnimeWolfParam(WANM_WAIT_SHAKE, &daAlinkHIO_wlSwim_c0::m.mWaterSplashIdleAnm); + setSingleAnimeWolfParam(WANM_WAIT_SHAKE, &mpHIO->mWolf.mWlSwim.m.mWaterSplashIdleAnm); setFaceBasicTexture(FTANM_UNK_8F); mDoMtx_multVecZero(mpLinkModel->getAnmMtx(3), &field_0x37c8); @@ -6692,7 +6695,7 @@ int daAlink_c::procWolfSwimEndWait() { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlSwim_c0::m.mWaterSplashIdleAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlSwim.m.mWaterSplashIdleAnm.mCancelFrame) { checkNextActionWolf(1); } @@ -6755,7 +6758,7 @@ void daAlink_c::setWolfLockDomeModel() { mEquipItem = 0x109; mItemVar0.field_0x3018 = 0; - mSearchBallScale = daAlinkHIO_wlAtLock_c0::m.mStartRadius; + mSearchBallScale = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mStartRadius; dComIfGp_setPlayerStatus1(0, 0x800000); seStartOnlyReverb(Z2SE_MIDNA_BIND_AREA_OPEN); @@ -6945,8 +6948,16 @@ BOOL daAlink_c::checkWolfAttackAction() { } void daAlink_c::setWolfEnemyThrowUpperAnime(daAlink_c::daAlink_WANM i_anmID, f32 param_1) { - setUpperAnime(i_anmID == WANM_FLING_LEFT ? (u16)0x2BD : (u16)0x2BE, UPPER_2, - daAlinkHIO_wlAtBite_c0::m.mEnemyBiteThrowAnmSpeed, param_1, -1, -1.0f); + setUpperAnime( + i_anmID == WANM_FLING_LEFT ? (u16)0x2BD : (u16)0x2BE, + UPPER_2, + // Fakematch, should be + // mpHIO->mWolf.mWlAttack.mWlAtBite.m.mEnemyBiteThrowAnmSpeed, + daAlinkHIO_wlAtBite_c0::m.mEnemyBiteThrowAnmSpeed, + param_1, + -1, + -1.0f + ); } BOOL daAlink_c::setWolfEnemyHangBitePos(fopEn_enemy_c* i_enemy) { @@ -6992,7 +7003,7 @@ BOOL daAlink_c::checkWolfLockAttackChargeState() { int daAlink_c::procWolfRollAttackChargeInit() { commonProcInit(PROC_WOLF_ROLL_ATTACK_CHARGE); setSingleAnimeWolfBaseSpeed(WANM_CUT_TURN_CHARGE, 0.0f, - daAlinkHIO_wlAttack_c0::m.mReadyInterpolation); + mpHIO->mWolf.mWlAttack.m.mReadyInterpolation); voiceStartLevel(Z2SE_WL_V_ROAR); return 1; } @@ -7007,7 +7018,7 @@ int daAlink_c::procWolfRollAttackCharge() { } else if (field_0x2060->getOldFrameRate() < 0.1f) { procWolfRollAttackMoveInit(); } else { - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); setShapeAngleToAtnActor(0); current.angle.y = shape_angle.y; voiceStartLevel(Z2SE_WL_V_ROAR); @@ -7022,8 +7033,8 @@ int daAlink_c::procWolfRollAttackMoveInit() { onModeFlg(1); } - mProcVar0.field_0x3008 = daAlinkHIO_wlAttack_c0::m.mChargeTime; - mProcVar1.field_0x300a = daAlinkHIO_wlAtLock_c0::m.mAutoActivationTime; + mProcVar0.field_0x3008 = mpHIO->mWolf.mWlAttack.m.mChargeTime; + mProcVar1.field_0x300a = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAutoActivationTime; mProcVar5.field_0x3012 = 30; field_0x3198 = 0; field_0x2fe4 = shape_angle.y; @@ -7070,9 +7081,9 @@ int daAlink_c::procWolfRollAttackMove() { seStartOnlyReverbLevel(Z2SE_MIDNA_BIND_AREA_SUS); mProcVar1.field_0x300a--; - if (mSearchBallScale < daAlinkHIO_wlAtLock_c0::m.mMaxRadius && - cLib_chaseF(&mSearchBallScale, daAlinkHIO_wlAtLock_c0::m.mMaxRadius, - daAlinkHIO_wlAtLock_c0::m.mRadiusAcceleration)) + if (mSearchBallScale < mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxRadius && + cLib_chaseF(&mSearchBallScale, mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxRadius, + mpHIO->mWolf.mWlAttack.mWlAtLock.m.mRadiusAcceleration)) { mItemVar0.field_0x3018 = 1; } @@ -7154,20 +7165,20 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) { if (param_0 == 1) { setCutType(0x39); - setCylAtParam(0x80000000, dCcG_At_Spl_UNK_1, 3, 4, 3, daAlinkHIO_wlAtCjump_c0::m.mAttackRadius, daAlinkHIO_wlAtCjump_c0::m.mAttackHeight); - field_0x594 = daAlinkHIO_wlAtCjump_c0::m.mMaxHorizontalSpeed; - var_f26 = daAlinkHIO_wlAtCjump_c0::m.mMaxVerticalSpeed; + setCylAtParam(0x80000000, dCcG_At_Spl_UNK_1, 3, 4, 3, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackRadius, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackHeight); + field_0x594 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mMaxHorizontalSpeed; + var_f26 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mMaxVerticalSpeed; if (mTargetedActor != NULL) { - var_f31 = daAlinkHIO_wlAtCjump_c0::m.mMinVerticalSpeed; - var_f28 = daAlinkHIO_wlAtCjump_c0::m.mAttackInitSpeed; + var_f31 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mMinVerticalSpeed; + var_f28 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackInitSpeed; } else { var_f31 = 25.0f; var_f28 = 26.0f; } - var_f27 = daAlinkHIO_wlAtCjump_c0::m.mMinHorizontalSpeed; - field_0x3438 = daAlinkHIO_wlAtCjump_c0::m.mAttackRadiusOffset; + var_f27 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mMinHorizontalSpeed; + field_0x3438 = mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackRadiusOffset; voiceStart(Z2SE_WL_V_ATTACK_L); seStartOnlyReverb(Z2SE_WOLFATTACK_WIND_SCREW); @@ -7185,28 +7196,28 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) { } else { if (mComboCutCount == 4) { setCutType(0x32); - setCylAtParam(0x80000000, dCcG_At_Spl_UNK_1, 3, 4, 3, daAlinkHIO_wlAtNjump_c0::m.mAttackRadius, daAlinkHIO_wlAtNjump_c0::m.mAttackHeight); + setCylAtParam(0x80000000, dCcG_At_Spl_UNK_1, 3, 4, 3, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackRadius, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackHeight); voiceStart(Z2SE_WL_V_ATTACK_L); seStartOnlyReverb(Z2SE_WOLFATTACK_WIND_SCREW); mProcVar5.field_0x3012 = 1; } else { setCutType(0x31); - setCylAtParam(0x80000000, dCcG_At_Spl_UNK_0, 1, 4, 2, daAlinkHIO_wlAtNjump_c0::m.mAttackRadius, daAlinkHIO_wlAtNjump_c0::m.mAttackHeight); + setCylAtParam(0x80000000, dCcG_At_Spl_UNK_0, 1, 4, 2, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackRadius, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackHeight); voiceStart(Z2SE_WL_V_ATTACK_S); seStartOnlyReverb(Z2SE_WOLFATTACK_WIND_S); mProcVar5.field_0x3012 = 0; } - field_0x594 = daAlinkHIO_wlAtNjump_c0::m.mMaxHorizontalSpeed; - var_f27 = daAlinkHIO_wlAtNjump_c0::m.mMinHorizontalSpeed; - var_f26 = daAlinkHIO_wlAtNjump_c0::m.mMaxVerticalSpeed; - var_f31 = daAlinkHIO_wlAtNjump_c0::m.mMinVerticalSpeed; - field_0x3438 = daAlinkHIO_wlAtNjump_c0::m.mAttackRadiusOffset; - var_f28 = daAlinkHIO_wlAtNjump_c0::m.mAttackInitSpeed; + field_0x594 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMaxHorizontalSpeed; + var_f27 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMinHorizontalSpeed; + var_f26 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMaxVerticalSpeed; + var_f31 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMinVerticalSpeed; + field_0x3438 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackRadiusOffset; + var_f28 = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAttackInitSpeed; mProcVar4.field_0x3010 = 0; } - setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtNjump_c0::m.mAerialAttackAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_START, &mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialAttackAnm); if (mTargetedActor != NULL) { shape_angle.y = cLib_targetAngleY(¤t.pos, &mTargetedActor->eyePos); @@ -7265,7 +7276,7 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) { current.angle.y = shape_angle.y; if (param_0 != 1) { - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; } return 1; @@ -7274,16 +7285,16 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) { int daAlink_c::procWolfJumpAttack() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; - if (mProcVar3.field_0x300e != 0 && mNormalSpeed > daAlinkHIO_wlAtCjump_c0::m.mHitMinSpeed) { - cLib_chaseF(&mNormalSpeed, daAlinkHIO_wlAtCjump_c0::m.mHitMinSpeed, - daAlinkHIO_wlAtCjump_c0::m.mHitDecel); + if (mProcVar3.field_0x300e != 0 && mNormalSpeed > mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mHitMinSpeed) { + cLib_chaseF(&mNormalSpeed, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mHitMinSpeed, + mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mHitDecel); } if (mAtCyl.ChkAtHit()) { field_0x3198 = 1; if (mProcVar4.field_0x3010 != 0 && mProcVar3.field_0x300e == 0) { - mNormalSpeed *= daAlinkHIO_wlAtCjump_c0::m.mHitDecelRate; + mNormalSpeed *= mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mHitDecelRate; mProcVar3.field_0x300e = 1; } } @@ -7304,7 +7315,7 @@ int daAlink_c::procWolfJumpAttack() { field_0x32cc = 1; if (mProcVar1.field_0x300a != 1) { - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; } if (mProcVar0.field_0x3008 != 0 && checkFrontWallTypeAction()) { @@ -7335,8 +7346,8 @@ int daAlink_c::procWolfJumpAttack() { if (checkAnmEnd(frameCtrl_p)) { if (mProcVar2.field_0x300c == 0) { mProcVar2.field_0x300c = 1; - setSingleAnimeWolfBaseSpeed(WANM_ATTACK_A, daAlinkHIO_wlAtNjump_c0::m.mAerialAnmSpeed, - daAlinkHIO_wlAtNjump_c0::m.mAerialInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_ATTACK_A, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialAnmSpeed, + mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialInterpolation); onResetFlg0(RFLG0_UNK_2); } else { onResetFlg0(RFLG0_UNK_2); @@ -7344,8 +7355,8 @@ int daAlink_c::procWolfJumpAttack() { } else { onResetFlg0(RFLG0_UNK_2); - if (current.pos.y < mLastJumpPos.y - daAlinkHIO_wlAttack_c0::m.mFallHeight) { - procWolfFallInit(2, daAlinkHIO_wlAttack_c0::m.mFallInterpolation); + if (current.pos.y < mLastJumpPos.y - mpHIO->mWolf.mWlAttack.m.mFallHeight) { + procWolfFallInit(2, mpHIO->mWolf.mWlAttack.m.mFallInterpolation); } } @@ -7354,7 +7365,7 @@ int daAlink_c::procWolfJumpAttack() { int daAlink_c::procWolfJumpAttackKickInit() { commonProcInit(PROC_WOLF_JUMP_AT_KICK); - setSingleAnimeWolfParam(WANM_JUMP_KICK, &daAlinkHIO_wlAtCjump_c0::m.mFlipKickAnm); + setSingleAnimeWolfParam(WANM_JUMP_KICK, &mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mFlipKickAnm); f32 tmp_0 = 0.0f; speed.y = tmp_0; @@ -7393,15 +7404,15 @@ int daAlink_c::procWolfJumpAttackSlideLandInit(int param_0, int param_1, int par fopAcM_seenActorAngleY(this, mTargetedActor) > 0x5000) || param_2) { - setSingleAnimeWolfParam(WANM_ATTACK_A_END_BACK, &daAlinkHIO_wlAtLand_c0::m.mBackSlideAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END_BACK, &mpHIO->mWolf.mWlAttack.mWlAtLand.m.mBackSlideAnm); mProcVar2.field_0x300c = 1; field_0x3588.set(-l_wolfBaseAnime.x, l_wolfBaseAnime.y, -l_wolfBaseAnime.z); - field_0x3478 = daAlinkHIO_wlAtLand_c0::m.mBackSlideAnm.mCancelFrame; + field_0x3478 = mpHIO->mWolf.mWlAttack.mWlAtLand.m.mBackSlideAnm.mCancelFrame; } else { - setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &daAlinkHIO_wlAtLand_c0::m.mFrontSlideAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &mpHIO->mWolf.mWlAttack.mWlAtLand.m.mFrontSlideAnm); mProcVar2.field_0x300c = 0; field_0x3588 = l_wolfBaseAnime; - field_0x3478 = daAlinkHIO_wlAtLand_c0::m.mFrontSlideAnm.mCancelFrame; + field_0x3478 = mpHIO->mWolf.mWlAttack.mWlAtLand.m.mFrontSlideAnm.mCancelFrame; } field_0x2f9d = 4; @@ -7414,7 +7425,7 @@ int daAlink_c::procWolfJumpAttackSlideLandInit(int param_0, int param_1, int par } mProcVar5.field_0x3012 = 0; - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; field_0x2f98 = 0; return 1; } @@ -7427,7 +7438,7 @@ int daAlink_c::procWolfJumpAttackSlideLand() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; field_0x2f99 = 4; - cLib_addCalc(&mNormalSpeed, 0.0f, 0.3f, daAlinkHIO_wlAtLand_c0::m.mSlideDeceleration, 0.5f); + cLib_addCalc(&mNormalSpeed, 0.0f, 0.3f, mpHIO->mWolf.mWlAttack.mWlAtLand.m.mSlideDeceleration, 0.5f); if (mProcVar4.field_0x3010 != 0) { setShapeAngleToAtnActor(0); @@ -7465,7 +7476,7 @@ int daAlink_c::procWolfJumpAttackSlideLand() { int daAlink_c::procWolfJumpAttackNormalLandInit(int param_0) { commonProcInit(PROC_WOLF_JUMP_AT_NORMAL_LAND); - setSingleAnimeWolfParam(WANM_ATTACK_A_END, &daAlinkHIO_wlAtLand_c0::m.mNormalLandingAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END, &mpHIO->mWolf.mWlAttack.mWlAtLand.m.mNormalLandingAnm); setFootEffectProcType(2); field_0x2f9d = 0x18; @@ -7473,7 +7484,7 @@ int daAlink_c::procWolfJumpAttackNormalLandInit(int param_0) { mProcVar5.field_0x3012 = 0; mProcVar2.field_0x300c = param_0; field_0x2f99 = 12; - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; if (param_0 != 0) { dComIfGp_setPlayerStatus1(0, 0x200000); @@ -7490,13 +7501,13 @@ int daAlink_c::procWolfJumpAttackNormalLand() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; field_0x2f99 = 4; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); setComboReserb(); checkCutTurnCharge(); if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtLand_c0::m.mNormalLandingAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlAttack.mWlAtLand.m.mNormalLandingAnm.mCancelFrame) { if (mProcVar2.field_0x300c != 0) { shape_angle.y -= -0x8000; return procWolfJumpAttackInit(3); @@ -7543,13 +7554,13 @@ int daAlink_c::procWolfWaitAttackInit(int i_attackType) { mProcVar2.field_0x300c = 0; if (i_attackType == 2) { - atk_hio = &daAlinkHIO_wlAtWaTl_c0::m; + atk_hio = &mpHIO->mWolf.mWlAttack.mTailAttack.m; mProcVar3.field_0x300e = 0; } else if (i_attackType == 1) { - atk_hio = &daAlinkHIO_wlAtWaSc_c0::m; + atk_hio = &mpHIO->mWolf.mWlAttack.mScratchAttack.m; mProcVar3.field_0x300e = 1; } else { - atk_hio = &daAlinkHIO_wlAtWaLr_c0::m; + atk_hio = &mpHIO->mWolf.mWlAttack.mHorizontalAttack.m; mProcVar3.field_0x300e = 1; } @@ -7583,7 +7594,7 @@ int daAlink_c::procWolfWaitAttackInit(int i_attackType) { field_0x3484 = atk_hio->mSpeedAddForward; field_0x3488 = atk_hio->mSpeed; field_0x3438 = atk_hio->mAttackRadiusOffset; - field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + field_0x307e = mpHIO->mWolf.mWlAttack.m.mComboDuration; field_0x3588 = l_wolfBaseAnime; if (mComboCutCount != 1) { @@ -7601,7 +7612,7 @@ int daAlink_c::procWolfWaitAttack() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; field_0x2f99 = 5; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); setComboReserb(); checkCutTurnCharge(); @@ -7684,14 +7695,14 @@ int daAlink_c::procWolfRollAttackInit(int param_0, int param_1) { setCutType(CUT_TYPE_WOLF_TURN_LEFT); } - setSingleAnimeWolfParam(anm, &daAlinkHIO_wlAtRoll_c0::m.mAttackAnm); - field_0x3478 = daAlinkHIO_wlAtRoll_c0::m.mAttackRadius; + setSingleAnimeWolfParam(anm, &mpHIO->mWolf.mWlAttack.mAtRoll.m.mAttackAnm); + field_0x3478 = mpHIO->mWolf.mWlAttack.mAtRoll.m.mAttackRadius; setCylAtParam(0x40000000, dCcG_At_Spl_UNK_1, 3, 4, 3, field_0x3478 * 0.5f, 155.0f); mNormalSpeed = 0.0f; mProcVar3.field_0x300e = param_1; if (param_1 != 0) { - mUnderFrameCtrl[0].setStart(daAlinkHIO_wlAtRoll_c0::m.mSpiderThreadEscapeStartF); + mUnderFrameCtrl[0].setStart(mpHIO->mWolf.mWlAttack.mAtRoll.m.mSpiderThreadEscapeStartF); } else { seStartOnlyReverb(Z2SE_WOLFATTACK_WIND_L); voiceStart(Z2SE_WL_V_ATTACK_SPIN); @@ -7714,17 +7725,17 @@ int daAlink_c::procWolfRollAttack() { } daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAtRoll_c0::m.mAttackAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlAttack.mAtRoll.m.mAttackAnm.mCancelFrame) { checkNextActionWolf(1); } else if (mProcVar3.field_0x300e == 0 && frameCtrl_p->getFrame() >= 4.0f && frameCtrl_p->getFrame() < 13.0f) { if (!checkNoResetFlg0(FLG0_UNK_40)) { - mNormalSpeed = daAlinkHIO_wlAtRoll_c0::m.mAttackSpeed; + mNormalSpeed = mpHIO->mWolf.mWlAttack.mAtRoll.m.mAttackSpeed; } onResetFlg0(RFLG0_UNK_2); @@ -7736,7 +7747,7 @@ int daAlink_c::procWolfRollAttack() { int daAlink_c::procWolfDownAttackInit() { commonProcInit(PROC_WOLF_DOWN_ATTACK); - setSingleAnimeWolfParam(WANM_ATTACK_POE_START, &daAlinkHIO_wlAtDown_c0::m.mLowStanceAnm); + setSingleAnimeWolfParam(WANM_ATTACK_POE_START, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mLowStanceAnm); cXyz sp24(static_cast(mTargetedActor)->getDownPos()); sp24.y += 50.0f; @@ -7757,7 +7768,7 @@ int daAlink_c::procWolfDownAttackInit() { var_f1 = 800.0f; } - speed.y = daAlinkHIO_wlAtDown_c0::m.mSideRollMovementWidth; + speed.y = mpHIO->mWolf.mWlAttack.mWlAtDown.m.mSideRollMovementWidth; f32 temp_f3 = speed.y + gravity; f32 var_f0 = temp_f3 * temp_f3 + gravity * 2.0f * (sp24.y - current.pos.y); @@ -7788,7 +7799,7 @@ int daAlink_c::procWolfDownAttack() { } } else if (checkAnmEnd(mUnderFrameCtrl)) { if (checkUnderMove0BckNoArcWolf(WANM_ATTACK_POE_START)) { - setSingleAnimeWolfParam(WANM_ATTACK_POE, &daAlinkHIO_wlAtDown_c0::m.mPushDownAnm); + setSingleAnimeWolfParam(WANM_ATTACK_POE, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mPushDownAnm); shape_angle.y = current.angle.y; } } else if (checkUnderMove0BckNoArcWolf(WANM_ATTACK_POE_START)) { @@ -7801,7 +7812,7 @@ int daAlink_c::procWolfDownAttack() { int daAlink_c::procWolfDownAtLandInit(fopEn_enemy_c* i_enemy) { commonProcInit(PROC_WOLF_DOWN_AT_LAND); field_0x280c.setData(i_enemy); - setSingleAnimeWolfParam(WANM_ATTACK_POE_END, &daAlinkHIO_wlAtDown_c0::m.mFrontRollAnm); + setSingleAnimeWolfParam(WANM_ATTACK_POE_END, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mFrontRollAnm); field_0x2f9d = 4; setFootEffectProcType(2); @@ -7840,7 +7851,7 @@ int daAlink_c::procWolfDownAtLand() { return procWolfBackJumpInit(1); } - setSingleAnimeWolfParam(WANM_PULL_OUT, &daAlinkHIO_wlAtDown_c0::m.mProneGetUpAnm); + setSingleAnimeWolfParam(WANM_PULL_OUT, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mProneGetUpAnm); dComIfGp_getVibration().StartShock(2, 15, cXyz(0.0f, 1.0f, 0.0f)); } else if (checkUnderMove0BckNoArcWolf(WANM_ATTACK_POE_END) && (frameCtrl_p->checkPass(9.0f) || frameCtrl_p->checkPass(16.0f))) @@ -7853,7 +7864,7 @@ int daAlink_c::procWolfDownAtLand() { int daAlink_c::procWolfDownAtMissLandInit() { commonProcInit(PROC_WOLF_DOWN_AT_MISS_LAND); - setSingleAnimeWolfParam(WANM_ATTACK_POE_MISS, &daAlinkHIO_wlAtDown_c0::m.mRollOverAnm); + setSingleAnimeWolfParam(WANM_ATTACK_POE_MISS, &mpHIO->mWolf.mWlAttack.mWlAtDown.m.mRollOverAnm); setFaceBasicTexture(FTANM_UNK_97); mNormalSpeed = 0.0f; @@ -7876,7 +7887,7 @@ int daAlink_c::procWolfDownAtMissLand() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtDown_c0::m.mRollOverAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlAttack.mWlAtDown.m.mRollOverAnm.mCancelFrame) { checkNextActionWolf(1); } else if (frameCtrl->getFrame() >= 3.0f && frameCtrl->getFrame() < 8.0f) { seStartMapInfoLevel(Z2SE_FN_WOLF_SLIP); @@ -7888,7 +7899,7 @@ int daAlink_c::procWolfDownAtMissLand() { int daAlink_c::procWolfLockAttackInit(int param_0) { commonProcInit(PROC_WOLF_LOCK_ATTACK); - setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtNjump_c0::m.mAerialAttackAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_START, &mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialAttackAnm); if (fopAcM_GetName(mWolfLockAcKeep[0].getActor()) == PROC_E_YMB) { mProcVar5.field_0x3012 = 1; @@ -7917,31 +7928,31 @@ int daAlink_c::procWolfLockAttackInit(int param_0) { if (l_eyePosDelta.y < 10.0f) { l_eyePosDelta.y = 10.0f; - } else if (l_eyePosDelta.y > daAlinkHIO_wlAtLock_c0::m.mMaxJumpHeight) { - l_eyePosDelta.y = daAlinkHIO_wlAtLock_c0::m.mMaxJumpHeight; + } else if (l_eyePosDelta.y > mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxJumpHeight) { + l_eyePosDelta.y = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxJumpHeight; } f32 var_f30 = l_eyePosDelta.absXZ(); - if (var_f30 > daAlinkHIO_wlAtLock_c0::m.mMaxJumpDistance) { - var_f30 = daAlinkHIO_wlAtLock_c0::m.mMaxJumpDistance / var_f30; + if (var_f30 > mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxJumpDistance) { + var_f30 = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mMaxJumpDistance / var_f30; l_eyePosDelta.x *= var_f30; l_eyePosDelta.z *= var_f30; } f32 var_f29 = l_eyePosDelta.abs(); - f32 var_f31 = var_f29 / daAlinkHIO_wlAtLock_c0::m.mAttackSpeed; + f32 var_f31 = var_f29 / mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAttackSpeed; if (var_f31 < 1.0f) var_f31 = 1.0f; - f32 var_f28 = daAlinkHIO_wlAtLock_c0::m.mAttackSpeed / var_f29; + f32 var_f28 = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAttackSpeed / var_f29; mNormalSpeed = var_f28 * l_eyePosDelta.absXZ(); setSpecialGravity((l_eyePosDelta.y * -2.0f) / (var_f31 * var_f31), maxFallSpeed, 0); speed.y = -gravity * var_f31; mProcVar0.field_0x3008 = var_f31; - setCylAtParam(0x8000000, dCcG_At_Spl_UNK_0, 1, 4, 6, daAlinkHIO_wlAtLock_c0::m.mAttackRadius, - daAlinkHIO_wlAtLock_c0::m.mAttackHeight); - field_0x3438 = daAlinkHIO_wlAtLock_c0::m.mAttackRadiusOffset; + setCylAtParam(0x8000000, dCcG_At_Spl_UNK_0, 1, 4, 6, mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAttackRadius, + mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAttackHeight); + field_0x3438 = mpHIO->mWolf.mWlAttack.mWlAtLock.m.mAttackRadiusOffset; setCutType(CUT_TYPE_WOLF_LOCK); voiceStart(Z2SE_WL_V_ATTACK_THRUST); @@ -7977,15 +7988,15 @@ int daAlink_c::procWolfLockAttack() { mProcVar0.field_0x3008--; if (mProcVar0.field_0x3008 == 0) { - setSpecialGravity(daAlinkHIO_wlAtLock_c0::m.mGravity, maxFallSpeed, 0); + setSpecialGravity(mpHIO->mWolf.mWlAttack.mWlAtLock.m.mGravity, maxFallSpeed, 0); } } else if (mNormalSpeed > 30.0f) { cLib_addCalc(&mNormalSpeed, 30.0f, 0.3f, 5.0f, 1.0f); } if (checkAnmEnd(mUnderFrameCtrl) && checkUnderMove0BckNoArcWolf(WANM_ATTACK_A_START)) { - setSingleAnimeWolfBaseSpeed(WANM_ATTACK_A, daAlinkHIO_wlAtNjump_c0::m.mAerialAnmSpeed, - daAlinkHIO_wlAtNjump_c0::m.mAerialInterpolation); + setSingleAnimeWolfBaseSpeed(WANM_ATTACK_A, mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialAnmSpeed, + mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialInterpolation); } if (mLinkAcch.ChkGroundHit() || (mProcVar5.field_0x3012 != 0 && current.pos.y < mWaterY)) { @@ -7996,8 +8007,8 @@ int daAlink_c::procWolfLockAttack() { if (mWolfLockNum != 0) { procWolfLockAttackTurnInit(mProcVar1.field_0x300a); } else { - if (mNormalSpeed > daAlinkHIO_wlAtNjump_c0::m.mMaxHorizontalSpeed) { - mNormalSpeed = daAlinkHIO_wlAtNjump_c0::m.mMaxHorizontalSpeed; + if (mNormalSpeed > mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMaxHorizontalSpeed) { + mNormalSpeed = mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mMaxHorizontalSpeed; } procWolfJumpAttackSlideLandInit(0, 0, 0); @@ -8017,11 +8028,11 @@ int daAlink_c::procWolfLockAttackTurnInit(int param_0) { if (abs((s16)(cLib_targetAngleY(¤t.pos, &mWolfLockAcKeep[0].getActor()->eyePos) - shape_angle.y)) > 0x4000) { - setSingleAnimeWolfParam(WANM_ATTACK_A_END_BACK, &daAlinkHIO_wlAtLock_c0::m.mRearLandingAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END_BACK, &mpHIO->mWolf.mWlAttack.mWlAtLock.m.mRearLandingAnm); mProcVar2.field_0x300c = 1; field_0x3588.set(-l_wolfBaseAnime.x, l_wolfBaseAnime.y, -l_wolfBaseAnime.z); } else { - setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &daAlinkHIO_wlAtLock_c0::m.mFrontLandingAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &mpHIO->mWolf.mWlAttack.mWlAtLock.m.mFrontLandingAnm); mProcVar2.field_0x300c = 0; field_0x3588 = l_wolfBaseAnime; } @@ -8083,8 +8094,8 @@ int daAlink_c::procWolfAttackReverseInit() { setSingleAnimeWolfBase(WANM_ATTACK_RECOIL_START); setFaceBasicTexture(FTANM_UNK_9A); - mNormalSpeed = daAlinkHIO_wlAttack_c0::m.mJumpBackSpeedH; - speed.y = daAlinkHIO_wlAttack_c0::m.mJumpBackSpeedV; + mNormalSpeed = mpHIO->mWolf.mWlAttack.m.mJumpBackSpeedH; + speed.y = mpHIO->mWolf.mWlAttack.m.mJumpBackSpeedV; current.angle.y += 0x8000; dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f)); @@ -8111,7 +8122,7 @@ int daAlink_c::procWolfAttackReverse() { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAttack_c0::m.mJumpBackLandAnm.mCancelFrame) { + } else if (frameCtrl_p->getFrame() > mpHIO->mWolf.mWlAttack.m.mJumpBackLandAnm.mCancelFrame) { checkNextActionWolf(1); } } else if ((mLinkAcch.ChkGroundHit() || checkEndResetFlg2(ERFLG2_UNK_100)) && checkModeFlg(2)) { @@ -8120,7 +8131,7 @@ int daAlink_c::procWolfAttackReverse() { } mNormalSpeed = 0.0f; - setSingleAnimeWolfParam(WANM_ATTACK_RECOIL_END, &daAlinkHIO_wlAttack_c0::m.mJumpBackLandAnm); + setSingleAnimeWolfParam(WANM_ATTACK_RECOIL_END, &mpHIO->mWolf.mWlAttack.m.mJumpBackLandAnm); setFaceBasicTexture(FTANM_UNK_9B); current.angle.y = shape_angle.y; offModeFlg(2); @@ -8149,8 +8160,8 @@ int daAlink_c::procWolfEnemyThrowInit(int param_0) { var_f31 = 3.0f; } - setSingleAnimeWolf(anm, daAlinkHIO_wlAtBite_c0::m.mEnemyBiteThrowAnmSpeed, var_f31, -1, - daAlinkHIO_wlAtBite_c0::m.mEnemyBiteThrowInterpolation); + setSingleAnimeWolf(anm, mpHIO->mWolf.mWlAttack.mWlAtBite.m.mEnemyBiteThrowAnmSpeed, var_f31, -1, + mpHIO->mWolf.mWlAttack.mWlAtBite.m.mEnemyBiteThrowInterpolation); setWolfEnemyThrowUpperAnime(anm, var_f31); field_0x3588 = l_wolfBaseAnime; mNormalSpeed = 0.0f; @@ -8170,7 +8181,7 @@ int daAlink_c::procWolfEnemyThrow() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtBite_c0::m.mEnemyBiteThrowCF) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlAttack.mWlAtBite.m.mEnemyBiteThrowCF) { checkNextActionWolf(1); } @@ -8179,7 +8190,7 @@ int daAlink_c::procWolfEnemyThrow() { int daAlink_c::procWolfEnemyHangBiteInit() { commonProcInit(PROC_WOLF_ENEMY_HANG_BITE); - setSingleAnimeWolfParam(WANM_CATCH_START, &daAlinkHIO_wlAtBite_c0::m.mHangingBitePreparationAnm); + setSingleAnimeWolfParam(WANM_CATCH_START, &mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBitePreparationAnm); f32 tmp_0 = 0.0f; mNormalSpeed = tmp_0; @@ -8191,11 +8202,11 @@ int daAlink_c::procWolfEnemyHangBiteInit() { } else { current.angle.y = shape_angle.y; field_0x2f99 = 0x50; - mProcVar0.field_0x3008 = daAlinkHIO_wlAtBite_c0::m.mBiteAttachTime; + mProcVar0.field_0x3008 = mpHIO->mWolf.mWlAttack.mWlAtBite.m.mBiteAttachTime; mProcVar1.field_0x300a = 0; mProcVar2.field_0x300c = 0; mProcVar3.field_0x300e = 0; - field_0x3478 = daAlinkHIO_wlAtBite_c0::m.mHangingBiteMidAnmSpeedMin; + field_0x3478 = mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBiteMidAnmSpeedMin; mProcVar4.field_0x3010 = shape_angle.y; voiceStart(Z2SE_WL_V_BITE_ATTACK); dComIfGp_setPlayerStatus1(0, 0x200000); @@ -8218,7 +8229,7 @@ int daAlink_c::procWolfEnemyHangBite() { if (doTrigger()) { mProcVar3.field_0x300e = 1; - mProcVar0.field_0x3008 = daAlinkHIO_wlAtBite_c0::m.mBiteAttachTime; + mProcVar0.field_0x3008 = mpHIO->mWolf.mWlAttack.mWlAtBite.m.mBiteAttachTime; } else if (mProcVar0.field_0x3008 != 0) { mProcVar0.field_0x3008--; } @@ -8239,11 +8250,11 @@ int daAlink_c::procWolfEnemyHangBite() { } if (doTrigger()) { - cLib_chaseF(&field_0x3478, daAlinkHIO_wlAtBite_c0::m.mHangingBiteMidAnmSpeedMax, - daAlinkHIO_wlAtBite_c0::m.mHangingBiteMidAnmSpeedAcceleration); + cLib_chaseF(&field_0x3478, mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBiteMidAnmSpeedMax, + mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBiteMidAnmSpeedAcceleration); } else { - cLib_chaseF(&field_0x3478, daAlinkHIO_wlAtBite_c0::m.mHangingBiteMidAnmSpeedMin, - daAlinkHIO_wlAtBite_c0::m.mHangingBiteMidAnmSpeedDeceleration); + cLib_chaseF(&field_0x3478, mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBiteMidAnmSpeedMin, + mpHIO->mWolf.mWlAttack.mWlAtBite.m.mHangingBiteMidAnmSpeedDeceleration); } if (frameCtrl_p->getRate() < 0.1f) { @@ -8294,15 +8305,15 @@ int daAlink_c::procWolfGrabUpInit() { f32 var_f31; if (!fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_ITEM)) { - setSingleAnimeWolfParam(WANM_PICKUP_A, &daAlinkHIO_wlGrab_c0::m.mPotGrabAnm); + setSingleAnimeWolfParam(WANM_PICKUP_A, &mpHIO->mWolf.mWlGrab.m.mPotGrabAnm); var_f31 = 120.0f; field_0x3478 = 10.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.mPotGrabAnm.mCancelFrame; + field_0x347c = mpHIO->mWolf.mWlGrab.m.mPotGrabAnm.mCancelFrame; } else { - setSingleAnimeWolfParam(WANM_PICKUP_B, &daAlinkHIO_wlGrab_c0::m.mBoneGrabAnm); + setSingleAnimeWolfParam(WANM_PICKUP_B, &mpHIO->mWolf.mWlGrab.m.mBoneGrabAnm); var_f31 = 80.0f; field_0x3478 = 7.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.mBoneGrabAnm.mCancelFrame; + field_0x347c = mpHIO->mWolf.mWlGrab.m.mBoneGrabAnm.mCancelFrame; } setGrabItemActor(field_0x27f4); @@ -8376,13 +8387,13 @@ int daAlink_c::procWolfGrabPutInit() { commonProcInit(PROC_WOLF_GRAB_PUT); if (grab_obj) { - setSingleAnimeWolfParam(WANM_PICKUP_A, &daAlinkHIO_wlGrab_c0::m.mPotReleaseAnm); + setSingleAnimeWolfParam(WANM_PICKUP_A, &mpHIO->mWolf.mWlGrab.m.mPotReleaseAnm); field_0x3478 = 10.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.mPotReleaseAnm.mCancelFrame; + field_0x347c = mpHIO->mWolf.mWlGrab.m.mPotReleaseAnm.mCancelFrame; } else { - setSingleAnimeWolfParam(WANM_PICKUP_B, &daAlinkHIO_wlGrab_c0::m.mBoneReleaseAnm); + setSingleAnimeWolfParam(WANM_PICKUP_B, &mpHIO->mWolf.mWlGrab.m.mBoneReleaseAnm); field_0x3478 = 7.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.mBoneReleaseAnm.mCancelFrame; + field_0x347c = mpHIO->mWolf.mWlGrab.m.mBoneReleaseAnm.mCancelFrame; } mNormalSpeed = 0.0f; @@ -8433,7 +8444,7 @@ int daAlink_c::procWolfGrabPut() { int daAlink_c::procWolfGrabThrowInit() { commonProcInit(PROC_WOLF_GRAB_THROW); - setSingleAnimeWolfParam(WANM_PICKUP_THROW, &daAlinkHIO_wlGrab_c0::m.mThrowAnm); + setSingleAnimeWolfParam(WANM_PICKUP_THROW, &mpHIO->mWolf.mWlGrab.m.mThrowAnm); current.angle.y = shape_angle.y; return 1; @@ -8442,7 +8453,7 @@ int daAlink_c::procWolfGrabThrowInit() { int daAlink_c::procWolfGrabThrow() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; - cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_wlMoveNoP_c0::m.mDeceleration); + cLib_chaseF(&mNormalSpeed, 0.0f, mpHIO->mWolf.mWlMoveNoP.m.mDeceleration); setShapeAngleToAtnActor(0); current.angle.y = shape_angle.y; @@ -8452,7 +8463,7 @@ int daAlink_c::procWolfGrabThrow() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.mThrowAnm.mCancelFrame) { + } else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlGrab.m.mThrowAnm.mCancelFrame) { checkNextActionWolf(1); } @@ -8605,7 +8616,7 @@ int daAlink_c::procWolfChainUpInit() { } commonProcInit(PROC_WOLF_CHAIN_UP); - setSingleAnimeWolfParam(WANM_PICKUP_B, &daAlinkHIO_wlGrab_c0::m.mBoneGrabAnm); + setSingleAnimeWolfParam(WANM_PICKUP_B, &mpHIO->mWolf.mWlGrab.m.mBoneGrabAnm); mNormalSpeed = 0.0f; return 1; @@ -8617,7 +8628,7 @@ int daAlink_c::procWolfChainUp() { setWallGrabStatus(0x96, 2); if (frameCtrl->checkAnmEnd() || - (checkInputOnR() && frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.mBoneGrabAnm.mCancelFrame)) + (checkInputOnR() && frameCtrl->getFrame() > mpHIO->mWolf.mWlGrab.m.mBoneGrabAnm.mCancelFrame)) { u8 old_2fa3 = field_0x2fa3; fopAc_ac_c* old_actor = field_0x2844.getActor(); @@ -8733,7 +8744,7 @@ int daAlink_c::procWolfGanonCatch() { int daAlink_c::procWolfChainReadyInit() { commonProcInit(PROC_WOLF_CHAIN_READY); field_0x280c.setData(field_0x27f4); - setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtNjump_c0::m.mAerialAttackAnm); + setSingleAnimeWolfParam(WANM_ATTACK_A_START, &mpHIO->mWolf.mWlAttack.mWlAtNjump.m.mAerialAttackAnm); mNormalSpeed = 0.0f; mProcVar2.field_0x300c = 0; mProcVar3.field_0x300e = 0; @@ -8744,7 +8755,7 @@ int daAlink_c::procWolfChainReadyInit() { int daAlink_c::procWolfChainReady() { daObjWchain_c* chain = static_cast(field_0x280c.getActor()); if (chain == NULL || mLinkAcch.ChkWallHit()) { - return procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + return procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } else if (mUnderFrameCtrl[0].getFrame() < 3.0f) { s16 target_angle_y = cLib_targetAngleY(¤t.pos, &chain->getJumpAimPos()); cLib_addCalcAngleS(&shape_angle.y, target_angle_y, 2, 0x2000, 0x800); @@ -8767,7 +8778,7 @@ int daAlink_c::procWolfChainReady() { if (chain->getJumpAimPos().abs2(field_0x34e0) < 10000.0f) { procWolfChainWaitInit(); } else if (mProcVar0.field_0x3008 == 0) { - procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.mNormalFallInterp); + procWolfFallInit(2, mpHIO->mWolf.mWlAutoJump.m.mNormalFallInterp); } } return 1; @@ -8776,7 +8787,7 @@ int daAlink_c::procWolfChainReady() { int daAlink_c::procWolfChainWaitInit() { daObjWchain_c* chain = static_cast(field_0x280c.getActor()); commonProcInit(PROC_WOLF_CHAIN_WAIT); - setSingleAnimeWolfParam(WANM_HANDLE_HANG, &daAlinkHIO_wlChain_c0::m.mLoweringStartAnm); + setSingleAnimeWolfParam(WANM_HANDLE_HANG, &mpHIO->mWolf.mWlChain.m.mLoweringStartAnm); mProcVar1.field_0x300a = 0; chain->onRide(); field_0x2f99 = 0x50; @@ -8784,7 +8795,7 @@ int daAlink_c::procWolfChainWaitInit() { setSpecialGravity(0.0f, maxFallSpeed, 0); speed.y = 0.0f; mProcVar4.field_0x3010 = 0; - mProcVar0.field_0x3008 = daAlinkHIO_wlChain_c0::m.mTensionWaitTime + 20; + mProcVar0.field_0x3008 = mpHIO->mWolf.mWlChain.m.mTensionWaitTime + 20; field_0x3478 = chain->getPullLength(); current.angle.y = shape_angle.y; if (mNormalSpeed > 30.0f) { @@ -8801,18 +8812,18 @@ int daAlink_c::procWolfChainWaitInit() { int daAlink_c::procWolfChainWait() { daObjWchain_c* chain = static_cast(field_0x280c.getActor()); - if (chain == NULL || mProcVar0.field_0x3008 <= -daAlinkHIO_wlChain_c0::m.mReleaseWaitTime) { + if (chain == NULL || mProcVar0.field_0x3008 <= -mpHIO->mWolf.mWlChain.m.mReleaseWaitTime) { mNormalSpeed = field_0x37c8.absXZ(); current.angle.y = field_0x37c8.atan2sX_Z(); onNoResetFlg2(FLG2_UNK_200); - return procWolfFallInit(2, daAlinkHIO_wlWallHang_c0::m.mHangingFallInterp); + return procWolfFallInit(2, mpHIO->mWolf.mWlWallHang.m.mHangingFallInterp); } if (mProcVar4.field_0x3010 == 0) { if (mProcVar0.field_0x3008 > 20) { mProcVar0.field_0x3008--; } else { - field_0x3478 += daAlinkHIO_wlChain_c0::m.mFallSpeed; + field_0x3478 += mpHIO->mWolf.mWlChain.m.mFallSpeed; if (field_0x3478 > chain->getSwitchOffset()) { chain->onNowSwitchFlg(); mProcVar4.field_0x3010 = 1; @@ -8855,12 +8866,12 @@ int daAlink_c::procWolfChainWait() { f32 f1, f2, f3; if (checkInputOnR()) { anm = WANM_HANDLE_HANG_SW; - f1 = daAlinkHIO_wlChain_c0::m.mWaitAnmSpeed; - f2 = daAlinkHIO_wlChain_c0::m.mWaitInterp; + f1 = mpHIO->mWolf.mWlChain.m.mWaitAnmSpeed; + f2 = mpHIO->mWolf.mWlChain.m.mWaitInterp; } else { anm = WANM_HANDLE_HANG_WAIT; - f1 = daAlinkHIO_wlChain_c0::m.mSwingAnmSpeed; - f2 = daAlinkHIO_wlChain_c0::m.mSwingInterp; + f1 = mpHIO->mWolf.mWlChain.m.mSwingAnmSpeed; + f2 = mpHIO->mWolf.mWlChain.m.mSwingInterp; } if (anm != mUnderAnmHeap[0].getIdx()) { if (mProcVar1.field_0x300a == 0) { @@ -8966,7 +8977,7 @@ int daAlink_c::procWolfDigInit() { field_0x3478 = 100.0f; dCam_getBody()->SetTrimTypeForce(3); } else { - var_r26 = daAlinkHIO_wlChain_c0::m.mDigAnm.mEndFrame; + var_r26 = mpHIO->mWolf.mWlChain.m.mDigAnm.mEndFrame; field_0x3478 = 66.0f; } @@ -8978,7 +8989,7 @@ int daAlink_c::procWolfDigInit() { var_r26 = 59; } - setSingleAnimeWolf(WANM_DIG, daAlinkHIO_wlChain_c0::m.mDigAnm.mSpeed, var_f31, var_r26, daAlinkHIO_wlChain_c0::m.mDigAnm.mInterpolation); + setSingleAnimeWolf(WANM_DIG, mpHIO->mWolf.mWlChain.m.mDigAnm.mSpeed, var_f31, var_r26, mpHIO->mWolf.mWlChain.m.mDigAnm.mInterpolation); mNormalSpeed = 0.0f; field_0x3588 = l_wolfBaseAnime; mProcVar3.mDigChangeArea = false; @@ -9042,7 +9053,7 @@ int daAlink_c::procWolfDig() { setWolfDigEffect(); } else if (checkAnmEnd(frame_ctrl)) { if (mProcVar2.mDigType == 1) { - setSingleAnimeWolfParam(WANM_DIG_IN, &daAlinkHIO_wlChain_c0::m.mDigFallAnm); + setSingleAnimeWolfParam(WANM_DIG_IN, &mpHIO->mWolf.mWlChain.m.mDigFallAnm); mProcVar3.mDigChangeArea = true; setWolfDigEffect(); } else { @@ -9226,8 +9237,8 @@ int daAlink_c::procWolfGetSmellInit() { mDemo.setSpecialDemoType(); commonProcInit(PROC_WOLF_GET_SMELL); - setSingleAnimeWolfBaseSpeed(WANM_SMELL, daAlinkHIO_wlChain_c0::m.mSniffAnmSpeed, - daAlinkHIO_wlChain_c0::m.mSniffInterp); + setSingleAnimeWolfBaseSpeed(WANM_SMELL, mpHIO->mWolf.mWlChain.m.mSniffAnmSpeed, + mpHIO->mWolf.mWlChain.m.mSniffInterp); voiceStartLevel(Z2SE_WL_V_SNIFF); shape_angle.y = fopAcM_searchActorAngleY(this, field_0x27f4); diff --git a/src/d/actor/d_a_hozelda.cpp b/src/d/actor/d_a_hozelda.cpp index 9a9a706d05..654007dd94 100644 --- a/src/d/actor/d_a_hozelda.cpp +++ b/src/d/actor/d_a_hozelda.cpp @@ -10,22 +10,15 @@ #include "d/actor/d_a_b_gnd.h" #include "d/actor/d_a_arrow.h" - -#if DEBUG -#define HIO mpHIO->mParameters -#else -#define HIO daHoZelda_hio_c0::m -#endif - static const char l_arcName[] = "HoZelda"; #if DEBUG void daHoZelda_hio_c::genMessage(JORMContext* context) { - context->genSlider("弓サーチY角度", &mParameters.bow_search_y_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); - context->genSlider("弓開始角度", &mParameters.bow_start_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); - context->genSlider("弓開始距離", &mParameters.bow_start_distance, 0.0f, 10000.0f, 0, NULL, -1, -1, 0x200, 0x18); - context->genSlider("弓終了角度", &mParameters.bow_end_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); - context->genSlider("弓終了距離", &mParameters.bow_end_distance, 0.0f, 10000.0f, 0, NULL, -1, -1, 0x200, 0x18); + context->genSlider("弓サーチY角度", &m.bow_search_y_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); + context->genSlider("弓開始角度", &m.bow_start_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); + context->genSlider("弓開始距離", &m.bow_start_distance, 0.0f, 10000.0f, 0, NULL, -1, -1, 0x200, 0x18); + context->genSlider("弓終了角度", &m.bow_end_angle, 0, 0x7fff, 0, NULL, -1, -1, 0x200, 0x18); + context->genSlider("弓終了距離", &m.bow_end_distance, 0.0f, 10000.0f, 0, NULL, -1, -1, 0x200, 0x18); } #endif @@ -134,7 +127,7 @@ BOOL daHoZelda_c::createHeap() { return FALSE; } - mpHIO = new daHoZelda_hio_c(); + mpHIO = new HOZELDA_HIO_CLASS(); if (mpHIO == NULL) { return FALSE; } @@ -482,7 +475,7 @@ void daHoZelda_c::setAnm() { } if (anm_idx[0] == 0xE && field_0x6da == 0 && !mDamageInit && field_0x6dd == 0 && player->checkHorseRide() && ganondorf != NULL && ganondorf->checkPiyo() != 1 && - ((gnd_seen_angleY < HIO.bow_start_angle && gnd_lockon) || (mBowMode != 0 && gnd_seen_angleY < HIO.bow_end_angle && (gnd_lockon || mArrowAcKeep.getActor() != NULL)))) + ((gnd_seen_angleY < mpHIO->m.bow_start_angle && gnd_lockon) || (mBowMode != 0 && gnd_seen_angleY < mpHIO->m.bow_end_angle && (gnd_lockon || mArrowAcKeep.getActor() != NULL)))) { mBowMode = 1; } else { @@ -848,7 +841,6 @@ void daHoZelda_c::setNeckAngle() { } } -// NONMATCHING - load order with cLib_minMaxLimit void daHoZelda_c::searchBodyAngle() { fopAc_ac_c* gnd_actor = mGndAcKeep.getActor(); s16 angle_x_target = 0; @@ -863,16 +855,9 @@ void daHoZelda_c::searchBodyAngle() { if (sp8.abs() >= 1.0f) { angle_x_target = cLib_minMaxLimit(sp8.atan2sY_XZ(), -0x800, 0x2000); -#if PLATFORM_SHIELD || PLATFORM_WII angle_y_target = - cLib_minMaxLimit(sp8.atan2sX_Z() - shape_angle.y, -HIO.bow_search_y_angle, - (s16)HIO.bow_search_y_angle); -#else - // needs to load HIO.bow_search_y_angle before calling sp8.atan2sX_Z() - int ang1 = (s16)-HIO.bow_search_y_angle; - int ang2 = (s16)HIO.bow_search_y_angle; - angle_y_target = cLib_minMaxLimit(sp8.atan2sX_Z() - shape_angle.y, ang1, ang2); -#endif + cLib_minMaxLimit(sp8.atan2sX_Z() - shape_angle.y, -mpHIO->m.bow_search_y_angle, + (s16)mpHIO->m.bow_search_y_angle); } } diff --git a/src/d/actor/d_a_npc_ykm.cpp b/src/d/actor/d_a_npc_ykm.cpp index 7f78100b8b..3f9132e817 100644 --- a/src/d/actor/d_a_npc_ykm.cpp +++ b/src/d/actor/d_a_npc_ykm.cpp @@ -1393,7 +1393,6 @@ void daNpc_ykM_c::afterMoved() { } } -// NONMATCHING - HIO load issue void daNpc_ykM_c::setAttnPos() { fopAc_ac_c* otherYkmP = NULL; cXyz sp104(80.0f, 30.0f, 0.0f); diff --git a/src/d/actor/d_a_npc_ykw.cpp b/src/d/actor/d_a_npc_ykw.cpp index b9aab172ae..e058e31865 100644 --- a/src/d/actor/d_a_npc_ykw.cpp +++ b/src/d/actor/d_a_npc_ykw.cpp @@ -35,12 +35,6 @@ public: }; #endif -#if DEBUG -#define HIO_PARAM(i_this) (&i_this->mpHIO->m) -#else -#define HIO_PARAM(i_this) (&daNpc_ykW_Param_c::m) -#endif - static int l_bmdData[1][2] = { {11, 1}, }; @@ -359,7 +353,7 @@ int daNpc_ykW_c::create() { mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); - mCcStts.Init(HIO_PARAM(this)->common.weight, 0, this); + mCcStts.Init(mpHIO->m.common.weight, 0, this); mCyl.Set(mCcDCyl); mCyl.SetStts(&mCcStts); @@ -716,10 +710,10 @@ void daNpc_ykW_c::setParam() { if (field_0xf80 != 5 && field_0xf80 != 6) { u32 newAttnFlags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e; - s16 talkDist = HIO_PARAM(this)->common.talk_distance; - s16 talkAngle = HIO_PARAM(this)->common.talk_angle; - s16 attnDist = HIO_PARAM(this)->common.attention_distance; - s16 attnAngle = HIO_PARAM(this)->common.attention_angle; + s16 talkDist = mpHIO->m.common.talk_distance; + s16 talkAngle = mpHIO->m.common.talk_angle; + s16 attnDist = mpHIO->m.common.attention_distance; + s16 attnAngle = mpHIO->m.common.attention_angle; if (field_0xf80 == 1) { talkAngle = 4; @@ -731,11 +725,7 @@ void daNpc_ykW_c::setParam() { attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attnDist, attnAngle); attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e]; -#if DEBUG - attention_info.distances[fopAc_attn_JUEL_e] = daNpcT_getDistTableIdx(talkDist, talkAngle); -#else attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talkDist, talkAngle); -#endif if (daPy_py_c::checkNowWolf()) { newAttnFlags |= fopAc_AttnFlag_UNK_0x800000; @@ -746,27 +736,27 @@ void daNpc_ykW_c::setParam() { attention_info.flags = 0; } - scale.set(HIO_PARAM(this)->common.scale, - HIO_PARAM(this)->common.scale, - HIO_PARAM(this)->common.scale); - mCcStts.SetWeight(HIO_PARAM(this)->common.weight); - mCylH = HIO_PARAM(this)->common.height; - mWallR = HIO_PARAM(this)->common.width; - mAttnFovY = HIO_PARAM(this)->common.fov; + scale.set(mpHIO->m.common.scale, + mpHIO->m.common.scale, + mpHIO->m.common.scale); + mCcStts.SetWeight(mpHIO->m.common.weight); + mCylH = mpHIO->m.common.height; + mWallR = mpHIO->m.common.width; + mAttnFovY = mpHIO->m.common.fov; mAcchCir.SetWallR(mWallR); - mAcchCir.SetWallH(HIO_PARAM(this)->common.knee_length); + mAcchCir.SetWallH(mpHIO->m.common.knee_length); - mRealShadowSize = HIO_PARAM(this)->common.real_shadow_size; + mRealShadowSize = mpHIO->m.common.real_shadow_size; if (field_0xf80 == 4) { fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100); mRealShadowSize = 1500.0f; } - mExpressionMorfFrame = HIO_PARAM(this)->common.expression_morf_frame; - mMorfFrames = HIO_PARAM(this)->common.morf_frame; - gravity = HIO_PARAM(this)->common.gravity; + mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame; + mMorfFrames = mpHIO->m.common.morf_frame; + gravity = mpHIO->m.common.gravity; field_0x1060 = 0; field_0x1061 = 0; } @@ -923,7 +913,7 @@ void daNpc_ykW_c::afterMoved() { JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x105c); if (emitter != NULL) { cXyz unkXyz2; - f32 unkFloat1 = speedF / HIO_PARAM(this)->mSlidingSpeed; + f32 unkFloat1 = speedF / mpHIO->m.mSlidingSpeed; if (unkFloat1 > 1.0f) { unkFloat1 = 1.0f; } @@ -952,7 +942,6 @@ void daNpc_ykW_c::afterMoved() { } } -// NONMATCHING - HIO load issue, regalloc void daNpc_ykW_c::setAttnPos() { cXyz unkXyz1(0.0f, 50.0f, 0.0f); if (field_0x106a != 0) { @@ -969,22 +958,22 @@ void daNpc_ykW_c::setAttnPos() { if (&daNpc_ykW_c::sitWait == field_0xfd8) { mJntAnm.setParam( this, mpMorf[0]->getModel(), &unkXyz1, getBackboneJointNo(), getNeckJointNo(), - getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, HIO_PARAM(this)->common.head_angleX_min, - HIO_PARAM(this)->common.head_angleX_max, HIO_PARAM(this)->common.head_angleY_min, - HIO_PARAM(this)->common.head_angleY_max, HIO_PARAM(this)->common.neck_rotation_ratio, + getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, mpHIO->m.common.head_angleX_min, + mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min, + mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio, unkFloat1, NULL); } else { mJntAnm.setParam(this, mpMorf[0]->getModel(), &unkXyz1, getBackboneJointNo(), getNeckJointNo(), getHeadJointNo(), - field_0x1061 != 0 ? 0.0f : HIO_PARAM(this)->common.body_angleX_min, - field_0x1061 != 0 ? 0.0f : HIO_PARAM(this)->common.body_angleX_max, - field_0x1061 != 0 ? 0.0f : HIO_PARAM(this)->common.body_angleY_min, - field_0x1061 != 0 ? 0.0f : HIO_PARAM(this)->common.body_angleY_max, - field_0x1060 != 0 ? 0.0f : HIO_PARAM(this)->common.head_angleX_min, - field_0x1060 != 0 ? 0.0f : HIO_PARAM(this)->common.head_angleX_max, - field_0x1060 != 0 ? 0.0f : HIO_PARAM(this)->common.head_angleY_min, - field_0x1060 != 0 ? 0.0f : HIO_PARAM(this)->common.head_angleY_max, - HIO_PARAM(this)->common.neck_rotation_ratio, unkFloat1, NULL); + field_0x1061 != 0 ? 0.0f : mpHIO->m.common.body_angleX_min, + field_0x1061 != 0 ? 0.0f : mpHIO->m.common.body_angleX_max, + field_0x1061 != 0 ? 0.0f : mpHIO->m.common.body_angleY_min, + field_0x1061 != 0 ? 0.0f : mpHIO->m.common.body_angleY_max, + field_0x1060 != 0 ? 0.0f : mpHIO->m.common.head_angleX_min, + field_0x1060 != 0 ? 0.0f : mpHIO->m.common.head_angleX_max, + field_0x1060 != 0 ? 0.0f : mpHIO->m.common.head_angleY_min, + field_0x1060 != 0 ? 0.0f : mpHIO->m.common.head_angleY_max, + mpHIO->m.common.neck_rotation_ratio, unkFloat1, NULL); } mJntAnm.calcJntRad(0.2f, 1.0f, unkFloat1); @@ -996,7 +985,7 @@ void daNpc_ykW_c::setAttnPos() { mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 1, 1.0f, 0); unkXyz1.set(0.0f, 0.0f, 0.0f); - unkXyz1.y = HIO_PARAM(this)->common.attention_offset; + unkXyz1.y = mpHIO->m.common.attention_offset; if (&daNpc_ykW_c::sitWait == field_0xfd8) { unkXyz1.y -= 50.0f; @@ -1083,7 +1072,7 @@ void daNpc_ykW_c::setCollision() { int daNpc_ykW_c::drawDbgInfo() { #if DEBUG - if (HIO_PARAM(this)->common.debug_info_ON != 0) { + if (mpHIO->m.common.debug_info_ON != 0) { f32 juelDist = dComIfGp_getAttention() ->getDistTable(attention_info.distances[fopAc_attn_JUEL_e]) .mDistMax; @@ -1118,7 +1107,7 @@ int daNpc_ykW_c::selectAction() { field_0xfd8 = NULL; #if DEBUG - if (HIO_PARAM(this)->common.debug_mode_ON != 0) { + if (mpHIO->m.common.debug_mode_ON != 0) { field_0xfd8 = &daNpc_ykW_c::test; return 1; } @@ -1452,7 +1441,7 @@ int daNpc_ykW_c::cutGoIntoBossRoom(int param_0) { pathPntPos1 = mPath.getPntPos(mPath.getNumPnts() - 1); targetAngleY = cLib_targetAngleY(fopAcM_GetPosition_p(this), &pathPntPos1); if (targetAngleY != mCurAngle.y) { - step(targetAngleY, 13, 22, HIO_PARAM(this)->mStepSpeed, 0); + step(targetAngleY, 13, 22, mpHIO->m.mStepSpeed, 0); break; } @@ -1964,7 +1953,7 @@ int daNpc_ykW_c::cutFindWolf(int param_0) { mJntAnm.lookPlayer(0); if (mPlayerAngle != mCurAngle.y) { - if (step(mPlayerAngle, 0xd, 0x16, HIO_PARAM(this)->mStepSpeed, 0)) { + if (step(mPlayerAngle, 0xd, 0x16, mpHIO->m.mStepSpeed, 0)) { mFaceMotionSeqMngr.setNo(13, -1.0, 0, 0); mMotionSeqMngr.setNo(0, -1.0, 0, 0); } @@ -2512,7 +2501,7 @@ int daNpc_ykW_c::wait(void* param_0) { mJntAnm.lookNone(0); if (home.angle.y != mCurAngle.y) { if (field_0xe34 != 0) { - if (step(home.angle.y, 13, 22, HIO_PARAM(this)->mStepSpeed, 0) != 0) + if (step(home.angle.y, 13, 22, mpHIO->m.mStepSpeed, 0) != 0) { mMode = 1; } @@ -2632,8 +2621,8 @@ int daNpc_ykW_c::walk(void* param_0) { int dstPos; int dstPos2; - s16 downTime = HIO_PARAM(this)->mWalkingTime; - s16 walkingTime = HIO_PARAM(this)->mDownTime; + s16 downTime = mpHIO->m.mWalkingTime; + s16 walkingTime = mpHIO->m.mDownTime; switch (mMode) { case 0: @@ -2873,17 +2862,17 @@ int daNpc_ykW_c::race(void* param_0) { cLib_addCalcAngleS2(&mCurAngle.x, mGroundAngle, 6, 0x200); cLib_addCalcAngleS2(&mCurAngle.z, targetAngleY, 6, 0x200); int unkInt2 = field_0x104c - field_0x1044.field_0x0; - unkFloat1 = HIO_PARAM(this)->mSlidingSpeed * cM_scos(mGroundAngle); + unkFloat1 = mpHIO->m.mSlidingSpeed * cM_scos(mGroundAngle); if (mStagger.checkStagger()) { unkFloat1 *= 0.0f; } else { - unkInt2 += HIO_PARAM(this)->mCompetParamA; - unkInt2 = cLib_minMaxLimit(unkInt2, 0, HIO_PARAM(this)->mCompetParamB); + unkInt2 += mpHIO->m.mCompetParamA; + unkInt2 = cLib_minMaxLimit(unkInt2, 0, mpHIO->m.mCompetParamB); if (unkInt2 > 0) { - unkFloat1 *= (f32)abs(unkInt2) * 0.1f * HIO_PARAM(this)->mCompetParamC + 1.0f; + unkFloat1 *= (f32)abs(unkInt2) * 0.1f * mpHIO->m.mCompetParamC + 1.0f; } } - cLib_chaseF(&speedF, unkFloat1, HIO_PARAM(this)->mSlidingAccel); + cLib_chaseF(&speedF, unkFloat1, mpHIO->m.mSlidingAccel); mSound.startCreatureSoundLevel(Z2SE_YW_SNOBO_RIDE, speedF, -1); mSound.startCreatureVoiceLevel(Z2SE_YW_V_SNOBO_RIDING, -1); } @@ -2982,7 +2971,7 @@ int daNpc_ykW_c::talk(void* param_0) { } } else { mJntAnm.lookPlayer(0); - step(mPlayerAngle, 13, 22, HIO_PARAM(this)->mStepSpeed, 0); + step(mPlayerAngle, 13, 22, mpHIO->m.mStepSpeed, 0); break; } } @@ -3006,8 +2995,8 @@ int daNpc_ykW_c::test(void* param_0) { mMode = 2; case 2: - mFaceMotionSeqMngr.setNo(HIO_PARAM(this)->common.face_expression, -1.0f, 0, 0); - mMotionSeqMngr.setNo(HIO_PARAM(this)->common.motion, -1.0f, 0, 0); + mFaceMotionSeqMngr.setNo(mpHIO->m.common.face_expression, -1.0f, 0, 0); + mMotionSeqMngr.setNo(mpHIO->m.common.motion, -1.0f, 0, 0); mJntAnm.lookNone(0); From 2260191fe62af7a5803012380bec21b1d46cdf44 Mon Sep 17 00:00:00 2001 From: Niklas Bauer Date: Tue, 2 Dec 2025 19:34:19 +0100 Subject: [PATCH 06/18] Consistent cull_box struct usage (#2905) * consistent cullbox usage * d_a_obj_waterPillar debug work so its not a regression --- include/d/actor/d_a_obj_pdtile.h | 2 +- include/d/actor/d_a_obj_waterPillar.h | 2 +- src/d/actor/d_a_door_push.cpp | 6 ++--- src/d/actor/d_a_obj_avalanche.cpp | 10 +++---- src/d/actor/d_a_obj_bemos.cpp | 6 ++--- src/d/actor/d_a_obj_bmshutter.cpp | 2 +- src/d/actor/d_a_obj_cblock.cpp | 6 ++--- src/d/actor/d_a_obj_cboard.cpp | 8 +++--- src/d/actor/d_a_obj_cwall.cpp | 6 ++--- src/d/actor/d_a_obj_fallobj.cpp | 6 ++--- src/d/actor/d_a_obj_firepillar.cpp | 16 +++++------ src/d/actor/d_a_obj_firepillar2.cpp | 6 ++--- src/d/actor/d_a_obj_kgate.cpp | 6 ++--- src/d/actor/d_a_obj_kjgjs.cpp | 18 ++++++------- src/d/actor/d_a_obj_kshutter.cpp | 6 ++--- src/d/actor/d_a_obj_kwheel00.cpp | 2 +- src/d/actor/d_a_obj_kwheel01.cpp | 4 +-- src/d/actor/d_a_obj_lv4prwall.cpp | 2 +- src/d/actor/d_a_obj_lv6bemos.cpp | 8 +++--- src/d/actor/d_a_obj_lv6bemos2.cpp | 8 +++--- src/d/actor/d_a_obj_magne_arm.cpp | 12 ++++----- src/d/actor/d_a_obj_pdoor.cpp | 10 +++---- src/d/actor/d_a_obj_pdtile.cpp | 18 ++++++------- src/d/actor/d_a_obj_rgate.cpp | 6 ++--- src/d/actor/d_a_obj_smgdoor.cpp | 6 ++--- src/d/actor/d_a_obj_swLight.cpp | 6 ++--- src/d/actor/d_a_obj_sword.cpp | 6 ++--- src/d/actor/d_a_obj_szbridge.cpp | 6 ++--- src/d/actor/d_a_obj_waterPillar.cpp | 39 ++++++++++++++++++--------- src/d/actor/d_a_tag_statue_evt.cpp | 4 +-- 30 files changed, 128 insertions(+), 115 deletions(-) diff --git a/include/d/actor/d_a_obj_pdtile.h b/include/d/actor/d_a_obj_pdtile.h index 7c30fb1e00..36293fd0b8 100644 --- a/include/d/actor/d_a_obj_pdtile.h +++ b/include/d/actor/d_a_obj_pdtile.h @@ -58,7 +58,7 @@ private: /* 0x7BC */ char* mArcName; /* 0x7C0 */ u32 mDzbId; /* 0x7C4 */ u32 mBmdId; - /* 0x7C8 */ Vec* mCullBox; + /* 0x7C8 */ cull_box* mCullBox; /* 0x7CC */ f32 field_0x7cc; /* 0x7D0 */ u8 field_0x7d0; /* 0x7D4 */ int field_0x7d4; diff --git a/include/d/actor/d_a_obj_waterPillar.h b/include/d/actor/d_a_obj_waterPillar.h index bee3c33300..a2eca0ec65 100644 --- a/include/d/actor/d_a_obj_waterPillar.h +++ b/include/d/actor/d_a_obj_waterPillar.h @@ -119,7 +119,7 @@ private: return shape_angle.x & 0xFF; } - s32 getParam(u8 shift, u8 bit) { + s32 getParam(int shift, int bit) { return fopAcM_GetParamBit(this, shift, bit); } diff --git a/src/d/actor/d_a_door_push.cpp b/src/d/actor/d_a_door_push.cpp index 58ffaabb09..6c9868596f 100644 --- a/src/d/actor/d_a_door_push.cpp +++ b/src/d/actor/d_a_door_push.cpp @@ -72,7 +72,7 @@ void daDoorPush_c::setBaseMtx() { static char* l_arcName = "V_OsuDoor"; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-600.0f, 0.0f, -600.0f}, {600.0f, 1000.0f, 600.0f}, }; @@ -88,8 +88,8 @@ int daDoorPush_c::Create() { mIndex = 2; initBaseMtx(); fopAcM_SetMtx(this, mActorMtx); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); mpBgW->SetPushPullCallback((dBgW_Base::PushPull_CallBack)PPCallBack); mpDoorBgW->SetPushPullCallback((dBgW_Base::PushPull_CallBack)PPCallBack2); eventInfo.setArchiveName(l_arcName); diff --git a/src/d/actor/d_a_obj_avalanche.cpp b/src/d/actor/d_a_obj_avalanche.cpp index bbf615e0dc..a1c6488f5f 100644 --- a/src/d/actor/d_a_obj_avalanche.cpp +++ b/src/d/actor/d_a_obj_avalanche.cpp @@ -41,9 +41,9 @@ static char* l_evName = "SNOW_COLLAPSE"; static char* l_staffName = "Obj_ava"; -static f32 l_cull_box[6] = { - -500.0f, -500.0f, -700.0f, - 500.0f, 1000.0f, 700.0f, +static cull_box l_cull_box = { + {-500.0f, -500.0f, -700.0f}, + {500.0f, 1000.0f, 700.0f}, }; int daObjAvalanche_c::Create() { @@ -67,8 +67,8 @@ int daObjAvalanche_c::Create() { } initBaseMtx(); fopAcM_SetMtx(this, mModel->getBaseTRMtx()); - fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], - l_cull_box[4], l_cull_box[5]); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); if (mpBgW2 != 0) { mpBgW2->Move(); } diff --git a/src/d/actor/d_a_obj_bemos.cpp b/src/d/actor/d_a_obj_bemos.cpp index 8a391b6739..aa68a2a6a5 100644 --- a/src/d/actor/d_a_obj_bemos.cpp +++ b/src/d/actor/d_a_obj_bemos.cpp @@ -231,7 +231,7 @@ static char* l_joint_table[5] = { l_head_joint, l_bigGear_joint, l_smallGear0_joint, l_smallGear1_joint, l_smallGear2_joint, }; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-1200.0f, -100.0f, -1200.0f}, {1200.0f, 400.0f, 1200.0f}, }; @@ -287,8 +287,8 @@ int daObjBm_c::Create() { mCyl[i].SetStts(&mStts); } - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); JUTNameTab* joint_name = mpModel->getModelData()->getJointTree().getJointName(); for (int i = 0; i < 5; i++) { for (u16 j = 0; j < mpModel->getModelData()->getJointNum(); j++) { diff --git a/src/d/actor/d_a_obj_bmshutter.cpp b/src/d/actor/d_a_obj_bmshutter.cpp index fcd126dc53..2de8fa71be 100644 --- a/src/d/actor/d_a_obj_bmshutter.cpp +++ b/src/d/actor/d_a_obj_bmshutter.cpp @@ -12,7 +12,7 @@ static const char* l_arcName = "K_saku00"; -static const f32 l_cull_box[6] = {-200.f, -100.f, -200.f, 200.f, 100.f, 200.f}; +static const cull_box l_cull_box = {{-200.f, -100.f, -200.f}, {200.f, 100.f, 200.f}}; static const Vec l_check_area[4] = { -250.0, 0.0, -100.0, // min 200.0, 0.0, -100.0, // unknown diff --git a/src/d/actor/d_a_obj_cblock.cpp b/src/d/actor/d_a_obj_cblock.cpp index 1a3c82d922..a27a36bb3c 100644 --- a/src/d/actor/d_a_obj_cblock.cpp +++ b/src/d/actor/d_a_obj_cblock.cpp @@ -48,7 +48,7 @@ static cXyz l_smokeSetOffset(0.0f, 0.0f, -200.0f); static s32 unused_bss_70 = 0; #endif -static Vec const l_cull_box[2] = { +static cull_box const l_cull_box = { {-250.0f, 0.0f, -450.0f}, {250.0f, 250.0f, 400.0f}, }; @@ -139,8 +139,8 @@ int daObjCBlk_c::Create() { cyls[i].Set(l_cyl_src); cyls[i].SetStts(&stts); } - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); cXyz acStack_40(0.0f, 0.0f, 50.0f); mDoMtx_stack_c::YrotS(current.angle.y); mDoMtx_stack_c::multVec(&acStack_40, &acStack_40); diff --git a/src/d/actor/d_a_obj_cboard.cpp b/src/d/actor/d_a_obj_cboard.cpp index 3f1f2d3d91..0bf662fb78 100644 --- a/src/d/actor/d_a_obj_cboard.cpp +++ b/src/d/actor/d_a_obj_cboard.cpp @@ -26,7 +26,7 @@ static char* l_dzbName[5] = { "ClearB00.dzb", "ClearB01.dzb", "ClearB02.dzb", "ClearB03.dzb", "ClearB04.dzb", }; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-100.0f, -10.0f, -100.0f}, {100.0f, 10.0f, 100.0f}, }; @@ -39,9 +39,9 @@ int daObjBoard_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, field_0x5a8); - fopAcM_setCullSizeBox(this, l_cull_box[0].x * scale.x, l_cull_box[0].y, - l_cull_box[0].z * scale.z, l_cull_box[1].x * scale.x, l_cull_box[1].y, - l_cull_box[1].z * scale.z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x * scale.x, l_cull_box.min.y, + l_cull_box.min.z * scale.z, l_cull_box.max.x * scale.x, l_cull_box.max.y, + l_cull_box.max.z * scale.z); return 1; } diff --git a/src/d/actor/d_a_obj_cwall.cpp b/src/d/actor/d_a_obj_cwall.cpp index 69cffc731b..06d96b3b45 100644 --- a/src/d/actor/d_a_obj_cwall.cpp +++ b/src/d/actor/d_a_obj_cwall.cpp @@ -71,7 +71,7 @@ static char* l_arcName[2] = { "P_L4Cwall", }; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-300.0f, -100.0f, -650.0f}, {300.0f, 500.0f, 300.0f}, }; @@ -139,8 +139,8 @@ int daObjCwall_c::Create() { mCyl2.SetStts(&mStts); mSph.Set(l_sph_src); mSph.SetStts(&mStts); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); cXyz cStack_30(0.0f, 0.0f, 50.0f); mDoMtx_stack_c::YrotS(current.angle.y); mDoMtx_stack_c::multVec(&cStack_30, &cStack_30); diff --git a/src/d/actor/d_a_obj_fallobj.cpp b/src/d/actor/d_a_obj_fallobj.cpp index 706dd2b6f0..0c92f80583 100644 --- a/src/d/actor/d_a_obj_fallobj.cpp +++ b/src/d/actor/d_a_obj_fallobj.cpp @@ -54,7 +54,7 @@ void daObjFallObj_c::setBaseMtx() { static char* l_arcName = "K_drock00"; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-200.0f, -10000.0f, -200.0f}, {200.0f, 600.0f, 200.0f}, }; @@ -74,8 +74,8 @@ int daObjFallObj_c::Create() { mFallTime = getFallTime(); initBaseMtx(); fopAcM_SetMtx(this, mMtx); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); fopAcM_SetGravity(this, -6.0f); mSoundObj.init(¤t.pos, 1); return 1; diff --git a/src/d/actor/d_a_obj_firepillar.cpp b/src/d/actor/d_a_obj_firepillar.cpp index 42a0934c9e..6c32453b01 100644 --- a/src/d/actor/d_a_obj_firepillar.cpp +++ b/src/d/actor/d_a_obj_firepillar.cpp @@ -20,9 +20,9 @@ void daObjFPillar_c::setBaseMtx() { mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); } -static f32 l_cull_box[6] = { - -30.0f, -10.0f, -30.0f, - 30.0f, 60.0f, 30.0f, +static cull_box l_cull_box = { + {-30.0f, -10.0f, -30.0f}, + {30.0f, 60.0f, 30.0f}, }; static dCcD_SrcCps l_cps_src = { @@ -42,12 +42,12 @@ int daObjFPillar_c::Create() { mStts.Init(0, 0xff, this); mCps.Set(l_cps_src); mCps.SetStts(&mStts); - f32 maxy = l_cull_box[4] * scale.y; + f32 maxy = l_cull_box.max.y * scale.y; fopAcM_setCullSizeBox(this, - (l_cull_box[0] * scale.x), - (l_cull_box[1] * scale.y), - (l_cull_box[2] * scale.x), - (l_cull_box[3] * scale.x), + (l_cull_box.min.x * scale.x), + (l_cull_box.min.y * scale.y), + (l_cull_box.min.z * scale.x), + (l_cull_box.max.x * scale.x), maxy, maxy); return 1; diff --git a/src/d/actor/d_a_obj_firepillar2.cpp b/src/d/actor/d_a_obj_firepillar2.cpp index 430fc5d391..cd699e8f3d 100644 --- a/src/d/actor/d_a_obj_firepillar2.cpp +++ b/src/d/actor/d_a_obj_firepillar2.cpp @@ -40,7 +40,7 @@ void daObjFPillar2_c::setBaseMtx() { static char* l_arcName = "Obj_yogan"; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-150.0f, -10.0f, -150.0f}, {150.0f, 1200.0f, 150.0f}, }; @@ -92,8 +92,8 @@ int daObjFPillar2_c::Create() { if (getKind() == KIND_MAGMA_POLE) { mCps.SetAtSpl(dCcG_At_Spl_UNK_0); } - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, l_cull_box[1].y, - l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, + l_cull_box.max.z); fopAcM_SetMtx(this, mMtx); mSoundObj.init(&mSoundPos, 1); if (getKind() == KIND_PIPE_FIRE) { diff --git a/src/d/actor/d_a_obj_kgate.cpp b/src/d/actor/d_a_obj_kgate.cpp index c377aba360..6f74edc5d3 100644 --- a/src/d/actor/d_a_obj_kgate.cpp +++ b/src/d/actor/d_a_obj_kgate.cpp @@ -52,7 +52,7 @@ static u32 const l_gate_heap[] = {0x1940, 0x1940, 0x1940}; static u32 const l_key_heap[] = {0x1000, 0x1000, 0x1000}; -static Vec const l_cull_box[] = { +static cull_box const l_cull_box = { {-300.0f, 0.0f, -350.0f}, {300.0f, 450.0f, 350.0f}, }; @@ -255,8 +255,8 @@ int daObjKGate_c::Create() { } } - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); if (dComIfG_Bgsp().Regist(mpBgW, this)) { #ifdef DEBUG diff --git a/src/d/actor/d_a_obj_kjgjs.cpp b/src/d/actor/d_a_obj_kjgjs.cpp index cf3e76aa82..7c2b458306 100644 --- a/src/d/actor/d_a_obj_kjgjs.cpp +++ b/src/d/actor/d_a_obj_kjgjs.cpp @@ -47,11 +47,11 @@ int daObjKJgjs_c::CreateHeap() { return mpModel != NULL ? 1 : 0; } -static const Vec l_cull_box[4] = { - {-1260.0f, -3050.0f, -1260.0f}, - {1260.0f, 2800.0f, 1260.0f}, - {-76.37f, -10.83f, -78.51}, - {75.52f, 10.95f, 78.06f}, +static const cull_box l_cull_box[2] = { + {{-1260.0f, -3050.0f, -1260.0f}, + {1260.0f, 2800.0f, 1260.0f}}, + {{-76.37f, -10.83f, -78.51}, + {75.52f, 10.95f, 78.06f}}, }; int daObjKJgjs_c::Create() { @@ -59,11 +59,11 @@ int daObjKJgjs_c::Create() { MTXCopy(mMtx[1], mpModel->mBaseTransformMtx); mpBgW->OffRoofRegist(); if (!field_0x60c) { - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, - l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box[0].min.x, l_cull_box[0].min.y, l_cull_box[0].min.z, + l_cull_box[0].max.x, l_cull_box[0].max.y, l_cull_box[0].max.z); } else { - fopAcM_setCullSizeBox(this, l_cull_box[2].x, l_cull_box[2].y, l_cull_box[2].z, - l_cull_box[3].x, l_cull_box[3].y, l_cull_box[3].z); + fopAcM_setCullSizeBox(this, l_cull_box[1].min.x, l_cull_box[1].min.y, l_cull_box[1].min.z, + l_cull_box[1].max.x, l_cull_box[1].max.y, l_cull_box[1].max.z); } return 1; } diff --git a/src/d/actor/d_a_obj_kshutter.cpp b/src/d/actor/d_a_obj_kshutter.cpp index 57e3ecf582..7d2230c1ea 100644 --- a/src/d/actor/d_a_obj_kshutter.cpp +++ b/src/d/actor/d_a_obj_kshutter.cpp @@ -129,8 +129,8 @@ static u32 const l_heap_size[5] = { 0x1300, 0x1300, 0x1300, 0x1300, 0x20D0, }; -static f32 const l_cull_box[6] = { - -450.0f, 0.0f, -50.0f, 450.0f, 700.0f, 150.0f, +static cull_box const l_cull_box = { + {-450.0f, 0.0f, -50.0f}, {450.0f, 700.0f, 150.0f}, }; static char* l_arcName[5] = { @@ -209,7 +209,7 @@ int daObjKshtr_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, mMtx); - fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], l_cull_box[4], l_cull_box[5]); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); if (checkKey() == 1) { eventInfo.setArchiveName(l_arcName[mType]); diff --git a/src/d/actor/d_a_obj_kwheel00.cpp b/src/d/actor/d_a_obj_kwheel00.cpp index 728bbe784b..a0eed328d5 100644 --- a/src/d/actor/d_a_obj_kwheel00.cpp +++ b/src/d/actor/d_a_obj_kwheel00.cpp @@ -82,7 +82,7 @@ static void* searchLv3Water(void* param_0, void* i_this) { static const int l_bmdidx[2] = {4, 4}; -const Vec l_cull_box[4] = { +const Vec l_cull_box[4] = { // cull_box struct not used due to mult later {-830.0f, -830.0f, -2500.0f}, {830.0f, 830.0f, 200.0f}, // Type 0 {-560.0f, -560.0f, -350.0f}, {560.0f, 560.0f, 350.0f} // Type 1 }; diff --git a/src/d/actor/d_a_obj_kwheel01.cpp b/src/d/actor/d_a_obj_kwheel01.cpp index 5d49c98003..da0700171a 100644 --- a/src/d/actor/d_a_obj_kwheel01.cpp +++ b/src/d/actor/d_a_obj_kwheel01.cpp @@ -102,7 +102,7 @@ cPhs__Step daObjKWheel01_c::create1st() { return phase; } -static const Vec l_cull_box[2] = { +static const cull_box l_cull_box = { {-1260.0f, -3050.0f, -1260.0f}, {1260.0f, 2800.0f, 1260.0f} }; @@ -177,7 +177,7 @@ int daObjKWheel01_c::Create() { #endif } - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); return 1; } diff --git a/src/d/actor/d_a_obj_lv4prwall.cpp b/src/d/actor/d_a_obj_lv4prwall.cpp index de524ae7f4..44a554808e 100644 --- a/src/d/actor/d_a_obj_lv4prwall.cpp +++ b/src/d/actor/d_a_obj_lv4prwall.cpp @@ -51,7 +51,7 @@ int daObjLv4PRwall_c::create1st() { return phase_state; } -static const Vec l_cull_box[] = { +static const Vec l_cull_box[] = { // cull_box struct not used due to mult later {-1600.0f, -100.0f, -1600.0f}, {1600.0f, 1437.7f, 1600.0f}, {-1100.04, -60.0f, -1100.5f}, diff --git a/src/d/actor/d_a_obj_lv6bemos.cpp b/src/d/actor/d_a_obj_lv6bemos.cpp index e2e60af6bb..7f600e3300 100644 --- a/src/d/actor/d_a_obj_lv6bemos.cpp +++ b/src/d/actor/d_a_obj_lv6bemos.cpp @@ -110,9 +110,9 @@ void daObjL6Bm_c::setBaseMtx() { static char* l_arcName = "Obj_lv6bm"; -static f32 l_cull_box[6] = { - -200.0f, -100.0f, -200.0f, - 200.0f, 100.0f, 200.0f, +static cull_box l_cull_box = { + {-200.0f, -100.0f, -200.0f}, + {200.0f, 100.0f, 200.0f}, }; static dCcD_SrcCps l_cps_src = { @@ -136,7 +136,7 @@ int daObjL6Bm_c::Create() { field_0x748.Set(l_sph_src); field_0x748.SetStts(&mStts); - fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], l_cull_box[4], l_cull_box[5]); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); J3DJoint* neckJnt = mBeamosModel->getModelData()->getJointNodePointer(1); if (neckJnt != NULL) { diff --git a/src/d/actor/d_a_obj_lv6bemos2.cpp b/src/d/actor/d_a_obj_lv6bemos2.cpp index 38558229f4..05763a1495 100644 --- a/src/d/actor/d_a_obj_lv6bemos2.cpp +++ b/src/d/actor/d_a_obj_lv6bemos2.cpp @@ -128,9 +128,9 @@ static char* l_joint_table[5] = { l_smallGear2_joint, }; -static f32 l_cull_box[6] = { - -1200.0f, -100.0f, -1200.0f, - 1200.0f, 400.0f, 1200.0f, +static cull_box l_cull_box = { + {-1200.0f, -100.0f, -1200.0f}, + {1200.0f, 400.0f, 1200.0f}, }; static dCcD_SrcSph l_sph_src = { @@ -181,7 +181,7 @@ int daObjLv6Bm_c::Create() { field_0x87c.Set(l_cyl_src); field_0x87c.SetStts(&mStts); - fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], l_cull_box[4], l_cull_box[5]); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); JUTNameTab* name = mBeamosModel->getModelData()->getJointTree().getJointName(); for (int i = 0; i < 5; i++) { diff --git a/src/d/actor/d_a_obj_magne_arm.cpp b/src/d/actor/d_a_obj_magne_arm.cpp index 8037b46713..43d55c53a8 100644 --- a/src/d/actor/d_a_obj_magne_arm.cpp +++ b/src/d/actor/d_a_obj_magne_arm.cpp @@ -147,9 +147,9 @@ static void dummyStrings() { DEAD_STRING("D_MN54"); } -static Vec l_cull_box[2] = {{-500.0f, -3000.0f, -500.0f}, {500.0f, 3000.0f, 2500.0f}}; +static cull_box l_cull_box = {{-500.0f, -3000.0f, -500.0f}, {500.0f, 3000.0f, 2500.0f}}; -static Vec l_cull_box2[2] = {{-500.0f, -4000.0f, -500.0f}, {500.0f, 3000.0f, 2500.0f}}; +static cull_box l_cull_box2 = {{-500.0f, -4000.0f, -500.0f}, {500.0f, 3000.0f, 2500.0f}}; static Vec const l_offsetB = {-150.0f, 1200.0f, 0.0f}; // unused @@ -200,11 +200,11 @@ int daObjMarm_c::Create() { fopAcM_GetSpeed_p(this), 0, 0); if (mMoveType == MOVETYPE_D_e) { - fopAcM_setCullSizeBox(this, l_cull_box2[0].x, l_cull_box2[0].y, l_cull_box2[0].z, - l_cull_box2[1].x, l_cull_box2[1].y, l_cull_box2[1].z); + fopAcM_setCullSizeBox(this, l_cull_box2.min.x, l_cull_box2.min.y, l_cull_box2.min.z, + l_cull_box2.max.x, l_cull_box2.max.y, l_cull_box2.max.z); } else { - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, - l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, + l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); } fopAcM_setCullSizeFar(this, 10.0f); diff --git a/src/d/actor/d_a_obj_pdoor.cpp b/src/d/actor/d_a_obj_pdoor.cpp index cbfd26c8c8..2938cbf4b7 100644 --- a/src/d/actor/d_a_obj_pdoor.cpp +++ b/src/d/actor/d_a_obj_pdoor.cpp @@ -53,9 +53,9 @@ void daObjPDoor_c::setBaseMtx() { static char* l_arcName = "V_OsuDoor"; -static f32 l_cull_box[6] = { - 0.0f, 0.0f, -600.0f, - 600.0f, 1000.0f, 600.0f, +static cull_box l_cull_box = { + {0.0f, 0.0f, -600.0f}, + {600.0f, 1000.0f, 600.0f}, }; int daObjPDoor_c::Create() { @@ -76,8 +76,8 @@ int daObjPDoor_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, mModel->getBaseTRMtx()); mpBgW->SetPushPullCallback(PPCallBack); - fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], - l_cull_box[4], l_cull_box[5]); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); return 1; } diff --git a/src/d/actor/d_a_obj_pdtile.cpp b/src/d/actor/d_a_obj_pdtile.cpp index a978454723..4bef0fb00e 100644 --- a/src/d/actor/d_a_obj_pdtile.cpp +++ b/src/d/actor/d_a_obj_pdtile.cpp @@ -26,7 +26,7 @@ static u32 l_bmdidx4[2] = { 5, 4, }; -static Vec l_cull_box4[2][2] = { +static cull_box l_cull_box4[2] = { {{-50.0f, -100.0f, -50.0f}, {50.0f, 20.49f, 50.0f}}, {{-160.0f, -460.0f, -160.0f}, {160.0f, 20.0f, 160.0f}}, }; @@ -37,7 +37,7 @@ static u32 l_dzbidx7 = 7; static u32 l_bmdidx7 = 4; -static Vec l_cull_box7[2] = { +static cull_box l_cull_box7 = { {-200.0f, -700.0f, -200.0f}, {200.0f, 50.0f, 200.0f}, }; @@ -48,7 +48,7 @@ static u32 l_dzbidx9 = 7; static u32 l_bmdidx9 = 4; -static Vec l_cull_box9[2] = { +static cull_box l_cull_box9 = { {-200.0f, -650.0f, -200.0f}, {200.0f, 50.0f, 200.0f}, }; @@ -59,25 +59,25 @@ int daObjPDtile_c::create1st() { mArcName = l_arcName9; mDzbId = l_dzbidx9; mBmdId = l_bmdidx9; - mCullBox = l_cull_box9; + mCullBox = &l_cull_box9; field_0x7cc = 1500.0f; } else if (mType == TYPE_2) { mArcName = l_arcName7; mDzbId = l_dzbidx7; mBmdId = l_bmdidx7; - mCullBox = l_cull_box7; + mCullBox = &l_cull_box7; field_0x7cc = 600.0f; } else if (mType == TYPE_0) { mArcName = l_arcName4; mDzbId = l_dzbidx4[0]; mBmdId = l_bmdidx4[0]; - mCullBox = l_cull_box4[0]; + mCullBox = &l_cull_box4[0]; field_0x7cc = 450.0f; } else { mArcName = l_arcName4; mDzbId = l_dzbidx4[1]; mBmdId = l_bmdidx4[1]; - mCullBox = l_cull_box4[1]; + mCullBox = &l_cull_box4[1]; field_0x7cc = 450.0f; } int rv = dComIfG_resLoad(this, mArcName); @@ -203,8 +203,8 @@ int daObjPDtile_c::Create() { mModel->setBaseTRMtx(field_0x5d8); fopAcM_SetMtx(this, field_0x5d8); fopAcM_setCullSizeBox(this, - mCullBox[0].x, mCullBox[0].y, mCullBox[0].z, - mCullBox[1].x, mCullBox[1].y, mCullBox[1].z); + mCullBox->min.x, mCullBox->min.y, mCullBox->min.z, + mCullBox->max.x, mCullBox->max.y, mCullBox->max.z); mpBgW->SetRideCallback(rideCallBack); field_0x610 = 0; field_0x614 = 0; diff --git a/src/d/actor/d_a_obj_rgate.cpp b/src/d/actor/d_a_obj_rgate.cpp index 58b762528e..232ff2e225 100644 --- a/src/d/actor/d_a_obj_rgate.cpp +++ b/src/d/actor/d_a_obj_rgate.cpp @@ -67,7 +67,7 @@ static int nodeCallBack(J3DJoint* i_joint, int param_1) { return 1; } -static const Vec l_cull_box[2] = { +static const cull_box l_cull_box = { {-400.0f, 0.0f, -400.0f}, {400.0f, 450.0f, 400.0f}, }; @@ -235,8 +235,8 @@ int daObjRgate_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, field_0xb14); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); if (dComIfG_Bgsp().Regist(mpBgW, this)) { #ifdef DEBUG diff --git a/src/d/actor/d_a_obj_smgdoor.cpp b/src/d/actor/d_a_obj_smgdoor.cpp index 9ed31d198c..967ffaeba7 100644 --- a/src/d/actor/d_a_obj_smgdoor.cpp +++ b/src/d/actor/d_a_obj_smgdoor.cpp @@ -87,13 +87,13 @@ static char* l_eventName[2] = { "OLD_DOOR_IN", }; -static Vec l_cull_box[2] = {{-200.0f, 0.0f, -50.0f}, {200.0f, 400.0f, 50.0f}}; +static cull_box l_cull_box = {{-200.0f, 0.0f, -50.0f}, {200.0f, 400.0f, 50.0f}}; int daObjSmgDoor_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, field_0x5b8); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); attention_info.position.y += 150.0f; eyePos.y += 150.0f; attention_info.flags = fopAc_AttnFlag_DOOR_e; diff --git a/src/d/actor/d_a_obj_swLight.cpp b/src/d/actor/d_a_obj_swLight.cpp index ea77efa68e..445b577131 100644 --- a/src/d/actor/d_a_obj_swLight.cpp +++ b/src/d/actor/d_a_obj_swLight.cpp @@ -80,7 +80,7 @@ const static dCcD_SrcSph l_sph_src_tg = { static char* l_arcName = "Obj_l8sw0"; -static Vec l_cull_box[2] = {{ +static cull_box l_cull_box = {{ -500.0f, 0.0f, -500.0f, @@ -132,8 +132,8 @@ int daObjSwLight_c::Create() { mTgSph[1].SetTgType(0x200); mCyl.Set(l_cyl_src); mCyl.SetStts(&mStts); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); field_0xae8 = 0xffff; JUTNameTab* name = mpModel->getModelData()->getMaterialTable().getMaterialName(); diff --git a/src/d/actor/d_a_obj_sword.cpp b/src/d/actor/d_a_obj_sword.cpp index 7a619b7c57..343c00ebcc 100644 --- a/src/d/actor/d_a_obj_sword.cpp +++ b/src/d/actor/d_a_obj_sword.cpp @@ -10,7 +10,7 @@ #include "d/d_com_inf_game.h" #include "d/d_item_data.h" -static Vec l_cull_box[2] = {{-200.0f, 0.0f, -200.0f}, {200.0f, 100.0f, 200.0f}}; +static cull_box l_cull_box = {{-200.0f, 0.0f, -200.0f}, {200.0f, 100.0f, 200.0f}}; void daObjSword_c::initBaseMtx() { mpModel->setBaseScale(scale); @@ -26,8 +26,8 @@ void daObjSword_c::setBaseMtx() { int daObjSword_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); fopAcM_OnCarryType(this, fopAcM_CARRY_UNK_30); show(); execute(); diff --git a/src/d/actor/d_a_obj_szbridge.cpp b/src/d/actor/d_a_obj_szbridge.cpp index d185b9ac2f..cf3e70897e 100644 --- a/src/d/actor/d_a_obj_szbridge.cpp +++ b/src/d/actor/d_a_obj_szbridge.cpp @@ -11,7 +11,7 @@ static void rideCallback(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2 static_cast(param_1)->rideActor(param_2); } -static const Vec l_cull_box[2] = { +static const cull_box l_cull_box = { {-310.0f, -30.0f, -760.0f}, {310.0f, 360.0f, 760.0f}, }; @@ -104,8 +104,8 @@ int daObjSZbridge_c::Create() { mpModel->setBaseTRMtx(field_0x5d8); fopAcM_SetMtx(this, field_0x5d8); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, - l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, + l_cull_box.max.y, l_cull_box.max.z); for (int i = 0; i < 2; i++) { field_0x618[i] = -1; diff --git a/src/d/actor/d_a_obj_waterPillar.cpp b/src/d/actor/d_a_obj_waterPillar.cpp index 66348849db..719a04db84 100644 --- a/src/d/actor/d_a_obj_waterPillar.cpp +++ b/src/d/actor/d_a_obj_waterPillar.cpp @@ -92,7 +92,7 @@ int daWtPillar_c::CreateHeap() { return 1; } -Vec l_cull_box[2] = { +cull_box l_cull_box = { {-30.0f, -10.0f, -30.0f}, {30.0f, 60.0f, 30.0f} }; @@ -134,25 +134,27 @@ cPhs__Step daWtPillar_c::create() { mCapsuleCollider.SetStts(&mStts); //! @bug maxY is used as maxZ for setting cull size box, making it larger than intended - const f32 minX = l_cull_box[0].x * scale.x; - const f32 minY = l_cull_box[0].y * scale.y; - const f32 minZ = l_cull_box[0].z * scale.x; - const f32 maxX = l_cull_box[1].x * scale.x; - const f32 maxY = l_cull_box[1].y * scale.y; + const f32 minX = l_cull_box.min.x * scale.x; + const f32 minY = l_cull_box.min.y * scale.y; + const f32 minZ = l_cull_box.min.z * scale.x; + const f32 maxX = l_cull_box.max.x * scale.x; + const f32 maxY = l_cull_box.max.y * scale.y; + const f32 maxZ = l_cull_box.max.z * scale.x; fopAcM_setCullSizeBox(this, minX, minY, minZ, maxX, maxY, maxY); mAcchCir.SetWall(150.0f, 5.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed, 0, 0); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), 0, 0); mAcch.ClrWaterNone(); mAcch.SetWaterCheckOffset(10000.0f); mAcch.OnLineCheckNone(); - mStalactiteShouldStartShaking = mIsCarryingStalactite = false; + mIsCarryingStalactite = false; + mStalactiteShouldStartShaking = 0; mSwitchNo = getParam(0, 8); mType = getParam(8, 4); - mMaxHeight = getParam(27, 6) * 100.0f; + mMaxHeight = getParam(27, 5) * 100.0f; // "== Maximum height %f ==\n" OS_REPORT("== 最大の高さ %f ==\n", mMaxHeight); @@ -180,16 +182,27 @@ cPhs__Step daWtPillar_c::create() { OS_REPORT("== 水中にある (%f) (%f) type:%d ==\n", mMaxHeight, mRelativeWaterHeight, mType); } - mEffectOscillationAngleStep = mPillarIsPreparingToRise = mStartedRisingOrDoesNotRiseAndFall = field_0xB44 = 0; - mEffectOscillationVerticalOffset.set(0.0f, 0.0f, 0.0f); - mCurrentHeight = mEffectOscillationMinDecay = mEffectOscillationMaxDecay = mEffectOscillationDampingScale = mEffectOscillationAngle = mEffectOscillationAmplitude = 0.0f; + field_0xB44 = 0; + mStartedRisingOrDoesNotRiseAndFall = 0; + mPillarIsPreparingToRise = 0; + mEffectOscillationAngleStep = 0; + mEffectOscillationVerticalOffset.x = 0.0f; + mEffectOscillationVerticalOffset.y = 0.0f; + mEffectOscillationVerticalOffset.z = 0.0f; + mEffectOscillationAmplitude = 0.0f; + mEffectOscillationAngle = 0.0f; + mEffectOscillationDampingScale = 0.0f; + mEffectOscillationMaxDecay = 0.0f; + mEffectOscillationMinDecay = 0.0f; + mCurrentHeight = 0.0f; if(mSwitchNo != 0xFF) { actionSwWaitInit(); } else if(mType == STATIC) { mCurrentHeight = mMaxHeight; - mStartedRisingOrDoesNotRiseAndFall = field_0xB44 = true; + field_0xB44 = true; + mStartedRisingOrDoesNotRiseAndFall = true; actionRockWaitInit(); } else { diff --git a/src/d/actor/d_a_tag_statue_evt.cpp b/src/d/actor/d_a_tag_statue_evt.cpp index cf561f103c..00aacbd199 100644 --- a/src/d/actor/d_a_tag_statue_evt.cpp +++ b/src/d/actor/d_a_tag_statue_evt.cpp @@ -69,7 +69,7 @@ static char* l_evArcName[6] = { "cs_ev_05" // Ruined Theatre }; -static Vec l_cull_box[2] = { +static cull_box l_cull_box = { {-300.0f, -100.0f, -300.0f}, // Min {300.0f, 400.0f, 300.0f} // Max }; @@ -98,7 +98,7 @@ cPhs__Step daTagStatue_c::Create() { initBaseMtx(); fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); - fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x, l_cull_box[1].y, l_cull_box[1].z); + fopAcM_setCullSizeBox(this, l_cull_box.min.x, l_cull_box.min.y, l_cull_box.min.z, l_cull_box.max.x, l_cull_box.max.y, l_cull_box.max.z); char* ev_arc_name = l_evArcName[mSkyCharacterEventBitIdIndex]; From d2d45c58ee0e903293dba031940e257d6db97511 Mon Sep 17 00:00:00 2001 From: Niklas Bauer Date: Tue, 2 Dec 2025 21:44:39 +0100 Subject: [PATCH 07/18] d_a_obj_damcps debug equivalent (#2904) * d_a_obj_damcps initial * d_a_obj_damcps guard * d_a_obj_damcps pr comments --- include/d/actor/d_a_obj_damCps.h | 47 ++++++- src/d/actor/d_a_obj_damCps.cpp | 232 ++++++++++++++++++++++++++++--- 2 files changed, 260 insertions(+), 19 deletions(-) diff --git a/include/d/actor/d_a_obj_damCps.h b/include/d/actor/d_a_obj_damCps.h index e395ed8137..1ec3bcfca8 100644 --- a/include/d/actor/d_a_obj_damCps.h +++ b/include/d/actor/d_a_obj_damCps.h @@ -1,6 +1,51 @@ #ifndef D_A_OBJ_DAMCPS_H #define D_A_OBJ_DAMCPS_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_cc_d.h" +#include "f_op/f_op_actor.h" +#include "m_Do/m_Do_hostIO.h" + +/** + * @ingroup actors-objects + * @class daObjDamCps_c + * @brief Damage Cylinder + * + * @details + * + */ +class daObjDamCps_c : public fopAc_ac_c { +#ifdef DEBUG +public: + daObjDamCps_c() {}; + void initBaseMtx(); + void setBaseMtx(); + int Create(); + int create(); + int execute(); + int draw(); + int _delete(); + u8 getSwNo(); + +private: + /* 0x0570 */ dCcD_Stts mStts; + /* 0x05AC */ dCcD_Cps mCps; + /* 0x06F0 */ cM3dGCpsS mCapsule; + /* 0x070C */ Mtx mMtx; + /* 0x073C */ cXyz mScale; +#endif +}; + +class daObjDamCps_HIO_c : public mDoHIO_entry_c { +public: + daObjDamCps_HIO_c(); + + void genMessage(JORMContext*); + virtual ~daObjDamCps_HIO_c() {}; + + /* 0x08 */ f32 field_0x08; + /* 0x0C */ u8 mAdj; + /* 0x0E */ csXyz mAngle; + /* 0x14 */ cXyz mScale; +}; #endif /* D_A_OBJ_DAMCPS_H */ diff --git a/src/d/actor/d_a_obj_damCps.cpp b/src/d/actor/d_a_obj_damCps.cpp index 238cf71bb0..59f07bf625 100644 --- a/src/d/actor/d_a_obj_damCps.cpp +++ b/src/d/actor/d_a_obj_damCps.cpp @@ -1,25 +1,221 @@ /** * @file d_a_obj_damCps.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_damCps.h" -extern actor_process_profile_definition g_profile_Obj_DamCps = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_DamCps, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(fopAc_ac_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 629, // mPriority - NULL, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType +#ifdef DEBUG +#include "d/d_debug_viewer.h" + +static daObjDamCps_HIO_c l_HIO; + +static cull_box l_cull_box = { + {-20.0f, 0.0f, -20.0f}, + {20.0f, 100.0f, 20.0f}, +}; + +static dCcD_SrcCps l_cps_src = { + { + {0x0, {{0x400, 0x0, 0x1d}, {0x0, 0x0}, 0x11}}, // mObj + {dCcD_SE_SWORD, 0x0, 0x1, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 30.0f}, // mCps + } // mCpsAttr +}; + +daObjDamCps_HIO_c::daObjDamCps_HIO_c() { + field_0x08 = 0.0f; + mAdj = false; + mAngle.setall(0x0); + mScale.setall(1.0f); +} + +void daObjDamCps_HIO_c::genMessage(JORMContext* ctx) { + // Damage Cylinder + ctx->genLabel("ダメージ円柱", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Adjustment + ctx->genCheckBox("調整", &mAdj, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // X Angle + ctx->genSlider("X角度", &mAngle.x, -0x7fff, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Y Angle + ctx->genSlider("Y角度", &mAngle.y, -0x7fff, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // X Scale + ctx->genSlider("Xスケール", &mScale.x, 0.0f, 25.5f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Y Scale + ctx->genSlider("Yスケール", &mScale.y, 0.0f, 25.5f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); +} + +void daObjDamCps_c::initBaseMtx() { + mScale = scale; + setBaseMtx(); +} + +void daObjDamCps_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + MTXCopy(mDoMtx_stack_c::get(), mMtx); +} + +int daObjDamCps_c::Create() { + cXyz start = cXyz(0.0f, 0.0f, 0.0f); + cXyz end = cXyz(0.0f, 100.0f, 0.0f); + f32 radius = scale.x * 30.0f; + end.y *= scale.y; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::multVec(&start, &start); + mDoMtx_stack_c::multVec(&end, &end); + + mCapsule.mStart = start; + mCapsule.mEnd = end; + mCapsule.mRadius = radius; + + mCps.cM3dGCps::Set(mCapsule); + mCps.CalcAtVec(); + + initBaseMtx(); + fopAcM_SetMtx(this, mMtx); + + mStts.Init(0xff, 0xff, this); + mCps.Set(l_cps_src); + mCps.SetStts(&mStts); + + fopAcM_setCullSizeBox(this, l_cull_box.min.x * scale.x, l_cull_box.min.y * scale.y, + l_cull_box.min.z * scale.x, l_cull_box.max.x * scale.x, + l_cull_box.max.y * scale.y, l_cull_box.max.z * scale.x); + return 1; +} + +int daObjDamCps_c::create() { + fopAcM_ct(this, daObjDamCps_c); + + if (!Create()) { + return cPhs_ERROR_e; + } + + l_HIO.entryHIO("ダメージ円柱"); // Damage Cylinder + + return cPhs_COMPLEATE_e; +} + +int daObjDamCps_c::execute() { + if (l_HIO.mAdj) { + shape_angle.x = l_HIO.mAngle.x; + shape_angle.y = l_HIO.mAngle.y; + scale.x = l_HIO.mScale.x; + scale.y = l_HIO.mScale.y; + } else { + shape_angle.x = home.angle.x; + shape_angle.y = home.angle.y; + scale.x = mScale.x; + scale.y = mScale.y; + } + + if (!fopAcM_isSwitch(this, getSwNo())) { + cXyz start = cXyz(0.0f, 0.0f, 0.0f); + cXyz end = cXyz(0.0f, 100.0f, 0.0f); + f32 radius = scale.x * 30.0f; + end.y *= scale.y; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::multVec(&start, &start); + mDoMtx_stack_c::multVec(&end, &end); + + mCapsule.mStart = start; + mCapsule.mEnd = end; + mCapsule.mRadius = radius; + + mCps.cM3dGCps::Set(mCapsule); + dComIfG_Ccsp()->Set(&mCps); + } + + setBaseMtx(); + + return 1; +} + +u8 daObjDamCps_c::getSwNo() { + return fopAcM_GetParamBit(this, 0, 8); +} + +int daObjDamCps_c::draw() { + Mtx mtx; + GXColor color = (GXColor){0xff, 0x00, 0x00, 0x80}; + + if (fopAcM_isSwitch(this, getSwNo())) { + return 1; + } + + mDoMtx_stack_c::transS(mCps.GetStart()); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::scaleM(scale.x * 30.0f, scale.y * 50.0f, scale.x * 30.0f); + mDoMtx_stack_c::transM(0.0f, 1.0f, 0.0f); + mDoMtx_stack_c::XrotM(0x4000); + MTXCopy(mDoMtx_stack_c::get(), mtx); + dDbVw_drawCylinderMXlu(mtx, color, 1); + + return 1; +} + +int daObjDamCps_c::_delete() { + l_HIO.removeHIO(); + return 1; +} + +static int daObjDamCps_Draw(daObjDamCps_c* i_this) { + return i_this->draw(); +} + +static int daObjDamCps_Execute(daObjDamCps_c* i_this) { + return i_this->execute(); +} + +static int daObjDamCps_Delete(daObjDamCps_c* i_this) { + fopAcM_RegisterDeleteID(i_this, "DamCps"); + return i_this->_delete(); +} + +static int daObjDamCps_Create(fopAc_ac_c* i_this) { + fopAcM_RegisterCreateID(daObjDamCps_c, i_this, "DamCps"); + return a_this->create(); +} + +static actor_method_class l_daObjDamCps_Method = { + (process_method_func)daObjDamCps_Create, (process_method_func)daObjDamCps_Delete, + (process_method_func)daObjDamCps_Execute, (process_method_func)NULL, + (process_method_func)daObjDamCps_Draw, +}; +#endif + +extern actor_process_profile_definition g_profile_Obj_DamCps = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_DamCps, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjDamCps_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 629, // mPriority +#ifdef DEBUG + &l_daObjDamCps_Method, // sub_method +#else + NULL, // sub_method +#endif + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType }; From 9a69fa38c720fb118bbaa4862dda3b313e360764 Mon Sep 17 00:00:00 2001 From: Niklas Bauer Date: Wed, 3 Dec 2025 00:33:29 +0100 Subject: [PATCH 08/18] d_a_obj_brakeeff debug equivalent (#2906) * d_a_obj_brakeeff fmt * d_a_obj_brakeeff debug equivalent --- include/d/actor/d_a_obj_brakeeff.h | 3 +- src/d/actor/d_a_obj_brakeeff.cpp | 269 +++++++++++++++-------------- 2 files changed, 141 insertions(+), 131 deletions(-) diff --git a/include/d/actor/d_a_obj_brakeeff.h b/include/d/actor/d_a_obj_brakeeff.h index 758385dc53..2cf50e8c86 100644 --- a/include/d/actor/d_a_obj_brakeeff.h +++ b/include/d/actor/d_a_obj_brakeeff.h @@ -1,10 +1,9 @@ #ifndef D_A_OBJ_BRAKEEFF_H #define D_A_OBJ_BRAKEEFF_H -#include "f_op/f_op_actor_mng.h" #include "SSystem/SComponent/c_phase.h" #include "d/d_cc_d.h" -#include "mtx.h" +#include "f_op/f_op_actor.h" class J3DModel; class mDoExt_brkAnm; diff --git a/src/d/actor/d_a_obj_brakeeff.cpp b/src/d/actor/d_a_obj_brakeeff.cpp index 3599b77683..553c731e48 100644 --- a/src/d/actor/d_a_obj_brakeeff.cpp +++ b/src/d/actor/d_a_obj_brakeeff.cpp @@ -1,100 +1,90 @@ /** * @file d_a_obj_brakeeff.cpp - * -*/ + * + */ -#include "d/dolzel_rel.h" // IWYU pragma: keep +#include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_brakeeff.h" -#include "d/d_kankyo.h" -#include "m_Do/m_Do_ext.h" -#include "m_Do/m_Do_mtx.h" -#include "d/d_com_inf_game.h" #include "d/d_bg_s.h" #include "d/d_bg_w.h" -#include "dolphin/mtx.h" -#include "d/d_com_inf_game.h" #include "d/d_cc_uty.h" - -//Particle IDS -u16 e_name[5] = { - 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -//model data per effect type -u32 bef_bmd[2] = { - 5, - 6, -}; - -//J3DAnmTevRegKey per effect type -u32 bef_brk[2] = { - 9, - 10, -}; +#include "d/d_com_inf_game.h" +#include "d/d_kankyo.h" +#include "d/d_s_play.h" +#include "m_Do/m_Do_ext.h" +#include "m_Do/m_Do_mtx.h" int daObj_Brakeeff_Draw(obj_brakeeff_class* i_this) { + fopAc_ac_c* a_this = static_cast(i_this); J3DModel* model = i_this->mpModel; - g_env_light.settingTevStruct(64, &i_this->current.pos, &i_this->tevStr); - g_env_light.setLightTevColorType_MAJI(model->mModelData, &i_this->tevStr); + g_env_light.settingTevStruct(64, &a_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr); i_this->mpBrk->entry(model->getModelData()); mDoExt_modelUpdateDL(model); return 1; } -void obj_brakeeff_1(obj_brakeeff_class* i_this) { - cXyz pos (i_this->current.pos); - cXyz misc_vector(1.0f, 1.0f, 1.0f); +// Particle IDS +u16 e_name[5] = {0x00, 0x00, 0x00, 0x00, 0x00}; - if(i_this->mEffectType == 0){ - pos.y += 75.0f; - } - else if(i_this->mEffectType == 1){ - pos.y += 50.0f; +void obj_brakeeff_1(obj_brakeeff_class* i_this) { + fopAc_ac_c* a_this = static_cast(i_this); + cXyz pos; + cXyz misc_vector; + pos = a_this->current.pos; + misc_vector.set(1.0f, 1.0f, 1.0f); + + if (i_this->mEffectType == 0) { + pos.y += TREG_F(5) + 75.0f; + } else if (i_this->mEffectType == 1) { + pos.y += TREG_F(6) + 50.0f; misc_vector.set(0.56f, 0.56f, 0.56f); } switch (i_this->mMiscTimer3) { - default: - return; - case 0: - i_this->mMiscTimer3 = 1; - i_this->mMiscTimers[0] = 60; - break; - case 1: - break; - } + case 0: + i_this->mMiscTimer3 = 1; + i_this->mMiscTimers[0] = 60; + // [[fallthrough]]; + case 1: + for (int i = 0; i < 2; i++) { + i_this->mRuntimeParticleIds[i] = + dComIfGp_particle_set(i_this->mRuntimeParticleIds[i], e_name[i], &pos, + &a_this->current.angle, &misc_vector); + } - for(int i = 0; i < 2; i++){ - i_this->mRuntimeParticleIds[i] = dComIfGp_particle_set(i_this->mRuntimeParticleIds[i], e_name[i],&pos, &i_this->current.angle, &misc_vector); - } + if (i_this->mMiscTimers[0] == 0) { + i_this->mDCcD_Sph.SetC(pos); + dComIfG_Ccsp()->Set(&i_this->mDCcD_Sph); - if(i_this->mMiscTimers[0] == 0){ - i_this->mDCcD_Sph.SetC(pos); - dComIfG_Ccsp()->Set(&i_this->mDCcD_Sph); + if (i_this->mDCcD_Sph.ChkTgHit()) { + i_this->mMiscTimer3 = 2; - if(i_this->mDCcD_Sph.ChkTgHit()){ - i_this->mMiscTimer3 = 2; + dCcU_AtInfo atInfo; - dCcU_AtInfo atInfo; + atInfo.mpCollider = i_this->mDCcD_Sph.GetTgHitObj(); + at_power_check(&atInfo); - atInfo.mpCollider = i_this->mDCcD_Sph.GetTgHitObj(); - at_power_check(&atInfo); + cXyz result = a_this->current.pos - atInfo.mpActor->current.pos; + a_this->current.angle.y = cM_atan2s(result.x, result.z); - cXyz result = i_this->current.pos - atInfo.mpActor->current.pos; - i_this->current.angle.y = cM_atan2s(result.x, result.z); - - for(int i = 2; i < 5; i++){ - dComIfGp_particle_set(e_name[i], &pos, &i_this->current.angle, &misc_vector); + for (int i = 2; i < 5; i++) { + dComIfGp_particle_set(e_name[i], &pos, &a_this->current.angle, &misc_vector); + } + fopAcM_delete(a_this); } - fopAcM_delete(i_this); } } } void action(obj_brakeeff_class* i_this) { - switch (i_this->mMiscTimer2){ + fopAc_ac_c* a_this = static_cast(i_this); + cXyz stack1; + cXyz stack2; + + switch (i_this->mMiscTimer2) { case 0: obj_brakeeff_1(i_this); break; @@ -102,20 +92,21 @@ void action(obj_brakeeff_class* i_this) { } int daObj_Brakeeff_Execute(obj_brakeeff_class* i_this) { + fopAc_ac_c* a_this = static_cast(i_this); i_this->mMiscTimer1++; - for(int i = 0; i < 2; i++) { - if(i_this->mMiscTimers[i] != 0){ + for (int i = 0; i < 2; i++) { + if (i_this->mMiscTimers[i] != 0) { i_this->mMiscTimers[i]--; } } action(i_this); - mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z); - mDoMtx_stack_c::YrotM(i_this->shape_angle.y); - mDoMtx_stack_c::XrotM(i_this->shape_angle.x); - mDoMtx_stack_c::ZrotM(i_this->shape_angle.z); + mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y, a_this->current.pos.z); + mDoMtx_stack_c::YrotM((s16)a_this->shape_angle.y); + mDoMtx_stack_c::XrotM((s16)a_this->shape_angle.x); + mDoMtx_stack_c::ZrotM(a_this->shape_angle.z); i_this->mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); MTXCopy(mDoMtx_stack_c::get(), i_this->mStoredMatrix); @@ -130,45 +121,61 @@ int daObj_Brakeeff_IsDelete(obj_brakeeff_class* i_this) { } int daObj_Brakeeff_Delete(obj_brakeeff_class* i_this) { + fopAc_ac_c* a_this = static_cast(i_this); + fopAcM_RegisterDeleteID(i_this, "Obj_Brakeeff"); dComIfG_resDelete(&i_this->mRequestOfPhase, "Obj_Bef"); dComIfG_Bgsp().Release(i_this->mpDBgW); return 1; } +// model data per effect type +u32 bef_bmd[2] = { + 5, + 6, +}; + +// J3DAnmTevRegKey per effect type +u32 bef_brk[2] = { + 9, + 10, +}; + int useHeapInit(fopAc_ac_c* i_this) { obj_brakeeff_class* a_this = static_cast(i_this); - J3DModelData* modelData = static_cast(dComIfG_getObjectRes("Obj_Bef", bef_bmd[a_this->mEffectType])); + J3DModelData* modelData = + static_cast(dComIfG_getObjectRes("Obj_Bef", bef_bmd[a_this->mEffectType])); - a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000,0x11000084); + JUT_ASSERT(339, modelData != 0); + + a_this->mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); if (a_this->mpModel == NULL) { return 0; } a_this->mpBrk = new mDoExt_brkAnm(); - - if(!a_this->mpBrk){ + if (!a_this->mpBrk) { return 0; } - J3DAnmTevRegKey* tev_anm = static_cast(dComIfG_getObjectRes("Obj_Bef", bef_brk[a_this->mEffectType])); - - if (!a_this->mpBrk->init(a_this->mpModel->getModelData(), tev_anm, 1, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1)) { + if (!a_this->mpBrk->init( + a_this->mpModel->getModelData(), + (J3DAnmTevRegKey*)dComIfG_getObjectRes("Obj_Bef", bef_brk[a_this->mEffectType]), 1, + J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1)) + { return 0; } a_this->mpDBgW = new dBgW(); - - if(!a_this->mpDBgW){ + if (!a_this->mpDBgW) { return 0; } - cBgD_t* cbgd = (cBgD_t *)dComIfG_getObjectRes("Obj_Bef", 13); - - u32 res = a_this->mpDBgW->Set(cbgd, 1, &a_this->mStoredMatrix); - if(res == 1){ + if (a_this->mpDBgW->Set((cBgD_t*)dComIfG_getObjectRes("Obj_Bef", 13), 1, + &a_this->mStoredMatrix) == 1) + { return 0; } @@ -176,67 +183,71 @@ int useHeapInit(fopAc_ac_c* i_this) { return 1; } -int daObj_Brakeeff_Create(fopAc_ac_c* i_this) { - static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x20, 0x11}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr - }; +int daObj_Brakeeff_Create(fopAc_ac_c* a_this) { + obj_brakeeff_class* i_this = static_cast(a_this); + fopAcM_ct(i_this, obj_brakeeff_class); - obj_brakeeff_class* a_this = static_cast(i_this); + int res_load_result = dComIfG_resLoad(&i_this->mRequestOfPhase, "Obj_Bef"); + if (res_load_result == cPhs_COMPLEATE_e) { + OS_REPORT("OBJ_BRAKEEFF PARAM %x\n", fopAcM_GetParam(a_this)); - fopAcM_ct(a_this, obj_brakeeff_class); + i_this->mEffectType = fopAcM_GetParam(a_this); + + OS_REPORT("OBJ_BRAKEEFF//////////////OBJ_BRAKEEFF SET 1 !!\n"); - int res_load_result = dComIfG_resLoad(&a_this->mRequestOfPhase, "Obj_Bef"); + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x4b000)) { + OS_REPORT("//////////////OBJ_BRAKEEFF SET NON !!\n"); + return cPhs_ERROR_e; + } - if(res_load_result == cPhs_COMPLEATE_e){ - a_this->mEffectType = fopAcM_GetParam(i_this); + OS_REPORT("//////////////OBJ_BRAKEEFF SET 2 !!\n"); - bool is_heap_set = fopAcM_entrySolidHeap(i_this, useHeapInit,0x4b000); + if (dComIfG_Bgsp().Regist(i_this->mpDBgW, i_this)) { + return cPhs_ERROR_e; + } - if(!is_heap_set) return cPhs_ERROR_e; + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x20, 0x11}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr + }; - bool is_registered = dComIfG_Bgsp().Regist(a_this->mpDBgW, i_this); - if(is_registered) return cPhs_ERROR_e; + fopAcM_SetMtx(a_this, i_this->mpModel->getBaseTRMtx()); + i_this->mDCcD_Stts.Init(255, 0, a_this); + i_this->mDCcD_Sph.Set(cc_sph_src); + i_this->mDCcD_Sph.SetStts(&i_this->mDCcD_Stts); - fopAcM_SetMtx(i_this, a_this->mpModel->getBaseTRMtx()); - a_this->mDCcD_Stts.Init(255, 0, i_this); - a_this->mDCcD_Sph.Set(cc_sph_src); - a_this->mDCcD_Sph.SetStts(&a_this->mDCcD_Stts); - - daObj_Brakeeff_Execute(a_this); + daObj_Brakeeff_Execute(i_this); } + return res_load_result; } - actor_method_class l_daObj_Brakeeff_Method = { - (process_method_func)daObj_Brakeeff_Create, - (process_method_func)daObj_Brakeeff_Delete, - (process_method_func)daObj_Brakeeff_Execute, - (process_method_func)daObj_Brakeeff_IsDelete, + (process_method_func)daObj_Brakeeff_Create, (process_method_func)daObj_Brakeeff_Delete, + (process_method_func)daObj_Brakeeff_Execute, (process_method_func)daObj_Brakeeff_IsDelete, (process_method_func)daObj_Brakeeff_Draw, }; extern actor_process_profile_definition g_profile_OBJ_BEF = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_OBJ_BEF, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(obj_brakeeff_class), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 39, // mPriority - &l_daObj_Brakeeff_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_7_e, // cullType - }; + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_OBJ_BEF, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(obj_brakeeff_class), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 39, // mPriority + &l_daObj_Brakeeff_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_7_e, // cullType +}; From cabc7039696f73e8216b629b79b3363f2e91865c Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 2 Dec 2025 18:38:12 -0500 Subject: [PATCH 09/18] J3DShapeDraw and J3DSkinDeform OK (#2908) --- configure.py | 4 +- .../J3DGraphAnimator/J3DSkinDeform.cpp | 6 +-- src/JSystem/J3DGraphBase/J3DShapeDraw.cpp | 42 ++++++++++--------- src/JSystem/JMath/JMATrigonometric.cpp | 6 +-- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/configure.py b/configure.py index 6595502427..c916413955 100755 --- a/configure.py +++ b/configure.py @@ -1235,7 +1235,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphBase/J3DTexture.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphBase/J3DPacket.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphBase/J3DShapeMtx.cpp"), - Object(NonMatching, "JSystem/J3DGraphBase/J3DShapeDraw.cpp"), + Object(MatchingFor(ALL_GCN, "ShieldD"), "JSystem/J3DGraphBase/J3DShapeDraw.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphBase/J3DShape.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphBase/J3DMaterial.cpp"), Object(Equivalent, "JSystem/J3DGraphBase/J3DMatBlock.cpp"), # virtual function order @@ -1254,7 +1254,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DModel.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DAnimation.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"), - Object(NonMatching, "JSystem/J3DGraphAnimator/J3DSkinDeform.cpp"), + Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DSkinDeform.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DCluster.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DJoint.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp"), diff --git a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index 79234158a9..17112fb93c 100644 --- a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -347,10 +347,6 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) { return kJ3DError_Success; } -// NONMATCHING - instruction ordering/optimization issue, matches debug -// the compiler needs to delay adding +3 to dl until the end of the while loop for the function to match -// but instead it puts the +3 at the start of the for loop and reworks the other instructions -// can get a 99.93% match on retail by moving where dl is incremented, but it seems fake as it breaks debug, and introduces an operand swap on src void J3DSkinDeform::changeFastSkinDL(J3DModelData* pModelData) { J3D_ASSERT_NULLPTR(740, pModelData != NULL); for (u16 i = 0; i < pModelData->getShapeNum(); i++) { @@ -389,7 +385,7 @@ void J3DSkinDeform::changeFastSkinDL(J3DModelData* pModelData) { memcpy(dst, src + 1, (int)(vtxSize - 1)); // The -1 is to remove GX_VA_PNMTXIDX dst += (int)(vtxSize - 1); } - dl += vtxSize * vtxCount; + dl = (u8*)dl + vtxSize * vtxCount; } int dlistSize = ((int)dst - (int)displayListStart + 0x1f) & ~0x1f; diff --git a/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp index fcfec6e2a4..dc00a46f9a 100644 --- a/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp +++ b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -8,55 +8,57 @@ u32 J3DShapeDraw::countVertex(u32 stride) { u32 count = 0; - uintptr_t dlStart = (uintptr_t)getDisplayList(); + u8* dlStart = (u8*)getDisplayList(); - for (u8* dl = (u8*)dlStart; ((uintptr_t)dl - dlStart) < getDisplayListSize();) { - if (*dl != GX_TRIANGLEFAN && *dl != GX_TRIANGLESTRIP) + for (u8* dl = dlStart; (dl - dlStart) < getDisplayListSize();) { + u8 cmd = *(u8*)dl; + dl++; + if (cmd != GX_TRIANGLEFAN && cmd != GX_TRIANGLESTRIP) break; - u16 vtxNum = *((u16*)(dl + 1)); + int vtxNum = *((u16*)(dl)); + dl += 2; count += vtxNum; - dl += stride * vtxNum; - dl += 3; + dl = (u8*)dl + stride * vtxNum; } return count; } -// NONMATCHING regalloc void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { u32 byteNum = countVertex(stride); - u32 newSize = ALIGN_NEXT(mDisplayListSize + byteNum, 0x20); + u32 oldSize = mDisplayListSize; + u32 newSize = ALIGN_NEXT(oldSize + byteNum, 0x20); u8* newDLStart = new (0x20) u8[newSize]; - u8* oldDLStart = getDisplayList(); + u8* oldDLStart = (u8*)mDisplayList; u8* oldDL = oldDLStart; u8* newDL = newDLStart; for (; (oldDL - oldDLStart) < mDisplayListSize;) { // Copy command - u8 h = *oldDL; - *newDL++ = h; + u8 cmd = *(u8*)oldDL; + oldDL++; + *newDL++ = cmd; - if (h != GX_TRIANGLEFAN && h != GX_TRIANGLESTRIP) + if (cmd != GX_TRIANGLEFAN && cmd != GX_TRIANGLESTRIP) break; // Copy count - // regalloc (I suspect there's a way to shove this in a u16 temp without an mr) - s32 vtxNum = *((u16*)(oldDL + 1)); - *((u16*)newDL) = vtxNum; + int vtxNum = *(u16*)oldDL; + oldDL += 2; + *(u16*)newDL = vtxNum; newDL += 2; - for (s32 i = 0; i < vtxNum; i++) { - u8* oldDLVtx = &oldDL[stride * i + 3]; + for (int i = 0; i < vtxNum; i++) { + u8* oldDLVtx = &oldDL[stride * i]; u8 pnmtxidx = *oldDLVtx; - memcpy(newDL, oldDLVtx, attrOffs); + memcpy(newDL, oldDLVtx, (int)attrOffs); newDL += attrOffs; *newDL++ = valueBase + pnmtxidx; memcpy(newDL, oldDLVtx + attrOffs, stride - attrOffs); newDL += (stride - attrOffs); } - oldDL += stride * vtxNum; - oldDL += 3; + oldDL = (u8*)oldDL + stride * vtxNum; } u32 realSize = ALIGN_NEXT((uintptr_t)newDL - (uintptr_t)newDLStart, 0x20); diff --git a/src/JSystem/JMath/JMATrigonometric.cpp b/src/JSystem/JMath/JMATrigonometric.cpp index b6649594da..e037400994 100644 --- a/src/JSystem/JMath/JMATrigonometric.cpp +++ b/src/JSystem/JMath/JMATrigonometric.cpp @@ -70,10 +70,10 @@ struct TAsinAcosTable { namespace JMath { -TSinCosTable<13, f32> sincosTable_; +TSinCosTable<13, f32> sincosTable_ ATTRIBUTE_ALIGN(32); -TAtanTable atanTable_; +TAtanTable atanTable_ ATTRIBUTE_ALIGN(32); -TAsinAcosTable asinAcosTable_; +TAsinAcosTable asinAcosTable_ ATTRIBUTE_ALIGN(32); } // namespace JMath From e39af8edf551c076f46ca0d8010b3012b5bf886f Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 2 Dec 2025 21:18:28 -0500 Subject: [PATCH 10/18] Match 4 more functions (#2909) * Match daNpcF_Lookat_c::adjustMoveDisAngle * Match daNpc_ykM_c::reset and daNpc_ykW_c::reset * Fakematch daNpcThe_c::main gameInfo load * Update configure.py --- configure.py | 36 ++++++++++++++++++------------------ include/d/actor/d_a_npc.h | 2 +- src/d/actor/d_a_npc2.cpp | 2 ++ src/d/actor/d_a_npc4.cpp | 5 ++--- src/d/actor/d_a_npc_the.cpp | 9 ++++++--- src/d/actor/d_a_npc_ykm.cpp | 5 +---- src/d/actor/d_a_npc_ykw.cpp | 1 - 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/configure.py b/configure.py index c916413955..dd01d2719c 100755 --- a/configure.py +++ b/configure.py @@ -805,7 +805,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "d/d_meter2.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_out_font.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_class.cpp"), - Object(Equivalent, "d/d_msg_object.cpp"), # weak func order + Object(Equivalent, "d/d_msg_object.cpp"), # weak func order Object(MatchingFor("GZ2P01", "GZ2J01"), "d/d_msg_unit.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_scrn_3select.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_scrn_arrow.cpp"), @@ -1069,7 +1069,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN, "ShieldD"), "JSystem/JAudio2/JAUBankTable.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JAUClusterSound.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JAUInitializer.cpp"), - Object(Equivalent, "JSystem/JAudio2/JAUSectionHeap.cpp"), # weak function order + Object(Equivalent, "JSystem/JAudio2/JAUSectionHeap.cpp"), # weak func order Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JAUSeqCollection.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JAUSeqDataBlockMgr.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/JAudio2/JAUSoundAnimator.cpp"), @@ -1720,7 +1720,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_tag_msg"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_push"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_telop"), - ActorRel(Equivalent, "d_a_tbox"), # weak func order + ActorRel(Equivalent, "d_a_tbox"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_tbox2"), ActorRel(MatchingFor(ALL_GCN), "d_a_vrbox"), ActorRel(NonMatching, "d_a_vrbox2"), @@ -1731,7 +1731,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_disappear"), ActorRel(Equivalent, "d_a_mg_rod"), # regalloc; weak func order; inlining issues ActorRel(MatchingFor(ALL_GCN), "d_a_midna"), - ActorRel(Equivalent, "d_a_nbomb"), # weak func order + ActorRel(Equivalent, "d_a_nbomb"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_obj_life_container"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_yousei"), ActorRel(MatchingFor(ALL_GCN), "d_a_spinner"), @@ -1963,12 +1963,12 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_myna"), ActorRel(MatchingFor(ALL_GCN), "d_a_ni"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_aru"), - ActorRel(Equivalent, "d_a_npc_ash"), # weak func order (sinShort) - ActorRel(Equivalent, "d_a_npc_ashB"), # weak func order (sinShort) + ActorRel(Equivalent, "d_a_npc_ash"), # weak func order (sinShort) + ActorRel(Equivalent, "d_a_npc_ashB"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_bans"), ActorRel(NonMatching, "d_a_npc_blue_ns"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_bou"), - ActorRel(Equivalent, "d_a_npc_bouS"), # weak func order (sinShort) + ActorRel(Equivalent, "d_a_npc_bouS"), # weak func order (sinShort) ActorRel(Equivalent, "d_a_npc_cdn3"), # weak func order (~csXyz); vtable order ActorRel(MatchingFor(ALL_GCN), "d_a_npc_chat"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_chin"), @@ -1998,9 +1998,9 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_npc_hanjo"), ActorRel(MatchingFor(ALL_GCN, "Shield"), "d_a_npc_henna0"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_hoz"), - ActorRel(Equivalent, "d_a_npc_impal"), # weak func order + ActorRel(Equivalent, "d_a_npc_impal"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_inko"), - ActorRel(Equivalent, "d_a_npc_ins"), # weak func order + ActorRel(Equivalent, "d_a_npc_ins"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_jagar"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kasi_hana"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kasi_kyu"), @@ -2009,7 +2009,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_kn"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_knj"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kolinb"), - ActorRel(Equivalent, "d_a_npc_ks"), # weak func order + ActorRel(Equivalent, "d_a_npc_ks"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kyury"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_len"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_lf"), @@ -2030,7 +2030,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_npc_pouya"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_prayer"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_raca"), - ActorRel(Equivalent, "d_a_npc_rafrel"), # weak func order + ActorRel(Equivalent, "d_a_npc_rafrel"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_saru"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_seib"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_seic"), @@ -2038,7 +2038,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_npc_seira"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_seira2"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_seirei"), - ActorRel(Equivalent, "d_a_npc_shad"), # weak func order + ActorRel(Equivalent, "d_a_npc_shad"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_shaman"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_shoe"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_shop0"), @@ -2047,23 +2047,23 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_npc_soldierA"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_soldierB"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_sq"), - ActorRel(NonMatching, "d_a_npc_the"), + ActorRel(Equivalent, "d_a_npc_the"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_theB"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_tk"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_tkc"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_tkj2"), - ActorRel(NonMatching, "d_a_npc_tks"), # weak func order (sinShort) + ActorRel(Equivalent, "d_a_npc_tks"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_toby"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_tr"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_uri"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_worm"), - ActorRel(NonMatching, "d_a_npc_wrestler"), + ActorRel(NonMatching, "d_a_npc_wrestler"), # regalloc; weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_npc_yamid"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_yamis"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_yamit"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_yelia"), - ActorRel(NonMatching, "d_a_npc_ykm"), - ActorRel(NonMatching, "d_a_npc_ykw"), + ActorRel(MatchingFor(ALL_GCN), "d_a_npc_ykm"), + ActorRel(MatchingFor(ALL_GCN), "d_a_npc_ykw"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_zanb"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_zant"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_zelR"), @@ -2339,7 +2339,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_obj_thashi"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_thdoor"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_timeFire"), - ActorRel(Equivalent, "d_a_obj_tks"), # weak function order + ActorRel(Equivalent, "d_a_obj_tks"), # weak func order (sinShort) ActorRel(MatchingFor(ALL_GCN), "d_a_obj_tmoon"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_toaru_maki"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_toby"), diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 6ba8bda3a3..55c01e6bb1 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -196,7 +196,7 @@ public: const int getIdx() { return mIdx; } - dPath* getPathInfo() { return mPathInfo; } + const dPath* getPathInfo() { return mPathInfo; } void onReverse() { mDirection = 1; diff --git a/src/d/actor/d_a_npc2.cpp b/src/d/actor/d_a_npc2.cpp index 2b919fae8d..b7b0e12983 100644 --- a/src/d/actor/d_a_npc2.cpp +++ b/src/d/actor/d_a_npc2.cpp @@ -1,5 +1,7 @@ #include "d/actor/d_a_npc.h" #include "d/actor/d_a_npc2.h" +#include "d/d_bg_w.h" +#include "d/d_debug_viewer.h" static s32 daBaseNpc_chkPnt(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4, int param_5); static u16 daBaseNpc_putNurbs(dPnt* i_CPnts, int i_CPntNum, int i_maxPntNum, dPnt* o_curve_p, BOOL i_isClosed); diff --git a/src/d/actor/d_a_npc4.cpp b/src/d/actor/d_a_npc4.cpp index c79971e55e..0c2ee96844 100644 --- a/src/d/actor/d_a_npc4.cpp +++ b/src/d/actor/d_a_npc4.cpp @@ -394,14 +394,13 @@ void daNpcF_Lookat_c::calc(fopAc_ac_c* i_actor, Mtx i_baseTransformMtx, csXyz** } } -// NONMATCHING - regalloc, matches debug void daNpcF_Lookat_c::adjustMoveDisAngle(s16& delta, s16 angle, s16 min, s16 max) { int newAngle = 0; newAngle = angle + delta; if (max < newAngle) { if (angle < max) { - delta -= (newAngle - max); + delta = delta - (newAngle - max); } else { delta = 0; } @@ -410,7 +409,7 @@ void daNpcF_Lookat_c::adjustMoveDisAngle(s16& delta, s16 angle, s16 min, s16 max newAngle = angle + delta; if (newAngle < min) { if (min < angle) { - delta -= (newAngle - min); + delta = delta - (newAngle - min); } else { delta = 0; } diff --git a/src/d/actor/d_a_npc_the.cpp b/src/d/actor/d_a_npc_the.cpp index 4033b91e86..cd1e0c7b63 100644 --- a/src/d/actor/d_a_npc_the.cpp +++ b/src/d/actor/d_a_npc_the.cpp @@ -1111,7 +1111,6 @@ void daNpcThe_c::setParam() { gravity = mpHIO->m.common.gravity; } -// NONMATCHING dComIfG_gameInfo issues BOOL daNpcThe_c::main() { if (!doEvent()) { doNormalAction(1); @@ -1127,8 +1126,12 @@ BOOL daNpcThe_c::main() { attention_info.flags = 0; } + // TODO: gameInfo fake match to force reuse of pointer + dComIfG_inf_c* gameInfo = &g_dComIfG_gameInfo; if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk() && mItemID != -1) { - dComIfGp_event_setItemPartnerId(mItemID); + // Fakematch, should be: + // dComIfGp_event_setItemPartnerId(mItemID); + gameInfo->play.getEvent().setPtI_Id(mItemID); mItemID = -1; } @@ -1139,7 +1142,7 @@ BOOL daNpcThe_c::main() { eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo]]); } if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) { - eventInfo.onCondition(0x20); + eventInfo.onCondition(dEvtCnd_CANTALKITEM_e); } orderEvent(field_0xe1c, l_evtNames[mOrderEvtNo], 0xffff, 0x28, 0xff, 1); } diff --git a/src/d/actor/d_a_npc_ykm.cpp b/src/d/actor/d_a_npc_ykm.cpp index 3f9132e817..8b620aaa6a 100644 --- a/src/d/actor/d_a_npc_ykm.cpp +++ b/src/d/actor/d_a_npc_ykm.cpp @@ -1000,10 +1000,7 @@ void daNpc_ykM_c::reset() { mRoomPath = NULL; if (mType == TYPE_4 && mPath.chkNextId()) { - //TODO: Separate decl is fakematch, this is fixed by properly matching - // daNpcT_DmgStagger_c::initialize in debug but doing so breaks other functions. - dPath* path = mPath.getPathInfo(); - mRoomPath = dPath_GetRoomPath(path->m_nextID, fopAcM_GetRoomNo(this)); + mRoomPath = dPath_GetRoomPath(mPath.getPathInfo()->m_nextID, fopAcM_GetRoomNo(this)); } } diff --git a/src/d/actor/d_a_npc_ykw.cpp b/src/d/actor/d_a_npc_ykw.cpp index e058e31865..5b7bcb9274 100644 --- a/src/d/actor/d_a_npc_ykw.cpp +++ b/src/d/actor/d_a_npc_ykw.cpp @@ -602,7 +602,6 @@ int daNpc_ykW_c::isDelete() { } } -// NONMATCHING - m_nextID load issue void daNpc_ykW_c::reset() { cXyz unkXyz1; csXyz unkSxyz1; From c1861812ef1188284047f5171eb606005d808148 Mon Sep 17 00:00:00 2001 From: Niklas Bauer Date: Wed, 3 Dec 2025 19:30:59 +0100 Subject: [PATCH 11/18] d_a_npc_kn debug work (#2907) * d_a_npc_kn debug work * d_a_npc_kn pr comments --- include/SSystem/SComponent/c_cc_d.h | 1 + include/d/d_cc_d.h | 1 - include/d/d_event.h | 4 ++ include/f_op/f_op_actor.h | 18 +++--- src/d/actor/d_a_npc_bans.cpp | 1 + src/d/actor/d_a_npc_kn.cpp | 92 +++++++++++++++-------------- src/d/actor/d_a_npc_kn_base.inc | 2 +- src/d/actor/d_a_npc_kn_teach01.inc | 3 +- 8 files changed, 68 insertions(+), 54 deletions(-) diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 9252ad2048..f8802dfc25 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -379,6 +379,7 @@ public: void OnTgNoSlingHitInfSet() { mObjTg.OnSPrmBit(0x40); } void OnAtVsBitSet(u32 prm) { mObjAt.OnSPrmBit(prm); } void OffAtVsBitSet(u32 prm) { mObjAt.OffSPrmBit(prm); } + void OffTgNoAtHitInfSet() { mObjTg.OffSPrmBit(0x20); } }; // Size = 0x40 diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index d6bc45c1c0..8a8e07215d 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -417,7 +417,6 @@ public: bool ChkTgHookshotThrough() { return mGObjTg.ChkSPrm(0x80); } void OffTgHookShotNoHitMark() {mGObjTg.OffSPrm(0x400);} bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); } - void OffTgNoAtHitInfSet() { mObjTg.OffSPrmBit(0x20); } bool ChkTgSpinnerReflect() { return mGObjTg.ChkSPrm(0x200); } static const Z2SoundID m_hitSeID[24]; diff --git a/include/d/d_event.h b/include/d/d_event.h index 309314b282..2d364fe004 100644 --- a/include/d/d_event.h +++ b/include/d/d_event.h @@ -128,7 +128,11 @@ public: u8 getMode() const { return mMode; } void onHindFlag(u16 flag) { mHindFlag |= flag; } + #ifdef DEBUG + void offHindFlag(u16 flag) { mHindFlag &= (u16)~flag; } + #else void offHindFlag(u16 flag) { mHindFlag &= ~flag; } + #endif u16 checkHind(u16 flag) { return flag & mHindFlag; } u8 checkCompulsory() { return mCompulsory; } diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index fe05200d8c..03d840ffd3 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -314,7 +314,7 @@ public: BOOL checkWolfBiteDamage() const { return mFlags & fopEn_flag_WolfBiteDamage; } bool checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; } bool checkDownFlg() { return mFlags & fopEn_flag_Down; } - bool checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; } + BOOL checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; } bool checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; } bool checkDeadFlg() const { return mFlags & fopEn_flag_Dead; } BOOL checkThrowMode(u8 param_1) const { return mThrowMode & param_1; } @@ -329,8 +329,13 @@ public: void onWolfDownStartFlg() { mFlags |= (fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); } void onWolfDownPullEndFlg() { mFlags |= fopEn_flag_WolfDownPullEnd; } void onWolfNoLock() { mFlags |= (u16)fopEn_flag_WolfNoLock; } + #if DEBUG + void onDownFlg() { mFlags |= (u16)fopEn_flag_Down; } + void onHeadLockFlg() { mFlags |= (u16)fopEn_flag_HeadLock; } + #else void onDownFlg() { mFlags |= fopEn_flag_Down; } void onHeadLockFlg() { mFlags |= fopEn_flag_HeadLock; } + #endif #if DEBUG void offWolfBiteDamage() { mFlags &= (u16)~fopEn_flag_WolfBiteDamage; } @@ -339,16 +344,15 @@ public: #endif void offCutDownHitFlg() { mFlags &= ~fopEn_flag_CutDownHit; } void offWolfDownPullFlg() { mFlags &= ~fopEn_flag_WolfDownPull; } - void offDownFlg() { mFlags &= ~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); } #if DEBUG + void offDownFlg() { mFlags &= (u16)~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); } void offWolfNoLock() { mFlags &= (u16)~fopEn_flag_WolfNoLock; } - #else - void offWolfNoLock() { mFlags &= ~fopEn_flag_WolfNoLock; } - #endif - void offHeadLockFlg() { mFlags &= ~fopEn_flag_HeadLock; } - #if DEBUG + void offHeadLockFlg() { mFlags &= (u16)~fopEn_flag_HeadLock; } void offThrowMode(u8 throwMode) { mThrowMode &= (u8)~throwMode; } #else + void offDownFlg() { mFlags &= ~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); } + void offWolfNoLock() { mFlags &= ~fopEn_flag_WolfNoLock; } + void offHeadLockFlg() { mFlags &= ~fopEn_flag_HeadLock; } void offThrowMode(u8 throwMode) { mThrowMode &= ~(throwMode & 0xFF); } #endif diff --git a/src/d/actor/d_a_npc_bans.cpp b/src/d/actor/d_a_npc_bans.cpp index ab60ad1c00..cfe52d1c7f 100644 --- a/src/d/actor/d_a_npc_bans.cpp +++ b/src/d/actor/d_a_npc_bans.cpp @@ -665,6 +665,7 @@ void daNpc_Bans_c::reset() { default: daNpcT_offTmpBit(57); // dSv_event_tmp_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop setAngle(angle); + break; } } diff --git a/src/d/actor/d_a_npc_kn.cpp b/src/d/actor/d_a_npc_kn.cpp index 5e653ea208..fd077d36ec 100644 --- a/src/d/actor/d_a_npc_kn.cpp +++ b/src/d/actor/d_a_npc_kn.cpp @@ -2537,7 +2537,6 @@ int daNpc_Kn_c::teach06_divideMove(void* param_0) { if (!dComIfGp_event_runCheck()) { mActionMode = 15; } - break; } case 3: default: @@ -2609,15 +2608,10 @@ int daNpc_Kn_c::teach06_superJumpWaitDivide(void* param_0) { parent_p->setTalkFlag(2); } - int spC; - s16 temp_r0_2 = fopAcM_searchPlayerAngleY(this) - current.angle.y; - if (temp_r0_2 < 0) { - spC = -temp_r0_2; - } else { - spC = temp_r0_2; - } + s16 srch_ply_angle = fopAcM_searchPlayerAngleY(this); + s16 angle = srch_ply_angle - current.angle.y; - if (spC < 0x4000) { + if ((angle < 0 ? -angle : angle) < 0x4000) { mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(0x12, -1.0f, 0, 0); setAngle(fopAcM_searchPlayerAngleY(this)); @@ -2673,10 +2667,13 @@ int daNpc_Kn_c::teach06_superJumpWaitDivide(void* param_0) { if (parent_p != NULL) { parent_p->setTalkFlag(1); parent_p->mFlowNodeNo = mFlowNodeNo; + } else { + break; } } else if (!daPy_getPlayerActorClass()->checkDamageImpact()) { BOOL is_lockon = FALSE; - if (dComIfGp_getAttention()->LockonTruth()) { + dAttention_c* attention_p = dComIfGp_getAttention(); + if (attention_p->LockonTruth()) { is_lockon = TRUE; } @@ -2810,15 +2807,10 @@ int daNpc_Kn_c::teach07_superTurnAttackWait(void* param_0) { mEvtNo = 0x18; } - int spC; - s16 temp_r0_2 = fopAcM_searchPlayerAngleY(this) - current.angle.y; - if (temp_r0_2 < 0) { - spC = -temp_r0_2; - } else { - spC = temp_r0_2; - } + s16 srch_ply_angle = fopAcM_searchPlayerAngleY(this); + s16 angle = srch_ply_angle - current.angle.y; - if (spC < 0x4000) { + if ((angle < 0 ? -angle : angle) < 0x4000) { mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(0x12, -1.0f, 0, 0); setAngle(fopAcM_searchPlayerAngleY(this)); @@ -2862,7 +2854,8 @@ int daNpc_Kn_c::teach07_superTurnAttackWait(void* param_0) { field_0x15bc = 0; BOOL is_lockon = FALSE; - if (dComIfGp_getAttention()->LockonTruth()) { + dAttention_c* attention_p = dComIfGp_getAttention(); + if (attention_p->LockonTruth()) { is_lockon = TRUE; } @@ -2923,7 +2916,6 @@ int daNpc_Kn_c::teach07_divideMove(void* param_0) { if (!dComIfGp_event_runCheck()) { mActionMode = 21; } - break; } case 3: default: @@ -2995,15 +2987,10 @@ int daNpc_Kn_c::teach07_superTurnAttackWaitDivide(void* param_0) { parent_p->setTalkFlag(2); } - int spC; - s16 temp_r0_2 = fopAcM_searchPlayerAngleY(this) - current.angle.y; - if (temp_r0_2 < 0) { - spC = -temp_r0_2; - } else { - spC = temp_r0_2; - } + s16 srch_ply_angle = fopAcM_searchPlayerAngleY(this); + s16 angle = srch_ply_angle - current.angle.y; - if (spC < 0x4000) { + if ((angle < 0 ? -angle : angle) < 0x4000) { mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(0x12, -1.0f, 0, 0); setAngle(fopAcM_searchPlayerAngleY(this)); @@ -3046,8 +3033,8 @@ int daNpc_Kn_c::teach07_superTurnAttackWaitDivide(void* param_0) { if (parent_p != NULL) { parent_p->setTalkFlag(1); } + break; } - break; } case 3: default: @@ -3117,10 +3104,12 @@ int daNpc_Kn_c::teach07_warpDelete(void* param_0) { int daNpc_Kn_c::ECut_secondEncount(int i_idx) { dEvent_manager_c* event_manager = &dComIfGp_getEventManager(); + daNpc_GWolf_c* gwolf_p = NULL; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -3132,14 +3121,14 @@ int daNpc_Kn_c::ECut_secondEncount(int i_idx) { mMotionSeqMngr.setNo(0, -1.0f, 0, 0); break; case 2: { - daNpc_GWolf_c* gwolf_p = (daNpc_GWolf_c*)fpcM_SearchByID(parentActorID); + gwolf_p = (daNpc_GWolf_c*)fpcM_SearchByID(parentActorID); if (fopAcM_GetName(gwolf_p) == PROC_NPC_GWOLF) { gwolf_p->setMotion(4, -1.0f, FALSE); } break; } case 5: { - daNpc_GWolf_c* gwolf_p = (daNpc_GWolf_c*)fpcM_SearchByID(parentActorID); + gwolf_p = (daNpc_GWolf_c*)fpcM_SearchByID(parentActorID); if (gwolf_p != NULL) { fopAcM_delete(gwolf_p); } @@ -3273,10 +3262,12 @@ int daNpc_Kn_c::ECut_secondEncount(int i_idx) { int daNpc_Kn_c::ECut_thirdSkillExplain(int i_idx) { dEvent_manager_c* event_manager = &dComIfGp_getEventManager(); + void* _ = NULL; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -3359,9 +3350,7 @@ int daNpc_Kn_c::ECut_thirdSkillExplain(int i_idx) { } break; case 6: - if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) { - rt = 1; - } else { + if (mCurAngle.y != fopAcM_searchPlayerAngleY(this)) { if (step(fopAcM_searchPlayerAngleY(this), 1, 0x20, 20, 0)) { rt = 1; mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); @@ -3459,9 +3448,10 @@ int daNpc_Kn_c::ECut_thirdSkillGet(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -3594,9 +3584,10 @@ int daNpc_Kn_c::ECut_fourthSkillExplain(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -3647,6 +3638,7 @@ int daNpc_Kn_c::ECut_fourthSkillExplain(int i_idx) { mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(0, -1.0f, 1, 0); } + void(0); break; } case 30: @@ -3792,9 +3784,10 @@ int daNpc_Kn_c::ECut_fourthSkillGet(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -3928,9 +3921,10 @@ int daNpc_Kn_c::ECut_fifthSkillExplain(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -4090,7 +4084,7 @@ int daNpc_Kn_c::ECut_fifthSkillExplain(int i_idx) { sp34 += home.pos; setPos(sp34); - setAngle(home.angle.y); + setAngle((s16) home.angle.y); mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(7, -1.0f, 1, 0); } else if (mpModelMorf[0]->getFrame() >= 8.0f && mpModelMorf[0]->getFrame() < 9.0f) { @@ -4124,9 +4118,10 @@ int daNpc_Kn_c::ECut_fifthSkillGet(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -4260,9 +4255,10 @@ int daNpc_Kn_c::ECut_sixthSkillExplain(int i_idx) { int sp8 = 0; int rt = 0; + int* prm_p = NULL; int prm = -1; - int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); + prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm"); if (prm_p != NULL) { prm = *prm_p; } @@ -4416,7 +4412,7 @@ int daNpc_Kn_c::ECut_sixthSkillExplain(int i_idx) { sp34 += home.pos; setPos(sp34); - setAngle(home.angle.y); + setAngle((s16) home.angle.y); mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0); mMotionSeqMngr.setNo(0, 0.0f, 1, 0); } @@ -4984,14 +4980,22 @@ int daNpc_Kn_c::setSlipPrtcl() { mDoMtx_stack_c::multVecZero(&mParticleMngr[0].mPos); mParticleMngr[0].mPos.y -= 20.0f; mParticleMngr[0].mAngle = current.angle; + #ifdef DEBUG + mParticleMngr[0].mAngle.y -= (s16) 0x8000; + #else mParticleMngr[0].mAngle.y -= 0x8000; + #endif mParticleMngr[0].mpModel = true; mDoMtx_stack_c::copy(mpModelMorf[0]->getModel()->getAnmMtx(0x1b)); mDoMtx_stack_c::multVecZero(&mParticleMngr[1].mPos); mParticleMngr[1].mPos.y -= 20.0f; mParticleMngr[1].mAngle = current.angle; + #ifdef DEBUG + mParticleMngr[1].mAngle.y -= (s16) 0x8000; + #else mParticleMngr[1].mAngle.y -= 0x8000; + #endif mParticleMngr[1].mpModel = true; return 1; } diff --git a/src/d/actor/d_a_npc_kn_base.inc b/src/d/actor/d_a_npc_kn_base.inc index 392b65fa26..ed489e16c1 100644 --- a/src/d/actor/d_a_npc_kn_base.inc +++ b/src/d/actor/d_a_npc_kn_base.inc @@ -1009,7 +1009,7 @@ BOOL daNpc_Kn_c::srchPlayerActor() { } } - return mActorMngr1.getActorP() != NULL; + return NULL != mActorMngr1.getActorP(); } cXyz daNpc_Kn_c::getAttnPos(fopAc_ac_c* i_actor) { diff --git a/src/d/actor/d_a_npc_kn_teach01.inc b/src/d/actor/d_a_npc_kn_teach01.inc index 711d011846..47f38c9ea7 100644 --- a/src/d/actor/d_a_npc_kn_teach01.inc +++ b/src/d/actor/d_a_npc_kn_teach01.inc @@ -330,6 +330,7 @@ int daNpc_Kn_c::ctrlWarp() { field_0x16f4.set(1.0f, 1.0f, 1.0f); } } + void(0); break; } case 1: @@ -365,6 +366,7 @@ int daNpc_Kn_c::ctrlWarp() { field_0x170c = 2; field_0x170d = 0; } + void(0); break; case 2: sp28 = 1; @@ -405,7 +407,6 @@ int daNpc_Kn_c::ctrlWarp() { field_0x170c = 0; field_0x170d = 0; } - break; } return sp28; From 5716efc4c86f5e7e03263f0ed426c5e9ae834cd3 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Wed, 3 Dec 2025 17:16:08 -0500 Subject: [PATCH 12/18] d_a_e_dn work (#2899) * d_a_e_dn work * PR cleanup and more documentation --- config/GZ2E01/rels/d_a_e_dn/symbols.txt | 2 +- configure.py | 2 +- include/d/actor/d_a_e_dn.h | 148 +- include/f_op/f_op_actor.h | 18 +- src/d/actor/d_a_e_dn.cpp | 3131 ++++++++++++----------- src/d/actor/d_a_e_rd.cpp | 12 +- src/d/actor/d_a_obj_key.cpp | 2 +- 7 files changed, 1696 insertions(+), 1619 deletions(-) diff --git a/config/GZ2E01/rels/d_a_e_dn/symbols.txt b/config/GZ2E01/rels/d_a_e_dn/symbols.txt index 759afc6fe3..4d7df8c258 100644 --- a/config/GZ2E01/rels/d_a_e_dn/symbols.txt +++ b/config/GZ2E01/rels/d_a_e_dn/symbols.txt @@ -219,7 +219,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local -lbl_65_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte +l_initHIO = .bss:0x00000045; // type:object size:0x1 data:byte @3805 = .bss:0x00000048; // type:object size:0xC scope:local l_HIO = .bss:0x00000054; // type:object size:0x28 scope:global data:byte target_info = .bss:0x0000007C; // type:object size:0x28 scope:global diff --git a/configure.py b/configure.py index dd01d2719c..17bf9c32d1 100755 --- a/configure.py +++ b/configure.py @@ -260,7 +260,7 @@ cflags_base = [ ] if config.version == "ShieldD": - cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1"]) + cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1", '-pragma "nosyminline on"']) elif config.version == "RZDE01_00" or config.version == "RZDE01_02" or config.version == "Shield": cflags_base.extend(["-O4,p", "-inline auto", "-ipa file", "-RTTI on", "-str reuse", "-enc SJIS", "-DWIDESCREEN_SUPPORT=1"]) else: diff --git a/include/d/actor/d_a_e_dn.h b/include/d/actor/d_a_e_dn.h index 88c1341e96..79491af5e1 100644 --- a/include/d/actor/d_a_e_dn.h +++ b/include/d/actor/d_a_e_dn.h @@ -13,56 +13,56 @@ * * @details * - */ +*/ + class e_dn_class { public: e_dn_class(); /* 0x0000 */ fopEn_enemy_c actor; - /* 0x05AC */ request_of_phase_process_class mPhase; - /* 0x05B4 */ s16 mMode; - /* 0x05B6 */ u8 field_0x5b6; - /* 0x05B7 */ u8 field_0x5b7; - /* 0x05B8 */ u8 field_0x5b8; - /* 0x05B9 */ u8 field_0x5b9; + /* 0x05AC */ request_of_phase_process_class phase; + /* 0x05B4 */ s16 mode; + /* 0x05B6 */ u8 arg0; + /* 0x05B7 */ u8 arg1; + /* 0x05B8 */ u8 arg2; + /* 0x05B9 */ u8 arg3; /* 0x05BC */ cXyz field_0x5bc; /* 0x05C8 */ cXyz field_0x5c8; - /* 0x05D4 */ s16 field_0x5d4; + /* 0x05D4 */ s16 cur_angle_y_target; /* 0x05D6 */ s16 field_0x5d6; /* 0x05D8 */ s8 field_0x5d8; - /* 0x05DC */ mDoExt_McaMorfSO* mpModelMorf; - /* 0x05E0 */ int mAnmID; - /* 0x05E4 */ J3DModel* mpKnifeModel; - /* 0x05E8 */ Z2CreatureEnemy mSound; - /* 0x068C */ J3DModel* mpShieldModel; - /* 0x0690 */ J3DModel* mpSkullModel; + /* 0x05DC */ mDoExt_McaMorfSO* anm_p; + /* 0x05E0 */ int anm_no; + /* 0x05E4 */ J3DModel* knife_model; + /* 0x05E8 */ Z2CreatureEnemy sound; + /* 0x068C */ J3DModel* tate_model; + /* 0x0690 */ J3DModel* skull_model; /* 0x0694 */ s8 field_0x694; - /* 0x0698 */ cXyz field_0x698; + /* 0x0698 */ cXyz skull_trans; /* 0x06A4 */ cXyz field_0x6a4; - /* 0x06B0 */ s16 field_0x6b0; - /* 0x06B2 */ s16 field_0x6b2; - /* 0x06B4 */ dJntCol_c mJntCol; - /* 0x06C4 */ s8 field_0x6c4; - /* 0x06C8 */ f32 field_0x6c8; - /* 0x06CC */ s16 field_0x6cc; - /* 0x06CE */ s16 mAction; - /* 0x06D0 */ f32 mPlayerDistance; - /* 0x06D4 */ s16 mYAngleToPlayer; - /* 0x06D6 */ s16 mXAngleToPlayer; - /* 0x06D8 */ f32 field_0x6d8; - /* 0x06DC */ u32 mShadowKey; - /* 0x06E0 */ s16 field_0x6e0[4]; - /* 0x06E8 */ s16 field_0x6e8; - /* 0x06EA */ s16 field_0x6ea; - /* 0x06EC */ s16 field_0x6ec; - /* 0x06EE */ s8 field_0x6ee; - /* 0x06EF */ s8 field_0x6ef; - /* 0x06F0 */ s8 field_0x6f0; - /* 0x06F1 */ s8 field_0x6f1; + /* 0x06B0 */ s16 skull_y_rot; + /* 0x06B2 */ s16 skull_x_rot; + /* 0x06B4 */ dJntCol_c jc; + /* 0x06C4 */ s8 death_flag; + /* 0x06C8 */ f32 color; + /* 0x06CC */ s16 frame_counter; + /* 0x06CE */ s16 action; + /* 0x06D0 */ f32 pl_dir; + /* 0x06D4 */ s16 search_angle_y; + /* 0x06D6 */ s16 search_angle_x; + /* 0x06D8 */ f32 pl_range; + /* 0x06DC */ u32 shadow_key; + /* 0x06E0 */ s16 timer[4]; + /* 0x06E8 */ s16 invulnerability_timer; + /* 0x06EA */ s16 unk_timer_1; + /* 0x06EC */ s16 unk_timer_2; + /* 0x06EE */ s8 tail_at_sph_flag; + /* 0x06EF */ s8 at_chk_flag; + /* 0x06F0 */ s8 at_sph_center_flag; + /* 0x06F1 */ s8 guard_flag; /* 0x06F2 */ s8 field_0x6f2; /* 0x06F3 */ s8 field_0x6f3; /* 0x06F4 */ s8 field_0x6f4; - /* 0x06F5 */ u8 field_0x6f5; /* 0x06F6 */ s16 field_0x6f6; /* 0x06F8 */ s16 field_0x6f8; /* 0x06FA */ s16 field_0x6fa; @@ -75,16 +75,16 @@ public: /* 0x070C */ s16 field_0x70c; /* 0x070E */ s16 field_0x70e; /* 0x0710 */ s8 field_0x710; - /* 0x0711 */ u8 field_0x711[15]; - /* 0x0720 */ f32 field_0x720; + /* 0x0714 */ cXyz field_0x711; + /* 0x0720 */ f32 cur_pos_y_offset; /* 0x0724 */ csXyz field_0x724; /* 0x072A */ csXyz field_0x72a; /* 0x0730 */ csXyz field_0x730; - /* 0x0736 */ s8 field_0x736; - /* 0x0737 */ s8 field_0x737; - /* 0x0738 */ cXyz field_0x738; - /* 0x0744 */ int field_0x744; - /* 0x0748 */ u8 field_0x748[4]; + /* 0x0736 */ s8 unk_timer_3; + /* 0x0737 */ s8 left_right_flag; + /* 0x0738 */ cXyz find_pos; + /* 0x0744 */ int learn; + /* 0x0748 */ u8 field_0x748[0x74c - 0x748]; /* 0x074C */ f32 field_0x74c; /* 0x0750 */ s16 field_0x750; /* 0x0754 */ f32 field_0x754; @@ -95,49 +95,45 @@ public: /* 0x07A4 */ csXyz field_0x7a4[11]; /* 0x07E8 */ f32 field_0x7e8; /* 0x07EC */ s16 field_0x7ec[2]; - /* 0x07F0 */ s16 field_0x7f0; - /* 0x07F2 */ s16 field_0x7f2; - /* 0x07F4 */ s16 field_0x7f4; - /* 0x07F6 */ s16 field_0x7f6; - /* 0x07FA */ s16 field_0x7f8; - /* 0x07FA */ s16 field_0x7fa; + /* 0x07F0 */ s16 jnt_waist_z_rot; + /* 0x07F2 */ s16 jnt_arml1_z_rot_offset; + /* 0x07F4 */ s16 jnt_arml2_z_rot_offset; + /* 0x07F6 */ s16 jnt_armr1_z_rot_offset; + /* 0x07FA */ s16 jnt_armr2_z_rot_offset; + /* 0x07FA */ s16 jnt_legl1_y_rot; /* 0x07FC */ s16 field_0x7fc[3]; /* 0x0802 */ s16 field_0x802[4]; - /* 0x080A */ s16 field_0x80a; - /* 0x080C */ s16 field_0x80c; + /* 0x080A */ s16 death_jnt_rot; + /* 0x080C */ s16 death_jnt_rot_counter; /* 0x080E */ csXyz field_0x80e[4]; - /* 0x0826 */ s16 field_0x826; - /* 0x0828 */ s16 field_0x828; - /* 0x082A */ s16 field_0x82a; - /* 0x082C */ s16 field_0x82c; - /* 0x082E */ s8 field_0x82e; - /* 0x082F */ u8 field_0x82f; - /* 0x0830 */ s16 field_0x830; - /* 0x0832 */ s16 field_0x832; - /* 0x0834 */ u8 field_0x834[2]; + /* 0x0826 */ s16 jnt_tail_y_rot_offset; + /* 0x0828 */ s16 unk_timer_4; + /* 0x082A */ s16 angle_y_offset; + /* 0x082C */ s16 unk_counter_1; + /* 0x082E */ s8 snap_angle_y_flag; + /* 0x0830 */ csXyz field_0x830; /* 0x0836 */ csXyz field_0x836; /* 0x083C */ f32 field_0x83c; - /* 0x0840 */ s16 field_0x840; - /* 0x0842 */ s16 field_0x842; - /* 0x0844 */ dBgS_AcchCir mAcchCir; - /* 0x0884 */ dBgS_ObjAcch mObjAcch; + /* 0x0840 */ s16 unk_timer_5; + /* 0x0842 */ s16 unk_counter_2; + /* 0x0844 */ dBgS_AcchCir acchcir; + /* 0x0884 */ dBgS_ObjAcch objacch; /* 0x0A5C */ f32 field_0xa5c; - /* 0x0A60 */ dCcD_Stts mStts; - /* 0x0A9C */ dCcD_Sph field_0xa9c[3]; - /* 0x0E44 */ dCcD_Sph field_0xe44; - /* 0x0F7C */ dCcD_Sph field_0xf7c; - /* 0x10B4 */ dCcU_AtInfo mAtInfo; - /* 0x10D8 */ u8 field_0x10d8; - /* 0x10D9 */ u8 field_0x10d9; - /* 0x10DA */ s8 field_0x10da; - /* 0x10DB */ u8 field_0x10db; + /* 0x0A60 */ dCcD_Stts stts; + /* 0x0A9C */ dCcD_Sph cc_sph[3]; + /* 0x0E44 */ dCcD_Sph at_sph; + /* 0x0F7C */ dCcD_Sph tate_sph; + /* 0x10B4 */ dCcU_AtInfo at_info; + /* 0x10D8 */ u8 status; + /* 0x10D9 */ u8 hio_init; + /* 0x10DA */ s8 unk_timer_6; /* 0x10DC */ u32 field_0x10dc; /* 0x10E0 */ u32 field_0x10e0; - /* 0x10E4 */ s8 field_0x10e4; + /* 0x10E4 */ s8 set_smoke_flag; /* 0x10E8 */ u32 field_0x10e8[2]; /* 0x10F0 */ u32 field_0x10f0[2]; - /* 0x10F8 */ u32 field_0x10f8; - /* 0x10FC */ u32 field_0x10fc; + /* 0x10F8 */ u32 dn_tail_blur_a_prtcl; + /* 0x10FC */ u32 dn_tail_blur_b_prtcl; /* 0x1100 */ u8 field_0x1100[12]; }; diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index 03d840ffd3..2a145bf496 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -312,10 +312,10 @@ public: bool checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; } BOOL checkHeadLockFlg() const { return mFlags & fopEn_flag_HeadLock; } BOOL checkWolfBiteDamage() const { return mFlags & fopEn_flag_WolfBiteDamage; } - bool checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; } + BOOL checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; } bool checkDownFlg() { return mFlags & fopEn_flag_Down; } BOOL checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; } - bool checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; } + BOOL checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; } bool checkDeadFlg() const { return mFlags & fopEn_flag_Dead; } BOOL checkThrowMode(u8 param_1) const { return mThrowMode & param_1; } @@ -329,27 +329,21 @@ public: void onWolfDownStartFlg() { mFlags |= (fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); } void onWolfDownPullEndFlg() { mFlags |= fopEn_flag_WolfDownPullEnd; } void onWolfNoLock() { mFlags |= (u16)fopEn_flag_WolfNoLock; } - #if DEBUG void onDownFlg() { mFlags |= (u16)fopEn_flag_Down; } void onHeadLockFlg() { mFlags |= (u16)fopEn_flag_HeadLock; } - #else - void onDownFlg() { mFlags |= fopEn_flag_Down; } - void onHeadLockFlg() { mFlags |= fopEn_flag_HeadLock; } - #endif #if DEBUG void offWolfBiteDamage() { mFlags &= (u16)~fopEn_flag_WolfBiteDamage; } - #else - void offWolfBiteDamage() { mFlags &= ~fopEn_flag_WolfBiteDamage; } - #endif - void offCutDownHitFlg() { mFlags &= ~fopEn_flag_CutDownHit; } + void offCutDownHitFlg() { mFlags &= (u16)~fopEn_flag_CutDownHit; } void offWolfDownPullFlg() { mFlags &= ~fopEn_flag_WolfDownPull; } - #if DEBUG void offDownFlg() { mFlags &= (u16)~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); } void offWolfNoLock() { mFlags &= (u16)~fopEn_flag_WolfNoLock; } void offHeadLockFlg() { mFlags &= (u16)~fopEn_flag_HeadLock; } void offThrowMode(u8 throwMode) { mThrowMode &= (u8)~throwMode; } #else + void offWolfBiteDamage() { mFlags &= ~fopEn_flag_WolfBiteDamage; } + void offCutDownHitFlg() { mFlags &= ~fopEn_flag_CutDownHit; } + void offWolfDownPullFlg() { mFlags &= ~fopEn_flag_WolfDownPull; } void offDownFlg() { mFlags &= ~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); } void offWolfNoLock() { mFlags &= ~fopEn_flag_WolfNoLock; } void offHeadLockFlg() { mFlags &= ~fopEn_flag_HeadLock; } diff --git a/src/d/actor/d_a_e_dn.cpp b/src/d/actor/d_a_e_dn.cpp index 7c62b43b46..f547d690e5 100644 --- a/src/d/actor/d_a_e_dn.cpp +++ b/src/d/actor/d_a_e_dn.cpp @@ -21,18 +21,56 @@ public: void genMessage(JORMContext*); - /* 0x04 */ s8 field_0x4; + /* 0x04 */ s8 no; /* 0x08 */ f32 model_size; // 基本サイズ /* 0x0C */ f32 movement_speed; // 移動速度 /* 0x10 */ f32 dash_speed; // 突進速度 /* 0x14 */ f32 battle_init_range; // 戦闘開始範囲 /* 0x18 */ f32 attack_init_range; // 攻撃開始範囲 - /* 0x1C */ s16 field_0x1c; // 防御静止間 - /* 0x1E */ s16 field_0x1e; // 魂抜間 弱 - /* 0x20 */ s16 field_0x20; // 魂抜間 強 + /* 0x1C */ s16 defense_pause_time; // 防御静止間 + /* 0x1E */ s16 soul_disappear_time_weak; // 魂抜間 弱 + /* 0x20 */ s16 soul_disappear_time_strong; // 魂抜間 強 /* 0x22 */ u8 field_0x22; /* 0x23 */ u8 invulnerable; // 不死身 - /* 0x24 */ u8 field_0x24; // 学習なし + /* 0x24 */ u8 no_learn; // 学習なし +}; + +enum Joint { + /* 0x00 */ JNT_WORLD_ROOT, + /* 0x01 */ JNT_BACKBONE01, + /* 0x02 */ JNT_BACKBONE02, + /* 0x03 */ JNT_NECK01, + /* 0x04 */ JNT_NECK02, + /* 0x05 */ JNT_FIN, + /* 0x06 */ JNT_HEAD, + /* 0x07 */ JNT_JAW1, + /* 0x08 */ JNT_JAW2, + /* 0x09 */ JNT_TONGUE, + /* 0x0A */ JNT_SHOULDERL, + /* 0x0B */ JNT_ARML1, + /* 0x0C */ JNT_ARML2, + /* 0x0D */ JNT_HANDL, + /* 0x0E */ JNT_FINGERL1, + /* 0x0F */ JNT_FINGERL2, + /* 0x10 */ JNT_SHOULDERR, + /* 0x11 */ JNT_ARMR1, + /* 0x12 */ JNT_ARMR2, + /* 0x13 */ JNT_HANDR1, + /* 0x14 */ JNT_FINGERR1, + /* 0x15 */ JNT_FINGERR2, + /* 0x16 */ JNT_WAIST, + /* 0x17 */ JNT_LEGL1, + /* 0x18 */ JNT_LEGL2, + /* 0x19 */ JNT_LEGL3, + /* 0x1A */ JNT_FOOTL, + /* 0x1B */ JNT_LEGR1, + /* 0x1C */ JNT_LEGR2, + /* 0x1D */ JNT_LEGR3, + /* 0x1E */ JNT_FOOTR, + /* 0x1F */ JNT_TAIL01, + /* 0x20 */ JNT_TAIL02, + /* 0x21 */ JNT_TAIL03, + /* 0x22 */ JNT_TAIL04, }; enum Action { @@ -92,41 +130,57 @@ enum Animation { }; daE_DN_HIO_c::daE_DN_HIO_c() { - field_0x4 = -1; + no = -1; model_size = 1.1f; movement_speed = 7.5f; dash_speed = 25.0f; battle_init_range = 300.0f; attack_init_range = 350.0f; - field_0x1c = 3; - field_0x1e = 40; - field_0x20 = 80; + defense_pause_time = 3; + soul_disappear_time_weak = 40; + soul_disappear_time_strong = 80; field_0x22 = 1; invulnerable = 0; - field_0x24 = 0; + no_learn = 0; } +#if DEBUG +void daE_DN_HIO_c::genMessage(JORMContext* ctx) { + ctx->genLabel(" リザードマン", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("基本サイズ", &model_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("突進速度", &dash_speed, 0.0f, 40.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("戦闘開始範囲", &battle_init_range, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("攻撃開始範囲", &attack_init_range, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genCheckBox("不死身", &invulnerable, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genCheckBox("学習なし", &no_learn, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("魂抜間 弱", &soul_disappear_time_weak, 0, 100, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("魂抜間 強", &soul_disappear_time_strong, 0, 100, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("防御静止間", &defense_pause_time, 0, 20, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} +#endif + static void dn_disappear(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - cXyz sp1c, sp28; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, pos; - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); - sp1c.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp1c, &sp28); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_BACKBONE02), *calc_mtx); + work.set(0.0f, 0.0f, 0.0f); + MtxPosition(&work, &pos); - fopAcM_createDisappear(a_this, &sp28, 13, 0, 21); - fopAcM_delete(a_this); + fopAcM_createDisappear(actor, &pos, 13, 0, 21); + fopAcM_delete(actor); - int swBit = fopAcM_GetParam(a_this) >> 24; + int swBit = (fopAcM_GetParam(actor) & 0xFF000000) >> 24; if (swBit != 0xFF) { - dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(actor)); } } -static void anm_init(e_dn_class* i_this, int i_anmID, f32 i_morf, u8 i_attr, f32 i_rate) { - i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_dn", i_anmID), i_attr, i_morf, +static void anm_init(e_dn_class* i_this, int i_anm_id, f32 i_morf, u8 i_attr, f32 i_rate) { + i_this->anm_p->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_dn", i_anm_id), i_attr, i_morf, i_rate, 0.0f, -1.0f); - i_this->mAnmID = i_anmID; + i_this->anm_no = i_anm_id; } static int nodeCallBack(J3DJoint* i_joint, int param_2) { @@ -137,64 +191,64 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) { if (i_this != NULL) { MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); - if (jointNo != 0) { - if (jointNo == 22) { - cMtx_YrotM(*calc_mtx, i_this->field_0x832); - cMtx_ZrotM(*calc_mtx, i_this->field_0x7f0 + (i_this->field_0x830 - i_this->field_0x762[2].x)); - } else if (jointNo == 23) { - cMtx_YrotM(*calc_mtx, i_this->field_0x7fa); - } else if (jointNo == 24) { + if (jointNo != JNT_WORLD_ROOT) { + if (jointNo == JNT_WAIST) { + cMtx_YrotM(*calc_mtx, (s16)i_this->field_0x830.y); + cMtx_ZrotM(*calc_mtx, i_this->jnt_waist_z_rot + (-i_this->field_0x762[2].x + i_this->field_0x830.x)); + } else if (jointNo == JNT_LEGL1) { + cMtx_YrotM(*calc_mtx, i_this->jnt_legl1_y_rot); + } else if (jointNo == JNT_LEGL2) { cMtx_ZrotM(*calc_mtx, i_this->field_0x7fc[0]); - } else if (jointNo == 27) { + } else if (jointNo == JNT_LEGR1) { cMtx_YrotM(*calc_mtx, i_this->field_0x7fc[1]); - } else if (jointNo == 28) { + } else if (jointNo == JNT_LEGR2) { cMtx_ZrotM(*calc_mtx, i_this->field_0x7fc[2]); - } else if (jointNo == 2) { - cMtx_YrotM(*calc_mtx, (i_this->field_0x6fa / 2) + (i_this->field_0x762[1].y + - i_this->field_0x6f6)); + } else if (jointNo == JNT_BACKBONE02) { + cMtx_YrotM(*calc_mtx, (i_this->field_0x6fa / 2) + (-i_this->field_0x6f6 + i_this->field_0x762[1].y)); cMtx_ZrotM(*calc_mtx, i_this->field_0x762[1].x + i_this->field_0x7ec[1]); - } else if (jointNo == 3 || jointNo == 4) { - cMtx_YrotM(*calc_mtx, i_this->field_0x762[0].y + (i_this->field_0x6fa - i_this->field_0x6f6)); - cMtx_ZrotM(*calc_mtx, i_this->field_0x7ec[0] + (i_this->field_0x762[0].x - i_this->field_0x6f8)); - } else if (jointNo == 11) { - cMtx_ZrotM(*calc_mtx, i_this->field_0x762[3].y + i_this->field_0x7f2); - } else if (jointNo == 12) { - cMtx_ZrotM(*calc_mtx, i_this->field_0x762[4].y + i_this->field_0x7f4); - } else if (jointNo == 17) { - cMtx_ZrotM(*calc_mtx, i_this->field_0x762[5].y + i_this->field_0x7f6); - } else if (jointNo == 18) { - cMtx_ZrotM(*calc_mtx, i_this->field_0x762[6].y + i_this->field_0x7f8); - } else if (jointNo >= 31 && jointNo <= 34) { - cMtx_YrotM(*calc_mtx, i_this->field_0x762[jointNo - 2].x + i_this->field_0x826); - cMtx_ZrotM(*calc_mtx, i_this->field_0x762[jointNo - 3].z); + } else if (jointNo == JNT_NECK01 || jointNo == JNT_NECK02) { + cMtx_YrotM(*calc_mtx, i_this->field_0x762[0].y + (-i_this->field_0x6f6 + i_this->field_0x6fa)); + cMtx_ZrotM(*calc_mtx, i_this->field_0x7ec[0] + (-i_this->field_0x6f8 + i_this->field_0x762[0].x)); + } else if (jointNo == JNT_ARML1) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[3].y + i_this->jnt_arml1_z_rot_offset); + } else if (jointNo == JNT_ARML2) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[4].y + i_this->jnt_arml2_z_rot_offset); + } else if (jointNo == JNT_ARMR1) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[5].y + i_this->jnt_armr1_z_rot_offset); + } else if (jointNo == JNT_ARMR2) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[6].y + i_this->jnt_armr2_z_rot_offset); + } else if (jointNo >= JNT_TAIL01 && jointNo <= JNT_TAIL04) { + cMtx_YrotM(*calc_mtx, i_this->field_0x80e[jointNo - 31].y + i_this->jnt_tail_y_rot_offset); + cMtx_ZrotM(*calc_mtx, (s16)i_this->field_0x80e[jointNo - 31].x); } } - if (i_this->field_0x80a != 0) { + if (i_this->death_jnt_rot != 0) { if ((jointNo & 1) != 0) { - cMtx_YrotM(*calc_mtx, i_this->field_0x80a); + cMtx_YrotM(*calc_mtx, i_this->death_jnt_rot); } else if ((jointNo & 2) != 0) { - cMtx_XrotM(*calc_mtx, i_this->field_0x80a); + cMtx_XrotM(*calc_mtx, i_this->death_jnt_rot); } else if ((jointNo & 4) != 0) { - cMtx_ZrotM(*calc_mtx, i_this->field_0x80a); + cMtx_ZrotM(*calc_mtx, i_this->death_jnt_rot); } } model->setAnmMtx(jointNo, *calc_mtx); MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); - if (jointNo == 0) { + if (jointNo == TREG_S(0)) { MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); - cMtx_YrotM(*calc_mtx, 0); - cMtx_XrotM(*calc_mtx, 0); - cMtx_ZrotM(*calc_mtx, 0); + cMtx_YrotM(*calc_mtx, TREG_S(1)); + cMtx_XrotM(*calc_mtx, TREG_S(2)); + cMtx_ZrotM(*calc_mtx, TREG_S(3)); model->setAnmMtx(jointNo, *calc_mtx); MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); } - if (jointNo == 0) { + if (jointNo == TREG_S(4)) { MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); - cMtx_YrotM(*calc_mtx, 0); - cMtx_XrotM(*calc_mtx, 0); - cMtx_ZrotM(*calc_mtx, 0); + cMtx_YrotM(*calc_mtx, TREG_S(5)); + cMtx_XrotM(*calc_mtx, TREG_S(6)); + cMtx_ZrotM(*calc_mtx, TREG_S(7)); model->setAnmMtx(jointNo, *calc_mtx); MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); } @@ -205,76 +259,74 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) { } static int daE_DN_Draw(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - - if (i_this->field_0x10d8 != 0) { + if (i_this->status != 0) { return 1; } - J3DModel* model = i_this->mpModelMorf->getModel(); - g_env_light.settingTevStruct(0, &a_this->current.pos, &a_this->tevStr); - g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr); + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - J3DModelData* modelData; - J3DMaterial* matNode_p; - if (i_this->field_0x6c4 != 0) { - modelData = model->getModelData(); + J3DModel* model = i_this->anm_p->getModel(); + g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &actor->tevStr); + + if (i_this->death_flag != 0) { + J3DModelData* modelData = model->getModelData(); for (u16 i = 0; i < modelData->getMaterialNum(); i++) { - matNode_p = modelData->getMaterialNodePointer(i); - matNode_p->getTevColor(0)->r = i_this->field_0x6c8; - matNode_p->getTevColor(0)->g = i_this->field_0x6c8; - matNode_p->getTevColor(0)->b = i_this->field_0x6c8; + J3DMaterial* matNode_p = modelData->getMaterialNodePointer(i); + matNode_p->getTevColor(0)->r = i_this->color; + matNode_p->getTevColor(0)->g = i_this->color; + matNode_p->getTevColor(0)->b = i_this->color; } } - i_this->mpModelMorf->entryDL(); + i_this->anm_p->entryDL(); - if (i_this->field_0x6c4 != 0) { - modelData = model->getModelData(); + if (i_this->death_flag != 0) { + J3DModelData* modelData = model->getModelData(); for (u16 i = 0; i < modelData->getMaterialNum(); i++) { - matNode_p = modelData->getMaterialNodePointer(i); + J3DMaterial* matNode_p = modelData->getMaterialNodePointer(i); matNode_p->getTevColor(0)->r = 0; matNode_p->getTevColor(0)->g = 0; matNode_p->getTevColor(0)->b = 0; } } - g_env_light.setLightTevColorType_MAJI(i_this->mpKnifeModel, &a_this->tevStr); - mDoExt_modelUpdateDL(i_this->mpKnifeModel); + g_env_light.setLightTevColorType_MAJI(i_this->knife_model, &actor->tevStr); + mDoExt_modelUpdateDL(i_this->knife_model); - if (i_this->mpSkullModel != NULL) { - g_env_light.setLightTevColorType_MAJI(i_this->mpSkullModel, &a_this->tevStr); - mDoExt_modelUpdateDL(i_this->mpSkullModel); + if (i_this->skull_model != NULL) { + g_env_light.setLightTevColorType_MAJI(i_this->skull_model, &actor->tevStr); + mDoExt_modelUpdateDL(i_this->skull_model); } - g_env_light.setLightTevColorType_MAJI(i_this->mpShieldModel, &a_this->tevStr); - mDoExt_modelUpdateDL(i_this->mpShieldModel); + g_env_light.setLightTevColorType_MAJI(i_this->tate_model, &actor->tevStr); + mDoExt_modelUpdateDL(i_this->tate_model); - cXyz sp50; - sp50.set(a_this->current.pos.x, a_this->current.pos.y + 50.0f, a_this->current.pos.z); - i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &sp50, 950.0f, 0.0f, - a_this->current.pos.y, i_this->mObjAcch.GetGroundH(), - i_this->mObjAcch.m_gnd, &a_this->tevStr, 0, 1.0f, + cXyz shadow_pos; + shadow_pos.set(actor->current.pos.x, actor->current.pos.y + 50.0f + BREG_F(18), actor->current.pos.z); + i_this->shadow_key = dComIfGd_setShadow(i_this->shadow_key, 1, model, &shadow_pos, BREG_F(19) + 950.0f, 0.0f, + actor->current.pos.y, i_this->objacch.GetGroundH(), + i_this->objacch.m_gnd, &i_this->actor.tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); - dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpKnifeModel); - if (i_this->mpSkullModel != NULL) { - dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpSkullModel); + dComIfGd_addRealShadow(i_this->shadow_key, i_this->knife_model); + if (i_this->skull_model != NULL) { + dComIfGd_addRealShadow(i_this->shadow_key, i_this->skull_model); } - dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpShieldModel); + dComIfGd_addRealShadow(i_this->shadow_key, i_this->tate_model); return 1; } static BOOL other_bg_check(e_dn_class* i_this, fopAc_ac_c* i_actor) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; dBgS_LinChk lin_chk; - cXyz start, end; + cXyz unused, start, end; end = i_actor->current.pos; end.y += 100.0f; - start = a_this->current.pos; - start.y = a_this->eyePos.y; - lin_chk.Set(&start, &end, a_this); + start = actor->current.pos; + start.y = actor->eyePos.y; + lin_chk.Set(&start, &end, actor); if (dComIfG_Bgsp().LineCross(&lin_chk)) { return TRUE; @@ -283,17 +335,17 @@ static BOOL other_bg_check(e_dn_class* i_this, fopAc_ac_c* i_actor) { return FALSE; } -static BOOL other_bg_check2(e_dn_class* i_this, cXyz* param_2) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; +static BOOL other_bg_check2(e_dn_class* i_this, cXyz* i_pos) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; dBgS_LinChk lin_chk; - cXyz start, end; + cXyz unused, start, end; - end = *param_2; + end = *i_pos; end.y += 100.0f; - start = a_this->current.pos; - start.y = a_this->eyePos.y; + start = actor->current.pos; + start.y = actor->eyePos.y; - lin_chk.Set(&start, &end, a_this); + lin_chk.Set(&start, &end, actor); if (dComIfG_Bgsp().LineCross(&lin_chk)) { return TRUE; @@ -321,12 +373,13 @@ static void* s_b_sub(void* i_actor, void* i_data) { } static dBomb_c* search_bomb(e_dn_class* i_this, int param_2) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - dBomb_c* bomb; - if ((i_this->field_0x744 & 0x10000000) == 0) { + if ((i_this->learn & 0x10000000) == 0) { return NULL; } + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + dBomb_c* bomb; + target_info_count = 0; for (int i = 0; i < 10; i++) { target_info[i] = NULL; @@ -336,30 +389,31 @@ static dBomb_c* search_bomb(e_dn_class* i_this, int param_2) { f32 threshold = 50.0f; if (target_info_count != 0) { - cXyz sp44, sp50, sp5c; + cXyz work, bomb_dist, sp5c; for (int i = 0; i < target_info_count;) { bomb = (dBomb_c*)target_info[i]; - sp44.x = bomb->current.pos.x - a_this->eyePos.x; - sp44.y = 50.0f + bomb->current.pos.y - a_this->eyePos.y; - sp44.z = bomb->current.pos.z - a_this->eyePos.z; - sp50.x = bomb->current.pos.x - a_this->current.pos.x; - sp50.y = bomb->current.pos.y - a_this->current.pos.y; - sp50.z = bomb->current.pos.z - a_this->current.pos.z; + work.x = bomb->current.pos.x - actor->eyePos.x; + work.y = 50.0f + bomb->current.pos.y - actor->eyePos.y; + work.z = bomb->current.pos.z - actor->eyePos.z; + bomb_dist.x = bomb->current.pos.x - actor->current.pos.x; + bomb_dist.y = bomb->current.pos.y - actor->current.pos.y; + bomb_dist.z = bomb->current.pos.z - actor->current.pos.z; - if (sp44.abs() < threshold && !(sp50.abs() > i_this->mPlayerDistance + 30.0f) && (!other_bg_check(i_this, bomb) || !param_2)) { + if (work.abs() < threshold && !(bomb_dist.abs() > i_this->pl_dir + 30.0f) && (!other_bg_check(i_this, bomb) || !param_2)) { if (param_2) { - if (fabsf(50.0f + bomb->current.pos.y - a_this->eyePos.y) <= 300.0f) { - s16 sVar1 = a_this->shape_angle.y - cM_atan2s(sp44.x, sp44.z); - if (sVar1 < 0) { - sVar1 = -1 * sVar1; + f32 absVal = fabsf(50.0f + bomb->current.pos.y - actor->eyePos.y); + if (absVal <= 300.0f) { + s16 angle = actor->shape_angle.y - cM_atan2s(work.x, work.z); + if (angle < 0) { + angle = -1 * angle; } - if ((u16)sVar1 < 20000) { + if ((u16)angle < 20000) { // ~110° return bomb; } - cMtx_YrotS(*calc_mtx, -a_this->shape_angle.y); - MtxPosition(&sp44, &sp5c); + cMtx_YrotS(*calc_mtx, -actor->shape_angle.y); + MtxPosition(&work, &sp5c); if (fabsf(sp5c.x) < 500.0f && fabsf(sp5c.y) < 300.0f && sp5c.z > -125.0f && sp5c.z < 500.0f) { return bomb; @@ -387,42 +441,44 @@ static dBomb_c* search_bomb(e_dn_class* i_this, int param_2) { } static dBomb_c* bomb_view_check(e_dn_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; return search_bomb(i_this, TRUE); } static dBomb_c* bomb_check(e_dn_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; return search_bomb(i_this, FALSE); } static BOOL player_way_check(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - - s16 sVar1 = a_this->shape_angle.y - dComIfGp_getPlayer(0)->shape_angle.y; - if ((int)sVar1 < 0) { - sVar1 = -sVar1; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + s16 way = actor->shape_angle.y - player->shape_angle.y; + if (way < 0) { + way = way * -1; } - if (((u32)sVar1 & 0xFFFF) < 0x6000) { + if ((u32)((s16)way & 0xFFFF) < 0x6000) { return FALSE; } return TRUE; } -static int pl_check(e_dn_class* i_this, f32 param_2, s16 param_3) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; +static int pl_check(e_dn_class* i_this, f32 search_area, s16 search_angle) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - if (i_this->mPlayerDistance < param_2) { - s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; - if (sVar1 < param_3 && sVar1 > (s16)-param_3 && !other_bg_check(i_this, player)) { + if (i_this->pl_dir < search_area) { + s16 angle = actor->shape_angle.y - i_this->search_angle_y; + if (angle < search_angle && angle > (s16)-search_angle && !other_bg_check(i_this, player)) { return 1; } } for (int i = 0; i <= 2; i++) { - if (i_this->field_0xa9c[i].ChkCoHit() != 0) { - if (player == dCc_GetAc(i_this->field_0xa9c[i].GetCoHitObj()->GetAc())) { + if (i_this->cc_sph[i].ChkCoHit() != 0) { + if (player == dCc_GetAc(i_this->cc_sph[i].GetCoHitObj()->GetAc())) { return 2; } } @@ -432,63 +488,63 @@ static int pl_check(e_dn_class* i_this, f32 param_2, s16 param_3) { } static BOOL move_gake_check(e_dn_class* i_this, f32 param_2, s8 param_3) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; dBgS_GndChk gnd_chk; - cXyz sp84, sp90; + cXyz work, pos; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp84.x = 0.0f; - sp84.y = 100.0f; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = 0.0f; + work.y = 100.0f; if (param_3 != 0) { - sp84.z = -param_2; + work.z = -param_2; } else { - sp84.z = param_2; + work.z = param_2; } - MtxPosition(&sp84, &sp90); - sp90 += a_this->current.pos; - gnd_chk.SetPos(&sp90); + MtxPosition(&work, &pos); + pos += actor->current.pos; + gnd_chk.SetPos(&pos); - if (a_this->current.pos.y - dComIfG_Bgsp().GroundCross(&gnd_chk) > 300.0f) { + if (actor->current.pos.y - dComIfG_Bgsp().GroundCross(&gnd_chk) > 300.0f) { return TRUE; } return FALSE; } -static BOOL jump_pos_check(e_dn_class* i_this, cXyz* param_2) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; +static BOOL jump_pos_check(e_dn_class* i_this, cXyz* i_pos) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; dBgS_GndChk gnd_chk; - cXyz sp94, spa0; - f32 fVar1 = 300.0f; + cXyz work, new_pos; + f32 z_offset = KREG_F(16) + 300.0f; - cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); - sp94.x = 0.0f; - sp94.y = 200.0f; + cMtx_YrotS(*calc_mtx, i_this->search_angle_y); + work.x = 0.0f; + work.y = 200.0f; int i = 0; - while (i < 10) { - sp94.z = fVar1; - MtxPosition(&sp94, &spa0); - spa0 += a_this->current.pos; - gnd_chk.SetPos(&spa0); - spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + while (i < KREG_S(7) + 10) { + work.z = z_offset; + MtxPosition(&work, &new_pos); + new_pos += actor->current.pos; + gnd_chk.SetPos(&new_pos); + new_pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk); - if ((a_this->current.pos.y - spa0.y) < 200.0f) { - *param_2 = spa0; - sp94.z += 200.0f; - MtxPosition(&sp94, &spa0); - spa0 += a_this->current.pos; - gnd_chk.SetPos(&spa0); - spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + if ((actor->current.pos.y - new_pos.y) < 200.0f) { + *i_pos = new_pos; + work.z += KREG_F(18) + 200.0f; + MtxPosition(&work, &new_pos); + new_pos += actor->current.pos; + gnd_chk.SetPos(&new_pos); + new_pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk); - if ((a_this->current.pos.y - spa0.y) < 200.0f) { - *param_2 = spa0; + if ((actor->current.pos.y - new_pos.y) < 200.0f) { + *i_pos = new_pos; } return TRUE; } - fVar1 += 50.0f; + z_offset += 50.0f; i++; } @@ -496,141 +552,141 @@ static BOOL jump_pos_check(e_dn_class* i_this, cXyz* param_2) { } static void e_dn_stay(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - cXyz sp30; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; i_this->field_0x6f4 = 5; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); - i_this->mMode = 1; + i_this->mode = 1; // fallthrough case 1: - if (fopAcM_otoCheck(a_this, 2000.0f) || daPy_getPlayerActorClass()->checkWolfBark()) { + if (fopAcM_otoCheck(actor, 2000.0f) || daPy_getPlayerActorClass()->checkWolfBark()) { SND_INFLUENCE* sound = dKy_Sound_get(); - sp30 = sound->position - a_this->current.pos; - if (cM_atan2s(sp30.y, JMAFastSqrt(sp30.x * sp30.x + sp30.z * sp30.z)) > 0x1000) { - i_this->mMode = 5; + cXyz posDelta = sound->position - actor->current.pos; + s16 angle = cM_atan2s(posDelta.y, JMAFastSqrt(posDelta.x * posDelta.x + posDelta.z * posDelta.z)); + if (angle > 0x1000) { // 22.5° + i_this->mode = 5; } else { - i_this->mMode = 2; + i_this->mode = 2; } - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 10.0f; - i_this->field_0x738 = sound->position; + i_this->timer[0] = cM_rndF(10.0f) + 10.0f; + i_this->find_pos = sound->position; } break; case 2: - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); - i_this->mMode = 3; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mode = 3; } break; case 3: - if (i_this->mpModelMorf->isStop()) { - if (other_bg_check2(i_this, &i_this->field_0x738)) { - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; - i_this->mMode = 4; + if (i_this->anm_p->isStop()) { + if (other_bg_check2(i_this, &i_this->find_pos)) { + i_this->timer[0] = cM_rndF(10.0f) + 20.0f; + i_this->mode = 4; } else { - i_this->mAction = ACTION_OTOREAC; - i_this->mMode = 0; + i_this->action = ACTION_OTOREAC; + i_this->mode = 0; } } break; case 4: - if (i_this->field_0x6e0[0] == 0) { - i_this->mMode = 10; - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 30.0f; + if (i_this->timer[0] == 0) { + i_this->mode = 10; + i_this->timer[0] = cM_rndF(10.0f) + 30.0f; anm_init(i_this, ANM_WAIT_03, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.5f); } break; case 5: - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); - i_this->mMode = 6; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mode = 6; } break; case 6: - if (i_this->mpModelMorf->isStop()) { - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; - i_this->mMode = 7; + if (i_this->anm_p->isStop()) { + i_this->timer[0] = cM_rndF(10.0f) + 20.0f; + i_this->mode = 7; } break; case 7: - if (i_this->field_0x6e0[0] == 0) { - i_this->mMode = 10; - i_this->field_0x6e0[0] = cM_rndF(40.0f) + 50.0f; + if (i_this->timer[0] == 0) { + i_this->mode = 10; + i_this->timer[0] = cM_rndF(40.0f) + 50.0f; anm_init(i_this, ANM_WAIT_04, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.3f); - i_this->mpModelMorf->setFrame(cM_rndF(75.0f)); + i_this->anm_p->setFrame(cM_rndF(75.0f)); } break; case 8: - if (i_this->mpModelMorf->isStop()) { - i_this->mMode = 0; + if (i_this->anm_p->isStop()) { + i_this->mode = 0; } break; case 10: - if (i_this->field_0x6e0[0] == 0) { - i_this->mMode = 0; + if (i_this->timer[0] == 0) { + i_this->mode = 0; } } - if ((i_this->field_0x6cc & 15) == 0) { - if (pl_check(i_this, i_this->field_0x6d8, 0x4000) != 0) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = -10; - i_this->field_0x6e0[0] = 60; + if ((i_this->frame_counter & 15) == 0) { // Every 16 frames + if (pl_check(i_this, i_this->pl_range, 0x4000) != 0) { // 90° + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = -10; + i_this->timer[0] = 60; } else if (bomb_view_check(i_this) != NULL) { - i_this->mAction = ACTION_BOMB_ACTION; - i_this->mMode = 0; + i_this->action = ACTION_BOMB_ACTION; + i_this->mode = 0; } } } static void e_dn_otoreac(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - cXyz sp40, sp4c; - f32 fVar1 = 0.0f; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, unused; + f32 dash_speed = 0.0f; i_this->field_0x6f4 = 2; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.2f) + 1.5f); - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; - i_this->mMode = 1; + i_this->timer[0] = cM_rndF(10.0f) + 20.0f; + i_this->mode = 1; // fallthrough case 1: - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); - i_this->mMode = 2; + i_this->mode = 2; } break; case 2: - fVar1 = l_HIO.dash_speed; - if ((i_this->field_0x6cc & 3) == 0) { - if ((i_this->field_0x6cc & 4) != 0) { - i_this->field_0x10e4 = 1; + dash_speed = l_HIO.dash_speed; + if ((i_this->frame_counter & 3) == 0) { // Every 4 frames + if ((i_this->frame_counter & 4) != 0) { // Every 5 frames + i_this->set_smoke_flag = 1; } else { - i_this->field_0x10e4 = 2; + i_this->set_smoke_flag = 2; } } - sp40 = i_this->field_0x738 - a_this->current.pos; - cLib_addCalcAngleS2(&a_this->current.angle.y, cM_atan2s(sp40.x, sp40.z), 2, 0xC00); - if (sp40.abs() < 250.0f || i_this->mObjAcch.ChkWallHit() != 0) { - i_this->mAction = ACTION_NORMAL; - i_this->mMode = 0; - i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + work = i_this->find_pos - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(work.x, work.z), 2, 0xC00); + if (work.abs() < 250.0f || i_this->objacch.ChkWallHit() != 0) { + i_this->action = ACTION_NORMAL; + i_this->mode = 0; + i_this->timer[0] = cM_rndF(50.0f) + 50.0f; anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; @@ -638,322 +694,330 @@ static void e_dn_otoreac(e_dn_class* i_this) { } - cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); - if ((i_this->field_0x6cc & 15) == 0) { - if (pl_check(i_this, i_this->field_0x6d8, 0x4000) != 0) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = -10; - i_this->field_0x6e0[0] = 60; + cLib_addCalc2(&actor->speedF, dash_speed, 1.0f, 5.0f); + if ((i_this->frame_counter & 15) == 0) { // Every 16 frames + if (pl_check(i_this, i_this->pl_range, 0x4000) != 0) { // 90° + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = -10; + i_this->timer[0] = 60; } else if (bomb_view_check(i_this) != NULL) { - i_this->mAction = ACTION_BOMB_ACTION; - i_this->mMode = 0; + i_this->action = ACTION_BOMB_ACTION; + i_this->mode = 0; } } } static void e_dn_bomb_action(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - s16 sVar2; - cXyz sp3c, sp48; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + s16 angle; + cXyz work, bomb_pos_target; dBomb_c* bomb = bomb_check(i_this); if (bomb == NULL) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; return; } - sp3c.x = bomb->current.pos.x - a_this->current.pos.x; - sp3c.z = bomb->current.pos.z - a_this->current.pos.z; - s16 sVar1 = cM_atan2s(sp3c.x, sp3c.z); - f32 fVar1 = 0.0f; + work.x = bomb->current.pos.x - actor->current.pos.x; + work.z = bomb->current.pos.z - actor->current.pos.z; + s16 target_angle_y = cM_atan2s(work.x, work.z); + f32 dash_speed = 0.0f; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND_BOMB, -1); - i_this->mMode = 1; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_FIND_BOMB, -1); + i_this->mode = 1; break; case 1: - if (i_this->mpModelMorf->isStop()) { - i_this->mMode = 2; + if (i_this->anm_p->isStop()) { + i_this->mode = 2; } break; case 2: - i_this->mMode = 3; + i_this->mode = 3; anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->field_0x6e0[1] = cM_rndF(10.0f) + 10.0f; + i_this->timer[1] = cM_rndF(10.0f) + 10.0f; // fallthrough case 3: - if (i_this->field_0x6e0[1] == 0 && bomb->speedF < 0.1f) { - i_this->mMode = 4; + if (i_this->timer[1] == 0 && bomb->speedF < 0.1f) { + i_this->mode = 4; anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); } break; case 4: - if (i_this->field_0x5b7 == 1 && bomb->speedF < 0.1f && !bomb->checkStateCarry() && JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 250.0f) { - sVar2 = i_this->mYAngleToPlayer - a_this->shape_angle.y; - if (sVar2 < 0x4000 && sVar2 > -0x4000) { - i_this->mMode = 10; + if (i_this->arg1 == 1 && bomb->speedF < 0.1f && !bomb->checkStateCarry() && JMAFastSqrt(work.x * work.x + work.z * work.z) < 250.0f) { + angle = i_this->search_angle_y - actor->shape_angle.y; + if (angle < 0x4000 && angle > -0x4000) { // ±90° + i_this->mode = 10; break; } } - sVar1 += 0x8000; - fVar1 = l_HIO.dash_speed; - if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) > 600.0f) { - i_this->mMode = 5; + target_angle_y += 0x8000; // 180° + dash_speed = l_HIO.dash_speed; + if (JMAFastSqrt(work.x * work.x + work.z * work.z) > 600.0f) { + i_this->mode = 5; anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; case 5: - i_this->mSound.startCreatureSoundLevel(Z2SE_EN_DN_V_LOOK_BOMB, 0, -1); - sVar1 = i_this->mYAngleToPlayer; - if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 500.0f) { - i_this->mMode = 2; + i_this->sound.startCreatureSoundLevel(Z2SE_EN_DN_V_LOOK_BOMB, 0, -1); + target_angle_y = i_this->search_angle_y; + if (JMAFastSqrt(work.x * work.x + work.z * work.z) < 500.0f) { + i_this->mode = 2; } break; case 10: i_this->field_0x6f2 = 0; - fVar1 = l_HIO.dash_speed; - if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 100.0f) { - i_this->field_0x6e0[0] = 20; - i_this->mMode = 11; + dash_speed = l_HIO.dash_speed; + if (JMAFastSqrt(work.x * work.x + work.z * work.z) < 100.0f) { + i_this->timer[0] = 20; + i_this->mode = 11; anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_NONE, cM_rndFX(0.05f) + 1.0f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KICK_BOMB, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_KICK_BOMB, -1); } if (bomb->speedF > 0.1f) { - i_this->mMode = 2; + i_this->mode = 2; } break; case 11: i_this->field_0x6f2 = 0; - sVar1 = i_this->mYAngleToPlayer; + target_angle_y = i_this->search_angle_y; - if (i_this->field_0x6e0[0] >= 10) { - cMtx_YrotS(*calc_mtx, sVar1); - sp3c.x = -30.0f; - sp3c.y = 0.0f; - sp3c.z = 60.0f; - MtxPosition(&sp3c, &sp48); - sp48 += a_this->current.pos; + if (i_this->timer[0] >= 10) { + cMtx_YrotS(*calc_mtx, target_angle_y); + work.x = TREG_F(15) + -30.0f; + work.y = 0.0f; + work.z = TREG_F(16) + 60.0f; + MtxPosition(&work, &bomb_pos_target); + bomb_pos_target += actor->current.pos; - cLib_addCalc2(&bomb->current.pos.x, sp48.x, 1.0f, 15.0f); - cLib_addCalc2(&bomb->current.pos.z, sp48.z, 1.0f, 15.0f); + cLib_addCalc2(&bomb->current.pos.x, bomb_pos_target.x, 1.0f, 15.0f); + cLib_addCalc2(&bomb->current.pos.z, bomb_pos_target.z, 1.0f, 15.0f); - if (i_this->field_0x6e0[0] == 10) { + if (i_this->timer[0] == 10) { bomb->speedF = 30.0f; bomb->speed.y = 30.0f; - bomb->current.angle.y = a_this->shape_angle.y; + bomb->current.angle.y = actor->shape_angle.y; } } - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->mMode = 5; + i_this->mode = 5; } } - cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); - cLib_addCalcAngleS2(&a_this->current.angle.y, sVar1, 4, 0x1000); + cLib_addCalc2(&actor->speedF, dash_speed, 1.0f, 5.0f); + cLib_addCalcAngleS2(&actor->current.angle.y, target_angle_y, 4, 0x1000); i_this->field_0x6f4 = 2; - i_this->field_0x738 = bomb->current.pos; + i_this->find_pos = bomb->current.pos; } static void e_dn_normal(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp44, sp50; - f32 fVar1 = 0.0f; - s16 sVar1 = 0x4000; - s16 sVar2, sVar3; + f32 movement_speed = 0.0f; + s16 search_angle, angle, angle_delta; + search_angle = 0x4000; // 90° - switch (i_this->mMode) { + switch (i_this->mode) { case 0: case 1: case 2: - if (i_this->field_0x6e0[0] == 0) { - if (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)) { - sVar2 = cM_rndFX(10000.0f) + 32768.0f; - i_this->field_0x6e0[1] = 40; + if (i_this->timer[0] == 0) { + if (fopAcM_wayBgCheck(actor, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)) { + angle = cM_rndFX(10000.0f) + 32768.0f; + i_this->timer[1] = 40; } else { - sp50.x = a_this->home.pos.x + cM_rndFX(600.0f); - sp50.y = a_this->home.pos.y; - sp50.z = a_this->home.pos.z + cM_rndFX(600.0f); - sp44 = sp50 - a_this->current.pos; + sp50.x = actor->home.pos.x + cM_rndFX(600.0f); + sp50.y = actor->home.pos.y; + sp50.z = actor->home.pos.z + cM_rndFX(600.0f); + sp44 = sp50 - actor->current.pos; - sVar2 = cM_atan2s(sp44.x, sp44.z) - a_this->current.angle.y; - if (sVar2 > 0x3000) { - sVar2 = 0x3000; - } else if (sVar2 < -0x3000) { - sVar2 = -0x3000; + angle = cM_atan2s(sp44.x, sp44.z) - actor->current.angle.y; + if (angle > 0x3000) { // 67.5° + angle = 0x3000; + } else if (angle < -0x3000) { + angle = -0x3000; } } - i_this->field_0x5d4 = a_this->current.angle.y + sVar2; + i_this->cur_angle_y_target = actor->current.angle.y + angle; anm_init(i_this, ANM_WALK, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->mMode = 3; - i_this->field_0x6e0[0] = cM_rndF(100.0f) + 100.0f; + i_this->mode = 3; + i_this->timer[0] = cM_rndF(100.0f) + 100.0f; } else { - sVar1 = 0x7000; + search_angle = 0x7000; // 157.5° } break; case 3: - fVar1 = l_HIO.movement_speed; - sVar2 = a_this->current.angle.y; - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x400); - sVar3 = a_this->current.angle.y - i_this->field_0x5d4; - if (sVar3 > 0x1000 || sVar3 < -0x1000) { - fVar1 = 0.0f; + movement_speed = l_HIO.movement_speed; + angle = actor->current.angle.y; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->cur_angle_y_target, 2, 0x400); + + /* If the actor is facing roughly 22.5° from the target y, stop moving */ + angle_delta = actor->current.angle.y - i_this->cur_angle_y_target; + if (angle_delta > 0x1000 || angle_delta < -0x1000) { + movement_speed = 0.0f; } - sVar2 -= a_this->current.angle.y; - sVar2 *= 2; - if (sVar2 > 0x1000) { - sVar2 = 0x1000; - } else if (sVar2 < -0x1000) { - sVar2 = -0x1000; + /* Calculate how much the actor turned */ + angle -= actor->current.angle.y; + /* Scale turn strength */ + angle *= (s16)(YREG_S(5) + 2); + + /* Ensure the targeted angle is no more than ±22.5° */ + s16 max_turn = YREG_S(6) + 0x1000; + if (angle > max_turn) { + angle = max_turn; + } else if (angle < (s16)-max_turn) { + angle = -max_turn; } - cLib_addCalcAngleS2(&i_this->field_0x826, sVar2, 2, 0x400); + cLib_addCalcAngleS2(&i_this->jnt_tail_y_rot_offset, angle, 2, 0x400); - if (i_this->field_0x6e0[0] == 0 || - (i_this->field_0x6e0[1] == 0 && (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)))) { - i_this->mMode = 2; - i_this->field_0x6e0[0] = cM_rndF(100.0f) + 50.0f; + if (i_this->timer[0] == 0 || + (i_this->timer[1] == 0 && (fopAcM_wayBgCheck(actor, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)))) { + i_this->mode = 2; + i_this->timer[0] = cM_rndF(100.0f) + 50.0f; anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; } - cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 3.0f); - BOOL bVar1 = fopAcM_otoCheck(a_this, 2000.0f) | daPy_getPlayerActorClass()->checkWolfBark(); - if ((i_this->field_0x6cc & 15) == 0 || bVar1) { - if (bVar1 || pl_check(i_this, i_this->field_0x6d8, sVar1) != 0) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = -10; - i_this->field_0x6e0[0] = 60; + cLib_addCalc2(&actor->speedF, movement_speed, 1.0f, 3.0f); + BOOL oto_check = fopAcM_otoCheck(actor, 2000.0f) | daPy_getPlayerActorClass()->checkWolfBark(); + /* Run the following checks every 16 frames or immediately if the above sound check is true */ + if ((i_this->frame_counter & 15) == 0 || oto_check) { + if (oto_check || pl_check(i_this, i_this->pl_range, search_angle) != 0) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = -10; + i_this->timer[0] = 60; } if (bomb_view_check(i_this) != NULL) { - i_this->mAction = ACTION_BOMB_ACTION; - i_this->mMode = 0; + i_this->action = ACTION_BOMB_ACTION; + i_this->mode = 0; } } } static void e_dn_drawback(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; fopAc_ac_c* player = dComIfGp_getPlayer(0); - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_DRAWBACK, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; - a_this->speedF = -5.0f; - i_this->field_0x6e8 = 10; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); - i_this->field_0x5d4 = player->shape_angle.y + 0x8000; + i_this->mode = 1; + actor->speedF = KREG_F(4) + -5.0f; + i_this->invulnerability_timer = 10; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); + i_this->cur_angle_y_target = player->shape_angle.y + 0x8000; // Target current angle towards player break; case 1: - a_this->onHeadLockFlg(); - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 4, 0x400); - cLib_addCalc0(&a_this->speedF, 1.0f, 0.1f); + i_this->actor.onHeadLockFlg(); + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->cur_angle_y_target, 4, 0x400); + cLib_addCalc0(&actor->speedF, 1.0f, KREG_F(5) + 0.1f); - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); } break; } - if (move_gake_check(i_this, 50.0f, 1)) { - i_this->mAction = ACTION_BACKDROP; - i_this->mMode = 0; + if (move_gake_check(i_this, KREG_F(9) + 50.0f, 1)) { + i_this->action = ACTION_BACKDROP; + i_this->mode = 0; } } static void e_dn_wolfbite(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - i_this->field_0x6e8 = 10; - cLib_addCalc0(&a_this->speedF, 1.0f, 2.0f); + i_this->invulnerability_timer = 10; + cLib_addCalc0(&actor->speedF, 1.0f, 2.0f); - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_HANGED, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); - a_this->health -= 10; + i_this->mode = 1; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); + actor->health -= (s16)10; break; case 1: - if (i_this->mpModelMorf->isStop()) { + if (i_this->anm_p->isStop()) { anm_init(i_this, ANM_HANGED_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->mMode = 2; + i_this->mode = 2; } break; case 2: - if (i_this->mAnmID == ANM_HANGED_DAMAGE) { - if (i_this->mpModelMorf->isStop()) { + if (i_this->anm_no == ANM_HANGED_DAMAGE) { + if (i_this->anm_p->isStop()) { anm_init(i_this, ANM_HANGED_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } } - if (a_this->health <= 0 || a_this->checkWolfBiteDamage()) { - a_this->offWolfBiteDamage(); + if (actor->health <= 0 || actor->checkWolfBiteDamage()) { + actor->offWolfBiteDamage(); anm_init(i_this, ANM_HANGED_DAMAGE, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - a_this->health -= 10; - if (a_this->health <= 0) { + actor->health -= (s16)10; + if (actor->health <= 0) { player->offWolfEnemyHangBite(); - i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - player->shape_angle.y; + i_this->field_0x750 = (actor->shape_angle.y - 0x8000) - player->shape_angle.y; i_this->field_0x74c = 150.0f; - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; i_this->field_0x724.y = player->shape_angle.y + 0x8000; - a_this->speed.y = 0.0f; + actor->speed.y = 0.0f; i_this->field_0x704 = -1.0f; - i_this->field_0x828 = 50; - i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 32); + i_this->unk_timer_4 = DREG_S(2) + 50; + i_this->sound.startCollisionSE(Z2SE_HIT_WOLFBITE, 32); i_this->field_0x710 = 1; - i_this->field_0x6e8 = 1000; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + i_this->invulnerability_timer = 1000; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); return; } - i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 30); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + i_this->sound.startCollisionSE(Z2SE_HIT_WOLFBITE, 30); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); } - if (!player->checkWolfEnemyHangBiteOwn(a_this)) { + if (!player->checkWolfEnemyHangBiteOwn(actor)) { anm_init(i_this, ANM_HANGED_BRUSH, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 3; + i_this->mode = 3; } break; case 3: - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); } } } static int way_check(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + s16 sVar1 = actor->shape_angle.y - i_this->search_angle_y; if (sVar1 <= 0x4000 && sVar1 >= -0x4000) { return 0; } @@ -969,10 +1033,10 @@ int learn_check; static void* shot_s_sub(void* i_actor, void* i_data) { e_dn_class* i_this = (e_dn_class*)i_data; - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; if ((fopAcM_IsActor(i_actor) && (learn_check & 0x80000000) != 0 && fopAcM_GetName(i_actor) == PROC_ARROW && (fopAcM_GetParam(i_actor) == 1 || fopAcM_GetParam(i_actor) == 2))) { - cXyz sp28(a_this->current.pos - ((fopAc_ac_c*)i_actor)->current.pos); + cXyz sp28(actor->current.pos - ((fopAc_ac_c*)i_actor)->current.pos); if (sp28.abs() < 1000.0f) { return i_actor; } @@ -982,431 +1046,441 @@ static void* shot_s_sub(void* i_actor, void* i_data) { } static void e_dn_fight_run(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp4c, sp58; f32 fVar1 = 0.0f; - int frame = i_this->mpModelMorf->getFrame(); + int frame = i_this->anm_p->getFrame(); + BOOL wayCheck; s8 sVar4 = 1; - if (pl_check(i_this, i_this->field_0x6d8 + 50.0f, 0x7FFF) == 0 && i_this->field_0x6e0[0] == 0) { - if (i_this->field_0x6ea == 0) { + if (pl_check(i_this, i_this->pl_range + 50.0f, 0x7FFF) == 0 && i_this->timer[0] == 0) { + if (i_this->unk_timer_1 == 0) { sVar4 = 0; } } else { - i_this->field_0x6ea = 40; + i_this->unk_timer_1 = 40; } - switch (i_this->mMode) { + switch (i_this->mode) { case -10: anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->field_0x6e0[1] = cM_rndF(10.0f) + 15.0f; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); - i_this->mMode = -9; + i_this->timer[1] = cM_rndF(10.0f) + 15.0f; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mode = -9; break; case -9: - cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); - if (i_this->field_0x6e0[1] == 0) { - i_this->mMode = 0; + cLib_addCalc0(&actor->speedF, 1.0f, 5.0f); + if (i_this->timer[1] == 0) { + i_this->mode = 0; } break; case 0: anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); - i_this->mMode = 1; - i_this->field_0x82c = 0; + i_this->mode = 1; + i_this->unk_counter_1 = 0; // fallthrough case 1: fVar1 = l_HIO.dash_speed; - if ((i_this->field_0x6cc & 3) == 0) { - if ((i_this->field_0x6cc & 4) != 0) { - i_this->field_0x10e4 = 1; + if ((i_this->frame_counter & 3) == 0) { // Every 4 frames + if ((i_this->frame_counter & 4) != 0) { // Every 5 frames + i_this->set_smoke_flag = 1; } else { - i_this->field_0x10e4 = 2; + i_this->set_smoke_flag = 2; } } - if (i_this->mObjAcch.ChkWallHit() != 0 && !fopAcM_wayBgCheck(a_this, 200.0f, 120.0f)) { - i_this->field_0x82c++; - } else if (i_this->mPlayerDistance < l_HIO.battle_init_range) { + if (i_this->objacch.ChkWallHit() != 0 && !fopAcM_wayBgCheck(actor, 200.0f, 120.0f)) { + i_this->unk_counter_1++; + } else if (i_this->pl_dir < l_HIO.battle_init_range) { anm_init(i_this, ANM_WAIT_02, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->mMode = 2; - i_this->field_0x6e0[2] = cM_rndF(30.0f) + 30.0f; + i_this->mode = 2; + i_this->timer[2] = JREG_F(1) + (cM_rndF(30.0f) + 30.0f); } - if (i_this->field_0x82c > 20) { - i_this->mAction = ACTION_JUMP; - i_this->mMode = 0; + if (i_this->unk_counter_1 > 20) { + i_this->action = ACTION_JUMP; + i_this->mode = 0; return; } - if (move_gake_check(i_this, 50.0f, 0)) { - i_this->mAction = ACTION_GAKEJUMP; - i_this->mMode = 0; - i_this->field_0x6e8 = 100; - a_this->speedF = 0.0f; + if (move_gake_check(i_this, KREG_F(6) + 50.0f, 0)) { + i_this->action = ACTION_GAKEJUMP; + i_this->mode = 0; + i_this->invulnerability_timer = 100; + actor->speedF = 0.0f; return; } break; case 2: - i_this->field_0x82e = 1; + i_this->snap_angle_y_flag = 1; if (frame == 7 || frame == 21) { - a_this->speed.y = 10.0f; - if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 250.0f)) { - i_this->mMode = 0; - a_this->current.angle.y = a_this->shape_angle.y; + actor->speed.y = XREG_F(4) + 10.0f; + if (i_this->pl_dir > (l_HIO.battle_init_range + 250.0f)) { + i_this->mode = 0; + actor->current.angle.y = actor->shape_angle.y; break; } - if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 100.0f)) { - a_this->current.angle.y = i_this->mYAngleToPlayer; - } else if (i_this->mPlayerDistance < (l_HIO.battle_init_range - 100.0f)) { - a_this->current.angle.y = -i_this->mYAngleToPlayer; + if (i_this->pl_dir > (l_HIO.battle_init_range + 100.0f)) { + actor->current.angle.y = i_this->search_angle_y; + } else if (i_this->pl_dir < (l_HIO.battle_init_range - 100.0f)) { + actor->current.angle.y = -i_this->search_angle_y; } else { - a_this->current.angle.y = cM_rndFX(32763.0f); + actor->current.angle.y = cM_rndFX(32763.0f); } - a_this->speedF = cM_rndF(5.0f) + 5.0f; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); + actor->speedF = cM_rndF(XREG_F(5) + 5.0f) + 5.0f; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); } if (frame == 13 || frame == 27) { - a_this->speedF = 0.0f; - i_this->field_0x10e4 = 3; + actor->speedF = 0.0f; + i_this->set_smoke_flag = 3; if (frame == 13) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); } else { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); } } - a_this->gravity = -5.0f; + actor->gravity = XREG_F(6) + -5.0f; break; } s16 sVar1; - if (i_this->mMode >= 0) { - if (i_this->field_0x82e == 0) { - sVar1 = a_this->current.angle.y; - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); - sVar1 -= a_this->current.angle.y; - s16 sVar2 = a_this->current.angle.y - i_this->mYAngleToPlayer; + if (i_this->mode >= 0) { + if (i_this->snap_angle_y_flag == 0) { + sVar1 = actor->current.angle.y; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->search_angle_y, 2, 0x800); + sVar1 -= actor->current.angle.y; + s16 sVar2 = actor->current.angle.y - i_this->search_angle_y; if (sVar2 > 0x800 || sVar2 < -0x800) { fVar1 = 0.0f; } - cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + cLib_addCalc2(&actor->speedF, fVar1, 1.0f, 5.0f); } else { - sVar1 = a_this->shape_angle.y; - cLib_addCalcAngleS2(&a_this->shape_angle.y, i_this->mYAngleToPlayer, 4, 0x800); - sVar1 -= a_this->shape_angle.y; + sVar1 = actor->shape_angle.y; + cLib_addCalcAngleS2(&actor->shape_angle.y, i_this->search_angle_y, 4, 0x800); + sVar1 -= actor->shape_angle.y; } - sVar1 *= 2; - if (sVar1 > 0x1000) { - sVar1 = 0x1000; - } else if (sVar1 < -0x1000) { - sVar1 = -0x1000; + sVar1 *= (s16)(YREG_S(5) + 2); + s16 sVar4 = YREG_S(6) + 0x1000; + if (sVar1 > sVar4) { + sVar1 = sVar4; + } else if (sVar1 < (s16)-sVar4) { + sVar1 = -sVar4; } - cLib_addCalcAngleS2(&i_this->field_0x826, sVar1, 2, 0x400); + cLib_addCalcAngleS2(&i_this->jnt_tail_y_rot_offset, sVar1, 2, 0x400); } - u8 sVar3 = 0; - learn_check = i_this->field_0x744; - if (fpcM_Search(shot_s_sub, i_this) != NULL || ((i_this->field_0x744 & 0x1000) != 0 && daPy_getPlayerActorClass()->checkHookshotShootReturnMode())) { - sVar3 = 1; + u8 def = 0; + learn_check = i_this->learn; + if (fpcM_Search(shot_s_sub, i_this) != NULL || ((i_this->learn & 0x1000) != 0 && daPy_getPlayerActorClass()->checkHookshotShootReturnMode())) { + def = 1; OS_REPORT(" DEF ON !!\n"); } if (sVar4 == 0) { - if (i_this->field_0x6ea == 0) { - i_this->mAction = ACTION_NORMAL; - i_this->mMode = 0; - i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + if (i_this->unk_timer_1 == 0) { + i_this->action = ACTION_NORMAL; + i_this->mode = 0; + i_this->timer[0] = cM_rndF(50.0f) + 50.0f; anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - if (i_this->field_0x82e == 0) { - return; + if (i_this->snap_angle_y_flag != 0) { + actor->current.angle.y = actor->shape_angle.y; } - a_this->current.angle.y = a_this->shape_angle.y; return; } - } else { - if (dComIfGp_checkPlayerStatus1(0, 0x2000000) != 0 || - (((i_this->mXAngleToPlayer < 0x1000 && i_this->mXAngleToPlayer > -0x1000) || sVar3 != 0) && player_way_check(i_this))) { - if ((sVar3 != 0 || (i_this->mPlayerDistance < l_HIO.battle_init_range && (i_this->field_0x744 & cc_pl_cut_bit_get()) != 0 && - ((daPy_getPlayerActorClass()->getCutAtFlg() != 0 || daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_JUMP) || - (i_this->field_0x744 & 0x400) != 0))) && i_this->field_0x74c < 1.0f) { - i_this->mAction = ACTION_GUARD; - if (cc_pl_cut_bit_get() == 0x100) { - i_this->mMode = 0; - } else { - i_this->mMode = 5; - } - - i_this->field_0x708 = 30.0f; - i_this->field_0x70c = a_this->shape_angle.y; - i_this->field_0x6e0[0] = 0; - i_this->field_0x6e8 = 15; + } else if ( + dComIfGp_checkPlayerStatus1(0, 0x2000000) != 0 || + (((i_this->search_angle_x < 0x1000 && i_this->search_angle_x > -0x1000) || def != 0) && player_way_check(i_this)) + ) { + if ( + (def != 0 || (i_this->pl_dir < l_HIO.battle_init_range && (i_this->learn & cc_pl_cut_bit_get()) != 0 && + ((daPy_getPlayerActorClass()->getCutAtFlg() != 0 || daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_JUMP) || + (i_this->learn & 0x400) != 0))) && i_this->field_0x74c < 1.0f + ) { + i_this->action = ACTION_GUARD; + if (cc_pl_cut_bit_get() == 0x100) { + i_this->mode = 0; } else { - if (i_this->mPlayerDistance < l_HIO.attack_init_range) { - if (i_this->field_0x6e0[2] == 0) { - i_this->field_0x6e0[2] = cM_rndF(30.0f) + 30.0f; - if (cM_rndF(1.0f) < 1.0f) { - if (way_check(i_this) == 0 && cM_rndF(1.0f) < 0.75f) { - if (i_this->mPlayerDistance < l_HIO.attack_init_range - 100.0f) { - i_this->mAction = ACTION_ATTACK_0; - } else { - i_this->mAction = ACTION_ATTACK; - } + i_this->mode = 5; + } - i_this->mMode = 0; - } else { - i_this->mAction = ACTION_TAIL_ATTACK; - i_this->mMode = 0; - } + i_this->field_0x708 = TREG_F(10) + 30.0f; + i_this->field_0x70c = actor->shape_angle.y; + i_this->timer[0] = 0; + i_this->invulnerability_timer = 15; + } else if (i_this->pl_dir < l_HIO.attack_init_range) { + if (i_this->timer[2] == 0) { + i_this->timer[2] = JREG_F(1) + (cM_rndF(30.0f) + 30.0f); + f32 fVar1 = 1.0f; + if (cM_rndF(1.0f) < fVar1) { + wayCheck = way_check(i_this); + if (!wayCheck && cM_rndF(1.0f) < 0.75f) { + if (i_this->pl_dir < (l_HIO.attack_init_range - 100.0f) + TREG_F(7)) { + i_this->action = ACTION_ATTACK_0; + } else { + i_this->action = ACTION_ATTACK; } + + i_this->mode = 0; + } else { + i_this->action = ACTION_TAIL_ATTACK; + i_this->mode = 0; } } - } } } i_this->field_0x6f4 = 1; - if ((i_this->field_0x6cc & 15) == 0 && bomb_view_check(i_this) != NULL) { - i_this->mAction = ACTION_BOMB_ACTION; - i_this->mMode = 0; + if ((i_this->frame_counter & 15) == 0 && bomb_view_check(i_this) != NULL) { // Every 16 frames + i_this->action = ACTION_BOMB_ACTION; + i_this->mode = 0; } - if (i_this->field_0x5b7 == 1 && move_gake_check(i_this, 150.0f, 1) && (i_this->field_0x6cc & 15) == 0 && cM_rndF(1.0f) < 0.5f) { + if ( + i_this->arg1 == 1 && move_gake_check(i_this, KREG_F(8) + 150.0f, 1) && + (i_this->frame_counter & 15) == 0 && cM_rndF(1.0f) < 0.5f // Every 16 frames + ) { i_this->field_0x700 = cM_rndF(10.0f) + 10.0f; i_this->field_0x701 = cM_rndF(1.9f); } - if (move_gake_check(i_this, 50.0f, 1)) { - if (i_this->field_0x5b7 == 1) { + if (move_gake_check(i_this, KREG_F(9) + 50.0f, 1)) { + if (i_this->arg1 == 1) { if (cM_rndF(1.0f) < 0.5f) { - i_this->mAction = ACTION_TAIL_ATTACK; - i_this->mMode = 0; + i_this->action = ACTION_TAIL_ATTACK; + i_this->mode = 0; } else { - i_this->mAction = ACTION_GAKEJUMP; - i_this->mMode = 0; - i_this->field_0x5c8 = a_this->current.pos; - i_this->field_0x5bc = a_this->current.pos; - i_this->field_0x6e8 = 100; + i_this->action = ACTION_GAKEJUMP; + i_this->mode = 0; + i_this->field_0x5c8 = actor->current.pos; + i_this->field_0x5bc = actor->current.pos; + i_this->invulnerability_timer = 100; } - a_this->speedF = 0.0f; + actor->speedF = 0.0f; } else { - i_this->mAction = ACTION_BACKDROP; - i_this->mMode = 0; + i_this->action = ACTION_BACKDROP; + i_this->mode = 0; } } - if (i_this->mAction != 3 && i_this->field_0x82e != 0) { - a_this->current.angle.y = a_this->shape_angle.y; + if (i_this->action != 3 && i_this->snap_angle_y_flag != 0) { + actor->current.angle.y = actor->shape_angle.y; } } static void e_dn_jump(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; i_this->field_0x6f4 = 1; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_JUMP_A, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; - return; + i_this->mode = 1; + break; case 1: - if (!i_this->mpModelMorf->isStop()) { - return; + if (!i_this->anm_p->isStop()) { + break; } - a_this->speed.y = 50.0f; - i_this->mMode = 2; - i_this->field_0x10e4 = 3; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); + actor->speed.y = KREG_F(13) + 50.0f; + i_this->mode = 2; + i_this->set_smoke_flag = 3; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); // fallthrough case 2: - a_this->speedF = 30.0f; - if (a_this->speed.y <= 0.0f) { - anm_init(i_this, ANM_JUMP_B, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 3; + actor->speedF =KREG_F(13) + 30.0f; + if (!(actor->speed.y <= 0.0f)) { + break; } - return; + + anm_init(i_this, ANM_JUMP_B, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 3; + break; case 3: - if (!i_this->mObjAcch.ChkGroundHit()) { - return; + if (!i_this->objacch.ChkGroundHit()) { + break; } anm_init(i_this, ANM_JUMP_C, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 4; - i_this->field_0x10e4 = 3; - i_this->field_0x6e0[0] = 3; - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); - return; + i_this->mode = 4; + i_this->set_smoke_flag = 3; + i_this->timer[0] = 3; + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + break; case 4: - if (i_this->field_0x6e0[0] == 1) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + if (i_this->timer[0] == 1) { + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); } - cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); - if (!i_this->mpModelMorf->isStop()) { - return; + cLib_addCalc0(&actor->speedF, 1.0f, 10.0f); + if (!i_this->anm_p->isStop()) { + break; } - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; - return; + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } static void e_dn_gakejump(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp24, sp30; i_this->field_0x6f4 = 1; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: if (jump_pos_check(i_this, &i_this->field_0x5bc)) { anm_init(i_this, ANM_JUMP_A, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 2; - a_this->current.angle.y = i_this->mYAngleToPlayer; - return; + i_this->mode = 2; + actor->current.angle.y = i_this->search_angle_y; + break; } - if (i_this->mAnmID != ANM_WAIT_01) { + if (i_this->anm_no != ANM_WAIT_01) { anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); - i_this->field_0x6e0[0] = cM_rndF(15.0f) + 35.0f; - i_this->mMode = 1; + i_this->timer[0] = cM_rndF(15.0f) + 35.0f; + i_this->mode = 1; } - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 4, 0x800); - return; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->search_angle_y, 4, 0x800); + break; case 1: i_this->field_0x6f4 = 2; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); sp24.x = 0.0f; sp24.y = 0.0f; sp24.z = 100.0f; - MtxPosition(&sp24, &i_this->field_0x738); - i_this->field_0x738 += a_this->current.pos; + MtxPosition(&sp24, &i_this->find_pos); + i_this->find_pos += actor->current.pos; - if (i_this->field_0x6e0[0] != 0) { - return; + if (i_this->timer[0] != 0) { + break; } - i_this->mMode = 0; - return; + i_this->mode = 0; + break; case 2: - if (!i_this->mpModelMorf->isStop()) { - return; + if (!i_this->anm_p->isStop()) { + break; } if (jump_pos_check(i_this, &i_this->field_0x5bc)) { - i_this->mMode = 3; - i_this->field_0x10e4 = 3; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); - i_this->field_0x6e0[0] = 20; - i_this->field_0x6e0[1] = 60; - i_this->field_0x5c8 = a_this->current.pos; + i_this->mode = 3; + i_this->set_smoke_flag = 3; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); + i_this->timer[0] = 20; + i_this->timer[1] = 60; + i_this->field_0x5c8 = actor->current.pos; } else { anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); - i_this->field_0x6e0[0] = cM_rndF(15.0f) + 35.0f; - i_this->mMode = 1; - return; + i_this->timer[0] = cM_rndF(15.0f) + 35.0f; + i_this->mode = 1; + break; } // fallthrough case 3: i_this->field_0x5d8 = 1; - sp24 = i_this->field_0x5bc - a_this->current.pos; - i_this->field_0x5d4 = cM_atan2s(sp24.x, sp24.z); + sp24 = i_this->field_0x5bc - actor->current.pos; + i_this->cur_angle_y_target = cM_atan2s(sp24.x, sp24.z); i_this->field_0x5d6 = -cM_atan2s(sp24.y, JMAFastSqrt(sp24.x * sp24.x + sp24.z * sp24.z)); - a_this->speedF = 50.0f; + actor->speedF = KREG_F(13) + 50.0f; - if (i_this->field_0x6e0[0] == 1) { + if (i_this->timer[0] == 1) { anm_init(i_this, ANM_JUMP_B, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } - if (sp24.abs() < (a_this->speedF * 1.1f)) { - a_this->current.pos = i_this->field_0x5bc; + if (sp24.abs() < (actor->speedF * 1.1f)) { + actor->current.pos = i_this->field_0x5bc; anm_init(i_this, ANM_JUMP_C, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 4; - i_this->field_0x10e4 = 3; - i_this->field_0x6e0[0] = 3; - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); - a_this->speedF = 0.0f; - i_this->field_0x6e8 = 0; + i_this->mode = 4; + i_this->set_smoke_flag = 3; + i_this->timer[0] = 3; + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + actor->speedF = 0.0f; + i_this->invulnerability_timer = 0; } - if (i_this->field_0x6e0[1] == 0 || i_this->mObjAcch.ChkWallHit() != 0) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + if (!(i_this->timer[1] == 0 || i_this->objacch.ChkWallHit() != 0)) { + break; } - return; + + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; + break; case 4: - if (i_this->field_0x6e0[0] == 1) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + if (i_this->timer[0] == 1) { + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); } - if (!i_this->mpModelMorf->isStop()) { - return; + if (!i_this->anm_p->isStop()) { + break; } - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; - return; + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } static fopAc_ac_c* at_hit_check(e_dn_class* i_this) { - if (i_this->mMode >= 10) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + if (i_this->mode >= 10) { return NULL; } - if (i_this->field_0xe44.ChkAtHit() != 0) { - return dCc_GetAc(i_this->field_0xe44.GetAtHitObj()->GetAc()); + if (i_this->at_sph.ChkAtHit() != 0) { + return dCc_GetAc(i_this->at_sph.GetAtHitObj()->GetAc()); } return NULL; } static void e_dn_attack_0(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp2c, sp38; - int frame = i_this->mpModelMorf->getFrame(); + int frame = i_this->anm_p->getFrame(); i_this->field_0x6f4 = 1; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: - anm_init(i_this, ANM_ATTACK_TAIL_01, 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE, -1); - i_this->mMode = 1; + anm_init(i_this, ANM_ATTACK_TAIL_01, TREG_F(14) + 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE, -1); + i_this->mode = 1; // fallthrough case 1: if (frame >= 22 && frame <= 28) { - i_this->field_0x6ef = 1; - i_this->field_0x6ee = 0; + i_this->at_chk_flag = 1; + i_this->tail_at_sph_flag = 0; } - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } - cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + cLib_addCalc0(&actor->speedF, 1.0f, 5.0f); - if (i_this->field_0x6ef != 0) { + if (i_this->at_chk_flag != 0) { fopAc_ac_c* actor_p = at_hit_check(i_this); if (actor_p != NULL && fopAcM_GetName(actor_p) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { dComIfGp_getVibration().StartShock(3, 31, cXyz(0.0f, 1.0f, 0.0f)); @@ -1415,94 +1489,95 @@ static void e_dn_attack_0(e_dn_class* i_this) { } static void e_dn_attack(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp34, sp40; - int frame = i_this->mpModelMorf->getFrame(); + int frame = i_this->anm_p->getFrame(); i_this->field_0x6f4 = 1; s16 sVar1, sVar2; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: - anm_init(i_this, ANM_ATTACK_TAIL_02, 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE2_A, -1); - i_this->mMode = 1; + anm_init(i_this, ANM_ATTACK_TAIL_02, TREG_F(14) + 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE2_A, -1); + i_this->mode = 1; // fallthrough case 1: if (frame < 10 || (frame >= 25 && frame <= 30)) { - sVar1 = a_this->current.angle.y; - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); - sVar1 -= a_this->current.angle.y; - sVar1 *= 2; - if (sVar1 > 0x1000) { - sVar1 = 0x1000; - } else if (sVar1 < -0x1000) { - sVar1 = -0x1000; + sVar1 = actor->current.angle.y; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->search_angle_y, 2, 0x800); + sVar1 -= actor->current.angle.y; + sVar1 *= (s16)(YREG_S(5) + 2); + s16 sVar3 = YREG_S(6) + 0x1000; + if (sVar1 > sVar3) { + sVar1 = sVar3; + } else if (sVar1 < (s16)-sVar3) { + sVar1 = -sVar3; } - cLib_addCalcAngleS2(&i_this->field_0x826, sVar1, 2, 0x400); + cLib_addCalcAngleS2(&i_this->jnt_tail_y_rot_offset, sVar1, 2, 0x400); } if (frame >= 13 && frame <= 18) { - i_this->field_0x6ef = 1; - i_this->field_0x6ee = 0; + i_this->at_chk_flag = 1; + i_this->tail_at_sph_flag = 0; } if (frame >= 25 && frame <= 30) { - i_this->field_0x6ef = 1; - i_this->field_0x6ee = 1; - cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + i_this->at_chk_flag = 1; + i_this->tail_at_sph_flag = 1; + cMtx_YrotS(*calc_mtx, actor->current.angle.y); sp34.x = 0.0f; sp34.y = 0.0f; - sp34.z = 25.0f; + sp34.z = BREG_F(17) + 25.0f; MtxPosition(&sp34, &sp40); - a_this->current.pos += sp40; + actor->current.pos += sp40; } - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } - cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); - if (i_this->field_0x6ef != 0) { + cLib_addCalc0(&actor->speedF, 1.0f, 5.0f); + if (i_this->at_chk_flag != 0) { fopAc_ac_c* actor_p = at_hit_check(i_this); if (actor_p != NULL && fopAcM_GetName(actor_p) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { - i_this->mpModelMorf->setPlaySpeed(0.0f); - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + i_this->anm_p->setPlaySpeed(0.0f); + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } } static void tail_eff_set(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - J3DModel* model = i_this->mpModelMorf->getModel(); - i_this->field_0x10f8 = dComIfGp_particle_set(i_this->field_0x10f8, 0x815F, &a_this->current.pos, NULL, NULL); - JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->field_0x10f8); + J3DModel* model = i_this->anm_p->getModel(); + i_this->dn_tail_blur_a_prtcl = dComIfGp_particle_set(i_this->dn_tail_blur_a_prtcl, dPa_RM(ID_ZI_S_DNTAILBLUR_A), &actor->current.pos, NULL, NULL); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->dn_tail_blur_a_prtcl); if (emitter != NULL) { - MTXCopy(model->getAnmMtx(0), *calc_mtx); + MTXCopy(model->getAnmMtx(JNT_WORLD_ROOT), *calc_mtx); emitter->setGlobalRTMatrix(*calc_mtx); } - i_this->field_0x10fc = dComIfGp_particle_set(i_this->field_0x10fc, 0x8160, &a_this->current.pos, NULL, NULL); - emitter = dComIfGp_particle_getEmitter(i_this->field_0x10fc); + i_this->dn_tail_blur_b_prtcl = dComIfGp_particle_set(i_this->dn_tail_blur_b_prtcl, dPa_RM(ID_ZI_S_DNTAILBLUR_B), &actor->current.pos, NULL, NULL); + emitter = dComIfGp_particle_getEmitter(i_this->dn_tail_blur_b_prtcl); if (emitter != NULL) { - MTXCopy(model->getAnmMtx(0), *calc_mtx); + MTXCopy(model->getAnmMtx(JNT_WORLD_ROOT), *calc_mtx); emitter->setGlobalRTMatrix(*calc_mtx); } } static void e_dn_tail_attack(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp30, sp3c; - int frame = i_this->mpModelMorf->getFrame(); + int frame = i_this->anm_p->getFrame(); i_this->field_0x6f4 = 1; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: - anm_init(i_this, ANM_ATTACK_01, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; + anm_init(i_this, ANM_ATTACK_01, TREG_F(14) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 1; break; case 1: @@ -1511,114 +1586,114 @@ static void e_dn_tail_attack(e_dn_class* i_this) { } if (frame >= 33 && frame <= 41) { - i_this->field_0x6ef = 1; - i_this->field_0x6ee = 2; - cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); + i_this->at_chk_flag = 1; + i_this->tail_at_sph_flag = 2; + cMtx_YrotS(*calc_mtx, i_this->search_angle_y); sp30.x = 0.0f; sp30.y = 0.0f; - sp30.z = 30.0f; + sp30.z = BREG_F(18) + 30.0f; MtxPosition(&sp30, &sp3c); - a_this->current.pos += sp3c; + actor->current.pos += sp3c; } if (frame == 40) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); } else if (frame == 43) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); } - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } - a_this->current.angle.y += i_this->field_0x82a; - a_this->shape_angle.y += i_this->field_0x82a; - cLib_addCalcAngleS2(&i_this->field_0x82a, 0, 1, 300); - cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); + actor->current.angle.y += i_this->angle_y_offset; + actor->shape_angle.y += i_this->angle_y_offset; + cLib_addCalcAngleS2(&i_this->angle_y_offset, 0, 1, 300); + cLib_addCalc0(&actor->speedF, 1.0f, 3.0f); } static void e_dn_guard(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - i_this->field_0x6f1 = 1; + i_this->guard_flag = 1; i_this->field_0x6f4 = 1; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_WAIT_02, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; - a_this->speed.y = 20.0f; - a_this->speedF = -8.0f; - i_this->field_0x10e4 = 3; + i_this->mode = 1; + actor->speed.y = KREG_F(0) + 20.0f; + actor->speedF = KREG_F(1) + -8.0f; + i_this->set_smoke_flag = 3; break; case 1: - i_this->field_0x6e8 = 5; - if (i_this->mpModelMorf->getFrame() >= 5.0f) { - i_this->mMode = 5; - i_this->field_0x6e0[0] = 20; + i_this->invulnerability_timer = 5; + if (i_this->anm_p->getFrame() >= 5.0f) { + i_this->mode = 5; + i_this->timer[0] = KREG_S(1) + 20; } break; case 5: anm_init(i_this, ANM_GUARD, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_GUARD, -1); - i_this->mMode = 6; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_GUARD, -1); + i_this->mode = 6; // fallthrough case 6: - i_this->field_0x6e8 = 5; - if (i_this->mObjAcch.ChkGroundHit()) { - cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); + i_this->invulnerability_timer = 5; + if (i_this->objacch.ChkGroundHit()) { + cLib_addCalc0(&actor->speedF, 1.0f, 10.0f); } - if (i_this->mpModelMorf->getFrame() >= 8.0f) { - i_this->mpModelMorf->setPlaySpeed(0.0f); - i_this->mMode = 7; - a_this->speedF = 0.0f; + if (i_this->anm_p->getFrame() >= 8.0f) { + i_this->anm_p->setPlaySpeed(0.0f); + i_this->mode = 7; + actor->speedF = 0.0f; } break; case 7: - i_this->field_0x6e8 = 5; + i_this->invulnerability_timer = 5; if (cc_pl_cut_bit_get() == 0x80 || cc_pl_cut_bit_get() == 0x800) { - i_this->field_0x6e0[0] = 20; + i_this->timer[0] = KREG_S(0) + 20; } - if (i_this->field_0x6e0[0] == 0) { - i_this->mMode = 8; - i_this->mpModelMorf->setPlaySpeed(1.0f); + if (i_this->timer[0] == 0) { + i_this->mode = 8; + i_this->anm_p->setPlaySpeed(1.0f); } break; case 8: - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; + if (i_this->anm_p->isStop()) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; } } } static void e_dn_s_damage(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: - i_this->mMode = 1; - i_this->field_0x6e0[0] = 20; + i_this->mode = 1; + i_this->timer[0] = 20; anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); break; case 1: - if (i_this->field_0x6e0[0] == 0) { - i_this->mAction = ACTION_FIGHT_RUN; - i_this->mMode = 0; - i_this->field_0x6e0[0] = 40; + if (i_this->timer[0] == 0) { + i_this->action = ACTION_FIGHT_RUN; + i_this->mode = 0; + i_this->timer[0] = 40; } } - cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); + cLib_addCalc0(&actor->speedF, 1.0f, 3.0f); } static BOOL kado_check(e_dn_class* i_this) { @@ -1630,53 +1705,53 @@ static BOOL kado_check(e_dn_class* i_this) { 80.0f, -80.0f, }; - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; dBgS_LinChk lin_chk; - cXyz sp9c, spa8, spb4; - BOOL rv = FALSE; + cXyz work, start, end; + BOOL kado = FALSE; cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); for (int i = 0; i < 2; i++) { - spa8 = a_this->current.pos; - spa8.y += 100.0f; - sp9c.x = 0.0f; - sp9c.y = 0.0f; - sp9c.z = 70.0f; - MtxPosition(&sp9c, &spb4); - spa8 += spb4; - sp9c.y = 50.0f; - sp9c.z = -150.0f; - sp9c.x = 1.0f * kado_check_x[i]; - MtxPosition(&sp9c, &spb4); - spb4 += spa8; - lin_chk.Set(&spa8, &spb4, a_this); + start = actor->current.pos; + start.y += JREG_F(0) + 100.0f; + work.x = JREG_F(1); + work.y = JREG_F(2); + work.z = JREG_F(3) + 70.0f; + MtxPosition(&work, &end); + start += end; + work.y = JREG_F(4) + 50.0f; + work.z = JREG_F(5) + -150.0f; + work.x = (JREG_F(6) + 1.0f) * kado_check_x[i]; + MtxPosition(&work, &end); + end += start; + lin_chk.Set(&start, &end, actor); if (dComIfG_Bgsp().LineCross(&lin_chk)) { - rv |= kado_bit[i]; + kado |= kado_bit[i]; } } - if (rv == 3) { - rv = FALSE; + if (kado == 3) { + kado = FALSE; } - return rv; + return kado; } static BOOL body_gake(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - J3DModel* model = i_this->mpModelMorf->getModel(); - cXyz sp7c, sp88; + J3DModel* model = i_this->anm_p->getModel(); + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, body_pos; - MTXCopy(model->getAnmMtx(2), *calc_mtx); - sp7c.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp7c, &sp88); + MTXCopy(model->getAnmMtx(JNT_BACKBONE02), *calc_mtx); + work.set(BREG_F(10), BREG_F(11), BREG_F(12)); + MtxPosition(&work, &body_pos); dBgS_ObjGndChk gnd_chk; - sp88.y += 100.0f; - gnd_chk.SetPos(&sp88); - sp88.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + body_pos.y += 100.0f; + gnd_chk.SetPos(&body_pos); + body_pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk); - if ((a_this->current.pos.y - sp88.y) > 300.0f) { + if ((actor->current.pos.y - body_pos.y) > 300.0f) { return TRUE; } @@ -1684,160 +1759,162 @@ static BOOL body_gake(e_dn_class* i_this) { } static void e_dn_damage(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp34, sp40; - if (a_this->health <= 0) { - fopAcM_OffStatus(a_this, 0); - a_this->attention_info.flags = 0; + if (actor->health <= 0) { + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags = 0; } if (daPy_py_c::checkNowWolf() != 0) { - if (i_this->field_0x6f3 == 0 && a_this->checkWolfDownStartFlg()) { - if (i_this->field_0x6e0[0] > 40) { - i_this->field_0x6e0[0] = 90; + if (i_this->field_0x6f3 == 0 && actor->checkWolfDownStartFlg()) { + if (i_this->timer[0] > 40) { + i_this->timer[0] = 90; OS_REPORT(" DN WOLFHIT LONG \n"); - } else if (i_this->field_0x6e0[0] > 20) { - i_this->field_0x6e0[0] = 70; + } else if (i_this->timer[0] > 20) { + i_this->timer[0] = 70; OS_REPORT(" DN WOLFHIT MID \n"); } else { - i_this->field_0x6e0[0] = 50; + i_this->timer[0] = 50; OS_REPORT(" DN WOLFHIT SHORT \n"); } - i_this->mMode = 30; + i_this->mode = 30; i_this->field_0x6f3 = 1; - if (i_this->field_0x5b7 == 1) { - i_this->field_0x6e0[1] = l_HIO.field_0x20 + 1; + if (i_this->arg1 == 1) { + i_this->timer[1] = l_HIO.soul_disappear_time_strong + 1; } else { - i_this->field_0x6e0[1] = l_HIO.field_0x1e + 1; + i_this->timer[1] = l_HIO.soul_disappear_time_weak + 1; } } - } else if (i_this != NULL && a_this->checkCutDownHitFlg()) { - a_this->offCutDownHitFlg(); - i_this->mMode = 3; - a_this->health = 0; - i_this->field_0x6e0[0] = 100; - i_this->field_0x6e0[1] = 46; - a_this->offDownFlg(); - a_this->health = 0; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); - i_this->field_0x6c4 = 1; + } else if (actor != NULL && actor->checkCutDownHitFlg()) { + actor->offCutDownHitFlg(); + i_this->mode = 3; + actor->health = 0; + i_this->timer[0] = 100; + i_this->timer[1] = 46; + actor->offDownFlg(); + actor->health = 0; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + i_this->death_flag = 1; daPy_getPlayerActorClass()->onEnemyDead(); - i_this->field_0x80c = 15; + i_this->death_jnt_rot_counter = TREG_S(7) + 15; } - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_BLOWNOFF, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - i_this->mMode = 1; - a_this->speedF = 0.0f; - i_this->field_0x7e8 = 8000.0f; + i_this->mode = 1; + actor->speedF = 0.0f; + i_this->field_0x7e8 = BREG_F(10) + 8000.0f; - if (a_this->health <= 0) { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); - i_this->field_0x6c4 = 1; + if (actor->health <= 0) { + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + i_this->death_flag = 1; daPy_getPlayerActorClass()->onEnemyDead(); } else { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE2, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE2, -1); } - i_this->field_0x6e0[0] = 0; + i_this->timer[0] = 0; break; case 1: - if (i_this->mObjAcch.ChkWallHit() != 0 && i_this->field_0x6e0[0] == 0) { - int iVar1 = kado_check(i_this); - if (iVar1 != 0) { - OS_REPORT(" ..KADO KABE ..%x\n", iVar1); - if (iVar1 == 2) { + if (i_this->objacch.ChkWallHit() != 0 && i_this->timer[0] == 0) { + int kado_kabe = kado_check(i_this); + if (kado_kabe != 0) { + OS_REPORT(" ..KADO KABE ..%x\n", kado_kabe); + if (kado_kabe == 2) { i_this->field_0x70e = 0xC00; - i_this->field_0x724.y += -7000; + i_this->field_0x724.y += TREG_S(8) + -7000; } else { i_this->field_0x70e = -0xC00; - i_this->field_0x724.y += 7000; + i_this->field_0x724.y += -(TREG_S(8) - 7000); } - i_this->field_0x7e8 = 8000.0f; - i_this->field_0x754 = 100.0f; - i_this->field_0x75c = 100.0f; - i_this->field_0x828 = 40; - i_this->field_0x6e0[0] = 60; + i_this->field_0x7e8 = BREG_F(10) + 8000.0f; + i_this->field_0x754 = BREG_F(4) + 100.0f; + i_this->field_0x75c = BREG_F(5) + 100.0f; + i_this->unk_timer_4 = DREG_S(1) + 40; + i_this->timer[0] = 60; } else { - i_this->mMode = 10; - a_this->speed.y = 0.0f; + i_this->mode = 10; + actor->speed.y = 0.0f; i_this->field_0x704 *= 0.2f; i_this->field_0x724.y += 0x8000; - i_this->field_0x7e8 = 8000.0f; - i_this->field_0x840 = 5; - i_this->field_0x754 = 100.0f; - i_this->field_0x75c = 100.0f; - i_this->field_0x828 = 40; + i_this->field_0x7e8 = BREG_F(10) + 8000.0f; + i_this->unk_timer_5 = BREG_S(7) + 5; + i_this->field_0x754 = BREG_F(4) + 100.0f; + i_this->field_0x75c = BREG_F(5) + 100.0f; + i_this->unk_timer_4 = DREG_S(1) + 40; i_this->field_0x70e = 0; } - } else { - cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x300); - a_this->current.angle.y += i_this->field_0x70e; - a_this->shape_angle.y = a_this->current.angle.y; + break; + } - if (i_this->field_0x724.x <= -0x3000 && i_this->mObjAcch.ChkGroundHit()) { - i_this->mMode = 2; - i_this->field_0x736 = 10; - i_this->mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1); + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, BREG_S(4) + 0x300); + actor->current.angle.y += i_this->field_0x70e; + actor->shape_angle.y = actor->current.angle.y; - if (i_this->field_0x737 == 0) { - anm_init(i_this, ANM_DIE_LEFT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + if (i_this->field_0x724.x <= -0x3000 && i_this->objacch.ChkGroundHit()) { + i_this->mode = 2; + i_this->unk_timer_3 = 10; + i_this->sound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1); + + if (i_this->left_right_flag == 0) { + anm_init(i_this, ANM_DIE_LEFT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + if (i_this->field_0x710 != 0) { + i_this->field_0x704 = 0.0f; + i_this->field_0x7e8 = BREG_F(12) + 2000.0f; + } else { + if (i_this->left_right_flag == 0) { + i_this->field_0x754 = -100.0f - BREG_F(6); + i_this->field_0x75c = -100.0f - BREG_F(7); } else { - anm_init(i_this, ANM_DIE_RIGHT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->field_0x754 = BREG_F(4) + 100.0f; + i_this->field_0x75c = BREG_F(5) + 100.0f; } - if (i_this->field_0x710 != 0) { - i_this->field_0x704 = 0.0f; - i_this->field_0x7e8 = 2000.0f; - } else { - if (i_this->field_0x737 == 0) { - i_this->field_0x754 = -100.0f; - i_this->field_0x75c = -100.0f; - } else { - i_this->field_0x754 = 100.0f; - i_this->field_0x75c = 100.0f; - } + i_this->field_0x758 = -0x5000; + i_this->field_0x760 = -0x4000; + i_this->unk_timer_4 = DREG_S(1) + 40; + i_this->field_0x704 *= 0.5f; + actor->speed.y = TREG_F(6) + 20.0f; + i_this->field_0x70e /= 2; + actor->current.angle.y = i_this->field_0x724.y; + i_this->field_0x7e8 = BREG_F(12) + 8000.0f; - i_this->field_0x758 = -0x5000; - i_this->field_0x760 = -0x4000; - i_this->field_0x828 = 40; - i_this->field_0x704 *= 0.5f; - a_this->speed.y = 20.0f; - i_this->field_0x70e /= 2; - a_this->current.angle.y = i_this->field_0x724.y; - i_this->field_0x7e8 = 8000.0f; + J3DModel* model = i_this->anm_p->getModel(); + MTXCopy(model->getAnmMtx(JNT_BACKBONE02), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); - sp34.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp34, &sp40); - - fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.8f, &a_this->tevStr, 1); - } + fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.8f, &actor->tevStr, 1); } } break; case 2: - a_this->current.angle.y += i_this->field_0x70e; - a_this->shape_angle.y = a_this->current.angle.y; - cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x300); + actor->current.angle.y += i_this->field_0x70e; + actor->shape_angle.y = actor->current.angle.y; + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, BREG_S(4) + 0x300); - if (i_this->mObjAcch.ChkGroundHit()) { - if (a_this->health > 0 && !daPy_py_c::checkNowWolf()) { - a_this->onDownFlg(); + if (i_this->objacch.ChkGroundHit()) { + if (actor->health > 0 && !daPy_py_c::checkNowWolf()) { + actor->onDownFlg(); } - dKy_Sound_set(a_this->current.pos, 100, fopAcM_GetID(a_this), 5); - i_this->field_0x736 = 10; + dKy_Sound_set(actor->current.pos, 100, fopAcM_GetID(&i_this->actor), 5); + i_this->unk_timer_3 = 10; - if (i_this->field_0x737 == 0) { + if (i_this->left_right_flag == 0) { anm_init(i_this, ANM_DIE_LEFT, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } else { anm_init(i_this, ANM_DIE_RIGHT, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); @@ -1850,277 +1927,282 @@ static void e_dn_damage(e_dn_class* i_this) { i_this->field_0x802[i] = cM_rndF(10.0f); } - a_this->current.angle.y = i_this->field_0x724.y; + actor->current.angle.y = i_this->field_0x724.y; if (daPy_py_c::checkNowWolf() != 0) { - i_this->field_0x6e0[0] = 80; - i_this->field_0x6e0[1] = 55; + i_this->timer[0] = 80; + i_this->timer[1] = 55; } else { - i_this->field_0x6e0[0] = cM_rndF(10.0f) + 60.0f; - i_this->field_0x6e0[1] = 35; + i_this->timer[0] = cM_rndF(10.0f) + 60.0f; + i_this->timer[1] = 35; } - i_this->mMode = 3; - i_this->field_0x7e8 = 1500.0f; + i_this->mode = 3; + i_this->field_0x7e8 = BREG_F(13) + 1500.0f; - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + J3DModel* model = i_this->anm_p->getModel(); + MTXCopy(model->getAnmMtx(JNT_BACKBONE02), *calc_mtx); sp34.set(0.0f, 0.0f, 0.0f); MtxPosition(&sp34, &sp40); - fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.0f, &a_this->tevStr, 1); + fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.0f, &actor->tevStr, 1); } break; case 3: if (body_gake(i_this)) { - i_this->field_0x704 = -20.0f; - i_this->field_0x724.x -= 0x300; + i_this->field_0x704 = VREG_F(8) + -20.0f; + i_this->field_0x724.x -= (s16)(VREG_S(7) + 0x300); } - if (a_this->health <= 0 && i_this->field_0x6e0[1] == 0) { - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + if (actor->health <= 0 && i_this->timer[1] == 0) { + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_BACKBONE02), *calc_mtx); sp34.set(0.0f, 0.0f, 0.0f); MtxPosition(&sp34, &sp40); + + s8 unused = 0; dn_disappear(i_this); - fopAcM_delete(a_this); + fopAcM_delete(actor); return; } - if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->field_0x6e0[0] == 0) { - i_this->mMode = 20; - if (i_this->field_0x737 == 0) { + if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->timer[0] == 0) { + i_this->mode = 20; + if (i_this->left_right_flag == 0) { anm_init(i_this, ANM_DIE_LEFT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } else { anm_init(i_this, ANM_DIE_RIGHT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); - if (i_this != NULL) { - a_this->offDownFlg(); + if (actor != NULL) { + actor->offDownFlg(); } } break; case 10: - if (i_this->field_0x840 != 0) { - cLib_addCalcAngleS2(&i_this->field_0x724.x, 0, 1, 0x300); + if (i_this->unk_timer_5 != 0) { + cLib_addCalcAngleS2(&i_this->field_0x724.x, 0, 1, BREG_S(4) + 0x300); } else { - cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x800); - if (i_this->mObjAcch.ChkGroundHit()) { - i_this->mMode = 2; - if (i_this->field_0x737 == 0) { - i_this->field_0x754 = -100.0f; - i_this->field_0x75c = -100.0f; + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, BREG_S(5) + 0x800); + if (i_this->objacch.ChkGroundHit()) { + i_this->mode = 2; + if (i_this->left_right_flag == 0) { + i_this->field_0x754 = -100.0f - BREG_F(6); + i_this->field_0x75c = -100.0f - BREG_F(7); } else { - i_this->field_0x754 = 100.0f; - i_this->field_0x75c = 100.0f; + i_this->field_0x754 = BREG_F(4) + 100.0f; + i_this->field_0x75c = BREG_F(5) + 100.0f; } i_this->field_0x758 = -0x5000; i_this->field_0x760 = -0x4000; i_this->field_0x704 *= 0.5f; - a_this->speed.y = 20.0f; - a_this->current.angle.y = i_this->field_0x724.y; - i_this->field_0x7e8 = 8000.0f; + actor->speed.y = TREG_F(6) + 20.0f; + actor->current.angle.y = i_this->field_0x724.y; + i_this->field_0x7e8 = BREG_F(12) + 8000.0f; } } break; case 20: - if (i_this->mpModelMorf->getFrame() >= 35.0f) { - i_this->field_0x730.z = 0; - i_this->field_0x730.x = 0; + if (i_this->anm_p->getFrame() >= 35.0f) { + i_this->field_0x730.x = i_this->field_0x730.z = 0; } - if (i_this->mpModelMorf->isStop()) { - i_this->field_0x724.y = 0; - i_this->field_0x724.x = 0; + if (i_this->anm_p->isStop()) { + i_this->field_0x724.x = i_this->field_0x724.y = 0; anm_init(i_this, ANM_WAIT_01, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); - i_this->field_0x6e0[0] = 5; - i_this->mMode = 21; + i_this->timer[0] = 5; + i_this->mode = 21; - if (i_this != NULL) { - a_this->offDownFlg(); + if (actor != NULL) { + actor->offDownFlg(); } } break; case 21: case 22: - i_this->field_0x6e8 = 0; - if (i_this->field_0x6e0[0] == 0) { - i_this->mAction = ACTION_NORMAL; - i_this->mMode = 0; - i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + i_this->invulnerability_timer = 0; + if (i_this->timer[0] == 0) { + i_this->action = ACTION_NORMAL; + i_this->mode = 0; + i_this->timer[0] = cM_rndF(50.0f) + 50.0f; anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; case 30: - if (!a_this->checkWolfDownPullFlg()) { - i_this->field_0x6e0[1] = 0; + if (!actor->checkWolfDownPullFlg()) { + i_this->timer[1] = 0; } - if (i_this->field_0x6e0[0] == 0) { - i_this->mMode = 31; - if (i_this->field_0x737 == 0) { + if (i_this->timer[0] == 0) { + i_this->mode = 31; + if (i_this->left_right_flag == 0) { anm_init(i_this, ANM_BRUSH_LEFT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } else { anm_init(i_this, ANM_BRUSH_RIGHT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); - i_this->field_0x6e0[0] = 10; - } else if (i_this->field_0x6e0[1] == 1) { - a_this->onWolfDownPullEndFlg(); - a_this->offCutDownHitFlg(); - a_this->health = 0; - i_this->field_0x6e0[0] = 1000; - i_this->field_0x6e0[1] = 35; - i_this->mMode = 3; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); + i_this->timer[0] = 10; + } else if (i_this->timer[1] == 1) { + actor->onWolfDownPullEndFlg(); + actor->offCutDownHitFlg(); + actor->health = 0; + i_this->timer[0] = 1000; + i_this->timer[1] = 35; + i_this->mode = 3; } break; case 31: - if (i_this->field_0x6e0[0] == 0) { - a_this->offDownFlg(); - i_this->mMode = 20; + if (i_this->timer[0] == 0) { + actor->offDownFlg(); + i_this->mode = 20; i_this->field_0x6f3 = 0; } } - if (i_this != NULL && a_this->checkDownFlg()) { + if (actor != NULL && actor->checkDownFlg()) { i_this->field_0x6f2 = 0; } - if (i_this->field_0x80c != 0) { - i_this->field_0x80c--; - i_this->field_0x80a = i_this->field_0x80c * cM_ssin(i_this->field_0x80c * 0x3800) * 100.0f; + if (i_this->death_jnt_rot_counter != 0) { + i_this->death_jnt_rot_counter--; + i_this->death_jnt_rot = i_this->death_jnt_rot_counter * cM_ssin(i_this->death_jnt_rot_counter * (TREG_S(9) + 0x3800)) * (TREG_F(5) + 100.0f); } } static void e_dn_backdrop(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + f32 zero = 0.0f; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_DRAWBACK, 3.0f, J3DFrameCtrl::EMode_NONE, 0.5f); - i_this->mMode = 1; - i_this->field_0x724.y = a_this->shape_angle.y; + i_this->mode = 1; + i_this->field_0x724.y = (s16)actor->shape_angle.y; i_this->field_0x724.x = 0; - a_this->speedF = -3.0f; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + actor->speedF = -3.0f; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); // fallthrough case 1: if (i_this->field_0x724.x < -0x4000) { - a_this->speedF = -6.0f; + actor->speedF = -6.0f; } - if (a_this->speed.y < -20.0f) { - i_this->mMode = 2; - a_this->speedF = 0.0f; + if (actor->speed.y < -20.0f) { + i_this->mode = 2; + actor->speedF = 0.0f; } // fallthrough case 2: + // Target: -157.5 degrees, Step: (field_0x724.x - (-157.5 degrees)) / 2, Max Step: 11.25 degrees cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x7000, 2, 0x800); - if (i_this->mMode == 2 && a_this->current.pos.y <= (i_this->mObjAcch.GetGroundH() + 100.0f)) { - a_this->current.pos.y = i_this->mObjAcch.GetGroundH() + 100.0f; + + if (i_this->mode == 2 && actor->current.pos.y <= (KREG_F(17) + (i_this->objacch.GetGroundH() + 100.0f))) { + actor->current.pos.y = KREG_F(17) + (i_this->objacch.GetGroundH() + 100.0f); i_this->field_0x724.x = -0x4000; - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; i_this->field_0x704 = 0.0f; - a_this->health = 0; + actor->health = 0; } } } static void e_dn_water(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - cXyz sp20, sp2c, sp38; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz sp20, sp2c; - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_BACKBONE02), *calc_mtx); sp20.set(0.0f, 0.0f, 0.0f); MtxPosition(&sp20, &sp2c); - i_this->field_0x6e8 = 10; - switch (i_this->mMode) { + i_this->invulnerability_timer = 10; + switch (i_this->mode) { case 0: - case 1: - a_this->speed.y = 0.0f; - if (i_this->field_0x737 == 0) { + case 1: { + actor->speed.y = 0.0f; + if (i_this->left_right_flag == 0) { anm_init(i_this, ANM_DROWNED_A, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } else { anm_init(i_this, ANM_DROWNED_B, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } - i_this->field_0x6e0[0] = 60; - a_this->speedF = 0.0f; - i_this->field_0x704 = 0.0f; - i_this->field_0x708 = 0.0f; + i_this->timer[0] = 60; + i_this->field_0x708 = i_this->field_0x704 = actor->speedF = 0.0f; - sp38 = a_this->current.pos; - sp38.y = i_this->field_0xa5c; - if (i_this->mMode == 0) { - fopKyM_createWpillar(&sp38, 1.5f, 0); + cXyz pos = actor->current.pos; + pos.y = i_this->field_0xa5c; + if (i_this->mode == 0) { + fopKyM_createWpillar(&pos, 1.5f, 0); } else { - fopKyM_createMpillar(&sp38, 1.0f); + fopKyM_createMpillar(&pos, 1.0f); } - i_this->mMode = 10; + i_this->mode = 10; break; + } case 10: - a_this->speed.y = 0.0f; - cLib_addCalc2(&a_this->current.pos.y, i_this->field_0xa5c, 0.5f, 5.0f); - cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 4, 0x400); + actor->speed.y = 0.0f; + cLib_addCalc2(&actor->current.pos.y, i_this->field_0xa5c, 0.5f, 5.0f); + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 4, BREG_S(4) + 0x400); - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { dn_disappear(i_this); } + break; } } static void e_dn_reg(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; cXyz sp34, sp40; - f32 fVar1 = 0.0f; + f32 dash_speed = 0.0f; + int frame = i_this->anm_p->getFrame(); i_this->field_0x6f2 = 0; - i_this->field_0x6e8 = 10; + i_this->invulnerability_timer = 10; - switch (i_this->mMode) { + switch (i_this->mode) { case 0: anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); - i_this->mMode = 1; + i_this->mode = 1; - if ((i_this->field_0x5b6 & 1) != 0) { - a_this->current.pos.set(-8613.0f, 2000.0f, 8017.0f); - a_this->current.angle.set(0, 0x19A0, 0); + if ((i_this->arg0 & 1) != 0) { + actor->current.pos.set(-8613.0f, 2000.0f, 8017.0f); + actor->current.angle.set(0, 0x19A0, 0); } else { - a_this->current.pos.set(-8044.0f, 2000.0f, 8616.0f); - a_this->current.angle.set(0, -0x629E, 0); + actor->current.pos.set(-8044.0f, 2000.0f, 8616.0f); + actor->current.angle.set(0, -0x629E, 0); } - a_this->old.pos = a_this->current.pos; - i_this->field_0x5d4 = a_this->current.angle.y; - i_this->field_0x6e0[0] = 14; + actor->old.pos = actor->current.pos; + i_this->cur_angle_y_target = actor->current.angle.y; + i_this->timer[0] = nREG_S(0) + 14; // fallthrough case 1: - fVar1 = l_HIO.dash_speed; - if ((i_this->field_0x6cc & 3) == 0) { - if ((i_this->field_0x6cc & 4) != 0) { - i_this->field_0x10e4 = 1; + dash_speed = l_HIO.dash_speed; + if ((i_this->frame_counter & 3) == 0) { // Every 4 frames + if ((i_this->frame_counter & 4) != 0) { // Every 5 frames + i_this->set_smoke_flag = 1; } else { - i_this->field_0x10e4 = 2; + i_this->set_smoke_flag = 2; } } - if (i_this->field_0x6e0[0] == 0) { + if (i_this->timer[0] == 0) { fopAc_ac_c* player = dComIfGp_getPlayer(0); - cMtx_YrotS(*calc_mtx, player->shape_angle.y); + cMtx_YrotS(*calc_mtx, (s16)player->shape_angle.y); - if ((i_this->field_0x5b6 & 1) != 0) { + if ((i_this->arg0 & 1) != 0) { sp34.x = 100.0f; } else { sp34.x = -100.0f; @@ -2129,73 +2211,73 @@ static void e_dn_reg(e_dn_class* i_this) { sp34.z = 0.0f; MtxPosition(&sp34, &sp40); sp40 += player->current.pos; - sp34 = sp40 - a_this->current.pos; - i_this->field_0x5d4 = cM_atan2s(sp34.x, sp34.z); + sp34 = sp40 - actor->current.pos; + i_this->cur_angle_y_target = cM_atan2s(sp34.x, sp34.z); } break; case 2: - if ((i_this->field_0x5b6 & 1) != 0) { - i_this->field_0x750 = a_this->shape_angle.y - (0x4000 << 2) + 0x4000; - i_this->field_0x724.y = a_this->shape_angle.y + 0x4000; + if ((i_this->arg0 & 1) != 0) { + i_this->field_0x750 = actor->shape_angle.y - (0x4000 << 2) + 0x4000; + i_this->field_0x724.y = actor->shape_angle.y + 0x4000; i_this->field_0x70e = (cM_rndFX(800.0f) + 3000.0f); } else { - i_this->field_0x750 = a_this->shape_angle.y - 0x4000; - i_this->field_0x724.y = a_this->shape_angle.y - 0x4000; + i_this->field_0x750 = actor->shape_angle.y - 0x4000; + i_this->field_0x724.y = actor->shape_angle.y - 0x4000; i_this->field_0x70e = -(cM_rndFX(800.0f) + 3000.0f); } i_this->field_0x74c = 150.0f; - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; - a_this->speed.y = cM_rndF(10.0f) + 40.0f; - i_this->field_0x704 = -30.0f; - i_this->field_0x828 = 50; - a_this->health = 0; + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; + actor->speed.y = TREG_F(13) + 40.0f + cM_rndF(10.0f); + i_this->field_0x704 = TREG_F(18) + -30.0f; + i_this->unk_timer_4 = DREG_S(2) + 50; + actor->health = 0; break; } - cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x800); - s16 sVar1 = a_this->current.angle.y - i_this->field_0x5d4; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->cur_angle_y_target, 2, 0x800); + s16 sVar1 = actor->current.angle.y - i_this->cur_angle_y_target; if (sVar1 > 0x800 || sVar1 < -0x800) { - fVar1 = 0.0f; + dash_speed = 0.0f; } - a_this->speedF = fVar1; + actor->speedF = dash_speed; i_this->field_0x6f4 = 1; } static void wolfkick_damage(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; fopAc_ac_c* player = dComIfGp_getPlayer(0); - i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x750 = (actor->shape_angle.y - 0x8000) - i_this->at_info.mHitDirection.y; i_this->field_0x74c = 150.0f; - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; i_this->field_0x724.y = player->shape_angle.y + 0x8000; - a_this->speed.y = 0.0f; + actor->speed.y = 0.0f; i_this->field_0x704 = -1.0f; - i_this->field_0x828 = 50; - i_this->mSound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); + i_this->unk_timer_4 = DREG_S(2) + 50; + i_this->sound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); i_this->field_0x710 = 1; } static void big_damage(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x750 = (actor->shape_angle.y - 0x8000) - i_this->at_info.mHitDirection.y; i_this->field_0x74c = 150.0f; - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; - i_this->field_0x724.y = i_this->mAtInfo.mHitDirection.y; - a_this->speed.y = cM_rndF(10.0f) + 25.0f; - i_this->field_0x704 = -20.0f; - i_this->field_0x828 = 50; - if ((i_this->mAtInfo.mHitBit & 0x80) != 0) { + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; + i_this->field_0x724.y = i_this->at_info.mHitDirection.y; + actor->speed.y = TREG_F(13) + 25.0f + cM_rndF(10.0f); + i_this->field_0x704 = TREG_F(18) + -20.0f; + i_this->unk_timer_4 = DREG_S(2) + 50; + if ((i_this->at_info.mHitBit & 0x80) != 0) { OS_REPORT("SPIN CUT HIT !!\n"); i_this->field_0x70e = cM_rndFX(800.0f) + 3000.0f; - } else if ((i_this->mAtInfo.mHitBit & 0x800) != 0) { + } else if ((i_this->at_info.mHitBit & 0x800) != 0) { OS_REPORT("SPIN CUT L HIT !!\n"); i_this->field_0x70e = -(cM_rndFX(800.0f) + 3000.0f); } else { @@ -2206,188 +2288,185 @@ static void big_damage(e_dn_class* i_this) { } static void small_damage(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; - i_this->mAction = ACTION_S_DAMAGE; - i_this->mMode = 0; - i_this->field_0x828 = 50; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + i_this->action = ACTION_S_DAMAGE; + i_this->mode = 0; + i_this->unk_timer_4 = DREG_S(6) + 50; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); - if (i_this->field_0x82e != 0) { - a_this->current.angle.y = a_this->shape_angle.y; + if (i_this->snap_angle_y_flag != 0) { + actor->current.angle.y = actor->shape_angle.y; } - i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x750 = (actor->shape_angle.y - 0x8000) - i_this->at_info.mHitDirection.y; i_this->field_0x74c = 150.0f; - i_this->field_0x708 = 25.0f; - i_this->field_0x70c = i_this->mAtInfo.mHitDirection.y; + i_this->field_0x708 = TREG_F(0) + 25.0f; + i_this->field_0x70c = i_this->at_info.mHitDirection.y; } static void damage_check(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - if (l_HIO.field_0x24 != 0) { - i_this->field_0x744 = 0; + if (l_HIO.no_learn != 0) { + i_this->learn = 0; } - i_this->mStts.Move(); + i_this->stts.Move(); - if (i_this->field_0x6e8 == 0) { - fopEn_enemy_c* dn_p = (fopEn_enemy_c*)i_this; + if (i_this->invulnerability_timer == 0) { + fopEn_enemy_c* enemy = (fopEn_enemy_c*)actor; + dCcU_AtInfo atInfo; if (l_HIO.invulnerable != 0) { - a_this->health = 100; + actor->health = 100; } for (int i = 0; i <= 2; i++) { - if (i_this->field_0xa9c[i].ChkTgHit() != 0) { - i_this->mAtInfo.mpCollider = i_this->field_0xa9c[i].GetTgHitObj(); + if (i_this->cc_sph[i].ChkTgHit() != 0) { + i_this->at_info.mpCollider = i_this->cc_sph[i].GetTgHitObj(); if (player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && - i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK)) { - if (!player->onWolfEnemyHangBite(dn_p)) { - return; + i_this->at_info.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK)) { + if (player->onWolfEnemyHangBite(enemy)) { + OS_REPORT("DN PL BITE HANG \n"); + i_this->action = ACTION_WOLFBITE; + i_this->mode = 0; + i_this->invulnerability_timer = 1000; + i_this->sound.startCollisionSE(Z2SE_HIT_WOLFBITE, 31); } - - OS_REPORT("DN PL BITE HANG \n"); - i_this->mAction = ACTION_WOLFBITE; - i_this->mMode = 0; - i_this->field_0x6e8 = 1000; - i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 31); return; } - i_this->field_0x10da = 3; - if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_10000000)) { + i_this->unk_timer_6 = 3; + if (i_this->at_info.mpCollider->ChkAtType(AT_TYPE_10000000)) { wolfkick_damage(i_this); - i_this->field_0x6e8 = 1000; + i_this->invulnerability_timer = 1000; } else { - at_power_check(&i_this->mAtInfo); - s16 sVar1 = a_this->health; - cc_at_check(a_this, &i_this->mAtInfo); + at_power_check(&i_this->at_info); + s16 sVar1 = actor->health; + cc_at_check(actor, &i_this->at_info); if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP) { - i_this->mAtInfo.mHitStatus = 0; + i_this->at_info.mHitStatus = 0; } - if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK)) { - i_this->field_0x6e8 = 20; + if (i_this->at_info.mpCollider->ChkAtType(AT_TYPE_UNK)) { + i_this->invulnerability_timer = 20; } else { - i_this->field_0x6e8 = 10; + i_this->invulnerability_timer = 10; } - if (i_this->mAtInfo.mAttackPower <= 1) { - i_this->field_0x6e8 = 10; + if (i_this->at_info.mAttackPower <= 1) { + i_this->invulnerability_timer = 10; } - i_this->field_0x744 |= i_this->mAtInfo.mHitBit; - if (i_this->mAtInfo.mHitType == 16 || i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { - a_this->health = sVar1; - i_this->mAction = ACTION_DRAWBACK; - i_this->mMode = 0; + i_this->learn |= i_this->at_info.mHitBit; + if (i_this->at_info.mHitType == 16 || i_this->at_info.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + actor->health = sVar1; + i_this->action = ACTION_DRAWBACK; + i_this->mode = 0; - if (i_this->field_0x82e != 0) { - a_this->current.angle.y = a_this->shape_angle.y; + if (i_this->snap_angle_y_flag != 0) { + actor->current.angle.y = actor->shape_angle.y; } - i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; - i_this->field_0x74c = 100.0f; - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); - } else { - if (daPy_getPlayerActorClass()->checkHorseRide() != 0 && dComIfGp_getHorseActor()->speedF >= 20.0f && i_this->mAtInfo.mHitType == 1) { - i_this->mAtInfo.mAttackPower = 20; - if (cM_rndF(1.0f) < 0.5f) { - i_this->mAtInfo.mHitBit |= 0x80; - } else { - i_this->mAtInfo.mHitBit |= 0x800; - } - } + i_this->field_0x750 = (actor->shape_angle.y - 0x8000) - i_this->at_info.mHitDirection.y; + i_this->field_0x74c = KREG_F(9) + 100.0f; + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + break; + } - if (a_this->health <= 0 || i_this->mAtInfo.mHitStatus != 0) { - if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { - small_damage(i_this); - i_this->field_0x6e8 = 3; - } else { - big_damage(i_this); - i_this->field_0x6e8 = 1000; - } + if (daPy_getPlayerActorClass()->checkHorseRide() != 0 && dComIfGp_getHorseActor()->speedF >= 20.0f && i_this->at_info.mHitType == 1) { + i_this->at_info.mAttackPower = 20; + if (cM_rndF(1.0f) < 0.5f) { + i_this->at_info.mHitBit |= 0x80; } else { - small_damage(i_this); + i_this->at_info.mHitBit |= 0x800; } - - a_this->speedF = 0.0f; } + + if (actor->health <= 0 || i_this->at_info.mHitStatus != 0) { + if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { + small_damage(i_this); + i_this->invulnerability_timer = 3; + } else { + big_damage(i_this); + i_this->invulnerability_timer = 1000; + } + } else { + small_damage(i_this); + } + + actor->speedF = 0.0f; } break; } } - for (int i = 0; i < 3; i++) { - if (a_this->health <= 1) { - i_this->field_0xa9c[i].SetTgHitMark((CcG_Tg_HitMark)3); + for (int i = 0; i <= 2; i++) { + if (actor->health <= 1) { + i_this->cc_sph[i].SetTgHitMark((CcG_Tg_HitMark)3); } } } } static void action(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - cXyz sp240, sp24c; + cXyz work, sp24c; i_this->field_0x6f4 = 0; - f32 fVar1 = fopAcM_searchPlayerDistanceXZ(a_this); - i_this->mPlayerDistance = fVar1; - s16 sVar1 = fopAcM_searchPlayerAngleY(a_this); - i_this->mYAngleToPlayer = sVar1; - sVar1 = fopAcM_searchPlayerAngleX(a_this); - i_this->mXAngleToPlayer = sVar1; + i_this->pl_dir = fopAcM_searchPlayerDistanceXZ(actor); + i_this->search_angle_y = fopAcM_searchPlayerAngleY(actor); + i_this->search_angle_x = fopAcM_searchPlayerAngleX(actor); damage_check(i_this); - i_this->field_0x82e = 0; + i_this->snap_angle_y_flag = 0; - s8 bVar1 = 0; + s8 pl_search = 0; s8 bVar2 = 1; - a_this->offHeadLockFlg(); - if (fopAcM_otherBgCheck(player, a_this)) { - fopAcM_OffStatus(a_this, 0); - a_this->attention_info.flags = 0; + actor->offHeadLockFlg(); + if (fopAcM_otherBgCheck(player, actor)) { + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags = 0; } else { - fopAcM_OnStatus(a_this, 0); - a_this->attention_info.flags = fopAc_AttnFlag_BATTLE_e; + fopAcM_OnStatus(actor, 0); + actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e; } - switch (i_this->mAction) { + switch (i_this->action) { case ACTION_NORMAL: e_dn_normal(i_this); break; case ACTION_FIGHT_RUN: e_dn_fight_run(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_ATTACK_0: e_dn_attack_0(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_ATTACK: e_dn_attack(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_TAIL_ATTACK: e_dn_tail_attack(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_GUARD: e_dn_guard(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_JUMP: e_dn_jump(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_STAY: @@ -2400,7 +2479,7 @@ static void action(e_dn_class* i_this) { case ACTION_DRAWBACK: e_dn_drawback(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_WOLFBITE: @@ -2430,7 +2509,7 @@ static void action(e_dn_class* i_this) { case ACTION_GAKEJUMP: e_dn_gakejump(i_this); - bVar1 = 1; + pl_search = 1; break; case ACTION_REG: @@ -2438,146 +2517,148 @@ static void action(e_dn_class* i_this) { break; } - f32 fVar6 = 0.0f; if (bVar2) { dBgS_ObjGndChk obj_gnd_chk; dBgS_ObjGndChk_Spl spl_chk; - sp240 = a_this->current.pos; - sp240.y += 150.0f; - spl_chk.SetPos(&sp240); - obj_gnd_chk.SetPos(&sp240); + work = actor->current.pos; + work.y += 150.0f; + spl_chk.SetPos(&work); + obj_gnd_chk.SetPos(&work); i_this->field_0xa5c = dComIfG_Bgsp().GroundCross(&spl_chk); - fVar1 = i_this->field_0xa5c - dComIfG_Bgsp().GroundCross(&obj_gnd_chk); - if (a_this->current.pos.y < i_this->field_0xa5c && fVar1 > 100.0f) { + f32 fVar1 = i_this->field_0xa5c - dComIfG_Bgsp().GroundCross(&obj_gnd_chk); + if (actor->current.pos.y < i_this->field_0xa5c && fVar1 > 100.0f) { OS_REPORT("DN YOGAN \n"); - i_this->mAction = ACTION_WATER; + i_this->action = ACTION_WATER; if (dComIfG_Bgsp().GetPolyAtt0(spl_chk) == 6) { - i_this->mMode = 1; + i_this->mode = 1; } else { - i_this->mMode = 0; + i_this->mode = 0; } - a_this->current.pos.y = i_this->field_0xa5c; + actor->current.pos.y = i_this->field_0xa5c; } } - if (bVar1) { - i_this->mSound.setLinkSearch(true); + if (pl_search) { + i_this->sound.setLinkSearch(true); } else { - i_this->mSound.setLinkSearch(false); + i_this->sound.setLinkSearch(false); } - if (i_this->field_0x82e == 0) { - cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 2, 0x2000); + if (i_this->snap_angle_y_flag == 0) { + cLib_addCalcAngleS2(&actor->shape_angle.y, actor->current.angle.y, 2, 0x2000); } - cLib_addCalcAngleS2(&a_this->shape_angle.x, a_this->current.angle.x, 2, 0x2000); - cLib_addCalcAngleS2(&a_this->shape_angle.z, a_this->current.angle.z, 2, 0x2000); + cLib_addCalcAngleS2(&actor->shape_angle.x, actor->current.angle.x, 2, 0x2000); + cLib_addCalcAngleS2(&actor->shape_angle.z, actor->current.angle.z, 2, 0x2000); if (i_this->field_0x5d8 != 0) { - cMtx_YrotS(*calc_mtx, i_this->field_0x5d4); + cMtx_YrotS(*calc_mtx, i_this->cur_angle_y_target); cMtx_XrotM(*calc_mtx, i_this->field_0x5d6); - sp240.x = 0.0f; - sp240.y = 0.0f; - sp240.z = a_this->speedF; - MtxPosition(&sp240, &sp24c); - a_this->current.pos += sp24c; - sp240 = i_this->field_0x5bc - i_this->field_0x5c8; - fVar1 = sp240.abs(); - sp240 = i_this->field_0x5bc - a_this->current.pos; - f32 fVar2 = sp240.abs(); - f32 fVar3 = fVar1 * 0.3f; - if (fVar3 > 250.0f) { - fVar3 = 250.0f; + work.x = 0.0f; + work.y = 0.0f; + work.z = actor->speedF; + MtxPosition(&work, &sp24c); + actor->current.pos += sp24c; + work = i_this->field_0x5bc - i_this->field_0x5c8; + f32 fVar1 = work.abs(); + work = i_this->field_0x5bc - actor->current.pos; + f32 fVar2 = work.abs(); + f32 fVar3 = fVar1 * (NREG_F(19) + 0.3f); + if (fVar3 > NREG_F(18) + 250.0f) { + fVar3 = NREG_F(18) + 250.0f; } - i_this->field_0x720 = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f); + i_this->cur_pos_y_offset = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f); i_this->field_0x5d8 = 0; } else { - cLib_addCalc0(&i_this->field_0x720, 1.0f, 30.0f); + cLib_addCalc0(&i_this->cur_pos_y_offset, 1.0f, 30.0f); - if (i_this->field_0x704 != fVar6) { + if (i_this->field_0x704) { cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); - if (i_this->field_0x840 == 0) { - sp240.z = i_this->field_0x704; + if (i_this->unk_timer_5 == 0) { + work.z = i_this->field_0x704; } else { - sp240.z = 0.0f; - a_this->speed.y = 0.0f; + work.z = 0.0f; + actor->speed.y = 0.0f; } - a_this->gravity = -4.0f; + actor->gravity = -4.0f; } else { - cMtx_YrotS(*calc_mtx, a_this->current.angle.y); - sp240.z = a_this->speedF; + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.z = actor->speedF; } - sp240.x = 0.0f; - sp240.y = 0.0f; - MtxPosition(&sp240, &sp24c); + work.x = 0.0f; + work.y = 0.0f; + MtxPosition(&work, &sp24c); - a_this->speed.x = sp24c.x; - a_this->speed.z = sp24c.z; - a_this->speed.y += a_this->gravity; - a_this->current.pos += a_this->speed; - a_this->gravity = -5.0f; + actor->speed.x = sp24c.x; + actor->speed.z = sp24c.z; + actor->speed.y += actor->gravity; + actor->current.pos += actor->speed; + actor->gravity = -5.0f; - if (a_this->speed.y < -100.0f) { - a_this->speed.y = -100.0f; + if (actor->speed.y < -100.0f) { + actor->speed.y = -100.0f; } - if (i_this->mAction != 9 && i_this->field_0x6f2 != 0) { - cXyz* move_pos = i_this->mStts.GetCCMoveP(); + if (i_this->action != ACTION_STAY && i_this->field_0x6f2 != 0) { + cXyz* move_pos = i_this->stts.GetCCMoveP(); if (move_pos != NULL) { - a_this->current.pos.x += move_pos->x; - a_this->current.pos.z += move_pos->z; + actor->current.pos.x += move_pos->x; + actor->current.pos.z += move_pos->z; } } if (i_this->field_0x708 > 0.1f) { - sp240.x = 0.0f; - sp240.y = 0.0f; - sp240.z = -i_this->field_0x708; + work.x = 0.0f; + work.y = 0.0f; + work.z = -i_this->field_0x708; cMtx_YrotS(*calc_mtx, i_this->field_0x70c); - MtxPosition(&sp240, &sp24c); - a_this->current.pos += sp24c; - cLib_addCalc0(&i_this->field_0x708, 1.0f, 7.0f); + MtxPosition(&work, &sp24c); + actor->current.pos += sp24c; + cLib_addCalc0(&i_this->field_0x708, 1.0f, TREG_F(12) + 7.0f); } } - sVar1 = 0x800; + s16 max_step, sVar2, sVar3; + sVar2 = 0; + sVar3 = 0; + max_step = 0x800; if (i_this->field_0x700 != 0) { i_this->field_0x700--; i_this->field_0x6f4 = 2; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); if (i_this->field_0x701 != 0) { - sp240.x = 100.0f; + work.x = 100.0f; } else { - sp240.x = -100.0f; + work.x = -100.0f; } - sp240.y = 100.0f; - sp240.z = -100.0f; - MtxPosition(&sp240, &i_this->field_0x738); - i_this->field_0x738 += a_this->current.pos; - sVar1 = 0x400; + work.y = JREG_F(4) + 100.0f; + work.z = -100.0f; + MtxPosition(&work, &i_this->find_pos); + i_this->find_pos += actor->current.pos; + max_step = 0x400; } if (i_this->field_0x6f4 != 0) { if (i_this->field_0x6f4 == 5) { - if ((i_this->field_0x6cc & 15) == 0 && cM_rndF(1.0f) < 0.3f) { + if ((i_this->frame_counter & 15) == 0 && cM_rndF(1.0f) < 0.3f) { // Every 16 frames i_this->field_0x6fc = cM_rndFX(2500.0f); } } else { if (i_this->field_0x6f4 == 1) { - sp240 = player->eyePos - a_this->current.pos; + work = player->eyePos - actor->current.pos; } else if (i_this->field_0x6f4 == 2) { - sp240 = i_this->field_0x738 - a_this->current.pos; + work = i_this->find_pos - actor->current.pos; } else { - sp240 = player->eyePos - a_this->current.pos; + work = player->eyePos - actor->current.pos; } - sp240.y += l_HIO.model_size * -150.0f; + work.y += -(TREG_F(2) + 150.0f) * l_HIO.model_size; - s16 sVar2 = cM_atan2s(sp240.x, sp240.z) - a_this->shape_angle.y; - s16 sVar3 = a_this->shape_angle.x + cM_atan2s(sp240.y, JMAFastSqrt(sp240.x * sp240.x + sp240.z * sp240.z)); + sVar2 = cM_atan2s(work.x, work.z) - actor->shape_angle.y; + sVar3 = actor->shape_angle.x + cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z)); if (sVar2 > 0x2710) { sVar2 = 10000; } else if (sVar2 < -10000) { @@ -2590,14 +2671,14 @@ static void action(e_dn_class* i_this) { sVar3 = -20000; } - cLib_addCalcAngleS2(&i_this->field_0x6f6, sVar2 / 2, 2, sVar1); - cLib_addCalcAngleS2(&i_this->field_0x6f8, sVar3 / 2, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6f6, sVar2 / 2, 2, max_step); + cLib_addCalcAngleS2(&i_this->field_0x6f8, sVar3 / 2, 2, max_step); } i_this->field_0x6fc = 0; } else { - cLib_addCalcAngleS2(&i_this->field_0x6f6, 0, 2, sVar1); - cLib_addCalcAngleS2(&i_this->field_0x6f8, 0, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6f6, 0, 2, max_step); + cLib_addCalcAngleS2(&i_this->field_0x6f8, 0, 2, max_step); i_this->field_0x6fc = 0; } @@ -2605,87 +2686,87 @@ static void action(e_dn_class* i_this) { if (i_this->field_0x6fe != 0) { i_this->field_0x6fe--; - i_this->field_0x6fa = i_this->field_0x6fe * cM_ssin(i_this->field_0x6fe * 12000) * 200.0f; + i_this->field_0x6fa = i_this->field_0x6fe * cM_ssin(i_this->field_0x6fe * (BREG_S(5) + 12000)) * (BREG_F(18) + 200.0f); } if (i_this->field_0x74c > 1.0f) { cMtx_YrotS(*calc_mtx, i_this->field_0x750); - sp240.x = 0.0f; - sp240.y = 0.0f; - sp240.z = i_this->field_0x74c * 120.0f; - if (sp240.z > 15000.0f) { - sp240.z = 15000.0f; + work.x = 0.0f; + work.y = 0.0f; + work.z = (TREG_F(7) + 120.0f) * i_this->field_0x74c; + if (work.z > 15000.0f) { + work.z = 15000.0f; } - MtxPosition(&sp240, &sp24c); + MtxPosition(&work, &sp24c); i_this->field_0x7a4[0].y = sp24c.x; i_this->field_0x7a4[0].x = sp24c.z; i_this->field_0x7a4[1].y = sp24c.x; i_this->field_0x7a4[1].x = sp24c.z; - cLib_addCalc0(&i_this->field_0x74c, 0.5f, 10.0f); + cLib_addCalc0(&i_this->field_0x74c, 0.5f, TREG_F(7) + 10.0f); } if (fabsf(i_this->field_0x75c) > 1.0f) { - i_this->field_0x7a4[1].x = i_this->field_0x75c * cM_scos(i_this->field_0x760) * 70.0f; + i_this->field_0x7a4[1].x = i_this->field_0x75c * cM_scos(i_this->field_0x760) * (BREG_F(0) + 70.0f); i_this->field_0x7a4[2].x += i_this->field_0x7a4[1].x; - cLib_addCalc0(&i_this->field_0x75c, 1.0f, 3.0f); - i_this->field_0x760 += 4000; + cLib_addCalc0(&i_this->field_0x75c, 1.0f, BREG_F(1) + 3.0f); + i_this->field_0x760 += BREG_S(0) + 4000; } if (fabsf(i_this->field_0x754) > 1.0f) { - i_this->field_0x7a4[0].x = i_this->field_0x754 * cM_scos(i_this->field_0x758) * 70.0f; - cLib_addCalc0(&i_this->field_0x754, 1.0f, 3.0f); - i_this->field_0x758 += 4000; + i_this->field_0x7a4[0].x = i_this->field_0x754 * cM_scos(i_this->field_0x758) * (BREG_F(2) + 70.0f); + cLib_addCalc0(&i_this->field_0x754, 1.0f, BREG_F(3) + 3.0f); + i_this->field_0x758 += BREG_S(1) + 4000; } - if (a_this->speed.y < 0.0f && i_this->mObjAcch.ChkGroundHit()) { + if (actor->speed.y < 0.0f && i_this->objacch.ChkGroundHit()) { cLib_addCalc0(&i_this->field_0x75c, 1.0f, 30.0f); cLib_addCalc0(&i_this->field_0x754, 1.0f, 30.0f); } - if (i_this->field_0x704 != fVar6) { - s16 sVar4 = i_this->field_0x724.y - a_this->shape_angle.y; - i_this->field_0x7a4[3].y = 0x4000 - sVar4; - if (i_this->field_0x7a4[3].y > 0x1770) { + if (i_this->field_0x704) { + s16 sVar4 = i_this->field_0x724.y - actor->shape_angle.y; + i_this->field_0x7a4[3].y = 0x4000 + -sVar4; + if (i_this->field_0x7a4[3].y > 6000) { // ~33° i_this->field_0x7a4[3].y = 6000; - } else if (i_this->field_0x7a4[3].y < -9000) { + } else if (i_this->field_0x7a4[3].y < -9000) { // ~49.4° i_this->field_0x7a4[3].y = -9000; } - i_this->field_0x7a4[4].y = 0x4000 - sVar4; - if (i_this->field_0x7a4[4].y > 0x4268) { + i_this->field_0x7a4[4].y = 0x4000 + -sVar4; + if (i_this->field_0x7a4[4].y > 17000) { // ~93.4° i_this->field_0x7a4[4].y = 17000; } else if (i_this->field_0x7a4[4].y < 0) { i_this->field_0x7a4[4].y = 0; } i_this->field_0x7a4[5].y = sVar4 + 0x4000; - if (i_this->field_0x7a4[5].y > 0x1770) { + if (i_this->field_0x7a4[5].y > 6000) { i_this->field_0x7a4[5].y = 6000; } else if (i_this->field_0x7a4[5].y < -9000) { i_this->field_0x7a4[5].y = -9000; } i_this->field_0x7a4[6].y = sVar4 + 0x4000; - if (i_this->field_0x7a4[6].y > 0x4268) { + if (i_this->field_0x7a4[6].y > 17000) { i_this->field_0x7a4[6].y = 17000; } else if (i_this->field_0x7a4[6].y < 0) { i_this->field_0x7a4[6].y = 0; } cMtx_YrotS(*calc_mtx, sVar4); - sp240.x = 0.0f; - sp240.y = 0.0f; - sp240.z = 12000.0f; - MtxPosition(&sp240, &sp24c); + work.x = 0.0f; + work.y = 0.0f; + work.z = BREG_F(8) + 12000.0f; + MtxPosition(&work, &sp24c); i_this->field_0x836.y = -sp24c.x; i_this->field_0x836.x = -sp24c.z * 1.3f; - if (i_this->field_0x836.x > 10000) { - i_this->field_0x836.x = 10000; + if (i_this->field_0x836.x > (s16)(BREG_S(6) + 10000)) { + i_this->field_0x836.x = BREG_S(6) + 10000; } - i_this->field_0x836.x += 6000; + i_this->field_0x836.x += BREG_S(7) + 6000; } static s16 j_spd[11] = { @@ -2699,66 +2780,64 @@ static void action(e_dn_class* i_this) { cLib_addCalcAngleS2(&i_this->field_0x762[i].x, i_this->field_0x7a4[i].x, 2, j_spd[i]); cLib_addCalcAngleS2(&i_this->field_0x762[i].y, i_this->field_0x7a4[i].y, 2, j_spd[i]); cLib_addCalcAngleS2(&i_this->field_0x762[i].z, i_this->field_0x7a4[i].z, 2, j_spd[i]); - i_this->field_0x7a4[i].z = 0; - i_this->field_0x7a4[i].x = 0; + i_this->field_0x7a4[i].x = i_this->field_0x7a4[i].z = 0; if (i >= 3 && i <= 6) { - if (i_this->field_0x7fc[i] == 0) { - s16 sVar5; + if (i_this->field_0x802[i - 3] == 0) { + s16 max_step; if (i == 4 || i == 6) { - sVar5 = 0x600; + max_step = 0x600; // ~8.4° } else { - sVar5 = 0x800; + max_step = 0x800; // 11.25° } - cLib_addCalcAngleS2(&i_this->field_0x7a4[i].y, 0, 1, sVar5); + cLib_addCalcAngleS2(&i_this->field_0x7a4[i].y, 0, 1, max_step); } else { - i_this->field_0x7fc[i]--; + i_this->field_0x802[i - 3]--; } } else { i_this->field_0x7a4[i].y = 0; } if (i >= 3) { - i_this->field_0x7ec[i] = i_this->field_0x7e8 * cM_scos(i_this->field_0x6cc * 4000 + i * 20000); + i_this->field_0x7ec[i] = i_this->field_0x7e8 * cM_scos(i_this->frame_counter * (BREG_S(0) + 4000) + i * (BREG_S(1) + 20000)); } } - cLib_addCalc0(&i_this->field_0x7e8, 1.0f, 100.0f); - cLib_addCalcAngleS2(&i_this->field_0x832, i_this->field_0x836.y, 2, 0x800); - cLib_addCalcAngleS2(&i_this->field_0x830, i_this->field_0x836.x, 2, 0x800); - i_this->field_0x836.x = 0; - i_this->field_0x836.y = 0; - if (i_this->field_0x828 != 0) { - i_this->field_0x828--; + cLib_addCalc0(&i_this->field_0x7e8, 1.0f, BREG_F(11) + 100.0f); + cLib_addCalcAngleS2(&i_this->field_0x830.y, i_this->field_0x836.y, 2, 0x800); + cLib_addCalcAngleS2(&i_this->field_0x830.x, i_this->field_0x836.x, 2, 0x800); + i_this->field_0x836.y = i_this->field_0x836.x = 0; + if (i_this->unk_timer_4 != 0) { + i_this->unk_timer_4--; } - fVar1 = i_this->field_0x828 * 1.0f; + f32 fVar1 = i_this->unk_timer_4 * (DREG_F(13) + 1.0f); if (fVar1 > 30.0f) { fVar1 = 30.0f; } fVar1 *= fVar1; for (int i = 0; i < 4; i++) { - i_this->field_0x80e[i].x = fVar1 * (cM_ssin(i_this->field_0x6cc * 5000 + i * -15000) * 5.0f); - i_this->field_0x80e[i].y = fVar1 * (cM_ssin(i_this->field_0x6cc * 0x12C0 + i * -13000) * 5.0f); + i_this->field_0x80e[i].x = fVar1 * (cM_ssin(i_this->frame_counter * (DREG_S(5) + 5000) + i * (DREG_S(7) + -15000)) * (DREG_F(18) + 5.0f)); + i_this->field_0x80e[i].y = fVar1 * (cM_ssin(i_this->frame_counter * (DREG_S(5) + 0x12C0) + i * (DREG_S(7) + -13000)) * (DREG_F(18) + 5.0f)); } - J3DModel* model; - cLib_addCalcAngleS2(&i_this->field_0x826, 0, 4, 0x100); - if (i_this->field_0x736 != 0) { - i_this->field_0x736--; + cLib_addCalcAngleS2(&i_this->jnt_tail_y_rot_offset, 0, 4, 0x100); + if (i_this->unk_timer_3 != 0) { + i_this->unk_timer_3--; if (i_this->field_0x724.x != 0) { Vec sp258; cXyz sp264, sp270; dBgS_GndChk gnd_chk; - int sVar6 = 0; - s16 sVar7 = 0; + s16 sVar6, sVar7; + sVar6 = 0; + sVar7 = 0; fVar1 = 100.0f; - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); - sp240.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp240, &sp264); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_BACKBONE02), *calc_mtx); + work.set(0.0f, 0.0f, 0.0f); + MtxPosition(&work, &sp264); sp264.y += 100.0f; sp264.y += 100.0f; gnd_chk.SetPos(&sp264); @@ -2772,7 +2851,10 @@ static void action(e_dn_class* i_this) { sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); if (sp258.y != -G_CM3D_F_INF) { - sVar7 = -cM_atan2s(sp258.y - sp264.y, sp258.z - sp264.z); + f32 z, y; + y = sp258.y - sp264.y; + z = sp258.z - sp264.z; + sVar7 = -cM_atan2s(y, z); if (sVar7 > 0x3000 || sVar7 < -0x3000) { sVar7 = 0; } @@ -2784,7 +2866,10 @@ static void action(e_dn_class* i_this) { gnd_chk.SetPos(&sp258); sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); if (sp258.y != -G_CM3D_F_INF) { - sVar6 = cM_atan2s(sp258.y - sp264.y, sp258.x - sp264.x); + f32 x, y; + y = sp258.y - sp264.y; + x = sp258.x - sp264.x; + sVar6 = (s16)cM_atan2s(y, x); if (sVar6 > 0x3000 || sVar6 < -0x3000) { sVar6 = 0; } @@ -2792,25 +2877,25 @@ static void action(e_dn_class* i_this) { } dBgS_LinChk lin_chk; - cXyz sp27c, sp288, sp294; + cXyz work, start, end; - sp288 = a_this->current.pos; - sp288.y += 30.0f; - model = i_this->mpModelMorf->getModel(); - sp27c.set(0.0f, 0.0f, 0.0f); - MTXCopy(model->getAnmMtx(4), *calc_mtx); - MtxPosition(&sp27c, &sp294); - sp294.y += 30.0f; - lin_chk.Set(&sp288, &sp294, a_this); + start = actor->current.pos; + start.y += JREG_F(5) + 30.0f; + J3DModel* model = i_this->anm_p->getModel(); + work.set(0.0f, 0.0f, 0.0f); + MTXCopy(model->getAnmMtx((int)BREG_S(8) + JNT_NECK02), *calc_mtx); + MtxPosition(&work, &end); + end.y += JREG_F(6) + 30.0f; + lin_chk.Set(&start, &end, actor); if (dComIfG_Bgsp().LineCross(&lin_chk)) { - sp27c = sp288 - sp294; - cMtx_YrotS(*calc_mtx, cM_atan2s(sp27c.x, sp27c.z)); - sp27c.x = 0.0f; - sp27c.y = 0.0f; - sp27c.z = 50.0f; - MtxPosition(&sp27c, &sp24c); - a_this->current.pos += sp24c; + work = start - end; + cMtx_YrotS(*calc_mtx, cM_atan2s(work.x, work.z)); + work.x = 0.0f; + work.y = 0.0f; + work.z = TREG_F(11) + 50.0f; + MtxPosition(&work, &sp24c); + actor->current.pos += sp24c; } i_this->field_0x730.x = sVar7; @@ -2821,82 +2906,83 @@ static void action(e_dn_class* i_this) { cLib_addCalcAngleS2(&i_this->field_0x72a.x, i_this->field_0x730.x, 1, 0x400); cLib_addCalcAngleS2(&i_this->field_0x72a.z, i_this->field_0x730.z, 1, 0x400); - if (i_this->field_0x10e4 != 0) { - model = i_this->mpModelMorf->getModel(); - sp240.set(0.0f, 0.0f, 0.0f); + if (i_this->set_smoke_flag != 0) { + J3DModel* model = i_this->anm_p->getModel(); + work.set(0.0f, 0.0f, 0.0f); static int foot_idx[2] = { - 26, 30, + JNT_FOOTL, JNT_FOOTR, }; for (int i = 0; i < 2; i++) { - if ((i_this->field_0x10e4 == 3 || (i_this->field_0x10e4 == 2 && i == 1)) || (i_this->field_0x10e4 == 1 && i == 0)) { + if (i_this->set_smoke_flag == 3 || (i_this->set_smoke_flag == 2 && i == 1) || (i_this->set_smoke_flag == 1 && i == 0)) { MTXCopy(model->getAnmMtx(foot_idx[i]), *calc_mtx); - MtxPosition(&sp240, &sp24c); - fopAcM_effSmokeSet1(&i_this->field_0x10e8[i], &i_this->field_0x10f0[i], &sp24c, &a_this->shape_angle, 1.0f, &a_this->tevStr, 0); + MtxPosition(&work, &sp24c); + fopAcM_effSmokeSet2(&i_this->field_0x10e8[i], &i_this->field_0x10f0[i], &sp24c, &actor->shape_angle, + TREG_F(8) + 1.0f, &actor->tevStr); } } - i_this->field_0x10e4 = 0; + i_this->set_smoke_flag = 0; } - if (i_this->field_0x10da != 0) { - i_this->field_0x10da--; - if (i_this->field_0x10da == 0) { - dComIfGp_particle_set(0x15E, &a_this->eyePos, &a_this->shape_angle, NULL); + if (i_this->unk_timer_6 != 0) { + i_this->unk_timer_6--; + if (i_this->unk_timer_6 == 0) { + dComIfGp_particle_set(ID_ZI_J_TUBA00, &actor->eyePos, &actor->shape_angle, NULL); } } cXyz sp2a4(1.3f, 1.3f, 1.3f); - setMidnaBindEffect(a_this, &i_this->mSound, &a_this->eyePos, &sp2a4); + setMidnaBindEffect(actor, &i_this->sound, &actor->eyePos, &sp2a4); } static void anm_se_set(e_dn_class* i_this) { - int frame = i_this->mpModelMorf->getFrame(); + int frame = i_this->anm_p->getFrame(); - if (i_this->mAnmID == ANM_ATTACK_01) { + if (i_this->anm_no == ANM_ATTACK_01) { if (frame == 35) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_TAIL, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_TAIL, 0, -1); } else if (frame == 28) { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_TAIL, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_TAIL, -1); } - } else if (i_this->mAnmID == ANM_ATTACK_TAIL_01) { + } else if (i_this->anm_no == ANM_ATTACK_TAIL_01) { if (frame == 18) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_KNIFE, 0, -1); } - } else if (i_this->mAnmID == ANM_ATTACK_TAIL_02) { + } else if (i_this->anm_no == ANM_ATTACK_TAIL_02) { if (frame == 10) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE2_A, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_KNIFE2_A, 0, -1); } if (frame == 24) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE2_B, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_KNIFE2_B, 0, -1); } - } else if (i_this->mAnmID == ANM_WALK) { + } else if (i_this->anm_no == ANM_WALK) { if (frame == 3) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); } else if (frame == 18) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); } - } else if (i_this->mAnmID == ANM_RUN) { + } else if (i_this->anm_no == ANM_RUN) { if (frame == 10) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); } else if (frame == 4) { - i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); + i_this->sound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); } - } else if (i_this->mAnmID == ANM_WAIT_03) { + } else if (i_this->anm_no == ANM_WAIT_03) { if (frame == 15) { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH, -1); } - } else if (i_this->mAnmID == ANM_WAIT_04 && frame == 15) { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH2, -1); + } else if (i_this->anm_no == ANM_WAIT_04 && frame == 15) { + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH2, -1); } } int c_start; static int daE_DN_Execute(e_dn_class* i_this) { - if (i_this->field_0x10d8 != 0) { + if (i_this->status != 0) { return 1; } @@ -2905,286 +2991,287 @@ static int daE_DN_Execute(e_dn_class* i_this) { return 1; } - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - cXyz sp2c; - cXyz sp38; - cXyz sp44; - i_this->field_0x6cc++; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work; + cXyz pos; + cXyz downPos; + i_this->frame_counter++; for (int i = 0; i < 4; i++) { - if (i_this->field_0x6e0[i] != 0) { - i_this->field_0x6e0[i]--; + if (i_this->timer[i] != 0) { + i_this->timer[i]--; } } - if (i_this->field_0x6e8 != 0) { - i_this->field_0x6e8--; + if (i_this->invulnerability_timer != 0) { + i_this->invulnerability_timer--; } - if (i_this->field_0x6ec != 0) { - i_this->field_0x6ec--; + if (i_this->unk_timer_2 != 0) { + i_this->unk_timer_2--; } - if (i_this->field_0x840 != 0) { - i_this->field_0x840--; + if (i_this->unk_timer_5 != 0) { + i_this->unk_timer_5--; } - if (i_this->field_0x6ea != 0) { - i_this->field_0x6ea--; + if (i_this->unk_timer_1 != 0) { + i_this->unk_timer_1--; } i_this->field_0x6f2 = 1; action(i_this); - if (i_this->field_0x840 == 0 && i_this->field_0x5d8 == 0) { + if (i_this->unk_timer_5 == 0 && i_this->field_0x5d8 == 0) { if (i_this->field_0x704) { cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); - sp2c.x = 0.0f; - sp2c.y = TREG_F(8); - sp2c.z = i_this->field_0x83c; - MtxPosition(&sp2c, &sp38); - a_this->current.pos += sp38; - a_this->old.pos += sp38; + work.x = 0.0f; + work.y = TREG_F(8); + work.z = i_this->field_0x83c; + MtxPosition(&work, &pos); + actor->current.pos += pos; + actor->old.pos += pos; cLib_addCalc2(&i_this->field_0x83c, i_this->field_0x704 * (2.0f + TREG_F(9)), 1.0f, 5.0f + TREG_F(17)); } else { cLib_addCalc0(&i_this->field_0x83c, 1.0f, 5.0f + TREG_F(17)); } - i_this->mObjAcch.CrrPos(dComIfG_Bgsp()); + i_this->objacch.CrrPos(dComIfG_Bgsp()); if (i_this->field_0x704) { - a_this->current.pos -= sp38; - a_this->old.pos -= sp38; + actor->current.pos -= pos; + actor->old.pos -= pos; } - if (!i_this->mObjAcch.ChkGroundHit()) { - if (a_this->speed.y < -10.0f) { - i_this->field_0x842++; - if (i_this->field_0x842 == 13) { - i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + if (!i_this->objacch.ChkGroundHit()) { + if (actor->speed.y < -10.0f) { + i_this->unk_counter_2++; + if (i_this->unk_counter_2 == 13) { + i_this->sound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); } } } else { - if (i_this->field_0x842 >= 13 + ZREG_S(8)) { - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; - a_this->speed.y = 0.0f; + if (i_this->unk_counter_2 >= 13 + ZREG_S(8)) { + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; + actor->speed.y = 0.0f; i_this->field_0x704 = -1.0; i_this->field_0x724.x = -0x3000; - i_this->field_0x828 = 50 + DREG_S(2); - i_this->field_0x6e8 = 1000; - a_this->health = 0; + i_this->unk_timer_4 = 50 + DREG_S(2); + i_this->invulnerability_timer = 1000; + actor->health = 0; } - i_this->field_0x842 = 0; + i_this->unk_counter_2 = 0; } } - mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y + i_this->field_0x720, a_this->current.pos.z); + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y + i_this->cur_pos_y_offset, actor->current.pos.z); mDoMtx_stack_c::XrotM((s16) i_this->field_0x72a.x); mDoMtx_stack_c::ZrotM((s16) i_this->field_0x72a.z); mDoMtx_stack_c::YrotM((s16) i_this->field_0x724.y); mDoMtx_stack_c::XrotM((s16) i_this->field_0x724.x); mDoMtx_stack_c::YrotM(-i_this->field_0x724.y); - mDoMtx_stack_c::YrotM((s16) a_this->shape_angle.y); - mDoMtx_stack_c::XrotM((s16) a_this->shape_angle.x); - mDoMtx_stack_c::ZrotM(a_this->shape_angle.z); - mDoMtx_stack_c::scaleM(l_HIO.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x); + mDoMtx_stack_c::YrotM((s16) actor->shape_angle.y); + mDoMtx_stack_c::XrotM((s16) actor->shape_angle.x); + mDoMtx_stack_c::ZrotM(actor->shape_angle.z); + mDoMtx_stack_c::scaleM(l_HIO.model_size * actor->scale.x, l_HIO.model_size * actor->scale.x, l_HIO.model_size * actor->scale.x); - J3DModel* model = i_this->mpModelMorf->getModel(); + J3DModel* model = i_this->anm_p->getModel(); model->setBaseTRMtx(mDoMtx_stack_c::get()); - i_this->mpModelMorf->play(0, 0); + i_this->anm_p->play(0, 0); anm_se_set(i_this); - i_this->mpModelMorf->modelCalc(); - MTXCopy(model->getAnmMtx(2), *calc_mtx); + i_this->anm_p->modelCalc(); + MTXCopy(model->getAnmMtx(JNT_BACKBONE02), *calc_mtx); - sp2c.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp2c, &sp38); - sp2c.set(YREG_F(1), YREG_F(2), -200.0f + YREG_F(3)); - MtxPosition(&sp2c, &sp44); - if (sp38.y < sp44.y) { - i_this->field_0x737 = 0; + work.set(0.0f, 0.0f, 0.0f); + MtxPosition(&work, &pos); + work.set(YREG_F(1), YREG_F(2), -200.0f + YREG_F(3)); + MtxPosition(&work, &downPos); + if (pos.y < downPos.y) { + i_this->left_right_flag = 0; } else { - i_this->field_0x737 = 1; + i_this->left_right_flag = 1; } cXyz sp50(0.0f, 0.0f, 0.0f); - if (i_this->field_0x6e8 != 0) { + if (i_this->invulnerability_timer != 0) { sp50.set(-20000.0f, 200000.0f, 30000.0f); } - MTXCopy(model->getAnmMtx(6), *calc_mtx); - sp2c.set(30.0f + KREG_F(12), 30.0f + KREG_F(13), 0.0f + KREG_F(14)); - MtxPosition(&sp2c, &a_this->eyePos); + MTXCopy(model->getAnmMtx(JNT_HEAD), *calc_mtx); + work.set(30.0f + KREG_F(12), 30.0f + KREG_F(13), 0.0f + KREG_F(14)); + MtxPosition(&work, &actor->eyePos); - i_this->field_0xa9c[0].SetC(a_this->eyePos + sp50); + i_this->cc_sph[0].SetC(actor->eyePos + sp50); if (daPy_getPlayerActorClass()->checkHorseRide()) { - i_this->field_0xa9c[0].SetR(70.0f); + i_this->cc_sph[0].SetR(70.0f); } else { - i_this->field_0xa9c[0].SetR(50.0f); + i_this->cc_sph[0].SetR(50.0f); } - a_this->attention_info.position = a_this->eyePos; - a_this->attention_info.position.y += 70.0f + BREG_F(7); + actor->attention_info.position = actor->eyePos; + actor->attention_info.position.y += 70.0f + BREG_F(7); - MTXCopy(model->getAnmMtx(1), *calc_mtx); - sp2c.set(-30.0f + BREG_F(11), BREG_F(12), BREG_F(13)); - MtxPosition(&sp2c, &sp38); - i_this->field_0xa9c[1].SetC(sp38 + sp50); - i_this->field_0xa9c[1].SetR(45.0f); - MTXCopy(model->getAnmMtx(2), *calc_mtx); - sp2c.set(20.0f + BREG_F(14), BREG_F(15), BREG_F(16)); - MtxPosition(&sp2c, &sp38); - i_this->field_0xa9c[2].SetC(sp38 + sp50); - i_this->field_0xa9c[2].SetR(45.0f); + MTXCopy(model->getAnmMtx(JNT_BACKBONE01), *calc_mtx); + work.set(-30.0f + BREG_F(11), BREG_F(12), BREG_F(13)); + MtxPosition(&work, &pos); + i_this->cc_sph[1].SetC(pos + sp50); + i_this->cc_sph[1].SetR(45.0f); + + MTXCopy(model->getAnmMtx(JNT_BACKBONE02), *calc_mtx); + work.set(20.0f + BREG_F(14), BREG_F(15), BREG_F(16)); + MtxPosition(&work, &pos); + i_this->cc_sph[2].SetC(pos + sp50); + i_this->cc_sph[2].SetR(45.0f); for (int i = 0; i <= 2; i++) { if (i_this->field_0x6f2 != 0) { - i_this->field_0xa9c[i].OnCoSetBit(); + i_this->cc_sph[i].OnCoSetBit(); } else { - i_this->field_0xa9c[i].OffCoSetBit(); + i_this->cc_sph[i].OffCoSetBit(); } - dComIfG_Ccsp()->Set(&i_this->field_0xa9c[i]); + dComIfG_Ccsp()->Set(&i_this->cc_sph[i]); } - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(19), *calc_mtx); - i_this->mpKnifeModel->setBaseTRMtx(*calc_mtx); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_HANDR1), *calc_mtx); + i_this->knife_model->setBaseTRMtx(*calc_mtx); - if (i_this->field_0x6ef != 0 && i_this->field_0x6ee <= 1) { - sp2c.set(BREG_F(7), 60.0f + BREG_F(8), BREG_F(9)); - MtxPosition(&sp2c, &sp38); - if (i_this->field_0x6f0 == 0) { - i_this->field_0x6f0 = 1; - i_this->field_0xe44.StartCAt(sp38); + if (i_this->at_chk_flag != 0 && i_this->tail_at_sph_flag <= 1) { + work.set(BREG_F(7), 60.0f + BREG_F(8), BREG_F(9)); + MtxPosition(&work, &pos); + if (i_this->at_sph_center_flag == 0) { + i_this->at_sph_center_flag = 1; + i_this->at_sph.StartCAt(pos); } else { - i_this->field_0xe44.MoveCAt(sp38); + i_this->at_sph.MoveCAt(pos); } - if (i_this->field_0x6ee == 1) { - i_this->field_0xe44.SetR(l_HIO.model_size * 80.0f); + if (i_this->tail_at_sph_flag == 1) { + i_this->at_sph.SetR(l_HIO.model_size * 80.0f); } else { - i_this->field_0xe44.SetR(l_HIO.model_size * 50.0f); + i_this->at_sph.SetR(l_HIO.model_size * 50.0f); } - i_this->field_0xe44.SetAtAtp(1); + i_this->at_sph.SetAtAtp(1); } - if (i_this->mpSkullModel != NULL) { + if (i_this->skull_model != NULL) { if (i_this->field_0x694 == 0) { - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(6), mDoMtx_stack_c::get()); - mDoMtx_stack_c::multVecZero(&i_this->field_0x698); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_HEAD), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&i_this->skull_trans); } else { - i_this->field_0x698 += i_this->field_0x6a4; - if (i_this->field_0x6a4.y <= i_this->mObjAcch.GetGroundH()) { - i_this->mpSkullModel = NULL; + i_this->skull_trans += i_this->field_0x6a4; + if (i_this->field_0x6a4.y <= i_this->objacch.GetGroundH()) { + i_this->skull_model = NULL; } i_this->field_0x6a4.y -= 5.0f; - mDoMtx_stack_c::transS(i_this->field_0x698.x, i_this->field_0x698.y, i_this->field_0x698.z); - mDoMtx_stack_c::YrotM(i_this->field_0x6b0); - mDoMtx_stack_c::XrotM(i_this->field_0x6b2); + mDoMtx_stack_c::transS(i_this->skull_trans.x, i_this->skull_trans.y, i_this->skull_trans.z); + mDoMtx_stack_c::YrotM(i_this->skull_y_rot); + mDoMtx_stack_c::XrotM(i_this->skull_x_rot); } - i_this->mpSkullModel->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->skull_model->setBaseTRMtx(mDoMtx_stack_c::get()); } - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); - i_this->mpShieldModel->setBaseTRMtx(*calc_mtx); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_ARML2), *calc_mtx); + i_this->tate_model->setBaseTRMtx(*calc_mtx); - if (i_this->field_0x6ef != 0 && i_this->field_0x6ee == 2) { - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(34), *calc_mtx); - sp2c.set(BREG_F(7), BREG_F(8), BREG_F(9)); - MtxPosition(&sp2c, &sp38); + if (i_this->at_chk_flag != 0 && i_this->tail_at_sph_flag == 2) { + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_TAIL04), *calc_mtx); + work.set(BREG_F(7), BREG_F(8), BREG_F(9)); + MtxPosition(&work, &pos); - if (i_this->field_0x6f0 == 0) { - i_this->field_0x6f0 = 1; - i_this->field_0xe44.StartCAt(sp38); + if (i_this->at_sph_center_flag == 0) { + i_this->at_sph_center_flag = 1; + i_this->at_sph.StartCAt(pos); } else { - i_this->field_0xe44.MoveCAt(sp38); + i_this->at_sph.MoveCAt(pos); } - i_this->field_0xe44.SetAtAtp(2); - i_this->field_0xe44.SetR((70.0f + BREG_F(10)) * l_HIO.model_size); + i_this->at_sph.SetAtAtp(2); + i_this->at_sph.SetR((70.0f + BREG_F(10)) * l_HIO.model_size); } - if (i_this->field_0x6ef == 0) { + if (i_this->at_chk_flag == 0) { cXyz sp68(-23500.0f, -20000.0f, -50000.0f); - i_this->field_0xe44.SetC(a_this->current.pos + sp68); - i_this->field_0x6f0 = 0; + i_this->at_sph.SetC(actor->current.pos + sp68); + i_this->at_sph_center_flag = 0; } else { - i_this->field_0x6ef = 0; + i_this->at_chk_flag = 0; } - dComIfG_Ccsp()->Set(&i_this->field_0xe44); + dComIfG_Ccsp()->Set(&i_this->at_sph); - if (i_this->field_0x6f1 != 0 && i_this->field_0x6ec == 0) { - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); - sp2c.set(50.0f + JREG_F(5), JREG_F(6), 30.0f + JREG_F(7)); - MtxPosition(&sp2c, &sp38); - i_this->field_0xf7c.SetC(sp38); - i_this->field_0xf7c.SetR((70.0f + JREG_F(8)) * l_HIO.model_size); + if (i_this->guard_flag != 0 && i_this->unk_timer_2 == 0) { + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_ARML2), *calc_mtx); + work.set(50.0f + JREG_F(5), JREG_F(6), 30.0f + JREG_F(7)); + MtxPosition(&work, &pos); + i_this->tate_sph.SetC(pos); + i_this->tate_sph.SetR((70.0f + JREG_F(8)) * l_HIO.model_size); - if (i_this->field_0xf7c.ChkTgHit()) { - def_se_set(&i_this->mSound, i_this->field_0xf7c.GetTgHitObj(), 40, 0); - dScnPly_c::setPauseTimer(l_HIO.field_0x1c); - i_this->field_0x6ec = 10; - cMtx_YrotS(*calc_mtx, (s16)a_this->shape_angle.y); - sp2c.x = KREG_F(0); - sp2c.y = 120.0f + KREG_F(1); - sp2c.z = 50.0f + KREG_F(2); - MtxPosition(&sp2c, &sp38); - sp38 += a_this->current.pos; - dComIfGp_setHitMark(2, NULL, &sp38, &a_this->shape_angle, NULL, 0); + if (i_this->tate_sph.ChkTgHit()) { + def_se_set(&i_this->sound, i_this->tate_sph.GetTgHitObj(), 40, 0); + dScnPly_c::setPauseTimer(l_HIO.defense_pause_time); + i_this->unk_timer_2 = 10; + cMtx_YrotS(*calc_mtx, (s16)actor->shape_angle.y); + work.x = KREG_F(0); + work.y = 120.0f + KREG_F(1); + work.z = 50.0f + KREG_F(2); + MtxPosition(&work, &pos); + pos += actor->current.pos; + dComIfGp_setHitMark(2, NULL, &pos, &actor->shape_angle, NULL, 0); } } else { cXyz sp74(-23500.0f, -20000.0f, -30000.0f); - i_this->field_0xf7c.SetC(a_this->current.pos + sp74); + i_this->tate_sph.SetC(actor->current.pos + sp74); } - i_this->field_0x6f1 = 0; - dComIfG_Ccsp()->Set(&i_this->field_0xf7c); - if (i_this->field_0x6c4 != 0) { - cLib_addCalc2(&i_this->field_0x6c8, -20.0f, 1.0f, 0.4f); + i_this->guard_flag = 0; + dComIfG_Ccsp()->Set(&i_this->tate_sph); + if (i_this->death_flag != 0) { + cLib_addCalc2(&i_this->color, -20.0f, 1.0f, 0.4f); } fopAc_ac_c* player = dComIfGp_getPlayer(0); - MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), mDoMtx_stack_c::get()); - mDoMtx_stack_c::multVecZero(&sp38); - sp2c = player->current.pos - sp38; - s16 tans_val = cM_atan2s(sp2c.x, sp2c.z); + MTXCopy(i_this->anm_p->getModel()->getAnmMtx(JNT_BACKBONE02), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&pos); + work = player->current.pos - pos; + s16 tans_val = cM_atan2s(work.x, work.z); cMtx_YrotS(*calc_mtx, tans_val); - sp2c.x = 0.0; - sp2c.y = 45.0f; - sp2c.z = 30.0f; - MtxPosition(&sp2c, &sp44); - sp44 += sp38; + work.x = 0.0; + work.y = NREG_F(18) + 45.0f; + work.z = (BREG_F(12) + 60.0f) - 30.0f; + MtxPosition(&work, &downPos); + downPos += pos; // The following pokes a hole in the "c-style actors don't inherit" theory.... - ((fopEn_enemy_c*) i_this)->setDownPos(&sp44); - cXyz sp80(a_this->eyePos); - sp80.y += 180.0f; + ((fopEn_enemy_c*) i_this)->setDownPos(&downPos); + cXyz sp80(actor->eyePos); + sp80.y += NREG_F(7) + 180.0f; ((fopEn_enemy_c*) i_this)->setHeadLockPos(&sp80); - a_this->attention_info.flags |= fopAc_AttnFlag_UNK_0x200000; + actor->attention_info.flags |= fopAc_AttnFlag_UNK_0x200000; - if ((a_this->current.pos.y - a_this->home.pos.y) < -5000.0f) { - fopAcM_delete(a_this); + if ((actor->current.pos.y - actor->home.pos.y) < -5000.0f) { + fopAcM_delete(actor); OS_REPORT("DN NARAKU\n"); - int swBit = (fopAcM_GetParam(a_this) & 0xFF000000) >> 24; + int swBit = (fopAcM_GetParam(actor) & 0xFF000000) >> 24; if (swBit != 0xFF) { - dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(actor)); } } // City in the Sky - Dynalfos Room: // i.e. where you can scare the 2 lizard dudes with the clawshot, make them fall to their deaths, // then the fan in the middle turns on. - if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 && fopAcM_GetRoomNo(a_this) == 8 - && a_this->health != 0 && a_this->current.pos.y <= -300.0f) { - i_this->mAction = ACTION_DAMAGE; - i_this->mMode = 0; + if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 && fopAcM_GetRoomNo(actor) == 8 + && actor->health != 0 && actor->current.pos.y <= -300.0f) { + i_this->action = ACTION_DAMAGE; + i_this->mode = 0; i_this->field_0x704 = 0.0; - a_this->health = 0; + actor->health = 0; } return 1; @@ -3195,15 +3282,18 @@ static int daE_DN_IsDelete(e_dn_class* i_this) { } static int daE_DN_Delete(e_dn_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; - dComIfG_resDelete(&i_this->mPhase, "E_dn"); + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + fpc_ProcID no = fopAcM_GetID(i_this); - if (i_this->field_0x10d9 != 0) { + dComIfG_resDelete(&i_this->phase, "E_dn"); + + if (i_this->hio_init != 0) { l_initHIO = 0; + mDoHIO_DELETE_CHILD(l_HIO.no); } - if (a_this->heap != NULL) { - i_this->mpModelMorf->stopZelAnime(); + if (actor->heap != NULL) { + i_this->anm_p->stopZelAnime(); } return 1; @@ -3220,17 +3310,17 @@ dJntColData_c jc_data[12] = { {0, 1, 28, 15.0f, &jv_offset}, {0, 1, 32, 20.0f, &jv_offset}, }; -static int useHeapInit(fopAc_ac_c* a_this) { - e_dn_class* i_this = (e_dn_class*)a_this; +static int useHeapInit(fopAc_ac_c* actor) { + e_dn_class* i_this = (e_dn_class*)actor; - i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_dn", 38), NULL, NULL, + i_this->anm_p = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_dn", 38), NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_dn", 31), 0, 1.0f, - 0, -1, &i_this->mSound, 0x80000, 0x11000084); - if (i_this->mpModelMorf == NULL || i_this->mpModelMorf->getModel() == NULL) { + 0, -1, &i_this->sound, 0x80000, 0x11000084); + if (i_this->anm_p == NULL || i_this->anm_p->getModel() == NULL) { return 0; } - J3DModel* model = i_this->mpModelMorf->getModel(); + J3DModel* model = i_this->anm_p->getModel(); model->setUserArea((uintptr_t)i_this); for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { @@ -3239,29 +3329,29 @@ static int useHeapInit(fopAc_ac_c* a_this) { } } - if (i_this->mJntCol.init(a_this, &jc_data[0], model, 12) == 0) { + if (i_this->jc.init(actor, &jc_data[0], model, 12) == 0) { return 0; } J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 39); JUT_ASSERT(5420, modelData != NULL); - i_this->mpKnifeModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - if (i_this->mpKnifeModel == NULL) { + i_this->knife_model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->knife_model == NULL) { return 0; } modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 41); JUT_ASSERT(5432, modelData != NULL); - i_this->mpShieldModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - if (i_this->mpShieldModel == NULL) { + i_this->tate_model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->tate_model == NULL) { return 0; } - if (i_this->field_0x5b7 == 1) { + if (i_this->arg1 == 1) { modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 40); JUT_ASSERT(5443, modelData != NULL); - i_this->mpSkullModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - if (i_this->mpSkullModel == NULL) { + i_this->skull_model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->skull_model == NULL) { return 0; } } @@ -3269,68 +3359,65 @@ static int useHeapInit(fopAc_ac_c* a_this) { return 1; } -static cPhs__Step daE_DN_Create(fopAc_ac_c* a_this) { - e_dn_class* i_this = (e_dn_class*)a_this; +static cPhs__Step daE_DN_Create(fopAc_ac_c* actor) { + e_dn_class* i_this = (e_dn_class*)actor; - fopAcM_ct(a_this, e_dn_class); + fopAcM_ct(actor, e_dn_class); - cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->mPhase, "E_dn"); + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->phase, "E_dn"); if (phase == cPhs_COMPLEATE_e) { - int swBit = (fopAcM_GetParam(a_this) & 0xFF000000) >> 24; + int swBit = (fopAcM_GetParam(actor) & 0xFF000000) >> 24; if (swBit != 0xFF) { - if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(a_this))) { + if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(actor))) { return cPhs_ERROR_e; } } - OS_REPORT("E_dn PARAM %x\n", fopAcM_GetParam(a_this)); - i_this->field_0x5b6 = fopAcM_GetParam(a_this); - i_this->field_0x5b9 = 1; - i_this->field_0x5b7 = (fopAcM_GetParam(a_this) & 0xF00) >> 8; - i_this->field_0x5b8 = (fopAcM_GetParam(a_this) & 0xF000) >> 12; + OS_REPORT("E_dn PARAM %x\n", fopAcM_GetParam(actor)); + i_this->arg0 = fopAcM_GetParam(actor); + i_this->arg3 = 1; + i_this->arg1 = (fopAcM_GetParam(actor) & 0xF00) >> 8; + i_this->arg2 = (fopAcM_GetParam(actor) & 0xF000) >> 12; - if ((a_this->home.angle.z & 0xFF) == 0 || (a_this->home.angle.z & 0xFF) == 0xFF) { - i_this->field_0x6d8 = 100000.0f; + if ((actor->home.angle.z & 0xFF) == 0 || (actor->home.angle.z & 0xFF) == 0xFF) { + i_this->pl_range = 100000.0f; } else { - i_this->field_0x6d8 = (a_this->home.angle.z & 0xFF) * 100.0f; + i_this->pl_range = (actor->home.angle.z & 0xFF) * 100.0f; } - OS_REPORT("E_dn AZ %x\n", a_this->home.angle.z); - OS_REPORT("E_dn PR %d\n", i_this->field_0x6d8); - a_this->shape_angle.z = 0; - a_this->current.angle.z = 0; - a_this->home.angle.z = 0; + OS_REPORT("E_dn AZ %x\n", actor->home.angle.z); + OS_REPORT("E_dn PR %d\n", (int)i_this->pl_range); + actor->home.angle.z = actor->current.angle.z = actor->shape_angle.z = 0; + u8 param = (fopAcM_GetParam(actor) & 0xFF0000) >> 16; OS_REPORT("E_dn//////////////E_DN SET 1 !!\n"); - if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x3BF0)) { + if (!fopAcM_entrySolidHeap(actor, useHeapInit, 0x3BF0)) { OS_REPORT("//////////////E_DN SET NON !!\n"); return cPhs_ERROR_e; } if (l_initHIO == 0) { - i_this->field_0x10d9 = 1; + i_this->hio_init = 1; l_initHIO = 1; - l_HIO.field_0x4 = -1; + l_HIO.no = mDoHIO_CREATE_CHILD("リザードマン", &l_HIO); } - fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_0x100); - a_this->attention_info.flags = fopAc_AttnFlag_BATTLE_e; - fopAcM_SetMtx(a_this, i_this->mpModelMorf->getModel()->getBaseTRMtx()); - fopAcM_SetMin(a_this, -200.0f, -200.0f, -200.0f); - fopAcM_SetMax(a_this, 200.0f, 200.0f, 200.0f); + fopAcM_OnStatus(actor, fopAcM_STATUS_UNK_0x100); + actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e; + fopAcM_SetMtx(actor, i_this->anm_p->getModel()->getBaseTRMtx()); + fopAcM_SetMin(actor, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(actor, 200.0f, 200.0f, 200.0f); - i_this->mObjAcch.Set(fopAcM_GetPosition_p(a_this), fopAcM_GetOldPosition_p(a_this), a_this, 1, - &i_this->mAcchCir, fopAcM_GetSpeed_p(a_this), NULL, NULL); - i_this->mAcchCir.SetWall(80.0f, 100.0f); + i_this->objacch.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), actor, 1, + &i_this->acchcir, fopAcM_GetSpeed_p(actor), NULL, NULL); + i_this->acchcir.SetWall(80.0f, 100.0f); - if (i_this->field_0x5b7 == 1) { - a_this->health = 100; - a_this->field_0x560 = 100; + if (i_this->arg1 == 1) { + actor->field_0x560 = actor->health = 100; } else { - a_this->health = 100; - a_this->field_0x560 = 100; + actor->field_0x560 = actor->health = 100; } - i_this->mStts.Init(200, 0, a_this); + i_this->stts.Init(200, 0, actor); static dCcD_SrcSph cc_sph_src = { { @@ -3344,8 +3431,8 @@ static cPhs__Step daE_DN_Create(fopAc_ac_c* a_this) { } // mSphAttr }; for (int i = 0; i <= 2; i++) { - i_this->field_0xa9c[i].Set(cc_sph_src); - i_this->field_0xa9c[i].SetStts(&i_this->mStts); + i_this->cc_sph[i].Set(cc_sph_src); + i_this->cc_sph[i].SetStts(&i_this->stts); } static dCcD_SrcSph at_sph_src = { @@ -3359,8 +3446,8 @@ static cPhs__Step daE_DN_Create(fopAc_ac_c* a_this) { {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph } // mSphAttr }; - i_this->field_0xe44.Set(at_sph_src); - i_this->field_0xe44.SetStts(&i_this->mStts); + i_this->at_sph.Set(at_sph_src); + i_this->at_sph.SetStts(&i_this->stts); static dCcD_SrcSph tate_sph_src = { { @@ -3373,25 +3460,25 @@ static cPhs__Step daE_DN_Create(fopAc_ac_c* a_this) { {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph } // mSphAttr }; - i_this->field_0xf7c.Set(tate_sph_src); - i_this->field_0xf7c.SetStts(&i_this->mStts); + i_this->tate_sph.Set(tate_sph_src); + i_this->tate_sph.SetStts(&i_this->stts); - i_this->field_0x6cc = (int)cM_rndF(65535.0f) & 0xFF00; + i_this->frame_counter = (int)cM_rndF(65535.0f) & 0xFF00; - if (i_this->field_0x5b6 == 0) { - i_this->mAction = ACTION_STAY; + if (i_this->arg0 == 0) { + i_this->action = ACTION_STAY; } - if ((i_this->field_0x5b6 == 13 || i_this->field_0x5b6 == 14) || (i_this->field_0x5b6 == 15 || i_this->field_0x5b6 == 16)) { - i_this->field_0x10d8 = 1; - i_this->mAction = ACTION_REG; - fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_0x4000); - i_this->mAcchCir.SetWall(80.0f, 2.0f); + if ((i_this->arg0 == 13 || i_this->arg0 == 14) || (i_this->arg0 == 15 || i_this->arg0 == 16)) { + i_this->status = 1; + i_this->action = ACTION_REG; + fopAcM_OnStatus(actor, fopAcM_STATUS_UNK_0x4000); + i_this->acchcir.SetWall(80.0f, 2.0f); } - i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1); - i_this->mSound.setEnemyName("E_dn"); - i_this->mAtInfo.mpSound = &i_this->mSound; + i_this->sound.init(&actor->current.pos, &actor->eyePos, 3, 1); + i_this->sound.setEnemyName("E_dn"); + i_this->at_info.mpSound = &i_this->sound; c_start = 1; daE_DN_Execute(i_this); diff --git a/src/d/actor/d_a_e_rd.cpp b/src/d/actor/d_a_e_rd.cpp index ae8962bbf2..331a517ade 100644 --- a/src/d/actor/d_a_e_rd.cpp +++ b/src/d/actor/d_a_e_rd.cpp @@ -5507,8 +5507,8 @@ static void* s_wb_sub2(void* i_actor, void* i_data) { } static void* s_lv9dn_sub(void* i_actor, void* i_data) { - if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->field_0x10d8 != 0) { - ((e_dn_class*)i_actor)->field_0x10d8 = 0; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->status != 0) { + ((e_dn_class*)i_actor)->status = 0; return i_actor; } @@ -5516,9 +5516,9 @@ static void* s_lv9dn_sub(void* i_actor, void* i_data) { } static void* s_lv9dn_sub2(void* i_actor, void* i_data) { - if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->field_0x10d8 == 0) { - ((e_dn_class*)i_actor)->field_0x10d8 = 1; - ((e_dn_class*)i_actor)->mMode = 0; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->status == 0) { + ((e_dn_class*)i_actor)->status = 1; + ((e_dn_class*)i_actor)->mode = 0; } return NULL; @@ -5526,7 +5526,7 @@ static void* s_lv9dn_sub2(void* i_actor, void* i_data) { static void* s_lv9dn_sub3(void* i_actor, void* i_data) { if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN) { - ((e_dn_class*)i_actor)->mMode = 2; + ((e_dn_class*)i_actor)->mode = 2; } return NULL; diff --git a/src/d/actor/d_a_obj_key.cpp b/src/d/actor/d_a_obj_key.cpp index c9974a81d4..ac9a10a87f 100644 --- a/src/d/actor/d_a_obj_key.cpp +++ b/src/d/actor/d_a_obj_key.cpp @@ -279,7 +279,7 @@ static void chain_control_01(obj_key_class* i_this) { J3DModel* parent_model; if (fopAcM_GetName(pparent) == PROC_E_DN) { e_dn_class* dn = (e_dn_class*)pparent; - parent_model = dn->mpModelMorf->getModel(); + parent_model = dn->anm_p->getModel(); MTXCopy(parent_model->getAnmMtx(1), *calc_mtx); spC4.set(5.0f + KREG_F(0), 30.0f + KREG_F(1), 20.0f + KREG_F(2)); From f97d334732201e5a8e1250318925c90d0c715225 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 3 Dec 2025 18:09:56 -0500 Subject: [PATCH 13/18] Debug+retail matches and clean up some fakematches (#2910) * Debug matches * Match daAlink_c::procGrassWhistleWait * Match JASAramStream::channelProc * More debug matches * Match JAUStreamStaticAramMgr_::deleteStreamAram and bitset inlines * Fix some fakematches * Fix gameinfo player info not being a struct * Update bug comments * Fix procids in alink * d_a_scene_exit OK --- configure.py | 4 +- include/JSystem/J2DGraph/J2DMatBlock.h | 6 ++ include/JSystem/JAudio2/JASAramStream.h | 4 +- include/JSystem/JAudio2/JASHeapCtrl.h | 2 +- include/JSystem/JAudio2/JAUStreamAramMgr.h | 3 +- include/JSystem/JGeometry.h | 18 ++-- include/JSystem/JKernel/JKRAram.h | 2 +- include/JSystem/JSupport/JSupport.h | 4 + include/SSystem/SComponent/c_sxyz.h | 3 +- include/d/actor/d_a_alink.h | 78 ++++++---------- include/d/actor/d_a_e_fb.h | 2 +- include/d/actor/d_a_npc.h | 5 +- include/d/actor/d_a_player.h | 51 +++++------ include/d/actor/d_a_scene_exit.h | 2 +- include/d/d_com_inf_game.h | 22 ++--- include/f_op/f_op_actor.h | 10 +-- include/m_Do/m_Do_mtx.h | 8 +- src/JSystem/J2DGraph/J2DMatBlock.cpp | 2 +- src/JSystem/J2DGraph/J2DPane.cpp | 10 +-- src/JSystem/JAudio2/JAIStream.cpp | 8 +- src/JSystem/JAudio2/JASAramStream.cpp | 90 ++++++++++--------- src/JSystem/JAudio2/JAUAudioMgr.cpp | 3 + .../MSL/MSL_C++/MSL_Common/Include/bitset.h | 16 +++- src/SSystem/SComponent/c_m3d.cpp | 17 ++-- src/Z2AudioLib/Z2AudioMgr.cpp | 8 +- src/d/actor/d_a_alink.cpp | 25 +++--- src/d/actor/d_a_alink_boom.inc | 2 +- src/d/actor/d_a_alink_bottle.inc | 6 +- src/d/actor/d_a_alink_canoe.inc | 22 +++-- src/d/actor/d_a_alink_guard.inc | 6 +- src/d/actor/d_a_alink_horse.inc | 2 +- src/d/actor/d_a_alink_whistle.inc | 5 +- src/d/actor/d_a_alink_wolf.inc | 4 +- src/d/actor/d_a_b_dr.cpp | 16 ++-- src/d/actor/d_a_npc_bans.cpp | 10 ++- src/d/actor/d_a_npc_impal.cpp | 2 +- src/d/actor/d_a_npc_shaman.cpp | 3 + src/d/actor/d_a_npc_zelda.cpp | 5 +- src/d/actor/d_a_player.cpp | 8 +- src/d/actor/d_a_scene_exit.cpp | 1 - src/d/actor/d_a_tag_Lv7Gate.cpp | 21 +++-- src/d/d_com_inf_game.cpp | 12 +-- src/f_op/f_op_actor.cpp | 1 + 43 files changed, 278 insertions(+), 251 deletions(-) diff --git a/configure.py b/configure.py index 17bf9c32d1..3e5c2740f6 100755 --- a/configure.py +++ b/configure.py @@ -1114,7 +1114,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2EnvSeMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2WolfHowlMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SpeechMgr2.cpp"), - Object(NonMatching, "Z2AudioLib/Z2AudioMgr.cpp"), + Object(Equivalent, "Z2AudioLib/Z2AudioMgr.cpp"), # weak func order ], }, { @@ -1703,7 +1703,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_obj_swpush"), ActorRel(MatchingFor(ALL_GCN), "d_a_obj_timer"), ActorRel(MatchingFor(ALL_GCN), "d_a_path_line"), - ActorRel(NonMatching, "d_a_scene_exit"), + ActorRel(MatchingFor(ALL_GCN), "d_a_scene_exit"), ActorRel(MatchingFor(ALL_GCN), "d_a_set_bgobj"), ActorRel(MatchingFor(ALL_GCN), "d_a_swhit0"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_allmato"), diff --git a/include/JSystem/J2DGraph/J2DMatBlock.h b/include/JSystem/J2DGraph/J2DMatBlock.h index 4a3fec0c35..c13fa2f332 100644 --- a/include/JSystem/J2DGraph/J2DMatBlock.h +++ b/include/JSystem/J2DGraph/J2DMatBlock.h @@ -2,6 +2,7 @@ #define J2DMATBLOCK_H #include "JSystem/J2DGraph/J2DTevs.h" +#include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/TColor.h" class JUTFont; @@ -117,6 +118,7 @@ public: } virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; } virtual void setTevColor(u32 index, J2DGXColorS10 color) { + J3D_PANIC(250, index < 4, "Error : range over."); mTevColor[index] = color; } virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; } @@ -212,6 +214,7 @@ public: } virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; } virtual void setTevColor(u32 index, J2DGXColorS10 color) { + J3D_PANIC(360, index < 4, "Error : range over."); mTevColor[index] = color; } virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; } @@ -309,6 +312,7 @@ public: } virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; } virtual void setTevColor(u32 index, J2DGXColorS10 color) { + J3D_PANIC(468, index < 4, "Error : range over."); mTevColor[index] = color; } virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; } @@ -406,6 +410,7 @@ public: } virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; } virtual void setTevColor(u32 index, J2DGXColorS10 color) { + J3D_PANIC(579, index < 4, "Error : range over."); mTevColor[index] = color; } virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; } @@ -504,6 +509,7 @@ public: } virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; } virtual void setTevColor(u32 index, J2DGXColorS10 color) { + J3D_PANIC(691, index < 4, "Error : range over."); mTevColor[index] = color; } virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; } diff --git a/include/JSystem/JAudio2/JASAramStream.h b/include/JSystem/JAudio2/JASAramStream.h index c1268941e4..c503e6b29e 100644 --- a/include/JSystem/JAudio2/JASAramStream.h +++ b/include/JSystem/JAudio2/JASAramStream.h @@ -11,8 +11,6 @@ namespace JASDsp { class TChannel; } -#define CHANNEL_MAX 6 - /** * @ingroup jsystem-jaudio * @@ -130,6 +128,8 @@ public: static u32 getBlockSize() { return sBlockSize; } + static const int CHANNEL_MAX = 6; + /* 0x000 */ OSMessageQueue field_0x000; /* 0x020 */ OSMessageQueue field_0x020; /* 0x040 */ void* field_0x040[16]; diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index 72cacd14d2..f7eda37587 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -29,7 +29,7 @@ public: void* getBase() { return mBase; } bool isAllocated() { return mBase; } - u32 getSize() { return mSize; } + u32 getSize() const { return mSize; } /* 0x00 */ JSUTree mTree; /* 0x1C */ OSMutex mMutex; diff --git a/include/JSystem/JAudio2/JAUStreamAramMgr.h b/include/JSystem/JAudio2/JAUStreamAramMgr.h index 44835b8e03..da44e02e6f 100644 --- a/include/JSystem/JAudio2/JAUStreamAramMgr.h +++ b/include/JSystem/JAudio2/JAUStreamAramMgr.h @@ -59,7 +59,6 @@ public: } return NULL; } - // NONMATCHING regalloc virtual bool deleteStreamAram(u32 param_0) { for (u32 i = 0; i < field_0x4c; i++) { if (!this->field_0x4.test(i)) { @@ -80,7 +79,7 @@ public: if (!heap) { heap = JASKernel::getAramHeap(); } - if (numReserve < 1) { + if (numReserve <= 0) { numReserve = 1; } JUT_ASSERT(83, numReserve <= MAX_CHUNKS); diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index 9e9662c4f3..6bec114c5a 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -268,19 +268,15 @@ struct TVec3 : public Vec { return inv_norm * sq; } - void normalize(const TVec3& other) { + f32 normalize(const TVec3& other) { f32 sq = other.squared(); if (sq <= TUtil::epsilon()) { zero(); - return; - } - f32 norm; - if (sq <= 0.0f) { - norm = sq; - } else { - norm = fsqrt_step(sq); + return 0.0f; } + f32 norm = TUtil::inv_sqrt(sq); scale(norm, other); + return norm * sq; } f32 length() const { @@ -411,12 +407,12 @@ struct TVec2 { TVec2(T v) { set(v); } template - TVec2(U x, U y) { set(x, y); } + TVec2(const U x, const U y) { set(x, y); } void set(T v) { y = x = v; } template - void set(U x, U y) { + void set(const U x, const U y) { this->x = x; this->y = y; } @@ -518,7 +514,7 @@ struct TBox2 : public TBox > { } } - void set(const TBox2& other) { set(other.i, other.f); } + void set(const TBox >& other) { set(other.i, other.f); } void set(const TVec2& i, const TVec2& f) { this->i.set(i), this->f.set(f); } void set(f32 x0, f32 y0, f32 x1, f32 y1) { this->i.set(x0, y0); this->f.set(x1, y1); } }; diff --git a/include/JSystem/JKernel/JKRAram.h b/include/JSystem/JKernel/JKRAram.h index 2d992749ce..70347904ae 100644 --- a/include/JSystem/JKernel/JKRAram.h +++ b/include/JSystem/JKernel/JKRAram.h @@ -85,7 +85,7 @@ inline u8* JKRAramToMainRam(u32 p1, u8* p2, u32 p3, JKRExpandSwitch p4, u32 p5, return JKRAram::aramToMainRam(p1, p2, p3, p4, p5, p6, p7, p8); } -inline JKRAramBlock *JKRMainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap *heap, int id, u32 *pSize) { +inline JKRAramBlock* JKRMainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap *heap, int id, u32 *pSize) { return JKRAram::mainRamToAram(buf, bufSize, alignedSize, expandSwitch, fileSize, heap, id, pSize); } diff --git a/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h index b3bb337951..8a652dd722 100644 --- a/include/JSystem/JSupport/JSupport.h +++ b/include/JSystem/JSupport/JSupport.h @@ -41,6 +41,10 @@ inline u8 JSUHiByte(u16 in) { return in >> 8; } +inline u16 JSUHiHalf(u32 in) { + return (in >> 16); +} + inline u16 JSULoHalf(u32 param_0) {return param_0; } #endif diff --git a/include/SSystem/SComponent/c_sxyz.h b/include/SSystem/SComponent/c_sxyz.h index 90811586ce..8b835807f3 100644 --- a/include/SSystem/SComponent/c_sxyz.h +++ b/include/SSystem/SComponent/c_sxyz.h @@ -11,8 +11,7 @@ class csXyz : public SVec { public: static const csXyz Zero; ~csXyz() {} - /* inline */ csXyz() {} - /* inline */ csXyz(const csXyz& other) : SVec(other){}; + csXyz() {} csXyz(s16, s16, s16); csXyz operator+(csXyz&); void operator+=(csXyz&); diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 2bd37b5d86..064f8587d3 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -5172,7 +5172,7 @@ public: BOOL checkHorseStart(u32, int); int setStartProcInit(); int create(); - s32 setRoomInfo(); + int setRoomInfo(); void setShapeAngleOnGround(); void setStepsOffset(); void iceSlipBgCheck(); @@ -6934,9 +6934,9 @@ public: virtual void setAnimeFrame(f32); virtual BOOL checkWolfLock(fopAc_ac_c*) const; virtual bool cancelWolfLock(fopAc_ac_c*); - virtual s32 getAtnActorID() const { return mAtnActorID; } - virtual s32 getItemID() const { return mItemAcKeep.getID(); } - virtual u32 getGrabActorID() const { + virtual fpc_ProcID getAtnActorID() const { return mAtnActorID; } + virtual fpc_ProcID getItemID() const { return mItemAcKeep.getID(); } + virtual fpc_ProcID getGrabActorID() const { if (mEquipItem == 0x102) { return mItemAcKeep.getID(); } else { @@ -7133,7 +7133,7 @@ public: } virtual BOOL checkWolfDownAttackPullOut() const { return mProcID == PROC_WOLF_DOWN_AT_LAND; } virtual BOOL checkBootsOrArmorHeavy() const; - virtual s32 getBottleOpenAppearItem() const; + virtual fpc_ProcID getBottleOpenAppearItem() const; virtual bool checkItemSwordEquip() const { return mEquipItem == 0x103; } virtual f32 getSinkShapeOffset() const { return mSinkShapeOffset; } virtual BOOL checkSinkDead() const { return field_0x2fbd == 0xFF; } @@ -7231,7 +7231,7 @@ public: void offModeFlg(u32 flag) { mModeFlg &= ~flag; } bool swordButton() { return itemButtonCheck(8); } daPy_actorKeep_c* getThrowBoomerangAcKeep() { return &mThrowBoomerangAcKeep; } - s32 getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; } + int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; } bool checkFisingRodLure() const { return mEquipItem == 0x105; } BOOL doTrigger() const { return mItemTrigger & BTN_A; } bool swordTrigger() { return itemTriggerCheck(BTN_B); } @@ -7265,7 +7265,7 @@ public: field_0x2844.clearData(); } - s32 checkPlayerDemoMode() const { return mDemo.getDemoType(); } + int checkPlayerDemoMode() const { return mDemo.getDemoType(); } BOOL checkSpecialDemoMode() const { return mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SPECIAL_e; } @@ -7274,19 +7274,19 @@ public: u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; } BOOL checkClimbFall() { return checkLadderFall(); } - bool checkMidnaWolfDashAnime() const { return checkNoResetFlg1(FLG1_DASH_MODE); } - bool checkMidnaClingAnime() const { return mMidnaAnm == 1; } - bool checkMidnaLowClingAnime() const { return mMidnaAnm == 2; } - bool checkMidnaLookAroundAnime() const { return mMidnaAnm == 3; } - bool checkMidnaPanicAnime() const { return mMidnaAnm == 5; } - bool checkMidnaWolfDeadAnime() const { return mMidnaAnm == 6; } - bool checkMidnaWolfSwimDeadAnime() const { return mMidnaAnm == 7; } - bool checkMidnaRopeWaitStaggerAnime() const { return mMidnaAnm == 8; } - bool checkMidnaRopeMoveStaggerAnime() const { return mMidnaAnm == 9; } - bool checkMidnaGanonCatchAnm() const { return mMidnaAnm == 10; } - bool checkMidnaGanonThrowLeftAnm() const { return mMidnaAnm == 11; } - bool checkMidnaGanonThrowRightAnm() const { return mMidnaAnm == 12; } - bool checkMidnaDigInAnime() const { return mMidnaAnm == 13; } + BOOL checkMidnaWolfDashAnime() const { return checkNoResetFlg1(FLG1_DASH_MODE); } + BOOL checkMidnaClingAnime() const { return mMidnaAnm == 1; } + BOOL checkMidnaLowClingAnime() const { return mMidnaAnm == 2; } + BOOL checkMidnaLookAroundAnime() const { return mMidnaAnm == 3; } + BOOL checkMidnaPanicAnime() const { return mMidnaAnm == 5; } + BOOL checkMidnaWolfDeadAnime() const { return mMidnaAnm == 6; } + BOOL checkMidnaWolfSwimDeadAnime() const { return mMidnaAnm == 7; } + BOOL checkMidnaRopeWaitStaggerAnime() const { return mMidnaAnm == 8; } + BOOL checkMidnaRopeMoveStaggerAnime() const { return mMidnaAnm == 9; } + BOOL checkMidnaGanonCatchAnm() const { return mMidnaAnm == 10; } + BOOL checkMidnaGanonThrowLeftAnm() const { return mMidnaAnm == 11; } + BOOL checkMidnaGanonThrowRightAnm() const { return mMidnaAnm == 12; } + BOOL checkMidnaDigInAnime() const { return mMidnaAnm == 13; } void clearMidnaMsgNum() { mMidnaMsgNum = 0xffff; @@ -7330,37 +7330,9 @@ public: MtxP getMagneBootsInvMtx() { return mMagneBootInvMtx; } s16 getMagneBootsModelShapeAngle() const { return field_0x3118; } - bool checkFishingCastMode() const { - bool var_r5; - bool var_r4 = 1; - bool var_r3 = 0; - - if (mProcID == PROC_FISHING_CAST) { - var_r5 = 0; - - if (mItemAcKeep.getActor() != NULL && - mItemAcKeep.getActor()->eventInfo.checkCommandDemoAccrpt() != 0) - { - var_r5 = 1; - } - - if (!var_r5) { - var_r3 = 1; - } - } - - if (!var_r3) { - bool var_r3_2 = 0; - if (mProcID != PROC_FISHING_CAST && checkNoResetFlg2(FLG2_UNK_20000000)) { - var_r3_2 = 1; - } - - if (!var_r3_2) { - var_r4 = 0; - } - } - - return var_r4; + BOOL checkFishingCastMode() const { + return (mProcID == PROC_FISHING_CAST && !(mItemAcKeep.getActor() != NULL && mItemAcKeep.getActor()->eventInfo.checkCommandDemoAccrpt())) || + (mProcID != PROC_FISHING_CAST && checkNoResetFlg2(FLG2_UNK_20000000) != 0); } BOOL setCanoeCast() { @@ -7807,10 +7779,10 @@ public: /* 0x02864 */ dMsgFlow_c mMsgFlow; /* 0x028B0 */ fpc_ProcID mShieldArrowIDs[16]; /* 0x028F0 */ fpc_ProcID mMsgClassID; - /* 0x028F4 */ int mAtnActorID; + /* 0x028F4 */ fpc_ProcID mAtnActorID; /* 0x028F8 */ fpc_ProcID field_0x28f8; /* 0x028FC */ fpc_ProcID field_0x28fc; - /* 0x02900 */ u32 field_0x2900; + /* 0x02900 */ fpc_ProcID field_0x2900; /* 0x02904 */ daAlink_footData_c mFootData1[2]; /* 0x02A4C */ daAlink_footData_c mFootData2[2]; /* 0x02B94 */ f32 field_0x2b94; diff --git a/include/d/actor/d_a_e_fb.h b/include/d/actor/d_a_e_fb.h index 6289c62a29..7388ff15f2 100644 --- a/include/d/actor/d_a_e_fb.h +++ b/include/d/actor/d_a_e_fb.h @@ -71,7 +71,7 @@ private: /* 0xA30 */ dCcD_Sph mSphere2; /* 0xB68 */ dCcD_Sph mAtSph; /* 0xCA0 */ dCcU_AtInfo mAtInfo; - // Seems that the orig developers didn't size mKeys correctly, as ideally it should be len=8, not len=7: + // !@bug Seems that the orig developers didn't size mKeys correctly, as ideally it should be len=8, not len=7: /* 0xCC4 */ u32 mKeys[7]; /* 0xCE0 */ u8 mHIOInit; /* 0xCE1 */ u8 field_0xce1[0xCE8 - 0xCE1]; diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index 55c01e6bb1..08fee130bc 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -450,11 +450,8 @@ public: void calc(BOOL); void initialize() { - //TODO: Separate decl is fakematch, but using 0 directly in the setall call causes - // weird issues in some functions that call this. - u8 zero = 0; for (int i = 0; i < 2; i++) { - mAngle[i].setall(zero); + mAngle[i].setall(0); mPower[i] = 0.0f; } mStagger = 0; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 40149cc052..2203d7af0d 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -716,9 +716,9 @@ public: cXyz getRightHandPos() const { return mRightHandPos; } const cXyz getLeftHandPos() const { return mLeftHandPos; } const cXyz getItemPos() const { return mItemPos; } - bool getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); } - bool getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); } - bool getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); } + BOOL getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); } + BOOL getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); } + BOOL getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); } /* vt 0X008 */ virtual cXyz* getMidnaAtnPos() const { return NULL; } /* vt 0X00C */ virtual void setMidnaMsgNum(fopAc_ac_c*, u16) {} @@ -779,9 +779,9 @@ public: /* vt 0X0E8 */ virtual void setAnimeFrame(f32) {} /* vt 0X0EC */ virtual BOOL checkWolfLock(fopAc_ac_c*) const { return FALSE; } /* vt 0X0F0 */ virtual bool cancelWolfLock(fopAc_ac_c*) { return FALSE; } - /* vt 0X0F4 */ virtual s32 getAtnActorID() const { return fpcM_ERROR_PROCESS_ID_e; } - /* vt 0X0F8 */ virtual s32 getItemID() const { return fpcM_ERROR_PROCESS_ID_e; } - /* vt 0X0FC */ virtual u32 getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; } + /* vt 0X0F4 */ virtual fpc_ProcID getAtnActorID() const { return fpcM_ERROR_PROCESS_ID_e; } + /* vt 0X0F8 */ virtual fpc_ProcID getItemID() const { return fpcM_ERROR_PROCESS_ID_e; } + /* vt 0X0FC */ virtual fpc_ProcID getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; } /* vt 0X100 */ virtual BOOL exchangeGrabActor(fopAc_ac_c*) { return FALSE; } /* vt 0X104 */ virtual BOOL setForceGrab(fopAc_ac_c*, int, int) { return FALSE; } /* vt 0X108 */ virtual void setForcePutPos(cXyz const&) {} @@ -879,7 +879,7 @@ public: /* vt 0X278 */ virtual BOOL checkMetamorphose() const { return FALSE; } /* vt 0X27C */ virtual BOOL checkWolfDownAttackPullOut() const { return FALSE; } /* vt 0X280 */ virtual BOOL checkBootsOrArmorHeavy() const { return FALSE; } - /* vt 0X284 */ virtual s32 getBottleOpenAppearItem() const { return fpcM_ERROR_PROCESS_ID_e; } + /* vt 0X284 */ virtual fpc_ProcID getBottleOpenAppearItem() const { return fpcM_ERROR_PROCESS_ID_e; } /* vt 0X288 */ virtual bool checkItemSwordEquip() const { return FALSE; } /* vt 0X28C */ virtual f32 getSinkShapeOffset() const { return 0.0f; } /* vt 0X290 */ virtual BOOL checkSinkDead() const { return FALSE; } @@ -1170,9 +1170,6 @@ public: static daMidna_c* getMidnaActor() { return m_midnaActor; } static void setMidnaActor(fopAc_ac_c* actor) { m_midnaActor = (daMidna_c*)actor; } - // not sure how to define this properly - // static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);} - BOOL checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); } BOOL checkWolfEnemyHangBiteOwn(const fopAc_ac_c* i_actorP) const { return checkWolfEnemyBiteAllOwn(i_actorP); } BOOL checkWolfEnemyLeftThrow() const { return checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); } @@ -1225,23 +1222,23 @@ public: void setSumouForceTackle() { mSpecialMode = 0x1B; } void setSumouForceGraspCancel() { mSpecialMode = 0x24; } - BOOL checkSumouPushFront() const { return mSpecialMode == 7; } - BOOL checkSumouPushBack() const { return mSpecialMode == 8; } - BOOL checkSumouTackleSuccess() const { return mSpecialMode == 0xF; } - BOOL checkSumouTackleSuccessPunch() const { return mSpecialMode == 0x10; } - BOOL checkSumouTackleMiss() const { return mSpecialMode == 0x11; } - BOOL checkSumouTackleDraw() const { return mSpecialMode == 0x12; } - BOOL checkSumouPunchSuccess() const { return mSpecialMode == 0x13; } - BOOL checkSumouPunchMiss() const { return mSpecialMode == 0x14; } - BOOL checkSumouPunchDraw() const { return mSpecialMode == 0x15; } - BOOL checkSumouWait() const { return mSpecialMode == 0x16; } - BOOL checkSumouLeftMove() const { return mSpecialMode == 0x17; } - BOOL checkSumouRightMove() const { return mSpecialMode == 0x18; } - BOOL checkSumouSlideLeft() const { return mSpecialMode == 0x19; } - BOOL checkSumouSlideRight() const { return mSpecialMode == 0x1A; } - BOOL checkSumouPunchStagger() const { return mSpecialMode == 0x1F; } - BOOL checkSumouTackleStagger() const { return mSpecialMode == 0x20; } - BOOL checkSumouGraspRelease() const { return mSpecialMode == 0x23; } + bool checkSumouPushFront() const { return mSpecialMode == 7; } + bool checkSumouPushBack() const { return mSpecialMode == 8; } + bool checkSumouTackleSuccess() const { return mSpecialMode == 0xF; } + bool checkSumouTackleSuccessPunch() const { return mSpecialMode == 0x10; } + bool checkSumouTackleMiss() const { return mSpecialMode == 0x11; } + bool checkSumouTackleDraw() const { return mSpecialMode == 0x12; } + bool checkSumouPunchSuccess() const { return mSpecialMode == 0x13; } + bool checkSumouPunchMiss() const { return mSpecialMode == 0x14; } + bool checkSumouPunchDraw() const { return mSpecialMode == 0x15; } + bool checkSumouWait() const { return mSpecialMode == 0x16; } + bool checkSumouLeftMove() const { return mSpecialMode == 0x17; } + bool checkSumouRightMove() const { return mSpecialMode == 0x18; } + bool checkSumouSlideLeft() const { return mSpecialMode == 0x19; } + bool checkSumouSlideRight() const { return mSpecialMode == 0x1A; } + bool checkSumouPunchStagger() const { return mSpecialMode == 0x1F; } + bool checkSumouTackleStagger() const { return mSpecialMode == 0x20; } + bool checkSumouGraspRelease() const { return mSpecialMode == 0x23; } void onHeavyState() { onNoResetFlg0(FLG0_UNK_40000000); } void onHeavyStateMidnaPanic() { diff --git a/include/d/actor/d_a_scene_exit.h b/include/d/actor/d_a_scene_exit.h index 23b7de6fab..033228f2ff 100644 --- a/include/d/actor/d_a_scene_exit.h +++ b/include/d/actor/d_a_scene_exit.h @@ -19,7 +19,7 @@ public: inline int create(); u8 getArg1() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } - u8 getArg0() { return fopAcM_GetParam(this); } + u8 getArg0() { return fopAcM_GetParam(this) & 0xFF; } u8 getSwNo() { return fopAcM_GetParam(this) >> 0x18; } u16 getOffEventBit() { return home.angle.z & 0xFFF; } u16 getOnEventBit() { return home.angle.x & 0xFFF; } diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 3461e2ba0d..befe038a36 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -290,7 +290,7 @@ public: dVibration_c& getVibration() { return mVibration; } camera_class* getCamera(int idx) { return mCameraInfo[idx].mCamera; } void* getPlayerPtr(int ptrIdx) { return mPlayerPtr[ptrIdx]; } - fopAc_ac_c* getPlayer(int idx) { return (fopAc_ac_c*)mPlayer[idx * 2]; } + fopAc_ac_c* getPlayer(int idx) { return mPlayerInfo[idx].mpPlayer; } dPa_control_c* getParticle() { return mParticle; } dEvent_manager_c& getEvtManager() { return mEvtManager; } dAttention_c* getAttention() { return &mAttention; } @@ -653,16 +653,16 @@ public: void* getItemTable() { return mItemTable; } void setPlayerPtr(int i, fopAc_ac_c* ptr) { mPlayerPtr[i] = ptr; } - void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; } - void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) { - mPlayer[i] = (daAlink_c*)ptr; - mPlayerCameraID[camIdx] = 0; + void setPlayer(int i, fopAc_ac_c* player) { mPlayerInfo[i].mpPlayer = player; } + void setPlayerInfo(int i, fopAc_ac_c* player, int cam) { + mPlayerInfo[i].mpPlayer = player; + mPlayerInfo[i].mCameraID = cam; } void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] |= flag; } void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] &= ~flag; } u32 checkPlayerStatus(int param_0, int i, u32 flag) { return mPlayerStatus[param_0][i] & flag; } - int getPlayerCameraID(int i) { return mPlayerCameraID[i * 8]; } + int getPlayerCameraID(int i) { return mPlayerInfo[i].mCameraID; } int getCameraPlayer1ID(int i) { return mCameraInfo[i].field_0x5; } int getCameraPlayer2ID(int i) { return mCameraInfo[i].field_0x6; } int getCameraWinID(int i) { return mCameraInfo[i].field_0x4; } @@ -814,8 +814,10 @@ public: /* 0x04E0E */ u16 mStatus; /* 0x04E10 */ dDlst_window_c mWindow[1]; /* 0x04E3C */ dComIfG_camera_info_class mCameraInfo[1]; - /* 0x04E74 */ daAlink_c* mPlayer[1]; - /* 0x04E78 */ s8 mPlayerCameraID[1]; + /* 0x04E74 */ struct { + /* 0x0 */ fopAc_ac_c* mpPlayer; + /* 0x4 */ s8 mCameraID; + } mPlayerInfo[1]; /* 0x04E7C */ fopAc_ac_c* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong /* 0x04E84 */ dComIfG_item_info_class mItemInfo; /* 0x04FB0 */ dComIfG_MesgCamInfo_c mMesgCamInfo; @@ -3990,8 +3992,8 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos, const dKy_tevstr_c* param_3) { - return dComIfGp_particle_set(param_0, param_1, i_pos, param_3, 0, 0, 0xFF, 0, 0xFFFFFFFF, 0, - 0, 0); + return dComIfGp_particle_set(param_0, param_1, i_pos, param_3, NULL, NULL, 0xFF, NULL, -1, NULL, + NULL, NULL); } inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index 2a145bf496..8122b42fb7 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -169,8 +169,8 @@ public: BOOL checkCommandCatch() { return mCommand == dEvtCmd_INCATCH_e; } BOOL checkCommandDoor() { return mCommand == dEvtCmd_INDOOR_e; } BOOL checkCommandDemoAccrpt() { return mCommand == dEvtCmd_INDEMO_e; } - bool checkCommandTalk() { return mCommand == dEvtCmd_INTALK_e; } - bool checkCommandItem() { return mCommand == dEvtCmd_INGETITEM_e; } + BOOL checkCommandTalk() { return mCommand == dEvtCmd_INTALK_e; } + BOOL checkCommandItem() { return mCommand == dEvtCmd_INGETITEM_e; } void setCommand(u16 command) { mCommand = command; } void setMapToolId(u8 id) { mMapToolId = id; } @@ -309,14 +309,14 @@ public: void setBallModelEffect(dKy_tevstr_c*); void drawBallModel(dKy_tevstr_c*); - bool checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; } + BOOL checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; } BOOL checkHeadLockFlg() const { return mFlags & fopEn_flag_HeadLock; } BOOL checkWolfBiteDamage() const { return mFlags & fopEn_flag_WolfBiteDamage; } BOOL checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; } - bool checkDownFlg() { return mFlags & fopEn_flag_Down; } + BOOL checkDownFlg() { return mFlags & fopEn_flag_Down; } BOOL checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; } BOOL checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; } - bool checkDeadFlg() const { return mFlags & fopEn_flag_Dead; } + BOOL checkDeadFlg() const { return mFlags & fopEn_flag_Dead; } BOOL checkThrowMode(u8 param_1) const { return mThrowMode & param_1; } u32* getMidnaBindID(int i_idx) { return mMidnaBindID + i_idx; } diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 5f749ed073..18022e4b1a 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -250,7 +250,7 @@ public: * @param a The source Vec * @param b The output Vec */ - static void multVec(const Vec* a, Vec* b) { MTXMultVec(now, a, b); } + static void multVec(const Vec* a, Vec* b) { PSMTXMultVec(now, a, b); } /** * Multiplies a given Vec `a` by the `now` Matrix's "Scale-and-Rotate" component and places the result into Vec `b` @@ -268,7 +268,7 @@ public: * @param count The size of the array */ static void multVecArray(const Vec* src, Vec* dst, u32 count) { - MTXMultVecArray(now, src, dst, count); + PSMTXMultVecArray(now, src, dst, count); } static void XYZrotS(s16 x, s16 y, s16 z) { mDoMtx_XYZrotS(now, x, y, z); } @@ -327,7 +327,7 @@ public: */ static void ZrotM(s16 z) { mDoMtx_ZrotM(now, z); } - static void inverse() { MTXInverse(now, now); } + static void inverse() { PSMTXInverse(now, now); } static void inverseTranspose() { mDoMtx_inverseTranspose(now, now); } @@ -350,7 +350,7 @@ public: } static void identity() { - MTXIdentity(now); + PSMTXIdentity(now); } static Mtx now; diff --git a/src/JSystem/J2DGraph/J2DMatBlock.cpp b/src/JSystem/J2DGraph/J2DMatBlock.cpp index 847f58b3ae..44a46bda16 100644 --- a/src/JSystem/J2DGraph/J2DMatBlock.cpp +++ b/src/JSystem/J2DGraph/J2DMatBlock.cpp @@ -7,7 +7,7 @@ #include "JSystem/JUtility/JUTTexture.h" #include "dolphin/gx.h" -// NONMATCHING - instruction order +// NONMATCHING - instruction order. matches if const is removed from j2dDefaultColorChanInfo, but then it's in the wrong section void J2DColorBlock::initialize() { for (int i = 0; i < 2; i++) { mMatColor[i] = JUtility::TColor(j2dDefaultColInfo); diff --git a/src/JSystem/J2DGraph/J2DPane.cpp b/src/JSystem/J2DGraph/J2DPane.cpp index 6de4c1772f..231488bd77 100644 --- a/src/JSystem/J2DGraph/J2DPane.cpp +++ b/src/JSystem/J2DGraph/J2DPane.cpp @@ -343,7 +343,8 @@ void J2DPane::place(JGeometry::TBox2 const& box) { f32 xOff = tmpBox.i.x - mBounds.i.x; f32 yOff = tmpBox.i.y - mBounds.i.y; - for (J2DPane* child = getFirstChildPane(); child != NULL; child = child->getNextChildPane()) { + J2DPane* child; + for (child = getFirstChildPane(); child != NULL; child = child->getNextChildPane()) { child->mTranslateX += xOff; child->mTranslateY += yOff; if (xOff != 0 || yOff != 0) { @@ -432,10 +433,9 @@ void J2DPane::rotate(f32 angle) { } void J2DPane::clip(JGeometry::TBox2 const& bounds) { - JGeometry::TBox2 boxA(bounds); - JGeometry::TBox2 boxB(mGlobalBounds); - boxA.addPos(boxB.i); - mClipRect.intersect(boxA); + JGeometry::TBox2 box(bounds); + box.addPos(JGeometry::TVec2(mGlobalBounds.i.x, mGlobalBounds.i.y)); + mClipRect.intersect(box); } J2DPane* J2DPane::search(u64 tag) { diff --git a/src/JSystem/JAudio2/JAIStream.cpp b/src/JSystem/JAudio2/JAIStream.cpp index d859c85de7..e4a0c7dd4e 100644 --- a/src/JSystem/JAudio2/JAIStream.cpp +++ b/src/JSystem/JAudio2/JAIStream.cpp @@ -27,7 +27,7 @@ JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr* so field_0x2c5 = 0; field_0x2c6 = 0; - for (int i = 0; i < CHANNEL_MAX; i++) { + for (int i = 0; i < NUM_CHILDREN; i++) { children_[i] = NULL; } } @@ -157,7 +157,7 @@ void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundAct } } - for (int i = 0; i < CHANNEL_MAX; i++) { + for (int i = 0; i < NUM_CHILDREN; i++) { inner_.aramStream_.setPitch(mixParams->mPitch); if (children_[i] != NULL) { inner_.aramStream_.setChannelVolume(i, children_[i]->mMove.params_.mVolume * mixParams->mVolume); @@ -186,7 +186,7 @@ void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundAct void JAIStream::die_JAIStream_() { die_JAISound_(); - for (int i = 0; i < CHANNEL_MAX; i++) { + for (int i = 0; i < NUM_CHILDREN; i++) { if (children_[i] != NULL) { delete children_[i]; children_[i] = NULL; @@ -231,7 +231,7 @@ void JAIStream::JAIStreamMgr_calc_() { } if (calc_JAISound_()) { - for (int i = 0; i < CHANNEL_MAX; i++) { + for (int i = 0; i < NUM_CHILDREN; i++) { if (children_[i] != NULL) { children_[i]->calc(); } diff --git a/src/JSystem/JAudio2/JASAramStream.cpp b/src/JSystem/JAudio2/JASAramStream.cpp index 984e6ea446..ba010aeb9b 100644 --- a/src/JSystem/JAudio2/JASAramStream.cpp +++ b/src/JSystem/JAudio2/JASAramStream.cpp @@ -9,6 +9,7 @@ #include "JSystem/JAudio2/JASDvdThread.h" #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" +#include "JSystem/JSupport/JSupport.h" JASTaskThread* JASAramStream::sLoadThread; @@ -271,51 +272,55 @@ bool JASAramStream::load() { } u32 loop_end_block = (mLoopEnd - 1) / getBlockSamples(); u32 loop_start_block = mLoopStart / getBlockSamples(); - u32 block = mBlock; - if (block > loop_end_block) { + if (mBlock > loop_end_block) { return false; } + u32 offset = mBlock * (sBlockSize * mChannelNum + sizeof(BlockHeader)) + sizeof(Header); u32 size = sBlockSize * mChannelNum + sizeof(BlockHeader); - u32 offset = block * size + sizeof(Header); - u32 size2 = size; - if (block == loop_end_block) { - size2 = mDvdFileInfo.length - offset; + if (mBlock == loop_end_block) { + size = mDvdFileInfo.length - offset; } - if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size2, offset, 1) < 0) { + if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size, offset, 1) < 0) { + JUT_WARN(507, "%s", "DVDReadPrio Failed"); struct_80451261 = true; return false; } BlockHeader* bhead = (BlockHeader*)sReadBuffer; + JUT_ASSERT(512, bhead->tag == 'BLCK'); if (field_0x114 != 0) { return false; } - u32 uvar2 = field_0x148 + field_0x10c * sBlockSize; + u32 sp08 = field_0x148 + field_0x10c * sBlockSize; for (int i = 0; i < mChannelNum; i++) { - if (!JKRAram::mainRamToAram(sReadBuffer + bhead->field_0x4 * i + sizeof(BlockHeader), - uvar2 + sBlockSize * field_0x160 * i, - bhead->field_0x4, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL)) { + (void)i; + if (!JKRMainRamToAram(sReadBuffer + bhead->field_0x4 * i + sizeof(BlockHeader), + sp08 + sBlockSize * field_0x160 * i, + bhead->field_0x4, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL)) { + JUT_WARN(522, "%s", "JKRMainRamToAram Failed"); struct_80451261 = 1; return false; } } field_0x10c++; if (field_0x10c >= field_0x108) { - u32 uvar8 = field_0x108 - 1 + mBlock; + u32 r28 = mBlock; + r28 += field_0x108 - 1; if (mLoop) { - while (uvar8 > loop_end_block) { - uvar8 -= loop_end_block; - uvar8 += loop_start_block; + JUT_ASSERT(537, loop_start_block < loop_end_block); + while (r28 > loop_end_block) { + r28 -= loop_end_block; + r28 += loop_start_block; } } - if (uvar8 == loop_end_block || uvar8 + 2 == loop_end_block) { + if (r28 == loop_end_block || r28 + 2 == loop_end_block) { field_0x108 = field_0x160; OSSendMessage(&field_0x020, (OSMessage)5, OS_MESSAGE_BLOCK); } else { field_0x108 = field_0x160 - 1; } for (int i = 0; i < mChannelNum; i++) { - field_0x130[i] = bhead->field_0x8[i].field_0x0; - field_0x13c[i] = bhead->field_0x8[i].field_0x2; + field_0x130[i] = (s16)bhead->field_0x8[i].field_0x0; + field_0x13c[i] = (s16)bhead->field_0x8[i].field_0x2; } field_0x10c = 0; } @@ -379,17 +384,16 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, if (i_dspChannel->field_0x008 == 0) { if (i_channel == field_0x0a8) { field_0x12c = 0; - u32 uvar8 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064; - u32 uvar5 = field_0x0b4; - if (uvar8 <= uvar5) { - field_0x0b8 += uvar5 - uvar8; + u32 sp28 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064; + if (sp28 <= field_0x0b4) { + field_0x0b8 += field_0x0b4 - sp28; } else { if (!field_0x0c0) { - field_0x0b8 += uvar5; - field_0x0b8 += block_samples * mBufCount - uvar8; + field_0x0b8 += field_0x0b4; + field_0x0b8 += block_samples * mBufCount - sp28; } else { - field_0x0b8 += uvar5; - field_0x0b8 += block_samples * mBufCount - uvar8 + field_0x0b8 += field_0x0b4; + field_0x0b8 += block_samples * mBufCount - sp28 - i_dspChannel->field_0x110; field_0x0b8 -= mLoopEnd; field_0x0b8 += mLoopStart; @@ -403,6 +407,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, } } if (field_0x0b8 > mLoopEnd) { + JUT_WARN(686, "%s", "mReadSample > mLoopEnd"); struct_80451261 = true; } f32 fvar1 = field_0x0c4; @@ -427,8 +432,8 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, field_0x128 = 0; field_0x12c |= 8; } - i_dspChannel->field_0x074 -= block_samples * mBufCount - - (field_0x0bc * block_samples + mLoopEnd % block_samples); + int sp20 = field_0x0bc * block_samples + mLoopEnd % block_samples; + i_dspChannel->field_0x074 -= block_samples * mBufCount - sp20; field_0x11c = i_dspChannel->field_0x074; field_0x12c |= 1; field_0x0bc += (mLoopEnd - 1) / block_samples - mLoopStart / block_samples + 1; @@ -438,12 +443,13 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, if (uvar4 != 0) { uvar4--; } - uvar5 = uvar4 / sBlockSize; - getBlockSamples(); - if (uvar5 != field_0x0b0) { - bool cmp = uvar5 < field_0x0b0; - while (uvar5 != field_0x0b0) { + u32 sp18 = uvar4 / sBlockSize; + u32 sp14 = (mLoopEnd - 1) / getBlockSamples(); + if (sp18 != field_0x0b0) { + bool cmp = sp18 < field_0x0b0; + while (sp18 != field_0x0b0) { if (!sLoadThread->sendCmdMsg(loadToAramTask, this)) { + JUT_WARN(741, "sendCmdMsg Failed %d %d (%d %d)", i_dspChannel->field_0x070, i_channel->field_0x104, sp18, field_0x0b0); struct_80451261 = true; break; } @@ -491,6 +497,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, } field_0x0b4 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064; if (field_0x118 >= field_0x160 - 2) { + JUT_WARN_DEVICE(810, 1, "%s", "buffer under error"); field_0x0ae |= 4; } } else { @@ -507,14 +514,15 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, i_dspChannel->field_0x102 = field_0x128; } } - int i = 0; - for (; i < 6; i++) { - if (i_channel == mChannels[i]) { + int ch = 0; + for (; ch < 6; ch++) { + if (i_channel == mChannels[ch]) { break; } } - i_dspChannel->field_0x104 = field_0x130[i]; - i_dspChannel->field_0x106 = field_0x13c[i]; + JUT_ASSERT(834, ch < CHANNEL_MAX); + i_dspChannel->field_0x104 = (s16)field_0x130[ch]; + i_dspChannel->field_0x106 = (s16)field_0x13c[ch]; } break; case JASChannel::CB_STOP: @@ -529,16 +537,16 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, if (!open_channel) { field_0x114 = 1; if (!sLoadThread->sendCmdMsg(finishTask, this)) { + JUT_WARN(854, "%s", "sendCmdMsg finishTask Failed"); struct_80451261 = true; return; } } break; } - i_channel->mPauseFlag = field_0x0ae != 0; + i_channel->setPauseFlag(field_0x0ae != 0); } -// NONMATCHING instruction ordering / regalloc s32 JASAramStream::channelProc() { OSMessage msg; while (OSReceiveMessage(&field_0x020, &msg, OS_MESSAGE_NOBLOCK)) { @@ -562,7 +570,7 @@ s32 JASAramStream::channelProc() { channelStart(); break; case 1: - channelStop((u32)msg >> 0x10); + channelStop(JSUHiHalf((u32)msg)); break; case 2: field_0x0ae |= 1; diff --git a/src/JSystem/JAudio2/JAUAudioMgr.cpp b/src/JSystem/JAudio2/JAUAudioMgr.cpp index ad67533941..a13ab0fbbc 100644 --- a/src/JSystem/JAudio2/JAUAudioMgr.cpp +++ b/src/JSystem/JAudio2/JAUAudioMgr.cpp @@ -6,8 +6,11 @@ #include "JSystem/JAudio2/JAUAudioMgr.h" #include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JAudio2/JAUStreamAramMgr.h" // Here to generate JASHeap::__defctor (ctor generated by default arguments) void dummyDefCtor() { JASHeap dummy[20]; + JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(NULL, 0) JAUStreamStaticAramMgr_<1>(); + streamStaticAramMgr->reserveAram(NULL, 0, 0x14); } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h index 749acdcbf9..8accb8bf94 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h @@ -28,10 +28,20 @@ template<> class __bitset_base<1> { public: __bitset_base() { data = 0; } - bool test(size_t pos) const { return data & (1 << pos); } + bool test(size_t pos) const { + u32 r31 = 1UL << pos; + return data & r31; + } bool any() const { return data != 0; } - void set(size_t pos, bool val) { data |= (1 << pos); } - void reset(size_t pos) { data &= ~(1 << pos); } + void set(size_t pos, bool val) { + u32 r31 = 1UL << pos; + if (val) { + data |= r31; + } else { + data &= ~r31; + } + } + void reset(size_t pos) { data &= ~(1UL << pos); } private: size_t data; }; diff --git a/src/SSystem/SComponent/c_m3d.cpp b/src/SSystem/SComponent/c_m3d.cpp index 1eea1ff0d9..726ceeeedf 100644 --- a/src/SSystem/SComponent/c_m3d.cpp +++ b/src/SSystem/SComponent/c_m3d.cpp @@ -39,19 +39,20 @@ static f32 dummy(f32 x) { bool cM3d_Len2dSqPntAndSegLine(f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 p5, f32 p6, f32* param_7, f32* param_8, f32* param_9) { bool retVal = false; - f32 param_5 = p5 - param_3; - f32 param_6 = p6 - param_4; - f32 len = param_5 * param_5 + param_6 * param_6; + f32 f31 = p5 - param_3; + f32 f30 = p6 - param_4; + f32 len = f31 * f31 + f30 * f30; + f32 f29; if (cM3d_IsZero(len)) { *param_9 = 0.0f; - return retVal; + return false; } else { - len = (param_5 * (param_1 - param_3) + param_6 * (param_2 - param_4)) / len; - if (len >= 0.0f && len <= 1.0f) { + f29 = (f31 * (param_1 - param_3) + f30 * (param_2 - param_4)) / len; + if (f29 >= 0.0f && f29 <= 1.0f) { retVal = true; } - *param_7 = param_3 + param_5 * len; - *param_8 = param_4 + param_6 * len; + *param_7 = param_3 + f31 * f29; + *param_8 = param_4 + f30 * f29; *param_9 = cM3d_Len2dSq(*param_7, *param_8, param_1, param_2); return retVal; } diff --git a/src/Z2AudioLib/Z2AudioMgr.cpp b/src/Z2AudioLib/Z2AudioMgr.cpp index 14af97ccd0..8a4a3930bd 100644 --- a/src/Z2AudioLib/Z2AudioMgr.cpp +++ b/src/Z2AudioLib/Z2AudioMgr.cpp @@ -24,7 +24,6 @@ Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) { field_0x519 = false; } -// NONMATCHING JASPoolAllocObject<_> locations void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive* seqArc) { JAU_JASInitializer JASInitializer; JASInitializer.audioMemSize_ = memSize; @@ -62,6 +61,10 @@ void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive categoryArrangement.mItems[8].mMaxInactiveSe = 5; categoryArrangement.mItems[9].mMaxActiveSe = 8; categoryArrangement.mItems[9].mMaxInactiveSe = 4; + #if PLATFORM_WII || PLATFORM_SHIELD + categoryArrangement.mItems[10].mMaxInactiveSe = 4; + categoryArrangement.mItems[11].mMaxInactiveSe = 2; + #endif seMgr->setCategoryArrangement(categoryArrangement); seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 0); @@ -74,6 +77,9 @@ void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 0); seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 0); seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 0); + #if PLATFORM_WII || PLATFORM_SHIELD + seMgr->getCategory(10)->getParams()->moveVolume(1.0f, 0); + #endif seMgr->getParams()->moveVolume(1.0f, 0); diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index ec533cb3bf..872097c77d 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -9,6 +9,7 @@ #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "JSystem/JKernel/JKRExpHeap.h" #include "SSystem/SComponent/c_math.h" #include "d/d_item.h" @@ -34,6 +35,7 @@ #include "d/actor/d_a_tag_mhint.h" #include "d/actor/d_a_tag_mmsg.h" #include "d/actor/d_a_tag_lantern.h" +#include "d/actor/d_a_horse.h" #include "m_Do/m_Do_controller_pad.h" #include "d/d_bomb.h" #include "d/d_meter2_info.h" @@ -2687,7 +2689,7 @@ cXyz* daAlink_c::getNeckAimPos(cXyz* param_0, int* param_1, int param_2) { } } } else { - field_0x28fc = -1; + field_0x28fc = fpcM_ERROR_PROCESS_ID_e; field_0x30f8 = 0; } } @@ -4279,12 +4281,12 @@ void daAlink_c::playerInit() { field_0x2f97 = -1; for (int i = 0; i < 0x10; i++) { - mShieldArrowIDs[i] = -1; + mShieldArrowIDs[i] = fpcM_ERROR_PROCESS_ID_e; } - mAtnActorID = -1; - mMsgClassID = -1; - field_0x28f8 = -1; - field_0x28fc = -1; + mAtnActorID = fpcM_ERROR_PROCESS_ID_e; + mMsgClassID = fpcM_ERROR_PROCESS_ID_e; + field_0x28f8 = fpcM_ERROR_PROCESS_ID_e; + field_0x28fc = fpcM_ERROR_PROCESS_ID_e; field_0x2e54.init(&mLinkAcch, mpHIO->mBasic.m.mWaterSurfaceEffectHeight, field_0x598); field_0x3108 = shape_angle.y; @@ -4581,7 +4583,7 @@ int daAlink_c::create() { field_0x2900 = fopAcM_create(PROC_Obj_IceLeaf, 0x1FFFF, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle, NULL, -1); } else { - field_0x2900 = -1; + field_0x2900 = fpcM_ERROR_PROCESS_ID_e; } } @@ -4592,7 +4594,7 @@ int daAlink_c::create() { (startMode == 14 && !dComIfG_Bgsp().ChkMoveBG(mLinkAcch.m_gnd)) || (startPoint == -4 && !(var_r24 = fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, ¤t.pos))) || - (field_0x2900 != -1 && !fopAcM_SearchByID(field_0x2900)) || + (field_0x2900 != fpcM_ERROR_PROCESS_ID_e && !fopAcM_SearchByID(field_0x2900)) || (checkCanoeStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCanoe, NULL)) || (checkBoarStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchBoar, NULL)) || (startMode == 13 && @@ -4699,7 +4701,7 @@ static int daAlink_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->create(); } -s32 daAlink_c::setRoomInfo() { +int daAlink_c::setRoomInfo() { s32 roomID; if (mProcID != PROC_TW_GATE) { @@ -15585,9 +15587,8 @@ int daAlink_c::procFrontRollSuccessInit() { setFrontRollCrashShock(mRollCrashFlg); onResetFlg0(RFLG0_FRONT_ROLL_CRASH); } else { - f32 tmp_3 = 3.0f; - mUnderFrameCtrl[0].setFrame(tmp_3); - getNowAnmPackUnder(UNDER_0)->setFrame(tmp_3); + mUnderFrameCtrl[0].setFrame(3.0f); + getNowAnmPackUnder(UNDER_0)->setFrame(3.0f); } field_0x3588 = l_halfAtnWaitBaseAnime; diff --git a/src/d/actor/d_a_alink_boom.inc b/src/d/actor/d_a_alink_boom.inc index 47b92eac7e..7c4183284c 100644 --- a/src/d/actor/d_a_alink_boom.inc +++ b/src/d/actor/d_a_alink_boom.inc @@ -69,7 +69,7 @@ void daAlink_c::cancelBoomerangLock(fopAc_ac_c* i_actor) { } fopAc_ac_c* daAlink_c::getBoomerangActor() { - if (mThrowBoomerangAcKeep.getID() != 0xFFFFFFFF) { + if (mThrowBoomerangAcKeep.getID() != fpcM_ERROR_PROCESS_ID_e) { return mThrowBoomerangAcKeep.getActor(); } diff --git a/src/d/actor/d_a_alink_bottle.inc b/src/d/actor/d_a_alink_bottle.inc index c120591690..eff70af024 100644 --- a/src/d/actor/d_a_alink_bottle.inc +++ b/src/d/actor/d_a_alink_bottle.inc @@ -31,12 +31,12 @@ static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) { return 1; } -s32 daAlink_c::getBottleOpenAppearItem() const { +fpc_ProcID daAlink_c::getBottleOpenAppearItem() const { if (mProcID == PROC_BOTTLE_OPEN) { return mEquipItem; } - return -1; + return fpcM_ERROR_PROCESS_ID_e; } BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) { @@ -735,7 +735,7 @@ int daAlink_c::procBottleGetInit(int param_0) { } dComIfGp_setPlayerStatus1(0, 0x4001000); - mMsgClassID = -1; + mMsgClassID = fpcM_ERROR_PROCESS_ID_e; field_0x3194 = 0; field_0x32cc = var_r30 + 0x65; diff --git a/src/d/actor/d_a_alink_canoe.inc b/src/d/actor/d_a_alink_canoe.inc index e2bbd910e3..ec15963d0b 100644 --- a/src/d/actor/d_a_alink_canoe.inc +++ b/src/d/actor/d_a_alink_canoe.inc @@ -678,12 +678,12 @@ int daAlink_c::procCanoeWait() { return 1; } -// NONMATCHING - incorrect code gen related to daAlink_ANM +// NONMATCHING - regalloc, equivalent int daAlink_c::procCanoeRowInit(int param_0) { fopAc_ac_c* temp_r26 = mRideAcKeep.getActor(); field_0x3198 = -2; - daAlink_ANM var_r29; + int var_r29; if (param_0 < 0) { if (checkInputOnR()) { s16 sp8 = (s16)(field_0x2fe2 - shape_angle.y); @@ -722,19 +722,26 @@ int daAlink_c::procCanoeRowInit(int param_0) { } if (spC == 1) { - var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT_BACK : (int)ANM_CANOE_ROW_LEFT_BACK); + if (var_r28 == 2) { + var_r29 = ANM_CANOE_ROW_RIGHT_BACK; + } else { + var_r29 = ANM_CANOE_ROW_LEFT_BACK; + } if ((var_r29 == ANM_CANOE_ROW_RIGHT_BACK && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT_BACK && mProcVar5.field_0x3012 == 1)) { return procCanoePaddleShiftInit(var_r29); } } else { - var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT : (int)ANM_CANOE_ROW_LEFT); + if (var_r28 == 2) { + var_r29 = ANM_CANOE_ROW_RIGHT; + } else { + var_r29 = ANM_CANOE_ROW_LEFT; + } if ((var_r29 == ANM_CANOE_ROW_RIGHT && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT && mProcVar5.field_0x3012 == 1)) { return procCanoePaddleShiftInit(var_r29); } } - } else { if (param_0 == -3) { if (mProcVar5.field_0x3012 == 1) { @@ -751,8 +758,11 @@ int daAlink_c::procCanoeRowInit(int param_0) { var_r29 = ANM_CANOE_ROW_LEFT; } } + + // Need something here that generates no code in order for debug branches to match. + (void)0; } else { - var_r29 = (daAlink_ANM)param_0; + var_r29 = param_0; } commonProcInit(PROC_CANOE_ROW); diff --git a/src/d/actor/d_a_alink_guard.inc b/src/d/actor/d_a_alink_guard.inc index 084103d8ff..45899c7609 100644 --- a/src/d/actor/d_a_alink_guard.inc +++ b/src/d/actor/d_a_alink_guard.inc @@ -44,10 +44,10 @@ void daAlink_c::stickArrowIncrement(int param_0) { s16 arrow_num = 0; for (int i = 0; i < 16; i++) { - if (mShieldArrowIDs[i] != -1) { + if (mShieldArrowIDs[i] != fpcM_ERROR_PROCESS_ID_e) { if (field_0x2f7c[i] == 0 || param_0) { arrow_num++; - mShieldArrowIDs[i] = -1; + mShieldArrowIDs[i] = fpcM_ERROR_PROCESS_ID_e; field_0x2f7c[i] = 0; } else { field_0x2f7c[i]--; @@ -75,7 +75,7 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) { int arrow_num = 0; for (; arrow_num < 16; arrow_num++) { - if (mShieldArrowIDs[arrow_num] == -1) { + if (mShieldArrowIDs[arrow_num] == fpcM_ERROR_PROCESS_ID_e) { mShieldArrowIDs[arrow_num] = new_arrow_id; field_0x2f7c[arrow_num] = 10; break; diff --git a/src/d/actor/d_a_alink_horse.inc b/src/d/actor/d_a_alink_horse.inc index 431ee62947..bdd3c0e5f8 100644 --- a/src/d/actor/d_a_alink_horse.inc +++ b/src/d/actor/d_a_alink_horse.inc @@ -1174,7 +1174,7 @@ int daAlink_c::checkNextActionHorse() { return procHorseWaitInit(); } -// NONMATCHING - regalloc +// NONMATCHING - regalloc, equivalent BOOL daAlink_c::checkHorseGetOff() { return (checkHorseRide() && dComIfGp_getHorseActor() != NULL && dComIfGp_getHorseActor()->checkGetOff()) || diff --git a/src/d/actor/d_a_alink_whistle.inc b/src/d/actor/d_a_alink_whistle.inc index ea07c1d6e9..628e209a5e 100644 --- a/src/d/actor/d_a_alink_whistle.inc +++ b/src/d/actor/d_a_alink_whistle.inc @@ -146,7 +146,7 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s mProcVar0.field_0x3008 = 0; mProcVar4.field_0x3010 = 0; mProcVar5.field_0x3012 = 0; - mMsgClassID = -1; + mMsgClassID = fpcM_ERROR_PROCESS_ID_e; mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; field_0x2f98 = 4; @@ -168,7 +168,6 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s } -// NONMATCHING - small regalloc int daAlink_c::procGrassWhistleWait() { if (mProcVar5.field_0x3012 != 0) { if (checkEndMessage(field_0x32cc)) { @@ -189,7 +188,7 @@ int daAlink_c::procGrassWhistleWait() { mProcVar0.field_0x3008--; if (mProcVar0.field_0x3008 == 0) { - daHorse_c* horse_p = dComIfGp_getHorseActor(); + daHorse_c* horse_p = (daHorse_c*)dComIfGp_getHorseActor(); daNPC_TK_c* tk_p = (daNPC_TK_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchWhistle, NULL); if (tk_p != NULL) { diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc index 8095f93a0a..77b172f6a7 100644 --- a/src/d/actor/d_a_alink_wolf.inc +++ b/src/d/actor/d_a_alink_wolf.inc @@ -3814,7 +3814,7 @@ static void* daAlink_searchWolfHowl(fopAc_ac_c* i_actor, void* i_data) { } void daAlink_c::setWolfHowlNotHappen(int param_0) { - mMsgClassID = -1; + mMsgClassID = fpcM_ERROR_PROCESS_ID_e; if (field_0x3198 == 0xEE) { field_0x32cc = 0x532; @@ -3945,7 +3945,7 @@ int daAlink_c::procWolfHowlDemoInit() { dCam_getBody()->StartEventCamera(12, fopAcM_GetID(this), 0); mProcVar1.field_0x300a = 0; - mMsgClassID = -1; + mMsgClassID = fpcM_ERROR_PROCESS_ID_e; field_0x32cc = 0x5DD; mProcVar2.field_0x300c = 0; mProcVar3.field_0x300e = -1; diff --git a/src/d/actor/d_a_b_dr.cpp b/src/d/actor/d_a_b_dr.cpp index 5fb7adac5f..b5dad17e5e 100644 --- a/src/d/actor/d_a_b_dr.cpp +++ b/src/d/actor/d_a_b_dr.cpp @@ -880,17 +880,17 @@ void daB_DR_c::mHabatakiAnmSet(int param_0) { } break; case ANM_DR_BRAKE_TO_HOVER: - if (mpModelMorf->isStop()) { - if (param_0 != 4) { - goto lbl_805bc4e0; // fakematch? - } - - setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f); + if (!mpModelMorf->isStop()) { + break; } - break; + if (param_0 == 4) { + setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f); + break; + } + /* fallthrough */ default: - lbl_805bc4e0: setBck(ANM_DR_HOVERING, 2, 3.0f, 1.0f); + /* fallthrough */ case ANM_DR_HOVERING: if ((int)mpModelMorf->getFrame() >= (int)(mpModelMorf->getEndFrame() - 1.0f) && param_0 == 4) { setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f); diff --git a/src/d/actor/d_a_npc_bans.cpp b/src/d/actor/d_a_npc_bans.cpp index cfe52d1c7f..c107a11d65 100644 --- a/src/d/actor/d_a_npc_bans.cpp +++ b/src/d/actor/d_a_npc_bans.cpp @@ -658,15 +658,21 @@ void daNpc_Bans_c::reset() { switch (mType) { case TYPE_POST_TWILIGHT: + break; case TYPE_TWILIGHT: + break; case TYPE_COLIN_KIDNAPPED: + break; case TYPE_MAKING_BOMBS: + break; case TYPE_SHOP: + break; default: - daNpcT_offTmpBit(57); // dSv_event_tmp_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop - setAngle(angle); break; } + + daNpcT_offTmpBit(57); // dSv_event_tmp_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop + setAngle(angle); } void daNpc_Bans_c::afterJntAnm(int param_1) { diff --git a/src/d/actor/d_a_npc_impal.cpp b/src/d/actor/d_a_npc_impal.cpp index 25838fe112..0d797f2773 100644 --- a/src/d/actor/d_a_npc_impal.cpp +++ b/src/d/actor/d_a_npc_impal.cpp @@ -503,7 +503,7 @@ void daNpcImpal_c::setMotionAnm(int i_idx, f32 i_morf) { case ANM_10: case ANM_11: break; - // Is this a bug from the original developers? + // !@bug Is this a bug from the original developers? case ANM_12: iVar5 = 1; case ANM_2: diff --git a/src/d/actor/d_a_npc_shaman.cpp b/src/d/actor/d_a_npc_shaman.cpp index 5bf21f7d57..7f932a7b25 100644 --- a/src/d/actor/d_a_npc_shaman.cpp +++ b/src/d/actor/d_a_npc_shaman.cpp @@ -411,8 +411,11 @@ void daNpc_Sha_c::reset() { switch (mType) { case 0: + break; case 1: break; + default: + break; } setAngle(angle); diff --git a/src/d/actor/d_a_npc_zelda.cpp b/src/d/actor/d_a_npc_zelda.cpp index a6c2dfad6a..79070ef87d 100644 --- a/src/d/actor/d_a_npc_zelda.cpp +++ b/src/d/actor/d_a_npc_zelda.cpp @@ -366,12 +366,15 @@ void daNpc_Zelda_c::reset() { acStack_20.setall(0); acStack_20.y = home.angle.y; + switch (field_0xf80) { case 0: + break; default: - setAngle(acStack_20); break; } + + setAngle(acStack_20); } void daNpc_Zelda_c::afterJntAnm(int param_0) { diff --git a/src/d/actor/d_a_player.cpp b/src/d/actor/d_a_player.cpp index d59d689d97..2f13d5978e 100644 --- a/src/d/actor/d_a_player.cpp +++ b/src/d/actor/d_a_player.cpp @@ -496,15 +496,11 @@ u32 daPy_py_c::checkCarryStartLightBallB() { } f32 daPy_py_c::getSpinnerRideSpeed() const { - f32 rideSpeed; - if (checkSpinnerRide()) { - rideSpeed = speedF; + return speedF; } else { - rideSpeed = 0.0f; + return 0.0f; } - - return rideSpeed; } bool daPy_py_c::checkSpinnerReflectEffect() { diff --git a/src/d/actor/d_a_scene_exit.cpp b/src/d/actor/d_a_scene_exit.cpp index e86bfca349..9ed25bd34c 100644 --- a/src/d/actor/d_a_scene_exit.cpp +++ b/src/d/actor/d_a_scene_exit.cpp @@ -56,7 +56,6 @@ static int daScex_Execute(daScex_c* i_this) { return i_this->execute(); } -// NONMATCHING - regalloc, this matches debug but not retail :/ int daScex_c::execute() { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz spC; diff --git a/src/d/actor/d_a_tag_Lv7Gate.cpp b/src/d/actor/d_a_tag_Lv7Gate.cpp index 2457f4da6c..0f40c60b9c 100644 --- a/src/d/actor/d_a_tag_Lv7Gate.cpp +++ b/src/d/actor/d_a_tag_Lv7Gate.cpp @@ -221,13 +221,14 @@ int daTagLv7Gate_c::execute() { // Fakematch dComIfG_play_c& play = g_dComIfG_gameInfo.getPlay(); if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) { - s32 cut_index = dComIfGp_evmng_getMyStaffId(l_arcName, NULL, 0); + dEvent_manager_c& evtMgr = dComIfGp_getEventManager(); + s32 cut_index = evtMgr.getMyStaffId(l_arcName, NULL, 0); if (cut_index != -1) { - int* cut_name = (int*)play.getEvtManager().getMyNowCutName(cut_index); // Fakematch + int* cut_name = (int*)evtMgr.getMyNowCutName(cut_index); // Fakematch daPy_getPlayerActorClass()->onShieldBackBone(); - if (dComIfGp_evmng_getIsAddvance(cut_index)) { + if (evtMgr.getIsAddvance(cut_index)) { switch (*cut_name) { case '0002': field_0x5b1 = true; @@ -237,25 +238,31 @@ int daTagLv7Gate_c::execute() { break; case '0003': break; + default: + JUT_ASSERT(455, FALSE); + break; } } switch (*cut_name) { case '0001': - dComIfGp_evmng_cutEnd(cut_index); + evtMgr.cutEnd(cut_index); break; case '0002': - mDoAud_seStartLevel(Z2SE_EN_DR_DEMO_FIRST, &mPos1, 0, 0); + Z2GetAudioMgr()->seStartLevel(Z2SE_EN_DR_DEMO_FIRST, &mPos1, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); if (!field_0x5b1) { - dComIfGp_evmng_cutEnd(cut_index); + evtMgr.cutEnd(cut_index); } break; case '0003': break; + default: + JUT_ASSERT(477, FALSE); + break; } if (eventInfo.checkCommandDemoAccrpt() && mEvtId != -1 && - dComIfGp_evmng_endCheck(mEvtId)) { + evtMgr.endCheck(mEvtId)) { // dComIfGp_event_reset(); play.getEvent().reset(); // Fakematch mEvtId = -1; diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 623da54fcf..5bc923bbf3 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -38,13 +38,15 @@ static __d_timer_info_c dComIfG_mTimerInfo; dComIfG_inf_c g_dComIfG_gameInfo; void dComIfG_play_c::init() { - for (int i = 0; i < 1; i++) { - mPlayer[i] = NULL; - mPlayerCameraID[i] = -1; + for (int i = 0; i < ARRAY_SIZE(mPlayerInfo); i++) { + mPlayerInfo[i].mpPlayer = NULL; + mPlayerInfo[i].mCameraID = -1; + } + for (int i = 0; i < ARRAY_SIZE(mCameraInfo); i++) { + mCameraInfo[i].mCamera = NULL; } - mCameraInfo[0].mCamera = NULL; - for (int i = 0; i < 2; i++) { + for (int i = 0; i < ARRAY_SIZE(mPlayerPtr); i++) { mPlayerPtr[i] = NULL; } diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp index 5fae08c7fc..7fa86e9728 100644 --- a/src/f_op/f_op_actor.cpp +++ b/src/f_op/f_op_actor.cpp @@ -571,6 +571,7 @@ BOOL fopEn_enemy_c::initBallModel() { return true; } + bool fopEn_enemy_c::checkBallModelDraw() { return (mFlags & fopEn_flag_Down) && !(mFlags & (fopEn_flag_WolfDownPullEnd | fopEn_flag_WolfDownPull | fopEn_flag_CutDownHit)); } From 4d3f25d34ed0782ba693c80698631cac6add8f9c Mon Sep 17 00:00:00 2001 From: Niklas Bauer Date: Thu, 4 Dec 2025 13:57:33 +0100 Subject: [PATCH 14/18] Resolve all "illegal jump past declaration/initializer" warnings (#2911) * resolve illegal jump past declaration/initializer * pr comments --- include/d/actor/d_a_tag_TWgate.h | 4 +- src/JSystem/J2DGraph/J2DManage.cpp | 10 +-- src/JSystem/JKernel/JKRDvdArchive.cpp | 9 +- src/JSystem/JKernel/JKRMemArchive.cpp | 5 +- .../JStudio/JStudio/jstudio-control.cpp | 3 +- .../JStudio/JStudio_JStage/object-camera.cpp | 8 +- src/JSystem/JUtility/JUTCacheFont.cpp | 6 +- src/JSystem/JUtility/JUTResFont.cpp | 9 +- src/d/actor/d_a_b_bh.cpp | 6 +- src/d/actor/d_a_b_gg.cpp | 30 ++++--- src/d/actor/d_a_b_gm.cpp | 5 +- src/d/actor/d_a_door_bossL5.cpp | 3 +- src/d/actor/d_a_door_knob00.cpp | 10 ++- src/d/actor/d_a_door_mbossL1.cpp | 5 +- src/d/actor/d_a_door_push.cpp | 3 +- src/d/actor/d_a_door_shutter.cpp | 34 ++++---- src/d/actor/d_a_e_bi.cpp | 15 ++-- src/d/actor/d_a_e_bu.cpp | 3 +- src/d/actor/d_a_e_fz.cpp | 13 ++- src/d/actor/d_a_e_ge.cpp | 16 ++-- src/d/actor/d_a_e_hz.cpp | 12 +-- src/d/actor/d_a_e_kk.cpp | 6 +- src/d/actor/d_a_e_mm_mt.cpp | 6 +- src/d/actor/d_a_e_nest.cpp | 29 ++++--- src/d/actor/d_a_e_sh.cpp | 6 +- src/d/actor/d_a_e_sw.cpp | 58 ++++++------- src/d/actor/d_a_e_th.cpp | 5 +- src/d/actor/d_a_e_tt.cpp | 3 +- src/d/actor/d_a_e_vt.cpp | 12 ++- src/d/actor/d_a_e_yh.cpp | 36 ++++---- src/d/actor/d_a_kytag06.cpp | 10 ++- src/d/actor/d_a_npc_hoz.cpp | 3 +- src/d/actor/d_a_npc_ks.cpp | 1 + src/d/actor/d_a_npc_ne.cpp | 4 +- src/d/actor/d_a_npc_tkc.cpp | 4 +- src/d/actor/d_a_npc_uri.cpp | 6 +- src/d/actor/d_a_npc_zelRo.cpp | 3 +- src/d/actor/d_a_obj_avalanche.cpp | 4 +- src/d/actor/d_a_obj_carry.cpp | 3 +- src/d/actor/d_a_obj_enemy_create.cpp | 7 +- src/d/actor/d_a_obj_kabuto.cpp | 6 +- src/d/actor/d_a_obj_kgate.cpp | 3 +- src/d/actor/d_a_obj_rgate.cpp | 3 +- src/d/actor/d_a_obj_smgdoor.cpp | 3 +- src/d/actor/d_a_obj_swBallC.cpp | 3 +- src/d/actor/d_a_obj_ten.cpp | 6 +- src/d/actor/d_a_obj_thashi.cpp | 5 +- src/d/actor/d_a_scene_exit2.cpp | 3 +- src/d/actor/d_a_tag_TWgate.cpp | 87 ++++++++++--------- src/d/actor/d_a_tag_kago_fall.cpp | 6 +- src/d/actor/d_a_tag_river_back.cpp | 3 +- src/d/actor/d_a_tag_statue_evt.cpp | 12 +-- src/d/d_msg_flow.cpp | 6 +- 53 files changed, 320 insertions(+), 241 deletions(-) diff --git a/include/d/actor/d_a_tag_TWgate.h b/include/d/actor/d_a_tag_TWgate.h index adb69f098d..495be5bad2 100644 --- a/include/d/actor/d_a_tag_TWgate.h +++ b/include/d/actor/d_a_tag_TWgate.h @@ -17,7 +17,7 @@ public: /* 0x3 */ TYPE_HYRAL, }; - enum EAction { + enum Mode_e { /* 0x00 */ ACT_WAIT, /* 0x01 */ ACT_DEMO_FILONE_1, /* 0x02 */ ACT_DEMO_FILONE_2, @@ -106,7 +106,7 @@ public: (this->*(*mAction))(); } - void setAction(EAction action) { + void setAction(Mode_e action) { mActionID = action; mAction = ActionTable[mActionID]; callInit(); diff --git a/src/JSystem/J2DGraph/J2DManage.cpp b/src/JSystem/J2DGraph/J2DManage.cpp index 92fa1ab61a..0af6517313 100644 --- a/src/JSystem/J2DGraph/J2DManage.cpp +++ b/src/JSystem/J2DGraph/J2DManage.cpp @@ -44,9 +44,7 @@ char* J2DResReference::getName(u16 idx) const { p_name[0] = 0; return p_name; } else { - s8 first = resRef[0]; - - switch (first) { + switch (resRef[0]) { case 2: case 3: for (s32 i = 0; i < resRef[1]; i++) { @@ -54,8 +52,9 @@ char* J2DResReference::getName(u16 idx) const { } p_name[resRef[1]] = 0; break; - case 4: - s32 pos = resRef[1] + 1; + case 4: { + s32 tmp = resRef[1]; + s32 pos = tmp + 1; for (; pos >= 2; pos--) { if (resRef[pos] == '\\' || resRef[pos] == '/') { break; @@ -70,6 +69,7 @@ char* J2DResReference::getName(u16 idx) const { p_name[i] = 0; break; + } default: p_name[0] = 0; } diff --git a/src/JSystem/JKernel/JKRDvdArchive.cpp b/src/JSystem/JKernel/JKRDvdArchive.cpp index f80674994c..03761ac322 100644 --- a/src/JSystem/JKernel/JKRDvdArchive.cpp +++ b/src/JSystem/JKernel/JKRDvdArchive.cpp @@ -75,7 +75,8 @@ bool JKRDvdArchive::open(s32 entryNum) { JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, &mCompression, NULL); DCInvalidateRange(arcHeader, sizeof(SArcHeader)); - int alignment = mMountDirection == MOUNT_DIRECTION_HEAD ? 0x20 : -0x20; + int alignment; + alignment = mMountDirection == MOUNT_DIRECTION_HEAD ? 0x20 : -0x20; mArcInfoBlock = (SArcDataInfo*)JKRAllocFromHeap(mHeap, arcHeader->file_data_offset, alignment); if (!mArcInfoBlock) { @@ -93,8 +94,10 @@ bool JKRDvdArchive::open(s32 entryNum) { mStringTable = (char*)((int)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset); mExpandedSize = NULL; - u8 useCompression = 0; - SDIFileEntry* fileEntry = mFiles; + u8 useCompression; + useCompression = 0; + SDIFileEntry* fileEntry; + fileEntry = mFiles; for (u32 i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) { if (fileEntry->isUnknownFlag1()) { useCompression |= fileEntry->getCompressFlag(); diff --git a/src/JSystem/JKernel/JKRMemArchive.cpp b/src/JSystem/JKernel/JKRMemArchive.cpp index 1fa9fd4ffc..682e0ff283 100644 --- a/src/JSystem/JKernel/JKRMemArchive.cpp +++ b/src/JSystem/JKernel/JKRMemArchive.cpp @@ -195,15 +195,18 @@ u32 JKRMemArchive::fetchResource_subroutine(u8* src, u32 srcLength, u8* dst, u32 return srcLength; case COMPRESSION_YAY0: - case COMPRESSION_YAZ0: + case COMPRESSION_YAZ0: { u32 expendedSize = JKRDecompExpandSize(src); + #if VERSION != VERSION_SHIELD_DEBUG srcLength = expendedSize; + #endif if (expendedSize > dstLength) { srcLength = dstLength; } JKRDecompress(src, dst, srcLength, 0); return srcLength; + } default: { JUTException::panic(__FILE__, 723, "??? bad sequence\n"); diff --git a/src/JSystem/JStudio/JStudio/jstudio-control.cpp b/src/JSystem/JStudio/JStudio/jstudio-control.cpp index 2b49a80e80..0a9f83585b 100644 --- a/src/JSystem/JStudio/JStudio/jstudio-control.cpp +++ b/src/JSystem/JStudio/JStudio/jstudio-control.cpp @@ -48,7 +48,7 @@ int JStudio::TControl::transformOnGet_setOrigin_TxyzRy(Vec const& param_0, f32 p int JStudio::TControl::transform_setOrigin_ctb(JStudio::ctb::TObject const& param_0) { switch (param_0.getScheme()) { - case 1: + case 1: { const f32* pfVar4 = (const f32*)param_0.getData(); Vec local_144 = {0.0f, 0.0f, 0.0f}; local_144.x = pfVar4[0]; @@ -56,6 +56,7 @@ int JStudio::TControl::transform_setOrigin_ctb(JStudio::ctb::TObject const& para local_144.z = pfVar4[2]; transform_setOrigin_TxyzRy(local_144, pfVar4[3]); break; + } default: return 0; } diff --git a/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp b/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp index 173f821ae7..9620b880f5 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-camera.cpp @@ -117,9 +117,9 @@ JStudio_JStage::TAdaptor_camera::adaptor_do_PARENT_ENABLE(JStudio::data::TEOpera case JStudio::data::UNK_0x2: JUT_ASSERT(185, uSize==4); JUT_ASSERT(186, pContent!=NULL); - field_0x114 = *(u32*)pContent ? 1 : 0; + field_0x114 = *(u32*)pContent ? true : false; switch(field_0x108) { - case 1: + case 1: { JStage::TObject* parent = 0; int idx = -1; if (field_0x114 != 0) { @@ -128,6 +128,7 @@ JStudio_JStage::TAdaptor_camera::adaptor_do_PARENT_ENABLE(JStudio::data::TEOpera } pJSGObject_->JSGSetParent(parent, idx); break; + } case 0: break; } @@ -207,7 +208,7 @@ void JStudio_JStage::TAdaptor_camera::setJSG_position_(JStudio::TControl const* } else { pViewPosition = &VStack_138; switch (field_0x108) { - case 0: + case 0: { int iVar1 = transform_toGlobalFromLocal(&VStack_144, VStack_138, field_0x10c, field_0x110); if (iVar1 == 0) { @@ -215,6 +216,7 @@ void JStudio_JStage::TAdaptor_camera::setJSG_position_(JStudio::TControl const* } pViewPosition = &VStack_144; break; + } case 1: break; } diff --git a/src/JSystem/JUtility/JUTCacheFont.cpp b/src/JSystem/JUtility/JUTCacheFont.cpp index 4ddb4bbc52..6ed26d4fb8 100644 --- a/src/JSystem/JUtility/JUTCacheFont.cpp +++ b/src/JSystem/JUtility/JUTCacheFont.cpp @@ -277,9 +277,9 @@ void JUTCacheFont::setBlock() { break; case 'GLY1': memcpy(piVar5, pData, 0x20); - JKRAramBlock* iVar1 = - JKRMainRamToAram((u8*)pData + 0x20, aramAddress, pData[1] - 0x20, - EXPAND_SWITCH_UNKNOWN0, 0, NULL, 0xffffffff, NULL); + JKRAramBlock* iVar1; + iVar1 = JKRMainRamToAram((u8*)pData + 0x20, aramAddress, pData[1] - 0x20, + EXPAND_SWITCH_UNKNOWN0, 0, NULL, 0xffffffff, NULL); if (iVar1 == NULL) { JUTException::panic("JUTCacheFont.cpp", 0x1dd, "trouble occurred in JKRMainRamToAram."); diff --git a/src/JSystem/JUtility/JUTResFont.cpp b/src/JSystem/JUtility/JUTResFont.cpp index 52c8ca7d1e..b375a90388 100644 --- a/src/JSystem/JUtility/JUTResFont.cpp +++ b/src/JSystem/JUtility/JUTResFont.cpp @@ -126,14 +126,15 @@ void JUTResFont::setBlock() { mMaxCode = -1; BlockHeader* data = (BlockHeader*)mResFont->data; - for (u32 i = 0; i < mResFont->numBlocks; i++, data = (BlockHeader*)data->getNext()) { + for (u32 i = 0; i < mResFont->numBlocks; data = (BlockHeader*)data->getNext(), i++) { switch (data->magic) { - case 'INF1': - mInf1Ptr = (ResFONT::INF1*)data; + case 'INF1': { + mInf1Ptr = (ResFONT::INF1*)data; u32 u = mInf1Ptr->fontType; JUT_ASSERT(244, u < suAboutEncoding_); mIsLeadByte = &saoAboutEncoding_[u]; - break; + break; + } case 'WID1': mpWidthBlocks[widthNum] = (ResFONT::WID1*)data; diff --git a/src/d/actor/d_a_b_bh.cpp b/src/d/actor/d_a_b_bh.cpp index d85bba5e57..9a21a5755b 100644 --- a/src/d/actor/d_a_b_bh.cpp +++ b/src/d/actor/d_a_b_bh.cpp @@ -354,6 +354,7 @@ static s8 b_bh_down(b_bh_class* i_this) { s8 sp8 = 0; cXyz sp20 = i_this->field_0x6b0 - a_this->current.pos; sp20.y = 0.0f; + f32 temp_f31; switch (i_this->mMode) { case 0: @@ -371,7 +372,7 @@ static s8 b_bh_down(b_bh_class* i_this) { i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_BH_V_ROUT, -1); } - f32 temp_f31 = 100.0f + JREG_F(0); + temp_f31 = 100.0f + JREG_F(0); sp2C.x = temp_f31 * cM_ssin(i_this->field_0x668 * (TREG_S(0) + 900)); sp2C.z = temp_f31 * cM_scos(i_this->field_0x668 * (TREG_S(2) + 1000)); @@ -661,6 +662,7 @@ static s8 b_bh_b_down(b_bh_class* i_this) { s8 var_r27 = 0; cXyz spC = i_this->field_0x6b0 - i_this->current.pos; spC.y = 0.0f; + f32 temp_f31; switch (i_this->mMode) { case 0: @@ -678,7 +680,7 @@ static s8 b_bh_b_down(b_bh_class* i_this) { i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_BH_V_ROUT, -1); } - f32 temp_f31 = 100.0f + JREG_F(0); + temp_f31 = 100.0f + JREG_F(0); sp18.x = temp_f31 * cM_ssin(i_this->field_0x668 * (TREG_S(0) + 900)); sp18.z = temp_f31 * cM_scos(i_this->field_0x668 * (TREG_S(2) + 1000)); diff --git a/src/d/actor/d_a_b_gg.cpp b/src/d/actor/d_a_b_gg.cpp index 7297f802a3..d75a2f8cf2 100644 --- a/src/d/actor/d_a_b_gg.cpp +++ b/src/d/actor/d_a_b_gg.cpp @@ -2652,11 +2652,12 @@ void daB_GG_c::FallChk() { } void daB_GG_c::G_AttackAction() { + int rnd; switch (mMode) { case 0: SpeedClear(); - int rnd = cM_rndF(100.0f); + rnd = cM_rndF(100.0f); if (rnd > 70) { SetAnm(BCK_GGB_ATTACK_A, 0, 5.0f, 1.0f); @@ -2723,7 +2724,7 @@ void daB_GG_c::G_AttackAction() { mCcCyl.OnTgShield(); mCcShieldSph.OnTgShield(); - int rnd = cM_rndF(100.0f); + rnd = cM_rndF(100.0f); if (rnd < 30 || mAnm == BCK_GGB_ATTACK_C) { SetAction(ACTION_GROUND, SUBACT_MOVE, 0); } else if (mAnm != BCK_GGB_ATTACK_C && rnd > 50) { @@ -2770,7 +2771,6 @@ void daB_GG_c::G_AttackAction() { mCcSph[i].OnAtSetBit(); mCcSph[i].SetAtSpl((dCcG_At_Spl) 0xA); } - break; } F_AtHit(); @@ -2904,11 +2904,13 @@ void daB_GG_c::G_DamageAction() { speedF = 0.0f; } - s_TargetAngle += 0x4000; + s_TargetAngle += (s16) 0x4000; break; case 2: - cXyz* tg_hit_pos = mCcCyl.GetTgHitPosP(); - s16 spA = cLib_targetAngleY(¤t.pos, tg_hit_pos); + cXyz* tg_hit_pos; + s16 spA; + tg_hit_pos = mCcCyl.GetTgHitPosP(); + spA = cLib_targetAngleY(¤t.pos, tg_hit_pos); if ((spA - shape_angle.y) > 0) { if (mAnm != BCK_GGB_DAMAGE_R) { SetAnm(BCK_GGB_DAMAGE_R, 0, 5.0f, 1.0f); @@ -2923,7 +2925,9 @@ void daB_GG_c::G_DamageAction() { SetAction(ACTION_GROUND, SUBACT_DAMAGE, 3); - if (health < (s16)(field_0x560 * l_HIO.field_0x18) && field_0x5b0 == 0 && mType == TYPE_L7_MBOSS) { + if (health < (s16)(field_0x560 * l_HIO.field_0x18) && field_0x5b0 == 0 && + mType == TYPE_L7_MBOSS) + { mpModelMorf->setPlaySpeed(1.0f); SetAction(ACTION_DEMO, 1, 0); mCamMode = 0; @@ -2954,11 +2958,16 @@ void daB_GG_c::G_DamageAction() { mCamMode = 0; } break; - case 3: - int cut_count = daPy_getPlayerActorClass()->getCutCount(); + case 3: { + u8 cut_count = daPy_getPlayerActorClass()->getCutCount(); u32 cut_type = daPy_getPlayerActorClass()->getCutType(); - if ((cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT || cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) && field_0x6bc > 0) { + if ((cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT || + cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT || + cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT || + cut_type == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) && + field_0x6bc > 0) + { mCcCyl.OnTgShield(); mCcShieldSph.OnTgShield(); mCcShieldSph.OnTgSetBit(); @@ -2984,6 +2993,7 @@ void daB_GG_c::G_DamageAction() { FallChk(); break; + } case 4: sp38 = eyePos; sp38.y += 180.0f + NREG_F(7); diff --git a/src/d/actor/d_a_b_gm.cpp b/src/d/actor/d_a_b_gm.cpp index ed60b409fd..274b17c1c5 100644 --- a/src/d/actor/d_a_b_gm.cpp +++ b/src/d/actor/d_a_b_gm.cpp @@ -1458,7 +1458,7 @@ static void demo_camera(b_gm_class* i_this) { i_this->mDemoModeTimer = 0; } break; - case 42: + case 42: { if (i_this->mDemoModeTimer == 30) { daPy_getPlayerActorClass()->changeDemoMode(daPy_demo_c::DEMO_UNEQUIP_e, 0, 0, 0); } @@ -1479,7 +1479,7 @@ static void demo_camera(b_gm_class* i_this) { if (i_this->mDemoModeTimer > 200) { cLib_addCalc2(&i_this->field_0x1cec.y, 100.0f, 0.05f, 0.7f); } - + obj_ystone_class* ystone = (obj_ystone_class*)fopAcM_SearchByName(PROC_OBJ_YSTONE); if (ystone != NULL) { if (i_this->mDemoModeTimer > 200) { @@ -1500,6 +1500,7 @@ static void demo_camera(b_gm_class* i_this) { sp10 = 2; } break; + } case 50: if (!a_this->eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(a_this, 2, 0xFFFF, 0); diff --git a/src/d/actor/d_a_door_bossL5.cpp b/src/d/actor/d_a_door_bossL5.cpp index fea59909aa..fecc69d36f 100644 --- a/src/d/actor/d_a_door_bossL5.cpp +++ b/src/d/actor/d_a_door_bossL5.cpp @@ -204,12 +204,13 @@ void daBdoorL5_c::demoProc() { } } switch (demoAction) { - case 1: + case 1: { obj_keyhole_class* keyhole = (obj_keyhole_class*)fopAcM_SearchByID(mKeyHoleId); if ((keyhole != NULL && keyhole->checkOpenEnd()) || mKeyHoleId == -1) { dComIfGp_evmng_cutEnd(field_0x59c); } break; + } case 2: if (openProc() != 0) { openEnd(); diff --git a/src/d/actor/d_a_door_knob00.cpp b/src/d/actor/d_a_door_knob00.cpp index fdc9949619..74ddce445c 100644 --- a/src/d/actor/d_a_door_knob00.cpp +++ b/src/d/actor/d_a_door_knob00.cpp @@ -353,7 +353,8 @@ int daKnob20_c::demoProc() { field_0x610 = 10; break; case 10: - int msgNo = knob_param_c::getMsgNo(this); + int msgNo; + msgNo = knob_param_c::getMsgNo(this); if (msgNo != 0xffff) { field_0x5c0.init(this, msgNo, 0, NULL); } @@ -391,6 +392,7 @@ int daKnob20_c::demoProc() { case 10: dComIfGp_event_offHindFlag(1); if (field_0x5c0.doFlow(this, NULL, 0) != 0) { + OS_REPORT("会話終了!\n"); // Conversation over! int msgNo = knob_param_c::getMsgNo(this); if (msgNo != 0xffff) { field_0x5c0.init(this, msgNo, 0, NULL); @@ -406,12 +408,14 @@ int daKnob20_c::demoProc() { case 9: dComIfGp_evmng_cutEnd(field_0x5bc); break; - case 14: - if (cLib_addCalcAngleS(&field_0x612, -0x2800, 20, 500, 10) == 0) { + case 14: { + s16 tmp = cLib_addCalcAngleS(&field_0x612, -0x2800, 20, 500, 10); + if (tmp == 0) { dComIfGp_evmng_cutEnd(field_0x5bc); } calcMtx(); break; + } case 15: dComIfGp_evmng_cutEnd(field_0x5bc); calcMtx(); diff --git a/src/d/actor/d_a_door_mbossL1.cpp b/src/d/actor/d_a_door_mbossL1.cpp index 56f717c5fd..88937986bc 100644 --- a/src/d/actor/d_a_door_mbossL1.cpp +++ b/src/d/actor/d_a_door_mbossL1.cpp @@ -569,7 +569,7 @@ void daMBdoorL1_c::demoProc() { int level = getNowLevel(this); if (dComIfGp_evmng_getIsAddvance(field_0x5e8)) { switch (demoAction) { - case 0: + case 0: { int* puVar6 = dComIfGp_evmng_getMyIntegerP(field_0x5e8, "Timer"); if (puVar6 == NULL) { field_0x5ec = 1; @@ -577,6 +577,7 @@ void daMBdoorL1_c::demoProc() { field_0x5ec = *puVar6; } break; + } case 1: if (level == 5 || level == 11) { setAngleQuickly(); @@ -597,7 +598,7 @@ void daMBdoorL1_c::demoProc() { { unlockInit(); fopAcM_onSwitch(this, (u8)cVar10); - dComIfGp_setItemKeyNumCount(0xffffffff); + dComIfGp_setItemKeyNumCount(-1); fopAcM_seStart(this, Z2SE_OBJ_DOOR_CHAIN_LOCK_OPEN, 0); } break; diff --git a/src/d/actor/d_a_door_push.cpp b/src/d/actor/d_a_door_push.cpp index 6c9868596f..4d348b0db4 100644 --- a/src/d/actor/d_a_door_push.cpp +++ b/src/d/actor/d_a_door_push.cpp @@ -239,7 +239,7 @@ int daDoorPush_c::demoProc() { dComIfGp_evmng_getMyActIdx(field_0x644, action_table, ARRAY_SIZEU(action_table), 0, 0); if (dComIfGp_evmng_getIsAddvance(field_0x644) != 0) { switch (actIdx) { - case WAIT_e: + case WAIT_e: { int* integerP = dComIfGp_evmng_getMyIntegerP(field_0x644, "Timer"); if (integerP == NULL) { field_0x648 = 1; @@ -247,6 +247,7 @@ int daDoorPush_c::demoProc() { field_0x648 = *integerP; } break; + } case OPEN_e: rotateInit(); field_0x641 = 0; diff --git a/src/d/actor/d_a_door_shutter.cpp b/src/d/actor/d_a_door_shutter.cpp index 45677ae8e9..f689d3f209 100644 --- a/src/d/actor/d_a_door_shutter.cpp +++ b/src/d/actor/d_a_door_shutter.cpp @@ -131,7 +131,6 @@ int daDoor20_c::CreateHeap() { field_0x5a0.entry(mModel1->getModelData()); mModel2->calc(); } else { - switch (kind) { case 0: case 3: @@ -145,11 +144,14 @@ int daDoor20_c::CreateHeap() { case 1: anm = (J3DAnmTransform*)dComIfG_getObjectRes(getArcName(), "oj_DoorOpC.bck"); break; - case 2: - J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getStageRes(getBtk()); + case 2: + J3DAnmTextureSRTKey* pbtk; + pbtk = (J3DAnmTextureSRTKey*)dComIfG_getStageRes(getBtk()); JUT_ASSERT(421, pbtk != NULL); field_0x5c0 = new mDoExt_btkAnm(); - if (field_0x5c0 == NULL || !field_0x5c0->init(mModel1->getModelData(), pbtk, 1, 0, 1.0f, 0, -1)) { + if (field_0x5c0 == NULL || + !field_0x5c0->init(mModel1->getModelData(), pbtk, 1, 0, 1.0f, 0, -1)) + { return 0; } anm = (J3DAnmTransform*)dComIfG_getObjectRes(getArcName(), "oj_DoorOpD.bck"); @@ -820,17 +822,18 @@ int daDoor20_c::create() { int daDoor20_c::demoProc() { field_0x6cc = dComIfGp_evmng_getMyStaffId("SHUTTER_DOOR", 0, 0); int demoAction = getDemoAction(); + J3DAnmTransform* anm; if (dComIfGp_evmng_getIsAddvance(field_0x6cc)) { switch (demoAction) { - case 0: - int* pTimer = dComIfGp_evmng_getMyIntegerP( - field_0x6cc, "Timer"); + case 0: { + int* pTimer = dComIfGp_evmng_getMyIntegerP(field_0x6cc, "Timer"); if (pTimer == NULL) { field_0x5dd = 1; } else { field_0x5dd = *pTimer; } break; + } case 3: openInit(0); break; @@ -854,13 +857,14 @@ int daDoor20_c::demoProc() { keyhole->setOpen(); } } - int swBit = door_param2_c::getSwbit(this); + int swBit; + swBit = door_param2_c::getSwbit(this); if (swBit != 0xff && !dComIfGs_isSwitch(swBit, 0xffffffff) && (door_param2_c::getFrontOption(this) == 2 || door_param2_c::getBackOption(this) == 2)) { dComIfGs_onSwitch(swBit, 0xffffffff); - dComIfGp_setItemKeyNumCount(0xffffffff); + dComIfGp_setItemKeyNumCount(-1); if (field_0x673 == 1) { fopAcM_seStart(this, Z2SE_OBJ_DOOR_LOCK_OPEN, 0); } else { @@ -885,8 +889,7 @@ int daDoor20_c::demoProc() { setAngle(); break; case 13: - J3DAnmTransform* anm = (J3DAnmTransform*)dComIfG_getObjectRes( - getAlwaysArcName(), "FDoorB.bck"); + anm = (J3DAnmTransform*)dComIfG_getObjectRes(getAlwaysArcName(), "FDoorB.bck"); JUT_ASSERT(1796, anm != NULL); if (!field_0x584.init(anm, 1, 0, 1.0f, 0, -1, true) || !field_0x5a0.init(anm, 1, 0, 1.0f, 0, -1, true)) @@ -897,8 +900,7 @@ int daDoor20_c::demoProc() { openInit2(); break; case 12: - anm = - (J3DAnmTransform*)dComIfG_getObjectRes(getAlwaysArcName(), "FDoorA.bck"); + anm = (J3DAnmTransform*)dComIfG_getObjectRes(getAlwaysArcName(), "FDoorA.bck"); JUT_ASSERT(1809, anm != NULL); if (!field_0x584.init(anm, 1, 0, 1.0f, 0, -1, true) || !field_0x5a0.init(anm, 1, 0, 1.0f, 0, -1, true)) @@ -1102,7 +1104,7 @@ int daDoor20_c::demoProc() { case 25: dComIfGp_evmng_cutEnd(field_0x6cc); break; - case 26: + case 26: { int msgNo = door_param2_c::getMsgNo(this); if (door_param2_c::isMsgDoor(this) && msgNo != 0xffff) { dComIfGp_event_offHindFlag(1); @@ -1113,6 +1115,7 @@ int daDoor20_c::demoProc() { dComIfGp_evmng_cutEnd(field_0x6cc); } break; + } case 27: case 28: if (field_0x5c0->play()) { @@ -1678,7 +1681,8 @@ void daDoor20_c::makeEventId() { } break; case 4: - int j = 0; + int j; + j = 0; for (i = 12; i < 19; i++, j++) { field_0x692[i] = dComIfGp_getEventManager().getEventIdx(this, knob_table[j], field_0x6b8[i]); diff --git a/src/d/actor/d_a_e_bi.cpp b/src/d/actor/d_a_e_bi.cpp index 352d8a0e05..b0ff73a993 100644 --- a/src/d/actor/d_a_e_bi.cpp +++ b/src/d/actor/d_a_e_bi.cpp @@ -344,9 +344,10 @@ static void e_bi_ex(e_bi_class* i_this) { i_this->field_0x670 = 1; i_this->field_0x694 = 160; anm_init(i_this, BCK_BI_BOMBPOSE, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f); - f32 fVar1 = cM_rndF(0.2f) + 0.9f; + f32 fVar1; + fVar1 = cM_rndF(0.2f) + 0.9f; i_this->field_0x6a2 = 0; - i_this->field_0x6a4 = 3800.0f * fVar1; + i_this->field_0x6a4 = (3800.0f + JREG_F(5)) * fVar1; i_this->field_0x6a8 = fVar1 * 20.0f; a_this->speed.y = 23.0f; break; @@ -358,8 +359,8 @@ static void e_bi_ex(e_bi_class* i_this) { } // fallthrough case 2: - cLib_addCalc0(&i_this->field_0x6a8, 1.0f, 1.0f); - cLib_addCalcAngleS2(&i_this->field_0x6a4, 0, 1, 200); + cLib_addCalc0(&i_this->field_0x6a8, 1.0f, 1.0f + JREG_F(7)); + cLib_addCalcAngleS2(&i_this->field_0x6a4, 0, 1, 200 + JREG_S(6)); break; } @@ -374,13 +375,13 @@ static void e_bi_ex(e_bi_class* i_this) { if (i_this->field_0x694 != 0) { i_this->field_0x694--; i_this->mSound.startCreatureSoundLevel(Z2SE_OBJ_BOMB_IGNITION, 0, -1); - i_this->field_0x696 += 0x1100; + i_this->field_0x696 += (s16) 0x1100; if (i_this->field_0x694 < 45) { - i_this->field_0x696 += 0x1100; + i_this->field_0x696 += (s16) 0x1100; if (i_this->field_0x694 < 30) { - i_this->field_0x696 += 0x1100; + i_this->field_0x696 += (s16) 0x1100; } } diff --git a/src/d/actor/d_a_e_bu.cpp b/src/d/actor/d_a_e_bu.cpp index eb4ec7ba0f..d820bc4123 100644 --- a/src/d/actor/d_a_e_bu.cpp +++ b/src/d/actor/d_a_e_bu.cpp @@ -511,6 +511,7 @@ static void e_bu_path_fly(e_bu_class* i_this) { fopAc_ac_c* actor = &i_this->enemy; fopAc_ac_c* player = dComIfGp_getPlayer(0); cXyz sp18; + dPnt* pnt; switch (i_this->mode) { case 0: @@ -540,7 +541,7 @@ static void e_bu_path_fly(e_bu_class* i_this) { case 2: i_this->mode = 3; - dPnt* pnt = i_this->ppd->m_points; + pnt = i_this->ppd->m_points; pnt += i_this->now_path_pntNo; i_this->field_0x690 = TREG_F(7); diff --git a/src/d/actor/d_a_e_fz.cpp b/src/d/actor/d_a_e_fz.cpp index 9d86113350..28bf0a6c2b 100644 --- a/src/d/actor/d_a_e_fz.cpp +++ b/src/d/actor/d_a_e_fz.cpp @@ -502,6 +502,7 @@ void daE_FZ_c::executeAttack() { void daE_FZ_c::executeDamage() { cXyz pos; pos.set(l_HIO.field_0x0c, l_HIO.field_0x0c, l_HIO.field_0x0c); + f32 tmp; switch(mActionPhase) { case 0: @@ -519,7 +520,7 @@ void daE_FZ_c::executeDamage() { fopAcM_delete(this); break; case 1: - f32 tmp = l_HIO.field_0x28; + tmp = l_HIO.field_0x28; speedF = tmp; field_0x6fc = tmp; case 5: @@ -611,9 +612,7 @@ void daE_FZ_c::executeRollMove() { cXyz pos; s16 roll_angle = static_cast(mpBlizzetaActor)->getFrizadRollAngle(); - f32 mode_rarius = static_cast(mpBlizzetaActor)->getModeRarius(); - - mode_rarius = 100.0f + mode_rarius; + f32 mode_rarius = 100.0f + static_cast(mpBlizzetaActor)->getModeRarius(); if (mode_rarius < 400.0f) mode_rarius = 400.0f; @@ -636,9 +635,8 @@ void daE_FZ_c::executeRollMove() { pos.z += (f32)(mode_rarius * cM_scos(roll_angle + field_0x715 * 0xccc)); current.pos = pos; - u32 frizad_attack = static_cast(mpBlizzetaActor)->getFrizadAttack(); - if (frizad_attack == 3) { + if (static_cast(mpBlizzetaActor)->getFrizadAttack() == 3) { mActionPhase = 2; speedF = 60.0f; current.angle.y = cLib_targetAngleY(&static_cast(mpBlizzetaActor)->current.pos,¤t.pos); @@ -655,7 +653,8 @@ void daE_FZ_c::executeRollMove() { } if (mAtSph.ChkAtHit()) { - if ((fopAcM_GetName(mAtSph.GetAtHitAc()) == PROC_ALINK) || mAtSph.ChkAtShieldHit()) { + fopAc_ac_c* at_hit_actor = mAtSph.GetAtHitAc(); + if ((fopAcM_GetName(at_hit_actor) == PROC_ALINK) || mAtSph.ChkAtShieldHit()) { setActionMode(ACT_DAMAGE,0); return; } diff --git a/src/d/actor/d_a_e_ge.cpp b/src/d/actor/d_a_e_ge.cpp index ec46fbd893..745e3dbedb 100644 --- a/src/d/actor/d_a_e_ge.cpp +++ b/src/d/actor/d_a_e_ge.cpp @@ -659,6 +659,7 @@ void daE_GE_c::executeBack() { cXyz position; cXyz position2; s16 chaseAngle = 0x0; + s16 distAngleS; switch (mMode) { case 0: @@ -694,7 +695,7 @@ void daE_GE_c::executeBack() { position = calcCircleFly(&home.pos, &position2, field_0xb8c, field_0xb58, field_0xb8a, 1.0f); - s16 distAngleS = + distAngleS = cLib_distanceAngleS(cLib_targetAngleY(¤t.pos, &home.pos), shape_angle.y); if (position.y > 100.0f || mObjAcch.ChkWallHit() || distAngleS >= 0x5000) { field_0xb8c += 0x190; @@ -993,27 +994,26 @@ void daE_GE_c::executeWind() { } switch (mMode) { - case 0: + case 0: { field_0xb9e = 0; cXyz boomerangPos(daPy_py_c::getThrowBoomerangActor()->current.pos); field_0xb58 = current.pos.absXZ(boomerangPos); field_0xb5c = current.pos.y - boomerangPos.y; - speed.y = 0.0f; - speedF = 0.0f; + speedF = speed.y = 0.0f; mMode = 1; bckSet(9, 3.0f, 2, 1.0f); field_0xb64 = cM_rndFX(50.0f); field_0xb60 = cM_rndFX(100.0f); - + } /* fallthrough */ - case 1: + case 1: { if (mpMorfSO->checkFrame(0.0f)) { mSound.startCreatureVoice(Z2SE_EN_GE_V_FURA, -1); } cXyz boomerangPos2(daPy_py_c::getThrowBoomerangActor()->current.pos); - field_0xb8c += 0x800; + field_0xb8c += (s16)0x800; current.pos.x = boomerangPos2.x + field_0xb58 * cM_ssin(field_0xb8c); current.pos.z = boomerangPos2.z + field_0xb58 * cM_scos(field_0xb8c); cLib_chaseF(&field_0xb58, field_0xb60, 2.0f); @@ -1028,6 +1028,7 @@ void daE_GE_c::executeWind() { field_0xb8a = 0x3000; shape_angle.y += field_0xb8a; break; + } case 2: cLib_addCalcAngleS2(&field_0xb8a, 0, 4, 0x180); @@ -1042,7 +1043,6 @@ void daE_GE_c::executeWind() { setActionMode(ACTION_BACK); mMode = 10; } - break; } } diff --git a/src/d/actor/d_a_e_hz.cpp b/src/d/actor/d_a_e_hz.cpp index 668f31e5fb..ada079e8a9 100644 --- a/src/d/actor/d_a_e_hz.cpp +++ b/src/d/actor/d_a_e_hz.cpp @@ -679,13 +679,13 @@ void daE_HZ_c::initBackWalk() { } void daE_HZ_c::executeAway() { + f32 diff; switch (mMode) { case 0: gravity = 0.0f; speed.y = 0.0f; mSpheres[0].OffTgSetBit(); - shape_angle.z = 0; - shape_angle.x = 0; + shape_angle.x = shape_angle.z = 0; setBck(0xF, 0, 10.0f, 1.0f); field_0x6e4 = 1; mMode = 1; @@ -724,7 +724,7 @@ void daE_HZ_c::executeAway() { break; case 2: - f32 diff = (current.pos - field_0x678).absXZ(); + diff = (current.pos - field_0x678).absXZ(); cLib_chaseAngleS(&shape_angle.y, cLib_targetAngleY(¤t.pos, &field_0x678), diff < 500.0f ? (s16)0x800 : (s16)0x200); cLib_chaseF(&speedF, l_HIO.escape_speed, 1.0f); @@ -823,6 +823,8 @@ void daE_HZ_c::executeWind() { dBgS_LinChk linChk; BOOL bVar = false; f32 frame = mpMorfSO->getFrame(); + f32 playerDist; + f32 groundCross; mpBoomerangActor = daPy_py_c::getThrowBoomerangActor(); switch (mMode) { @@ -839,7 +841,7 @@ void daE_HZ_c::executeWind() { mMode = 1; field_0x6e4 = 0; - f32 playerDist = fopAcM_searchPlayerDistance(this); + playerDist = fopAcM_searchPlayerDistance(this); if (playerDist >= 1000.0f) { playerDist = 1000.0f; } @@ -927,7 +929,7 @@ void daE_HZ_c::executeWind() { cLib_chaseF(&field_0x678.x, 0.0f, 20.0f); gndChk.SetPos(&position); - f32 groundCross = dComIfG_Bgsp().GroundCross(&gndChk); + groundCross = dComIfG_Bgsp().GroundCross(&gndChk); if (frame < 38.0f) { if (position.y - groundCross < 500.0f) { position.y = groundCross + 500.0f; diff --git a/src/d/actor/d_a_e_kk.cpp b/src/d/actor/d_a_e_kk.cpp index 2ccfd3bc20..c1e0ebc77e 100644 --- a/src/d/actor/d_a_e_kk.cpp +++ b/src/d/actor/d_a_e_kk.cpp @@ -932,6 +932,9 @@ void daE_KK_c::executeWeaponMove() { current.angle.y = actor->shape_angle.y + 0x190; } + f32 temp; + f32 player_distance_y; + switch (mMoveMode) { case 0: shape_angle.x = home.angle.x + 0x878C; @@ -948,8 +951,7 @@ void daE_KK_c::executeWeaponMove() { mDistance = (fopAcM_searchPlayerDistance(this) - l_HIO.direct_attack_range) * 1.5f; - f32 temp = 2000.0f; - f32 player_distance_y; + temp = 2000.0f; if (fopAcM_searchPlayerDistanceY(this) < -300.0f) { player_distance_y = (fopAcM_searchPlayerDistanceY(this) + 300.0f) * -2.0f; diff --git a/src/d/actor/d_a_e_mm_mt.cpp b/src/d/actor/d_a_e_mm_mt.cpp index 75f2ff891d..9c5ec2d38f 100644 --- a/src/d/actor/d_a_e_mm_mt.cpp +++ b/src/d/actor/d_a_e_mm_mt.cpp @@ -207,7 +207,7 @@ static void e_mm_mt_carry(e_mm_mt_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*) dComIfGp_getPlayer(0); switch (i_this->m_mode) { - case 0: + case 0: { cLib_offBit(actor->attention_info.flags, fopAc_AttnFlag_CARRY_e); i_this->m_mode = 1; s16 angle_delta_y1 = 0x4000 + player->shape_angle.y; @@ -215,11 +215,11 @@ static void e_mm_mt_carry(e_mm_mt_class* i_this) { if (angle_delta_y > 0x4000 || angle_delta_y < -0x4000) { i_this->m_carryAngle = -0x8000; } else { - i_this->m_carryAngle = 0; + i_this->m_carryAngle = 0; } void(0); break; - + } case 1: if (!fopAcM_checkCarryNow(actor)) { i_this->m_action = 3; diff --git a/src/d/actor/d_a_e_nest.cpp b/src/d/actor/d_a_e_nest.cpp index 500bed3639..617b0dc8e1 100644 --- a/src/d/actor/d_a_e_nest.cpp +++ b/src/d/actor/d_a_e_nest.cpp @@ -3,8 +3,9 @@ * Enemy - Beehive */ -#include "d/dolzel_rel.h" // IWYU pragma: keep - + #include "d/dolzel_rel.h" // IWYU pragma: keep + +#include "d/d_s_play.h" #include "d/actor/d_a_e_nest.h" #include "d/actor/d_a_npc_tk.h" #include "SSystem/SComponent/c_math.h" @@ -431,13 +432,14 @@ static void e_nest_drop(e_nest_class* i_this) { } static s8 e_nest_carry(e_nest_class* i_this) { + fopAc_ac_c* a_this = static_cast(i_this); fopAc_ac_c* player = dComIfGp_getPlayer(0); - i_this->speed.y = 0.0f; + a_this->speed.y = 0.0f; s8 ret = true; - + switch (i_this->mMode) { - case 0: - cLib_offBit(i_this->attention_info.flags, fopAc_AttnFlag_CARRY_e); + case 0: { + cLib_offBit(a_this->attention_info.flags, fopAc_AttnFlag_CARRY_e); i_this->mMode = 1; s16 angle_delta_y = i_this->mRotation.y - player->shape_angle.y; if (angle_delta_y > 0x4000 || angle_delta_y < -0x4000) { @@ -447,21 +449,22 @@ static s8 e_nest_carry(e_nest_class* i_this) { } i_this->mTimers[0] = 20; break; + } case 1: - if (!fopAcM_checkCarryNow(i_this)) { + if (!fopAcM_checkCarryNow(a_this)) { i_this->mTimers[0] = 0; i_this->mCcSph.OnCoSetBit(); i_this->mAction = e_nest_class::ACT_DROP; - if (i_this->speedF >= 1.0f) { - i_this->speedF = 30.0f; - i_this->speed.y = 30.0f; - i_this->current.angle.y = player->shape_angle.y; + if (fopAcM_GetSpeedF(a_this) >= 1.0f) { + a_this->speedF = 30.0f + NREG_F(7); + a_this->speed.y = 30.0f + NREG_F(8); + a_this->current.angle.y = player->shape_angle.y; i_this->mMode = 0; } else { - i_this->speedF = 0.0f; + a_this->speedF = 0.0f; i_this->mMode = 3; - i_this->mWobble = 500.0f; + i_this->mWobble = 500.0f + NREG_F(0); } } else { ret = false; diff --git a/src/d/actor/d_a_e_sh.cpp b/src/d/actor/d_a_e_sh.cpp index f091d35a82..f1b1e51634 100644 --- a/src/d/actor/d_a_e_sh.cpp +++ b/src/d/actor/d_a_e_sh.cpp @@ -616,20 +616,20 @@ static void e_sh_disappear(e_sh_class* i_this) { int i; switch (i_this->field_0x678) { - case 0: + case 0: { anm_init(i_this, 12, 5.0f, 0, 1.0f); i_this->field_0x678 = 1; cXyz partScale(l_HIO.mBaseSize, l_HIO.mBaseSize, l_HIO.mBaseSize); for (i = 0; i < 2; i++) { - dComIfGp_particle_set(dp_name[i], &actor->current.pos, - &actor->shape_angle, &partScale); + dComIfGp_particle_set(dp_name[i], &actor->current.pos, &actor->shape_angle, &partScale); } i_this->mSound.startCreatureSound(Z2SE_EN_SH_DISAPPEAR, 0, -1); break; + } case 1: if (i_this->mAnm_p->isStop()) { i_this->field_0x676 = 0; diff --git a/src/d/actor/d_a_e_sw.cpp b/src/d/actor/d_a_e_sw.cpp index 8e8867f1a8..1beeea21d9 100644 --- a/src/d/actor/d_a_e_sw.cpp +++ b/src/d/actor/d_a_e_sw.cpp @@ -1762,7 +1762,7 @@ cPhs__Step daE_SW_c::create() { mBgc.OnLineCheck(); field_0x698 = 2; attention_info.distances[2] = 3; - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); } else { attention_info.distances[2] = 4; @@ -1826,7 +1826,7 @@ extern actor_process_profile_definition g_profile_E_SW = { }; void daE_SW_c::d_checkFall() { - if (d_checkAction(daE_SW_c::d_hook) || d_checkAction(daE_SW_c::d_fall) || d_checkAction(daE_SW_c::d_attk)) { + if (d_checkAction(&daE_SW_c::d_hook) || d_checkAction(&daE_SW_c::d_fall) || d_checkAction(&daE_SW_c::d_attk)) { return; } @@ -1843,7 +1843,7 @@ void daE_SW_c::d_checkFall() { if (speed.y < 0.0f) { if ((fVar1 == -G_CM3D_F_INF || std::abs(fVar1 - current.pos.y) > 1000.0f) || dComIfG_Bgsp().GetGroundCode(gnd_chk) == 4 || dComIfG_Bgsp().GetGroundCode(gnd_chk) == 10 || dComIfG_Bgsp().GetGroundCode(gnd_chk) == 5) { - d_setAction(daE_SW_c::d_fall); + d_setAction(&daE_SW_c::d_fall); } } } @@ -1854,7 +1854,7 @@ void daE_SW_c::d_damage_check() { mStts.Move(); if (field_0x6f2 == 0) { - if (d_checkAction(daE_SW_c::d_damage) || d_checkAction(daE_SW_c::d_die)) { + if (d_checkAction(&daE_SW_c::d_damage) || d_checkAction(&daE_SW_c::d_die)) { return; } @@ -1862,7 +1862,7 @@ void daE_SW_c::d_damage_check() { field_0x98c.OffAtShieldHit(); if (player->checkPlayerGuard()) { - d_setAction(daE_SW_c::d_chance); + d_setAction(&daE_SW_c::d_chance); return; } } @@ -1897,22 +1897,22 @@ void daE_SW_c::d_damage_check() { player->getCutType() == daPy_py_c::CUT_TYPE_LARGE_JUMP_FINISH)) { health = 0; field_0x698 = 0; - d_setAction(daE_SW_c::d_damage); + d_setAction(&daE_SW_c::d_damage); } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_IRON_BALL) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_MIDNA_LOCK)) { health = 0; field_0x698 = 0; - d_setAction(daE_SW_c::d_damage); + d_setAction(&daE_SW_c::d_damage); } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { - d_setAction(daE_SW_c::d_hook); + d_setAction(&daE_SW_c::d_hook); } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_40) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG)) { - if (!d_checkAction(daE_SW_c::d_chance2)) { - d_setAction(daE_SW_c::d_chance2); + if (!d_checkAction(&daE_SW_c::d_chance2)) { + d_setAction(&daE_SW_c::d_chance2); } } else { field_0x698--; - d_setAction(daE_SW_c::d_damage); + d_setAction(&daE_SW_c::d_damage); } } } @@ -1962,7 +1962,7 @@ void daE_SW_c::d_bm_chase() { fopAcM_SearchByID(field_0x688, (fopAc_ac_c**)&bomb); if (bomb == NULL || bomb->checkStateExplode()) { - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); } else { switch (mMoveMode) { case 0: @@ -1990,7 +1990,7 @@ void daE_SW_c::d_bm_chase() { } field_0x6a8 = bomb->current.pos; - d_setAction(daE_SW_c::d_attk); + d_setAction(&daE_SW_c::d_attk); return; default: @@ -2091,9 +2091,9 @@ void daE_SW_c::d_wait() { shape_angle.y = current.angle.y; if (d_bomb_check()) { - d_setAction(daE_SW_c::d_bm_chase); + d_setAction(&daE_SW_c::d_bm_chase); } else if (field_0x6ec == 0 && d_chaseCheck()) { - d_setAction(daE_SW_c::d_chase); + d_setAction(&daE_SW_c::d_chase); } } @@ -2140,17 +2140,17 @@ void daE_SW_c::d_chase() { setSmokeEffect(); if (field_0x6ee == 0) { - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); return; } if (player->current.pos.absXZ(current.pos) >= l_HIO.character_notice_dist) { - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); return; } if (player->current.pos.absXZ(current.pos) < l_HIO.human_attack_init_range) { - d_setAction(daE_SW_c::d_attk); + d_setAction(&daE_SW_c::d_attk); return; } @@ -2205,7 +2205,7 @@ void daE_SW_c::d_attk() { current.angle.y = sVar1; gravity = -4.0f; - if (d_checkOldAction(daE_SW_c::d_bm_chase)) { + if (d_checkOldAction(&daE_SW_c::d_bm_chase)) { field_0x69e = cLib_targetAngleY(¤t.pos, &field_0x6a8); speedF = current.pos.abs(field_0x6a8) / 25.0f; } else { @@ -2241,7 +2241,7 @@ void daE_SW_c::d_attk() { field_0x6d8 = -60.0f; if ((field_0x6bc & 1) == 0) { - d_setAction(daE_SW_c::d_chance); + d_setAction(&daE_SW_c::d_chance); } else { field_0x6e4 = 1; setDiveEffect(); @@ -2280,7 +2280,7 @@ void daE_SW_c::d_attk() { case 4: if ((field_0x6bc & 3) == 0) { - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); current.pos = old.pos; break; } else { @@ -2289,7 +2289,7 @@ void daE_SW_c::d_attk() { return; } - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); field_0x6d8 = -120.0f; cXyz sp30(current.pos); sp30.y += 200.0f; @@ -2324,7 +2324,7 @@ void daE_SW_c::d_chance() { bckSet(BCK_SW_CHANCE, 5.0f, 2, 1.0f); speedF = 0.0f; - if (d_checkOldAction(daE_SW_c::d_hook)) { + if (d_checkOldAction(&daE_SW_c::d_hook)) { field_0x6ea = 200; } else { field_0x6ea = 100; @@ -2366,7 +2366,7 @@ void daE_SW_c::d_chance() { } if (field_0x6ea == 0 && mBgc.ChkGroundHit() && field_0x6bc == 3) { - d_setAction(daE_SW_c::d_dive); + d_setAction(&daE_SW_c::d_dive); } break; } @@ -2390,7 +2390,7 @@ void daE_SW_c::d_chance2() { if (mBgc.ChkGroundHit()) { mSound.startCreatureSound(Z2SE_EN_SW_BTBT, field_0x6e9, -1); - d_setAction(daE_SW_c::d_chance); + d_setAction(&daE_SW_c::d_chance); } break; } @@ -2421,7 +2421,7 @@ void daE_SW_c::d_dive() { field_0x6e5 = 1; field_0x6d8 = -120.0f; - d_setAction(daE_SW_c::d_wait); + d_setAction(&daE_SW_c::d_wait); break; default: @@ -2490,11 +2490,11 @@ void daE_SW_c::d_damage() { speed.y = 0.0f; if (field_0x698 <= 0) { - d_setAction(daE_SW_c::d_die); + d_setAction(&daE_SW_c::d_die); return; } - d_setAction(daE_SW_c::d_chance); + d_setAction(&daE_SW_c::d_chance); return; default: @@ -2611,7 +2611,7 @@ void daE_SW_c::d_hook() { speedF = -10.0f; gravity = -5.0f; field_0x6d8 = 0.0f; - d_setAction(daE_SW_c::d_chance); + d_setAction(&daE_SW_c::d_chance); } break; diff --git a/src/d/actor/d_a_e_th.cpp b/src/d/actor/d_a_e_th.cpp index 9d1c8eac45..979d2d6ed4 100644 --- a/src/d/actor/d_a_e_th.cpp +++ b/src/d/actor/d_a_e_th.cpp @@ -818,13 +818,13 @@ static void demo_camera(e_th_class* i_this) { } } break; - case 10: + case 10: { if (!i_this->eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(i_this, 2, 0xFFFF, 0); i_this->eventInfo.onCondition(2); return; } - + camera->mCamera.Stop(); i_this->mDemoCamMode = 11; i_this->mDemoCamTimer = 0; @@ -864,6 +864,7 @@ static void demo_camera(e_th_class* i_this) { anm_init(i_this, 0xE, 2.0f, 0, 1.0f); i_this->mMode = 1; dComIfGs_onSaveSwitch(94); + } case 11: if (i_this->mDemoCamTimer == 55 && i_this->field_0x567 != 0) { daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 2, 0); diff --git a/src/d/actor/d_a_e_tt.cpp b/src/d/actor/d_a_e_tt.cpp index df6a964e5e..fe64e2f3bc 100644 --- a/src/d/actor/d_a_e_tt.cpp +++ b/src/d/actor/d_a_e_tt.cpp @@ -964,7 +964,7 @@ void daE_TT_c::executeFirstAttack() { } break; - case 11: + case 11: { f32 playerSpeedF = player->getSpeedF() * 17.0f; cXyz xyz(playerSpeedF * cM_ssin(player->shape_angle.y), 0.0f, playerSpeedF * cM_scos(player->shape_angle.y)); @@ -992,6 +992,7 @@ void daE_TT_c::executeFirstAttack() { current.angle.y = shape_angle.y; } break; + } case 12: mSphere.OnAtSetBit(); diff --git a/src/d/actor/d_a_e_vt.cpp b/src/d/actor/d_a_e_vt.cpp index 5fcaa4c3b0..b014b59f73 100644 --- a/src/d/actor/d_a_e_vt.cpp +++ b/src/d/actor/d_a_e_vt.cpp @@ -1443,6 +1443,7 @@ void daE_VA_c::executeDemoOp() { camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); cXyz sp2C; cXyz sp38; + f32 old; daPy_py_c* player = daPy_getPlayerActorClass(); calcOpRopePos(); @@ -1664,7 +1665,7 @@ void daE_VA_c::executeDemoOp() { } sp38.set(26.0f, 187.0f, 236.0f); - f32 old = field_0x122c.y; + old = field_0x122c.y; if (cLib_chasePosXZ(&field_0x122c, sp38, 4.2f)) { field_0x122c.y = old; @@ -2304,7 +2305,7 @@ void daE_VA_c::executeOpaciFly() { case 0: case 20: case 21: - case 22: + case 22: { attention_info.flags = 0; if (mMode == 0) { @@ -2329,8 +2330,9 @@ void daE_VA_c::executeOpaciFly() { current.angle.y = temp_r0; mDemoModeTimer = nREG_S(0) + 15; + } /* fallthrough */ - case 1: + case 1: { if (mDemoModeTimer == 0 && !checkBck(ANM_FLOAT_WAIT_e)) { setBck(ANM_FLOAT_WAIT_e, J3DFrameCtrl::EMode_LOOP, nREG_F(19) + 30.0f, 1.0f); } @@ -2359,6 +2361,7 @@ void daE_VA_c::executeOpaciFly() { mMode = 2; } break; + } case 2: mMode = 3; mDemoModeTimer = 30; @@ -3063,7 +3066,7 @@ void daE_VA_c::calcMagicMove() { case 0: mMagicSphs[i].OffAtSetBit(); break; - case 1: + case 1: { mMagicSphs[i].OnAtSetBit(); field_0x1228[i] = 2; @@ -3084,6 +3087,7 @@ void daE_VA_c::calcMagicMove() { f32 temp_f31 = std::abs(cM_scos(sp8) * 50.0f); mMagicSpeed[i].set(temp_f31 * cM_ssin(spA), cM_ssin(sp8) * 50.0f, temp_f31 * cM_scos(spA)); + } /* fallthrough */ case 2: Z2GetAudioMgr()->seStartLevel(Z2SE_EN_VA_ATK_BALL, &mMagicPos[i], 0, 0, 1.0f, 1.0f, diff --git a/src/d/actor/d_a_e_yh.cpp b/src/d/actor/d_a_e_yh.cpp index 8587424bf7..7294aacb8f 100644 --- a/src/d/actor/d_a_e_yh.cpp +++ b/src/d/actor/d_a_e_yh.cpp @@ -662,45 +662,48 @@ static void e_yh_attack(e_yh_class* i_this) { i_this->mSound.startCreatureVoice(Z2SE_EN_DB_V_BITE, -1); } break; - - case 2: + + case 2: { if (i_this->field_0x698[1] != 0) { i_this->field_0xb18 = 1; } - - cLib_addCalc2(&a_this->current.pos.x, i_this->field_0x678.x, 0.8f, a_this->speed.x * i_this->field_0x690); - cLib_addCalc2(&a_this->current.pos.z, i_this->field_0x678.z, 0.8f, a_this->speed.z * i_this->field_0x690); - cLib_addCalc2(&a_this->current.pos.y, i_this->field_0x678.y, 0.8f, a_this->speed.y * i_this->field_0x690); + + cLib_addCalc2(&a_this->current.pos.x, i_this->field_0x678.x, 0.8f, + a_this->speed.x * i_this->field_0x690); + cLib_addCalc2(&a_this->current.pos.z, i_this->field_0x678.z, 0.8f, + a_this->speed.z * i_this->field_0x690); + cLib_addCalc2(&a_this->current.pos.y, i_this->field_0x678.y, 0.8f, + a_this->speed.y * i_this->field_0x690); cLib_addCalc2(&i_this->field_0x690, 0.2f, 1.0f, 0.05f); cLib_addCalcAngleS2(&a_this->shape_angle.z, i_this->field_0x864, 2, 0x2000); - + daPy_py_c* pdVar6 = (daPy_py_c*)daPy_getPlayerActorClass(); if (!pdVar6->getDkCaught()) { if (!pdVar6->getDkCaught2() && i_this->mAtSph.ChkAtHit()) { cCcD_Obj* hitObj = i_this->mAtSph.GetAtHitObj(); - + if (player == dCc_GetAc(hitObj->GetAc())) { OS_REPORT("E_DB//////////////AT SET 1 !!\n"); i_this->field_0x670 = 5; i_this->field_0x690 = 20.0f; anm_init(i_this, 8, 2.0f, 2, 1.0f); i_this->field_0x698[0] = 120; - + daPy_py_c* pyPlayer = (daPy_py_c*)daPy_getPlayerActorClass(); pyPlayer->setDkCaught(a_this); - - dComIfGp_getVibration().StartShock(6, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + + dComIfGp_getVibration().StartShock(6, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); break; } } } - + if (i_this->mpMorf->isStop()) { i_this->field_0x670 = 3; i_this->field_0x698[0] = 0; } break; - + } case 3: if (i_this->field_0x698[0] == 0) { i_this->field_0x66e = 3; @@ -1350,8 +1353,8 @@ static s8 e_yh_escape(e_yh_class* i_this) { } } break; - - case 2: + + case 2: { local_bc = a_this->home.pos - a_this->current.pos; local_bc.y = 0.0f; s16 homeAngle = cM_atan2s(local_bc.x, local_bc.z); @@ -1363,7 +1366,8 @@ static s8 e_yh_escape(e_yh_class* i_this) { i_this->mSound.startCreatureSound(Z2SE_EN_DB_GRASS, 0, -1); } break; - + } + case 3: local_116 = 0; cLib_addCalc0(&i_this->field_0x844, 1.0f, 1.0f); diff --git a/src/d/actor/d_a_kytag06.cpp b/src/d/actor/d_a_kytag06.cpp index 4e1deb7275..35e3ba1803 100644 --- a/src/d/actor/d_a_kytag06.cpp +++ b/src/d/actor/d_a_kytag06.cpp @@ -92,7 +92,7 @@ static void dKy_event_proc() { env_light->dice_wether_state = DICE_STATE_INIT_e; } break; - case DICE_STATE_INIT_e: + case DICE_STATE_INIT_e: { u8 table_no = cM_rndF(12.99f); if (table_no >= 8) { env_light->dice_wether_state = DICE_STATE_NEXT_e; @@ -132,6 +132,7 @@ static void dKy_event_proc() { env_light->dice_wether_state++; } break; + } case DICE_STATE_EXEC_e: if (current_time > env_light->dice_wether_time && current_time - env_light->dice_wether_time < 180.0f) @@ -812,7 +813,7 @@ static void daKytag06_type_03_Execute(kytag06_class* i_this) { dComIfGs_onSwitch(i_this->mSwNo, dComIfGp_roomControl_getStayNo()); } break; - case 1: + case 1: { int old = i_this->field_0x578; i_this->field_0x578--; @@ -820,6 +821,7 @@ static void daKytag06_type_03_Execute(kytag06_class* i_this) { i_this->mMode++; } break; + } case 2: if ((g_Counter.mCounter0 & 7) == 0) { // run block every 8 frames @@ -861,7 +863,7 @@ static int daKytag06_Execute(kytag06_class* i_this) { dComIfGs_getTime(); switch (i_this->mType) { - case 1: + case 1: { camera_class* camera = dComIfGp_getCamera(0); if (i_this->mpPath != NULL) { @@ -899,6 +901,7 @@ static int daKytag06_Execute(kytag06_class* i_this) { } } break; + } case 2: if (i_this->mSwNo != 0xFF) { if (dComIfGs_isSwitch(i_this->mSwNo, dComIfGp_roomControl_getStayNo()) && i_this->mMode == 0) { @@ -1040,6 +1043,7 @@ static int daKytag06_Execute(kytag06_class* i_this) { } break; case 4: + void(0); break; } diff --git a/src/d/actor/d_a_npc_hoz.cpp b/src/d/actor/d_a_npc_hoz.cpp index d8f10a0d5b..dd342f124e 100644 --- a/src/d/actor/d_a_npc_hoz.cpp +++ b/src/d/actor/d_a_npc_hoz.cpp @@ -594,7 +594,7 @@ BOOL daNpc_Hoz_c::evtEndProc() { field_0xf8b = 1; field_0xf8c = 0; break; - case 5: + case 5: { field_0xf8a = 1; field_0xf8c = 0; @@ -604,6 +604,7 @@ BOOL daNpc_Hoz_c::evtEndProc() { dMeter2Info_onMenuInForce(2); } break; + } case 6: field_0xf8b = 1; diff --git a/src/d/actor/d_a_npc_ks.cpp b/src/d/actor/d_a_npc_ks.cpp index 86a15fe481..ffe173521f 100644 --- a/src/d/actor/d_a_npc_ks.cpp +++ b/src/d/actor/d_a_npc_ks.cpp @@ -1139,6 +1139,7 @@ static int npc_ks_demo_02(npc_ks_class* i_this) { fopAc_ac_c* a_pill_p = pillar_p; switch (i_this->mMode) { + int _; case 0: anm_init(i_this, 26, 3.0f, 2, 1.0f); i_this->mMode = 1; diff --git a/src/d/actor/d_a_npc_ne.cpp b/src/d/actor/d_a_npc_ne.cpp index 32bf3edab4..5e410ee76f 100644 --- a/src/d/actor/d_a_npc_ne.cpp +++ b/src/d/actor/d_a_npc_ne.cpp @@ -1201,7 +1201,7 @@ static void npc_ne_pathwalk(npc_ne_class* i_this) { i_this->mMode = 1; // fallthrough - case 1: + case 1: { i_this->mPathPointNo += i_this->mPathDir; if (i_this->mPathPointNo >= (i_this->mpPath->m_num & 0xff)) { if (dPath_ChkClose(i_this->mpPath)) { @@ -1222,7 +1222,7 @@ static void npc_ne_pathwalk(npc_ne_class* i_this) { i_this->mMode = 2; i_this->mAngleYStep = 0.0f; break; - + } case 2: i_this->mLookTarget = i_this->mTargetPos; cXyz delta = i_this->mTargetPos - i_this->current.pos; diff --git a/src/d/actor/d_a_npc_tkc.cpp b/src/d/actor/d_a_npc_tkc.cpp index 117388c6e1..1ec8a25c18 100644 --- a/src/d/actor/d_a_npc_tkc.cpp +++ b/src/d/actor/d_a_npc_tkc.cpp @@ -323,8 +323,8 @@ int daNpcTkc_c::Draw() { } int daNpcTkc_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { - int jntNo = i_joint->getJntNo(); - u16 jointNo = jointNo; + J3DJoint* joint = i_joint; + int jntNo = joint->getJntNo(); if ((jntNo == JNT_ARMR || jntNo == JNT_MOUTH) && (mAnmFlags & ANM_PLAY_BCK)) { J3DAnmTransform* anm = mBckAnm.getBckAnm(); mBckAnm.changeBckOnly(mAnm_p->getAnm()); diff --git a/src/d/actor/d_a_npc_uri.cpp b/src/d/actor/d_a_npc_uri.cpp index 6a6ac88058..19bd6160bc 100644 --- a/src/d/actor/d_a_npc_uri.cpp +++ b/src/d/actor/d_a_npc_uri.cpp @@ -417,7 +417,7 @@ void daNpc_Uri_c::reset() { cStack_a0.y = home.angle.y; switch (mType) { - case TYPE_1: + case TYPE_1: { mPath.setNextPathInfo(fopAcM_GetRoomNo(this), 0); int num = mPath.getNumPnts(); acStack_38 = mPath.getPntPos(num - 2); @@ -464,6 +464,7 @@ void daNpc_Uri_c::reset() { } } break; + } case TYPE_4: field_0x100d = 1; break; @@ -1232,7 +1233,7 @@ int daNpc_Uri_c::cutFindWolf(int param_1) { if (dComIfGp_getEventManager().getIsAddvance(param_1)) { switch (iVar11) { - case 0: + case 0: { mFaceMotionSeqMngr.setNo(12, 0.0f, 0, 0); mMotionSeqMngr.setNo(23, 0.0f, 0, 0); mSound.startCreatureVoice(JAISoundID(Z2SE_URI_V_SCREAM_S), -1); @@ -1256,6 +1257,7 @@ int daNpc_Uri_c::cutFindWolf(int param_1) { * night */ dComIfGs_onTmpBit(0x1308); break; + } case 1: fopAc_ac_c* actor = mActorMngr[0].getActorP(); if (actor) { diff --git a/src/d/actor/d_a_npc_zelRo.cpp b/src/d/actor/d_a_npc_zelRo.cpp index 670958223c..90e2d58dd7 100644 --- a/src/d/actor/d_a_npc_zelRo.cpp +++ b/src/d/actor/d_a_npc_zelRo.cpp @@ -628,7 +628,8 @@ int daNpc_ZelRo_c::talk(void* param_1) { #ifdef DEBUG int daNpc_ZelRo_c::test(void* param_1) { - + int rt = 0; + return rt; } #endif diff --git a/src/d/actor/d_a_obj_avalanche.cpp b/src/d/actor/d_a_obj_avalanche.cpp index a1c6488f5f..013ace1dc1 100644 --- a/src/d/actor/d_a_obj_avalanche.cpp +++ b/src/d/actor/d_a_obj_avalanche.cpp @@ -214,7 +214,7 @@ int daObjAvalanche_c::demoProc() { int actIdx = dComIfGp_evmng_getMyActIdx(mStaffId, action_table, 2, 0, 0); if (dComIfGp_evmng_getIsAddvance(mStaffId)) { switch (actIdx) { - case 0: + case 0: { int* puVar3 = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer"); if (puVar3 == NULL) { mTimer = 1; @@ -222,11 +222,13 @@ int daObjAvalanche_c::demoProc() { mTimer = *puVar3; } break; + } case 1: mBckAnm->setPlaySpeed(1.0f); eyePos = current.pos; fopAcM_seStart(this, Z2SE_OBJ_SNOW_SLIDE, 0); setEffect(); + OS_REPORT("崩れる雪:SEセット\n"); // Avalanche: SE Set break; } } diff --git a/src/d/actor/d_a_obj_carry.cpp b/src/d/actor/d_a_obj_carry.cpp index 520c243bc3..13c8980ac9 100644 --- a/src/d/actor/d_a_obj_carry.cpp +++ b/src/d/actor/d_a_obj_carry.cpp @@ -1292,7 +1292,8 @@ int daObjCarry_c::create() { } #endif - int create_phase = cPhs_NEXT_e; + int create_phase; + create_phase = cPhs_NEXT_e; switch (mType) { case TYPE_BALL_S: diff --git a/src/d/actor/d_a_obj_enemy_create.cpp b/src/d/actor/d_a_obj_enemy_create.cpp index bba8ab84bb..2bad4cf956 100644 --- a/src/d/actor/d_a_obj_enemy_create.cpp +++ b/src/d/actor/d_a_obj_enemy_create.cpp @@ -54,7 +54,7 @@ void daObjE_CREATE_c::NormalAction() { mActionMode++; } break; - case MODE_KILL_CHECK: + case MODE_KILL_CHECK: { int killed_num; int enemyNum = mEnemyNum; @@ -68,14 +68,15 @@ void daObjE_CREATE_c::NormalAction() { if (killed_num == enemyNum) { mActionMode++; - if (mDeactivateSw != 0xFF && - !dComIfGs_isSwitch(mDeactivateSw, fopAcM_GetRoomNo(this))) { + if (mDeactivateSw != 0xFF && !dComIfGs_isSwitch(mDeactivateSw, fopAcM_GetRoomNo(this))) + { dComIfGs_onSwitch(mDeactivateSw, fopAcM_GetRoomNo(this)); } mKillCheckDelayTimer = 100; } break; + } case MODE_END: break; } diff --git a/src/d/actor/d_a_obj_kabuto.cpp b/src/d/actor/d_a_obj_kabuto.cpp index a6cf31ce20..7ce815ab13 100644 --- a/src/d/actor/d_a_obj_kabuto.cpp +++ b/src/d/actor/d_a_obj_kabuto.cpp @@ -117,13 +117,14 @@ static int daObjKABUTO_Delete(daObjKABUTO_c* i_this) { void daObjKABUTO_c::ShopWaitAction() { switch (mMode) { - case 0: + case 0: { speedF = 0.0f; J3DAnmTransform* anm = static_cast(dComIfG_getObjectRes("Kab_m", 7)); mpMorf->setAnm(anm, 2, 5.0f, 0.0f, 0.0f, -1.0f); mMode++; mTimers[0] = cM_rndF(50.0f) + 50.0f; break; + } case 1: mTimers[0]--; @@ -148,13 +149,14 @@ void daObjKABUTO_c::ShopWaitAction() { void daObjKABUTO_c::WaitAction() { switch (mMode) { - case 0: + case 0: { speedF = 0.0f; J3DAnmTransform* anm = static_cast(dComIfG_getObjectRes("Kab_m", 7)); mpMorf->setAnm(anm, 2, 5.0f, 0.0f, 0.0f, -1.0f); mMode++; mTimers[0] = cM_rndF(50.0f) + 50.0f; break; + } case 1: if (fopAcM_searchActorDistance(this, daPy_getPlayerActorClass()) < 1500.0f) { diff --git a/src/d/actor/d_a_obj_kgate.cpp b/src/d/actor/d_a_obj_kgate.cpp index 6f74edc5d3..9f1de606f2 100644 --- a/src/d/actor/d_a_obj_kgate.cpp +++ b/src/d/actor/d_a_obj_kgate.cpp @@ -872,7 +872,7 @@ void daObjKGate_c::demoProc() { if (dComIfGp_evmng_getIsAddvance(mStaffID)) { switch (demo_action) { - case DEMO_ACT_WAIT: + case DEMO_ACT_WAIT: { int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffID, "Timer"); if (timer_p == NULL) { mTimer = 1; @@ -880,6 +880,7 @@ void daObjKGate_c::demoProc() { mTimer = *timer_p; } break; + } case DEMO_ACT_OPEN: mGateLMove = 1000; mGateRMove = -1000; diff --git a/src/d/actor/d_a_obj_rgate.cpp b/src/d/actor/d_a_obj_rgate.cpp index 232ff2e225..2349c84a6d 100644 --- a/src/d/actor/d_a_obj_rgate.cpp +++ b/src/d/actor/d_a_obj_rgate.cpp @@ -765,7 +765,7 @@ void daObjRgate_c::demoProc() { if (dComIfGp_evmng_getIsAddvance(mStaffID)) { switch (demo_action) { - case DEMO_ACT_WAIT: + case DEMO_ACT_WAIT: { int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffID, "Timer"); if (timer_p == NULL) { mTimer = 1; @@ -773,6 +773,7 @@ void daObjRgate_c::demoProc() { mTimer = *timer_p; } break; + } case DEMO_ACT_OPEN: mGateLMove = 1000; mGateRMove = -1000; diff --git a/src/d/actor/d_a_obj_smgdoor.cpp b/src/d/actor/d_a_obj_smgdoor.cpp index 967ffaeba7..91d78bf6c0 100644 --- a/src/d/actor/d_a_obj_smgdoor.cpp +++ b/src/d/actor/d_a_obj_smgdoor.cpp @@ -162,7 +162,7 @@ int daObjSmgDoor_c::demoProc() { if (dComIfGp_evmng_getIsAddvance(mStaffId) != 0) { switch (demo_action) { - case 0: + case 0: { int* intP = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer"); if (intP == NULL) { field_0x5e9 = 1; @@ -170,6 +170,7 @@ int daObjSmgDoor_c::demoProc() { field_0x5e9 = *intP; } break; + } case 1: openInit(); break; diff --git a/src/d/actor/d_a_obj_swBallC.cpp b/src/d/actor/d_a_obj_swBallC.cpp index 639a6368dd..bee4c46181 100644 --- a/src/d/actor/d_a_obj_swBallC.cpp +++ b/src/d/actor/d_a_obj_swBallC.cpp @@ -187,7 +187,7 @@ int daObjSwBallC_c::demoProc() { player->onShieldBackBone(); if (dComIfGp_evmng_getIsAddvance(field_0x578)) { switch (uVar1) { - case 0: + case 0: { int* puVar4 = dComIfGp_evmng_getMyIntegerP(field_0x578, "Timer"); if (puVar4 == NULL) { field_0x580 = 1; @@ -195,6 +195,7 @@ int daObjSwBallC_c::demoProc() { field_0x580 = *puVar4; } break; + } case 1: field_0x574->setPlaySpeed(1.0f); break; diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp index 4fe39620da..0cfb3c3e61 100644 --- a/src/d/actor/d_a_obj_ten.cpp +++ b/src/d/actor/d_a_obj_ten.cpp @@ -108,14 +108,14 @@ static int daObjTEN_Delete(daObjTEN_c* i_this) { void daObjTEN_c::WaitAction() { switch (field_0x5e9) { - case 0: + case 0: { speedF = 0.0f; J3DAnmTransform* anmTransform = (J3DAnmTransform*)dComIfG_getObjectRes("I_Ten", 7); - mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, - -1.0f); + mMorf->setAnm(anmTransform, 2, 5.0f, 0.0f, 0.0f, -1.0f); field_0x5e9++; field_0x5ea[0] = cM_rndF(50.0f) + 50.0f; break; + } case 1: if (fopAcM_searchPlayerDistance(this) < 1500.0f) { field_0x5ea[0]--; diff --git a/src/d/actor/d_a_obj_thashi.cpp b/src/d/actor/d_a_obj_thashi.cpp index ddc839117c..a63d633047 100644 --- a/src/d/actor/d_a_obj_thashi.cpp +++ b/src/d/actor/d_a_obj_thashi.cpp @@ -113,7 +113,7 @@ void daObjTHASHI_c::setBaseMtx() { break; case 1: case 2: - case 7: + case 7: { for (s16 i = 0; i < 10; i++) { mDoMtx_stack_c::transS(mCollectiveTrans[i]); mDoMtx_stack_c::ZXYrotM(mCollectiveRot[i]); @@ -132,6 +132,7 @@ void daObjTHASHI_c::setBaseMtx() { mDoMtx_stack_c::ZXYrotM(shape_angle); mThashi01Model->setBaseTRMtx(mDoMtx_stack_c::get()); break; + } case 3: for (s16 i = 0; i < 50; i++) { mDoMtx_stack_c::transS(mCollectiveTrans[i]); @@ -151,7 +152,7 @@ void daObjTHASHI_c::setBaseMtx() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::ZXYrotM(shape_angle); mThashi01Model->setBaseTRMtx(mDoMtx_stack_c::get()); - break; + return; } } diff --git a/src/d/actor/d_a_scene_exit2.cpp b/src/d/actor/d_a_scene_exit2.cpp index 437f136dde..49cff71bd5 100644 --- a/src/d/actor/d_a_scene_exit2.cpp +++ b/src/d/actor/d_a_scene_exit2.cpp @@ -97,7 +97,7 @@ int daScExit_c::demoProc() { if (dComIfGp_evmng_getIsAddvance(mStaffID)) { switch (act_id) { - case WAIT_e: + case WAIT_e: { int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffID, "Timer"); if (timer_p == NULL) { @@ -106,6 +106,7 @@ int daScExit_c::demoProc() { mTimer = *timer_p; } break; + } case START_e: fopAcM_seStart(this, Z2SE_SY_WARP_FADE, 0); attention_info.position.y = current.pos.y + 800.0f; diff --git a/src/d/actor/d_a_tag_TWgate.cpp b/src/d/actor/d_a_tag_TWgate.cpp index fedf39024c..9d4e465ceb 100644 --- a/src/d/actor/d_a_tag_TWgate.cpp +++ b/src/d/actor/d_a_tag_TWgate.cpp @@ -9,6 +9,7 @@ #include "d/d_com_inf_game.h" #include "d/d_msg_object.h" #include "f_op/f_op_actor_mng.h" +#include "JSystem/JUtility/JUTAssert.h" struct daTagTWGate_zevParam { /* 0x00 */ char* mArcName; @@ -293,24 +294,21 @@ void daTagTWGate_c::executeDemoFilone3() { } switch (*cutName) { - case 0x30303031: + case 0x30303031: { int modelSts = downloadModels(); if (modelSts == 1) { dComIfGp_evmng_cutEnd(staffId); } else if (modelSts == -1) { - dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } break; - case 0x30303032: + } + case 0x30303032: { if (dComIfGp_getEvent().chkFlag2(8)) { dComIfGp_getEvent().onSkipFade(); - dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } u8 old_5e1 = field_0x5e1; @@ -323,7 +321,7 @@ void daTagTWGate_c::executeDemoFilone3() { mDoMtx_stack_c::transS(player->current.pos); mDoMtx_stack_c::YrotM(sxyz.y); mDoMtx_stack_c::transM(0.0f, 240.0f, -710.0f); - + cXyz pos; pos.x = mDoMtx_stack_c::get()[0][3]; pos.y = mDoMtx_stack_c::get()[1][3]; @@ -333,6 +331,7 @@ void daTagTWGate_c::executeDemoFilone3() { dComIfGp_evmng_cutEnd(staffId); } break; + } case 0x30303033: if (dComIfGp_getEvent().chkFlag2(8)) { dComIfGp_getEvent().onSkipFade(); @@ -482,32 +481,30 @@ void daTagTWGate_c::executeDemoOrdin3() { mpMorf->setPlaySpeed(1.0f); field_0x5e0 = 1; break; + default: + JUT_PANIC(829, "0"); + break; } + } switch(*cutName) { case '0001': - int downloadResult = downloadModels(); + int downloadResult; + downloadResult = downloadModels(); if (downloadResult == 1) { evtMng.cutEnd(staffId); } else if (downloadResult == -1) { - dComIfGp_setNextStage( - l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } break; case '0002': if (dComIfGp_getEvent().checkSkipEdge()) { dComIfGp_getEvent().onSkipFade(); - dComIfGp_setNextStage( - l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } - int dVar2 = daPy_py_c::checkNowWolf() ? 0x2e : 0x4a; - if (field_0x5e1++ == dVar2) { + if (field_0x5e1++ == (daPy_py_c::checkNowWolf() ? 0x2e : 0x4a)) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz cStack_30; csXyz cStack_38(0, fopAcM_GetShapeAngle_p(player)->y + 0x8000, 0); @@ -516,8 +513,8 @@ void daTagTWGate_c::executeDemoOrdin3() { mDoMtx_stack_c::transM(0.0f, 240.0f, -710.0f); mDoMtx_stack_c::multVecZero(&cStack_30); dComIfGp_particle_set(0x86c5, &cStack_30, &cStack_38, NULL); - Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, - 1.0f, 1.0f, -1.0f, -1.0f, 0); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); evtMng.cutEnd(staffId); } break; @@ -534,6 +531,9 @@ void daTagTWGate_c::executeDemoOrdin3() { evtMng.cutEnd(staffId); } break; + default: + JUT_PANIC(890, "0"); + break; } if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { @@ -668,32 +668,29 @@ void daTagTWGate_c::executeDemoRanail3() { mpMorf->setPlaySpeed(1.0f); field_0x5e0 = 1; break; + default: + JUT_PANIC(1099, "0"); + break; } } switch(*cutName) { - case '0001': - int downloadResult = downloadModels(); + case '0001': + int downloadResult; + downloadResult = downloadModels(); if (downloadResult == 1) { evtMng.cutEnd(staffId); } else if (downloadResult == -1) { - dComIfGp_setNextStage( - l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } break; case '0002': if (dComIfGp_getEvent().checkSkipEdge()) { dComIfGp_getEvent().onSkipFade(); - dComIfGp_setNextStage( - l_zevParamTbl[mType].mStage, - l_zevParamTbl[mType].mPoint, - l_zevParamTbl[mType].mRoomNo, - l_zevParamTbl[mType].mLayer); + dComIfGp_setNextStage(l_zevParamTbl[mType].mStage, l_zevParamTbl[mType].mPoint, + l_zevParamTbl[mType].mRoomNo, l_zevParamTbl[mType].mLayer); } - int dVar2 = daPy_py_c::checkNowWolf() ? 0x2e : 0x4a; - if (field_0x5e1++ == dVar2) { + if (field_0x5e1++ == (daPy_py_c::checkNowWolf() ? 0x2e : 0x4a)) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz cStack_30; csXyz cStack_38(0, fopAcM_GetShapeAngle_p(player)->y + 0x8000, 0); @@ -702,8 +699,8 @@ void daTagTWGate_c::executeDemoRanail3() { mDoMtx_stack_c::transM(0.0f, 240.0f, -710.0f); mDoMtx_stack_c::multVecZero(&cStack_30); dComIfGp_particle_set(0x86c5, &cStack_30, &cStack_38, NULL); - Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, - 1.0f, 1.0f, -1.0f, -1.0f, 0); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_DARK_GATE_RIPPLE, &cStack_30, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); evtMng.cutEnd(staffId); } break; @@ -720,6 +717,9 @@ void daTagTWGate_c::executeDemoRanail3() { evtMng.cutEnd(staffId); } break; + default: + JUT_PANIC(1160, "0"); + break; } if (eventInfo.checkCommandDemoAccrpt() && mEventID != -1 && evtMng.endCheck(mEventID)) { @@ -854,7 +854,8 @@ void daTagTWGate_c::executeDemoHyral3() { } switch(*piVar3) { case '0001': - int downloadRes = downloadModels(); + int downloadRes; + downloadRes = downloadModels(); if (downloadRes == 1) { eventMgr.cutEnd(staffId); } else if (downloadRes == -1) { diff --git a/src/d/actor/d_a_tag_kago_fall.cpp b/src/d/actor/d_a_tag_kago_fall.cpp index efa0bd63a9..d3b90f3458 100644 --- a/src/d/actor/d_a_tag_kago_fall.cpp +++ b/src/d/actor/d_a_tag_kago_fall.cpp @@ -136,7 +136,7 @@ void daTagKagoFall_c::actionWaitRiver() { } break; - case 4: + case 4: { daPy_getPlayerActorClass()->offNoResetFlg0(daPy_py_c::FLG0_UNK_10000); int msg = mMsgFlow.doFlow(this, NULL, 0); @@ -151,6 +151,7 @@ void daTagKagoFall_c::actionWaitRiver() { mActionState = 5; } break; + } case 5: // Maybe contained some stripped out debug code? @@ -233,7 +234,7 @@ void daTagKagoFall_c::actionWaitFall() { break; - case 3: + case 3: { player->setPlayerPosAndAngle(&mRestartPos, 0, 0); int msg = mMsgFlow.doFlow(this, NULL, 0); if (msg != 0) { @@ -247,6 +248,7 @@ void daTagKagoFall_c::actionWaitFall() { mActionState = 10; } break; + } case 10: // Maybe contained some stripped out debug code? diff --git a/src/d/actor/d_a_tag_river_back.cpp b/src/d/actor/d_a_tag_river_back.cpp index 7f14af3253..60f3931618 100644 --- a/src/d/actor/d_a_tag_river_back.cpp +++ b/src/d/actor/d_a_tag_river_back.cpp @@ -104,7 +104,7 @@ int daTagRiverBack_c::demoProc() { if (dComIfGp_evmng_getIsAddvance(mStaffID)) { switch (act_id) { - case WAIT_e: + case WAIT_e: { int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffID, "Timer"); if (timer_p == NULL) { mTimer = 1; @@ -112,6 +112,7 @@ int daTagRiverBack_c::demoProc() { mTimer = *timer_p; } break; + } case SCENE_CHG_e: mDoAud_seStart(Z2SE_FORCE_BACK, 0, 0, 0); } diff --git a/src/d/actor/d_a_tag_statue_evt.cpp b/src/d/actor/d_a_tag_statue_evt.cpp index 00aacbd199..538420e3ff 100644 --- a/src/d/actor/d_a_tag_statue_evt.cpp +++ b/src/d/actor/d_a_tag_statue_evt.cpp @@ -1,6 +1,6 @@ /* -/* Translation Unit: d_a_tag_statue_evt -/* Owl Statue Event Tag -- Awarding Sky Characters +* Translation Unit: d_a_tag_statue_evt +* Owl Statue Event Tag -- Awarding Sky Characters */ #include "d/dolzel_rel.h" // IWYU pragma: keep @@ -272,18 +272,18 @@ int daTagStatue_c::demoProc() { if(dComIfGp_evmng_getIsAddvance(mStaffId)) { switch(act_id) { - case DEMO_ACTION_WAIT: + case DEMO_ACTION_WAIT: { // Delay fading to black int* timer_p = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer"); - if(!timer_p) { + if (!timer_p) { mTimer = 1; - } - else { + } else { mTimer = *timer_p; } break; + } case DEMO_ACTION_MOVE_OWL_STATUE: // Position and orient Owl Statue behind player if(mSkyCharacterEventBitIdIndex != TAG_LOCATION_GERUDO_DESERT && mSkyCharacterEventBitIdIndex != TAG_LOCATION_LAKE_HYLIA && mSkyCharacterEventBitIdIndex != TAG_LOCATION_RUINED_THEATRE) { diff --git a/src/d/d_msg_flow.cpp b/src/d/d_msg_flow.cpp index 2524fd337e..a2cd304fd7 100644 --- a/src/d/d_msg_flow.cpp +++ b/src/d/d_msg_flow.cpp @@ -581,7 +581,7 @@ int dMsgFlow_c::messageNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPart field_0x41 = 1; mNowMsgNo = aMsg_p->msg_idx; break; - case 6: + case 6: { field_0x40 = field_0x41; int mesgAnimeAttrInfo = -1; @@ -603,6 +603,7 @@ int dMsgFlow_c::messageNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPart field_0x41 = 0; mNowMsgNo = aMsg_p->msg_idx; break; + } case 14: case 18: setNodeIndex(flowNode_p->next_node_idx, i_talkPartners); @@ -635,7 +636,7 @@ int dMsgFlow_c::eventNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartne int proc_status = (this->*mEventList[node->event_idx])(node, i_speaker_p); switch (node->event_idx) { - case 8: + case 8: { getParam(&mEventId, &field_0x30, node->params); setNodeIndex(mFlowIdxTBL[node->next_node_idx], i_talkPartners); @@ -647,6 +648,7 @@ int dMsgFlow_c::eventNodeProc(fopAc_ac_c* i_speaker_p, fopAc_ac_c** i_talkPartne setNodeIndex(-1, i_talkPartners); mNodeIdx = prev_idx; break; + } case 9: if (getParam(node->params) == 0) { int msgNum; From 7fe9a68a9d47750fa0b3956349260fc4e3968047 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Thu, 4 Dec 2025 19:03:13 -0500 Subject: [PATCH 15/18] d_a_horse 100% (#2912) * Fix missing line numbers for debug * Fix horse inlines and HIO * Match daHorse_c::setEffect * Improve a few debug matches * Match daHorse_c::checkHorseNoMove (half fake) * Update configure.py --- config/GZ2E01/rels/d_a_horse/symbols.txt | 2 + configure.py | 10 +- include/JSystem/JParticle/JPAEmitter.h | 2 +- include/d/actor/d_a_horse.h | 45 ++-- include/d/actor/d_a_obj_bemos.h | 1 + include/d/d_bg_s.h | 53 ++++- include/d/d_bg_s_movebg_actor.h | 1 + src/d/actor/d_a_alink.cpp | 2 +- src/d/actor/d_a_alink_crawl.inc | 3 +- src/d/actor/d_a_b_bq.cpp | 149 +++++++------ src/d/actor/d_a_horse.cpp | 266 +++++++++++------------ src/d/actor/d_a_npc_rafrel.cpp | 3 - src/d/d_bg_s.cpp | 8 +- 13 files changed, 302 insertions(+), 243 deletions(-) diff --git a/config/GZ2E01/rels/d_a_horse/symbols.txt b/config/GZ2E01/rels/d_a_horse/symbols.txt index 8142a966d3..cfc9fdd211 100644 --- a/config/GZ2E01/rels/d_a_horse/symbols.txt +++ b/config/GZ2E01/rels/d_a_horse/symbols.txt @@ -325,8 +325,10 @@ l_backFootOffset = .bss:0x0000006C; // type:object size:0xC scope:global align:4 init$4891 = .bss:0x00000084; // type:object size:0x1 scope:local align:1 localEyePos$7278 = .bss:0x00000088; // type:object size:0xC scope:local @7469 = .bss:0x00000094; // type:object size:0xC scope:local +init$5140 = .bss:0x000000A0; // type:object size:0x1 scope:local align:1 runScale$7468 = .bss:0x000000A4; // type:object size:0xC scope:local @7473 = .bss:0x000000B0; // type:object size:0xC scope:local +init$5144 = .bss:0x000000BC; // type:object size:0x1 scope:local align:1 landScale$7472 = .bss:0x000000C0; // type:object size:0xC scope:local @7477 = .bss:0x000000CC; // type:object size:0xC scope:local init$5083 = .bss:0x000000D8; // type:object size:0x1 scope:local align:1 diff --git a/configure.py b/configure.py index 3e5c2740f6..e305f66ade 100755 --- a/configure.py +++ b/configure.py @@ -260,7 +260,7 @@ cflags_base = [ ] if config.version == "ShieldD": - cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1", '-pragma "nosyminline on"']) + cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1"]) elif config.version == "RZDE01_00" or config.version == "RZDE01_02" or config.version == "Shield": cflags_base.extend(["-O4,p", "-inline auto", "-ipa file", "-RTTI on", "-str reuse", "-enc SJIS", "-DWIDESCREEN_SUPPORT=1"]) else: @@ -733,7 +733,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "d/d_bg_w_base.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_kcol.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_sv.cpp"), - Object(Equivalent, "d/d_cc_d.cpp"), # weak func order + Object(Equivalent, "d/d_cc_d.cpp"), # weak func order (cCcD_ShapeAttr::GetCoCP) Object(MatchingFor(ALL_GCN), "d/d_cc_mass_s.cpp"), Object(MatchingFor(ALL_GCN), "d/d_cc_s.cpp"), Object(MatchingFor(ALL_GCN), "d/d_cc_uty.cpp"), @@ -1286,7 +1286,7 @@ config.libs = [ [ Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIComm.cpp"), Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHICommonMem.cpp"), - Object(Equivalent, "JSystem/JHostIO/JORServer.cpp"), # weak func order + Object(Equivalent, "JSystem/JHostIO/JORServer.cpp"), # debug weak func order Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JOREntry.cpp", extra_cflags=["-sym off"]), # debug weak func order Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORFile.cpp", extra_cflags=["-sym off"]), Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORMessageBox.cpp"), @@ -1941,8 +1941,8 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_e_zs"), ActorRel(MatchingFor(ALL_GCN), "d_a_formation_mng"), ActorRel(MatchingFor(ALL_GCN), "d_a_guard_mng"), - ActorRel(NonMatching, "d_a_horse"), - ActorRel(Equivalent, "d_a_hozelda"), # weak func order + ActorRel(Equivalent, "d_a_horse"), # weak func order (J3DMtxCalcNoAnm) + ActorRel(Equivalent, "d_a_hozelda"), # weak func order (J3DMtxCalcNoAnm) ActorRel(MatchingFor(ALL_GCN), "d_a_izumi_gate"), ActorRel(MatchingFor(ALL_GCN), "d_a_kago"), ActorRel(MatchingFor(ALL_GCN), "d_a_kytag01"), diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 22b1edf378..eca7556754 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -264,7 +264,7 @@ public: /* 0xE8 */ JPAResource* mpRes; /* 0xEC */ JPAEmitterCallBack* mpEmtrCallBack; /* 0xF0 */ JPAParticleCallBack* mpPtclCallBack; - /* 0xF4 */ volatile u32 mStatus; + /* 0xF4 */ u32 mStatus; /* 0xF8 */ f32 mEmitCount; /* 0xFC */ f32 mScaleOut; /* 0x100 */ u32 mTick; diff --git a/include/d/actor/d_a_horse.h b/include/d/actor/d_a_horse.h index ed57253b6d..a7673635b6 100644 --- a/include/d/actor/d_a_horse.h +++ b/include/d/actor/d_a_horse.h @@ -38,6 +38,13 @@ public: class daHoZelda_c; class daHorse_hio_c; +class daHorse_hio_c0; + +#if DEBUG +#define HORSE_HIO_CLASS daHorse_hio_c +#else +#define HORSE_HIO_CLASS daHorse_hio_c0 +#endif /** * @ingroup actors-unsorted @@ -231,11 +238,9 @@ public: ~daHorse_c(); u32 getLashDashStart() const { return checkResetStateFlg0(RFLG0_LASH_DASH_START); } - - - bool checkNoBombProc() const { return m_procID == PROC_WAIT_e || m_procID == PROC_MOVE_e; } - BOOL checkResetStateFlg0(daHorse_RFLG0 flag) const { return m_resetStateFlg0 & flag; } - bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return m_endResetStateFlg0 & flag; } + BOOL checkNoBombProc() const { return !(m_procID == PROC_WAIT_e || m_procID == PROC_MOVE_e); } + u32 checkResetStateFlg0(daHorse_RFLG0 flag) const { return m_resetStateFlg0 & flag; } + u32 checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return m_endResetStateFlg0 & flag; } u32 checkStateFlg0(daHorse_FLG0 flag) const { return m_stateFlg0 & flag; } f32 getNormalMaxSpeedF() { return m_normalMaxSpeedF; } f32 getLashMaxSpeedF() { return m_lashMaxSpeedF; } @@ -267,21 +272,21 @@ public: void setZeldaActor(fopAc_ac_c* i_actor) { m_zeldaActorKeep.setData(i_actor); } u32 checkTurnStandCamera() const { return checkResetStateFlg0(RFLG0_TURN_STAND_CAMERA); } - BOOL checkTurnStand() const { return checkResetStateFlg0(RFLG0_TURN_STAND); } + u32 checkTurnStand() const { return checkResetStateFlg0(RFLG0_TURN_STAND); } u32 checkRodeoMode() const { return checkStateFlg0(FLG0_RODEO_MODE); } - bool checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); } - bool checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); } - BOOL checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); } - BOOL checkHorseCallWait() const { return checkStateFlg0(FLG0_NO_DRAW_WAIT); } + u32 checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); } + u32 checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); } + u32 checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); } + u32 checkHorseCallWait() const { return checkStateFlg0(FLG0_NO_DRAW_WAIT); } BOOL checkTurn() const { return m_procID == PROC_TURN_e && field_0x1720 == 0; } BOOL checkStop() const { return m_procID == PROC_STOP_e; } BOOL checkJump() const { return m_procID == PROC_JUMP_e; } - bool checkWait() const { return m_procID == PROC_WAIT_e; } - bool checkLand() const { return m_procID == PROC_LAND_e && field_0x171a == 0; } - bool checkGetOff() const { return fabsf(speedF) < 3.0f; } - BOOL checkEnemySearch() { return checkResetStateFlg0(RFLG0_ENEMY_SEARCH); } - bool checkOriginalDemo() const { return field_0x16b8 == 3; } - bool checkHorseDemoMode() { return field_0x16b8 != 0; } + BOOL checkWait() const { return m_procID == PROC_WAIT_e; } + BOOL checkLand() const { return m_procID == PROC_LAND_e && field_0x171a == 0; } + BOOL checkGetOff() const { return fabsf(speedF) < 3.0f; } + u32 checkEnemySearch() { return checkResetStateFlg0(RFLG0_ENEMY_SEARCH); } + BOOL checkOriginalDemo() const { return field_0x16b8 == 3; } + BOOL checkHorseDemoMode() { return field_0x16b8 != 0; } s16 checkCowHit() const { return m_cowHit; } s16 getCowHitAngle() const { return m_cowHitAngle; } u8 getRodeoPointCnt() const { return m_rodeoPointCnt; } @@ -333,7 +338,7 @@ public: u32 getShadowID() const { return m_shadowID; } - bool checkInputOnR() const { return m_padStickValue > 0.05f; } + BOOL checkInputOnR() const { return m_padStickValue > 0.05f; } void onBagMaterial() { m_modelData->getMaterialNodePointer(5)->getShape()->show(); @@ -354,7 +359,7 @@ public: /* 0x0594 */ mDoExt_AnmRatioPack m_anmRatio[3]; /* 0x05AC */ mDoExt_MtxCalcOldFrame* m_oldFrame; /* 0x05B0 */ daPy_frameCtrl_c m_frameCtrl[3]; - /* 0x05F8 */ daHorse_hio_c* m_hio; + /* 0x05F8 */ HORSE_HIO_CLASS* m_hio; /* 0x05FC */ dBgS_AcchCir m_acchcir[3]; /* 0x06BC */ dBgS_HorseAcch m_acch; /* 0x0894 */ dCcD_Stts m_cc_stts; @@ -566,15 +571,15 @@ class daHorse_hio_c : public JORReflexible { public: daHorse_hio_c() { #if DEBUG - mParameters = daHorse_hio_c0::m; + m = daHorse_hio_c0::m; #endif } #if DEBUG virtual ~daHorse_hio_c() {} void genMessage(JORMContext*); /* 0x4 */ s8 id; - /* 0x8 */ daHorse_hio_c1 mParameters; #endif + /* 0x8 */ daHorse_hio_c1 m; }; #endif /* D_A_HORSE_H */ diff --git a/include/d/actor/d_a_obj_bemos.h b/include/d/actor/d_a_obj_bemos.h index c08b50bd7a..7b3be1c0e9 100644 --- a/include/d/actor/d_a_obj_bemos.h +++ b/include/d/actor/d_a_obj_bemos.h @@ -7,6 +7,7 @@ #include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_ext.h" +#include "JSystem/JParticle/JPAEmitter.h" /** * @ingroup actors-objects diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h index f8cb52660d..d300226e3d 100644 --- a/include/d/d_bg_s.h +++ b/include/d/d_bg_s.h @@ -3,6 +3,7 @@ #include "d/d_bg_w_base.h" #include "JSystem/JHostIO/JORReflexible.h" +#include #include "global.h" class dBgW; @@ -80,6 +81,11 @@ public: virtual void genMessage(JORMContext*); virtual ~dBgS_HIO(); + BOOL ChkLineOff(); + BOOL ChkCheckCounter(); + BOOL ChkLineTimer(); + BOOL ChkGroundCheckTimer(); + /* 0x04 */ u8 field_0x4[0x6 - 0x4]; /* 0x06 */ u16 field_0x6; /* 0x08 */ u16 field_0x8; @@ -90,6 +96,12 @@ public: #endif }; +extern int g_line_counter; +extern OSStopwatch s_line_sw; + +extern int g_ground_counter; +extern OSStopwatch s_ground_sw; + class dBgS : public cBgS { public: dBgS() {} @@ -139,8 +151,45 @@ public: u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(¶m_0); } void DebugDrawPoly(dBgW_Base *param_1) {} fopAc_ac_c* GetActorPointer(cBgS_PolyInfo const& param_0) const { return cBgS::GetActorPointer(param_0); } - bool LineCross(cBgS_LinChk* i_linChk) { return ((cBgS*)this)->LineCross(i_linChk); } - f32 GroundCross(cBgS_GndChk* i_gndChk) { return (f32)((cBgS*)this)->GroundCross(i_gndChk); } + bool LineCross(cBgS_LinChk* i_linChk) { + #ifdef DEBUG + if (m_hio.ChkLineOff()) { + return false; + } + if (m_hio.ChkCheckCounter()) { + g_line_counter++; + } + if (m_hio.ChkLineTimer()) { + OSStartStopwatch(&s_line_sw); + } + bool rt = cBgS::LineCross(i_linChk); + if (m_hio.ChkLineTimer()) { + OSStopStopwatch(&s_line_sw); + OSDumpStopwatch(&s_line_sw); + } + return rt; + #else + return cBgS::LineCross(i_linChk); + #endif + } + f32 GroundCross(cBgS_GndChk* i_gndChk) { + #ifdef DEBUG + if (m_hio.ChkCheckCounter()) { + g_ground_counter++; + } + if (m_hio.ChkGroundCheckTimer()) { + OSStartStopwatch(&s_ground_sw); + } + f32 rt = cBgS::GroundCross(i_gndChk); + if (m_hio.ChkGroundCheckTimer()) { + OSStopStopwatch(&s_ground_sw); + OSDumpStopwatch(&s_ground_sw); + } + return rt; + #else + return cBgS::GroundCross(i_gndChk); + #endif + } void ChkDeleteActorRegist(fopAc_ac_c*); diff --git a/include/d/d_bg_s_movebg_actor.h b/include/d/d_bg_s_movebg_actor.h index af2757a13b..f419ec7e41 100644 --- a/include/d/d_bg_s_movebg_actor.h +++ b/include/d/d_bg_s_movebg_actor.h @@ -2,6 +2,7 @@ #define D_BG_D_BG_S_MOVEBG_ACTOR_H #include "f_op/f_op_actor.h" +#include "SSystem/SComponent/c_bg_s_poly_info.h" class dBgW; typedef void (*MoveBGActor_SetFunc)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 872097c77d..55ee845a30 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -13516,7 +13516,7 @@ BOOL daAlink_c::setItemActor() { if (checkBombItem(mEquipItem)) { if (checkHorseRide()) { - if (!dComIfGp_getHorseActor()->checkNoBombProc() && + if (dComIfGp_getHorseActor()->checkNoBombProc() && (mProcID != PROC_HORSE_TURN || !checkModeFlg(MODE_DISABLE_ITEMS))) { mEquipItem = fpcNm_ITEM_NONE; diff --git a/src/d/actor/d_a_alink_crawl.inc b/src/d/actor/d_a_alink_crawl.inc index 5a5ebd7880..dc7d4b5f8f 100644 --- a/src/d/actor/d_a_alink_crawl.inc +++ b/src/d/actor/d_a_alink_crawl.inc @@ -371,10 +371,11 @@ void daAlink_c::setCrawlMoveAngle() { } mLinkGndChk.SetPos(&sp20); + // Fakematch: // dBgS::GroundCross is implicitly inlined to cBgS::GroundCross, but for some // reason here that breaks the match. This is the only place in the code so // far (September 2025) where it causes issues. - sp2C.set(sp20.x - sp38.x, ((cBgS&)dComIfG_Bgsp()).GroundCross(&mLinkGndChk) - sp38.y, + sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp().cBgS::GroundCross(&mLinkGndChk) - sp38.y, sp20.z - sp38.z); if (cLib_distanceAngleS(sp2C.atan2sY_XZ(), shape_angle.x) > 0x800) { diff --git a/src/d/actor/d_a_b_bq.cpp b/src/d/actor/d_a_b_bq.cpp index b972f72a83..f8737b9570 100644 --- a/src/d/actor/d_a_b_bq.cpp +++ b/src/d/actor/d_a_b_bq.cpp @@ -1254,7 +1254,7 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEye.z = tentacle->current.pos.z + i_this->field_0x1298; i_this->mDemoCamCenter.x = tentacle->current.pos.x; - i_this->mDemoCamCenter.y = tentacle->current.pos.y; + i_this->mDemoCamCenter.y = tentacle->current.pos.y + ZREG_F(1); i_this->mDemoCamCenter.z = tentacle->current.pos.z; } else { spFC = tentacle->current.pos; @@ -1423,10 +1423,10 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEye = camera0->lookat.eye; i_this->mDemoCamCenter = camera0->lookat.center; - dComIfGp_getEvent().startCheckSkipEdge(i_this); + dComIfGp_getEvent().startCheckSkipEdge(a_this); // fallthrough case 11: - if (i_this->mDemoModeTimer == VREG_S(0) + 8) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(0) + 8)) { daPy_getPlayerActorClass()->changeDemoMode(0x19, 0, 0, 0); } @@ -1444,11 +1444,11 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEyeTarget.set(240.0f, 274.0f, 2075.0f); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); } spFC.set(0.0f, 0.0f, 1700.0f); @@ -1464,10 +1464,12 @@ static void demo_camera(b_bq_class* i_this) { spF0 = i_this->mDemoCamCenterTarget - i_this->mDemoCamCenter; f32 temp_f30 = spF0.abs(); - var_f31 = temp_f31 * (BREG_F(19) + 0.1f) * cM_ssin((temp_f30 / temp_f31) * (f32)0x8000); + f32 f28 = temp_f31 * (BREG_F(19) + 0.1f); + s16 sp0C = (temp_f30 / temp_f31) * (f32)0x8000; + var_f31 = f28 * cM_ssin(sp0C); } - if (i_this->mDemoModeTimer != VREG_S(8) + 320) { + if (i_this->mDemoModeTimer != (s16)(VREG_S(8) + 320)) { break; } @@ -1476,32 +1478,32 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamCenterTarget.set(76.0f, 204.0f, 1782.0f); i_this->mDemoCamEyeTarget.set(-41.0f, 261.0f, 2095.0f); - i_this->field_0x127c.x = std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); - i_this->field_0x127c.y = std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); - i_this->field_0x127c.z = std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + i_this->field_0x127c.x = fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + i_this->field_0x127c.y = fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + i_this->field_0x127c.z = fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); i_this->field_0x129c = 0.0f; i_this->mDemoMode = 12; i_this->mDemoModeTimer = 0; // fallthrough case 12: - if (i_this->mDemoModeTimer == 260) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(0) + 260)) { i_this->field_0x6f9 = 2; } cam_3d_morf(i_this, 0.1f); cLib_addCalc2(&i_this->field_0x129c, 0.005f, 1.0f, 0.00015f); - if (i_this->mDemoModeTimer == VREG_S(2) + 340) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(2) + 340)) { i_this->mDemoCamCenter = tentacle->current.pos; - i_this->mDemoCamCenter.y = 0.0f; + i_this->mDemoCamCenter.y = VREG_F(6) + 0.0f; i_this->mDemoCamEye.set(1394.0f, 313.0f, -300.0f); i_this->mDemoMode = 13; @@ -1537,43 +1539,43 @@ static void demo_camera(b_bq_class* i_this) { dComIfGp_getVibration().StopQuake(31); } - if (i_this->mDemoModeTimer == VREG_S(2) + 100) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(2) + 100)) { i_this->field_0x6f9 = 2; } - if (i_this->mDemoModeTimer == VREG_S(4) + 53) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(4) + 53)) { i_this->mColpatType = 15; } - if (i_this->mDemoModeTimer >= VREG_S(3) + 110) { + if (i_this->mDemoModeTimer >= (s16)(VREG_S(3) + 110)) { cLib_addCalc2(&i_this->mDemoCamCenter.x, tentacle->current.pos.x, 0.1f, - VREG_S(5) + 20.0f); + VREG_F(5) + 20.0f); if (tentacle->current.pos.y + 100.0f > 0.0f) { cLib_addCalc2(&i_this->mDemoCamCenter.y, tentacle->current.pos.y + 100.0f, 0.8f, - VREG_S(5) + 60.0f); + VREG_F(5) + 60.0f); } cLib_addCalc2(&i_this->mDemoCamCenter.z, tentacle->current.pos.z, 0.1f, - VREG_S(5) + 20.0f); + VREG_F(5) + 20.0f); - if (i_this->mDemoModeTimer == VREG_S(4) + 113) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(4) + 113)) { i_this->field_0x6f9 = 2; i_this->mColpatType = 1; } - if (i_this->mDemoModeTimer >= VREG_S(5) + 150) { - cLib_addCalc2(&i_this->mDemoCamEye.y, VREG_S(6) + 1413.0f, 0.1f, - i_this->field_0x129c * (VREG_S(7) + 40.0f)); + if (i_this->mDemoModeTimer >= (s16)(VREG_S(5) + 150)) { + cLib_addCalc2(&i_this->mDemoCamEye.y, VREG_F(6) + 1413.0f, 0.1f, + i_this->field_0x129c * (VREG_F(7) + 40.0f)); cLib_addCalc2(&i_this->field_0x129c, 1.0f, 1.0f, 0.02f); - if (i_this->mDemoModeTimer == VREG_S(6) + 200) { + if (i_this->mDemoModeTimer == (s16)(VREG_S(6) + 200)) { daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 2, 0); } } } - if (i_this->mDemoModeTimer != VREG_S(7) + 280) { + if (i_this->mDemoModeTimer != (s16)(VREG_S(7) + 280)) { break; } @@ -1582,16 +1584,16 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamCenterTarget.set(0.0f, 278.0f, 1252.0f); i_this->mDemoCamEyeTarget.set(0.0f, 86.0f, 2167.0f); - i_this->field_0x127c.x = std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); - i_this->field_0x127c.y = std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); - i_this->field_0x127c.z = std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + i_this->field_0x127c.x = fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + i_this->field_0x127c.y = fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + i_this->field_0x127c.z = fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); i_this->field_0x129c = 0.0f; i_this->mDemoMode = 14; @@ -1739,16 +1741,16 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamCenterTarget.set(-2243.0f, 1340.0f, 977.0f); i_this->mDemoCamEyeTarget.set(-1226.0f, 980.0f, 1350.0f); - i_this->field_0x127c.x = std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); - i_this->field_0x127c.y = std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); - i_this->field_0x127c.z = std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + i_this->field_0x127c.x = fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + i_this->field_0x127c.y = fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + i_this->field_0x127c.z = fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); i_this->field_0x129c = 0.0f; i_this->mDemoMode = 34; @@ -1759,7 +1761,7 @@ static void demo_camera(b_bq_class* i_this) { cam_3d_morf(i_this, 0.2f); cLib_addCalc2(&i_this->field_0x129c, 0.1f, 1.0f, 0.005f); - if (i_this->mDemoModeTimer > JREG_S(7) + 133) { + if (i_this->mDemoModeTimer > (s16)(JREG_S(7) + 133)) { cLib_addCalc2(&i_this->mDemoCamFovy, 30.0f, 0.5f, 4.0f); } } @@ -1783,7 +1785,7 @@ static void demo_camera(b_bq_class* i_this) { mDoMtx_stack_c::multVecZero(&sp114); cLib_addCalc2(&i_this->mDemoCamCenter.x, sp114.x, BREG_F(14) + 0.6f, 100.0f); - cLib_addCalc2(&i_this->mDemoCamCenter.y, sp114.y + 200.0f + BREG_F(12), BREG_F(14) + 0.6f, + cLib_addCalc2(&i_this->mDemoCamCenter.y, sp114.y + 200.0f + JREG_F(12), BREG_F(14) + 0.6f, 100.0f); cLib_addCalc2(&i_this->mDemoCamCenter.z, sp114.z, BREG_F(14) + 0.6f, 100.0f); @@ -1812,9 +1814,9 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEye.set(95.0f, 50.0f, 2800.0f); i_this->mDemoCamEyeTarget.set(72.0f, 52.0f, 2153.0f); - i_this->field_0x127c.x = std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); - i_this->field_0x127c.y = std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); - i_this->field_0x127c.z = std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + i_this->field_0x127c.x = fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + i_this->field_0x127c.y = fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + i_this->field_0x127c.z = fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.set(0.0f, 0.0f, 0.0f); i_this->field_0x129c = 0.0f; @@ -1854,12 +1856,12 @@ static void demo_camera(b_bq_class* i_this) { i_this->mColpatType = 4; } - if (i_this->mDemoModeTimer >= TREG_S(5) + 380) { + if (i_this->mDemoModeTimer >= (s16)(TREG_S(5) + 380)) { cam_3d_morf(i_this, 0.1f); cLib_addCalc2(&i_this->field_0x129c, 0.05f, 1.0f, 0.001f); } - if (i_this->mDemoModeTimer == TREG_S(6) + 430) { + if (i_this->mDemoModeTimer == (s16)(TREG_S(6) + 430)) { i_this->field_0x5c8 = 1; i_this->field_0x5cc = a_this->eyePos; } @@ -1870,7 +1872,7 @@ static void demo_camera(b_bq_class* i_this) { spFC.set(BREG_F(5) + -30.0f, 0.0f, BREG_F(6) + 1938.0f); } - daPy_getPlayerActorClass()->setPlayerPosAndAngle(&spFC, 0x8000, 0); + daPy_getPlayerActorClass()->setPlayerPosAndAngle(&spFC, BREG_S(5) + 0x8000, 0); if (i_this->field_0x5c8 != 0) { i_this->field_0x5cc.y += i_this->field_0x5d8; @@ -1890,7 +1892,7 @@ static void demo_camera(b_bq_class* i_this) { } else { i_this->field_0x5d8 = 0.0f; } - } else if (i_this->mDemoModeTimer >= TREG_S(6) + 435) { + } else if (i_this->mDemoModeTimer >= (s16)(TREG_S(6) + 435)) { i_this->field_0x5cc.z += BREG_F(9) + 6.0f; } @@ -1923,8 +1925,11 @@ static void demo_camera(b_bq_class* i_this) { fopAcM_GetRoomNo(a_this), &a_this->shape_angle, &sp120, 0.0f, 0.0f, -1); - fopAcM_delete(fopAcM_SearchByID(i_this->mTentacleIDs[0])); - fopAcM_delete(fopAcM_SearchByID(i_this->mTentacleIDs[1])); + fopAc_ac_c* sp28; + sp28 = fopAcM_SearchByID(i_this->mTentacleIDs[0]); + fopAcM_delete(sp28); + sp28 = fopAcM_SearchByID(i_this->mTentacleIDs[1]); + fopAcM_delete(sp28); } if (i_this->mDemoModeTimer == 535) { @@ -1968,18 +1973,18 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEyeTarget.set(1214.0f, 350.0f, 2696.0f); i_this->field_0x127c.x = - std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); i_this->field_0x127c.y = - std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); i_this->field_0x127c.z = - std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); i_this->field_0x129c = 0.0f; } else if (i_this->mDemoModeTimer < 140) { @@ -1988,18 +1993,18 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEyeTarget.set(23.0f, 108.0f, 2155.0f); i_this->field_0x127c.x = - std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); i_this->field_0x127c.y = - std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); i_this->field_0x127c.z = - std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); } cam_3d_morf(i_this, 0.1f); @@ -2037,18 +2042,18 @@ static void demo_camera(b_bq_class* i_this) { i_this->mDemoCamEyeTarget.set(953.0f, 997.0f, -36.0f); i_this->field_0x127c.x = - std::fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); + fabsf(i_this->mDemoCamEyeTarget.x - i_this->mDemoCamEye.x); i_this->field_0x127c.y = - std::fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); + fabsf(i_this->mDemoCamEyeTarget.y - i_this->mDemoCamEye.y); i_this->field_0x127c.z = - std::fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); + fabsf(i_this->mDemoCamEyeTarget.z - i_this->mDemoCamEye.z); i_this->field_0x1288.x = - std::fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); + fabsf(i_this->mDemoCamCenterTarget.x - i_this->mDemoCamCenter.x); i_this->field_0x1288.y = - std::fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); + fabsf(i_this->mDemoCamCenterTarget.y - i_this->mDemoCamCenter.y); i_this->field_0x1288.z = - std::fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); + fabsf(i_this->mDemoCamCenterTarget.z - i_this->mDemoCamCenter.z); cXyz pos(0.0f, 0.0f, 0.0f); for (int i = 0; i < 5; i++) { @@ -2123,7 +2128,7 @@ static void demo_camera(b_bq_class* i_this) { i_this->field_0x1151 = 1; dComIfGs_onStageBossEnemy(); - int sw = (fopAcM_GetParam(a_this) >> 0x10) & 0xFF; + int sw = (fopAcM_GetParam(a_this) & 0x00FF0000) >> 0x10; dComIfGs_offSwitch(sw, fopAcM_GetRoomNo(a_this)); fish_set(i_this); @@ -2136,7 +2141,7 @@ static void demo_camera(b_bq_class* i_this) { Z2GetAudioMgr()->subBgmStop(); OS_REPORT("//////////////B_BQ SKIP 11\n"); - int sw = (fopAcM_GetParam(a_this) >> 8) & 0xFF; + int sw = (fopAcM_GetParam(a_this) & 0x0000FF00) >> 8; dComIfGs_onSwitch(sw, fopAcM_GetRoomNo(a_this)); dStage_changeScene(1, 0.0f, 0, fopAcM_GetRoomNo(a_this), 0, -1); i_this->mDemoMode = 1000; diff --git a/src/d/actor/d_a_horse.cpp b/src/d/actor/d_a_horse.cpp index 0c23d7fb6d..797f4adfcc 100644 --- a/src/d/actor/d_a_horse.cpp +++ b/src/d/actor/d_a_horse.cpp @@ -50,12 +50,6 @@ #define ANM_HS_WALK_FAST 34 #define ANM_HS_WALK_SLOW 35 -#if DEBUG -#define HIO m_hio->mParameters -#else -#define HIO daHorse_hio_c0::m -#endif - static void strippedFunc() { extern void F(f32*); @@ -254,7 +248,7 @@ void daHorse_c::coHitCallbackBoarJump(fopAc_ac_c* i_hitActor) { { f32 sin_y = cM_ssin(current.angle.y); f32 cos_y = cM_scos(current.angle.y); - f32 jump_chk_dist = (HIO.boar_jump_horizontal + HIO.boar_jump_horizontal) + 100.0f; + f32 jump_chk_dist = (m_hio->m.boar_jump_horizontal + m_hio->m.boar_jump_horizontal) + 100.0f; cXyz start(current.pos); cXyz end(start.x + (jump_chk_dist * sin_y), start.y, start.z + (jump_chk_dist * cos_y)); @@ -293,8 +287,8 @@ void daHorse_c::coHitCallbackBoarJump(fopAc_ac_c* i_hitActor) { if (jump_chk_dist <= 0.0f) { onEndResetStateFlg0(ERFLG0_UNK_20); - field_0x1768 = HIO.boar_jump_horizontal; - field_0x176c = HIO.boar_jump_height + current.pos.y; + field_0x1768 = m_hio->m.boar_jump_horizontal; + field_0x176c = m_hio->m.boar_jump_height + current.pos.y; field_0x1770 = field_0x1768; } else if (m_procID == PROC_MOVE_e && speedF > 5.0f) { setBoarHit(this, 0); @@ -523,12 +517,11 @@ int daHorse_c::createHeap() { return 0; } - m_hio = new daHorse_hio_c(); + m_hio = new HORSE_HIO_CLASS(); if (m_hio == NULL) { return 0; } - #if DEBUG -#endif + ResTIMG* texImg = (ResTIMG*)dComIfG_getObjectRes(l_arcName, 0x2C); JUT_ASSERT(0x4B6, texImg != NULL); @@ -650,14 +643,14 @@ int daHorse_c::create() { if (daAlink_c::checkStageName("F_SP00") || daAlink_c::checkStageName("F_SP103") || daAlink_c::checkStageName("F_SP104") || daAlink_c::checkStageName("F_SP108") || daAlink_c::checkStageName("F_SP113")) { onStateFlg0(FLG0_UNK_2000); - m_normalMaxSpeedF = HIO.kakariko_max_speed; - m_lashAddSpeed = HIO.kakariko_add_lash_speed; + m_normalMaxSpeedF = m_hio->m.kakariko_max_speed; + m_lashAddSpeed = m_hio->m.kakariko_add_lash_speed; } else { - m_normalMaxSpeedF = HIO.max_speed; - m_lashAddSpeed = HIO.add_lash_speed; + m_normalMaxSpeedF = m_hio->m.max_speed; + m_lashAddSpeed = m_hio->m.add_lash_speed; } - field_0x16c2 = HIO.max_turn; + field_0x16c2 = m_hio->m.max_turn; m_flowID = shape_angle.z; if (m_flowID == 0) { m_flowID = 5000; @@ -687,7 +680,7 @@ int daHorse_c::create() { m_acch.Set(this, 3, m_acchcir); m_acch.SetWaterCheckOffset(500.0f); - field_0x1764 = HIO.walk_to_fastwalk_rate * m_normalMaxSpeedF; + field_0x1764 = m_hio->m.walk_to_fastwalk_rate * m_normalMaxSpeedF; m_lashMaxSpeedF = m_normalMaxSpeedF + m_lashAddSpeed; attention_info.distances[fopAc_attn_ETC_e] = 14; @@ -1195,7 +1188,7 @@ void daHorse_c::setDemoMoveData(u32* i_mode, cXyz const* i_pos) { } } - if ((0.5f * (speedF * speedF)) / HIO.stopping_deceleration > JMAFastSqrt(dist_xz2)) { + if ((0.5f * (speedF * speedF)) / m_hio->m.stopping_deceleration > JMAFastSqrt(dist_xz2)) { m_padStickValue = 0.0f; } s16 s = pos_vec.atan2sX_Z(); @@ -1407,7 +1400,7 @@ void daHorse_c::setStickData() { if (checkStateFlg0(daHorse_FLG0(FLG0_RODEO_MODE | FLG0_UNK_10000000))) { field_0x16c2 = 2000; } else { - field_0x16c2 = HIO.max_turn; + field_0x16c2 = m_hio->m.max_turn; } if (dComIfGp_event_runCheck()) { @@ -1469,11 +1462,11 @@ void daHorse_c::setMoveAnime(f32 i_morf) { f32 run_anm_speed, fastrun_anm_speed; if (checkStateFlg0(FLG0_UNK_2000)) { - run_anm_speed = HIO.kakariko_run_anm_speed; - fastrun_anm_speed = HIO.kakariko_fastrun_anm_speed; + run_anm_speed = m_hio->m.kakariko_run_anm_speed; + fastrun_anm_speed = m_hio->m.kakariko_fastrun_anm_speed; } else { - run_anm_speed = HIO.run_anm_speed; - fastrun_anm_speed = HIO.fast_run_anm_speed; + run_anm_speed = m_hio->m.run_anm_speed; + fastrun_anm_speed = m_hio->m.fast_run_anm_speed; } if (m_anmIdx[0] == ANM_HS_RUN_DASH && !m_frameCtrl[0].checkAnmEnd()) { @@ -1497,25 +1490,25 @@ void daHorse_c::setMoveAnime(f32 i_morf) { if (speedF >= 0.0f) { var_f31 = speedF * (1.0f / m_normalMaxSpeedF); } else { - var_f31 = speedF * (1.0f / HIO.max_backward_speed); + var_f31 = speedF * (1.0f / m_hio->m.max_backward_speed); } - if (var_f31 < HIO.walk_to_fastwalk_rate) { + if (var_f31 < m_hio->m.walk_to_fastwalk_rate) { if (checkStateFlg0(FLG0_UNK_2)) { offStateFlg0(FLG0_UNK_2); - i_morf = HIO.walk_run_interpolation; + i_morf = m_hio->m.walk_run_interpolation; } if (var_f31 < 0.0f && m_anmIdx[0] == ANM_HS_WALK_START && !m_frameCtrl[0].checkAnmEnd()) { return; } - if (var_f31 < -HIO.backward_idle_to_walk_rate) { - setDoubleAnime(1.0f, HIO.backwalk_anm_speed, HIO.backwalk_anm_speed, ANM_HS_BACK_WALK, ANM_HS_BACK_WALK, i_morf); + if (var_f31 < -m_hio->m.backward_idle_to_walk_rate) { + setDoubleAnime(1.0f, m_hio->m.backwalk_anm_speed, m_hio->m.backwalk_anm_speed, ANM_HS_BACK_WALK, ANM_HS_BACK_WALK, i_morf); } else if (var_f31 < 0.0f) { - ratio = 1.0f - ((var_f31 + HIO.backward_idle_to_walk_rate) / HIO.backward_idle_to_walk_rate); - setDoubleAnime(ratio, HIO.wait_anm_speed, HIO.backwalk_anm_speed, ANM_HS_WAIT_01, ANM_HS_BACK_WALK, i_morf); - } else if (var_f31 < HIO.wait_to_walk_rate) { + ratio = 1.0f - ((var_f31 + m_hio->m.backward_idle_to_walk_rate) / m_hio->m.backward_idle_to_walk_rate); + setDoubleAnime(ratio, m_hio->m.wait_anm_speed, m_hio->m.backwalk_anm_speed, ANM_HS_WAIT_01, ANM_HS_BACK_WALK, i_morf); + } else if (var_f31 < m_hio->m.wait_to_walk_rate) { int sp8 = cLib_distanceAngleS(m_padStickAngleY, shape_angle.y); if (checkWaitTurn() && checkInputOnR() && sp8 >= 0x800 && sp8 <= 0x6000) { f32 anm_speed = 1.0f; @@ -1564,19 +1557,19 @@ void daHorse_c::setMoveAnime(f32 i_morf) { setDoubleAnime(0.0f, anm_speed, anm_speed, anm_idx, anm_idx, i_morf); } else { - ratio = var_f31 / HIO.wait_to_walk_rate; + ratio = var_f31 / m_hio->m.wait_to_walk_rate; if (m_procID != PROC_WAIT_e && speedF > 0.05f) { - ratio = HIO.field_0xdc + (ratio * (1.0f - HIO.field_0xdc)); + ratio = m_hio->m.field_0xdc + (ratio * (1.0f - m_hio->m.field_0xdc)); } - setDoubleAnime(ratio, HIO.wait_anm_speed, HIO.walk_anm_speed, ANM_HS_WAIT_01, ANM_HS_WALK_SLOW, i_morf); + setDoubleAnime(ratio, m_hio->m.wait_anm_speed, m_hio->m.walk_anm_speed, ANM_HS_WAIT_01, ANM_HS_WALK_SLOW, i_morf); } } else { - ratio = (var_f31 - HIO.wait_to_walk_rate) / (HIO.walk_to_fastwalk_rate - HIO.wait_to_walk_rate); - setDoubleAnime(ratio, HIO.walk_anm_speed, HIO.fast_walk_anm_speed, ANM_HS_WALK_SLOW, ANM_HS_WALK_FAST, i_morf); + ratio = (var_f31 - m_hio->m.wait_to_walk_rate) / (m_hio->m.walk_to_fastwalk_rate - m_hio->m.wait_to_walk_rate); + setDoubleAnime(ratio, m_hio->m.walk_anm_speed, m_hio->m.fast_walk_anm_speed, ANM_HS_WALK_SLOW, ANM_HS_WALK_FAST, i_morf); } - } else if (var_f31 < HIO.fastwalk_to_run_rate) { + } else if (var_f31 < m_hio->m.fastwalk_to_run_rate) { if (checkStateFlg0(FLG0_UNK_2) == 0) { - setDoubleAnime(1.0f, HIO.fast_walk_anm_speed, HIO.fast_walk_anm_speed, ANM_HS_WALK_FAST, ANM_HS_WALK_FAST, i_morf); + setDoubleAnime(1.0f, m_hio->m.fast_walk_anm_speed, m_hio->m.fast_walk_anm_speed, ANM_HS_WALK_FAST, ANM_HS_WALK_FAST, i_morf); } else { setDoubleAnime(0.0f, run_anm_speed, run_anm_speed, ANM_HS_RUN_SLOW, ANM_HS_RUN_SLOW, i_morf); } @@ -1585,15 +1578,15 @@ void daHorse_c::setMoveAnime(f32 i_morf) { onStateFlg0(FLG0_UNK_2); if (m_lashAccelerationTime == 0) { onResetStateFlg0(RFLG0_UNK_4); - setSingleAnime(ANM_HS_RUN_DASH, HIO.dash_anm_speed, 0.0f, -1, 3.0f, 0); + setSingleAnime(ANM_HS_RUN_DASH, m_hio->m.dash_anm_speed, 0.0f, -1, 3.0f, 0); } return; } - if (var_f31 < HIO.run_to_fastrun_rate) { - ratio = 0.1f * ((var_f31 - HIO.fastwalk_to_run_rate) / (HIO.run_to_fastrun_rate - HIO.fastwalk_to_run_rate)); + if (var_f31 < m_hio->m.run_to_fastrun_rate) { + ratio = 0.1f * ((var_f31 - m_hio->m.fastwalk_to_run_rate) / (m_hio->m.run_to_fastrun_rate - m_hio->m.fastwalk_to_run_rate)); } else { - ratio = 0.1f + ((var_f31 - HIO.run_to_fastrun_rate) / ((1.0f + (m_lashAddSpeed / m_normalMaxSpeedF)) - HIO.run_to_fastrun_rate)); + ratio = 0.1f + ((var_f31 - m_hio->m.run_to_fastrun_rate) / ((1.0f + (m_lashAddSpeed / m_normalMaxSpeedF)) - m_hio->m.run_to_fastrun_rate)); if (ratio > 1.0f) { ratio = 1.0f; } @@ -1635,7 +1628,6 @@ void daHorse_c::setMoveAnime(f32 i_morf) { } } -// NONMATCHING - instruction order, some float regalloc, equivalent int daHorse_c::checkHorseNoMove(int param_0) { cXyz sp50; cXyz sp44; @@ -1657,12 +1649,12 @@ int daHorse_c::checkHorseNoMove(int param_0) { spA = field_0x1714; } - f32 sp28; - f32 var_f31; - f32 var_f30; f32 var_f29; f32 var_f28; + f32 sp28; f32 var_f27; + f32 var_f31; + f32 var_f30; if (param_0 != 0) { if (checkEndResetStateFlg0(ERFLG0_UNK_200) || (checkStateFlg0(FLG0_UNK_100000) && (m_procID == PROC_MOVE_e || m_procID == PROC_TURN_e || m_procID == PROC_STOP_e) && ((current.pos.z < -33500.0f && abs(shape_angle.y) > 0x4000) || (current.pos.z > -20500.0f && abs(shape_angle.y) < 0x4000)))) { @@ -1701,7 +1693,12 @@ int daHorse_c::checkHorseNoMove(int param_0) { m_linechk.Set(&start, &end, this); onStateFlg0(FLG0_UNK_100); - BOOL line_cross = dComIfG_Bgsp().LineCross(&m_linechk); + // Fakematch: Debug shows that dBgS::LineCross is called here, but the instruction order on + // retail only matches if cBgS::LineCross is called instead. + // An alternative way to match the instruction order is by changing dBgS::LineCross's return + // type to BOOL while keeping cBgS::LineCross's return type as bool, but that breaks other + // functions that call dBgS::LineCross. + BOOL line_cross = dComIfG_Bgsp().cBgS::LineCross(&m_linechk); offStateFlg0(FLG0_UNK_100); if (line_cross) { @@ -1749,7 +1746,7 @@ int daHorse_c::checkHorseNoMove(int param_0) { fopAcM_gc_c::getTriPla(&sp5C); s16 sp8 = cM_atan2s(sp5C.mNormal.absXZ(), sp5C.mNormal.y); - f32 sp14 = cM_deg2s(HIO.floor_angle_limit); + f32 sp14 = cM_deg2s(m_hio->m.floor_angle_limit); if (!checkStateFlg0(FLG0_UNK_1)) { for (int i = 0; i < m_scnChg_num; i++) { @@ -1781,7 +1778,7 @@ int daHorse_c::checkHorseNoMove(int param_0) { } if (fopAcM_wt_c::waterCheck(&sp50)) { - if (fopAcM_wt_c::getWaterY() - fopAcM_gc_c::getGroundY() > HIO.water_depth_limit) { + if (fopAcM_wt_c::getWaterY() - fopAcM_gc_c::getGroundY() > m_hio->m.water_depth_limit) { if (var_f30 <= 101.0f) { if (param_0 != 0) { onStateFlg0(FLG0_UNK_40000); @@ -1840,7 +1837,7 @@ int daHorse_c::setSpeedAndAngle() { if (var_r28 == 2 && m_procID == PROC_MOVE_e) { if (speedF >= 0.0f) { - if (speedF <= HIO.cliff_rise_rate) { + if (speedF <= m_hio->m.cliff_rise_rate) { onStateFlg0(FLG0_UNK_40000000); } return 4; @@ -1860,10 +1857,10 @@ int daHorse_c::setSpeedAndAngle() { if (var_r28 == 2) { speedF = 0.0f; } else if (var_r28 == 1) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); } } else if (m_lashAccelerationTime == 0 && speedF > m_normalMaxSpeedF) { - cLib_chaseF(&speedF, m_normalMaxSpeedF, HIO.stopping_deceleration); + cLib_chaseF(&speedF, m_normalMaxSpeedF, m_hio->m.stopping_deceleration); } if (checkStateFlg0(FLG0_UNK_200000)) { @@ -1899,9 +1896,9 @@ int daHorse_c::setSpeedAndAngle() { if (checkInputOnR()) { if (checkStateFlg0(FLG0_UNK_40000) && (m_anmIdx[2] != ANM_HS_WAIT_03 || m_frameCtrl[2].getFrame() >= 18.0f)) { if (var_r27 == 1) { - cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY + 0x8000, 5, field_0x16c2, HIO.min_turn); + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY + 0x8000, 5, field_0x16c2, m_hio->m.min_turn); } else { - cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, HIO.min_turn); + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, m_hio->m.min_turn); } if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { @@ -1916,10 +1913,10 @@ int daHorse_c::setSpeedAndAngle() { } if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { - cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2 * var_f28, HIO.min_turn * var_f28); + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2 * var_f28, m_hio->m.min_turn * var_f28); } } else { - cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, HIO.min_turn); + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, m_hio->m.min_turn); } if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { @@ -1931,7 +1928,7 @@ int daHorse_c::setSpeedAndAngle() { return 3; } - cLib_addCalcAngleS(¤t.angle.y, (m_padStickAngleY + 0x8000), 5, field_0x16c2, HIO.min_turn); + cLib_addCalcAngleS(¤t.angle.y, (m_padStickAngleY + 0x8000), 5, field_0x16c2, m_hio->m.min_turn); if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { shape_angle.y = current.angle.y; @@ -1941,7 +1938,7 @@ int daHorse_c::setSpeedAndAngle() { if (m_demoMode == 6) { if (var_r28 != 0 && speedF > 0.0f) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); } return 0; } @@ -1949,7 +1946,7 @@ int daHorse_c::setSpeedAndAngle() { if (checkStateFlg0(FLG0_UNK_1)) { dAttention_c* attention = dComIfGp_getAttention(); if (attention->GetLockonList(0) != NULL && attention->LockonTruth() && fopAcM_searchActorDistanceXZ2(this, attention->GetLockonList(0)->getActor()) > 1000000.0f) { - cLib_addCalcAngleS(¤t.angle.y, fopAcM_searchActorAngleY(this, attention->GetLockonList(0)->getActor()), 5, field_0x16c2, HIO.min_turn); + cLib_addCalcAngleS(¤t.angle.y, fopAcM_searchActorAngleY(this, attention->GetLockonList(0)->getActor()), 5, field_0x16c2, m_hio->m.min_turn); if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { shape_angle.y = current.angle.y; } @@ -2003,10 +2000,10 @@ int daHorse_c::setSpeedAndAngle() { } if (var_r28 != 0 && speedF > 0.0f) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); } else if (checkStateFlg0(FLG0_UNK_40000)) { if (m_anmIdx[2] != ANM_HS_WAIT_03 || m_frameCtrl[2].getFrame() >= 18.0f) { - cLib_chaseF(&speedF, -HIO.max_backward_speed, HIO.max_backward_acceleration); + cLib_chaseF(&speedF, -m_hio->m.max_backward_speed, m_hio->m.max_backward_acceleration); field_0x1704--; if (field_0x1704 == 0) { @@ -2019,36 +2016,36 @@ int daHorse_c::setSpeedAndAngle() { } } else if (checkInputOnR() && m_lashAccelerationTime == 0 && var_r27 == 1) { if (speedF > 0.0f) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); - } else if (!checkStateFlg0(FLG0_UNK_8) && (checkTurnInput() || checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) && checkTurnPlayerState() && speedF > (0.2f * -HIO.max_backward_speed)) { + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); + } else if (!checkStateFlg0(FLG0_UNK_8) && (checkTurnInput() || checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) && checkTurnPlayerState() && speedF > (0.2f * -m_hio->m.max_backward_speed)) { return 1; } else { int spC = checkHorseNoMove(0); if (spC == 0) { if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { - cLib_chaseF(&speedF, -HIO.max_backward_speed, HIO.max_backward_acceleration); + cLib_chaseF(&speedF, -m_hio->m.max_backward_speed, m_hio->m.max_backward_acceleration); } } else if (spC == 1) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); } else { speedF = 0.0f; } } } else if (m_cowHit != 0) { if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { - cLib_chaseF(&speedF, 0.5f * m_normalMaxSpeedF, HIO.lash_acceleration); + cLib_chaseF(&speedF, 0.5f * m_normalMaxSpeedF, m_hio->m.lash_acceleration); } } else { f32 var_f31; f32 var_f29; if (var_r28 != 0) { var_f31 = 0.0f; - var_f29 = HIO.deceleration; + var_f29 = m_hio->m.deceleration; } else if (m_lashAccelerationTime != 0 || (checkStateFlg0(FLG0_RODEO_MODE) && checkStateFlg0(FLG0_UNK_1)) || m_demoMode == 4) { var_f31 = m_lashMaxSpeedF; - var_f29 = HIO.lash_acceleration; - if (speedF < HIO.min_lash_speed) { - speedF = HIO.min_lash_speed; + var_f29 = m_hio->m.lash_acceleration; + if (speedF < m_hio->m.min_lash_speed) { + speedF = m_hio->m.min_lash_speed; } } else { if (player->checkHorseHangMode()) { @@ -2060,7 +2057,7 @@ int daHorse_c::setSpeedAndAngle() { var_f31 = var_f30 * (m_normalMaxSpeedF * (m_padStickValue * m_padStickValue)); } - var_f29 = HIO.acceleration; + var_f29 = m_hio->m.acceleration; if (checkStateFlg0(FLG0_UNK_4) && abs(field_0x16ea) < 0x4000) { var_f31 *= 1.0f - (0.8f * cM_scos(field_0x16ea)); } @@ -2077,20 +2074,20 @@ int daHorse_c::setSpeedAndAngle() { return 3; } - cLib_chaseF(&speedF, var_f31, HIO.stopping_deceleration); + cLib_chaseF(&speedF, var_f31, m_hio->m.stopping_deceleration); } else { if (dComIfGp_event_runCheck() || checkStateFlg0(FLG0_UNK_10000000)) { - var_f29 = HIO.stopping_deceleration; + var_f29 = m_hio->m.stopping_deceleration; } else { - var_f29 = HIO.deceleration; + var_f29 = m_hio->m.deceleration; } cLib_chaseF(&speedF, var_f31, var_f29); } } - if (checkInputOnR() && m_procID == PROC_MOVE_e && var_r28 == 0 && var_r27 == 0 && speedF > 0.05f && speedF < HIO.walk_min_speed) { - speedF = HIO.walk_min_speed; + if (checkInputOnR() && m_procID == PROC_MOVE_e && var_r28 == 0 && var_r27 == 0 && speedF > 0.05f && speedF < m_hio->m.walk_min_speed) { + speedF = m_hio->m.walk_min_speed; } return 0; @@ -2152,7 +2149,7 @@ void daHorse_c::setBodyPart() { void daHorse_c::setMatrix() { s16 var_r29 = 0; s16 var_r27 = 0; - f32 temp_f31 = m_normalMaxSpeedF * HIO.fastwalk_to_run_rate; + f32 temp_f31 = m_normalMaxSpeedF * m_hio->m.fastwalk_to_run_rate; if (m_procID == PROC_MOVE_e && speedF > temp_f31) { f32 var_f30; @@ -2227,7 +2224,6 @@ void daHorse_c::setDashEffect(u32* i_emitterID) { NULL, 0xFF, NULL, -1, 0, 0, 0); } -// NONMATCHING - regalloc void daHorse_c::setEffect() { JPABaseEmitter* sp50; int sp4C; @@ -3125,7 +3121,7 @@ BOOL daHorse_c::checkTurnAfterFastMove(f32 param_0) { } if (temp_r29 < 0x2000 && !checkHorseNoMove(1)) { - speedF = HIO.fastwalk_to_run_rate * m_normalMaxSpeedF; + speedF = m_hio->m.fastwalk_to_run_rate * m_normalMaxSpeedF; return procMoveInit(); } @@ -3205,18 +3201,18 @@ void daHorse_c::setLashCnt() { if (!checkStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH)) { m_lashCnt--; if (m_lashCnt == 0) { - m_lashRecoverTime = HIO.full_spur_recovery_time; + m_lashRecoverTime = m_hio->m.full_spur_recovery_time; } else { - m_lashRecoverTime = HIO.spur_recovery_time; + m_lashRecoverTime = m_hio->m.spur_recovery_time; } } else { offStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH); } if (checkStateFlg0(FLG0_UNK_2000)) { - m_lashAccelerationTime = HIO.kakariko_lash_acceleration_time; + m_lashAccelerationTime = m_hio->m.kakariko_lash_acceleration_time; } else { - m_lashAccelerationTime = HIO.lash_acceleration_time; + m_lashAccelerationTime = m_hio->m.lash_acceleration_time; } onResetStateFlg0(RFLG0_LASH_DASH_START); @@ -3242,7 +3238,7 @@ void daHorse_c::setLashCnt() { } else { m_lashCnt++; if (m_lashCnt < 6) { - m_lashRecoverTime = HIO.continuous_spur_recovery_time; + m_lashRecoverTime = m_hio->m.continuous_spur_recovery_time; } if (!dComIfGp_event_runCheck()) { @@ -3455,7 +3451,7 @@ int daHorse_c::procWait() { if (fabsf(speedF) >= 0.05f) { if (checkEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG)) { - speedF = HIO.fastwalk_to_run_rate * m_normalMaxSpeedF; + speedF = m_hio->m.fastwalk_to_run_rate * m_normalMaxSpeedF; } return procMoveInit(); } @@ -3465,7 +3461,7 @@ int daHorse_c::procWait() { return 1; } - f32 enemy_search_range = HIO.enemy_search_range; + f32 enemy_search_range = m_hio->m.enemy_search_range; if ((!checkInputOnR() || !checkStateFlg0(FLG0_UNK_1)) && fopAcIt_Judge((fopAcIt_JudgeFunc)daHorse_searchEnemy, &enemy_search_range) != NULL) { onResetStateFlg0(RFLG0_ENEMY_SEARCH); @@ -3593,12 +3589,12 @@ int daHorse_c::procMove() { } } - if (m_demoMode == 2 && speedF > (HIO.walk_to_fastwalk_rate * m_normalMaxSpeedF)) { - speedF = HIO.walk_to_fastwalk_rate * m_normalMaxSpeedF; - } else if (m_demoMode == 10 && speedF > (HIO.wait_to_walk_rate * m_normalMaxSpeedF)) { - speedF = HIO.wait_to_walk_rate * m_normalMaxSpeedF; - } else if (m_demoMode == 11 && speedF > (HIO.fastwalk_to_run_rate * m_normalMaxSpeedF)) { - speedF = HIO.fastwalk_to_run_rate * m_normalMaxSpeedF; + if (m_demoMode == 2 && speedF > (m_hio->m.walk_to_fastwalk_rate * m_normalMaxSpeedF)) { + speedF = m_hio->m.walk_to_fastwalk_rate * m_normalMaxSpeedF; + } else if (m_demoMode == 10 && speedF > (m_hio->m.wait_to_walk_rate * m_normalMaxSpeedF)) { + speedF = m_hio->m.wait_to_walk_rate * m_normalMaxSpeedF; + } else if (m_demoMode == 11 && speedF > (m_hio->m.fastwalk_to_run_rate * m_normalMaxSpeedF)) { + speedF = m_hio->m.fastwalk_to_run_rate * m_normalMaxSpeedF; } if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !m_acch.ChkGroundHit()) { @@ -3612,8 +3608,8 @@ int daHorse_c::procMove() { } else if (!checkStateFlg0(FLG0_UNK_10000000) && checkEndResetStateFlg0(daHorse_ERFLG0(ERFLG0_UNK_20 | ERFLG0_UNK_1))) { procJumpInit(0); } else if (var_r30 == 5) { - field_0x1768 = HIO.cliff_jump_horizontal; - field_0x176c = HIO.cliff_jump_vertical + current.pos.y; + field_0x1768 = m_hio->m.cliff_jump_horizontal; + field_0x176c = m_hio->m.cliff_jump_vertical + current.pos.y; field_0x1770 = field_0x1768; procJumpInit(1); } else if (var_r30 == 1) { @@ -3658,17 +3654,17 @@ int daHorse_c::procStopInit() { offStateFlg0(daHorse_FLG0(FLG0_TURN_CANCEL_KEEP | FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_2)); field_0x171a = 0; - if (m_demoMode == 8 || m_demoMode == 16 || m_demoMode == 14 || checkStateFlg0(FLG0_UNK_40000000) || (speedF * (1.0f / m_normalMaxSpeedF)) < HIO.run_to_fastrun_rate) { - setSingleAnime(ANM_HS_STOP_SLOW, HIO.faststop_anm_speed, 0.0f, -1, HIO.faststop_interpolation, 0); - field_0x177C = HIO.fast_stop_cancel_frame; + if (m_demoMode == 8 || m_demoMode == 16 || m_demoMode == 14 || checkStateFlg0(FLG0_UNK_40000000) || (speedF * (1.0f / m_normalMaxSpeedF)) < m_hio->m.run_to_fastrun_rate) { + setSingleAnime(ANM_HS_STOP_SLOW, m_hio->m.faststop_anm_speed, 0.0f, -1, m_hio->m.faststop_interpolation, 0); + field_0x177C = m_hio->m.fast_stop_cancel_frame; if (checkStateFlg0(FLG0_UNK_40000000)) { offStateFlg0(FLG0_UNK_40000000); field_0x171a = 1; } } else { - setSingleAnime(ANM_HS_STOP_STAND, HIO.faststop_stand_anm_speed, 0.0f, -1, HIO.faststop_interpolation, 0); - field_0x177C = HIO.faststop_stand_cancel_frame; + setSingleAnime(ANM_HS_STOP_STAND, m_hio->m.faststop_stand_anm_speed, 0.0f, -1, m_hio->m.faststop_interpolation, 0); + field_0x177C = m_hio->m.faststop_stand_cancel_frame; } field_0x16b7 = 1; @@ -3678,12 +3674,12 @@ int daHorse_c::procStopInit() { field_0x1774 = 2.7f; field_0x171c = 1; } else if (speedF <= m_normalMaxSpeedF) { - field_0x1774 = HIO.faststop_deceleration_slow; + field_0x1774 = m_hio->m.faststop_deceleration_slow; } else { - f32 var_f31 = (m_normalMaxSpeedF * m_normalMaxSpeedF) / (2.0f * HIO.faststop_deceleration_slow); + f32 var_f31 = (m_normalMaxSpeedF * m_normalMaxSpeedF) / (2.0f * m_hio->m.faststop_deceleration_slow); field_0x1774 = (speedF * speedF) / (2.f * var_f31); - if (field_0x1774 > HIO.faststop_deceleration) { - field_0x1774 = HIO.faststop_deceleration; + if (field_0x1774 > m_hio->m.faststop_deceleration) { + field_0x1774 = m_hio->m.faststop_deceleration; } } @@ -3799,11 +3795,11 @@ int daHorse_c::procTurnInit(int param_0) { m_procID = PROC_TURN_e; resetNeckAnime(); - setSingleAnime(ANM_HS_STAND, HIO.stand_anm_speed, 0.0f, -1, HIO.stand_interpolation, 0); + setSingleAnime(ANM_HS_STAND, m_hio->m.stand_anm_speed, 0.0f, -1, m_hio->m.stand_interpolation, 0); field_0x1774 = 52.0f; field_0x1778 = 0.09817477f; - field_0x177C = HIO.stand_cancel_frame; + field_0x177C = m_hio->m.stand_cancel_frame; field_0x1780 = 20.0f; field_0x1784 = 53.0f; speedF = 0.0f; @@ -3815,11 +3811,7 @@ int daHorse_c::procTurnInit(int param_0) { field_0x171e = shape_angle.y + 0x8000; if (!dComIfGp_event_runCheck() && !checkStateFlg0(FLG0_UNK_4000000)) { -#if PLATFORM_GCN || PLATFORM_WII - field_0x170a += 0x8000; -#else - field_0x170a += (s16)0x8000; -#endif + field_0x170a += (s16)(f32)0x8000; } else if (checkStateFlg0(FLG0_UNK_4000000)) { field_0x171e = shape_angle.y; } @@ -3997,9 +3989,9 @@ int daHorse_c::procJumpInit(int param_0) { field_0x1720 = param_0; if (param_0) { - setSingleAnime(ANM_HS_JUMP_START_CLIFT, HIO.cliff_jump_anm_speed, HIO.cliff_jump_start_frame, HIO.cliff_jump_end_frame, HIO.cliff_jump_interpolation, 0); + setSingleAnime(ANM_HS_JUMP_START_CLIFT, m_hio->m.cliff_jump_anm_speed, m_hio->m.cliff_jump_start_frame, m_hio->m.cliff_jump_end_frame, m_hio->m.cliff_jump_interpolation, 0); } else { - setSingleAnime(ANM_HS_JUMP_START, HIO.jump_anm_speed, HIO.jump_start_frame, HIO.jump_end_frame, HIO.jump_interpolation, 0); + setSingleAnime(ANM_HS_JUMP_START, m_hio->m.jump_anm_speed, m_hio->m.jump_start_frame, m_hio->m.jump_end_frame, m_hio->m.jump_interpolation, 0); } if (speedF < 0.75f * m_normalMaxSpeedF) { @@ -4012,14 +4004,14 @@ int daHorse_c::procJumpInit(int param_0) { speedF *= field_0x1768 / JMAFastSqrt((field_0x1768 * field_0x1768) + (temp_f31 * temp_f31)); field_0x171a = field_0x1768 / speedF; - if (field_0x171a < HIO.min_jump_time) { - field_0x171a = HIO.min_jump_time; + if (field_0x171a < m_hio->m.min_jump_time) { + field_0x171a = m_hio->m.min_jump_time; speedF = field_0x1768 / (f32)field_0x171a; } field_0x171e = field_0x1770 / speedF; - if (field_0x171e < HIO.min_jump_time) { - field_0x171e = HIO.min_jump_time; + if (field_0x171e < m_hio->m.min_jump_time) { + field_0x171e = m_hio->m.min_jump_time; } field_0x177C = (-2.0f * temp_f31) / (f32)(field_0x171e * field_0x171e); @@ -4048,11 +4040,11 @@ int daHorse_c::procJump() { if (m_anmIdx[0] == ANM_HS_JUMP_START_CLIFT) { if (m_frameCtrl[0].checkAnmEnd()) { - setSingleAnime(ANM_HS_JUMP_MIDDLE, HIO.cliff_air_anm_speed, HIO.cliff_air_start_frame, HIO.cliff_air_end_frame, HIO.cliff_air_interpolation, 0); + setSingleAnime(ANM_HS_JUMP_MIDDLE, m_hio->m.cliff_air_anm_speed, m_hio->m.cliff_air_start_frame, m_hio->m.cliff_air_end_frame, m_hio->m.cliff_air_interpolation, 0); } } else if (m_anmIdx[0] == ANM_HS_JUMP_START) { if (m_frameCtrl[0].checkAnmEnd()) { - int temp_r28 = (f32)field_0x171a - ((1.0f / HIO.jump_anm_speed) * (f32)(m_frameCtrl[0].getEnd() - m_frameCtrl[0].getStart())); + int temp_r28 = (f32)field_0x171a - ((1.0f / m_hio->m.jump_anm_speed) * (f32)(m_frameCtrl[0].getEnd() - m_frameCtrl[0].getStart())); if (temp_r28 <= 0) { temp_r28 += field_0x171e; gravity = field_0x177C; @@ -4060,14 +4052,14 @@ int daHorse_c::procJump() { if (temp_r28 <= 0) { setSingleAnime(ANM_HS_JUMP_END, 0.0f, 0.0f, -1, field_0x171e, 0); } else { - setSingleAnime(ANM_HS_JUMP_MIDDLE, (HIO.air_end_frame - 6.0f) / temp_r28, 6.0f, HIO.air_end_frame, HIO.air_interpolation, 0); + setSingleAnime(ANM_HS_JUMP_MIDDLE, (m_hio->m.air_end_frame - 6.0f) / temp_r28, 6.0f, m_hio->m.air_end_frame, m_hio->m.air_interpolation, 0); } } else { - setSingleAnime(ANM_HS_JUMP_MIDDLE, (6.0f - HIO.air_start_frame) / temp_r28, HIO.air_start_frame, 6, HIO.air_interpolation, 0); + setSingleAnime(ANM_HS_JUMP_MIDDLE, (6.0f - m_hio->m.air_start_frame) / temp_r28, m_hio->m.air_start_frame, 6, m_hio->m.air_interpolation, 0); } } } else if (m_anmIdx[0] == ANM_HS_JUMP_MIDDLE && field_0x1720 == 0 && m_frameCtrl[0].checkAnmEnd() && m_frameCtrl[0].getEnd() == 6) { - setSingleAnime(ANM_HS_JUMP_MIDDLE, (1.0f + (HIO.air_end_frame - 6.0f)) / field_0x171e, 7.0f, HIO.air_end_frame, -1.0f, 0); + setSingleAnime(ANM_HS_JUMP_MIDDLE, (1.0f + (m_hio->m.air_end_frame - 6.0f)) / field_0x171e, 7.0f, m_hio->m.air_end_frame, -1.0f, 0); gravity = field_0x177C; } @@ -4082,11 +4074,11 @@ int daHorse_c::procLandInit(f32 i_speedF, BOOL param_1) { dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f)); if (param_1) { - setSingleAnime(ANM_HS_JUMP_END, HIO.cliff_land_anm_speed, HIO.cliff_land_start_frame, HIO.cliff_land_end_frame, HIO.cliff_land_interpolation, 0); - field_0x177C = HIO.cliff_land_cancel_frame; + setSingleAnime(ANM_HS_JUMP_END, m_hio->m.cliff_land_anm_speed, m_hio->m.cliff_land_start_frame, m_hio->m.cliff_land_end_frame, m_hio->m.cliff_land_interpolation, 0); + field_0x177C = m_hio->m.cliff_land_cancel_frame; } else { - setSingleAnime(ANM_HS_JUMP_END, HIO.land_anm_speed, HIO.land_start_frame, HIO.land_end_frame, HIO.land_interpolation, 0); - field_0x177C = HIO.land_cancel_frame; + setSingleAnime(ANM_HS_JUMP_END, m_hio->m.land_anm_speed, m_hio->m.land_start_frame, m_hio->m.land_end_frame, m_hio->m.land_interpolation, 0); + field_0x177C = m_hio->m.land_cancel_frame; } speedF = i_speedF; @@ -4109,16 +4101,16 @@ int daHorse_c::procLand() { if (temp_r3 == 2) { speedF = 0.0f; } else if (temp_r3 != 0) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); } if (field_0x171a != 0) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); dComIfGp_evmng_cutEnd(m_demoStaffId); setMoveAnime(-1.0f); } else if (frame_ctrl->checkAnmEnd()) { if (m_demoMode == 7) { - cLib_chaseF(&speedF, 0.0f, HIO.stopping_deceleration); + cLib_chaseF(&speedF, 0.0f, m_hio->m.stopping_deceleration); dComIfGp_evmng_cutEnd(m_demoStaffId); setMoveAnime(3.0f); field_0x171a = 1; @@ -4137,7 +4129,7 @@ int daHorse_c::procLargeDamageInit() { m_procID = PROC_LARGE_DAMAGE_e; resetNeckAnime(); - setSingleAnime(ANM_HS_STAND, HIO.stand_anm_speed, 0.0f, -1, HIO.stand_interpolation, 0); + setSingleAnime(ANM_HS_STAND, m_hio->m.stand_anm_speed, 0.0f, -1, m_hio->m.stand_interpolation, 0); current.angle.y = m_cowHitAngle; speedF = 60.0f; @@ -4247,16 +4239,16 @@ int daHorse_c::execute() { daAlink_c* player_p = daAlink_getAlinkActorClass(); #if PLATFORM_SHIELD || PLATFORM_WII - l_autoUpHeight = HIO.m0D0; + l_autoUpHeight = m_hio->m.m0D0; m_acchcir[0].SetWall(l_autoUpHeight + 0.1f, 60.0f); if (checkStateFlg0(FLG0_UNK_2000)) { - m_normalMaxSpeedF = HIO.kakariko_max_speed; - m_lashAddSpeed = HIO.kakariko_add_lash_speed; + m_normalMaxSpeedF = m_hio->m.kakariko_max_speed; + m_lashAddSpeed = m_hio->m.kakariko_add_lash_speed; } else { - m_normalMaxSpeedF = HIO.max_speed; - m_lashAddSpeed = HIO.add_lash_speed; + m_normalMaxSpeedF = m_hio->m.max_speed; + m_lashAddSpeed = m_hio->m.add_lash_speed; } - field_0x1764 = HIO.walk_to_fastwalk_rate * m_normalMaxSpeedF; + field_0x1764 = m_hio->m.walk_to_fastwalk_rate * m_normalMaxSpeedF; m_lashMaxSpeedF = m_normalMaxSpeedF + m_lashAddSpeed; #endif @@ -4476,7 +4468,7 @@ int daHorse_c::execute() { if (!checkInputOnR() && fabsf(speedF) < 0.05f) { offStateFlg0(FLG0_UNK_8); - } else if (fabsf(speedF) > 0.2f * HIO.max_backward_speed || (m_anmIdx[0] == ANM_HS_WALK_START && m_frameCtrl[0].getFrame() > 2.0f)) { + } else if (fabsf(speedF) > 0.2f * m_hio->m.max_backward_speed || (m_anmIdx[0] == ANM_HS_WALK_START && m_frameCtrl[0].getFrame() > 2.0f)) { onStateFlg0(FLG0_UNK_8); } diff --git a/src/d/actor/d_a_npc_rafrel.cpp b/src/d/actor/d_a_npc_rafrel.cpp index 3e56d0f3a7..c9a1166a07 100644 --- a/src/d/actor/d_a_npc_rafrel.cpp +++ b/src/d/actor/d_a_npc_rafrel.cpp @@ -137,9 +137,6 @@ const daNpcRafrel_HIOParam daNpcRafrel_Param_c::m = { static char* l_myName = "Rafrel"; #if DEBUG -// Fixes Debug function order -#pragma nosyminline on - daNpcRafrel_HIO_c::daNpcRafrel_HIO_c() { m = daNpcRafrel_Param_c::m; } diff --git a/src/d/d_bg_s.cpp b/src/d/d_bg_s.cpp index 2f429b9b51..256f343ca3 100644 --- a/src/d/d_bg_s.cpp +++ b/src/d/d_bg_s.cpp @@ -116,7 +116,7 @@ bool cBgS::LineCross(cBgS_LinChk* p_line) { elm++; } - return p_line->ChkHit() ? true : false; + return p_line->ChkHit(); } f32 cBgS::GroundCross(cBgS_GndChk* p_gnd) { @@ -825,3 +825,9 @@ f32 dBgS_GetNY(cBgS_PolyInfo const& poly) { dComIfG_Bgsp().GetTriPla(poly, &pla); return pla.mNormal.y; } + +// TODO hack just to get the inlines to appear for debug +static void dummy(dBgS& i_bgs) { + i_bgs.LineCross(NULL); + i_bgs.GroundCross(NULL); +} From 4e4d89eab6a808b3df0fcb876bcfdc946e9f4a14 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Fri, 5 Dec 2025 13:52:18 -0500 Subject: [PATCH 16/18] d_a_mg_rod 100% (#2914) --- configure.py | 2 +- include/JSystem/JMath/JMath.h | 2 +- src/d/actor/d_a_mg_rod.cpp | 2 - src/d/d_jnt_col.cpp | 235 +++++++++++++++++----------------- 4 files changed, 120 insertions(+), 121 deletions(-) diff --git a/configure.py b/configure.py index e305f66ade..cb1fac63ab 100755 --- a/configure.py +++ b/configure.py @@ -1729,7 +1729,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_crod"), ActorRel(MatchingFor(ALL_GCN), "d_a_demo00"), ActorRel(MatchingFor(ALL_GCN), "d_a_disappear"), - ActorRel(Equivalent, "d_a_mg_rod"), # regalloc; weak func order; inlining issues + ActorRel(Equivalent, "d_a_mg_rod"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_midna"), ActorRel(Equivalent, "d_a_nbomb"), # weak func order ActorRel(MatchingFor(ALL_GCN), "d_a_obj_life_container"), diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index fd31a8dd25..f54e33d565 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -37,7 +37,7 @@ inline float __frsqrtes(register double f) { #endif } -inline f32 JMAFastSqrt(register f32 input) { +inline f32 JMAFastSqrt(register const f32 input) { #ifdef __MWERKS__ if (input > 0.0f) { register f32 out; diff --git a/src/d/actor/d_a_mg_rod.cpp b/src/d/actor/d_a_mg_rod.cpp index 601c833c87..c628420e3b 100644 --- a/src/d/actor/d_a_mg_rod.cpp +++ b/src/d/actor/d_a_mg_rod.cpp @@ -4422,8 +4422,6 @@ static void cam_3d_morf(dmg_rod_class* i_this, f32 i_scale) { cLib_addCalc2(&i_this->play_cam_eye.z, i_this->play_cam_eye_target.z, i_scale, i_this->play_cam_eye_speed.z * i_this->field_0x1410); } -// NONMATCHING - JMAFastSqrt needs to not be inlined -// tricks like FORCE_DONT_INLINE can stop inlining for most of the inlines in this function, but it's unclear how to stop just one inline static void play_camera(dmg_rod_class* i_this) { fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); diff --git a/src/d/d_jnt_col.cpp b/src/d/d_jnt_col.cpp index 0bda9f6962..7462c250fb 100644 --- a/src/d/d_jnt_col.cpp +++ b/src/d/d_jnt_col.cpp @@ -46,159 +46,160 @@ void dJntCol_c::setNowLine(cM3dGLin* i_line, cXyz const* param_1, csXyz const* p int dJntCol_c::searchNearPos(cM3dGLin const* param_1, cXyz const* param_2, cXyz* param_3, int param_4) const { - const dJntColData_c* pcVar12 = mData; - cXyz const* pcVar9 = param_2; - cM3dGSph acStack_a0; - cM3dGCyl acStack_b8; - cM3dGPla acStack_d0; - cXyz cStack_f8; - cXyz local_104; - cXyz cStack_110; - cXyz cStack_11c; - cXyz local_128; - cXyz cStack_134; - cM3dGLin acStack_ec; - cXyz cStack_140; - cXyz cStack_14c; - f32 dVar17; - f32 dVar18 = FLT_MAX; - int bVar5 = FALSE; - int rv = -1; - dVar17 = -10000000.0f; - for (int i = 0; i < field_0x8; i++, pcVar12++) { - if ((field_0xc & (1 << i)) == 0 && - (param_4 == 0 || pcVar12->mType == 3)) + const dJntColData_c* r30 = mData; + cM3dGSph sp210; + cM3dGCyl sp1F8; + cM3dGPla sp1E0; + cXyz sp1B8; + cXyz sp1AC; + cXyz sp1A0; + cXyz sp194; + cXyz sp188; + cXyz sp17C; + cM3dGLin sp1C4; + cXyz sp170; + cXyz sp164; + f32 f28; + f32 f27; + int sp1C; + int sp18; + int rv; + f28 = FLT_MAX; + sp18 = FALSE; + rv = -1; + f27 = -10000000.0f; + for (int i = 0; i < field_0x8; i++, r30++) { + if ((field_0xc & (1 << i)) == 0 && +#if DEBUG + r30->mJntNum >= 0 && +#endif + (param_4 == 0 || r30->mType == 3)) { - MtxP dst = mModel->getAnmMtx(pcVar12->mJntNum); - mDoMtx_stack_c::copy(dst); - mDoMtx_stack_c::multVec(pcVar12->field_0x8, &local_128); - if (pcVar12->field_0x0 == 0) { - acStack_a0.Set(local_128, pcVar12->field_0x4); - int iVar6 = cM3d_Cross_LinSph_CrossPos(acStack_a0, *param_1, &cStack_110, - &cStack_11c); - if (iVar6 != 0) { - if (iVar6 == 1) { - cStack_f8 = cStack_110; + mDoMtx_stack_c::copy(mModel->getAnmMtx(r30->mJntNum)); + mDoMtx_stack_c::multVec(r30->field_0x8, &sp188); + f32 cross; + f32 len; + f32 inprod; + if (r30->field_0x0 == 0) { + sp210.Set(sp188, r30->field_0x4); + int sp10 = cM3d_Cross_LinSph_CrossPos(sp210, *param_1, &sp1A0, + &sp194); + if (sp10 != 0) { + if (sp10 == 1) { + sp1B8 = sp1A0; + } else if (sp1A0.abs2(param_1->GetStart()) < sp194.abs2(param_1->GetStart())) { + sp1B8 = sp1A0; } else { - f32 dVar15 = cStack_11c.abs2(param_1->GetStart()); - f32 dVar16 = cStack_110.abs2(param_1->GetStart()); - if (dVar16 < dVar15) { - cStack_f8 = cStack_110; - } else { - cStack_f8 = cStack_11c; - } + sp1B8 = sp194; } } else { - local_104 = *param_2 - local_128; - local_104.normalizeZP(); - cStack_f8 = local_128 + local_104 * pcVar12->field_0x4; + sp1AC = *param_2 - sp188; + sp1AC.normalizeZP(); + sp1B8 = sp188 + sp1AC * r30->field_0x4; } - } else if (pcVar12->field_0x0 == 1) { - mDoMtx_stack_c::multVec(pcVar12->field_0x8 + 1, &cStack_134); - local_104 = cStack_134 - local_128; - int bVar13; - if (local_104.absXZ() > 0.01f) { - mDoMtx_stack_c::transS(local_128); - mDoMtx_stack_c::XrotM(cM_atan2s(-local_104.absXZ(), local_104.y)); - mDoMtx_stack_c::YrotM(cM_atan2s(-local_104.x, local_104.z)); - mDoMtx_stack_c::transM(-local_128.x, -local_128.y, -local_128.z); - mDoMtx_stack_c::multVec(&cStack_134, &cStack_11c); - mDoMtx_stack_c::multVec(¶m_1->GetStartP(), &cStack_140); - mDoMtx_stack_c::multVec(¶m_1->GetEndP(), &cStack_14c); - acStack_ec.SetStartEnd(cStack_140, cStack_14c); - bVar13 = 1; + } else if (r30->field_0x0 == 1) { + mDoMtx_stack_c::multVec(r30->field_0x8 + 1, &sp17C); + sp1AC = sp17C - sp188; + if (sp1AC.absXZ() > 0.01f) { + mDoMtx_stack_c::transS(sp188); + mDoMtx_stack_c::XrotM(cM_atan2s(-sp1AC.absXZ(), sp1AC.y)); + mDoMtx_stack_c::YrotM(cM_atan2s(-sp1AC.x, sp1AC.z)); + mDoMtx_stack_c::transM(-sp188.x, -sp188.y, -sp188.z); + mDoMtx_stack_c::multVec(&sp17C, &sp194); + mDoMtx_stack_c::multVec(¶m_1->GetStartP(), &sp170); + mDoMtx_stack_c::multVec(¶m_1->GetEndP(), &sp164); + sp1C4.SetStartEnd(sp170, sp164); + sp1C = 1; } else { - cStack_11c = cStack_134; - acStack_ec.SetStartEnd(param_1->GetStart(), param_1->GetEnd()); - bVar13 = 0; + sp194 = sp17C; + sp1C4.SetStartEnd(param_1->GetStart(), param_1->GetEnd()); + sp1C = 0; } - acStack_b8.Set(local_128, pcVar12->field_0x4, - cStack_11c.y - local_128.y); - if (cM3d_Cross_CylLin(&acStack_b8, &acStack_ec, &cStack_110, &cStack_11c)) { - if (bVar13) { + sp1F8.Set(sp188, r30->field_0x4, + sp194.y - sp188.y); + if (cM3d_Cross_CylLin(&sp1F8, &sp1C4, &sp1A0, &sp194)) { + if (sp1C) { mDoMtx_stack_c::inverse(); - mDoMtx_stack_c::multVec(&cStack_110, &cStack_f8); + mDoMtx_stack_c::multVec(&sp1A0, &sp1B8); } else { - cStack_f8 = cStack_110; + sp1B8 = sp1A0; } } else { - acStack_ec.SetStartEnd(local_128, cStack_134); - f32 dVar15 = cM3d_lineVsPosSuisenCross(&acStack_ec, param_2, - &cStack_110); - local_104 = *param_2 - cStack_110; - f32 dVar16 = local_104.abs2(); - if (dVar16 < 9.999999747378752e-05f) { - cStack_110 = acStack_ec.GetStart() - acStack_ec.GetEnd(); - cStack_11c = param_1->GetStart() - param_1->GetEnd(); - f32 inprod = cStack_110.inprod(cStack_11c); + sp1C4.SetStartEnd(sp188, sp17C); + cross = cM3d_lineVsPosSuisenCross(&sp1C4, param_2, &sp1A0); + sp1AC = *param_2 - sp1A0; + len = sp1AC.abs2(); + if (len < 0.0001f) { + sp1A0 = sp1C4.GetStart() - sp1C4.GetEnd(); + sp194 = param_1->GetStart() - param_1->GetEnd(); + inprod = sp1A0.inprod(sp194); if (inprod > 0.0f) { - cStack_f8 = acStack_ec.GetEnd(); + sp1B8 = sp1C4.GetEnd(); } else if (inprod < 0.0f) { - cStack_f8 = acStack_ec.GetStart(); - } else if (dVar15 < 0.5f) { - cStack_f8 = acStack_ec.GetStart(); + sp1B8 = sp1C4.GetStart(); + } else if (cross < 0.5f) { + sp1B8 = sp1C4.GetStart(); } else { - cStack_f8 = acStack_ec.GetEnd(); + sp1B8 = sp1C4.GetEnd(); } } else { - if (dVar15 >= 0.0f && dVar15 <= 1.0f) { - cStack_f8 = cStack_110 + (local_104 / JMAFastSqrt(dVar16)) * pcVar12->field_0x4; + if (cross >= 0.0f && cross <= 1.0f) { + sp1B8 = sp1A0 + (sp1AC / JMAFastSqrt(len)) * r30->field_0x4; } else { - cStack_110 = acStack_ec.GetStart() - acStack_ec.GetEnd(); - cStack_11c = param_1->GetStart() - param_1->GetEnd(); - f32 dVar14 = cStack_110.inprod(cStack_11c); - if (dVar14 > 0.0f) { - cStack_110 = acStack_ec.GetEnd(); + sp1A0 = sp1C4.GetStart() - sp1C4.GetEnd(); + sp194 = param_1->GetStart() - param_1->GetEnd(); + inprod = sp1A0.inprod(sp194); + if (inprod > 0.0f) { + sp1A0 = sp1C4.GetEnd(); } else { - if (dVar14 < 0.0f) { - cStack_110 = acStack_ec.GetStart(); + if (inprod < 0.0f) { + sp1A0 = sp1C4.GetStart(); } else { - if (dVar15 < 0.5f) { - cStack_110 = acStack_ec.GetStart(); + if (cross < 0.5f) { + sp1A0 = sp1C4.GetStart(); } else { - cStack_110 = acStack_ec.GetEnd(); + sp1A0 = sp1C4.GetEnd(); } } } - cStack_f8 = cStack_110 + (local_104 / JMAFastSqrt(dVar16)) * pcVar12->field_0x4; + sp1B8 = sp1A0 + (sp1AC / JMAFastSqrt(len)) * r30->field_0x4; } } - } } else { - mDoMtx_stack_c::multVecSR(pcVar12->field_0x8 + 1, &local_104); - acStack_d0.SetupNP0(local_104, local_128); - if (cM3d_Cross_LinPla(param_1, &acStack_d0, &cStack_f8, true, true)) { - if (!(local_128.abs(cStack_f8) < pcVar12->field_0x4)) { - local_104 = cStack_f8 - local_128; - local_104.normalizeZP(); - cStack_f8 = local_128 + local_104 * pcVar12->field_0x4; + mDoMtx_stack_c::multVecSR(r30->field_0x8 + 1, &sp1AC); + sp1E0.SetupNP0(sp1AC, sp188); + if (cM3d_Cross_LinPla(param_1, &sp1E0, &sp1B8, true, true)) { + if (!(sp188.abs(sp1B8) < r30->field_0x4)) { + sp1AC = sp1B8 - sp188; + sp1AC.normalizeZP(); + sp1B8 = sp188 + sp1AC * r30->field_0x4; } } else { - if (acStack_d0.crossInfLin(*param_2, param_1->GetEnd(), cStack_f8)) { - local_104 = cStack_f8 - local_128; - local_104.normalizeZP(); - cStack_f8 = local_128 + local_104 * pcVar12->field_0x4; + if (sp1E0.crossInfLin(*param_2, param_1->GetEnd(), sp1B8)) { + sp1AC = sp1B8 - sp188; + sp1AC.normalizeZP(); + sp1B8 = sp188 + sp1AC * r30->field_0x4; } else { - f32 pla = cM3d_SignedLenPlaAndPos(&acStack_d0, param_2); - local_104.normalizeZP(); - cStack_f8 = *param_2 - local_104 * pla; + len = cM3d_SignedLenPlaAndPos(&sp1E0, param_2); + sp1AC.normalizeZP(); + sp1B8 = *param_2 - sp1AC * len; } } } - f32 cross = cM3d_lineVsPosSuisenCross(param_1, &cStack_f8, &cStack_110); - f32 dVar16 = cStack_f8.abs2(cStack_110); - if (dVar16 < 9.999999747378752e-05f) { - if (!bVar5 || dVar17 < cross) { - dVar17 = cross; - *param_3 = cStack_f8; + cross = cM3d_lineVsPosSuisenCross(param_1, &sp1B8, &sp1A0); + len = sp1B8.abs2(sp1A0); + if (len < 9.999999747378752e-05f) { + if (!sp18 || f27 < cross) { + f27 = cross; + *param_3 = sp1B8; rv = i; - bVar5 = TRUE; + sp18 = TRUE; } } else { - if (!bVar5 && (dVar18 >= dVar16)) { - dVar18 = dVar16; - *param_3 = cStack_f8; + if (!sp18 && (f28 >= len)) { + f28 = len; + *param_3 = sp1B8; rv = i; } } From e6b1f3a4f2ffd7403d4949d0875f7827cd2846f2 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Fri, 5 Dec 2025 21:37:17 -0500 Subject: [PATCH 17/18] d_a_e_mk debug work + documentation (#2913) * initial work * documentation --- include/d/actor/d_a_e_mk.h | 159 +- include/d/actor/d_a_e_mk_bo.h | 5 +- src/d/actor/d_a_e_mk.cpp | 3257 +++++++++++++++++---------------- src/d/actor/d_a_e_mk_bo.cpp | 98 +- 4 files changed, 1807 insertions(+), 1712 deletions(-) diff --git a/include/d/actor/d_a_e_mk.h b/include/d/actor/d_a_e_mk.h index 9bdb6a0b68..f9c5c2abd7 100644 --- a/include/d/actor/d_a_e_mk.h +++ b/include/d/actor/d_a_e_mk.h @@ -15,7 +15,8 @@ * * @details * - */ +*/ + class e_mk_class { public: enum e_mk_ACTION { @@ -30,98 +31,102 @@ public: ACT_R04_DEMO = 35, }; - /* 0x000 */ fopEn_enemy_c enemy; - /* 0x5AC */ request_of_phase_process_class mPhase; - /* 0x5B4 */ s16 mMode; - /* 0x5B6 */ u8 mParam; - /* 0x5B7 */ u8 field_0x5b7; - /* 0x5B8 */ cXyz field_0x5b8; + enum Demo_Mode { + /* 0x0 */ DEMO_MODE_NONE, + /* 0x1 */ DEMO_MODE_START, + /* 0x2 */ DEMO_MODE_END, + /* 0x3 */ DEMO_MODE_R04, + /* 0x4 */ DEMO_MODE_BOHIT, + /* 0xA */ DEMO_MODE_FINISH = 0xA, + }; + + /* 0x000 */ fopEn_enemy_c actor; + /* 0x5AC */ request_of_phase_process_class phase; + /* 0x5B4 */ s16 mode; + /* 0x5B6 */ u8 arg0; + /* 0x5B8 */ cXyz posTarget; /* 0x5C4 */ u8 field_0x5c4[0x5c8 - 0x5c4]; - /* 0x5C8 */ mDoExt_McaMorfSO* mpModelMorf; - /* 0x5CC */ int mAnm; - /* 0x5D0 */ mDoExt_btpAnm* mBtp; + /* 0x5C8 */ mDoExt_McaMorfSO* anmP; + /* 0x5CC */ int anmNo; + /* 0x5D0 */ mDoExt_btpAnm* btpP; /* 0x5D4 */ s16 field_0x5d4; - /* 0x5D8 */ f32 field_0x5d8; - /* 0x5DC */ mDoExt_McaMorf* mpCrownModelMorf; - /* 0x5E0 */ s8 field_0x5e0; - /* 0x5E4 */ cXyz field_0x5e4; - /* 0x5F0 */ csXyz field_0x5f0; - /* 0x5F6 */ u8 field_0x5f6[0x5fc - 0x5f6]; + /* 0x5D8 */ f32 btpFrame; + /* 0x5DC */ mDoExt_McaMorf* crownAnmP; + /* 0x5E0 */ s8 unkFlag1; + /* 0x5E4 */ cXyz crownPos; + /* 0x5F0 */ csXyz unkRotation; + /* 0x5F6 */ csXyz field_0x5f6; /* 0x5FC */ f32 field_0x5fc; /* 0x600 */ f32 field_0x600; /* 0x604 */ f32 field_0x604; - /* 0x608 */ J3DModel* mpBoomerangModel; - /* 0x60C */ s8 field_0x60c; - /* 0x60D */ s8 field_0x60d; - /* 0x60E */ s8 field_0x60e; - /* 0x60F */ u8 field_0x60f; - /* 0x610 */ Z2CreatureEnemy mSound; + /* 0x608 */ J3DModel* boomerangModelP; + /* 0x60C */ s8 crownStatus; + /* 0x60D */ s8 boomerangStatus; + /* 0x60E */ s8 btpFrameFlag; + /* 0x610 */ Z2CreatureEnemy sound; /* 0x6B4 */ s16 field_0x6b4; - /* 0x6B6 */ s16 mAction; - /* 0x6B8 */ f32 mDistToPlayer; - /* 0x6BC */ s16 mAngleToPlayer; - /* 0x6BE */ s8 field_0x6be; - /* 0x6BF */ u8 field_0x6bf; - /* 0x6C0 */ cXyz field_0x6c0; - /* 0x6CC */ cXyz field_0x6cc; - /* 0x6D8 */ f32 field_0x6d8; - /* 0x6DC */ cXyz field_0x6dc; - /* 0x6E8 */ daPillar_c* mPillar; - /* 0x6EC */ daPillar_c* mHasira; - /* 0x6F0 */ u32 mShadowKey1; - /* 0x6F4 */ u32 mShadowKey2; - /* 0x6F8 */ s8 field_0x6f8; - /* 0x6F9 */ u8 field_0x6f9; - /* 0x6FA */ s16 field_0x6fa; - /* 0x6FC */ s16 field_0x6fc[4]; - /* 0x704 */ s16 field_0x704; - /* 0x706 */ s8 field_0x706; - /* 0x707 */ s8 field_0x707; - /* 0x708 */ fpc_ProcID field_0x708; - /* 0x70C */ e_db_class* field_0x70c; - /* 0x710 */ fpc_ProcID mBabaChildID; - /* 0x714 */ fpc_ProcID mBabaChildID2; - /* 0x718 */ s8 field_0x718; - /* 0x719 */ s8 field_0x719; - /* 0x71A */ s8 field_0x71a; - /* 0x71B */ s8 field_0x71b; - /* 0x71C */ s8 field_0x71c; - /* 0x71D */ s8 field_0x71d; - /* 0x71E */ s8 field_0x71e; - /* 0x71F */ u8 field_0x71f; - /* 0x720 */ dBgS_AcchCir mAcchCir; - /* 0x760 */ dBgS_ObjAcch mAcch; - /* 0x938 */ dCcU_AtInfo mAtInfo; - /* 0x95C */ dCcD_Stts field_0x95c; - /* 0x998 */ dCcD_Sph field_0x998; - /* 0xAD0 */ dCcD_Sph field_0xad0; + /* 0x6B6 */ s16 action; + /* 0x6B8 */ f32 distToPl; + /* 0x6BC */ s16 angleToPl; + /* 0x6BE */ s8 unkFlag2; + /* 0x6C0 */ cXyz prevPos; + /* 0x6CC */ cXyz prevPosTarget; + /* 0x6D8 */ f32 PosYTransOffset; + /* 0x6DC */ cXyz posTargetStep; + /* 0x6E8 */ daPillar_c* prevHasira; + /* 0x6EC */ daPillar_c* hasira; + /* 0x6F0 */ u32 shadowKey1; + /* 0x6F4 */ u32 shadowKey2; + /* 0x6F8 */ s8 unkFlag3; + /* 0x6FA */ s16 unkCounter1; + /* 0x6FC */ s16 timer[4]; + /* 0x704 */ s16 invulnerabilityTimer; + /* 0x706 */ s8 tubaTimer; + /* 0x707 */ s8 unkFlag4; + /* 0x708 */ fpc_ProcID boomerangId; + /* 0x70C */ e_db_class* db; + /* 0x710 */ fpc_ProcID dbId1; + /* 0x714 */ fpc_ProcID dbId2; + /* 0x718 */ s8 unkFlag5; + /* 0x719 */ s8 unkCounter2; + /* 0x71A */ s8 unkTimer1; + /* 0x71B */ s8 setSmokeFlag; + /* 0x71C */ s8 unkCounter3; + /* 0x71D */ s8 firstHasiraFlag; + /* 0x71E */ s8 demoHasiraFlag; + /* 0x720 */ dBgS_AcchCir acchcir; + /* 0x760 */ dBgS_ObjAcch acch; + /* 0x938 */ dCcU_AtInfo atInfo; + /* 0x95C */ dCcD_Stts stts; + /* 0x998 */ dCcD_Sph sph; + /* 0xAD0 */ dCcD_Sph tgSph; /* 0xC08 */ u32 field_0xc08; /* 0xC0C */ u32 field_0xc0c; /* 0xC10 */ u32 field_0xc10; /* 0xC14 */ u32 field_0xc14; - /* 0xC18 */ u32 field_0xc18[2]; - /* 0xC20 */ u32 field_0xc20[4]; - /* 0xC30 */ s16 field_0xc30; - /* 0xC32 */ s16 mDemoMode; - /* 0xC34 */ s16 mDemoCamTimer; - /* 0xC38 */ cXyz mCamEye; - /* 0xC44 */ cXyz mCamCenter; - /* 0xC50 */ cXyz field_0xc50; - /* 0xC5C */ cXyz field_0xc5c; - /* 0xC68 */ cXyz field_0xc68; - /* 0xC74 */ cXyz field_0xc74; - /* 0xC80 */ f32 mDemoCamFovy; - /* 0xC84 */ f32 field_0xc84; - /* 0xC88 */ f32 field_0xc88; + /* 0xC18 */ u32 boEno1Prtcls[2]; + /* 0xC20 */ u32 boEno0Prtcls[4]; + /* 0xC30 */ s16 demoMode; + /* 0xC32 */ s16 demoSubMode; + /* 0xC34 */ s16 demoCamCounter; + /* 0xC38 */ cXyz camEye; + /* 0xC44 */ cXyz camCenter; + /* 0xC50 */ cXyz camEyeTarget; + /* 0xC5C */ cXyz camCenterTarget; + /* 0xC68 */ cXyz distToCamEyeTarget; + /* 0xC74 */ cXyz distToCamCenterTarget; + /* 0xC80 */ f32 demoCamFovy; + /* 0xC84 */ f32 camStepScale1; + /* 0xC88 */ f32 camStepScale2; /* 0xC8C */ f32 field_0xc8c; /* 0xC90 */ f32 field_0xc90; /* 0xC94 */ u8 field_0xc94[0xc98 - 0xc94]; /* 0xC98 */ f32 field_0xc98; /* 0xC9C */ f32 field_0xc9c; - /* 0xCA0 */ s16 field_0xca0; - /* 0xCA4 */ dMsgFlow_c mMsgFlow; + /* 0xCA0 */ s16 prevPlShapeAngle; + /* 0xCA4 */ dMsgFlow_c msgFlow; /* 0xCF0 */ u8 field_0xcf0[0xcf5 - 0xcf0]; - /* 0xCF5 */ u8 field_0xcf5; + /* 0xCF5 */ u8 hioInit; }; STATIC_ASSERT(sizeof(e_mk_class) == 0xcf8); diff --git a/include/d/actor/d_a_e_mk_bo.h b/include/d/actor/d_a_e_mk_bo.h index b532df2e23..b53fe1c904 100644 --- a/include/d/actor/d_a_e_mk_bo.h +++ b/include/d/actor/d_a_e_mk_bo.h @@ -12,7 +12,8 @@ * * @details * - */ +*/ + class e_mk_bo_class { public: /* 0x000 */ fopEn_enemy_c enemy; @@ -21,7 +22,7 @@ public: /* 0x5B8 */ Z2SoundObjSimple sound; /* 0x5D8 */ s16 counter; /* 0x5DA */ s16 action; - /* 0x5DC */ s16 field_0x5dc; + /* 0x5DC */ s16 mode; /* 0x5E0 */ cXyz field_0x5e0; /* 0x5EC */ s16 field_0x5ec; /* 0x5EE */ s16 field_0x5ee; diff --git a/src/d/actor/d_a_e_mk.cpp b/src/d/actor/d_a_e_mk.cpp index 0abd2cd7c1..4f2b71e450 100644 --- a/src/d/actor/d_a_e_mk.cpp +++ b/src/d/actor/d_a_e_mk.cpp @@ -6,11 +6,11 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_e_mk.h" +#include "..\assets\GZ2E01\res\Object\E_mk.h" #include "d/d_cc_d.h" #include "d/d_com_inf_game.h" #include "d/actor/d_a_obj_pillar.h" #include "d/actor/d_a_e_db.h" -#include "d/actor/d_a_e_db_leaf.h" #include "d/actor/d_a_player.h" #include "d/d_s_play.h" #include "d/actor/d_a_npc_ks.h" @@ -22,87 +22,107 @@ class daE_MK_HIO_c : public JORReflexible { public: - daE_MK_HIO_c(); virtual ~daE_MK_HIO_c() {} + daE_MK_HIO_c(); void genMessage(JORMContext*); - /* 0x04 */ s8 field_0x4; - /* 0x08 */ f32 mSize; - /* 0x0C */ f32 mBoomerangRatio; - /* 0x10 */ f32 mPlayerThrowDistMax; - /* 0x14 */ u8 mHaltAction; - /* 0x18 */ Vec mCrownPosAdjust; + /* 0x04 */ s8 no; + /* 0x08 */ f32 size; + /* 0x0C */ f32 boomerang_ratio; + /* 0x10 */ f32 pl_throw_dist_max; + /* 0x14 */ u8 halt_action; + /* 0x18 */ Vec crown_pos_adjust; }; daE_MK_HIO_c::daE_MK_HIO_c() { - field_0x4 = -1; - mSize = 1.3f; - mBoomerangRatio = 1.0f; - mPlayerThrowDistMax = 1800.0f; - mHaltAction = 0; - mCrownPosAdjust.x = 0.0f; - mCrownPosAdjust.y = 0.0f; - mCrownPosAdjust.z = 0.0f; + no = -1; + size = 1.3f; + boomerang_ratio = 1.0f; + pl_throw_dist_max = 1800.0f; + halt_action = 0; + crown_pos_adjust.x = 0.0f; + crown_pos_adjust.y = 0.0f; + crown_pos_adjust.z = 0.0f; } +#if DEBUG +void daE_MK_HIO_c::genMessage(JORMContext* ctx) { + ctx->genLabel(" ブーメラン猿", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("基本サイズ", &size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("ブーメラン比率", &boomerang_ratio, 0.0f, 2.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("PL投max距離", &pl_throw_dist_max, 0.0f, 4000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genCheckBox("動作停止", &halt_action, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genLabel("王冠位置補正", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider(" X", &crown_pos_adjust.x, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider(" Y", &crown_pos_adjust.y, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider(" Z", &crown_pos_adjust.z, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} +#endif + static void anm_init(e_mk_class* i_this, int i_index, f32 i_morf, u8 i_attr, f32 i_rate) { - i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index), + i_this->anmP->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index), i_attr, i_morf, i_rate, 0.0f, -1.0f); - i_this->mAnm = i_index; + i_this->anmNo = i_index; } static void ok_anm_init(e_mk_class* i_this, int i_index, f32 i_morf, u8 i_mode, f32 i_speed) { - i_this->mpCrownModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index), + i_this->crownAnmP->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index), i_mode, i_morf, i_speed, 0.0f, -1.0f, NULL); } static int daE_MK_Draw(e_mk_class* i_this) { - J3DModel* model_p = i_this->mpModelMorf->getModel(); - g_env_light.settingTevStruct(0, &i_this->enemy.current.pos, &i_this->enemy.tevStr); - g_env_light.setLightTevColorType_MAJI(model_p, &i_this->enemy.tevStr); + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + J3DModel* model_p = i_this->anmP->getModel(); + g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr); + g_env_light.setLightTevColorType_MAJI(model_p, &actor->tevStr); J3DModelData* i_modelData = model_p->getModelData(); - i_this->mBtp->entry(i_modelData); - i_this->mpModelMorf->entryDL(); + i_this->btpP->entry(i_modelData); + i_this->anmP->entryDL(); - cXyz sp38; - if (i_this->field_0x6f8 != 0) { - sp38.set(i_this->enemy.current.pos.x, i_this->enemy.current.pos.y + 50.0f, i_this->enemy.current.pos.z); - i_this->mShadowKey1 = dComIfGd_setShadow(i_this->mShadowKey1, 1, model_p, &sp38, - 1200.0f, 0.0f, i_this->enemy.current.pos.y, - i_this->mAcch.GetGroundH(), i_this->mAcch.m_gnd, - &i_this->enemy.tevStr, 0, 1.0f, + cXyz pos; + if (i_this->unkFlag3 != 0) { + pos.set(actor->current.pos.x, actor->current.pos.y + 50.0f + BREG_F(18), actor->current.pos.z); + i_this->shadowKey1 = dComIfGd_setShadow(i_this->shadowKey1, 1, model_p, &pos, + BREG_F(19) + 1200.0f, 0.0f, actor->current.pos.y, + i_this->acch.GetGroundH(), i_this->acch.m_gnd, + &i_this->actor.tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); } - if (i_this->field_0x60c != 0) { - model_p = i_this->mpCrownModelMorf->getModel(); - g_env_light.setLightTevColorType_MAJI(model_p, &i_this->enemy.tevStr); - i_this->mpCrownModelMorf->entryDL(); - if (i_this->field_0x5e0 != 0) { - sp38.set(i_this->field_0x5e4.x, i_this->enemy.current.pos.y + 50.0f, i_this->field_0x5e4.z); - i_this->mShadowKey2 = dComIfGd_setShadow(i_this->mShadowKey2, 1, i_this->mpCrownModelMorf->getModel(), - &sp38, 500.0f, 0.0f, i_this->enemy.current.pos.y, - i_this->mAcch.GetGroundH(), i_this->mAcch.m_gnd, - &i_this->enemy.tevStr, 0, 1.0f, + if (i_this->crownStatus != 0) { + model_p = i_this->crownAnmP->getModel(); + g_env_light.setLightTevColorType_MAJI(model_p, &actor->tevStr); + i_this->crownAnmP->entryDL(); + if (i_this->unkFlag1 != 0) { + pos.set(i_this->crownPos.x, actor->current.pos.y + 50.0f + BREG_F(18), i_this->crownPos.z); + i_this->shadowKey2 = dComIfGd_setShadow(i_this->shadowKey2, 1, i_this->crownAnmP->getModel(), + &pos, BREG_F(19) + 500.0f, 0.0f, actor->current.pos.y, + i_this->acch.GetGroundH(), i_this->acch.m_gnd, + &i_this->actor.tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); } } - if (i_this->field_0x60d != 0) { - g_env_light.setLightTevColorType_MAJI(i_this->mpBoomerangModel, &i_this->enemy.tevStr); - mDoExt_modelUpdateDL(i_this->mpBoomerangModel); + if (i_this->boomerangStatus != 0) { + g_env_light.setLightTevColorType_MAJI(i_this->boomerangModelP, &actor->tevStr); + mDoExt_modelUpdateDL(i_this->boomerangModelP); } return 1; } static void* s_obj_delete(void* i_actor, void* i_data) { + i_data; + if (fopAcM_IsActor(i_actor)) { - if (fopAcM_GetName(i_actor) == PROC_E_DB) { - static_cast(i_actor)->enemy.health = 1000; - } else if (fopAcM_GetName(i_actor) == PROC_E_DB_LEAF) { - fopAcM_delete(static_cast(i_actor)); + fopAc_ac_c* actor = (fopAc_ac_c*)i_actor; + if (fopAcM_GetName(actor) == PROC_E_DB) { + actor->health = 1000; + } else if (fopAcM_GetName(actor) == PROC_E_DB_LEAF) { + fopAcM_delete(actor); } } @@ -121,7 +141,7 @@ static cXyz STAGE_CENTER_POS; static s16 STAGE_ANGLE_Y; /* 8071CB0A 0001+00 .bss */ -u8 lbl_210_bss_AA; +u8 l_initHIO; static daE_MK_HIO_c l_HIO; @@ -130,6 +150,8 @@ static void* target_info[20]; static int target_info_count; static void* s_h_sub(void* i_actor, void* i_data) { + i_data; + if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_Obj_Pillar) && target_info_count < 20) { target_info[target_info_count] = (daPillar_c*)i_actor; target_info_count++; @@ -139,6 +161,10 @@ static void* s_h_sub(void* i_actor, void* i_data) { } static daPillar_c* search_hasira(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + daPillar_c* pillar_p; + daPillar_c* rv; + target_info_count = 0; for (int i = 0; i < 20; i++) { target_info[i] = NULL; @@ -146,28 +172,28 @@ static daPillar_c* search_hasira(e_mk_class* i_this) { fpcM_Search(s_h_sub, i_this); - if (i_this->field_0x71d == 0) { - i_this->field_0x71d++; - return (daPillar_c*)target_info[5]; + if (i_this->firstHasiraFlag == 0) { + i_this->firstHasiraFlag++; + return (daPillar_c*)target_info[TREG_S(7) + 5]; } - f32 fVar1 = 1500.0f; + f32 dist = TREG_F(12) + 1500.0f; + s16 angle = 0x7000; // 157.5° if (target_info_count != 0) { - cXyz sp44; - daPillar_c* pPillar; - daPillar_c* rv = NULL; + cXyz pos_delta; + rv = NULL; int iVar1 = 0; - int i = 0; - while (i < target_info_count) { - pPillar = (daPillar_c*)target_info[i]; - sp44 = pPillar->current.pos - i_this->enemy.current.pos; - f32 fVar2 = sp44.abs(); - if (fVar2 > 700.0f && fVar2 < fVar1) { - s16 sVar1 = i_this->enemy.current.angle.y - cM_atan2s(sp44.x, sp44.z); - if (sVar1 < 0x7000 && sVar1 > -0x7000) { + for (int i = 0; i < target_info_count;) { + pillar_p = (daPillar_c*)target_info[i]; + pos_delta = pillar_p->current.pos - actor->current.pos; + f32 abs_val = pos_delta.abs(); + if (abs_val > TREG_F(16) + 700.0f && abs_val < dist) { + s16 angle_delta = actor->current.angle.y - cM_atan2s(pos_delta.x, pos_delta.z); + if (angle_delta < angle && angle_delta > (s16)-angle) { if (iVar1 == 0 || cM_rndF(1.0f) < 0.3f) { - rv = pPillar; + rv = pillar_p; } + iVar1++; } } @@ -175,10 +201,11 @@ static daPillar_c* search_hasira(e_mk_class* i_this) { i++; if (i == target_info_count) { i = 0; - fVar1 += 100.0f; - if (fVar1 > 2000.0f) { + dist += 100.0f; + if (dist > 2000.0f) { return NULL; } + if (rv != NULL) { return rv; } @@ -192,16 +219,24 @@ static daPillar_c* search_hasira(e_mk_class* i_this) { } static void* s_d_sub(void* i_actor, void* i_data) { - if (((fopAc_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB) && static_cast(i_actor)->action == 10) - && (static_cast(i_actor)->mode >= 1 && target_info_count < 20)) { - target_info[target_info_count] = i_actor; - target_info_count++; + i_data; + + if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB)) { + e_db_class* actor = (e_db_class*)i_actor; + if (actor->action == 10) { + if (actor->mode >= 1 && target_info_count < 20) { + target_info[target_info_count] = i_actor; + target_info_count++; + } + } } return NULL; } static e_db_class* search_db(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + target_info_count = 0; for (int i = 0; i < 20; i++) { target_info[i] = NULL; @@ -209,25 +244,24 @@ static e_db_class* search_db(e_mk_class* i_this) { fpcM_Search(s_d_sub, i_this); - f32 fVar1 = 2000.0f; + f32 dist = 2000.0f; if (target_info_count != 0) { - cXyz sp44; - e_db_class* pDekuBaba; - int i = 0; - while (i < target_info_count) { - pDekuBaba = (e_db_class*)target_info[i]; - sp44 = pDekuBaba->enemy.current.pos - i_this->enemy.current.pos; + cXyz pos_delta; + e_db_class* actor_p; + for (int i = 0; i < target_info_count;) { + actor_p = (e_db_class*)target_info[i]; + pos_delta = actor_p->enemy.current.pos - actor->current.pos; + f32 abs_val = pos_delta.abs(); - f32 fVar2 = sp44.abs(); - if ((cM_rndF(1.0f) < 0.5f && fVar2 > 500.0f) && fVar2 < fVar1) { - return pDekuBaba; + if (cM_rndF(1.0f) < 0.5f && abs_val > 500.0f && abs_val < dist) { + return actor_p; } i++; if (i == target_info_count) { i = 0; - fVar1 += 50.0f; - if (fVar1 > 5000.0f) { + dist += 50.0f; + if (dist > 5000.0f) { return NULL; } } @@ -240,319 +274,329 @@ static e_db_class* search_db(e_mk_class* i_this) { } static void e_mk_move(e_mk_class* i_this) { - cXyz sp28; - int frame = i_this->mpModelMorf->getFrame(); - switch(i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work; + int frame = i_this->anmP->getFrame(); + + switch(i_this->mode) { case 0: - i_this->field_0x6fa = cM_rndF(3.0f) + 2.0f; - i_this->mMode++; + i_this->unkCounter1 = cM_rndF(3.0f) + 2.0f; + i_this->mode++; // fallthrough case 1: - i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f); - i_this->enemy.speed.set(0.0f, 0.0f, 0.0f); - if (i_this->field_0xc30 == 2) { - i_this->mPillar = NULL; + i_this->posTargetStep.set(0.0f, 0.0f, 0.0f); + actor->speed.set(0.0f, 0.0f, 0.0f); + if (i_this->demoMode == e_mk_class::DEMO_MODE_END) { + i_this->prevHasira = NULL; target_info_count = 0; fpcM_Search(s_h_sub, i_this); - if (i_this->field_0x71e == 0) { - sp28 = demo_jump_pos_1; - i_this->mPillar = (daPillar_c*)target_info[8]; - } else if (i_this->field_0x71e == 1) { - sp28 = demo_jump_pos_2; - i_this->mDemoMode++; - i_this->mPillar = (daPillar_c*)target_info[6]; - } else if (i_this->field_0x71e == 2) { - sp28 = demo_jump_pos_3; + if (i_this->demoHasiraFlag == 0) { + work = demo_jump_pos_1; + i_this->prevHasira = (daPillar_c*)target_info[8]; + } else if (i_this->demoHasiraFlag == 1) { + work = demo_jump_pos_2; + i_this->demoSubMode++; + i_this->prevHasira = (daPillar_c*)target_info[6]; + } else if (i_this->demoHasiraFlag == 2) { + work = demo_jump_pos_3; } else { - i_this->mAction = e_mk_class::ACT_E_DEMO; - i_this->mMode = 100; - i_this->enemy.gravity = 0.0f; - i_this->enemy.scale.x = 1.0f; + i_this->action = e_mk_class::ACT_E_DEMO; + i_this->mode = 100; + actor->gravity = 0.0f; + actor->scale.x = 1.0f; return; } - i_this->field_0x71e++; - i_this->field_0x5b8 = STAGE_CENTER_POS + sp28; - sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos; - i_this->enemy.current.angle.y = cM_atan2s(sp28.x, sp28.z); - i_this->enemy.current.angle.x = -cM_atan2s(sp28.y, JMAFastSqrt(sp28.x * sp28.x + sp28.z * sp28.z)); - anm_init(i_this, 29, 5.0f, 0, 1.0f); - i_this->mMode = 3; - } else { - i_this->mPillar = (daPillar_c*)i_this->mHasira; - i_this->mHasira = search_hasira(i_this); - #ifdef DEBUG - if (i_this->mHasira == NULL) { - OSReport("E_mk HASIRA NON \n"); - } - #endif - if (i_this->mHasira != NULL) { - i_this->mMode++; - // fallthrough - case 2: - i_this->field_0x5b8 = i_this->mHasira->current.pos; - i_this->field_0x5b8.y += 800.0f; - if (fopAcM_gc_c::gndCheck(&i_this->field_0x5b8)) { - i_this->field_0x5b8.y = fopAcM_gc_c::getGroundY(); - } + i_this->demoHasiraFlag++; + i_this->posTarget = STAGE_CENTER_POS + work; + work = i_this->posTarget - actor->current.pos; + actor->current.angle.y = cM_atan2s(work.x, work.z); + actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z)); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_START_e, TREG_F(1) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 3; + break; + } + + i_this->prevHasira = (daPillar_c*)i_this->hasira; + i_this->hasira = search_hasira(i_this); - sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos; - i_this->enemy.current.angle.y = cM_atan2s(sp28.x, sp28.z); - i_this->enemy.current.angle.x = -cM_atan2s(sp28.y, JMAFastSqrt(sp28.x * sp28.x + sp28.z * sp28.z)); - anm_init(i_this, 29, 5.0f, 0, 1.0f); - i_this->mMode++; + if (i_this->hasira != NULL) { + i_this->mode++; + } else { + OS_REPORT("E_mk HASIRA NON \n"); + break; + } + // fallthrough + case 2: + i_this->posTarget = i_this->hasira->current.pos; + i_this->posTarget.y += TREG_F(8) + 800.0f; + if (fopAcM_gc_c::gndCheck(&i_this->posTarget)) { + i_this->posTarget.y = fopAcM_gc_c::getGroundY(); + } + + work = i_this->posTarget - actor->current.pos; + actor->current.angle.y = cM_atan2s(work.x, work.z); + actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z)); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_START_e, TREG_F(1) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode++; + break; + + case 3: + // At frame 9 of the mk_jump_start animation, Ook's feet begin lifting off the ground + if (frame == TREG_S(0) + 9) { + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + cMtx_XrotM(*calc_mtx, actor->current.angle.x); + work.x = 0.0f; + work.y = 0.0f; + work.z = TREG_F(10) + 70.0f; + MtxPosition(&work, &actor->speed); + i_this->unkFlag2 = 1; + i_this->prevPos = actor->current.pos; + i_this->prevPosTarget = i_this->posTarget; + + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_JUMP, -1); + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1); + if (i_this->unkFlag5 != 0) { + i_this->setSmokeFlag = 2; + } + + if (i_this->prevHasira != NULL) { + work = i_this->prevHasira->current.pos; + work.y += 500.0f; + work -= actor->current.pos; + if (work.abs() < 200.0f) { + i_this->prevHasira->setShake(2); + } + } + } + + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_MIDDLE_e, TREG_F(2) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode++; + } + break; + + case 4: + work = i_this->posTarget - actor->current.pos; + if (work.abs() < TREG_F(13) + 300.0f) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_END_e, TREG_F(3) + 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode++; + i_this->posTargetStep = actor->speed; + actor->speed.set(0.0f, 0.0f, 0.0f); + } + break; + + case 5: + if (i_this->anmP->isStop() != 0) { + i_this->unkFlag2 = 0; + if (i_this->unkFlag5 != 0) { + i_this->mode = 10; + i_this->unkFlag5 = 0; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PICKUP_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + i_this->unkCounter1--; + if (i_this->unkCounter1 == 0) { + if (cM_rndF(1.0f) < 0.75f) { + i_this->action = e_mk_class::ACT_SHOOT; + if ((cM_rndF(1.0f) < 0.5f && i_this->unkCounter3 >= 3) || i_this->distToPl > l_HIO.pl_throw_dist_max) { + i_this->mode = 1; + } else { + i_this->mode = 0; + i_this->unkCounter3++; + } + i_this->unkTimer1 = 0; + } else { + i_this->action = e_mk_class::ACT_WAIT; + i_this->mode = 0; + } + } else { + i_this->mode = 1; + } } } break; - case 3: - if (frame == 9) { - cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); - cMtx_XrotM(*calc_mtx, i_this->enemy.current.angle.x); - sp28.x = 0.0f; - sp28.y = 0.0f; - sp28.z = 70.0f; - MtxPosition(&sp28, &i_this->enemy.speed); - i_this->field_0x6be = 1; - i_this->field_0x6c0 = i_this->enemy.current.pos; - i_this->field_0x6cc = i_this->field_0x5b8; - - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_JUMP, -1); - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1); - if (i_this->field_0x718 != 0) { - i_this->field_0x71b = 2; + case 10: + if (frame == 5) { + i_this->unkFlag4 = 6; + i_this->boomerangStatus = 1; } - if (i_this->mPillar != NULL) { - sp28 = i_this->mPillar->current.pos; - sp28.y += 500.0f; - sp28 -= i_this->enemy.current.pos; - if (sp28.abs() < 200.0f) { - i_this->mPillar->setShake(2); - } + if (i_this->anmP->isStop()) { + i_this->mode = 1; } - } - - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 28, 5.0f, 0, 1.0f); - i_this->mMode++; - } - break; - - case 4: - sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos; - if (sp28.abs() < 300.0f) { - anm_init(i_this, 26, 2.0f, 0, 1.0f); - i_this->mMode++; - i_this->field_0x6dc = i_this->enemy.speed; - i_this->enemy.speed.set(0.0f, 0.0f, 0.0f); - } - break; - - case 5: - if (i_this->mpModelMorf->isStop() != 0) { - i_this->field_0x6be = 0; - if (i_this->field_0x718 != 0) { - i_this->mMode = 10; - i_this->field_0x718 = 0; - anm_init(i_this, 30, 3.0f, 0, 1.0f); - } else { - i_this->field_0x6fa--; - if (i_this->field_0x6fa == 0) { - if (cM_rndF(1.0f) < 0.75f) { - i_this->mAction = e_mk_class::ACT_SHOOT; - if ((cM_rndF(1.0f) < 0.5f && i_this->field_0x71c >= 3) || i_this->mDistToPlayer > l_HIO.mPlayerThrowDistMax) { - i_this->mMode = 1; - } else { - i_this->mMode = 0; - i_this->field_0x71c++; - } - i_this->field_0x71a = 0; - } else { - i_this->mAction = e_mk_class::ACT_WAIT; - i_this->mMode = 0; - } - } else { - i_this->mMode = 1; - } - } - } - break; - - case 10: - if (frame == 5) { - i_this->field_0x707 = 6; - i_this->field_0x60d = 1; - } - - if (i_this->mpModelMorf->isStop()) { - i_this->mMode = 1; - } } - cLib_addCalc2(&i_this->enemy.current.pos.x, i_this->field_0x5b8.x, 1.0f, fabsf(i_this->field_0x6dc.x)); - cLib_addCalc2(&i_this->enemy.current.pos.z, i_this->field_0x5b8.z, 1.0f, fabsf(i_this->field_0x6dc.z)); - cLib_addCalc2(&i_this->enemy.current.pos.y, i_this->field_0x5b8.y, 1.0f, fabsf(i_this->field_0x6dc.y)); + cLib_addCalc2(&actor->current.pos.x, i_this->posTarget.x, 1.0f, fabsf(i_this->posTargetStep.x)); + cLib_addCalc2(&actor->current.pos.z, i_this->posTarget.z, 1.0f, fabsf(i_this->posTargetStep.z)); + cLib_addCalc2(&actor->current.pos.y, i_this->posTarget.y, 1.0f, fabsf(i_this->posTargetStep.y)); } static void e_mk_wait(e_mk_class* i_this) { - switch (i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->mode) { case 0: - i_this->field_0x6fc[0] = cM_rndF(40.0f) + 40.0f; + i_this->timer[0] = cM_rndF(40.0f) + 40.0f; if (cM_rndF(1.0f) < 0.5f) { - anm_init(i_this, 32, 10.0f, 2, 1.0f); - i_this->mMode = 1; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_02_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 1; } else { - anm_init(i_this, 33, 10.0f, 0, 1.0f); - i_this->mMode = 2; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 2; } break; case 1: - if (i_this->field_0x6fc[0] == 0) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 0; + if (i_this->timer[0] == 0) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 0; } break; case 2: - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 0; + if (i_this->anmP->isStop()) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 0; } } - cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->mAngleToPlayer, 2, 0x1000); - if (i_this->mDistToPlayer < 800.0f) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 0; + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->angleToPl, 2, 0x1000); + if (i_this->distToPl < TREG_F(19) + 800.0f) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 0; + OS_REPORT("E_MK PL NEAR \n"); } } static void e_mk_shoot(e_mk_class* i_this) { - cXyz sp48; - int frame = i_this->mpModelMorf->getFrame(); - fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x708); - daPillar_c* pHasira = i_this->mHasira; - s8 bVar5 = 0; - switch(i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + int frame = i_this->anmP->getFrame(); + cXyz work; + fopAc_ac_c* actor_p = fopAcM_SearchByID(i_this->boomerangId); + daPillar_c* hasira = i_this->hasira; + s8 unk_flag = 0; + + switch(i_this->mode) { case 0: - i_this->field_0x70c = NULL; - anm_init(i_this, 38, 5.0f, 0, 1.0f); - i_this->mMode = 2; + i_this->db = NULL; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_THROW_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 2; break; case 1: - i_this->field_0x70c = search_db(i_this); - if (i_this->field_0x70c != NULL) { - anm_init(i_this, 39, 5.0f, 0, 1.0f); - i_this->mMode = 10; + i_this->db = search_db(i_this); + if (i_this->db != NULL) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_THROW_UP_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 10; } else { - i_this->mMode = 0; + OS_REPORT("E_MK DB NON \n"); + i_this->mode = 0; } break; case 2: - cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->mAngleToPlayer, 2, 0x1000); + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->angleToPl, 2, 0x1000); - if (i_this->mpModelMorf->checkFrame(15.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); + if (i_this->anmP->checkFrame(15.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); } - if (frame == 17) { - i_this->field_0x707 = 7; + if (frame == hREG_S(2) + 17) { + i_this->unkFlag4 = 7; } - if (frame == 27) { - i_this->field_0x707 = 1; + if (frame == hREG_S(3) + 27) { + i_this->unkFlag4 = 1; } - if (frame == 27) { - i_this->field_0x60d = 0; - i_this->mMode = 3; + if (frame == hREG_S(4) + 27) { + i_this->boomerangStatus = 0; + i_this->mode = 3; } break; case 3: - if (i_this->mpModelMorf->isStop()) { - i_this->mMode = 20; + if (i_this->anmP->isStop()) { + i_this->mode = 20; if (cM_rndF(1.0f) < 0.333f) { - anm_init(i_this, 31, 10.0f, 2, 1.0f); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_01_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } else { - anm_init(i_this, 40, 10.0f, 2, 1.0f); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } } - bVar5 = 1; + unk_flag = 1; break; case 10: - sp48 = i_this->field_0x70c->enemy.current.pos - i_this->enemy.current.pos; - cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, cM_atan2s(sp48.x, sp48.z), 2, 0x1000); - if (i_this->mpModelMorf->checkFrame(15.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); + work = i_this->db->enemy.current.pos - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(work.x, work.z), 2, 0x1000); + if (i_this->anmP->checkFrame(15.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); } - if (frame == 17) { - i_this->field_0x707 = 7; + if (frame == hREG_S(2) + 17) { + i_this->unkFlag4 = 7; } - if (frame == 27) { - i_this->field_0x707 = 1; + if (frame == hREG_S(3) + 27) { + i_this->unkFlag4 = 1; } - if (frame == 27) { - i_this->field_0x60d = 0; - i_this->mMode = 3; + if (frame == hREG_S(4) + 27) { + i_this->boomerangStatus = 0; + i_this->mode = 3; } break; case 15: - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 0; + if (i_this->anmP->isStop()) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 0; } - bVar5 = 3; + unk_flag = 3; break; case 20: - bVar5 = 2; + unk_flag = 2; } - if (bVar5 != 0) { - if ((bVar5 == 2) && (actor != NULL)) { - cXyz sp54 = actor->current.pos - i_this->enemy.current.pos; - cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, cM_atan2s(sp54.x,sp54.z), 2, 0x800); + if (unk_flag != 0) { + if ((unk_flag == 2) && (actor_p != NULL)) { + cXyz pos_delta = actor_p->current.pos - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(pos_delta.x,pos_delta.z), 2, 0x800); } - if (bVar5 <= 2) { - if (i_this->field_0x707 == 5) { - i_this->field_0x707 = 0; - i_this->field_0x71a = 47; + + if (unk_flag <= 2) { + if (i_this->unkFlag4 == 5) { + i_this->unkFlag4 = 0; + i_this->unkTimer1 = 47; } - if (i_this->field_0x71a == 35) { - anm_init(i_this, 25, 5.0f, 2, 1.0f); - i_this->mMode = 20; + if (i_this->unkTimer1 == 35) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 20; } - if (i_this->field_0x71a == 1) { - anm_init(i_this, 40, 10.0f, 2, 1.0f); + if (i_this->unkTimer1 == 1) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } - if (i_this->field_0x707 == 2) { - anm_init(i_this, 9, 3.0f, 0, 0.0f); - i_this->field_0x707 = 0; + if (i_this->unkFlag4 == 2) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f); + i_this->unkFlag4 = 0; } - if (i_this->field_0x707 == 3) { - i_this->field_0x707 = 0; - i_this->field_0x60d = 1; - anm_init(i_this, 9, 1.0f, 0, 1.0f); - i_this->mMode = 15; + if (i_this->unkFlag4 == 3) { + i_this->unkFlag4 = 0; + i_this->boomerangStatus = 1; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 15; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); - i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); + i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); #if VERSION == VERSION_GCN_JPN return; @@ -560,14 +604,13 @@ static void e_mk_shoot(e_mk_class* i_this) { } } - if ((pHasira != NULL) && pHasira->checkRollAttack()) { - i_this->mAction = e_mk_class::ACT_YORO; - i_this->mMode = 0; - if (i_this->field_0x60d != 0) { - i_this->field_0x6fc[0] = 40; - } - else { - i_this->field_0x6fc[0] = 250; + if ((hasira != NULL) && hasira->checkRollAttack()) { + i_this->action = e_mk_class::ACT_YORO; + i_this->mode = 0; + if (i_this->boomerangStatus != 0) { + i_this->timer[0] = 40; + } else { + i_this->timer[0] = 250; } } } @@ -576,81 +619,87 @@ static void e_mk_shoot(e_mk_class* i_this) { static s8 lbl_210_bss_130; static void e_mk_yoro(e_mk_class* i_this) { - switch (i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->mode) { case 0: - i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); - anm_init(i_this, 8, 5.0f, 0, 1.0f); - i_this->mMode = 1; + i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_BALANCE_START_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 1; break; case 1: - i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 7, 5.0f, 2, 1.0f); - i_this->mMode = 2; + i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_BALANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 2; } break; case 2: - i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); - if (i_this->field_0x6fc[0] == 0) { - i_this->mAction = e_mk_class::ACT_WAIT; - i_this->mMode = 0; - i_this->field_0x707 = 6; - i_this->field_0x60d = 1; + i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1); + if (i_this->timer[0] == 0) { + i_this->action = e_mk_class::ACT_WAIT; + i_this->mode = 0; + i_this->unkFlag4 = 6; + i_this->boomerangStatus = 1; } } - if (i_this->field_0x707 == 4) { - i_this->field_0x707 = 0; - i_this->mAction = e_mk_class::ACT_DROP; - i_this->mMode = 0; + if (i_this->unkFlag4 == 4) { + i_this->unkFlag4 = 0; + i_this->action = e_mk_class::ACT_DROP; + i_this->mode = 0; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_HIT_BOOM, -1); - i_this->mSound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_HIT_BOOM, -1); + i_this->sound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); - i_this->field_0x704 = 5; - i_this->field_0x706 = 5; + i_this->invulnerabilityTimer = 5; + i_this->tubaTimer = 5; if (lbl_210_bss_130 == 0) { lbl_210_bss_130 = 1; - i_this->field_0xc30 = 4; - i_this->mDemoMode = 1; + i_this->demoMode = e_mk_class::DEMO_MODE_BOHIT; + i_this->demoSubMode = 1; } } } static void e_mk_drop(e_mk_class* i_this) { - cXyz sp24; - int frame = i_this->mpModelMorf->getFrame(); - switch (i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work; + int frame = i_this->anmP->getFrame(); + + switch (i_this->mode) { case 0: - anm_init(i_this, 23, 3.0f, 0, 1.0f); - i_this->mMode = 1; - cMtx_YrotS(*calc_mtx, i_this->enemy.shape_angle.y); - sp24.x = 0.0; - sp24.y = 30.0; - sp24.z = -10.0; - MtxPosition(&sp24, &i_this->enemy.speed); - i_this->field_0x704 = 50; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_FALL_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 1; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = 0.0; + work.y = KREG_F(8) + 30.0f; + work.z = KREG_F(9) + -10.0f; + MtxPosition(&work, &actor->speed); + i_this->invulnerabilityTimer = 50; break; case 1: - if (frame >= 14) { - i_this->mpModelMorf->setPlaySpeed(0.0f); - i_this->mMode = 2; + if (frame >= TREG_S(3) + 14) { + i_this->anmP->setPlaySpeed(0.0f); + i_this->mode = 2; } break; case 2: - i_this->field_0x704 = 5; - if (i_this->mAcch.ChkGroundHit()) { - i_this->mpModelMorf->setPlaySpeed(1.0f); - i_this->mMode = 3; - dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f)); - i_this->mSound.startCreatureSound(Z2SE_EN_MK_FALL_GROUND, 0, -1); - i_this->field_0x71b = 1; - i_this->field_0x719 = 0; + i_this->invulnerabilityTimer = 5; + if (i_this->acch.ChkGroundHit()) { + i_this->anmP->setPlaySpeed(1.0f); + i_this->mode = 3; + dComIfGp_getVibration().StartShock((int)YREG_S(2) + VIBMODE_S_POWER5, 15, cXyz(0.0f, 1.0f, 0.0f)); + i_this->sound.startCreatureSound(Z2SE_EN_MK_FALL_GROUND, 0, -1); + actor->speed.x *= TREG_F(9) + 1.0f; + actor->speed.z *= TREG_F(9) + 1.0f; + i_this->setSmokeFlag = 1; + i_this->unkCounter2 = 0; Z2GetAudioMgr()->changeSubBgmStatus(1); dComIfGs_onOneZoneSwitch(5, -1); } @@ -658,41 +707,41 @@ static void e_mk_drop(e_mk_class* i_this) { case 3: if (frame == 22 || frame == 32) { - i_this->field_0x71b = 1; + i_this->setSmokeFlag = 1; } if (frame >= 45) { - i_this->enemy.speed.set(0.0f, 0.0f, 0.0f); + actor->speed.set(0.0f, 0.0f, 0.0f); } - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 10, 5.0f, 2, 1.0f); - i_this->mMode = 4; - i_this->field_0x6fc[0] = 150; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 4; + i_this->timer[0] = 150; } break; case 4: - if (i_this->field_0x6fc[0] == 0) { - anm_init(i_this, 36, 5.0f, 0, 1.0f); - i_this->mMode = 5; - i_this->field_0x719 = 4; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_AWAKE, -1); + if (i_this->timer[0] == 0) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_STANDUP_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 5; + i_this->unkCounter2 = 4; + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_AWAKE, -1); } break; case 5: - if (i_this->mAnm == 35 && ((frame == 9 || (frame == 24)) || (frame == 35))) { - i_this->field_0x71b = 2; + if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_SPRING_e && ((frame == 9 || (frame == 24)) || (frame == 35))) { + i_this->setSmokeFlag = 2; } - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 2; - i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f); - i_this->field_0x6fa = cM_rndF(3.0f) + 2.0f; - i_this->field_0x718 = 1; - if (i_this->enemy.health > 100) { + if (i_this->anmP->isStop()) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 2; + i_this->posTargetStep.set(0.0f, 0.0f, 0.0f); + i_this->unkCounter1 = cM_rndF(3.0f) + 2.0f; + i_this->unkFlag5 = 1; + if (actor->health > 100) { Z2GetAudioMgr()->changeSubBgmStatus(2); } else { Z2GetAudioMgr()->changeSubBgmStatus(3); @@ -702,232 +751,243 @@ static void e_mk_drop(e_mk_class* i_this) { } static void e_mk_damage(e_mk_class* i_this) { - switch (i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->mode) { case 0: - i_this->field_0x719++; - i_this->enemy.speed.set(0.0f, 0.0f, 0.0f); - if (i_this->field_0x719 >= 4) { - anm_init(i_this, 35, 3.0f, 0, 1.0f); - i_this->mAction = e_mk_class::ACT_DROP; - i_this->mMode = 5; - i_this->field_0x704 = 60; + i_this->unkCounter2++; + actor->speed.set(0.0f, 0.0f, 0.0f); + if (i_this->unkCounter2 >= 4) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_SPRING_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->action = e_mk_class::ACT_DROP; + i_this->mode = 5; + i_this->invulnerabilityTimer = 60; } else { - anm_init(i_this, 12, 3.0f, 0, 1.0f); - i_this->mMode = 1; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE, -1); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DAMAGE_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 1; + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE, -1); } break; case 1: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this,10, 5.0f, 2, 1.0f); - i_this->mAction = e_mk_class::ACT_DROP; - i_this->mMode = 4; + if (i_this->anmP->isStop()) { + anm_init(i_this,dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->action = e_mk_class::ACT_DROP; + i_this->mode = 4; } break; } } static void damage_check(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - if (i_this->field_0x704 == 0) { - i_this->field_0x95c.Move(); - if (i_this->mAction >= 9) { - if (i_this->field_0xad0.ChkTgHit()) { - i_this->mAtInfo.mpCollider = i_this->field_0xad0.GetTgHitObj(); - cc_at_check(&i_this->enemy, &i_this->mAtInfo); - if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) { - i_this->field_0x704 = 20; + + if (i_this->invulnerabilityTimer == 0) { + i_this->stts.Move(); + + if (i_this->action >= 9) { + if (i_this->tgSph.ChkTgHit()) { + i_this->atInfo.mpCollider = i_this->tgSph.GetTgHitObj(); + cc_at_check(actor, &i_this->atInfo); + if (i_this->atInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) { + i_this->invulnerabilityTimer = 20; } else { - i_this->field_0x704 = 10; + i_this->invulnerabilityTimer = 10; } - if (i_this->enemy.health <= 0) { + if (actor->health <= 0) { fpcM_Search(s_obj_delete, i_this); - i_this->mAction = 30; - i_this->mMode = 0; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DEAD, -1); - i_this->field_0x704 = 20000; + i_this->action = 30; + i_this->mode = 0; + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DEAD, -1); + i_this->invulnerabilityTimer = 20000; Z2GetAudioMgr()->subBgmStop(); + + #if !DEBUG dScnPly_c::nextPauseTimer = 0; + #endif } else { - i_this->mAction = 10; - i_this->mMode = 0; + i_this->action = 10; + i_this->mode = 0; if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { - i_this->field_0x704 = 3; + i_this->invulnerabilityTimer = 3; } } } } - if (i_this->enemy.health <= 1) { - i_this->enemy.health = 0; - i_this->field_0xad0.SetTgHitMark((CcG_Tg_HitMark )3); + if (actor->health <= 1) { + actor->health = 0; + i_this->tgSph.SetTgHitMark((CcG_Tg_HitMark )3); } } } static void e_mk_s_demo(e_mk_class* i_this) { - int frame = i_this->mpModelMorf->getFrame(); - i_this->field_0x704 = 5; - switch (i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + int frame = i_this->anmP->getFrame(); + i_this->invulnerabilityTimer = 5; + + switch (i_this->mode) { case 0: - anm_init(i_this, 40, 1.0f, 2, 1.0f); - i_this->mMode = 1; - i_this->field_0x6fc[0] = 0; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 1; + i_this->timer[0] = (s16)TREG_S(9); // fallthrough case 1: - if (i_this->field_0x6fc[0] == 0) { - i_this->mMode = 100; - i_this->field_0xc30 = 1; - i_this->mDemoMode = 1; + if (i_this->timer[0] == 0) { + i_this->mode = 100; + i_this->demoMode = e_mk_class::DEMO_MODE_START; + i_this->demoSubMode = 1; } break; case 2: - i_this->mSound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1); - anm_init(i_this, 20, 5.0f, 0, 1.0f); - i_this->mMode = 3; + i_this->sound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_RAISE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 3; break; case 3: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 21, 2.0f, 2, 1.0f); - i_this->mMode = 100; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 100; } break; case 4: - anm_init(i_this, 19, 1.0f, 0 ,1.0f); - i_this->mMode = 5; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e, 1.0f, J3DFrameCtrl::EMode_NONE ,1.0f); + i_this->mode = 5; + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); break; case 5: - if (frame == 8) { - i_this->field_0x707 = 1; + if (frame == hREG_S(3) + 8) { + i_this->unkFlag4 = 1; Z2GetAudioMgr()->bgmStreamPlay(); } - if (frame == 8) { - i_this->field_0x60d = 0; + if (frame == hREG_S(4) + 8) { + i_this->boomerangStatus = 0; } - if (frame == 14) { - i_this->mMode = 6; - i_this->mDemoMode = 7; - anm_init(i_this, 40, 10.0f, 2, 1.0f); + if (frame == TREG_S(5) + 14) { + i_this->mode = 6; + i_this->demoSubMode = 7; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; case 6: - if (i_this->field_0x707 == 2) { - anm_init(i_this, 9, 3.0f, 0, 0.0f); - i_this->field_0x707 = 0; + if (i_this->unkFlag4 == 2) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f); + i_this->unkFlag4 = 0; } - if (i_this->field_0x707 == 3) { - i_this->field_0x707 = 0; - i_this->field_0x60d = 1; - anm_init(i_this, 9, 1.0f, 0, 1.0f); - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); - i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); - i_this->mMode = 7; + if (i_this->unkFlag4 == 3) { + i_this->unkFlag4 = 0; + i_this->boomerangStatus = 1; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); + i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); + i_this->mode = 7; } break; case 7: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 15, 5.0f, 2, 1.0f); - i_this->field_0x6fc[0] = 30; - i_this->mMode = 8; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->timer[0] = 30; + i_this->mode = 8; } break; case 8: - if (i_this->field_0x6fc[0] == 0) { - anm_init(i_this, 33, 10.0f, 0, 1.0f); - i_this->mMode = 9; + if (i_this->timer[0] == 0) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 9; } break; case 9: - if (i_this->mpModelMorf->isStop()) { - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->field_0x6fa = cM_rndF(2.0f) + 7.0f; - i_this->mMode = 1; - i_this->mDemoMode = 11; - i_this->mDemoCamTimer = 0; + if (i_this->anmP->isStop()) { + i_this->action = e_mk_class::ACT_MOVE; + i_this->unkCounter1 = cM_rndF(2.0f) + 7.0f; + i_this->mode = 1; + i_this->demoSubMode = 11; + i_this->demoCamCounter = 0; } break; case 100: - return; + break; } } -static int e_mk_e_demo(e_mk_class* i_this) { - f32 fVar1; - cXyz sp38, sp44; - int frame = i_this->mpModelMorf->getFrame(); - int rv = 1; - s8 cVar6 = 0; +static s8 e_mk_e_demo(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + f32 sqrt_val; + cXyz work, offset; + int frame = i_this->anmP->getFrame(); + s8 rv = 1; + s8 unk_flag = 0; - switch (i_this->mMode) { + switch (i_this->mode) { case -100: - anm_init(i_this, 10, 5.0f, 2, 1.0f); - i_this->mMode++; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode++; break; case 0: - anm_init(i_this, 18, 1.0f, 0, 1.0f); - i_this->mMode = 1; - i_this->field_0xc30 = 2; - i_this->mDemoMode = 1; - dComIfGs_onSwitch(108, fopAcM_GetRoomNo(&i_this->enemy)); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_START_SPRING_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 1; + i_this->demoMode = e_mk_class::DEMO_MODE_END; + i_this->demoSubMode = 1; + dComIfGs_onSwitch(108, fopAcM_GetRoomNo(actor)); break; case 1: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 17, 1.0f, 2, 1.0f); - i_this->mMode = 2; - i_this->enemy.current.angle.y = STAGE_ANGLE_Y + -0x4000; - cMtx_YrotS(*calc_mtx,i_this->enemy.current.angle.y); - sp38.x = 0.0; - sp38.y = 0.0; - sp38.z = -1000.0; - MtxPosition(&sp38, &sp44); - i_this->enemy.current.pos = STAGE_CENTER_POS + sp44; - i_this->enemy.old.pos = STAGE_CENTER_POS + sp44; - i_this->mDemoMode = 4; - i_this->mDemoCamTimer = 0; - i_this->enemy.gravity = -10.0f; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_SPRING_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 2; + actor->current.angle.y = STAGE_ANGLE_Y + -0x4000; + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.x = 0.0; + work.y = 0.0; + work.z = AREG_F(12) + -1000.0f; + MtxPosition(&work, &offset); + actor->current.pos = STAGE_CENTER_POS + offset; + actor->old.pos = STAGE_CENTER_POS + offset; + i_this->demoSubMode = 4; + i_this->demoCamCounter = 0; + actor->gravity = AREG_F(15) + -10.0f; } break; case 2: - if (i_this->mAcch.ChkGroundHit()) { - i_this->enemy.speedF = 0.0f; + if (i_this->acch.ChkGroundHit()) { + actor->speedF = 0.0f; } - if (frame == 1 || frame == 18) { - i_this->enemy.speed.y = 50.0f; - i_this->enemy.speedF = 30.0f; - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); + if (frame == AREG_S(1) + 1 || frame == AREG_S(2) + 18) { + actor->speed.y = AREG_F(14) + 50.0f; + actor->speedF = AREG_F(13) + 30.0f; + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); } - sp38 = STAGE_CENTER_POS - i_this->enemy.current.pos; - fVar1 = JMAFastSqrt(sp38.x * sp38.x + sp38.z * sp38.z); - if (fVar1 < 200.0f) { + work = STAGE_CENTER_POS - actor->current.pos; + sqrt_val = JMAFastSqrt(work.x * work.x + work.z * work.z); + if (sqrt_val < AREG_F(16) + 200.0f) { rv = 2; - if (fVar1 < 100.0f) { - i_this->mMode = 3; - anm_init(i_this, 16, 2.0f, 0, 1.0f); - i_this->enemy.speedF = 0.0f; - i_this->enemy.gravity = 0.0f; - i_this->enemy.speed.y = 0.0f; - i_this->field_0x6fc[0] = 40; - cVar6 = 60; + if (sqrt_val mode = 3; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_HIT_e, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + actor->speedF = 0.0f; + actor->gravity = 0.0f; + actor->speed.y = 0.0f; + i_this->timer[0] = 40; + unk_flag = 60; target_info_count = 0; fpcM_Search(s_h_sub, i_this); static_cast(target_info[8])->setShake(1); @@ -938,87 +998,87 @@ static int e_mk_e_demo(e_mk_class* i_this) { case 3: rv = 2; i_this->field_0x5d4 = 0; - if (i_this->field_0x6fc[0] < 12) { - i_this->field_0x5d8 = i_this->field_0x6fc[0] << 1; - if (i_this->field_0x5d8 >= 12.0f) { - i_this->field_0x5d8 = i_this->field_0x5d8 - 12.0f; + if (i_this->timer[0] < 12) { + i_this->btpFrame = i_this->timer[0] << 1; + if (i_this->btpFrame >= 12.0f) { + i_this->btpFrame = i_this->btpFrame - 12.0f; } } - if (i_this->field_0x6fc[0] == 0) { - i_this->enemy.gravity = -0.03f; - if (i_this->enemy.speed.y < -1.0f) { - anm_init(i_this, 14, 10.0f, 0, 1.0f); - i_this->enemy.speedF = 0.0f; - i_this->enemy.gravity = -2.0f; - i_this->mMode = 4; + if (i_this->timer[0] == 0) { + actor->gravity = AREG_F(18) + -0.03f; + if (actor->speed.y < AREG_F(19) + -1.0f) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_FALL_e, WREG_F(2) + 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + actor->speedF = WREG_F(0); + actor->gravity = WREG_F(1) + -2.0f; + i_this->mode = 4; } } break; case 4: - if (i_this->mAcch.ChkGroundHit()) { - i_this->enemy.speedF = 0.0f; - i_this->field_0x71b = 2; - cVar6 = 30; - i_this->mMode = 100; - i_this->field_0x5e0 = 1; - ok_anm_init(i_this, 43, 1.0f, 2, 1.0f); - cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); - sp38.x = 0.0f; - sp38.y = 0.0f; - sp38.z = -50.0f; - MtxPosition(&sp38, &sp44); - i_this->field_0x5e4 += sp44; - i_this->field_0x5f0 = i_this->enemy.shape_angle; - i_this->field_0x5f0.x = 0x4000; - i_this->field_0x5fc = 30.0f; - i_this->field_0x600 = -20.0f; - i_this->mDemoMode = 5; - i_this->mDemoCamTimer = 0; - i_this->field_0x60e = 1; + if (i_this->acch.ChkGroundHit()) { + actor->speedF = 0.0f; + i_this->setSmokeFlag = 2; + unk_flag = 30; + i_this->mode = 100; + i_this->unkFlag1 = 1; + ok_anm_init(i_this, dRes_INDEX_E_MK_BCK_OK_DEMO_DROP_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.x = 0.0f; + work.y = 0.0f; + work.z = WREG_F(6) + -50.0f; + MtxPosition(&work, &offset); + i_this->crownPos += offset; + i_this->unkRotation = actor->shape_angle; + i_this->unkRotation.x = 0x4000; // 90° + i_this->field_0x5fc = WREG_F(8) + 30.0f; + i_this->field_0x600 = WREG_F(9) + -20.0f; + i_this->demoSubMode = 5; + i_this->demoCamCounter = 0; + i_this->btpFrameFlag = 1; } break; case 5: - anm_init(i_this, 22, 1.0f, 0, 1.0f); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_WAKEUP_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); i_this->field_0x5d4 = 60; - i_this->mMode++; + i_this->mode++; break; case 6: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 13, 5.0f, 0, 1.0f); - i_this->mMode++; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_ESCAPE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode++; i_this->field_0x5d4 = 125; - i_this->mDemoMode = 8; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 8; + i_this->demoCamCounter = 0; } break; case 7: if (frame == 144) { - i_this->field_0x718 = 0; - i_this->field_0x6fa = 100; - i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f); - i_this->enemy.speed.set(0.0f, 0.0f, 0.0f); - i_this->field_0x5b8 = STAGE_CENTER_POS; - i_this->field_0x5b8.y += 500.0f; - sp38 = i_this->field_0x5b8 - i_this->enemy.current.pos; - i_this->enemy.current.angle.y = cM_atan2s(sp38.x, sp38.z); - i_this->enemy.current.angle.x = -cM_atan2s(sp38.y, JMAFastSqrt(sp38.x * sp38.x + sp38.z * sp38.z)); - cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); - cMtx_XrotM(*calc_mtx, i_this->enemy.current.angle.x); - sp38.x = 0.0; - sp38.y = 0.0; - sp38.z = 70.0; - MtxPosition(&sp38, &i_this->enemy.speed); - i_this->field_0x6be = 1; - i_this->field_0x6c0 = i_this->enemy.current.pos; - i_this->field_0x6cc = i_this->field_0x5b8; - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1); - i_this->mAction = e_mk_class::ACT_MOVE; - i_this->mMode = 4; + i_this->unkFlag5 = 0; + i_this->unkCounter1 = 100; + i_this->posTargetStep.set(0.0f, 0.0f, 0.0f); + actor->speed.set(0.0f, 0.0f, 0.0f); + i_this->posTarget = STAGE_CENTER_POS; + i_this->posTarget.y += 500.0f; + work = i_this->posTarget - actor->current.pos; + actor->current.angle.y = cM_atan2s(work.x, work.z); + actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z)); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + cMtx_XrotM(*calc_mtx, actor->current.angle.x); + work.x = 0.0; + work.y = 0.0; + work.z = TREG_F(10) + 70.0f; + MtxPosition(&work, &actor->speed); + i_this->unkFlag2 = 1; + i_this->prevPos = actor->current.pos; + i_this->prevPosTarget = i_this->posTarget; + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1); + i_this->action = e_mk_class::ACT_MOVE; + i_this->mode = 4; return 0; } break; @@ -1028,834 +1088,846 @@ static int e_mk_e_demo(e_mk_class* i_this) { break; } - cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); - sp38.x = 0.0f; - sp38.y = 0.0f; - sp38.z = i_this->enemy.speedF; - MtxPosition(&sp38, &sp44); - i_this->enemy.speed.x = sp44.x; - i_this->enemy.speed.z = sp44.z; - if (cVar6 != 0) { - dComIfGp_getVibration().StartShock(5, 1, cXyz(0.0f, 1.0f, 0.0f)); - i_this->mSound.startCreatureSound(Z2SE_EN_FM_FOOTNOTE, 0, -1); - i_this->field_0xc98 = cVar6; + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.x = 0.0f; + work.y = 0.0f; + work.z = actor->speedF; + MtxPosition(&work, &offset); + actor->speed.x = offset.x; + actor->speed.z = offset.z; + if (unk_flag != 0) { + dComIfGp_getVibration().StartShock((int)YREG_S(2) + VIBMODE_S_POWER5, 1, cXyz(0.0f, 1.0f, 0.0f)); + i_this->sound.startCreatureSound(Z2SE_EN_FM_FOOTNOTE, 0, -1); + i_this->field_0xc98 = unk_flag; } return rv; } +/* Acotr logic for the cutscene in the Forest Temple when Ook cuts down the bridge with the boomerang */ static void e_mk_r04_demo(e_mk_class* i_this) { - int frame = i_this->mpModelMorf->getFrame(); - f32 fVar2 = 0.0f; - i_this->field_0x704 = 5; - switch(i_this->mMode) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, offset; + int frame = i_this->anmP->getFrame(); + f32 target_speedF = 0.0f; + i_this->invulnerabilityTimer = 5; + + switch(i_this->mode) { case 0: - anm_init(i_this, 40, 1.0f, 2, 1.0f); - i_this->mMode = 1; - i_this->field_0xc30 = 3; - i_this->mDemoMode = 1; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 1; + i_this->demoMode = e_mk_class::DEMO_MODE_R04; + i_this->demoSubMode = 1; break; case 2: - anm_init(i_this, 34, 3.0f, 2, 1.0f); - i_this->mMode = 3; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_RUN_e, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 3; break; case 3: - fVar2 = 30.0f; - if (i_this->enemy.current.pos.z > -600.0f) { - i_this->mMode = 4; - anm_init(i_this, 40, 5.0f, 2, 1.0f); - i_this->field_0x6fc[0] = 0; + target_speedF = KREG_F(8) + 30.0f; + if (actor->current.pos.z > -600.0f) { + i_this->mode = 4; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->timer[0] = 0; } break; case 4: - if (i_this->field_0x6fc[0] == 0) { - i_this->mSound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1); - anm_init(i_this, 20, 5.0f, 0, 1.0f); - i_this->mMode = 5; + if (i_this->timer[0] == 0) { + i_this->sound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1); + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_RAISE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 5; } break; case 5: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 21, 2.0f, 2, 1.0f); - i_this->mMode = 6; - i_this->field_0x6fc[0] = 95; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 6; + i_this->timer[0] = VREG_S(7) + 95; } break; case 6: - if (i_this->field_0x6fc[0] == 0) { - anm_init(i_this, 19, 1.0f, 0, 1.0f); - i_this->mMode = 7; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); - i_this->field_0x707 = 7; + if (i_this->timer[0] == 0) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 7; + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1); + i_this->unkFlag4 = 7; } break; case 7: - if (frame == 8) { - i_this->field_0x707 = 1; + if (frame == hREG_S(3) + 8) { + i_this->unkFlag4 = 1; } - if (frame == 8) { - i_this->field_0x60d = 0; + if (frame == hREG_S(4) + 8) { + i_this->boomerangStatus = 0; } - if (frame == 14) { - i_this->mMode = 8; - anm_init(i_this, 40, 10.0f, 2, 1.0f); + if (frame == hREG_S(5) + 14) { + i_this->mode = 8; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); } break; case 8: - if (i_this->field_0x707 == 2) { - anm_init(i_this, 9, 3.0f, 0, 0.0f); - i_this->field_0x707 = 0; + if (i_this->unkFlag4 == 2) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f); + i_this->unkFlag4 = 0; } - if (i_this->field_0x707 == 3) { - i_this->field_0x707 = 0; - i_this->field_0x60d = 1; - anm_init(i_this, 9, 1.0f, 0, 1.0f); - i_this->mMode = 9; + if (i_this->unkFlag4 == 3) { + i_this->unkFlag4 = 0; + i_this->boomerangStatus = 1; + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 9; - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); - i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1); + i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); } break; case 9: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 15, 5.0f, 2, 1.0f); - i_this->field_0x6fc[0] = 30; - i_this->mMode = 10; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->timer[0] = 30; + i_this->mode = 10; } break; case 10: - if (i_this->field_0x6fc[0] == 0) { - anm_init(i_this, 33, 10.0f, 0, 1.0f); - i_this->mMode = 11; + if (i_this->timer[0] == 0) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mode = 11; } break; case 11: - if (i_this->mpModelMorf->isStop()) { - anm_init(i_this, 34, 3.0f, 2, 1.0f); - i_this->mMode = 12; - i_this->field_0x6fc[0] = 10; + if (i_this->anmP->isStop()) { + anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_RUN_e, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mode = 12; + i_this->timer[0] = 10; } break; case 12: - if (i_this->field_0x6fc[0] == 0) { - fVar2 = 30.0f; + if (i_this->timer[0] == 0) { + target_speedF = KREG_F(8) + 30.0f; } - cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->enemy.home.angle.y + (u16)-0x8000, 2, 0x1000); + cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y + (u16)-0x8000, 2, 0x1000); break; } - cLib_addCalc2(&i_this->enemy.speedF, fVar2, 1.0f, 5.0f); - i_this->enemy.gravity = -10.0f; - cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); - cXyz sp2c, sp38; - sp2c.x = 0.0f; - sp2c.y = 0.0f; - sp2c.z = i_this->enemy.speedF; - MtxPosition(&sp2c, &sp38); - i_this->enemy.speed.x = sp38.x; - i_this->enemy.speed.z = sp38.z; - i_this->enemy.current.pos += i_this->enemy.speed; - i_this->enemy.speed.y += i_this->enemy.gravity; + cLib_addCalc2(&actor->speedF, target_speedF, 1.0f, 5.0f); + actor->gravity = AREG_F(15) + -10.0f; + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.x = 0.0f; + work.y = 0.0f; + work.z = actor->speedF; + MtxPosition(&work, &offset); + actor->speed.x = offset.x; + actor->speed.z = offset.z; + actor->current.pos += actor->speed; + actor->speed.y += actor->gravity; } -static void cam_3d_morf(e_mk_class* i_this, f32 param_2) { - cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0xc5c.x, param_2, i_this->field_0xc74.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0xc5c.y, param_2, i_this->field_0xc74.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0xc5c.z, param_2, i_this->field_0xc74.z * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.x, i_this->field_0xc50.x, param_2, i_this->field_0xc68.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.y, i_this->field_0xc50.y, param_2, i_this->field_0xc68.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.z, i_this->field_0xc50.z, param_2, i_this->field_0xc68.z * i_this->field_0xc84); +static void cam_3d_morf(e_mk_class* i_this, f32 i_scale) { + cLib_addCalc2(&i_this->camCenter.x, i_this->camCenterTarget.x, i_scale, i_this->distToCamCenterTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.y, i_this->camCenterTarget.y, i_scale, i_this->distToCamCenterTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.z, i_this->camCenterTarget.z, i_scale, i_this->distToCamCenterTarget.z * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.x, i_this->camEyeTarget.x, i_scale, i_this->distToCamEyeTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.y, i_this->camEyeTarget.y, i_scale, i_this->distToCamEyeTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.z, i_this->camEyeTarget.z, i_scale, i_this->distToCamEyeTarget.z * i_this->camStepScale1); } +/* Camera logic for cutscene at start of Ook battle */ static void demo_camera_start(e_mk_class* i_this) { - fopAc_ac_c* a_this = &i_this->enemy; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - fopAc_ac_c* actor_sp1c; // sp1c - fopAc_ac_c* actor_sp18; // sp18 - fopAc_ac_c* actor_sp14; // sp14 - actor_sp14 = fopAcM_SearchByID(i_this->field_0x708); + fopAc_ac_c* deku_baba_1_p; + fopAc_ac_c* deku_baba_2_p; + fopAc_ac_c* boomerang_p; + boomerang_p = fopAcM_SearchByID(i_this->boomerangId); camera_class* camera1 = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); camera_class* camera2 = (camera_class*)dComIfGp_getCamera(0); - cXyz sp34, sp40, sp4c, sp58; + cXyz work, offset, offset_2, unused; - switch (i_this->mDemoMode) { + switch (i_this->demoSubMode) { case 0: break; + case 1: - if (!a_this->eventInfo.checkCommandDemoAccrpt()) { - fopAcM_orderPotentialEvent(a_this, 2, 0xffff, 0); - a_this->eventInfo.onCondition(dEvtCnd_CANDEMO_e); + if (!actor->eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(actor, 2, 0xFFFF, 0); + actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e); return; } camera1->mCamera.Stop(); - i_this->mDemoMode = 2; - i_this->mDemoCamTimer = 0; - i_this->mDemoCamFovy = 50.0f + NREG_F(10); + i_this->demoSubMode = 2; + i_this->demoCamCounter = 0; + i_this->demoCamFovy = 50.0f + NREG_F(10); camera1->mCamera.SetTrimSize(3); - i_this->field_0xc90 = 2500.0f + NREG_F(11); + i_this->field_0xc90 = 2500.0f + NREG_F(1); daPy_getPlayerActorClass()->changeOriginalDemo(); Z2GetAudioMgr()->bgmStreamPrepare(0x200000D); - i_this->mCamEye = camera2->lookat.eye; - i_this->mCamCenter = camera2->lookat.center; - i_this->field_0xc50.set(-271.0f, 4559.0f, -7241.0f); - i_this->field_0xc5c.set(-70.0f, 4378.0f, -6233.0f); + i_this->camEye = camera2->lookat.eye; + i_this->camCenter = camera2->lookat.center; + i_this->camEyeTarget.set(-271.0f, 4559.0f, -7241.0f); + i_this->camCenterTarget.set(-70.0f, 4378.0f, -6233.0f); - i_this->field_0xc68.x = fabsf(i_this->field_0xc50.x - i_this->mCamEye.x); - i_this->field_0xc68.y = fabsf(i_this->field_0xc50.y - i_this->mCamEye.y); - i_this->field_0xc68.z = fabsf(i_this->field_0xc50.z - i_this->mCamEye.z); - i_this->field_0xc74.x = fabsf(i_this->field_0xc5c.x - i_this->mCamCenter.x); - i_this->field_0xc74.y = fabsf(i_this->field_0xc5c.y - i_this->mCamCenter.y); - i_this->field_0xc74.z = fabsf(i_this->field_0xc5c.z - i_this->mCamCenter.z); + i_this->distToCamEyeTarget.x = fabsf(i_this->camEyeTarget.x - i_this->camEye.x); + i_this->distToCamEyeTarget.y = fabsf(i_this->camEyeTarget.y - i_this->camEye.y); + i_this->distToCamEyeTarget.z = fabsf(i_this->camEyeTarget.z - i_this->camEye.z); + i_this->distToCamCenterTarget.x = fabsf(i_this->camCenterTarget.x - i_this->camCenter.x); + i_this->distToCamCenterTarget.y = fabsf(i_this->camCenterTarget.y - i_this->camCenter.y); + i_this->distToCamCenterTarget.z = fabsf(i_this->camCenterTarget.z - i_this->camCenter.z); - dComIfGp_getEvent().startCheckSkipEdge(a_this); + dComIfGp_getEvent().startCheckSkipEdge(actor); // fallthrough case 2: - if (i_this->mDemoCamTimer == (s16)(8 + VREG_S(0))) { + if (i_this->demoCamCounter == (s16)(8 + VREG_S(0))) { ((daPy_py_c*)daPy_getPlayerActorClass())->changeDemoMode(25, 0, 0, 0); } - if (i_this->mDemoCamTimer >= (s16)(35 + VREG_S(1))) { + if (i_this->demoCamCounter >= (s16)(35 + VREG_S(1))) { cam_3d_morf(i_this, 0.1f); - cLib_addCalc2(&i_this->field_0xc84, 0.03f + VREG_F(1), 1.0f, 0.0005f + VREG_F(2)); + cLib_addCalc2(&i_this->camStepScale1, 0.03f + VREG_F(1), 1.0f, 0.0005f + VREG_F(2)); } - if (i_this->mDemoCamTimer >= (s16)(160 + VREG_S(2))) { - i_this->mDemoCamTimer = 0; - i_this->mDemoMode = 3; + if (i_this->demoCamCounter >= (s16)(160 + VREG_S(3))) { + i_this->demoCamCounter = 0; + i_this->demoSubMode = 3; } break; + case 3: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = 0.0f; - sp34.y = 150.0f + NREG_F(6); - sp34.z = 250.0f + NREG_F(7); - MtxPosition(&sp34, &sp40); - i_this->mCamEye = a_this->current.pos + sp40; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 150.0f + NREG_F(8); - if (i_this->mDemoCamTimer >= 60) { - i_this->mDemoCamTimer = 0; - i_this->mDemoMode = 4; - i_this->mMode = 2; + work.x = 0.0f; + work.y = 150.0f + NREG_F(6); + work.z = 250.0f + NREG_F(7); + MtxPosition(&work, &offset); + i_this->camEye = actor->current.pos + offset; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += 150.0f + NREG_F(8); + if (i_this->demoCamCounter >= 60) { + i_this->demoCamCounter = 0; + i_this->demoSubMode = 4; + i_this->mode = 2; } break; - case 4: + case 4: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = 0.0f; - sp34.y = 150.0f + NREG_F(9); - sp34.z = 700.0f + NREG_F(10); - MtxPosition(&sp34, &sp40); - i_this->mCamEye = a_this->current.pos + sp40; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 230.0f + NREG_F(11); + work.x = 0.0f; + work.y = 150.0f + NREG_F(9); + work.z = 700.0f + NREG_F(10); + MtxPosition(&work, &offset); + i_this->camEye = actor->current.pos + offset; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += 230.0f + NREG_F(11); - if (i_this->mDemoCamTimer == 35) { + if (i_this->demoCamCounter == 35) { daPy_getPlayerActorClass()->changeDemoMode(12, 0, 1, 0); } - if (i_this->mDemoCamTimer >= (s16)(95 + XREG_S(0))) { - i_this->mDemoCamTimer = 0; - i_this->mDemoMode = 5; + if (i_this->demoCamCounter >= (s16)(95 + XREG_S(0))) { + i_this->demoCamCounter = 0; + i_this->demoSubMode = 5; i_this->field_0xc9c = 1100.0f; - i_this->field_0xc84 = 0.0f; + i_this->camStepScale1 = 0.0f; i_this->field_0xc90 = 2500.0f + NREG_F(12); cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); cMtx_XrotM(*calc_mtx, 1700 + NREG_S(2)); - sp34.x = 0.0f; - sp34.y = 0.0f; - sp34.z = i_this->field_0xc90; - MtxPosition(&sp34, &sp4c); - sp4c += a_this->current.pos; + work.x = 0.0f; + work.y = 0.0f; + work.z = i_this->field_0xc90; + MtxPosition(&work, &offset_2); + offset_2 += actor->current.pos; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = NREG_F(2) - 300.0f; - sp34.y = 0.0f; - sp34.z = 0.0f; - MtxPosition(&sp34, &sp40); - sp4c += sp40; - sp34.x = 100.0f + NREG_F(13); - sp34.y = 0.0f; - sp34.z = 200.0f + NREG_F(14); - MtxPosition(&sp34, &sp40); - sp40 += sp4c; - sp40.y = player->current.pos.y; - player->setPlayerPosAndAngle(&sp40, a_this->current.angle.y + (u16)-0x8000, 0); + work.x = NREG_F(2) - 300.0f; + work.y = 0.0f; + work.z = 0.0f; + MtxPosition(&work, &offset); + offset_2 += offset; + work.x = 100.0f + NREG_F(13); + work.y = 0.0f; + work.z = 200.0f + NREG_F(14); + MtxPosition(&work, &offset); + offset += offset_2; + offset.y = player->current.pos.y; + player->setPlayerPosAndAngle(&offset, actor->current.angle.y + (u16)-0x8000, 0); } break; + case 5: i_this->field_0xc90 = 2500.0f + NREG_F(12) - 50.0f; i_this->field_0xc9c = -700.0f + TREG_F(14) + 200.0f + 1000.0f; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); cMtx_XrotM(*calc_mtx, i_this->field_0xc9c); - sp34.x = 0.0f; - sp34.y = 0.0f; - sp34.z = 3500.0f + NREG_F(0); - MtxPosition(&sp34, &i_this->mCamCenter); - i_this->mCamCenter += a_this->current.pos; + work.x = 0.0f; + work.y = 0.0f; + work.z = 3500.0f + NREG_F(0); + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += actor->current.pos; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); cMtx_XrotM(*calc_mtx, 2000 + NREG_S(2)); - sp34.x = 0.0f; - sp34.y = 0.0f; - sp34.z = i_this->field_0xc90; - MtxPosition(&sp34, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; + work.x = 0.0f; + work.y = 0.0f; + work.z = i_this->field_0xc90; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = NREG_F(2) - 300.0f; - sp34.y = 0.0f; - sp34.z = 0.0f; - MtxPosition(&sp34, &sp40); - i_this->mCamEye += sp40; + work.x = NREG_F(2) - 300.0f; + work.y = 0.0f; + work.z = 0.0f; + MtxPosition(&work, &offset); + i_this->camEye += offset; - if (i_this->mDemoCamTimer == 5) { + if (i_this->demoCamCounter == 5) { daPy_getPlayerActorClass()->changeDemoMode(23, 1, 2, 0); } - if (i_this->mDemoCamTimer >= 50) { - i_this->mDemoCamTimer = 0; - i_this->mDemoMode = 6; + if (i_this->demoCamCounter >= 50) { + i_this->demoCamCounter = 0; + i_this->demoSubMode = 6; } break; + case 6: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = 0.0f; - sp34.y = 150.0f + NREG_F(9); - sp34.z = 700.0f + NREG_F(10); - MtxPosition(&sp34, &sp40); - i_this->mCamEye = a_this->current.pos + sp40; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 230.0f + NREG_F(11); + work.x = 0.0f; + work.y = 150.0f + NREG_F(9); + work.z = 700.0f + NREG_F(10); + MtxPosition(&work, &offset); + i_this->camEye = actor->current.pos + offset; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += 230.0f + NREG_F(11); - if (i_this->mDemoCamTimer == 2) { - i_this->field_0x707 = 7; + if (i_this->demoCamCounter == 2) { + i_this->unkFlag4 = 7; } - if (i_this->mDemoCamTimer >= 10) { - i_this->mMode = 4; - i_this->mDemoMode = 100; - sp34.x = 200.0f + JREG_F(14); - sp34.y = 0.0f; - sp34.z = -150.0f + JREG_F(15); - MtxPosition(&sp34, &sp40); - sp40 += player->current.pos; - player->setPlayerPosAndAngle(&sp40, a_this->current.angle.y + (u16)-0x8000, 0); + if (i_this->demoCamCounter >= 10) { + i_this->mode = 4; + i_this->demoSubMode = 100; + work.x = 200.0f + JREG_F(14); + work.y = 0.0f; + work.z = -150.0f + JREG_F(15); + MtxPosition(&work, &offset); + offset += player->current.pos; + player->setPlayerPosAndAngle(&offset, actor->current.angle.y + (u16)-0x8000, 0); } break; - case 7: - if (actor_sp14 == NULL) break; - i_this->mCamCenter = actor_sp14->current.pos; + case 7: + if (boomerang_p == NULL) break; + + i_this->camCenter = boomerang_p->current.pos; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = 300.0f + NREG_F(16); - sp34.y = -200.0f + NREG_F(17); - sp34.z = 1000.0f + NREG_F(18); - MtxPosition(&sp34, &sp40); - i_this->mCamEye = a_this->current.pos + sp40; - i_this->mDemoMode = 8; - i_this->mDemoCamTimer = 0; + work.x = 300.0f + NREG_F(16); + work.y = -200.0f + NREG_F(17); + work.z = 1000.0f + NREG_F(18); + MtxPosition(&work, &offset); + i_this->camEye = actor->current.pos + offset; + i_this->demoSubMode = 8; + i_this->demoCamCounter = 0; // fallthrough case 8: - cLib_addCalc2(&i_this->mCamCenter.x, actor_sp14->current.pos.x, 0.2f, 100.0f); - cLib_addCalc2(&i_this->mCamCenter.y, actor_sp14->current.pos.y + i_this->field_0xc8c, 0.2f, 100.0f); - cLib_addCalc2(&i_this->mCamCenter.z, actor_sp14->current.pos.z, 0.2f, 100.0f); + cLib_addCalc2(&i_this->camCenter.x, boomerang_p->current.pos.x, 0.2f, 100.0f); + cLib_addCalc2(&i_this->camCenter.y, boomerang_p->current.pos.y + i_this->field_0xc8c, 0.2f, 100.0f); + cLib_addCalc2(&i_this->camCenter.z, boomerang_p->current.pos.z, 0.2f, 100.0f); cLib_addCalc2(&i_this->field_0xc8c, -300.0f + JREG_F(7), 1.0f, 5.0f + JREG_F(8)); - i_this->mCamEye += actor_sp14->speed * (0.45f + TREG_F(19)); - i_this->mCamEye.y -= 3.0f + JREG_F(3); - if (i_this->mDemoCamTimer < 65) { + i_this->camEye += boomerang_p->speed * (0.45f + TREG_F(19)); + i_this->camEye.y -= 3.0f + JREG_F(3); + if (i_this->demoCamCounter < 65) { break; } - i_this->mDemoMode = 9; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 9; + i_this->demoCamCounter = 0; // fallthrough case 9: - actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID); - actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2); - if (i_this->mDemoCamTimer == 0) { - actor_sp18->current.pos.x = player->current.pos.x - 200.0f; - actor_sp18->current.pos.y = player->current.pos.y + 500.0f; - actor_sp18->current.pos.z = player->current.pos.z - 1200.0f; - actor_sp18->speed.y = 0.0f; - actor_sp1c->current.pos.x = player->current.pos.x + 200.0f; - actor_sp1c->current.pos.y = player->current.pos.y + 1000.0f; - actor_sp1c->current.pos.z = player->current.pos.z - 1000.0f; - actor_sp1c->speed.y = 0.0f; - i_this->mCamCenter.x = actor_sp18->current.pos.x; - i_this->mCamCenter.z = actor_sp18->current.pos.z; + deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1); + deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2); + if (i_this->demoCamCounter == 0) { + deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f; + deku_baba_1_p->current.pos.y = player->current.pos.y + 500.0f; + deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f; + deku_baba_1_p->speed.y = 0.0f; + deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f; + deku_baba_2_p->current.pos.y = player->current.pos.y + 1000.0f; + deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f; + deku_baba_2_p->speed.y = 0.0f; + i_this->camCenter.x = deku_baba_1_p->current.pos.x; + i_this->camCenter.z = deku_baba_1_p->current.pos.z; } - i_this->mCamEye.x = player->current.pos.x + 100.0f + ZREG_F(0); - i_this->mCamEye.y = player->current.pos.y + 100.0f + ZREG_F(1); - i_this->mCamEye.z = player->current.pos.z - 400.0f + ZREG_F(2); - i_this->mCamCenter.y = actor_sp18->current.pos.y + ZREG_F(3); + i_this->camEye.x = player->current.pos.x + 100.0f + ZREG_F(0); + i_this->camEye.y = player->current.pos.y + 100.0f + ZREG_F(1); + i_this->camEye.z = player->current.pos.z - 400.0f + ZREG_F(2); + i_this->camCenter.y = deku_baba_1_p->current.pos.y + ZREG_F(3); - cLib_addCalc2(&i_this->mCamCenter.x, actor_sp18->current.pos.x + 100.0f, 0.1f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.z, actor_sp18->current.pos.z, 0.1f, 50.0f); + cLib_addCalc2(&i_this->camCenter.x, deku_baba_1_p->current.pos.x + 100.0f, 0.1f, 50.0f); + cLib_addCalc2(&i_this->camCenter.z, deku_baba_1_p->current.pos.z, 0.1f, 50.0f); - if (i_this->mDemoCamTimer <= (s16)(60 + AREG_S(0))) { - actor_sp14->current.pos -= actor_sp14->speed; + if (i_this->demoCamCounter <= (s16)(60 + AREG_S(0))) { + boomerang_p->current.pos -= boomerang_p->speed; } - if (i_this->mDemoCamTimer >= (s16)(80 + AREG_S(0))) { - i_this->mDemoMode = 10; - i_this->mDemoCamTimer = 0; + if (i_this->demoCamCounter >= (s16)(80 + AREG_S(0))) { + i_this->demoSubMode = 10; + i_this->demoCamCounter = 0; } break; + case 10: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.x = 0.0f; - sp34.y = 150.0f + NREG_F(9); - sp34.z = 700.0f + NREG_F(10); - MtxPosition(&sp34, &sp40); - i_this->mCamEye = a_this->current.pos + sp40; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 230.0f + NREG_F(11); + work.x = 0.0f; + work.y = 150.0f + NREG_F(9); + work.z = 700.0f + NREG_F(10); + MtxPosition(&work, &offset); + i_this->camEye = actor->current.pos + offset; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += 230.0f + NREG_F(11); - actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID); - actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2); - actor_sp18->current.pos.x = player->current.pos.x - 200.0f; - actor_sp18->current.pos.z = player->current.pos.z - 1200.0f; - actor_sp1c->current.pos.x = player->current.pos.x + 200.0f; - actor_sp1c->current.pos.z = player->current.pos.z - 1000.0f; + deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1); + deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2); + deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f; + deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f; + deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f; + deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f; break; + case 11: - if (i_this->mDemoCamTimer >= (s16)(30 + JREG_S(9))) { + if (i_this->demoCamCounter >= (s16)(30 + JREG_S(9))) { cMtx_YrotS(*calc_mtx, player->shape_angle.y); - sp34.x = 0.0f; - sp34.y = 200.0f; - sp34.z = -400.0f; - MtxPosition(&sp34, &i_this->mCamEye); - i_this->mCamEye += player->current.pos; - i_this->mCamCenter = player->current.pos; - i_this->mCamCenter.y += 100.0f; - i_this->field_0xc30 = 10; - fopAcM_OffStatus(a_this, 0x4000); + work.x = 0.0f; + work.y = 200.0f; + work.z = -400.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += player->current.pos; + i_this->camCenter = player->current.pos; + i_this->camCenter.y += 100.0f; + i_this->demoMode = e_mk_class::DEMO_MODE_FINISH; + fopAcM_OffStatus(actor, 0x4000); Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY); } - actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID); - actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2); - actor_sp18->current.pos.x = player->current.pos.x - 200.0f; - actor_sp18->current.pos.z = player->current.pos.z - 1200.0f; - actor_sp1c->current.pos.x = player->current.pos.x + 200.0f; - actor_sp1c->current.pos.z = player->current.pos.z - 1000.0f; + deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1); + deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2); + deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f; + deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f; + deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f; + deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f; break; + case 100: break; } if (dComIfGp_getEvent().checkSkipEdge()) { - u8 i_no = (fopAcM_GetParam(i_this) & 0xff0000) >> 16; - if (i_no != 0xff) { - dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(a_this)); + u8 sw_bit = (fopAcM_GetParam(actor) & 0xff0000) >> 16; + if (sw_bit != 0xff) { + dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor)); } - dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(a_this), 0, -1); + dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(actor), 0, -1); } } static void demo_camera_end(e_mk_class* i_this) { - fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_SearchByID(i_this->field_0x708); + fopAc_ac_c* boomerang_p = (fopAc_ac_c*)fopAcM_SearchByID(i_this->boomerangId); camera_class* camera = (camera_class*)dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); - cXyz sp2c, i_pos, sp44, sp50; + cXyz work, pos, unused_1, unused_2; - switch (i_this->mDemoMode) { + switch (i_this->demoSubMode) { case 1: - if (!a_this->eventInfo.checkCommandDemoAccrpt()) { - fopAcM_orderPotentialEvent(a_this, 2, 0xffff, 0); - a_this->eventInfo.onCondition(dEvtCnd_CANDEMO_e); + if (!actor->eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(actor, 2, 0xffff, 0); + actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e); return; } camera->mCamera.Stop(); - i_this->mDemoMode = 2; - i_this->mDemoCamTimer = 0; - i_this->mDemoCamFovy = 55.0f; + i_this->demoSubMode = 2; + i_this->demoCamCounter = 0; + i_this->demoCamFovy = NREG_F(10) + 55.0f; camera->mCamera.SetTrimSize(3); daPy_getPlayerActorClass()->changeOriginalDemo(); - actor->current.pos.y += 10000.0f; + boomerang_p->current.pos.y += 10000.0f; Z2GetAudioMgr()->bgmStreamPrepare(0x200000E); dComIfGs_onStageMiddleBoss(); // fallthrough case 2: - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = 0.0f; - sp2c.y = 130.0f; - sp2c.z = 0.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += a_this->current.pos; - sp2c.x = 400.0f; - sp2c.y = 100.0f; - sp2c.z = 200.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; - sp2c.x = 0.0f; - sp2c.y = 0.0f; - sp2c.z = -300.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += a_this->current.pos; - player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0); + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = AREG_F(0); + work.y = AREG_F(1) + 130.0f; + work.z = AREG_F(2); + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += actor->current.pos; + work.x = AREG_F(3) + 400.0f; + work.y = AREG_F(4) + 100.0f; + work.z = AREG_F(5) + 200.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; + work.x = AREG_F(6); + work.y = AREG_F(7); + work.z = AREG_F(8) + -300.0f; + MtxPosition(&work, &pos); + pos += actor->current.pos; + player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0); - if (i_this->mDemoCamTimer < 30) { + if (i_this->demoCamCounter < (s16)(AREG_S(0) + 30)) { return; } - i_this->mDemoMode++; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode++; + i_this->demoCamCounter = 0; return; case 3: - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = -300.0f; - sp2c.y = 0.0f; - sp2c.z = -150.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += a_this->current.pos; - sp2c.x = 100.0f; - sp2c.y = 1000.0f; - sp2c.z = 0.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = AREG_F(0) + -300.0f; + work.y = AREG_F(1); + work.z = AREG_F(2) + -150.0f; + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += actor->current.pos; + work.x = AREG_F(3) + 100.0f; + work.y = AREG_F(4) + 1000.0f; + work.z = AREG_F(5); + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; return; case 4: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 250.0f; - sp2c.y = 0.0f; - sp2c.z = -200.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += STAGE_CENTER_POS; - sp2c.x = 250.0f; - sp2c.y = 700.0f; - sp2c.z = 300.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; + work.x = AREG_F(6) + 250.0f; + work.y = AREG_F(7); + work.z = AREG_F(8) + -200.0f; + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += STAGE_CENTER_POS; + work.x = AREG_F(9) + 250.0f; + work.y = AREG_F(10) + 700.0f; + work.z = AREG_F(11) + 300.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; return; case 5: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 450.0f; - sp2c.y = 0.0f; - sp2c.z = -100.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += STAGE_CENTER_POS; - sp2c.x = 250.0f; - sp2c.y = 300.0f; - sp2c.z = 300.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; - sp2c.x = 800.0f; - sp2c.y = 100.0f; - sp2c.z = 100.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - i_this->field_0xc68.x = fabsf(i_pos.x - i_this->mCamEye.x) * 0.02f; - i_this->field_0xc68.y = fabsf(i_pos.y - i_this->mCamEye.y) * 0.02f; - i_this->field_0xc68.z = fabsf(i_pos.z - i_this->mCamEye.z) * 0.02f; - i_this->mDemoMode = 6; - i_this->field_0xc84 = 0; - sp2c.x = 1400.0f; - sp2c.y = 0.0f; - sp2c.z = 500.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0); + work.x = AREG_F(6) + 450.0f; + work.y = AREG_F(7); + work.z = AREG_F(8) + -100.0f; + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += STAGE_CENTER_POS; + work.x = AREG_F(9) + 250.0f; + work.y = AREG_F(10) + 300.0f; + work.z = AREG_F(11) + 300.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; + work.x = AREG_F(9) + 800.0f; + work.y = AREG_F(10) + 100.0f; + work.z = AREG_F(11) + 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + i_this->distToCamEyeTarget.x = fabsf(pos.x - i_this->camEye.x) * 0.02f; + i_this->distToCamEyeTarget.y = fabsf(pos.y - i_this->camEye.y) * 0.02f; + i_this->distToCamEyeTarget.z = fabsf(pos.z - i_this->camEye.z) * 0.02f; + i_this->demoSubMode = 6; + i_this->camStepScale1 = 0; + work.x = WREG_F(12) + 1400.0f; + work.y = WREG_F(13); + work.z = WREG_F(14) + 500.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0); // fallthrough case 6: - cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0x5e4.x, 0.1f, i_this->field_0xc84 * 20.0f); - cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0x5e4.y + 30.0f, 0.1f, i_this->field_0xc84 * 20.0f); - cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0x5e4.z, 0.1f, i_this->field_0xc84 * 20.0f); + cLib_addCalc2(&i_this->camCenter.x, i_this->crownPos.x, 0.1f, i_this->camStepScale1 * 20.0f); + cLib_addCalc2(&i_this->camCenter.y, i_this->crownPos.y + 30.0f + WREG_F(11), 0.1f, i_this->camStepScale1 * 20.0f); + cLib_addCalc2(&i_this->camCenter.z, i_this->crownPos.z, 0.1f, i_this->camStepScale1 * 20.0f); cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 800.0f; - sp2c.y = 100.0f; - sp2c.z = 100.0f; - MtxPosition(&sp2c, &i_pos); + work.x = AREG_F(9) + 800.0f; + work.y = AREG_F(10) + 100.0f; + work.z = AREG_F(11) + 100.0f; + MtxPosition(&work, &pos); - i_pos += STAGE_CENTER_POS; - cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f , 0.1f); + pos += STAGE_CENTER_POS; + cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f , NREG_F(4) + 0.1f); - if (i_this->mDemoCamTimer >= 10) { - cLib_addCalc2(&i_this->mCamEye.x, i_pos.x, 0.1f, i_this->field_0xc68.x * i_this->field_0xc88); - cLib_addCalc2(&i_this->mCamEye.y, i_pos.y, 0.1f, i_this->field_0xc68.y * i_this->field_0xc88); - cLib_addCalc2(&i_this->mCamEye.z, i_pos.z, 0.1f, i_this->field_0xc68.z * i_this->field_0xc88); - cLib_addCalc2(&i_this->field_0xc88, 1.0f, 1.0f, 0.1f); + if (i_this->demoCamCounter >= 10) { + cLib_addCalc2(&i_this->camEye.x, pos.x, 0.1f, i_this->distToCamEyeTarget.x * i_this->camStepScale2); + cLib_addCalc2(&i_this->camEye.y, pos.y, 0.1f, i_this->distToCamEyeTarget.y * i_this->camStepScale2); + cLib_addCalc2(&i_this->camEye.z, pos.z, 0.1f, i_this->distToCamEyeTarget.z * i_this->camStepScale2); + cLib_addCalc2(&i_this->camStepScale2, 1.0f, 1.0f, NREG_F(4) + 0.1f); } - if (i_this->mDemoCamTimer == 40) { - Z2GetAudioMgr()->seStart(Z2SE_MK_DARK_INSECT_DEATH, &i_this->field_0x5e4, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + if (i_this->demoCamCounter == 40) { + Z2GetAudioMgr()->seStart(Z2SE_MK_DARK_INSECT_DEATH, &i_this->crownPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } - if (i_this->mDemoCamTimer < 90) { + if (i_this->demoCamCounter < 90) { return; } - if (i_this->mDemoCamTimer == 90) { - sp2c.x = 1300.0f; - sp2c.y = 0.0f; - sp2c.z = 0.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0); + if (i_this->demoCamCounter == 90) { + work.x = WREG_F(12) + 1300.0f; + work.y = WREG_F(13); + work.z = WREG_F(14); + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0); player->changeDemoMode(3, 1, 0, 0); - sp2c.x = 170.0f; - sp2c.y = 0.0f; - sp2c.z = 0.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += i_this->field_0x5e4; - player->changeDemoPos0(&i_pos); + work.x = WREG_F(15) + 170.0f; + work.y = 0.0f; + work.z = 0.0f; + MtxPosition(&work, &pos); + pos += i_this->crownPos; + player->changeDemoPos0(&pos); } - if (i_this->mDemoCamTimer == 130) { - ok_anm_init(i_this, 42, 1.0f, 0, 1.0f); + if (i_this->demoCamCounter == 130) { + ok_anm_init(i_this, dRes_INDEX_E_MK_BCK_OK_DEMO_DIE_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); } - if (i_this->mDemoCamTimer == 180) { - i_this->field_0x60c = 0; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = 0.0f; - sp2c.y = 0.0f; - sp2c.z = -20.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += i_this->field_0x5e4; - fopAcM_createDisappear(a_this, &i_pos, 5, 0, 0xff); + if (i_this->demoCamCounter == 180) { + i_this->crownStatus = 0; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = 0.0f; + work.y = 0.0f; + work.z = AREG_F(2) + -20.0f; + MtxPosition(&work, &pos); + pos += i_this->crownPos; + fopAcM_createDisappear(actor, &pos, 5, 0, 0xff); } - if (i_this->mDemoCamTimer != 248) { + if (i_this->demoCamCounter != 248) { return; } - i_this->mDemoMode++; - i_this->mDemoCamTimer = 0; - i_this->mMode = 5; + i_this->demoSubMode++; + i_this->demoCamCounter = 0; + i_this->mode = 5; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 300.0f; - sp2c.y = 0.0f; - sp2c.z = 300.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - a_this->current.pos.x = i_pos.x; - a_this->current.pos.z = i_pos.z; - sp2c.x = 130.0f; - sp2c.y = 100.0f; - sp2c.z = 100.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 190.0f; - sp2c.x = 400.0f; - sp2c.y = 0.0f; - sp2c.z = 700.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - sp2c.x = STAGE_CENTER_POS.x - i_pos.x; - sp2c.z = STAGE_CENTER_POS.z - i_pos.z; - player->setPlayerPosAndAngle(&i_pos, cM_atan2s(sp2c.x, sp2c.z), 0); - a_this->current.angle.y = player->shape_angle.y; + work.x = AREG_F(9) + 300.0f; + work.y = AREG_F(10); + work.z = AREG_F(11) + 300.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + actor->current.pos.x = pos.x; + actor->current.pos.z = pos.z; + work.x = AREG_F(3) + 50.0f + 80.0f; + work.y = AREG_F(4) + 120.0f - 20.0f; + work.z = AREG_F(5) + 100.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += AREG_F(12) + 150.0f + 40.0f; + work.x = AREG_F(6) + 400.0f; + work.y = AREG_F(7); + work.z = AREG_F(8) + 700.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + work.x = STAGE_CENTER_POS.x - pos.x; + work.z = STAGE_CENTER_POS.z - pos.z; + player->setPlayerPosAndAngle(&pos, cM_atan2s(work.x, work.z), 0); + actor->current.angle.y = player->shape_angle.y; Z2GetAudioMgr()->bgmStreamPlay(); // fallthrough case 7: - return; + break; case 8: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 500.0f; - sp2c.y = 300.0f; - sp2c.z = 0.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += STAGE_CENTER_POS; - sp2c.x = 50.0f; - sp2c.y = 70.0f; - sp2c.z = 1100.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; + work.x = AREG_F(0) + 500.0f; + work.y = AREG_F(1) + 300.0f; + work.z = AREG_F(2); + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += STAGE_CENTER_POS; + work.x = AREG_F(3) + 50.0f; + work.y = AREG_F(4) + 70.0f; + work.z = AREG_F(5) + 1100.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; return; case 9: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 5500.0f; - sp2c.y = 2300.0f; - sp2c.z = -5000.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += STAGE_CENTER_POS; - sp2c.x = 450.0f; - sp2c.y = 370.0f; - sp2c.z = -100.0f; - MtxPosition(&sp2c,&i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; - if (i_this->mDemoCamTimer < 300) return; - i_this->mDemoMode = 10; - i_this->mDemoCamTimer = 0; - sp2c.x = 400.0f; - sp2c.y = 0.0f; - sp2c.z = 600.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - sp2c.x = STAGE_CENTER_POS.x - player->current.pos.x; - sp2c.z = STAGE_CENTER_POS.z - player->current.pos.z; - player->setPlayerPosAndAngle(&i_pos, cM_atan2s(sp2c.x, sp2c.z), 0); + work.x = AREG_F(0) + 5500.0f; + work.y = AREG_F(1) + 2300.0f; + work.z = AREG_F(2) + -5000.0f; + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += STAGE_CENTER_POS; + work.x = AREG_F(3) + 450.0f; + work.y = AREG_F(4) + 370.0f; + work.z = AREG_F(5) + -100.0f; + MtxPosition(&work,&i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; + if (i_this->demoCamCounter < 300) return; + i_this->demoSubMode = 10; + i_this->demoCamCounter = 0; + work.x = AREG_F(16) + 400.0f; + work.y = AREG_F(17); + work.z = AREG_F(18) + 700.0f - 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + work.x = STAGE_CENTER_POS.x - player->current.pos.x; + work.z = STAGE_CENTER_POS.z - player->current.pos.z; + player->setPlayerPosAndAngle(&pos, cM_atan2s(work.x, work.z), 0); return; case 10: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 0.0f; - sp2c.y = 300.0f; - sp2c.z = -100.0f; - MtxPosition(&sp2c, &i_this->mCamCenter); - i_this->mCamCenter += STAGE_CENTER_POS; - sp2c.x = 800.0f; - sp2c.y = 0.0f;; - sp2c.z = 500.0f; - MtxPosition(&sp2c ,&i_pos); - i_pos += STAGE_CENTER_POS; - i_this->field_0xc74.x = fabsf(i_pos.x - i_this->mCamCenter.x) * 0.01f; - i_this->field_0xc74.y = fabsf(i_pos.y - i_this->mCamCenter.y) * 0.01f; - i_this->field_0xc74.z = fabsf(i_pos.z - i_this->mCamCenter.z) * 0.01f; - sp2c.x = 450.0f; - sp2c.y = 70.0f; - sp2c.z = 900.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += STAGE_CENTER_POS; - sp2c.x = -150.0f; - sp2c.y = 45.0f; - sp2c.z = 700.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - i_this->field_0xc68.x = fabsf(i_pos.x - i_this->mCamEye.x) * 0.01f; - i_this->field_0xc68.y = fabsf(i_pos.y - i_this->mCamEye.y) * 0.01f; - i_this->field_0xc68.z = fabsf(i_pos.z - i_this->mCamEye.z) * 0.01f; - i_this->field_0xc84 = 0.0f; - i_this->mDemoMode = 11; + work.x = AREG_F(0); + work.y = AREG_F(1) + 300.0f; + work.z = AREG_F(2) - 100.0f; + MtxPosition(&work, &i_this->camCenter); + i_this->camCenter += STAGE_CENTER_POS; + work.x = AREG_F(0) + 800.0f; + work.y = AREG_F(1); + work.z = AREG_F(2) + 600.0f - 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + i_this->distToCamCenterTarget.x = fabsf(pos.x - i_this->camCenter.x) * 0.01f; + i_this->distToCamCenterTarget.y = fabsf(pos.y - i_this->camCenter.y) * 0.01f; + i_this->distToCamCenterTarget.z = fabsf(pos.z - i_this->camCenter.z) * 0.01f; + work.x = AREG_F(3) + 450.0f; + work.y = AREG_F(4) + 70.0f; + work.z = AREG_F(5) + 1000.0f - 100.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += STAGE_CENTER_POS; + work.x = AREG_F(3) + -150.0f; + work.y = AREG_F(4) + 45.0f; + work.z = AREG_F(5) + 800.0f - 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + i_this->distToCamEyeTarget.x = fabsf(pos.x - i_this->camEye.x) * 0.01f; + i_this->distToCamEyeTarget.y = fabsf(pos.y - i_this->camEye.y) * 0.01f; + i_this->distToCamEyeTarget.z = fabsf(pos.z - i_this->camEye.z) * 0.01f; + i_this->camStepScale1 = 0.0f; + i_this->demoSubMode = 11; // fallthrough case 11: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp2c.x = 800.0f; - sp2c.y = 0.0f; - sp2c.z = 500.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - cLib_addCalc2(&i_this->mCamCenter.x, i_pos.x, 0.1f, i_this->field_0xc74.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.y, i_pos.y, 0.1f, i_this->field_0xc74.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.z, i_pos.z, 0.1f, i_this->field_0xc74.z * i_this->field_0xc84); - sp2c.x = -150.0f; - sp2c.y = 45.0f; - sp2c.z = 700.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += STAGE_CENTER_POS; - cLib_addCalc2(&i_this->mCamEye.x, i_pos.x, 0.1f, i_this->field_0xc68.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.y, i_pos.y, 0.1f, i_this->field_0xc68.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.z, i_pos.z, 0.1f, i_this->field_0xc68.z * i_this->field_0xc84); - cLib_addCalc2(&i_this->field_0xc84, 0.5f, 1.0f, 0.02f); + work.x = AREG_F(0) + 800.0f; + work.y = AREG_F(1); + work.z = AREG_F(2) + 600.0f - 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + cLib_addCalc2(&i_this->camCenter.x, pos.x, 0.1f, i_this->distToCamCenterTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.y, pos.y, 0.1f, i_this->distToCamCenterTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.z, pos.z, 0.1f, i_this->distToCamCenterTarget.z * i_this->camStepScale1); + work.x = AREG_F(3) + -150.0f; + work.y = AREG_F(4) + 45.0f; + work.z = AREG_F(5) + 800.0f - 100.0f; + MtxPosition(&work, &pos); + pos += STAGE_CENTER_POS; + cLib_addCalc2(&i_this->camEye.x, pos.x, 0.1f, i_this->distToCamEyeTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.y, pos.y, 0.1f, i_this->distToCamEyeTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.z, pos.z, 0.1f, i_this->distToCamEyeTarget.z * i_this->camStepScale1); + cLib_addCalc2(&i_this->camStepScale1, 0.5f, 1.0f, NREG_F(4) + 0.02f); - if (i_this->mDemoCamTimer == 2) { - fopAc_ac_c* local_b0 = fopAcM_SearchByID(i_this->field_0x708); - sp2c.x = 50.0f; - sp2c.y = 10.0f; - sp2c.z = 700.0f; - MtxPosition(&sp2c, &local_b0->current.pos); - local_b0->current.pos += STAGE_CENTER_POS; - local_b0->current.angle.y = 0; - local_b0->shape_angle.y = STAGE_ANGLE_Y; + if (i_this->demoCamCounter == 2) { + fopAc_ac_c* boomerang_p = fopAcM_SearchByID(i_this->boomerangId); + work.x = AREG_F(6) + 50.0f; + work.y = AREG_F(7) + 10.0f; + work.z = AREG_F(8) + 800.0f - 100.0f; + MtxPosition(&work, &boomerang_p->current.pos); + boomerang_p->current.pos += STAGE_CENTER_POS; + boomerang_p->current.angle.y = 0; + boomerang_p->shape_angle.y = STAGE_ANGLE_Y + YREG_S(8); } - if (i_this->mDemoCamTimer == 200) { + if (i_this->demoCamCounter == 200) { player->changeDemoMode(1, 3, 0, 0); player->changeDemoParam0(3); - dComIfGp_getEvent().setPtT(actor); + dComIfGp_getEvent().setPtT(boomerang_p); } - if (i_this->mDemoCamTimer != 250) { + if (i_this->demoCamCounter != (s16)(KREG_S(9) + 250)) { return; } - i_this->mDemoMode = 20; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 20; + i_this->demoCamCounter = 0; return; case 20: - sp2c = actor->current.pos - player->current.pos; - if (i_this->mDemoCamTimer == 3) { + work = boomerang_p->current.pos - player->current.pos; + if (i_this->demoCamCounter == 3) { player->changeDemoMode(3, 1, 0, 0); - cMtx_YrotS(*calc_mtx, cM_atan2s(sp2c.x, sp2c.z)); - sp2c.x = -20.0f; - sp2c.y = 0.0f; - sp2c.z = 200.0f; - MtxPosition(&sp2c, &i_pos); - i_pos += player->current.pos; - player->changeDemoPos0(&i_pos); - sp2c.z = 10000.0f; - MtxPosition(&sp2c, &i_pos); - a_this->current.pos = i_pos; + cMtx_YrotS(*calc_mtx, cM_atan2s(work.x, work.z)); + work.x = nREG_F(7) + -20.0f; + work.y = 0.0f; + work.z = ZREG_F(0) + 200.0f; + MtxPosition(&work, &pos); + pos += player->current.pos; + player->changeDemoPos0(&pos); + work.z = 10000.0f; + MtxPosition(&work, &pos); + actor->current.pos = pos; } - i_pos = actor->current.pos - player->eyePos; - a_this->current.pos = player->eyePos + (i_pos * 20.0f); - if (i_this->mDemoCamTimer != 20) { + pos = boomerang_p->current.pos - player->eyePos; + actor->current.pos = player->eyePos + (pos * 20.0f); + if (i_this->demoCamCounter != 20) { return; } - actor->health = 1; - i_this->mDemoMode = 21; - i_this->mDemoCamTimer = 0; - i_this->field_0xc84 = 0.0f; + boomerang_p->health = 1; + i_this->demoSubMode = 21; + i_this->demoCamCounter = 0; + i_this->camStepScale1 = 0.0f; return; case 21: - cLib_addCalc2(&i_this->mCamCenter.y, actor->current.pos.y - 20.0f, 0.2f, i_this->field_0xc84 * 200.0f); - cLib_addCalc2(&i_this->mCamCenter.x, actor->current.pos.x, 0.4f, i_this->field_0xc84 * 200.0f); - cLib_addCalc2(&i_this->mCamCenter.z, actor->current.pos.z, 0.4f, i_this->field_0xc84 * 200.0f); - cLib_addCalc2(&i_this->mCamEye.y, player->current.pos.y + 110.0f, 0.1f, i_this->field_0xc84 * 10.0f); - cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f, 0.02f); - i_pos = actor->current.pos - player->eyePos; - a_this->current.pos = player->eyePos + (i_pos * 20.0f); - if (i_this->mDemoCamTimer < 70) { + cLib_addCalc2(&i_this->camCenter.y, boomerang_p->current.pos.y + ZREG_F(4) - 20.0f, 0.2f, i_this->camStepScale1 * 200.0f); + cLib_addCalc2(&i_this->camCenter.x, boomerang_p->current.pos.x, 0.4f, i_this->camStepScale1 * 200.0f); + cLib_addCalc2(&i_this->camCenter.z, boomerang_p->current.pos.z, 0.4f, i_this->camStepScale1 * 200.0f); + cLib_addCalc2(&i_this->camEye.y, player->current.pos.y + 110.0f + ZREG_F(5), 0.1f, i_this->camStepScale1 * 10.0f); + cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f, 0.02f); + pos = boomerang_p->current.pos - player->eyePos; + actor->current.pos = player->eyePos + (pos * 20.0f); + if (i_this->demoCamCounter < 70) { return; } - if (i_this->mDemoCamTimer == 70) { - i_this->mMsgFlow.init(a_this, 102, 0, NULL); + if (i_this->demoCamCounter == 70) { + i_this->msgFlow.init(actor, 102, 0, NULL); } - if (i_this->mMsgFlow.doFlow(a_this, NULL, 0) == 0) { + if (i_this->msgFlow.doFlow(actor, NULL, 0) == 0) { return; } - actor->health = 1; + boomerang_p->health = 1; return; case 22: player->changeDemoMode(28, 0, 0, 0); - i_this->mDemoMode++; - i_this->mDemoCamTimer = 0; - i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); + i_this->demoSubMode++; + i_this->demoCamCounter = 0; + i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1); // fallthrough case 23: - cLib_addCalc2(&i_this->mCamCenter.x, player->current.pos.x, 0.4f, i_this->field_0xc84 * 200.0f); - cLib_addCalc2(&i_this->mCamCenter.z, player->current.pos.z, 0.4f, i_this->field_0xc84 * 200.0f); + cLib_addCalc2(&i_this->camCenter.x, player->current.pos.x, 0.4f, i_this->camStepScale1 * 200.0f); + cLib_addCalc2(&i_this->camCenter.z, player->current.pos.z, 0.4f, i_this->camStepScale1 * 200.0f); - if (i_this->mDemoCamTimer == 20) { - fopAcM_createItemForMidBoss(&player->current.pos, 64, fopAcM_GetRoomNo(a_this), 0, 0, 0, -1); - i_this->field_0xc30 = 10; - a_this->current.pos.y += 20000.0f; + if (i_this->demoCamCounter == 20) { + fopAcM_createItemForMidBoss(&player->current.pos, 64, fopAcM_GetRoomNo(actor), 0, 0, 0, -1); + i_this->demoMode = e_mk_class::DEMO_MODE_FINISH; + actor->current.pos.y += 20000.0f; target_info_count = 0; fpcM_Search(s_h_sub, i_this); fopAcM_delete(static_cast(target_info[0])); @@ -1870,6 +1942,8 @@ static void demo_camera_end(e_mk_class* i_this) { } static void* s_ks_sub(void* i_actor, void* i_data) { + i_data; + if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_NPC_KS) && static_cast(i_actor)->field_0x5b6 == 0) { return i_actor; } @@ -1878,279 +1952,285 @@ static void* s_ks_sub(void* i_actor, void* i_data) { } static void* s_brg_sub(void* i_actor, void* i_data) { + i_data; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_OBJ_BRG) { - static_cast(i_actor)->field_0xaef4 = 500.0f; - static_cast(i_actor)->mType |= 4; + static_cast(i_actor)->field_0xaef4 = VREG_F(11) + 500.0f; + static_cast(i_actor)->mType |= (u8)4; } return NULL; } static void* s_brg_sub2(void* i_actor, void* i_data) { + i_data; + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_OBJ_BRG) { - static_cast(i_actor)->mType &= ~0x4; + static_cast(i_actor)->mType &= ~0x4 & 0xFFFFFFFB; } return NULL; } +/* Camera logic for the cutscene in the Forest Temple when Ook cuts the bridge down with the boomerang */ static void demo_camera_r04(e_mk_class* i_this) { - u8 i_no; - fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + u8 sw_bit; daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0); - fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x708); + fopAc_ac_c* boomerang_p = fopAcM_SearchByID(i_this->boomerangId); camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); - cXyz sp2c, sp38; + cXyz work, pos; - npc_ks_class* i_actor = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this); - if (i_actor == NULL) { + npc_ks_class* monkey_p = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this); + if (monkey_p == NULL) { return; } - switch (i_this->mDemoMode) { + switch (i_this->demoSubMode) { case 1: - if (!i_actor->actor.eventInfo.checkCommandDemoAccrpt()) { - fopAcM_orderPotentialEvent(&i_actor->actor, 2, 0xffff, 0); - i_actor->actor.eventInfo.onCondition(dEvtCnd_CANDEMO_e); + if (!monkey_p->actor.eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(&monkey_p->actor, 2, 0xffff, 0); + monkey_p->actor.eventInfo.onCondition(dEvtCnd_CANDEMO_e); return; } camera->mCamera.Stop(); - i_this->mDemoMode = 2; - i_this->mDemoCamTimer = 0; - i_this->mDemoCamFovy = 55.0f; + i_this->demoSubMode = 2; + i_this->demoCamCounter = 0; + i_this->demoCamFovy = NREG_F(10) + 55.0f; camera->mCamera.SetTrimSize(3); daPy_getPlayerActorClass()->changeOriginalDemo(); - i_this->mCamCenter.set(-711.0f, 3588.0f, 2730.0f); - i_this->mCamEye.set(116.0f, 3400.0f, 4597.0f); - i_this->field_0xc5c.set(-291.0f, 3256.0f, 2640.0f); - i_this->field_0xc50.set(1060.0f, 3795.0f, 4086.0f); + i_this->camCenter.set(-711.0f, 3588.0f, 2730.0f); + i_this->camEye.set(116.0f, 3400.0f, 4597.0f); + i_this->camCenterTarget.set(-291.0f, 3256.0f, 2640.0f); + i_this->camEyeTarget.set(1060.0f, 3795.0f, 4086.0f); - i_this->field_0xc74.x = fabsf(i_this->field_0xc5c.x - i_this->mCamCenter.x) * 0.015f; - i_this->field_0xc74.y = fabsf(i_this->field_0xc5c.y - i_this->mCamCenter.y) * 0.015f; - i_this->field_0xc74.z = fabsf(i_this->field_0xc5c.z - i_this->mCamCenter.z) * 0.015f; - i_this->field_0xc68.x = fabsf(i_this->field_0xc50.x - i_this->mCamEye.x) * 0.02f; - i_this->field_0xc68.y = fabsf(i_this->field_0xc50.y - i_this->mCamEye.y) * 0.02f; - i_this->field_0xc68.z = fabsf(i_this->field_0xc50.z - i_this->mCamEye.z) * 0.02f; + i_this->distToCamCenterTarget.x = fabsf(i_this->camCenterTarget.x - i_this->camCenter.x) * 0.015f; + i_this->distToCamCenterTarget.y = fabsf(i_this->camCenterTarget.y - i_this->camCenter.y) * 0.015f; + i_this->distToCamCenterTarget.z = fabsf(i_this->camCenterTarget.z - i_this->camCenter.z) * 0.015f; + i_this->distToCamEyeTarget.x = fabsf(i_this->camEyeTarget.x - i_this->camEye.x) * 0.02f; + i_this->distToCamEyeTarget.y = fabsf(i_this->camEyeTarget.y - i_this->camEye.y) * 0.02f; + i_this->distToCamEyeTarget.z = fabsf(i_this->camEyeTarget.z - i_this->camEye.z) * 0.02f; dComIfGp_getEvent().startCheckSkipEdge(i_this); // fallthrough case 2: - if (i_this->mDemoCamTimer > 60) { - cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0xc5c.x, 0.05f, i_this->field_0xc74.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0xc5c.y, 0.05f, i_this->field_0xc74.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0xc5c.z, 0.05f, i_this->field_0xc74.z * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.x, i_this->field_0xc50.x, 0.05f, i_this->field_0xc68.x * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.y, i_this->field_0xc50.y, 0.05f, i_this->field_0xc68.y * i_this->field_0xc84); - cLib_addCalc2(&i_this->mCamEye.z, i_this->field_0xc50.z, 0.05f, i_this->field_0xc68.z * i_this->field_0xc84); - cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f, 0.01f); + if (i_this->demoCamCounter > 60) { + cLib_addCalc2(&i_this->camCenter.x, i_this->camCenterTarget.x, 0.05f, i_this->distToCamCenterTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.y, i_this->camCenterTarget.y, 0.05f, i_this->distToCamCenterTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camCenter.z, i_this->camCenterTarget.z, 0.05f, i_this->distToCamCenterTarget.z * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.x, i_this->camEyeTarget.x, 0.05f, i_this->distToCamEyeTarget.x * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.y, i_this->camEyeTarget.y, 0.05f, i_this->distToCamEyeTarget.y * i_this->camStepScale1); + cLib_addCalc2(&i_this->camEye.z, i_this->camEyeTarget.z, 0.05f, i_this->distToCamEyeTarget.z * i_this->camStepScale1); + cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f, NREG_F(4) + 0.01f); - if (i_this->mDemoCamTimer == 258) { - i_actor->mMode = 2; - sp38.set(110.0f, 3300.0f, 4326.0f); - player->setPlayerPosAndAngle(&sp38, (s16)0xffff8000, 0); + if (i_this->demoCamCounter == ZREG_S(1) + 258) { + monkey_p->mMode = 2; + pos.set(110.0f, 3300.0f, 4326.0f); + player->setPlayerPosAndAngle(&pos, (s16)0xFFFF8000, 0); player->changeDemoMode(1, 1, 0, 0); } - if (i_this->mDemoCamTimer == 260) { - cMtx_YrotS(*calc_mtx, i_actor->actor.shape_angle.y); - sp2c.x = 200.0f; - sp2c.y = 300.0f; - sp2c.z = 300.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += i_actor->actor.current.pos; - i_this->mCamCenter = i_actor->actor.current.pos; - i_this->mCamCenter.y += 130.0f; - i_this->mDemoMode = 3; - i_this->mDemoCamTimer = 0; + if (i_this->demoCamCounter == ZREG_S(1) + 260) { + cMtx_YrotS(*calc_mtx, monkey_p->actor.shape_angle.y); + work.x = ZREG_F(0) + 200.0f; + work.y = ZREG_F(1) + 300.0f; + work.z = ZREG_F(2) + 300.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += monkey_p->actor.current.pos; + i_this->camCenter = monkey_p->actor.current.pos; + i_this->camCenter.y += ZREG_F(3) + 130.0f; + i_this->demoSubMode = 3; + i_this->demoCamCounter = 0; } } - a_this->current.pos.y = a_this->home.pos.y + 10000.0f; + actor->current.pos.y = actor->home.pos.y + 10000.0f; return; case 3: - a_this->current.pos.y = a_this->home.pos.y + 10000.0f; - cLib_addCalc2(&i_this->mCamCenter.z, i_actor->actor.current.pos.z, 0.2f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y + 130.0f + cM_ssin(i_this->mDemoCamTimer * 0xA00) * 30.0f, 0.2f, 50.0f); + actor->current.pos.y = actor->home.pos.y + 10000.0f; + cLib_addCalc2(&i_this->camCenter.z, monkey_p->actor.current.pos.z, 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + 130.0f + ZREG_F(3) + (KREG_F(18) + 30.0f) * cM_ssin(i_this->demoCamCounter * 0xA00), 0.2f, 50.0f); - if (i_this->mDemoCamTimer != 93) { + if (i_this->demoCamCounter != 93) { return; } - a_this->current.pos.y = a_this->home.pos.y; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = 0.0f; - sp2c.y = -200.0f; - sp2c.z = 3350.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 220.0f; - i_this->mDemoMode = 4; - i_this->mDemoCamTimer = 0; - i_this->mMode = 2; - i_actor->mMode = 20; + actor->current.pos.y = actor->home.pos.y; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = ZREG_F(4); + work.y = ZREG_F(5) + -200.0f; + work.z = ZREG_F(6) + 3350.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += ZREG_F(7) + 220.0f; + i_this->demoSubMode = 4; + i_this->demoCamCounter = 0; + i_this->mode = 2; + monkey_p->mMode = 20; return; case 4: - cLib_addCalc2(&i_this->mCamCenter.z, a_this->current.pos.z, 0.2f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.y, a_this->current.pos.y + 220.0f, 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.z, actor->current.pos.z, 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.y, actor->current.pos.y + 220.0f + ZREG_F(7), 0.2f, 50.0f); - if (i_this->mDemoCamTimer != 74) { + if (i_this->demoCamCounter != 74) { return; } - i_this->mDemoMode = 45; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 45; + i_this->demoCamCounter = 0; - cMtx_YrotS(*calc_mtx, i_actor->actor.shape_angle.y); - sp2c.x = -300.0f; - sp2c.y = 200.0f; - sp2c.z = -100.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += i_actor->actor.current.pos; - i_this->mCamCenter = i_actor->actor.current.pos; - i_this->mCamCenter.y += 90.0f; + cMtx_YrotS(*calc_mtx, monkey_p->actor.shape_angle.y); + work.x = ZREG_F(5) + -300.0f; + work.y = ZREG_F(6) + 200.0f; + work.z = ZREG_F(7) + -100.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += monkey_p->actor.current.pos; + i_this->camCenter = monkey_p->actor.current.pos; + i_this->camCenter.y += ZREG_F(8) + 90.0f; return; case 45: - cLib_addCalc2(&i_this->mCamCenter.z, i_actor->actor.current.pos.z, 0.2f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y + 90.0f + 30.0f * cM_ssin(i_this->mDemoCamTimer * 0xA00), 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.z, monkey_p->actor.current.pos.z, 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + 90.0f + ZREG_F(8) + (KREG_F(18) + 30.0f) * cM_ssin(i_this->demoCamCounter * 0xA00), 0.2f, 50.0f); - if (i_this->mDemoCamTimer == 10) { - i_actor->actor.field_0x567 = 1; + if (i_this->demoCamCounter == 10) { + monkey_p->actor.field_0x567 = 1; } - if (i_this->mDemoCamTimer != 55) { + if (i_this->demoCamCounter != NREG_S(7) + 55) { return; } - i_this->mDemoMode = 46; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 46; + i_this->demoCamCounter = 0; // fallthrough case 46: - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = 0.0f; - sp2c.y = 100.0f; - sp2c.z = 600.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 220.0f; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = ZREG_F(14); + work.y = ZREG_F(15) + 100.0f; + work.z = ZREG_F(16) + 600.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += ZREG_F(17) + 220.0f; - if (i_this->mDemoCamTimer < 45) { + if (i_this->demoCamCounter < ZREG_S(9) + 45) { return; } - if (actor == NULL) { + if (boomerang_p == NULL) { return; } - i_this->mDemoMode = 5; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 5; + i_this->demoCamCounter = 0; // fallthrough case 5: - i_this->mCamCenter = actor->current.pos; - i_this->mCamEye.set(-477.0f, 3119.0f, 1643.0f); + i_this->camCenter = boomerang_p->current.pos; + i_this->camEye.set(ZREG_F(8) + -477.0f, ZREG_F(9) + 3119.0f, ZREG_F(10) + 1643.0f); - if (i_this->mDemoCamTimer == 30) { - i_actor->actor.current.pos.z = 1600.0f; - i_actor->actor.current.pos.y = 3200.0f; + if (i_this->demoCamCounter == 30) { + monkey_p->actor.current.pos.z = ZREG_F(15) + 1600.0f; + monkey_p->actor.current.pos.y = ZREG_F(17) + 3200.0f; } - if (i_this->mDemoCamTimer != 69) { + if (i_this->demoCamCounter != ZREG_S(4) + 69) { return; } - i_this->mDemoMode = 6; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 6; + i_this->demoCamCounter = 0; return; case 6: - if (i_this->mDemoCamTimer == 3) { - i_actor->mMode = 4; + if (i_this->demoCamCounter == ZREG_S(6) + 3) { + monkey_p->mMode = 4; } - if (i_this->mDemoCamTimer != 25) { + if (i_this->demoCamCounter != ZREG_S(5) + 25) { return; } - i_this->mDemoMode = 7; - i_this->mDemoCamTimer = 0; + i_this->demoSubMode = 7; + i_this->demoCamCounter = 0; - cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); - sp2c.x = -300.0f; - sp2c.y = 100.0f; - sp2c.z = 550.0f; - MtxPosition(&sp2c, &i_this->mCamEye); - i_this->mCamEye += a_this->current.pos; - i_this->mCamCenter = a_this->current.pos; - i_this->mCamCenter.y += 190.0f; + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + work.x = ZREG_F(11) + -300.0f; + work.y = ZREG_F(12) + 100.0f; + work.z = ZREG_F(13) + 550.0f; + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; + i_this->camCenter = actor->current.pos; + i_this->camCenter.y += ZREG_F(14) + 190.0f; // fallthrough case 7: - i_actor->actor.speed.y = 0.0f; - i_actor->actor.current.pos.set(0.0f, 2500.0f, 3373.0f); + monkey_p->actor.speed.y = 0.0f; + monkey_p->actor.current.pos.set(0.0f, 2500.0f, 3373.0f); - if (i_this->mDemoCamTimer != 250) { + if (i_this->demoCamCounter != 250) { return; } - i_this->mDemoMode = 8; - i_this->mDemoCamTimer = 0; - i_actor->mMode++; - i_this->mCamEye.set(-282.0f, 2534.0f, 3147.0f); - i_this->mCamCenter = i_actor->actor.current.pos; + i_this->demoSubMode = 8; + i_this->demoCamCounter = 0; + monkey_p->mMode++; + i_this->camEye.set(-282.0f, 2534.0f, 3147.0f); + i_this->camCenter = monkey_p->actor.current.pos; + i_this->camCenter.y += ZREG_F(19); // fallthrough case 8: - cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y, 0.2f, 50.0f); + cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + ZREG_F(19), 0.2f, 50.0f); fpcM_Search(s_brg_sub, i_this); - if (i_this->mDemoCamTimer == 65) { - i_actor->actor.current.pos.set(0.0f, 3310.0f, 3427.0f); - i_actor->mMode++; - i_this->mDemoMode = 9; - i_this->mDemoCamTimer = 0; + if (i_this->demoCamCounter == (s16)(XREG_S(0) + 65)) { + monkey_p->actor.current.pos.set(0.0f, 3310.0f, 3427.0f); + monkey_p->mMode++; + i_this->demoSubMode = 9; + i_this->demoCamCounter = 0; fpcM_Search(s_brg_sub2, i_this); - i_this->mCamCenter.set(4.0f, 3393.0f, 4180.0f); - i_this->mCamEye.set(-131.0f, 3452.0f, 4552.0f); + i_this->camCenter.set(4.0f, 3393.0f, 4180.0f); + i_this->camEye.set(-131.0f, 3452.0f, 4552.0f); player->changeDemoMode(1, 1, 0, 0); } return; case 9: - if (i_this->mDemoCamTimer != 138) { + if (i_this->demoCamCounter != 138) { return; } - i_this->mCamCenter.set(30.0f, 3422.0f, 4520.0f); - i_this->mCamEye.set(343.0f, 3422.0f, 4271.0f); - i_this->mDemoMode = 10; - i_this->mDemoCamTimer = 0; - i_this->field_0xca0 = player->shape_angle.y; + i_this->camCenter.set(30.0f, 3422.0f, 4520.0f); + i_this->camEye.set(343.0f, 3422.0f, 4271.0f); + i_this->demoSubMode = 10; + i_this->demoCamCounter = 0; + i_this->prevPlShapeAngle = player->shape_angle.y; return; case 10: - cLib_addCalcAngleS2(&i_this->field_0xca0, i_actor->field_0x5c8 + (u16)-0x8000, 4, 0x800); - player->setPlayerPosAndAngle(&player->current.pos, i_this->field_0xca0, 0); + cLib_addCalcAngleS2(&i_this->prevPlShapeAngle, monkey_p->field_0x5c8 + (u16)-0x8000, 4, 0x800); + player->setPlayerPosAndAngle(&player->current.pos, i_this->prevPlShapeAngle, 0); - if (i_this->mDemoCamTimer != 60) { + if (i_this->demoCamCounter != 60) { return; } - camera->mCamera.Reset(i_this->mCamCenter, i_this->mCamEye); + camera->mCamera.Reset(i_this->camCenter, i_this->camEye); camera->mCamera.Start(); camera->mCamera.SetTrimSize(0); dComIfGp_event_reset(); daPy_getPlayerActorClass()->cancelOriginalDemo(); - fopAcM_delete(a_this); - i_no = fopAcM_GetParam(i_this) >> 16; - if (i_no == 0xFF) { + fopAcM_delete(actor); + sw_bit = fopAcM_GetParam(i_this) >> 16; + if (sw_bit == 0xFF) { return; } - dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(a_this)); + dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor)); return; case 0: @@ -2161,83 +2241,86 @@ static void demo_camera_r04(e_mk_class* i_this) { } static void demo_camera_bohit(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0); camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); - cXyz sp20; + cXyz work, unused_1, unused_2, unused_3; - switch (i_this->mDemoMode) { + switch (i_this->demoSubMode) { case 1: - if (!i_this->enemy.eventInfo.checkCommandDemoAccrpt()) { - fopAcM_orderPotentialEvent(&i_this->enemy, 2, 0xffff, 0); - i_this->enemy.eventInfo.onCondition(dEvtCnd_CANDEMO_e); + if (!actor->eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(actor, 2, 0xffff, 0); + actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e); return; } camera->mCamera.Stop(); - i_this->mDemoMode = 2; - i_this->mDemoCamTimer = 0; - i_this->mDemoCamFovy = 55.0f; + i_this->demoSubMode = 2; + i_this->demoCamCounter = 0; + i_this->demoCamFovy = NREG_F(10) + 55.0f; camera->mCamera.SetTrimSize(3); - cMtx_YrotS(*calc_mtx, i_this->enemy.shape_angle.y); + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); if (cM_rndF(1.0f) < 0.5f) { - sp20.x = 500.0f; + work.x = AREG_F(0) + 500.0f; } else { - sp20.x = -500.0f; + work.x = -(AREG_F(0) + 500.0f); } - sp20.y = -120.0f; - sp20.z = 0.0f; - MtxPosition(&sp20, &i_this->mCamEye); - i_this->mCamEye += i_this->enemy.current.pos; - i_this->mCamCenter = i_this->enemy.current.pos; + work.y = AREG_F(1) + -120.0f; + work.z = AREG_F(2); + MtxPosition(&work, &i_this->camEye); + i_this->camEye += actor->current.pos; + i_this->camCenter = actor->current.pos; // fallthrough case 2: - cLib_addCalc2(&i_this->mCamCenter.x, i_this->enemy.current.pos.x, 0.5f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.y, i_this->enemy.current.pos.y + 100.0f, 0.5f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.z, i_this->enemy.current.pos.z, 0.5f, 50.0f); + cLib_addCalc2(&i_this->camCenter.x, actor->current.pos.x, 0.5f, 50.0f); + cLib_addCalc2(&i_this->camCenter.y, actor->current.pos.y + 100.0f + KREG_F(7), 0.5f, 50.0f); + cLib_addCalc2(&i_this->camCenter.z, actor->current.pos.z, 0.5f, 50.0f); - if (i_this->mDemoCamTimer == 25) { + if (i_this->demoCamCounter == 25) { i_this->field_0xc98 = 30.0f; } - if (i_this->mDemoCamTimer == 80) { - i_this->field_0xc30 = 10; - i_this->field_0x6fc[0] = 150; + if (i_this->demoCamCounter == 80) { + i_this->demoMode = e_mk_class::DEMO_MODE_FINISH; + i_this->timer[0] = 150; } - return; + break; case 0: default: - return; + break; } } static void demo_camera(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); - cXyz sp34, sp40; + cXyz unused_1, unused_2; - switch (i_this->field_0xc30) { - case 1: + switch (i_this->demoMode) { + case e_mk_class::DEMO_MODE_START: demo_camera_start(i_this); break; - case 2: + case e_mk_class::DEMO_MODE_END: demo_camera_end(i_this); break; - case 3: + case e_mk_class::DEMO_MODE_R04: demo_camera_r04(i_this); if (dComIfGp_getEvent().checkSkipEdge()) { - npc_ks_class* i_actor = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this); - if (i_actor != NULL) { - u8 i_no = fopAcM_GetParam(i_this) >> 16; - if (i_no != 0xFF) { - dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(&i_this->enemy)); + npc_ks_class* monkey_p = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this); + if (monkey_p != NULL) { + u8 sw_bit = (fopAcM_GetParam(actor) & 0xFF0000) >> 16; + if (sw_bit != 0xFF) { + dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor)); } - i_no = fopAcM_GetParam(i_actor) >> 24; - if (i_no != 0xFF) { - dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(&i_actor->actor)); + sw_bit = (fopAcM_GetParam(monkey_p) & 0xFF000000) >> 24; + if (sw_bit != 0xFF) { + dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(&monkey_p->actor)); } dComIfGp_setNextStage("D_MN05", 0, 4, 0); @@ -2245,17 +2328,17 @@ static void demo_camera(e_mk_class* i_this) { } break; - case 4: + case e_mk_class::DEMO_MODE_BOHIT: demo_camera_bohit(i_this); break; - case 10: - camera->mCamera.Reset(i_this->mCamCenter, i_this->mCamEye); + case e_mk_class::DEMO_MODE_FINISH: + camera->mCamera.Reset(i_this->camCenter, i_this->camEye); camera->mCamera.Start(); camera->mCamera.SetTrimSize(0); dComIfGp_event_reset(); - i_this->field_0xc30 = 0; - i_this->mDemoMode = 0; + i_this->demoMode = e_mk_class::DEMO_MODE_NONE; + i_this->demoSubMode = 0; daPy_getPlayerActorClass()->cancelOriginalDemo(); case 5: @@ -2263,44 +2346,45 @@ static void demo_camera(e_mk_class* i_this) { case 7: case 8: case 9: - case 0: + case e_mk_class::DEMO_MODE_NONE: break; } - if (i_this->field_0xc30 != 0) { - s16 sVar1 = i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00) * 7.5f; - cXyz i_center = i_this->mCamCenter; - cXyz i_eye = i_this->mCamEye; + if (i_this->demoMode != e_mk_class::DEMO_MODE_NONE) { + s16 bank = i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00) * 7.5f; + cXyz center = i_this->camCenter; + cXyz eye = i_this->camEye; - i_center.y += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00); - i_eye.y += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00); - i_center.x += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800); - i_eye.x += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800); - i_center.z += i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00); - i_eye.z += i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00); + center.y += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00)); + eye.y += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00)); + center.x +=(KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800)); + eye.x += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800)); + center.z += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00)); + eye.z += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00)); - camera->mCamera.Set(i_center, i_eye, sVar1, i_this->mDemoCamFovy); + camera->mCamera.Set(center, eye, bank, i_this->demoCamFovy); - cLib_addCalc0(&i_this->field_0xc98, 1.0f, 3.0f); - i_this->mDemoCamTimer++; + cLib_addCalc0(&i_this->field_0xc98, 1.0f, TREG_F(16) + 3.0f); + i_this->demoCamCounter++; - if (i_this->mDemoCamTimer > 10000) { - i_this->mDemoCamTimer = 10000; + if (i_this->demoCamCounter > 10000) { + i_this->demoCamCounter = 10000; } } } static void action(e_mk_class* i_this) { - fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; - cXyz sp28, sp34; - i_this->mDistToPlayer = fopAcM_searchPlayerDistanceXZ(a_this); - i_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(a_this); + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0); + cXyz work, pos; + i_this->distToPl = fopAcM_searchPlayerDistanceXZ(actor); + i_this->angleToPl = fopAcM_searchPlayerAngleY(actor); damage_check(i_this); - s8 sVar1 = 1; - s8 sVar2 = 1; - i_this->field_0x6f8 = 0; + s8 boss_room_wait_flag = 1; + s8 status_flag = 1; + i_this->unkFlag3 = 0; - switch (i_this->mAction) { + switch (i_this->action) { case e_mk_class::ACT_WAIT: e_mk_wait(i_this); break; @@ -2319,172 +2403,174 @@ static void action(e_mk_class* i_this) { case e_mk_class::ACT_DROP: e_mk_drop(i_this); - i_this->field_0x6f8 = 1; + i_this->unkFlag3 = 1; break; case e_mk_class::ACT_DAMAGE: e_mk_damage(i_this); - i_this->field_0x6f8 = 1; + i_this->unkFlag3 = 1; break; case e_mk_class::ACT_S_DEMO: e_mk_s_demo(i_this); - sVar1 = 0; + boss_room_wait_flag = 0; break; case e_mk_class::ACT_E_DEMO: - i_this->field_0x6f8 = e_mk_e_demo(i_this); - sVar1 = 0; - sVar2 = 0; + i_this->unkFlag3 = e_mk_e_demo(i_this); + boss_room_wait_flag = 0; + status_flag = 0; break; case e_mk_class::ACT_R04_DEMO: e_mk_r04_demo(i_this); - i_this->field_0x6f8 = 1; + i_this->unkFlag3 = 1; } - if (sVar2) { - fopAcM_OnStatus(a_this, 0); - a_this->attention_info.flags = fopAc_AttnFlag_BATTLE_e; + if (status_flag) { + fopAcM_OnStatus(actor, 0); + actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e; } else { - fopAcM_OffStatus(a_this, 0); - a_this->attention_info.flags = 0; + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags = 0; } - cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 4, 0x2000); + cLib_addCalcAngleS2(&actor->shape_angle.y, actor->current.angle.y, 4, 0x2000); - if (i_this->field_0x6f8 != 0) { - a_this->current.pos += a_this->speed; - a_this->speed.y += a_this->gravity; + if (i_this->unkFlag3 != 0) { + actor->current.pos += actor->speed; + actor->speed.y += actor->gravity; - if (i_this->field_0x6f8 == 1) { - i_this->mAcch.CrrPos(dComIfG_Bgsp()); + if (i_this->unkFlag3 == 1) { + i_this->acch.CrrPos(dComIfG_Bgsp()); } } else { - a_this->current.pos += a_this->speed; + actor->current.pos += actor->speed; } - if (i_this->field_0x71b != 0) { - if (i_this->field_0x71b == 2) { - J3DModel* model = i_this->mpModelMorf->getModel(); - PSMTXCopy(model->getAnmMtx(29), *calc_mtx); - sp28.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp28, &sp34); - fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &sp34, &a_this->shape_angle, 2.5f, &a_this->tevStr, 0); + if (i_this->setSmokeFlag != 0) { + if (i_this->setSmokeFlag == 2) { + J3DModel* model = i_this->anmP->getModel(); + MTXCopy(model->getAnmMtx(MK_JNT_LEG_L_4_e), *calc_mtx); + work.set(0.0f, 0.0f, 0.0f); + MtxPosition(&work, &pos); + fopAcM_effSmokeSet2(&i_this->field_0xc08, &i_this->field_0xc0c, &pos, &actor->shape_angle, TREG_F(17) + 2.5f, &actor->tevStr); - PSMTXCopy(model->getAnmMtx(33), *calc_mtx); - MtxPosition(&sp28, &sp34); - fopAcM_effSmokeSet1(&i_this->field_0xc10, &i_this->field_0xc14, &sp34, &a_this->shape_angle, 2.5f, &a_this->tevStr, 0); + MTXCopy(model->getAnmMtx(MK_JNT_LEG_R_4_e), *calc_mtx); + MtxPosition(&work, &pos); + fopAcM_effSmokeSet2(&i_this->field_0xc10, &i_this->field_0xc14, &pos, &actor->shape_angle, TREG_F(17) + 2.5f, &actor->tevStr); } else { - fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &a_this->current.pos, &a_this->shape_angle, 2.5f, &a_this->tevStr, 1); + fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &actor->current.pos, &actor->shape_angle, TREG_F(18) + 2.5f, &actor->tevStr, 1); } - i_this->field_0x71b = 0; + i_this->setSmokeFlag = 0; } - if (sVar1) { + if (boss_room_wait_flag) { daPy_getPlayerActorClass()->onBossRoomWait(); } } static void anm_se_set(e_mk_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + static u16 bo_eno_1[2] = { - 0x8214, - 0x8215, + dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_B), }; static u16 bo_eno_0[4] = { - 0x8211, - 0x8212, - 0x8213, - 0x820C, + dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_B), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_C), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_FLASH_A), }; - if (i_this->mAnm == 40) { - if (i_this->mpModelMorf->checkFrame(2.0f) || i_this->mpModelMorf->checkFrame(13.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1); + if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_WAIT_e) { + if (i_this->anmP->checkFrame(2.0f) || i_this->anmP->checkFrame(13.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1); } - } else if (i_this->mAnm == 35) { - if (i_this->mpModelMorf->checkFrame(3.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE_L, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_SPRING_e) { + if (i_this->anmP->checkFrame(3.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE_L, -1); } - if ((i_this->mpModelMorf->checkFrame(21.0f) || i_this->mpModelMorf->checkFrame(31.0f)) || i_this->mpModelMorf->checkFrame(41.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); + if ((i_this->anmP->checkFrame(21.0f) || i_this->anmP->checkFrame(31.0f)) || i_this->anmP->checkFrame(41.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); } - } else if (i_this->mAnm == 31 || i_this->mAnm == 32) { - if (i_this->mpModelMorf->checkFrame(1.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_A, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_01_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_02_e) { + if (i_this->anmP->checkFrame(1.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_A, -1); } - } else if (i_this->mAnm == 33) { - if (i_this->mpModelMorf->checkFrame(1.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_B, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e) { + if (i_this->anmP->checkFrame(1.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_B, -1); } - if (i_this->mpModelMorf->checkFrame(15.0f) || i_this->mpModelMorf->checkFrame(64.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1); + if (i_this->anmP->checkFrame(15.0f) || i_this->anmP->checkFrame(64.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1); } - if (i_this->mpModelMorf->checkFrame(32.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_SCRATCH_HIP, 0, -1); + if (i_this->anmP->checkFrame(32.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_SCRATCH_HIP, 0, -1); } - } else if (i_this->mAnm == 25 || i_this->mAnm == 15) { - if (i_this->mpModelMorf->checkFrame(1.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_SNEER, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_GLAD_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e) { + if (i_this->anmP->checkFrame(1.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_SNEER, -1); } - } else if (i_this->mAnm == 10) { - if (i_this->mpModelMorf->checkFrame(1.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DOWN, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_CHANCE_e) { + if (i_this->anmP->checkFrame(1.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DOWN, -1); } - } else if (i_this->mAnm == 29) { - if (i_this->mpModelMorf->checkFrame(8.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_JUMP_START_e) { + if (i_this->anmP->checkFrame(8.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); } - } else if (i_this->mAnm == 39) { - if (i_this->mpModelMorf->checkFrame(20.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_THROW_UP_e) { + if (i_this->anmP->checkFrame(20.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1); } - } else if (i_this->mAnm == 26) { - if (i_this->mpModelMorf->checkFrame(3.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_JUMP_END_e) { + if (i_this->anmP->checkFrame(3.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); } - } else if (i_this->mAnm == 39) { - if (i_this->mpModelMorf->checkFrame(38.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_THROW_UP_e) { + if (i_this->anmP->checkFrame(38.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1); } - } else if (i_this->mAnm == 34) { - if (i_this->mpModelMorf->checkFrame(1.0f)) { - i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1); + } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_RUN_e) { + if (i_this->anmP->checkFrame(1.0f)) { + i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1); } - if (i_this->mpModelMorf->checkFrame(1.0f) || i_this->mpModelMorf->checkFrame(6.0f)) { - i_this->mSound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1); + if (i_this->anmP->checkFrame(1.0f) || i_this->anmP->checkFrame(6.0f)) { + i_this->sound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1); } } - if (i_this->mAnm == 19 || i_this->mAnm == 21) { + if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e) { for (int i = 0; i < 2; i++) { - i_this->field_0xc18[i] = dComIfGp_particle_set(i_this->field_0xc18[i], bo_eno_1[i], &i_this->enemy.current.pos, NULL, 0); + i_this->boEno1Prtcls[i] = dComIfGp_particle_set(i_this->boEno1Prtcls[i], bo_eno_1[i], &i_this->actor.current.pos, NULL, 0); - JPABaseEmitter* pEmitter1 = dComIfGp_particle_getEmitter(i_this->field_0xc18[i]); - if (pEmitter1 != NULL) { - pEmitter1->setGlobalSRTMatrix(i_this->mpBoomerangModel->getBaseTRMtx()); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->boEno1Prtcls[i]); + if (emitter != NULL) { + emitter->setGlobalSRTMatrix(i_this->boomerangModelP->getBaseTRMtx()); } } } - if (i_this->mAnm == 21) { + if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e) { for (int i = 0; i < 4; i++) { - i_this->field_0xc20[i] = dComIfGp_particle_set(i_this->field_0xc20[i], bo_eno_0[i], &i_this->enemy.eyePos, NULL, 0); + i_this->boEno0Prtcls[i] = dComIfGp_particle_set(i_this->boEno0Prtcls[i], bo_eno_0[i], &i_this->actor.eyePos, NULL, 0); - JPABaseEmitter* pEmitter2 = dComIfGp_particle_getEmitter(i_this->field_0xc20[i]); - if (pEmitter2 != NULL) { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->boEno0Prtcls[i]); + if (emitter != NULL) { if (i == 0) { - pEmitter2->setGlobalSRTMatrix(i_this->mpModelMorf->getModel()->getAnmMtx(22)); + emitter->setGlobalSRTMatrix(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_2_e)); } else { - pEmitter2->setGlobalSRTMatrix(i_this->mpBoomerangModel->getBaseTRMtx()); + emitter->setGlobalSRTMatrix(i_this->boomerangModelP->getBaseTRMtx()); } } } @@ -2492,55 +2578,55 @@ static void anm_se_set(e_mk_class* i_this) { } static int daE_MK_Execute(e_mk_class* i_this) { - cXyz sp6c, sp78, sp84; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, pos, unused; i_this->field_0x6b4++; for (int i = 0; i < 4; i++) { - if (i_this->field_0x6fc[i] != 0) { - i_this->field_0x6fc[i]--; + if (i_this->timer[i] != 0) { + i_this->timer[i]--; } } - if (i_this->field_0x704 != 0) { - i_this->field_0x704--; + if (i_this->invulnerabilityTimer != 0) { + i_this->invulnerabilityTimer--; } - if (i_this->field_0x71a != 0) { - i_this->field_0x71a--; + if (i_this->unkTimer1 != 0) { + i_this->unkTimer1--; } - if (l_HIO.mHaltAction == 0) { + if (l_HIO.halt_action == 0) { action(i_this); demo_camera(i_this); } - if (i_this->field_0x6be != 0) { - sp6c = i_this->field_0x6cc - i_this->field_0x6c0; - f32 fVar1 = sp6c.abs(); + if (i_this->unkFlag2 != 0) { + work = i_this->prevPosTarget - i_this->prevPos; + f32 fVar1 = work.abs(); - sp6c = i_this->field_0x6cc - i_this->enemy.current.pos; - f32 fVar2 = sp6c.abs(); + work = i_this->prevPosTarget - actor->current.pos; + f32 fVar2 = work.abs(); - f32 fVar3 = fVar1 * 0.1f; + f32 fVar3 = fVar1 * (BREG_F(19) + 0.1f); - if (fVar3 > 200.0f) { - fVar3 = 200.0f; + if (fVar3 > BREG_F(18) + 200.0f) { + fVar3 = BREG_F(18) + 200.0f; } - int iVar1 = (fVar2 / fVar1) * 32768.0f; - i_this->field_0x6d8 = fVar3 * cM_ssin(iVar1); + i_this->PosYTransOffset = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f); } else { - i_this->field_0x6d8 = 0; + i_this->PosYTransOffset = 0; } - mDoMtx_stack_c::transS(i_this->enemy.current.pos.x, i_this->enemy.current.pos.y + i_this->field_0x6d8, i_this->enemy.current.pos.z); - mDoMtx_stack_c::YrotM(i_this->enemy.shape_angle.y); - mDoMtx_stack_c::XrotM(i_this->enemy.shape_angle.x); - mDoMtx_stack_c::scaleM(l_HIO.mSize, l_HIO.mSize, l_HIO.mSize); + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y + i_this->PosYTransOffset, actor->current.pos.z); + mDoMtx_stack_c::YrotM((s16)actor->shape_angle.y); + mDoMtx_stack_c::XrotM((s16)actor->shape_angle.x); + mDoMtx_stack_c::scaleM(l_HIO.size, l_HIO.size, l_HIO.size); - J3DModel* model = i_this->mpModelMorf->getModel(); + J3DModel* model = i_this->anmP->getModel(); model->setBaseTRMtx(mDoMtx_stack_c::get()); - i_this->mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(&i_this->enemy))); + i_this->anmP->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor))); if (i_this->field_0x5d4 == 0) { i_this->field_0x5d4 = cM_rndF(60.0f) + 30.0f; @@ -2548,138 +2634,138 @@ static int daE_MK_Execute(e_mk_class* i_this) { i_this->field_0x5d4--; if (i_this->field_0x5d4 <= 12) { - i_this->field_0x5d8 = 11.99f - i_this->field_0x5d4; + i_this->btpFrame = 11.99f - i_this->field_0x5d4; } else { - i_this->field_0x5d8 = 0.0f; + i_this->btpFrame = 0.0f; } } - if (i_this->field_0x60e != 0) { - i_this->mBtp->setFrame(i_this->field_0x5d8 + 12.0f); + if (i_this->btpFrameFlag != 0) { + i_this->btpP->setFrame(i_this->btpFrame + 12.0f); } else { - i_this->mBtp->setFrame(i_this->field_0x5d8); + i_this->btpP->setFrame(i_this->btpFrame); } - i_this->mpModelMorf->modelCalc(); - PSMTXCopy(model->getAnmMtx(7), *calc_mtx); - sp6c.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp6c, &i_this->enemy.eyePos); - i_this->enemy.attention_info.position = i_this->enemy.eyePos; - i_this->enemy.attention_info.position.y += 70.0f; + i_this->anmP->modelCalc(); + MTXCopy(model->getAnmMtx(MK_JNT_HEAD_e), *calc_mtx); + work.set(KREG_F(12), KREG_F(13), KREG_F(14)); + MtxPosition(&work, &actor->eyePos); + actor->attention_info.position = actor->eyePos; + actor->attention_info.position.y += BREG_F(7) + 70.0f; - if (i_this->field_0x60c != 0) { - if (i_this->field_0x5e0 == 0) { - PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(10), mDoMtx_stack_c::get()); - mDoMtx_stack_c::transM(l_HIO.mCrownPosAdjust.x, l_HIO.mCrownPosAdjust.y, l_HIO.mCrownPosAdjust.z); - i_this->mpCrownModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoMtx_multVecZero(mDoMtx_stack_c::get(), &i_this->field_0x5e4); + if (i_this->crownStatus != 0) { + if (i_this->unkFlag1 == 0) { + MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_CROWN_e), mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(l_HIO.crown_pos_adjust.x, l_HIO.crown_pos_adjust.y, l_HIO.crown_pos_adjust.z); + i_this->crownAnmP->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_multVecZero(mDoMtx_stack_c::get(), &i_this->crownPos); } else { - cMtx_YrotS(*calc_mtx, i_this->field_0x5f0.y); - sp6c.x = 0.0f; - sp6c.y = i_this->field_0x5fc; - sp6c.z = i_this->field_0x600; - MtxPosition(&sp6c, &sp78); - i_this->field_0x5e4 += sp78; + cMtx_YrotS(*calc_mtx, i_this->unkRotation.y); + work.x = 0.0f; + work.y = i_this->field_0x5fc; + work.z = i_this->field_0x600; + MtxPosition(&work, &pos); + i_this->crownPos += pos; i_this->field_0x5fc -= 5.0f; - if (i_this->field_0x5e4.y <= STAGE_CENTER_POS.y + 5.0f) { - i_this->field_0x5e4.y = STAGE_CENTER_POS.y + 5.0f; + if (i_this->crownPos.y <= STAGE_CENTER_POS.y + WREG_F(7) + 5.0f) { + i_this->crownPos.y = STAGE_CENTER_POS.y + WREG_F(7) + 5.0f; if (i_this->field_0x5fc < -30.0f) { i_this->field_0x5fc *= -0.4f; - i_this->field_0x604 = 3500.0f; + i_this->field_0x604 = NREG_F(0) + 3500.0f; } else { i_this->field_0x5fc = 0.0f; } - i_this->field_0x600 *= 0.75f; + i_this->field_0x600 *= WREG_F(10) + 0.75f; } - s16 sVar2 = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * 3000); - s16 sVar3 = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * 4000); - cLib_addCalc0(&i_this->field_0x604, 0.1f, 50.0f); - mDoMtx_stack_c::transS(i_this->field_0x5e4.x, i_this->field_0x5e4.y, i_this->field_0x5e4.z); - mDoMtx_stack_c::YrotM(i_this->field_0x5f0.y); - mDoMtx_stack_c::XrotM(i_this->field_0x5f0.x + sVar2); - mDoMtx_stack_c::ZrotM(sVar3); - mDoMtx_stack_c::transM(0.0f, 15.0f, -10.0f); - mDoMtx_stack_c::XrotM(-8000); - mDoMtx_stack_c::ZrotM(-0x4000); - i_this->mpCrownModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); - cLib_addCalcAngleS2(&i_this->field_0x5f0.x, 0, 2, 0x400); + s16 x_rot_offset = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * (NREG_S(3) + 3000)); + s16 z_rot = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * (NREG_S(4) + 4000)); + cLib_addCalc0(&i_this->field_0x604, 0.1f, NREG_F(1) + 50.0f); + mDoMtx_stack_c::transS(i_this->crownPos.x, i_this->crownPos.y, i_this->crownPos.z); + mDoMtx_stack_c::YrotM(i_this->unkRotation.y); + mDoMtx_stack_c::XrotM(i_this->unkRotation.x + x_rot_offset); + mDoMtx_stack_c::ZrotM(z_rot); + mDoMtx_stack_c::transM(WREG_F(3), WREG_F(4) + 15.0f, WREG_F(5) + -10.0f); + mDoMtx_stack_c::XrotM(-8000); // ~-44° + mDoMtx_stack_c::ZrotM(-0x4000); // -90° + i_this->crownAnmP->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + cLib_addCalcAngleS2(&i_this->unkRotation.x, 0, 2, 0x400); } - i_this->mpCrownModelMorf->play(NULL, 0, 0); - i_this->mpCrownModelMorf->modelCalc(); + i_this->crownAnmP->play(NULL, 0, 0); + i_this->crownAnmP->modelCalc(); } - if (i_this->field_0x60d != 0) { - PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(23), mDoMtx_stack_c::get()); - mDoMtx_stack_c::scaleM(l_HIO.mBoomerangRatio, l_HIO.mBoomerangRatio, l_HIO.mBoomerangRatio); - mDoMtx_stack_c::transM(15.0f, 70.0f, 20.0f); - mDoMtx_stack_c::YrotM(-0x652C); - mDoMtx_stack_c::XrotM(-0x2219); - mDoMtx_stack_c::ZrotM(0x38D8); - i_this->mpBoomerangModel->setBaseTRMtx(mDoMtx_stack_c::get()); + if (i_this->boomerangStatus != 0) { + MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_3_e), mDoMtx_stack_c::get()); + mDoMtx_stack_c::scaleM(l_HIO.boomerang_ratio, l_HIO.boomerang_ratio, l_HIO.boomerang_ratio); + mDoMtx_stack_c::transM(JREG_F(17) + 15.0f, JREG_F(18) + 70.0f, JREG_F(19) + 20.0f); + mDoMtx_stack_c::YrotM(JREG_S(0) + -0x652C); + mDoMtx_stack_c::XrotM(JREG_S(1) + -0x2219); + mDoMtx_stack_c::ZrotM(JREG_S(2) + 0x38D8); + i_this->boomerangModelP->setBaseTRMtx(mDoMtx_stack_c::get()); } - if (i_this->field_0x707 == 7) { - u32 i_parameters = 0; - if (i_this->mDemoMode != 0) { - i_parameters = 1; + if (i_this->unkFlag4 == 7) { + u32 parameters = 0; + if (i_this->demoSubMode != 0) { + parameters = 1; } - i_this->field_0x708 = fopAcM_createChild(PROC_E_MK_BO, fopAcM_GetID(i_this), i_parameters, - &i_this->enemy.current.pos, fopAcM_GetRoomNo(&i_this->enemy), NULL, NULL, + i_this->boomerangId = fopAcM_createChild(PROC_E_MK_BO, fopAcM_GetID(actor), parameters, + &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1, NULL); - i_this->field_0x707 = 0; + i_this->unkFlag4 = 0; } - if (i_this->field_0x707 == 1) { - e_mk_bo_class* i_actor = (e_mk_bo_class*)fopAcM_SearchByID(i_this->field_0x708); - if (i_actor != NULL) { - PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(23), *calc_mtx); - sp6c.set(0.0f, 0.0f, 0.0f); - MtxPosition(&sp6c, &sp78); - i_actor->enemy.current.pos = sp78; - i_actor->field_0x9b4 = 0; - i_this->field_0x707 = 0; + if (i_this->unkFlag4 == 1) { + e_mk_bo_class* boomerang_p = (e_mk_bo_class*)fopAcM_SearchByID(i_this->boomerangId); + if (boomerang_p != NULL) { + MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_3_e), *calc_mtx); + work.set(KREG_F(15), KREG_F(16), KREG_F(17)); + MtxPosition(&work, &pos); + boomerang_p->enemy.current.pos = pos; + boomerang_p->field_0x9b4 = 0; + i_this->unkFlag4 = 0; } } - PSMTXCopy(model->getAnmMtx(24), *calc_mtx); - sp6c.set(20.0f, 0.0f, 0.0f); - MtxPosition(&sp6c, &sp78); + MTXCopy(model->getAnmMtx(MK_JNT_WAIST_e), *calc_mtx); + work.set(BREG_F(3) + 20.0f, BREG_F(4), BREG_F(5)); + MtxPosition(&work, &pos); - if (i_this->mAction >= 9) { - i_this->enemy.eyePos = sp78; - i_this->enemy.attention_info.position = i_this->enemy.eyePos; - i_this->enemy.attention_info.position.y += 40.0f; + if (i_this->action >= 9) { + actor->eyePos = pos; + actor->attention_info.position = actor->eyePos; + actor->attention_info.position.y += BREG_F(7) + 40.0f; } - if (i_this->field_0x704 != 0) { - sp78.y += 100000.0f; + if (i_this->invulnerabilityTimer != 0) { + pos.y += 100000.0f; } - i_this->field_0xad0.SetC(sp78); - i_this->field_0xad0.SetR(l_HIO.mSize * 60.0f); - dComIfG_Ccsp()->Set(&i_this->field_0xad0); + i_this->tgSph.SetC(pos); + i_this->tgSph.SetR((BREG_F(6) + 60.0f) * l_HIO.size); + dComIfG_Ccsp()->Set(&i_this->tgSph); - sp6c.set(-70.0f, 70.0f, 0.0f); - MtxPosition(&sp6c, &sp78); + work.set(BREG_F(7) + -70.0f, BREG_F(8) + 70.0f, BREG_F(9)); + MtxPosition(&work, &pos); - if (i_this->field_0x704 != 0) { - sp78.y += 100000.0f; + if (i_this->invulnerabilityTimer != 0) { + pos.y += 100000.0f; } - i_this->field_0x998.SetC(sp78); - i_this->field_0x998.SetR(l_HIO.mSize * 60.0f); - dComIfG_Ccsp()->Set(&i_this->field_0x998); + i_this->sph.SetC(pos); + i_this->sph.SetR((BREG_F(10) + 60.0f) * l_HIO.size); + dComIfG_Ccsp()->Set(&i_this->sph); - if (i_this->field_0x706 != 0) { - i_this->field_0x706--; - if (i_this->field_0x706 == 0) { - dComIfGp_particle_set(0x15E, &i_this->enemy.eyePos, &i_this->enemy.shape_angle, NULL); + if (i_this->tubaTimer != 0) { + i_this->tubaTimer--; + if (i_this->tubaTimer == 0) { + dComIfGp_particle_set(ID_ZI_J_TUBA00, &actor->eyePos, &actor->shape_angle, NULL); } } @@ -2692,14 +2778,17 @@ static int daE_MK_IsDelete(e_mk_class* i_this) { } static int daE_MK_Delete(e_mk_class* i_this) { - fopAcM_GetID(i_this); - dComIfG_resDelete(&i_this->mPhase, "E_mk"); - if (i_this->field_0xcf5 != 0) { - lbl_210_bss_AA = 0; + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + fpc_ProcID id = fopAcM_GetID(i_this); + + dComIfG_resDelete(&i_this->phase, "E_mk"); + if (i_this->hioInit != 0) { + l_initHIO = 0; + mDoHIO_DELETE_CHILD(l_HIO.no); } - if (i_this->enemy.heap != NULL) { - i_this->mpModelMorf->stopZelAnime(); + if (actor->heap != NULL) { + i_this->anmP->stopZelAnime(); } return 1; @@ -2707,33 +2796,33 @@ static int daE_MK_Delete(e_mk_class* i_this) { static int useHeapInit(fopAc_ac_c* actor) { e_mk_class* i_this = (e_mk_class*)actor; - i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_mk", 48), NULL, NULL, - (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", 40), 0, 1.0f, - 0, -1, &i_this->mSound, 0x80000, 0x11020084); - if (i_this->mpModelMorf == NULL || i_this->mpModelMorf->getModel() == NULL) { + i_this->anmP = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_MK_e), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BCK_MK_WAIT_e), 0, 1.0f, + 0, -1, &i_this->sound, 0x80000, 0x11020084); + if (i_this->anmP == NULL || i_this->anmP->getModel() == NULL) { return 0; } - i_this->mBtp = new mDoExt_btpAnm(); - if (i_this->mBtp == NULL) { + i_this->btpP = new mDoExt_btpAnm(); + if (i_this->btpP == NULL) { return 0; } - if (i_this->mBtp->init(i_this->mpModelMorf->getModel()->getModelData(), (J3DAnmTexPattern*)dComIfG_getObjectRes("E_mk", 55), + if (i_this->btpP->init(i_this->anmP->getModel()->getModelData(), (J3DAnmTexPattern*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BTP_MK_EYE_e), 1, 0, 1.0f, 0, -1) == 0) { return 0; } - i_this->mpCrownModelMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_mk", 49), NULL, NULL, - (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", 41), 0, 1.0f, + i_this->crownAnmP = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_OK_e), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BCK_OK_DEFAULTPOSE_e), 0, 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000084); - if (i_this->mpCrownModelMorf == NULL || i_this->mpCrownModelMorf->getModel() == NULL) { + if (i_this->crownAnmP == NULL || i_this->crownAnmP->getModel() == NULL) { return 0; } - J3DModelData* i_modelData = (J3DModelData*)dComIfG_getObjectRes("E_mk", 46); - JUT_ASSERT(4743, i_modelData != NULL); - i_this->mpBoomerangModel = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084); - if (i_this->mpBoomerangModel == NULL) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_BM_e); + JUT_ASSERT(4743, modelData != NULL); + i_this->boomerangModelP = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->boomerangModelP == NULL) { return 0; } @@ -2755,9 +2844,9 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { e_mk_class* mk = (e_mk_class*)i_actor; - fopAcM_ct(&mk->enemy, e_mk_class); + fopAcM_ct(&mk->actor, e_mk_class); - int phase = dComIfG_resLoad(&mk->mPhase, "E_mk"); + int phase = dComIfG_resLoad(&mk->phase, "E_mk"); if (phase == cPhs_COMPLEATE_e) { OS_REPORT("E_MK PARAM %x\n", fopAcM_GetParam(i_actor)); if (strcmp(dComIfGp_getStartStageName(), "D_MN05B") == 0 && dComIfGs_isStageMiddleBoss()) { @@ -2765,7 +2854,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { return cPhs_ERROR_e; } - u8 i_no = (fopAcM_GetParam(i_actor) & 0xff000000) >> 24; + u8 i_no = (fopAcM_GetParam(i_actor) & 0xFF000000) >> 24; if (i_no != 0xFF) { if (dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(i_actor))) { OS_REPORT("E_MK やられ後なので再セットしません\n"); // Since it's after the E_MK was done, I won't reset it. @@ -2773,7 +2862,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { } } - mk->mParam = fopAcM_GetParam(i_actor); + mk->arg0 = fopAcM_GetParam(i_actor); OS_REPORT("E_MK//////////////E_MK SET 1 !!\n"); if (!fopAcM_entrySolidHeap(i_actor, useHeapInit, 0x56f0)) { @@ -2782,39 +2871,39 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { } lbl_210_bss_130 = 0; - if (lbl_210_bss_AA == 0) { - mk->field_0xcf5 = 1; - lbl_210_bss_AA = 1; - l_HIO.field_0x4 = mDoHIO_CREATE_CHILD("ブーメラン猿", &l_HIO); + if (l_initHIO == 0) { + mk->hioInit = 1; + l_initHIO = 1; + l_HIO.no = mDoHIO_CREATE_CHILD("ブーメラン猿", &l_HIO); } i_actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e; - fopAcM_SetMtx(i_actor, mk->mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMtx(i_actor, mk->anmP->getModel()->getBaseTRMtx()); fopAcM_SetMin(i_actor, -500.0f, -500.0f, -500.0f); fopAcM_SetMax(i_actor, 500.0f, 500.0f, 500.0f); - mk->mAcch.Set(fopAcM_GetPosition_p(i_actor), fopAcM_GetOldPosition_p(i_actor), &mk->enemy, 1, &mk->mAcchCir, + mk->acch.Set(fopAcM_GetPosition_p(i_actor), fopAcM_GetOldPosition_p(i_actor), i_actor, 1, &mk->acchcir, fopAcM_GetSpeed_p(i_actor), NULL, NULL); - mk->mAcchCir.SetWall(80.0f, 30.0f); + mk->acchcir.SetWall(80.0f, 30.0f); i_actor->field_0x560 = i_actor->health = 200; - mk->mSound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1); - mk->mAtInfo.mpSound = &mk->mSound; + mk->sound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1); + mk->atInfo.mpSound = &mk->sound; i_actor->attention_info.distances[2] = 4; - mk->field_0x95c.Init(0xFF, 0, i_actor); - mk->field_0xad0.Set(cc_sph_src); - mk->field_0xad0.SetStts(&mk->field_0x95c); - mk->field_0x998.Set(cc_sph_src); - mk->field_0x998.SetStts(&mk->field_0x95c); - mk->field_0x998.OnTgNoHitMark(); - mk->field_0x60c = 1; - mk->field_0x60d = 1; + mk->stts.Init(0xFF, 0, i_actor); + mk->tgSph.Set(cc_sph_src); + mk->tgSph.SetStts(&mk->stts); + mk->sph.Set(cc_sph_src); + mk->sph.SetStts(&mk->stts); + mk->sph.OnTgNoHitMark(); + mk->crownStatus = 1; + mk->boomerangStatus = 1; if (fopAcM_GetRoomNo(i_actor) == 4) { - mk->mAction = e_mk_class::ACT_R04_DEMO; + mk->action = e_mk_class::ACT_R04_DEMO; i_actor->current.pos.set(0.0f, 3900.0f, -3000.0f); i_actor->current.angle.y = 0; i_actor->home = i_actor->current; @@ -2823,21 +2912,21 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { STAGE_CENTER_POS.y -= 500.0f; STAGE_ANGLE_Y = i_actor->home.angle.y; - u8 i_no = (fopAcM_GetParam(i_actor) & 0xff0000) >> 16; + i_no = (fopAcM_GetParam(i_actor) & 0xff0000) >> 16; if (i_no != 0xFF && dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(i_actor))) { dComIfGs_offSwitch(i_no, fopAcM_GetRoomNo(i_actor)); - mk->mAction = e_mk_class::ACT_WAIT; + mk->action = e_mk_class::ACT_WAIT; Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY); } else { - mk->mAction = e_mk_class::ACT_S_DEMO; + mk->action = e_mk_class::ACT_S_DEMO; u32 i_parameters = fopAcM_GetParam(i_actor) & 0xFF000000 | 0xFFFF01; cXyz sp30(-21.0f, 5114.0f, -4941.0f); - mk->mBabaChildID = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters, + mk->dbId1 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters, &sp30, fopAcM_GetRoomNo(i_actor), NULL, NULL, -1, NULL); sp30.set(-10.0f, 5114.0f, -4401.0f); - mk->mBabaChildID2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters, + mk->dbId2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters, &sp30, fopAcM_GetRoomNo(i_actor), NULL, NULL, -1, NULL); @@ -2846,7 +2935,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) { } i_actor->gravity = -5.0f; - i_actor->scale.x = l_HIO.mSize * l_HIO.mBoomerangRatio; + i_actor->scale.x = l_HIO.size * l_HIO.boomerang_ratio; daE_MK_Execute(mk); } @@ -2869,7 +2958,7 @@ extern actor_process_profile_definition g_profile_E_MK = { fpcPi_CURRENT_e, // mListPrio PROC_E_MK, // mProcName &g_fpcLf_Method.base, // sub_method - sizeof(e_mk_class), // mSize + sizeof(e_mk_class), // size 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_e_mk_bo.cpp b/src/d/actor/d_a_e_mk_bo.cpp index f7c2beb779..4ba7dde5ce 100644 --- a/src/d/actor/d_a_e_mk_bo.cpp +++ b/src/d/actor/d_a_e_mk_bo.cpp @@ -46,7 +46,7 @@ static void hit_check(e_mk_bo_class* i_this) { e_mk_class* e_mk = (e_mk_class*)a_parent; cXyz sp24; - if (i_this->ccAtSph.ChkTgHit() || i_this->acch.ChkGroundHit() || i_this->acch.ChkWallHit() || (e_mk != NULL && e_mk->field_0xc30 == 1 && i_this->ccAtSph.ChkAtHit()) || i_this->ccAtSph.ChkAtShieldHit()) { + if (i_this->ccAtSph.ChkTgHit() || i_this->acch.ChkGroundHit() || i_this->acch.ChkWallHit() || (e_mk != NULL && e_mk->demoMode == e_mk_class::DEMO_MODE_START && i_this->ccAtSph.ChkAtHit()) || i_this->ccAtSph.ChkAtShieldHit()) { i_this->field_0x5f8 = 20; OS_REPORT("E_MK_BO HIT \n"); @@ -66,8 +66,8 @@ static void hit_check(e_mk_bo_class* i_this) { i_this->field_0x998 = 2; } - if (i_this->field_0x5dc <= 2) { - i_this->field_0x5dc = 3; + if (i_this->mode <= 2) { + i_this->mode = 3; i_this->field_0x5e0 = a_parent->current.pos; i_this->field_0x5e0.y += 100.0f; @@ -95,17 +95,17 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) { fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); cXyz sp3C; - switch (i_this->field_0x5dc) { + switch (i_this->mode) { case 0: - if (e_mk->field_0x70c != 0) { - i_this->field_0x5e0 = e_mk->field_0x70c->enemy.current.pos; + if (e_mk->db != NULL) { + i_this->field_0x5e0 = e_mk->db->enemy.current.pos; i_this->field_0x5e0.y += 100.0f; } else { i_this->field_0x5e0 = player->current.pos; i_this->field_0x5e0.y += 100.0f; } - i_this->field_0x5dc = 1; + i_this->mode = 1; sp3C = i_this->field_0x5e0 - actor->current.pos; actor->current.angle.y = cM_atan2s(sp3C.x, sp3C.z); @@ -116,7 +116,7 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) { case 1: sp3C = i_this->field_0x5e0 - actor->current.pos; if (sp3C.abs() < 300.0f + TREG_F(18)) { - i_this->field_0x5dc = 2; + i_this->mode = 2; i_this->timers[0] = 30; } break; @@ -136,17 +136,17 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) { cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4); f32 temp_f31 = sp3C.abs(); - if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) { + if (e_mk->demoSubMode != 0 || (e_mk->action == e_mk_class::ACT_SHOOT && e_mk->mode >= 20)) { if (temp_f31 < 350.0f + YREG_F(18)) { i_this->field_0x600 = 1; - e_mk->field_0x707 = 3; + e_mk->unkFlag4 = 3; } else if (temp_f31 < 600.0f + YREG_F(17)) { - e_mk->field_0x707 = 2; + e_mk->unkFlag4 = 2; } - } else if (e_mk->mAction == 3 && temp_f31 < 120.0f + YREG_F(19)) { - e_mk->field_0x707 = 4; + } else if (e_mk->action == e_mk_class::ACT_YORO && temp_f31 < 120.0f + YREG_F(19)) { + e_mk->unkFlag4 = 4; i_this->action = 1; - i_this->field_0x5dc = 0; + i_this->mode = 0; dComIfGp_setHitMark(3, actor, &actor->current.pos, &actor->shape_angle, NULL, 0); actor->speed.y = 30.0f; i_this->timers[0] = 40; @@ -170,7 +170,7 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) { cCcD_Obj* at_hit_obj = i_this->ccAtSph.GetAtHitObj(); if (fopAcM_GetName(dCc_GetAc(at_hit_obj->GetAc())) == PROC_ALINK) { OS_REPORT("E_MK_BO PL HIT !!!!\n"); - e_mk->field_0x707 = 5; + e_mk->unkFlag4 = 5; i_this->field_0x5f8 = 10; } } @@ -193,11 +193,11 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) { cXyz sp38; f32 temp_f31; - switch (i_this->field_0x5dc) { + switch (i_this->mode) { case 0: i_this->field_0x998 = 1; i_this->field_0x5e0.set(0.0f, 5000.0f + JREG_F(18), -3900.0f); - i_this->field_0x5dc = 1; + i_this->mode = 1; sp38 = i_this->field_0x5e0 - actor->current.pos; actor->current.angle.y = cM_atan2s(sp38.x, sp38.z); @@ -208,7 +208,7 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) { case 1: sp38 = i_this->field_0x5e0 - actor->current.pos; if (sp38.abs() < 200.0f + TREG_F(18)) { - i_this->field_0x5dc = 2; + i_this->mode = 2; i_this->timers[0] = 30; } break; @@ -228,12 +228,12 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) { cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4); temp_f31 = sp38.abs(); - if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) { + if (e_mk->demoSubMode != 0 || (e_mk->action == e_mk_class::ACT_SHOOT && e_mk->mode >= 20)) { if (temp_f31 < 350.0f + YREG_F(18)) { i_this->field_0x600 = 1; - e_mk->field_0x707 = 3; + e_mk->unkFlag4 = 3; } else if (temp_f31 < 600.0f + YREG_F(17)) { - e_mk->field_0x707 = 2; + e_mk->unkFlag4 = 2; } } break; @@ -267,10 +267,10 @@ static s8 e_mk_bo_r04(e_mk_bo_class* i_this) { cXyz sp1C; f32 temp_f31; - switch (i_this->field_0x5dc) { + switch (i_this->mode) { case 0: i_this->field_0x998 = 1; - i_this->field_0x5dc = 1; + i_this->mode = 1; actor->current.angle.y = a_parent->shape_angle.y + (VREG_S(7) - 0x3000); i_this->field_0x5fa = actor->current.angle.y; @@ -295,9 +295,9 @@ static s8 e_mk_bo_r04(e_mk_bo_class* i_this) { temp_f31 = sp1C.abs(); if (i_this->timers[1] == 0 && temp_f31 < 350.0f + YREG_F(18)) { i_this->field_0x600 = 1; - e_mk->field_0x707 = 3; + e_mk->unkFlag4 = 3; } else if (temp_f31 < 600.0f + YREG_F(17)) { - e_mk->field_0x707 = 2; + e_mk->unkFlag4 = 2; } } break; @@ -323,21 +323,21 @@ static void e_mk_bo_hasira(e_mk_bo_class* i_this) { if (a_parent != NULL) { e_mk_class* e_mk = (e_mk_class*)a_parent; - if (e_mk->field_0xc30 == 2) { - i_this->action = 2; + if (e_mk->demoMode == e_mk_class::DEMO_MODE_END) { + i_this->action = e_mk_class::ACT_SHOOT; i_this->field_0x998 = 1; return; } cXyz sp24; cXyz sp18; - if (e_mk->mHasira != NULL) { - daPillar_c* pillar = e_mk->mHasira; + if (e_mk->hasira != NULL) { + daPillar_c* pillar = e_mk->hasira; cXyz spC; - mDoMtx_stack_c::transS(e_mk->mHasira->current.pos.x, e_mk->mHasira->current.pos.y, e_mk->mHasira->current.pos.z); + mDoMtx_stack_c::transS(e_mk->hasira->current.pos.x, e_mk->hasira->current.pos.y, e_mk->hasira->current.pos.z); mDoMtx_stack_c::YrotM(pillar->mRotY); - mDoMtx_stack_c::XrotM(e_mk->mHasira->shape_angle.x); + mDoMtx_stack_c::XrotM(e_mk->hasira->shape_angle.x); mDoMtx_stack_c::YrotM(-pillar->mRotY); mDoMtx_stack_c::transM(0.0f, 500.0f, 0.0f); mDoMtx_multVecZero(mDoMtx_stack_c::get(), &spC); @@ -356,17 +356,17 @@ static void e_mk_bo_hasira(e_mk_bo_class* i_this) { if (actor->current.pos.y <= 7.0f + spC.y) { actor->current.pos.y = 7.0f + spC.y; - if (i_this->field_0x5dc <= 3) { + if (i_this->mode <= 3) { actor->speed.y *= -0.4f; } else { actor->speed.y = 0.0f; } - if (i_this->field_0x5dc <= 1) { + if (i_this->mode <= 1) { i_this->timers[0] = 20; } - i_this->field_0x5dc++; + i_this->mode++; } if (pillar->checkRollAttack()) { @@ -391,7 +391,7 @@ static void e_mk_bo_demo_ground(e_mk_bo_class* i_this) { if (actor->health != 0) { actor->health = 0; i_this->action = 3; - i_this->field_0x5dc = 0; + i_this->mode = 0; actor->home.pos.y = actor->current.pos.y; } @@ -406,12 +406,12 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) { cXyz sp28; f32 var_f31 = 0.0f; - switch (i_this->field_0x5dc) { + switch (i_this->mode) { case 4: break; case 0: actor->speed.y = 0.0f; - i_this->field_0x5dc = 1; + i_this->mode = 1; actor->home.pos = actor->current.pos; i_this->timers[0] = 20; actor->speedF = 0.0f; @@ -443,7 +443,7 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) { actor->current.angle.y = fopAcM_searchPlayerAngleY(actor) + 0x8000; i_this->field_0x5ec = 0; i_this->timers[0] = 40; - i_this->field_0x5dc = 2; + i_this->mode = 2; } break; case 2: @@ -458,7 +458,7 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) { s16 sp8 = (actor->current.angle.y - fopAcM_searchPlayerAngleY(actor)); if (sp8 <= 0x400 && sp8 > -0x400) { - i_this->field_0x5dc = 3; + i_this->mode = 3; } cLib_addCalcAngleS2(&actor->shape_angle.z, -0x1200, 2, 0x200); @@ -475,8 +475,8 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) { if (fopAcM_searchPlayerDistanceXZ(actor) < 50.0f) { e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID); - e_mk->mDemoMode++; - i_this->field_0x5dc = 4; + e_mk->demoSubMode++; + i_this->mode = 4; i_this->field_0x600 = 1; } break; @@ -507,9 +507,9 @@ static void action(e_mk_bo_class* i_this) { switch (i_this->action) { case 0: - if (e_mk->field_0xc30 == 1) { + if (e_mk->demoMode == e_mk_class::DEMO_MODE_START) { var_r28 = e_mk_bo_start(i_this); - } else if (e_mk->field_0xc30 == 3 || fopAcM_GetRoomNo(actor) == 4) { + } else if (e_mk->demoMode == e_mk_class::DEMO_MODE_R04 || fopAcM_GetRoomNo(actor) == 4) { var_r28 = e_mk_bo_r04(i_this); } else { var_r28 = e_mk_bo_shot(i_this); @@ -606,8 +606,8 @@ static int daE_MK_BO_Execute(e_mk_bo_class* i_this) { i_this->model->setBaseTRMtx(mDoMtx_stack_c::get()); e_mk_class* e_mk = (e_mk_class*)a_parent; - if (e_mk->field_0x707 == 6) { - e_mk->field_0x707 = 0; + if (e_mk->unkFlag4 == 6) { + e_mk->unkFlag4 = 0; fopAcM_delete(actor); } @@ -643,15 +643,15 @@ static int daE_MK_BO_Execute(e_mk_bo_class* i_this) { for (int i = 0; i < eff_num; i++) { if (i_this->action >= 2) { if (i < 2) { - e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_2[i], &actor->current.pos, NULL, NULL); - emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]); + e_mk->boEno1Prtcls[i] = dComIfGp_particle_set(e_mk->boEno1Prtcls[i], bo_eno_2[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(e_mk->boEno1Prtcls[i]); } else { i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_2[i], &actor->current.pos, NULL, NULL); emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]); } } else if (i < 2) { - e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_1[i], &actor->current.pos, NULL, NULL); - emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]); + e_mk->boEno1Prtcls[i] = dComIfGp_particle_set(e_mk->boEno1Prtcls[i], bo_eno_1[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(e_mk->boEno1Prtcls[i]); } else { i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_1[i], &actor->current.pos, NULL, NULL); emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]); From ae9fa8922a52ccbff29891024aeafd1aed2d0400 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Fri, 5 Dec 2025 21:46:58 -0500 Subject: [PATCH 18/18] Work on weak function ordering (#2917) * Fix functionvalue weak func order * Add script to help diffing weak function order * Improve alink weak func order (44 -> 15) * Improve m_Do_ext weak order (12 -> 7) * Remove old hack * Fix d_a_tbox weak func order * Fix d_a_npc_ks weak func order * Fix error when trying to diff weak func order for ShieldD due to hidden function alignment gap symbols --- configure.py | 6 +- include/JSystem/JGadget/search.h | 4 +- .../JSystem/JStudio/JStudio/functionvalue.h | 6 - include/d/actor/d_a_alink.h | 177 +++++++++--------- include/d/actor/d_a_player.h | 8 + include/d/actor/d_a_tbox.h | 30 +-- include/d/d_com_inf_game.h | 12 -- include/d/d_msg_object.h | 2 - include/m_Do/m_Do_ext.h | 2 +- src/d/actor/d_a_obj_crvhahen.cpp | 1 + src/d/actor/d_a_obj_ornament_cloth.cpp | 3 +- src/d/actor/d_a_obj_stopper2.cpp | 1 + src/d/actor/d_a_tag_yami.cpp | 1 + src/d/actor/d_a_tbox.cpp | 29 +++ src/d/d_msg_object.cpp | 2 - tools/utilities/weak_order_diff.py | 109 +++++++++++ 16 files changed, 248 insertions(+), 145 deletions(-) create mode 100755 tools/utilities/weak_order_diff.py diff --git a/configure.py b/configure.py index cb1fac63ab..0c08a075b9 100755 --- a/configure.py +++ b/configure.py @@ -964,7 +964,7 @@ config.libs = [ [ Object(MatchingFor(ALL_GCN), "JSystem/JStudio/JStudio/ctb.cpp"), Object(MatchingFor(ALL_GCN, "Shield", "ShieldD"), "JSystem/JStudio/JStudio/ctb-data.cpp"), - Object(Equivalent, "JSystem/JStudio/JStudio/functionvalue.cpp"), # weak func order + Object(MatchingFor(ALL_GCN), "JSystem/JStudio/JStudio/functionvalue.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/JStudio/JStudio/fvb.cpp"), Object(MatchingFor(ALL_GCN, "Shield"), "JSystem/JStudio/JStudio/fvb-data.cpp"), Object(MatchingFor(ALL_GCN, "Shield"), "JSystem/JStudio/JStudio/fvb-data-parse.cpp"), @@ -1720,7 +1720,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_tag_msg"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_push"), ActorRel(MatchingFor(ALL_GCN), "d_a_tag_telop"), - ActorRel(Equivalent, "d_a_tbox"), # weak func order + ActorRel(MatchingFor(ALL_GCN), "d_a_tbox"), ActorRel(MatchingFor(ALL_GCN), "d_a_tbox2"), ActorRel(MatchingFor(ALL_GCN), "d_a_vrbox"), ActorRel(NonMatching, "d_a_vrbox2"), @@ -2009,7 +2009,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_kn"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_knj"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kolinb"), - ActorRel(Equivalent, "d_a_npc_ks"), # weak func order + ActorRel(MatchingFor(ALL_GCN), "d_a_npc_ks"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_kyury"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_len"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_lf"), diff --git a/include/JSystem/JGadget/search.h b/include/JSystem/JGadget/search.h index e4c5c538b7..c53045668a 100644 --- a/include/JSystem/JGadget/search.h +++ b/include/JSystem/JGadget/search.h @@ -111,14 +111,14 @@ inline Iterator findUpperBound_binary_end(Iterator first, Iterator last, const T } template -Iterator findUpperBound_binary_current(Iterator first, Iterator last, Iterator current, const T& val, Predicate p) { +inline Iterator findUpperBound_binary_current(Iterator first, Iterator last, Iterator current, const T& val, Predicate p) { return current == last || p(val, *current) ? findUpperBound_binary_end(first, current, val, p) : findUpperBound_binary_begin(current, last, val, p); } template -Iterator findUpperBound_binary_current(Iterator first, Iterator last, Iterator current, const T& val) { +inline Iterator findUpperBound_binary_current(Iterator first, Iterator last, Iterator current, const T& val) { return findUpperBound_binary_current(first, last, current, val, std::less()); } diff --git a/include/JSystem/JStudio/JStudio/functionvalue.h b/include/JSystem/JStudio/JStudio/functionvalue.h index 69309a4219..a8724f5496 100644 --- a/include/JSystem/JStudio/JStudio/functionvalue.h +++ b/include/JSystem/JStudio/JStudio/functionvalue.h @@ -157,7 +157,6 @@ private: class TFunctionValue_constant : public TFunctionValue { public: TFunctionValue_constant(); - virtual ~TFunctionValue_constant() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); @@ -195,7 +194,6 @@ public: const TFunctionValue_composite::TData&, f64); TFunctionValue_composite(); - virtual ~TFunctionValue_composite() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); @@ -232,7 +230,6 @@ class TFunctionValue_transition : public TFunctionValue, public TFunctionValueAttribute_interpolate { public: TFunctionValue_transition(); - virtual ~TFunctionValue_transition() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); @@ -264,7 +261,6 @@ public: typedef f64 (*update_INTERPOLATE)(const TFunctionValue_list&, const TIndexData_&); TFunctionValue_list(); - virtual ~TFunctionValue_list() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); @@ -380,7 +376,6 @@ public: typedef f64 (*update_INTERPOLATE)(const TFunctionValue_list_parameter&, f64); TFunctionValue_list_parameter(); - virtual ~TFunctionValue_list_parameter() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); @@ -499,7 +494,6 @@ public: }; TFunctionValue_hermite(); - virtual ~TFunctionValue_hermite() {} virtual u32 getType() const; virtual TFunctionValueAttributeSet getAttributeSet(); diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 064f8587d3..a010fcca58 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -6839,7 +6839,18 @@ public: BOOL checkCutHeadProc() const { return mProcID == PROC_CUT_HEAD; } fopAc_ac_c* getRideActor() { return mRideAcKeep.getActor(); } - virtual cXyz* getMidnaAtnPos() const { return (cXyz*)&mMidnaAtnPos; } + virtual bool checkAcceptDungeonWarpAlink(int) { return checkAcceptWarp(); } + virtual daSpinner_c* getSpinnerActor() { + daSpinner_c* spinnerActor; + if (!checkSpinnerRide()) { + spinnerActor = NULL; + } else { + spinnerActor = (daSpinner_c*)mRideAcKeep.getActor(); + } + return (daSpinner_c*)spinnerActor; + } + virtual s16 getSumouCounter() const { return mProcVar2.field_0x300c; } + virtual s16 checkSumouWithstand() const { return mProcVar3.field_0x300e; } virtual void setMidnaMsgNum(fopAc_ac_c* param_0, u16 pMsgNum) { mMidnaMsgNum = pMsgNum; mMidnaMsg = (daTagMmsg_c*)param_0; @@ -6847,7 +6858,6 @@ public: virtual MtxP getModelMtx() { return mpLinkModel->getBaseTRMtx(); } virtual MtxP getInvMtx() { return mInvMtx; } virtual cXyz* getShadowTalkAtnPos() { return &field_0x375c; } - virtual f32 getGroundY() { return mLinkAcch.GetGroundH(); } virtual MtxP getLeftItemMatrix(); virtual MtxP getRightItemMatrix(); virtual MtxP getLeftHandMatrix(); @@ -6859,9 +6869,27 @@ public: if (mHeldItemModel != NULL && checkBottleItem(mEquipItem)) { return mHeldItemModel->getBaseTRMtx(); } - return NULL; } + + virtual MtxP getHeadMtx() { + return mpLinkModel->getAnmMtx(field_0x30b4); + } + virtual f32 getGroundY() { return mLinkAcch.GetGroundH(); } + virtual f32 getBaseAnimeFrameRate() const { return mUnderFrameCtrl[0].getRate(); } + virtual fpc_ProcID getAtnActorID() const { return mAtnActorID; } + virtual fpc_ProcID getItemID() const { return mItemAcKeep.getID(); } + virtual fpc_ProcID getGrabActorID() const { + if (mEquipItem == 0x102) { + return mItemAcKeep.getID(); + } else { + return mGrabItemAcKeep.getID(); + } + } + virtual void setForcePutPos(cXyz const& pPutPos) { + mForcePutPos = pPutPos; + onEndResetFlg1(ERFLG1_UNK_2000); + } virtual BOOL checkPlayerGuard() const; virtual u32 checkPlayerFly() const { return checkModeFlg(MODE_SWIMMING | MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 | @@ -6929,26 +6957,17 @@ public: } virtual BOOL checkGrassWhistle() const { return mProcID == PROC_GRASS_WHISTLE_WAIT; } virtual BOOL checkBoarRun() const { return mProcID == PROC_BOAR_RUN; } - virtual f32 getBaseAnimeFrameRate() const { return mUnderFrameCtrl[0].getRate(); } + virtual BOOL checkHorseRideNotReady() const { + return checkHorseRide() && mProcID != PROC_HORSE_RIDE && mProcID != PROC_HORSE_GETOFF; + } + virtual f32 getSearchBallScale() const { return mSearchBallScale; } + virtual int checkFastShotTime() { return mFastShotTime; } virtual f32 getBaseAnimeFrame() const; virtual void setAnimeFrame(f32); virtual BOOL checkWolfLock(fopAc_ac_c*) const; virtual bool cancelWolfLock(fopAc_ac_c*); - virtual fpc_ProcID getAtnActorID() const { return mAtnActorID; } - virtual fpc_ProcID getItemID() const { return mItemAcKeep.getID(); } - virtual fpc_ProcID getGrabActorID() const { - if (mEquipItem == 0x102) { - return mItemAcKeep.getID(); - } else { - return mGrabItemAcKeep.getID(); - } - } virtual BOOL exchangeGrabActor(fopAc_ac_c*); virtual BOOL setForceGrab(fopAc_ac_c*, int, int); - virtual void setForcePutPos(cXyz const& pPutPos) { - mForcePutPos = pPutPos; - onEndResetFlg1(ERFLG1_UNK_2000); - } virtual u32 checkPlayerNoDraw(); virtual void voiceStart(u32); virtual void seStartOnlyReverb(u32); @@ -6957,10 +6976,6 @@ public: virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*); virtual void onFrollCrashFlg(u8, int); virtual MtxP getModelJointMtx(u16); - virtual MtxP getHeadMtx() { - return mpLinkModel->getAnmMtx(field_0x30b4); - ; - } virtual bool setHookshotCarryOffset(fpc_ProcID, cXyz const*); virtual BOOL checkCutJumpCancelTurn() const { return (mProcID == PROC_CUT_JUMP || mProcID == PROC_CUT_JUMP_LAND) && field_0x3198 != 2; @@ -6977,9 +6992,6 @@ public: virtual bool setThrowDamage(short, f32, f32, int, int, int); virtual bool checkSetNpcTks(cXyz*, int, int); virtual int setRollJump(f32, f32, short); - virtual void playerStartCollisionSE(u32 param_0, u32 param_1) { - mZ2Link.startCollisionSE(param_0, param_1); - } virtual void cancelDungeonWarpReadyNeck() { if (mProcID != PROC_DUNGEON_WARP_READY) { return; @@ -7004,21 +7016,7 @@ public: virtual u32 checkCanoeRide() const; virtual u32 checkBoardRide() const; virtual u32 checkSpinnerRide() const; - virtual daSpinner_c* getSpinnerActor() { - daSpinner_c* spinnerActor; - if (!checkSpinnerRide()) { - spinnerActor = NULL; - } else { - spinnerActor = (daSpinner_c*)mRideAcKeep.getActor(); - } - return (daSpinner_c*)spinnerActor; - } - virtual BOOL checkHorseRideNotReady() const { - return checkHorseRide() && mProcID != PROC_HORSE_RIDE && mProcID != PROC_HORSE_GETOFF; - } virtual bool checkArrowChargeEnd() const; - virtual f32 getSearchBallScale() const { return mSearchBallScale; } - virtual int checkFastShotTime() { return mFastShotTime; } virtual bool checkNoEquipItem() const { return mEquipItem == fpcNm_ITEM_NONE; } virtual bool checkKandelaarSwing(int) const; virtual s16 getBoardCutTurnOffsetAngleY() const { @@ -7028,6 +7026,31 @@ public: return 0; } virtual cXyz* getMagneBootsTopVec() { return &mMagneBootsTopVec; } + virtual void setCargoCarry(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_CARGO_CARRY; + mCargoCarryAcKeep.setData(p_actor); + } + virtual void setGoronSideMove(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_GORON_THROW; + mCargoCarryAcKeep.setData(p_actor); + } + virtual void setSumouReady(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_SUMO_READY; + mCargoCarryAcKeep.setData(p_actor); + mDemo.setDemoMode(1); + } + virtual void setSumouPushBackDirection(short param_0) { + if (mProcID != PROC_SUMOU_MOVE) { + return; + } + mProcVar4.field_0x3010 = param_0; + } + virtual void setSumouLoseHeadUp() { + if (mProcID != PROC_SUMOU_WIN_LOSE) { + return; + } + mSpecialMode = SMODE_SUMO_LOSE; + } virtual cXyz* getKandelaarFlamePos(); virtual bool checkUseKandelaar(int); virtual void setDkCaught(fopAc_ac_c*); @@ -7045,6 +7068,24 @@ public: } mProcVar4.field_0x3010 = angle; } + virtual void setSumouGraspCancelCount(int param_0) { + if (mProcID != PROC_SUMOU_MOVE) { + return; + } + mProcVar2.field_0x300c = param_0; + } + virtual bool checkItemSwordEquip() const { return mEquipItem == 0x103; } + virtual f32 getSinkShapeOffset() const { return mSinkShapeOffset; } + virtual BOOL checkSinkDead() const { return field_0x2fbd == 0xFF; } + virtual BOOL checkCutJumpMode() const { return mProcID == PROC_CUT_JUMP; } + virtual s16 getGiantPuzzleAimAngle() const { return mProcVar2.mPuzzleAimAngle; } + virtual u8 getSwordChangeWaitTimer() const { return mSwordChangeWaitTimer; } + virtual BOOL checkMetamorphose() const { + return mProcID == PROC_METAMORPHOSE && mProcVar1.field_0x300a == 0; + } + virtual BOOL checkWolfDownAttackPullOut() const { return mProcID == PROC_WOLF_DOWN_AT_LAND; } + virtual cXyz* getMidnaAtnPos() const { return (cXyz*)&mMidnaAtnPos; } + virtual bool checkCopyRodEquip() const { return mEquipItem == fpcNm_ITEM_COPY_ROD; } virtual void setKandelaarMtx(f32 (*)[4], int, int); virtual bool getStickAngleFromPlayerShape(short*) const; virtual bool checkSpinnerPathMove(); @@ -7059,44 +7100,13 @@ public: return mProcID == PROC_CANOE_FISHING_GET && mProcVar3.field_0x300e == 1; } virtual u8 checkBeeChildDrink() const { return field_0x2fd3; } + virtual Z2WolfHowlMgr* getWolfHowlMgrP() { return &mZ2WolfHowlMgr; } + virtual BOOL checkWolfHowlSuccessAnime() const { + return checkUnderMove0BckNoArcWolf(WANM_HOWL_SUCCESS); + } virtual void skipPortalObjWarp(); virtual BOOL checkTreasureRupeeReturn(int) const; - virtual void setSumouReady(fopAc_ac_c* p_actor) { - mSpecialMode = SMODE_SUMO_READY; - mCargoCarryAcKeep.setData(p_actor); - mDemo.setDemoMode(1); - } - virtual bool checkAcceptDungeonWarpAlink(int) { return checkAcceptWarp(); } - virtual s16 getSumouCounter() const { return mProcVar2.field_0x300c; } - virtual s16 checkSumouWithstand() const { return mProcVar3.field_0x300e; } virtual void cancelGoronThrowEvent(); - virtual void setSumouGraspCancelCount(int param_0) { - if (mProcID != PROC_SUMOU_MOVE) { - return; - } - mProcVar2.field_0x300c = param_0; - } - virtual void setSumouPushBackDirection(short param_0) { - if (mProcID != PROC_SUMOU_MOVE) { - return; - } - mProcVar4.field_0x3010 = param_0; - } - virtual void setSumouLoseHeadUp() { - if (mProcID != PROC_SUMOU_WIN_LOSE) { - return; - } - mSpecialMode = SMODE_SUMO_LOSE; - } - virtual s16 getGiantPuzzleAimAngle() const { return mProcVar2.mPuzzleAimAngle; } - virtual void setGoronSideMove(fopAc_ac_c* p_actor) { - mSpecialMode = SMODE_GORON_THROW; - mCargoCarryAcKeep.setData(p_actor); - } - virtual void setCargoCarry(fopAc_ac_c* p_actor) { - mSpecialMode = SMODE_CARGO_CARRY; - mCargoCarryAcKeep.setData(p_actor); - } virtual cXyz* getHookshotTopPos(); virtual bool checkHookshotReturnMode() const; virtual bool checkHookshotShootReturnMode() const; @@ -7124,27 +7134,16 @@ public: virtual bool checkDragonHangRide() const { return mProcID == PROC_BOSS_BODY_HANG && field_0x32cc != 0; } + virtual void playerStartCollisionSE(u32 param_0, u32 param_1) { + mZ2Link.startCollisionSE(param_0, param_1); + } virtual void changeDragonActor(fopAc_ac_c*); virtual u8 getClothesChangeWaitTimer() const { return mClothesChangeWaitTimer; } virtual u8 getShieldChangeWaitTimer() const { return mShieldChangeWaitTimer; } - virtual u8 getSwordChangeWaitTimer() const { return mSwordChangeWaitTimer; } - virtual BOOL checkMetamorphose() const { - return mProcID == PROC_METAMORPHOSE && mProcVar1.field_0x300a == 0; - } - virtual BOOL checkWolfDownAttackPullOut() const { return mProcID == PROC_WOLF_DOWN_AT_LAND; } virtual BOOL checkBootsOrArmorHeavy() const; virtual fpc_ProcID getBottleOpenAppearItem() const; - virtual bool checkItemSwordEquip() const { return mEquipItem == 0x103; } - virtual f32 getSinkShapeOffset() const { return mSinkShapeOffset; } - virtual BOOL checkSinkDead() const { return field_0x2fbd == 0xFF; } virtual BOOL checkHorseStart() { return checkHorseStart(getLastSceneMode(), getStartMode()); } - virtual Z2WolfHowlMgr* getWolfHowlMgrP() { return &mZ2WolfHowlMgr; } - virtual BOOL checkWolfHowlSuccessAnime() const { - return checkUnderMove0BckNoArcWolf(WANM_HOWL_SUCCESS); - } virtual BOOL checkCopyRodTopUse(); - virtual bool checkCopyRodEquip() const { return mEquipItem == fpcNm_ITEM_COPY_ROD; } - virtual BOOL checkCutJumpMode() const { return mProcID == PROC_CUT_JUMP; } static BOOL checkDebugMoveInput() { if (mDoCPd_c::isConnect(PAD_3)) { @@ -8271,4 +8270,8 @@ static fopAc_ac_c* daAlink_searchCanoe(fopAc_ac_c* param_0, void* param_1); static void* daAlink_searchBoar(fopAc_ac_c* param_0, void* param_1); static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1); +inline daAlink_c* daAlink_getAlinkActorClass() { + return (daAlink_c*)g_dComIfG_gameInfo.play.getPlayerPtr(LINK_PTR); +} + #endif /* D_A_D_A_ALINK_H */ diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 2203d7af0d..37cb8ec037 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -1257,4 +1257,12 @@ public: int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4); +inline daPy_py_c* daPy_getPlayerActorClass() { + return (daPy_py_c*)dComIfGp_getPlayer(0); +} + +inline daPy_py_c* daPy_getLinkPlayerActorClass() { + return dComIfGp_getLinkPlayer(); +} + #endif /* D_A_D_A_PLAYER_H */ diff --git a/include/d/actor/d_a_tbox.h b/include/d/actor/d_a_tbox.h index d6577a8493..0e8feaa653 100644 --- a/include/d/actor/d_a_tbox.h +++ b/include/d/actor/d_a_tbox.h @@ -5,6 +5,7 @@ #include "d/d_cc_d.h" #include "d/d_bg_s_acch.h" #include "d/d_bg_s_movebg_actor.h" +#include "d/d_kankyo.h" #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_hostIO.h" @@ -197,33 +198,4 @@ private: STATIC_ASSERT(sizeof(daTbox_c) == 0xA30); -class daTbox_HIO_c : public mDoHIO_entry_c { -public: - daTbox_HIO_c(); - virtual ~daTbox_HIO_c() {} - - void genMessage(JORMContext*); - - /* 0x04 */ u8 mItemNo; - /* 0x05 */ u8 mUseDebugItemNo; - /* 0x06 */ u8 mClearSwitch; - /* 0x07 */ u8 mDemoType; - /* 0x08 */ u8 mDebugLightColorEnabled; - /* 0x09 */ u8 mTimerDisplay; - /* 0x0A */ u8 mCheckDisplay; - /* 0x0B */ u8 mSaveOff; - /* 0x0C */ f32 mGravity; - /* 0x10 */ cXyz mLightOffset; - /* 0x1C */ s16 mLightColorR; - /* 0x1E */ s16 mLightColorG; - /* 0x20 */ s16 mLightColorB; - /* 0x24 */ f32 mLightPower; - /* 0x28 */ f32 mFluctuationRate; - /* 0x2C */ f32 mEnvColorInfluence; - /* 0x30 */ s16 mFluctuationSpeed; - /* 0x32 */ u8 mForPlacementCheck; -}; - -STATIC_ASSERT(sizeof(daTbox_HIO_c) == 0x34); - #endif /* D_A_TBOX_H */ diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index befe038a36..88263a5cb8 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -4430,16 +4430,4 @@ inline void dComIfGd_set3DlineMatDark(mDoExt_3DlineMat_c* param_0) { g_dComIfG_gameInfo.drawlist.set3DlineMatDark(param_0); } -inline daPy_py_c* daPy_getLinkPlayerActorClass() { - return dComIfGp_getLinkPlayer(); -} - -inline daPy_py_c* daPy_getPlayerActorClass() { - return (daPy_py_c*)dComIfGp_getPlayer(0); -} - -inline daAlink_c* daAlink_getAlinkActorClass() { - return (daAlink_c*)g_dComIfG_gameInfo.play.getPlayerPtr(LINK_PTR); -} - #endif /* D_COM_D_COM_INF_GAME_H */ diff --git a/include/d/d_msg_object.h b/include/d/d_msg_object.h index 7154d5d284..65c205d6da 100644 --- a/include/d/d_msg_object.h +++ b/include/d/d_msg_object.h @@ -744,8 +744,6 @@ public: /* 0x35C */ dMsgObject_HowlHIO_c mHowlHIO; }; -#ifndef DISABLE_MSG_OBJECT_EXTERN extern dMsgObject_HIO_c g_MsgObject_HIO_c; -#endif #endif /* D_MSG_D_MSG_OBJECT_H */ diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 751ece4b00..73556c5075 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -174,7 +174,7 @@ public: private: /* 0x14 */ J3DAnmTransform* mAnm; - /* 0x18 */ J3DMtxCalc* mpMtxCalc; + /* 0x18 */ J3DMtxCalcAnimation, J3DMtxCalcJ3DSysInitMaya>* mpMtxCalc; }; // Size: 0x1C STATIC_ASSERT(sizeof(mDoExt_bckAnm) == 0x1C); diff --git a/src/d/actor/d_a_obj_crvhahen.cpp b/src/d/actor/d_a_obj_crvhahen.cpp index 10adfceebf..b63be7ae67 100644 --- a/src/d/actor/d_a_obj_crvhahen.cpp +++ b/src/d/actor/d_a_obj_crvhahen.cpp @@ -6,6 +6,7 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_crvhahen.h" +#include "d/actor/d_a_player.h" static const char* l_arcName = "CrvFence"; diff --git a/src/d/actor/d_a_obj_ornament_cloth.cpp b/src/d/actor/d_a_obj_ornament_cloth.cpp index 8161298b19..cc7b57f1e5 100644 --- a/src/d/actor/d_a_obj_ornament_cloth.cpp +++ b/src/d/actor/d_a_obj_ornament_cloth.cpp @@ -6,6 +6,7 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_ornament_cloth.h" +#include "d/actor/d_a_player.h" #include "d/d_a_obj.h" enum J_Necktie_RES_File_ID { @@ -192,7 +193,7 @@ void daObjOnCloth_c::checkPlayerMove() { field_0x650[attr().delayedVibrationFrame - 1] = 0.0f; if (!(fopAcM_searchPlayerDistanceXZ2(this) > attr().playerReactionDist * attr().playerReactionDist)) { - f32 fVar2 = fopAcM_GetSpeedF((fopAc_ac_c*)daPy_getPlayerActorClass()); + f32 fVar2 = fopAcM_GetSpeedF(daPy_getPlayerActorClass()); if (fVar2 > attr().playerReactionSpeed) { field_0x650[attr().delayedVibrationFrame - 1] = fVar2; } diff --git a/src/d/actor/d_a_obj_stopper2.cpp b/src/d/actor/d_a_obj_stopper2.cpp index 6713215f5a..97641f7e7e 100644 --- a/src/d/actor/d_a_obj_stopper2.cpp +++ b/src/d/actor/d_a_obj_stopper2.cpp @@ -6,6 +6,7 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_stopper2.h" +#include "d/actor/d_a_player.h" static char* l_arcName = "Stop00"; diff --git a/src/d/actor/d_a_tag_yami.cpp b/src/d/actor/d_a_tag_yami.cpp index 5c7a663137..8708b8d395 100644 --- a/src/d/actor/d_a_tag_yami.cpp +++ b/src/d/actor/d_a_tag_yami.cpp @@ -7,6 +7,7 @@ #include "d/actor/d_a_tag_yami.h" #include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" const static dCcD_SrcCyl l_sph_src = { { diff --git a/src/d/actor/d_a_tbox.cpp b/src/d/actor/d_a_tbox.cpp index 6aeefbf433..34b5811972 100644 --- a/src/d/actor/d_a_tbox.cpp +++ b/src/d/actor/d_a_tbox.cpp @@ -43,6 +43,35 @@ static daTbox_ModelInfo l_modelInfo[3] = { static cXyz l_light_offset(0.0f, 35.0f, 0.0f); +class daTbox_HIO_c : public mDoHIO_entry_c { +public: + daTbox_HIO_c(); + virtual ~daTbox_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ u8 mItemNo; + /* 0x05 */ u8 mUseDebugItemNo; + /* 0x06 */ u8 mClearSwitch; + /* 0x07 */ u8 mDemoType; + /* 0x08 */ u8 mDebugLightColorEnabled; + /* 0x09 */ u8 mTimerDisplay; + /* 0x0A */ u8 mCheckDisplay; + /* 0x0B */ u8 mSaveOff; + /* 0x0C */ f32 mGravity; + /* 0x10 */ cXyz mLightOffset; + /* 0x1C */ s16 mLightColorR; + /* 0x1E */ s16 mLightColorG; + /* 0x20 */ s16 mLightColorB; + /* 0x24 */ f32 mLightPower; + /* 0x28 */ f32 mFluctuationRate; + /* 0x2C */ f32 mEnvColorInfluence; + /* 0x30 */ s16 mFluctuationSpeed; + /* 0x32 */ u8 mForPlacementCheck; +}; + +STATIC_ASSERT(sizeof(daTbox_HIO_c) == 0x34); + daTbox_HIO_c::daTbox_HIO_c() { mItemNo = 1; mUseDebugItemNo = 0; diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp index 55e416ad75..5f2e2d6fa5 100644 --- a/src/d/d_msg_object.cpp +++ b/src/d/d_msg_object.cpp @@ -1,7 +1,5 @@ #include "d/dolzel.h" // IWYU pragma: keep -#define DISABLE_MSG_OBJECT_EXTERN - #include "d/d_msg_object.h" #include "d/d_msg_class.h" #include "d/d_msg_string.h" diff --git a/tools/utilities/weak_order_diff.py b/tools/utilities/weak_order_diff.py new file mode 100755 index 0000000000..fe2c786575 --- /dev/null +++ b/tools/utilities/weak_order_diff.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +from pathlib import Path +import re +import subprocess +from argparse import ArgumentParser + +def get_symbols(o_path: Path, diff_data: bool): + output = subprocess.check_output(["readelf", "-Ws", o_path]).decode("ascii") + symbols = [] + for line in output.split("\n")[3:]: + if line == "": + continue + words = line.split() + if len(words) == 7 and words[-1] == "UND": + continue + _, offset, size, sym_type, scope, vis, section_index, name = words + + if diff_data: + # Only diff data. + if sym_type == "FUNC": + continue + if sym_type in ["FILE", "NOTYPE", "SECTION"]: + continue + if vis == "HIDDEN": + continue + if re.search(r"^@\d+$", name): + continue + if re.search(r"^lbl_[0-9a-f]+_(?:data|bss)_[0-9a-f]+$", name): + continue + match = re.search(r"^(\S+)\$\d+$", name) + if match: + name = match.group(1) + else: + # Only diff functions. + if sym_type != "FUNC": + continue + if vis == "HIDDEN": + continue + + symbols.append((sym_type, int(section_index), int(offset, 16), name)) + + symbols.sort() + symbol_names = [sym[-1] for sym in symbols] + return symbol_names + + +def print_symbols_with_unmatched_order_for_object(relative_o_path: str, version: str, diff_data: bool): + target_o = Path("build") / version / "obj" / relative_o_path + base_o = Path("build") / version / "src" / relative_o_path + if not target_o.exists(): + rel_name = relative_o_path.split("/")[-1].split(".")[0] + target_o = Path("build") / version / rel_name / "obj" / relative_o_path + + subprocess.check_output(["ninja", base_o]) + + target_symbols = get_symbols(target_o, diff_data) + base_symbols = get_symbols(base_o, diff_data) + target_symbols_set = set(target_symbols) + base_symbols = [sym for sym in base_symbols if sym in target_symbols_set] + base_idx = 0 + matched_count = 0 + unmatched_count = 0 + for target_sym in target_symbols: + if base_idx == len(base_symbols): + base_sym = None + else: + base_sym = base_symbols[base_idx] + + if target_sym == base_sym: + base_idx += 1 + matched_count += 1 + else: + base_idx = base_symbols.index(target_sym) + base_idx += 1 + unmatched_count += 1 + print(target_sym) + + print("====================================") + print("Number of order differences:", unmatched_count) + + +def main(): + parser = ArgumentParser(description="Print differences in weak function order for an object.") + parser.add_argument( + "o_path", + type=str, + default="d/actor/d_a_alink.o", + nargs='?', + help="""relative path to the object file to diff (e.g. d/actor/d_a_alink.o).""", + ) + parser.add_argument( + "-v", + "--version", + type=str, + default="GZ2E01", + help="version to build", + ) + parser.add_argument( + "--data", + action="store_true", + help="""diffs data instead of functions.""", + ) + args = parser.parse_args() + + print_symbols_with_unmatched_order_for_object(args.o_path, args.version, args.data) + +if __name__ == "__main__": + main()