summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-12-05 21:37:17 -0500
committerGitHub <noreply@github.com>2025-12-05 18:37:17 -0800
commite6b1f3a4f2ffd7403d4949d0875f7827cd2846f2 (patch)
tree6f19b493135d0dcc84ef06f64c8d4bd570885b0b
parent4e4d89eab6a808b3df0fcb876bcfdc946e9f4a14 (diff)
d_a_e_mk debug work + documentation (#2913)
* initial work * documentation
-rw-r--r--include/d/actor/d_a_e_mk.h159
-rw-r--r--include/d/actor/d_a_e_mk_bo.h5
-rw-r--r--src/d/actor/d_a_e_mk.cpp3279
-rw-r--r--src/d/actor/d_a_e_mk_bo.cpp98
4 files changed, 1818 insertions, 1723 deletions
diff --git a/include/d/actor/d_a_e_mk.h b/include/d/actor/d_a_e_mk.h
index 9bdb6a0b68..f9c5c2abd7 100644
--- a/include/d/actor/d_a_e_mk.h
+++ b/include/d/actor/d_a_e_mk.h
@@ -15,7 +15,8 @@
*
* @details
*
- */
+*/
+
class e_mk_class {
public:
enum e_mk_ACTION {
@@ -30,98 +31,102 @@ public:
ACT_R04_DEMO = 35,
};
- /* 0x000 */ fopEn_enemy_c enemy;
- /* 0x5AC */ request_of_phase_process_class mPhase;
- /* 0x5B4 */ s16 mMode;
- /* 0x5B6 */ u8 mParam;
- /* 0x5B7 */ u8 field_0x5b7;
- /* 0x5B8 */ cXyz field_0x5b8;
+ enum Demo_Mode {
+ /* 0x0 */ DEMO_MODE_NONE,
+ /* 0x1 */ DEMO_MODE_START,
+ /* 0x2 */ DEMO_MODE_END,
+ /* 0x3 */ DEMO_MODE_R04,
+ /* 0x4 */ DEMO_MODE_BOHIT,
+ /* 0xA */ DEMO_MODE_FINISH = 0xA,
+ };
+
+ /* 0x000 */ fopEn_enemy_c actor;
+ /* 0x5AC */ request_of_phase_process_class phase;
+ /* 0x5B4 */ s16 mode;
+ /* 0x5B6 */ u8 arg0;
+ /* 0x5B8 */ cXyz posTarget;
/* 0x5C4 */ u8 field_0x5c4[0x5c8 - 0x5c4];
- /* 0x5C8 */ mDoExt_McaMorfSO* mpModelMorf;
- /* 0x5CC */ int mAnm;
- /* 0x5D0 */ mDoExt_btpAnm* mBtp;
+ /* 0x5C8 */ mDoExt_McaMorfSO* anmP;
+ /* 0x5CC */ int anmNo;
+ /* 0x5D0 */ mDoExt_btpAnm* btpP;
/* 0x5D4 */ s16 field_0x5d4;
- /* 0x5D8 */ f32 field_0x5d8;
- /* 0x5DC */ mDoExt_McaMorf* mpCrownModelMorf;
- /* 0x5E0 */ s8 field_0x5e0;
- /* 0x5E4 */ cXyz field_0x5e4;
- /* 0x5F0 */ csXyz field_0x5f0;
- /* 0x5F6 */ u8 field_0x5f6[0x5fc - 0x5f6];
+ /* 0x5D8 */ f32 btpFrame;
+ /* 0x5DC */ mDoExt_McaMorf* crownAnmP;
+ /* 0x5E0 */ s8 unkFlag1;
+ /* 0x5E4 */ cXyz crownPos;
+ /* 0x5F0 */ csXyz unkRotation;
+ /* 0x5F6 */ csXyz field_0x5f6;
/* 0x5FC */ f32 field_0x5fc;
/* 0x600 */ f32 field_0x600;
/* 0x604 */ f32 field_0x604;
- /* 0x608 */ J3DModel* mpBoomerangModel;
- /* 0x60C */ s8 field_0x60c;
- /* 0x60D */ s8 field_0x60d;
- /* 0x60E */ s8 field_0x60e;
- /* 0x60F */ u8 field_0x60f;
- /* 0x610 */ Z2CreatureEnemy mSound;
+ /* 0x608 */ J3DModel* boomerangModelP;
+ /* 0x60C */ s8 crownStatus;
+ /* 0x60D */ s8 boomerangStatus;
+ /* 0x60E */ s8 btpFrameFlag;
+ /* 0x610 */ Z2CreatureEnemy sound;
/* 0x6B4 */ s16 field_0x6b4;
- /* 0x6B6 */ s16 mAction;
- /* 0x6B8 */ f32 mDistToPlayer;
- /* 0x6BC */ s16 mAngleToPlayer;
- /* 0x6BE */ s8 field_0x6be;
- /* 0x6BF */ u8 field_0x6bf;
- /* 0x6C0 */ cXyz field_0x6c0;
- /* 0x6CC */ cXyz field_0x6cc;
- /* 0x6D8 */ f32 field_0x6d8;
- /* 0x6DC */ cXyz field_0x6dc;
- /* 0x6E8 */ daPillar_c* mPillar;
- /* 0x6EC */ daPillar_c* mHasira;
- /* 0x6F0 */ u32 mShadowKey1;
- /* 0x6F4 */ u32 mShadowKey2;
- /* 0x6F8 */ s8 field_0x6f8;
- /* 0x6F9 */ u8 field_0x6f9;
- /* 0x6FA */ s16 field_0x6fa;
- /* 0x6FC */ s16 field_0x6fc[4];
- /* 0x704 */ s16 field_0x704;
- /* 0x706 */ s8 field_0x706;
- /* 0x707 */ s8 field_0x707;
- /* 0x708 */ fpc_ProcID field_0x708;
- /* 0x70C */ e_db_class* field_0x70c;
- /* 0x710 */ fpc_ProcID mBabaChildID;
- /* 0x714 */ fpc_ProcID mBabaChildID2;
- /* 0x718 */ s8 field_0x718;
- /* 0x719 */ s8 field_0x719;
- /* 0x71A */ s8 field_0x71a;
- /* 0x71B */ s8 field_0x71b;
- /* 0x71C */ s8 field_0x71c;
- /* 0x71D */ s8 field_0x71d;
- /* 0x71E */ s8 field_0x71e;
- /* 0x71F */ u8 field_0x71f;
- /* 0x720 */ dBgS_AcchCir mAcchCir;
- /* 0x760 */ dBgS_ObjAcch mAcch;
- /* 0x938 */ dCcU_AtInfo mAtInfo;
- /* 0x95C */ dCcD_Stts field_0x95c;
- /* 0x998 */ dCcD_Sph field_0x998;
- /* 0xAD0 */ dCcD_Sph field_0xad0;
+ /* 0x6B6 */ s16 action;
+ /* 0x6B8 */ f32 distToPl;
+ /* 0x6BC */ s16 angleToPl;
+ /* 0x6BE */ s8 unkFlag2;
+ /* 0x6C0 */ cXyz prevPos;
+ /* 0x6CC */ cXyz prevPosTarget;
+ /* 0x6D8 */ f32 PosYTransOffset;
+ /* 0x6DC */ cXyz posTargetStep;
+ /* 0x6E8 */ daPillar_c* prevHasira;
+ /* 0x6EC */ daPillar_c* hasira;
+ /* 0x6F0 */ u32 shadowKey1;
+ /* 0x6F4 */ u32 shadowKey2;
+ /* 0x6F8 */ s8 unkFlag3;
+ /* 0x6FA */ s16 unkCounter1;
+ /* 0x6FC */ s16 timer[4];
+ /* 0x704 */ s16 invulnerabilityTimer;
+ /* 0x706 */ s8 tubaTimer;
+ /* 0x707 */ s8 unkFlag4;
+ /* 0x708 */ fpc_ProcID boomerangId;
+ /* 0x70C */ e_db_class* db;
+ /* 0x710 */ fpc_ProcID dbId1;
+ /* 0x714 */ fpc_ProcID dbId2;
+ /* 0x718 */ s8 unkFlag5;
+ /* 0x719 */ s8 unkCounter2;
+ /* 0x71A */ s8 unkTimer1;
+ /* 0x71B */ s8 setSmokeFlag;
+ /* 0x71C */ s8 unkCounter3;
+ /* 0x71D */ s8 firstHasiraFlag;
+ /* 0x71E */ s8 demoHasiraFlag;
+ /* 0x720 */ dBgS_AcchCir acchcir;
+ /* 0x760 */ dBgS_ObjAcch acch;
+ /* 0x938 */ dCcU_AtInfo atInfo;
+ /* 0x95C */ dCcD_Stts stts;
+ /* 0x998 */ dCcD_Sph sph;
+ /* 0xAD0 */ dCcD_Sph tgSph;
/* 0xC08 */ u32 field_0xc08;
/* 0xC0C */ u32 field_0xc0c;
/* 0xC10 */ u32 field_0xc10;
/* 0xC14 */ u32 field_0xc14;
- /* 0xC18 */ u32 field_0xc18[2];
- /* 0xC20 */ u32 field_0xc20[4];
- /* 0xC30 */ s16 field_0xc30;
- /* 0xC32 */ s16 mDemoMode;
- /* 0xC34 */ s16 mDemoCamTimer;
- /* 0xC38 */ cXyz mCamEye;
- /* 0xC44 */ cXyz mCamCenter;
- /* 0xC50 */ cXyz field_0xc50;
- /* 0xC5C */ cXyz field_0xc5c;
- /* 0xC68 */ cXyz field_0xc68;
- /* 0xC74 */ cXyz field_0xc74;
- /* 0xC80 */ f32 mDemoCamFovy;
- /* 0xC84 */ f32 field_0xc84;
- /* 0xC88 */ f32 field_0xc88;
+ /* 0xC18 */ u32 boEno1Prtcls[2];
+ /* 0xC20 */ u32 boEno0Prtcls[4];
+ /* 0xC30 */ s16 demoMode;
+ /* 0xC32 */ s16 demoSubMode;
+ /* 0xC34 */ s16 demoCamCounter;
+ /* 0xC38 */ cXyz camEye;
+ /* 0xC44 */ cXyz camCenter;
+ /* 0xC50 */ cXyz camEyeTarget;
+ /* 0xC5C */ cXyz camCenterTarget;
+ /* 0xC68 */ cXyz distToCamEyeTarget;
+ /* 0xC74 */ cXyz distToCamCenterTarget;
+ /* 0xC80 */ f32 demoCamFovy;
+ /* 0xC84 */ f32 camStepScale1;
+ /* 0xC88 */ f32 camStepScale2;
/* 0xC8C */ f32 field_0xc8c;
/* 0xC90 */ f32 field_0xc90;
/* 0xC94 */ u8 field_0xc94[0xc98 - 0xc94];
/* 0xC98 */ f32 field_0xc98;
/* 0xC9C */ f32 field_0xc9c;
- /* 0xCA0 */ s16 field_0xca0;
- /* 0xCA4 */ dMsgFlow_c mMsgFlow;
+ /* 0xCA0 */ s16 prevPlShapeAngle;
+ /* 0xCA4 */ dMsgFlow_c msgFlow;
/* 0xCF0 */ u8 field_0xcf0[0xcf5 - 0xcf0];
- /* 0xCF5 */ u8 field_0xcf5;
+ /* 0xCF5 */ u8 hioInit;
};
STATIC_ASSERT(sizeof(e_mk_class) == 0xcf8);
diff --git a/include/d/actor/d_a_e_mk_bo.h b/include/d/actor/d_a_e_mk_bo.h
index b532df2e23..b53fe1c904 100644
--- a/include/d/actor/d_a_e_mk_bo.h
+++ b/include/d/actor/d_a_e_mk_bo.h
@@ -12,7 +12,8 @@
*
* @details
*
- */
+*/
+
class e_mk_bo_class {
public:
/* 0x000 */ fopEn_enemy_c enemy;
@@ -21,7 +22,7 @@ public:
/* 0x5B8 */ Z2SoundObjSimple sound;
/* 0x5D8 */ s16 counter;
/* 0x5DA */ s16 action;
- /* 0x5DC */ s16 field_0x5dc;
+ /* 0x5DC */ s16 mode;
/* 0x5E0 */ cXyz field_0x5e0;
/* 0x5EC */ s16 field_0x5ec;
/* 0x5EE */ s16 field_0x5ee;
diff --git a/src/d/actor/d_a_e_mk.cpp b/src/d/actor/d_a_e_mk.cpp
index 0abd2cd7c1..4f2b71e450 100644
--- a/src/d/actor/d_a_e_mk.cpp
+++ b/src/d/actor/d_a_e_mk.cpp
@@ -6,11 +6,11 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_e_mk.h"
+#include "..\assets\GZ2E01\res\Object\E_mk.h"
#include "d/d_cc_d.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_obj_pillar.h"
#include "d/actor/d_a_e_db.h"
-#include "d/actor/d_a_e_db_leaf.h"
#include "d/actor/d_a_player.h"
#include "d/d_s_play.h"
#include "d/actor/d_a_npc_ks.h"
@@ -22,87 +22,107 @@
class daE_MK_HIO_c : public JORReflexible {
public:
- daE_MK_HIO_c();
virtual ~daE_MK_HIO_c() {}
+ daE_MK_HIO_c();
void genMessage(JORMContext*);
- /* 0x04 */ s8 field_0x4;
- /* 0x08 */ f32 mSize;
- /* 0x0C */ f32 mBoomerangRatio;
- /* 0x10 */ f32 mPlayerThrowDistMax;
- /* 0x14 */ u8 mHaltAction;
- /* 0x18 */ Vec mCrownPosAdjust;
+ /* 0x04 */ s8 no;
+ /* 0x08 */ f32 size;
+ /* 0x0C */ f32 boomerang_ratio;
+ /* 0x10 */ f32 pl_throw_dist_max;
+ /* 0x14 */ u8 halt_action;
+ /* 0x18 */ Vec crown_pos_adjust;
};
daE_MK_HIO_c::daE_MK_HIO_c() {
- field_0x4 = -1;
- mSize = 1.3f;
- mBoomerangRatio = 1.0f;
- mPlayerThrowDistMax = 1800.0f;
- mHaltAction = 0;
- mCrownPosAdjust.x = 0.0f;
- mCrownPosAdjust.y = 0.0f;
- mCrownPosAdjust.z = 0.0f;
+ no = -1;
+ size = 1.3f;
+ boomerang_ratio = 1.0f;
+ pl_throw_dist_max = 1800.0f;
+ halt_action = 0;
+ crown_pos_adjust.x = 0.0f;
+ crown_pos_adjust.y = 0.0f;
+ crown_pos_adjust.z = 0.0f;
}
+#if DEBUG
+void daE_MK_HIO_c::genMessage(JORMContext* ctx) {
+ ctx->genLabel(" ブーメラン猿", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider("基本サイズ", &size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider("ブーメラン比率", &boomerang_ratio, 0.0f, 2.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider("PL投max距離", &pl_throw_dist_max, 0.0f, 4000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genCheckBox("動作停止", &halt_action, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genLabel("王冠位置補正", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider(" X", &crown_pos_adjust.x, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider(" Y", &crown_pos_adjust.y, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ ctx->genSlider(" Z", &crown_pos_adjust.z, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+}
+#endif
+
static void anm_init(e_mk_class* i_this, int i_index, f32 i_morf, u8 i_attr, f32 i_rate) {
- i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index),
+ i_this->anmP->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index),
i_attr, i_morf, i_rate, 0.0f, -1.0f);
- i_this->mAnm = i_index;
+ i_this->anmNo = i_index;
}
static void ok_anm_init(e_mk_class* i_this, int i_index, f32 i_morf, u8 i_mode, f32 i_speed) {
- i_this->mpCrownModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index),
+ i_this->crownAnmP->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mk", i_index),
i_mode, i_morf, i_speed, 0.0f, -1.0f, NULL);
}
static int daE_MK_Draw(e_mk_class* i_this) {
- J3DModel* model_p = i_this->mpModelMorf->getModel();
- g_env_light.settingTevStruct(0, &i_this->enemy.current.pos, &i_this->enemy.tevStr);
- g_env_light.setLightTevColorType_MAJI(model_p, &i_this->enemy.tevStr);
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ J3DModel* model_p = i_this->anmP->getModel();
+ g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr);
+ g_env_light.setLightTevColorType_MAJI(model_p, &actor->tevStr);
J3DModelData* i_modelData = model_p->getModelData();
- i_this->mBtp->entry(i_modelData);
- i_this->mpModelMorf->entryDL();
-
- cXyz sp38;
- if (i_this->field_0x6f8 != 0) {
- sp38.set(i_this->enemy.current.pos.x, i_this->enemy.current.pos.y + 50.0f, i_this->enemy.current.pos.z);
- i_this->mShadowKey1 = dComIfGd_setShadow(i_this->mShadowKey1, 1, model_p, &sp38,
- 1200.0f, 0.0f, i_this->enemy.current.pos.y,
- i_this->mAcch.GetGroundH(), i_this->mAcch.m_gnd,
- &i_this->enemy.tevStr, 0, 1.0f,
+ i_this->btpP->entry(i_modelData);
+ i_this->anmP->entryDL();
+
+ cXyz pos;
+ if (i_this->unkFlag3 != 0) {
+ pos.set(actor->current.pos.x, actor->current.pos.y + 50.0f + BREG_F(18), actor->current.pos.z);
+ i_this->shadowKey1 = dComIfGd_setShadow(i_this->shadowKey1, 1, model_p, &pos,
+ BREG_F(19) + 1200.0f, 0.0f, actor->current.pos.y,
+ i_this->acch.GetGroundH(), i_this->acch.m_gnd,
+ &i_this->actor.tevStr, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
}
- if (i_this->field_0x60c != 0) {
- model_p = i_this->mpCrownModelMorf->getModel();
- g_env_light.setLightTevColorType_MAJI(model_p, &i_this->enemy.tevStr);
- i_this->mpCrownModelMorf->entryDL();
- if (i_this->field_0x5e0 != 0) {
- sp38.set(i_this->field_0x5e4.x, i_this->enemy.current.pos.y + 50.0f, i_this->field_0x5e4.z);
- i_this->mShadowKey2 = dComIfGd_setShadow(i_this->mShadowKey2, 1, i_this->mpCrownModelMorf->getModel(),
- &sp38, 500.0f, 0.0f, i_this->enemy.current.pos.y,
- i_this->mAcch.GetGroundH(), i_this->mAcch.m_gnd,
- &i_this->enemy.tevStr, 0, 1.0f,
+ if (i_this->crownStatus != 0) {
+ model_p = i_this->crownAnmP->getModel();
+ g_env_light.setLightTevColorType_MAJI(model_p, &actor->tevStr);
+ i_this->crownAnmP->entryDL();
+ if (i_this->unkFlag1 != 0) {
+ pos.set(i_this->crownPos.x, actor->current.pos.y + 50.0f + BREG_F(18), i_this->crownPos.z);
+ i_this->shadowKey2 = dComIfGd_setShadow(i_this->shadowKey2, 1, i_this->crownAnmP->getModel(),
+ &pos, BREG_F(19) + 500.0f, 0.0f, actor->current.pos.y,
+ i_this->acch.GetGroundH(), i_this->acch.m_gnd,
+ &i_this->actor.tevStr, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
}
}
- if (i_this->field_0x60d != 0) {
- g_env_light.setLightTevColorType_MAJI(i_this->mpBoomerangModel, &i_this->enemy.tevStr);
- mDoExt_modelUpdateDL(i_this->mpBoomerangModel);
+ if (i_this->boomerangStatus != 0) {
+ g_env_light.setLightTevColorType_MAJI(i_this->boomerangModelP, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->boomerangModelP);
}
return 1;
}
static void* s_obj_delete(void* i_actor, void* i_data) {
+ i_data;
+
if (fopAcM_IsActor(i_actor)) {
- if (fopAcM_GetName(i_actor) == PROC_E_DB) {
- static_cast<e_db_class*>(i_actor)->enemy.health = 1000;
- } else if (fopAcM_GetName(i_actor) == PROC_E_DB_LEAF) {
- fopAcM_delete(static_cast<e_db_leaf_class*>(i_actor));
+ fopAc_ac_c* actor = (fopAc_ac_c*)i_actor;
+ if (fopAcM_GetName(actor) == PROC_E_DB) {
+ actor->health = 1000;
+ } else if (fopAcM_GetName(actor) == PROC_E_DB_LEAF) {
+ fopAcM_delete(actor);
}
}
@@ -121,7 +141,7 @@ static cXyz STAGE_CENTER_POS;
static s16 STAGE_ANGLE_Y;
/* 8071CB0A 0001+00 .bss */
-u8 lbl_210_bss_AA;
+u8 l_initHIO;
static daE_MK_HIO_c l_HIO;
@@ -130,6 +150,8 @@ static void* target_info[20];
static int target_info_count;
static void* s_h_sub(void* i_actor, void* i_data) {
+ i_data;
+
if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_Obj_Pillar) && target_info_count < 20) {
target_info[target_info_count] = (daPillar_c*)i_actor;
target_info_count++;
@@ -139,6 +161,10 @@ static void* s_h_sub(void* i_actor, void* i_data) {
}
static daPillar_c* search_hasira(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ daPillar_c* pillar_p;
+ daPillar_c* rv;
+
target_info_count = 0;
for (int i = 0; i < 20; i++) {
target_info[i] = NULL;
@@ -146,28 +172,28 @@ static daPillar_c* search_hasira(e_mk_class* i_this) {
fpcM_Search(s_h_sub, i_this);
- if (i_this->field_0x71d == 0) {
- i_this->field_0x71d++;
- return (daPillar_c*)target_info[5];
+ if (i_this->firstHasiraFlag == 0) {
+ i_this->firstHasiraFlag++;
+ return (daPillar_c*)target_info[TREG_S(7) + 5];
}
- f32 fVar1 = 1500.0f;
+ f32 dist = TREG_F(12) + 1500.0f;
+ s16 angle = 0x7000; // 157.5°
if (target_info_count != 0) {
- cXyz sp44;
- daPillar_c* pPillar;
- daPillar_c* rv = NULL;
+ cXyz pos_delta;
+ rv = NULL;
int iVar1 = 0;
- int i = 0;
- while (i < target_info_count) {
- pPillar = (daPillar_c*)target_info[i];
- sp44 = pPillar->current.pos - i_this->enemy.current.pos;
- f32 fVar2 = sp44.abs();
- if (fVar2 > 700.0f && fVar2 < fVar1) {
- s16 sVar1 = i_this->enemy.current.angle.y - cM_atan2s(sp44.x, sp44.z);
- if (sVar1 < 0x7000 && sVar1 > -0x7000) {
+ for (int i = 0; i < target_info_count;) {
+ pillar_p = (daPillar_c*)target_info[i];
+ pos_delta = pillar_p->current.pos - actor->current.pos;
+ f32 abs_val = pos_delta.abs();
+ if (abs_val > TREG_F(16) + 700.0f && abs_val < dist) {
+ s16 angle_delta = actor->current.angle.y - cM_atan2s(pos_delta.x, pos_delta.z);
+ if (angle_delta < angle && angle_delta > (s16)-angle) {
if (iVar1 == 0 || cM_rndF(1.0f) < 0.3f) {
- rv = pPillar;
+ rv = pillar_p;
}
+
iVar1++;
}
}
@@ -175,10 +201,11 @@ static daPillar_c* search_hasira(e_mk_class* i_this) {
i++;
if (i == target_info_count) {
i = 0;
- fVar1 += 100.0f;
- if (fVar1 > 2000.0f) {
+ dist += 100.0f;
+ if (dist > 2000.0f) {
return NULL;
}
+
if (rv != NULL) {
return rv;
}
@@ -192,16 +219,24 @@ static daPillar_c* search_hasira(e_mk_class* i_this) {
}
static void* s_d_sub(void* i_actor, void* i_data) {
- if (((fopAc_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB) && static_cast<e_db_class*>(i_actor)->action == 10)
- && (static_cast<e_db_class*>(i_actor)->mode >= 1 && target_info_count < 20)) {
- target_info[target_info_count] = i_actor;
- target_info_count++;
+ i_data;
+
+ if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB)) {
+ e_db_class* actor = (e_db_class*)i_actor;
+ if (actor->action == 10) {
+ if (actor->mode >= 1 && target_info_count < 20) {
+ target_info[target_info_count] = i_actor;
+ target_info_count++;
+ }
+ }
}
return NULL;
}
static e_db_class* search_db(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+
target_info_count = 0;
for (int i = 0; i < 20; i++) {
target_info[i] = NULL;
@@ -209,25 +244,24 @@ static e_db_class* search_db(e_mk_class* i_this) {
fpcM_Search(s_d_sub, i_this);
- f32 fVar1 = 2000.0f;
+ f32 dist = 2000.0f;
if (target_info_count != 0) {
- cXyz sp44;
- e_db_class* pDekuBaba;
- int i = 0;
- while (i < target_info_count) {
- pDekuBaba = (e_db_class*)target_info[i];
- sp44 = pDekuBaba->enemy.current.pos - i_this->enemy.current.pos;
+ cXyz pos_delta;
+ e_db_class* actor_p;
+ for (int i = 0; i < target_info_count;) {
+ actor_p = (e_db_class*)target_info[i];
+ pos_delta = actor_p->enemy.current.pos - actor->current.pos;
+ f32 abs_val = pos_delta.abs();
- f32 fVar2 = sp44.abs();
- if ((cM_rndF(1.0f) < 0.5f && fVar2 > 500.0f) && fVar2 < fVar1) {
- return pDekuBaba;
+ if (cM_rndF(1.0f) < 0.5f && abs_val > 500.0f && abs_val < dist) {
+ return actor_p;
}
i++;
if (i == target_info_count) {
i = 0;
- fVar1 += 50.0f;
- if (fVar1 > 5000.0f) {
+ dist += 50.0f;
+ if (dist > 5000.0f) {
return NULL;
}
}
@@ -240,319 +274,329 @@ static e_db_class* search_db(e_mk_class* i_this) {
}
static void e_mk_move(e_mk_class* i_this) {
- cXyz sp28;
- int frame = i_this->mpModelMorf->getFrame();
- switch(i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ cXyz work;
+ int frame = i_this->anmP->getFrame();
+
+ switch(i_this->mode) {
case 0:
- i_this->field_0x6fa = cM_rndF(3.0f) + 2.0f;
- i_this->mMode++;
+ i_this->unkCounter1 = cM_rndF(3.0f) + 2.0f;
+ i_this->mode++;
// fallthrough
case 1:
- i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f);
- i_this->enemy.speed.set(0.0f, 0.0f, 0.0f);
- if (i_this->field_0xc30 == 2) {
- i_this->mPillar = NULL;
+ i_this->posTargetStep.set(0.0f, 0.0f, 0.0f);
+ actor->speed.set(0.0f, 0.0f, 0.0f);
+ if (i_this->demoMode == e_mk_class::DEMO_MODE_END) {
+ i_this->prevHasira = NULL;
target_info_count = 0;
fpcM_Search(s_h_sub, i_this);
- if (i_this->field_0x71e == 0) {
- sp28 = demo_jump_pos_1;
- i_this->mPillar = (daPillar_c*)target_info[8];
- } else if (i_this->field_0x71e == 1) {
- sp28 = demo_jump_pos_2;
- i_this->mDemoMode++;
- i_this->mPillar = (daPillar_c*)target_info[6];
- } else if (i_this->field_0x71e == 2) {
- sp28 = demo_jump_pos_3;
+ if (i_this->demoHasiraFlag == 0) {
+ work = demo_jump_pos_1;
+ i_this->prevHasira = (daPillar_c*)target_info[8];
+ } else if (i_this->demoHasiraFlag == 1) {
+ work = demo_jump_pos_2;
+ i_this->demoSubMode++;
+ i_this->prevHasira = (daPillar_c*)target_info[6];
+ } else if (i_this->demoHasiraFlag == 2) {
+ work = demo_jump_pos_3;
} else {
- i_this->mAction = e_mk_class::ACT_E_DEMO;
- i_this->mMode = 100;
- i_this->enemy.gravity = 0.0f;
- i_this->enemy.scale.x = 1.0f;
+ i_this->action = e_mk_class::ACT_E_DEMO;
+ i_this->mode = 100;
+ actor->gravity = 0.0f;
+ actor->scale.x = 1.0f;
return;
}
- i_this->field_0x71e++;
- i_this->field_0x5b8 = STAGE_CENTER_POS + sp28;
- sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos;
- i_this->enemy.current.angle.y = cM_atan2s(sp28.x, sp28.z);
- i_this->enemy.current.angle.x = -cM_atan2s(sp28.y, JMAFastSqrt(sp28.x * sp28.x + sp28.z * sp28.z));
- anm_init(i_this, 29, 5.0f, 0, 1.0f);
- i_this->mMode = 3;
- } else {
- i_this->mPillar = (daPillar_c*)i_this->mHasira;
- i_this->mHasira = search_hasira(i_this);
- #ifdef DEBUG
- if (i_this->mHasira == NULL) {
- OSReport("E_mk HASIRA NON \n");
- }
- #endif
- if (i_this->mHasira != NULL) {
- i_this->mMode++;
- // fallthrough
- case 2:
- i_this->field_0x5b8 = i_this->mHasira->current.pos;
- i_this->field_0x5b8.y += 800.0f;
- if (fopAcM_gc_c::gndCheck(&i_this->field_0x5b8)) {
- i_this->field_0x5b8.y = fopAcM_gc_c::getGroundY();
- }
+ i_this->demoHasiraFlag++;
+ i_this->posTarget = STAGE_CENTER_POS + work;
+ work = i_this->posTarget - actor->current.pos;
+ actor->current.angle.y = cM_atan2s(work.x, work.z);
+ actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z));
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_START_e, TREG_F(1) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 3;
+ break;
+ }
+
+ i_this->prevHasira = (daPillar_c*)i_this->hasira;
+ i_this->hasira = search_hasira(i_this);
- sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos;
- i_this->enemy.current.angle.y = cM_atan2s(sp28.x, sp28.z);
- i_this->enemy.current.angle.x = -cM_atan2s(sp28.y, JMAFastSqrt(sp28.x * sp28.x + sp28.z * sp28.z));
- anm_init(i_this, 29, 5.0f, 0, 1.0f);
- i_this->mMode++;
- }
+ if (i_this->hasira != NULL) {
+ i_this->mode++;
+ } else {
+ OS_REPORT("E_mk HASIRA NON \n");
+ break;
}
+ // fallthrough
+ case 2:
+ i_this->posTarget = i_this->hasira->current.pos;
+ i_this->posTarget.y += TREG_F(8) + 800.0f;
+ if (fopAcM_gc_c::gndCheck(&i_this->posTarget)) {
+ i_this->posTarget.y = fopAcM_gc_c::getGroundY();
+ }
+
+ work = i_this->posTarget - actor->current.pos;
+ actor->current.angle.y = cM_atan2s(work.x, work.z);
+ actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z));
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_START_e, TREG_F(1) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode++;
break;
- case 3:
- if (frame == 9) {
- cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y);
- cMtx_XrotM(*calc_mtx, i_this->enemy.current.angle.x);
- sp28.x = 0.0f;
- sp28.y = 0.0f;
- sp28.z = 70.0f;
- MtxPosition(&sp28, &i_this->enemy.speed);
- i_this->field_0x6be = 1;
- i_this->field_0x6c0 = i_this->enemy.current.pos;
- i_this->field_0x6cc = i_this->field_0x5b8;
-
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_JUMP, -1);
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1);
- if (i_this->field_0x718 != 0) {
- i_this->field_0x71b = 2;
- }
-
- if (i_this->mPillar != NULL) {
- sp28 = i_this->mPillar->current.pos;
- sp28.y += 500.0f;
- sp28 -= i_this->enemy.current.pos;
- if (sp28.abs() < 200.0f) {
- i_this->mPillar->setShake(2);
+ case 3:
+ // At frame 9 of the mk_jump_start animation, Ook's feet begin lifting off the ground
+ if (frame == TREG_S(0) + 9) {
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ cMtx_XrotM(*calc_mtx, actor->current.angle.x);
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = TREG_F(10) + 70.0f;
+ MtxPosition(&work, &actor->speed);
+ i_this->unkFlag2 = 1;
+ i_this->prevPos = actor->current.pos;
+ i_this->prevPosTarget = i_this->posTarget;
+
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_JUMP, -1);
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1);
+ if (i_this->unkFlag5 != 0) {
+ i_this->setSmokeFlag = 2;
+ }
+
+ if (i_this->prevHasira != NULL) {
+ work = i_this->prevHasira->current.pos;
+ work.y += 500.0f;
+ work -= actor->current.pos;
+ if (work.abs() < 200.0f) {
+ i_this->prevHasira->setShake(2);
+ }
}
}
- }
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 28, 5.0f, 0, 1.0f);
- i_this->mMode++;
- }
- break;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_MIDDLE_e, TREG_F(2) + 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode++;
+ }
+ break;
- case 4:
- sp28 = i_this->field_0x5b8 - i_this->enemy.current.pos;
- if (sp28.abs() < 300.0f) {
- anm_init(i_this, 26, 2.0f, 0, 1.0f);
- i_this->mMode++;
- i_this->field_0x6dc = i_this->enemy.speed;
- i_this->enemy.speed.set(0.0f, 0.0f, 0.0f);
- }
- break;
+ case 4:
+ work = i_this->posTarget - actor->current.pos;
+ if (work.abs() < TREG_F(13) + 300.0f) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_JUMP_END_e, TREG_F(3) + 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode++;
+ i_this->posTargetStep = actor->speed;
+ actor->speed.set(0.0f, 0.0f, 0.0f);
+ }
+ break;
- case 5:
- if (i_this->mpModelMorf->isStop() != 0) {
- i_this->field_0x6be = 0;
- if (i_this->field_0x718 != 0) {
- i_this->mMode = 10;
- i_this->field_0x718 = 0;
- anm_init(i_this, 30, 3.0f, 0, 1.0f);
- } else {
- i_this->field_0x6fa--;
- if (i_this->field_0x6fa == 0) {
- if (cM_rndF(1.0f) < 0.75f) {
- i_this->mAction = e_mk_class::ACT_SHOOT;
- if ((cM_rndF(1.0f) < 0.5f && i_this->field_0x71c >= 3) || i_this->mDistToPlayer > l_HIO.mPlayerThrowDistMax) {
- i_this->mMode = 1;
+ case 5:
+ if (i_this->anmP->isStop() != 0) {
+ i_this->unkFlag2 = 0;
+ if (i_this->unkFlag5 != 0) {
+ i_this->mode = 10;
+ i_this->unkFlag5 = 0;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PICKUP_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ } else {
+ i_this->unkCounter1--;
+ if (i_this->unkCounter1 == 0) {
+ if (cM_rndF(1.0f) < 0.75f) {
+ i_this->action = e_mk_class::ACT_SHOOT;
+ if ((cM_rndF(1.0f) < 0.5f && i_this->unkCounter3 >= 3) || i_this->distToPl > l_HIO.pl_throw_dist_max) {
+ i_this->mode = 1;
+ } else {
+ i_this->mode = 0;
+ i_this->unkCounter3++;
+ }
+ i_this->unkTimer1 = 0;
} else {
- i_this->mMode = 0;
- i_this->field_0x71c++;
+ i_this->action = e_mk_class::ACT_WAIT;
+ i_this->mode = 0;
}
- i_this->field_0x71a = 0;
} else {
- i_this->mAction = e_mk_class::ACT_WAIT;
- i_this->mMode = 0;
+ i_this->mode = 1;
}
- } else {
- i_this->mMode = 1;
}
}
- }
- break;
+ break;
- case 10:
- if (frame == 5) {
- i_this->field_0x707 = 6;
- i_this->field_0x60d = 1;
- }
+ case 10:
+ if (frame == 5) {
+ i_this->unkFlag4 = 6;
+ i_this->boomerangStatus = 1;
+ }
- if (i_this->mpModelMorf->isStop()) {
- i_this->mMode = 1;
- }
+ if (i_this->anmP->isStop()) {
+ i_this->mode = 1;
+ }
}
- cLib_addCalc2(&i_this->enemy.current.pos.x, i_this->field_0x5b8.x, 1.0f, fabsf(i_this->field_0x6dc.x));
- cLib_addCalc2(&i_this->enemy.current.pos.z, i_this->field_0x5b8.z, 1.0f, fabsf(i_this->field_0x6dc.z));
- cLib_addCalc2(&i_this->enemy.current.pos.y, i_this->field_0x5b8.y, 1.0f, fabsf(i_this->field_0x6dc.y));
+ cLib_addCalc2(&actor->current.pos.x, i_this->posTarget.x, 1.0f, fabsf(i_this->posTargetStep.x));
+ cLib_addCalc2(&actor->current.pos.z, i_this->posTarget.z, 1.0f, fabsf(i_this->posTargetStep.z));
+ cLib_addCalc2(&actor->current.pos.y, i_this->posTarget.y, 1.0f, fabsf(i_this->posTargetStep.y));
}
static void e_mk_wait(e_mk_class* i_this) {
- switch (i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+
+ switch (i_this->mode) {
case 0:
- i_this->field_0x6fc[0] = cM_rndF(40.0f) + 40.0f;
+ i_this->timer[0] = cM_rndF(40.0f) + 40.0f;
if (cM_rndF(1.0f) < 0.5f) {
- anm_init(i_this, 32, 10.0f, 2, 1.0f);
- i_this->mMode = 1;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_02_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 1;
} else {
- anm_init(i_this, 33, 10.0f, 0, 1.0f);
- i_this->mMode = 2;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 2;
}
break;
case 1:
- if (i_this->field_0x6fc[0] == 0) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 0;
+ if (i_this->timer[0] == 0) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 0;
}
break;
case 2:
- if (i_this->mpModelMorf->isStop()) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 0;
+ if (i_this->anmP->isStop()) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 0;
}
}
- cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->mAngleToPlayer, 2, 0x1000);
- if (i_this->mDistToPlayer < 800.0f) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 0;
+ cLib_addCalcAngleS2(&actor->current.angle.y, i_this->angleToPl, 2, 0x1000);
+ if (i_this->distToPl < TREG_F(19) + 800.0f) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 0;
+ OS_REPORT("E_MK PL NEAR \n");
}
}
static void e_mk_shoot(e_mk_class* i_this) {
- cXyz sp48;
- int frame = i_this->mpModelMorf->getFrame();
- fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x708);
- daPillar_c* pHasira = i_this->mHasira;
- s8 bVar5 = 0;
- switch(i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ int frame = i_this->anmP->getFrame();
+ cXyz work;
+ fopAc_ac_c* actor_p = fopAcM_SearchByID(i_this->boomerangId);
+ daPillar_c* hasira = i_this->hasira;
+ s8 unk_flag = 0;
+
+ switch(i_this->mode) {
case 0:
- i_this->field_0x70c = NULL;
- anm_init(i_this, 38, 5.0f, 0, 1.0f);
- i_this->mMode = 2;
+ i_this->db = NULL;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_THROW_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 2;
break;
case 1:
- i_this->field_0x70c = search_db(i_this);
- if (i_this->field_0x70c != NULL) {
- anm_init(i_this, 39, 5.0f, 0, 1.0f);
- i_this->mMode = 10;
+ i_this->db = search_db(i_this);
+ if (i_this->db != NULL) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_THROW_UP_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 10;
} else {
- i_this->mMode = 0;
+ OS_REPORT("E_MK DB NON \n");
+ i_this->mode = 0;
}
break;
case 2:
- cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->mAngleToPlayer, 2, 0x1000);
+ cLib_addCalcAngleS2(&actor->current.angle.y, i_this->angleToPl, 2, 0x1000);
- if (i_this->mpModelMorf->checkFrame(15.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
+ if (i_this->anmP->checkFrame(15.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
}
- if (frame == 17) {
- i_this->field_0x707 = 7;
+ if (frame == hREG_S(2) + 17) {
+ i_this->unkFlag4 = 7;
}
- if (frame == 27) {
- i_this->field_0x707 = 1;
+ if (frame == hREG_S(3) + 27) {
+ i_this->unkFlag4 = 1;
}
- if (frame == 27) {
- i_this->field_0x60d = 0;
- i_this->mMode = 3;
+ if (frame == hREG_S(4) + 27) {
+ i_this->boomerangStatus = 0;
+ i_this->mode = 3;
}
break;
case 3:
- if (i_this->mpModelMorf->isStop()) {
- i_this->mMode = 20;
+ if (i_this->anmP->isStop()) {
+ i_this->mode = 20;
if (cM_rndF(1.0f) < 0.333f) {
- anm_init(i_this, 31, 10.0f, 2, 1.0f);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_01_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
}
else {
- anm_init(i_this, 40, 10.0f, 2, 1.0f);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
}
}
- bVar5 = 1;
+ unk_flag = 1;
break;
case 10:
- sp48 = i_this->field_0x70c->enemy.current.pos - i_this->enemy.current.pos;
- cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, cM_atan2s(sp48.x, sp48.z), 2, 0x1000);
- if (i_this->mpModelMorf->checkFrame(15.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
+ work = i_this->db->enemy.current.pos - actor->current.pos;
+ cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(work.x, work.z), 2, 0x1000);
+ if (i_this->anmP->checkFrame(15.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
}
- if (frame == 17) {
- i_this->field_0x707 = 7;
+ if (frame == hREG_S(2) + 17) {
+ i_this->unkFlag4 = 7;
}
- if (frame == 27) {
- i_this->field_0x707 = 1;
+ if (frame == hREG_S(3) + 27) {
+ i_this->unkFlag4 = 1;
}
- if (frame == 27) {
- i_this->field_0x60d = 0;
- i_this->mMode = 3;
+ if (frame == hREG_S(4) + 27) {
+ i_this->boomerangStatus = 0;
+ i_this->mode = 3;
}
break;
case 15:
- if (i_this->mpModelMorf->isStop()) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 0;
+ if (i_this->anmP->isStop()) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 0;
}
- bVar5 = 3;
+ unk_flag = 3;
break;
case 20:
- bVar5 = 2;
+ unk_flag = 2;
}
- if (bVar5 != 0) {
- if ((bVar5 == 2) && (actor != NULL)) {
- cXyz sp54 = actor->current.pos - i_this->enemy.current.pos;
- cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, cM_atan2s(sp54.x,sp54.z), 2, 0x800);
+ if (unk_flag != 0) {
+ if ((unk_flag == 2) && (actor_p != NULL)) {
+ cXyz pos_delta = actor_p->current.pos - actor->current.pos;
+ cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(pos_delta.x,pos_delta.z), 2, 0x800);
}
- if (bVar5 <= 2) {
- if (i_this->field_0x707 == 5) {
- i_this->field_0x707 = 0;
- i_this->field_0x71a = 47;
+
+ if (unk_flag <= 2) {
+ if (i_this->unkFlag4 == 5) {
+ i_this->unkFlag4 = 0;
+ i_this->unkTimer1 = 47;
}
- if (i_this->field_0x71a == 35) {
- anm_init(i_this, 25, 5.0f, 2, 1.0f);
- i_this->mMode = 20;
+ if (i_this->unkTimer1 == 35) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 20;
}
- if (i_this->field_0x71a == 1) {
- anm_init(i_this, 40, 10.0f, 2, 1.0f);
+ if (i_this->unkTimer1 == 1) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
}
- if (i_this->field_0x707 == 2) {
- anm_init(i_this, 9, 3.0f, 0, 0.0f);
- i_this->field_0x707 = 0;
+ if (i_this->unkFlag4 == 2) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f);
+ i_this->unkFlag4 = 0;
}
- if (i_this->field_0x707 == 3) {
- i_this->field_0x707 = 0;
- i_this->field_0x60d = 1;
- anm_init(i_this, 9, 1.0f, 0, 1.0f);
- i_this->mMode = 15;
+ if (i_this->unkFlag4 == 3) {
+ i_this->unkFlag4 = 0;
+ i_this->boomerangStatus = 1;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 15;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
#if VERSION == VERSION_GCN_JPN
return;
@@ -560,14 +604,13 @@ static void e_mk_shoot(e_mk_class* i_this) {
}
}
- if ((pHasira != NULL) && pHasira->checkRollAttack()) {
- i_this->mAction = e_mk_class::ACT_YORO;
- i_this->mMode = 0;
- if (i_this->field_0x60d != 0) {
- i_this->field_0x6fc[0] = 40;
- }
- else {
- i_this->field_0x6fc[0] = 250;
+ if ((hasira != NULL) && hasira->checkRollAttack()) {
+ i_this->action = e_mk_class::ACT_YORO;
+ i_this->mode = 0;
+ if (i_this->boomerangStatus != 0) {
+ i_this->timer[0] = 40;
+ } else {
+ i_this->timer[0] = 250;
}
}
}
@@ -576,81 +619,87 @@ static void e_mk_shoot(e_mk_class* i_this) {
static s8 lbl_210_bss_130;
static void e_mk_yoro(e_mk_class* i_this) {
- switch (i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+
+ switch (i_this->mode) {
case 0:
- i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
- anm_init(i_this, 8, 5.0f, 0, 1.0f);
- i_this->mMode = 1;
+ i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_BALANCE_START_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 1;
break;
case 1:
- i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 7, 5.0f, 2, 1.0f);
- i_this->mMode = 2;
+ i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_BALANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 2;
}
break;
case 2:
- i_this->mSound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
- if (i_this->field_0x6fc[0] == 0) {
- i_this->mAction = e_mk_class::ACT_WAIT;
- i_this->mMode = 0;
- i_this->field_0x707 = 6;
- i_this->field_0x60d = 1;
+ i_this->sound.startCreatureVoiceLevel(Z2SE_EN_MK_V_LOOSE_BALANCE, -1);
+ if (i_this->timer[0] == 0) {
+ i_this->action = e_mk_class::ACT_WAIT;
+ i_this->mode = 0;
+ i_this->unkFlag4 = 6;
+ i_this->boomerangStatus = 1;
}
}
- if (i_this->field_0x707 == 4) {
- i_this->field_0x707 = 0;
- i_this->mAction = e_mk_class::ACT_DROP;
- i_this->mMode = 0;
+ if (i_this->unkFlag4 == 4) {
+ i_this->unkFlag4 = 0;
+ i_this->action = e_mk_class::ACT_DROP;
+ i_this->mode = 0;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_HIT_BOOM, -1);
- i_this->mSound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31);
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_HIT_BOOM, -1);
+ i_this->sound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31);
- i_this->field_0x704 = 5;
- i_this->field_0x706 = 5;
+ i_this->invulnerabilityTimer = 5;
+ i_this->tubaTimer = 5;
if (lbl_210_bss_130 == 0) {
lbl_210_bss_130 = 1;
- i_this->field_0xc30 = 4;
- i_this->mDemoMode = 1;
+ i_this->demoMode = e_mk_class::DEMO_MODE_BOHIT;
+ i_this->demoSubMode = 1;
}
}
}
static void e_mk_drop(e_mk_class* i_this) {
- cXyz sp24;
- int frame = i_this->mpModelMorf->getFrame();
- switch (i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ cXyz work;
+ int frame = i_this->anmP->getFrame();
+
+ switch (i_this->mode) {
case 0:
- anm_init(i_this, 23, 3.0f, 0, 1.0f);
- i_this->mMode = 1;
- cMtx_YrotS(*calc_mtx, i_this->enemy.shape_angle.y);
- sp24.x = 0.0;
- sp24.y = 30.0;
- sp24.z = -10.0;
- MtxPosition(&sp24, &i_this->enemy.speed);
- i_this->field_0x704 = 50;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_FALL_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 1;
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = 0.0;
+ work.y = KREG_F(8) + 30.0f;
+ work.z = KREG_F(9) + -10.0f;
+ MtxPosition(&work, &actor->speed);
+ i_this->invulnerabilityTimer = 50;
break;
case 1:
- if (frame >= 14) {
- i_this->mpModelMorf->setPlaySpeed(0.0f);
- i_this->mMode = 2;
+ if (frame >= TREG_S(3) + 14) {
+ i_this->anmP->setPlaySpeed(0.0f);
+ i_this->mode = 2;
}
break;
case 2:
- i_this->field_0x704 = 5;
- if (i_this->mAcch.ChkGroundHit()) {
- i_this->mpModelMorf->setPlaySpeed(1.0f);
- i_this->mMode = 3;
- dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f));
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_FALL_GROUND, 0, -1);
- i_this->field_0x71b = 1;
- i_this->field_0x719 = 0;
+ i_this->invulnerabilityTimer = 5;
+ if (i_this->acch.ChkGroundHit()) {
+ i_this->anmP->setPlaySpeed(1.0f);
+ i_this->mode = 3;
+ dComIfGp_getVibration().StartShock((int)YREG_S(2) + VIBMODE_S_POWER5, 15, cXyz(0.0f, 1.0f, 0.0f));
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_FALL_GROUND, 0, -1);
+ actor->speed.x *= TREG_F(9) + 1.0f;
+ actor->speed.z *= TREG_F(9) + 1.0f;
+ i_this->setSmokeFlag = 1;
+ i_this->unkCounter2 = 0;
Z2GetAudioMgr()->changeSubBgmStatus(1);
dComIfGs_onOneZoneSwitch(5, -1);
}
@@ -658,41 +707,41 @@ static void e_mk_drop(e_mk_class* i_this) {
case 3:
if (frame == 22 || frame == 32) {
- i_this->field_0x71b = 1;
+ i_this->setSmokeFlag = 1;
}
if (frame >= 45) {
- i_this->enemy.speed.set(0.0f, 0.0f, 0.0f);
+ actor->speed.set(0.0f, 0.0f, 0.0f);
}
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 10, 5.0f, 2, 1.0f);
- i_this->mMode = 4;
- i_this->field_0x6fc[0] = 150;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 4;
+ i_this->timer[0] = 150;
}
break;
case 4:
- if (i_this->field_0x6fc[0] == 0) {
- anm_init(i_this, 36, 5.0f, 0, 1.0f);
- i_this->mMode = 5;
- i_this->field_0x719 = 4;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_AWAKE, -1);
+ if (i_this->timer[0] == 0) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_STANDUP_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 5;
+ i_this->unkCounter2 = 4;
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_AWAKE, -1);
}
break;
case 5:
- if (i_this->mAnm == 35 && ((frame == 9 || (frame == 24)) || (frame == 35))) {
- i_this->field_0x71b = 2;
+ if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_SPRING_e && ((frame == 9 || (frame == 24)) || (frame == 35))) {
+ i_this->setSmokeFlag = 2;
}
- if (i_this->mpModelMorf->isStop()) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 2;
- i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f);
- i_this->field_0x6fa = cM_rndF(3.0f) + 2.0f;
- i_this->field_0x718 = 1;
- if (i_this->enemy.health > 100) {
+ if (i_this->anmP->isStop()) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 2;
+ i_this->posTargetStep.set(0.0f, 0.0f, 0.0f);
+ i_this->unkCounter1 = cM_rndF(3.0f) + 2.0f;
+ i_this->unkFlag5 = 1;
+ if (actor->health > 100) {
Z2GetAudioMgr()->changeSubBgmStatus(2);
} else {
Z2GetAudioMgr()->changeSubBgmStatus(3);
@@ -702,232 +751,243 @@ static void e_mk_drop(e_mk_class* i_this) {
}
static void e_mk_damage(e_mk_class* i_this) {
- switch (i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+
+ switch (i_this->mode) {
case 0:
- i_this->field_0x719++;
- i_this->enemy.speed.set(0.0f, 0.0f, 0.0f);
- if (i_this->field_0x719 >= 4) {
- anm_init(i_this, 35, 3.0f, 0, 1.0f);
- i_this->mAction = e_mk_class::ACT_DROP;
- i_this->mMode = 5;
- i_this->field_0x704 = 60;
+ i_this->unkCounter2++;
+ actor->speed.set(0.0f, 0.0f, 0.0f);
+ if (i_this->unkCounter2 >= 4) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_SPRING_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->action = e_mk_class::ACT_DROP;
+ i_this->mode = 5;
+ i_this->invulnerabilityTimer = 60;
} else {
- anm_init(i_this, 12, 3.0f, 0, 1.0f);
- i_this->mMode = 1;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE, -1);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DAMAGE_e, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 1;
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE, -1);
}
break;
case 1:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this,10, 5.0f, 2, 1.0f);
- i_this->mAction = e_mk_class::ACT_DROP;
- i_this->mMode = 4;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this,dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->action = e_mk_class::ACT_DROP;
+ i_this->mode = 4;
}
break;
}
}
static void damage_check(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
- if (i_this->field_0x704 == 0) {
- i_this->field_0x95c.Move();
- if (i_this->mAction >= 9) {
- if (i_this->field_0xad0.ChkTgHit()) {
- i_this->mAtInfo.mpCollider = i_this->field_0xad0.GetTgHitObj();
- cc_at_check(&i_this->enemy, &i_this->mAtInfo);
- if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) {
- i_this->field_0x704 = 20;
+
+ if (i_this->invulnerabilityTimer == 0) {
+ i_this->stts.Move();
+
+ if (i_this->action >= 9) {
+ if (i_this->tgSph.ChkTgHit()) {
+ i_this->atInfo.mpCollider = i_this->tgSph.GetTgHitObj();
+ cc_at_check(actor, &i_this->atInfo);
+ if (i_this->atInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) {
+ i_this->invulnerabilityTimer = 20;
} else {
- i_this->field_0x704 = 10;
+ i_this->invulnerabilityTimer = 10;
}
- if (i_this->enemy.health <= 0) {
+ if (actor->health <= 0) {
fpcM_Search(s_obj_delete, i_this);
- i_this->mAction = 30;
- i_this->mMode = 0;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DEAD, -1);
- i_this->field_0x704 = 20000;
+ i_this->action = 30;
+ i_this->mode = 0;
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DEAD, -1);
+ i_this->invulnerabilityTimer = 20000;
Z2GetAudioMgr()->subBgmStop();
+
+ #if !DEBUG
dScnPly_c::nextPauseTimer = 0;
+ #endif
} else {
- i_this->mAction = 10;
- i_this->mMode = 0;
+ i_this->action = 10;
+ i_this->mode = 0;
if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) {
- i_this->field_0x704 = 3;
+ i_this->invulnerabilityTimer = 3;
}
}
}
}
- if (i_this->enemy.health <= 1) {
- i_this->enemy.health = 0;
- i_this->field_0xad0.SetTgHitMark((CcG_Tg_HitMark )3);
+ if (actor->health <= 1) {
+ actor->health = 0;
+ i_this->tgSph.SetTgHitMark((CcG_Tg_HitMark )3);
}
}
}
static void e_mk_s_demo(e_mk_class* i_this) {
- int frame = i_this->mpModelMorf->getFrame();
- i_this->field_0x704 = 5;
- switch (i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ int frame = i_this->anmP->getFrame();
+ i_this->invulnerabilityTimer = 5;
+
+ switch (i_this->mode) {
case 0:
- anm_init(i_this, 40, 1.0f, 2, 1.0f);
- i_this->mMode = 1;
- i_this->field_0x6fc[0] = 0;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 1;
+ i_this->timer[0] = (s16)TREG_S(9);
// fallthrough
case 1:
- if (i_this->field_0x6fc[0] == 0) {
- i_this->mMode = 100;
- i_this->field_0xc30 = 1;
- i_this->mDemoMode = 1;
+ if (i_this->timer[0] == 0) {
+ i_this->mode = 100;
+ i_this->demoMode = e_mk_class::DEMO_MODE_START;
+ i_this->demoSubMode = 1;
}
break;
case 2:
- i_this->mSound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1);
- anm_init(i_this, 20, 5.0f, 0, 1.0f);
- i_this->mMode = 3;
+ i_this->sound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_RAISE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 3;
break;
case 3:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 21, 2.0f, 2, 1.0f);
- i_this->mMode = 100;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 100;
}
break;
case 4:
- anm_init(i_this, 19, 1.0f, 0 ,1.0f);
- i_this->mMode = 5;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e, 1.0f, J3DFrameCtrl::EMode_NONE ,1.0f);
+ i_this->mode = 5;
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
break;
case 5:
- if (frame == 8) {
- i_this->field_0x707 = 1;
+ if (frame == hREG_S(3) + 8) {
+ i_this->unkFlag4 = 1;
Z2GetAudioMgr()->bgmStreamPlay();
}
- if (frame == 8) {
- i_this->field_0x60d = 0;
+ if (frame == hREG_S(4) + 8) {
+ i_this->boomerangStatus = 0;
}
- if (frame == 14) {
- i_this->mMode = 6;
- i_this->mDemoMode = 7;
- anm_init(i_this, 40, 10.0f, 2, 1.0f);
+ if (frame == TREG_S(5) + 14) {
+ i_this->mode = 6;
+ i_this->demoSubMode = 7;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
}
break;
case 6:
- if (i_this->field_0x707 == 2) {
- anm_init(i_this, 9, 3.0f, 0, 0.0f);
- i_this->field_0x707 = 0;
+ if (i_this->unkFlag4 == 2) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f);
+ i_this->unkFlag4 = 0;
}
- if (i_this->field_0x707 == 3) {
- i_this->field_0x707 = 0;
- i_this->field_0x60d = 1;
- anm_init(i_this, 9, 1.0f, 0, 1.0f);
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
- i_this->mMode = 7;
+ if (i_this->unkFlag4 == 3) {
+ i_this->unkFlag4 = 0;
+ i_this->boomerangStatus = 1;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
+ i_this->mode = 7;
}
break;
case 7:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 15, 5.0f, 2, 1.0f);
- i_this->field_0x6fc[0] = 30;
- i_this->mMode = 8;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->timer[0] = 30;
+ i_this->mode = 8;
}
break;
case 8:
- if (i_this->field_0x6fc[0] == 0) {
- anm_init(i_this, 33, 10.0f, 0, 1.0f);
- i_this->mMode = 9;
+ if (i_this->timer[0] == 0) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 9;
}
break;
case 9:
- if (i_this->mpModelMorf->isStop()) {
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->field_0x6fa = cM_rndF(2.0f) + 7.0f;
- i_this->mMode = 1;
- i_this->mDemoMode = 11;
- i_this->mDemoCamTimer = 0;
+ if (i_this->anmP->isStop()) {
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->unkCounter1 = cM_rndF(2.0f) + 7.0f;
+ i_this->mode = 1;
+ i_this->demoSubMode = 11;
+ i_this->demoCamCounter = 0;
}
break;
case 100:
- return;
+ break;
}
}
-static int e_mk_e_demo(e_mk_class* i_this) {
- f32 fVar1;
- cXyz sp38, sp44;
- int frame = i_this->mpModelMorf->getFrame();
- int rv = 1;
- s8 cVar6 = 0;
+static s8 e_mk_e_demo(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ f32 sqrt_val;
+ cXyz work, offset;
+ int frame = i_this->anmP->getFrame();
+ s8 rv = 1;
+ s8 unk_flag = 0;
- switch (i_this->mMode) {
+ switch (i_this->mode) {
case -100:
- anm_init(i_this, 10, 5.0f, 2, 1.0f);
- i_this->mMode++;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CHANCE_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode++;
break;
case 0:
- anm_init(i_this, 18, 1.0f, 0, 1.0f);
- i_this->mMode = 1;
- i_this->field_0xc30 = 2;
- i_this->mDemoMode = 1;
- dComIfGs_onSwitch(108, fopAcM_GetRoomNo(&i_this->enemy));
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_START_SPRING_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 1;
+ i_this->demoMode = e_mk_class::DEMO_MODE_END;
+ i_this->demoSubMode = 1;
+ dComIfGs_onSwitch(108, fopAcM_GetRoomNo(actor));
break;
case 1:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 17, 1.0f, 2, 1.0f);
- i_this->mMode = 2;
- i_this->enemy.current.angle.y = STAGE_ANGLE_Y + -0x4000;
- cMtx_YrotS(*calc_mtx,i_this->enemy.current.angle.y);
- sp38.x = 0.0;
- sp38.y = 0.0;
- sp38.z = -1000.0;
- MtxPosition(&sp38, &sp44);
- i_this->enemy.current.pos = STAGE_CENTER_POS + sp44;
- i_this->enemy.old.pos = STAGE_CENTER_POS + sp44;
- i_this->mDemoMode = 4;
- i_this->mDemoCamTimer = 0;
- i_this->enemy.gravity = -10.0f;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_SPRING_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 2;
+ actor->current.angle.y = STAGE_ANGLE_Y + -0x4000;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ work.x = 0.0;
+ work.y = 0.0;
+ work.z = AREG_F(12) + -1000.0f;
+ MtxPosition(&work, &offset);
+ actor->current.pos = STAGE_CENTER_POS + offset;
+ actor->old.pos = STAGE_CENTER_POS + offset;
+ i_this->demoSubMode = 4;
+ i_this->demoCamCounter = 0;
+ actor->gravity = AREG_F(15) + -10.0f;
}
break;
case 2:
- if (i_this->mAcch.ChkGroundHit()) {
- i_this->enemy.speedF = 0.0f;
+ if (i_this->acch.ChkGroundHit()) {
+ actor->speedF = 0.0f;
}
- if (frame == 1 || frame == 18) {
- i_this->enemy.speed.y = 50.0f;
- i_this->enemy.speedF = 30.0f;
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
+ if (frame == AREG_S(1) + 1 || frame == AREG_S(2) + 18) {
+ actor->speed.y = AREG_F(14) + 50.0f;
+ actor->speedF = AREG_F(13) + 30.0f;
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
}
- sp38 = STAGE_CENTER_POS - i_this->enemy.current.pos;
- fVar1 = JMAFastSqrt(sp38.x * sp38.x + sp38.z * sp38.z);
- if (fVar1 < 200.0f) {
+ work = STAGE_CENTER_POS - actor->current.pos;
+ sqrt_val = JMAFastSqrt(work.x * work.x + work.z * work.z);
+ if (sqrt_val < AREG_F(16) + 200.0f) {
rv = 2;
- if (fVar1 < 100.0f) {
- i_this->mMode = 3;
- anm_init(i_this, 16, 2.0f, 0, 1.0f);
- i_this->enemy.speedF = 0.0f;
- i_this->enemy.gravity = 0.0f;
- i_this->enemy.speed.y = 0.0f;
- i_this->field_0x6fc[0] = 40;
- cVar6 = 60;
+ if (sqrt_val <AREG_F(17) + 100.0f) {
+ i_this->mode = 3;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_HIT_e, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ actor->speedF = 0.0f;
+ actor->gravity = 0.0f;
+ actor->speed.y = 0.0f;
+ i_this->timer[0] = 40;
+ unk_flag = 60;
target_info_count = 0;
fpcM_Search(s_h_sub, i_this);
static_cast<daPillar_c*>(target_info[8])->setShake(1);
@@ -938,87 +998,87 @@ static int e_mk_e_demo(e_mk_class* i_this) {
case 3:
rv = 2;
i_this->field_0x5d4 = 0;
- if (i_this->field_0x6fc[0] < 12) {
- i_this->field_0x5d8 = i_this->field_0x6fc[0] << 1;
- if (i_this->field_0x5d8 >= 12.0f) {
- i_this->field_0x5d8 = i_this->field_0x5d8 - 12.0f;
+ if (i_this->timer[0] < 12) {
+ i_this->btpFrame = i_this->timer[0] << 1;
+ if (i_this->btpFrame >= 12.0f) {
+ i_this->btpFrame = i_this->btpFrame - 12.0f;
}
}
- if (i_this->field_0x6fc[0] == 0) {
- i_this->enemy.gravity = -0.03f;
- if (i_this->enemy.speed.y < -1.0f) {
- anm_init(i_this, 14, 10.0f, 0, 1.0f);
- i_this->enemy.speedF = 0.0f;
- i_this->enemy.gravity = -2.0f;
- i_this->mMode = 4;
+ if (i_this->timer[0] == 0) {
+ actor->gravity = AREG_F(18) + -0.03f;
+ if (actor->speed.y < AREG_F(19) + -1.0f) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_FALL_e, WREG_F(2) + 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ actor->speedF = WREG_F(0);
+ actor->gravity = WREG_F(1) + -2.0f;
+ i_this->mode = 4;
}
}
break;
case 4:
- if (i_this->mAcch.ChkGroundHit()) {
- i_this->enemy.speedF = 0.0f;
- i_this->field_0x71b = 2;
- cVar6 = 30;
- i_this->mMode = 100;
- i_this->field_0x5e0 = 1;
- ok_anm_init(i_this, 43, 1.0f, 2, 1.0f);
- cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y);
- sp38.x = 0.0f;
- sp38.y = 0.0f;
- sp38.z = -50.0f;
- MtxPosition(&sp38, &sp44);
- i_this->field_0x5e4 += sp44;
- i_this->field_0x5f0 = i_this->enemy.shape_angle;
- i_this->field_0x5f0.x = 0x4000;
- i_this->field_0x5fc = 30.0f;
- i_this->field_0x600 = -20.0f;
- i_this->mDemoMode = 5;
- i_this->mDemoCamTimer = 0;
- i_this->field_0x60e = 1;
+ if (i_this->acch.ChkGroundHit()) {
+ actor->speedF = 0.0f;
+ i_this->setSmokeFlag = 2;
+ unk_flag = 30;
+ i_this->mode = 100;
+ i_this->unkFlag1 = 1;
+ ok_anm_init(i_this, dRes_INDEX_E_MK_BCK_OK_DEMO_DROP_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = WREG_F(6) + -50.0f;
+ MtxPosition(&work, &offset);
+ i_this->crownPos += offset;
+ i_this->unkRotation = actor->shape_angle;
+ i_this->unkRotation.x = 0x4000; // 90°
+ i_this->field_0x5fc = WREG_F(8) + 30.0f;
+ i_this->field_0x600 = WREG_F(9) + -20.0f;
+ i_this->demoSubMode = 5;
+ i_this->demoCamCounter = 0;
+ i_this->btpFrameFlag = 1;
}
break;
case 5:
- anm_init(i_this, 22, 1.0f, 0, 1.0f);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_WAKEUP_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
i_this->field_0x5d4 = 60;
- i_this->mMode++;
+ i_this->mode++;
break;
case 6:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 13, 5.0f, 0, 1.0f);
- i_this->mMode++;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_ESCAPE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode++;
i_this->field_0x5d4 = 125;
- i_this->mDemoMode = 8;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 8;
+ i_this->demoCamCounter = 0;
}
break;
case 7:
if (frame == 144) {
- i_this->field_0x718 = 0;
- i_this->field_0x6fa = 100;
- i_this->field_0x6dc.set(0.0f, 0.0f, 0.0f);
- i_this->enemy.speed.set(0.0f, 0.0f, 0.0f);
- i_this->field_0x5b8 = STAGE_CENTER_POS;
- i_this->field_0x5b8.y += 500.0f;
- sp38 = i_this->field_0x5b8 - i_this->enemy.current.pos;
- i_this->enemy.current.angle.y = cM_atan2s(sp38.x, sp38.z);
- i_this->enemy.current.angle.x = -cM_atan2s(sp38.y, JMAFastSqrt(sp38.x * sp38.x + sp38.z * sp38.z));
- cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y);
- cMtx_XrotM(*calc_mtx, i_this->enemy.current.angle.x);
- sp38.x = 0.0;
- sp38.y = 0.0;
- sp38.z = 70.0;
- MtxPosition(&sp38, &i_this->enemy.speed);
- i_this->field_0x6be = 1;
- i_this->field_0x6c0 = i_this->enemy.current.pos;
- i_this->field_0x6cc = i_this->field_0x5b8;
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1);
- i_this->mAction = e_mk_class::ACT_MOVE;
- i_this->mMode = 4;
+ i_this->unkFlag5 = 0;
+ i_this->unkCounter1 = 100;
+ i_this->posTargetStep.set(0.0f, 0.0f, 0.0f);
+ actor->speed.set(0.0f, 0.0f, 0.0f);
+ i_this->posTarget = STAGE_CENTER_POS;
+ i_this->posTarget.y += 500.0f;
+ work = i_this->posTarget - actor->current.pos;
+ actor->current.angle.y = cM_atan2s(work.x, work.z);
+ actor->current.angle.x = -cM_atan2s(work.y, JMAFastSqrt(work.x * work.x + work.z * work.z));
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ cMtx_XrotM(*calc_mtx, actor->current.angle.x);
+ work.x = 0.0;
+ work.y = 0.0;
+ work.z = TREG_F(10) + 70.0f;
+ MtxPosition(&work, &actor->speed);
+ i_this->unkFlag2 = 1;
+ i_this->prevPos = actor->current.pos;
+ i_this->prevPosTarget = i_this->posTarget;
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_WIND, 0, -1);
+ i_this->action = e_mk_class::ACT_MOVE;
+ i_this->mode = 4;
return 0;
}
break;
@@ -1028,834 +1088,846 @@ static int e_mk_e_demo(e_mk_class* i_this) {
break;
}
- cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y);
- sp38.x = 0.0f;
- sp38.y = 0.0f;
- sp38.z = i_this->enemy.speedF;
- MtxPosition(&sp38, &sp44);
- i_this->enemy.speed.x = sp44.x;
- i_this->enemy.speed.z = sp44.z;
- if (cVar6 != 0) {
- dComIfGp_getVibration().StartShock(5, 1, cXyz(0.0f, 1.0f, 0.0f));
- i_this->mSound.startCreatureSound(Z2SE_EN_FM_FOOTNOTE, 0, -1);
- i_this->field_0xc98 = cVar6;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = actor->speedF;
+ MtxPosition(&work, &offset);
+ actor->speed.x = offset.x;
+ actor->speed.z = offset.z;
+ if (unk_flag != 0) {
+ dComIfGp_getVibration().StartShock((int)YREG_S(2) + VIBMODE_S_POWER5, 1, cXyz(0.0f, 1.0f, 0.0f));
+ i_this->sound.startCreatureSound(Z2SE_EN_FM_FOOTNOTE, 0, -1);
+ i_this->field_0xc98 = unk_flag;
}
return rv;
}
+/* Acotr logic for the cutscene in the Forest Temple when Ook cuts down the bridge with the boomerang */
static void e_mk_r04_demo(e_mk_class* i_this) {
- int frame = i_this->mpModelMorf->getFrame();
- f32 fVar2 = 0.0f;
- i_this->field_0x704 = 5;
- switch(i_this->mMode) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ cXyz work, offset;
+ int frame = i_this->anmP->getFrame();
+ f32 target_speedF = 0.0f;
+ i_this->invulnerabilityTimer = 5;
+
+ switch(i_this->mode) {
case 0:
- anm_init(i_this, 40, 1.0f, 2, 1.0f);
- i_this->mMode = 1;
- i_this->field_0xc30 = 3;
- i_this->mDemoMode = 1;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 1.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 1;
+ i_this->demoMode = e_mk_class::DEMO_MODE_R04;
+ i_this->demoSubMode = 1;
break;
case 2:
- anm_init(i_this, 34, 3.0f, 2, 1.0f);
- i_this->mMode = 3;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_RUN_e, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 3;
break;
case 3:
- fVar2 = 30.0f;
- if (i_this->enemy.current.pos.z > -600.0f) {
- i_this->mMode = 4;
- anm_init(i_this, 40, 5.0f, 2, 1.0f);
- i_this->field_0x6fc[0] = 0;
+ target_speedF = KREG_F(8) + 30.0f;
+ if (actor->current.pos.z > -600.0f) {
+ i_this->mode = 4;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->timer[0] = 0;
}
break;
case 4:
- if (i_this->field_0x6fc[0] == 0) {
- i_this->mSound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1);
- anm_init(i_this, 20, 5.0f, 0, 1.0f);
- i_this->mMode = 5;
+ if (i_this->timer[0] == 0) {
+ i_this->sound.startCreatureSound(Z2SE_MK_DARK_BOOM_RESUME, 0, -1);
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_RAISE_e, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 5;
}
break;
case 5:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 21, 2.0f, 2, 1.0f);
- i_this->mMode = 6;
- i_this->field_0x6fc[0] = 95;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 6;
+ i_this->timer[0] = VREG_S(7) + 95;
}
break;
case 6:
- if (i_this->field_0x6fc[0] == 0) {
- anm_init(i_this, 19, 1.0f, 0, 1.0f);
- i_this->mMode = 7;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
- i_this->field_0x707 = 7;
+ if (i_this->timer[0] == 0) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 7;
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_THROW_BOOM, -1);
+ i_this->unkFlag4 = 7;
}
break;
case 7:
- if (frame == 8) {
- i_this->field_0x707 = 1;
+ if (frame == hREG_S(3) + 8) {
+ i_this->unkFlag4 = 1;
}
- if (frame == 8) {
- i_this->field_0x60d = 0;
+ if (frame == hREG_S(4) + 8) {
+ i_this->boomerangStatus = 0;
}
- if (frame == 14) {
- i_this->mMode = 8;
- anm_init(i_this, 40, 10.0f, 2, 1.0f);
+ if (frame == hREG_S(5) + 14) {
+ i_this->mode = 8;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_WAIT_e, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
}
break;
case 8:
- if (i_this->field_0x707 == 2) {
- anm_init(i_this, 9, 3.0f, 0, 0.0f);
- i_this->field_0x707 = 0;
+ if (i_this->unkFlag4 == 2) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 3.0f, J3DFrameCtrl::EMode_NONE, 0.0f);
+ i_this->unkFlag4 = 0;
}
- if (i_this->field_0x707 == 3) {
- i_this->field_0x707 = 0;
- i_this->field_0x60d = 1;
- anm_init(i_this, 9, 1.0f, 0, 1.0f);
- i_this->mMode = 9;
+ if (i_this->unkFlag4 == 3) {
+ i_this->unkFlag4 = 0;
+ i_this->boomerangStatus = 1;
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_CATCH_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 9;
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_CATCH_BOOM, -1);
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
}
break;
case 9:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 15, 5.0f, 2, 1.0f);
- i_this->field_0x6fc[0] = 30;
- i_this->mMode = 10;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->timer[0] = 30;
+ i_this->mode = 10;
}
break;
case 10:
- if (i_this->field_0x6fc[0] == 0) {
- anm_init(i_this, 33, 10.0f, 0, 1.0f);
- i_this->mMode = 11;
+ if (i_this->timer[0] == 0) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e, 10.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
+ i_this->mode = 11;
}
break;
case 11:
- if (i_this->mpModelMorf->isStop()) {
- anm_init(i_this, 34, 3.0f, 2, 1.0f);
- i_this->mMode = 12;
- i_this->field_0x6fc[0] = 10;
+ if (i_this->anmP->isStop()) {
+ anm_init(i_this, dRes_INDEX_E_MK_BCK_MK_RUN_e, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f);
+ i_this->mode = 12;
+ i_this->timer[0] = 10;
}
break;
case 12:
- if (i_this->field_0x6fc[0] == 0) {
- fVar2 = 30.0f;
+ if (i_this->timer[0] == 0) {
+ target_speedF = KREG_F(8) + 30.0f;
}
- cLib_addCalcAngleS2(&i_this->enemy.current.angle.y, i_this->enemy.home.angle.y + (u16)-0x8000, 2, 0x1000);
+ cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y + (u16)-0x8000, 2, 0x1000);
break;
}
- cLib_addCalc2(&i_this->enemy.speedF, fVar2, 1.0f, 5.0f);
- i_this->enemy.gravity = -10.0f;
- cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y);
- cXyz sp2c, sp38;
- sp2c.x = 0.0f;
- sp2c.y = 0.0f;
- sp2c.z = i_this->enemy.speedF;
- MtxPosition(&sp2c, &sp38);
- i_this->enemy.speed.x = sp38.x;
- i_this->enemy.speed.z = sp38.z;
- i_this->enemy.current.pos += i_this->enemy.speed;
- i_this->enemy.speed.y += i_this->enemy.gravity;
+ cLib_addCalc2(&actor->speedF, target_speedF, 1.0f, 5.0f);
+ actor->gravity = AREG_F(15) + -10.0f;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = actor->speedF;
+ MtxPosition(&work, &offset);
+ actor->speed.x = offset.x;
+ actor->speed.z = offset.z;
+ actor->current.pos += actor->speed;
+ actor->speed.y += actor->gravity;
}
-static void cam_3d_morf(e_mk_class* i_this, f32 param_2) {
- cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0xc5c.x, param_2, i_this->field_0xc74.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0xc5c.y, param_2, i_this->field_0xc74.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0xc5c.z, param_2, i_this->field_0xc74.z * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.x, i_this->field_0xc50.x, param_2, i_this->field_0xc68.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.y, i_this->field_0xc50.y, param_2, i_this->field_0xc68.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.z, i_this->field_0xc50.z, param_2, i_this->field_0xc68.z * i_this->field_0xc84);
+static void cam_3d_morf(e_mk_class* i_this, f32 i_scale) {
+ cLib_addCalc2(&i_this->camCenter.x, i_this->camCenterTarget.x, i_scale, i_this->distToCamCenterTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.y, i_this->camCenterTarget.y, i_scale, i_this->distToCamCenterTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.z, i_this->camCenterTarget.z, i_scale, i_this->distToCamCenterTarget.z * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.x, i_this->camEyeTarget.x, i_scale, i_this->distToCamEyeTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.y, i_this->camEyeTarget.y, i_scale, i_this->distToCamEyeTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.z, i_this->camEyeTarget.z, i_scale, i_this->distToCamEyeTarget.z * i_this->camStepScale1);
}
+/* Camera logic for cutscene at start of Ook battle */
static void demo_camera_start(e_mk_class* i_this) {
- fopAc_ac_c* a_this = &i_this->enemy;
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
- fopAc_ac_c* actor_sp1c; // sp1c
- fopAc_ac_c* actor_sp18; // sp18
- fopAc_ac_c* actor_sp14; // sp14
- actor_sp14 = fopAcM_SearchByID(i_this->field_0x708);
+ fopAc_ac_c* deku_baba_1_p;
+ fopAc_ac_c* deku_baba_2_p;
+ fopAc_ac_c* boomerang_p;
+ boomerang_p = fopAcM_SearchByID(i_this->boomerangId);
camera_class* camera1 = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
camera_class* camera2 = (camera_class*)dComIfGp_getCamera(0);
- cXyz sp34, sp40, sp4c, sp58;
+ cXyz work, offset, offset_2, unused;
- switch (i_this->mDemoMode) {
+ switch (i_this->demoSubMode) {
case 0:
break;
+
case 1:
- if (!a_this->eventInfo.checkCommandDemoAccrpt()) {
- fopAcM_orderPotentialEvent(a_this, 2, 0xffff, 0);
- a_this->eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ if (!actor->eventInfo.checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(actor, 2, 0xFFFF, 0);
+ actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e);
return;
}
camera1->mCamera.Stop();
- i_this->mDemoMode = 2;
- i_this->mDemoCamTimer = 0;
- i_this->mDemoCamFovy = 50.0f + NREG_F(10);
+ i_this->demoSubMode = 2;
+ i_this->demoCamCounter = 0;
+ i_this->demoCamFovy = 50.0f + NREG_F(10);
camera1->mCamera.SetTrimSize(3);
- i_this->field_0xc90 = 2500.0f + NREG_F(11);
+ i_this->field_0xc90 = 2500.0f + NREG_F(1);
daPy_getPlayerActorClass()->changeOriginalDemo();
Z2GetAudioMgr()->bgmStreamPrepare(0x200000D);
- i_this->mCamEye = camera2->lookat.eye;
- i_this->mCamCenter = camera2->lookat.center;
- i_this->field_0xc50.set(-271.0f, 4559.0f, -7241.0f);
- i_this->field_0xc5c.set(-70.0f, 4378.0f, -6233.0f);
+ i_this->camEye = camera2->lookat.eye;
+ i_this->camCenter = camera2->lookat.center;
+ i_this->camEyeTarget.set(-271.0f, 4559.0f, -7241.0f);
+ i_this->camCenterTarget.set(-70.0f, 4378.0f, -6233.0f);
- i_this->field_0xc68.x = fabsf(i_this->field_0xc50.x - i_this->mCamEye.x);
- i_this->field_0xc68.y = fabsf(i_this->field_0xc50.y - i_this->mCamEye.y);
- i_this->field_0xc68.z = fabsf(i_this->field_0xc50.z - i_this->mCamEye.z);
- i_this->field_0xc74.x = fabsf(i_this->field_0xc5c.x - i_this->mCamCenter.x);
- i_this->field_0xc74.y = fabsf(i_this->field_0xc5c.y - i_this->mCamCenter.y);
- i_this->field_0xc74.z = fabsf(i_this->field_0xc5c.z - i_this->mCamCenter.z);
+ i_this->distToCamEyeTarget.x = fabsf(i_this->camEyeTarget.x - i_this->camEye.x);
+ i_this->distToCamEyeTarget.y = fabsf(i_this->camEyeTarget.y - i_this->camEye.y);
+ i_this->distToCamEyeTarget.z = fabsf(i_this->camEyeTarget.z - i_this->camEye.z);
+ i_this->distToCamCenterTarget.x = fabsf(i_this->camCenterTarget.x - i_this->camCenter.x);
+ i_this->distToCamCenterTarget.y = fabsf(i_this->camCenterTarget.y - i_this->camCenter.y);
+ i_this->distToCamCenterTarget.z = fabsf(i_this->camCenterTarget.z - i_this->camCenter.z);
- dComIfGp_getEvent().startCheckSkipEdge(a_this);
+ dComIfGp_getEvent().startCheckSkipEdge(actor);
// fallthrough
case 2:
- if (i_this->mDemoCamTimer == (s16)(8 + VREG_S(0))) {
+ if (i_this->demoCamCounter == (s16)(8 + VREG_S(0))) {
((daPy_py_c*)daPy_getPlayerActorClass())->changeDemoMode(25, 0, 0, 0);
}
- if (i_this->mDemoCamTimer >= (s16)(35 + VREG_S(1))) {
+ if (i_this->demoCamCounter >= (s16)(35 + VREG_S(1))) {
cam_3d_morf(i_this, 0.1f);
- cLib_addCalc2(&i_this->field_0xc84, 0.03f + VREG_F(1), 1.0f, 0.0005f + VREG_F(2));
+ cLib_addCalc2(&i_this->camStepScale1, 0.03f + VREG_F(1), 1.0f, 0.0005f + VREG_F(2));
}
- if (i_this->mDemoCamTimer >= (s16)(160 + VREG_S(2))) {
- i_this->mDemoCamTimer = 0;
- i_this->mDemoMode = 3;
+ if (i_this->demoCamCounter >= (s16)(160 + VREG_S(3))) {
+ i_this->demoCamCounter = 0;
+ i_this->demoSubMode = 3;
}
break;
+
case 3:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = 0.0f;
- sp34.y = 150.0f + NREG_F(6);
- sp34.z = 250.0f + NREG_F(7);
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye = a_this->current.pos + sp40;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 150.0f + NREG_F(8);
- if (i_this->mDemoCamTimer >= 60) {
- i_this->mDemoCamTimer = 0;
- i_this->mDemoMode = 4;
- i_this->mMode = 2;
+ work.x = 0.0f;
+ work.y = 150.0f + NREG_F(6);
+ work.z = 250.0f + NREG_F(7);
+ MtxPosition(&work, &offset);
+ i_this->camEye = actor->current.pos + offset;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += 150.0f + NREG_F(8);
+ if (i_this->demoCamCounter >= 60) {
+ i_this->demoCamCounter = 0;
+ i_this->demoSubMode = 4;
+ i_this->mode = 2;
}
break;
- case 4:
+ case 4:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = 0.0f;
- sp34.y = 150.0f + NREG_F(9);
- sp34.z = 700.0f + NREG_F(10);
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye = a_this->current.pos + sp40;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 230.0f + NREG_F(11);
-
- if (i_this->mDemoCamTimer == 35) {
+ work.x = 0.0f;
+ work.y = 150.0f + NREG_F(9);
+ work.z = 700.0f + NREG_F(10);
+ MtxPosition(&work, &offset);
+ i_this->camEye = actor->current.pos + offset;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += 230.0f + NREG_F(11);
+
+ if (i_this->demoCamCounter == 35) {
daPy_getPlayerActorClass()->changeDemoMode(12, 0, 1, 0);
}
- if (i_this->mDemoCamTimer >= (s16)(95 + XREG_S(0))) {
- i_this->mDemoCamTimer = 0;
- i_this->mDemoMode = 5;
+ if (i_this->demoCamCounter >= (s16)(95 + XREG_S(0))) {
+ i_this->demoCamCounter = 0;
+ i_this->demoSubMode = 5;
i_this->field_0xc9c = 1100.0f;
- i_this->field_0xc84 = 0.0f;
+ i_this->camStepScale1 = 0.0f;
i_this->field_0xc90 = 2500.0f + NREG_F(12);
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
cMtx_XrotM(*calc_mtx, 1700 + NREG_S(2));
- sp34.x = 0.0f;
- sp34.y = 0.0f;
- sp34.z = i_this->field_0xc90;
- MtxPosition(&sp34, &sp4c);
- sp4c += a_this->current.pos;
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = i_this->field_0xc90;
+ MtxPosition(&work, &offset_2);
+ offset_2 += actor->current.pos;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = NREG_F(2) - 300.0f;
- sp34.y = 0.0f;
- sp34.z = 0.0f;
- MtxPosition(&sp34, &sp40);
- sp4c += sp40;
- sp34.x = 100.0f + NREG_F(13);
- sp34.y = 0.0f;
- sp34.z = 200.0f + NREG_F(14);
- MtxPosition(&sp34, &sp40);
- sp40 += sp4c;
- sp40.y = player->current.pos.y;
- player->setPlayerPosAndAngle(&sp40, a_this->current.angle.y + (u16)-0x8000, 0);
+ work.x = NREG_F(2) - 300.0f;
+ work.y = 0.0f;
+ work.z = 0.0f;
+ MtxPosition(&work, &offset);
+ offset_2 += offset;
+ work.x = 100.0f + NREG_F(13);
+ work.y = 0.0f;
+ work.z = 200.0f + NREG_F(14);
+ MtxPosition(&work, &offset);
+ offset += offset_2;
+ offset.y = player->current.pos.y;
+ player->setPlayerPosAndAngle(&offset, actor->current.angle.y + (u16)-0x8000, 0);
}
break;
+
case 5:
i_this->field_0xc90 = 2500.0f + NREG_F(12) - 50.0f;
i_this->field_0xc9c = -700.0f + TREG_F(14) + 200.0f + 1000.0f;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
cMtx_XrotM(*calc_mtx, i_this->field_0xc9c);
- sp34.x = 0.0f;
- sp34.y = 0.0f;
- sp34.z = 3500.0f + NREG_F(0);
- MtxPosition(&sp34, &i_this->mCamCenter);
- i_this->mCamCenter += a_this->current.pos;
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = 3500.0f + NREG_F(0);
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += actor->current.pos;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
cMtx_XrotM(*calc_mtx, 2000 + NREG_S(2));
- sp34.x = 0.0f;
- sp34.y = 0.0f;
- sp34.z = i_this->field_0xc90;
- MtxPosition(&sp34, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = i_this->field_0xc90;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = NREG_F(2) - 300.0f;
- sp34.y = 0.0f;
- sp34.z = 0.0f;
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye += sp40;
+ work.x = NREG_F(2) - 300.0f;
+ work.y = 0.0f;
+ work.z = 0.0f;
+ MtxPosition(&work, &offset);
+ i_this->camEye += offset;
- if (i_this->mDemoCamTimer == 5) {
+ if (i_this->demoCamCounter == 5) {
daPy_getPlayerActorClass()->changeDemoMode(23, 1, 2, 0);
}
- if (i_this->mDemoCamTimer >= 50) {
- i_this->mDemoCamTimer = 0;
- i_this->mDemoMode = 6;
+ if (i_this->demoCamCounter >= 50) {
+ i_this->demoCamCounter = 0;
+ i_this->demoSubMode = 6;
}
break;
+
case 6:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = 0.0f;
- sp34.y = 150.0f + NREG_F(9);
- sp34.z = 700.0f + NREG_F(10);
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye = a_this->current.pos + sp40;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 230.0f + NREG_F(11);
+ work.x = 0.0f;
+ work.y = 150.0f + NREG_F(9);
+ work.z = 700.0f + NREG_F(10);
+ MtxPosition(&work, &offset);
+ i_this->camEye = actor->current.pos + offset;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += 230.0f + NREG_F(11);
- if (i_this->mDemoCamTimer == 2) {
- i_this->field_0x707 = 7;
+ if (i_this->demoCamCounter == 2) {
+ i_this->unkFlag4 = 7;
}
- if (i_this->mDemoCamTimer >= 10) {
- i_this->mMode = 4;
- i_this->mDemoMode = 100;
- sp34.x = 200.0f + JREG_F(14);
- sp34.y = 0.0f;
- sp34.z = -150.0f + JREG_F(15);
- MtxPosition(&sp34, &sp40);
- sp40 += player->current.pos;
- player->setPlayerPosAndAngle(&sp40, a_this->current.angle.y + (u16)-0x8000, 0);
+ if (i_this->demoCamCounter >= 10) {
+ i_this->mode = 4;
+ i_this->demoSubMode = 100;
+ work.x = 200.0f + JREG_F(14);
+ work.y = 0.0f;
+ work.z = -150.0f + JREG_F(15);
+ MtxPosition(&work, &offset);
+ offset += player->current.pos;
+ player->setPlayerPosAndAngle(&offset, actor->current.angle.y + (u16)-0x8000, 0);
}
break;
+
case 7:
- if (actor_sp14 == NULL) break;
+ if (boomerang_p == NULL) break;
- i_this->mCamCenter = actor_sp14->current.pos;
+ i_this->camCenter = boomerang_p->current.pos;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = 300.0f + NREG_F(16);
- sp34.y = -200.0f + NREG_F(17);
- sp34.z = 1000.0f + NREG_F(18);
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye = a_this->current.pos + sp40;
- i_this->mDemoMode = 8;
- i_this->mDemoCamTimer = 0;
+ work.x = 300.0f + NREG_F(16);
+ work.y = -200.0f + NREG_F(17);
+ work.z = 1000.0f + NREG_F(18);
+ MtxPosition(&work, &offset);
+ i_this->camEye = actor->current.pos + offset;
+ i_this->demoSubMode = 8;
+ i_this->demoCamCounter = 0;
// fallthrough
case 8:
- cLib_addCalc2(&i_this->mCamCenter.x, actor_sp14->current.pos.x, 0.2f, 100.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, actor_sp14->current.pos.y + i_this->field_0xc8c, 0.2f, 100.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, actor_sp14->current.pos.z, 0.2f, 100.0f);
+ cLib_addCalc2(&i_this->camCenter.x, boomerang_p->current.pos.x, 0.2f, 100.0f);
+ cLib_addCalc2(&i_this->camCenter.y, boomerang_p->current.pos.y + i_this->field_0xc8c, 0.2f, 100.0f);
+ cLib_addCalc2(&i_this->camCenter.z, boomerang_p->current.pos.z, 0.2f, 100.0f);
cLib_addCalc2(&i_this->field_0xc8c, -300.0f + JREG_F(7), 1.0f, 5.0f + JREG_F(8));
- i_this->mCamEye += actor_sp14->speed * (0.45f + TREG_F(19));
- i_this->mCamEye.y -= 3.0f + JREG_F(3);
- if (i_this->mDemoCamTimer < 65) {
+ i_this->camEye += boomerang_p->speed * (0.45f + TREG_F(19));
+ i_this->camEye.y -= 3.0f + JREG_F(3);
+ if (i_this->demoCamCounter < 65) {
break;
}
- i_this->mDemoMode = 9;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 9;
+ i_this->demoCamCounter = 0;
// fallthrough
case 9:
- actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID);
- actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2);
- if (i_this->mDemoCamTimer == 0) {
- actor_sp18->current.pos.x = player->current.pos.x - 200.0f;
- actor_sp18->current.pos.y = player->current.pos.y + 500.0f;
- actor_sp18->current.pos.z = player->current.pos.z - 1200.0f;
- actor_sp18->speed.y = 0.0f;
- actor_sp1c->current.pos.x = player->current.pos.x + 200.0f;
- actor_sp1c->current.pos.y = player->current.pos.y + 1000.0f;
- actor_sp1c->current.pos.z = player->current.pos.z - 1000.0f;
- actor_sp1c->speed.y = 0.0f;
- i_this->mCamCenter.x = actor_sp18->current.pos.x;
- i_this->mCamCenter.z = actor_sp18->current.pos.z;
+ deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1);
+ deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2);
+ if (i_this->demoCamCounter == 0) {
+ deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f;
+ deku_baba_1_p->current.pos.y = player->current.pos.y + 500.0f;
+ deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f;
+ deku_baba_1_p->speed.y = 0.0f;
+ deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f;
+ deku_baba_2_p->current.pos.y = player->current.pos.y + 1000.0f;
+ deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f;
+ deku_baba_2_p->speed.y = 0.0f;
+ i_this->camCenter.x = deku_baba_1_p->current.pos.x;
+ i_this->camCenter.z = deku_baba_1_p->current.pos.z;
}
- i_this->mCamEye.x = player->current.pos.x + 100.0f + ZREG_F(0);
- i_this->mCamEye.y = player->current.pos.y + 100.0f + ZREG_F(1);
- i_this->mCamEye.z = player->current.pos.z - 400.0f + ZREG_F(2);
- i_this->mCamCenter.y = actor_sp18->current.pos.y + ZREG_F(3);
+ i_this->camEye.x = player->current.pos.x + 100.0f + ZREG_F(0);
+ i_this->camEye.y = player->current.pos.y + 100.0f + ZREG_F(1);
+ i_this->camEye.z = player->current.pos.z - 400.0f + ZREG_F(2);
+ i_this->camCenter.y = deku_baba_1_p->current.pos.y + ZREG_F(3);
- cLib_addCalc2(&i_this->mCamCenter.x, actor_sp18->current.pos.x + 100.0f, 0.1f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, actor_sp18->current.pos.z, 0.1f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.x, deku_baba_1_p->current.pos.x + 100.0f, 0.1f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.z, deku_baba_1_p->current.pos.z, 0.1f, 50.0f);
- if (i_this->mDemoCamTimer <= (s16)(60 + AREG_S(0))) {
- actor_sp14->current.pos -= actor_sp14->speed;
+ if (i_this->demoCamCounter <= (s16)(60 + AREG_S(0))) {
+ boomerang_p->current.pos -= boomerang_p->speed;
}
- if (i_this->mDemoCamTimer >= (s16)(80 + AREG_S(0))) {
- i_this->mDemoMode = 10;
- i_this->mDemoCamTimer = 0;
+ if (i_this->demoCamCounter >= (s16)(80 + AREG_S(0))) {
+ i_this->demoSubMode = 10;
+ i_this->demoCamCounter = 0;
}
break;
+
case 10:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp34.x = 0.0f;
- sp34.y = 150.0f + NREG_F(9);
- sp34.z = 700.0f + NREG_F(10);
- MtxPosition(&sp34, &sp40);
- i_this->mCamEye = a_this->current.pos + sp40;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 230.0f + NREG_F(11);
-
- 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;
+ work.x = 0.0f;
+ work.y = 150.0f + NREG_F(9);
+ work.z = 700.0f + NREG_F(10);
+ MtxPosition(&work, &offset);
+ i_this->camEye = actor->current.pos + offset;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += 230.0f + NREG_F(11);
+
+ deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1);
+ deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2);
+ deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f;
+ deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f;
+ deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f;
+ deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f;
break;
+
case 11:
- if (i_this->mDemoCamTimer >= (s16)(30 + JREG_S(9))) {
+ if (i_this->demoCamCounter >= (s16)(30 + JREG_S(9))) {
cMtx_YrotS(*calc_mtx, player->shape_angle.y);
- sp34.x = 0.0f;
- sp34.y = 200.0f;
- sp34.z = -400.0f;
- MtxPosition(&sp34, &i_this->mCamEye);
- i_this->mCamEye += player->current.pos;
- i_this->mCamCenter = player->current.pos;
- i_this->mCamCenter.y += 100.0f;
- i_this->field_0xc30 = 10;
- fopAcM_OffStatus(a_this, 0x4000);
+ work.x = 0.0f;
+ work.y = 200.0f;
+ work.z = -400.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += player->current.pos;
+ i_this->camCenter = player->current.pos;
+ i_this->camCenter.y += 100.0f;
+ i_this->demoMode = e_mk_class::DEMO_MODE_FINISH;
+ fopAcM_OffStatus(actor, 0x4000);
Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY);
}
- actor_sp18 = fopAcM_SearchByID(i_this->mBabaChildID);
- actor_sp1c = fopAcM_SearchByID(i_this->mBabaChildID2);
- actor_sp18->current.pos.x = player->current.pos.x - 200.0f;
- actor_sp18->current.pos.z = player->current.pos.z - 1200.0f;
- actor_sp1c->current.pos.x = player->current.pos.x + 200.0f;
- actor_sp1c->current.pos.z = player->current.pos.z - 1000.0f;
+ deku_baba_1_p = fopAcM_SearchByID(i_this->dbId1);
+ deku_baba_2_p = fopAcM_SearchByID(i_this->dbId2);
+ deku_baba_1_p->current.pos.x = player->current.pos.x - 200.0f;
+ deku_baba_1_p->current.pos.z = player->current.pos.z - 1200.0f;
+ deku_baba_2_p->current.pos.x = player->current.pos.x + 200.0f;
+ deku_baba_2_p->current.pos.z = player->current.pos.z - 1000.0f;
break;
+
case 100:
break;
}
if (dComIfGp_getEvent().checkSkipEdge()) {
- u8 i_no = (fopAcM_GetParam(i_this) & 0xff0000) >> 16;
- if (i_no != 0xff) {
- dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(a_this));
+ u8 sw_bit = (fopAcM_GetParam(actor) & 0xff0000) >> 16;
+ if (sw_bit != 0xff) {
+ dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor));
}
- dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(a_this), 0, -1);
+ dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(actor), 0, -1);
}
}
static void demo_camera_end(e_mk_class* i_this) {
- fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy;
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
- fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_SearchByID(i_this->field_0x708);
+ fopAc_ac_c* boomerang_p = (fopAc_ac_c*)fopAcM_SearchByID(i_this->boomerangId);
camera_class* camera = (camera_class*)dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
- cXyz sp2c, i_pos, sp44, sp50;
+ cXyz work, pos, unused_1, unused_2;
- switch (i_this->mDemoMode) {
+ switch (i_this->demoSubMode) {
case 1:
- if (!a_this->eventInfo.checkCommandDemoAccrpt()) {
- fopAcM_orderPotentialEvent(a_this, 2, 0xffff, 0);
- a_this->eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ if (!actor->eventInfo.checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(actor, 2, 0xffff, 0);
+ actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e);
return;
}
camera->mCamera.Stop();
- i_this->mDemoMode = 2;
- i_this->mDemoCamTimer = 0;
- i_this->mDemoCamFovy = 55.0f;
+ i_this->demoSubMode = 2;
+ i_this->demoCamCounter = 0;
+ i_this->demoCamFovy = NREG_F(10) + 55.0f;
camera->mCamera.SetTrimSize(3);
daPy_getPlayerActorClass()->changeOriginalDemo();
- actor->current.pos.y += 10000.0f;
+ boomerang_p->current.pos.y += 10000.0f;
Z2GetAudioMgr()->bgmStreamPrepare(0x200000E);
dComIfGs_onStageMiddleBoss();
// fallthrough
case 2:
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = 0.0f;
- sp2c.y = 130.0f;
- sp2c.z = 0.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += a_this->current.pos;
- sp2c.x = 400.0f;
- sp2c.y = 100.0f;
- sp2c.z = 200.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
- sp2c.x = 0.0f;
- sp2c.y = 0.0f;
- sp2c.z = -300.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += a_this->current.pos;
- player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0);
-
- if (i_this->mDemoCamTimer < 30) {
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = AREG_F(0);
+ work.y = AREG_F(1) + 130.0f;
+ work.z = AREG_F(2);
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += actor->current.pos;
+ work.x = AREG_F(3) + 400.0f;
+ work.y = AREG_F(4) + 100.0f;
+ work.z = AREG_F(5) + 200.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
+ work.x = AREG_F(6);
+ work.y = AREG_F(7);
+ work.z = AREG_F(8) + -300.0f;
+ MtxPosition(&work, &pos);
+ pos += actor->current.pos;
+ player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0);
+
+ if (i_this->demoCamCounter < (s16)(AREG_S(0) + 30)) {
return;
}
- i_this->mDemoMode++;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode++;
+ i_this->demoCamCounter = 0;
return;
case 3:
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = -300.0f;
- sp2c.y = 0.0f;
- sp2c.z = -150.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += a_this->current.pos;
- sp2c.x = 100.0f;
- sp2c.y = 1000.0f;
- sp2c.z = 0.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = AREG_F(0) + -300.0f;
+ work.y = AREG_F(1);
+ work.z = AREG_F(2) + -150.0f;
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += actor->current.pos;
+ work.x = AREG_F(3) + 100.0f;
+ work.y = AREG_F(4) + 1000.0f;
+ work.z = AREG_F(5);
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
return;
case 4:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 250.0f;
- sp2c.y = 0.0f;
- sp2c.z = -200.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += STAGE_CENTER_POS;
- sp2c.x = 250.0f;
- sp2c.y = 700.0f;
- sp2c.z = 300.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
+ work.x = AREG_F(6) + 250.0f;
+ work.y = AREG_F(7);
+ work.z = AREG_F(8) + -200.0f;
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += STAGE_CENTER_POS;
+ work.x = AREG_F(9) + 250.0f;
+ work.y = AREG_F(10) + 700.0f;
+ work.z = AREG_F(11) + 300.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
return;
case 5:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 450.0f;
- sp2c.y = 0.0f;
- sp2c.z = -100.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += STAGE_CENTER_POS;
- sp2c.x = 250.0f;
- sp2c.y = 300.0f;
- sp2c.z = 300.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
- sp2c.x = 800.0f;
- sp2c.y = 100.0f;
- sp2c.z = 100.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- i_this->field_0xc68.x = fabsf(i_pos.x - i_this->mCamEye.x) * 0.02f;
- i_this->field_0xc68.y = fabsf(i_pos.y - i_this->mCamEye.y) * 0.02f;
- i_this->field_0xc68.z = fabsf(i_pos.z - i_this->mCamEye.z) * 0.02f;
- i_this->mDemoMode = 6;
- i_this->field_0xc84 = 0;
- sp2c.x = 1400.0f;
- sp2c.y = 0.0f;
- sp2c.z = 500.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0);
+ work.x = AREG_F(6) + 450.0f;
+ work.y = AREG_F(7);
+ work.z = AREG_F(8) + -100.0f;
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += STAGE_CENTER_POS;
+ work.x = AREG_F(9) + 250.0f;
+ work.y = AREG_F(10) + 300.0f;
+ work.z = AREG_F(11) + 300.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
+ work.x = AREG_F(9) + 800.0f;
+ work.y = AREG_F(10) + 100.0f;
+ work.z = AREG_F(11) + 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ i_this->distToCamEyeTarget.x = fabsf(pos.x - i_this->camEye.x) * 0.02f;
+ i_this->distToCamEyeTarget.y = fabsf(pos.y - i_this->camEye.y) * 0.02f;
+ i_this->distToCamEyeTarget.z = fabsf(pos.z - i_this->camEye.z) * 0.02f;
+ i_this->demoSubMode = 6;
+ i_this->camStepScale1 = 0;
+ work.x = WREG_F(12) + 1400.0f;
+ work.y = WREG_F(13);
+ work.z = WREG_F(14) + 500.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0);
// fallthrough
case 6:
- cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0x5e4.x, 0.1f, i_this->field_0xc84 * 20.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0x5e4.y + 30.0f, 0.1f, i_this->field_0xc84 * 20.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0x5e4.z, 0.1f, i_this->field_0xc84 * 20.0f);
+ cLib_addCalc2(&i_this->camCenter.x, i_this->crownPos.x, 0.1f, i_this->camStepScale1 * 20.0f);
+ cLib_addCalc2(&i_this->camCenter.y, i_this->crownPos.y + 30.0f + WREG_F(11), 0.1f, i_this->camStepScale1 * 20.0f);
+ cLib_addCalc2(&i_this->camCenter.z, i_this->crownPos.z, 0.1f, i_this->camStepScale1 * 20.0f);
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 800.0f;
- sp2c.y = 100.0f;
- sp2c.z = 100.0f;
- MtxPosition(&sp2c, &i_pos);
+ work.x = AREG_F(9) + 800.0f;
+ work.y = AREG_F(10) + 100.0f;
+ work.z = AREG_F(11) + 100.0f;
+ MtxPosition(&work, &pos);
- i_pos += STAGE_CENTER_POS;
- cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f , 0.1f);
+ pos += STAGE_CENTER_POS;
+ cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f , NREG_F(4) + 0.1f);
- if (i_this->mDemoCamTimer >= 10) {
- cLib_addCalc2(&i_this->mCamEye.x, i_pos.x, 0.1f, i_this->field_0xc68.x * i_this->field_0xc88);
- cLib_addCalc2(&i_this->mCamEye.y, i_pos.y, 0.1f, i_this->field_0xc68.y * i_this->field_0xc88);
- cLib_addCalc2(&i_this->mCamEye.z, i_pos.z, 0.1f, i_this->field_0xc68.z * i_this->field_0xc88);
- cLib_addCalc2(&i_this->field_0xc88, 1.0f, 1.0f, 0.1f);
+ if (i_this->demoCamCounter >= 10) {
+ cLib_addCalc2(&i_this->camEye.x, pos.x, 0.1f, i_this->distToCamEyeTarget.x * i_this->camStepScale2);
+ cLib_addCalc2(&i_this->camEye.y, pos.y, 0.1f, i_this->distToCamEyeTarget.y * i_this->camStepScale2);
+ cLib_addCalc2(&i_this->camEye.z, pos.z, 0.1f, i_this->distToCamEyeTarget.z * i_this->camStepScale2);
+ cLib_addCalc2(&i_this->camStepScale2, 1.0f, 1.0f, NREG_F(4) + 0.1f);
}
- if (i_this->mDemoCamTimer == 40) {
- Z2GetAudioMgr()->seStart(Z2SE_MK_DARK_INSECT_DEATH, &i_this->field_0x5e4, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ if (i_this->demoCamCounter == 40) {
+ Z2GetAudioMgr()->seStart(Z2SE_MK_DARK_INSECT_DEATH, &i_this->crownPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
- if (i_this->mDemoCamTimer < 90) {
+ if (i_this->demoCamCounter < 90) {
return;
}
- if (i_this->mDemoCamTimer == 90) {
- sp2c.x = 1300.0f;
- sp2c.y = 0.0f;
- sp2c.z = 0.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- player->setPlayerPosAndAngle(&i_pos, a_this->shape_angle.y, 0);
+ if (i_this->demoCamCounter == 90) {
+ work.x = WREG_F(12) + 1300.0f;
+ work.y = WREG_F(13);
+ work.z = WREG_F(14);
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ player->setPlayerPosAndAngle(&pos, (s16)actor->shape_angle.y, 0);
player->changeDemoMode(3, 1, 0, 0);
- sp2c.x = 170.0f;
- sp2c.y = 0.0f;
- sp2c.z = 0.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += i_this->field_0x5e4;
- player->changeDemoPos0(&i_pos);
+ work.x = WREG_F(15) + 170.0f;
+ work.y = 0.0f;
+ work.z = 0.0f;
+ MtxPosition(&work, &pos);
+ pos += i_this->crownPos;
+ player->changeDemoPos0(&pos);
}
- if (i_this->mDemoCamTimer == 130) {
- ok_anm_init(i_this, 42, 1.0f, 0, 1.0f);
+ if (i_this->demoCamCounter == 130) {
+ ok_anm_init(i_this, dRes_INDEX_E_MK_BCK_OK_DEMO_DIE_e, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f);
}
- if (i_this->mDemoCamTimer == 180) {
- i_this->field_0x60c = 0;
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = 0.0f;
- sp2c.y = 0.0f;
- sp2c.z = -20.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += i_this->field_0x5e4;
- fopAcM_createDisappear(a_this, &i_pos, 5, 0, 0xff);
+ if (i_this->demoCamCounter == 180) {
+ i_this->crownStatus = 0;
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = 0.0f;
+ work.y = 0.0f;
+ work.z = AREG_F(2) + -20.0f;
+ MtxPosition(&work, &pos);
+ pos += i_this->crownPos;
+ fopAcM_createDisappear(actor, &pos, 5, 0, 0xff);
}
- if (i_this->mDemoCamTimer != 248) {
+ if (i_this->demoCamCounter != 248) {
return;
}
- i_this->mDemoMode++;
- i_this->mDemoCamTimer = 0;
- i_this->mMode = 5;
+ i_this->demoSubMode++;
+ i_this->demoCamCounter = 0;
+ i_this->mode = 5;
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 300.0f;
- sp2c.y = 0.0f;
- sp2c.z = 300.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- a_this->current.pos.x = i_pos.x;
- a_this->current.pos.z = i_pos.z;
- sp2c.x = 130.0f;
- sp2c.y = 100.0f;
- sp2c.z = 100.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 190.0f;
- sp2c.x = 400.0f;
- sp2c.y = 0.0f;
- sp2c.z = 700.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- sp2c.x = STAGE_CENTER_POS.x - i_pos.x;
- sp2c.z = STAGE_CENTER_POS.z - i_pos.z;
- player->setPlayerPosAndAngle(&i_pos, cM_atan2s(sp2c.x, sp2c.z), 0);
- a_this->current.angle.y = player->shape_angle.y;
+ work.x = AREG_F(9) + 300.0f;
+ work.y = AREG_F(10);
+ work.z = AREG_F(11) + 300.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ actor->current.pos.x = pos.x;
+ actor->current.pos.z = pos.z;
+ work.x = AREG_F(3) + 50.0f + 80.0f;
+ work.y = AREG_F(4) + 120.0f - 20.0f;
+ work.z = AREG_F(5) + 100.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += AREG_F(12) + 150.0f + 40.0f;
+ work.x = AREG_F(6) + 400.0f;
+ work.y = AREG_F(7);
+ work.z = AREG_F(8) + 700.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ work.x = STAGE_CENTER_POS.x - pos.x;
+ work.z = STAGE_CENTER_POS.z - pos.z;
+ player->setPlayerPosAndAngle(&pos, cM_atan2s(work.x, work.z), 0);
+ actor->current.angle.y = player->shape_angle.y;
Z2GetAudioMgr()->bgmStreamPlay();
// fallthrough
case 7:
- return;
+ break;
case 8:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 500.0f;
- sp2c.y = 300.0f;
- sp2c.z = 0.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += STAGE_CENTER_POS;
- sp2c.x = 50.0f;
- sp2c.y = 70.0f;
- sp2c.z = 1100.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
+ work.x = AREG_F(0) + 500.0f;
+ work.y = AREG_F(1) + 300.0f;
+ work.z = AREG_F(2);
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += STAGE_CENTER_POS;
+ work.x = AREG_F(3) + 50.0f;
+ work.y = AREG_F(4) + 70.0f;
+ work.z = AREG_F(5) + 1100.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
return;
case 9:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 5500.0f;
- sp2c.y = 2300.0f;
- sp2c.z = -5000.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += STAGE_CENTER_POS;
- sp2c.x = 450.0f;
- sp2c.y = 370.0f;
- sp2c.z = -100.0f;
- MtxPosition(&sp2c,&i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
- if (i_this->mDemoCamTimer < 300) return;
- i_this->mDemoMode = 10;
- i_this->mDemoCamTimer = 0;
- sp2c.x = 400.0f;
- sp2c.y = 0.0f;
- sp2c.z = 600.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- sp2c.x = STAGE_CENTER_POS.x - player->current.pos.x;
- sp2c.z = STAGE_CENTER_POS.z - player->current.pos.z;
- player->setPlayerPosAndAngle(&i_pos, cM_atan2s(sp2c.x, sp2c.z), 0);
+ work.x = AREG_F(0) + 5500.0f;
+ work.y = AREG_F(1) + 2300.0f;
+ work.z = AREG_F(2) + -5000.0f;
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += STAGE_CENTER_POS;
+ work.x = AREG_F(3) + 450.0f;
+ work.y = AREG_F(4) + 370.0f;
+ work.z = AREG_F(5) + -100.0f;
+ MtxPosition(&work,&i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
+ if (i_this->demoCamCounter < 300) return;
+ i_this->demoSubMode = 10;
+ i_this->demoCamCounter = 0;
+ work.x = AREG_F(16) + 400.0f;
+ work.y = AREG_F(17);
+ work.z = AREG_F(18) + 700.0f - 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ work.x = STAGE_CENTER_POS.x - player->current.pos.x;
+ work.z = STAGE_CENTER_POS.z - player->current.pos.z;
+ player->setPlayerPosAndAngle(&pos, cM_atan2s(work.x, work.z), 0);
return;
case 10:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 0.0f;
- sp2c.y = 300.0f;
- sp2c.z = -100.0f;
- MtxPosition(&sp2c, &i_this->mCamCenter);
- i_this->mCamCenter += STAGE_CENTER_POS;
- sp2c.x = 800.0f;
- sp2c.y = 0.0f;;
- sp2c.z = 500.0f;
- MtxPosition(&sp2c ,&i_pos);
- i_pos += STAGE_CENTER_POS;
- i_this->field_0xc74.x = fabsf(i_pos.x - i_this->mCamCenter.x) * 0.01f;
- i_this->field_0xc74.y = fabsf(i_pos.y - i_this->mCamCenter.y) * 0.01f;
- i_this->field_0xc74.z = fabsf(i_pos.z - i_this->mCamCenter.z) * 0.01f;
- sp2c.x = 450.0f;
- sp2c.y = 70.0f;
- sp2c.z = 900.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += STAGE_CENTER_POS;
- sp2c.x = -150.0f;
- sp2c.y = 45.0f;
- sp2c.z = 700.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- i_this->field_0xc68.x = fabsf(i_pos.x - i_this->mCamEye.x) * 0.01f;
- i_this->field_0xc68.y = fabsf(i_pos.y - i_this->mCamEye.y) * 0.01f;
- i_this->field_0xc68.z = fabsf(i_pos.z - i_this->mCamEye.z) * 0.01f;
- i_this->field_0xc84 = 0.0f;
- i_this->mDemoMode = 11;
+ work.x = AREG_F(0);
+ work.y = AREG_F(1) + 300.0f;
+ work.z = AREG_F(2) - 100.0f;
+ MtxPosition(&work, &i_this->camCenter);
+ i_this->camCenter += STAGE_CENTER_POS;
+ work.x = AREG_F(0) + 800.0f;
+ work.y = AREG_F(1);
+ work.z = AREG_F(2) + 600.0f - 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ i_this->distToCamCenterTarget.x = fabsf(pos.x - i_this->camCenter.x) * 0.01f;
+ i_this->distToCamCenterTarget.y = fabsf(pos.y - i_this->camCenter.y) * 0.01f;
+ i_this->distToCamCenterTarget.z = fabsf(pos.z - i_this->camCenter.z) * 0.01f;
+ work.x = AREG_F(3) + 450.0f;
+ work.y = AREG_F(4) + 70.0f;
+ work.z = AREG_F(5) + 1000.0f - 100.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += STAGE_CENTER_POS;
+ work.x = AREG_F(3) + -150.0f;
+ work.y = AREG_F(4) + 45.0f;
+ work.z = AREG_F(5) + 800.0f - 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ i_this->distToCamEyeTarget.x = fabsf(pos.x - i_this->camEye.x) * 0.01f;
+ i_this->distToCamEyeTarget.y = fabsf(pos.y - i_this->camEye.y) * 0.01f;
+ i_this->distToCamEyeTarget.z = fabsf(pos.z - i_this->camEye.z) * 0.01f;
+ i_this->camStepScale1 = 0.0f;
+ i_this->demoSubMode = 11;
// fallthrough
case 11:
cMtx_YrotS(*calc_mtx, STAGE_ANGLE_Y);
- sp2c.x = 800.0f;
- sp2c.y = 0.0f;
- sp2c.z = 500.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- cLib_addCalc2(&i_this->mCamCenter.x, i_pos.x, 0.1f, i_this->field_0xc74.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.y, i_pos.y, 0.1f, i_this->field_0xc74.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.z, i_pos.z, 0.1f, i_this->field_0xc74.z * i_this->field_0xc84);
- sp2c.x = -150.0f;
- sp2c.y = 45.0f;
- sp2c.z = 700.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += STAGE_CENTER_POS;
- cLib_addCalc2(&i_this->mCamEye.x, i_pos.x, 0.1f, i_this->field_0xc68.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.y, i_pos.y, 0.1f, i_this->field_0xc68.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.z, i_pos.z, 0.1f, i_this->field_0xc68.z * i_this->field_0xc84);
- cLib_addCalc2(&i_this->field_0xc84, 0.5f, 1.0f, 0.02f);
-
- if (i_this->mDemoCamTimer == 2) {
- fopAc_ac_c* local_b0 = fopAcM_SearchByID(i_this->field_0x708);
- sp2c.x = 50.0f;
- sp2c.y = 10.0f;
- sp2c.z = 700.0f;
- MtxPosition(&sp2c, &local_b0->current.pos);
- local_b0->current.pos += STAGE_CENTER_POS;
- local_b0->current.angle.y = 0;
- local_b0->shape_angle.y = STAGE_ANGLE_Y;
- }
-
- if (i_this->mDemoCamTimer == 200) {
+ work.x = AREG_F(0) + 800.0f;
+ work.y = AREG_F(1);
+ work.z = AREG_F(2) + 600.0f - 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ cLib_addCalc2(&i_this->camCenter.x, pos.x, 0.1f, i_this->distToCamCenterTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.y, pos.y, 0.1f, i_this->distToCamCenterTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.z, pos.z, 0.1f, i_this->distToCamCenterTarget.z * i_this->camStepScale1);
+ work.x = AREG_F(3) + -150.0f;
+ work.y = AREG_F(4) + 45.0f;
+ work.z = AREG_F(5) + 800.0f - 100.0f;
+ MtxPosition(&work, &pos);
+ pos += STAGE_CENTER_POS;
+ cLib_addCalc2(&i_this->camEye.x, pos.x, 0.1f, i_this->distToCamEyeTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.y, pos.y, 0.1f, i_this->distToCamEyeTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.z, pos.z, 0.1f, i_this->distToCamEyeTarget.z * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camStepScale1, 0.5f, 1.0f, NREG_F(4) + 0.02f);
+
+ if (i_this->demoCamCounter == 2) {
+ fopAc_ac_c* boomerang_p = fopAcM_SearchByID(i_this->boomerangId);
+ work.x = AREG_F(6) + 50.0f;
+ work.y = AREG_F(7) + 10.0f;
+ work.z = AREG_F(8) + 800.0f - 100.0f;
+ MtxPosition(&work, &boomerang_p->current.pos);
+ boomerang_p->current.pos += STAGE_CENTER_POS;
+ boomerang_p->current.angle.y = 0;
+ boomerang_p->shape_angle.y = STAGE_ANGLE_Y + YREG_S(8);
+ }
+
+ if (i_this->demoCamCounter == 200) {
player->changeDemoMode(1, 3, 0, 0);
player->changeDemoParam0(3);
- dComIfGp_getEvent().setPtT(actor);
+ dComIfGp_getEvent().setPtT(boomerang_p);
}
- if (i_this->mDemoCamTimer != 250) {
+ if (i_this->demoCamCounter != (s16)(KREG_S(9) + 250)) {
return;
}
- i_this->mDemoMode = 20;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 20;
+ i_this->demoCamCounter = 0;
return;
case 20:
- sp2c = actor->current.pos - player->current.pos;
- if (i_this->mDemoCamTimer == 3) {
+ work = boomerang_p->current.pos - player->current.pos;
+ if (i_this->demoCamCounter == 3) {
player->changeDemoMode(3, 1, 0, 0);
- cMtx_YrotS(*calc_mtx, cM_atan2s(sp2c.x, sp2c.z));
- sp2c.x = -20.0f;
- sp2c.y = 0.0f;
- sp2c.z = 200.0f;
- MtxPosition(&sp2c, &i_pos);
- i_pos += player->current.pos;
- player->changeDemoPos0(&i_pos);
- sp2c.z = 10000.0f;
- MtxPosition(&sp2c, &i_pos);
- a_this->current.pos = i_pos;
- }
-
- i_pos = actor->current.pos - player->eyePos;
- a_this->current.pos = player->eyePos + (i_pos * 20.0f);
- if (i_this->mDemoCamTimer != 20) {
+ cMtx_YrotS(*calc_mtx, cM_atan2s(work.x, work.z));
+ work.x = nREG_F(7) + -20.0f;
+ work.y = 0.0f;
+ work.z = ZREG_F(0) + 200.0f;
+ MtxPosition(&work, &pos);
+ pos += player->current.pos;
+ player->changeDemoPos0(&pos);
+ work.z = 10000.0f;
+ MtxPosition(&work, &pos);
+ actor->current.pos = pos;
+ }
+
+ pos = boomerang_p->current.pos - player->eyePos;
+ actor->current.pos = player->eyePos + (pos * 20.0f);
+ if (i_this->demoCamCounter != 20) {
return;
}
- actor->health = 1;
- i_this->mDemoMode = 21;
- i_this->mDemoCamTimer = 0;
- i_this->field_0xc84 = 0.0f;
+ boomerang_p->health = 1;
+ i_this->demoSubMode = 21;
+ i_this->demoCamCounter = 0;
+ i_this->camStepScale1 = 0.0f;
return;
case 21:
- cLib_addCalc2(&i_this->mCamCenter.y, actor->current.pos.y - 20.0f, 0.2f, i_this->field_0xc84 * 200.0f);
- cLib_addCalc2(&i_this->mCamCenter.x, actor->current.pos.x, 0.4f, i_this->field_0xc84 * 200.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, actor->current.pos.z, 0.4f, i_this->field_0xc84 * 200.0f);
- cLib_addCalc2(&i_this->mCamEye.y, player->current.pos.y + 110.0f, 0.1f, i_this->field_0xc84 * 10.0f);
- cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f, 0.02f);
- i_pos = actor->current.pos - player->eyePos;
- a_this->current.pos = player->eyePos + (i_pos * 20.0f);
- if (i_this->mDemoCamTimer < 70) {
+ cLib_addCalc2(&i_this->camCenter.y, boomerang_p->current.pos.y + ZREG_F(4) - 20.0f, 0.2f, i_this->camStepScale1 * 200.0f);
+ cLib_addCalc2(&i_this->camCenter.x, boomerang_p->current.pos.x, 0.4f, i_this->camStepScale1 * 200.0f);
+ cLib_addCalc2(&i_this->camCenter.z, boomerang_p->current.pos.z, 0.4f, i_this->camStepScale1 * 200.0f);
+ cLib_addCalc2(&i_this->camEye.y, player->current.pos.y + 110.0f + ZREG_F(5), 0.1f, i_this->camStepScale1 * 10.0f);
+ cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f, 0.02f);
+ pos = boomerang_p->current.pos - player->eyePos;
+ actor->current.pos = player->eyePos + (pos * 20.0f);
+ if (i_this->demoCamCounter < 70) {
return;
}
- if (i_this->mDemoCamTimer == 70) {
- i_this->mMsgFlow.init(a_this, 102, 0, NULL);
+ if (i_this->demoCamCounter == 70) {
+ i_this->msgFlow.init(actor, 102, 0, NULL);
}
- if (i_this->mMsgFlow.doFlow(a_this, NULL, 0) == 0) {
+ if (i_this->msgFlow.doFlow(actor, NULL, 0) == 0) {
return;
}
- actor->health = 1;
+ boomerang_p->health = 1;
return;
case 22:
player->changeDemoMode(28, 0, 0, 0);
- i_this->mDemoMode++;
- i_this->mDemoCamTimer = 0;
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
+ i_this->demoSubMode++;
+ i_this->demoCamCounter = 0;
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_CATCH_BOOM, 0, -1);
// fallthrough
case 23:
- cLib_addCalc2(&i_this->mCamCenter.x, player->current.pos.x, 0.4f, i_this->field_0xc84 * 200.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, player->current.pos.z, 0.4f, i_this->field_0xc84 * 200.0f);
+ cLib_addCalc2(&i_this->camCenter.x, player->current.pos.x, 0.4f, i_this->camStepScale1 * 200.0f);
+ cLib_addCalc2(&i_this->camCenter.z, player->current.pos.z, 0.4f, i_this->camStepScale1 * 200.0f);
- if (i_this->mDemoCamTimer == 20) {
- fopAcM_createItemForMidBoss(&player->current.pos, 64, fopAcM_GetRoomNo(a_this), 0, 0, 0, -1);
- i_this->field_0xc30 = 10;
- a_this->current.pos.y += 20000.0f;
+ if (i_this->demoCamCounter == 20) {
+ fopAcM_createItemForMidBoss(&player->current.pos, 64, fopAcM_GetRoomNo(actor), 0, 0, 0, -1);
+ i_this->demoMode = e_mk_class::DEMO_MODE_FINISH;
+ actor->current.pos.y += 20000.0f;
target_info_count = 0;
fpcM_Search(s_h_sub, i_this);
fopAcM_delete(static_cast<daPillar_c*>(target_info[0]));
@@ -1870,6 +1942,8 @@ static void demo_camera_end(e_mk_class* i_this) {
}
static void* s_ks_sub(void* i_actor, void* i_data) {
+ i_data;
+
if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_NPC_KS) && static_cast<npc_ks_class*>(i_actor)->field_0x5b6 == 0) {
return i_actor;
}
@@ -1878,279 +1952,285 @@ static void* s_ks_sub(void* i_actor, void* i_data) {
}
static void* s_brg_sub(void* i_actor, void* i_data) {
+ i_data;
+
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_OBJ_BRG) {
- static_cast<obj_brg_class*>(i_actor)->field_0xaef4 = 500.0f;
- static_cast<obj_brg_class*>(i_actor)->mType |= 4;
+ static_cast<obj_brg_class*>(i_actor)->field_0xaef4 = VREG_F(11) + 500.0f;
+ static_cast<obj_brg_class*>(i_actor)->mType |= (u8)4;
}
return NULL;
}
static void* s_brg_sub2(void* i_actor, void* i_data) {
+ i_data;
+
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_OBJ_BRG) {
- static_cast<obj_brg_class*>(i_actor)->mType &= ~0x4;
+ static_cast<obj_brg_class*>(i_actor)->mType &= ~0x4 & 0xFFFFFFFB;
}
return NULL;
}
+/* Camera logic for the cutscene in the Forest Temple when Ook cuts the bridge down with the boomerang */
static void demo_camera_r04(e_mk_class* i_this) {
- u8 i_no;
- fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ u8 sw_bit;
daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0);
- fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x708);
+ fopAc_ac_c* boomerang_p = fopAcM_SearchByID(i_this->boomerangId);
camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
- cXyz sp2c, sp38;
+ cXyz work, pos;
- npc_ks_class* i_actor = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this);
- if (i_actor == NULL) {
+ npc_ks_class* monkey_p = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this);
+ if (monkey_p == NULL) {
return;
}
- switch (i_this->mDemoMode) {
+ switch (i_this->demoSubMode) {
case 1:
- if (!i_actor->actor.eventInfo.checkCommandDemoAccrpt()) {
- fopAcM_orderPotentialEvent(&i_actor->actor, 2, 0xffff, 0);
- i_actor->actor.eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ if (!monkey_p->actor.eventInfo.checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(&monkey_p->actor, 2, 0xffff, 0);
+ monkey_p->actor.eventInfo.onCondition(dEvtCnd_CANDEMO_e);
return;
}
camera->mCamera.Stop();
- i_this->mDemoMode = 2;
- i_this->mDemoCamTimer = 0;
- i_this->mDemoCamFovy = 55.0f;
+ i_this->demoSubMode = 2;
+ i_this->demoCamCounter = 0;
+ i_this->demoCamFovy = NREG_F(10) + 55.0f;
camera->mCamera.SetTrimSize(3);
daPy_getPlayerActorClass()->changeOriginalDemo();
- i_this->mCamCenter.set(-711.0f, 3588.0f, 2730.0f);
- i_this->mCamEye.set(116.0f, 3400.0f, 4597.0f);
- i_this->field_0xc5c.set(-291.0f, 3256.0f, 2640.0f);
- i_this->field_0xc50.set(1060.0f, 3795.0f, 4086.0f);
-
- i_this->field_0xc74.x = fabsf(i_this->field_0xc5c.x - i_this->mCamCenter.x) * 0.015f;
- i_this->field_0xc74.y = fabsf(i_this->field_0xc5c.y - i_this->mCamCenter.y) * 0.015f;
- i_this->field_0xc74.z = fabsf(i_this->field_0xc5c.z - i_this->mCamCenter.z) * 0.015f;
- i_this->field_0xc68.x = fabsf(i_this->field_0xc50.x - i_this->mCamEye.x) * 0.02f;
- i_this->field_0xc68.y = fabsf(i_this->field_0xc50.y - i_this->mCamEye.y) * 0.02f;
- i_this->field_0xc68.z = fabsf(i_this->field_0xc50.z - i_this->mCamEye.z) * 0.02f;
+ i_this->camCenter.set(-711.0f, 3588.0f, 2730.0f);
+ i_this->camEye.set(116.0f, 3400.0f, 4597.0f);
+ i_this->camCenterTarget.set(-291.0f, 3256.0f, 2640.0f);
+ i_this->camEyeTarget.set(1060.0f, 3795.0f, 4086.0f);
+
+ i_this->distToCamCenterTarget.x = fabsf(i_this->camCenterTarget.x - i_this->camCenter.x) * 0.015f;
+ i_this->distToCamCenterTarget.y = fabsf(i_this->camCenterTarget.y - i_this->camCenter.y) * 0.015f;
+ i_this->distToCamCenterTarget.z = fabsf(i_this->camCenterTarget.z - i_this->camCenter.z) * 0.015f;
+ i_this->distToCamEyeTarget.x = fabsf(i_this->camEyeTarget.x - i_this->camEye.x) * 0.02f;
+ i_this->distToCamEyeTarget.y = fabsf(i_this->camEyeTarget.y - i_this->camEye.y) * 0.02f;
+ i_this->distToCamEyeTarget.z = fabsf(i_this->camEyeTarget.z - i_this->camEye.z) * 0.02f;
dComIfGp_getEvent().startCheckSkipEdge(i_this);
// fallthrough
case 2:
- if (i_this->mDemoCamTimer > 60) {
- cLib_addCalc2(&i_this->mCamCenter.x, i_this->field_0xc5c.x, 0.05f, i_this->field_0xc74.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.y, i_this->field_0xc5c.y, 0.05f, i_this->field_0xc74.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamCenter.z, i_this->field_0xc5c.z, 0.05f, i_this->field_0xc74.z * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.x, i_this->field_0xc50.x, 0.05f, i_this->field_0xc68.x * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.y, i_this->field_0xc50.y, 0.05f, i_this->field_0xc68.y * i_this->field_0xc84);
- cLib_addCalc2(&i_this->mCamEye.z, i_this->field_0xc50.z, 0.05f, i_this->field_0xc68.z * i_this->field_0xc84);
- cLib_addCalc2(&i_this->field_0xc84, 1.0f, 1.0f, 0.01f);
-
- if (i_this->mDemoCamTimer == 258) {
- i_actor->mMode = 2;
- sp38.set(110.0f, 3300.0f, 4326.0f);
- player->setPlayerPosAndAngle(&sp38, (s16)0xffff8000, 0);
+ if (i_this->demoCamCounter > 60) {
+ cLib_addCalc2(&i_this->camCenter.x, i_this->camCenterTarget.x, 0.05f, i_this->distToCamCenterTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.y, i_this->camCenterTarget.y, 0.05f, i_this->distToCamCenterTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camCenter.z, i_this->camCenterTarget.z, 0.05f, i_this->distToCamCenterTarget.z * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.x, i_this->camEyeTarget.x, 0.05f, i_this->distToCamEyeTarget.x * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.y, i_this->camEyeTarget.y, 0.05f, i_this->distToCamEyeTarget.y * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camEye.z, i_this->camEyeTarget.z, 0.05f, i_this->distToCamEyeTarget.z * i_this->camStepScale1);
+ cLib_addCalc2(&i_this->camStepScale1, 1.0f, 1.0f, NREG_F(4) + 0.01f);
+
+ if (i_this->demoCamCounter == ZREG_S(1) + 258) {
+ monkey_p->mMode = 2;
+ pos.set(110.0f, 3300.0f, 4326.0f);
+ player->setPlayerPosAndAngle(&pos, (s16)0xFFFF8000, 0);
player->changeDemoMode(1, 1, 0, 0);
}
- if (i_this->mDemoCamTimer == 260) {
- cMtx_YrotS(*calc_mtx, i_actor->actor.shape_angle.y);
- sp2c.x = 200.0f;
- sp2c.y = 300.0f;
- sp2c.z = 300.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += i_actor->actor.current.pos;
- i_this->mCamCenter = i_actor->actor.current.pos;
- i_this->mCamCenter.y += 130.0f;
- i_this->mDemoMode = 3;
- i_this->mDemoCamTimer = 0;
+ if (i_this->demoCamCounter == ZREG_S(1) + 260) {
+ cMtx_YrotS(*calc_mtx, monkey_p->actor.shape_angle.y);
+ work.x = ZREG_F(0) + 200.0f;
+ work.y = ZREG_F(1) + 300.0f;
+ work.z = ZREG_F(2) + 300.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += monkey_p->actor.current.pos;
+ i_this->camCenter = monkey_p->actor.current.pos;
+ i_this->camCenter.y += ZREG_F(3) + 130.0f;
+ i_this->demoSubMode = 3;
+ i_this->demoCamCounter = 0;
}
}
- a_this->current.pos.y = a_this->home.pos.y + 10000.0f;
+ actor->current.pos.y = actor->home.pos.y + 10000.0f;
return;
case 3:
- a_this->current.pos.y = a_this->home.pos.y + 10000.0f;
- cLib_addCalc2(&i_this->mCamCenter.z, i_actor->actor.current.pos.z, 0.2f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y + 130.0f + cM_ssin(i_this->mDemoCamTimer * 0xA00) * 30.0f, 0.2f, 50.0f);
+ actor->current.pos.y = actor->home.pos.y + 10000.0f;
+ cLib_addCalc2(&i_this->camCenter.z, monkey_p->actor.current.pos.z, 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + 130.0f + ZREG_F(3) + (KREG_F(18) + 30.0f) * cM_ssin(i_this->demoCamCounter * 0xA00), 0.2f, 50.0f);
- if (i_this->mDemoCamTimer != 93) {
+ if (i_this->demoCamCounter != 93) {
return;
}
- a_this->current.pos.y = a_this->home.pos.y;
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = 0.0f;
- sp2c.y = -200.0f;
- sp2c.z = 3350.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 220.0f;
- i_this->mDemoMode = 4;
- i_this->mDemoCamTimer = 0;
- i_this->mMode = 2;
- i_actor->mMode = 20;
+ actor->current.pos.y = actor->home.pos.y;
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = ZREG_F(4);
+ work.y = ZREG_F(5) + -200.0f;
+ work.z = ZREG_F(6) + 3350.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += ZREG_F(7) + 220.0f;
+ i_this->demoSubMode = 4;
+ i_this->demoCamCounter = 0;
+ i_this->mode = 2;
+ monkey_p->mMode = 20;
return;
case 4:
- cLib_addCalc2(&i_this->mCamCenter.z, a_this->current.pos.z, 0.2f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, a_this->current.pos.y + 220.0f, 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.z, actor->current.pos.z, 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.y, actor->current.pos.y + 220.0f + ZREG_F(7), 0.2f, 50.0f);
- if (i_this->mDemoCamTimer != 74) {
+ if (i_this->demoCamCounter != 74) {
return;
}
- i_this->mDemoMode = 45;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 45;
+ i_this->demoCamCounter = 0;
- cMtx_YrotS(*calc_mtx, i_actor->actor.shape_angle.y);
- sp2c.x = -300.0f;
- sp2c.y = 200.0f;
- sp2c.z = -100.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += i_actor->actor.current.pos;
- i_this->mCamCenter = i_actor->actor.current.pos;
- i_this->mCamCenter.y += 90.0f;
+ cMtx_YrotS(*calc_mtx, monkey_p->actor.shape_angle.y);
+ work.x = ZREG_F(5) + -300.0f;
+ work.y = ZREG_F(6) + 200.0f;
+ work.z = ZREG_F(7) + -100.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += monkey_p->actor.current.pos;
+ i_this->camCenter = monkey_p->actor.current.pos;
+ i_this->camCenter.y += ZREG_F(8) + 90.0f;
return;
case 45:
- cLib_addCalc2(&i_this->mCamCenter.z, i_actor->actor.current.pos.z, 0.2f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y + 90.0f + 30.0f * cM_ssin(i_this->mDemoCamTimer * 0xA00), 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.z, monkey_p->actor.current.pos.z, 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + 90.0f + ZREG_F(8) + (KREG_F(18) + 30.0f) * cM_ssin(i_this->demoCamCounter * 0xA00), 0.2f, 50.0f);
- if (i_this->mDemoCamTimer == 10) {
- i_actor->actor.field_0x567 = 1;
+ if (i_this->demoCamCounter == 10) {
+ monkey_p->actor.field_0x567 = 1;
}
- if (i_this->mDemoCamTimer != 55) {
+ if (i_this->demoCamCounter != NREG_S(7) + 55) {
return;
}
- i_this->mDemoMode = 46;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 46;
+ i_this->demoCamCounter = 0;
// fallthrough
case 46:
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = 0.0f;
- sp2c.y = 100.0f;
- sp2c.z = 600.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 220.0f;
-
- if (i_this->mDemoCamTimer < 45) {
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = ZREG_F(14);
+ work.y = ZREG_F(15) + 100.0f;
+ work.z = ZREG_F(16) + 600.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += ZREG_F(17) + 220.0f;
+
+ if (i_this->demoCamCounter < ZREG_S(9) + 45) {
return;
}
- if (actor == NULL) {
+ if (boomerang_p == NULL) {
return;
}
- i_this->mDemoMode = 5;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 5;
+ i_this->demoCamCounter = 0;
// fallthrough
case 5:
- i_this->mCamCenter = actor->current.pos;
- i_this->mCamEye.set(-477.0f, 3119.0f, 1643.0f);
+ i_this->camCenter = boomerang_p->current.pos;
+ i_this->camEye.set(ZREG_F(8) + -477.0f, ZREG_F(9) + 3119.0f, ZREG_F(10) + 1643.0f);
- if (i_this->mDemoCamTimer == 30) {
- i_actor->actor.current.pos.z = 1600.0f;
- i_actor->actor.current.pos.y = 3200.0f;
+ if (i_this->demoCamCounter == 30) {
+ monkey_p->actor.current.pos.z = ZREG_F(15) + 1600.0f;
+ monkey_p->actor.current.pos.y = ZREG_F(17) + 3200.0f;
}
- if (i_this->mDemoCamTimer != 69) {
+ if (i_this->demoCamCounter != ZREG_S(4) + 69) {
return;
}
- i_this->mDemoMode = 6;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 6;
+ i_this->demoCamCounter = 0;
return;
case 6:
- if (i_this->mDemoCamTimer == 3) {
- i_actor->mMode = 4;
+ if (i_this->demoCamCounter == ZREG_S(6) + 3) {
+ monkey_p->mMode = 4;
}
- if (i_this->mDemoCamTimer != 25) {
+ if (i_this->demoCamCounter != ZREG_S(5) + 25) {
return;
}
- i_this->mDemoMode = 7;
- i_this->mDemoCamTimer = 0;
+ i_this->demoSubMode = 7;
+ i_this->demoCamCounter = 0;
- cMtx_YrotS(*calc_mtx, a_this->shape_angle.y);
- sp2c.x = -300.0f;
- sp2c.y = 100.0f;
- sp2c.z = 550.0f;
- MtxPosition(&sp2c, &i_this->mCamEye);
- i_this->mCamEye += a_this->current.pos;
- i_this->mCamCenter = a_this->current.pos;
- i_this->mCamCenter.y += 190.0f;
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ work.x = ZREG_F(11) + -300.0f;
+ work.y = ZREG_F(12) + 100.0f;
+ work.z = ZREG_F(13) + 550.0f;
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
+ i_this->camCenter = actor->current.pos;
+ i_this->camCenter.y += ZREG_F(14) + 190.0f;
// fallthrough
case 7:
- i_actor->actor.speed.y = 0.0f;
- i_actor->actor.current.pos.set(0.0f, 2500.0f, 3373.0f);
+ monkey_p->actor.speed.y = 0.0f;
+ monkey_p->actor.current.pos.set(0.0f, 2500.0f, 3373.0f);
- if (i_this->mDemoCamTimer != 250) {
+ if (i_this->demoCamCounter != 250) {
return;
}
- i_this->mDemoMode = 8;
- i_this->mDemoCamTimer = 0;
- i_actor->mMode++;
- i_this->mCamEye.set(-282.0f, 2534.0f, 3147.0f);
- i_this->mCamCenter = i_actor->actor.current.pos;
+ i_this->demoSubMode = 8;
+ i_this->demoCamCounter = 0;
+ monkey_p->mMode++;
+ i_this->camEye.set(-282.0f, 2534.0f, 3147.0f);
+ i_this->camCenter = monkey_p->actor.current.pos;
+ i_this->camCenter.y += ZREG_F(19);
// fallthrough
case 8:
- cLib_addCalc2(&i_this->mCamCenter.y, i_actor->actor.current.pos.y, 0.2f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.y, monkey_p->actor.current.pos.y + ZREG_F(19), 0.2f, 50.0f);
fpcM_Search(s_brg_sub, i_this);
- if (i_this->mDemoCamTimer == 65) {
- i_actor->actor.current.pos.set(0.0f, 3310.0f, 3427.0f);
- i_actor->mMode++;
- i_this->mDemoMode = 9;
- i_this->mDemoCamTimer = 0;
+ if (i_this->demoCamCounter == (s16)(XREG_S(0) + 65)) {
+ monkey_p->actor.current.pos.set(0.0f, 3310.0f, 3427.0f);
+ monkey_p->mMode++;
+ i_this->demoSubMode = 9;
+ i_this->demoCamCounter = 0;
fpcM_Search(s_brg_sub2, i_this);
- i_this->mCamCenter.set(4.0f, 3393.0f, 4180.0f);
- i_this->mCamEye.set(-131.0f, 3452.0f, 4552.0f);
+ i_this->camCenter.set(4.0f, 3393.0f, 4180.0f);
+ i_this->camEye.set(-131.0f, 3452.0f, 4552.0f);
player->changeDemoMode(1, 1, 0, 0);
}
return;
case 9:
- if (i_this->mDemoCamTimer != 138) {
+ if (i_this->demoCamCounter != 138) {
return;
}
- i_this->mCamCenter.set(30.0f, 3422.0f, 4520.0f);
- i_this->mCamEye.set(343.0f, 3422.0f, 4271.0f);
- i_this->mDemoMode = 10;
- i_this->mDemoCamTimer = 0;
- i_this->field_0xca0 = player->shape_angle.y;
+ i_this->camCenter.set(30.0f, 3422.0f, 4520.0f);
+ i_this->camEye.set(343.0f, 3422.0f, 4271.0f);
+ i_this->demoSubMode = 10;
+ i_this->demoCamCounter = 0;
+ i_this->prevPlShapeAngle = player->shape_angle.y;
return;
case 10:
- cLib_addCalcAngleS2(&i_this->field_0xca0, i_actor->field_0x5c8 + (u16)-0x8000, 4, 0x800);
- player->setPlayerPosAndAngle(&player->current.pos, i_this->field_0xca0, 0);
+ cLib_addCalcAngleS2(&i_this->prevPlShapeAngle, monkey_p->field_0x5c8 + (u16)-0x8000, 4, 0x800);
+ player->setPlayerPosAndAngle(&player->current.pos, i_this->prevPlShapeAngle, 0);
- if (i_this->mDemoCamTimer != 60) {
+ if (i_this->demoCamCounter != 60) {
return;
}
- camera->mCamera.Reset(i_this->mCamCenter, i_this->mCamEye);
+ camera->mCamera.Reset(i_this->camCenter, i_this->camEye);
camera->mCamera.Start();
camera->mCamera.SetTrimSize(0);
dComIfGp_event_reset();
daPy_getPlayerActorClass()->cancelOriginalDemo();
- fopAcM_delete(a_this);
- i_no = fopAcM_GetParam(i_this) >> 16;
- if (i_no == 0xFF) {
+ fopAcM_delete(actor);
+ sw_bit = fopAcM_GetParam(i_this) >> 16;
+ if (sw_bit == 0xFF) {
return;
}
- dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(a_this));
+ dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor));
return;
case 0:
@@ -2161,83 +2241,86 @@ static void demo_camera_r04(e_mk_class* i_this) {
}
static void demo_camera_bohit(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0);
camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
- cXyz sp20;
+ cXyz work, unused_1, unused_2, unused_3;
- switch (i_this->mDemoMode) {
+ switch (i_this->demoSubMode) {
case 1:
- if (!i_this->enemy.eventInfo.checkCommandDemoAccrpt()) {
- fopAcM_orderPotentialEvent(&i_this->enemy, 2, 0xffff, 0);
- i_this->enemy.eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ if (!actor->eventInfo.checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(actor, 2, 0xffff, 0);
+ actor->eventInfo.onCondition(dEvtCnd_CANDEMO_e);
return;
}
camera->mCamera.Stop();
- i_this->mDemoMode = 2;
- i_this->mDemoCamTimer = 0;
- i_this->mDemoCamFovy = 55.0f;
+ i_this->demoSubMode = 2;
+ i_this->demoCamCounter = 0;
+ i_this->demoCamFovy = NREG_F(10) + 55.0f;
camera->mCamera.SetTrimSize(3);
- cMtx_YrotS(*calc_mtx, i_this->enemy.shape_angle.y);
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
if (cM_rndF(1.0f) < 0.5f) {
- sp20.x = 500.0f;
+ work.x = AREG_F(0) + 500.0f;
} else {
- sp20.x = -500.0f;
+ work.x = -(AREG_F(0) + 500.0f);
}
- sp20.y = -120.0f;
- sp20.z = 0.0f;
- MtxPosition(&sp20, &i_this->mCamEye);
- i_this->mCamEye += i_this->enemy.current.pos;
- i_this->mCamCenter = i_this->enemy.current.pos;
+ work.y = AREG_F(1) + -120.0f;
+ work.z = AREG_F(2);
+ MtxPosition(&work, &i_this->camEye);
+ i_this->camEye += actor->current.pos;
+ i_this->camCenter = actor->current.pos;
// fallthrough
case 2:
- cLib_addCalc2(&i_this->mCamCenter.x, i_this->enemy.current.pos.x, 0.5f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.y, i_this->enemy.current.pos.y + 100.0f, 0.5f, 50.0f);
- cLib_addCalc2(&i_this->mCamCenter.z, i_this->enemy.current.pos.z, 0.5f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.x, actor->current.pos.x, 0.5f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.y, actor->current.pos.y + 100.0f + KREG_F(7), 0.5f, 50.0f);
+ cLib_addCalc2(&i_this->camCenter.z, actor->current.pos.z, 0.5f, 50.0f);
- if (i_this->mDemoCamTimer == 25) {
+ if (i_this->demoCamCounter == 25) {
i_this->field_0xc98 = 30.0f;
}
- if (i_this->mDemoCamTimer == 80) {
- i_this->field_0xc30 = 10;
- i_this->field_0x6fc[0] = 150;
+ if (i_this->demoCamCounter == 80) {
+ i_this->demoMode = e_mk_class::DEMO_MODE_FINISH;
+ i_this->timer[0] = 150;
}
- return;
+ break;
case 0:
default:
- return;
+ break;
}
}
static void demo_camera(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
- cXyz sp34, sp40;
+ cXyz unused_1, unused_2;
- switch (i_this->field_0xc30) {
- case 1:
+ switch (i_this->demoMode) {
+ case e_mk_class::DEMO_MODE_START:
demo_camera_start(i_this);
break;
- case 2:
+ case e_mk_class::DEMO_MODE_END:
demo_camera_end(i_this);
break;
- case 3:
+ case e_mk_class::DEMO_MODE_R04:
demo_camera_r04(i_this);
if (dComIfGp_getEvent().checkSkipEdge()) {
- npc_ks_class* i_actor = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this);
- if (i_actor != NULL) {
- u8 i_no = fopAcM_GetParam(i_this) >> 16;
- if (i_no != 0xFF) {
- dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(&i_this->enemy));
+ npc_ks_class* monkey_p = (npc_ks_class*)fpcM_Search(s_ks_sub, i_this);
+ if (monkey_p != NULL) {
+ u8 sw_bit = (fopAcM_GetParam(actor) & 0xFF0000) >> 16;
+ if (sw_bit != 0xFF) {
+ dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(actor));
}
- i_no = fopAcM_GetParam(i_actor) >> 24;
- if (i_no != 0xFF) {
- dComIfGs_onSwitch(i_no, fopAcM_GetRoomNo(&i_actor->actor));
+ sw_bit = (fopAcM_GetParam(monkey_p) & 0xFF000000) >> 24;
+ if (sw_bit != 0xFF) {
+ dComIfGs_onSwitch(sw_bit, fopAcM_GetRoomNo(&monkey_p->actor));
}
dComIfGp_setNextStage("D_MN05", 0, 4, 0);
@@ -2245,17 +2328,17 @@ static void demo_camera(e_mk_class* i_this) {
}
break;
- case 4:
+ case e_mk_class::DEMO_MODE_BOHIT:
demo_camera_bohit(i_this);
break;
- case 10:
- camera->mCamera.Reset(i_this->mCamCenter, i_this->mCamEye);
+ case e_mk_class::DEMO_MODE_FINISH:
+ camera->mCamera.Reset(i_this->camCenter, i_this->camEye);
camera->mCamera.Start();
camera->mCamera.SetTrimSize(0);
dComIfGp_event_reset();
- i_this->field_0xc30 = 0;
- i_this->mDemoMode = 0;
+ i_this->demoMode = e_mk_class::DEMO_MODE_NONE;
+ i_this->demoSubMode = 0;
daPy_getPlayerActorClass()->cancelOriginalDemo();
case 5:
@@ -2263,44 +2346,45 @@ static void demo_camera(e_mk_class* i_this) {
case 7:
case 8:
case 9:
- case 0:
+ case e_mk_class::DEMO_MODE_NONE:
break;
}
- if (i_this->field_0xc30 != 0) {
- s16 sVar1 = i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00) * 7.5f;
- cXyz i_center = i_this->mCamCenter;
- cXyz i_eye = i_this->mCamEye;
+ if (i_this->demoMode != e_mk_class::DEMO_MODE_NONE) {
+ s16 bank = i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00) * 7.5f;
+ cXyz center = i_this->camCenter;
+ cXyz eye = i_this->camEye;
- i_center.y += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00);
- i_eye.y += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00);
- i_center.x += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800);
- i_eye.x += i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800);
- i_center.z += i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00);
- i_eye.z += i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00);
+ center.y += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00));
+ eye.y += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2A00));
+ center.x +=(KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800));
+ eye.x += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_ssin(i_this->field_0x6b4 * 0x2800));
+ center.z += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00));
+ eye.z += (KREG_F(8) + 1.0f) * (i_this->field_0xc98 * cM_scos(i_this->field_0x6b4 * 0x2C00));
- camera->mCamera.Set(i_center, i_eye, sVar1, i_this->mDemoCamFovy);
+ camera->mCamera.Set(center, eye, bank, i_this->demoCamFovy);
- cLib_addCalc0(&i_this->field_0xc98, 1.0f, 3.0f);
- i_this->mDemoCamTimer++;
+ cLib_addCalc0(&i_this->field_0xc98, 1.0f, TREG_F(16) + 3.0f);
+ i_this->demoCamCounter++;
- if (i_this->mDemoCamTimer > 10000) {
- i_this->mDemoCamTimer = 10000;
+ if (i_this->demoCamCounter > 10000) {
+ i_this->demoCamCounter = 10000;
}
}
}
static void action(e_mk_class* i_this) {
- fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
- cXyz sp28, sp34;
- i_this->mDistToPlayer = fopAcM_searchPlayerDistanceXZ(a_this);
- i_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(a_this);
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ daPy_py_c* player = (daPy_py_c *)dComIfGp_getPlayer(0);
+ cXyz work, pos;
+ i_this->distToPl = fopAcM_searchPlayerDistanceXZ(actor);
+ i_this->angleToPl = fopAcM_searchPlayerAngleY(actor);
damage_check(i_this);
- s8 sVar1 = 1;
- s8 sVar2 = 1;
- i_this->field_0x6f8 = 0;
+ s8 boss_room_wait_flag = 1;
+ s8 status_flag = 1;
+ i_this->unkFlag3 = 0;
- switch (i_this->mAction) {
+ switch (i_this->action) {
case e_mk_class::ACT_WAIT:
e_mk_wait(i_this);
break;
@@ -2319,172 +2403,174 @@ static void action(e_mk_class* i_this) {
case e_mk_class::ACT_DROP:
e_mk_drop(i_this);
- i_this->field_0x6f8 = 1;
+ i_this->unkFlag3 = 1;
break;
case e_mk_class::ACT_DAMAGE:
e_mk_damage(i_this);
- i_this->field_0x6f8 = 1;
+ i_this->unkFlag3 = 1;
break;
case e_mk_class::ACT_S_DEMO:
e_mk_s_demo(i_this);
- sVar1 = 0;
+ boss_room_wait_flag = 0;
break;
case e_mk_class::ACT_E_DEMO:
- i_this->field_0x6f8 = e_mk_e_demo(i_this);
- sVar1 = 0;
- sVar2 = 0;
+ i_this->unkFlag3 = e_mk_e_demo(i_this);
+ boss_room_wait_flag = 0;
+ status_flag = 0;
break;
case e_mk_class::ACT_R04_DEMO:
e_mk_r04_demo(i_this);
- i_this->field_0x6f8 = 1;
+ i_this->unkFlag3 = 1;
}
- if (sVar2) {
- fopAcM_OnStatus(a_this, 0);
- a_this->attention_info.flags = fopAc_AttnFlag_BATTLE_e;
+ if (status_flag) {
+ fopAcM_OnStatus(actor, 0);
+ actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e;
} else {
- fopAcM_OffStatus(a_this, 0);
- a_this->attention_info.flags = 0;
+ fopAcM_OffStatus(actor, 0);
+ actor->attention_info.flags = 0;
}
- cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 4, 0x2000);
+ cLib_addCalcAngleS2(&actor->shape_angle.y, actor->current.angle.y, 4, 0x2000);
- if (i_this->field_0x6f8 != 0) {
- a_this->current.pos += a_this->speed;
- a_this->speed.y += a_this->gravity;
+ if (i_this->unkFlag3 != 0) {
+ actor->current.pos += actor->speed;
+ actor->speed.y += actor->gravity;
- if (i_this->field_0x6f8 == 1) {
- i_this->mAcch.CrrPos(dComIfG_Bgsp());
+ if (i_this->unkFlag3 == 1) {
+ i_this->acch.CrrPos(dComIfG_Bgsp());
}
} else {
- a_this->current.pos += a_this->speed;
+ actor->current.pos += actor->speed;
}
- if (i_this->field_0x71b != 0) {
- if (i_this->field_0x71b == 2) {
- J3DModel* model = i_this->mpModelMorf->getModel();
- PSMTXCopy(model->getAnmMtx(29), *calc_mtx);
- sp28.set(0.0f, 0.0f, 0.0f);
- MtxPosition(&sp28, &sp34);
- fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &sp34, &a_this->shape_angle, 2.5f, &a_this->tevStr, 0);
+ if (i_this->setSmokeFlag != 0) {
+ if (i_this->setSmokeFlag == 2) {
+ J3DModel* model = i_this->anmP->getModel();
+ MTXCopy(model->getAnmMtx(MK_JNT_LEG_L_4_e), *calc_mtx);
+ work.set(0.0f, 0.0f, 0.0f);
+ MtxPosition(&work, &pos);
+ fopAcM_effSmokeSet2(&i_this->field_0xc08, &i_this->field_0xc0c, &pos, &actor->shape_angle, TREG_F(17) + 2.5f, &actor->tevStr);
- PSMTXCopy(model->getAnmMtx(33), *calc_mtx);
- MtxPosition(&sp28, &sp34);
- fopAcM_effSmokeSet1(&i_this->field_0xc10, &i_this->field_0xc14, &sp34, &a_this->shape_angle, 2.5f, &a_this->tevStr, 0);
+ MTXCopy(model->getAnmMtx(MK_JNT_LEG_R_4_e), *calc_mtx);
+ MtxPosition(&work, &pos);
+ fopAcM_effSmokeSet2(&i_this->field_0xc10, &i_this->field_0xc14, &pos, &actor->shape_angle, TREG_F(17) + 2.5f, &actor->tevStr);
} else {
- fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &a_this->current.pos, &a_this->shape_angle, 2.5f, &a_this->tevStr, 1);
+ fopAcM_effSmokeSet1(&i_this->field_0xc08, &i_this->field_0xc0c, &actor->current.pos, &actor->shape_angle, TREG_F(18) + 2.5f, &actor->tevStr, 1);
}
- i_this->field_0x71b = 0;
+ i_this->setSmokeFlag = 0;
}
- if (sVar1) {
+ if (boss_room_wait_flag) {
daPy_getPlayerActorClass()->onBossRoomWait();
}
}
static void anm_se_set(e_mk_class* i_this) {
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+
static u16 bo_eno_1[2] = {
- 0x8214,
- 0x8215,
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_A),
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_B),
};
static u16 bo_eno_0[4] = {
- 0x8211,
- 0x8212,
- 0x8213,
- 0x820C,
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_A),
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_B),
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_TAME_C),
+ dPa_RM(ID_ZI_S_MKDEMO_BOOM_FLASH_A),
};
- if (i_this->mAnm == 40) {
- if (i_this->mpModelMorf->checkFrame(2.0f) || i_this->mpModelMorf->checkFrame(13.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1);
+ if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_WAIT_e) {
+ if (i_this->anmP->checkFrame(2.0f) || i_this->anmP->checkFrame(13.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1);
}
- } else if (i_this->mAnm == 35) {
- if (i_this->mpModelMorf->checkFrame(3.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE_L, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_SPRING_e) {
+ if (i_this->anmP->checkFrame(3.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DAMAGE_L, -1);
}
- if ((i_this->mpModelMorf->checkFrame(21.0f) || i_this->mpModelMorf->checkFrame(31.0f)) || i_this->mpModelMorf->checkFrame(41.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
+ if ((i_this->anmP->checkFrame(21.0f) || i_this->anmP->checkFrame(31.0f)) || i_this->anmP->checkFrame(41.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
}
- } else if (i_this->mAnm == 31 || i_this->mAnm == 32) {
- if (i_this->mpModelMorf->checkFrame(1.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_A, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_01_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_02_e) {
+ if (i_this->anmP->checkFrame(1.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_A, -1);
}
- } else if (i_this->mAnm == 33) {
- if (i_this->mpModelMorf->checkFrame(1.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_B, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_PROVOCATION_03_e) {
+ if (i_this->anmP->checkFrame(1.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_PROVOKE_B, -1);
}
- if (i_this->mpModelMorf->checkFrame(15.0f) || i_this->mpModelMorf->checkFrame(64.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1);
+ if (i_this->anmP->checkFrame(15.0f) || i_this->anmP->checkFrame(64.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1);
}
- if (i_this->mpModelMorf->checkFrame(32.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_SCRATCH_HIP, 0, -1);
+ if (i_this->anmP->checkFrame(32.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_SCRATCH_HIP, 0, -1);
}
- } else if (i_this->mAnm == 25 || i_this->mAnm == 15) {
- if (i_this->mpModelMorf->checkFrame(1.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_SNEER, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_GLAD_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_GLAD_e) {
+ if (i_this->anmP->checkFrame(1.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_SNEER, -1);
}
- } else if (i_this->mAnm == 10) {
- if (i_this->mpModelMorf->checkFrame(1.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_DOWN, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_CHANCE_e) {
+ if (i_this->anmP->checkFrame(1.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_DOWN, -1);
}
- } else if (i_this->mAnm == 29) {
- if (i_this->mpModelMorf->checkFrame(8.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_JUMP_START_e) {
+ if (i_this->anmP->checkFrame(8.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
}
- } else if (i_this->mAnm == 39) {
- if (i_this->mpModelMorf->checkFrame(20.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_THROW_UP_e) {
+ if (i_this->anmP->checkFrame(20.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_START, 0, -1);
}
- } else if (i_this->mAnm == 26) {
- if (i_this->mpModelMorf->checkFrame(3.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_JUMP_END_e) {
+ if (i_this->anmP->checkFrame(3.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
}
- } else if (i_this->mAnm == 39) {
- if (i_this->mpModelMorf->checkFrame(38.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_THROW_UP_e) {
+ if (i_this->anmP->checkFrame(38.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_JUMP_END, 0, -1);
}
- } else if (i_this->mAnm == 34) {
- if (i_this->mpModelMorf->checkFrame(1.0f)) {
- i_this->mSound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1);
+ } else if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_RUN_e) {
+ if (i_this->anmP->checkFrame(1.0f)) {
+ i_this->sound.startCreatureVoice(Z2SE_EN_MK_V_BREATH, -1);
}
- if (i_this->mpModelMorf->checkFrame(1.0f) || i_this->mpModelMorf->checkFrame(6.0f)) {
- i_this->mSound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1);
+ if (i_this->anmP->checkFrame(1.0f) || i_this->anmP->checkFrame(6.0f)) {
+ i_this->sound.startCreatureSound(Z2SE_EN_MK_FOOTNOTE, 0, -1);
}
}
- if (i_this->mAnm == 19 || i_this->mAnm == 21) {
+ if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_e || i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e) {
for (int i = 0; i < 2; i++) {
- i_this->field_0xc18[i] = dComIfGp_particle_set(i_this->field_0xc18[i], bo_eno_1[i], &i_this->enemy.current.pos, NULL, 0);
+ i_this->boEno1Prtcls[i] = dComIfGp_particle_set(i_this->boEno1Prtcls[i], bo_eno_1[i], &i_this->actor.current.pos, NULL, 0);
- JPABaseEmitter* pEmitter1 = dComIfGp_particle_getEmitter(i_this->field_0xc18[i]);
- if (pEmitter1 != NULL) {
- pEmitter1->setGlobalSRTMatrix(i_this->mpBoomerangModel->getBaseTRMtx());
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->boEno1Prtcls[i]);
+ if (emitter != NULL) {
+ emitter->setGlobalSRTMatrix(i_this->boomerangModelP->getBaseTRMtx());
}
}
}
- if (i_this->mAnm == 21) {
+ if (i_this->anmNo == dRes_INDEX_E_MK_BCK_MK_DEMO_THROW_WAIT_e) {
for (int i = 0; i < 4; i++) {
- i_this->field_0xc20[i] = dComIfGp_particle_set(i_this->field_0xc20[i], bo_eno_0[i], &i_this->enemy.eyePos, NULL, 0);
+ i_this->boEno0Prtcls[i] = dComIfGp_particle_set(i_this->boEno0Prtcls[i], bo_eno_0[i], &i_this->actor.eyePos, NULL, 0);
- JPABaseEmitter* pEmitter2 = dComIfGp_particle_getEmitter(i_this->field_0xc20[i]);
- if (pEmitter2 != NULL) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->boEno0Prtcls[i]);
+ if (emitter != NULL) {
if (i == 0) {
- pEmitter2->setGlobalSRTMatrix(i_this->mpModelMorf->getModel()->getAnmMtx(22));
+ emitter->setGlobalSRTMatrix(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_2_e));
} else {
- pEmitter2->setGlobalSRTMatrix(i_this->mpBoomerangModel->getBaseTRMtx());
+ emitter->setGlobalSRTMatrix(i_this->boomerangModelP->getBaseTRMtx());
}
}
}
@@ -2492,55 +2578,55 @@ static void anm_se_set(e_mk_class* i_this) {
}
static int daE_MK_Execute(e_mk_class* i_this) {
- cXyz sp6c, sp78, sp84;
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ cXyz work, pos, unused;
i_this->field_0x6b4++;
for (int i = 0; i < 4; i++) {
- if (i_this->field_0x6fc[i] != 0) {
- i_this->field_0x6fc[i]--;
+ if (i_this->timer[i] != 0) {
+ i_this->timer[i]--;
}
}
- if (i_this->field_0x704 != 0) {
- i_this->field_0x704--;
+ if (i_this->invulnerabilityTimer != 0) {
+ i_this->invulnerabilityTimer--;
}
- if (i_this->field_0x71a != 0) {
- i_this->field_0x71a--;
+ if (i_this->unkTimer1 != 0) {
+ i_this->unkTimer1--;
}
- if (l_HIO.mHaltAction == 0) {
+ if (l_HIO.halt_action == 0) {
action(i_this);
demo_camera(i_this);
}
- if (i_this->field_0x6be != 0) {
- sp6c = i_this->field_0x6cc - i_this->field_0x6c0;
- f32 fVar1 = sp6c.abs();
+ if (i_this->unkFlag2 != 0) {
+ work = i_this->prevPosTarget - i_this->prevPos;
+ f32 fVar1 = work.abs();
- sp6c = i_this->field_0x6cc - i_this->enemy.current.pos;
- f32 fVar2 = sp6c.abs();
+ work = i_this->prevPosTarget - actor->current.pos;
+ f32 fVar2 = work.abs();
- f32 fVar3 = fVar1 * 0.1f;
+ f32 fVar3 = fVar1 * (BREG_F(19) + 0.1f);
- if (fVar3 > 200.0f) {
- fVar3 = 200.0f;
+ if (fVar3 > BREG_F(18) + 200.0f) {
+ fVar3 = BREG_F(18) + 200.0f;
}
- int iVar1 = (fVar2 / fVar1) * 32768.0f;
- i_this->field_0x6d8 = fVar3 * cM_ssin(iVar1);
+ i_this->PosYTransOffset = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f);
} else {
- i_this->field_0x6d8 = 0;
+ i_this->PosYTransOffset = 0;
}
- mDoMtx_stack_c::transS(i_this->enemy.current.pos.x, i_this->enemy.current.pos.y + i_this->field_0x6d8, i_this->enemy.current.pos.z);
- mDoMtx_stack_c::YrotM(i_this->enemy.shape_angle.y);
- mDoMtx_stack_c::XrotM(i_this->enemy.shape_angle.x);
- mDoMtx_stack_c::scaleM(l_HIO.mSize, l_HIO.mSize, l_HIO.mSize);
+ mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y + i_this->PosYTransOffset, actor->current.pos.z);
+ mDoMtx_stack_c::YrotM((s16)actor->shape_angle.y);
+ mDoMtx_stack_c::XrotM((s16)actor->shape_angle.x);
+ mDoMtx_stack_c::scaleM(l_HIO.size, l_HIO.size, l_HIO.size);
- J3DModel* model = i_this->mpModelMorf->getModel();
+ J3DModel* model = i_this->anmP->getModel();
model->setBaseTRMtx(mDoMtx_stack_c::get());
- i_this->mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(&i_this->enemy)));
+ i_this->anmP->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
if (i_this->field_0x5d4 == 0) {
i_this->field_0x5d4 = cM_rndF(60.0f) + 30.0f;
@@ -2548,138 +2634,138 @@ static int daE_MK_Execute(e_mk_class* i_this) {
i_this->field_0x5d4--;
if (i_this->field_0x5d4 <= 12) {
- i_this->field_0x5d8 = 11.99f - i_this->field_0x5d4;
+ i_this->btpFrame = 11.99f - i_this->field_0x5d4;
} else {
- i_this->field_0x5d8 = 0.0f;
+ i_this->btpFrame = 0.0f;
}
}
- if (i_this->field_0x60e != 0) {
- i_this->mBtp->setFrame(i_this->field_0x5d8 + 12.0f);
+ if (i_this->btpFrameFlag != 0) {
+ i_this->btpP->setFrame(i_this->btpFrame + 12.0f);
} else {
- i_this->mBtp->setFrame(i_this->field_0x5d8);
- }
-
- i_this->mpModelMorf->modelCalc();
- PSMTXCopy(model->getAnmMtx(7), *calc_mtx);
- sp6c.set(0.0f, 0.0f, 0.0f);
- MtxPosition(&sp6c, &i_this->enemy.eyePos);
- i_this->enemy.attention_info.position = i_this->enemy.eyePos;
- i_this->enemy.attention_info.position.y += 70.0f;
-
- if (i_this->field_0x60c != 0) {
- if (i_this->field_0x5e0 == 0) {
- PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(10), mDoMtx_stack_c::get());
- mDoMtx_stack_c::transM(l_HIO.mCrownPosAdjust.x, l_HIO.mCrownPosAdjust.y, l_HIO.mCrownPosAdjust.z);
- i_this->mpCrownModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
- mDoMtx_multVecZero(mDoMtx_stack_c::get(), &i_this->field_0x5e4);
+ i_this->btpP->setFrame(i_this->btpFrame);
+ }
+
+ i_this->anmP->modelCalc();
+ MTXCopy(model->getAnmMtx(MK_JNT_HEAD_e), *calc_mtx);
+ work.set(KREG_F(12), KREG_F(13), KREG_F(14));
+ MtxPosition(&work, &actor->eyePos);
+ actor->attention_info.position = actor->eyePos;
+ actor->attention_info.position.y += BREG_F(7) + 70.0f;
+
+ if (i_this->crownStatus != 0) {
+ if (i_this->unkFlag1 == 0) {
+ MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_CROWN_e), mDoMtx_stack_c::get());
+ mDoMtx_stack_c::transM(l_HIO.crown_pos_adjust.x, l_HIO.crown_pos_adjust.y, l_HIO.crown_pos_adjust.z);
+ i_this->crownAnmP->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoMtx_multVecZero(mDoMtx_stack_c::get(), &i_this->crownPos);
} else {
- cMtx_YrotS(*calc_mtx, i_this->field_0x5f0.y);
- sp6c.x = 0.0f;
- sp6c.y = i_this->field_0x5fc;
- sp6c.z = i_this->field_0x600;
- MtxPosition(&sp6c, &sp78);
- i_this->field_0x5e4 += sp78;
+ cMtx_YrotS(*calc_mtx, i_this->unkRotation.y);
+ work.x = 0.0f;
+ work.y = i_this->field_0x5fc;
+ work.z = i_this->field_0x600;
+ MtxPosition(&work, &pos);
+ i_this->crownPos += pos;
i_this->field_0x5fc -= 5.0f;
- if (i_this->field_0x5e4.y <= STAGE_CENTER_POS.y + 5.0f) {
- i_this->field_0x5e4.y = STAGE_CENTER_POS.y + 5.0f;
+ if (i_this->crownPos.y <= STAGE_CENTER_POS.y + WREG_F(7) + 5.0f) {
+ i_this->crownPos.y = STAGE_CENTER_POS.y + WREG_F(7) + 5.0f;
if (i_this->field_0x5fc < -30.0f) {
i_this->field_0x5fc *= -0.4f;
- i_this->field_0x604 = 3500.0f;
+ i_this->field_0x604 = NREG_F(0) + 3500.0f;
} else {
i_this->field_0x5fc = 0.0f;
}
- i_this->field_0x600 *= 0.75f;
- }
-
- s16 sVar2 = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * 3000);
- s16 sVar3 = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * 4000);
- cLib_addCalc0(&i_this->field_0x604, 0.1f, 50.0f);
- mDoMtx_stack_c::transS(i_this->field_0x5e4.x, i_this->field_0x5e4.y, i_this->field_0x5e4.z);
- mDoMtx_stack_c::YrotM(i_this->field_0x5f0.y);
- mDoMtx_stack_c::XrotM(i_this->field_0x5f0.x + sVar2);
- mDoMtx_stack_c::ZrotM(sVar3);
- mDoMtx_stack_c::transM(0.0f, 15.0f, -10.0f);
- mDoMtx_stack_c::XrotM(-8000);
- mDoMtx_stack_c::ZrotM(-0x4000);
- i_this->mpCrownModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
- cLib_addCalcAngleS2(&i_this->field_0x5f0.x, 0, 2, 0x400);
+ i_this->field_0x600 *= WREG_F(10) + 0.75f;
+ }
+
+ s16 x_rot_offset = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * (NREG_S(3) + 3000));
+ s16 z_rot = i_this->field_0x604 * cM_ssin(i_this->field_0x6b4 * (NREG_S(4) + 4000));
+ cLib_addCalc0(&i_this->field_0x604, 0.1f, NREG_F(1) + 50.0f);
+ mDoMtx_stack_c::transS(i_this->crownPos.x, i_this->crownPos.y, i_this->crownPos.z);
+ mDoMtx_stack_c::YrotM(i_this->unkRotation.y);
+ mDoMtx_stack_c::XrotM(i_this->unkRotation.x + x_rot_offset);
+ mDoMtx_stack_c::ZrotM(z_rot);
+ mDoMtx_stack_c::transM(WREG_F(3), WREG_F(4) + 15.0f, WREG_F(5) + -10.0f);
+ mDoMtx_stack_c::XrotM(-8000); // ~-44°
+ mDoMtx_stack_c::ZrotM(-0x4000); // -90°
+ i_this->crownAnmP->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ cLib_addCalcAngleS2(&i_this->unkRotation.x, 0, 2, 0x400);
}
- i_this->mpCrownModelMorf->play(NULL, 0, 0);
- i_this->mpCrownModelMorf->modelCalc();
+ i_this->crownAnmP->play(NULL, 0, 0);
+ i_this->crownAnmP->modelCalc();
}
- if (i_this->field_0x60d != 0) {
- PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(23), mDoMtx_stack_c::get());
- mDoMtx_stack_c::scaleM(l_HIO.mBoomerangRatio, l_HIO.mBoomerangRatio, l_HIO.mBoomerangRatio);
- mDoMtx_stack_c::transM(15.0f, 70.0f, 20.0f);
- mDoMtx_stack_c::YrotM(-0x652C);
- mDoMtx_stack_c::XrotM(-0x2219);
- mDoMtx_stack_c::ZrotM(0x38D8);
- i_this->mpBoomerangModel->setBaseTRMtx(mDoMtx_stack_c::get());
- }
-
- if (i_this->field_0x707 == 7) {
- u32 i_parameters = 0;
- if (i_this->mDemoMode != 0) {
- i_parameters = 1;
+ if (i_this->boomerangStatus != 0) {
+ MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_3_e), mDoMtx_stack_c::get());
+ mDoMtx_stack_c::scaleM(l_HIO.boomerang_ratio, l_HIO.boomerang_ratio, l_HIO.boomerang_ratio);
+ mDoMtx_stack_c::transM(JREG_F(17) + 15.0f, JREG_F(18) + 70.0f, JREG_F(19) + 20.0f);
+ mDoMtx_stack_c::YrotM(JREG_S(0) + -0x652C);
+ mDoMtx_stack_c::XrotM(JREG_S(1) + -0x2219);
+ mDoMtx_stack_c::ZrotM(JREG_S(2) + 0x38D8);
+ i_this->boomerangModelP->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+
+ if (i_this->unkFlag4 == 7) {
+ u32 parameters = 0;
+ if (i_this->demoSubMode != 0) {
+ parameters = 1;
}
- i_this->field_0x708 = fopAcM_createChild(PROC_E_MK_BO, fopAcM_GetID(i_this), i_parameters,
- &i_this->enemy.current.pos, fopAcM_GetRoomNo(&i_this->enemy), NULL, NULL,
+ i_this->boomerangId = fopAcM_createChild(PROC_E_MK_BO, fopAcM_GetID(actor), parameters,
+ &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL,
-1, NULL);
- i_this->field_0x707 = 0;
- }
-
- if (i_this->field_0x707 == 1) {
- e_mk_bo_class* i_actor = (e_mk_bo_class*)fopAcM_SearchByID(i_this->field_0x708);
- if (i_actor != NULL) {
- PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(23), *calc_mtx);
- sp6c.set(0.0f, 0.0f, 0.0f);
- MtxPosition(&sp6c, &sp78);
- i_actor->enemy.current.pos = sp78;
- i_actor->field_0x9b4 = 0;
- i_this->field_0x707 = 0;
+ i_this->unkFlag4 = 0;
+ }
+
+ if (i_this->unkFlag4 == 1) {
+ e_mk_bo_class* boomerang_p = (e_mk_bo_class*)fopAcM_SearchByID(i_this->boomerangId);
+ if (boomerang_p != NULL) {
+ MTXCopy(i_this->anmP->getModel()->getAnmMtx(MK_JNT_HAND_R_3_e), *calc_mtx);
+ work.set(KREG_F(15), KREG_F(16), KREG_F(17));
+ MtxPosition(&work, &pos);
+ boomerang_p->enemy.current.pos = pos;
+ boomerang_p->field_0x9b4 = 0;
+ i_this->unkFlag4 = 0;
}
}
- PSMTXCopy(model->getAnmMtx(24), *calc_mtx);
- sp6c.set(20.0f, 0.0f, 0.0f);
- MtxPosition(&sp6c, &sp78);
+ MTXCopy(model->getAnmMtx(MK_JNT_WAIST_e), *calc_mtx);
+ work.set(BREG_F(3) + 20.0f, BREG_F(4), BREG_F(5));
+ MtxPosition(&work, &pos);
- if (i_this->mAction >= 9) {
- i_this->enemy.eyePos = sp78;
- i_this->enemy.attention_info.position = i_this->enemy.eyePos;
- i_this->enemy.attention_info.position.y += 40.0f;
+ if (i_this->action >= 9) {
+ actor->eyePos = pos;
+ actor->attention_info.position = actor->eyePos;
+ actor->attention_info.position.y += BREG_F(7) + 40.0f;
}
- if (i_this->field_0x704 != 0) {
- sp78.y += 100000.0f;
+ if (i_this->invulnerabilityTimer != 0) {
+ pos.y += 100000.0f;
}
- i_this->field_0xad0.SetC(sp78);
- i_this->field_0xad0.SetR(l_HIO.mSize * 60.0f);
- dComIfG_Ccsp()->Set(&i_this->field_0xad0);
+ i_this->tgSph.SetC(pos);
+ i_this->tgSph.SetR((BREG_F(6) + 60.0f) * l_HIO.size);
+ dComIfG_Ccsp()->Set(&i_this->tgSph);
- sp6c.set(-70.0f, 70.0f, 0.0f);
- MtxPosition(&sp6c, &sp78);
+ work.set(BREG_F(7) + -70.0f, BREG_F(8) + 70.0f, BREG_F(9));
+ MtxPosition(&work, &pos);
- if (i_this->field_0x704 != 0) {
- sp78.y += 100000.0f;
+ if (i_this->invulnerabilityTimer != 0) {
+ pos.y += 100000.0f;
}
- i_this->field_0x998.SetC(sp78);
- i_this->field_0x998.SetR(l_HIO.mSize * 60.0f);
- dComIfG_Ccsp()->Set(&i_this->field_0x998);
+ i_this->sph.SetC(pos);
+ i_this->sph.SetR((BREG_F(10) + 60.0f) * l_HIO.size);
+ dComIfG_Ccsp()->Set(&i_this->sph);
- if (i_this->field_0x706 != 0) {
- i_this->field_0x706--;
- if (i_this->field_0x706 == 0) {
- dComIfGp_particle_set(0x15E, &i_this->enemy.eyePos, &i_this->enemy.shape_angle, NULL);
+ if (i_this->tubaTimer != 0) {
+ i_this->tubaTimer--;
+ if (i_this->tubaTimer == 0) {
+ dComIfGp_particle_set(ID_ZI_J_TUBA00, &actor->eyePos, &actor->shape_angle, NULL);
}
}
@@ -2692,14 +2778,17 @@ static int daE_MK_IsDelete(e_mk_class* i_this) {
}
static int daE_MK_Delete(e_mk_class* i_this) {
- fopAcM_GetID(i_this);
- dComIfG_resDelete(&i_this->mPhase, "E_mk");
- if (i_this->field_0xcf5 != 0) {
- lbl_210_bss_AA = 0;
+ fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
+ fpc_ProcID id = fopAcM_GetID(i_this);
+
+ dComIfG_resDelete(&i_this->phase, "E_mk");
+ if (i_this->hioInit != 0) {
+ l_initHIO = 0;
+ mDoHIO_DELETE_CHILD(l_HIO.no);
}
- if (i_this->enemy.heap != NULL) {
- i_this->mpModelMorf->stopZelAnime();
+ if (actor->heap != NULL) {
+ i_this->anmP->stopZelAnime();
}
return 1;
@@ -2707,33 +2796,33 @@ static int daE_MK_Delete(e_mk_class* i_this) {
static int useHeapInit(fopAc_ac_c* actor) {
e_mk_class* i_this = (e_mk_class*)actor;
- i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_mk", 48), NULL, NULL,
- (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", 40), 0, 1.0f,
- 0, -1, &i_this->mSound, 0x80000, 0x11020084);
- if (i_this->mpModelMorf == NULL || i_this->mpModelMorf->getModel() == NULL) {
+ i_this->anmP = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_MK_e), NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BCK_MK_WAIT_e), 0, 1.0f,
+ 0, -1, &i_this->sound, 0x80000, 0x11020084);
+ if (i_this->anmP == NULL || i_this->anmP->getModel() == NULL) {
return 0;
}
- i_this->mBtp = new mDoExt_btpAnm();
- if (i_this->mBtp == NULL) {
+ i_this->btpP = new mDoExt_btpAnm();
+ if (i_this->btpP == NULL) {
return 0;
}
- if (i_this->mBtp->init(i_this->mpModelMorf->getModel()->getModelData(), (J3DAnmTexPattern*)dComIfG_getObjectRes("E_mk", 55),
+ if (i_this->btpP->init(i_this->anmP->getModel()->getModelData(), (J3DAnmTexPattern*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BTP_MK_EYE_e),
1, 0, 1.0f, 0, -1) == 0) {
return 0;
}
- i_this->mpCrownModelMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_mk", 49), NULL, NULL,
- (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", 41), 0, 1.0f,
+ i_this->crownAnmP = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_OK_e), NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BCK_OK_DEFAULTPOSE_e), 0, 1.0f,
0, -1, 1, NULL, 0x80000, 0x11000084);
- if (i_this->mpCrownModelMorf == NULL || i_this->mpCrownModelMorf->getModel() == NULL) {
+ if (i_this->crownAnmP == NULL || i_this->crownAnmP->getModel() == NULL) {
return 0;
}
- J3DModelData* i_modelData = (J3DModelData*)dComIfG_getObjectRes("E_mk", 46);
- JUT_ASSERT(4743, i_modelData != NULL);
- i_this->mpBoomerangModel = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084);
- if (i_this->mpBoomerangModel == NULL) {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_mk", dRes_INDEX_E_MK_BMD_BM_e);
+ JUT_ASSERT(4743, modelData != NULL);
+ i_this->boomerangModelP = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (i_this->boomerangModelP == NULL) {
return 0;
}
@@ -2755,9 +2844,9 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
e_mk_class* mk = (e_mk_class*)i_actor;
- fopAcM_ct(&mk->enemy, e_mk_class);
+ fopAcM_ct(&mk->actor, e_mk_class);
- int phase = dComIfG_resLoad(&mk->mPhase, "E_mk");
+ int phase = dComIfG_resLoad(&mk->phase, "E_mk");
if (phase == cPhs_COMPLEATE_e) {
OS_REPORT("E_MK PARAM %x\n", fopAcM_GetParam(i_actor));
if (strcmp(dComIfGp_getStartStageName(), "D_MN05B") == 0 && dComIfGs_isStageMiddleBoss()) {
@@ -2765,7 +2854,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
return cPhs_ERROR_e;
}
- u8 i_no = (fopAcM_GetParam(i_actor) & 0xff000000) >> 24;
+ u8 i_no = (fopAcM_GetParam(i_actor) & 0xFF000000) >> 24;
if (i_no != 0xFF) {
if (dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(i_actor))) {
OS_REPORT("E_MK やられ後なので再セットしません\n"); // Since it's after the E_MK was done, I won't reset it.
@@ -2773,7 +2862,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
}
}
- mk->mParam = fopAcM_GetParam(i_actor);
+ mk->arg0 = fopAcM_GetParam(i_actor);
OS_REPORT("E_MK//////////////E_MK SET 1 !!\n");
if (!fopAcM_entrySolidHeap(i_actor, useHeapInit, 0x56f0)) {
@@ -2782,39 +2871,39 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
}
lbl_210_bss_130 = 0;
- if (lbl_210_bss_AA == 0) {
- mk->field_0xcf5 = 1;
- lbl_210_bss_AA = 1;
- l_HIO.field_0x4 = mDoHIO_CREATE_CHILD("ブーメラン猿", &l_HIO);
+ if (l_initHIO == 0) {
+ mk->hioInit = 1;
+ l_initHIO = 1;
+ l_HIO.no = mDoHIO_CREATE_CHILD("ブーメラン猿", &l_HIO);
}
i_actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e;
- fopAcM_SetMtx(i_actor, mk->mpModelMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMtx(i_actor, mk->anmP->getModel()->getBaseTRMtx());
fopAcM_SetMin(i_actor, -500.0f, -500.0f, -500.0f);
fopAcM_SetMax(i_actor, 500.0f, 500.0f, 500.0f);
- mk->mAcch.Set(fopAcM_GetPosition_p(i_actor), fopAcM_GetOldPosition_p(i_actor), &mk->enemy, 1, &mk->mAcchCir,
+ mk->acch.Set(fopAcM_GetPosition_p(i_actor), fopAcM_GetOldPosition_p(i_actor), i_actor, 1, &mk->acchcir,
fopAcM_GetSpeed_p(i_actor), NULL, NULL);
- mk->mAcchCir.SetWall(80.0f, 30.0f);
+ mk->acchcir.SetWall(80.0f, 30.0f);
i_actor->field_0x560 = i_actor->health = 200;
- mk->mSound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1);
- mk->mAtInfo.mpSound = &mk->mSound;
+ mk->sound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1);
+ mk->atInfo.mpSound = &mk->sound;
i_actor->attention_info.distances[2] = 4;
- mk->field_0x95c.Init(0xFF, 0, i_actor);
- mk->field_0xad0.Set(cc_sph_src);
- mk->field_0xad0.SetStts(&mk->field_0x95c);
- mk->field_0x998.Set(cc_sph_src);
- mk->field_0x998.SetStts(&mk->field_0x95c);
- mk->field_0x998.OnTgNoHitMark();
- mk->field_0x60c = 1;
- mk->field_0x60d = 1;
+ mk->stts.Init(0xFF, 0, i_actor);
+ mk->tgSph.Set(cc_sph_src);
+ mk->tgSph.SetStts(&mk->stts);
+ mk->sph.Set(cc_sph_src);
+ mk->sph.SetStts(&mk->stts);
+ mk->sph.OnTgNoHitMark();
+ mk->crownStatus = 1;
+ mk->boomerangStatus = 1;
if (fopAcM_GetRoomNo(i_actor) == 4) {
- mk->mAction = e_mk_class::ACT_R04_DEMO;
+ mk->action = e_mk_class::ACT_R04_DEMO;
i_actor->current.pos.set(0.0f, 3900.0f, -3000.0f);
i_actor->current.angle.y = 0;
i_actor->home = i_actor->current;
@@ -2823,21 +2912,21 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
STAGE_CENTER_POS.y -= 500.0f;
STAGE_ANGLE_Y = i_actor->home.angle.y;
- u8 i_no = (fopAcM_GetParam(i_actor) & 0xff0000) >> 16;
+ i_no = (fopAcM_GetParam(i_actor) & 0xff0000) >> 16;
if (i_no != 0xFF && dComIfGs_isSwitch(i_no, fopAcM_GetRoomNo(i_actor))) {
dComIfGs_offSwitch(i_no, fopAcM_GetRoomNo(i_actor));
- mk->mAction = e_mk_class::ACT_WAIT;
+ mk->action = e_mk_class::ACT_WAIT;
Z2GetAudioMgr()->subBgmStart(Z2BGM_BOOMERAMG_MONKEY);
} else {
- mk->mAction = e_mk_class::ACT_S_DEMO;
+ mk->action = e_mk_class::ACT_S_DEMO;
u32 i_parameters = fopAcM_GetParam(i_actor) & 0xFF000000 | 0xFFFF01;
cXyz sp30(-21.0f, 5114.0f, -4941.0f);
- mk->mBabaChildID = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters,
+ mk->dbId1 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters,
&sp30, fopAcM_GetRoomNo(i_actor), NULL,
NULL, -1, NULL);
sp30.set(-10.0f, 5114.0f, -4401.0f);
- mk->mBabaChildID2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters,
+ mk->dbId2 = fopAcM_createChild(PROC_E_DB, fopAcM_GetID(i_actor), i_parameters,
&sp30, fopAcM_GetRoomNo(i_actor), NULL,
NULL, -1, NULL);
@@ -2846,7 +2935,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
}
i_actor->gravity = -5.0f;
- i_actor->scale.x = l_HIO.mSize * l_HIO.mBoomerangRatio;
+ i_actor->scale.x = l_HIO.size * l_HIO.boomerang_ratio;
daE_MK_Execute(mk);
}
@@ -2869,7 +2958,7 @@ extern actor_process_profile_definition g_profile_E_MK = {
fpcPi_CURRENT_e, // mListPrio
PROC_E_MK, // mProcName
&g_fpcLf_Method.base, // sub_method
- sizeof(e_mk_class), // mSize
+ sizeof(e_mk_class), // size
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
diff --git a/src/d/actor/d_a_e_mk_bo.cpp b/src/d/actor/d_a_e_mk_bo.cpp
index f7c2beb779..4ba7dde5ce 100644
--- a/src/d/actor/d_a_e_mk_bo.cpp
+++ b/src/d/actor/d_a_e_mk_bo.cpp
@@ -46,7 +46,7 @@ static void hit_check(e_mk_bo_class* i_this) {
e_mk_class* e_mk = (e_mk_class*)a_parent;
cXyz sp24;
- if (i_this->ccAtSph.ChkTgHit() || i_this->acch.ChkGroundHit() || i_this->acch.ChkWallHit() || (e_mk != NULL && e_mk->field_0xc30 == 1 && i_this->ccAtSph.ChkAtHit()) || i_this->ccAtSph.ChkAtShieldHit()) {
+ if (i_this->ccAtSph.ChkTgHit() || i_this->acch.ChkGroundHit() || i_this->acch.ChkWallHit() || (e_mk != NULL && e_mk->demoMode == e_mk_class::DEMO_MODE_START && i_this->ccAtSph.ChkAtHit()) || i_this->ccAtSph.ChkAtShieldHit()) {
i_this->field_0x5f8 = 20;
OS_REPORT("E_MK_BO HIT \n");
@@ -66,8 +66,8 @@ static void hit_check(e_mk_bo_class* i_this) {
i_this->field_0x998 = 2;
}
- if (i_this->field_0x5dc <= 2) {
- i_this->field_0x5dc = 3;
+ if (i_this->mode <= 2) {
+ i_this->mode = 3;
i_this->field_0x5e0 = a_parent->current.pos;
i_this->field_0x5e0.y += 100.0f;
@@ -95,17 +95,17 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) {
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
cXyz sp3C;
- switch (i_this->field_0x5dc) {
+ switch (i_this->mode) {
case 0:
- if (e_mk->field_0x70c != 0) {
- i_this->field_0x5e0 = e_mk->field_0x70c->enemy.current.pos;
+ if (e_mk->db != NULL) {
+ i_this->field_0x5e0 = e_mk->db->enemy.current.pos;
i_this->field_0x5e0.y += 100.0f;
} else {
i_this->field_0x5e0 = player->current.pos;
i_this->field_0x5e0.y += 100.0f;
}
- i_this->field_0x5dc = 1;
+ i_this->mode = 1;
sp3C = i_this->field_0x5e0 - actor->current.pos;
actor->current.angle.y = cM_atan2s(sp3C.x, sp3C.z);
@@ -116,7 +116,7 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) {
case 1:
sp3C = i_this->field_0x5e0 - actor->current.pos;
if (sp3C.abs() < 300.0f + TREG_F(18)) {
- i_this->field_0x5dc = 2;
+ i_this->mode = 2;
i_this->timers[0] = 30;
}
break;
@@ -136,17 +136,17 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) {
cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4);
f32 temp_f31 = sp3C.abs();
- if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) {
+ if (e_mk->demoSubMode != 0 || (e_mk->action == e_mk_class::ACT_SHOOT && e_mk->mode >= 20)) {
if (temp_f31 < 350.0f + YREG_F(18)) {
i_this->field_0x600 = 1;
- e_mk->field_0x707 = 3;
+ e_mk->unkFlag4 = 3;
} else if (temp_f31 < 600.0f + YREG_F(17)) {
- e_mk->field_0x707 = 2;
+ e_mk->unkFlag4 = 2;
}
- } else if (e_mk->mAction == 3 && temp_f31 < 120.0f + YREG_F(19)) {
- e_mk->field_0x707 = 4;
+ } else if (e_mk->action == e_mk_class::ACT_YORO && temp_f31 < 120.0f + YREG_F(19)) {
+ e_mk->unkFlag4 = 4;
i_this->action = 1;
- i_this->field_0x5dc = 0;
+ i_this->mode = 0;
dComIfGp_setHitMark(3, actor, &actor->current.pos, &actor->shape_angle, NULL, 0);
actor->speed.y = 30.0f;
i_this->timers[0] = 40;
@@ -170,7 +170,7 @@ static s8 e_mk_bo_shot(e_mk_bo_class* i_this) {
cCcD_Obj* at_hit_obj = i_this->ccAtSph.GetAtHitObj();
if (fopAcM_GetName(dCc_GetAc(at_hit_obj->GetAc())) == PROC_ALINK) {
OS_REPORT("E_MK_BO PL HIT !!!!\n");
- e_mk->field_0x707 = 5;
+ e_mk->unkFlag4 = 5;
i_this->field_0x5f8 = 10;
}
}
@@ -193,11 +193,11 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) {
cXyz sp38;
f32 temp_f31;
- switch (i_this->field_0x5dc) {
+ switch (i_this->mode) {
case 0:
i_this->field_0x998 = 1;
i_this->field_0x5e0.set(0.0f, 5000.0f + JREG_F(18), -3900.0f);
- i_this->field_0x5dc = 1;
+ i_this->mode = 1;
sp38 = i_this->field_0x5e0 - actor->current.pos;
actor->current.angle.y = cM_atan2s(sp38.x, sp38.z);
@@ -208,7 +208,7 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) {
case 1:
sp38 = i_this->field_0x5e0 - actor->current.pos;
if (sp38.abs() < 200.0f + TREG_F(18)) {
- i_this->field_0x5dc = 2;
+ i_this->mode = 2;
i_this->timers[0] = 30;
}
break;
@@ -228,12 +228,12 @@ static s8 e_mk_bo_start(e_mk_bo_class* i_this) {
cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4);
temp_f31 = sp38.abs();
- if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) {
+ if (e_mk->demoSubMode != 0 || (e_mk->action == e_mk_class::ACT_SHOOT && e_mk->mode >= 20)) {
if (temp_f31 < 350.0f + YREG_F(18)) {
i_this->field_0x600 = 1;
- e_mk->field_0x707 = 3;
+ e_mk->unkFlag4 = 3;
} else if (temp_f31 < 600.0f + YREG_F(17)) {
- e_mk->field_0x707 = 2;
+ e_mk->unkFlag4 = 2;
}
}
break;
@@ -267,10 +267,10 @@ static s8 e_mk_bo_r04(e_mk_bo_class* i_this) {
cXyz sp1C;
f32 temp_f31;
- switch (i_this->field_0x5dc) {
+ switch (i_this->mode) {
case 0:
i_this->field_0x998 = 1;
- i_this->field_0x5dc = 1;
+ i_this->mode = 1;
actor->current.angle.y = a_parent->shape_angle.y + (VREG_S(7) - 0x3000);
i_this->field_0x5fa = actor->current.angle.y;
@@ -295,9 +295,9 @@ static s8 e_mk_bo_r04(e_mk_bo_class* i_this) {
temp_f31 = sp1C.abs();
if (i_this->timers[1] == 0 && temp_f31 < 350.0f + YREG_F(18)) {
i_this->field_0x600 = 1;
- e_mk->field_0x707 = 3;
+ e_mk->unkFlag4 = 3;
} else if (temp_f31 < 600.0f + YREG_F(17)) {
- e_mk->field_0x707 = 2;
+ e_mk->unkFlag4 = 2;
}
}
break;
@@ -323,21 +323,21 @@ static void e_mk_bo_hasira(e_mk_bo_class* i_this) {
if (a_parent != NULL) {
e_mk_class* e_mk = (e_mk_class*)a_parent;
- if (e_mk->field_0xc30 == 2) {
- i_this->action = 2;
+ if (e_mk->demoMode == e_mk_class::DEMO_MODE_END) {
+ i_this->action = e_mk_class::ACT_SHOOT;
i_this->field_0x998 = 1;
return;
}
cXyz sp24;
cXyz sp18;
- if (e_mk->mHasira != NULL) {
- daPillar_c* pillar = e_mk->mHasira;
+ if (e_mk->hasira != NULL) {
+ daPillar_c* pillar = e_mk->hasira;
cXyz spC;
- mDoMtx_stack_c::transS(e_mk->mHasira->current.pos.x, e_mk->mHasira->current.pos.y, e_mk->mHasira->current.pos.z);
+ mDoMtx_stack_c::transS(e_mk->hasira->current.pos.x, e_mk->hasira->current.pos.y, e_mk->hasira->current.pos.z);
mDoMtx_stack_c::YrotM(pillar->mRotY);
- mDoMtx_stack_c::XrotM(e_mk->mHasira->shape_angle.x);
+ mDoMtx_stack_c::XrotM(e_mk->hasira->shape_angle.x);
mDoMtx_stack_c::YrotM(-pillar->mRotY);
mDoMtx_stack_c::transM(0.0f, 500.0f, 0.0f);
mDoMtx_multVecZero(mDoMtx_stack_c::get(), &spC);
@@ -356,17 +356,17 @@ static void e_mk_bo_hasira(e_mk_bo_class* i_this) {
if (actor->current.pos.y <= 7.0f + spC.y) {
actor->current.pos.y = 7.0f + spC.y;
- if (i_this->field_0x5dc <= 3) {
+ if (i_this->mode <= 3) {
actor->speed.y *= -0.4f;
} else {
actor->speed.y = 0.0f;
}
- if (i_this->field_0x5dc <= 1) {
+ if (i_this->mode <= 1) {
i_this->timers[0] = 20;
}
- i_this->field_0x5dc++;
+ i_this->mode++;
}
if (pillar->checkRollAttack()) {
@@ -391,7 +391,7 @@ static void e_mk_bo_demo_ground(e_mk_bo_class* i_this) {
if (actor->health != 0) {
actor->health = 0;
i_this->action = 3;
- i_this->field_0x5dc = 0;
+ i_this->mode = 0;
actor->home.pos.y = actor->current.pos.y;
}
@@ -406,12 +406,12 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) {
cXyz sp28;
f32 var_f31 = 0.0f;
- switch (i_this->field_0x5dc) {
+ switch (i_this->mode) {
case 4:
break;
case 0:
actor->speed.y = 0.0f;
- i_this->field_0x5dc = 1;
+ i_this->mode = 1;
actor->home.pos = actor->current.pos;
i_this->timers[0] = 20;
actor->speedF = 0.0f;
@@ -443,7 +443,7 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) {
actor->current.angle.y = fopAcM_searchPlayerAngleY(actor) + 0x8000;
i_this->field_0x5ec = 0;
i_this->timers[0] = 40;
- i_this->field_0x5dc = 2;
+ i_this->mode = 2;
}
break;
case 2:
@@ -458,7 +458,7 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) {
s16 sp8 = (actor->current.angle.y - fopAcM_searchPlayerAngleY(actor));
if (sp8 <= 0x400 && sp8 > -0x400) {
- i_this->field_0x5dc = 3;
+ i_this->mode = 3;
}
cLib_addCalcAngleS2(&actor->shape_angle.z, -0x1200, 2, 0x200);
@@ -475,8 +475,8 @@ static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) {
if (fopAcM_searchPlayerDistanceXZ(actor) < 50.0f) {
e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID);
- e_mk->mDemoMode++;
- i_this->field_0x5dc = 4;
+ e_mk->demoSubMode++;
+ i_this->mode = 4;
i_this->field_0x600 = 1;
}
break;
@@ -507,9 +507,9 @@ static void action(e_mk_bo_class* i_this) {
switch (i_this->action) {
case 0:
- if (e_mk->field_0xc30 == 1) {
+ if (e_mk->demoMode == e_mk_class::DEMO_MODE_START) {
var_r28 = e_mk_bo_start(i_this);
- } else if (e_mk->field_0xc30 == 3 || fopAcM_GetRoomNo(actor) == 4) {
+ } else if (e_mk->demoMode == e_mk_class::DEMO_MODE_R04 || fopAcM_GetRoomNo(actor) == 4) {
var_r28 = e_mk_bo_r04(i_this);
} else {
var_r28 = e_mk_bo_shot(i_this);
@@ -606,8 +606,8 @@ static int daE_MK_BO_Execute(e_mk_bo_class* i_this) {
i_this->model->setBaseTRMtx(mDoMtx_stack_c::get());
e_mk_class* e_mk = (e_mk_class*)a_parent;
- if (e_mk->field_0x707 == 6) {
- e_mk->field_0x707 = 0;
+ if (e_mk->unkFlag4 == 6) {
+ e_mk->unkFlag4 = 0;
fopAcM_delete(actor);
}
@@ -643,15 +643,15 @@ static int daE_MK_BO_Execute(e_mk_bo_class* i_this) {
for (int i = 0; i < eff_num; i++) {
if (i_this->action >= 2) {
if (i < 2) {
- e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_2[i], &actor->current.pos, NULL, NULL);
- emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]);
+ e_mk->boEno1Prtcls[i] = dComIfGp_particle_set(e_mk->boEno1Prtcls[i], bo_eno_2[i], &actor->current.pos, NULL, NULL);
+ emt = dComIfGp_particle_getEmitter(e_mk->boEno1Prtcls[i]);
} else {
i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_2[i], &actor->current.pos, NULL, NULL);
emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]);
}
} else if (i < 2) {
- e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_1[i], &actor->current.pos, NULL, NULL);
- emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]);
+ e_mk->boEno1Prtcls[i] = dComIfGp_particle_set(e_mk->boEno1Prtcls[i], bo_eno_1[i], &actor->current.pos, NULL, NULL);
+ emt = dComIfGp_particle_getEmitter(e_mk->boEno1Prtcls[i]);
} else {
i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_1[i], &actor->current.pos, NULL, NULL);
emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]);