From 594a9b3fd055f53b205800c517cadcae39c3dbc2 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 26 Aug 2025 17:05:59 -0400 Subject: [PATCH] boko closer to matching, various documentation, enum/inline/struct fixes --- include/SSystem/SComponent/c_cc_d.h | 2 +- include/d/actor/d_a_boko.h | 46 +++-- include/d/d_cc_d.h | 1 + include/d/d_com_inf_game.h | 2 +- include/d/d_stage.h | 16 +- src/d/actor/d_a_agbsw0.cpp | 5 +- src/d/actor/d_a_bk.cpp | 21 +- src/d/actor/d_a_boko.cpp | 287 ++++++++++++---------------- src/d/actor/d_a_fganon.cpp | 32 ++-- src/d/actor/d_a_player_dproc.inc | 5 +- src/d/actor/d_a_player_grab.inc | 2 +- src/d/actor/d_a_player_main.cpp | 20 +- src/d/actor/d_a_player_sword.inc | 16 +- src/d/actor/d_a_player_weapon.inc | 15 +- src/d/actor/d_a_tsubo.cpp | 2 +- src/d/d_a_boko_static.cpp | 127 ++++++------ src/d/d_stage.cpp | 4 +- 17 files changed, 293 insertions(+), 310 deletions(-) diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index a4cbae5e5..1fe678c32 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -430,7 +430,7 @@ public: protected: /* 0x10 */ u32 mType; - /* 0x14 */ u8 mAtp; + /* 0x14 */ u8 mAtp; // AtPoint, amount of damage done when attacking }; // size = 0x18 STATIC_ASSERT(0x18 == sizeof(cCcD_ObjAt)); diff --git a/include/d/actor/d_a_boko.h b/include/d/actor/d_a_boko.h index 56de718eb..da611c6a5 100644 --- a/include/d/actor/d_a_boko.h +++ b/include/d/actor/d_a_boko.h @@ -24,6 +24,27 @@ struct LineKe { class daBoko_c : public fopAc_ac_c { public: + enum { + /* 0x0 */ Type_BOKO_STICK_e = 0x0, + /* 0x1 */ Type_MACHETE_e = 0x1, + /* 0x2 */ Type_STALFOS_MACE_e = 0x2, + /* 0x3 */ Type_DARKNUT_SWORD_e = 0x3, + /* 0x4 */ Type_MOBLIN_SPEAR_e = 0x4, + /* 0x5 */ Type_PGANON_SWORD_e = 0x5, + Type_COUNT_e, + /* 0x7 */ Type_UNK_7_e = 0x7, // TODO: What is this supposed to be? Lit torch? Is this ever set or only read? + }; + + enum { + /* 0x0 */ Mode_WAIT_e = 0x0, + /* 0x1 */ Mode_MOVE_e = 0x1, + /* 0x2 */ Mode_ENEMY_CARRY_e = 0x2, + /* 0x3 */ Mode_PLAYER_CARRY_e = 0x3, + /* 0x4 */ Mode_4_e = 0x4, + /* 0x5 */ Mode_5_e = 0x5, + /* 0x6 */ Mode_THROW_e = 0x6, + }; + static u32 m_bound_se[6]; static u32 m_heap_size[6]; static char* m_arc_name[6]; @@ -31,7 +52,7 @@ public: static Vec m_cull_max[6]; typedef BOOL (daBoko_c::*ProcFunc_t)(); - + daBoko_c(); static Vec m_top_offset[6]; @@ -54,22 +75,25 @@ public: f32 getBlurRate() { return m_blur_rate[fopAcM_GetParam(this)]; } u8 getSeType() { return m_se_type[fopAcM_GetParam(this)]; } - int getFlameTimer() { return m2C4; } - void getNowMode() {} - void setNowMode(int) {} + int getFlameTimer() { return mFlameTimer; } + u8 getNowMode() { return mNowMode; } + void setNowMode(int mode) { mNowMode = mode; } void moveStateInit(f32 speedForward, f32 speedY, s16 angleY) { speed.y = speedY; speedF = speedForward; current.angle.y = angleY; } - void onFloorFlg() {} // maybe: m2BC = 1; + void onFloorFlg() { mbFloorFlg = true; } void setMatrix(Mtx mtx) { if (mpModel) { mpModel->setBaseTRMtx(mtx); } } void setRotAngleSpeed(s16 speed) { m2C2 = speed; } - void setThrow(s16 param_0) { m2BA = param_0; } + void setThrow(s16 param_0) { + mbThrow = true; + m2CA = param_0; + } void getTopPos(cXyz*); void getBlurRootPos(cXyz*); @@ -94,22 +118,22 @@ public: BOOL createHeap(); cPhs_State create(); -public: +private: /* 0x290 */ request_of_phase_process_class mPhase; /* 0x298 */ J3DModel* mpModel; /* 0x29C */ mDoExt_brkAnm mBrkAnm; #if VERSION > VERSION_DEMO /* 0x2B4 */ u32 m2B4; #endif - /* 0x2B8 */ u8 mCurrentAction; + /* 0x2B8 */ u8 mNowMode; /* 0x2B9 */ u8 m2B9; - /* 0x2BA */ u8 m2BA; + /* 0x2BA */ u8 mbThrow; /* 0x2BB */ u8 m2BB; - /* 0x2BC */ u8 m2BC; + /* 0x2BC */ u8 mbFloorFlg; /* 0x2BD */ u8 m2BD[0x2C0 - 0x2BD]; /* 0x2C0 */ s16 m2C0; /* 0x2C2 */ s16 m2C2; - /* 0x2C4 */ s16 m2C4; + /* 0x2C4 */ s16 mFlameTimer; /* 0x2C6 */ u8 m2C6[0x2C8 - 0x2C6]; /* 0x2C8 */ s16 m2C8; /* 0x2CA */ s16 m2CA; diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 7d4b40635..1bb56c49f 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -77,6 +77,7 @@ enum dCcG_CoRPrm_e { enum dCcG_hitSe { /* 0x01 */ dCcG_SE_UNK1 = 1, /* 0x02 */ dCcG_SE_UNK2 = 2, + /* 0x03 */ dCcG_SE_UNK3 = 3, /* 0x04 */ dCcG_SE_UNK4 = 4, /* 0x05 */ dCcG_SE_UNK5 = 5, /* 0x06 */ dCcG_SE_UNK6 = 6, diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index d857029b4..a15e15eab 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -43,7 +43,7 @@ enum daPy__PlayerStatus0 { daPyStts0_UNK10_e = 0x00000010, daPyStts0_UNK20_e = 0x00000020, daPyStts0_UNK40_e = 0x00000040, - daPyStts0_UNK80_e = 0x00000080, + daPyStts0_UNK80_e = 0x00000080, // Maybe inside a Baba Bud before being spat out? daPyStts0_UNK100_e = 0x00000100, daPyStts0_UNK200_e = 0x00000200, daPyStts0_UNK400_e = 0x00000400, diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 7085c99cb..599f0131f 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -834,24 +834,20 @@ public: /* 0x50 */ int mVrboxNum; }; -struct dStage_darkStatus_c_0C { - /* 0x00 */ u8 m00[4]; -}; // size = 0x4; - class dStage_darkStatus_c { public: /* 0x00 */ u8 mEnvAlpha; - /* 0x01 */ u8 mBokoAlpha[2]; - /* 0x04 */ f32 mBokoScale[2]; - /* 0x0C */ dStage_darkStatus_c_0C field_0xc; - /* 0x10 */ f32 field_0x10[2]; + /* 0x01 */ u8 mNonAlpha[2]; + /* 0x04 */ f32 mNonScale[2]; + /* 0x0C */ u8 mBokoAlpha[4]; + /* 0x10 */ f32 mBokoScale[2]; /* 0x18 */ f32 field_0x18[2]; u8 getEnvAlpha() const { return mEnvAlpha; } + u8 getNonAlpha(int i) const { return mNonAlpha[i]; } + f32 getNonScale(int i) const { return mNonScale[i]; } u8 getBokoAlpha(int i) const { return mBokoAlpha[i]; } f32 getBokoScale(int i) const { return mBokoScale[i]; } - // void getNonAlpha(int i) const {} - // void getNonScale(int i) const {} }; // size = 0x20 class dBgW; diff --git a/src/d/actor/d_a_agbsw0.cpp b/src/d/actor/d_a_agbsw0.cpp index bdd6f57a9..f1f44d5b9 100644 --- a/src/d/actor/d_a_agbsw0.cpp +++ b/src/d/actor/d_a_agbsw0.cpp @@ -22,6 +22,7 @@ #include "d/actor/d_a_npc_os.h" #include "d/actor/d_a_npc_md.h" #include "d/actor/d_a_npc_cb1.h" +#include "d/actor/d_a_boko.h" static dCcD_SrcCyl l_cyl_src = { // dCcD_SrcGObjInf @@ -1985,13 +1986,13 @@ BOOL daAgbsw0_c::MoveCheck(s16 conditionNo) { break; case 0x2D: - if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) { + if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) { return FALSE; } break; case 0x2E: - if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) { + if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) { return FALSE; } diff --git a/src/d/actor/d_a_bk.cpp b/src/d/actor/d_a_bk.cpp index 66c3fffbb..b178b0e01 100644 --- a/src/d/actor/d_a_bk.cpp +++ b/src/d/actor/d_a_bk.cpp @@ -669,8 +669,7 @@ static s32 target_info_count; static void* s_w_sub(void* param_1, void*) { if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) { daBoko_c* boko = (daBoko_c*)param_1; - // TODO: enum for boko type - if (fopAcM_GetParam(boko) != 4 && !fopAcM_checkCarryNow(boko)) { + if (fopAcM_GetParam(boko) != daBoko_c::Type_MOBLIN_SPEAR_e && !fopAcM_checkCarryNow(boko)) { if (target_info_count < (s32)ARRAY_SIZE(target_info)) { target_info[target_info_count] = boko; target_info_count++; @@ -2816,7 +2815,7 @@ static void wepon_search(bk_class* i_this) { if (i_this->m0300[1] == 24) { if (boko != NULL && !fopAcM_checkCarryNow(boko)) { i_this->m0B30 = 2; - if (fopAcM_GetParam(boko) == 0) { + if (fopAcM_GetParam(boko) == daBoko_c::Type_BOKO_STICK_e) { i_this->m02D5 = 0; i_this->m1040.SetAtType(AT_TYPE_UNK2000); i_this->m1040.SetAtSe(dCcG_SE_UNK4); @@ -4207,13 +4206,13 @@ static BOOL daBk_Execute(bk_class* i_this) { } if (i_this->m1214 != 0) { - daBoko_c* temp = (daBoko_c*)fopAcM_SearchByID(i_this->m1200); - if (temp != NULL) { + daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200); + if (boko != NULL) { i_this->m1214 = 0; i_this->m0B30 = 1; - fopAcM_setCarryNow(temp, FALSE); + fopAcM_setCarryNow(boko, FALSE); MtxTrans(-10000.0f, -10000.0f, 0.0f, 0); - temp->setMatrix(*calc_mtx); + boko->setMatrix(*calc_mtx); } } @@ -4359,9 +4358,9 @@ static BOOL daBk_Execute(bk_class* i_this) { enemy_fire(&i_this->mEnemyFire); if (i_this->m0B30 != 0) { - daBoko_c* r29 = (daBoko_c*)fopAcM_SearchByID(i_this->m1200); - if (r29 != NULL) { - if (fopAcM_checkCarryNow(r29)) { + daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200); + if (boko != NULL) { + if (fopAcM_checkCarryNow(boko)) { if (i_this->m0B7B == 0) { int jointIdx = 0x2C; // buki joint MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(jointIdx), *calc_mtx); @@ -4394,7 +4393,7 @@ static BOOL daBk_Execute(bk_class* i_this) { s16 angleX = 0x5B1B + REG8_S(5); cMtx_XrotM(*calc_mtx, angleX); } - r29->setMatrix(*calc_mtx); + boko->setMatrix(*calc_mtx); cXyz sp64; sp64.x = REG8_F(12); sp64.y = REG8_F(13); diff --git a/src/d/actor/d_a_boko.cpp b/src/d/actor/d_a_boko.cpp index ad9a17924..5b36a62ae 100644 --- a/src/d/actor/d_a_boko.cpp +++ b/src/d/actor/d_a_boko.cpp @@ -20,95 +20,48 @@ #include "SSystem/SComponent/c_counter.h" u32 daBoko_c::m_bound_se[] = { - JA_SE_CM_BOKOBOU_BOUND, JA_SE_CM_NATA_BOUND, JA_SE_OBJ_ST_CLUB_FALL, JA_SE_OBJ_TN_SWORD_FALL, JA_SE_CM_LANCE_BOUND, JA_SE_OBJ_TN_SWORD_FALL + /* Type_BOKO_STICK_e */ JA_SE_CM_BOKOBOU_BOUND, + /* Type_MACHETE_e */ JA_SE_CM_NATA_BOUND, + /* Type_STALFOS_MACE_e */ JA_SE_OBJ_ST_CLUB_FALL, + /* Type_DARKNUT_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL, + /* Type_MOBLIN_SPEAR_e */ JA_SE_CM_LANCE_BOUND, + /* Type_PGANON_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL, }; u32 daBoko_c::m_heap_size[] = { - 0x2300, - 0x1240, - 0x1240, - 0x1240, -#if VERSION == VERSION_DEMO - 0x3000, -#else - 0x4200, -#endif - 0x2000 + /* Type_BOKO_STICK_e */ 0x2300, + /* Type_MACHETE_e */ 0x1240, + /* Type_STALFOS_MACE_e */ 0x1240, + /* Type_DARKNUT_SWORD_e */ 0x1240, + /* Type_MOBLIN_SPEAR_e */ DEMO_SELECT(0x3000, 0x4200), + /* Type_PGANON_SWORD_e */ 0x2000 }; char* daBoko_c::m_arc_name[] = { - "Boko", /* Boko stick */ - "Nata", /* Bokoblin machete */ - "Club", /* Stalfos mace/club */ - "Tkwn", /* Darknut sword */ - "Spear", /* Moblin spear */ - "Pgsw" /* Phantom Ganon's sword */ + /* Type_BOKO_STICK_e */ "Boko", + /* Type_MACHETE_e */ "Nata", + /* Type_STALFOS_MACE_e */ "Club", + /* Type_DARKNUT_SWORD_e */ "Tkwn", + /* Type_MOBLIN_SPEAR_e */ "Spear", + /* Type_PGANON_SWORD_e */ "Pgsw" }; -Vec daBoko_c::m_cull_min[6] = { - { - -20.0f, - -10.0f, - -95.0f, - }, - { - -20.0f, - -10.0f, - -95.0f, - }, - { - -35.0f, - -35.0f, - -125.0f, - }, - { - -45.0f, - -10.0f, - -145.0f, - }, - { - -20.0f, - -20.0f, - -180.0f, - }, - { - -50.0f, - -20.0f, - -140.0f, - }, +Vec daBoko_c::m_cull_min[] = { + /* Type_BOKO_STICK_e */ {-20.0f, -10.0f, -95.0f}, + /* Type_MACHETE_e */ {-20.0f, -10.0f, -95.0f}, + /* Type_STALFOS_MACE_e */ {-35.0f, -35.0f, -125.0f}, + /* Type_DARKNUT_SWORD_e */ {-45.0f, -10.0f, -145.0f}, + /* Type_MOBLIN_SPEAR_e */ {-20.0f, -20.0f, -180.0f}, + /* Type_PGANON_SWORD_e */ {-50.0f, -20.0f, -140.0f}, }; -Vec daBoko_c::m_cull_max[6] = { - { - 20.0f, - 10.0f, - 95.0f, - }, - { - 20.0f, - 10.0f, - 95.0f, - }, - { - 35.0f, - 35.0f, - 120.0f, - }, - { - 45.0f, - 10.0f, - 130.0f, - }, - { - 20.0f, - 20.0f, - 200.0f, - }, - { - 50.0f, - 20.0f, - 120.0f, - }, +Vec daBoko_c::m_cull_max[] = { + /* Type_BOKO_STICK_e */ {20.0f, 10.0f, 95.0f}, + /* Type_MACHETE_e */ {20.0f, 10.0f, 95.0f}, + /* Type_STALFOS_MACE_e */ {35.0f, 35.0f, 120.0f}, + /* Type_DARKNUT_SWORD_e */ {45.0f, 10.0f, 130.0f}, + /* Type_MOBLIN_SPEAR_e */ {20.0f, 20.0f, 200.0f}, + /* Type_PGANON_SWORD_e */ {50.0f, 20.0f, 120.0f}, }; static cXyz l_break_particle_offset(0.0f, 0.0f, 30.0f); @@ -122,8 +75,12 @@ static daBoko_HIO_c l_HIO; /* 000000EC-0000017C .text keDraw__8daBoko_cFv */ void daBoko_c::keDraw() { +#ifdef __MWERKS__ + mpLineKe->lineMat.update(0xA, 1.25f, (GXColor){0xFF, 0x64, 0x00, 0xFF}, 2, &tevStr); +#else GXColor color = {0xFF, 0x64, 0x00, 0xFF}; mpLineKe->lineMat.update(0xA, 1.25f, color, 2, &tevStr); +#endif dComIfGd_set3DlineMat(&mpLineKe->lineMat); } @@ -223,49 +180,49 @@ BOOL daBoko_c::draw() { mParticleCallBack.getEmitter()->clearStatus(4); } - if (m2C4 != 0) { - dStage_darkStatus_c* pdVar4 = dStage_roomControl_c::getDarkStatus(); - if (pdVar4 != NULL) { + if (mFlameTimer != 0) { + dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus(); + if (dark_stts != NULL) { GXColor color = {0xEB, 0x7D, 0, 0}; dComIfGd_setAlphaModelColor(color); s32 i; for (i = 0; i < 2; i++) { - dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], pdVar4->field_0xc.m00[i]); + dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], dark_stts->getBokoAlpha(i)); } - if (mCurrentAction == 3 && dStage_roomControl_c::getDarkMode() != 0) { + if (getNowMode() == Mode_PLAYER_CARRY_e && dStage_roomControl_c::getDarkMode() != 0) { for (s32 j = i; j < 4; j++) { - dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], pdVar4->field_0xc.m00[j]); + dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], dark_stts->getBokoAlpha(j)); } } } } - if (mCurrentAction == 3 && player->checkPlayerNoDraw()) { + if (getNowMode() == Mode_PLAYER_CARRY_e && player->checkPlayerNoDraw()) { return TRUE; } g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(mpModel, &tevStr); - if (fopAcM_GetParam(this) == 5) { + if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) { mBrkAnm.entry(mpModel->getModelData()); } mDoExt_modelEntryDL(mpModel); - if (fopAcM_GetParam(this) == 5) { + if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) { mBrkAnm.remove(mpModel->getModelData()); } #if VERSION > VERSION_DEMO - if (fopAcM_GetParam(this) == 2 && mCurrentAction != 3 && mCurrentAction != 2) { + if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e && getNowMode() != Mode_PLAYER_CARRY_e && getNowMode() != Mode_ENEMY_CARRY_e) { cXyz sp0C(current.pos.x, current.pos.y + 100.0f, current.pos.z); m2B4 = dComIfGd_setShadow(m2B4, 1, mpModel, &sp0C, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr); } #endif - if (&mpLineKe->lineMat != NULL) { + if (mpLineKe != NULL) { keDraw(); } return TRUE; @@ -278,15 +235,15 @@ static BOOL daBoko_Draw(daBoko_c* i_this) { /* 00000DE4-00000EB0 .text setTopRootPos__8daBoko_cFi */ void daBoko_c::setTopRootPos(int arg1) { - s32 iVar1 = fopAcM_GetParam(this); + s32 type = fopAcM_GetParam(this); if (arg1 != 0) { mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z); mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); } else { mDoMtx_stack_c::copy(mpModel->getBaseTRMtx()); } - mDoMtx_stack_c::multVec(m_top_offset + iVar1, &m2D0); - mDoMtx_stack_c::multVec(m_root_offset + iVar1, &m2DC); + mDoMtx_stack_c::multVec(&m_top_offset[type], &m2D0); + mDoMtx_stack_c::multVec(&m_root_offset[type], &m2DC); } /* 00000EB0-00000F60 .text setBaseMatrix__8daBoko_cFv */ @@ -294,7 +251,7 @@ void daBoko_c::setBaseMatrix() { mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z); mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); #if VERSION > VERSION_DEMO - if (fopAcM_GetParam(this) == 2) { + if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e) { mDoMtx_stack_c::XrotM(-1000); mDoMtx_stack_c::transM(0.0f, 10.0f, 0.0f); } @@ -304,23 +261,24 @@ void daBoko_c::setBaseMatrix() { /* 00000F60-00000FA4 .text checkNoDraw__8daBoko_cFv */ BOOL daBoko_c::checkNoDraw() { - return m2B9 || mCurrentAction == 4 || (mCurrentAction == 3 && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e)); + return m2B9 || getNowMode() == Mode_4_e || (getNowMode() == Mode_PLAYER_CARRY_e && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e)); } /* 00000FA4-00001340 .text setFlameEffect__8daBoko_cFv */ void daBoko_c::setFlameEffect() { + /* Nonmatching */ static const s16 base_angle[] = {150, 200, 180, 120}; - dStage_darkStatus_c* pdVar3 = dStage_roomControl_c::getDarkStatus(); + dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus(); - if (pdVar3 != NULL) { + if (dark_stts != NULL) { for (s32 i = 0; i < 4; i++) { cLib_addCalc2(&m7E4, cM_rndF(0.2f) + 1.0f, 0.5f, 0.01f); - f32 fVar10 = m7E4 * pdVar3->field_0x10[i]; + f32 scale = m7E4 * dark_stts->getBokoScale(i); s16 y = g_Counter.mTimer * base_angle[i]; mDoMtx_stack_c::transS(m2D0.x, m2D0.y, m2D0.z); mDoMtx_stack_c::ZXYrotM(0, y, y); - mDoMtx_stack_c::scaleM(fVar10, fVar10, fVar10); + mDoMtx_stack_c::scaleM(scale, scale, scale); MTXCopy(mDoMtx_stack_c::get(), mAlphaModelMtx[i]); } } @@ -413,7 +371,7 @@ BOOL daBoko_c::procWait_init() { m2C2 = 0; mCurrentProc = &daBoko_c::procWait; cLib_onBit(attention_info.flags, fopAc_Attn_ACTION_CARRY_e); - mCurrentAction = 0; + setNowMode(Mode_WAIT_e); fopAcM_cancelCarryNow(this); gravity = -3.0f; return TRUE; @@ -426,13 +384,13 @@ BOOL daBoko_c::procWait() { mCurrentProc = &daBoko_c::procCarry; speedF = 0.0f; speed = cXyz::Zero; - if (mCurrentAction != 3) { - mCurrentAction = 2; + if (getNowMode() != Mode_PLAYER_CARRY_e) { + setNowMode(Mode_ENEMY_CARRY_e); } cLib_offBit(attention_info.flags, fopAc_Attn_ACTION_CARRY_e); - m2BC = 0; + mbFloorFlg = false; procCarry(); - } else if (m2BC == 0) { + } else if (!mbFloorFlg) { fopAcM_posMoveF(this, NULL); mAcch.CrrPos(*dComIfG_Bgsp()); if (!mAcch.ChkGroundHit()) { @@ -447,34 +405,35 @@ BOOL daBoko_c::procWait() { /* 000016E4-0000175C .text procMove_init__8daBoko_cFv */ BOOL daBoko_c::procMove_init() { mCurrentProc = &daBoko_c::procMove; - mCurrentAction = 1; + setNowMode(Mode_MOVE_e); fopAcM_setCarryNow(this, FALSE); cLib_offBit(attention_info.flags, fopAc_Attn_ACTION_CARRY_e); m2BB = 0x14; - m2BC = 0; + mbFloorFlg = false; return TRUE; } /* 0000175C-00001E94 .text procMove__8daBoko_cFv */ BOOL daBoko_c::procMove() { + /* Nonmatching - fpr regswap */ BOOL bVar4 = FALSE; fopAcM_posMoveF(this, NULL); - f32 fVar14 = m2DC.y; - f32 fVar15 = m2D0.y; + f32 fVar14_2 = m2DC.y; + f32 fVar15_2 = m2D0.y; setTopRootPos(1); - cXyz sp1C(m2DC.x, fVar14, m2DC.z); + cXyz sp1C(m2DC.x, fVar14_2, m2DC.z); m_ground_check.SetPos(&sp1C); - fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check); + f32 fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check); if (fVar14 == -G_CM3D_F_INF) { fVar14 = mAcch.GetGroundH(); } f32 fVar2 = m2DC.y - fVar14; - sp1C.set(m2D0.x, fVar15, m2D0.z); + sp1C.set(m2D0.x, fVar15_2, m2D0.z); m_ground_check.SetPos(&sp1C); - fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check); + f32 fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check); if (fVar15 == -G_CM3D_F_INF) { fVar15 = mAcch.GetGroundH(); } @@ -547,10 +506,16 @@ BOOL daBoko_c::procMove() { } if (m2C0 != 0) { - cLib_addCalcAngleS(&shape_angle.z, -0x4000 - abs(shape_angle.z), 5, 0x1000, 0x100); + s16 target_angle_z; + if (abs(shape_angle.z) <= 0x4000) { + target_angle_z = 0; + } else { + target_angle_z = -0x8000; + } + cLib_addCalcAngleS(&shape_angle.z, target_angle_z, 5, 0x1000, 0x100); } - fVar14 = speed.y; + f32 fVar14_3 = speed.y; mAcch.CrrPos(*dComIfG_Bgsp()); setRoomInfo(); @@ -596,7 +561,7 @@ BOOL daBoko_c::procMove() { speedF *= 0.7f; } } else { - speed.y = fVar14; + speed.y = fVar14_3; } setBaseMatrix(); return TRUE; @@ -671,7 +636,7 @@ BOOL daBoko_c::procThrow() { /* 000021B8-00002624 .text procCarry__8daBoko_cFv */ BOOL daBoko_c::procCarry() { - if (fopAcM_checkCarryNow(this) || m2BA == 0) { + if (fopAcM_checkCarryNow(this) || !mbThrow) { mDoMtx_multVecZero(mpModel->getBaseTRMtx(), ¤t.pos); mDoMtx_MtxToRot(mpModel->getBaseTRMtx(), &shape_angle); } @@ -683,9 +648,9 @@ BOOL daBoko_c::procCarry() { fopAcM_setCarryNow(this, FALSE); setTopRootPos(1); - if (m2BA != 0) { + if (mbThrow) { mCurrentProc = &daBoko_c::procThrow; - mCurrentAction = 6; + setNowMode(Mode_THROW_e); gravity = 0.0f; shape_angle.x = m2CA; shape_angle.y = link->shape_angle.y; @@ -693,7 +658,7 @@ BOOL daBoko_c::procCarry() { speedF = 70.0f * cM_scos(shape_angle.x); speed.y = -70.0f * cM_ssin(shape_angle.x); m2C8 = 2; - m2BA = 0; + mbThrow = false; mCps.ResetAtHit(); m_line_check.Set(&linkFootPos, ¤t.pos, this); @@ -709,7 +674,7 @@ BOOL daBoko_c::procCarry() { } else { procThrow(); } - } else if (m2BC != 0) { + } else if (mbFloorFlg) { if (shape_angle.z >= 0x4000) { shape_angle.z = 0; shape_angle.x += 0x8000; @@ -718,7 +683,7 @@ BOOL daBoko_c::procCarry() { procWait_init(); } else { current.angle.y = shape_angle.y + 0x8000; - if (mCurrentAction == 3) { + if (getNowMode() == Mode_PLAYER_CARRY_e) { m_line_check.Set(&linkFootPos, ¤t.pos, this); if (dComIfG_Bgsp()->LineCross(&m_line_check)) { current.pos = m_line_check.GetCross(); @@ -765,13 +730,13 @@ BOOL daBoko_c::execute() { if (mSph.ChkTgHit()) { cCcD_Obj* pcVar2 = mSph.GetTgHitObj(); if (pcVar2 != NULL) { - if (m2C4 > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) { - m2C4 = 1; + if (mFlameTimer > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) { + mFlameTimer = 1; bVar4 = TRUE; - } else if (m2C4 == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) { + } else if (mFlameTimer == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) { mDoAud_seStart(JA_SE_OBJ_TORCH_IGNITION, &m2D0, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e); - m2C4 = 900; + mFlameTimer = 900; } } } @@ -779,20 +744,20 @@ BOOL daBoko_c::execute() { mpModel->calc(); setTopRootPos(0); - if (m2C4 != 0) { - if (mCurrentAction != 2) { - m2C4--; + if (mFlameTimer != 0) { + if (getNowMode() != Mode_ENEMY_CARRY_e) { + mFlameTimer--; } f32 waterY; if (bVar4 || (fopAcM_getWaterY(&m2D0, &waterY) && waterY >= m2D0.y)) { - if (m2C4 != 0) { + if (mFlameTimer != 0) { dComIfGp_particle_set(dPa_name::ID_COMMON_035A, &m2D0); } - m2C4 = 0; + mFlameTimer = 0; } - if (m2C4 != 0) { + if (mFlameTimer != 0) { setFlameEffect(); } else { fopAcM_SetCullSize(this, fopAc_CULLBOX_CUSTOM_e); @@ -810,26 +775,26 @@ BOOL daBoko_c::execute() { mLight.mPower = 0.0f; } - if (fopAcM_GetParam(this) == 0) { - if (m2C4 > 0) { + if (fopAcM_GetParam(this) == Type_BOKO_STICK_e) { + if (mFlameTimer > 0) { mSph.OnAtSPrmBit(cCcD_TgSPrm_Set_e); } else { mSph.OffAtSPrmBit(cCcD_TgSPrm_Set_e); } mSph.SetC(m2D0); dComIfG_Ccsp()->Set(&mSph); - if (mCurrentAction == 3) { + if (getNowMode() == Mode_PLAYER_CARRY_e) { dComIfG_Ccsp_SetMass(&mSph, 1); } else { dComIfG_Ccsp_SetMass(&mSph, 4); } } - if (&mpLineKe->lineMat != NULL) { + if (mpLineKe != NULL) { keCalc(); } - if (fopAcM_GetParam(this) == 5) { + if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) { if (dComIfGs_isEventBit(0x3a08)) { mBrkAnm.play(); bVar4 = true; @@ -875,14 +840,14 @@ static BOOL daBoko_createHeap(fopAc_ac_c* i_this) { BOOL daBoko_c::createHeap() { static const s32 model_idx[] = {BOKO_BDL_BOKO, NATA_BDL_BK_NATA, CLUB_BDL_ST_BUKI, TKWN_BDL_TN_KEN1, SPEAR_BDL_MO_YARI, PGSW_BDL_BPG_KEN1}; - u32 uVar5 = fopAcM_GetParam(this); - if (uVar5 >= 6) { + u32 type = fopAcM_GetParam(this); + if (type >= Type_COUNT_e) { JUT_ASSERT(DEMO_SELECT(1702, 1740), FALSE); } - u32 unused = uVar5 == 5; + u32 unused = type == Type_PGANON_SWORD_e; - J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arc_name[uVar5], model_idx[uVar5]); + J3DModelData* modelData = static_cast(dComIfG_getObjectRes(m_arc_name[type], model_idx[type])); JUT_ASSERT(DEMO_SELECT(1708, 1746), modelData != NULL); mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002); @@ -890,7 +855,7 @@ BOOL daBoko_c::createHeap() { return FALSE; } - if (uVar5 == 4) { + if (type == 4) { mpLineKe = new LineKe(); if (mpLineKe == NULL) { return FALSE; @@ -899,9 +864,11 @@ BOOL daBoko_c::createHeap() { if (!mpLineKe->lineMat.init(0x10, 10, 0)) { return FALSE; } - } else if (uVar5 == 5 && + } else if (type == 5 && !mBrkAnm.init( - modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE + modelData, + static_cast(dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1)), + true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE )) { return FALSE; @@ -972,21 +939,21 @@ cPhs_State daBoko_c::create() { fopAcM_SetupActor(this, daBoko_c); - u32 uVar4 = fopAcM_GetParam(this); - if (uVar4 == 7) { - uVar4 = 0; - fopAcM_SetParam(this, uVar4); + u32 type = fopAcM_GetParam(this); + if (type == Type_UNK_7_e) { + type = Type_BOKO_STICK_e; + fopAcM_SetParam(this, type); fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e); - m2C4 = 900; + mFlameTimer = 900; } - cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[uVar4]); + cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[type]); if (PVar5 == cPhs_COMPLEATE_e) { - if (uVar4 >= 6) { + if (type >= Type_COUNT_e) { return cPhs_ERROR_e; } - if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[uVar4])) { + if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[type])) { return cPhs_ERROR_e; } @@ -997,9 +964,9 @@ cPhs_State daBoko_c::create() { mpModel->setBaseScale(scale); fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); - Vec* min = &m_cull_min[uVar4]; + Vec* min = &m_cull_min[type]; fopAcM_SetMin(this, min->x, min->y, min->z); - Vec* max = &m_cull_max[uVar4]; + Vec* max = &m_cull_max[type]; fopAcM_SetMax(this, max->x, max->y, max->z); mAcchCir.SetWall(10.0f, 60.0f); @@ -1020,24 +987,24 @@ cPhs_State daBoko_c::create() { fopAcM_SetMaxFallSpeed(this, -100.0f); mStts.Init(10, 0xff, this); - if (uVar4 == 0) { + if (type == Type_BOKO_STICK_e) { mpModel->getModelData()->getJointTree().getJointNodePointer(2)->getMesh()->getShape()->hide(); } mSph.Set(sph_src); mSph.SetStts(&mStts); mCps.Set(at_cps_src); mCps.SetStts(&mStts); - mCps.SetAtType(m_at_type[fopAcM_GetParam(this)]); - mCps.SetAtAtp(m_at_point[fopAcM_GetParam(this)]); - mCps.SetAtSe(m_se_type[fopAcM_GetParam(this)]); - mCps.SetR(m_cps_r[fopAcM_GetParam(this)]); + mCps.SetAtType(getAtType()); + mCps.SetAtAtp(getAtPoint()); + mCps.SetAtSe(getSeType()); + mCps.SetR(getCpsR()); mCurrentProc = &daBoko_c::procWait; setBaseMatrix(); setTopRootPos(0); - if (m2C4 != 0) { + if (mFlameTimer != 0) { m7E4 = 1.0f; setFlameEffect(); } @@ -1048,7 +1015,7 @@ cPhs_State daBoko_c::create() { mpModel->calc(); - if (uVar4 == 0) { + if (type == Type_BOKO_STICK_e) { dKy_plight_set(&mLight); mLight.mColor.r = 600; mLight.mColor.g = 400; diff --git a/src/d/actor/d_a_fganon.cpp b/src/d/actor/d_a_fganon.cpp index db369fed0..823930a3b 100644 --- a/src/d/actor/d_a_fganon.cpp +++ b/src/d/actor/d_a_fganon.cpp @@ -1026,21 +1026,21 @@ void fail(fganon_class* i_this) { kieru_brk(i_this, 2); i_this->m3A4[0] = 10; i_this->mMode = 4; - i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo); + i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo); } break; } case 4: { - daBoko_c* act = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID); - if (act != NULL) { - if (!fopAcM_checkCarryNow(act)) { - fopAcM_setCarryNow(act, 0); + daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID); + if (boko != NULL) { + if (!fopAcM_checkCarryNow(boko)) { + fopAcM_setCarryNow(boko, 0); } - act->setMatrix(i_this->mpKenModel->getBaseTRMtx()); + boko->setMatrix(i_this->mpKenModel->getBaseTRMtx()); if (i_this->m3A4[0] == 0) { fopAcM_delete(i_this); - act->m2BC = 1; - fopAcM_cancelCarryNow(act); + boko->onFloorFlg(); + fopAcM_cancelCarryNow(boko); } } break; @@ -1261,17 +1261,17 @@ void last_end(fganon_class* i_this) { case 4: { if (i_this->m3A4[1] <= 4) { if (i_this->m3A4[1] == 4) { - i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo); + i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo); } - daBoko_c* mBoko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID); - if (mBoko != NULL) { + daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID); + if (boko != NULL) { i_this->m2D0 = 2; - if (!fopAcM_checkCarryNow(mBoko)) { - fopAcM_setCarryNow(mBoko, 0); + if (!fopAcM_checkCarryNow(boko)) { + fopAcM_setCarryNow(boko, 0); } - mBoko->setMatrix(i_this->mpKenModel->getBaseTRMtx()); + boko->setMatrix(i_this->mpKenModel->getBaseTRMtx()); if (i_this->m3A4[1] == 1) { - fopAcM_cancelCarryNow(mBoko); + fopAcM_cancelCarryNow(boko); i_this->mMode = 5; i_this->mB54++; i_this->mB56 = 0; @@ -2768,7 +2768,7 @@ static cPhs_State daFganon_Create(fopAc_ac_c* i_act) { if ((i_this->mSwitchNo != 0xFF) && (dComIfGs_isSwitch(i_this->mSwitchNo, dComIfGp_roomControl_getStayNo()) != 0)) { if (((fopAcM_GetParam(i_this) & 0xF) == 2) && !(dComIfGs_isEventBit(0x3A08))) { // Probably a flag to do with beating FF1 so PG spawns? - fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo); + fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo); } return cPhs_ERROR_e; } diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index d12fdc658..6685ab76f 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -527,10 +527,7 @@ BOOL daPy_lk_c::dProcOpenTreasure_init() { if (boko != NULL) { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(shape_angle.y + 0x2000); - MtxP mtx = mDoMtx_stack_c::get(); - if (boko->mpModel != NULL) { - boko->mpModel->setBaseTRMtx(mtx); - } + boko->setMatrix(mDoMtx_stack_c::get()); } } fopAc_ac_c* partner_p = fopAcM_getEventPartner(this); diff --git a/src/d/actor/d_a_player_grab.inc b/src/d/actor/d_a_player_grab.inc index 3a7581842..64608c35b 100644 --- a/src/d/actor/d_a_player_grab.inc +++ b/src/d/actor/d_a_player_grab.inc @@ -337,7 +337,7 @@ BOOL daPy_lk_c::procGrabReady_init() { } if (fopAcM_GetName(mpAttnActorA) == PROC_BOKO) { daBoko_c* boko = static_cast(mpAttnActorA); - boko->mCurrentAction = 3; + boko->setNowMode(daBoko_c::Mode_PLAYER_CARRY_e); } shape_angle.y = fopAcM_searchActorAngleY(this, mpAttnActorA); current.angle.y = shape_angle.y; diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 9bfee6f7d..e998a8954 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -1103,20 +1103,20 @@ s32 daPy_lk_c::setItemModel() { MtxP pMVar14 = mpCLModel->getAnmMtx(0xD); MtxP pMVar13 = mpCLModel->getAnmMtx(0x8); MtxP pMVar6 = mpCLModel->getAnmMtx(0xC); - daBoko_c* pfVar11 = (daBoko_c*)mActorKeepEquip.getActor(); - if (pfVar11 != NULL && mEquipItem == daPyItem_BOKO_e) { + daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor(); + if (boko != NULL && mEquipItem == daPyItem_BOKO_e) { mDoMtx_stack_c::transS(40.0f, 47.0f, 2.1f); mDoMtx_stack_c::XYZrotM(0x3E38, -0x5D4, 0x66F8); - if (fopAcM_GetParam(pfVar11) == 2 || fopAcM_GetParam(pfVar11) == 3) { + if (fopAcM_GetParam(boko) == daBoko_c::Type_STALFOS_MACE_e || fopAcM_GetParam(boko) == daBoko_c::Type_DARKNUT_SWORD_e) { mDoMtx_stack_c::transM(0.0f, 0.0f, 20.0f); - } else if (fopAcM_GetParam(pfVar11) == 4) { + } else if (fopAcM_GetParam(boko) == daBoko_c::Type_MOBLIN_SPEAR_e) { mDoMtx_stack_c::transM(0.0f, 0.0f, 70.0f); - } else if (fopAcM_GetParam(pfVar11) == 5) { + } else if (fopAcM_GetParam(boko) == daBoko_c::Type_PGANON_SWORD_e) { mDoMtx_stack_c::transM(0.0f, 0.0f, 30.0f); } mDoMtx_stack_c::revConcat(pMVar13); MtxP mtx = mDoMtx_stack_c::now; - pfVar11->setMatrix(mtx); + boko->setMatrix(mtx); } if (mpEquipItemBtk != NULL) { dVar16 = mpEquipItemBtk->getFrame(); @@ -1185,9 +1185,9 @@ s32 daPy_lk_c::setItemModel() { if (mpBottleCapModel != NULL) { mpBottleCapModel->setBaseTRMtx(pMVar13); } - } else if (mEquipItem == dItem_HOOKSHOT_e && pfVar11 != NULL) { - if (fopAcM_GetParam(pfVar11) != 0) { - if (fopAcM_GetParam(pfVar11) == 1) { + } else if (mEquipItem == dItem_HOOKSHOT_e && boko != NULL) { + if (fopAcM_GetParam(boko) != daBoko_c::Type_BOKO_STICK_e) { + if (fopAcM_GetParam(boko) == daBoko_c::Type_MACHETE_e) { m35EC += 1.0f; } else { m35EC -= 1.0f; @@ -13027,7 +13027,7 @@ const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_ANM anm) const { BOOL daPy_lk_c::checkGrabWeapon(int r4) { if (mEquipItem == daPyItem_BOKO_e && mActorKeepEquip.getActor() != NULL) { daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor(); - if (r4 == 6 || fopAcM_GetParam(boko) == r4) { + if (r4 == daBoko_c::Type_COUNT_e || fopAcM_GetParam(boko) == r4) { return TRUE; } } diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index 9f7bfc93c..0fd51baac 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -1352,23 +1352,23 @@ BOOL daPy_lk_c::procCutTurn_init(int param_0) { setBlurPosResource(LKANM__CUTTURN_POS); } else { daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor(); - u32 uVar5; + u32 boko_type; if (boko == NULL) { - uVar5 = 0; + boko_type = daBoko_c::Type_BOKO_STICK_e; mAtCyl.SetAtAtp(1); } else { - uVar5 = fopAcM_GetParam(boko); + boko_type = fopAcM_GetParam(boko); mAtCyl.SetAtAtp(boko->getAtPoint()); } - if (uVar5 == 0) { + if (boko_type == daBoko_c::Type_BOKO_STICK_e) { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x60; - } else if (uVar5 == 1) { + } else if (boko_type == daBoko_c::Type_MACHETE_e) { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x64; - } else if (uVar5 == 2) { + } else if (boko_type == daBoko_c::Type_STALFOS_MACE_e) { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x68; - } else if (uVar5 == 3) { + } else if (boko_type == daBoko_c::Type_DARKNUT_SWORD_e) { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x6C; - } else if (uVar5 == 4) { + } else if (boko_type == daBoko_c::Type_MOBLIN_SPEAR_e) { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x70; } else { m35A4 = daPy_HIO_cutTurn_c0::m.field_0x74; diff --git a/src/d/actor/d_a_player_weapon.inc b/src/d/actor/d_a_player_weapon.inc index 81335c77d..2bd30449d 100644 --- a/src/d/actor/d_a_player_weapon.inc +++ b/src/d/actor/d_a_player_weapon.inc @@ -18,12 +18,12 @@ /* 80153554-801535D8 .text setEnemyWeaponAtParam__9daPy_lk_cFi */ void daPy_lk_c::setEnemyWeaponAtParam(BOOL r4) { static const u8 cut_type[] = { - 0x0B, - 0x0D, - 0x14, - 0x16, - 0x18, - 0x1C, + /* daBoko_c::Type_STICK_e */ 0x0B, + /* daBoko_c::Type_MACHETE_e */ 0x0D, + /* daBoko_c::Type_CLUB_e */ 0x14, + /* daBoko_c::Type_DN_SWORD_e */ 0x16, + /* daBoko_c::Type_SPEAR_e */ 0x18, + /* daBoko_c::Type_PG_SWORD_e */ 0x1C, }; daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor(); u8 cutType = cut_type[fopAcM_GetParam(boko)]; @@ -395,8 +395,7 @@ BOOL daPy_lk_c::procWeaponThrow() { uVar2 = cM_atan2s(-local_34.y, dVar5); } } - boko->setThrow(1); - boko->m2CA = uVar2; + boko->setThrow(uVar2); voiceStart(0); deleteEquipItem(FALSE); } diff --git a/src/d/actor/d_a_tsubo.cpp b/src/d/actor/d_a_tsubo.cpp index 6606b7a70..c16076cdc 100644 --- a/src/d/actor/d_a_tsubo.cpp +++ b/src/d/actor/d_a_tsubo.cpp @@ -1451,7 +1451,7 @@ bool Act_c::_delete() { void Act_c::spec_make_boko(int arg1) { M7A0* ptr = &m7A0[0]; for (s32 i = 0; i < arg1; i++, ptr++) { - ptr->m00 = fopAcM_create(PROC_BOKO, 0, ¤t.pos, fopAcM_GetHomeRoomNo(this)); + ptr->m00 = fopAcM_create(PROC_BOKO, daBoko_c::Type_BOKO_STICK_e, ¤t.pos, fopAcM_GetHomeRoomNo(this)); ptr->m06 = data_spec_boko(i).m00; ptr->m08 = ptr->m06; ptr->m10 = data_spec_boko(i).m04; diff --git a/src/d/d_a_boko_static.cpp b/src/d/d_a_boko_static.cpp index 2291db067..ff8aae5e3 100644 --- a/src/d/d_a_boko_static.cpp +++ b/src/d/d_a_boko_static.cpp @@ -9,81 +9,80 @@ #include "f_op/f_op_actor_mng.h" #include "d/d_cc_d.h" #include "SSystem/SComponent/c_xyz.h" -#include "SSystem/SComponent/c_phase.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" #include "m_Do/m_Do_mtx.h" -Vec daBoko_c::m_top_offset[6] = { - { 0.0f, 0.0f, 85.0f }, - { 16.0f, 0.0f, 77.0f }, - { -8.0f, 3.0f, 120.0f }, - { 0.0f, 0.0f, 128.0f }, - { 10.0f, 0.0f, 200.0f }, - { -40.0f, 0.0f, 110.0f }, +Vec daBoko_c::m_top_offset[] = { + /* Type_BOKO_STICK_e */ { 0.0f, 0.0f, 85.0f }, + /* Type_MACHETE_e */ { 16.0f, 0.0f, 77.0f }, + /* Type_STALFOS_MACE_e */ { -8.0f, 3.0f, 120.0f }, + /* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, 128.0f }, + /* Type_MOBLIN_SPEAR_e */ { 10.0f, 0.0f, 200.0f }, + /* Type_PGANON_SWORD_e */ { -40.0f, 0.0f, 110.0f }, }; -Vec daBoko_c::m_blur_root_offset[6] = { - { 0.0f, 0.0f, -45.0f }, - { 0.0f, 0.0f, -43.0f }, - { -1.0f, 3.0f, -60.0f }, - { 0.0f, 0.0f, -50.0f }, - { 0.0f, 0.0f, -100.0f }, - { -20.0f, 0.0f, -50.0f }, +Vec daBoko_c::m_blur_root_offset[] = { + /* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -45.0f }, + /* Type_MACHETE_e */ { 0.0f, 0.0f, -43.0f }, + /* Type_STALFOS_MACE_e */ { -1.0f, 3.0f, -60.0f }, + /* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -50.0f }, + /* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -100.0f }, + /* Type_PGANON_SWORD_e */ { -20.0f, 0.0f, -50.0f }, }; -Vec daBoko_c::m_root_offset[6] = { - { 0.0f, 0.0f, -85.0f }, - { 5.0f, 0.0f, -90.0f }, - { 3.0f, 0.0f, -120.0f }, - { 0.0f, 0.0f, -130.0f }, - { 0.0f, 0.0f, -175.0f }, - { 0.0f, 0.0f, -125.0f }, +Vec daBoko_c::m_root_offset[] = { + /* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -85.0f }, + /* Type_MACHETE_e */ { 5.0f, 0.0f, -90.0f }, + /* Type_STALFOS_MACE_e */ { 3.0f, 0.0f, -120.0f }, + /* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -130.0f }, + /* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -175.0f }, + /* Type_PGANON_SWORD_e */ { 0.0f, 0.0f, -125.0f }, }; -f32 daBoko_c::m_cps_r[6] = { - 30.0f, - 30.0f, - 50.0f, - 50.0f, - 50.0f, - 50.0f, +f32 daBoko_c::m_cps_r[] = { + /* Type_BOKO_STICK_e */ 30.0f, + /* Type_MACHETE_e */ 30.0f, + /* Type_STALFOS_MACE_e */ 50.0f, + /* Type_DARKNUT_SWORD_e */ 50.0f, + /* Type_MOBLIN_SPEAR_e */ 50.0f, + /* Type_PGANON_SWORD_e */ 50.0f, }; -s32 daBoko_c::m_at_point[6] = { - 0x01, - 0x02, - 0x04, - 0x04, - 0x04, - 0x04, +s32 daBoko_c::m_at_point[] = { + /* Type_BOKO_STICK_e */ 0x01, + /* Type_MACHETE_e */ 0x02, + /* Type_STALFOS_MACE_e */ 0x04, + /* Type_DARKNUT_SWORD_e */ 0x04, + /* Type_MOBLIN_SPEAR_e */ 0x04, + /* Type_PGANON_SWORD_e */ 0x04, }; -u32 daBoko_c::m_at_type[6] = { - AT_TYPE_BOKO_STICK, - AT_TYPE_MACHETE, - AT_TYPE_STALFOS_MACE, - AT_TYPE_DARKNUT_SWORD, - AT_TYPE_MOBLIN_SPEAR, - AT_TYPE_PGANON_SWORD, +u32 daBoko_c::m_at_type[] = { + /* Type_BOKO_STICK_e */ AT_TYPE_BOKO_STICK, + /* Type_MACHETE_e */ AT_TYPE_MACHETE, + /* Type_STALFOS_MACE_e */ AT_TYPE_STALFOS_MACE, + /* Type_DARKNUT_SWORD_e */ AT_TYPE_DARKNUT_SWORD, + /* Type_MOBLIN_SPEAR_e */ AT_TYPE_MOBLIN_SPEAR, + /* Type_PGANON_SWORD_e */ AT_TYPE_PGANON_SWORD, }; -f32 daBoko_c::m_jump_blur_rate[6] = { - 0.0f, - -0.1f, - 0.4f, - 0.5f, - 1.4f, - 0.5f, +f32 daBoko_c::m_jump_blur_rate[] = { + /* Type_BOKO_STICK_e */ 0.0f, + /* Type_MACHETE_e */ -0.1f, + /* Type_STALFOS_MACE_e */ 0.4f, + /* Type_DARKNUT_SWORD_e */ 0.5f, + /* Type_MOBLIN_SPEAR_e */ 1.4f, + /* Type_PGANON_SWORD_e */ 0.5f, }; -f32 daBoko_c::m_blur_rate[6] = { - 0.0f, - -0.1f, - 0.1f, - 0.2f, - 1.0f, - 0.2f, +f32 daBoko_c::m_blur_rate[] = { + /* Type_BOKO_STICK_e */ 0.0f, + /* Type_MACHETE_e */ -0.1f, + /* Type_STALFOS_MACE_e */ 0.1f, + /* Type_DARKNUT_SWORD_e */ 0.2f, + /* Type_MOBLIN_SPEAR_e */ 1.0f, + /* Type_PGANON_SWORD_e */ 0.2f, }; -u8 daBoko_c::m_se_type[6] = { - 0x04, - 0x01, - 0x01, - 0x01, - 0x03, - 0x01, +u8 daBoko_c::m_se_type[] = { + /* Type_BOKO_STICK_e */ dCcG_SE_UNK4, + /* Type_MACHETE_e */ dCcG_SE_UNK1, + /* Type_STALFOS_MACE_e */ dCcG_SE_UNK1, + /* Type_DARKNUT_SWORD_e */ dCcG_SE_UNK1, + /* Type_MOBLIN_SPEAR_e */ dCcG_SE_UNK3, + /* Type_PGANON_SWORD_e */ dCcG_SE_UNK1, }; /* 80067E78-80067F0C .text getTopPos__8daBoko_cFP4cXyz */ diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 4dd452a85..ef1baf211 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -321,10 +321,10 @@ void dStage_roomControl_c::checkDrawArea() const { static Mtx l_m[2]; for (int i = 0; i < 2; i++) { mDoMtx_stack_c::transS(pos); - f32 scale = darkStatus.getBokoScale(i); + f32 scale = darkStatus.getNonScale(i); mDoMtx_stack_c::scaleM(scale, scale, scale); cMtx_copy(mDoMtx_stack_c::get(), l_m[i]); - dComIfGd_setSpotModel(0, l_m[i], darkStatus.getBokoAlpha(i)); + dComIfGd_setSpotModel(0, l_m[i], darkStatus.getNonAlpha(i)); } }