From b309e0cf57ba36f0c3e01a205f7e097ae46f389b Mon Sep 17 00:00:00 2001 From: Max Roncace Date: Mon, 25 Aug 2025 18:33:44 -0400 Subject: [PATCH] Miscellaneous improvements (#2603) --- configure.py | 6 +- include/JSystem/JParticle/JPAEmitter.h | 6 +- include/d/actor/d_a_alink.h | 30 +- include/d/actor/d_a_e_mk.h | 18 - include/d/actor/d_a_fr.h | 20 - include/d/actor/d_a_midna.h | 2 +- include/d/actor/d_a_npc_cd2.h | 34 +- include/d/actor/d_a_npc_cdn3.h | 14 +- include/d/actor/d_a_npc_zra.h | 3 +- src/d/actor/d_a_e_mk.cpp | 326 ++++++++-------- src/d/actor/d_a_e_po.cpp | 49 +-- src/d/actor/d_a_fr.cpp | 117 +++--- src/d/actor/d_a_midna.cpp | 15 +- src/d/actor/d_a_npc_cdn3.cpp | 302 +-------------- src/d/actor/d_a_npc_zra.cpp | 64 ++-- src/d/actor/d_a_npc_zra.inc | 509 ++++++++++++------------- src/d/actor/d_a_obj_toby.cpp | 2 - 17 files changed, 632 insertions(+), 885 deletions(-) diff --git a/configure.py b/configure.py index 5cf97fd7d3..a9ab92f6e9 100755 --- a/configure.py +++ b/configure.py @@ -1569,7 +1569,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_e_nest"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_rd"), ActorRel(MatchingFor("GZ2E01"), "d_a_econt"), - ActorRel(NonMatching, "d_a_fr"), + ActorRel(MatchingFor("GZ2E01"), "d_a_fr"), ActorRel(NonMatching, "d_a_grass"), ActorRel(MatchingFor("GZ2E01"), "d_a_kytag05"), ActorRel(MatchingFor("GZ2E01"), "d_a_kytag10"), @@ -1707,7 +1707,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_e_mb"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_md"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_mf"), - ActorRel(NonMatching, "d_a_e_mk"), + ActorRel(MatchingFor("GZ2E01"), "d_a_e_mk"), ActorRel(NonMatching, "d_a_e_mk_bo"), ActorRel(NonMatching, "d_a_e_mm"), ActorRel(NonMatching, "d_a_e_mm_mt"), @@ -1887,7 +1887,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_npc_zelR"), ActorRel(NonMatching, "d_a_npc_zelRo"), ActorRel(MatchingFor("GZ2E01"), "d_a_npc_zelda"), - ActorRel(NonMatching, "d_a_npc_zra", extra_cflags=[DANPCF_C_HACK]), + ActorRel(Equivalent, "d_a_npc_zra", extra_cflags=[DANPCF_C_HACK]), # regalloc ActorRel(NonMatching, "d_a_npc_zrc", extra_cflags=[DANPCF_C_HACK]), ActorRel(NonMatching, "d_a_npc_zrz", extra_cflags=[DANPCF_C_HACK]), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_Lv5Key"), diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index b1fae07113..30a7016503 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -138,7 +138,7 @@ public: void getGlobalTranslation(JGeometry::TVec3* out) const { out->set(mGlobalTrs); } void setGlobalDynamicsScale(const JGeometry::TVec3& i_scale) { mGlobalScl.set(i_scale); } void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; } - u8 getGlobalAlpha() { return mGlobalPrmClr.a; } + u8 getGlobalAlpha() const { return mGlobalPrmClr.a; } void getGlobalPrmColor(GXColor& color) { color = mGlobalPrmClr; } void setGlobalPrmColor(u8 r, u8 g, u8 b) { mGlobalPrmClr.r = r; mGlobalPrmClr.g = g; mGlobalPrmClr.b = b; } void setGlobalEnvColor(u8 r, u8 g, u8 b) { mGlobalEnvClr.r = r; mGlobalEnvClr.g = g; mGlobalEnvClr.b = b; } @@ -198,10 +198,10 @@ public: u32 getUserWork() { return mpUserWork; } void setUserWork(u32 userWork) { mpUserWork = userWork; } - u32 getParticleNumber() { + u32 getParticleNumber() const { return mAlivePtclBase.getNum() + mAlivePtclChld.getNum(); } - bool isEnableDeleteEmitter() { + bool isEnableDeleteEmitter() const { return checkStatus(JPAEmtrStts_EnableDeleteEmitter) && getParticleNumber() == 0; } void setDrawTimes(u8 drawTimes) { mDrawTimes = drawTimes; } diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 1a84f4e036..1b868992ae 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -221,9 +221,9 @@ public: /* 0x0 */ u8 unk_0x0; }; -class daAlinkHIO_c +class daAlinkHIO_c #ifdef DEBUG -: public mDoHIO_entry_c +: public mDoHIO_entry_c #endif { public: @@ -3475,19 +3475,19 @@ public: u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; } BOOL checkClimbFall() { return checkLadderFall(); } - bool checkMidnaWolfDashAnime() { return checkNoResetFlg1(FLG1_DASH_MODE); } - bool checkMidnaClingAnime() { return mMidnaAnm == 1; } - bool checkMidnaLowClingAnime() { return mMidnaAnm == 2; } - bool checkMidnaLookAroundAnime() { return mMidnaAnm == 3; } - bool checkMidnaPanicAnime() { return mMidnaAnm == 5; } - bool checkMidnaWolfDeadAnime() { return mMidnaAnm == 6; } - bool checkMidnaWolfSwimDeadAnime() { return mMidnaAnm == 7; } - bool checkMidnaRopeWaitStaggerAnime() { return mMidnaAnm == 8; } - bool checkMidnaRopeMoveStaggerAnime() { return mMidnaAnm == 9; } - bool checkMidnaGanonCatchAnm() { return mMidnaAnm == 10; } - bool checkMidnaGanonThrowLeftAnm() { return mMidnaAnm == 11; } - bool checkMidnaGanonThrowRightAnm() { return mMidnaAnm == 12; } - bool checkMidnaDigInAnime() { 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; diff --git a/include/d/actor/d_a_e_mk.h b/include/d/actor/d_a_e_mk.h index a708961be9..9bdb6a0b68 100644 --- a/include/d/actor/d_a_e_mk.h +++ b/include/d/actor/d_a_e_mk.h @@ -18,8 +18,6 @@ */ class e_mk_class { public: - /* 8071C190 */ e_mk_class() {} - enum e_mk_ACTION { ACT_WAIT, ACT_MOVE, @@ -128,20 +126,4 @@ public: STATIC_ASSERT(sizeof(e_mk_class) == 0xcf8); -class daE_MK_HIO_c : public JORReflexible { -public: - /* 8071412C */ daE_MK_HIO_c(); - /* 8071C3EC */ virtual ~daE_MK_HIO_c() {}; - - void genMessage(JORMContext*); - - /* 0x04 */ s8 field_0x4; - /* 0x08 */ f32 mSize; - /* 0x0C */ f32 mBoomerangRatio; - /* 0x10 */ f32 mPlayerThrowDistMax; - /* 0x14 */ u8 mHaltAction; - /* 0x18 */ cXyz mCrownPosAdjust; -}; - - #endif /* D_A_E_MK_H */ diff --git a/include/d/actor/d_a_fr.h b/include/d/actor/d_a_fr.h index 4cddd88479..67f87f137b 100644 --- a/include/d/actor/d_a_fr.h +++ b/include/d/actor/d_a_fr.h @@ -59,25 +59,5 @@ public: STATIC_ASSERT(sizeof(fr_class) == 0x9e8); -class daFr_HIO_c : public JORReflexible { -public: - /* 805198EC */ daFr_HIO_c(); - /* 8051B920 */ virtual ~daFr_HIO_c() {}; - - void genMessage(JORMContext*); - - /* 0x04 */ s8 field_0x4; - /* 0x08 */ f32 field_0x8; - /* 0x0C */ f32 field_0xc; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ f32 field_0x1c; - /* 0x20 */ f32 field_0x20; - /* 0x24 */ f32 field_0x24; - /* 0x28 */ f32 field_0x28; - /* 0x2C */ f32 field_0x2c; -}; - #endif /* D_A_FR_H */ diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index 7934b71e88..d71b2ab98e 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -319,7 +319,7 @@ public: MtxP getMtxHairTop() { return mpShadowModel->getAnmMtx(10); } - bool checkSetAnime(int param_0, daMidna_ANM i_anm) { + bool checkSetAnime(int param_0, daMidna_ANM i_anm) const { return mBckHeap[param_0].getIdx() == m_anmDataTable[i_anm].mResID; } diff --git a/include/d/actor/d_a_npc_cd2.h b/include/d/actor/d_a_npc_cd2.h index 200c8fc918..eb6217d0c4 100644 --- a/include/d/actor/d_a_npc_cd2.h +++ b/include/d/actor/d_a_npc_cd2.h @@ -165,7 +165,7 @@ inline f32 Cd2_HIO_cylH(int param_1) { return param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mCylH : l_Cd2_HIO.field_0x20c4[param_1 - 16].mCylH; } -inline int Cd2_HIO_maxLmtX_BACKBONE(int param_1) { +inline s16 Cd2_HIO_maxLmtX_BACKBONE(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE; @@ -175,7 +175,7 @@ inline int Cd2_HIO_maxLmtX_BACKBONE(int param_1) { return rv; } -inline int Cd2_HIO_maxLmtY_BACKBONE(int param_1) { +inline s16 Cd2_HIO_maxLmtY_BACKBONE(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE; @@ -185,7 +185,7 @@ inline int Cd2_HIO_maxLmtY_BACKBONE(int param_1) { return rv; } -inline int Cd2_HIO_maxLmtX_NECK(int param_1) { +inline s16 Cd2_HIO_maxLmtX_NECK(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK; @@ -195,7 +195,7 @@ inline int Cd2_HIO_maxLmtX_NECK(int param_1) { return rv; } -inline int Cd2_HIO_maxLmtY_NECK(int param_1) { +inline s16 Cd2_HIO_maxLmtY_NECK(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK; @@ -205,7 +205,7 @@ inline int Cd2_HIO_maxLmtY_NECK(int param_1) { return rv; } -inline int Cd2_HIO_maxLmtX_HEAD(int param_1) { +inline s16 Cd2_HIO_maxLmtX_HEAD(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD; @@ -215,7 +215,7 @@ inline int Cd2_HIO_maxLmtX_HEAD(int param_1) { return rv; } -inline int Cd2_HIO_maxLmtY_HEAD(int param_1) { +inline s16 Cd2_HIO_maxLmtY_HEAD(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD; @@ -225,7 +225,7 @@ inline int Cd2_HIO_maxLmtY_HEAD(int param_1) { return rv; } -inline int Cd2_HIO_minLmtX_BACKBONE(int param_1) { +inline s16 Cd2_HIO_minLmtX_BACKBONE(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE; @@ -235,7 +235,7 @@ inline int Cd2_HIO_minLmtX_BACKBONE(int param_1) { return rv; } -inline int Cd2_HIO_minLmtY_BACKBONE(int param_1) { +inline s16 Cd2_HIO_minLmtY_BACKBONE(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE; @@ -245,7 +245,7 @@ inline int Cd2_HIO_minLmtY_BACKBONE(int param_1) { return rv; } -inline int Cd2_HIO_minLmtX_NECK(int param_1) { +inline s16 Cd2_HIO_minLmtX_NECK(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK; @@ -255,7 +255,7 @@ inline int Cd2_HIO_minLmtX_NECK(int param_1) { return rv; } -inline int Cd2_HIO_minLmtY_NECK(int param_1) { +inline s16 Cd2_HIO_minLmtY_NECK(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK; @@ -265,7 +265,7 @@ inline int Cd2_HIO_minLmtY_NECK(int param_1) { return rv; } -inline int Cd2_HIO_minLmtX_HEAD(int param_1) { +inline s16 Cd2_HIO_minLmtX_HEAD(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD; @@ -275,7 +275,7 @@ inline int Cd2_HIO_minLmtX_HEAD(int param_1) { return rv; } -inline int Cd2_HIO_minLmtY_HEAD(int param_1) { +inline s16 Cd2_HIO_minLmtY_HEAD(int param_1) { s16 rv; if (param_1 < 16) { rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD; @@ -304,16 +304,10 @@ public: bool isPath() { return mPath != NULL; } s8 getArg0() { return mPath->m_points[field_0x20].mArg0; } s8 getArg1() { return mPath->m_points[field_0x20].mArg1; } - Vec getPoint(int index) { return mPath->m_points[index].m_position; } + Vec getPoint(u16 index) { return mPath->m_points[(u16)index].m_position; } void setLastPointNum() { field_0x20 = mPath->m_num - 1; } u16 getLastPointNum() { - u32 rv; - if (field_0x24 == 1) { - rv = mPath->m_num - 1; - } else { - return 0; - } - return rv; + return field_0x24 == 1 ? mPath->m_num - 1 : 0; } /* 0x00 */ fopAc_ac_c* mMyself; diff --git a/include/d/actor/d_a_npc_cdn3.h b/include/d/actor/d_a_npc_cdn3.h index 8edf9b3686..9cb42f6134 100644 --- a/include/d/actor/d_a_npc_cdn3.h +++ b/include/d/actor/d_a_npc_cdn3.h @@ -149,12 +149,12 @@ public: u16 startTime = getStartTime(); u16 endTime = getEndTime(); if (startTime != 0xff && endTime != 0xff) { - u32 x = (u16)(startTime / 10); - u32 y = startTime % 10; - field_0xb8e = ((u16)(y * 10) + (x * 60)); - u32 x2 = (u16)(endTime / 10); - u32 y2 = endTime % 10; - field_0xb8e = ((u16)(y2 * 10) + (x2 * 60)); + u16 x = startTime / 10; + u16 y = (startTime % 10) * 10; + field_0xb8c = y + x * 60; + x = endTime / 10; + y = (endTime % 10) * 10; + field_0xb8e = y + x * 60; field_0xb96 = 0; } else { field_0xb96 = 1; @@ -320,7 +320,7 @@ public: return 1; } - inline bool searchFirstScheduleTag(fopAc_ac_c* param_1); + inline bool searchFirstScheduleTag(); inline bool searchNextScheduleTag(); static actionFunc ActionTable[8][2]; diff --git a/include/d/actor/d_a_npc_zra.h b/include/d/actor/d_a_npc_zra.h index bec18cced8..e27177f632 100644 --- a/include/d/actor/d_a_npc_zra.h +++ b/include/d/actor/d_a_npc_zra.h @@ -3,6 +3,7 @@ #include "d/actor/d_a_npc.h" +class daNpc_zrA_HIO_c; /** * @ingroup actors-npcs * @class daNpc_zrA_Path_c @@ -332,7 +333,7 @@ public: /* 0x1248 */ daNpcF_Lookat_c mLookat; /* 0x12E4 */ dPaPo_c mPaPo; /* 0x131C */ daNpcF_ActorMngr_c mActorMngr[3]; - /* 0x1334 */ u8 field_0x1334[4]; + /* 0x1334 */ daNpc_zrA_HIO_c* mpHIO; /* 0x1338 */ dCcD_Cyl mCcCyl; /* 0x1474 */ ActionFn mpNextActionFn; /* 0x1480 */ ActionFn mpActionFn; diff --git a/src/d/actor/d_a_e_mk.cpp b/src/d/actor/d_a_e_mk.cpp index 203ee77d2c..c0b664f252 100644 --- a/src/d/actor/d_a_e_mk.cpp +++ b/src/d/actor/d_a_e_mk.cpp @@ -19,6 +19,21 @@ #include "d/d_camera.h" #include "Z2AudioLib/Z2Instances.h" +class daE_MK_HIO_c : public JORReflexible { +public: + /* 8071412C */ daE_MK_HIO_c(); + /* 8071C3EC */ virtual ~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; +}; + /* 8071412C-8071417C 0000EC 0050+00 1/1 0/0 0/0 .text __ct__12daE_MK_HIO_cFv */ daE_MK_HIO_c::daE_MK_HIO_c() { field_0x4 = -1; @@ -1052,7 +1067,6 @@ static int e_mk_e_demo(e_mk_class* i_this) { /* 80716F48-80717400 002F08 04B8+00 2/1 0/0 0/0 .text e_mk_r04_demo__FP10e_mk_class */ static void e_mk_r04_demo(e_mk_class* i_this) { - // NONMATCHING int frame = i_this->mpModelMorf->getFrame(); f32 fVar2 = 0.0f; i_this->field_0x704 = 5; @@ -1193,19 +1207,19 @@ static void cam_3d_morf(e_mk_class* i_this, f32 param_2) { /* 807174E4-8071823C 0034A4 0D58+00 1/1 0/0 0/0 .text demo_camera_start__FP10e_mk_class */ static void demo_camera_start(e_mk_class* i_this) { - // NONMATCHING fopAc_ac_c* a_this = &i_this->enemy; - fopAc_ac_c* actor1, * actor2, * actor3; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - actor1 = fopAcM_SearchByID(i_this->field_0x708); + 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); camera_class* camera1 = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); - camera_class* camera2 = dComIfGp_getCamera(0); + camera_class* camera2 = (camera_class*)dComIfGp_getCamera(0); cXyz sp34, sp40, sp4c, sp58; switch (i_this->mDemoMode) { case 0: break; - case 1: if (!a_this->eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderPotentialEvent(a_this, 2, 0xffff, 0); @@ -1213,18 +1227,18 @@ static void demo_camera_start(e_mk_class* i_this) { return; } - camera2->mCamera.Stop(); + camera1->mCamera.Stop(); i_this->mDemoMode = 2; i_this->mDemoCamTimer = 0; - i_this->mDemoCamFovy = 50.0f; - camera2->mCamera.SetTrimSize(3); - i_this->field_0xc90 = 2500.0f; + i_this->mDemoCamFovy = 50.0f + NREG_F(10); + camera1->mCamera.SetTrimSize(3); + i_this->field_0xc90 = 2500.0f + NREG_F(11); daPy_getPlayerActorClass()->changeOriginalDemo(); Z2GetAudioMgr()->bgmStreamPrepare(0x200000D); - i_this->mCamEye = camera1->lookat.eye; - i_this->mCamCenter = camera1->lookat.center; + 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); @@ -1235,31 +1249,32 @@ static void demo_camera_start(e_mk_class* i_this) { 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); - dComIfGp_getEvent().startCheckSkipEdge(i_this); + dComIfGp_getEvent().startCheckSkipEdge(a_this); // fallthrough case 2: - if (i_this->mDemoCamTimer == 8) { - daPy_getPlayerActorClass()->changeDemoMode(25, 0, 0, 0); + if (i_this->mDemoCamTimer == (s16)(8 + VREG_S(0))) { + ((daPy_py_c*)daPy_getPlayerActorClass())->changeDemoMode(25, 0, 0, 0); } - if (i_this->mDemoCamTimer >= 35) { + if (i_this->mDemoCamTimer >= (s16)(35 + VREG_S(1))) { cam_3d_morf(i_this, 0.1f); - cLib_addCalc2(&i_this->field_0xc84, 0.03f, 1.0f, 0.0005f); + cLib_addCalc2(&i_this->field_0xc84, 0.03f + VREG_F(1), 1.0f, 0.0005f + VREG_F(2)); } - if (i_this->mDemoCamTimer >= 160) { + if (i_this->mDemoCamTimer >= (s16)(160 + VREG_S(2))) { i_this->mDemoCamTimer = 0; i_this->mDemoMode = 3; } break; - case 3: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(0.0f, 150.0f, 250.0f); + 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; + i_this->mCamCenter.y += 150.0f + NREG_F(8); if (i_this->mDemoCamTimer >= 60) { i_this->mDemoCamTimer = 0; i_this->mDemoMode = 4; @@ -1267,60 +1282,69 @@ static void demo_camera_start(e_mk_class* i_this) { } break; - case 4: + case 4: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(0.0f, 150.0f, 700.0f); + 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; + i_this->mCamCenter.y += 230.0f + NREG_F(11); if (i_this->mDemoCamTimer == 35) { daPy_getPlayerActorClass()->changeDemoMode(12, 0, 1, 0); } - if (i_this->mDemoCamTimer >= 95) { + if (i_this->mDemoCamTimer >= (s16)(95 + XREG_S(0))) { i_this->mDemoCamTimer = 0; i_this->mDemoMode = 5; i_this->field_0xc9c = 1100.0f; i_this->field_0xc84 = 0.0f; - i_this->field_0xc90 = 2500.0f; + i_this->field_0xc90 = 2500.0f + NREG_F(12); cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - cMtx_XrotM(*calc_mtx, 0x6A4); + 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; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(-300.0f, 0.0f, 0.0f); + sp34.x = NREG_F(2) - 300.0f; + sp34.y = 0.0f; + sp34.z = 0.0f; MtxPosition(&sp34, &sp40); sp4c += sp40; - sp34.set(100.0f, 0.0f, 200.0f); + 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); } break; - case 5: - i_this->field_0xc90 = 2450.0f; - i_this->field_0xc9c = 500.0f; + 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.set(0.0f, 0.0f, 3500.0f); + 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; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - cMtx_XrotM(*calc_mtx, 2000); + 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; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(-300.0f, 0.0f, 0.0f); + sp34.x = NREG_F(2) - 300.0f; + sp34.y = 0.0f; + sp34.z = 0.0f; MtxPosition(&sp34, &sp40); i_this->mCamEye += sp40; @@ -1333,14 +1357,15 @@ static void demo_camera_start(e_mk_class* i_this) { i_this->mDemoMode = 6; } break; - case 6: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(0.0f, 150.0f, 700.0f); + 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; + i_this->mCamCenter.y += 230.0f + NREG_F(11); if (i_this->mDemoCamTimer == 2) { i_this->field_0x707 = 7; @@ -1349,91 +1374,98 @@ static void demo_camera_start(e_mk_class* i_this) { if (i_this->mDemoCamTimer >= 10) { i_this->mMode = 4; i_this->mDemoMode = 100; - sp34.set(200.0f, 0.0f,-150.0f); + 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); } break; - case 7: - if (actor1 == NULL) break; + if (actor_sp14 == NULL) break; - i_this->mCamCenter = actor1->current.pos; + i_this->mCamCenter = actor_sp14->current.pos; cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(300.0f, -200.0f, 1000.0f); + 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; // fallthrough case 8: - cLib_addCalc2(&i_this->mCamCenter.x, actor1->current.pos.x, 0.2f, 100.0f); - cLib_addCalc2(&i_this->mCamCenter.y, actor1->current.pos.y + i_this->field_0xc8c, 0.2f, 100.0f); - cLib_addCalc2(&i_this->mCamCenter.z, actor1->current.pos.z, 0.2f, 100.0f); - cLib_addCalc2(&i_this->field_0xc8c, -300.0f, 1.0f, 5.0f); + 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->field_0xc8c, -300.0f + JREG_F(7), 1.0f, 5.0f + JREG_F(8)); - i_this->mCamEye += (actor1->speed * 0.45f); - i_this->mCamEye.y -= 3.0f; - if (i_this->mDemoCamTimer < 65) break; + 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) { + break; + } i_this->mDemoMode = 9; i_this->mDemoCamTimer = 0; // fallthrough case 9: - actor2 = fopAcM_SearchByID(i_this->mBabaChildID); - actor3 = fopAcM_SearchByID(i_this->mBabaChildID2); + actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID); + actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2); if (i_this->mDemoCamTimer == 0) { - actor2->current.pos.x = player->current.pos.x - 200.0f; - actor2->current.pos.y = player->current.pos.y + 500.0f; - actor2->current.pos.z = player->current.pos.z - 1200.0f; - actor2->speed.y = 0.0f; - actor3->current.pos.x = player->current.pos.x + 200.0f; - actor3->current.pos.y = player->current.pos.y + 1000.0f; - actor3->current.pos.z = player->current.pos.z - 1000.0f; - actor3->speed.y = 0.0f; - i_this->mCamCenter.x = actor2->current.pos.x; - i_this->mCamCenter.z = actor2->current.pos.z; + 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; } - i_this->mCamEye.x = player->current.pos.x + 100.0f; - i_this->mCamEye.y = player->current.pos.y + 100.0f; - i_this->mCamEye.z = player->current.pos.z - 400.0f; - i_this->mCamCenter.y = actor2->current.pos.y; + 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); - cLib_addCalc2(&i_this->mCamCenter.x, actor2->current.pos.x + 100.0f, 0.1f, 50.0f); - cLib_addCalc2(&i_this->mCamCenter.z, actor2->current.pos.z, 0.1f, 50.0f); + 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); - if (i_this->mDemoCamTimer <= 60) { - actor1->current.pos -= actor1->speed; + if (i_this->mDemoCamTimer <= (s16)(60 + AREG_S(0))) { + actor_sp14->current.pos -= actor_sp14->speed; } - if (i_this->mDemoCamTimer >= 80) { + if (i_this->mDemoCamTimer >= (s16)(80 + AREG_S(0))) { i_this->mDemoMode = 10; i_this->mDemoCamTimer = 0; } break; - case 10: cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y); - sp34.set(0.0f, 150.0f, 700.0f); + 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; + i_this->mCamCenter.y += 230.0f + NREG_F(11); - actor1 = fopAcM_SearchByID(i_this->mBabaChildID); - actor2 = fopAcM_SearchByID(i_this->mBabaChildID2); - actor1->current.pos.x = player->current.pos.x - 200.0f; - actor1->current.pos.z = player->current.pos.z - 1200.0f; - actor2->current.pos.x = player->current.pos.x + 200.0f; - actor2->current.pos.z = player->current.pos.z - 1000.0f; + 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; break; - case 11: - if (i_this->mDemoCamTimer >= 30) { + if (i_this->mDemoCamTimer >= (s16)(30 + JREG_S(9))) { cMtx_YrotS(*calc_mtx, player->shape_angle.y); - sp34.set(0.0f, 200.0f, -400.0f); + 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; @@ -1443,20 +1475,19 @@ static void demo_camera_start(e_mk_class* i_this) { Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY); } - actor1 = fopAcM_SearchByID(i_this->mBabaChildID); - actor2 = fopAcM_SearchByID(i_this->mBabaChildID2); - actor1->current.pos.x = player->current.pos.x - 200.0f; - actor1->current.pos.z = player->current.pos.z - 1200.0f; - actor2->current.pos.x = player->current.pos.x + 200.0f; - actor2->current.pos.z = player->current.pos.z - 1000.0f; + 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; break; - case 100: break; } if (dComIfGp_getEvent().checkSkipEdge()) { - u8 i_no = fopAcM_GetParam(i_this) >> 16; + u8 i_no = (fopAcM_GetParam(i_this) & 0xff0000) >> 16; if (i_no != 0xff) { dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(a_this)); } @@ -1467,11 +1498,10 @@ static void demo_camera_start(e_mk_class* i_this) { /* 8071823C-80719488 0041FC 124C+00 1/1 0/0 0/0 .text demo_camera_end__FP10e_mk_class */ static void demo_camera_end(e_mk_class* i_this) { - // NONMATCHING - fopEn_enemy_c* a_this = &i_this->enemy; + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); - fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x708); - camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_SearchByID(i_this->field_0x708); + camera_class* camera = (camera_class*)dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); cXyz sp2c, i_pos, sp44, sp50; switch (i_this->mDemoMode) { @@ -2748,8 +2778,7 @@ static int useHeapInit(fopAc_ac_c* actor) { } /* 8071BD14-8071C190 007CD4 047C+00 1/0 0/0 0/0 .text daE_MK_Create__FP10fopAc_ac_c */ -static int daE_MK_Create(fopAc_ac_c* actor) { - // EQUIVALENT - REGALLOC +static int daE_MK_Create(fopAc_ac_c* i_actor) { static dCcD_SrcSph cc_sph_src = { { {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x43}, 0x75}}, // mObj @@ -2762,102 +2791,101 @@ static int daE_MK_Create(fopAc_ac_c* actor) { } // mSphAttr }; - fopAcM_SetupActor(actor, e_mk_class); - e_mk_class* i_this; - fopAc_ac_c* a_this = &i_this->enemy; + e_mk_class* mk = (e_mk_class*)i_actor; - int phase = dComIfG_resLoad(&i_this->mPhase, "E_mk"); + fopAcM_SetupActor(&mk->enemy, e_mk_class); + + int phase = dComIfG_resLoad(&mk->mPhase, "E_mk"); if (phase == cPhs_COMPLEATE_e) { - OS_REPORT("E_MK PARAM %x\n", fopAcM_GetParam(i_this)); + OS_REPORT("E_MK PARAM %x\n", fopAcM_GetParam(i_actor)); if (strcmp(dComIfGp_getStartStageName(), "D_MN05B") == 0 && dComIfGs_isStageMiddleBoss()) { OS_REPORT("中ボスE_MK やられ後なので再セットしません\n"); // Since it's the middle boss E_MK after being defeated, I won't reset it. return cPhs_ERROR_e; } - u32 i_no = fopAcM_GetParam(i_this) >> 24; + u8 i_no = (fopAcM_GetParam(i_actor) & 0xff000000) >> 24; if (i_no != 0xFF) { - if (dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(a_this))) { + 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. return cPhs_ERROR_e; } } - i_this->mParam = fopAcM_GetParam(i_this); + mk->mParam = fopAcM_GetParam(i_actor); OS_REPORT("E_MK//////////////E_MK SET 1 !!\n"); - if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x56f0)) { + if (!fopAcM_entrySolidHeap(i_actor, useHeapInit, 0x56f0)) { OS_REPORT("//////////////E_MK SET NON !!\n"); return cPhs_ERROR_e; } lbl_210_bss_130 = 0; if (lbl_210_bss_AA == 0) { - i_this->field_0xcf5 = 1; + mk->field_0xcf5 = 1; lbl_210_bss_AA = 1; - l_HIO.field_0x4 = -1; + l_HIO.field_0x4 = mDoHIO_CREATE_CHILD("ブーメラン猿", &l_HIO); } - a_this->attention_info.flags = 4; + i_actor->attention_info.flags = 4; - fopAcM_SetMtx(a_this, i_this->mpModelMorf->getModel()->getBaseTRMtx()); - fopAcM_SetMin(a_this, -500.0f, -500.0f, -500.0f); - fopAcM_SetMax(a_this, 500.0f, 500.0f, 500.0f); + fopAcM_SetMtx(i_actor, mk->mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(i_actor, -500.0f, -500.0f, -500.0f); + fopAcM_SetMax(i_actor, 500.0f, 500.0f, 500.0f); - i_this->mAcch.Set(fopAcM_GetPosition_p(a_this), fopAcM_GetOldPosition_p(a_this), &i_this->enemy, 1, &i_this->mAcchCir, - fopAcM_GetSpeed_p(a_this), NULL, NULL); - i_this->mAcchCir.SetWall(80.0f, 30.0f); - a_this->health = 200; - a_this->field_0x560 = 200; + mk->mAcch.Set(fopAcM_GetPosition_p(i_actor), fopAcM_GetOldPosition_p(i_actor), &mk->enemy, 1, &mk->mAcchCir, + fopAcM_GetSpeed_p(i_actor), NULL, NULL); + mk->mAcchCir.SetWall(80.0f, 30.0f); + i_actor->field_0x560 = i_actor->health = 200; - i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1); - i_this->mAtInfo.mpSound = &i_this->mSound; + mk->mSound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1); + mk->mAtInfo.mpSound = &mk->mSound; - a_this->attention_info.distances[2] = 4; + i_actor->attention_info.distances[2] = 4; - i_this->field_0x95c.Init(0xFF, 0, a_this); - i_this->field_0xad0.Set(cc_sph_src); - i_this->field_0xad0.SetStts(&i_this->field_0x95c); - i_this->field_0x998.Set(cc_sph_src); - i_this->field_0x998.SetStts(&i_this->field_0x95c); - i_this->field_0x998.OnTgNoHitMark(); - i_this->field_0x60c = 1; - i_this->field_0x60d = 1; + 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; - if (fopAcM_GetRoomNo(a_this) == 4) { - i_this->mAction = e_mk_class::ACT_R04_DEMO; - a_this->current.pos.set(0.0f, 3900.0f, -3000.0f); - a_this->current.angle.y = 0; - a_this->home = a_this->current; + if (fopAcM_GetRoomNo(i_actor) == 4) { + mk->mAction = 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; } else { - STAGE_CENTER_POS = a_this->home.pos; + STAGE_CENTER_POS = i_actor->home.pos; STAGE_CENTER_POS.y -= 500.0f; - STAGE_ANGLE_Y = a_this->home.angle.y; + STAGE_ANGLE_Y = i_actor->home.angle.y; - u8 i_no = fopAcM_GetParamBit(i_this, 16, 8); - if (i_no != 0xFF && dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(a_this))) { - dComIfGs_offSwitch(i_no, fopAcM_GetRoomNo(a_this)); - i_this->mAction = e_mk_class::ACT_WAIT; + u8 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; Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY); } else { - i_this->mAction = e_mk_class::ACT_S_DEMO; - u32 i_parameters = fopAcM_GetParam(i_this) & 0xFF000000 | 0xFFFF01; + mk->mAction = e_mk_class::ACT_S_DEMO; + u32 i_parameters = fopAcM_GetParam(i_actor) & 0xFF000000 | 0xFFFF01; cXyz sp30(-21.0f, 5114.0f, -4941.0f); - i_this->mBabaChildID = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_this), i_parameters, - &sp30, fopAcM_GetRoomNo(a_this), NULL, + mk->mBabaChildID = 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); - i_this->mBabaChildID2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_this), i_parameters, - &sp30, fopAcM_GetRoomNo(a_this), NULL, + mk->mBabaChildID2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters, + &sp30, fopAcM_GetRoomNo(i_actor), NULL, NULL, -1, NULL); - fopAcM_OnStatus(a_this, 0x4000); + fopAcM_OnStatus(i_actor, 0x4000); } } - a_this->gravity = -5.0f; - a_this->scale.x = l_HIO.mSize * l_HIO.mBoomerangRatio; - daE_MK_Execute(i_this); + i_actor->gravity = -5.0f; + i_actor->scale.x = l_HIO.mSize * l_HIO.mBoomerangRatio; + daE_MK_Execute(mk); } return phase; diff --git a/src/d/actor/d_a_e_po.cpp b/src/d/actor/d_a_e_po.cpp index 53d0d0a1a7..c4e6bbf7e6 100644 --- a/src/d/actor/d_a_e_po.cpp +++ b/src/d/actor/d_a_e_po.cpp @@ -838,11 +838,13 @@ static void e_po_dead(e_po_class* i_this) { camera_class* camera = static_cast(dComIfGp_getCamera(0)); dBgS_LinChk lin_chk; cXyz scale(1.0f, 1.0f, 1.0f); + csXyz local_1a4; // Angle for particles dBgS_GndChk gnd_chk; i_this->field_0x754 = 10; daPy_py_c* player_actor = daPy_getPlayerActorClass(); player_actor->setWolfEnemyHangBiteAngle(fopAcM_searchPlayerAngleY(a_this) + 0x8000); + int i; switch (i_this->mType) { case 30: if (!a_this->eventInfo.checkCommandDemoAccrpt()) { @@ -970,7 +972,7 @@ static void e_po_dead(e_po_class* i_this) { case 4: J3DModel* model_p = i_this->mpMorf3->getModel(); - for (int i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { i_this->mParticleKey[i] = dComIfGp_particle_set(i_this->mParticleKey[i], dead_eff_Dt1[i], &a_this->current.pos, &a_this->shape_angle, &scale); @@ -979,27 +981,27 @@ static void e_po_dead(e_po_class* i_this) { emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x10)); } - i_this->mParticleKey2[i] = - dComIfGp_particle_set(i_this->mParticleKey2[i], dead_eff_Dt1[i], + i_this->mParticleKey2[i + 4] = + dComIfGp_particle_set(i_this->mParticleKey2[i + 4], dead_eff_Dt1[i], &a_this->current.pos, &a_this->shape_angle, &scale); - emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey2[i]); + emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey2[i + 4]); if (emitter != NULL) { emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x15)); } } - for (int i = 0; i < 2; i++) { - i_this->mParticleKey3[i] = - dComIfGp_particle_set(i_this->mParticleKey3[i], dead_eff_Dt2[i], + for (i = 0; i < 2; i++) { + i_this->mParticleKey3[i + 8] = + dComIfGp_particle_set(i_this->mParticleKey3[i + 8], dead_eff_Dt2[i], &a_this->current.pos, &a_this->shape_angle, &scale); - JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey3[i]); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey3[i + 8]); if (emitter != NULL) { emitter->setGlobalRTMatrix(model_p->getAnmMtx(0xA)); } - i_this->mParticleKey4[i] = - dComIfGp_particle_set(i_this->mParticleKey4[i], dead_eff_Dt3[i], + i_this->mParticleKey4[i + 10] = + dComIfGp_particle_set(i_this->mParticleKey4[i + 10], dead_eff_Dt3[i], &a_this->current.pos, &a_this->shape_angle, &scale); - emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey4[i]); + emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey4[i + 10]); if (emitter != NULL) { emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x7)); } @@ -1040,13 +1042,12 @@ static void e_po_dead(e_po_class* i_this) { break; case 5: - csXyz local_1a4; // Angle for particles - cLib_addCalc0(&i_this->field_0x800, 0.8f, 10.0f); if (i_this->field_0x74A[1] != 0) { if (i_this->field_0x74A[1] == 1) { if (!i_this->field_0x788.x && !i_this->field_0x788.z) { - PSMTXCopy(i_this->mpMorf3->getModel()->getAnmMtx(0x15), *calc_mtx); + J3DModel* model = i_this->mpMorf3->getModel(); + PSMTXCopy(model->getAnmMtx(0x15), *calc_mtx); local_100.set(50.0f, 0.0f, 0.0f); MtxPosition(&local_100, &i_this->field_0x788); if (i_this->mAcch.GetGroundH() != -1e9f) { @@ -1054,10 +1055,9 @@ static void e_po_dead(e_po_class* i_this) { } } local_1a4 = i_this->field_0x764; - local_1a4.z = 0; - local_1a4.x = 0; + local_1a4.x = local_1a4.z = 0; local_100.set(i_this->field_0x788); - for (int i = 0; i < 7; i++) { + for (i = 0; i < 7; i++) { dComIfGp_particle_set(particleNmaeDt[i], &local_100, &local_1a4, &scale); } i_this->field_0x74A[2] = 50; @@ -1074,9 +1074,7 @@ static void e_po_dead(e_po_class* i_this) { Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_FIRE_FLY, &i_this->field_0x788, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } else { - local_1a4.z = 0; - local_1a4.y = 0; - local_1a4.x = 0; + local_1a4.x = local_1a4.y = local_1a4.z = 0; if (i_this->field_0x758 == 0) { Z2GetAudioMgr()->seStart(Z2SE_OBJ_KNTR_BREAK, &i_this->field_0x788, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); @@ -1090,7 +1088,7 @@ static void e_po_dead(e_po_class* i_this) { i_this->field_0x788.y - (i_this->field_0x788.y + i_this->field_0x7C4); i_this->field_0x814.z = i_this->field_0x788.z - i_this->field_0x788.z; i_this->field_0x814 *= 0.8f; - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { i_this->mParticleKey5[i] = dComIfGp_particle_set(i_this->mParticleKey5[i], dead_eff_Dt4[i], &i_this->field_0x788, &local_1a4, &scale); @@ -1109,7 +1107,8 @@ static void e_po_dead(e_po_class* i_this) { var_r0 = TRUE; } if (var_r0) { - u32 param = i_this->mArg0 | 0xFFFFF000; + u32 param = 0xFFFFF000; + param |= i_this->mArg0; i_this->field_0x5B8 = fopAcM_create(PROC_Obj_poFire, param, &i_this->field_0x788, fopAcM_GetRoomNo(a_this), NULL, NULL, -1); i_this->mType = 7; @@ -1128,10 +1127,12 @@ static void e_po_dead(e_po_class* i_this) { camera_player->mCamera.SetTrimSize(0); dComIfGp_event_reset(); dComIfGs_addPohSpiritNum(); - if (g_dComIfG_gameInfo.info.getPlayer().getCollect().getPohNum() == 0x14) { +#if !PLATFORM_SHIELD + if (dComIfGs_getPohSpiritNum() == 0x14) { /* dSv_event_flag_c::F_0457 - Castle Town - Revived cat */ dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[457]); } +#endif daPy_getPlayerActorClass()->cancelOriginalDemo(); } else if (mArg0Check(i_this, 0) != 0) { if (!fopAcM_isSwitch(a_this, 0x22)) { @@ -1225,7 +1226,7 @@ static void e_po_dead(e_po_class* i_this) { i_this->mType += 1; case 51: - if (dComIfGp_event_runCheck() != FALSE) { + if (dComIfGp_event_runCheck()) { if (a_this->eventInfo.checkCommandDemoAccrpt()) { if (dComIfGp_getEventManager().endCheck(i_this->field_0x762) != 0) { dComIfGp_event_reset(); diff --git a/src/d/actor/d_a_fr.cpp b/src/d/actor/d_a_fr.cpp index 5d210d3df3..82e34a6945 100644 --- a/src/d/actor/d_a_fr.cpp +++ b/src/d/actor/d_a_fr.cpp @@ -16,6 +16,27 @@ #include "dol2asm.h" #include "f_op/f_op_kankyo_mng.h" +class daFr_HIO_c : public JORReflexible { +public: + /* 805198EC */ daFr_HIO_c(); + /* 8051B920 */ virtual ~daFr_HIO_c() {} + +#if DEBUG + void genMessage(JORMContext*); +#endif + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; +}; + /* 805198EC-8051994C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__10daFr_HIO_cFv */ daFr_HIO_c::daFr_HIO_c() { field_0x4 = -1; @@ -97,15 +118,15 @@ static wd_ss* wd_check(fr_class* i_this) { /* 80519D28-80519E24 000528 00FC+00 4/4 0/0 0/0 .text way_bg_check__FP8fr_class */ static BOOL way_bg_check(fr_class* i_this) { - // NONMATCHING + fopAc_ac_c* actor = (fopAc_ac_c*)i_this; cXyz sp24; cXyz sp18; cXyz sp0c; - sp24 = i_this->current.pos; + sp24 = actor->current.pos; sp24.y += 20.0f; - cMtx_YrotS(*calc_mtx, i_this->shape_angle.y); + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); sp0c.x = 0.0f; sp0c.y = 0.0f; @@ -114,7 +135,7 @@ static BOOL way_bg_check(fr_class* i_this) { sp18 += sp24; dBgS_LinChk dStack_84; - dStack_84.Set(&sp24, &sp18, i_this); + dStack_84.Set(&sp24, &sp18, actor); if (dComIfG_Bgsp().LineCross(&dStack_84)) { return TRUE; @@ -131,8 +152,7 @@ static daFr_HIO_c l_HIO; /* 80519E24-8051A0D8 000624 02B4+00 1/2 0/0 0/0 .text fr_normal__FP8fr_class */ static void fr_normal(fr_class* i_this) { - // NONMATCHING - fopAc_ac_c* actor = i_this; + fopAc_ac_c* actor = (fopAc_ac_c*)i_this; fopAc_ac_c* player = dComIfGp_getPlayer(0); cXyz sp18; @@ -161,9 +181,9 @@ static void fr_normal(fr_class* i_this) { i_this->current.angle.y += 0x8000; } else { i_this->field_0x5e8 = l_HIO.field_0x14; - f32 x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x; - f32 z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z; - cLib_addCalcAngleS2(&i_this->current.angle.y, cM_atan2s(x, z), 1, 0x2000 + TREG_S(2)); + sp18.x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x; + sp18.z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z; + cLib_addCalcAngleS2(&i_this->current.angle.y, cM_atan2s(sp18.x, sp18.z), 1, 0x2000 + TREG_S(2)); } i_this->field_0x5d4++; @@ -308,7 +328,6 @@ static void fr_s_wait(fr_class* i_this) { /* 8051A620-8051A820 000E20 0200+00 1/1 0/0 0/0 .text fr_s_away__FP8fr_class */ static void fr_s_away(fr_class* i_this) { - // NONMATCHING fopAc_ac_c* actor = i_this; fopAc_ac_c* player = dComIfGp_getPlayer(0); @@ -322,7 +341,7 @@ static void fr_s_away(fr_class* i_this) { break; case 1: if ((int)i_this->mMorf->getFrame() >= 10) { - if ((int)i_this->mMorf->getFrame() >= 25) { + if ((int)i_this->mMorf->getFrame() <= 25) { cLib_addCalc2(&i_this->speedF, l_HIO.field_0x28, 1.0f, l_HIO.field_0x28 * 0.2f); if ((int)i_this->mMorf->getFrame() >= 10) { if ((int)i_this->mMorf->getFrame() <= 15 && (s8)i_this->field_0x5cc == 0) { @@ -330,7 +349,7 @@ static void fr_s_away(fr_class* i_this) { i_this->current.angle.y += 0x8000; } else { cLib_addCalcAngleS2(&i_this->current.angle.y, - (s16)(fopAcM_searchPlayerAngleY(i_this) + (s16)cM_rndFX(8000.0f)) + 0x8000, + fopAcM_searchPlayerAngleY(i_this) + 0x8000 + (s16)cM_rndFX(8000.0f), 1, 0x2000 + TREG_S(2)); } @@ -470,8 +489,7 @@ static void fr_message(fr_class* i_this) { /* 8051AD04-8051B04C 001504 0348+00 2/1 0/0 0/0 .text action__FP8fr_class */ static void action(fr_class* i_this) { - // NONMATCHING - fopAc_ac_c* this_actor = i_this; + fopAc_ac_c* this_actor = (fopAc_ac_c*)i_this; cXyz sp30; cXyz sp24; @@ -521,12 +539,12 @@ static void action(fr_class* i_this) { if (cVar4 != -2) { cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 2, 0x4000); cMtx_YrotS(*calc_mtx, i_this->current.angle.y); - sp24.x = 0.0f; - sp24.y = 0.0f; - sp24.z = i_this->speedF; - MtxPosition(&sp24, &sp30); - i_this->speed.x = sp30.x; - i_this->speed.z = sp30.z; + sp30.x = 0.0f; + sp30.y = 0.0f; + sp30.z = i_this->speedF; + MtxPosition(&sp30, &sp24); + i_this->speed.x = sp24.x; + i_this->speed.z = sp24.z; i_this->speed.y += i_this->gravity; i_this->current.pos += (i_this->speed * i_this->scale.x) * 1.33f; @@ -534,18 +552,18 @@ static void action(fr_class* i_this) { if (i_this->speed.y < -80.0f) { i_this->speed.y = -80.0f; } - - sp24 = i_this->current.pos; - sp24.y += 200.0f; + + sp30 = i_this->current.pos; + sp30.y += 200.0f; f32 fVar6 = i_this->mAcch.GetGroundH(); dBgS_ObjGndChk_Spl(cStack_78); i_this->field_0x5ec = 0; - bool bVar2 = false; + BOOL bVar2 = FALSE; if (wd_check(i_this)) { - bVar2 = true; + bVar2 = TRUE; } else { - cStack_78.SetPos(&sp24); + cStack_78.SetPos(&sp30); i_this->field_0x5f0 = dComIfG_Bgsp().GroundCross(&cStack_78); if (fVar6 < i_this->field_0x5f0 && i_this->current.pos.y <= i_this->field_0x5f0 + YREG_F(0)) { @@ -666,8 +684,7 @@ static int daFr_Delete(fr_class* i_this) { } /* 8051B3B0-8051B550 001BB0 01A0+00 1/1 0/0 0/0 .text useHeapIfrt__FP10fopAc_ac_c */ -static int useHeapIfrt(fopAc_ac_c* a_this) { - // NONMATCHING +static BOOL useHeapIfrt(fopAc_ac_c* a_this) { fr_class* i_this = (fr_class*)a_this; i_this->mMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("Fr", 14), NULL, NULL, @@ -679,65 +696,63 @@ static int useHeapIfrt(fopAc_ac_c* a_this) { } i_this->mBtkAnm = new mDoExt_btkAnm(); - if (!i_this->mBtkAnm) { - return 0; - } else if (i_this->mBtkAnm->init(i_this->mMorf->getModel()->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Fr", 17), - 1, 0, 1.0f, 0, -1)) { + if (i_this->mBtkAnm == 0) { return 0; } - return 1; + return i_this->mBtkAnm->init(i_this->mMorf->getModel()->getModelData(), + (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Fr", 17), 1, 0, 1.0f, 0, + -1) != 0 ? 1 : 0; } /* 8051B598-8051B820 001D98 0288+00 1/0 0/0 0/0 .text daFr_Create__FP10fopAc_ac_c */ static int daFr_Create(fopAc_ac_c* a_this) { - // NONMATCHING - fr_class* i_this = (fr_class*)a_this; + fopAc_ac_c* actor = a_this; + fr_class* i_this = (fr_class*)actor; fopAcM_SetupActor(i_this, fr_class); - + int phase_state = dComIfG_resLoad(&i_this->mPhase, "Fr"); if (phase_state == cPhs_COMPLEATE_e) { - OS_REPORT("FR PARAM %x\n", fopAcM_GetParam(i_this)); + OS_REPORT("FR PARAM %x\n", fopAcM_GetParam(actor)); - i_this->field_0x5b4 = fopAcM_GetParam(i_this); - i_this->current.angle.x = 0; - i_this->field_0x994 = i_this->current.angle.z; - i_this->shape_angle.z = 0; - i_this->current.angle.z = 0; + i_this->field_0x5b4 = fopAcM_GetParam(actor); + actor->current.angle.x = 0; + i_this->field_0x994 = actor->current.angle.z; + actor->current.angle.z = actor->shape_angle.z = 0; OS_REPORT("FR MSGFLOWNO %d\n", i_this->field_0x994); OS_REPORT("FR//////////////FR SET 1 !!\n"); - if (!fopAcM_entrySolidHeap(i_this, useHeapIfrt, 0x14e0)) { + if (!fopAcM_entrySolidHeap(actor, useHeapIfrt, 0x14e0)) { OS_REPORT("//////////////FR SET NON !!\n"); return cPhs_ERROR_e; } - + OS_REPORT("//////////////FR SET 2 !!\n"); if (!l_initHIO) { i_this->field_0x9e4 = 1; l_initHIO = true; - l_HIO.field_0x4 = -1; + l_HIO.field_0x4 = mDoHIO_CREATE_CHILD("カエル", &l_HIO); } i_this->field_0x5d2 = 0; - i_this->scale.x = 0.75f; + actor->scale.x = 0.75f; if (!strcmp(dComIfGp_getStartStageName(), "F_SP127")) { - i_this->scale.x = 0.4f; + actor->scale.x = 0.4f + KREG_F(11); } - fopAcM_SetMtx(i_this, i_this->mMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMtx(actor, i_this->mMorf->getModel()->getBaseTRMtx()); - i_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), - i_this, 1, &i_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + i_this->mAcch.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), + actor, 1, &i_this->mAcchCir, fopAcM_GetSpeed_p(actor), NULL, NULL); i_this->mAcchCir.SetWall(20.0f, 20.0f); i_this->field_0x5cd = i_this->field_0x5b4; if (i_this->field_0x5cd > 3) { i_this->field_0x5cd = 0; } - i_this->field_0x5e8 = 500.0f; + i_this->field_0x5e8 = 500.0f + TREG_F(3); i_this->field_0x5d0 = cM_rndF(65536.0f); daFr_Execute(i_this); diff --git a/src/d/actor/d_a_midna.cpp b/src/d/actor/d_a_midna.cpp index 421220f185..39d2352db4 100644 --- a/src/d/actor/d_a_midna.cpp +++ b/src/d/actor/d_a_midna.cpp @@ -1781,6 +1781,8 @@ void daMidna_c::setBckAnime(J3DAnmTransform* i_bck, int i_attr, f32 i_morf) { /* 804C103C-804C287C 004E9C 1840+00 2/2 0/0 0/0 .text setAnm__9daMidna_cFv */ // NONMATCHING regalloc void daMidna_c::setAnm() { + BOOL bVar1, bVar2, bVar3; + offStateFlg0((daMidna_FLG0)(FLG0_NO_HAIR_SCALE | FLG0_UNK_200000)); if (setDemoAnm()) { @@ -1789,14 +1791,13 @@ void daMidna_c::setAnm() { daAlink_c* link = daAlink_getAlinkActorClass(); - BOOL bVar1; if (dComIfGp_event_runCheck() || checkEndResetStateFlg0(ERFLG0_NO_SERVICE_WAIT)) { bVar1 = TRUE; } else { bVar1 = FALSE; } - BOOL bVar2 = FALSE; - BOOL bVar3 = TRUE; + bVar2 = FALSE; + bVar3 = TRUE; bool tired = checkMidnaTired(); daMidna_ANM anm; @@ -2073,7 +2074,7 @@ void daMidna_c::setAnm() { } else if (anm == ANM_S_RETURN) { current.pos.x += 90.0f * cM_ssin(shape_angle.y); current.pos.z += 90.0f * cM_scos(shape_angle.y); - shape_angle.y += 0x8000; + shape_angle.y += (s16)0x8000; field_0x85a = shape_angle.y; current.angle.y = shape_angle.y; mpMorf->getOldTransInfo()[JNT_BACKBONE1].mTranslate.z += 90.0f; @@ -2134,8 +2135,7 @@ void daMidna_c::setAnm() { || (checkSetAnime(0, ANM_SWAITC) && fabsf(speedF) > 0.1f)) { offStateFlg0(FLG0_UNK_1); - u16 res_id = m_anmDataTable[anm].mResID; - J3DAnmTransform* bck = (J3DAnmTransform*)mBckHeap[0].loadDataIdx(res_id); + J3DAnmTransform* bck = (J3DAnmTransform*)mBckHeap[0].loadDataIdx(m_anmDataTable[anm].mResID); setBckAnime(bck, J3DFrameCtrl::EMode_LOOP, 5.0f); setUpperAnime(mBckHeap[0].getIdx(), 0xffff); } else if (checkSetAnime(0, ANM_SWAITB) && mUpperBck.checkFrame(95.0f) @@ -2143,8 +2143,7 @@ void daMidna_c::setAnm() { { anm = ANM_SWAITC; setUpperAnimeAndSe(ANM_SWAITC); - u16 res_id = m_anmDataTable[anm].mResID; - J3DAnmTransform* bck = (J3DAnmTransform*)mBckHeap[0].loadDataIdx(res_id); + J3DAnmTransform* bck = (J3DAnmTransform*)mBckHeap[0].loadDataIdx(m_anmDataTable[anm].mResID); setBckAnime(bck, J3DFrameCtrl::EMode_NONE, 0.0f); } } else if (daPy_py_c::checkNowWolf() && !bVar1 diff --git a/src/d/actor/d_a_npc_cdn3.cpp b/src/d/actor/d_a_npc_cdn3.cpp index ed36d0c64c..2bb29594ce 100644 --- a/src/d/actor/d_a_npc_cdn3.cpp +++ b/src/d/actor/d_a_npc_cdn3.cpp @@ -9,271 +9,6 @@ #include "d/d_msg_object.h" #include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void createHeapCallBack__FP10fopAc_ac_c(); -extern "C" void setAction__11daNpcCdn3_cFQ211daNpcCdn3_c6Mode_e(); -extern "C" void callInit__11daNpcCdn3_cFv(); -extern "C" void callExecute__11daNpcCdn3_cFv(); -extern "C" void initWait__11daNpcCdn3_cFv(); -extern "C" void executeWait__11daNpcCdn3_cFv(); -extern "C" void initPath__11daNpcCdn3_cFv(); -extern "C" void executePath__11daNpcCdn3_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void initTalk__11daNpcCdn3_cFv(); -extern "C" void executeTalk__11daNpcCdn3_cFv(); -extern "C" void initEscape__11daNpcCdn3_cFv(); -extern "C" void executeEscape__11daNpcCdn3_cFv(); -extern "C" void initFear__11daNpcCdn3_cFv(); -extern "C" void executeFear__11daNpcCdn3_cFv(); -extern "C" void initFear2__11daNpcCdn3_cFv(); -extern "C" void executeFear2__11daNpcCdn3_cFv(); -extern "C" void initFight__11daNpcCdn3_cFv(); -extern "C" void executeFight__11daNpcCdn3_cFv(); -extern "C" void initRelief__11daNpcCdn3_cFv(); -extern "C" void executeRelief__11daNpcCdn3_cFv(); -extern "C" void setAngle__11daNpcCdn3_cFv(); -extern "C" void pathMoveF__11daNpcCdn3_cFv(); -extern "C" void ctrlMsgAnm__11daNpcCdn3_cFv(); -extern "C" static void s_sub1__FPvPv(); -extern "C" void searchNextScheduleTagSub__11daNpcCdn3_cFP10fopAc_ac_c(); -extern "C" static void s_sub2__FPvPv(); -extern "C" void searchFirstScheduleTagSub__11daNpcCdn3_cFP10fopAc_ac_c(); -extern "C" void checkSchedule__11daNpcCdn3_cFv(); -extern "C" void setSchedule__11daNpcCdn3_cFP15daTagSchedule_c(); -extern "C" void isInShop__11daNpcCdn3_cFv(); -extern "C" void isChairStyle__11daNpcCdn3_cFv(); -extern "C" void isNoTurnTalk__11daNpcCdn3_cFv(); -extern "C" void waita__11daNpcCdn3_cFPv(); -extern "C" void talka__11daNpcCdn3_cFPv(); -extern "C" void waitwall__11daNpcCdn3_cFPv(); -extern "C" void talkwall__11daNpcCdn3_cFPv(); -extern "C" void talkbwall__11daNpcCdn3_cFPv(); -extern "C" void talkb__11daNpcCdn3_cFPv(); -extern "C" void talkc__11daNpcCdn3_cFPv(); -extern "C" void waitb__11daNpcCdn3_cFPv(); -extern "C" void sitwaita__11daNpcCdn3_cFPv(); -extern "C" void sittalka__11daNpcCdn3_cFPv(); -extern "C" void sittalkab__11daNpcCdn3_cFPv(); -extern "C" void sitwaitb__11daNpcCdn3_cFPv(); -extern "C" void sittalkb__11daNpcCdn3_cFPv(); -extern "C" void sittalkbb__11daNpcCdn3_cFPv(); -extern "C" void looka__11daNpcCdn3_cFPv(); -extern "C" void lookb__11daNpcCdn3_cFPv(); -extern "C" void playm__11daNpcCdn3_cFPv(); -extern "C" void turnr__11daNpcCdn3_cFPv(); -extern "C" void turnl__11daNpcCdn3_cFPv(); -extern "C" void walka__11daNpcCdn3_cFPv(); -extern "C" void walkb__11daNpcCdn3_cFPv(); -extern "C" void runa__11daNpcCdn3_cFPv(); -extern "C" void runb__11daNpcCdn3_cFPv(); -extern "C" void browsea__11daNpcCdn3_cFPv(); -extern "C" void browseb__11daNpcCdn3_cFPv(); -extern "C" void dance__11daNpcCdn3_cFPv(); -extern "C" void ladytalka__11daNpcCdn3_cFPv(); -extern "C" void ladytalkb__11daNpcCdn3_cFPv(); -extern "C" void normtalka__11daNpcCdn3_cFPv(); -extern "C" void normtalkb__11daNpcCdn3_cFPv(); -extern "C" void sellme__11daNpcCdn3_cFPv(); -extern "C" void sing__11daNpcCdn3_cFPv(); -extern "C" static void daNpcCdn3_Create__FPv(); -extern "C" void create__11daNpcCdn3_cFv(); -extern "C" void create_init__11daNpcCdn3_cFv(); -extern "C" void setMtx__11daNpcCdn3_cFv(); -extern "C" void lookat__11daNpcCdn3_cFv(); -extern "C" void __dt__5csXyzFv(); -extern "C" static void daNpcCdn3_Delete__FPv(); -extern "C" void __dt__11daNpcCdn3_cFv(); -extern "C" static void daNpcCdn3_Execute__FPv(); -extern "C" void execute__11daNpcCdn3_cFv(); -extern "C" void checkTimeSchedule__11daNpcCdn3_cFv(); -extern "C" static void daNpcCdn3_Draw__FPv(); -extern "C" static bool daNpcCdn3_IsDelete__FPv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __sinit_d_a_npc_cdn3_cpp(); -extern "C" static void func_8097EFD8(); -extern "C" static void func_8097EFE0(); -extern "C" void __dt__18daNpcT_ActorMngr_cFv(); -extern "C" void __dt__10daNpcCd2_cFv(); -extern "C" void __dt__16dNpcLib_lookat_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" extern char const* const d_a_npc_cdn3__stringBase0; -extern "C" u8 ActionTable__11daNpcCdn3_c[192]; -extern "C" void* m_funcTbl__11daNpcCdn3_c[44]; -extern "C" u8 m_seq00_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq01_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq02_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq03_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq04_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq05_funcTbl__11daNpcCdn3_c[48]; -extern "C" u8 m_seq06_funcTbl__11daNpcCdn3_c[48]; -extern "C" u8 m_seq07_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq08_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq09_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq10_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq11_funcTbl__11daNpcCdn3_c[72]; -extern "C" u8 m_seq12_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq13_funcTbl__11daNpcCdn3_c[72]; -extern "C" u8 m_seq14_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq15_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq16_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq17_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq18_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq19_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq20_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq21_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq22_funcTbl__11daNpcCdn3_c[48]; -extern "C" u8 m_seq23_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq24_funcTbl__11daNpcCdn3_c[60]; -extern "C" u8 m_seq25_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq26_funcTbl__11daNpcCdn3_c[36]; -extern "C" u8 m_seq27_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq28_funcTbl__11daNpcCdn3_c[36]; -extern "C" u8 m_seq29_funcTbl__11daNpcCdn3_c[36]; -extern "C" u8 m_seq30_funcTbl__11daNpcCdn3_c[72]; -extern "C" u8 m_seq31_funcTbl__11daNpcCdn3_c[72]; -extern "C" u8 m_seq32_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq33_funcTbl__11daNpcCdn3_c[84]; -extern "C" u8 m_seq34_funcTbl__11daNpcCdn3_c[108]; -extern "C" u8 m_seq35_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq36_funcTbl__11daNpcCdn3_c[48]; -extern "C" u8 m_seq37_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq38_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq39_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq40_funcTbl__11daNpcCdn3_c[36]; -extern "C" u8 m_seq41_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq42_funcTbl__11daNpcCdn3_c[24]; -extern "C" u8 m_seq43_funcTbl__11daNpcCdn3_c[36]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void setMorf__13mDoExt_morf_cFf(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_getPolygonAngle__FPC8cM3dGPlas(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void getLayerNo__14dComIfG_play_cFi(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void onSwitch__12dSv_danBit_cFi(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void convPId__14dEvt_control_cFUi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWallR__12dBgS_AcchCirFf(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void initialize__18daNpcT_ActorMngr_cFv(); -extern "C" void entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c(); -extern "C" void remove__18daNpcT_ActorMngr_cFv(); -extern "C" void getActorP__18daNpcT_ActorMngr_cFv(); -extern "C" void NpcCreate__10daNpcCd2_cFi(); -extern "C" void ObjCreate__10daNpcCd2_cFi(); -extern "C" void ChairCreate__10daNpcCd2_cFf(); -extern "C" void isM___10daNpcCd2_cFv(); -extern "C" void getAnmP__10daNpcCd2_cFii(); -extern "C" void setAttention__10daNpcCd2_cFi(); -extern "C" void loadResrc__10daNpcCd2_cFii(); -extern "C" void removeResrc__10daNpcCd2_cFii(); -extern "C" void setEnvTevCol__10daNpcCd2_cFv(); -extern "C" void setRoomNo__10daNpcCd2_cFv(); -extern "C" void animation__10daNpcCd2_cFi(); -extern "C" void setAnm__10daNpcCd2_cFP18J3DAnmTransformKeyffiii(); -extern "C" void drawShadow__10daNpcCd2_cFf(); -extern "C" void drawObj__10daNpcCd2_cFiP8J3DModelf(); -extern "C" void drawNpc__10daNpcCd2_cFv(); -extern "C" void getEscapeTag__10daNpcCd2_cFv(); -extern "C" void checkFearSituation__10daNpcCd2_cFv(); -extern "C" void setPath__11PathTrace_cFiiiP4cXyzb(); -extern "C" void checkPoint__11PathTrace_cF4cXyzf(); -extern "C" void checkPathEnd__11PathTrace_cF4cXyzf(); -extern "C" void getTargetPoint__11PathTrace_cFP3Vec(); -extern "C" void setNextPoint__11PathTrace_cFR4cXyz(); -extern "C" void checkObstacle__11PathTrace_cFP10fopAc_ac_c(); -extern "C" void checkNowWolfEyeUp__9daPy_py_cFv(); -extern "C" void dKy_getdaytime_hour__Fv(); -extern "C" void dKy_getdaytime_minute__Fv(); -extern "C" void dKy_getDarktime_hour__Fv(); -extern "C" void dKy_getDarktime_minute__Fv(); -extern "C" void dKy_getDarktime_week__Fv(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_get_dayofweek__Fv(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void getActor__12dMsgObject_cFv(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void __ct__16dNpcLib_lookat_cFv(); -extern "C" void init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz(); -extern "C" void action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi(); -extern "C" void dbView__16dNpcLib_lookat_cFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleY__FRC3VecRC3Vec(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void __ct__17Z2CreatureCitizenFv(); -extern "C" void __dt__17Z2CreatureCitizenFv(); -extern "C" void playVoice__17Z2CreatureCitizenFi(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void __destroy_arr(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 const m_cylDat__10daNpcCd2_c[68]; -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" f32 Zero__4cXyz[3]; - // // Declarations: // @@ -1360,7 +1095,7 @@ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) { /* 8097B5A8-8097B60C 002948 0064+00 2/2 0/0 0/0 .text isInShop__11daNpcCdn3_cFv */ inline bool daNpcCdn3_c::isInShop() { - BOOL rv = FALSE; + u8 rv = FALSE; if (strcmp(dComIfGp_getStartStageName(), "R_SP160") == 0 && dComIfG_play_c::getLayerNo(0) <= 1) { rv = TRUE; } @@ -1853,7 +1588,6 @@ int daNpcCdn3_c::create() { } /* 8097CC58-8097D078 003FF8 0420+00 1/1 0/0 0/0 .text create_init__11daNpcCdn3_cFv */ -// NONMATCHING - issues with initParamTime division and mod interaction with u16 void daNpcCdn3_c::create_init() { gravity = -3.0f; initTimeSchedule(); @@ -1913,15 +1647,19 @@ void daNpcCdn3_c::setMtx() { } /* 8097D120-8097D614 0044C0 04F4+00 1/1 0/0 0/0 .text lookat__11daNpcCdn3_cFv */ -// NONMATCHING - stack + r3 init order +// NONMATCHING - r3 init order + regalloc void daNpcCdn3_c::lookat() { + csXyz vecs1[3] = { + csXyz((s32)Cd2_HIO_maxLmtX_BACKBONE(m_type), (s32)Cd2_HIO_maxLmtY_BACKBONE(m_type), 0), + csXyz((s32)Cd2_HIO_maxLmtX_NECK(m_type), (s32)Cd2_HIO_maxLmtY_NECK(m_type), 0), + csXyz((s32)Cd2_HIO_maxLmtX_HEAD(m_type), (s32)Cd2_HIO_maxLmtY_HEAD(m_type), 0), + }; + csXyz vecs2[3] = { + csXyz((s32)Cd2_HIO_minLmtX_BACKBONE(m_type), (s32)Cd2_HIO_minLmtY_BACKBONE(m_type), 0), + csXyz((s32)Cd2_HIO_minLmtX_NECK(m_type), (s32)Cd2_HIO_minLmtY_NECK(m_type), 0), + csXyz((s32)Cd2_HIO_minLmtX_HEAD(m_type), (s32)Cd2_HIO_minLmtY_HEAD(m_type), 0), + }; int local_68[4]; - csXyz cStack_4c = csXyz(Cd2_HIO_maxLmtX_BACKBONE(m_type), Cd2_HIO_maxLmtY_BACKBONE(m_type), 0); - csXyz cStack_46 = csXyz(Cd2_HIO_maxLmtX_NECK(m_type), Cd2_HIO_maxLmtY_NECK(m_type), 0); - csXyz cStack_40 = csXyz(Cd2_HIO_maxLmtX_HEAD(m_type), Cd2_HIO_maxLmtY_HEAD(m_type), 0); - csXyz cStack_60 = csXyz(Cd2_HIO_minLmtX_BACKBONE(m_type), Cd2_HIO_minLmtY_BACKBONE(m_type), 0); - csXyz cStack_5a = csXyz(Cd2_HIO_minLmtX_NECK(m_type), Cd2_HIO_minLmtY_NECK(m_type), 0); - csXyz cStack_54 = csXyz(Cd2_HIO_minLmtX_HEAD(m_type), Cd2_HIO_minLmtY_HEAD(m_type), 0); cXyz cStack_80(cXyz::Zero); if (isM_()) { local_68[0] = 1; @@ -1934,7 +1672,7 @@ void daNpcCdn3_c::lookat() { local_68[2] = 3; local_68[3] = -1; } - mLookat.init(mpMorf->getModel(), local_68, &cStack_4c,&cStack_60); + mLookat.init(mpMorf->getModel(), local_68, &vecs1[0], &vecs2[0]); Mtx afStack_38; if (m_targetAct.getActorP() != NULL) { cMtx_copy(mpMorf->getModel()->getBaseTRMtx(), afStack_38); @@ -1966,7 +1704,6 @@ static int daNpcCdn3_Execute(void* i_this) { } /* 8097D748-8097DABC 004AE8 0374+00 1/1 0/0 0/0 .text execute__11daNpcCdn3_cFv */ -// NONMATCHING - isInShop bool issue int daNpcCdn3_c::execute() { mAcchCir.SetWallH(Cd2_HIO_chkWallH(m_type)); mAcchCir.SetWallR(Cd2_HIO_chkWallR(m_type)); @@ -1999,7 +1736,7 @@ int daNpcCdn3_c::execute() { return 1; } -inline bool daNpcCdn3_c::searchFirstScheduleTag(fopAc_ac_c* param_1) { +inline bool daNpcCdn3_c::searchFirstScheduleTag() { field_0xb88 = NULL; fpcM_Search(s_sub2, this); if (mTagSched != NULL) { @@ -2028,7 +1765,6 @@ inline bool daNpcCdn3_c::searchNextScheduleTag() { /* 8097DABC-8097DEF4 004E5C 0438+00 1/1 0/0 0/0 .text checkTimeSchedule__11daNpcCdn3_cFv */ -// NONMATCHING - getLastPointNum issues void daNpcCdn3_c::checkTimeSchedule() { int iVar2 = getTime(); if (getGroupID() == 0xff) { @@ -2041,7 +1777,7 @@ void daNpcCdn3_c::checkTimeSchedule() { } } else { if (mTagSched == NULL) { - if (searchFirstScheduleTag(this)) { + if (searchFirstScheduleTag()) { setSchedule(mTagSched); if (mTagSched->getStartEnd() == 1) { if (field_0xb88 == 0) { @@ -2055,8 +1791,8 @@ void daNpcCdn3_c::checkTimeSchedule() { home.pos.set(current.pos); old.pos.set(current.pos); current.angle.y = - cLib_targetAngleY(m_path.getPoint(m_path.getLastPointNum()), - m_path.getPoint(m_path.getLastPointNum() - 1)); + (s16)cLib_targetAngleY(m_path.getPoint(m_path.getLastPointNum() - 1), + m_path.getPoint(m_path.getLastPointNum())); shape_angle.y = current.angle.y; home.angle.y = current.angle.y; old.angle.y = current.angle.y; @@ -2065,8 +1801,8 @@ void daNpcCdn3_c::checkTimeSchedule() { } } else if (field_0xb95 != 0 && mTagSched->getStartEnd() != 1) { int day = getDayOfWeek(); - int schedDay = mTagSched->getWeekNum(); - if (schedDay == day && field_0xb8c <= iVar2) { + int weekNum = mTagSched->getWeekNum(); + if (weekNum == day && field_0xb8c <= iVar2) { field_0xb95 = 0; } } diff --git a/src/d/actor/d_a_npc_zra.cpp b/src/d/actor/d_a_npc_zra.cpp index 4d8054b14d..ea42729c2d 100644 --- a/src/d/actor/d_a_npc_zra.cpp +++ b/src/d/actor/d_a_npc_zra.cpp @@ -18,6 +18,17 @@ #include "d/actor/d_a_npc_hoz.h" #include "d/actor/d_a_obj_zraMark.h" +class daNpc_zrA_HIO_c { +public: + daNpc_zrA_Param_c::param m; +}; + +#if DEBUG +#define HIO_PARAM(i_this) (i_this->mpHIO->m) +#else +#define HIO_PARAM(_) (daNpc_zrA_Param_c::m) +#endif + // // Declarations: // @@ -459,16 +470,16 @@ char* daNpc_zrA_c::mEvtCutNameList[11] = { daNpc_zrA_c::EventFn daNpc_zrA_c::mEvtCutList[11] = { NULL, - &ECut_talkSwim, - &ECut_beforeBlastzrR, - &ECut_afterBlastzrR, - &ECut_thanksBlast, - &ECut_resultAnnounce, - &ECut_carryWaterfall, - &ECut_carryWaterfallSkip, - &ECut_searchPrince1, - &ECut_searchPrince2, - &ECut_talkMulti, + &daNpc_zrA_c::ECut_talkSwim, + &daNpc_zrA_c::ECut_beforeBlastzrR, + &daNpc_zrA_c::ECut_afterBlastzrR, + &daNpc_zrA_c::ECut_thanksBlast, + &daNpc_zrA_c::ECut_resultAnnounce, + &daNpc_zrA_c::ECut_carryWaterfall, + &daNpc_zrA_c::ECut_carryWaterfallSkip, + &daNpc_zrA_c::ECut_searchPrince1, + &daNpc_zrA_c::ECut_searchPrince2, + &daNpc_zrA_c::ECut_talkMulti, }; /* 80B7956C-80B79798 00114C 022C+00 1/1 0/0 0/0 .text __ct__11daNpc_zrA_cFv */ @@ -2052,10 +2063,11 @@ bool daNpc_zrA_c::selectAction() { /* 80B7DF40-80B7E668 005B20 0728+00 1/1 0/0 0/0 .text doEvent__11daNpc_zrA_cFv */ // NONMATCHING regalloc BOOL daNpc_zrA_c::doEvent() { + dEvent_manager_c* event_manager = NULL; BOOL ret = false; - if (dComIfGp_event_runCheck() != false) { - dEvent_manager_c& event_manager = dComIfGp_getEventManager(); + if (dComIfGp_event_runCheck() != FALSE) { + event_manager = &dComIfGp_getEventManager(); if (eventInfo.checkCommandTalk() || eventInfo.checkCommandDemoAccrpt()) { mOrderNewEvt = false; } @@ -2067,10 +2079,10 @@ BOOL daNpc_zrA_c::doEvent() { l_evtNames[l_evtGetParamList[mOrderEvtNo].fileIdx], 1, 0xffff); mStaffName = l_myName[1]; } else if (mType == TYPE_WATERFALL) { - if (chkAction(&talkSwim)) { + if (chkAction(&daNpc_zrA_c::talkSwim)) { (this->*mpActionFn)(NULL); } else if (dComIfGp_event_chkTalkXY() == false || dComIfGp_evmng_ChkPresentEnd()) { - setAction(&talkSwim); + setAction(&daNpc_zrA_c::talkSwim); } } else if (mType == TYPE_SEARCH) { mOrderEvtNo = EVT_SEARCH_PRINCE; @@ -2085,7 +2097,7 @@ BOOL daNpc_zrA_c::doEvent() { changeEvent(l_resNames[l_evtGetParamList[mOrderEvtNo].arcIdx], l_evtNames[l_evtGetParamList[mOrderEvtNo].fileIdx], 1, 0xffff); } else { - if (chkAction(&talk)) { + if (chkAction(&daNpc_zrA_c::talk)) { (this->*mpActionFn)(NULL); } else if (dComIfGp_event_chkTalkXY()) { if (dComIfGp_evmng_ChkPresentEnd()) { @@ -2099,7 +2111,7 @@ BOOL daNpc_zrA_c::doEvent() { } else { mFlowID = 6; } - setAction(&talk); + setAction(&daNpc_zrA_c::talk); } else { s16 event_idx = dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff); @@ -2109,7 +2121,7 @@ BOOL daNpc_zrA_c::doEvent() { } } } else { - setAction(&talk); + setAction(&daNpc_zrA_c::talk); } } ret = true; @@ -2119,23 +2131,25 @@ BOOL daNpc_zrA_c::doEvent() { mItemID = -1; } - int staff_id = event_manager.getMyStaffId(mStaffName, this, 0); + int staff_id = event_manager->getMyStaffId(mStaffName, this, 0); if (staff_id != -1) { mStaffID = staff_id; - int act_idx = event_manager.getMyActIdx(staff_id, mEvtCutNameList, + int act_idx = event_manager->getMyActIdx(staff_id, mEvtCutNameList, ARRAY_SIZE(mEvtCutNameList), 0, 0); + JUT_ASSERT(0xf0e, act_idx >= 0 && act_idx < 11); + JUT_ASSERT(0xf0f, mEvtCutList[act_idx] != 0); if ((this->*mEvtCutList[act_idx])(staff_id)) { - event_manager.cutEnd(staff_id); + event_manager->cutEnd(staff_id); } ret = true; } if (eventInfo.checkCommandDemoAccrpt()) { - if (mEventIdx != -1 && event_manager.endCheck(mEventIdx)) { + if (mEventIdx != -1 && event_manager->endCheck(mEventIdx)) { switch (mOrderEvtNo) { case EVT_TALK_SWIM: dComIfGp_event_reset(); - setAction(&swim); + setAction(&daNpc_zrA_c::swim); mOrderEvtNo = 0; mEventIdx = -1; mStaffName = l_myName[0]; @@ -2144,7 +2158,7 @@ BOOL daNpc_zrA_c::doEvent() { case EVT_RESULT_ANNOUNCE: dComIfGp_event_reset(); mActionSelect = 5; - setAction(&returnRiverDescend); + setAction(&daNpc_zrA_c::returnRiverDescend); mOrderEvtNo = 0; mEventIdx = -1; dComIfGs_offSwitch(mSwitch1, fopAcM_GetRoomNo(this)); @@ -2154,7 +2168,7 @@ BOOL daNpc_zrA_c::doEvent() { case EVT_CARRY_WATERFALL_NIGHT: dComIfGp_event_reset(); mActionSelect = 3; - setAction(&diveWaterfall); + setAction(&daNpc_zrA_c::diveWaterfall); mOrderEvtNo = 0; mEventIdx = -1; break; @@ -2177,8 +2191,8 @@ BOOL daNpc_zrA_c::doEvent() { } } - int prev_msg_timer = mMsgTimer; int expression, motion; + int prev_msg_timer = mMsgTimer; if (ctrlMsgAnm(expression, motion, this, false)) { if (!field_0x9eb) { setExpression(expression, -1.0f); diff --git a/src/d/actor/d_a_npc_zra.inc b/src/d/actor/d_a_npc_zra.inc index 492150b24d..d5028a3292 100644 --- a/src/d/actor/d_a_npc_zra.inc +++ b/src/d/actor/d_a_npc_zra.inc @@ -107,10 +107,10 @@ void daNpc_zrA_c::walkCalc() { mPath.getDstPosDstXZ(current.pos, next_pnt); } s16 target_angle = cLib_targetAngleY(¤t.pos, &next_pnt); - speedF = daNpc_zrA_Param_c::m.mWalkSpeed; - mpMorf->setPlaySpeed(daNpc_zrA_Param_c::m.mWalkSpeed / daNpc_zrA_Param_c::m.mWalkAnmRate); + speedF = HIO_PARAM(this).mWalkSpeed; + mpMorf->setPlaySpeed(HIO_PARAM(this).mWalkSpeed / HIO_PARAM(this).mWalkAnmRate); cLib_addCalcAngleS2(¤t.angle.y, target_angle, - daNpc_zrA_Param_c::m.mWalkAngleScale, daNpc_zrA_Param_c::m.mWalkAngleSpeed); + HIO_PARAM(this).mWalkAngleScale, HIO_PARAM(this).mWalkAngleSpeed); mCurAngle = current.angle; shape_angle = mCurAngle; mOldAngle.y = mCurAngle.y; @@ -294,7 +294,7 @@ BOOL daNpc_zrA_c::talk(void* param_0) { mMode = 3; if (!field_0x9ec) { dComIfGp_event_reset(); - setAction(&wait); + setAction(&daNpc_zrA_c::wait); } field_0x9ec = false; } @@ -404,7 +404,7 @@ BOOL daNpc_zrA_c::swim(void* param_0) { mSpinTimer = (int)(cM_rnd() * 60.0f) + 90; mSwimMode = SWIM_RAIL; field_0x1521 = true; - mScaleFactor = daNpc_zrA_Param_c::m.mMaxScaleFactor; + mScaleFactor = HIO_PARAM(this).mMaxScaleFactor; mCcStts.SetWeight(0); } } else { @@ -445,7 +445,7 @@ BOOL daNpc_zrA_c::swim(void* param_0) { /* 80B80A94-80B81788 008674 0CF4+00 1/1 0/0 0/0 .text railSwim__11daNpc_zrA_cFv */ BOOL daNpc_zrA_c::railSwim() { - s16 ang_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 ang_step = HIO_PARAM(this).mSwimAngleSpeed; s16 ang_scale = 8; f32 fvar15 = 0.1f; f32 fvar2 = 1.0f; @@ -487,7 +487,7 @@ BOOL daNpc_zrA_c::railSwim() { mCreatureSound.startCreatureSound(Z2SE_ZRA_DIVE_SPLASH, 0, -1); } - if (current.pos.y <= water_height - daNpc_zrA_Param_c::m.mMinDepth) { + if (current.pos.y <= water_height - HIO_PARAM(this).mMinDepth) { field_0x153e = false; field_0x153c = false; mSwimSpeedScale = 1.0f; @@ -607,11 +607,11 @@ BOOL daNpc_zrA_c::railSwim() { calcSwimAngle(angle, mSwimAngleCalc, ang_scale, ang_step); } - if (mSwimSpeedF > fvar3 * daNpc_zrA_Param_c::m.mSwimSpeed) { + if (mSwimSpeedF > fvar3 * HIO_PARAM(this).mSwimSpeed) { fvar15 *= 2.0f; fvar2 *= 0.5f; } - cLib_addCalc2(&mSwimSpeedF, fvar3 * daNpc_zrA_Param_c::m.mSwimSpeed, fvar15, fvar2); + cLib_addCalc2(&mSwimSpeedF, fvar3 * HIO_PARAM(this).mSwimSpeed, fvar15, fvar2); if (field_0x153c == true && mIsAboveWater == true) { if (mpMorf->getFrame() > 13.0f && mpMorf->getFrame() < 21.0f) { @@ -621,7 +621,7 @@ BOOL daNpc_zrA_c::railSwim() { } } else if (!bvar6) { f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, mSwimSpeedF / daNpc_zrA_Param_c::m.mSwimAnmRate, 0.2f, 0.1f); + cLib_addCalc2(&play_speed, mSwimSpeedF / HIO_PARAM(this).mSwimAnmRate, 0.2f, 0.1f); mpMorf->setPlaySpeed(play_speed); } @@ -629,9 +629,9 @@ BOOL daNpc_zrA_c::railSwim() { calcSwimPos(swim_speed); if (!field_0x153c && mAcch.ChkWaterHit() - && current.pos.y > water_height - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > water_height - HIO_PARAM(this).mMinDepth) { - current.pos.y = water_height - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = water_height - HIO_PARAM(this).mMinDepth; } if (cLib_calcTimer(&mSpinTimer) == 0) { @@ -663,8 +663,8 @@ BOOL daNpc_zrA_c::railSwim() { } else { mSpinTimer = (int)(cM_rnd() * 60.0f) + 90; mSpinAngle = 0; - mSwimSpeedScale = cM_rnd() * (1.0f - daNpc_zrA_Param_c::m.mMinSwimSpeedScale) - + daNpc_zrA_Param_c::m.mMinSwimSpeedScale; + mSwimSpeedScale = cM_rnd() * (1.0f - HIO_PARAM(this).mMinSwimSpeedScale) + + HIO_PARAM(this).mMinSwimSpeedScale; } } @@ -708,8 +708,8 @@ BOOL daNpc_zrA_c::waitSwim() { if (home.angle.y == mCurAngle.y) { fopAc_ac_c* actor = getAttnActorP(mActorMngr[0].getActorP() != NULL, srchAttnActor1, - daNpc_zrA_Param_c::m.mAttnRadius, daNpc_zrA_Param_c::m.mAttnUpperY, - daNpc_zrA_Param_c::m.mAttnLowerY, daNpc_zrA_Param_c::m.mAttnFovY, + HIO_PARAM(this).mAttnRadius, HIO_PARAM(this).mAttnUpperY, + HIO_PARAM(this).mAttnLowerY, HIO_PARAM(this).mAttnFovY, shape_angle.y, 120, true); if (actor != NULL) { mActorMngr[1].entry(actor); @@ -747,7 +747,7 @@ BOOL daNpc_zrA_c::turnSwimInit() { /* 80B81A18-80B81CC8 0095F8 02B0+00 2/2 0/0 0/0 .text turnSwim__11daNpc_zrA_cFv */ BOOL daNpc_zrA_c::turnSwim() { - s16 ang_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 ang_step = HIO_PARAM(this).mSwimAngleSpeed; cXyz pos; csXyz angle; mPath.getDstPosDst2(current.pos, pos); @@ -768,14 +768,14 @@ BOOL daNpc_zrA_c::turnSwim() { mpMorf->setPlaySpeed(0.8f); } else { cXyz swim_speed; - mSwimSpeedF = 1.5f * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = 1.5f * HIO_PARAM(this).mSwimSpeed; swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); mpMorf->setPlaySpeed(1.0f); } } else if (mBaseMotionAnm == ANM_STILL) { cXyz swim_speed; - mSwimSpeedF = 1.5f * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = 1.5f * HIO_PARAM(this).mSwimSpeed; swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); mpMorf->setPlaySpeed(1.0f); @@ -796,9 +796,9 @@ BOOL daNpc_zrA_c::turnSwim() { } if (mAcch.ChkWaterHit() - && current.pos.y > mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth) { - current.pos.y = mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth; } return true; @@ -885,9 +885,9 @@ void daNpc_zrA_c::calcBank(s16 i_step, s16 i_scale, s16& i_angY, s16& o_angZ) { /* 80B8204C-80B82238 009C2C 01EC+00 1/1 0/0 0/0 .text calcWaistAngle__11daNpc_zrA_cFv */ void daNpc_zrA_c::calcWaistAngle() { if (mResetWaistAngle) { - cLib_chaseAngleS(&mWaistAngle.x, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2); - cLib_chaseAngleS(&mWaistAngle.y, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2); - cLib_chaseAngleS(&mWaistAngle.z, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2); + cLib_chaseAngleS(&mWaistAngle.x, 0, HIO_PARAM(this).mSwimAngleSpeed / 2); + cLib_chaseAngleS(&mWaistAngle.y, 0, HIO_PARAM(this).mSwimAngleSpeed / 2); + cLib_chaseAngleS(&mWaistAngle.z, 0, HIO_PARAM(this).mSwimAngleSpeed / 2); } else { mDoMtx_stack_c::push(); @@ -895,18 +895,18 @@ void daNpc_zrA_c::calcWaistAngle() { angle.x = cLib_targetAngleX(&field_0x1578, ¤t.pos); angle.y = cLib_targetAngleY(¤t.pos, &field_0x1578); angle.z = 0; - cXyz vec(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0x8c); + cXyz vec(0.0f, 0.0f, HIO_PARAM(this).field_0x8c); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::multVec(&vec, &field_0x1578); if (mIsTurning) { - vec.set(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0x90); + vec.set(0.0f, 0.0f, HIO_PARAM(this).field_0x90); cXyz vec2; mDoMtx_stack_c::ZXYrotS(current.angle); mDoMtx_stack_c::multVec(&vec, &vec2); field_0x1578 -= vec2; field_0x1578.normalize(); - field_0x1578 *= daNpc_zrA_Param_c::m.field_0x8c; + field_0x1578 *= HIO_PARAM(this).field_0x8c; } mDoMtx_stack_c::ZXYrotS(current.angle); @@ -925,7 +925,7 @@ void daNpc_zrA_c::calcWaistAngle() { /* 80B82238-80B822CC 009E18 0094+00 9/9 0/0 0/0 .text calcWaistAngleInit__11daNpc_zrA_cFv */ void daNpc_zrA_c::calcWaistAngleInit() { - cXyz vec(0.0f, 0.0f, -daNpc_zrA_Param_c::m.field_0x8c); + cXyz vec(0.0f, 0.0f, -HIO_PARAM(this).field_0x8c); mDoMtx_stack_c::ZXYrotS(mCurAngle); mDoMtx_stack_c::transM(vec); mDoMtx_stack_c::multVecZero(&field_0x1578); @@ -1000,17 +1000,17 @@ void daNpc_zrA_c::calcSwimPos(cXyz& i_speed) { /* 80B825FC-80B826F0 00A1DC 00F4+00 8/8 0/0 0/0 .text calcWaitSwim__11daNpc_zrA_cFi */ void daNpc_zrA_c::calcWaitSwim(BOOL param_0) { - cLib_chaseAngleS(¤t.angle.x, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed); - cLib_chaseAngleS(¤t.angle.z, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed); + cLib_chaseAngleS(¤t.angle.x, 0, HIO_PARAM(this).mSwimAngleSpeed); + cLib_chaseAngleS(¤t.angle.z, 0, HIO_PARAM(this).mSwimAngleSpeed); mCurAngle = current.angle; shape_angle = mCurAngle; cLib_chaseF(&mSwimSpeedF, 0.0f, 2.0f); - cLib_chaseF(&mScaleFactor, 1.0f, (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + cLib_chaseF(&mScaleFactor, 1.0f, (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); calcModulation(); if (param_0 && mAcch.ChkWaterHit() - && current.pos.y > mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth) { - current.pos.y = mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth; } } @@ -1030,7 +1030,7 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { mAcch.ClrGrndNone(); mAcch.ClrWallNone(); setExpression(EXPR_NONE, -1.0f); - setMotion(MOT_FLOAT, daNpc_zrA_Param_c::m.mMorfFrames, true); + setMotion(MOT_FLOAT, HIO_PARAM(this).mMorfFrames, true); mTurnMode = 0; mMode = 2; mSwimSpeed.set(0.0f, 0.0f, mSwimSpeedF); @@ -1061,19 +1061,19 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { break; } - cLib_chaseAngleS(¤t.angle.x, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed); - cLib_chaseAngleS(¤t.angle.z, 0, daNpc_zrA_Param_c::m.mSwimAngleSpeed); + cLib_chaseAngleS(¤t.angle.x, 0, HIO_PARAM(this).mSwimAngleSpeed); + cLib_chaseAngleS(¤t.angle.z, 0, HIO_PARAM(this).mSwimAngleSpeed); cLib_chaseAngleS(¤t.angle.y, fopAcM_searchPlayerAngleY(this), - daNpc_zrA_Param_c::m.mSwimAngleSpeed); - cLib_chaseF(&mScaleFactor, 1.0f, (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + HIO_PARAM(this).mSwimAngleSpeed); + cLib_chaseF(&mScaleFactor, 1.0f, (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz zero(0.0f, 0.0f, 0.0f); cLib_chasePos(&mSwimSpeed, zero, 0.5f); current.pos += mSwimSpeed; f32 water_y; if (fopAcM_getWaterY(¤t.pos, &water_y) - && current.pos.y > water_y - daNpc_zrA_Param_c::m.mMinDepth - 50.0f) + && current.pos.y > water_y - HIO_PARAM(this).mMinDepth - 50.0f) { - cLib_chaseF(¤t.pos.y, water_y - daNpc_zrA_Param_c::m.mMinDepth - 50.0f, 20.0f); + cLib_chaseF(¤t.pos.y, water_y - HIO_PARAM(this).mMinDepth - 50.0f, 20.0f); } mCurAngle = current.angle; shape_angle = mCurAngle; @@ -1084,13 +1084,13 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { calcModulation(); if (talkProc(NULL, true, NULL)) { if (mActionType == ACT_TYPE_0) { - setMotion(MOT_DIVE_SWIM_B, daNpc_zrA_Param_c::m.mMorfFrames / 2.0f, true); + setMotion(MOT_DIVE_SWIM_B, HIO_PARAM(this).mMorfFrames / 2.0f, true); } else { - setMotion(MOT_DIVE_SWIM_A, daNpc_zrA_Param_c::m.mMorfFrames / 2.0f, true); + setMotion(MOT_DIVE_SWIM_A, HIO_PARAM(this).mMorfFrames / 2.0f, true); } mSwimAngleCalc = current.angle; mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; setLookMode(LOOK_NONE); ret = true; } @@ -1098,9 +1098,9 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { case 2: { resetModulation(); - s16 swim_angle_speed = daNpc_zrA_Param_c::m.mSwimAngleSpeed; - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + s16 swim_angle_speed = HIO_PARAM(this).mSwimAngleSpeed; + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz vec; csXyz angle; mPath.getDstPosDst2(current.pos, vec); @@ -1116,7 +1116,7 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { if (!calcWaistAngleCheck()) { calcWaistAngleInit(); mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; } cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); @@ -1125,9 +1125,9 @@ BOOL daNpc_zrA_c::ECut_talkSwim(int i_staffID) { } if (mAcch.ChkWaterHit() - && current.pos.y > mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth) { - current.pos.y = mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth; } break; } @@ -1204,7 +1204,7 @@ BOOL daNpc_zrA_c::waitWaterfall(void* param_0) { /* 80B82E88-80B833C8 00AA68 0540+00 2/0 0/0 0/0 .text swimWaterfall__11daNpc_zrA_cFPv */ BOOL daNpc_zrA_c::swimWaterfall(void* param_0) { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed * 2; s16 angle_scale = 2; cXyz point, swim_speed; @@ -1223,7 +1223,7 @@ BOOL daNpc_zrA_c::swimWaterfall(void* param_0) { setMotion(MOT_SWIM_A, -1.0f, false); } mSwimMode = SWIM_RAIL; - mScaleFactor = daNpc_zrA_Param_c::m.mMaxScaleFactor; + mScaleFactor = HIO_PARAM(this).mMaxScaleFactor; mCcStts.SetWeight(0); setLookMode(LOOK_NONE); mAttnChangeTimer = 0; @@ -1241,7 +1241,7 @@ BOOL daNpc_zrA_c::swimWaterfall(void* param_0) { mActionSelect = 0; mSwimSpeedScale = 1.0f; setMotion(MOT_FLOAT_B, -1.0f, false); - setAction(&waitWaterfall); + setAction(&daNpc_zrA_c::waitWaterfall); return false; } @@ -1298,14 +1298,14 @@ BOOL daNpc_zrA_c::swimWaterfall(void* param_0) { } else { mSwimSpeedScale = 1.0f; } - cLib_addCalc2(&mSwimSpeedF, mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed, 0.1f, 1.0f); + cLib_addCalc2(&mSwimSpeedF, mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed, 0.1f, 1.0f); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); if (!bvar5) { f32 play_speed = mpMorf->getPlaySpeed(); f32 target_speed = - cLib_minMaxLimit(mSwimSpeedF / daNpc_zrA_Param_c::m.mSwimAnmRate, 0.0f, 1.5f); + cLib_minMaxLimit(mSwimSpeedF / HIO_PARAM(this).mSwimAnmRate, 0.0f, 1.5f); cLib_addCalc2(&play_speed, target_speed, 0.2f, 0.1f); mpMorf->setPlaySpeed(play_speed); } @@ -1335,7 +1335,7 @@ BOOL daNpc_zrA_c::diveWaterfall(void* param_0) { setMotion(MOT_DIVE_B_SWIM_A, -1.0f, false); mSwimAngleCalc = current.angle; mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; setLookMode(LOOK_NONE); mSwimMode = SWIM_RAIL; mActionSelect = 3; @@ -1343,9 +1343,9 @@ BOOL daNpc_zrA_c::diveWaterfall(void* param_0) { // fallthrough case 2: - if (diveCalc(daNpc_zrA_Param_c::m.mSwimAngleSpeed, 4, false)) { + if (diveCalc(HIO_PARAM(this).mSwimAngleSpeed, 4, false)) { mActionSelect = 1; - setAction(&swimWaterfall); + setAction(&daNpc_zrA_c::swimWaterfall); } break; @@ -1394,12 +1394,12 @@ BOOL daNpc_zrA_c::talkSwim(void* param_0) { field_0x1558 = 1; mSwimAngleCalc = current.angle; mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; setLookMode(LOOK_NONE); } else { mMode = 3; dComIfGp_event_reset(); - setAction(&waitWaterfall); + setAction(&daNpc_zrA_c::waitWaterfall); field_0x9ec = false; } } @@ -1453,7 +1453,7 @@ BOOL daNpc_zrA_c::ECut_carryWaterfall(int i_staffID) { mAcch.SetWallNone(); field_0x153d = false; mSwimMode = SWIM_RAIL; - mScaleFactor = daNpc_zrA_Param_c::m.mMaxScaleFactor; + mScaleFactor = HIO_PARAM(this).mMaxScaleFactor; mCcStts.SetWeight(0); setLookMode(LOOK_NONE); mAttnChangeTimer = 0; @@ -1502,7 +1502,7 @@ BOOL daNpc_zrA_c::ECut_carryWaterfall(int i_staffID) { } ret = true; } else { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed * 2; cXyz pos, swim_speed; f32 speed_scale = mSwimSpeedScale; if (mPath.getDstPosDst2(current.pos, pos) && mPath.getIdx() == mPath.getNextIdx()) { @@ -1518,7 +1518,7 @@ BOOL daNpc_zrA_c::ECut_carryWaterfall(int i_staffID) { angle.y = cLib_targetAngleY(¤t.pos, &pos); angle.z = current.angle.z; calcSwimAngle(angle, mSwimAngleCalc, 4, angle_step); - cLib_addCalc2(&mSwimSpeedF, speed_scale * daNpc_zrA_Param_c::m.mSwimSpeed, + cLib_addCalc2(&mSwimSpeedF, speed_scale * HIO_PARAM(this).mSwimSpeed, 0.1f, 1.0f); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); @@ -1544,7 +1544,7 @@ BOOL daNpc_zrA_c::ECut_carryWaterfall(int i_staffID) { mSwimMode = SWIM_WAIT; } cLib_chaseAngleS(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), - daNpc_zrA_Param_c::m.mSwimAngleSpeed); + HIO_PARAM(this).mSwimAngleSpeed); setAngle(mCurAngle.y); break; @@ -1616,7 +1616,7 @@ BOOL daNpc_zrA_c::ECut_carryWaterfallSkip(int i_staffID) { mSwimMode = SWIM_WAIT; } cLib_chaseAngleS(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), - daNpc_zrA_Param_c::m.mSwimAngleSpeed); + HIO_PARAM(this).mSwimAngleSpeed); setAngle(mCurAngle.y); break; @@ -1634,8 +1634,8 @@ BOOL daNpc_zrA_c::ECut_carryWaterfallSkip(int i_staffID) { /* 80B83FA4-80B84200 00BB84 025C+00 1/1 0/0 0/0 .text diveCalc__11daNpc_zrA_cFssi */ BOOL daNpc_zrA_c::diveCalc(s16 i_angleStep, s16 i_angleScale, BOOL param_2) { - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz pos; mPath.getDstPosDst2(current.pos, pos); csXyz angle; @@ -1665,9 +1665,9 @@ BOOL daNpc_zrA_c::diveCalc(s16 i_angleStep, s16 i_angleScale, BOOL param_2) { current.pos += dive_speed; if (param_2 && mAcch.ChkWaterIn() - && current.pos.y > mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth) { - current.pos.y = mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth; } if (mBaseMotionAnm == ANM_SWIM_A || mBaseMotionAnm == ANM_SWIM_B) { @@ -1732,7 +1732,7 @@ BOOL daNpc_zrA_c::waitRiverDescend(void* param_0) { if (!player->checkCanoeSlider()) { player->setCanoeSlider(); mActionSelect = 4; - setAction(&swimGoalRiverDescend); + setAction(&daNpc_zrA_c::swimGoalRiverDescend); break; } } @@ -1765,13 +1765,13 @@ BOOL daNpc_zrA_c::waitRiverDescend(void* param_0) { if (iza != NULL && iza->getGameStartFlag()) { mActionSelect = 3; mPath.setNextIdx(); - setAction(&diveRiverDescend); + setAction(&daNpc_zrA_c::diveRiverDescend); break; } } else if (mGameMode == GAME_MODE_1) { if (field_0x15c0 == 0) { if ((player->current.pos - current.pos).absXZ() - < daNpc_zrA_Param_c::m.field_0xa8) { + < HIO_PARAM(this).field_0xa8) { field_0x15c0 = 1; mOrderEvtNo = EVT_BEFORE_BLAST_ZRR; } @@ -1783,7 +1783,7 @@ BOOL daNpc_zrA_c::waitRiverDescend(void* param_0) { } else { if ((current.pos - vec2).absXZ() >= 100.0f) { mActionSelect = 3; - setAction(&diveRiverDescend); + setAction(&daNpc_zrA_c::diveRiverDescend); } } } else { @@ -1792,7 +1792,7 @@ BOOL daNpc_zrA_c::waitRiverDescend(void* param_0) { if (vec3.absXZ() < 10000.0f) { mPath.setNextIdxDst(current.pos); mActionSelect = 3; - setAction(&diveRiverDescend); + setAction(&daNpc_zrA_c::diveRiverDescend); break; } } @@ -1815,10 +1815,14 @@ BOOL daNpc_zrA_c::waitRiverDescend(void* param_0) { /* 80B84B74-80B85B14 00C754 0FA0+00 2/2 0/0 0/0 .text swimRiverDescend__11daNpc_zrA_cFPv */ -// NONMATCHING stack problems BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; - s16 angle_scale = 6; + cXyz pos_sp94; + cXyz swim_speed_sp88; + + s16 angle_step_r28 = (s16)HIO_PARAM(this).mSwimAngleSpeed; + s16 angle_scale_r27 = 6; + f32 sp28 = 0.25f; + f32 sp24 = 4.0f; f32 water_height = mAcch.m_wtr.GetHeight(); switch (mMode) { @@ -1846,38 +1850,35 @@ BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { // fallthrough case 2: { - csXyz angle; - daPy_py_c* player = daPy_getPlayerActorClass(); - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); - int ivar8 = mRiverPathIdx; - cXyz pos, swim_speed; - moveRiverPosCalc(pos); + csXyz angle_sp44; + daPy_py_c* player_r26 = daPy_getPlayerActorClass(); + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); + int ivar8_sp20 = mRiverPathIdx; + moveRiverPosCalc(pos_sp94); if (field_0x153c) { mMeterCount = dMeter2Info_getNowCount(); - cXyz head_pos; + cXyz head_pos_sp7c; mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); mDoMtx_stack_c::scaleM(scale); - mDoMtx_stack_c::multVecZero(&head_pos); + mDoMtx_stack_c::multVecZero(&head_pos_sp7c); if (field_0x153e) { if (mIsAboveWater && mpMorf->getFrame() > 13.0f && mpMorf->getFrame() < 17.0f) { - f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, 0.3f, 0.7f, 0.5f); - mpMorf->setPlaySpeed(play_speed); + f32 play_speed_sp1c = mpMorf->getPlaySpeed(); + cLib_addCalc2(&play_speed_sp1c, 0.3f, 0.7f, 0.5f); + mpMorf->setPlaySpeed(play_speed_sp1c); } - angle.y = cLib_targetAngleY(¤t.pos, &pos); - cLib_addCalcAngleS2(&mSwimAngleCalc.y, angle.y, angle_scale, angle_step); - cLib_addCalcAngleS2(¤t.angle.y, mSwimAngleCalc.y, angle_scale, angle_step); + angle_sp44.y = cLib_targetAngleY(¤t.pos, &pos_sp94); + cLib_addCalcAngleS2(&mSwimAngleCalc.y, angle_sp44.y, (s16)angle_scale_r27, angle_step_r28); + cLib_addCalcAngleS2(¤t.angle.y, mSwimAngleCalc.y, (s16)angle_scale_r27, angle_step_r28); - f32 swim_speed_f = mSwimSpeed.absXZ(); - mSwimSpeed.x = 0.0f; - mSwimSpeed.z = swim_speed_f; + mSwimSpeed.set(0.0f, mSwimSpeed.y, mSwimSpeed.absXZ()); mDoMtx_stack_c::YrotS(current.angle.y); mDoMtx_stack_c::multVec(&mSwimSpeed, &mSwimSpeed); - calcBank(angle_step / 2, angle_scale * 2, current.angle.y, current.angle.z); + calcBank((s16)angle_step_r28 / 2, angle_scale_r27 * 2, current.angle.y, current.angle.z); mSwimSpeed.y -= 1.8f; current.pos += mSwimSpeed; @@ -1888,9 +1889,9 @@ BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { if (mAcch.ChkWaterHit()) { if (mIsAboveWater - && mSwimSpeed.y <= 0.0f && head_pos.y + mSwimSpeed.y <= water_height) + && mSwimSpeed.y <= 0.0f && head_pos_sp7c.y + mSwimSpeed.y <= water_height) { - cXyz wpillar_pos = head_pos; + cXyz wpillar_pos = head_pos_sp7c; wpillar_pos.y = water_height; fopKyM_createWpillar(&wpillar_pos, 2.5f, 0); mIsAboveWater = false; @@ -1898,7 +1899,7 @@ BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { mpMorf->setPlaySpeed(1.0f); } - if (current.pos.y <= water_height - daNpc_zrA_Param_c::m.mMinDepth) { + if (current.pos.y <= water_height - HIO_PARAM(this).mMinDepth) { field_0x153e = false; field_0x153c = false; mSwimSpeedF = mSwimSpeed.abs(); @@ -1908,125 +1909,124 @@ BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { return true; } - angle.y = cLib_targetAngleY(¤t.pos, &pos); - angle.z = current.angle.z; + angle_sp44.y = cLib_targetAngleY(¤t.pos, &pos_sp94); + angle_sp44.z = current.angle.z; if (mSwimSpeedF > 40.0f) { - angle.x = -0x3000; + angle_sp44.x = -0x3000; if (mAcch.ChkWaterHit()) { - if (head_pos.y < water_height) { - angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; - angle_scale = 2; + if (head_pos_sp7c.y < water_height) { + angle_step_r28 = HIO_PARAM(this).mSwimAngleSpeed * 2; + angle_scale_r27 = 2; } else if (!mIsAboveWater) { - cXyz wpillar_pos = head_pos; - wpillar_pos.y = water_height; - fopKyM_createWpillar(&wpillar_pos, 2.5f, 0); + cXyz wpillar_pos_sp64 = head_pos_sp7c; + wpillar_pos_sp64.y = water_height; + fopKyM_createWpillar(&wpillar_pos_sp64, 2.5f, 0); mIsAboveWater = true; mCreatureSound.startCreatureSound(Z2SE_ZRA_DIVE_SPLASH_OUT, 0, -1); } else { if (mpMorf->getFrame() > 13.0f && mpMorf->getFrame() < 17.0f) { - f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, 0.3f, 0.7f, 0.8f); - mpMorf->setPlaySpeed(play_speed); + f32 play_speed_sp18 = mpMorf->getPlaySpeed(); + cLib_addCalc2(&play_speed_sp18, 0.3f, 0.7f, 0.8f); + mpMorf->setPlaySpeed(play_speed_sp18); } if (current.pos.y > water_height && current.angle.x < -0x2000) { - swim_speed.set(0.0f, 0.0f, mSwimSpeedF); - calcSwimPos(swim_speed); - mSwimSpeed = swim_speed; + swim_speed_sp88.set(0.0f, 0.0f, mSwimSpeedF); + calcSwimPos(swim_speed_sp88); + mSwimSpeed = swim_speed_sp88; field_0x153e = true; if (mSwimSpeed.y > 20.0f) { mSwimSpeed.y = 20.0f; } - calcBank(angle_step, angle_scale, angle.y, angle.z); - current.angle.z = angle.z; + calcBank(angle_step_r28, (s16)angle_scale_r27, angle_sp44.y, angle_sp44.z); + current.angle.z = angle_sp44.z; return true; } } } } else { - angle.x = cLib_targetAngleX(&pos, ¤t.pos); + angle_sp44.x = cLib_targetAngleX(&pos_sp94, ¤t.pos); } } else { - u32 meter_count = dMeter2Info_getNowCount(); - if (mGameMode != GAME_MODE_1 && meter_count > mMeterCount) { + u8 meter_count_sp09 = dMeter2Info_getNowCount(); + if (mGameMode != GAME_MODE_1 && meter_count_sp09 > mMeterCount) { field_0x153c = true; } - mMeterCount = meter_count; + mMeterCount = meter_count_sp09; if (mRiverPathIdx == mPath.getEndIdx()) { - angle.x = 0x1000; - angle.y = -0x4000; - angle.z = current.angle.z; + angle_sp44.x = 0x1000; + angle_sp44.y = -0x4000; + angle_sp44.z = current.angle.z; } else { - angle.x = cLib_targetAngleX(&pos, ¤t.pos); - angle.y = cLib_targetAngleY(¤t.pos, &pos); - angle.z = current.angle.z; + angle_sp44.x = cLib_targetAngleX(&pos_sp94, ¤t.pos); + angle_sp44.y = cLib_targetAngleY(¤t.pos, &pos_sp94); + angle_sp44.z = current.angle.z; } - if (mGameMode == GAME_MODE_1 && ivar8 != mRiverPathIdx) { + if (mGameMode == GAME_MODE_1 && ivar8_sp20 != mRiverPathIdx) { createRuppi(); } } - cXyz vec = field_0x1500 - player->current.pos; - f32 target_speed = vec.abs(); - if (target_speed < daNpc_zrA_Param_c::m.mSwimSpeed) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed; + cXyz vec_sp58 = field_0x1500 - player_r26->current.pos; + f32 target_speed_f31 = vec_sp58.abs(); + if (target_speed_f31 < HIO_PARAM(this).mSwimSpeed) { + target_speed_f31 = HIO_PARAM(this).mSwimSpeed; } else { - target_speed *= 1.4f; + target_speed_f31 *= 1.4f; } - if ((player->current.pos - current.pos).absXZ() < 500.0f) { - angle.x += 0x1000; + if ((player_r26->current.pos - current.pos).absXZ() < 500.0f) { + angle_sp44.x += (s16)0x1000; } if (field_0x153c) { - if (target_speed < 3.0f * daNpc_zrA_Param_c::m.mSwimSpeed) { - target_speed = 3.0f * daNpc_zrA_Param_c::m.mSwimSpeed; + if (target_speed_f31 < 3.0f * HIO_PARAM(this).mSwimSpeed) { + target_speed_f31 = 3.0f * HIO_PARAM(this).mSwimSpeed; } - target_speed *= 1.2f; + target_speed_f31 *= 1.2f; } else if (mRiverPathIdx >= mPath.getIdx()) { - f32 player_dst = mPath.chkPassDst(mRiverPathIdx, player->current.pos); - f32 dst = mPath.chkPassDst(mRiverPathIdx, current.pos); - if (dst - player_dst > 5000.0f) { - target_speed = 0.0f; - } else if (dst - player_dst > 3500.0f) { - target_speed *= 0.4f; - } else if (dst - player_dst > 3000.0f) { - target_speed *= 0.8f; + f32 player_dst_f29 = mPath.chkPassDst(mRiverPathIdx, player_r26->current.pos); + f32 dst_f28 = mPath.chkPassDst(mRiverPathIdx, current.pos); + if (dst_f28 - player_dst_f29 > 5000.0f) { + target_speed_f31 = 0.0f; + } else if (dst_f28 - player_dst_f29 > 3500.0f) { + target_speed_f31 *= 0.4f; + } else if (dst_f28 - player_dst_f29 > 3000.0f) { + target_speed_f31 *= 0.8f; } - if (target_speed == 0.0f) { - angle.x = cLib_targetAngleX(&player->current.pos, ¤t.pos); - angle.y = cLib_targetAngleY(¤t.pos, &player->current.pos); + if (target_speed_f31 == 0.0f) { + angle_sp44.x = cLib_targetAngleX(&player_r26->current.pos, ¤t.pos); + angle_sp44.y = cLib_targetAngleY(¤t.pos, &player_r26->current.pos); } } - field_0x1500 = player->current.pos; - cLib_addCalc2(&mSwimSpeedF, target_speed, 0.25f, 4.0f); - calcSwimAngle(angle, mSwimAngleCalc, angle_scale, angle_step); - swim_speed.set(0.0f, 0.0f, mSwimSpeedF); - calcSwimPos(swim_speed); + field_0x1500 = player_r26->current.pos; + cLib_addCalc2(&mSwimSpeedF, target_speed_f31, sp28, sp24); + calcSwimAngle(angle_sp44, mSwimAngleCalc, angle_scale_r27, angle_step_r28); + swim_speed_sp88.set(0.0f, 0.0f, mSwimSpeedF); + calcSwimPos(swim_speed_sp88); - f32 play_speed = mpMorf->getPlaySpeed(); - if (target_speed != 0.0f) { - f32 target_play_speed = - cLib_minMaxLimit((mSwimSpeedF - vec.abs()) / 25.0f, 0.0f, 1.3f) + 0.7f; - cLib_addCalc2(&play_speed, target_play_speed, 0.2f, 0.05f); + f32 play_speed_sp14 = mpMorf->getPlaySpeed(); + if (target_speed_f31 != 0.0f) { + cLib_addCalc2(&play_speed_sp14, + cLib_minMaxLimit((mSwimSpeedF - vec_sp58.abs()) / 25.0f, 0.0f, 1.3f) + 0.7f, + 0.2f, 0.05f); } else { - cLib_addCalc2(&play_speed, 1.7f, 0.2f, 0.05f); + cLib_addCalc2(&play_speed_sp14, 1.7f, 0.2f, 0.05f); } - mpMorf->setPlaySpeed(play_speed); + mpMorf->setPlaySpeed(play_speed_sp14); if (!field_0x153c && mAcch.ChkWaterHit() - && current.pos.y > water_height - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > water_height - HIO_PARAM(this).mMinDepth) { - current.pos.y = water_height - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = water_height - HIO_PARAM(this).mMinDepth; } - calcBank(angle_step, angle_scale, angle.y, angle.z); - current.angle.z = angle.z; + calcBank(angle_step_r28, angle_scale_r27, angle_sp44.y, angle_sp44.z); + current.angle.z = angle_sp44.z; shape_angle = mCurAngle = current.angle; - break; } case 3: @@ -2040,7 +2040,7 @@ BOOL daNpc_zrA_c::swimRiverDescend(void* param_0) { */ BOOL daNpc_zrA_c::swimRiverDescend2(void* param_0) { cXyz pos, swim_speed; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; f32 water_height = mAcch.m_wtr.GetHeight(); switch (mMode) { @@ -2074,7 +2074,7 @@ BOOL daNpc_zrA_c::swimRiverDescend2(void* param_0) { setExpressionAnm(ANM_NONE, false); setMotion(MOT_FLOAT_B, -1.0f, false); mActionSelect = 0; - setAction(&waitRiverDescend); + setAction(&daNpc_zrA_c::waitRiverDescend); } } else if (dComIfGs_isSwitch(mSwitch1, fopAcM_GetRoomNo(this))) { mOrderEvtNo = EVT_AFTER_BLAST_ZRR; @@ -2082,16 +2082,16 @@ BOOL daNpc_zrA_c::swimRiverDescend2(void* param_0) { setExpressionAnm(ANM_NONE, false); setMotion(MOT_FLOAT_B, -1.0f, false); mActionSelect = 0; - setAction(&waitRiverDescend); + setAction(&daNpc_zrA_c::waitRiverDescend); } else { csXyz angle; - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); angle.x = cLib_targetAngleX(&vec, ¤t.pos); angle.y = cLib_targetAngleY(¤t.pos, &vec); angle.z = current.angle.z; - cLib_addCalc2(&mSwimSpeedF, 2.0f * daNpc_zrA_Param_c::m.mSwimSpeed, 0.25f, 4.0f); + cLib_addCalc2(&mSwimSpeedF, 2.0f * HIO_PARAM(this).mSwimSpeed, 0.25f, 4.0f); calcSwimAngle(angle, mSwimAngleCalc, 6, angle_step); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); @@ -2102,9 +2102,9 @@ BOOL daNpc_zrA_c::swimRiverDescend2(void* param_0) { mpMorf->setPlaySpeed(play_speed); if (mAcch.ChkWaterHit() - && current.pos.y > water_height - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > water_height - HIO_PARAM(this).mMinDepth) { - current.pos.y = water_height - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = water_height - HIO_PARAM(this).mMinDepth; } calcBank(angle_step, 6, angle.y, angle.z); @@ -2125,7 +2125,7 @@ BOOL daNpc_zrA_c::swimRiverDescend2(void* param_0) { /* 80B8601C-80B86440 00DBFC 0424+00 4/0 0/0 0/0 .text diveRiverDescend__11daNpc_zrA_cFPv */ BOOL daNpc_zrA_c::diveRiverDescend(void* param_0) { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed * 2; switch (mMode) { case 0: @@ -2143,8 +2143,8 @@ BOOL daNpc_zrA_c::diveRiverDescend(void* param_0) { // fallthrough case 2: { - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz pos; csXyz angle; mPath.getDstPos(current.pos, pos); @@ -2183,14 +2183,14 @@ BOOL daNpc_zrA_c::diveRiverDescend(void* param_0) { mOrderEvtNo = EVT_AFTER_BLAST_ZRR; mOrderNewEvt = true; mActionSelect = 0; - setAction(&waitRiverDescend); + setAction(&daNpc_zrA_c::waitRiverDescend); } else if (mBaseMotionAnm == ANM_SWIM_A || mBaseMotionAnm == ANM_SWIM_B) { if (mGameMode == GAME_MODE_1 && field_0x15c0 == 1) { mActionSelect = 6; - setAction(&swimRiverDescend2); + setAction(&daNpc_zrA_c::swimRiverDescend2); } else { mActionSelect = 1; - setAction(&swimRiverDescend); + setAction(&daNpc_zrA_c::swimRiverDescend); } } @@ -2205,11 +2205,10 @@ BOOL daNpc_zrA_c::diveRiverDescend(void* param_0) { } /* 80B86440-80B86A2C 00E020 05EC+00 2/0 0/0 0/0 .text swimGoalRiverDescend__11daNpc_zrA_cFPv */ -// NONMATCHING stack ordering BOOL daNpc_zrA_c::swimGoalRiverDescend(void* param_0) { daPy_py_c* player; cXyz pos, swim_speed; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; switch (mMode) { case 0: @@ -2225,14 +2224,14 @@ BOOL daNpc_zrA_c::swimGoalRiverDescend(void* param_0) { mSwimAngleCalc = current.angle; calcWaistAngleInit(); field_0x1500 = daPy_getPlayerActorClass()->current.pos; - mSwimSpeedF = daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = HIO_PARAM(this).mSwimSpeed; mMode = 2; // fallthrough case 2: player = daPy_getPlayerActorClass(); - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); if (player->current.pos.y < -14100.0f) { if (!daNpcF_chkEvtBit(0x60)) { mOrderEvtNo = EVT_THANKS_BLAST; @@ -2256,8 +2255,8 @@ BOOL daNpc_zrA_c::swimGoalRiverDescend(void* param_0) { if (mPath.getIdx() != mPath.getNextIdx()) { vec = field_0x1500 - player->current.pos; target_speed = vec.abs() * 1.2f; - if (target_speed < daNpc_zrA_Param_c::m.mSwimSpeed) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed; + if (target_speed < HIO_PARAM(this).mSwimSpeed) { + target_speed = HIO_PARAM(this).mSwimSpeed; } } else { target_speed = 0.0f; @@ -2301,7 +2300,7 @@ BOOL daNpc_zrA_c::swimGoalRiverDescend(void* param_0) { /* 80B86A2C-80B86D9C 00E60C 0370+00 2/0 0/0 0/0 .text returnRiverDescend__11daNpc_zrA_cFPv */ BOOL daNpc_zrA_c::returnRiverDescend(void* param_0) { cXyz pos, swim_speed; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; f32 swim_speed_scale = mSwimSpeedScale; switch (mMode) { @@ -2355,18 +2354,18 @@ BOOL daNpc_zrA_c::returnRiverDescend(void* param_0) { calcSwimAngle(angle, mSwimAngleCalc, 8, angle_step); } - cLib_addCalc2(&mSwimSpeedF, swim_speed_scale * daNpc_zrA_Param_c::m.mSwimSpeed, + cLib_addCalc2(&mSwimSpeedF, swim_speed_scale * HIO_PARAM(this).mSwimSpeed, 0.2f, 3.0f); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); if (mAcch.ChkWaterHit()) { - current.pos.y = mAcch.m_wtr.GetHeight() - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = mAcch.m_wtr.GetHeight() - HIO_PARAM(this).mMinDepth; } if (!bvar4) { f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, mSwimSpeedF / daNpc_zrA_Param_c::m.mSwimAnmRate, + cLib_addCalc2(&play_speed, mSwimSpeedF / HIO_PARAM(this).mSwimAnmRate, 0.2f, 0.1f); mpMorf->setPlaySpeed(play_speed); } @@ -2581,7 +2580,7 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { dEvent_manager_c& event_manager = dComIfGp_getEventManager(); BOOL ret = false; int prm = -1; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; f32 water_height = mAcch.m_wtr.GetHeight(); daPy_py_c* player = daPy_getPlayerActorClass(); cXyz player_pos = player->current.pos; @@ -2625,8 +2624,8 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { case 20: { mPath.onReverse(); mPath.setIdx(mPath.getEndIdx() - 1); - cXyz pos1(-77941.7f, -18800.0f - daNpc_zrA_Param_c::m.mMinDepth - 30.0f, 39645.3f); - cXyz pos2(-78941.7f, -18800.0f - daNpc_zrA_Param_c::m.mMinDepth - 30.0f, 39645.3f); + cXyz pos1(-77941.7f, -18800.0f - HIO_PARAM(this).mMinDepth - 30.0f, 39645.3f); + cXyz pos2(-78941.7f, -18800.0f - HIO_PARAM(this).mMinDepth - 30.0f, 39645.3f); current.pos = pos1; current.angle.y = cLib_targetAngleY(&pos1, &player_pos); setAngle(current.angle.y); @@ -2637,14 +2636,14 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { water_pos.y = water_y; } - cXyz offset(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa0); + cXyz offset(0.0f, 0.0f, HIO_PARAM(this).field_0xa0); csXyz angle(0, cLib_targetAngleY(&pos1, &pos2), 0); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::transM(offset); mDoMtx_stack_c::multVecZero(&field_0x159c[0]); field_0x159c[0] += water_pos; - offset.set(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa4); + offset.set(0.0f, 0.0f, HIO_PARAM(this).field_0xa4); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::transM(offset); mDoMtx_stack_c::multVecZero(&field_0x159c[1]); @@ -2711,8 +2710,8 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { mPath.getDstPos(current.pos, pos); cXyz vec = field_0x1500 - player->current.pos; target_speed = vec.abs() * 1.2f; - if (target_speed < daNpc_zrA_Param_c::m.mSwimSpeed) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed; + if (target_speed < HIO_PARAM(this).mSwimSpeed) { + target_speed = HIO_PARAM(this).mSwimSpeed; } } else { if ((field_0x1500 - player->current.pos).absXZ() < 5.0f) { @@ -2728,7 +2727,7 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { pos = vec3; } if ((player_pos - current.pos).absXZ() > 450.0f) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed * 1.5f * 1.5f; + target_speed = HIO_PARAM(this).mSwimSpeed * 1.5f * 1.5f; } else { target_speed = 15.0f; pos = player_pos; @@ -2760,9 +2759,9 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); if (mAcch.ChkWaterHit() - && current.pos.y > water_height - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > water_height - HIO_PARAM(this).mMinDepth) { - current.pos.y = water_height - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = water_height - HIO_PARAM(this).mMinDepth; } if ((field_0x1500 - player->current.pos).absXZ() < 10.0f @@ -2783,7 +2782,7 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { } } else { cLib_chaseAngleS(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), - daNpc_zrA_Param_c::m.mSwimAngleSpeed); + HIO_PARAM(this).mSwimAngleSpeed); setAngle(mCurAngle.y); } } @@ -2813,7 +2812,7 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { ret = true; mSwimAngleCalc = current.angle; mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; setLookMode(LOOK_NONE); } break; @@ -2826,9 +2825,9 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { break; case 50: { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz pos; csXyz angle; mPath.getDstPosDst2(current.pos, pos); @@ -2864,7 +2863,7 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { if (!calcWaistAngleCheck()) { calcWaistAngleInit(); mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; } cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); @@ -2892,8 +2891,8 @@ BOOL daNpc_zrA_c::ECut_thanksBlast(int i_staffID) { shape_angle = mCurAngle = current.angle; cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); - if (mAcch.ChkWaterHit() && current.pos.y > water_y - daNpc_zrA_Param_c::m.mMinDepth) { - current.pos.y = water_y - daNpc_zrA_Param_c::m.mMinDepth; + if (mAcch.ChkWaterHit() && current.pos.y > water_y - HIO_PARAM(this).mMinDepth) { + current.pos.y = water_y - HIO_PARAM(this).mMinDepth; } calcCanoeMove(true); if (cLib_calcTimer(&mEventTimer) == 0) { @@ -2915,7 +2914,7 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { dEvent_manager_c& event_manager = dComIfGp_getEventManager(); BOOL ret = false; int prm = -1; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; f32 water_height = mAcch.m_wtr.GetHeight(); daPy_py_c* player = daPy_getPlayerActorClass(); cXyz player_pos = player->current.pos; @@ -2955,8 +2954,8 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { case 20: { mPath.onReverse(); mPath.setIdx(mPath.getEndIdx() - 1); - cXyz pos1(-77941.7f, -18800.0f - daNpc_zrA_Param_c::m.mMinDepth - 30.0f, 39645.3f); - cXyz pos2(-78941.7f, -18800.0f - daNpc_zrA_Param_c::m.mMinDepth - 30.0f, 39645.3f); + cXyz pos1(-77941.7f, -18800.0f - HIO_PARAM(this).mMinDepth - 30.0f, 39645.3f); + cXyz pos2(-78941.7f, -18800.0f - HIO_PARAM(this).mMinDepth - 30.0f, 39645.3f); current.pos = pos1; current.angle.y = cLib_targetAngleY(&pos1, &player_pos); setAngle(current.angle.y); @@ -2967,14 +2966,14 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { water_pos.y = water_y; } - cXyz offset(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa0); + cXyz offset(0.0f, 0.0f, HIO_PARAM(this).field_0xa0); csXyz angle(0, cLib_targetAngleY(&pos1, &pos2), 0); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::transM(offset); mDoMtx_stack_c::multVecZero(&field_0x159c[0]); field_0x159c[0] += water_pos; - offset.set(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa4); + offset.set(0.0f, 0.0f, HIO_PARAM(this).field_0xa4); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::transM(offset); mDoMtx_stack_c::multVecZero(&field_0x159c[1]); @@ -3027,8 +3026,8 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { mPath.getDstPos(current.pos, pos); cXyz vec = field_0x1500 - player->current.pos; target_speed = vec.abs() * 1.2f; - if (target_speed < daNpc_zrA_Param_c::m.mSwimSpeed) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed; + if (target_speed < HIO_PARAM(this).mSwimSpeed) { + target_speed = HIO_PARAM(this).mSwimSpeed; } } else { if ((field_0x1500 - player->current.pos).absXZ() < 5.0f) { @@ -3044,7 +3043,7 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { pos = vec3; } if ((player_pos - current.pos).absXZ() > 450.0f) { - target_speed = daNpc_zrA_Param_c::m.mSwimSpeed * 1.5f * 1.5f; + target_speed = HIO_PARAM(this).mSwimSpeed * 1.5f * 1.5f; } else { target_speed = 15.0f; pos = player_pos; @@ -3076,9 +3075,9 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); if (mAcch.ChkWaterHit() - && current.pos.y > water_height - daNpc_zrA_Param_c::m.mMinDepth) + && current.pos.y > water_height - HIO_PARAM(this).mMinDepth) { - current.pos.y = water_height - daNpc_zrA_Param_c::m.mMinDepth; + current.pos.y = water_height - HIO_PARAM(this).mMinDepth; } if ((field_0x1500 - player->current.pos).absXZ() < 10.0f @@ -3099,7 +3098,7 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { } } else { cLib_chaseAngleS(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), - daNpc_zrA_Param_c::m.mSwimAngleSpeed); + HIO_PARAM(this).mSwimAngleSpeed); setAngle(mCurAngle.y); } } @@ -3131,16 +3130,16 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { ret = true; mSwimAngleCalc = current.angle; mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; setLookMode(LOOK_NONE); } } break; case 40: { - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; - cLib_chaseF(&mScaleFactor, daNpc_zrA_Param_c::m.mMaxScaleFactor, - (daNpc_zrA_Param_c::m.mMaxScaleFactor - 1.0f) / 30.0f); + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; + cLib_chaseF(&mScaleFactor, HIO_PARAM(this).mMaxScaleFactor, + (HIO_PARAM(this).mMaxScaleFactor - 1.0f) / 30.0f); cXyz pos; csXyz angle; mPath.getDstPosDst2(current.pos, pos); @@ -3176,7 +3175,7 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { if (!calcWaistAngleCheck()) { calcWaistAngleInit(); mSwimSpeedScale = 1.0f; - mSwimSpeedF = mSwimSpeedScale * daNpc_zrA_Param_c::m.mSwimSpeed; + mSwimSpeedF = mSwimSpeedScale * HIO_PARAM(this).mSwimSpeed; } cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); @@ -3204,8 +3203,8 @@ BOOL daNpc_zrA_c::ECut_resultAnnounce(int i_staffID) { shape_angle = mCurAngle = current.angle; cXyz swim_speed(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); - if (mAcch.ChkWaterHit() && current.pos.y > water_y - daNpc_zrA_Param_c::m.mMinDepth) { - current.pos.y = water_y - daNpc_zrA_Param_c::m.mMinDepth; + if (mAcch.ChkWaterHit() && current.pos.y > water_y - HIO_PARAM(this).mMinDepth) { + current.pos.y = water_y - HIO_PARAM(this).mMinDepth; } calcCanoeMove(true); if (cLib_calcTimer(&mEventTimer) == 0) { @@ -3236,7 +3235,7 @@ void daNpc_zrA_c::calcCanoeMove(BOOL param_0) { angle.y = cLib_targetAngleY(&water_pos, &field_0x159c[0]); angle.z = 0; - vec.set(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa0); + vec.set(0.0f, 0.0f, HIO_PARAM(this).field_0xa0); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::multVec(&vec, &field_0x159c[0]); field_0x159c[0] += water_pos; @@ -3247,7 +3246,7 @@ void daNpc_zrA_c::calcCanoeMove(BOOL param_0) { angle.x = cLib_targetAngleX(&field_0x159c[1], &field_0x159c[0]); angle.y = cLib_targetAngleY(&field_0x159c[0], &field_0x159c[1]); - vec.set(0.0f, 0.0f, daNpc_zrA_Param_c::m.field_0xa4); + vec.set(0.0f, 0.0f, HIO_PARAM(this).field_0xa4); mDoMtx_stack_c::ZXYrotS(angle); mDoMtx_stack_c::multVec(&vec, &field_0x159c[1]); field_0x159c[1] += field_0x159c[0]; @@ -3258,7 +3257,7 @@ void daNpc_zrA_c::calcCanoeMove(BOOL param_0) { if (param_0) { f32 fvar2 = (water_pos - field_0x159c[2]).abs(); (water_pos - field_0x159c[1]).abs(); - if (fvar2 > daNpc_zrA_Param_c::m.field_0xa0 + daNpc_zrA_Param_c::m.field_0xa4) + if (fvar2 > HIO_PARAM(this).field_0xa0 + HIO_PARAM(this).field_0xa4) { cLib_addCalcPos2(&field_0x159c[2], field_0x159c[1], 0.2f, mSwimSpeedF * 1.2f); if (fopAcM_getWaterY(&field_0x159c[2], &water_y)) { @@ -3305,7 +3304,7 @@ BOOL daNpc_zrA_c::tobiSearch(void* param_0) { zra_mark = (daObjZraMark_c*)fpcM_Search(s_subMark, this); if (zra_mark != NULL) { zra_mark->entryPointer(this); - setAction(&tobiWait); + setAction(&daNpc_zrA_c::tobiWait); } break; @@ -3331,7 +3330,7 @@ BOOL daNpc_zrA_c::tobiWait(void* param_0) { case 2: if (mCcCyl.ChkTgHit() || mBlastFlag) { - setAction(&tobikomi1); + setAction(&daNpc_zrA_c::tobikomi1); } break; @@ -3360,7 +3359,7 @@ BOOL daNpc_zrA_c::tobikomi1(void* param_0) { mDoMtx_stack_c::multVec(&vec, &vec); current.pos += vec; old.pos = current.pos; - setAction(&tobikomi2); + setAction(&daNpc_zrA_c::tobikomi2); } else { s16 angle_y = home.angle.y; if (getAngleNoFromParam() == 1) { @@ -3409,7 +3408,7 @@ BOOL daNpc_zrA_c::tobikomi2(void* param_0) { mCreatureSound.startCreatureSound(Z2SE_ZRA_DIVE_SPLASH, 0, -1); setExpression(EXPR_NONE, -1.0f); setMotion(MOT_TOBIKOMI_E, -1.0f, false); - setAction(&tobikomi3); + setAction(&daNpc_zrA_c::tobikomi3); break; } } @@ -3434,16 +3433,16 @@ BOOL daNpc_zrA_c::tobikomi3(void* param_0) { // fallthrough case 2: { - cXyz vec(0.0f, 0.0f, daNpc_zrA_Param_c::m.mSwimSpeed * 1.5f); + cXyz vec(0.0f, 0.0f, HIO_PARAM(this).mSwimSpeed * 1.5f); mDoMtx_stack_c::YrotS(mCurAngle.y); mDoMtx_stack_c::multVec(&vec, &vec); cLib_chasePos(&mSwimSpeed, vec, 25.0f); current.pos += mSwimSpeed; if (mBaseMotionAnm == ANM_SWIM_A) { if (mBlastFlag) { - setAction(&tobiJump); + setAction(&daNpc_zrA_c::tobiJump); } else { - setAction(&tobiEnd); + setAction(&daNpc_zrA_c::tobiEnd); } } break; @@ -3461,7 +3460,7 @@ BOOL daNpc_zrA_c::tobiJump(void* param_0) { cXyz swim_speed; csXyz angle; f32 water_y; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed * 2; s16 angle_scale = 4; switch (mMode) { @@ -3501,8 +3500,8 @@ BOOL daNpc_zrA_c::tobiJump(void* param_0) { mIsAboveWater = false; } - if (current.pos.y <= water_y - daNpc_zrA_Param_c::m.mMinDepth) { - setAction(&tobiEnd); + if (current.pos.y <= water_y - HIO_PARAM(this).mMinDepth) { + setAction(&daNpc_zrA_c::tobiEnd); mSwimSpeedF = mSwimSpeed.absXZ(); } } @@ -3514,7 +3513,7 @@ BOOL daNpc_zrA_c::tobiJump(void* param_0) { angle.z = current.angle.z; if (fopAcM_getWaterY(¤t.pos, &water_y)) { - angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed * 2; + angle_step = HIO_PARAM(this).mSwimAngleSpeed * 2; angle_scale = 2; if (!(head_pos.y < water_y)) { if (!mIsAboveWater) { @@ -3536,11 +3535,11 @@ BOOL daNpc_zrA_c::tobiJump(void* param_0) { } calcSwimAngle(angle, mSwimAngleCalc, angle_scale, angle_step); - cLib_addCalc2(&mSwimSpeedF, 2.0f * daNpc_zrA_Param_c::m.mSwimSpeed, 0.7f, 10.0f); + cLib_addCalc2(&mSwimSpeedF, 2.0f * HIO_PARAM(this).mSwimSpeed, 0.7f, 10.0f); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, mSwimSpeedF / daNpc_zrA_Param_c::m.mSwimAnmRate, 0.2f, 0.1f); + cLib_addCalc2(&play_speed, mSwimSpeedF / HIO_PARAM(this).mSwimAnmRate, 0.2f, 0.1f); mpMorf->setPlaySpeed(play_speed); shape_angle = mCurAngle = current.angle; } @@ -3558,7 +3557,7 @@ BOOL daNpc_zrA_c::tobiJump(void* param_0) { /* 80B8B1FC-80B8B3A0 012DDC 01A4+00 3/0 0/0 0/0 .text tobiEnd__11daNpc_zrA_cFPv */ BOOL daNpc_zrA_c::tobiEnd(void* param_0) { cXyz swim_speed; - s16 angle_step = daNpc_zrA_Param_c::m.mSwimAngleSpeed; + s16 angle_step = HIO_PARAM(this).mSwimAngleSpeed; switch (mMode) { case 0: @@ -3579,12 +3578,12 @@ BOOL daNpc_zrA_c::tobiEnd(void* param_0) { angle.y = current.angle.y; angle.z = current.angle.z; calcSwimAngle(angle, mSwimAngleCalc, 8, angle_step); - cLib_chaseF(&mSwimSpeedF, daNpc_zrA_Param_c::m.mSwimSpeed, - daNpc_zrA_Param_c::m.mSwimSpeed / 3.0f); + cLib_chaseF(&mSwimSpeedF, HIO_PARAM(this).mSwimSpeed, + HIO_PARAM(this).mSwimSpeed / 3.0f); swim_speed.set(0.0f, 0.0f, mSwimSpeedF); calcSwimPos(swim_speed); f32 play_speed = mpMorf->getPlaySpeed(); - cLib_addCalc2(&play_speed, mSwimSpeedF / daNpc_zrA_Param_c::m.mSwimAnmRate, 0.2f, 0.1f); + cLib_addCalc2(&play_speed, mSwimSpeedF / HIO_PARAM(this).mSwimAnmRate, 0.2f, 0.1f); mpMorf->setPlaySpeed(play_speed); calcBank(angle_step, 8, angle.y, angle.z); current.angle.z = angle.z; @@ -3754,7 +3753,7 @@ BOOL daNpc_zrA_c::ECut_searchPrince1(int i_staffID) { if (mBaseMotionAnm == ANM_SWIM_A) { ret = true; } - cXyz swim_speed(0.0f, 0.0f, daNpc_zrA_Param_c::m.mSwimSpeed); + cXyz swim_speed(0.0f, 0.0f, HIO_PARAM(this).mSwimSpeed); mDoMtx_stack_c::YrotS(mCurAngle.y); mDoMtx_stack_c::multVec(&swim_speed, &swim_speed); cLib_chasePos(&mSwimSpeed, swim_speed, 25.0f); @@ -3764,15 +3763,15 @@ BOOL daNpc_zrA_c::ECut_searchPrince1(int i_staffID) { case 50: { cXyz pos(-4807.7f, -207.444f, 5109.854f); - cXyz swim_speed(0.0f, 0.0f, daNpc_zrA_Param_c::m.mSwimSpeed); + cXyz swim_speed(0.0f, 0.0f, HIO_PARAM(this).mSwimSpeed); csXyz angle; angle.x = cLib_targetAngleX(&pos, ¤t.pos); angle.y = cLib_targetAngleY(¤t.pos, &pos); angle.z = current.angle.z; - mpMorf->setPlaySpeed(daNpc_zrA_Param_c::m.mSwimSpeed / daNpc_zrA_Param_c::m.mSwimAnmRate); - calcSwimAngle(angle, mSwimAngleCalc, 23, daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2); + mpMorf->setPlaySpeed(HIO_PARAM(this).mSwimSpeed / HIO_PARAM(this).mSwimAnmRate); + calcSwimAngle(angle, mSwimAngleCalc, 23, HIO_PARAM(this).mSwimAngleSpeed / 2); calcSwimPos(swim_speed); - calcBank(daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2, 16, angle.y, angle.z); + calcBank(HIO_PARAM(this).mSwimAngleSpeed / 2, 16, angle.y, angle.z); current.angle.z = angle.z; shape_angle = mCurAngle = current.angle; if ((pos - current.pos).absXZ() < 100.0f) { @@ -3888,7 +3887,7 @@ BOOL daNpc_zrA_c::ECut_searchPrince2(int i_staffID) { if (mBaseMotionAnm == ANM_SWIM_A) { ret = true; } - cXyz swim_speed(0.0f, 0.0f, daNpc_zrA_Param_c::m.mSwimSpeed); + cXyz swim_speed(0.0f, 0.0f, HIO_PARAM(this).mSwimSpeed); mDoMtx_stack_c::YrotS(mCurAngle.y); mDoMtx_stack_c::multVec(&swim_speed, &swim_speed); cLib_chasePos(&mSwimSpeed, swim_speed, 25.0f); @@ -3898,15 +3897,15 @@ BOOL daNpc_zrA_c::ECut_searchPrince2(int i_staffID) { case 50: { cXyz pos(-4807.7f, -207.444f, 5109.854f); - cXyz swim_speed(0.0f, 0.0f, daNpc_zrA_Param_c::m.mSwimSpeed); + cXyz swim_speed(0.0f, 0.0f, HIO_PARAM(this).mSwimSpeed); csXyz angle; angle.x = cLib_targetAngleX(&pos, ¤t.pos); angle.y = cLib_targetAngleY(¤t.pos, &pos); angle.z = current.angle.z; - mpMorf->setPlaySpeed(daNpc_zrA_Param_c::m.mSwimSpeed / daNpc_zrA_Param_c::m.mSwimAnmRate); - calcSwimAngle(angle, mSwimAngleCalc, 23, daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2); + mpMorf->setPlaySpeed(HIO_PARAM(this).mSwimSpeed / HIO_PARAM(this).mSwimAnmRate); + calcSwimAngle(angle, mSwimAngleCalc, 23, HIO_PARAM(this).mSwimAngleSpeed / 2); calcSwimPos(swim_speed); - calcBank(daNpc_zrA_Param_c::m.mSwimAngleSpeed / 2, 16, angle.y, angle.z); + calcBank(HIO_PARAM(this).mSwimAngleSpeed / 2, 16, angle.y, angle.z); current.angle.z = angle.z; shape_angle = mCurAngle = current.angle; if ((pos - current.pos).absXZ() < 100.0f) { diff --git a/src/d/actor/d_a_obj_toby.cpp b/src/d/actor/d_a_obj_toby.cpp index ccc796cf34..ac5eef23f0 100644 --- a/src/d/actor/d_a_obj_toby.cpp +++ b/src/d/actor/d_a_obj_toby.cpp @@ -17,8 +17,6 @@ #include "d/d_debug_viewer.h" #endif -#include "dol2asm.h" - /* 80D156D4-80D15794 000000 00C0+00 1/1 0/0 0/0 .data r05yuka_image */ static s8 r05yuka_image[192] = { 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,