From 4e7f5de0f3d8d58a7bd25c9d921e30d0c4ec6e67 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sun, 1 Jun 2025 19:09:57 -0400 Subject: [PATCH] d_a_npc_fa1 100% with weak order, add inlines --- configure.py | 2 +- include/JSystem/J3DGraphAnimator/J3DJoint.h | 4 +- include/d/actor/d_a_npc_fa1.h | 137 +++++++---- include/m_Do/m_Do_ext.h | 4 +- src/d/actor/d_a_npc_fa1.cpp | 256 +++++++++----------- src/d/actor/d_a_player_dproc.inc | 11 +- src/d/actor/d_a_player_main.cpp | 3 +- src/f_op/f_op_actor_mng.cpp | 7 +- src/m_Do/m_Do_ext.cpp | 62 ++--- 9 files changed, 240 insertions(+), 246 deletions(-) diff --git a/configure.py b/configure.py index 176f2b271..42add0efc 100755 --- a/configure.py +++ b/configure.py @@ -545,7 +545,7 @@ config.libs = [ Object(NonMatching, "d/actor/d_a_item.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_itembase.cpp"), Object(Matching, "d/actor/d_a_nh.cpp"), - Object(NonMatching, "d/actor/d_a_npc_fa1.cpp"), + Object(Equivalent, "d/actor/d_a_npc_fa1.cpp"), # weak func order Object(NonMatching, "d/actor/d_a_obj_search.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player.cpp"), Object(NonMatching, "d/actor/d_a_player_main.cpp"), diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 04cddfcbc..922a7554e 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -15,7 +15,7 @@ public: virtual void init(const Vec&, const Mtx&) {} virtual void recursiveCalc(J3DNode*) {} virtual void calcTransform(u16, const J3DTransformInfo&) {} - virtual void calc(u16) {} + virtual void calc(u16 jnt_no) {} void initAnm() { for (int i = 0; i < 4; i++) { @@ -68,7 +68,7 @@ public: } virtual void recursiveCalc(J3DNode*); virtual void calcTransform(u16, const J3DTransformInfo&); - virtual void calc(u16); + virtual void calc(u16 jnt_no); Mtx& getBackupMtx() { return mBackupMtx; } Vec& getBackupS() { return mBackupS; } diff --git a/include/d/actor/d_a_npc_fa1.h b/include/d/actor/d_a_npc_fa1.h index 10108a5f4..2c58bf3e9 100644 --- a/include/d/actor/d_a_npc_fa1.h +++ b/include/d/actor/d_a_npc_fa1.h @@ -6,74 +6,105 @@ #include "d/d_bg_s_gnd_chk.h" #include "d/d_particle.h" #include "m_Do/m_Do_hostIO.h" +#include "SSystem/SComponent/c_lib.h" class daNpc_Fa1_McaMorfCallBack1_c : public mDoExt_McaMorfCallBack1_c { public: daNpc_Fa1_McaMorfCallBack1_c(); - bool execute(unsigned short, J3DTransformInfo*); + bool execute(u16 jnt_no, J3DTransformInfo*); + + s16 getNeckAngle() { return mNeckAngle;} + void setNeckAngle(s16 angle) { mNeckAngle = angle; } + u16 getNeckJoint() { return mNeckJoint; } + void setNeckJoint(u16 joint) { mNeckJoint = joint; } public: - /* 0x04 */ s16 m04; - /* 0x06 */ u16 m06; + /* 0x04 */ s16 mNeckAngle; + /* 0x06 */ u16 mNeckJoint; }; class daNpc_Fa1_c : public fopNpc_npc_c { public: - - enum ActionType_e { - ActionType_NORMAL_MOVE_e = 0, - ActionType_PLAYER_MOVE_e = 1, - ActionType_ESCAPE_MOVE_e = 2, - ActionType_BOTTLE_APPEAR_MOVE_e = 3, - ActionType_BOTTLE_BABA_WAIT_e = 4, - ActionType_BOTTLE_BABA_MOVE_e = 5, - ActionType_BOTTLE_BABA_MOVE2_e = 6, - ActionType_BIGELF_CHANGE_e = 7, - ActionType_HOVER_MOVE_e = 8, + enum Type_e { + Type_NORMAL_e = 0, + Type_TIMER_e = 1, + Type_LINK_e = 2, + Type_BABA_e = 3, + Type_AREA_e = 4, + Type_LINK_DOWN_e = 5, + Type_HOVER_e = 6, }; - enum MoveType_e { - MoveType_STRAIGHT_e = 0, - MoveType_TURN_e = 1, - MoveType_UP_e = 2, - MoveType_AREAOUTMOVE_e = 3, + enum Mode_e { + Mode_NORMAL_MOVE_e = 0, + Mode_PLAYER_MOVE_e = 1, + Mode_ESCAPE_MOVE_e = 2, + Mode_BOTTLE_APPEAR_MOVE_e = 3, + Mode_BOTTLE_BABA_WAIT_e = 4, + Mode_BOTTLE_BABA_MOVE_e = 5, + Mode_BOTTLE_BABA_MOVE2_e = 6, + Mode_BIGELF_CHANGE_e = 7, + Mode_HOVER_MOVE_e = 8, }; - void checkStatus(unsigned char) {} - void countTime2() {} - void countTimer() {} - void getAngSpeed() {} - void getGroundY() {} - void getMode() {} - void getPlayerR() {} - void getSubMode() {} - void getTimer() {} - void getpLocalPos() {} + enum Normal_SubMode_e { + NormalSubMode_STRAIGHT_e = 0, + NormalSubMode_TURN_e = 1, + NormalSubMode_AREAMOVE_e = 2, + NormalSubMode_AREAOUTMOVE_e = 3, + }; + + enum Bottle_SubMode_e { + BottleSubMode_UP1_e = 0, + BottleSubMode_DOWN_e = 1, + BottleSubMode_UP2_e = 2, + }; + + enum BottleBaba_SubMode_e { + BottleBabaSubMode_BABADOWN_e = 0, + BottleBabaSubMode_UP2_e = 1, + }; + + u8 getMode() { return mMode; } + void setMode(u8 mode) { mMode = mode; } + bool isLinkMode() { return mMode == Mode_PLAYER_MOVE_e; } void isBabaMode() {} - void isLinkMode() {} - void isTypeArea() {} - void isTypeBaba() {} - void isTypeHover() {} - void isTypeLink() {} - void isTypeLinkDown() {} - void isTypeTimer() {} - void setAngSpeed(short) {} - void setGroundY(float) {} - void setLocalPos(float) {} - void setMode(unsigned char) {} - void setPlayerR(float) {} - void setStatus(unsigned char) {} - void setSubMode(unsigned char) {} - void setTime2(unsigned char) {} - void setTimer(unsigned short) {} - void setTypeNormal() {} + u8 getSubMode() { return mSubMode; } + void setSubMode(u8 submode) { mSubMode = submode; } + + bool isTypeTimer() { return mType == Type_TIMER_e; } + bool isTypeLink() { return mType == Type_LINK_e; } + bool isTypeBaba() { return mType == Type_BABA_e; } + bool isTypeArea() { return mType == Type_AREA_e; } + bool isTypeLinkDown() { return mType == Type_LINK_DOWN_e; } + bool isTypeHover() { return mType == Type_HOVER_e; } + void setTypeNormal() { mType = Type_NORMAL_e; } + + f32 getGroundY() { return mGroundY; } + void setGroundY(f32 y) { mGroundY = y; } + + bool checkStatus(u8 bit) { return cLib_checkBit(mStatus, bit); } + void setStatus(u8 status) { cLib_setBit(mStatus, status); } + + void getTimer() {} + void setTimer(u16) {} + void countTimer() {} + void setTime2(u8) {} + void countTime2() {} + + void getAngSpeed() {} + void setAngSpeed(s16) {} + f32 getPlayerR() { return mPlayerR; } + void setPlayerR(f32 radius) { mPlayerR = radius; } + void getpLocalPos() {} + void setLocalPos(f32) {} void setPointLightParam(); int createInit(); BOOL _draw(); BOOL _execute(); BOOL checkBinCatch(); - void position_move(float, float); + void position_move(f32, f32); void BGCheck(); void init_normal_move(); void normal_move(); @@ -133,17 +164,17 @@ public: /* 0x764 */ fopAc_ac_c* m764; /* 0x768 */ cXyz m768; /* 0x774 */ cXyz m774; - /* 0x780 */ f32 m780; - /* 0x784 */ f32 mGroundYPos; + /* 0x780 */ f32 mPlayerR; + /* 0x784 */ f32 mGroundY; /* 0x788 */ u16 mTimer; /* 0x78A */ s16 m78A; /* 0x78C */ s16 m78C; /* 0x78E */ s16 m78E; - /* 0x790 */ u8 mActionType; + /* 0x790 */ u8 mMode; /* 0x791 */ u8 mMoveTimer; - /* 0x792 */ u8 mMoveType; - /* 0x793 */ s8 m793; - /* 0x794 */ s8 m794; + /* 0x792 */ u8 mSubMode; + /* 0x793 */ u8 mStatus; + /* 0x794 */ s8 mType; /* 0x795 */ u8 m795[0x798 - 0x795]; /* 0x798 */ s16 m798; /* 0x79A */ s16 m79A; diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index c1719a5a7..3e3062e83 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -308,7 +308,7 @@ struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl { class mDoExt_McaMorfCallBack1_c { public: virtual ~mDoExt_McaMorfCallBack1_c() {} - virtual bool execute(u16, J3DTransformInfo*) = 0; + virtual bool execute(u16 jnt_no, J3DTransformInfo*) = 0; }; class mDoExt_McaMorfCallBack2_c { @@ -334,7 +334,7 @@ public: virtual ~mDoExt_McaMorf(); void calc(); - void calc(u16); + void calc(u16 jnt_no); void setAnm(J3DAnmTransform* bckAnm, int loopMode, f32 morf, f32 playSpeed, f32 startFrame, f32 endFrame, void* basAnm); void setMorf(f32); void update(); diff --git a/src/d/actor/d_a_npc_fa1.cpp b/src/d/actor/d_a_npc_fa1.cpp index 8a6402de4..0f04593e7 100644 --- a/src/d/actor/d_a_npc_fa1.cpp +++ b/src/d/actor/d_a_npc_fa1.cpp @@ -12,7 +12,7 @@ #include "d/d_snap.h" #include "f_op/f_op_actor_mng.h" -#include "weak_data_1811.h" // IWYU pragma: keep +#include "weak_data_2100_2080.h" // IWYU pragma: keep /* 800FAFC0-800FB004 .text __ct__16daNpc_Fa1_HIO3_cFv */ @@ -139,26 +139,16 @@ daNpc_Fa1_c::BottleBabaSubFunc_t bottleBabaSubProc[] = { &daNpc_Fa1_c::up2, }; -/* 800FB174-800FB1BC .text __dt__16daNpc_Fa1_HIO3_cFv */ -//daNpc_Fa1_HIO3_c::~daNpc_Fa1_HIO3_c() { -// /* Nonmatching */ -//} -// -///* 800FB1BC-800FB204 .text __dt__16daNpc_Fa1_HIO2_cFv */ -//daNpc_Fa1_HIO2_c::~daNpc_Fa1_HIO2_c() { -// /* Nonmatching */ -//} - /* 800FB204-800FB22C .text __ct__28daNpc_Fa1_McaMorfCallBack1_cFv */ daNpc_Fa1_McaMorfCallBack1_c::daNpc_Fa1_McaMorfCallBack1_c() { - m04 = 0; - m06 = 0; + mNeckAngle = 0; + mNeckJoint = 0; } /* 800FB22C-800FB24C .text execute__28daNpc_Fa1_McaMorfCallBack1_cFUsP16J3DTransformInfo */ -bool daNpc_Fa1_McaMorfCallBack1_c::execute(unsigned short param_1, J3DTransformInfo* param_2) { - if (param_1 == m06) { - param_2->mRotation.x = m04; +bool daNpc_Fa1_McaMorfCallBack1_c::execute(u16 jnt_no, J3DTransformInfo* param_2) { + if (jnt_no == getNeckJoint()) { + param_2->mRotation.x = mNeckAngle; } return TRUE; } @@ -176,50 +166,49 @@ void daNpc_Fa1_c::setPointLightParam() { /* 800FB2B8-800FB514 .text createInit__11daNpc_Fa1_cFv */ int daNpc_Fa1_c::createInit() { - m794 = fopAcM_GetParam(this); + mType = fopAcM_GetParam(this); m764 = NULL; - // zero() doesn't match. m768.setall(0.0f); - m793 = 0; - if (m794 == 3) { + setStatus(0); + if (isTypeBaba()) { init_bottle_baba_wait(); fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); fopAcM_OnStatus(this, fopAcStts_UNK4000_e); - } else if ((m794 == 2) || (m794 == 5)) { + } else if (isTypeLink() || isTypeLinkDown()) { init_bottle_appear_move(); fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); fopAcM_OnStatus(this, fopAcStts_UNK4000_e); - } else if (m794 == 6) { + } else if (isTypeHover()) { init_hover_move(); fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); } else { - if (m794 == 4) { + if (isTypeArea()) { fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); scale.x = 500.0f; } else { scale.x = l_HIO.prm.m10; } - if (m794 == 1) { - m793 = 1; + if (isTypeTimer()) { + setStatus(1); fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); current.angle.y += (s16)(cLib_getRndValue((u16)0, (u16)0xFF) * 0x100); } else { - m794 = 0; + setTypeNormal(); } init_normal_move(); } cXyz local_18(current.pos); local_18.y += 60.0f; mGndChk.SetPos(&local_18); - mGroundYPos = dComIfG_Bgsp()->GroundCross(&mGndChk); - if ((m794 != 6) && (mGroundYPos != -G_CM3D_F_INF)) { - home.pos.y = mGroundYPos + 50.0f; + setGroundY(dComIfG_Bgsp()->GroundCross(&mGndChk)); + if (!isTypeHover() && getGroundY() != -G_CM3D_F_INF) { + home.pos.y = mGroundY + 50.0f; } mStts.Init(0xFF, 0xFF, this); mCyl.SetStts(&mStts); mCyl.Set(l_cyl_src); setMtx(); - if (m794 == 3) { + if (isTypeBaba()) { setPointLightParam(); dKy_efplight_set(&mPointLight); } @@ -235,10 +224,9 @@ BOOL daNpc_Fa1_c::_draw() { g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(pJVar1, &tevStr); mpDoExt_McaMorf->entryDL(); - f32 fVar1 = mGroundYPos; - if (fVar1 != -G_CM3D_F_INF) { - dComIfGd_setSimpleShadow(¤t.pos, fVar1, 10.0f, &m774, 0, 1.0f, - &dDlst_shadowControl_c::mSimpleTexObj); + if (mGroundY != -G_CM3D_F_INF) { + dComIfGd_setSimpleShadow(¤t.pos, mGroundY, 10.0f, &m774, 0, 1.0f, + dDlst_shadowControl_c::getSimpleTex()); } dSnap_RegistFig(DSNAP_TYPE_FA, this, 1.0f, 1.0f, 1.0f); return TRUE; @@ -247,14 +235,14 @@ BOOL daNpc_Fa1_c::_draw() { /* 800FB5D8-800FB6AC .text _execute__11daNpc_Fa1_cFv */ BOOL daNpc_Fa1_c::_execute() { cLib_calcTimer(&mTimer); - (this->*moveProc[mActionType])(); + (this->*moveProc[getMode()])(); shape_angle.y = current.angle.y; mpDoExt_McaMorf->play(NULL, 0, 0); setMtx(); - if (m794 == 3) { + if (isTypeBaba()) { setPointLightParam(); } - if ((mActionType == ActionType_PLAYER_MOVE_e) && (mpEmitter != NULL)) { + if (isLinkMode() && mpEmitter != NULL) { mpEmitter->mRate = 1.0f; } dComIfGp_att_LookRequest(this, 400.0f, 300.0f, -300.0f, 0x6000, 1); @@ -280,7 +268,7 @@ BOOL daNpc_Fa1_c::checkBinCatch() { } /* 800FB730-800FB830 .text position_move__11daNpc_Fa1_cFff */ -void daNpc_Fa1_c::position_move(float param_1, float param_2) { +void daNpc_Fa1_c::position_move(f32 param_1, f32 param_2) { f32 fVar1; fVar1 = current.pos.y - home.pos.y; @@ -307,21 +295,14 @@ void daNpc_Fa1_c::position_move(float param_1, float param_2) { /* 800FB830-800FB904 .text BGCheck__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::BGCheck() { - cM3dGPla* pcVar1; - s32 bVar2; - f32 fVar3; - mGndChk.SetPos(¤t.pos); - fVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk); - mGroundYPos = fVar3; - if (fVar3 != -G_CM3D_F_INF) { - pcVar1 = dComIfG_Bgsp()->GetTriPla(mGndChk); - m774.set(pcVar1->mNormal); - bVar2 = dComIfG_Bgsp()->GetRoomId(mGndChk); - current.roomNo = bVar2; - tevStr.mRoomNo = bVar2; - bVar2 = dComIfG_Bgsp()->GetPolyColor(mGndChk); - tevStr.mEnvrIdxOverride = bVar2; + f32 ground_y = dComIfG_Bgsp()->GroundCross(&mGndChk); + setGroundY(ground_y); + if (ground_y != -G_CM3D_F_INF) { + cM3dGPla* pcVar1 = dComIfG_Bgsp()->GetTriPla(mGndChk); + m774.set(*pcVar1->GetNP()); + tevStr.mRoomNo = current.roomNo = dComIfG_Bgsp()->GetRoomId(mGndChk); + tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mGndChk); } else { m774.set(0.0f, 1.0f, 0.0f); } @@ -329,12 +310,12 @@ void daNpc_Fa1_c::BGCheck() { /* 800FB904-800FB988 .text init_normal_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_normal_move() { - mActionType = ActionType_NORMAL_MOVE_e; + setMode(Mode_NORMAL_MOVE_e); speedF = l_HIO.prm.m08; gravity = 0.1f; maxFallSpeed = -1.0f; mTimer = cLib_getRndValue((u16)l_HIO.prm.m44, (u16)60); - if (m794 == 4) { + if (isTypeArea()) { init_areaMove(); } else { init_straight2(); @@ -344,7 +325,7 @@ void daNpc_Fa1_c::init_normal_move() { /* 800FB988-800FBA68 .text normal_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::normal_move() { speedF = l_HIO.prm.m08; - (this->*moveSubProc[mMoveType])(); + (this->*moveSubProc[getSubMode()])(); position_move(10.0f, 1.0f); BGCheck(); findPlayer(); @@ -352,21 +333,21 @@ void daNpc_Fa1_c::normal_move() { dComIfG_Ccsp()->Set(&mCyl); if (mCyl.ChkCoHit()) { init_get_player_move(); - } else if ((!checkBinCatch() && (m793 & 1) != 0) && (mTimer == 0)) { + } else if (!checkBinCatch() && checkStatus(1) && mTimer == 0) { init_escape_move(); } } /* 800FBA68-800FBAB0 .text init_straight__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_straight() { - mMoveType = MoveType_STRAIGHT_e; + setSubMode(NormalSubMode_STRAIGHT_e); mMoveTimer = cLib_getRndValue((u8)60, (u8)60); gravity = 0.1f; } /* 800FBAB0-800FBAC8 .text init_straight2__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_straight2() { - mMoveType = MoveType_STRAIGHT_e; + setSubMode(NormalSubMode_STRAIGHT_e); mMoveTimer = 0; gravity = 1.0f; } @@ -384,7 +365,7 @@ void daNpc_Fa1_c::straight() { /* 800FBBC8-800FBC10 .text init_turn__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_turn() { - mMoveType = MoveType_TURN_e; + setSubMode(NormalSubMode_TURN_e); mMoveTimer = cLib_getRndValue((u8)60, (u8)60); gravity = 0.1f; } @@ -401,7 +382,7 @@ void daNpc_Fa1_c::turn() { /* 800FBCA0-800FBCC0 .text init_areaMove__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_areaMove() { - mMoveType = MoveType_UP_e; + setSubMode(NormalSubMode_AREAMOVE_e); gravity = 1.0f; m798 = 0; m79A = 0; @@ -409,13 +390,11 @@ void daNpc_Fa1_c::init_areaMove() { /* 800FBCC0-800FBE14 .text areaMove__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::areaMove() { - s16 sVar1; - cXyz local_28 = current.pos - home.pos; if (local_28.absXZ() > scale.x) { init_areaOutMove(); } else { - sVar1 = current.angle.y; + s16 sVar1 = current.angle.y; if (!cLib_calcTimer(&m798)) { m79A ^= 1; m798 = cLib_getRndValue(0xF, 0x14) & 0xFF; @@ -427,7 +406,7 @@ void daNpc_Fa1_c::areaMove() { /* 800FBE14-800FBE34 .text init_areaOutMove__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_areaOutMove() { - mMoveType = MoveType_AREAOUTMOVE_e; + setSubMode(NormalSubMode_AREAOUTMOVE_e); gravity = 0.1f; m798 = 0; m79A = 0; @@ -453,15 +432,14 @@ void daNpc_Fa1_c::areaOutMove() { /* 800FBF94-800FC03C .text init_get_player_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_get_player_move() { - mActionType = ActionType_PLAYER_MOVE_e; + setMode(Mode_PLAYER_MOVE_e); mTimer = l_HIO.prm.m42; m78A = l_HIO.prm.m3C; - m780 = 60.0f; + setPlayerR(60.0f); current.angle.y = 0; - mMcaMorfCallback1.m04 = 0; + mMcaMorfCallback1.setNeckAngle(0); current.pos.y = dComIfGp_getPlayer(0)->current.pos.y; - mDoAud_seStart(JA_SE_OBJ_FAILY_GET, ¤t.pos, 0, - dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + fopAcM_seStartCurrent(this, JA_SE_OBJ_FAILY_GET, 0); } /* 800FC03C-800FC178 .text get_player_move__11daNpc_Fa1_cFv */ @@ -481,12 +459,12 @@ void daNpc_Fa1_c::get_player_move() { m78A = sVar4; cXyz* local_18 = &m768; s16 uVar2 = current.angle.y + 0x4000; - fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0); - fVar1 = m780; - local_18->x = fVar1 * cM_ssin(uVar2); - local_18->z = fVar1 * cM_scos(uVar2); + fopAc_ac_c* player = dComIfGp_getPlayer(0); + f32 radius = getPlayerR(); + local_18->x = radius * cM_ssin(uVar2); + local_18->z = radius * cM_scos(uVar2); local_18->y += l_HIO.prm.m0C; - current.pos = apdVar3->current.pos + *local_18; + current.pos = player->current.pos + *local_18; BGCheck(); if (mTimer == 0) { execItemGet(dItem_RECOVER_FAIRY_e); @@ -496,7 +474,7 @@ void daNpc_Fa1_c::get_player_move() { /* 800FC178-800FC1A4 .text init_escape_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_escape_move() { - mActionType = ActionType_ESCAPE_MOVE_e; + setMode(Mode_ESCAPE_MOVE_e); gravity = l_HIO.prm.m18; maxFallSpeed = l_HIO.prm.m14; mTimer = l_HIO.prm.m46; @@ -504,8 +482,6 @@ void daNpc_Fa1_c::init_escape_move() { /* 800FC1A4-800FC2E0 .text escape_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::escape_move() { - s16 sVar2; - speed.y += gravity; if (speed.y > maxFallSpeed) { speed.y = maxFallSpeed; @@ -514,7 +490,7 @@ void daNpc_Fa1_c::escape_move() { speed.z = speedF * cM_scos(current.angle.y); fopAcM_posMove(this, NULL); BGCheck(); - sVar2 = mMcaMorfCallback1.m04; + s16 sVar2 = mMcaMorfCallback1.getNeckAngle(); if (sVar2 < 0) { sVar2 += 0x800; if (sVar2 > 0) { @@ -526,7 +502,7 @@ void daNpc_Fa1_c::escape_move() { sVar2 = 0; } } - mMcaMorfCallback1.m04 = sVar2; + mMcaMorfCallback1.setNeckAngle(sVar2); mCyl.SetC(current.pos); dComIfG_Ccsp()->Set(&mCyl); if (mCyl.ChkCoHit()) { @@ -538,7 +514,7 @@ void daNpc_Fa1_c::escape_move() { /* 800FC2E0-800FC310 .text init_hover_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_hover_move() { - mActionType = ActionType_HOVER_MOVE_e; + setMode(Mode_HOVER_MOVE_e); gravity = l_HIO.m78.prm.m0C; maxFallSpeed = -l_HIO.m78.prm.m08; speedF = 0.0f; @@ -554,9 +530,9 @@ void daNpc_Fa1_c::hover_move() { /* 800FC380-800FC3C8 .text init_bottle_appear_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_bottle_appear_move() { - mActionType = ActionType_BOTTLE_APPEAR_MOVE_e; + setMode(Mode_BOTTLE_APPEAR_MOVE_e); init_up1(); - if (m794 == 5) { + if (isTypeLinkDown()) { execItemGet(dItem_RECOVER_FAIRY_e); } } @@ -576,8 +552,8 @@ void daNpc_Fa1_c::bottle_appear_move() { } s16 uVar2 = current.angle.y + 0x4000; fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0); - m768.x = m780 * cM_ssin(uVar2); - m768.z = m780 * cM_scos(uVar2); + m768.x = mPlayerR * cM_ssin(uVar2); + m768.z = mPlayerR * cM_scos(uVar2); m768.y += speed.y; current.pos = apdVar3->current.pos + m768; if (maxFallSpeed < 0.0f) { @@ -591,14 +567,14 @@ void daNpc_Fa1_c::bottle_appear_move() { speed.y = maxFallSpeed; } } - m780 += 2.0f; - if (m780 > 60.0f) { - m780 = 60.0f; + mPlayerR += 2.0f; + if (mPlayerR > 60.0f) { + setPlayerR(60.0f); } BGCheck(); - (this->*bottleMoveSubProc[mMoveType])(); + (this->*bottleMoveSubProc[getSubMode()])(); if (mTimer == 0) { - if (m794 != 5) { + if (!isTypeLinkDown()) { execItemGet(dItem_RECOVER_FAIRY_e); } fopAcM_delete(this); @@ -607,7 +583,7 @@ void daNpc_Fa1_c::bottle_appear_move() { /* 800FC5A8-800FC6DC .text init_up1__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_up1() { - mMoveType = MoveType_STRAIGHT_e; + setSubMode(BottleSubMode_UP1_e); mTimer = l_HIO.prm.m4A; maxFallSpeed = l_HIO.prm.m30; speed.y = l_HIO.prm.m28; @@ -617,7 +593,7 @@ void daNpc_Fa1_c::init_up1() { m78E = 0; fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0); m768 = current.pos - apdVar3->current.pos; - m780 = m768.absXZ(); + setPlayerR(m768.absXZ()); current.angle.y = cM_atan2s(m768.x, m768.z) + -0x4000; } @@ -630,7 +606,7 @@ void daNpc_Fa1_c::up1() { /* 800FC70C-800FC730 .text init_down__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_down() { - mMoveType = MoveType_TURN_e; + setSubMode(BottleSubMode_DOWN_e); m78C = l_HIO.prm.m4C; m78E = l_HIO.prm.m4E; } @@ -644,10 +620,9 @@ void daNpc_Fa1_c::down() { /* 800FC768-800FC7E0 .text init_up2__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_up2() { - mMoveType = MoveType_UP_e; + setSubMode(BottleSubMode_UP2_e); maxFallSpeed = l_HIO.prm.m2C; - mDoAud_seStart(JA_SE_OBJ_BOTTLE_FAILY, ¤t.pos, 0, - dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + fopAcM_seStartCurrent(this, JA_SE_OBJ_BOTTLE_FAILY, 0); } /* 800FC7E0-800FC7E4 .text up2__11daNpc_Fa1_cFv */ @@ -657,7 +632,7 @@ void daNpc_Fa1_c::up2() { /* 800FC7E4-800FC81C .text init_bottle_baba_wait__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_bottle_baba_wait() { - mActionType = ActionType_BOTTLE_BABA_WAIT_e; + setMode(Mode_BOTTLE_BABA_WAIT_e); speed.setall(0.0f); speedF = 0.0f; maxFallSpeed = 0.0f; @@ -674,7 +649,7 @@ void daNpc_Fa1_c::bottle_baba_wait() { /* 800FC848-800FC8E4 .text init_bottle_baba_move__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_bottle_baba_move() { - mActionType = ActionType_BOTTLE_BABA_MOVE_e; + setMode(Mode_BOTTLE_BABA_MOVE_e); fopAcM_SearchByName(PROC_NPC_BA1, &m764); mTimer = l_HIO.m50.prm.m22; speedF = l_HIO.m50.prm.m08; @@ -713,7 +688,7 @@ void daNpc_Fa1_c::bottle_baba_move() { } current.pos += speed; BGCheck(); - u8 dVar1 = mMoveType; + u8 dVar1 = getSubMode(); (this->*bottleBabaSubProc[dVar1])(); if ((dVar1 == 1) && (current.pos.y > m764->current.pos.y + 150.0f)) { fopAcM_delete(this); @@ -723,7 +698,7 @@ void daNpc_Fa1_c::bottle_baba_move() { /* 800FCA94-800FCAF4 .text init_bottle_baba_move2__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_bottle_baba_move2() { - mActionType = ActionType_BOTTLE_BABA_MOVE2_e; + setMode(Mode_BOTTLE_BABA_MOVE2_e); m764 = dComIfGp_getPlayer(0); speedF = l_HIO.m50.prm.m08; m798 = 0; @@ -757,7 +732,7 @@ void daNpc_Fa1_c::bottle_baba_move2() { } current.pos += speed; BGCheck(); - (this->*bottleBabaSubProc[mMoveType])(); + (this->*bottleBabaSubProc[getSubMode()])(); if ((current.pos.y > m764->current.pos.y + 180.0f)) { init_bottle_baba_move(); } @@ -766,13 +741,12 @@ void daNpc_Fa1_c::bottle_baba_move2() { /* 800FCC94-800FCD28 .text init_baba_down__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_baba_down() { - mMoveType = MoveType_STRAIGHT_e; + setSubMode(BottleBabaSubMode_BABADOWN_e); speed.y = 0.0f; maxFallSpeed = m79C; gravity = l_HIO.m50.prm.m1C; - if (mActionType == ActionType_BOTTLE_BABA_MOVE_e) { - mDoAud_seStart(JA_SE_OBJ_BA_FAILY_2, ¤t.pos, 0, - dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + if (getMode() == Mode_BOTTLE_BABA_MOVE_e) { + fopAcM_seStartCurrent(this, JA_SE_OBJ_BA_FAILY_2, 0); } } @@ -785,17 +759,16 @@ void daNpc_Fa1_c::baba_down() { /* 800FCD5C-800FCDD8 .text init_baba_up__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_baba_up() { - mMoveType = MoveType_TURN_e; + setSubMode(BottleBabaSubMode_UP2_e); maxFallSpeed = m7A0; - if (mActionType == ActionType_BOTTLE_BABA_MOVE2_e) { - mDoAud_seStart(JA_SE_OBJ_BA_FAILY_1, ¤t.pos, 0, - dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + if (getMode() == Mode_BOTTLE_BABA_MOVE2_e) { + fopAcM_seStartCurrent(this, JA_SE_OBJ_BA_FAILY_1, 0); } } /* 800FCDD8-800FCE7C .text init_bigelf_change__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::init_bigelf_change() { - mActionType = ActionType_BIGELF_CHANGE_e; + setMode(Mode_BIGELF_CHANGE_e); fopAcM_OnStatus(this, fopAcStts_UNK4000_e); speedF = l_HIO.m78.prm.m14; speed.x = speedF * cM_ssin(current.angle.y); @@ -816,49 +789,43 @@ void daNpc_Fa1_c::bigelf_change() { /* 800FCF4C-800FD050 .text findPlayer__11daNpc_Fa1_cFv */ void daNpc_Fa1_c::findPlayer() { - /* Nonmatching */ - s16 sVar1; - s16 sVar2; - s16 sVar4; - s16 sVar6; - cXyz local_28; - fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0); + fopAc_ac_c* player = dComIfGp_getPlayer(0); - local_28 = apdVar3->current.pos - current.pos; - sVar2 = cM_atan2s(local_28.x, local_28.z) - current.angle.y; - sVar1 = mMcaMorfCallback1.m04; - if (sVar2 < 0) { - if (sVar2 < -0x4000) { - sVar2 = -0x4000; + cXyz local_28 = player->current.pos - current.pos; + s16 r4 = cM_atan2s(local_28.x, local_28.z) - current.angle.y; + s16 r3 = mMcaMorfCallback1.getNeckAngle(); + if (r4 < 0) { + if (r4 < -0x4000) { + r4 = -0x4000; } - sVar4 = ((sVar2 - sVar1) >> 2); - if (sVar4 < -0x800) { - sVar4 = -0x800; + s16 r0 = ((s16)(r4 - r3) / 4); + if (r0 < -0x800) { + r0 = -0x800; } - sVar6 = sVar1 + sVar4; - if (sVar6 < sVar2) { - sVar6 = sVar2; + r3 += r0; + if (r3 < r4) { + r3 = r4; } } else { - if (sVar2 > 0x4000) { - sVar2 = 0x4000; + if (r4 > 0x4000) { + r4 = 0x4000; } - sVar4 = ((sVar2 - sVar1) >> 2); - if (sVar4 > 0x800) { - sVar4 = 0x800; + s16 r0 = ((s16)(r4 - r3) / 4); + if (r0 > 0x800) { + r0 = 0x800; } - sVar6 = sVar1 + sVar4; - if (sVar6 > sVar2) { - sVar6 = sVar2; + r3 += r0; + if (r3 > r4) { + r3 = r4; } } - mMcaMorfCallback1.m04 = sVar6; + mMcaMorfCallback1.setNeckAngle(r3); } /* 800FD050-800FD0F0 .text _delete__11daNpc_Fa1_cFv */ BOOL daNpc_Fa1_c::_delete() { mSparklePtclCallback.end(); - if (m794 == 3) { + if (isTypeBaba()) { dKy_efplight_cut(&mPointLight); } if (l_hio_counter != 0) { @@ -915,8 +882,8 @@ int daNpc_Fa1_c::CreateHeap() { mpDoExt_McaMorf = NULL; return false; } else { - mMcaMorfCallback1.m06 = pModelData->getJointName()->getIndex("neck"); - mMcaMorfCallback1.m04 = 0; + mMcaMorfCallback1.setNeckJoint(pModelData->getJointName()->getIndex("neck")); + mMcaMorfCallback1.setNeckAngle(0); return true; } } @@ -925,10 +892,10 @@ int daNpc_Fa1_c::CreateHeap() { void daNpc_Fa1_c::setMtx() { J3DModel* pJVar5 = mpDoExt_McaMorf->getModel(); mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); - mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y); + mDoMtx_stack_c::YrotM(shape_angle.y); pJVar5->setBaseTRMtx(mDoMtx_stack_c::get()); mpDoExt_McaMorf->calc(); - MtxP pMVar4 = mpDoExt_McaMorf->getModel()->getAnmMtx(mMcaMorfCallback1.m06); + MtxP pMVar4 = mpDoExt_McaMorf->getModel()->getAnmMtx(mMcaMorfCallback1.getNeckJoint()); attention_info.position.set(pMVar4[0][3], pMVar4[1][3], pMVar4[2][3]); eyePos = attention_info.position; } @@ -958,11 +925,6 @@ BOOL daNpc_Fa1_IsDelete(daNpc_Fa1_c*) { return TRUE; } -/* 800FD764-800FD7D8 .text __dt__15daNpc_Fa1_HIO_cFv */ -//daNpc_Fa1_HIO_c::~daNpc_Fa1_HIO_c() { -// /* Nonmatching */ -//} - static actor_method_class l_daNpc_Fa1_Method = { (process_method_func)daNpc_Fa1_Create, (process_method_func)daNpc_Fa1_Delete, diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 5de3e829c..69af35522 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -14,6 +14,7 @@ #include "d/actor/d_a_boko.h" #include "d/actor/d_a_demo_item.h" #include "d/actor/d_a_itembase.h" +#include "d/actor/d_a_npc_fa1.h" #include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_player_main_data.h" @@ -2002,11 +2003,9 @@ BOOL daPy_lk_c::dProcBottleOpenFairy() { daPy_HIO_bottle_c0::m.field_0xA, daPy_HIO_bottle_c0::m.field_0x54 ); - } else { - if (frameCtrl.checkPass(32.0f)) { - m355E = 0; - mRightHandIdx = 8; - } + } else if (frameCtrl.checkPass(32.0f)) { + m355E = 0; + mRightHandIdx = 8; } } else if (frameCtrl.getRate() < 0.01f) { dComIfGp_evmng_cutEnd(mStaffIdx); @@ -2021,7 +2020,7 @@ BOOL daPy_lk_c::dProcBottleOpenFairy() { } else { dComIfGs_setEquipBottleItemEmpty(dItemBtn_Z_e); } - fopAcM_fastCreate(PROC_NPC_FA1, 3, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle); + fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_BABA_e, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle); } } } diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index bb9d9ec44..d00128887 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -10,6 +10,7 @@ #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_demo_item.h" +#include "d/actor/d_a_npc_fa1.h" #include "d/actor/d_a_obj_movebox.h" #include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_sea.h" @@ -5517,7 +5518,7 @@ BOOL daPy_lk_c::changeDeadProc() { (!checkModeFlg(ModeFlg_DAMAGE))) { if (dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e)) { - makeFairy(¤t.pos, 5); + makeFairy(¤t.pos, daNpc_Fa1_c::Type_LINK_DOWN_e); dComIfGs_setBottleItemIn(dItem_FAIRY_BOTTLE_e, dItem_EMPTY_BOTTLE_e); return false; } diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index cf3253286..47751f3d9 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -4,6 +4,7 @@ // #include "f_op/f_op_actor_mng.h" +#include "d/actor/d_a_npc_fa1.h" #include "f_op/f_op_actor.h" #include "f_op/f_op_scene_mng.h" #include "f_op/f_op_camera.h" @@ -986,7 +987,7 @@ fpc_ProcID fopAcM_createItem(cXyz* pos, int i_itemNo, int i_itemBitNo, int roomN switch (i_itemNo) { case dItem_RECOVER_FAIRY_e: - return fopAcM_create(PROC_NPC_FA1, 1, pos, roomNo, angle, scale); + return fopAcM_create(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale); case dItem_TRIPLE_HEART_e: // Make the two extra hearts first, then fall-through to make the third heart as normal. for (int i = 0; i < 2; i++) { @@ -1025,7 +1026,7 @@ void* fopAcM_fastCreateItem2(cXyz* pos, int i_itemNo, int i_itemBitNo, int roomN switch (i_itemNo) { case dItem_RECOVER_FAIRY_e: - return fopAcM_fastCreate(PROC_NPC_FA1, 1, pos, roomNo, angle, scale); + return fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale); case dItem_TRIPLE_HEART_e: // Make the two extra hearts first, then fall-through to make the third heart as normal. for (i = 0; i < 2; i++) { @@ -1086,7 +1087,7 @@ void* fopAcM_fastCreateItem(cXyz* pos, int i_itemNo, int roomNo, csXyz* angle, c csXyz prmAngle; switch (i_itemNo) { case dItem_RECOVER_FAIRY_e: - item = (daItem_c*)fopAcM_fastCreate(PROC_NPC_FA1, 1, pos, roomNo, angle, scale); + item = (daItem_c*)fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale); return item; case dItem_TRIPLE_HEART_e: // Make the two extra hearts first, then fall-through to make the third heart as normal. diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 8ab347566..8d28865c3 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1233,7 +1233,7 @@ ERROR_EXIT: } /* 80012A2C-80012D78 .text calc__14mDoExt_McaMorfFUs */ -void mDoExt_McaMorf::calc(u16 param_0) { +void mDoExt_McaMorf::calc(u16 jnt_no) { if (!mpModel) { return; } @@ -1243,37 +1243,37 @@ void mDoExt_McaMorf::calc(u16 param_0) { if (mpTransformInfo == NULL) { infoPtr = &info1; } else { - infoPtr = &mpTransformInfo[param_0]; + infoPtr = &mpTransformInfo[jnt_no]; } Quaternion quat1; Quaternion* quatPtr; if (mpQuat == NULL) { quatPtr = &quat1; } else { - quatPtr = &mpQuat[param_0]; + quatPtr = &mpQuat[jnt_no]; } if (!mpAnm) { - *infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo(); + *infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo(); if (mpCallback1) { - mpCallback1->execute(param_0, infoPtr); + mpCallback1->execute(jnt_no, infoPtr); } JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr); - calcTransform(param_0, *infoPtr); + calcTransform(jnt_no, *infoPtr); } else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) { - mpAnm->getTransform(param_0, infoPtr); + mpAnm->getTransform(jnt_no, infoPtr); if (mpCallback1) { - mpCallback1->execute(param_0, infoPtr); + mpCallback1->execute(jnt_no, infoPtr); } JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr); - calcTransform(param_0, *infoPtr); + calcTransform(jnt_no, *infoPtr); } else { f32 f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf); f32 f30 = 1.0f - f31; J3DTransformInfo info2; Quaternion quat2; - mpAnm->getTransform(param_0, &info2); + mpAnm->getTransform(jnt_no, &info2); if (mpCallback1) { - mpCallback1->execute(param_0, &info2); + mpCallback1->execute(jnt_no, &info2); } JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat2); JMAQuatLerp(quatPtr, &quat2, f31, quatPtr); @@ -1285,10 +1285,10 @@ void mDoExt_McaMorf::calc(u16 param_0) { infoPtr->mScale.x = infoPtr->mScale.x * f30 + info2.mScale.x * f31; infoPtr->mScale.y = infoPtr->mScale.y * f30 + info2.mScale.y * f31; infoPtr->mScale.z = infoPtr->mScale.z * f30 + info2.mScale.z * f31; - mDoExt_setJ3DData(mtx, infoPtr, param_0); + mDoExt_setJ3DData(mtx, infoPtr, jnt_no); } if (mpCallback2) { - mpCallback2->execute(param_0); + mpCallback2->execute(jnt_no); } } @@ -1521,7 +1521,7 @@ void mDoExt_McaMorf2::ERROR_EXIT() { } /* 80013770-80013E50 .text calc__15mDoExt_McaMorf2FUs */ -void mDoExt_McaMorf2::calc(u16 param_0) { +void mDoExt_McaMorf2::calc(u16 jnt_no) { /* Nonmatching - regalloc (fixing the regalloc causes an instruction swap on f30 = mAnmRate) */ if (!mpModel) { return; @@ -1534,7 +1534,7 @@ void mDoExt_McaMorf2::calc(u16 param_0) { if (mpTransformInfo == NULL) { infoPtr = &sp88; } else { - infoPtr = &mpTransformInfo[param_0]; + infoPtr = &mpTransformInfo[jnt_no]; } Quaternion sp48[2]; Quaternion sp28[2]; @@ -1544,29 +1544,29 @@ void mDoExt_McaMorf2::calc(u16 param_0) { if (mpQuat == NULL) { quatPtr = &sp18; } else { - quatPtr = &mpQuat[param_0]; + quatPtr = &mpQuat[jnt_no]; } Mtx mtx; f32 f31; f32 f30; if (!mpAnm1) { - *infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo(); + *infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo(); if (mpCallback1) { - mpCallback1->execute(param_0, infoPtr); + mpCallback1->execute(jnt_no, infoPtr); } JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr); - calcTransform(param_0, *infoPtr); + calcTransform(jnt_no, *infoPtr); } else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) { - mpAnm1->getTransform(param_0, &spD8[0]); + mpAnm1->getTransform(jnt_no, &spD8[0]); if (!mpAnm2) { if (mpCallback1) { - mpCallback1->execute(param_0, &spD8[0]); + mpCallback1->execute(jnt_no, &spD8[0]); } JMAEulerToQuat(spD8[0].mRotation.x, spD8[0].mRotation.y, spD8[0].mRotation.z, quatPtr); - calcTransform(param_0, spD8[0]); + calcTransform(jnt_no, spD8[0]); *infoPtr = spD8[0]; } else { - mpAnm2->getTransform(param_0, &spD8[1]); + mpAnm2->getTransform(jnt_no, &spD8[1]); f31 = 1.0f - mAnmRate; f30 = mAnmRate; infoPtr->mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30; @@ -1580,14 +1580,14 @@ void mDoExt_McaMorf2::calc(u16 param_0) { } JMAQuatLerp(&sp48[0], &sp48[1], f30 / (f31 + f30), quatPtr); mDoMtx_quat(mtx, quatPtr); - mDoExt_setJ3DData(mtx, infoPtr, param_0); + mDoExt_setJ3DData(mtx, infoPtr, jnt_no); } } else if (!mpAnm2) { f30 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf); f31 = 1.0f - f30; - mpAnm1->getTransform(param_0, &sp68); + mpAnm1->getTransform(jnt_no, &sp68); if (mpCallback1) { - mpCallback1->execute(param_0, &sp68); + mpCallback1->execute(jnt_no, &sp68); } JMAEulerToQuat(sp68.mRotation.x, sp68.mRotation.y, sp68.mRotation.z, &sp08); JMAQuatLerp(quatPtr, &sp08, f30, quatPtr); @@ -1598,10 +1598,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) { infoPtr->mScale.x = infoPtr->mScale.x * f31 + sp68.mScale.x * f30; infoPtr->mScale.y = infoPtr->mScale.y * f31 + sp68.mScale.y * f30; infoPtr->mScale.z = infoPtr->mScale.z * f31 + sp68.mScale.z * f30; - mDoExt_setJ3DData(mtx, infoPtr, param_0); + mDoExt_setJ3DData(mtx, infoPtr, jnt_no); } else { - mpAnm1->getTransform(param_0, &spD8[0]); - mpAnm2->getTransform(param_0, &spD8[1]); + mpAnm1->getTransform(jnt_no, &spD8[0]); + mpAnm2->getTransform(jnt_no, &spD8[1]); f31 = 1.0f - mAnmRate; f30 = mAnmRate; sp68.mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30; @@ -1626,10 +1626,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) { infoPtr->mScale.y = infoPtr->mScale.y * f30 + sp68.mScale.y * f31; infoPtr->mScale.z = infoPtr->mScale.z * f30 + sp68.mScale.z * f31; mDoMtx_quat(mtx, quatPtr); - mDoExt_setJ3DData(mtx, infoPtr, param_0); + mDoExt_setJ3DData(mtx, infoPtr, jnt_no); } if (mpCallback2) { - mpCallback2->execute(param_0); + mpCallback2->execute(jnt_no); } }