summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/JSystem/JFramework/JFWSystem.h1
-rw-r--r--include/JSystem/JHostIO/JORServer.h1
-rw-r--r--include/JSystem/JParticle/JPAEmitterManager.h1
-rw-r--r--include/SSystem/SComponent/c_API_controller_pad.h38
-rw-r--r--include/d/actor/d_a_grass.h2
-rw-r--r--include/d/actor/d_a_kago.h110
-rw-r--r--include/d/d_bg_s.h2
-rw-r--r--include/d/d_camera.h3
-rw-r--r--include/d/d_com_inf_game.h45
-rw-r--r--include/d/d_demo.h1
-rw-r--r--include/d/d_eye_hl.h4
-rw-r--r--include/d/d_jpreviewer.h4
-rw-r--r--include/d/d_particle.h5
-rw-r--r--include/d/d_path.h7
-rw-r--r--include/d/d_resorce.h9
-rw-r--r--include/d/d_s_logo.h114
-rw-r--r--include/d/d_s_menu.h2
-rw-r--r--include/d/d_s_play.h25
-rw-r--r--include/d/d_s_play_env.h5
-rw-r--r--include/d/d_save_HIO.h3
-rw-r--r--include/d/d_stage.h14
-rw-r--r--include/f_op/f_op_actor.h3
-rw-r--r--include/f_op/f_op_actor_mng.h3
-rw-r--r--include/f_op/f_op_kankyo.h2
-rw-r--r--include/f_op/f_op_kankyo_mng.h1
-rw-r--r--include/m_Do/m_Do_Reset.h4
-rw-r--r--include/m_Do/m_Do_audio.h4
-rw-r--r--include/m_Do/m_Do_ext.h6
-rw-r--r--include/m_Re/m_Re_controller_pad.h2
-rw-r--r--include/revolution/os/OSResetSW.h1
-rw-r--r--include/revolution/sc.h1
-rw-r--r--src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cmath5
-rw-r--r--src/SSystem/SComponent/c_phase.cpp4
-rw-r--r--src/c/c_dylink.cpp8
-rw-r--r--src/d/actor/d_a_grass.cpp2
-rw-r--r--src/d/actor/d_a_kago.cpp2038
-rw-r--r--src/d/actor/d_a_mg_fshop.cpp2
-rw-r--r--src/d/actor/d_a_npc_wrestler.cpp2
-rw-r--r--src/d/actor/d_a_obj_volcball.cpp2
-rw-r--r--src/d/d_camera.cpp4
-rw-r--r--src/d/d_com_inf_game.cpp8
-rw-r--r--src/d/d_path.cpp19
-rw-r--r--src/d/d_s_logo.cpp894
-rw-r--r--src/d/d_s_play.cpp1032
-rw-r--r--src/d/d_stage.cpp4
-rw-r--r--src/f_op/f_op_actor_mng.cpp4
-rw-r--r--src/f_op/f_op_kankyo.cpp4
-rw-r--r--src/f_op/f_op_kankyo_mng.cpp4
-rw-r--r--src/m_Do/m_Do_audio.cpp2
49 files changed, 3110 insertions, 1351 deletions
diff --git a/include/JSystem/JFramework/JFWSystem.h b/include/JSystem/JFramework/JFWSystem.h
index cf6ac86b69..0078e9aa1a 100644
--- a/include/JSystem/JFramework/JFWSystem.h
+++ b/include/JSystem/JFramework/JFWSystem.h
@@ -37,6 +37,7 @@ struct JFWSystem {
static JUTConsole* getSystemConsole() { return systemConsole; }
static JKRExpHeap* getSystemHeap() { return systemHeap; }
+ static JKRExpHeap* getRootHeap() { return rootHeap; }
static JUTResFont* getSystemFont() { return systemFont; }
static void setMaxStdHeap(int max) {
diff --git a/include/JSystem/JHostIO/JORServer.h b/include/JSystem/JHostIO/JORServer.h
index d92e588117..2c2ebf72d2 100644
--- a/include/JSystem/JHostIO/JORServer.h
+++ b/include/JSystem/JHostIO/JORServer.h
@@ -9,6 +9,7 @@
#include "JSystem/JUtility/JUTAssert.h"
u32 JORMessageBox(const char* message, const char* title, u32 style);
+int JORShellExecute(const char* param_0, const char* param_1, const char* param_2, const char* param_3, int param_4);
struct JOREventCallbackListNode {
JOREventCallbackListNode(u32, u32, bool);
diff --git a/include/JSystem/JParticle/JPAEmitterManager.h b/include/JSystem/JParticle/JPAEmitterManager.h
index 4508ef9cec..a36d8041c0 100644
--- a/include/JSystem/JParticle/JPAEmitterManager.h
+++ b/include/JSystem/JParticle/JPAEmitterManager.h
@@ -39,6 +39,7 @@ public:
return pResMgrAry[res_mgr_id];
}
int getEmitterNumber() const { return emtrNum - mFreeEmtrList.getNumLinks(); }
+ int getParticleNumber() const { return ptclNum - mPtclPool.getNum(); }
public:
/* 0x00 */ JSUList<JPABaseEmitter>* pEmtrUseList;
diff --git a/include/SSystem/SComponent/c_API_controller_pad.h b/include/SSystem/SComponent/c_API_controller_pad.h
index 36d8fa5a1f..501e7aee72 100644
--- a/include/SSystem/SComponent/c_API_controller_pad.h
+++ b/include/SSystem/SComponent/c_API_controller_pad.h
@@ -35,4 +35,42 @@ struct interface_of_controller_pad {
void cAPICPad_recalibrate(void);
u32 cAPICPad_ANY_BUTTON(u32 param_0);
+#if PLATFORM_WII
+u32 cAPICPad_BUTTON(u32 i_padNo);
+u32 cAPICPad_Z_BUTTON(u32 i_padNo);
+u32 cAPICPad_R_BUTTON(u32 i_padNo);
+u32 cAPICPad_L_BUTTON(u32 i_padNo);
+u32 cAPICPad_A_BUTTON(u32 i_padNo);
+u32 cAPICPad_B_BUTTON(u32 i_padNo);
+u32 cAPICPad_X_BUTTON(u32 i_padNo);
+u32 cAPICPad_Y_BUTTON(u32 i_padNo);
+
+u32 cAPICPad_TRIGGER(u32 i_padNo);
+u32 cAPICPad_Z_TRIGGER(u32 i_padNo);
+u32 cAPICPad_R_TRIGGER(u32 i_padNo);
+u32 cAPICPad_UP_TRIGGER(u32 i_padNo);
+u32 cAPICPad_DOWN_TRIGGER(u32 i_padNo);
+u32 cAPICPad_LEFT_TRIGGER(u32 i_padNo);
+u32 cAPICPad_RIGHT_TRIGGER(u32 i_padNo);
+u32 cAPICPad_L_TRIGGER(u32 i_padNo);
+u32 cAPICPad_A_TRIGGER(u32 i_padNo);
+u32 cAPICPad_B_TRIGGER(u32 i_padNo);
+u32 cAPICPad_X_TRIGGER(u32 i_padNo);
+u32 cAPICPad_Y_TRIGGER(u32 i_padNo);
+u32 cAPICPad_START_TRIGGER(u32 i_padNo);
+
+f32 cAPICPad_X_STICK(u32 i_padNo);
+f32 cAPICPad_X_STICK_3D(u32 i_padNo);
+f32 cAPICPad_Y_STICK(u32 i_padNo);
+f32 cAPICPad_VALUE_STICK(u32 i_padNo);
+s16 cAPICPad_ANGLE_STICK(u32 i_padNo);
+s16 cAPICPad_ANGLE_STICK_3D(u32 i_padNo);
+f32 cAPICPad_X_SUBSTICK(u32 i_padNo);
+f32 cAPICPad_Y_SUBSTICK(u32 i_padNo);
+f32 cAPICPad_VALUE_SUBSTICK(u32 i_padNo);
+s16 cAPICPad_ANGLE_SUBSTICK(u32 i_padNo);
+f32 cAPICPad_L_ANALOG(u32 i_padNo);
+f32 cAPICPad_R_ANALOG(u32 i_padNo);
+#endif
+
#endif
diff --git a/include/d/actor/d_a_grass.h b/include/d/actor/d_a_grass.h
index 549a067eba..4b07bea1d5 100644
--- a/include/d/actor/d_a_grass.h
+++ b/include/d/actor/d_a_grass.h
@@ -44,6 +44,8 @@ public:
static daGrass_c* m_myObj;
static dGrass_packet_c* m_grass;
static dFlower_packet_c* m_flower;
+
+ /* 0x568 */ u8 unk_0x568[0x570 - 0x568];
};
namespace daGrass_prm {
diff --git a/include/d/actor/d_a_kago.h b/include/d/actor/d_a_kago.h
index a84d049ad2..90de3b74bf 100644
--- a/include/d/actor/d_a_kago.h
+++ b/include/d/actor/d_a_kago.h
@@ -18,6 +18,20 @@
*/
class daKago_c : public fopAc_ac_c {
public:
+ enum daKago_Action_e {
+ ACTION_FLY_e,
+ ACTION_STAGGER_e,
+ ACTION_EVENT_e,
+ ACTION_PERCH_e,
+ ACTION_WAIT_e,
+ ACTION_ATTACK_e,
+ ACTION_EVENT2_e,
+ ACTION_PERCH2_e,
+ ACTION_LANDING_e,
+ ACTION_DEMO_FLY_e,
+ ACTION_DEMO_FLY2_e,
+ };
+
int getBckName(int);
void setBck(int, u8, f32, f32);
bool checkBck(int);
@@ -93,14 +107,14 @@ public:
void setEvent() {
mIsFlying = false;
- mCurrentAction = 2;
- field_0x744 = 0;
+ mAction = ACTION_EVENT_e;
+ mMode = 0;
}
void setEvent2() {
mIsFlying = false;
- mCurrentAction = 6;
- field_0x744 = 0;
+ mAction = ACTION_EVENT2_e;
+ mMode = 0;
}
void setKagoPath(u8 i_pathNo) {
@@ -110,36 +124,36 @@ public:
}
void onWaterFall() {
- field_0x6ea = 1;
+ mIsWaterfall = TRUE;
}
bool isAttack() {
- return field_0x6dd != 0;
+ return mIsAttack != 0;
}
MtxP getLegR3Mtx() { return mLegR3Mtx; }
- MtxP getMidnaLocaterMtx() { return mpMorf->getModel()->getAnmMtx(4); }
+ MtxP getMidnaLocaterMtx() { return mAnm_p->getModel()->getAnmMtx(4); }
s8 getPathDir() { return mPathDir; }
u8 isFlying() { return mIsFlying; }
fopAc_ac_c* getLockActor() { return mpLockActor; }
void setLockActor(fopAc_ac_c* actor) { mpLockActor = actor; }
void setEatYm() { field_0x6d8 |= (u8) 4; }
- MtxP getMouthMtx() { return mpMorf->getModel()->getAnmMtx(7); }
+ MtxP getMouthMtx() { return mAnm_p->getModel()->getAnmMtx(7); }
private:
/* 0x568 */ request_of_phase_process_class mPhase;
- /* 0x570 */ mDoExt_McaMorfSO* mpMorf;
+ /* 0x570 */ mDoExt_McaMorfSO* mAnm_p;
/* 0x574 */ Z2CreatureEnemy mSound;
/* 0x618 */ fopAc_ac_c* mpLockActor;
/* 0x61C */ fpc_ProcID mBalloon2DId;
/* 0x620 */ Mtx mLegR3Mtx;
- /* 0x650 */ cXyz field_0x650[3];
+ /* 0x650 */ cXyz mWallHitEffPos[3];
/* 0x674 */ cXyz field_0x674;
/* 0x680 */ cXyz field_0x680;
- /* 0x68C */ cXyz field_0x68c;
- /* 0x698 */ cXyz field_0x698;
+ /* 0x68C */ cXyz mDemoCamCenter;
+ /* 0x698 */ cXyz mDemoCamEye;
/* 0x6A4 */ cXyz field_0x6a4;
- /* 0x6B0 */ cXyz field_0x6b0;
+ /* 0x6B0 */ cXyz mPrevCamEye;
/* 0x6BC */ s16 field_0x6bc;
/* 0x6BE */ csXyz field_0x6be;
/* 0x6C4 */ f32 field_0x6c4;
@@ -147,12 +161,12 @@ private:
/* 0x6CA */ s16 field_0x6ca;
/* 0x6CC */ f32 field_0x6cc;
/* 0x6D0 */ f32 field_0x6d0;
- /* 0x6D4 */ f32 field_0x6d4;
+ /* 0x6D4 */ f32 mDemoCamFovy;
/* 0x6D8 */ u8 field_0x6d8;
/* 0x6D9 */ u8 field_0x6d9;
/* 0x6DA */ s16 field_0x6da;
/* 0x6DC */ u8 field_0x6dc;
- /* 0x6DD */ u8 field_0x6dd;
+ /* 0x6DD */ u8 mIsAttack;
/* 0x6DE */ u8 field_0x6de;
/* 0x6DF */ u8 field_0x6df;
/* 0x6E0 */ u8 field_0x6e0;
@@ -162,18 +176,18 @@ private:
/* 0x6E4 */ u8 field_0x6e4;
/* 0x6E5 */ u8 field_0x6e5;
/* 0x6E6 */ u8 field_0x6e6;
- /* 0x6E7 */ u8 field_0x6e7;
+ /* 0x6E7 */ u8 mType;
/* 0x6E8 */ u8 field_0x6e8;
/* 0x6E8 */ u8 field_0x6e9;
- /* 0x6EA */ u8 field_0x6ea;
- /* 0x6EB */ u8 field_0x6eb;
+ /* 0x6EA */ u8 mIsWaterfall;
+ /* 0x6EB */ u8 mBalloonMenuMode;
/* 0x6EC */ u8 field_0x6ec[0x6ed - 0x6ec];
- /* 0x6ED */ u8 field_0x6ed;
- /* 0x6F0 */ f32 field_0x6f0;
- /* 0x6F4 */ f32 field_0x6f4;
- /* 0x6F8 */ f32 field_0x6f8;
+ /* 0x6ED */ u8 unk_0x6ed;
+ /* 0x6F0 */ f32 mStickX;
+ /* 0x6F4 */ f32 mStickY;
+ /* 0x6F8 */ f32 mFlySpeed;
/* 0x6FC */ f32 field_0x6fc;
- /* 0x700 */ f32 field_0x700;
+ /* 0x700 */ f32 mGroundFlyHeight;
/* 0x704 */ f32 mGroundHeight;
/* 0x708 */ f32 mRoofHeight;
/* 0x70C */ f32 field_0x70c;
@@ -181,32 +195,32 @@ private:
/* 0x712 */ s16 field_0x712;
/* 0x714 */ s16 field_0x714;
/* 0x716 */ s16 field_0x716;
- /* 0x718 */ s16 field_0x718;
- /* 0x71A */ s16 field_0x71a;
- /* 0x71C */ s32 field_0x71c;
- /* 0x720 */ s32 field_0x720;
+ /* 0x718 */ s16 mHeadRotZ;
+ /* 0x71A */ s16 mHeadRotY;
+ /* 0x71C */ int mWaterSplashTimer;
+ /* 0x720 */ int mWallHitInvulnTimer;
/* 0x724 */ u8 field_0x724[0x728 - 0x724];
- /* 0x728 */ s32 field_0x728;
- /* 0x72C */ s32 field_0x72c;
- /* 0x730 */ s32 mDashCooldownTime;
- /* 0x734 */ s32 mDashTime;
- /* 0x738 */ s32 field_0x738;
- /* 0x73C */ s32 field_0x73c;
- /* 0x740 */ s32 mCurrentAction;
- /* 0x744 */ s32 field_0x744;
- /* 0x748 */ s32 field_0x748;
- /* 0x74C */ s32 field_0x74c;
- /* 0x750 */ s32 field_0x750;
- /* 0x754 */ s32 field_0x754;
- /* 0x758 */ s32 field_0x758;
- /* 0x75C */ char* field_0x75c;
- /* 0x760 */ char* field_0x760;
- /* 0x764 */ s32 field_0x764;
+ /* 0x728 */ int field_0x728;
+ /* 0x72C */ int field_0x72c;
+ /* 0x730 */ int mDashCooldownTime;
+ /* 0x734 */ int mDashTime;
+ /* 0x738 */ int mGndSpecialCode;
+ /* 0x73C */ int mSceneType;
+ /* 0x740 */ int mAction;
+ /* 0x744 */ int mMode;
+ /* 0x748 */ int mDemoMode;
+ /* 0x74C */ int field_0x74c;
+ /* 0x750 */ int field_0x750;
+ /* 0x754 */ int field_0x754;
+ /* 0x758 */ int field_0x758;
+ /* 0x75C */ char* mArcName;
+ /* 0x760 */ char* mDemoName;
+ /* 0x764 */ u32 mShadowId;
/* 0x768 */ dPath* mpPath1;
/* 0x76C */ dPath* mpPath2;
- /* 0x770 */ s8 mPathIdx;
+ /* 0x770 */ s8 mPathCurrentPointNo;
/* 0x771 */ s8 field_0x771;
- /* 0x772 */ s8 mPathIdxOffset;
+ /* 0x772 */ s8 mPathStep;
/* 0x773 */ s8 mPathDir;
/* 0x774 */ u8 field_0x774[0x778 - 0x774];
/* 0x778 */ dBgS_AcchCir mAcchCir;
@@ -220,9 +234,9 @@ private:
/* 0xB38 */ u32 field_0xb38;
/* 0xB3C */ u32 field_0xb3c;
/* 0xB40 */ u32 field_0xb40;
- /* 0xB44 */ u32 field_0xb44[3];
- /* 0xB50 */ u32 field_0xb50;
- /* 0xB54 */ u8 field_0xb54;
+ /* 0xB44 */ u32 mSibukiEmitterIDs[3];
+ /* 0xB50 */ u32 mDashSibukiEmitterID;
+ /* 0xB54 */ u8 mIsHioSet;
/* 0xB58 */ dMsgFlow_c mMsgFlow;
};
diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h
index c0804bd07c..537748470c 100644
--- a/include/d/d_bg_s.h
+++ b/include/d/d_bg_s.h
@@ -195,6 +195,8 @@ public:
void ChkDeleteActorRegist(fopAc_ac_c*);
+ void Draw();
+
#if DEBUG
/* 0x1404 */ u8 field_0x1404[0x1408 - 0x1404];
/* 0x1408 */ dBgS_HIO m_hio;
diff --git a/include/d/d_camera.h b/include/d/d_camera.h
index c49cce155e..f7a7132538 100644
--- a/include/d/d_camera.h
+++ b/include/d/d_camera.h
@@ -1367,8 +1367,7 @@ public:
/* 0x970 */ dCamSetup_c mCamSetup;
/* 0xAEC */ dCamParam_c mCamParam;
/* 0xB0C */ u8 field_0xb0c;
- /* 0xB0D */ u8 field_0xb0d[0xd58 - 0xb0d];
-}; // Size: 0xD58
+}; // Size: 0xB10
dCamera_c* dCam_getBody();
camera_class* dCam_getCamera();
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 20101bc074..d8556e2fde 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -952,7 +952,7 @@ public:
dComIfG_inf_c() { this->ct(); }
~dComIfG_inf_c() {}
void ct();
- void createBaseCsr();
+ static void createBaseCsr();
#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG
class baseCsr_c : public mDoGph_gInf_c::csr_c {
@@ -1022,7 +1022,9 @@ public:
/* 0x1DE09 */ u8 field_0x1de09;
/* 0x1DE0A */ u8 field_0x1de0a;
/* 0x1DE0B */ u8 mIsDebugMode;
- /* 0x1DE0C */ u8 field_0x1de0c;
+ #if DEBUG
+ /* 0x1DE0C */ OSStopwatch mStopwatch;
+ #endif
static __d_timer_info_c dComIfG_mTimerInfo;
#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG
@@ -1174,6 +1176,7 @@ int dComIfG_TimerEnd(int i_mode, int param_1);
int dComIfG_TimerDeleteCheck(int);
int dComIfG_TimerDeleteRequest(int i_mode);
int dComLbG_PhaseHandler(request_of_phase_process_class*, request_of_phase_process_fn*, void*);
+BOOL dComIfG_isSceneResetButton();
int dComIfGd_setSimpleShadow(cXyz* i_pos, f32 param_1, f32 param_2, cBgS_PolyInfo& param_3, s16 i_angle,
f32 param_5, _GXTexObj* i_tex);
@@ -3262,6 +3265,22 @@ inline JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* i_pos
NULL, NULL, NULL, -1, NULL);
}
+inline u32 dComIfGp_particle_getHeapSize() {
+ return g_dComIfG_gameInfo.play.getParticle()->getHeapSize();
+}
+
+inline u32 dComIfGp_particle_getSceneHeapSize() {
+ return g_dComIfG_gameInfo.play.getParticle()->getSceneHeapSize();
+}
+
+inline int dComIfGp_particle_getEmitterNum() {
+ return g_dComIfG_gameInfo.play.getParticle()->getEmitterNum();
+}
+
+inline int dComIfGp_particle_getParticleNum() {
+ return g_dComIfG_gameInfo.play.getParticle()->getParticleNum();
+}
+
inline dSmplMdl_draw_c* dComIfGp_getSimpleModel() {
return g_dComIfG_gameInfo.play.getSimpleModel();
}
@@ -4369,6 +4388,28 @@ inline u32 dComIfG_getTrigB(u32 i_padNo) {
return mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_B;
}
+inline u32 dComIfG_getObjectAllSize() {
+ return g_dComIfG_gameInfo.mResControl.getObjectAllSize();
+}
+
+inline u32 dComIfG_getStageAllSize() {
+ return g_dComIfG_gameInfo.mResControl.getStageAllSize();
+}
+
+inline u32 dComIfG_getObjectSize(const char* i_arcName) {
+ return g_dComIfG_gameInfo.mResControl.getObjectSize(i_arcName);
+}
+
+inline u32 dComIfG_getStageSize(const char* i_arcName) {
+ return g_dComIfG_gameInfo.mResControl.getStageSize(i_arcName);
+}
+
+#if DEBUG
+inline void dComIfG_initStopwatch() {
+ OSInitStopwatch(&g_dComIfG_gameInfo.mStopwatch, "dComIfG");
+}
+#endif
+
inline int dComIfGd_setRealShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3,
f32 param_4, f32 param_5, dKy_tevstr_c* param_6) {
return g_dComIfG_gameInfo.drawlist.setRealShadow(param_0, param_1, param_2, param_3, param_4,
diff --git a/include/d/d_demo.h b/include/d/d_demo.h
index 73c6f24e42..45e99a85d9 100644
--- a/include/d/d_demo.h
+++ b/include/d/d_demo.h
@@ -387,6 +387,7 @@ public:
static s16 getBranchId() { return m_branchId; }
static u16 getBranchNum() { return m_branchNum; }
static jmessage_tControl* getMesgControl() { return m_mesgControl; }
+ static dDemo_system_c* getSystem() { return m_system; }
static void setBranchNum(u16 num) {
m_branchNum = num;
diff --git a/include/d/d_eye_hl.h b/include/d/d_eye_hl.h
index d174387806..382938c5a5 100644
--- a/include/d/d_eye_hl.h
+++ b/include/d/d_eye_hl.h
@@ -13,6 +13,10 @@ public:
static void entry(dEyeHL_c*);
static void remove(dEyeHL_c*);
+ static void create() {
+ JUT_ASSERT(51, m_obj == NULL);
+ }
+
static dEyeHL_c* m_obj;
};
diff --git a/include/d/d_jpreviewer.h b/include/d/d_jpreviewer.h
index 9971fa6674..b3b9776de9 100644
--- a/include/d/d_jpreviewer.h
+++ b/include/d/d_jpreviewer.h
@@ -26,8 +26,8 @@ public:
void show3D(Mtx);
void show2D();
- void create(JStudio::TControl* pControl, const JUTGamePad& pad);
- void remove();
+ static void create(JStudio::TControl* pControl, const JUTGamePad& pad);
+ static void remove();
void update();
static dJprev_c* get() { return m_myObj; }
diff --git a/include/d/d_particle.h b/include/d/d_particle.h
index ab8a3be574..5b5d8db634 100644
--- a/include/d/d_particle.h
+++ b/include/d/d_particle.h
@@ -7,6 +7,7 @@
#include "JSystem/JParticle/JPAParticle.h"
#include "d/d_particle_name.h"
#include "d/d_kankyo_tev_str.h"
+#include "JSystem/JKernel/JKRSolidHeap.h"
void dPa_cleanupGX();
@@ -427,6 +428,9 @@ public:
JKRSolidHeap* getSceneHeap() { return mSceneHeap; }
void* getSceneRes() { return m_sceneRes; }
+ u32 getHeapSize() { return mHeap->getTotalFreeSize(); }
+ u32 getSceneHeapSize() { return mSceneHeap->getTotalFreeSize(); }
+
void levelAllForceOnEventMove() { field_0x210.allForceOnEventMove(); }
void levelExecute(u32 param_0) {
@@ -453,6 +457,7 @@ public:
static JPAEmitterManager* getEmitterManager() { return mEmitterMng; }
int getEmitterNum() { return mEmitterMng->getEmitterNumber(); };
+ int getParticleNum() { return mEmitterMng->getParticleNumber(); }
static dPa_light8PcallBack* getLight8PcallBack() {
return &mLight8PcallBack;
diff --git a/include/d/d_path.h b/include/d/d_path.h
index 7a4e6576ac..5ef65cfaef 100644
--- a/include/d/d_path.h
+++ b/include/d/d_path.h
@@ -25,6 +25,13 @@ struct dPath {
/* 0x8 */ dPnt* m_points;
};
+#if VERSION == VERSION_SHIELD_DEBUG
+void dPath_Move();
+void dPath_Draw();
+void dPath_Dt();
+void dPath_Ct();
+#endif
+
inline BOOL dPath_ChkClose(const dPath* i_path) { return i_path->m_closed & 1; }
dPath* dPath_GetRoomPath(int path_index, int room_no);
diff --git a/include/d/d_resorce.h b/include/d/d_resorce.h
index 000146822b..31d028a082 100644
--- a/include/d/d_resorce.h
+++ b/include/d/d_resorce.h
@@ -39,6 +39,7 @@ public:
char* getArchiveName() { return mArchiveName; }
mDoDvdThd_mountArchive_c* getDMCommand() { return mDMCommand; }
JKRArchive* getArchive() { return mArchive; }
+ JKRSolidHeap* getDataHeap() { return mDataHeap; }
u32 incCount() { return ++mCount; }
u32 decCount() { return --mCount; }
@@ -138,6 +139,14 @@ public:
return getResInfo(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
+ u32 getObjectSize(const char* i_arcName) {
+ return getSize(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
+ }
+
+ u32 getStageSize(const char* i_arcName) {
+ return getSize(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
+ }
+
/* 0x0000 */ dRes_info_c mObjectInfo[128];
/* 0x1200 */ dRes_info_c mStageInfo[64];
}; // Size: 0x1B00
diff --git a/include/d/d_s_logo.h b/include/d/d_s_logo.h
index 0a611b83c3..56d10eef82 100644
--- a/include/d/d_s_logo.h
+++ b/include/d/d_s_logo.h
@@ -2,6 +2,7 @@
#define D_S_D_S_LOGO_H
#include "f_op/f_op_scene.h"
+#include "m_Do/m_Do_dvd_thread.h"
class JKRExpHeap;
class JKRHeap;
@@ -11,33 +12,41 @@ class mDoDvdThd_mountXArchive_c;
class mDoDvdThd_mountArchive_c;
class mDoDvdThd_toMainRam_c;
-class dLog_HIO_c {
-public:
- dLog_HIO_c();
- virtual ~dLog_HIO_c();
-
- u8 field_0x4[0x8 - 0x4];
-}; // Size: 0x8
-
class dScnLogo_c : public scene_class {
public:
enum {
- /* 0x0 */ EXEC_WARNING_IN,
- /* 0x1 */ EXEC_WARNING_DISP,
- /* 0x2 */ EXEC_WARNING_OUT,
- /* 0x3 */ EXEC_NINTENDO_IN,
- /* 0x4 */ EXEC_NINTENDO_OUT,
- /* 0x5 */ EXEC_DOLBY_IN,
- /* 0x6 */ EXEC_DOLBY_OUT,
- /* 0x7 */ EXEC_DOLBY_OUT2,
- /* 0x8 */ EXEC_PROG_IN,
- /* 0x9 */ EXEC_PROG_SEL,
- /* 0xA */ EXEC_PROG_OUT,
- /* 0xB */ EXEC_PROG_SET,
- /* 0xC */ EXEC_PROG_SET2,
- /* 0xD */ EXEC_PROG_CHANGE,
- /* 0xE */ EXEC_DVD_WAIT,
- /* 0xF */ EXEC_SCENE_CHANGE,
+ /* 0 */ EXEC_WARNING_IN,
+ /* 1 */ EXEC_WARNING_DISP,
+ /* 2 */ EXEC_WARNING_OUT,
+ /* 3 */ EXEC_NINTENDO_IN,
+ /* 4 */ EXEC_NINTENDO_OUT,
+ /* 5 */ EXEC_DOLBY_IN,
+ /* 6 */ EXEC_DOLBY_OUT,
+ /* 7 */ EXEC_DOLBY_OUT2,
+ /* 8 */ EXEC_PROG_IN,
+ /* 9 */ EXEC_PROG_SEL,
+ /* 10 */ EXEC_PROG_OUT,
+ /* 11 */ EXEC_PROG_SET,
+ /* 12 */ EXEC_PROG_SET2,
+ /* 13 */ EXEC_PROG_CHANGE,
+ /* 14 */ EXEC_DVD_WAIT,
+ /* 15 */ EXEC_SCENE_CHANGE,
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ /* 16 */ EXEC_STRAP_IN,
+ /* 17 */ EXEC_STRAP_DISP,
+ /* 18 */ EXEC_STRAP_OUT,
+ /* 19 */ EXEC_STRAP_OUT2,
+ #endif
+
+ #if VERSION == VERSION_SHIELD
+ /* 20 */ EXEC_MOC_IN,
+ /* 21 */ EXEC_MOC_DISP,
+ /* 22 */ EXEC_MOC_OUT,
+ /* 23 */ EXEC_NVLOGO_IN,
+ /* 24 */ EXEC_NVLOGO_DISP,
+ /* 25 */ EXEC_NVLOGO_OUT,
+ #endif
};
dScnLogo_c() {}
@@ -64,30 +73,66 @@ public:
void nextSceneChange();
~dScnLogo_c();
int create();
- void logoInitGC();
void dvdDataLoad();
void setProgressiveMode(u8);
u8 getProgressiveMode();
bool isProgressiveMode();
void setRenderMode();
- #if VERSION == VERSION_GCN_PAL
+ #if VERSION == VERSION_GCN_PAL || PLATFORM_WII || PLATFORM_SHIELD
u8 getPalLanguage();
#endif
- #if DEBUG
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ void logoInitWii();
+ void strapInDraw();
+ void strapDispDraw();
+ void strapOutDraw();
+ void strapOut2Draw();
+ #else
+ void logoInitGC();
+ #endif
+
+ #if VERSION == VERSION_SHIELD
+ void mocInDraw();
+ void mocDispDraw();
+ void mocOutDraw();
+ void nvLogoInDraw();
+ void nvLogoDispDraw();
+ void nvLogoOutDraw();
+ #endif
+
+ mDoDvdThd_mountXArchive_c* aramMount(const char* i_arcPath, JKRHeap* i_heap) {
+ return mDoDvdThd_mountXArchive_c::create(i_arcPath, 0, JKRArchive::MOUNT_ARAM, i_heap);
+ }
+
+ mDoDvdThd_mountXArchive_c* onMemMount(const char* i_arcPath) {
+ return mDoDvdThd_mountXArchive_c::create(i_arcPath, 0, JKRArchive::MOUNT_MEM, NULL);
+ }
+
static void onOpeningCut() {
+ #if DEBUG
mOpeningCut = true;
+ #endif
+ }
+
+ static u8 isOpeningCut() {
+ #if DEBUG
+ return mOpeningCut;
+ #else
+ return 0;
+ #endif
}
+ #if DEBUG
static u8 mOpeningCut;
#endif
public:
/* 0x1C4 */ request_of_phase_process_class field_0x1c4;
/* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand;
- /* 0x1D0 */ JKRExpHeap* field_0x1d0;
- /* 0x1D4 */ JKRExpHeap* field_0x1d4;
+ /* 0x1D0 */ JKRExpHeap* mLogoHeap;
+ /* 0x1D4 */ JKRExpHeap* mLogo01Heap;
/* 0x1D8 */ JKRHeap* mpHeap;
/* 0x1DC */ dDlst_2D_c* mWarning;
/* 0x1E0 */ dDlst_2D_c* mWarningStart;
@@ -97,6 +142,13 @@ public:
/* 0x1F0 */ dDlst_2D_c* mProgressiveYes;
/* 0x1F4 */ dDlst_2D_c* mProgressiveNo;
/* 0x1F8 */ dDlst_2D_c* mProgressiveSel;
+#if PLATFORM_WII || PLATFORM_SHIELD
+ /* 0x1FC */ dDlst_2D_c* mStrapImg;
+#endif
+#if VERSION == VERSION_SHIELD
+ /* 0x200 */ dDlst_2D_c* mNvLogo;
+ /* 0x204 */ dDlst_2D_c* mMocImg;
+#endif
#if VERSION == VERSION_GCN_PAL
/* 0x1FC */ mDoDvdThd_mountArchive_c* mpPalLogoResCommand;
#endif
@@ -114,6 +166,10 @@ public:
/* 0x214 */ u16 field_0x214;
/* 0x218 */ u32 field_0x218;
/* 0x21C */ void* dummyGameAlloc;
+#if PLATFORM_WII || VERSION == VERSION_SHIELD
+ /* 0x224 */ mDoDvdThd_toMainRam_c* mpHomeBtnCommand;
+ /* 0x228 */ int mHomeBtnRegion;
+#endif
/* 0x220 */ mDoDvdThd_mountXArchive_c* mpField0Command;
/* 0x224 */ mDoDvdThd_mountXArchive_c* mpAlAnmCommand;
/* 0x228 */ u8 field_0x228[4];
diff --git a/include/d/d_s_menu.h b/include/d/d_s_menu.h
index a544c65576..d2e0e9bde0 100644
--- a/include/d/d_s_menu.h
+++ b/include/d/d_s_menu.h
@@ -83,6 +83,8 @@ public:
extern int g_playerKind;
extern int g_debugHpMode;
extern int g_horsePosInit;
+
+u8 dSm_read_stageset(u8* i_data);
#else
class dScnMenu_c {};
#endif
diff --git a/include/d/d_s_play.h b/include/d/d_s_play.h
index 7181cf0b60..45b60220b0 100644
--- a/include/d/d_s_play.h
+++ b/include/d/d_s_play.h
@@ -9,9 +9,15 @@
class mDoDvdThd_mountXArchive_c;
class mDoDvdThd_toMainRam_c;
-class dScnPly_reg_childHIO_c {
+class dScnPly_reg_childHIO_c : public JORReflexible {
public:
- /* 0x00 */ void* vtable;
+#if ENABLE_REGHIO
+ dScnPly_reg_childHIO_c();
+ virtual ~dScnPly_reg_childHIO_c() {}
+
+ void genMessage(JORMContext*);
+#endif
+
/* 0x04 */ f32 mFloatReg[30];
/* 0x7C */ s16 mShortReg[10];
};
@@ -37,9 +43,10 @@ public:
void genMessage(JORMContext*);
};
-class dScnPly_env_HIO_c {
+class dScnPly_env_HIO_c : public JORReflexible {
public:
virtual ~dScnPly_env_HIO_c() {}
+ void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ dScnPly_env_otherHIO_c mOther;
@@ -79,6 +86,18 @@ public:
static s8 pauseTimer;
static s8 nextPauseTimer;
+ #if DEBUG
+ void onDebugPause() {
+ debugPause = TRUE;
+ }
+
+ void offDebugPause() {
+ debugPause = FALSE;
+ }
+
+ static u8 debugPause;
+ #endif
+
/* 0x1C4 */ request_of_phase_process_class field_0x1c4;
/* 0x1CC */ mDoDvdThd_toMainRam_c* sceneCommand;
/* 0x1D0 */ mDoDvdThd_mountXArchive_c* field_0x1d0;
diff --git a/include/d/d_s_play_env.h b/include/d/d_s_play_env.h
index 79eed8a63d..d2b23d9f8c 100644
--- a/include/d/d_s_play_env.h
+++ b/include/d/d_s_play_env.h
@@ -6,7 +6,9 @@ public:
dScnPly_env_otherHIO_c();
virtual ~dScnPly_env_otherHIO_c() {}
+ void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
+
void addSetEmitterID(u16 param_0) {
#if DEBUG
field_0x1c[field_0x4f++] = param_0;
@@ -14,6 +16,8 @@ public:
#endif
}
+ void printParticle();
+
#if DEBUG
/* 0x04 */ s8 field_0x04;
#endif
@@ -53,6 +57,7 @@ public:
dScnPly_env_debugHIO_c();
virtual ~dScnPly_env_debugHIO_c() {}
+ void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
/* 0x04 */ u8 field_0x4;
diff --git a/include/d/d_save_HIO.h b/include/d/d_save_HIO.h
index cc2f8af706..e149f7fcb9 100644
--- a/include/d/d_save_HIO.h
+++ b/include/d/d_save_HIO.h
@@ -209,11 +209,12 @@ private:
/* 0x1A0 */ dSvBit_childItOneZoneHIO_c mOneZoneSave;
};
-class dSvBit_HIO_c {
+class dSvBit_HIO_c : public JORReflexible {
public:
void init();
virtual ~dSvBit_HIO_c() {}
+ void genMessage(JORMContext*);
/* 0x004 */ s8 field_0x4;
/* 0x008 */ dSvBit_childSwitchHIO_c mSwitch;
diff --git a/include/d/d_stage.h b/include/d/d_stage.h
index 6f558f87c0..a4b72182bb 100644
--- a/include/d/d_stage.h
+++ b/include/d/d_stage.h
@@ -1062,7 +1062,7 @@ public:
/* 0x3F7 */ s8 mZoneNo;
/* 0x3F8 */ s8 mMemBlockID;
/* 0x3F9 */ u8 mRegionNo;
- /* 0x3FC */ int mProcID;
+ /* 0x3FC */ fpc_ProcID mProcID;
/* 0x400 */ dBgW_Base* mpBgW;
int getZoneNo() const { return mZoneNo; }
@@ -1118,8 +1118,8 @@ public:
static s8 getRoomReadId() { return mRoomReadId; }
static void setRoomReadId(s8 id) { mRoomReadId = id; }
- static u32 getProcID() { return mProcID; }
- static void setProcID(u32 id) { mProcID = id; }
+ static fpc_ProcID getProcID() { return mProcID; }
+ static void setProcID(fpc_ProcID id) { mProcID = id; }
static int getStayNo() { return mStayNo; }
static int getNextStayNo() { return mNextStayNo; }
static BOOL GetTimePass() { return m_time_pass; }
@@ -1193,7 +1193,7 @@ public:
JUT_ASSERT(2770, 0 <= i_roomNo && i_roomNo < 64);
mStatus[i_roomNo].mProcID = i_id;
}
- static int getStatusProcID(int i_roomNo) {
+ static fpc_ProcID getStatusProcID(int i_roomNo) {
JUT_ASSERT(2774, 0 <= i_roomNo && i_roomNo < 64);
return mStatus[i_roomNo].mProcID;
}
@@ -1223,7 +1223,7 @@ public:
static char mArcBank[32][10];
static dStage_roomStatus_c mStatus[0x40];
static char mDemoArcName[10];
- static u32 mProcID;
+ static fpc_ProcID mProcID;
static nameData* mArcBankName;
static bankData* mArcBankData;
static roomDzs_c m_roomDzs;
@@ -1398,6 +1398,10 @@ dStage_KeepDoorInfo* dStage_GetKeepDoorInfo();
dStage_KeepDoorInfo* dStage_GetRoomKeepDoorInfo();
void dStage_dt_c_fieldMapLoader(void* i_data, dStage_dt_c* i_stage);
+#if DEBUG
+void dStage_DebugDisp();
+#endif
+
#define dStage_NAME_LENGTH 8
const char* dStage_getName(s16 procName, s8 argument);
diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h
index 6aa5713e1b..221fdf2ffb 100644
--- a/include/f_op/f_op_actor.h
+++ b/include/f_op/f_op_actor.h
@@ -71,6 +71,8 @@ enum fopAc_Cull_e {
fopAc_CULLBOX_14_e,
#endif
fopAc_CULLBOX_CUSTOM_e,
+ fopAc_CULLBOX_MAX_e = fopAc_CULLBOX_CUSTOM_e,
+
fopAc_CULLSPHERE_0_e,
fopAc_CULLSPHERE_1_e,
fopAc_CULLSPHERE_2_e,
@@ -83,6 +85,7 @@ enum fopAc_Cull_e {
fopAc_CULLSPHERE_8_e,
#endif
fopAc_CULLSPHERE_CUSTOM_e,
+ fopAc_CULLSPHERE_MAX_e = fopAc_CULLSPHERE_CUSTOM_e - fopAc_CULLSPHERE_0_e,
};
enum fopAc_attention_type {
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index b3a8873bcc..8cb4d1a255 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -847,6 +847,9 @@ BOOL fopAcM_getNameString(const fopAc_ac_c*, char*);
inline void fopAcM_SetStatusMap(fopAc_ac_c*, u32) {}
+extern cull_box l_cullSizeBox[fopAc_CULLBOX_MAX_e];
+extern cull_sphere l_cullSizeSphere[fopAc_CULLSPHERE_MAX_e];
+
class fopAcM_lc_c {
public:
fopAcM_lc_c() { mLineCheck.ClrSttsRoofOff(); }
diff --git a/include/f_op/f_op_kankyo.h b/include/f_op/f_op_kankyo.h
index 9d2b3b87eb..7741d6c09d 100644
--- a/include/f_op/f_op_kankyo.h
+++ b/include/f_op/f_op_kankyo.h
@@ -19,7 +19,7 @@ struct kankyo_process_profile_definition {
/* 0x24 */ leafdraw_method_class* sub_method;
}; // Size: 0x28
-void fopKy_IsKankyo(void* i_this);
+BOOL fopKy_IsKankyo(void* i_this);
extern leafdraw_method_class g_fopKy_Method;
diff --git a/include/f_op/f_op_kankyo_mng.h b/include/f_op/f_op_kankyo_mng.h
index 975c1d2028..dcd36635ae 100644
--- a/include/f_op/f_op_kankyo_mng.h
+++ b/include/f_op/f_op_kankyo_mng.h
@@ -21,6 +21,7 @@ base_process_class* fopKyM_fastCreate(s16 i_procName, int i_param, cXyz* i_pos,
fopKyM_CreateFunc i_createFunc);
fpc_ProcID fopKyM_createWpillar(cXyz const* i_pos, f32 scale, int i_param);
fpc_ProcID fopKyM_createMpillar(cXyz const* i_pos, f32 i_size);
+BOOL fopKyM_IsKy(void* i_process);
inline fopKyM_prm_class* fopKyM_GetAppend(void* i_process) {
return (fopKyM_prm_class*)fpcM_GetAppend(i_process);
diff --git a/include/m_Do/m_Do_Reset.h b/include/m_Do/m_Do_Reset.h
index 5396a1510d..8a19c8fbe3 100644
--- a/include/m_Do/m_Do_Reset.h
+++ b/include/m_Do/m_Do_Reset.h
@@ -6,6 +6,10 @@
void mDoRst_reset(int, u32, int);
void mDoRst_resetCallBack(int, void*);
+#if !PLATFORM_GCN
+void mDoRst_shutdownCallBack();
+#endif
+
struct mDoRstData {
/* 0x00 */ int mReset;
/* 0x04 */ int mResetPrepare;
diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h
index 7c456b0cfe..57553f36fc 100644
--- a/include/m_Do/m_Do_audio.h
+++ b/include/m_Do/m_Do_audio.h
@@ -27,13 +27,13 @@ public:
static u8 isResetFlag() { return mResetFlag; }
static void onResetFlag() { mResetFlag = true; }
static void offResetFlag() { mResetFlag = false; }
- static bool isBgmSet() { return mBgmSet; }
+ static u8 isBgmSet() { return mBgmSet; }
static void onBgmSet() { mBgmSet = true; }
static void offBgmSet() { mBgmSet = false; }
static u8 mInitFlag;
static u8 mResetFlag;
- static bool mBgmSet;
+ static u8 mBgmSet;
};
extern JKRSolidHeap* g_mDoAud_audioHeap;
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index 4478098064..5cb6f84a10 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -774,6 +774,12 @@ void mDoExt_restoreCurrentHeap();
JKRExpHeap* mDoExt_getGameHeap();
void mDoExt_setSafeGameHeapSize();
size_t mDoExt_getSafeGameHeapSize();
+intptr_t mDoExt_getSafeArchiveHeapSize();
+intptr_t mDoExt_getSafeJ2dHeapSize();
+intptr_t mDoExt_getSafeCommandHeapSize();
+void mDoExt_setSafeCommandHeapSize();
+void mDoExt_setSafeArchiveHeapSize();
+void mDoExt_setSafeJ2dHeapSize();
void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap);
JKRHeap* mDoExt_setCurrentHeap(JKRHeap* i_heap);
JKRExpHeap* mDoExt_getArchiveHeap();
diff --git a/include/m_Re/m_Re_controller_pad.h b/include/m_Re/m_Re_controller_pad.h
index ac77462a91..1b58bfd4af 100644
--- a/include/m_Re/m_Re_controller_pad.h
+++ b/include/m_Re/m_Re_controller_pad.h
@@ -187,6 +187,8 @@ public:
static u32 getTrigUp(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_UP; }
static u32 getTrigStart(u32 i_pad) { return getTrig(i_pad) & WPAD_BUTTON_PLUS; }
+ static f32 getStickX(u32 i_pad) { return getPad(i_pad).field_0x4[0].ex_status.fs.stick.x; }
+
static WPADInfo m_pad_info[WPAD_MAX_CONTROLLERS];
static Pad m_pad[WPAD_MAX_CONTROLLERS];
static motorWave_t m_motorWave[WPAD_MAX_CONTROLLERS];
diff --git a/include/revolution/os/OSResetSW.h b/include/revolution/os/OSResetSW.h
index c6fc2d027f..752efaea89 100644
--- a/include/revolution/os/OSResetSW.h
+++ b/include/revolution/os/OSResetSW.h
@@ -11,6 +11,7 @@ typedef void (*OSResetCallback)(void);
typedef void (*OSPowerCallback)(void);
OSResetCallback OSSetResetCallback(OSResetCallback callback);
+OSPowerCallback OSSetPowerCallback(OSPowerCallback callback);
BOOL OSGetResetSwitchState(void);
BOOL OSGetResetButtonState(void);
diff --git a/include/revolution/sc.h b/include/revolution/sc.h
index 88ecad9660..262b165607 100644
--- a/include/revolution/sc.h
+++ b/include/revolution/sc.h
@@ -184,6 +184,7 @@ u8 SCGetEuRgb60Mode(void);
BOOL SCGetIdleMode(SCIdleModeInfo* data);
u8 SCGetLanguage(void);
u8 SCGetProgressiveMode(void);
+void SCSetProgressiveMode(u8 mode);
u8 SCGetScreenSaverMode(void);
u8 SCGetSoundMode(void);
u32 SCGetCounterBias(void);
diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cmath b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cmath
index 3040fbfe62..fa856b9b80 100644
--- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cmath
+++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/cmath
@@ -2,6 +2,7 @@
#define MSL_CMATH_H_
#include <float.h>
+#include <arith.h>
#define NAN (*(float*) __float_nan)
#define HUGE_VALF (*(float*) __float_huge)
@@ -174,6 +175,10 @@ inline float abs(float x) {
return ::fabsf(x);
}
+inline long abs(long x) {
+ return ::labs(x);
+}
+
inline float fmod(float x, float y) {
return ::fmod(x, y);
}
diff --git a/src/SSystem/SComponent/c_phase.cpp b/src/SSystem/SComponent/c_phase.cpp
index c31fd9b2d0..4784e24878 100644
--- a/src/SSystem/SComponent/c_phase.cpp
+++ b/src/SSystem/SComponent/c_phase.cpp
@@ -6,12 +6,12 @@
#include "SSystem/SComponent/c_phase.h"
void cPhs_Reset(request_of_phase_process_class* phase) {
- phase->id = cPhs_INIT_e;
+ phase->id = 0;
}
void cPhs_Set(request_of_phase_process_class* phase, cPhs__Handler* handlerTbl) {
phase->mpHandlerTable = handlerTbl;
- phase->id = cPhs_INIT_e;
+ phase->id = 0;
}
void cPhs_UnCompleate(request_of_phase_process_class* phase) {
diff --git a/src/c/c_dylink.cpp b/src/c/c_dylink.cpp
index 4b2ecd0bf8..ed8b6dece9 100644
--- a/src/c/c_dylink.cpp
+++ b/src/c/c_dylink.cpp
@@ -1022,7 +1022,7 @@ int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 i_ProfName) {
(request_of_phase_process_fn)cDylPhs::phase_03
};
- if (i_phase->id == cPhs_NEXT_e) {
+ if (i_phase->id == 2) {
return cPhs_COMPLEATE_e;
}
@@ -1030,11 +1030,11 @@ int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 i_ProfName) {
}
int cDylPhs::Unlink(request_of_phase_process_class* i_phase, s16 i_ProfName) {
- JUT_ASSERT(460, i_phase->id != cPhs_LOADING_e);
+ JUT_ASSERT(460, i_phase->id != 1);
- if (i_phase->id == cPhs_NEXT_e) {
+ if (i_phase->id == 2) {
int ret = cDyl_Unlink(i_ProfName);
- i_phase->id = cPhs_INIT_e;
+ i_phase->id = 0;
return ret;
}
diff --git a/src/d/actor/d_a_grass.cpp b/src/d/actor/d_a_grass.cpp
index 04992b39b5..c0cedf9e78 100644
--- a/src/d/actor/d_a_grass.cpp
+++ b/src/d/actor/d_a_grass.cpp
@@ -406,7 +406,7 @@ actor_process_profile_definition g_profile_GRASS = {
fpcPi_CURRENT_e, // mListPrio
PROC_GRASS, // mProcName
&g_fpcLf_Method.base, // sub_method
- 0x00000570, // mSize
+ sizeof(daGrass_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
diff --git a/src/d/actor/d_a_kago.cpp b/src/d/actor/d_a_kago.cpp
index 9f4dd6e463..de8cd355c4 100644
--- a/src/d/actor/d_a_kago.cpp
+++ b/src/d/actor/d_a_kago.cpp
@@ -23,6 +23,16 @@
#include "f_op/f_op_camera_mng.h"
#include "f_op/f_op_overlap_mng.h"
+#include "res/Object/E_yc.h"
+#include "res/Object/E_kc.h"
+
+#define TYPE_TWILIGHT 0
+#define TYPE_NORMAL 1
+
+#define SCENE_TYPE_LAKE_HYLIA 0
+#define SCENE_TYPE_RIVER 1
+#define SCENE_TYPE_BOARD_HOUSE 2
+#define SCENE_TYPE_DEFAULT 3
namespace {
static dCcD_SrcSph cc_sph_src = {
{
@@ -143,44 +153,34 @@ void daKago_HIO_c::genMessage(JORMContext* ctx) {
}
#endif
-int daKago_c::getBckName(int param_0) {
- if (field_0x6e7 == 0) {
- return param_0;
+int daKago_c::getBckName(int i_resIdx) {
+ if (mType == TYPE_TWILIGHT) {
+ return i_resIdx;
}
- switch (param_0) {
- case 7:
- return 4;
- case 8:
- return 5;
- case 9:
- return 6;
- case 10:
- return 7;
- case 11:
- return 8;
- case 12:
- return 9;
- case 13:
- return 10;
- case 14:
- return 11;
- case 15:
- return 12;
- case 21:
- return 13;
- default:
- return 6;
- }
-}
-
-void daKago_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) {
- mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes(field_0x75c, getBckName(param_0)),
- param_1, param_2, param_3, 0.0f, -1.0f);
-}
-
-bool daKago_c::checkBck(int param_0) {
- if (mpMorf->getAnm() == dComIfG_getObjectRes(field_0x75c, getBckName(param_0))) {
+ // convert shadow kargorok res idx to normal kargorok res idx
+ switch (i_resIdx) {
+ case dRes_ID_E_YC_BCK_YC_CRASH_e: return dRes_ID_E_KC_BCK_KC_CRASH_e;
+ case dRes_ID_E_YC_BCK_YC_CRASH2_e: return dRes_ID_E_KC_BCK_KC_CRASH2_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_e: return dRes_ID_E_KC_BCK_KC_FLY_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_BRAKE_e: return dRes_ID_E_KC_BCK_KC_FLY_BRAKE_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_DASH_WL_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e: return dRes_ID_E_KC_BCK_KC_FLY_GLIDE_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_GLIDE_WL_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_LIMIT_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_LIMIT_WL_e;
+ case dRes_ID_E_YC_BCK_YC_FLY_WL_e: return dRes_ID_E_KC_BCK_KC_FLY_WL_e;
+ case dRes_ID_E_YC_BCK_YC_HOVERING_e: return dRes_ID_E_KC_BCK_KC_HOVERING_e;
+ default: return dRes_ID_E_KC_BCK_KC_FLY_e;
+ }
+}
+
+void daKago_c::setBck(int i_anm, u8 i_mode, f32 i_morf, f32 i_speed) {
+ mAnm_p->setAnm((J3DAnmTransform*)dComIfG_getObjectRes(mArcName, getBckName(i_anm)),
+ i_mode, i_morf, i_speed, 0.0f, -1.0f);
+}
+
+bool daKago_c::checkBck(int i_anm) {
+ if (mAnm_p->getAnm() == dComIfG_getObjectRes(mArcName, getBckName(i_anm))) {
return true;
} else {
return false;
@@ -193,16 +193,19 @@ int daKago_c::draw() {
}
g_env_light.settingTevStruct(2, &current.pos, &tevStr);
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+
fopAcM_setEffectMtx(this, model->getModelData());
+
dComIfGd_setListDark();
- mpMorf->entryDL();
+ mAnm_p->entryDL();
dComIfGd_setList();
+
cXyz unkXyz1;
unkXyz1.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
- field_0x764 =
- dComIfGd_setShadow(field_0x764, 0, model, &unkXyz1, 3500.0f, 0.0f, current.pos.y,
+ mShadowId =
+ dComIfGd_setShadow(mShadowId, 0, model, &unkXyz1, 3500.0f, 0.0f, current.pos.y,
mObjAcch.GetGroundH(), mObjAcch.m_gnd, &tevStr, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
@@ -216,22 +219,26 @@ static int daKago_Draw(daKago_c* i_this) {
int daKago_c::executeBalloonMenu() {
dCamera_c* camera = dCam_getBody();
- switch (field_0x6eb) {
+ switch (mBalloonMenuMode) {
case 0:
- if (field_0x6e7 == 1 && (mCurrentAction == 0 || mCurrentAction == 5) &&
- !dComIfGp_event_runCheck() && mDoCPd_c::getTrigB(0))
+ if (mType == TYPE_NORMAL && (mAction == ACTION_FLY_e || mAction == ACTION_ATTACK_e) &&
+ !dComIfGp_event_runCheck() && mDoCPd_c::getTrigB(PAD_1))
{
- field_0x6eb = 1;
+ mBalloonMenuMode = 1;
return 1;
}
return 0;
case 1:
- if (eventInfo.checkCommandDemoAccrpt() == 0) {
+ if (!eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(this, 1, 0xffff, 0);
- eventInfo.onCondition(2);
+ eventInfo.onCondition(dEvtCnd_CANDEMO_e);
+ #if VERSION == VERSION_SHIELD_DEBUG
+ return 0;
+ #else
break;
+ #endif
}
mMsgFlow.init(this, 0x457, 0, NULL);
@@ -239,32 +246,29 @@ int daKago_c::executeBalloonMenu() {
camera->Stop();
camera->SetTrimSize(3);
- field_0x6eb = 0x2;
-
+ mBalloonMenuMode = 2;
break;
case 2:
if (mMsgFlow.doFlow(this, NULL, 0)) {
if (dMsgObject_getSelectCursorPos() == 0) {
- field_0x6eb = 0;
+ mBalloonMenuMode = 0;
camera->Start();
camera->SetTrimSize(0);
dComIfGp_event_reset();
-
return 1;
}
if (dMsgObject_getSelectCursorPos() == 1) {
- field_0x6eb = 3;
+ mBalloonMenuMode = 3;
dComIfGp_setNextStage("F_SP112", 0, dComIfGp_roomControl_getStayNo(),
dComIfG_play_c::getLayerNo(0), 0.0f, 10, 1, 0, 0, 1, 0);
} else {
- field_0x6eb = 3;
+ mBalloonMenuMode = 3;
dStage_changeScene(3, 0.0f, 0, fopAcM_GetRoomNo(this), 0, -1);
}
}
-
break;
}
@@ -275,37 +279,35 @@ static u8 hio_set;
static daKago_HIO_c l_HIO;
f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
- f32 retVal;
-
- retVal = mGroundHeight;
+ f32 gnd_height = mGroundHeight;
if (mpPath1 != NULL) {
- cXyz pointPos1;
- cXyz pointPos2;
+ cXyz nextPntPos;
+ cXyz prevPntPos;
cXyz cStack_140;
- pointPos1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
+ nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
- int pointIdx2 = (int)mPathIdx - (int)mPathIdxOffset;
- if (pointIdx2 >= mpPath1->m_num || pointIdx2 < 0) {
- pointIdx2 = mPathIdx;
+ int prevPntNo = (int)mPathCurrentPointNo - (int)mPathStep;
+ if (prevPntNo >= mpPath1->m_num || prevPntNo < 0) {
+ prevPntNo = mPathCurrentPointNo;
}
- pointPos2 = dPath_GetPnt(mpPath1, pointIdx2)->m_position;
+ prevPntPos = dPath_GetPnt(mpPath1, prevPntNo)->m_position;
- s16 targetAngleY = cLib_targetAngleY(&pointPos2, &pointPos1);
+ s16 pntAngle = cLib_targetAngleY(&prevPntPos, &nextPntPos);
- mDoMtx_stack_c::YrotS(-targetAngleY);
+ mDoMtx_stack_c::YrotS(-pntAngle);
mDoMtx_stack_c::transM(-i_pos.x, -i_pos.y, -i_pos.z);
- mDoMtx_stack_c::multVec(&pointPos2, &cStack_140);
+ mDoMtx_stack_c::multVec(&prevPntPos, &cStack_140);
f32 var_f29 = -cStack_140.z;
if (var_f29 < 0.0f) {
var_f29 = 0.0f;
}
- mDoMtx_stack_c::YrotS(-targetAngleY);
+ mDoMtx_stack_c::YrotS(-pntAngle);
mDoMtx_stack_c::transM(-i_pos.x, -i_pos.y, -i_pos.z);
- mDoMtx_stack_c::multVec(&pointPos1, &cStack_140);
+ mDoMtx_stack_c::multVec(&nextPntPos, &cStack_140);
f32 var_f28 = cStack_140.z;
if (var_f28 < 0.0f) {
@@ -313,12 +315,12 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
}
f32 var_f27 = var_f29 / (var_f29 + var_f28);
- retVal = pointPos1.y * var_f27 + pointPos2.y * (1.0f - var_f27);
+ gnd_height = nextPntPos.y * var_f27 + prevPntPos.y * (1.0f - var_f27);
if (o_step != NULL) {
- f32 pointLatDist = pointPos1.absXZ(pointPos2);
- f32 pointVertDist = std::abs(pointPos1.y - pointPos2.y);
- *o_step = pointVertDist * l_HIO.mFlightSpeed / pointLatDist + 5.0f;
+ f32 pntDistXZ = nextPntPos.absXZ(prevPntPos);
+ f32 pntDistY = std::abs(nextPntPos.y - prevPntPos.y);
+ *o_step = pntDistY * l_HIO.mFlightSpeed / pntDistXZ + 5.0f;
}
}
@@ -327,19 +329,20 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
dBgS_GndChk gndChk;
cXyz gndChkPos(i_pos.x, i_pos.y + 500.0f, i_pos.z);
gndChk.SetPos(&gndChkPos);
- field_0x700 = dComIfG_Bgsp().GroundCross(&gndChk);
+ mGroundFlyHeight = dComIfG_Bgsp().GroundCross(&gndChk);
+
+ mGndSpecialCode = 0;
- field_0x738 = 0;
+ if (mGroundFlyHeight != -G_CM3D_F_INF) {
+ mGndSpecialCode = dComIfG_Bgsp().GetSpecialCode(gndChk);
- if (field_0x700 != -G_CM3D_F_INF) {
- field_0x738 = dComIfG_Bgsp().GetSpecialCode(gndChk);
- field_0x700 += l_HIO.mFlightGroundAltitude;
- if (retVal < field_0x700) {
- retVal = field_0x700;
- if (current.pos.y < retVal) {
+ mGroundFlyHeight += l_HIO.mFlightGroundAltitude;
+ if (gnd_height < mGroundFlyHeight) {
+ gnd_height = mGroundFlyHeight;
+ if (current.pos.y < gnd_height) {
mGroundHeight = current.pos.y;
} else {
- mGroundHeight = field_0x700;
+ mGroundHeight = mGroundFlyHeight;
}
if (o_step != NULL) {
@@ -360,15 +363,15 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
unkFlag1 = TRUE;
}
- if (retVal < gndCrossMag) {
- field_0x700 = gndCrossMag;
- retVal = gndCrossMag;
+ if (gnd_height < gndCrossMag) {
+ mGroundFlyHeight = gndCrossMag;
+ gnd_height = gndCrossMag;
field_0x6e0 = 1;
if (current.pos.y < gndCrossMag) {
mGroundHeight = current.pos.y;
} else {
- mGroundHeight = field_0x700;
+ mGroundHeight = mGroundFlyHeight;
}
if (o_step != NULL) {
@@ -382,37 +385,37 @@ f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
field_0x6e6 = 1;
}
} else {
- field_0x71c = 0;
+ mWaterSplashTimer = 0;
field_0x6e6 = 0;
}
- return retVal;
+ return gnd_height;
}
-f32 daKago_c::checkRoofHeight(cXyz param_0) {
- f32 roofChkYVal = mRoofHeight;
+f32 daKago_c::checkRoofHeight(cXyz i_pos) {
+ f32 roof_height = mRoofHeight;
BOOL unkFlag1 = FALSE;
field_0x6e5 = 0;
dBgS_RoofChk roofChk;
- cXyz unkXyz1(param_0.x, param_0.y - 500.0f, param_0.z);
- roofChk.SetPos(unkXyz1);
+ cXyz chkpos(i_pos.x, i_pos.y - 500.0f, i_pos.z);
+ roofChk.SetPos(chkpos);
- roofChkYVal = dComIfG_Bgsp().RoofChk(&roofChk);
- if (roofChkYVal != G_CM3D_F_INF) {
- roofChkYVal -= l_HIO.mFlightCeilingAltitude;
- if (current.pos.y > roofChkYVal) {
+ roof_height = dComIfG_Bgsp().RoofChk(&roofChk);
+ if (roof_height != G_CM3D_F_INF) {
+ roof_height -= l_HIO.mFlightCeilingAltitude;
+ if (current.pos.y > roof_height) {
mRoofHeight = current.pos.y;
} else {
- mRoofHeight = roofChkYVal;
+ mRoofHeight = roof_height;
}
if (dComIfG_Bgsp().GetSpecialCode(roofChk) == 1) {
unkFlag1 = TRUE;
}
- if (std::abs(current.pos.y - roofChkYVal) < 310.0f) {
+ if (std::abs(current.pos.y - roof_height) < 310.0f) {
fopAc_ac_c* actor = dComIfG_Bgsp().GetActorPointer(roofChk);
if (actor != NULL && fopAcM_GetName(actor) == PROC_Obj_RIVERROCK) {
if (((daObjRIVERROCK_c*)actor)->mBreakSubAction == daObjRIVERROCK_c::BREAK_MOVE) {
@@ -432,7 +435,7 @@ f32 daKago_c::checkRoofHeight(cXyz param_0) {
field_0x6e3 = 0;
}
- return roofChkYVal;
+ return roof_height;
}
void daKago_c::checkMoveHeight() {
@@ -444,58 +447,61 @@ void daKago_c::checkMoveHeight() {
void daKago_c::checkSizeBg() {
dBgS_LinChk linChk;
- cXyz unkXyz1;
- cXyz unkXyz2;
+ cXyz line_start;
+ cXyz line_end;
cM3dGPla plane;
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
field_0x6d9 = 0;
- if (mCurrentAction == 4) {
+ if (mAction == ACTION_WAIT_e) {
return;
}
- mDoMtx_stack_c::copy(model->getAnmMtx(10));
- mDoMtx_stack_c::multVecZero(&unkXyz1);
- mDoMtx_stack_c::copy(model->getAnmMtx(14));
- mDoMtx_stack_c::multVecZero(&unkXyz2);
- unkXyz2 = unkXyz1 + (unkXyz2 - unkXyz1) * 0.9f;
- linChk.Set(&unkXyz1, &unkXyz2, NULL);
+ mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_SHOULDERL_1_e));
+ mDoMtx_stack_c::multVecZero(&line_start);
+ mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_HANDL_3_e));
+ mDoMtx_stack_c::multVecZero(&line_end);
+ line_end = line_start + (line_end - line_start) * 0.9f;
+ linChk.Set(&line_start, &line_end, NULL);
+
if (dComIfG_Bgsp().LineCross(&linChk)) {
dComIfG_Bgsp().GetTriPla(linChk, &plane);
if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) {
field_0x6d9 |= (u8)1;
- field_0x650[0] = linChk.GetCross();
+ mWallHitEffPos[0] = linChk.GetCross();
}
}
- mDoMtx_stack_c::copy(model->getAnmMtx(15));
- mDoMtx_stack_c::multVecZero(&unkXyz1);
- mDoMtx_stack_c::copy(model->getAnmMtx(19));
- mDoMtx_stack_c::multVecZero(&unkXyz2);
- unkXyz2 = (unkXyz1 + (unkXyz2 - unkXyz1) * 0.9f);
- linChk.Set(&unkXyz1, &unkXyz2, NULL);
+ mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_SHOULDERR_1_e));
+ mDoMtx_stack_c::multVecZero(&line_start);
+ mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_HANDR_3_e));
+ mDoMtx_stack_c::multVecZero(&line_end);
+ line_end = (line_start + (line_end - line_start) * 0.9f);
+ linChk.Set(&line_start, &line_end, NULL);
+
if (dComIfG_Bgsp().LineCross(&linChk)) {
dComIfG_Bgsp().GetTriPla(linChk, &plane);
if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) {
field_0x6d9 |= (u8)0x2;
- field_0x650[1] = linChk.GetCross();
+ mWallHitEffPos[1] = linChk.GetCross();
}
}
- unkXyz1 = current.pos;
- mDoMtx_stack_c::copy(model->getAnmMtx(1));
- mDoMtx_stack_c::multVecZero(&unkXyz1);
+ line_start = current.pos;
+ mDoMtx_stack_c::copy(model->getAnmMtx(YC_JNT_BACKBONE1_e));
+ mDoMtx_stack_c::multVecZero(&line_start);
mDoMtx_stack_c::transM(300.0f, 0.0f, 0.0f);
- mDoMtx_stack_c::multVecZero(&unkXyz2);
- linChk.Set(&unkXyz1, &unkXyz2, NULL);
+ mDoMtx_stack_c::multVecZero(&line_end);
+ linChk.Set(&line_start, &line_end, NULL);
+
if (dComIfG_Bgsp().LineCross(&linChk)) {
dComIfG_Bgsp().GetTriPla(linChk, &plane);
if (dComIfG_Bgsp().GetSpecialCode(linChk) == 1) {
if (!checkYaguraPos(linChk.GetCross())) {
field_0x6d9 |= (u8)4;
- this->field_0x650[2] = linChk.GetCross();
+ mWallHitEffPos[2] = linChk.GetCross();
}
}
}
@@ -505,12 +511,12 @@ s16 daKago_c::getBeforeGroundHeight(u8 param_0) {
return 0;
}
-void daKago_c::demo_skip(int param_0) {
+void daKago_c::demo_skip(int i_parameter) {
dCamera_c* camera = dCam_getBody();
- switch (param_0) {
+ switch (i_parameter) {
case 0:
- field_0x748 = 2;
+ mDemoMode = 2;
field_0x74c = 0;
break;
case 1:
@@ -521,10 +527,10 @@ void daKago_c::demo_skip(int param_0) {
case 2:
setMidnaRideOn();
setPlayerRideOn();
- field_0x718 = field_0x71a = 0;
+ mHeadRotZ = mHeadRotY = 0;
/* dSv_event_flag_c::M_051 - Main Event - Shadow Kargorok (?) (Large) event complete (Horse grass appears in various places) */
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[84]);
- field_0x748 = 7;
+ mDemoMode = 7;
field_0x74c = 0;
break;
case 4:
@@ -534,10 +540,10 @@ void daKago_c::demo_skip(int param_0) {
case 5:
case 6:
if (setSceneChange(3)) {
- if (param_0 == 5) {
- field_0x748 = 6;
+ if (i_parameter == 5) {
+ mDemoMode = 6;
} else {
- field_0x748 = 5;
+ mDemoMode = 5;
field_0x6cc = 1.0f;
}
}
@@ -545,14 +551,14 @@ void daKago_c::demo_skip(int param_0) {
case 7:
setRideOff();
case 8: {
- field_0x68c.set(-77875.0f, -18287.0f, 42000.0f);
- field_0x698.set(-77275.0f, -18500.0f, 41090.0f);
+ mDemoCamCenter.set(-77875.0f, -18287.0f, 42000.0f);
+ mDemoCamEye.set(-77275.0f, -18500.0f, 41090.0f);
field_0x6a4.set(-77615.0f, -18640.0f, 41400.0f);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&field_0x6a4, 0, 0);
field_0x6de = 0;
speed.y = speedF = 0.0f;
- setActionMode(4, 0);
- camera->Set(field_0x68c, field_0x698, 70.0f, 0);
+ setActionMode(ACTION_WAIT_e, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, 70.0f, 0);
camera->Reset();
camera->Start();
camera->SetTrimSize(0);
@@ -563,14 +569,14 @@ void daKago_c::demo_skip(int param_0) {
case 9:
setRideOff();
case 10:
- field_0x68c.set(3703.0f, 337.0f, 863.0f);
- field_0x698.set(3726.0f, 272.0f, 1196.0f);
+ mDemoCamCenter.set(3703.0f, 337.0f, 863.0f);
+ mDemoCamEye.set(3726.0f, 272.0f, 1196.0f);
field_0x6a4.set(3782.0f, 222.0f, 690.0f);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&field_0x6a4, 0, 0);
field_0x6de = 0;
speed.y = speedF = 0.0f;
- setActionMode(4, 0);
- camera->Set(field_0x68c, field_0x698, 70.0f, 0);
+ setActionMode(ACTION_WAIT_e, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, 70.0f, 0);
camera->Reset();
camera->Start();
camera->SetTrimSize(0);
@@ -579,27 +585,28 @@ void daKago_c::demo_skip(int param_0) {
}
}
-int daKago_c::DemoSkipCallBack(void* param_0, int param_1) {
- if (param_0 != NULL) {
- ((daKago_c*)param_0)->demo_skip(param_1);
- return 1;
+int daKago_c::DemoSkipCallBack(void* i_this, int i_parameter) {
+ if (i_this != NULL) {
+ ((daKago_c*)i_this)->demo_skip(i_parameter);
+ return TRUE;
}
- return 0;
+
+ return FALSE;
}
-void daKago_c::setActionMode(int param_0, int param_1) {
+void daKago_c::setActionMode(int i_action, int i_mode) {
mIsFlying = false;
- mCurrentAction = param_0;
- field_0x744 = param_1;
+ mAction = i_action;
+ mMode = i_mode;
}
void daKago_c::setMidnaTagPos() {
- cXyz unkXyz1;
+ cXyz tagPos;
daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor();
if (midna != NULL) {
mDoMtx_stack_c::copy(getMidnaLocaterMtx());
- mDoMtx_stack_c::multVecZero(&unkXyz1);
- midna->onTagWaitPos(&unkXyz1);
+ mDoMtx_stack_c::multVecZero(&tagPos);
+ midna->onTagWaitPos(&tagPos);
}
}
@@ -621,6 +628,7 @@ void daKago_c::setRideOff() {
midna->offTagWaitPos();
midna->offCargoActor();
}
+
daPy_getPlayerActorClass()->offCargoCarry();
}
@@ -628,78 +636,75 @@ s8 daKago_c::searchNearPassPoint() {
cXyz pointPos;
cXyz playerPos(daPy_getPlayerActorClass()->current.pos);
- f32 unkFloat1;
- f32 unkFloat2 = unkFloat1 = 100000.0f;
- int pointIdx1;
+ f32 prev_nearest_distXZ, nearest_distXZ;
+ nearest_distXZ = prev_nearest_distXZ = 100000.0f;
+ int nearest_point_no;
+
for (int i = 0; i < mpPath1->m_num; i++) {
- pointPos = dPath_GetPnt(mpPath1,i)->m_position;
+ pointPos = dPath_GetPnt(mpPath1, i)->m_position;
- f32 playerLatDist = playerPos.absXZ(pointPos);
- if (playerLatDist < unkFloat2) {
- unkFloat1 = unkFloat2;
- unkFloat2 = playerLatDist;
- pointIdx1 = i;
- } else if (playerLatDist < unkFloat1) {
- unkFloat1 = playerLatDist;
+ f32 player_pnt_distXZ = playerPos.absXZ(pointPos);
+ if (player_pnt_distXZ < nearest_distXZ) {
+ prev_nearest_distXZ = nearest_distXZ;
+ nearest_distXZ = player_pnt_distXZ;
+ nearest_point_no = i;
+ } else if (player_pnt_distXZ < prev_nearest_distXZ) {
+ prev_nearest_distXZ = player_pnt_distXZ;
}
}
- int pointIdx2 = pointIdx1 + mPathIdxOffset;
- if (pointIdx2 < 0) {
- pointIdx2 = 1;
- } else if (pointIdx2 >= mpPath1->m_num) {
- pointIdx2 = mpPath1->m_num - 1;
+ int next_point_no = nearest_point_no + mPathStep;
+ if (next_point_no < 0) {
+ next_point_no = 1;
+ } else if (next_point_no >= mpPath1->m_num) {
+ next_point_no = mpPath1->m_num - 1;
}
- return pointIdx2;
+ return next_point_no;
}
-int daKago_c::setSceneChange(int param_0) {
- int unkInt1 = 0;
- switch (param_0) {
+int daKago_c::setSceneChange(int i_mode) {
+ int exitID = 0;
+
+ switch (i_mode) {
case 0:
- if (field_0x6e7 == 0) {
- unkInt1 = 1;
+ if (mType == TYPE_TWILIGHT) {
+ exitID = 1;
} else {
- unkInt1 = 6;
+ exitID = 6;
}
-
break;
case 1:
- unkInt1 = 0;
-
+ exitID = 0;
endBalloonScore();
-
break;
case 2:
- if (field_0x6e7 == 0) {
- unkInt1 = 3;
+ if (mType == TYPE_TWILIGHT) {
+ exitID = 3;
} else {
- unkInt1 = 0;
+ exitID = 0;
}
endBalloonScore();
-
break;
case 3:
- unkInt1 = 3;
-
+ exitID = 3;
break;
}
- return dStage_changeScene(unkInt1, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1);
+ return dStage_changeScene(exitID, 0.0f, 10, fopAcM_GetRoomNo(this), 0, -1);
}
void daKago_c::createBalloonScore() {
- if (field_0x6e7 != 0 && mBalloon2DId == fpcM_ERROR_PROCESS_ID_e) {
- mBalloon2DId = fopAcM_create(PROC_BALLOON2D, 0, 0, 0xffffffff, 0, 0, -1);
+ if (mType != TYPE_TWILIGHT && mBalloon2DId == fpcM_ERROR_PROCESS_ID_e) {
+ mBalloon2DId = fopAcM_create(PROC_BALLOON2D, 0, NULL, -1, NULL, NULL, -1);
field_0x6e9 = 1;
}
}
void daKago_c::startBalloonScore() {
fopAc_ac_c* balloon_actor;
- if (field_0x6e7 != 0 && field_0x6e9 == 1) {
+ if (mType != TYPE_TWILIGHT && field_0x6e9 == 1) {
fopAcM_SearchByID(mBalloon2DId, &balloon_actor);
if (balloon_actor != NULL) {
((daBalloon2D_c*)balloon_actor)->show();
@@ -711,9 +716,9 @@ void daKago_c::startBalloonScore() {
void daKago_c::endBalloonScore() {
fopAc_ac_c* balloon2D;
- fopAc_ac_c *balloonObj;
+ fopAc_ac_c* balloonObj;
- if (field_0x6e7 != 0) {
+ if (mType != TYPE_TWILIGHT) {
fopAcM_SearchByID(mBalloon2DId, &balloon2D);
if (balloon2D != NULL) {
((daBalloon2D_c*)balloon2D)->hide();
@@ -726,11 +731,11 @@ void daKago_c::endBalloonScore() {
}
}
-f32 daKago_c::checkNextPath(cXyz param_0) {
+f32 daKago_c::checkNextPath(cXyz i_pntPos) {
cXyz cStack_14;
mDoMtx_stack_c::YrotS(-field_0x714);
mDoMtx_stack_c::transM(-current.pos.x, -current.pos.y, -current.pos.z);
- mDoMtx_stack_c::multVec(&param_0, &cStack_14);
+ mDoMtx_stack_c::multVec(&i_pntPos, &cStack_14);
return cStack_14.z;
}
@@ -745,10 +750,11 @@ void daKago_c::checkHeight() {
bool daKago_c::checkYaguraPos(cXyz param_0) {
cXyz local_18(-22984.0f, 0.0f, 7455.0f);
cXyz cStack_24;
- s16 temp = -0x770;
- mDoMtx_stack_c::YrotS(-temp);
+ s16 rot_y = -0x770;
+ mDoMtx_stack_c::YrotS(-rot_y);
mDoMtx_stack_c::transM(-local_18.x, -local_18.y, -local_18.z);
mDoMtx_stack_c::multVec(&param_0, &cStack_24);
+
if (std::abs(cStack_24.z) < 700.0f) {
return true;
} else {
@@ -758,12 +764,12 @@ bool daKago_c::checkYaguraPos(cXyz param_0) {
bool daKago_c::checkWallHitFall(int param_0) {
if (field_0x6e5 != 0) {
- cXyz unkXyz1;
- setActionMode(1, 3);
- dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- unkXyz1 = current.pos;
- unkXyz1.y += 200.0f;
- setWallHitEffect(unkXyz1, 0);
+ cXyz effpos;
+ setActionMode(ACTION_STAGGER_e, 3);
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
+ effpos = current.pos;
+ effpos.y += 200.0f;
+ setWallHitEffect(effpos, 0);
return true;
}
@@ -773,37 +779,37 @@ bool daKago_c::checkWallHitFall(int param_0) {
if (!checkYaguraPos(current.pos)) {
if (abs(unkInt1) > 0x7000) {
field_0x6d9 |= (u8)0x4;
- field_0x650[2].set(current.pos.x + cM_ssin(shape_angle.y) * 200.0f, current.pos.y, current.pos.z + cM_scos(shape_angle.y) * 200.0f);
+ mWallHitEffPos[2].set(current.pos.x + cM_ssin(shape_angle.y) * 200.0f, current.pos.y, current.pos.z + cM_scos(shape_angle.y) * 200.0f);
}
}
if (unkInt1 > 0) {
field_0x6d9 |= (u8)0x1;
- field_0x650[0].set(current.pos.x + cM_ssin(shape_angle.y + 0x4000) * 200.0f, current.pos.y,
- current.pos.z + cM_scos(shape_angle.y + 0x4000) * 200.0f);
+ mWallHitEffPos[0].set(current.pos.x + cM_ssin(shape_angle.y + 0x4000) * 200.0f, current.pos.y,
+ current.pos.z + cM_scos(shape_angle.y + 0x4000) * 200.0f);
} else {
field_0x6d9 |= (u8)0x2;
- field_0x650[1].set(current.pos.x + cM_ssin(shape_angle.y + -0x4000) * 200.0f,
- current.pos.y,
- current.pos.z + cM_scos(shape_angle.y + -0x4000) * 200.0f);
+ mWallHitEffPos[1].set(current.pos.x + cM_ssin(shape_angle.y + -0x4000) * 200.0f,
+ current.pos.y,
+ current.pos.z + cM_scos(shape_angle.y + -0x4000) * 200.0f);
}
}
if ((field_0x6d9 & 0x4) != 0) {
- setActionMode(1, 0);
- dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- setWallHitEffect(field_0x650[2], 0);
+ setActionMode(ACTION_STAGGER_e, 0);
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
+ setWallHitEffect(mWallHitEffPos[2], 0);
return true;
}
- if (param_0 != 0 && field_0x720 == 0 && (field_0x6d9 & 0x3) != 0) {
- dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
+ if (param_0 != 0 && mWallHitInvulnTimer == 0 && (field_0x6d9 & 0x3) != 0) {
+ dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
if ((field_0x6d9 & 0x1) != 0) {
- setActionMode(1, 1);
- setWallHitEffect(field_0x650[0], 1);
+ setActionMode(ACTION_STAGGER_e, 1);
+ setWallHitEffect(mWallHitEffPos[0], 1);
} else {
- setActionMode(1, 2);
- setWallHitEffect(field_0x650[1], 1);
+ setActionMode(ACTION_STAGGER_e, 2);
+ setWallHitEffect(mWallHitEffPos[1], 1);
}
return true;
}
@@ -816,8 +822,8 @@ bool daKago_c::checkAttackStart() {
return false;
}
- if (mDoCPd_c::getTrigA(0)) {
- setActionMode(5, 0);
+ if (mDoCPd_c::getTrigA(PAD_1)) {
+ setActionMode(ACTION_ATTACK_e, 0);
mIsFlying = true;
return true;
} else {
@@ -825,11 +831,9 @@ bool daKago_c::checkAttackStart() {
}
}
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-
s16 daKago_c::getValueY(f32 param_0) {
- s16 valueY = field_0x6f4 * param_0;
+ s16 valueY = mStickY * param_0;
+
f32 var_f31;
if (valueY < 0) {
if (current.pos.y > mRoofHeight - 200.0f) {
@@ -853,11 +857,11 @@ s16 daKago_c::getValueY(f32 param_0) {
}
s16 daKago_c::getValueX(f32 param_0) {
- return -field_0x6f0 * param_0;
+ return -mStickX * param_0;
}
s16 daKago_c::getValueAbsX(f32 param_0) {
- return std::abs(-field_0x6f0 * param_0);
+ return std::abs(-mStickX * param_0);
}
void daKago_c::flySpeedCalcLockOn() {
@@ -873,31 +877,31 @@ void daKago_c::flySpeedCalcLockOn() {
cLib_addCalcAngleS(&current.angle.x, angleX, 8, 0x100, 0x10);
shape_angle.x = current.angle.x;
- s16 angleX2 = current.angle.y;
+
+ s16 prevAngleY = current.angle.y;
cLib_addCalcAngleS(&current.angle.y, angleY, 8, 0x100, 0x10);
shape_angle.y = current.angle.y;
- cLib_addCalcAngleS(&shape_angle.z, ((angleX2 - current.angle.y) * 0x20), 8, 0x400, 0x10);
+ cLib_addCalcAngleS(&shape_angle.z, ((prevAngleY - current.angle.y) * 0x20), 8, 0x400, 0x10);
if (shape_angle.z > 0x3000) {
shape_angle.z = 0x3000;
}
-
if (shape_angle.z < -0x3000) {
shape_angle.z = -0x3000;
}
}
-void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
+void daKago_c::flySpeedCalc(s16 param_0, int i_calcType) {
s16 var_r29;
s16 var_r28;
s16 var_r27;
s16 sp_8;
- if (param_1 == 0) {
+ if (i_calcType == 0) {
sp_8 = 0x2000;
- } else if (param_1 == 1) {
+ } else if (i_calcType == 1) {
sp_8 = 0x1000;
- } else if (param_1 == 2) {
+ } else if (i_calcType == 2) {
sp_8 = 0x2aaa;
}
@@ -910,7 +914,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
field_0x710 += getValueY(40.0f);
var_r29 = 0x200;
- if (param_1 == 2) {
+ if (i_calcType == 2) {
var_r29 = 0x400;
}
if (field_0x710 > var_r29) {
@@ -920,7 +924,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
field_0x710 = -var_r29;
}
- if (field_0x6f4 > 0.0f) {
+ if (mStickY > 0.0f) {
if (current.angle.x < var_r28) {
current.angle.x += field_0x710;
} else {
@@ -952,6 +956,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
}
current.angle.x += field_0x710;
}
+
if (current.angle.x > 0x2aaa) {
current.angle.x = 0x2aaa;
}
@@ -961,28 +966,28 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
shape_angle.x = current.angle.x;
var_r27 = 0x2000;
- if (param_1 == 1) {
+ if (i_calcType == 1) {
var_r27 = 0x1000;
- } else if (param_1 == 2) {
+ } else if (i_calcType == 2) {
var_r27 = 0x2aaa;
}
f32 unkFloat1 = 20.0f;
var_r29 = 0x100;
- if (param_1 == 2) {
+ if (i_calcType == 2) {
unkFloat1 = 30.0f;
var_r29 = 0x200;
}
var_r28 = param_0 + getValueX(var_r27);
if (mpLockActor != NULL) {
- var_r28 = cLib_targetAngleY((Vec*)&current, (Vec*)&mpLockActor->current);
+ var_r28 = cLib_targetAngleY(&current.pos, &mpLockActor->current.pos);
}
int always_zero = 0;
if (!always_zero) {
if (abs((s16)(current.angle.y - param_0)) < var_r27) {
- if (field_0x6f0) {
+ if (mStickX) {
field_0x712 += getValueX(unkFloat1);
if (field_0x712 > getValueAbsX(var_r29)) {
field_0x712 = getValueAbsX(var_r29);
@@ -993,18 +998,20 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
} else {
cLib_addCalcAngleS(&field_0x712, 0, 8, 0x20, 0x10);
}
+
current.angle.y += field_0x712;
} else {
int sp_14 = 0;
- if (field_0x6f0 < 0.0f) {
+ if (mStickX < 0.0f) {
if ((s16)(current.angle.y - param_0) < var_r27) {
sp_14 = 1;
}
} else {
- if (field_0x6f0 > 0.0f && (s16)(current.angle.y - param_0) > var_r27) {
+ if (mStickX > 0.0f && (s16)(current.angle.y - param_0) > var_r27) {
sp_14 = 1;
}
}
+
if (sp_14 != 0) {
field_0x712 += getValueX(unkFloat1);
if (field_0x712 > getValueAbsX(var_r29)) {
@@ -1020,7 +1027,9 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
}
}
}
+
shape_angle.y = current.angle.y;
+
cLib_addCalcAngleS(&shape_angle.z, -field_0x712 * 0x20, 8, 0x400, 0x10);
if (shape_angle.z > 0x3000) {
shape_angle.z = 0x3000;
@@ -1031,7 +1040,7 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
if (field_0x6e3 == 1) {
field_0x6e3 = 2;
- if (field_0x6e7 == 1) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -1040,58 +1049,60 @@ void daKago_c::flySpeedCalc(s16 param_0, int param_1) {
if (field_0x6e6 == 1) {
field_0x6e6 = 2;
- if (mCurrentAction == 5) {
- field_0x71c = l_HIO.mSplashGenTimeDuringDash;
+ if (mAction == ACTION_ATTACK_e) {
+ mWaterSplashTimer = l_HIO.mSplashGenTimeDuringDash;
} else {
- field_0x71c = l_HIO.mWaterSplashTime;
+ mWaterSplashTimer = l_HIO.mWaterSplashTime;
}
}
}
bool daKago_c::checkFlySceneChange() {
- if ((mPathIdxOffset > 0 && mPathIdx >= mpPath1->m_num - 1 ||
- mPathIdxOffset < 0 && mPathIdx < 1) &&
- field_0x73c == 1 && fopOvlpM_IsPeek() == 0)
+ if (((mPathStep > 0 && mPathCurrentPointNo >= mpPath1->m_num - 1) || (mPathStep < 0 && mPathCurrentPointNo < 1))
+ && mSceneType == SCENE_TYPE_RIVER
+ && !fopOvlpM_IsPeek())
{
- setActionMode(0, 4);
+ setActionMode(ACTION_FLY_e, 4);
field_0x728 = 300;
- if (checkBck(9) == 0) {
- setBck(9, 2, 10.0f, 1.0f);
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f);
}
- if (mPathIdxOffset > 0) {
+ if (mPathStep > 0) {
setSceneChange(1);
} else {
setSceneChange(2);
}
return true;
- } else {
- return false;
}
+
+ return false;
}
void daKago_c::setFlyAway() {
current.angle.y = shape_angle.y;
- setActionMode(0, 3);
+ setActionMode(ACTION_FLY_e, 3);
field_0x728 = 90;
- if (!checkBck(9)) {
- setBck(9, 2, 10.0f, 1.0f);
+
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f);
}
+
dComIfGp_getVibration().StopQuake(0x1f);
}
void daKago_c::setFlyAnime() {
if (cM_rnd() < 0.5) {
- if (checkBck(15) == 0) {
- setBck(15, 2, 10.0f, 1.0f);
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
} else {
- setBck(13, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f);
}
} else {
- if (!checkBck(13)) {
- setBck(13, 2, 10.0f, 1.0f);
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f);
}
}
@@ -1099,23 +1110,24 @@ void daKago_c::setFlyAnime() {
}
void daKago_c::executeFly() {
- s16 unkInt1;
- s16 unkInt2;
- f32 unkFloat1;
- cXyz unkXyz1;
- cXyz unkXyz2;
+ s16 pntAngleY;
+ s16 pntAngleX;
+ f32 targetFlySpeed;
+ cXyz nextPntPos;
+ cXyz prevPntPos;
cXyz unkXyz3;
startBalloonScore();
- if (field_0x744 < 3) {
+ if (mMode < 3) {
if (mDashCooldownTime == 0) {
- dComIfGp_setDoStatusForce(0x4b, 0);
+ dComIfGp_setDoStatusForce(BUTTON_STATUS_UNK_75, 0);
}
- if (field_0x6e7 == 1) {
- dComIfGp_setAStatusForce(0x2a, 0);
+
+ if (mType == TYPE_NORMAL) {
+ dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0);
} else {
- dComIfGp_setAStatusForce(0x27, 0);
+ dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0);
}
}
@@ -1126,7 +1138,7 @@ void daKago_c::executeFly() {
checkHeight();
mIsFlying = true;
- switch (field_0x744) {
+ switch (mMode) {
case 0:
shape_angle.y = current.angle.y;
mGroundHeight = checkGroundHeight(current.pos, NULL);
@@ -1135,27 +1147,29 @@ void daKago_c::executeFly() {
case 1:
setFlyAnime();
field_0x710 = field_0x712 = 0;
- field_0x744 = 2;
+ mMode = 2;
break;
case 2:
- unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position;
- unkInt1 = cLib_targetAngleY(&unkXyz2, &unkXyz1);
- field_0x714 = unkInt1;
- flySpeedCalc(unkInt1, 0);
- if (checkBck(11)) {
- if (mpMorf->isStop()) {
+ nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position;
+ pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos);
+ field_0x714 = pntAngleY;
+
+ flySpeedCalc(pntAngleY, 0);
+
+ if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e)) {
+ if (mAnm_p->isStop()) {
setFlyAnime();
}
} else {
if (field_0x710 < 0) {
- if (!checkBck(15)) {
- setBck(15, 2, 10.0f, 1.0f);
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
}
field_0x728 = 10;
} else if (field_0x710 > 0) {
- if (!checkBck(13)) {
- setBck(13, 2, 10.0f, 1.0f);
+ if (!checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) {
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f);
}
field_0x728 = 90;
} else {
@@ -1164,22 +1178,26 @@ void daKago_c::executeFly() {
}
}
}
+
if (cM_ssin(current.angle.x) > 0.0f) {
- unkFloat1 = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x);
+ targetFlySpeed = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x);
} else {
- unkFloat1 = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x);
+ targetFlySpeed = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x);
}
- if (std::abs(field_0x6f8 - unkFloat1) > 10.0f) {
- cLib_chaseF(&field_0x6f8, unkFloat1, 2.0f);
+
+ if (std::abs(mFlySpeed - targetFlySpeed) > 10.0f) {
+ cLib_chaseF(&mFlySpeed, targetFlySpeed, 2.0f);
} else {
- cLib_chaseF(&field_0x6f8, unkFloat1, 1.0f);
+ cLib_chaseF(&mFlySpeed, targetFlySpeed, 1.0f);
}
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
- unkXyz3.z = checkNextPath(unkXyz1);
+
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+
+ unkXyz3.z = checkNextPath(nextPntPos);
if (unkXyz3.z < 0.0f) {
- if (abs((s16)(unkInt1 - cLib_targetAngleY(&unkXyz2, &current.pos))) < 0x4000) {
- mPathIdx += mPathIdxOffset;
+ if (abs((s16)(pntAngleY - cLib_targetAngleY(&prevPntPos, &current.pos))) < 0x4000) {
+ mPathCurrentPointNo += mPathStep;
if (checkFlySceneChange()) {
return;
}
@@ -1188,35 +1206,40 @@ void daKago_c::executeFly() {
break;
case 3:
case 4:
- if (mPathIdx >= mpPath1->m_num) {
- unkInt1 = current.angle.y;
- unkInt2 = 0;
+ if (mPathCurrentPointNo >= mpPath1->m_num) {
+ pntAngleY = current.angle.y;
+ pntAngleX = 0;
} else {
- unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position;
- unkInt1 = cLib_targetAngleY(&unkXyz2, &unkXyz1);
- unkInt2 = -cLib_targetAngleX(&unkXyz2, &unkXyz1);
+ nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position;
+ pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos);
+ pntAngleX = -cLib_targetAngleX(&prevPntPos, &nextPntPos);
}
- if (field_0x744 == 3) {
+
+ if (mMode == 3) {
cLib_chaseUC(&field_0x6de, 0, 4);
- cLib_addCalcAngleS(&current.angle.x, -8192, 8, 0x100, 0x10);
+ cLib_addCalcAngleS(&current.angle.x, -0x2000, 8, 0x100, 0x10);
} else {
- cLib_addCalcAngleS(&current.angle.x, unkInt2, 8, 0x100, 0x10);
+ cLib_addCalcAngleS(&current.angle.x, pntAngleX, 8, 0x100, 0x10);
}
+
shape_angle.x = current.angle.x;
- cLib_addCalcAngleS(&current.angle.y, unkInt1, 8, 0x400, 0x10);
+ cLib_addCalcAngleS(&current.angle.y, pntAngleY, 8, 0x400, 0x10);
shape_angle.y = current.angle.y;
cLib_addCalcAngleS(&shape_angle.z, 0, 8, 0x400, 0x10);
- unkFloat1 = l_HIO.mFlightSpeed + 20.0f;
- if (std::abs(field_0x6f8 - unkFloat1) > 10.0f) {
- cLib_chaseF(&field_0x6f8, unkFloat1, 2.0f);
+ targetFlySpeed = l_HIO.mFlightSpeed + 20.0f;
+
+ if (std::abs(mFlySpeed - targetFlySpeed) > 10.0f) {
+ cLib_chaseF(&mFlySpeed, targetFlySpeed, 2.0f);
} else {
- cLib_chaseF(&field_0x6f8, unkFloat1, 1.0f);
+ cLib_chaseF(&mFlySpeed, targetFlySpeed, 1.0f);
}
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+
if (field_0x728 == 0) {
- setActionMode(4, 0);
+ setActionMode(ACTION_WAIT_e, 0);
}
return;
}
@@ -1229,31 +1252,31 @@ void daKago_c::executeFly() {
void daKago_c::executeStagger() {
dCamera_c* camera = dCam_getBody();
- cXyz cStack_94 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- cXyz cStack_a0 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position;
+ cXyz nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ cXyz prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position;
- field_0x714 = cLib_targetAngleY(&cStack_a0, &cStack_94);
+ field_0x714 = cLib_targetAngleY(&prevPntPos, &nextPntPos);
- if (field_0x6e7 == 1) {
- dComIfGp_setAStatusForce(0x2a, 0);
+ if (mType == TYPE_NORMAL) {
+ dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0);
} else {
- dComIfGp_setAStatusForce(0x27, 0);
+ dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0);
}
checkHeight();
mIsFlying = true;
- switch (field_0x744) {
+ switch (mMode) {
case 0:
mSph.OffAtSetBit();
- daPy_getPlayerActorClass()->setPlayerDamage(0, 1);
+ daPy_getPlayerActorClass()->setPlayerDamage(0, TRUE);
- mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(6));
+ mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_HEAD_e));
mDoMtx_stack_c::multVecZero(&field_0x674);
- if (field_0x6e7 == 0) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1);
mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1);
} else {
@@ -1261,12 +1284,12 @@ void daKago_c::executeStagger() {
mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1);
}
- setBck(7, 0, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_CRASH_e, 0, 10.0f, 1.0f);
field_0x728 = 60;
speedF = 30.0f;
- if (current.pos.y < cStack_94.y) {
+ if (current.pos.y < nextPntPos.y) {
speed.y = 30.0f;
} else {
speed.y = -30.0f;
@@ -1274,22 +1297,21 @@ void daKago_c::executeStagger() {
current.angle.y = field_0x6da - (s16)(current.angle.y - field_0x6da) + 0x8000;
- field_0x744 = 4;
-
+ mMode = 4;
break;
case 1:
case 2:
mSph.OffAtSetBit();
- daPy_getPlayerActorClass()->setPlayerDamage(0, 1);
+ daPy_getPlayerActorClass()->setPlayerDamage(0, TRUE);
- setBck(15, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
field_0x728 = 10;
- field_0x720 = (int)l_HIO.mWallHitInvulnTime;
+ mWallHitInvulnTimer = (int)l_HIO.mWallHitInvulnTime;
speedF = 40.0f;
- if (field_0x744 == 1) {
+ if (mMode == 1) {
shape_angle.z = 0x3000;
ANGLE_ADD(current.angle.y, -0x2000);
if (abs((s16)(current.angle.y - field_0x714)) > 0x2000) {
@@ -1306,18 +1328,17 @@ void daKago_c::executeStagger() {
mSound.startCreatureSound(Z2SE_EN_YC_HIT_SIDE, 0, -1);
dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- field_0x744 = 5;
-
+ mMode = 5;
break;
case 3:
- daPy_getPlayerActorClass()->setPlayerDamage(2, 1);
+ daPy_getPlayerActorClass()->setPlayerDamage(2, TRUE);
mSph.OffAtSetBit();
- mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(6));
+ mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_HEAD_e));
mDoMtx_stack_c::multVecZero(&field_0x674);
- if (field_0x6e7 == 0) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSound(Z2SE_EN_YC_CRASH, 0, -1);
mSound.startCreatureVoice(Z2SE_EN_YC_V_HANGED, -1);
} else {
@@ -1325,14 +1346,13 @@ void daKago_c::executeStagger() {
mSound.startCreatureVoice(Z2SE_EN_KC_V_CRASH, -1);
}
- setBck(7, 0, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_CRASH_e, 0, 10.0f, 1.0f);
- field_0x728 = 0x3c;
+ field_0x728 = 60;
speedF = 30.0f;
speed.y = -50.0f;
- field_0x744 = 6;
-
+ mMode = 6;
break;
case 5:
cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 8, 0x400, 0x40);
@@ -1351,28 +1371,27 @@ void daKago_c::executeStagger() {
}
shape_angle.y = current.angle.y;
- field_0x6f8 = 40.0f;
+ mFlySpeed = 40.0f;
- setActionMode(0, 1);
+ setActionMode(ACTION_FLY_e, 1);
dComIfGp_getVibration().StopQuake(0x1f);
-
break;
case 4:
case 6:
- if (checkBck(7)) {
- cXyz cStack_ac;
+ if (checkBck(dRes_ID_E_YC_BCK_YC_CRASH_e)) {
+ cXyz line_end;
mDoMtx_stack_c::copy(mLegR3Mtx);
- mDoMtx_stack_c::multVecZero(&cStack_ac);
- cStack_ac.y -= 20.0f;
+ mDoMtx_stack_c::multVecZero(&line_end);
+ line_end.y -= 20.0f;
- cXyz cStack_b8 = current.pos;
- cStack_b8.y += 50.0f;
+ cXyz line_start = current.pos;
+ line_start.y += 50.0f;
- dBgS_LinChk dStack_88;
- dStack_88.Set(&cStack_b8, &cStack_ac, NULL);
+ dBgS_LinChk linechk;
+ linechk.Set(&line_start, &line_end, NULL);
- if (dComIfG_Bgsp().LineCross(&dStack_88)) {
+ if (dComIfG_Bgsp().LineCross(&linechk)) {
current.pos.y += 5.0f;
}
@@ -1380,13 +1399,13 @@ void daKago_c::executeStagger() {
field_0x728 = 60;
- if (mpMorf->checkFrame(22.0f)) {
+ if (mAnm_p->checkFrame(22.0f)) {
setRideOff();
- setBck(8, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_CRASH2_e, 2, 10.0f, 1.0f);
}
}
- if (field_0x744 == 4) {
+ if (mMode == 4) {
cLib_addCalcAngleS(&shape_angle.y, current.angle.y + 0x8000, 8, 0x100, 0x10);
} else {
cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 8, 0x100, 0x10);
@@ -1401,40 +1420,38 @@ void daKago_c::executeStagger() {
if (field_0x728 == 0) {
setFlyAway();
- field_0x6f8 = -10.0f;
+ mFlySpeed = -10.0f;
}
-
break;
}
}
void daKago_c::executeWait() {
- daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass()->getMidnaActor();
+ daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor();
if (field_0x728 == 0) {
cLib_chaseUC(&field_0x6de, 0, 4);
}
if (field_0x6df == 0) {
- if (player->checkWolfCargoCarrySceneChange()) {
- if (field_0x73c == 1) {
+ if (daPy_py_c::checkWolfCargoCarrySceneChange()) {
+ if (mSceneType == SCENE_TYPE_RIVER) {
createBalloonScore();
if (dComIfGp_getStartStagePoint() == 0) {
- mPathIdxOffset = 1;
- mPathIdx = 0;
+ mPathStep = 1;
+ mPathCurrentPointNo = 0;
mPathDir = 1;
} else {
- mPathIdxOffset = -1;
- mPathIdx = mpPath1->m_num + -1;
+ mPathStep = -1;
+ mPathCurrentPointNo = mpPath1->m_num + -1;
mPathDir = -1;
}
- old.pos = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- current.pos = old.pos;
- mPathIdx += mPathIdxOffset;
- field_0x6a4 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
+ current.pos = old.pos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ mPathCurrentPointNo += mPathStep;
+ field_0x6a4 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
- current.angle.y = shape_angle.y = cLib_targetAngleY((Vec*)&current, &field_0x6a4);
- if (player != NULL) {
+ current.angle.y = shape_angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
+ if (midna != NULL) {
setMidnaRideOn();
setPlayerRideOn();
@@ -1442,16 +1459,16 @@ void daKago_c::executeWait() {
field_0x6de = 0xff;
field_0x6df = 1;
- if (mPathDir == 1 && field_0x6e7 == 0 && dComIfGs_isSaveSwitch(9) == 0) {
- setActionMode(9, 0);
+ if (mPathDir == 1 && mType == TYPE_TWILIGHT && !dComIfGs_isSaveSwitch(9)) {
+ setActionMode(ACTION_DEMO_FLY_e, 0);
} else {
- setActionMode(10, 0);
+ setActionMode(ACTION_DEMO_FLY2_e, 0);
}
setFlyAnime();
moveDemoFly();
}
- } else if (field_0x73c == 0 || field_0x73c == 2) {
+ } else if (mSceneType == SCENE_TYPE_LAKE_HYLIA || mSceneType == SCENE_TYPE_BOARD_HOUSE) {
setMidnaRideOn();
setPlayerRideOn();
@@ -1459,30 +1476,29 @@ void daKago_c::executeWait() {
field_0x6de = 0xff;
field_0x6df = 1;
- setActionMode(8, 0);
+ setActionMode(ACTION_LANDING_e, 0);
executeLanding();
}
-
}
-
return;
}
#if DEBUG
mPathDir = 1;
- if (mDoCPd_c::getHoldL(0) && mDoCPd_c::getHoldR(0) &&
- mDoCPd_c::getTrigB(0))
+ if (mDoCPd_c::getHoldL(PAD_1) && mDoCPd_c::getHoldR(PAD_1) &&
+ mDoCPd_c::getTrigB(PAD_1))
{
- setActionMode(2, 0);
+ setActionMode(ACTION_EVENT_e, 0);
- if (field_0x73c == 2) {
+ if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
setKagoPath(1);
} else {
setKagoPath(5);
- if (field_0x73c == 1) {
+ if (mSceneType == SCENE_TYPE_RIVER) {
createBalloonScore();
+ return;
}
}
}
@@ -1490,48 +1506,49 @@ void daKago_c::executeWait() {
}
bool daKago_c::calcAttackMove(int param_0) {
- cXyz acStack_20;
- cXyz cStack_2c;
+ cXyz nextPntPos;
+ cXyz prevPntPos;
cXyz cStack_38;
- acStack_20 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- cStack_2c = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position;
+ nextPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ prevPntPos = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position;
- s16 targetAngleY = cLib_targetAngleY(&cStack_2c, &acStack_20);
- field_0x714 = targetAngleY;
+ s16 pntAngleY = cLib_targetAngleY(&prevPntPos, &nextPntPos);
+ field_0x714 = pntAngleY;
if (mpLockActor != NULL) {
flySpeedCalcLockOn();
} else {
if (param_0 == 0) {
- flySpeedCalc(targetAngleY, 1);
+ flySpeedCalc(pntAngleY, 1);
} else {
- flySpeedCalc(targetAngleY, 2);
+ flySpeedCalc(pntAngleY, 2);
}
}
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
- cStack_38.z = checkNextPath(acStack_20);
+ cStack_38.z = checkNextPath(nextPntPos);
if (cStack_38.z < 0.0f) {
- if (abs((s16)(targetAngleY - cLib_targetAngleY(&cStack_2c, &current.pos))) < 0x4000) {
- mPathIdx += mPathIdxOffset;
+ if (abs((s16)(pntAngleY - cLib_targetAngleY(&prevPntPos, &current.pos))) < 0x4000) {
+ mPathCurrentPointNo += mPathStep;
if (checkFlySceneChange()) {
return true;
}
}
}
+
return false;
}
void daKago_c::executeAttack() {
- field_0x6dd = 1;
+ mIsAttack = TRUE;
- if (field_0x6e7 == 1) {
- dComIfGp_setAStatusForce(0x2a, 0);
+ if (mType == TYPE_NORMAL) {
+ dComIfGp_setAStatusForce(BUTTON_STATUS_QUIT, 0);
} else {
- dComIfGp_setAStatusForce(0x27, 0);
+ dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0);
}
checkHeight();
@@ -1543,15 +1560,15 @@ void daKago_c::executeAttack() {
setDashSibukiEffect();
}
- switch (field_0x744) {
+ switch (mMode) {
case 0:
mDashCooldownTime = l_HIO.mDashCooldownTime;
mDashTime = l_HIO.mDashTime;
- field_0x744 = 1;
+ mMode = 1;
setDashBlurEffect(0);
- setBck(11, 0, 5.0f, l_HIO.mDashTimeMultiplier);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e, 0, 5.0f, l_HIO.mDashTimeMultiplier);
dComIfGp_getVibration().StartShock(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
@@ -1568,18 +1585,20 @@ void daKago_c::executeAttack() {
break;
case 1:
setDashEffect();
+
if (calcAttackMove(0) == 0) {
- cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
- if (mpMorf->checkFrame(9.0f)) {
- if (field_0x6e7 == 0) {
+ cLib_chaseF(&mFlySpeed, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
+ if (mAnm_p->checkFrame(9.0f)) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1);
} else {
mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1);
}
}
- if (mpMorf->checkFrame(12.0f)) {
- field_0x744 = 2;
- field_0x728 = 0x14;
+
+ if (mAnm_p->checkFrame(12.0f)) {
+ mMode = 2;
+ field_0x728 = 20;
dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
@@ -1593,15 +1612,15 @@ void daKago_c::executeAttack() {
case 2:
setDashEffect();
- if (mpMorf->checkFrame(23.0f)) {
+ if (mAnm_p->checkFrame(23.0f)) {
mSph.OnAtSetBit();
}
if (calcAttackMove(1) == 0) {
- cLib_chaseF(&field_0x6f8, 100.0f, 5.0f);
+ cLib_chaseF(&mFlySpeed, 100.0f, 5.0f);
if (field_0x728 == 0) {
- field_0x744 = 3;
+ mMode = 3;
}
if (field_0x728 < 10 && checkWallHitFall(0)) {
@@ -1617,8 +1636,9 @@ void daKago_c::executeAttack() {
break;
case 3:
setDashEffect();
+
if (calcAttackMove(1) == 0) {
- cLib_chaseF(&field_0x6f8, 100.0f, 3.0f);
+ cLib_chaseF(&mFlySpeed, 100.0f, 3.0f);
if (checkWallHitFall(0)) {
dComIfGp_getVibration().StopQuake(0x1f);
@@ -1626,8 +1646,7 @@ void daKago_c::executeAttack() {
} else {
mDashTime--;
if (mDashTime == 0) {
- field_0x744 = 4;
-
+ mMode = 4;
dComIfGp_getVibration().StopQuake(0x1f);
}
}
@@ -1637,13 +1656,13 @@ void daKago_c::executeAttack() {
setDashEffect();
case 5:
if (calcAttackMove(0) == 0) {
- cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 5.0f);
- if (field_0x6f8 <= l_HIO.mFlightSpeed) {
+ cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 5.0f);
+ if (mFlySpeed <= l_HIO.mFlightSpeed) {
mpLockActor = NULL;
mSph.OffAtSetBit();
- setActionMode(0, 2);
+ setActionMode(ACTION_FLY_e, 2);
field_0x6c8 = 0;
field_0x6c4 = 8000.0f;
@@ -1655,56 +1674,57 @@ void daKago_c::executeAttack() {
}
void daKago_c::calcCircleCamera(int param_0) {
- cXyz cStack_20;
+ cXyz targetPos;
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::XrotM(shape_angle.x);
mDoMtx_stack_c::transM(0.0f, 0.0f, 1500.0f);
- mDoMtx_stack_c::multVecZero(&cStack_20);
+ mDoMtx_stack_c::multVecZero(&targetPos);
if (param_0 == 0) {
- field_0x68c = cStack_20;
+ mDemoCamCenter = targetPos;
} else if (param_0 == 1) {
- cLib_addCalcPos(&field_0x68c, cStack_20, 0.1f, field_0x6f8 + 100.0f,
+ cLib_addCalcPos(&mDemoCamCenter, targetPos, 0.1f, mFlySpeed + 100.0f,
10.0f);
} else {
- cLib_addCalcPos(&field_0x68c, cStack_20, 0.5f, field_0x6f8 + 30.0f,
+ cLib_addCalcPos(&mDemoCamCenter, targetPos, 0.5f, mFlySpeed + 30.0f,
10.0f);
}
+
mDoMtx_stack_c::transM(0.0f, 0.0f, -1000.0f);
- mDoMtx_stack_c::multVecZero(&cStack_20);
+ mDoMtx_stack_c::multVecZero(&targetPos);
if (param_0 == 0) {
- field_0x698 = cStack_20;
+ mDemoCamEye = targetPos;
} else if (param_0 == 1) {
- cLib_addCalcPos(&field_0x698, cStack_20, 0.1f, field_0x6f8 + 100.0f,
+ cLib_addCalcPos(&mDemoCamEye, targetPos, 0.1f, mFlySpeed + 100.0f,
10.0f);
} else {
- cLib_addCalcPos(&field_0x698, cStack_20, 0.5f, field_0x6f8 + 30.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamEye, targetPos, 0.5f, mFlySpeed + 30.0f, 10.0f);
}
- field_0x6d4 = 60.0f;
- dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ mDemoCamFovy = 60.0f;
+ dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
}
void daKago_c::executeEvent() {
dCamera_c* camera = dCam_getBody();
- daPy_py_c* unusedPlayer = daPy_getPlayerActorClass();
+ daPy_py_c* player = daPy_getPlayerActorClass();
- if ((field_0x73c == 0) && dComIfG_play_c::getLayerNo(0) == 13 && dComIfGs_isSaveSwitch(0x10)) {
- dComIfGs_onSaveSwitch(0x1a);
- setActionMode(4, 0);
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA && dComIfG_play_c::getLayerNo(0) == 13 && dComIfGs_isSaveSwitch(16)) {
+ dComIfGs_onSaveSwitch(26);
+ setActionMode(ACTION_WAIT_e, 0);
} else {
if (!eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(this, 2, 0xffff, 3);
- eventInfo.onCondition(2);
+ eventInfo.onCondition(dEvtCnd_CANDEMO_e);
} else {
camera->Stop();
camera->SetTrimSize(3);
- field_0x748 = 0;
+ mDemoMode = 0;
field_0x74c = 0;
- setActionMode(3, 0);
+ setActionMode(ACTION_PERCH_e, 0);
field_0x6dc = 1;
field_0x6de = 0xff;
dComIfGs_onSaveSwitch(8);
@@ -1718,13 +1738,13 @@ void daKago_c::initPerchDemo() {
cXyz midnaPos;
fopAc_ac_c* midna = daPy_getPlayerActorClass()->getMidnaActor();
- if (midna != 0) {
+ if (midna != NULL) {
midnaPos = midna->current.pos;
}
- switch (field_0x748) {
+ switch (mDemoMode) {
case 0: {
- Z2GetAudioMgr()->setDemoName(field_0x760);
+ Z2GetAudioMgr()->setDemoName(mDemoName);
field_0x771 = 0;
current.pos = dPath_GetPnt(mpPath2, field_0x771)->m_position;
@@ -1753,46 +1773,44 @@ void daKago_c::initPerchDemo() {
speed.y = 0.0f;
speedF = 20.0f;
- field_0x72c = 0xb4;
+ field_0x72c = 180;
field_0x728 = field_0x72c + 90;
field_0x6e8 = 0;
- if ((field_0x73c == 0) && dComIfG_play_c::getLayerNo(0) == 13 && (playerPos.x > -90000.0f))
- {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA && dComIfG_play_c::getLayerNo(0) == 13 && playerPos.x > -90000.0f) {
field_0x6e8 = 1;
}
calcCircleCamera(0);
field_0x6e4 = 0;
-
break;
}
case 1: {
field_0x728 = 90;
- field_0x6f8 = 20.0f;
+ mFlySpeed = 20.0f;
break;
}
case 2: {
- if (field_0x73c != 0) {
- mPathIdx = searchNearPassPoint();
+ if (mSceneType != SCENE_TYPE_LAKE_HYLIA) {
+ mPathCurrentPointNo = searchNearPassPoint();
}
field_0x758 = 1;
- if (mPathIdxOffset < 0) {
+ if (mPathStep < 0) {
angleY = angleY + 0x8000;
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&playerPos, angleY, 0);
- field_0x758 = 0xffffffff;
+ field_0x758 = -1;
}
mDoMtx_stack_c::transS(midnaPos);
mDoMtx_stack_c::YrotM(angleY);
mDoMtx_stack_c::transM(0.0f, 1000.0f, -1000.0f);
- mDoMtx_stack_c::multVecZero((Vec*)&current);
+ mDoMtx_stack_c::multVecZero(&current.pos);
- setBck(0xc, 2, 0.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e, 2, 0.0f, 1.0f);
mDoMtx_stack_c::transS(midnaPos);
mDoMtx_stack_c::YrotM(angleY);
@@ -1801,10 +1819,10 @@ void daKago_c::initPerchDemo() {
current.angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
current.angle.x = -cLib_targetAngleX(&current.pos, &field_0x6a4);
- field_0x6f8 = 20.0f;
+ mFlySpeed = 20.0f;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
@@ -1813,37 +1831,35 @@ void daKago_c::initPerchDemo() {
mDoMtx_stack_c::transS(playerPos);
mDoMtx_stack_c::YrotM(angleY);
mDoMtx_stack_c::transM(-100.0f, 100.0f, -300.0f);
- mDoMtx_stack_c::multVecZero(&field_0x68c);
+ mDoMtx_stack_c::multVecZero(&mDemoCamCenter);
mDoMtx_stack_c::transM(100.0f, -100.0f, 300.0f);
mDoMtx_stack_c::transM(100.0f, 30.0f, 300.0f);
- mDoMtx_stack_c::multVecZero(&field_0x698);
+ mDoMtx_stack_c::multVecZero(&mDemoCamEye);
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
field_0x728 = 10;
-
break;
}
case 3: {
- setBck(9, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_e, 2, 10.0f, 1.0f);
setMidnaTagPos();
speedF = speed.y = 0.0f;
field_0x728 = 30;
-
break;
}
case 4: {
- setBck(0xf, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
- if (field_0x73c == 0) {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA) {
field_0x6a4.set(-90000.0f, -16000.0f, 40000.0f);
} else {
- field_0x6a4 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
+ field_0x6a4 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
}
setMidnaRideOn();
@@ -1851,15 +1867,14 @@ void daKago_c::initPerchDemo() {
dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- field_0x744 = 1;
+ mMode = 1;
field_0x728 = 30;
-
break;
}
}
field_0x74c = 1;
- field_0x744 = 0;
+ mMode = 0;
}
bool daKago_c::executePerchDemo() {
@@ -1870,17 +1885,17 @@ bool daKago_c::executePerchDemo() {
daMidna_c* midna = daPy_getPlayerActorClass()->getMidnaActor();
s16 midnaYaw;
- if (midna != 0) {
+ if (midna != NULL) {
midnaPos = midna->current.pos;
midnaYaw = midna->shape_angle.y;
}
field_0x750++;
- switch (field_0x748) {
+ switch (mDemoMode) {
case 0: {
calcCircleCamera(1);
- if ((field_0x750 & 0x20) != 0) {
+ if (field_0x750 & 0x20) {
cLib_chaseF(&field_0x6fc, 3.0f, 0.3f);
} else {
cLib_chaseF(&field_0x6fc, -3.0f, 0.3f);
@@ -1900,7 +1915,7 @@ bool daKago_c::executePerchDemo() {
cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 0x20, 0x100, 0x40);
} else {
if (field_0x754 == 0) {
- if (field_0x6e7 == 1) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -1914,57 +1929,55 @@ bool daKago_c::executePerchDemo() {
}
if (field_0x728 == 0) {
- field_0x748 = 1;
+ mDemoMode = 1;
return true;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 0);
-
break;
}
case 1: {
calcCircleCamera(2);
cLib_addCalcAngleS(&shape_angle.x, -cLib_targetAngleX(&current.pos, &playerPos), 4, 0x400, 0x40);
- cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY((Vec*)&current, &playerPos), 4, 0x200, 0x40);
+ cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY(&current.pos, &playerPos), 4, 0x200, 0x40);
current.angle.y = shape_angle.y;
current.angle.x = shape_angle.x;
- cLib_chaseF(&field_0x6f8, 60.0f, 1.0f);
+ cLib_chaseF(&mFlySpeed, 60.0f, 1.0f);
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (current.pos.abs(playerPos) < 2000.0f) {
- field_0x748 = 2;
+ mDemoMode = 2;
return true;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 0);
-
break;
}
case 2: {
if (field_0x6e4 == 0) {
- if (field_0x73c == 0) {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4);
- } else if (field_0x73c == 2) {
+ } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 5);
}
}
- if (field_0x744 == 0) {
+ if (mMode == 0) {
current.angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
current.angle.x = -cLib_targetAngleX(&current.pos, &field_0x6a4);
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 != 0) {
shape_angle.x = current.angle.x;
if (field_0x728 == 1) {
- if (field_0x6e7 == 1) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -1976,9 +1989,9 @@ bool daKago_c::executePerchDemo() {
shape_angle.y = current.angle.y;
if (field_0x6a4.abs(current.pos) < 300.0f) {
- field_0x744 = 1;
+ mMode = 1;
- setBck(0x15, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_HOVERING_e, 2, 10.0f, 1.0f);
field_0x728 = 60;
@@ -1988,16 +2001,16 @@ bool daKago_c::executePerchDemo() {
mDoMtx_stack_c::multVecZero(&field_0x6a4);
}
} else {
- cLib_chaseF(&field_0x6f8, 0.0f, 1.0f);
+ cLib_chaseF(&mFlySpeed, 0.0f, 1.0f);
cLib_addCalcAngleS(&current.angle.y, cLib_targetAngleY(&current.pos, &field_0x6a4), 4, 0x400, 0x100);
cLib_addCalcAngleS(&current.angle.x, 0, 4, 0x100, 0x80);
cLib_addCalcAngleS(&shape_angle.x, 0, 4, 0x100, 0x80);
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
- if (!field_0x6f8 && field_0x728 == 0) {
- field_0x748 = 3;
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+ if (!mFlySpeed && field_0x728 == 0) {
+ mDemoMode = 3;
return true;
}
}
@@ -2006,23 +2019,22 @@ bool daKago_c::executePerchDemo() {
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(0.0f, 400.0f, -300.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 5.0f, 5.0f);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 5.0f, 5.0f);
mDoMtx_stack_c::transS(playerPos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(100.0f, 30.0f, 300.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f);
-
- dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f);
+ dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
break;
}
case 3: {
if (field_0x6e4 == 0) {
- if (field_0x73c == 0) {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4);
- } else if (field_0x73c == 2) {
+ } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 5);
}
}
@@ -2031,34 +2043,33 @@ bool daKago_c::executePerchDemo() {
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 20.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 20.0f, 10.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(300.0f, 50.0f, 500.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f);
- cLib_chaseF(&field_0x6d4, 70.0f, 1.0f);
+ cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f);
- dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
cLib_addCalcAngleS(&current.angle.x, 0, 4, 0x400, 0x100);
shape_angle.x = current.angle.x;
if (field_0x728 == 0) {
- field_0x748 = 4;
+ mDemoMode = 4;
return true;
}
-
break;
}
case 4: {
if (field_0x6e4 == 0) {
- if (field_0x73c == 0) {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 4);
- } else if (field_0x73c == 2) {
+ } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 6);
}
}
@@ -2066,22 +2077,20 @@ bool daKago_c::executePerchDemo() {
if (PerchDemoAwayForward()) {
return true;
}
-
break;
}
case 5: {
f32 maxStep = field_0x6cc * 50.0f;
f32 minStep = field_0x6cc * 10.0f;
cLib_chaseF(&field_0x6cc, 0.0f, 0.05f);
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, maxStep, minStep);
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, maxStep, minStep);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, maxStep, minStep);
- cLib_chaseF(&field_0x6d4, 70.0f, 1.0f);
- dCam_getBody()->Set(field_0x68c, field_0x698, field_0x6d4, 0);
-
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, maxStep, minStep);
+ cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f);
+ dCam_getBody()->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
break;
}
case 6:
@@ -2092,7 +2101,6 @@ bool daKago_c::executePerchDemo() {
}
bool daKago_c::PerchDemoAwayForward() {
-
cXyz playerPos = daPy_getPlayerActorClass()->current.pos;
s16 playerYaw = daPy_getPlayerActorClass()->shape_angle.y;
@@ -2108,58 +2116,58 @@ bool daKago_c::PerchDemoAwayForward() {
midnaYaw = midna->shape_angle.y;
}
- switch (field_0x744) {
+ switch (mMode) {
case 0:
case 1: {
f32 unusedFloat1 = 20.0f;
f32 unusedFloat2 = 10.0f;
- field_0x68c += speed;
- field_0x698 += speed;
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed;
mDoMtx_stack_c::transS(midnaPos);
mDoMtx_stack_c::YrotM(playerYaw);
- if (field_0x744 == 0) {
+ if (mMode == 0) {
mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f);
} else {
mDoMtx_stack_c::transM(0.0f, -200.0f, 0.0f);
}
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 5.0f);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 5.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
- if (field_0x744 == 0) {
+ if (mMode == 0) {
mDoMtx_stack_c::transM(300.0f, 50.0f, 500.0f);
} else {
mDoMtx_stack_c::transM(500.0f, 50.0f, 0.0f);
}
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 5.0f);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 5.0f);
- cLib_chaseF(&field_0x6d4, 70.0f, 1.0f);
+ cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f);
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
mGroundHeight = checkGroundHeight(current.pos, NULL);
mRoofHeight = checkRoofHeight(current.pos);
- cLib_chaseF(&field_0x6f8, 30.0f, 1.0f);
+ cLib_chaseF(&mFlySpeed, 30.0f, 1.0f);
cLib_addCalcAngleS(&current.angle.x, 0, 8, 0x200, 0x80);
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
- if (field_0x744 == 0) {
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+ if (mMode == 0) {
cLib_addCalcAngleS(&shape_angle.x, 0x2000, 8, 0x200, 0x40);
} else {
cLib_addCalcAngleS(&shape_angle.x, 0, 8, 0x200, 0x40);
}
- if (field_0x728 == 0x14 && field_0x744 == 0) {
- if (field_0x6e7 == 1) {
+ if (field_0x728 == 20 && mMode == 0) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -2167,90 +2175,89 @@ bool daKago_c::PerchDemoAwayForward() {
}
if (field_0x728 == 0) {
- if (field_0x744 == 0) {
- field_0x744 = 1;
- field_0x728 = 0x1e;
+ if (mMode == 0) {
+ mMode = 1;
+ field_0x728 = 30;
setPlayerRideOn();
dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- } else if (field_0x73c != 0) {
+ } else if (mSceneType != SCENE_TYPE_LAKE_HYLIA) {
field_0x728 = 60;
- field_0x744 = 2;
+ mMode = 2;
} else {
field_0x728 = 90;
- field_0x744 = 3;
+ mMode = 3;
field_0x6cc = 1.0f;
}
}
-
break;
}
case 2: {
if (field_0x728 > 10) {
- field_0x68c += speed;
- field_0x698 += speed;
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed;
- s16 targetYaw = cLib_targetAngleY(&field_0x698, &field_0x68c);
+ s16 targetYaw = cLib_targetAngleY(&mDemoCamEye, &mDemoCamCenter);
if (abs((s16)(midnaYaw - targetYaw)) < 0x2000) {
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 5.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 5.0f, 10.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f);
} else {
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 5.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 5.0f, 10.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(300.0f, 50.0f, -500.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 20.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 20.0f, 10.0f);
}
} else {
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 50.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 50.0f, 10.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(playerYaw);
mDoMtx_stack_c::transM(0.0f, 50.0f, -800.0f);
mDoMtx_stack_c::multVecZero(&unkXyz1);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 50.0f, 10.0f);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 50.0f, 10.0f);
}
- cLib_chaseF(&field_0x6d4, 70.0f, 1.0f);
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ cLib_chaseF(&mDemoCamFovy, 70.0f, 1.0f);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
mGroundHeight = checkGroundHeight(current.pos, NULL);
mRoofHeight = checkRoofHeight(current.pos);
- cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 2.0f);
+ cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 2.0f);
if (field_0x728 < 30) {
cLib_addCalcAngleS(&current.angle.x, 0, 8, 0x100, 0x40);
} else {
- cLib_addCalcAngleS(&current.angle.x, -8192, 8, 0x100, 0x40);
+ cLib_addCalcAngleS(&current.angle.x, -0x2000, 8, 0x100, 0x40);
}
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 == 0) {
- if (field_0x73c == 2) {
+ if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
if (setSceneChange(3)) {
- field_0x748 = 5;
+ mDemoMode = 5;
field_0x6cc = 1.0f;
}
} else {
field_0x6dc = 0;
- setActionMode(0, 0);
+ setActionMode(ACTION_FLY_e, 0);
- camera->Reset(field_0x68c, field_0x698);
+ camera->Reset(mDemoCamCenter, mDemoCamEye);
camera->Start();
camera->SetTrimSize(0);
@@ -2259,37 +2266,35 @@ bool daKago_c::PerchDemoAwayForward() {
Z2GetAudioMgr()->setDemoName(NULL);
}
}
-
break;
}
case 3: {
cLib_chaseF(&field_0x6cc, 0.0f, 0.1f);
- field_0x68c += speed;
- field_0x698 += speed * field_0x6cc;
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed * field_0x6cc;
unkXyz1.set(playerPos.x, playerPos.y + 100.0f, playerPos.z);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f);
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
- cLib_chaseF(&field_0x6f8, 30.0f, 1.0f);
+ cLib_chaseF(&mFlySpeed, 30.0f, 1.0f);
- cLib_addCalcAngleS(&current.angle.x, -8192, 8, 0x100, 0x40);
+ cLib_addCalcAngleS(&current.angle.x, -0x2000, 8, 0x100, 0x40);
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 == 0) {
- setActionMode(7, 0);
- field_0x748 = 8;
+ setActionMode(ACTION_PERCH2_e, 0);
+ mDemoMode = 8;
return true;
}
-
break;
}
}
@@ -2310,14 +2315,14 @@ void daKago_c::executePerch() {
void daKago_c::executeEvent2() {
dCamera_c* camera = dCam_getBody();
if (!eventInfo.checkCommandDemoAccrpt()) {
- fopAcM_orderPotentialEvent(this,2,0xffff,3);
+ fopAcM_orderPotentialEvent(this, 2, 0xffff, 3);
eventInfo.onCondition(2);
} else {
camera->Stop();
camera->SetTrimSize(3);
- field_0x748 = 0;
+ mDemoMode = 0;
field_0x74c = 0;
- setActionMode(7,0);
+ setActionMode(ACTION_PERCH2_e, 0);
field_0x6dc = 1;
field_0x6de = 0xff;
}
@@ -2327,47 +2332,51 @@ void daKago_c::initFirstDemo() {
dCamera_c* camera = dCam_getBody();
cXyz acStack_28;
cXyz cStack_34;
+
daPy_py_c* player = daPy_getPlayerActorClass();
s16 playerYaw = player->shape_angle.y;
cXyz playerPos = player->current.pos;
+
daMidna_c* midna = daPy_py_c::getMidnaActor();
cXyz midnaPos;
- if (midna != 0) {
+ if (midna != NULL) {
midnaPos = midna->current.pos;
}
s16 targetYaw;
- switch (field_0x748) {
+ switch (mDemoMode) {
case 0: {
- Z2GetAudioMgr()->setDemoName(field_0x760);
- field_0x718 = -0x800;
+ Z2GetAudioMgr()->setDemoName(mDemoName);
+ mHeadRotZ = -0x800;
player->changeOriginalDemo();
- player->changeDemoMode(0x17, 0, 0, 0);
+ player->changeDemoMode(daPy_demo_c::DEMO_UNK_23_e, 0, 0, 0);
+
playerPos.set(-103292.0f, -23437.0f, 39925.0f);
field_0x6a4.set(-60000.0f, -11000.0f, 28000.0f);
shape_angle.y = current.angle.y = cLib_targetAngleY(&playerPos, &field_0x6a4);
cStack_34.set(-300.0f, 400.0f, -1000.0f);
cLib_offsetPos(&current.pos, &playerPos, shape_angle.y, &cStack_34);
targetYaw = cLib_targetAngleY(&playerPos, &current.pos);
+
player->setPlayerPosAndAngle(&playerPos, targetYaw, 0);
if (midna != NULL) {
midna->current.pos = playerPos;
midnaPos = midna->current.pos;
}
+
field_0x680.set(0.0f, 0.0f, 0.0f);
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
field_0x6bc = 0x3000;
field_0x6cc = 500.0f;
field_0x6d0 = 400.0f;
cStack_34.set(0.0f, field_0x6d0, field_0x6cc);
- cLib_offsetPos(&field_0x698, &current.pos, shape_angle.y + field_0x6bc,
- &cStack_34);
- field_0x6d4 = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
- field_0x728 = 0xa0;
- setBck(15, 2, 10.0f, 1.0f);
- field_0x6e4 = 0;
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x6bc, &cStack_34);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
+ field_0x728 = 160;
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
+ field_0x6e4 = 0;
break;
}
case 1: {
@@ -2375,37 +2384,33 @@ void daKago_c::initFirstDemo() {
midna->current.pos = playerPos;
midnaPos = midna->current.pos;
}
- field_0x68c = current.pos;
+
+ mDemoCamCenter = current.pos;
field_0x6bc = 0x800;
field_0x6cc = 700.0f;
cStack_34.set(0.0f, 0.0f, field_0x6cc);
- cLib_offsetPos(&field_0x698, &current.pos, shape_angle.y + field_0x6bc,
- &cStack_34);
- field_0x6d4 = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
- field_0x728 = 0x50;
-
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x6bc, &cStack_34);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
+ field_0x728 = 80;
break;
}
case 2: {
field_0x728 = 60;
mMsgFlow.init(this, 0x7d3, 0, NULL);
-
break;
}
case 3: {
- field_0x718 = cLib_targetAngleX(&current.pos, &playerPos) / 4;
+ mHeadRotZ = cLib_targetAngleX(&current.pos, &playerPos) / 4;
targetYaw = cLib_targetAngleY(&current.pos, &playerPos) - shape_angle.y;
- field_0x71a = targetYaw / 4;
+ mHeadRotY = targetYaw / 4;
cStack_34.set(50.0f, 150.0f, -200.0f);
- cLib_offsetPos(&field_0x698, &midnaPos, shape_angle.y, &cStack_34);
+ cLib_offsetPos(&mDemoCamEye, &midnaPos, shape_angle.y, &cStack_34);
cStack_34.set(50.0f, 0.0f, 50.0f);
- cLib_offsetPos(&field_0x68c, &midnaPos, shape_angle.y, &cStack_34);
- field_0x6d4 = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
- targetYaw = cLib_targetAngleY(&playerPos, (Vec*)&current);
- player->setPlayerPosAndAngle(&playerPos, targetYaw, 0);
-
+ cLib_offsetPos(&mDemoCamCenter, &midnaPos, shape_angle.y, &cStack_34);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
+ player->setPlayerPosAndAngle(&playerPos, cLib_targetAngleY(&playerPos, &current.pos), 0);
break;
}
case 4: {
@@ -2416,8 +2421,7 @@ void daKago_c::initFirstDemo() {
mDoMtx_stack_c::YrotM(field_0x6bc);
mDoMtx_stack_c::transM(0.0f, 300.0f, field_0x6cc);
mDoMtx_stack_c::multVecZero(&field_0x6a4);
- field_0x6f8 = 0.0f;
-
+ mFlySpeed = 0.0f;
break;
}
case 5: {
@@ -2426,68 +2430,66 @@ void daKago_c::initFirstDemo() {
mDoMtx_stack_c::YrotM(field_0x6bc);
mDoMtx_stack_c::transM(0.0f, 300.0f, 200.0f);
mDoMtx_stack_c::multVecZero(&field_0x6a4);
-
break;
}
case 6: {
player->cancelOriginalDemo();
setPlayerRideOn();
dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
- field_0x728 = 0x96;
+ field_0x728 = 150;
field_0x6cc = 1.0f;
-
break;
}
case 7: {
field_0x6e8 = 0;
}
case 8: {
- setBck(15, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
+
if (field_0x6e8 != 0) {
- mpMorf->setFrame(0.0f);
+ mAnm_p->setFrame(0.0f);
field_0x6a4.set(-67000.0f, -13000.0f, 28000.0f);
current.pos.set(-76600.0f, -15500.0f, 37340.0f);
shape_angle.y = current.angle.y = -0x8000;
shape_angle.x = current.angle.x = -0x1000;
- field_0x6f8 = 50.0f;
- field_0x698.set(-75232.0f, -14685.0f, 34417.0f);
- field_0x68c.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
- field_0x6d4 = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ mFlySpeed = 50.0f;
+ mDemoCamEye.set(-75232.0f, -14685.0f, 34417.0f);
+ mDemoCamCenter.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
field_0x728 = 200;
} else {
field_0x6a4.set(-60000.0f, -11000.0f, 28000.0f);
current.pos.set(-90000.0f, -16000.0f, 40000.0f);
shape_angle.y = current.angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
shape_angle.x = current.angle.x = -0x2000;
- field_0x6f8 = 50.0f;
+ mFlySpeed = 50.0f;
cStack_34.set(-500.0f, 1000.0f, 5000.0f);
- cLib_offsetPos(&field_0x698, &current.pos, shape_angle.y, &cStack_34);
- field_0x68c.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
- field_0x6d4 = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y, &cStack_34);
+ mDemoCamCenter.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
field_0x728 = 200;
}
-
break;
}
}
field_0x74c = 1;
- field_0x744 = 0;
+ mMode = 0;
}
bool daKago_c::executeFirstDemo() {
dCamera_c* camera = dCam_getBody();
cXyz unkXyz1;
- cXyz unkXyz2;
+ cXyz offset;
cXyz midnaPos;
daPy_py_c* player = daPy_getPlayerActorClass();
daMidna_c* midna = daPy_py_c::getMidnaActor();
- if (midna != 0) {
+ if (midna != NULL) {
midnaPos = midna->current.pos;
}
@@ -2495,8 +2497,8 @@ bool daKago_c::executeFirstDemo() {
cXyz playerPos = player->current.pos;
int unkFlag1;
- int switchVal = field_0x748;
- switch (switchVal) {
+ int mode = mDemoMode; // fakematch
+ switch (mode) {
case 0:
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2);
@@ -2504,21 +2506,21 @@ bool daKago_c::executeFirstDemo() {
cLib_chaseF(&field_0x6cc, 1250.0f, 6.7f);
cLib_chaseF(&field_0x6d0, -400.0f, 7.1f);
- unkXyz2.set(0.0f, field_0x6d0, field_0x6cc);
- cLib_offsetPos(&field_0x698, &current.pos, shape_angle.y + field_0x6bc, &unkXyz2);
+ offset.set(0.0f, field_0x6d0, field_0x6cc);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x6bc, &offset);
unkXyz1.set(0.0f, -200.0f, 400.0f);
cLib_chasePos(&field_0x680, unkXyz1, 4.0f);
- cLib_offsetPos(&field_0x68c, &current.pos, shape_angle.y, &field_0x680);
+ cLib_offsetPos(&mDemoCamCenter, &current.pos, shape_angle.y, &field_0x680);
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
if (field_0x728 < 10) {
setMidnaTagPos();
if (field_0x728 == 0) {
- field_0x748 = 1;
+ mDemoMode = 1;
return 1;
}
}
@@ -2529,35 +2531,35 @@ bool daKago_c::executeFirstDemo() {
cLib_chaseAngleS(&field_0x6bc, 0x1000, 0x20);
- unkXyz2.set(0.0f, 0.0f, field_0x6cc);
- cLib_offsetPos(&field_0x698, &current.pos, shape_angle.y + field_0x6bc, &unkXyz2);
+ offset.set(0.0f, 0.0f, field_0x6cc);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x6bc, &offset);
- if (field_0x728 < 0x46) {
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 10.0f, 10.0f);
+ if (field_0x728 < 70) {
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 10.0f, 10.0f);
} else {
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
}
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
setMidnaTagPos();
if (field_0x728 == 30) {
- setBck(0x14, 0x02, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_HANGED_WAIT_e, 2, 10.0f, 1.0f);
}
if (field_0x728 > 30) {
cLib_chaseF(&field_0x6cc, 350.0f, 4.0f);
- cLib_addCalcAngleS(&field_0x718, -2048, 8, 0x100, 0x10);
+ cLib_addCalcAngleS(&mHeadRotZ, -0x800, 8, 0x100, 0x10);
} else {
cLib_chaseF(&field_0x6cc, 350.0f, 6.0f);
- cLib_addCalcAngleS(&field_0x718, 0x400, 8, 0x200, 0x10);
+ cLib_addCalcAngleS(&mHeadRotZ, 0x400, 8, 0x200, 0x10);
if (field_0x728 == 30) {
setMidnaRideOn();
}
- if (field_0x728 == 0x14) {
- if (field_0x6e7 == 1) {
+ if (field_0x728 == 20) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -2565,7 +2567,7 @@ bool daKago_c::executeFirstDemo() {
}
if (field_0x728 == 0) {
- field_0x748 = 2;
+ mDemoMode = 2;
return true;
}
@@ -2575,25 +2577,24 @@ bool daKago_c::executeFirstDemo() {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 3);
setMidnaTagPos();
- cLib_addCalcPos(&field_0x68c, midnaPos, 0.5f, 10.0f, 10.0f);
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ cLib_addCalcPos(&mDemoCamCenter, midnaPos, 0.5f, 10.0f, 10.0f);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
mMsgFlow.doFlow(this, NULL, 0);
if (field_0x728 != 0) {
if (field_0x728 == 1) {
- setBck(0xf, 0x02, 20.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 20.0f, 1.0f);
}
if (mMsgFlow.getNowMsgNo() == 0x1774) {
- setBck(0xf, 0x02, 20.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 20.0f, 1.0f);
field_0x728 = 0;
}
}
if (mMsgFlow.getNowMsgNo() == 0x1775) {
- field_0x748 = 3;
-
+ mDemoMode = 3;
return true;
}
@@ -2603,18 +2604,17 @@ bool daKago_c::executeFirstDemo() {
setMidnaTagPos();
cLib_addCalcAngleS(
- &field_0x718, cLib_targetAngleX(&current.pos, &playerPos) / 4,
+ &mHeadRotZ, cLib_targetAngleX(&current.pos, &playerPos) / 4,
8, 0x100, 0x10);
// adding braces to the switch case for this decl regresses debug match
s16 targetYaw = cLib_targetAngleY(&current.pos, &playerPos) - shape_angle.y;
cLib_addCalcAngleS(
- &field_0x71a, targetYaw / 4,
+ &mHeadRotY, targetYaw / 4,
8, 0x100, 0x10);
if (mMsgFlow.doFlow(this, NULL, 0)) {
- field_0x748 = 4;
-
+ mDemoMode = 4;
return true;
}
@@ -2623,8 +2623,8 @@ bool daKago_c::executeFirstDemo() {
case 4:
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2);
- cLib_addCalcAngleS(&field_0x718, 0, 8, 0x100, 0x10);
- cLib_addCalcAngleS(&field_0x71a, 0, 8, 0x100, 0x10);
+ cLib_addCalcAngleS(&mHeadRotZ, 0, 8, 0x100, 0x10);
+ cLib_addCalcAngleS(&mHeadRotY, 0, 8, 0x100, 0x10);
cLib_chaseF(&field_0x6cc, -300.0f, 10.0f);
@@ -2638,27 +2638,27 @@ bool daKago_c::executeFirstDemo() {
shape_angle.y = current.angle.y;
shape_angle.x = current.angle.x;
- cLib_chaseF(&field_0x6f8, 20.0f, 1.0f);
+ cLib_chaseF(&mFlySpeed, 20.0f, 1.0f);
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
- field_0x68c += speed;
- field_0x698 += speed;
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed;
- unkXyz2.set(0.0f, 200.0f, -500.0f);
- cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f);
- unkXyz2.set(0.0f, 0.0f, 0.0f);
+ offset.set(0.0f, 200.0f, -500.0f);
+ cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(0.0f, 0.0f, 0.0f);
- cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f);
+ cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f);
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
if (field_0x6a4.abs(current.pos) < 100.0f) {
- field_0x748 = 5;
+ mDemoMode = 5;
return true;
}
@@ -2671,87 +2671,84 @@ bool daKago_c::executeFirstDemo() {
shape_angle.y = current.angle.y;
shape_angle.x = current.angle.x;
- cLib_chaseF(&field_0x6f8, 20.0f, 1.0f);
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
+ cLib_chaseF(&mFlySpeed, 20.0f, 1.0f);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
- field_0x68c += speed;
- field_0x698 += speed;
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed;
- unkXyz2.set(400.0f, 50.0f, -300.0f);
- cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(400.0f, 50.0f, -300.0f);
+ cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f);
- unkXyz2.set(0.0f, 50.0f, 0.0f);
- cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(0.0f, 50.0f, 0.0f);
+ cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f);
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
if (field_0x6a4.abs(current.pos) < 100.0f) {
- field_0x748 = 6;
-
+ mDemoMode = 6;
return true;
}
break;
case 6:
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 2);
- cLib_addCalcAngleS(&current.angle.x, -8192, 8, 0x100, 0x40);
+ cLib_addCalcAngleS(&current.angle.x, -0x2000, 8, 0x100, 0x40);
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 > 120) {
- field_0x68c += speed;
- field_0x698 += speed;
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed;
- unkXyz2.set(400.0f, 100.0f, -300.0f);
- cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x698, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(400.0f, 100.0f, -300.0f);
+ cLib_offsetPos(&unkXyz1, &midnaPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamEye, unkXyz1, 0.5f, 10.0f, 3.0f);
- unkXyz2.set(0.0f, 100.0f, 0.0f);
- cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(0.0f, 100.0f, 0.0f);
+ cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f);
} else {
cLib_chaseF(&field_0x6cc, 0.0f, 0.1f);
- field_0x68c += speed;
- field_0x698 += speed * field_0x6cc;
+ mDemoCamCenter += speed;
+ mDemoCamEye += speed * field_0x6cc;
- unkXyz2.set(0.0f, 100.0f, 0.0f);
- cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &unkXyz2);
- cLib_addCalcPos(&field_0x68c, unkXyz1, 0.5f, 10.0f, 3.0f);
+ offset.set(0.0f, 100.0f, 0.0f);
+ cLib_offsetPos(&unkXyz1, &playerPos, shape_angle.y, &offset);
+ cLib_addCalcPos(&mDemoCamCenter, unkXyz1, 0.5f, 10.0f, 3.0f);
}
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
if (field_0x728 == 0) {
- field_0x748 = 7;
-
+ mDemoMode = 7;
return true;
}
-
break;
case 7:
case 8:
unkFlag1 = 0;
- if (switchVal == 7 || field_0x6e8 == 0) {
+ if (mode == 7 || field_0x6e8 == 0) {
if (field_0x728 == 110) {
unkFlag1 = 1;
}
- } else if (switchVal == 8 && field_0x728 == 140) {
+ } else if (mode == 8 && field_0x728 == 140) {
unkFlag1 = 1;
}
if (unkFlag1 != 0) {
- if (field_0x6e7 == 1) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -2761,8 +2758,8 @@ bool daKago_c::executeFirstDemo() {
if (field_0x728 != 0) {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 1);
} else {
- if (field_0x73c == 0 && setSceneChange(0)) {
- field_0x748 = 9;
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA && setSceneChange(0)) {
+ mDemoMode = 9;
}
}
case 9:
@@ -2771,16 +2768,15 @@ bool daKago_c::executeFirstDemo() {
shape_angle.y = current.angle.y;
shape_angle.x = current.angle.x;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
-
- unkXyz2.set(0.0f, 100.0f, 0.0f);
- cLib_offsetPos(&field_0x68c, &current.pos, shape_angle.y, &unkXyz2);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
- field_0x6d4 = 70.0f;
+ offset.set(0.0f, 100.0f, 0.0f);
+ cLib_offsetPos(&mDemoCamCenter, &current.pos, shape_angle.y, &offset);
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ mDemoCamFovy = 70.0f;
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
break;
}
@@ -2802,13 +2798,13 @@ void daKago_c::executeLandingLakeHairia() {
cXyz unkXyz1;
cXyz unkXyz2(-700.0f, 0.0f, -300.0f);
- switch (field_0x744) {
+ switch (mMode) {
case 0:
current.pos.set(-74500.0f, -12775.0f, 31400.0f);
if (!eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(this, 2, 0xffff, 3);
- eventInfo.onCondition(2);
+ eventInfo.onCondition(dEvtCnd_CANDEMO_e);
return;
}
@@ -2816,38 +2812,37 @@ void daKago_c::executeLandingLakeHairia() {
camera->SetTrimSize(3);
current.pos.set(-74500.0f, -12775.0f, 31400.0f);
- field_0x698.set(-79460.0f, -13000.0f, 34200.0f);
- field_0x68c = current.pos;
+ mDemoCamEye.set(-79460.0f, -13000.0f, 34200.0f);
+ mDemoCamCenter = current.pos;
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
- current.angle.x = 0;
- shape_angle.x = 0;
- shape_angle.y = current.angle.y = cLib_targetAngleY(&current.pos, &field_0x698);
+ shape_angle.x = current.angle.x = 0;
+ shape_angle.y = current.angle.y = cLib_targetAngleY(&current.pos, &mDemoCamEye);
field_0x716 = shape_angle.y + 0x2000;
field_0x6a4.set(-77615.0f, -18500.0f, 41400.0f);
field_0x6a4 += unkXyz2;
- field_0x744 = 1;
+ mMode = 1;
field_0x712 = 0;
field_0x728 = 150;
- field_0x6f8 = 50.0f;
+ mFlySpeed = 50.0f;
break;
case 1:
- Z2GetAudioMgr()->setDemoName(field_0x760);
- field_0x744 = 2;
+ Z2GetAudioMgr()->setDemoName(mDemoName);
+ mMode = 2;
case 2:
- if (field_0x728 == 0x8c) {
- if (field_0x6e7 == 0x01) {
+ if (field_0x728 == 140) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
}
}
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
cLib_chaseAngleS(&field_0x712, 0x80, 4);
@@ -2856,17 +2851,16 @@ void daKago_c::executeLandingLakeHairia() {
cLib_chaseAngleS(&shape_angle.x, 0x1000, 0x20);
current.angle.x = shape_angle.x;
- field_0x6f8 = 50.0f;
+ mFlySpeed = 50.0f;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 == 0) {
- field_0x744 = 3;
+ mMode = 3;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7);
-
break;
case 3:
current.pos.set(-76600.0f, -15500.0f, 37340.0f);
@@ -2875,37 +2869,36 @@ void daKago_c::executeLandingLakeHairia() {
field_0x6a4.set(-77615.0f, -18500.0f, 41400.0f);
field_0x6a4 += unkXyz2;
- field_0x698.set(-76900.0f, -18550.0f, 41660.0f);
- field_0x698 += unkXyz2;
+ mDemoCamEye.set(-76900.0f, -18550.0f, 41660.0f);
+ mDemoCamEye += unkXyz2;
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
- field_0x6d4 = 70.0f;
+ mDemoCamFovy = 70.0f;
shape_angle.x = current.angle.x = -cLib_targetAngleX(&current.pos, &field_0x6a4);
shape_angle.y = current.angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
- field_0x744 = 4;
+ mMode = 4;
field_0x728 = 60;
- setBck(13, 2, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e, 2, 10.0f, 1.0f);
case 4:
- field_0x68c = current.pos;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ mDemoCamCenter = current.pos;
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 == 0) {
- field_0x744 = 5;
- field_0x728 = 0x28;
+ mMode = 5;
+ field_0x728 = 40;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7);
-
break;
case 5:
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
cLib_chaseAngleS(&shape_angle.x, 0, 0x80);
current.angle.x = shape_angle.x;
@@ -2913,10 +2906,10 @@ void daKago_c::executeLandingLakeHairia() {
if (field_0x728 == 0) {
setRideOff();
- field_0x744 = 6;
+ mMode = 6;
field_0x728 = 100;
- setBck(0xf, 0x02, 10.0f, 1.0f);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 2, 10.0f, 1.0f);
} else {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 7);
}
@@ -2927,28 +2920,29 @@ void daKago_c::executeLandingLakeHairia() {
case 6:
unkXyz1.set(-77875.0f, -18287.0f, 42000.0f);
unkXyz1 += unkXyz2;
- cLib_chasePos(&field_0x68c, unkXyz1, field_0x6cc);
- if (field_0x68c.abs(unkXyz1) < 500.0f) {
+ cLib_chasePos(&mDemoCamCenter, unkXyz1, field_0x6cc);
+ if (mDemoCamCenter.abs(unkXyz1) < 500.0f) {
cLib_chaseF(&field_0x6cc, 0.0f, 3.0f);
}
unkXyz1.set(-77275.0f, -18500.0f, 41090.0f);
unkXyz1 += unkXyz2;
- cLib_chasePos(&field_0x698, unkXyz1, field_0x6d0);
- if (field_0x698.abs(unkXyz1) < 200.0f) {
+ cLib_chasePos(&mDemoCamEye, unkXyz1, field_0x6d0);
+
+ if (mDemoCamEye.abs(unkXyz1) < 200.0f) {
cLib_chaseF(&field_0x6d0, 0.0f, 1.0f);
} else {
cLib_chaseF(&field_0x6d0, 20.0f, 1.0f);
}
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
- cLib_chaseAngleS(&shape_angle.x, -8192, 0x100);
+ cLib_chaseAngleS(&shape_angle.x, -0x2000, 0x100);
current.angle.x = shape_angle.x;
if (field_0x728 == 90) {
- if (field_0x6e7 == 0x01) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -2956,7 +2950,7 @@ void daKago_c::executeLandingLakeHairia() {
}
if (field_0x728 == 0) {
- setActionMode(4, 0);
+ setActionMode(ACTION_WAIT_e, 0);
camera->Reset();
camera->Start();
@@ -2965,91 +2959,87 @@ void daKago_c::executeLandingLakeHairia() {
dComIfGp_event_reset();
Z2GetAudioMgr()->setDemoName(NULL);
-
return;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 8);
}
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
}
void daKago_c::executeLandingBoartHouse() {
dCamera_c* camera = dCam_getBody();
cXyz unkXyz1;
- switch (field_0x744) {
+ switch (mMode) {
case 0: {
current.pos.set(5750.0f, 1600.0f, 6100.0f);
if (!eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(this, 2, 0xffff, 3);
eventInfo.onCondition(2);
-
return;
}
camera->Stop();
camera->SetTrimSize(3);
- field_0x744 = 10;
-
+ mMode = 10;
break;
}
case 10: {
- Z2GetAudioMgr()->setDemoName(field_0x760);
+ Z2GetAudioMgr()->setDemoName(mDemoName);
current.pos.set(5750.0f, 1600.0f, 6100.0f);
- setBck(0xf, 0x02, 10.0f, 1.0f);
- field_0x698.set(2900.0f, 300.0f, 500.0f);
- field_0x68c = current.pos;
- field_0x6d4 = 70.0f;
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e, 0x02, 10.0f, 1.0f);
+ mDemoCamEye.set(2900.0f, 300.0f, 500.0f);
+ mDemoCamCenter = current.pos;
+ mDemoCamFovy = 70.0f;
field_0x6a4.set(3630.0f, 300.0f, 600.0f);
shape_angle.x = current.angle.x = -cLib_targetAngleX(&current.pos, &field_0x6a4);
shape_angle.y = current.angle.y = cLib_targetAngleY(&current.pos, &field_0x6a4);
- field_0x744 = 1;
+ mMode = 1;
field_0x712 = 0;
- field_0x728 = 0x50;
- field_0x6f8 = 50.0f;
+ field_0x728 = 80;
+ mFlySpeed = 50.0f;
}
case 1: {
- if (field_0x728 == 0x46) {
- if (field_0x6e7 == 0x01) {
+ if (field_0x728 == 70) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
}
}
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
if (field_0x728 == 0) {
- field_0x744 = 2;
- field_0x728 = 0x28;
+ mMode = 2;
+ field_0x728 = 40;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 9);
-
break;
}
case 2: {
- field_0x68c = current.pos;
+ mDemoCamCenter = current.pos;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
cLib_chaseAngleS(&shape_angle.x, 0, 0x80);
current.angle.x = shape_angle.x;
if (field_0x728 == 0) {
setRideOff();
- field_0x744 = 3;
+ mMode = 3;
field_0x728 = 90;
} else {
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 9);
@@ -3057,32 +3047,31 @@ void daKago_c::executeLandingBoartHouse() {
field_0x6cc = 40.0f;
field_0x6d0 = 15.0f;
-
break;
}
case 3: {
unkXyz1.set(3440.0f, 500.0f, 400.0f);
- cLib_chasePos(&field_0x68c, unkXyz1, field_0x6cc);
- if (field_0x68c.abs(unkXyz1) < 500.0f) {
+ cLib_chasePos(&mDemoCamCenter, unkXyz1, field_0x6cc);
+ if (mDemoCamCenter.abs(unkXyz1) < 500.0f) {
cLib_chaseF(&field_0x6cc, 0.0f, 3.0f);
}
unkXyz1.set(3584.0f, 270.0f, 1007.0f);
- cLib_chasePos(&field_0x698, unkXyz1, field_0x6d0);
- if (field_0x698.abs(unkXyz1) < 200.0f) {
+ cLib_chasePos(&mDemoCamEye, unkXyz1, field_0x6d0);
+ if (mDemoCamEye.abs(unkXyz1) < 200.0f) {
cLib_chaseF(&field_0x6d0, 0.0f, 1.0f);
} else {
cLib_chaseF(&field_0x6d0, 15.0f, 1.0f);
}
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
- cLib_chaseAngleS(&shape_angle.x, -8192, 0x100);
+ cLib_chaseAngleS(&shape_angle.x, -0x2000, 0x100);
current.angle.x = shape_angle.x;
- if (field_0x728 == 0x50) {
- if (field_0x6e7 == 0x01) {
+ if (field_0x728 == 80) {
+ if (mType == TYPE_NORMAL) {
mSound.startCreatureVoice(Z2SE_EN_KC_V_NAKU, -1);
} else {
mSound.startCreatureVoice(Z2SE_EN_YC_V_NAKU, -1);
@@ -3090,10 +3079,10 @@ void daKago_c::executeLandingBoartHouse() {
}
if (field_0x728 == 0) {
- setActionMode(4, 0);
+ setActionMode(ACTION_WAIT_e, 0);
- if (field_0x6e7 == 0x01) {
- field_0x728 = 0x78;
+ if (mType == TYPE_NORMAL) {
+ field_0x728 = 120;
}
camera->Reset();
@@ -3103,44 +3092,42 @@ void daKago_c::executeLandingBoartHouse() {
dComIfGp_event_reset();
Z2GetAudioMgr()->setDemoName(NULL);
-
return;
}
dComIfGp_getEvent()->setSkipProc(this, DemoSkipCallBack, 10);
-
break;
}
}
- camera->Set(field_0x68c, field_0x698, field_0x6d4, 0);
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamFovy, 0);
}
void daKago_c::executeLanding() {
- if (this->field_0x73c == 0) {
+ if (mSceneType == SCENE_TYPE_LAKE_HYLIA) {
executeLandingLakeHairia();
- } else if (this->field_0x73c == 2) {
+ } else if (mSceneType == SCENE_TYPE_BOARD_HOUSE) {
executeLandingBoartHouse();
} else {
setRideOff();
- setActionMode(4, 0);
+ setActionMode(ACTION_WAIT_e, 0);
}
}
void daKago_c::moveDemoFly() {
- if (field_0x744 == 0) {
- cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 2.0f);
+ if (mMode == 0) {
+ cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 2.0f);
if (!eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(this, 2, 0xffff, 3);
- eventInfo.onCondition(2);
+ eventInfo.onCondition(dEvtCnd_CANDEMO_e);
} else {
setPlayerRideOn();
mDashCooldownTime = (int)l_HIO.mDashCooldownTime;
mDashTime = (int)l_HIO.mDashTime;
- field_0x744 = 1;
+ mMode = 1;
setDashBlurEffect(0);
- setBck(11, 0, 5.0f, l_HIO.mDashTimeMultiplier);
+ setBck(dRes_ID_E_YC_BCK_YC_FLY_DASH_WL_e, 0, 5.0f, l_HIO.mDashTimeMultiplier);
dComIfGp_getVibration().StartShock(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
mpLockActor = NULL;
@@ -3148,9 +3135,8 @@ void daKago_c::moveDemoFly() {
mGroundHeight = checkGroundHeight(current.pos, NULL);
mRoofHeight = checkRoofHeight(current.pos);
- if (mCurrentAction == 9) {
+ if (mAction == ACTION_DEMO_FLY_e) {
dComIfGs_onSaveSwitch(9);
-
mMsgFlow.init(this, 0xbbf, 0, NULL);
}
}
@@ -3159,75 +3145,72 @@ void daKago_c::moveDemoFly() {
mIsFlying = true;
- if (mCurrentAction == 9) {
+ if (mAction == ACTION_DEMO_FLY_e) {
mMsgFlow.doFlow(this, NULL, 0);
}
- if (field_0x744 < 6) {
- setDashEffect();
- field_0x6dd = 0x01;
-
- dComIfGp_setAStatusForce(0x27, 0);
+ if (mMode < 6) {
+ setDashEffect();
+ mIsAttack = TRUE;
+ dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0);
}
- switch (field_0x744) {
+ switch (mMode) {
case 1: {
- Z2GetAudioMgr()->setDemoName(field_0x760);
-
- field_0x744 = 2;
+ Z2GetAudioMgr()->setDemoName(mDemoName);
+ mMode = 2;
}
case 2: {
- cLib_chaseF(&field_0x6f8, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
- if (mpMorf->checkFrame(9.0f)) {
- if (field_0x6e7 == 0) {
+ cLib_chaseF(&mFlySpeed, 30.0f, l_HIO.mDashTimeMultiplier * 3.0f);
+ if (mAnm_p->checkFrame(9.0f)) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSound(Z2SE_EN_YC_DASH, 0, -1);
} else {
mSound.startCreatureSound(Z2SE_EN_KC_DASH, 0, -1);
}
}
- if (mpMorf->checkFrame(12.0f)) {
- field_0x744 = 3;
- field_0x728 = 0x14;
+
+ if (mAnm_p->checkFrame(12.0f)) {
+ mMode = 3;
+ field_0x728 = 20;
dComIfGp_getVibration().StartShock(2, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartQuake(1, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
field_0x6e6 = 0;
}
-
break;
}
case 3:
case 4: {
- cLib_chaseF(&field_0x6f8, 100.0f, 5.0f);
+ cLib_chaseF(&mFlySpeed, 100.0f, 5.0f);
if (field_0x728 == 0) {
- if (field_0x744 == 3) {
- field_0x744 = 4;
- field_0x728 = 0xf;
+ if (mMode == 3) {
+ mMode = 4;
+ field_0x728 = 15;
} else {
- field_0x744 = 5;
+ mMode = 5;
dComIfGp_getVibration().StopQuake(0x1f);
}
}
-
break;
}
case 5: {
- cLib_chaseF(&field_0x6f8, l_HIO.mFlightSpeed, 5.0f);
- if (field_0x6f8 <= l_HIO.mFlightSpeed) {
+ cLib_chaseF(&mFlySpeed, l_HIO.mFlightSpeed, 5.0f);
+ if (mFlySpeed <= l_HIO.mFlightSpeed) {
field_0x6c8 = 0;
field_0x6c4 = 8000.0f;
field_0x710 = field_0x712 = 0;
-#if VERSION == VERSION_WII_USA_R0
+ #if VERSION == VERSION_WII_USA_R0
field_0x72c = 30;
-#else
+ #else
if (dComIfGp_getStartStagePoint() == 0) {
field_0x72c = 30;
} else {
field_0x72c = 60 + nREG_S(1);
}
-#endif
+ #endif
shape_angle.y = current.angle.y;
@@ -3237,9 +3220,8 @@ void daKago_c::moveDemoFly() {
setFlyAnime();
field_0x710 = field_0x712 = 0;
- field_0x744 = 6;
+ mMode = 6;
}
-
break;
}
case 6: {
@@ -3249,32 +3231,30 @@ void daKago_c::moveDemoFly() {
f32 fVar11 = 0.0f;
if (cM_ssin(current.angle.x) > 0.0f) {
- fVar11 =
- l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x);
+ fVar11 = l_HIO.mFlightSpeed + l_HIO.mDescentRateIncrement * cM_ssin(current.angle.x);
} else {
fVar11 = l_HIO.mFlightSpeed + l_HIO.mAscentRateDecel * cM_ssin(current.angle.x);
}
- if (std::abs(field_0x6f8 - fVar11) > 10.0f) {
- cLib_chaseF(&field_0x6f8, fVar11, 2.0f);
+ if (std::abs(mFlySpeed - fVar11) > 10.0f) {
+ cLib_chaseF(&mFlySpeed, fVar11, 2.0f);
} else {
- cLib_chaseF(&field_0x6f8, fVar11, 1.0f);
+ cLib_chaseF(&mFlySpeed, fVar11, 1.0f);
}
if (field_0x72c == 0) {
- setActionMode(0, 0);
+ setActionMode(ACTION_FLY_e, 0);
dComIfGp_event_reset();
Z2GetAudioMgr()->setDemoName(NULL);
return;
}
-
break;
}
}
}
- cXyz unkXyz1 = dPath_GetPnt(mpPath1, mPathIdx)->m_position;
- cXyz unkXyz2 = dPath_GetPnt(mpPath1, mPathIdx - mPathIdxOffset)->m_position;
+ cXyz unkXyz1 = dPath_GetPnt(mpPath1, mPathCurrentPointNo)->m_position;
+ cXyz unkXyz2 = dPath_GetPnt(mpPath1, mPathCurrentPointNo - mPathStep)->m_position;
s16 targetYaw = field_0x714 = cLib_targetAngleY(&unkXyz2, &unkXyz1);
if (dComIfGp_getStartStagePoint() == 0) {
@@ -3288,13 +3268,13 @@ void daKago_c::moveDemoFly() {
cLib_addCalcAngleS(&current.angle.y, cLib_targetAngleY(&unkXyz2, &unkXyz1), 8, 0x40, 0x10);
shape_angle.y = current.angle.y;
- speedF = field_0x6f8 * std::abs(cM_scos(current.angle.x));
- speed.y = -field_0x6f8 * cM_ssin(current.angle.x);
+ speedF = mFlySpeed * std::abs(cM_scos(current.angle.x));
+ speed.y = -mFlySpeed * cM_ssin(current.angle.x);
f32 nextPath = checkNextPath(unkXyz1);
if (nextPath < 0.0f) {
if (abs((s16)(targetYaw - cLib_targetAngleY(&unkXyz2, &current.pos))) < 0x4000) {
- mPathIdx += this->mPathIdxOffset;
+ mPathCurrentPointNo += mPathStep;
if (checkFlySceneChange()) {
return;
}
@@ -3303,41 +3283,41 @@ void daKago_c::moveDemoFly() {
}
void daKago_c::setFlyEffect() {
- if (field_0x6e7 == 1) {
+ if (mType == TYPE_NORMAL) {
return;
}
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
JPABaseEmitter* emitter;
- field_0xb30 = dComIfGp_particle_set(field_0xb30, 0x8607, &current.pos, &tevStr);
+ field_0xb30 = dComIfGp_particle_set(field_0xb30, dPa_RM(ID_ZF_S_YCFLY_HANDLR2), &current.pos, &tevStr);
emitter = dComIfGp_particle_getEmitter(field_0xb30);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(13));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e));
}
- field_0xb34 = dComIfGp_particle_set(field_0xb34, 0x8607, &current.pos, &tevStr);
+ field_0xb34 = dComIfGp_particle_set(field_0xb34, dPa_RM(ID_ZF_S_YCFLY_HANDLR2), &current.pos, &tevStr);
emitter = dComIfGp_particle_getEmitter(field_0xb34);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(18));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e));
}
}
void daKago_c::setDashEffect() {
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
JPABaseEmitter* emitter;
- if (field_0x6e7 == 0) {
- field_0xb38 = dComIfGp_particle_set(field_0xb38, 0x8609, &current.pos, &tevStr);
- emitter = dComIfGp_particle_getEmitter(this->field_0xb38);
+ if (mType == TYPE_TWILIGHT) {
+ field_0xb38 = dComIfGp_particle_set(field_0xb38, dPa_RM(ID_ZF_S_YCDASH_HANDL2), &current.pos, &tevStr);
+ emitter = dComIfGp_particle_getEmitter(field_0xb38);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(13));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e));
}
- field_0xb3c = dComIfGp_particle_set(field_0xb3c, 0x860a, &current.pos, &tevStr);
+ field_0xb3c = dComIfGp_particle_set(field_0xb3c, dPa_RM(ID_ZF_S_YCDASH_HANDR2), &current.pos, &tevStr);
emitter = dComIfGp_particle_getEmitter(field_0xb3c);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(18));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e));
}
}
@@ -3345,25 +3325,27 @@ void daKago_c::setDashEffect() {
}
void daKago_c::setDamageEffect() {
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
JPABaseEmitter* emitter;
- if (field_0x6e7 != 1) {
- field_0xb38 = dComIfGp_particle_set(field_0xb38, 0x8603, &current.pos, &tevStr);
- emitter = dComIfGp_particle_getEmitter(this->field_0xb38);
+ if (mType != TYPE_NORMAL) {
+ field_0xb38 = dComIfGp_particle_set(field_0xb38, dPa_RM(ID_ZF_S_YCDAMAGE00_HANDLR2), &current.pos, &tevStr);
+ emitter = dComIfGp_particle_getEmitter(field_0xb38);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(13));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDL_2_e));
}
- field_0xb3c = dComIfGp_particle_set(field_0xb3c, 0x8603, &current.pos, &tevStr);
+ field_0xb3c = dComIfGp_particle_set(field_0xb3c, dPa_RM(ID_ZF_S_YCDAMAGE00_HANDLR2), &current.pos, &tevStr);
emitter = dComIfGp_particle_getEmitter(field_0xb3c);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(model->getAnmMtx(18));
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(YC_JNT_HANDR_2_e));
}
}
}
void daKago_c::setDashBlurEffect(int param_0) {
+ UNUSED(param_0);
+
camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
cXyz cameraEye = dCam_getBody()->Eye();
cXyz cameraEyeOffset;
@@ -3381,51 +3363,53 @@ void daKago_c::setDashBlurEffect(int param_0) {
cameraEyeOffset = cameraEye + local_78;
- local_94.set((s16)cLib_targetAngleX(&field_0x6b0, &cameraEye), (s16)cLib_targetAngleY(&field_0x6b0, &cameraEye), 0);
+ local_94.set((s16)cLib_targetAngleX(&mPrevCamEye, &cameraEye), (s16)cLib_targetAngleY(&mPrevCamEye, &cameraEye), 0);
if (l_HIO.mAngleTrackingMode == 0) {
field_0x6be.x = -local_94.x;
field_0x6be.y = local_94.y;
field_0x6be.z = 0;
} else {
- field_0x6be.x = shape_angle.x * (0.5f + XREG_F(0x13));
+ field_0x6be.x = shape_angle.x * (0.5f + XREG_F(19));
field_0x6be.y = shape_angle.y;
field_0x6be.z = 0;
}
- field_0xb40 = dComIfGp_particle_set(field_0xb40, 0x860f, &cameraEyeOffset, &tevStr, &field_0x6be, 0, 0xff, 0, -1, 0, 0, 0);
+
+ field_0xb40 = dComIfGp_particle_set(field_0xb40, dPa_RM(ID_ZF_S_YCSPEED), &cameraEyeOffset, &tevStr, &field_0x6be, NULL, 0xff, NULL, -1, NULL, NULL, NULL);
}
-void daKago_c::setWallHitEffect(cXyz param_0, int param_1) {
+void daKago_c::setWallHitEffect(cXyz i_pos, int i_effType) {
// might be a 2D array?
static u16 kago_wall_hit_id[6] = {
- 0x8658,
- 0x86F9,
- 0x86FA,
- 0x8659,
- 0x86FB,
- 0x86FC,
+ dPa_RM(ID_ZF_S_YCHITA),
+ dPa_RM(ID_ZF_S_YCHITA_1),
+ dPa_RM(ID_ZF_S_YCHITA_2),
+
+ dPa_RM(ID_ZF_S_YCHITB),
+ dPa_RM(ID_ZF_S_YCHITB_1),
+ dPa_RM(ID_ZF_S_YCHITB_2),
};
for (int i = 0; i < 3; i++) {
- dComIfGp_particle_set(kago_wall_hit_id[i + param_1 * 3], &param_0, &tevStr, 0, 0);
+ dComIfGp_particle_set(kago_wall_hit_id[i + i_effType * 3], &i_pos, &tevStr, NULL, NULL);
}
}
void daKago_c::setSibukiEffect() {
static u16 kago_wave_id[3] = {
- 0x865A,
- 0x865B,
- 0x865C,
+ dPa_RM(ID_ZF_S_YCWAVE00_WAVE),
+ dPa_RM(ID_ZF_S_YCWAVE01_SPLASH),
+ dPa_RM(ID_ZF_S_YCWAVE02_DROP),
};
- cXyz acStack_28(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z);
- csXyz cStack_30(0, shape_angle.y, 0);
+ cXyz effpos(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z);
+ csXyz effrot(0, shape_angle.y, 0);
for (int i = 0; i < 3; i++) {
- field_0xb44[i] =
- dComIfGp_particle_set(field_0xb44[i], kago_wave_id[i], &acStack_28, &tevStr, &cStack_30,
- 0, 0xff, 0, -1, 0, 0, 0);
+ mSibukiEmitterIDs[i] =
+ dComIfGp_particle_set(mSibukiEmitterIDs[i], kago_wave_id[i], &effpos, &tevStr, &effrot,
+ NULL, 0xff, NULL, -1, NULL, NULL, NULL);
}
- if (field_0x6e7 == 0) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1);
} else {
mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1);
@@ -3433,40 +3417,40 @@ void daKago_c::setSibukiEffect() {
}
void daKago_c::setDashSibukiEffect() {
- cXyz acStack_20(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z);
- csXyz cStack_28(0, shape_angle.y, 0);
- field_0xb50 = dComIfGp_particle_set(field_0xb50, 0x86fe, &acStack_20, &tevStr, &cStack_28, 0,
- 0xff, 0, -1, 0, 0, 0);
+ cXyz effpos(current.pos.x, field_0x70c + l_HIO.mYOffsetFromWaterSurface, current.pos.z);
+ csXyz effrot(0, shape_angle.y, 0);
+ mDashSibukiEmitterID = dComIfGp_particle_set(mDashSibukiEmitterID, dPa_RM(ID_ZF_S_YCWAVE03_SPLASH), &effpos, &tevStr, &effrot, NULL,
+ 0xff, NULL, -1, NULL, NULL, NULL);
}
void daKago_c::setWaterFallEffect() {
static u16 kago_wave_id[2] = {
- 0x865B,
- 0x865C,
+ dPa_RM(ID_ZF_S_YCWAVE01_SPLASH),
+ dPa_RM(ID_ZF_S_YCWAVE02_DROP),
};
- cXyz acStack_28(current.pos.x, current.pos.y, current.pos.z);
- csXyz cStack_30(0, shape_angle.y, 0);
+ cXyz effpos(current.pos.x, current.pos.y, current.pos.z);
+ csXyz effrot(0, shape_angle.y, 0);
for (int i = 0; i < 2; i++) {
- field_0xb44[i] =
- dComIfGp_particle_set(field_0xb44[i], kago_wave_id[i], &acStack_28, &tevStr, &cStack_30,
- 0, 0xff, 0, -1, 0, 0, 0);
+ mSibukiEmitterIDs[i] =
+ dComIfGp_particle_set(mSibukiEmitterIDs[i], kago_wave_id[i], &effpos, &tevStr, &effrot,
+ NULL, 0xFF, NULL, -1, NULL, NULL, NULL);
}
- if (field_0x6e7 == 0) {
+
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSoundLevel(Z2SE_EN_YC_SPLASH, 0, -1);
} else {
mSound.startCreatureSoundLevel(Z2SE_EN_KC_SPLASH, 0, -1);
}
}
-static void* s_waterfall(void* param_0, void* param_1) {
- if (fopAcM_IsActor(param_0) && fopAcM_GetName(param_0) == PROC_Tag_WaterFall) {
- if (!fpcM_IsCreating(fopAcM_GetID(param_0))) {
- if (((daTagWaterFall_c*)param_0)
- ->checkHitWaterFall(((fopAc_ac_c*)param_1)->current.pos))
+static void* s_waterfall(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_Tag_WaterFall) {
+ if (!fpcM_IsCreating(fopAcM_GetID(i_actor))) {
+ if (((daTagWaterFall_c*)i_actor)->checkHitWaterFall(((fopAc_ac_c*)i_data)->current.pos))
{
- ((daKago_c*)param_1)->onWaterFall();
- return param_0;
+ ((daKago_c*)i_data)->onWaterFall();
+ return i_actor;
}
}
}
@@ -3475,44 +3459,46 @@ static void* s_waterfall(void* param_0, void* param_1) {
}
void daKago_c::setFlySound() {
+ BOOL isPlayWingSound;
+
if (field_0x6de != 0) {
- BOOL unkFlag1 = FALSE;
- if (checkBck(9) || checkBck(15)) {
- if (field_0x6e7 == 0) {
- if (mpMorf->checkFrame(27.0f)) {
- unkFlag1 = TRUE;
+ isPlayWingSound = FALSE;
+ if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_e) || checkBck(dRes_ID_E_YC_BCK_YC_FLY_WL_e)) {
+ if (mType == TYPE_TWILIGHT) {
+ if (mAnm_p->checkFrame(27.0f)) {
+ isPlayWingSound = TRUE;
}
} else {
- if (mpMorf->checkFrame(29.0f)) {
- unkFlag1 = TRUE;
+ if (mAnm_p->checkFrame(29.0f)) {
+ isPlayWingSound = TRUE;
}
}
- } else if (checkBck(21)) {
- if (mpMorf->checkFrame(10.0f)) {
- unkFlag1 = TRUE;
+ } else if (checkBck(dRes_ID_E_YC_BCK_YC_HOVERING_e)) {
+ if (mAnm_p->checkFrame(10.0f)) {
+ isPlayWingSound = TRUE;
}
- } else if (checkBck(6)) {
- if (mpMorf->checkFrame(26.0f)) {
- unkFlag1 = TRUE;
+ } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_START_e)) {
+ if (mAnm_p->checkFrame(26.0f)) {
+ isPlayWingSound = TRUE;
}
- } else if (checkBck(5)) {
- if (mpMorf->checkFrame(10.0f)) {
- unkFlag1 = TRUE;
+ } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_MIDDLE_e)) {
+ if (mAnm_p->checkFrame(10.0f)) {
+ isPlayWingSound = TRUE;
}
- } else if (checkBck(4)) {
- if (mpMorf->checkFrame(10.0f) || mpMorf->checkFrame(35.0f)) {
- unkFlag1 = TRUE;
+ } else if (checkBck(dRes_ID_E_YC_BCK_YC_CATCH_END_e)) {
+ if (mAnm_p->checkFrame(10.0f) || mAnm_p->checkFrame(35.0f)) {
+ isPlayWingSound = TRUE;
}
- } else if (checkBck(12) || checkBck(13)) {
- if (field_0x6e7 == 0) {
+ } else if (checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_e) || checkBck(dRes_ID_E_YC_BCK_YC_FLY_GLIDE_WL_e)) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSoundLevel(Z2SE_EN_YC_GLIDE, 0, -1);
} else {
mSound.startCreatureSoundLevel(Z2SE_EN_KC_GLIDE, 0, -1);
}
}
- if (unkFlag1) {
- if (field_0x6e7 == 0) {
+ if (isPlayWingSound) {
+ if (mType == TYPE_TWILIGHT) {
mSound.startCreatureSound(Z2SE_EN_YC_WING, 0, -1);
} else {
mSound.startCreatureSound(Z2SE_EN_KC_WING, 0, -1);
@@ -3526,78 +3512,78 @@ void daKago_c::action() {
checkSizeBg();
setFlyEffect();
- field_0x6f0 = mDoCPd_c::getStickX3D(0);
- field_0x6f4 = mDoCPd_c::getStickY(0);
+ mStickX = mDoCPd_c::getStickX3D(PAD_1);
+ mStickY = mDoCPd_c::getStickY(PAD_1);
- u32 unkInt1 = field_0x6ea;
- field_0x6ea = 0;
+ u8 prevIsWaterfall = mIsWaterfall;
+ mIsWaterfall = FALSE;
fpcM_Search(s_waterfall, this);
- if (field_0x6ea != 0) {
- if (unkInt1 == 0) {
+ if (mIsWaterfall) {
+ if (!prevIsWaterfall) {
current.angle.x = 0x1000;
dComIfGp_getVibration().StartQuake(3, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
}
- field_0x6f0 = field_0x6f0 * 0.5f;
+ mStickX = mStickX * 0.5f;
- if (field_0x6f4 < 0.0f) {
- field_0x6f4 = field_0x6f4 * 0.5f;
+ if (mStickY < 0.0f) {
+ mStickY = mStickY * 0.5f;
} else {
- field_0x6f4 = field_0x6f4 * 1.5f;
+ mStickY = mStickY * 1.5f;
}
setWaterFallEffect();
- } else if (unkInt1 != 0) {
+ } else if (prevIsWaterfall) {
dComIfGp_getVibration().StopQuake(0x1f);
}
- field_0x6dd = 0;
+ mIsAttack = FALSE;
- switch (mCurrentAction) {
- case 0:
+ switch (mAction) {
+ case ACTION_FLY_e:
executeFly();
break;
- case 1:
+ case ACTION_STAGGER_e:
executeStagger();
break;
- case 2:
+ case ACTION_EVENT_e:
executeEvent();
break;
- case 3:
+ case ACTION_PERCH_e:
executePerch();
break;
- case 4:
+ case ACTION_WAIT_e:
executeWait();
break;
- case 5:
+ case ACTION_ATTACK_e:
executeAttack();
break;
- case 6:
+ case ACTION_EVENT2_e:
executeEvent2();
break;
- case 7:
+ case ACTION_PERCH2_e:
executePerch2();
break;
- case 8:
+ case ACTION_LANDING_e:
executeLanding();
break;
- case 9:
+ case ACTION_DEMO_FLY_e:
moveDemoFly();
break;
- case 10:
+ case ACTION_DEMO_FLY2_e:
moveDemoFly();
break;
}
- if (field_0x6e7 == 1 && (mCurrentAction == 0 || mCurrentAction == 5)) {
+ if (mType == TYPE_NORMAL && (mAction == ACTION_FLY_e || mAction == ACTION_ATTACK_e)) {
mSph.OnAtSetBit();
}
setFlySound();
if (daPy_getPlayerActorClass()->checkCargoCarry()) {
- if (mCurrentAction == 9 || mCurrentAction == 10) {
+ if (mAction == ACTION_DEMO_FLY_e || mAction == ACTION_DEMO_FLY2_e) {
dCam_getBody()->SetTrimTypeForce(2);
} else if (isAttack()) {
dCam_getBody()->SetTrimTypeForce(0);
@@ -3605,19 +3591,20 @@ void daKago_c::action() {
}
}
- fopAcM_posMoveF(this, 0);
+ fopAcM_posMoveF(this, NULL);
+
if (field_0x6dc == 0) {
mObjAcch.CrrPos(dComIfG_Bgsp());
}
- if (mpMorf != NULL) {
- mpMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ if (mAnm_p != NULL) {
+ mAnm_p->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
}
field_0x674 = current.pos;
if (cLib_chaseF(&field_0x6c4, 0.0f, 60.0f) == 0) {
- field_0x6c8 = field_0x6c8 + 0x800;
+ ANGLE_ADD(field_0x6c8, 0x800);
}
field_0x6ca = field_0x6c4 * cM_ssin(field_0x6c8);
@@ -3628,11 +3615,11 @@ void daKago_c::mtx_set() {
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::scaleM(l_HIO.mBasicSize,l_HIO.mBasicSize,l_HIO.mBasicSize);
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
model->setBaseTRMtx(mDoMtx_stack_c::get());
- mpMorf->modelCalc();
+ mAnm_p->modelCalc();
- mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(0x1c));
+ mDoMtx_stack_c::copy(mAnm_p->getModel()->getAnmMtx(YC_JNT_LEGR_3_e));
mDoMtx_stack_c::ZrotM(field_0x6ca);
cMtx_copy(mDoMtx_stack_c::get(), mLegR3Mtx);
}
@@ -3654,7 +3641,7 @@ void daKago_c::cc_set() {
int daKago_c::execute() {
if (executeBalloonMenu()) {
#if VERSION != VERSION_SHIELD_DEBUG
- dComIfGp_setAStatusForce(0x27, 0);
+ dComIfGp_setAStatusForce(BUTTON_STATUS_UNK_39, 0);
#endif
return 1;
}
@@ -3667,24 +3654,27 @@ int daKago_c::execute() {
field_0x72c--;
}
- if (field_0x720 != 0) {
- field_0x720--;
+ if (mWallHitInvulnTimer != 0) {
+ mWallHitInvulnTimer--;
}
+
if (mDashCooldownTime != 0) {
mDashCooldownTime--;
}
- if (field_0x71c != 0) {
- field_0x71c--;
+
+ if (mWaterSplashTimer != 0) {
+ mWaterSplashTimer--;
}
- if (field_0x6ed != 0) {
- field_0x6ed--;
+
+ if (unk_0x6ed != 0) {
+ unk_0x6ed--;
}
action();
mtx_set();
cc_set();
- field_0x6b0 = dCam_getBody()->Eye();
+ mPrevCamEye = dCam_getBody()->Eye();
return 1;
}
@@ -3698,9 +3688,9 @@ static int daKago_IsDelete(daKago_c* i_this) {
}
int daKago_c::_delete() {
- dComIfG_resDelete(&mPhase, field_0x75c);
+ dComIfG_resDelete(&mPhase, mArcName);
- if (field_0xb54 != 0) {
+ if (mIsHioSet != 0) {
hio_set = false;
mDoHIO_DELETE_CHILD(l_HIO.mChild);
}
@@ -3717,65 +3707,64 @@ static int daKago_Delete(daKago_c* i_this) {
return i_this->_delete();
}
-int daKago_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
- J3DJoint* joint = param_0;
+int daKago_c::ctrlJoint(J3DJoint* i_joint, J3DModel* param_1) {
+ J3DJoint* joint = i_joint;
int jointNo = joint->getJntNo();
mDoMtx_stack_c::copy(param_1->getAnmMtx(jointNo));
- if (jointNo == 3 || jointNo == 5 || jointNo == 6) {
- mDoMtx_stack_c::YrotM(field_0x71a);
- mDoMtx_stack_c::ZrotM(field_0x718);
+ if (jointNo == YC_JNT_NECK1_e || jointNo == YC_JNT_NECK2_e || jointNo == YC_JNT_HEAD_e) {
+ mDoMtx_stack_c::YrotM(mHeadRotY);
+ mDoMtx_stack_c::ZrotM(mHeadRotZ);
}
param_1->setAnmMtx(jointNo,mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(),J3DSys::mCurrentMtx);
-
return 1;
}
-int daKago_c::JointCallBack(J3DJoint* param_0, int param_1) {
+int daKago_c::JointCallBack(J3DJoint* i_joint, int param_1) {
if (param_1 == 0) {
J3DModel* model = j3dSys.getModel();
daKago_c* kago = (daKago_c*)model->getUserArea();
if (kago != NULL) {
- kago->ctrlJoint(param_0, model);
+ kago->ctrlJoint(i_joint, model);
}
}
+
return 1;
}
int daKago_c::CreateHeap() {
J3DModelData* modelData;
- if (field_0x6e7 == 0) {
- modelData = (J3DModelData*)dComIfG_getObjectRes(field_0x75c, 0x18);
+ if (mType == TYPE_TWILIGHT) {
+ modelData = (J3DModelData*)dComIfG_getObjectRes(mArcName, dRes_ID_E_YC_BMD_YC_e);
} else {
- modelData = (J3DModelData*)dComIfG_getObjectRes(field_0x75c, 0x10);
+ modelData = (J3DModelData*)dComIfG_getObjectRes(mArcName, dRes_ID_E_KC_BMD_KC_e);
}
- JUT_ASSERT(0x139f, modelData != NULL);
-
- mpMorf = new mDoExt_McaMorfSO(
- modelData, NULL, NULL,
- (J3DAnmTransform*)dComIfG_getObjectRes(field_0x75c, getBckName(9)), 2, 1.0f, 0, -1, &this->mSound, 0x80000, 0x11000084);
+ JUT_ASSERT(5023, modelData != NULL);
- if (mpMorf == NULL || mpMorf->getModel() == NULL) {
+ mAnm_p = new mDoExt_McaMorfSO(modelData, NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes(mArcName, getBckName(dRes_ID_E_YC_BCK_YC_FLY_e)), 2, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084);
+ if (mAnm_p == NULL || mAnm_p->getModel() == NULL) {
return 0;
}
- J3DModel* model = mpMorf->getModel();
+ J3DModel* model = mAnm_p->getModel();
model->setUserArea((uintptr_t)this);
for (u16 i = 1; i < model->getModelData()->getJointNum(); i++) {
- if (i == 3 || i == 5 || i == 6) {
+ if (i == YC_JNT_NECK1_e || i == YC_JNT_NECK2_e || i == YC_JNT_HEAD_e) {
model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack);
}
}
+
return 1;
}
-static int useHeapInit(fopAc_ac_c* param_0) {
- daKago_c* kago = (daKago_c*)param_0;
- return kago->CreateHeap();
+static int useHeapInit(fopAc_ac_c* actor) {
+ daKago_c* i_this = (daKago_c*)actor;
+ return i_this->CreateHeap();
}
int daKago_c::create() {
@@ -3786,39 +3775,40 @@ int daKago_c::create() {
mpPath1 = dPath_GetRoomPath(param & 0xff, fopAcM_GetRoomNo(this));
if (mpPath1 == NULL) {
OS_REPORT("KAGO ......NONONONONONO PATH !!!!\n");
- return 5;
+ return cPhs_ERROR_e;
}
}
- field_0x6e7 = (fopAcM_GetParam(this) >> 16) & 0xff;
- if (field_0x6e7 == 0xff) {
- field_0x6e7 = 0;
+ mType = (fopAcM_GetParam(this) >> 16) & 0xff;
+ if (mType == 0xFF) {
+ mType = TYPE_TWILIGHT;
}
- if (field_0x6e7 == 0) {
- field_0x75c = "E_YC";
- field_0x760 = "KAGO_YAMI";
+
+ if (mType == TYPE_TWILIGHT) {
+ mArcName = "E_YC";
+ mDemoName = "KAGO_YAMI";
} else {
- field_0x75c = "E_KC";
- field_0x760 = "KAGO_HIKARI";
+ mArcName = "E_KC";
+ mDemoName = "KAGO_HIKARI";
}
- int phase_state = dComIfG_resLoad(&mPhase, field_0x75c);
+ int phase_state = dComIfG_resLoad(&mPhase, mArcName);
if (phase_state == cPhs_COMPLEATE_e) {
OS_REPORT("Kago PARAM %x \n", fopAcM_GetParam(this));
- if (fopAcM_entrySolidHeap(this, useHeapInit, 0x23a0) == 0) {
+ if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x23a0)) {
return cPhs_ERROR_e;
}
- if (hio_set == 0) {
- field_0xb54 = 1;
- hio_set = 1;
- l_HIO.mChild = mDoHIO_CREATE_CHILD("", &l_HIO);
+ if (!hio_set) {
+ mIsHioSet = TRUE;
+ hio_set = TRUE;
+ l_HIO.mChild = mDoHIO_CREATE_CHILD("カーゴロック(いい奴)", &l_HIO);
}
attention_info.flags = 0;
- fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMtx(this, mAnm_p->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
@@ -3841,16 +3831,16 @@ int daKago_c::create() {
maxFallSpeed = -100.0f;
gravity = 0.0f;
- mPathIdxOffset = 0x01;
+ mPathStep = 1;
- setActionMode(4, 0);
+ setActionMode(ACTION_WAIT_e, 0);
#if DEBUG
- if (mDoCPd_c::getHoldL(0) && mDoCPd_c::getHoldR(0)) {
- dComIfGs_offSwitch(0x2d, fopAcM_GetRoomNo(this));
- dComIfGs_offSwitch(0x32, fopAcM_GetRoomNo(this));
+ if (mDoCPd_c::getHoldL(PAD_1) && mDoCPd_c::getHoldR(PAD_1)) {
+ dComIfGs_offSwitch(45, fopAcM_GetRoomNo(this));
+ dComIfGs_offSwitch(50, fopAcM_GetRoomNo(this));
- setActionMode(8, 0);
+ setActionMode(ACTION_LANDING_e, 0);
setMidnaRideOn();
setPlayerRideOn();
@@ -3860,19 +3850,19 @@ int daKago_c::create() {
}
#endif
- field_0x73c = 3;
+ mSceneType = SCENE_TYPE_DEFAULT;
if (strcmp("F_SP115", dComIfGp_getStartStageName()) == 0) {
if (dComIfGp_getStartStageRoomNo() == 0) {
- field_0x73c = 0;
+ mSceneType = SCENE_TYPE_LAKE_HYLIA;
}
} else if (strcmp("F_SP112", dComIfGp_getStartStageName()) == 0) {
if (dComIfGp_getStartStageRoomNo() == 1) {
- field_0x73c = 1;
+ mSceneType = SCENE_TYPE_RIVER;
}
} else if (strcmp("F_SP126", dComIfGp_getStartStageName()) == 0 &&
dComIfGp_getStartStageRoomNo() == 0)
{
- field_0x73c = 2;
+ mSceneType = SCENE_TYPE_BOARD_HOUSE;
}
mBalloon2DId = fpcM_ERROR_PROCESS_ID_e;
@@ -3885,8 +3875,8 @@ int daKago_c::create() {
return phase_state;
}
-static int daKago_Create(daKago_c* param_0) {
- return param_0->create();
+static int daKago_Create(daKago_c* i_this) {
+ return i_this->create();
}
static actor_method_class l_daKago_Method = {
diff --git a/src/d/actor/d_a_mg_fshop.cpp b/src/d/actor/d_a_mg_fshop.cpp
index f24db03e89..cd3ff1ef19 100644
--- a/src/d/actor/d_a_mg_fshop.cpp
+++ b/src/d/actor/d_a_mg_fshop.cpp
@@ -1778,7 +1778,7 @@ actor_process_profile_definition g_profile_FSHOP = {
fpcPi_CURRENT_e, // mListPrio
PROC_FSHOP, // mProcName
&g_fpcLf_Method.base, // sub_method
- 0x00006B80, // mSize
+ sizeof(fshop_class), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
diff --git a/src/d/actor/d_a_npc_wrestler.cpp b/src/d/actor/d_a_npc_wrestler.cpp
index e385f97b43..8143b8c1af 100644
--- a/src/d/actor/d_a_npc_wrestler.cpp
+++ b/src/d/actor/d_a_npc_wrestler.cpp
@@ -5226,7 +5226,7 @@ actor_process_profile_definition g_profile_NPC_WRESTLER = {
fpcPi_CURRENT_e, // mListPrio
PROC_NPC_WRESTLER, // mProcName
&g_fpcLf_Method.base, // sub_method
- 0xEA0, // mSize (fix this)
+ sizeof(daNpcWrestler_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
diff --git a/src/d/actor/d_a_obj_volcball.cpp b/src/d/actor/d_a_obj_volcball.cpp
index faad909e12..6c02a2311b 100644
--- a/src/d/actor/d_a_obj_volcball.cpp
+++ b/src/d/actor/d_a_obj_volcball.cpp
@@ -618,7 +618,7 @@ actor_process_profile_definition g_profile_Obj_VolcanicBall = {
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_VolcanicBall, // mProcName
&g_fpcLf_Method.base, // sub_method
- 0x00002928, // mSize
+ sizeof(daObjVolcBall_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp
index a54cc0ec55..1baf13362a 100644
--- a/src/d/d_camera.cpp
+++ b/src/d/d_camera.cpp
@@ -11212,7 +11212,7 @@ camera_process_profile_definition g_profile_CAMERA = {
fpcPi_CURRENT_e,
PROC_CAMERA,
&g_fpcLf_Method.base,
- sizeof(dCamera_c),
+ sizeof(camera_class),
0,
0,
&g_fopVw_Method,
@@ -11233,7 +11233,7 @@ camera_process_profile_definition g_profile_CAMERA2 = {
fpcPi_CURRENT_e,
PROC_CAMERA2,
&g_fpcLf_Method.base,
- sizeof(dCamera_c),
+ sizeof(camera_class),
0,
0,
&g_fopVw_Method,
diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp
index 253ef224cb..1f37fc6fe4 100644
--- a/src/d/d_com_inf_game.cpp
+++ b/src/d/d_com_inf_game.cpp
@@ -1287,7 +1287,7 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_arcNa
static int (*l_method[3])(void*) = {(int (*)(void*))phase_1, (int (*)(void*))phase_2,
(int (*)(void*))phase_3};
- if (i_phase->id == cPhs_NEXT_e) {
+ if (i_phase->id == 2) {
return cPhs_COMPLEATE_e;
}
@@ -1335,7 +1335,7 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resNa
static int (*l_method[3])(void*) = {(int (*)(void*))phase_01, (int (*)(void*))phase_02,
(int (*)(void*))phase_03};
- if (i_phase->id == cPhs_NEXT_e) {
+ if (i_phase->id == 2) {
return cPhs_COMPLEATE_e;
}
@@ -1352,12 +1352,12 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resNa
*/
int dComIfG_resDelete(request_of_phase_process_class* i_phase, char const* i_resName) {
JUT_ASSERT(1889, i_phase->id != 1);
- if (i_phase->id != cPhs_NEXT_e) {
+ if (i_phase->id != 2) {
return 0;
}
int r30 = dComIfG_deleteObjectResMain(i_resName);
- i_phase->id = cPhs_INIT_e;
+ i_phase->id = 0;
return 1;
}
diff --git a/src/d/d_path.cpp b/src/d/d_path.cpp
index fb15758e06..a01cfdc8a6 100644
--- a/src/d/d_path.cpp
+++ b/src/d/d_path.cpp
@@ -111,3 +111,22 @@ u8 dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* par
return 1;
}
+
+#if VERSION == VERSION_SHIELD_DEBUG
+void dPath_Ct() {
+ #if DEBUG
+ #endif
+}
+
+void dPath_Dt() {
+ #if DEBUG
+ #endif
+}
+
+void dPath_Move() {}
+
+void dPath_Draw() {
+ #if DEBUG
+ #endif
+}
+#endif
diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp
index 7a2e5303f7..663d98e425 100644
--- a/src/d/d_s_logo.cpp
+++ b/src/d/d_s_logo.cpp
@@ -18,12 +18,32 @@
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_machine.h"
#include <cstring>
+#include "m_Do/m_Do_main.h"
+#include "JSystem/JUtility/JUTConsole.h"
-#if PLATFORM_WII
+#if !PLATFORM_GCN
+#include <revolution/os.h>
+#include <revolution/sc.h>
+#include "m_Do/m_Do_Reset.h"
+
+#include "res/Object/LogoUsWii.h"
+#endif
+
+#if PLATFORM_WII || VERSION == VERSION_SHIELD
+#include "m_Re/m_Re_controller_pad.h"
#include "d/d_cursor_mng.h"
+#include "d/d_home_button.h"
+
+struct homeBtnData {
+ /* 0x0 */ int region;
+ /* 0x4 */ const char* path;
+};
#endif
-#if VERSION == VERSION_GCN_JPN
+#if VERSION == VERSION_SHIELD
+#define LOGO_ARC "LogoUs"
+#define MSG_PATH "/res/Msgcn/bmgres.arc"
+#elif VERSION == VERSION_GCN_JPN
#define LOGO_ARC "Logo"
#define MSG_PATH "/res/Msgjp/bmgres.arc"
#elif VERSION == VERSION_GCN_PAL
@@ -42,22 +62,70 @@
#define PROGRESSIVE_MODE_ON OS_PROGRESSIVE_MODE_ON
#endif
-static dLog_HIO_c g_LogHIO;
+#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG
+#define FMAP_RES_PATH "/res/LayoutRevo/fmapresR.arc"
+#define DMAP_RES_PATH "/res/LayoutRevo/dmapresR.arc"
+#define COLLECT_RES_PATH "/res/LayoutRevo/clctresR.arc"
-typedef void (dScnLogo_c::*execFunc)();
-static execFunc l_execFunc[16] = {
- &dScnLogo_c::warningInDraw, &dScnLogo_c::warningDispDraw, &dScnLogo_c::warningOutDraw,
- &dScnLogo_c::nintendoInDraw, &dScnLogo_c::nintendoOutDraw, &dScnLogo_c::dolbyInDraw,
- &dScnLogo_c::dolbyOutDraw, &dScnLogo_c::dolbyOutDraw2, &dScnLogo_c::progInDraw,
- &dScnLogo_c::progSelDraw, &dScnLogo_c::progOutDraw, &dScnLogo_c::progSetDraw,
- &dScnLogo_c::progSet2Draw, &dScnLogo_c::progChangeDraw, &dScnLogo_c::dvdWaitDraw,
- &dScnLogo_c::nextSceneChange,
-};
+#define MSG_COM_PATH "/res/LayoutRevo/msgcomR.arc"
+#define MSG_RES0_PATH "/res/LayoutRevo/msgres00R.arc"
+#define MSG_RES1_PATH "/res/LayoutRevo/msgres01R.arc"
+#define MSG_RES2_PATH "/res/LayoutRevo/msgres02R.arc"
+#define MSG_RES3_PATH "/res/LayoutRevo/msgres03R.arc"
+#else
+#define FMAP_RES_PATH "/res/Layout/fmapres.arc"
+#define DMAP_RES_PATH "/res/Layout/dmapres.arc"
+#define COLLECT_RES_PATH "/res/Layout/clctres.arc"
+
+#define MSG_COM_PATH "/res/Layout/msgcom.arc"
+#define MSG_RES0_PATH "/res/Layout/msgres00.arc"
+#define MSG_RES1_PATH "/res/Layout/msgres01.arc"
+#define MSG_RES2_PATH "/res/Layout/msgres02.arc"
+#define MSG_RES3_PATH "/res/Layout/msgres03.arc"
+#endif
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+#define ICON_RES_PATH "/res/WiiBannerIcon/bannerIcon.arc"
+#define PARTICLE_COM_PATH "/res/Particle/common-r.jpc"
+#else
+#define ICON_RES_PATH "/res/CardIcon/cardicon.arc"
+#define PARTICLE_COM_PATH "/res/Particle/common.jpc"
+#endif
+
+#if PLATFORM_WII
+#define RING_RES_PATH "/res/LayoutRevo/ringresR.arc"
+#define ITEM_INF_RES_PATH "/res/LayoutRevo/itmInfResR.arc"
+#define BUTTON_RES_PATH "/res/LayoutRevo/buttonR.arc"
+#define MAIN2D_PATH "/res/LayoutRevo/main2DR.arc"
+#else
+#define RING_RES_PATH "/res/Layout/ringres.arc"
+#define ITEM_INF_RES_PATH "/res/Layout/itmInfRes.arc"
+#define BUTTON_RES_PATH "/res/Layout/button.arc"
+#define MAIN2D_PATH "/res/Layout/main2D.arc"
+#endif
+
+class dLog_HIO_c : public JORReflexible {
+public:
+ dLog_HIO_c();
+ virtual ~dLog_HIO_c() {}
+
+ void genMessage(JORMContext*);
+
+ u8 field_0x4[0x8 - 0x4];
+}; // Size: 0x8
+
+static dLog_HIO_c g_LogHIO;
dLog_HIO_c::dLog_HIO_c() {}
+#if DEBUG
+void dLog_HIO_c::genMessage(JORMContext*) {}
+#endif
+
void dScnLogo_c::preLoad_dyl_create() {
m_preLoad_dylPhase = new request_of_phase_process_class[14];
+ JUT_ASSERT(194, m_preLoad_dylPhase != NULL);
+
memset(m_preLoad_dylPhase, 0, sizeof(request_of_phase_process_class) * 14);
}
@@ -65,15 +133,54 @@ void dScnLogo_c::preLoad_dyl_remove() {
delete[] m_preLoad_dylPhase;
}
+typedef void (dScnLogo_c::*execFunc)();
+static execFunc l_execFunc[] = {
+ &dScnLogo_c::warningInDraw, &dScnLogo_c::warningDispDraw, &dScnLogo_c::warningOutDraw,
+ &dScnLogo_c::nintendoInDraw, &dScnLogo_c::nintendoOutDraw, &dScnLogo_c::dolbyInDraw,
+ &dScnLogo_c::dolbyOutDraw, &dScnLogo_c::dolbyOutDraw2, &dScnLogo_c::progInDraw,
+ &dScnLogo_c::progSelDraw, &dScnLogo_c::progOutDraw, &dScnLogo_c::progSetDraw,
+ &dScnLogo_c::progSet2Draw, &dScnLogo_c::progChangeDraw, &dScnLogo_c::dvdWaitDraw,
+ &dScnLogo_c::nextSceneChange,
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ &dScnLogo_c::strapInDraw,
+ &dScnLogo_c::strapDispDraw,
+ &dScnLogo_c::strapOutDraw,
+ &dScnLogo_c::strapOut2Draw,
+ #endif
+
+ #if VERSION == VERSION_SHIELD
+ &dScnLogo_c::mocInDraw,
+ &dScnLogo_c::mocDispDraw,
+ &dScnLogo_c::mocOutDraw,
+ &dScnLogo_c::nvLogoInDraw,
+ &dScnLogo_c::nvLogoDispDraw,
+ &dScnLogo_c::nvLogoOutDraw,
+ #endif
+};
+
static s16 const l_preLoad_dylKeyTbl[14] = {
- 0x02DC, 0x02CE, 0x0221, 0x00F2, 0x021B, 0x02F4, 0x0139,
- 0x015A, 0x02E4, 0x00FE, 0x0308, 0x030F, 0x00FF, 0x013F,
+ PROC_BG,
+ PROC_DEMO00,
+ PROC_NBOMB,
+ PROC_SPINNER,
+ PROC_Obj_LifeContainer,
+ PROC_CROD,
+ PROC_DISAPPEAR,
+ PROC_Tag_Attp,
+ PROC_MG_ROD,
+ PROC_BOOMERANG,
+ PROC_ARROW,
+ PROC_SUSPEND,
+ PROC_MIDNA,
+ PROC_Obj_Yousei,
};
bool dScnLogo_c::preLoad_dyl() {
bool ret = true;
+ int var_r28 = 14;
- for (int i = 0; i < 14; i++) {
+ for (int i = 0; i < var_r28; i++) {
int phase_state = cDylPhs::Link(&m_preLoad_dylPhase[i], l_preLoad_dylKeyTbl[i]);
if (phase_state != cPhs_COMPLEATE_e) {
@@ -84,6 +191,10 @@ bool dScnLogo_c::preLoad_dyl() {
return ret;
}
+#if DEBUG
+u8 dScnLogo_c::mOpeningCut;
+#endif
+
void dScnLogo_c::checkProgSelect() {
#if VERSION == VERSION_GCN_PAL
if (mDoRst::getProgSeqFlag() == 0) {
@@ -133,16 +244,34 @@ void dScnLogo_c::progSelDraw() {
if (field_0x20b == 0) {
if (field_0x209 == 0) {
- if (mDoCPd_c::getHoldRight(PAD_1) || mDoCPd_c::getStickX(PAD_1) > 0.5f) {
+ #if PLATFORM_WII
+ if (mReCPd::getTrigRight(PAD_1) || mReCPd::getStickX(PAD_1) > 0.5f)
+ #else
+ if (mDoCPd_c::getHoldRight(PAD_1) || mDoCPd_c::getStickX(PAD_1) > 0.5f)
+ #endif
+ {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoAud_seStart(Z2SE_SY_CURSOR_OPTION, NULL, 0, 0);
+ #else
mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ #endif
field_0x209 = 1;
field_0x20e = 30;
field_0x210 = field_0x20e;
field_0x212 = 0;
}
} else {
- if (mDoCPd_c::getHoldLeft(PAD_1) || mDoCPd_c::getStickX(PAD_1) < -0.5f) {
+ #if PLATFORM_WII
+ if (mReCPd::getTrigLeft(PAD_1) || mReCPd::getStickX(PAD_1) < -0.5f)
+ #else
+ if (mDoCPd_c::getHoldLeft(PAD_1) || mDoCPd_c::getStickX(PAD_1) < -0.5f)
+ #endif
+ {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoAud_seStart(Z2SE_SY_CURSOR_OPTION, NULL, 0, 0);
+ #else
mDoAud_seStart(Z2SE_SY_MENU_CURSOR_COMMON, NULL, 0, 0);
+ #endif
field_0x209 = 0;
field_0x20e = 30;
field_0x210 = field_0x20e;
@@ -150,16 +279,40 @@ void dScnLogo_c::progSelDraw() {
}
}
- if (mDoCPd_c::getTrigA(PAD_1) || mTimer == 0) {
+ #if PLATFORM_WII
+ if (cAPICPad_A_TRIGGER(PAD_1) || mTimer == 0)
+ #else
+ if (mDoCPd_c::getTrigA(PAD_1) || mTimer == 0)
+ #endif
+ {
if (field_0x209 == 0) {
- mProgressiveSel->getPicture()->changeTexture(mProgressivePro, 0);
+ J2DPicture* pic = mProgressiveSel->getPicture();
+ pic->changeTexture(mProgressivePro, 0);
+
+ #if VERSION != VERSION_SHIELD
setProgressiveMode(PROGRESSIVE_MODE_ON);
+ #endif
+
mDoRst::setProgChgFlag(1);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoAud_seStart(Z2SE_SY_TALK_WIN_CLOSE, NULL, 0, 0);
+ #else
mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ #endif
} else {
- mProgressiveSel->getPicture()->changeTexture(mProgressiveInter, 0);
+ J2DPicture* pic = mProgressiveSel->getPicture();
+ pic->changeTexture(mProgressiveInter, 0);
+
+ #if VERSION != VERSION_SHIELD
setProgressiveMode(PROGRESSIVE_MODE_OFF);
+ #endif
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoAud_seStart(Z2SE_SY_CURSOR_CANCEL, NULL, 0, 0);
+ #else
mDoAud_seStart(Z2SE_SY_CURSOR_OK, NULL, 0, 0);
+ #endif
}
if (mTimer > 540) {
@@ -173,7 +326,12 @@ void dScnLogo_c::progSelDraw() {
field_0x210 = field_0x20e;
field_0x212 = 0;
}
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoRst::setProgSeqFlag(0);
+ #else
mDoRst::setProgSeqFlag(1);
+ #endif
}
} else {
if (field_0x214 == 0) {
@@ -224,13 +382,18 @@ void dScnLogo_c::progOutDraw() {
if (mTimer == 0) {
#if VERSION == VERSION_GCN_PAL
- if (field_0x218 == 1 && field_0x209 == 0) {
+ if (field_0x218 == 1 && field_0x209 == 0)
#else
- if (field_0x218 != 0 && field_0x209 == 0) {
+ if (field_0x218 != 0 && field_0x209 == 0)
#endif
+ {
mExecCommand = EXEC_PROG_CHANGE;
mTimer = 150;
} else if (field_0x218 == 0 && field_0x209 != 0) {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mTimer = 90;
+ mExecCommand = EXEC_NINTENDO_IN;
+ #else
if (mDoRst::getWarningDispFlag() != 0) {
mTimer = 90;
mExecCommand = EXEC_NINTENDO_IN;
@@ -238,6 +401,7 @@ void dScnLogo_c::progOutDraw() {
mTimer = 120;
mExecCommand = EXEC_WARNING_IN;
}
+ #endif
mDoGph_gInf_c::startFadeIn(30);
} else {
@@ -273,11 +437,22 @@ void dScnLogo_c::progSet2Draw() {
}
void dScnLogo_c::progChangeDraw() {
+ #if PLATFORM_SHIELD
+ OSReport("progChangeDraw");
+ #endif
+
if (getProgressiveMode() != 0 && mTimer == 90 && field_0x209 == 0) {
setRenderMode();
}
if (mTimer == 0) {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ mExecCommand = EXEC_STRAP_IN;
+ mTimer = 0;
+ #elif PLATFORM_WII || PLATFORM_SHIELD
+ mExecCommand = EXEC_STRAP_IN;
+ mTimer = 90;
+ #else
if (mDoRst::getWarningDispFlag() != 0) {
mTimer = 90;
mExecCommand = EXEC_NINTENDO_IN;
@@ -285,6 +460,7 @@ void dScnLogo_c::progChangeDraw() {
mTimer = 120;
mExecCommand = EXEC_WARNING_IN;
}
+ #endif
mDoGph_gInf_c::startFadeIn(30);
}
@@ -306,12 +482,14 @@ void dScnLogo_c::warningDispDraw() {
dComIfGd_set2DOpa(mWarning);
dComIfGd_set2DOpa(mWarningStart);
- f32 alpha = (f32)field_0x210 / (f32)field_0x20e;
+ f32 alphaf = (f32)field_0x210 / (f32)field_0x20e;
if (field_0x212 != 0) {
- alpha = 1.0f - alpha;
+ alphaf = 1.0f - alphaf;
}
- mWarningStart->setAlpha(255.0f * alpha);
+ u8 alpha = 255.0f * alphaf;
+ mWarningStart->setAlpha(alpha);
+
if (field_0x210 == 0) {
field_0x210 = field_0x20e;
field_0x212 ^= 1;
@@ -319,10 +497,14 @@ void dScnLogo_c::warningDispDraw() {
field_0x210--;
}
+ #if PLATFORM_WII
+ if (mTimer == 0 || cAPICPad_A_TRIGGER(PAD_1) || cAPICPad_B_TRIGGER(PAD_1) || cAPICPad_START_TRIGGER(PAD_1))
+ #else
if (mTimer == 0 || mDoCPd_c::getTrig(PAD_1) &
(PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_START |
PAD_TRIGGER_Z | PAD_TRIGGER_L | PAD_TRIGGER_R | PAD_BUTTON_LEFT |
PAD_BUTTON_RIGHT | PAD_BUTTON_DOWN | PAD_BUTTON_UP))
+ #endif
{
mExecCommand = EXEC_WARNING_OUT;
mTimer = 30;
@@ -387,40 +569,208 @@ void dScnLogo_c::dolbyOutDraw2() {
}
}
+#if PLATFORM_WII || PLATFORM_SHIELD
+void dScnLogo_c::strapInDraw() {
+ dComIfGd_set2DOpa(mStrapImg);
+ if (mTimer == 0) {
+ mExecCommand = EXEC_STRAP_DISP;
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ mTimer = 0;
+ #elif VERSION == VERSION_SHIELD
+ mTimer = 60;
+ #else
+ mTimer = 840;
+ #endif
+ }
+}
+
+void dScnLogo_c::strapDispDraw() {
+ dComIfGd_set2DOpa(mStrapImg);
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ if (mTimer == 0)
+ #elif VERSION == VERSION_SHIELD
+ if (mTimer == 0 || cAPICPad_ANY_BUTTON(PAD_1))
+ #else
+ if (mTimer == 0 || mReCPd::getTrig(PAD_1) & ~WPAD_BUTTON_HOME)
+ #endif
+ {
+ mExecCommand = EXEC_DVD_WAIT;
+ }
+}
+
+void dScnLogo_c::strapOutDraw() {
+ dComIfGd_set2DOpa(mStrapImg);
+ if (mTimer == 0) {
+ #if VERSION == VERSION_SHIELD
+ mExecCommand = EXEC_NVLOGO_IN;
+ #else
+ mExecCommand = EXEC_STRAP_OUT2;
+ #endif
+
+ mTimer = 30;
+ mDoGph_gInf_c::startFadeIn(30);
+ }
+}
+
+void dScnLogo_c::strapOut2Draw() {
+ if (mTimer == 0) {
+ mExecCommand = EXEC_SCENE_CHANGE;
+ }
+}
+#endif
+
+#if VERSION == VERSION_SHIELD
+void dScnLogo_c::mocInDraw() {
+ dComIfGd_set2DOpa(mMocImg);
+
+ if (mTimer == 0) {
+ mExecCommand = EXEC_MOC_DISP;
+ mTimer = 120;
+ }
+}
+
+void dScnLogo_c::mocDispDraw() {
+ dComIfGd_set2DOpa(mMocImg);
+
+ if (mTimer == 0 || cAPICPad_ANY_BUTTON(PAD_1)) {
+ mExecCommand = EXEC_MOC_OUT;
+ mTimer = 30;
+ mDoGph_gInf_c::startFadeOut(30);
+ }
+}
+
+void dScnLogo_c::mocOutDraw() {
+ dComIfGd_set2DOpa(mMocImg);
+
+ if (mTimer == 0) {
+ mExecCommand = EXEC_STRAP_IN;
+ mTimer = 90;
+ mDoGph_gInf_c::startFadeIn(30);
+ }
+}
+
+void dScnLogo_c::nvLogoInDraw() {
+ dComIfGd_set2DOpa(mNvLogo);
+
+ if (mTimer == 0) {
+ mExecCommand = EXEC_NVLOGO_DISP;
+ mTimer = 120;
+ }
+}
+
+void dScnLogo_c::nvLogoDispDraw() {
+ dComIfGd_set2DOpa(mNvLogo);
+
+ if (mTimer == 0 || cAPICPad_ANY_BUTTON(PAD_1)) {
+ mExecCommand = EXEC_NVLOGO_OUT;
+ mTimer = 30;
+ mDoGph_gInf_c::startFadeOut(30);
+ }
+}
+
+void dScnLogo_c::nvLogoOutDraw() {
+ dComIfGd_set2DOpa(mNvLogo);
+
+ if (mTimer == 0) {
+ mExecCommand = EXEC_STRAP_OUT2;
+ mTimer = 30;
+ mDoGph_gInf_c::startFadeIn(30);
+ }
+}
+#endif
+
void dScnLogo_c::dvdWaitDraw() {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ dComIfGd_set2DOpa(mStrapImg);
+ #endif
+
if (!dComIfG_syncAllObjectRes()) {
- if (mpField0Command->sync() && mpAlAnmCommand->sync() && mpFmapResCommand->sync() &&
- mpDmapResCommand->sync() && mpCollectResCommand->sync() && mpItemIconCommand->sync() &&
- mpRingResCommand->sync() && mpPlayerNameCommand->sync() &&
- mpItemInfResCommand->sync() && mpButtonCommand->sync() && mpCardIconCommand->sync() &&
- mpBmgResCommand->sync() && mpMsgComCommand->sync() && mpMsgResCommand[0]->sync() &&
- mpMsgResCommand[1]->sync() && mpMsgResCommand[2]->sync() &&
- mpMsgResCommand[3]->sync() && mpMsgResCommand[4]->sync() &&
- mpMsgResCommand[5]->sync() && mpMsgResCommand[6]->sync() && mpFontResCommand->sync() &&
- mpMain2DCommand->sync() && mpRubyResCommand->sync() && mParticleCommand->sync() &&
- mItemTableCommand->sync() && mEnemyItemCommand->sync() && preLoad_dyl())
+ if (
+ #if PLATFORM_WII || VERSION == VERSION_SHIELD
+ mpHomeBtnCommand->sync() &&
+ #endif
+ mpField0Command->sync()
+ && mpAlAnmCommand->sync()
+ && mpFmapResCommand->sync()
+ && mpDmapResCommand->sync()
+ && mpCollectResCommand->sync()
+ && mpItemIconCommand->sync()
+ && mpRingResCommand->sync()
+ && mpPlayerNameCommand->sync()
+ && mpItemInfResCommand->sync()
+ && mpButtonCommand->sync()
+ && mpCardIconCommand->sync()
+ && mpBmgResCommand->sync()
+ && mpMsgComCommand->sync()
+ && mpMsgResCommand[0]->sync()
+ && mpMsgResCommand[1]->sync()
+ && mpMsgResCommand[2]->sync()
+ && mpMsgResCommand[3]->sync()
+ && mpMsgResCommand[4]->sync()
+ && mpMsgResCommand[5]->sync()
+ && mpMsgResCommand[6]->sync()
+ && mpFontResCommand->sync()
+ && mpMain2DCommand->sync()
+ && mpRubyResCommand->sync()
+ && mParticleCommand->sync()
+ && mItemTableCommand->sync()
+ && mEnemyItemCommand->sync()
+ && preLoad_dyl())
{
mDoRst::setLogoScnFlag(0);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mDoRst::setProgSeqFlag(0);
+ #endif
+
mDoRst::setProgChgFlag(0);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ mExecCommand = EXEC_STRAP_OUT;
+ mTimer = 30;
+ mDoGph_gInf_c::startFadeOut(30);
+ #else
mExecCommand = EXEC_SCENE_CHANGE;
+ #endif
}
}
}
void dScnLogo_c::nextSceneChange() {
if (!mDoRst::isReset()) {
- dComIfG_changeOpeningScene(this, PROC_OPENING_SCENE);
+ if (!isOpeningCut())
+ {
+ dComIfG_changeOpeningScene(this, PROC_OPENING_SCENE);
+ } else {
+ #if DEBUG
+ fopScnM_ChangeReq(this, PROC_MENU_SCENE, 0, 30);
+ dComIfGs_init();
+ dComIfG_playerStatusD();
+ return;
+ #endif
+ }
}
}
dScnLogo_c::~dScnLogo_c() {
if (mDoRst::isReset()) {
- if (mDoAud_zelAudio_c::isInitFlag()) {
+ #if !(PLATFORM_WII || PLATFORM_SHIELD)
+ if (mDoAud_zelAudio_c::isInitFlag())
+ #endif
+ {
Z2AudioMgr::getInterface()->resetProcess(5, true);
}
+
mDoRst_reset(0, 0x80000000, 0);
}
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ delete mStrapImg;
+ #endif
+
+ #if !(PLATFORM_WII || PLATFORM_SHIELD)
delete mNintendoLogo;
delete mWarning;
delete mWarningStart;
@@ -435,14 +785,41 @@ dScnLogo_c::~dScnLogo_c() {
mpPalLogoResCommand->getArchive()->unmount();
mpPalLogoResCommand->destroy();
#endif
+ #endif
+
+ #if VERSION == VERSION_SHIELD
+ delete mNvLogo;
+ delete mMocImg;
+ #endif
preLoad_dyl_remove();
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ switch (getPalLanguage()) {
+ case 2:
+ dComIfG_deleteObjectResMain("LogoFrWii");
+ break;
+ case 3:
+ dComIfG_deleteObjectResMain("LogoSpWii");
+ break;
+ case 0:
+ default:
+ dComIfG_deleteObjectResMain("LogoUsWii");
+ break;
+ }
+ #else
dComIfG_deleteObjectResMain(LOGO_ARC);
+ #endif
- field_0x1d4->destroy();
- field_0x1d0->destroy();
+ mLogo01Heap->destroy();
+ mLogoHeap->destroy();
JKRFree(dummyGameAlloc);
+ #if PLATFORM_WII || VERSION == VERSION_SHIELD
+ dHomeButton_c::create(mHomeBtnRegion, mpHomeBtnCommand->getMemAddress());
+ mpHomeBtnCommand->destroy();
+ #endif
+
dComIfGp_particle_createCommon(mParticleCommand->getMemAddress());
dComIfGp_setFieldMapArchive2(mpField0Command->getArchive());
dComIfGp_setAnmArchive(mpAlAnmCommand->getArchive());
@@ -454,7 +831,17 @@ dScnLogo_c::~dScnLogo_c() {
dComIfGp_setRingResArchive(mpRingResCommand->getArchive());
dComIfGp_setNameResArchive(mpPlayerNameCommand->getArchive());
dComIfGp_setDemoMsgArchive(mpItemInfResCommand->getArchive());
+
dComIfGp_setMeterButtonArchive(mpButtonCommand->getArchive());
+ #if DEBUG
+ JKRArchive* button = mpButtonCommand->getArchive();
+ if (button != NULL) {
+ OS_REPORT("button not nullptr\n");
+ } else {
+ OS_REPORT("button nullptr\n");
+ }
+ #endif
+
dComIfGp_setErrorResArchive(NULL);
dComIfGp_setCardIconResArchive(mpCardIconCommand->getArchive());
dComIfGp_setMsgDtArchive(0, mpBmgResCommand->getArchive());
@@ -485,7 +872,12 @@ dScnLogo_c::~dScnLogo_c() {
mpFontResCommand->destroy();
mpMain2DCommand->destroy();
mpRubyResCommand->destroy();
+
+ #if !PLATFORM_SHIELD
mParticleCommand->destroy();
+ #else
+ delete mParticleCommand;
+ #endif
JKRAramHeap* aram_heap = JKRAram::getAramHeap();
u32 free_size = aram_heap->getTotalFreeSize();
@@ -502,15 +894,30 @@ dScnLogo_c::~dScnLogo_c() {
#endif
dComIfGp_setItemTable(mItemTableCommand->getMemAddress());
+ #if !PLATFORM_SHIELD
mItemTableCommand->destroy();
+ #else
+ delete mItemTableCommand;
+ #endif
dEnemyItem_c::setItemData((u8*)mEnemyItemCommand->getMemAddress());
+ #if !PLATFORM_SHIELD
mEnemyItemCommand->destroy();
+ #else
+ delete mEnemyItemCommand;
+ #endif
dDlst_shadowControl_c::setSimpleTex((ResTIMG*)dComIfG_getObjectRes("Always", 0x4A));
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ dComIfG_inf_c::createBaseCsr();
+ #endif
+
dTres_c::createWork();
dMpath_c::createWork();
+ OS_REPORT("\x1b[31m%d gameHeap->getFreeSize %08x(%d)\n\x1b[m", 1479, mDoExt_getGameHeap()->getFreeSize(), mDoExt_getGameHeap()->getFreeSize());
+
#if PLATFORM_WII
data_8053a730 = 0;
#endif
@@ -520,10 +927,18 @@ static int phase_0(dScnLogo_c* i_this) {
mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor);
dComIfGp_particle_create();
- i_this->dummyGameAlloc = mDoExt_getGameHeap()->alloc(0x340000, -0x10);
+ OS_REPORT("\x1b[31m%d gameHeap->getFreeSize %08x(%d)\n\x1b[m", 1497, mDoExt_getGameHeap()->getFreeSize(), mDoExt_getGameHeap()->getFreeSize());
+ u32 var_r29 = 0x340000;
+ u32 var_r28 = 0x130000;
+
+ i_this->dummyGameAlloc = mDoExt_getGameHeap()->alloc(var_r29, -0x10);
JUT_ASSERT(1523, i_this->dummyGameAlloc != NULL);
- i_this->field_0x1d0 = JKRExpHeap::create(i_this->dummyGameAlloc, 0x340000, NULL, false);
- i_this->field_0x1d4 = JKRExpHeap::create(0x130000, i_this->field_0x1d0, false);
+
+ i_this->mLogoHeap = JKRExpHeap::create(i_this->dummyGameAlloc, var_r29, NULL, false);
+ JUT_ASSERT(1525, i_this->mLogoHeap != NULL);
+
+ i_this->mLogo01Heap = JKRCreateExpHeap(var_r28, i_this->mLogoHeap, false);
+ JUT_ASSERT(1528, i_this->mLogo01Heap != NULL);
#if VERSION == VERSION_GCN_PAL
switch (i_this->getPalLanguage()) {
@@ -546,6 +961,10 @@ static int phase_0(dScnLogo_c* i_this) {
}
#endif
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ OSSetPowerCallback(mDoRst_shutdownCallBack);
+ #endif
+
return cPhs_NEXT_e;
}
@@ -554,9 +973,11 @@ static int phase_1(dScnLogo_c* i_this) {
return cPhs_INIT_e;
}
+ #if !(PLATFORM_WII || PLATFORM_SHIELD)
if (!mDoAud_zelAudio_c::isInitFlag() || Z2AudioMgr::getInterface()->checkFirstWaves()) {
return cPhs_INIT_e;
}
+ #endif
#if VERSION == VERSION_GCN_PAL
if (!mDoDvdThd::SyncWidthSound) {
@@ -568,8 +989,29 @@ static int phase_1(dScnLogo_c* i_this) {
}
#endif
- dComIfG_setObjectRes(LOGO_ARC, (u8)0, i_this->field_0x1d0);
+ int rt;
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ switch (i_this->getPalLanguage()) {
+ case 0:
+ default:
+ rt = dComIfG_setObjectRes("LogoUsWii", (u8)0, i_this->mLogoHeap);
+ break;
+ case 2:
+ rt = dComIfG_setObjectRes("LogoFrWii", (u8)0, i_this->mLogoHeap);
+ break;
+ case 3:
+ rt = dComIfG_setObjectRes("LogoSpWii", (u8)0, i_this->mLogoHeap);
+ break;
+ }
+ #else
+ rt = dComIfG_setObjectRes(LOGO_ARC, (u8)0, i_this->mLogoHeap);
+ #endif
+
+ JUT_ASSERT(1652, rt == 1);
+
mDoRst::setLogoScnFlag(1);
+
+ OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 1667, archiveHeap->getTotalFreeSize());
archiveHeap->dump_sort();
return cPhs_NEXT_e;
}
@@ -599,17 +1041,45 @@ int dScnLogo_c::create() {
data_8053a730 = 1;
#endif
- mpHeap = mDoExt_setCurrentHeap(field_0x1d4);
+ mpHeap = mDoExt_setCurrentHeap(mLogo01Heap);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ logoInitWii();
+ #else
logoInitGC();
- mpHeap->becomeCurrentHeap();
+ #endif
+
+ JKRSetCurrentHeap(mpHeap);
+
+ OS_REPORT("\x1b[31m%d gameHeap->getFreeSize %08x(%d)\n\x1b[m", 1732, mDoExt_getGameHeap()->getFreeSize(), mDoExt_getGameHeap()->getFreeSize());
dvdDataLoad();
+
+ OS_REPORT("\x1b[31m%d gameHeap->getFreeSize %08x(%d)\n\x1b[m", 1738, mDoExt_getGameHeap()->getFreeSize(), mDoExt_getGameHeap()->getFreeSize());
+
+ #if !(PLATFORM_WII || PLATFORM_SHIELD)
Z2AudioMgr::getInterface()->loadStaticWaves();
- mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 60);
+ #endif
+
+ mDoGph_gInf_c::setTickRate(OS_TIMER_CLOCK / 60);
mDoGph_gInf_c::waitBlanking(0);
+
field_0x20a = 0;
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ mExecCommand = EXEC_STRAP_IN;
+ mTimer = 0;
+ #elif VERSION == VERSION_SHIELD
+ mExecCommand = EXEC_MOC_IN;
+ mTimer = 30;
+ #elif PLATFORM_WII
+ mExecCommand = EXEC_STRAP_IN;
+ mTimer = 90;
+ #endif
+
mDoGph_gInf_c::startFadeIn(30);
+ #if !(PLATFORM_WII || PLATFORM_SHIELD)
checkProgSelect();
if (field_0x20a != 0) {
mExecCommand = EXEC_PROG_IN;
@@ -628,12 +1098,92 @@ int dScnLogo_c::create() {
JUTGamePad::clearResetOccurred();
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
+ #endif
+
mDoRst::offReset();
mDoRst::offResetPrepare();
+ #if PLATFORM_WII || VERSION == VERSION_SHIELD
+ dHomeButton_c::lbl_8053A724 = 0;
+ #endif
+
return phase_state;
}
+#if PLATFORM_WII || PLATFORM_SHIELD
+void dScnLogo_c::logoInitWii() {
+ u8 language = getPalLanguage();
+ if (language > 5) {
+ language = 0;
+ }
+
+ ResTIMG* timg;
+ s16 width;
+ s16 height;
+ if (mDoGph_gInf_c::isWide()) {
+ switch (language) {
+ case 0:
+ default:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", dRes_ID_LOGOUSWII_BTI_STRAP_16_9_832X456_US_e);
+ break;
+ case 2:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoFrWii", 3);
+ break;
+ case 3:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoSpWii", 3);
+ break;
+ }
+
+ width = 832;
+ height = 456;
+ } else {
+ switch (language) {
+ case 0:
+ default:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", dRes_ID_LOGOUSWII_BTI_STRAP_608X456_US_e);
+ break;
+ case 2:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoFrWii", 4);
+ break;
+ case 3:
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoSpWii", 4);
+ break;
+ }
+
+ width = 608;
+ height = 456;
+ }
+
+ JUT_ASSERT(2309, timg != NULL);
+ mStrapImg = new dDlst_2D_c(timg, 304 - (width / 2), 224 - (height / 2), width, height, 255);
+
+ #if VERSION == VERSION_SHIELD
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", 5);
+ mNvLogo = new dDlst_2D_c(timg, 304 - (width / 2), 224 - (height / 2), width, height, 255);
+
+ timg = (ResTIMG*)dComIfG_getObjectRes("LogoUsWii", 4);
+ mMocImg = new dDlst_2D_c(timg, 304 - (width / 2), 224 - (height / 2), width, height, 255);
+ #endif
+
+ OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 2316, archiveHeap->getTotalFreeSize());
+
+ JUT_ASSERT(2319, mStrapImg != NULL);
+
+ mNintendoLogo = NULL;
+ mDolbyLogo = NULL;
+ mWarning = NULL;
+ mWarningStart = NULL;
+ mProgressiveChoice = NULL;
+ mProgressiveYes = NULL;
+ mProgressiveNo = NULL;
+ mProgressivePro = NULL;
+ mProgressiveInter = NULL;
+ mProgressiveSel = NULL;
+
+ OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 2341, archiveHeap->getTotalFreeSize());
+ OS_REPORT("%d mLogo01Heap->getTotalFreeSize %08x\n\x1b[m", 2344, mLogo01Heap->getTotalFreeSize());
+}
+#else
void dScnLogo_c::logoInitGC() {
ResTIMG* nintendoImg = (ResTIMG*)dComIfG_getObjectRes(LOGO_ARC, 4);
mNintendoLogo = new dDlst_2D_c(nintendoImg, 117, 154, 376, 104, 255);
@@ -751,103 +1301,133 @@ void dScnLogo_c::logoInitGC() {
mProgressiveSel = new dDlst_2D_c(mProgressivePro, 153, 309, 336, 88, 255);
#endif
}
+#endif
void dScnLogo_c::dvdDataLoad() {
- dComIfG_setObjectRes("Always", (u8)0, NULL);
+ int rt;
+
+ #if PLATFORM_WII || VERSION == VERSION_SHIELD
+ rt = dComIfG_setObjectRes("HomeBtn", (u8)0, NULL);
+ JUT_ASSERT(__LINE__, rt == 1);
+
+ static const homeBtnData l_homeBtnData[] = {
+ {SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
+ {SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
+ {SC_LANG_FRENCH, "/res/HomeBtn/homeBtn_FRA.arc"},
+ {SC_LANG_SPANISH, "/res/HomeBtn/homeBtn_SPA.arc"},
+ {SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
+ {SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
+ {SC_LANG_ENGLISH, "/res/HomeBtn/homeBtn_ENG.arc"},
+ };
+
+ u8 language = getPalLanguage();
+ const homeBtnData* data = &l_homeBtnData[language];
+ mpHomeBtnCommand = mDoDvdThd_toMainRam_c::create(data->path, 0, NULL);
+ mHomeBtnRegion = data->region;
+ #endif
+
+ rt = dComIfG_setObjectRes("Always", (u8)0, NULL);
+ JUT_ASSERT(2420, rt == 1);
+
+ OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 2421, archiveHeap->getTotalFreeSize());
archiveHeap->dump_sort();
- dComIfG_setObjectRes("Alink", (u8)0, NULL);
-
- mpField0Command = mDoDvdThd_mountXArchive_c::create(
- "/res/FieldMap/Field0.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpAlAnmCommand =
- mDoDvdThd_mountXArchive_c::create("/res/Object/AlAnm.arc", 0, JKRArchive::MOUNT_ARAM, NULL);
- mpFmapResCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/fmapres.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpDmapResCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/dmapres.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpCollectResCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/clctres.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpItemIconCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/itemicon.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpRingResCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/ringres.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpPlayerNameCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/playerName.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpItemInfResCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/itmInfRes.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpButtonCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/button.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpCardIconCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/CardIcon/cardicon.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
+ rt = dComIfG_setObjectRes("Alink", (u8)0, NULL);
+ JUT_ASSERT(2429, rt == 1);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ rt = dComIfG_setObjectRes("NNGC", (u8)0, NULL);
+ JUT_ASSERT(2433, rt == 1);
+ #endif
+
+ OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 2436, archiveHeap->getTotalFreeSize());
+
+ mpField0Command = aramMount("/res/FieldMap/Field0.arc", mDoExt_getJ2dHeap());
+ mpAlAnmCommand = aramMount("/res/Object/AlAnm.arc", NULL);
+ mpFmapResCommand = aramMount(FMAP_RES_PATH, mDoExt_getJ2dHeap());
+ mpDmapResCommand = aramMount(DMAP_RES_PATH, mDoExt_getJ2dHeap());
+ mpCollectResCommand = aramMount(COLLECT_RES_PATH, mDoExt_getJ2dHeap());
+ mpItemIconCommand = aramMount("/res/Layout/itemicon.arc", mDoExt_getJ2dHeap());
+ mpRingResCommand = aramMount(RING_RES_PATH, mDoExt_getJ2dHeap());
+ mpPlayerNameCommand = aramMount("/res/Layout/playerName.arc", mDoExt_getJ2dHeap());
+ mpItemInfResCommand = aramMount(ITEM_INF_RES_PATH, mDoExt_getJ2dHeap());
+ mpButtonCommand = aramMount(BUTTON_RES_PATH, mDoExt_getJ2dHeap());
+ mpCardIconCommand = aramMount(ICON_RES_PATH, mDoExt_getJ2dHeap());
#if VERSION == VERSION_GCN_PAL
switch (getPalLanguage()) {
case 1:
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create("/res/Msgde/bmgres.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpBmgResCommand = onMemMount("/res/Msgde/bmgres.arc");
break;
case 2:
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create("/res/Msgfr/bmgres.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpBmgResCommand = onMemMount("/res/Msgfr/bmgres.arc");
break;
case 3:
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create("/res/Msgsp/bmgres.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpBmgResCommand = onMemMount("/res/Msgsp/bmgres.arc");
break;
case 4:
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create("/res/Msgit/bmgres.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpBmgResCommand = onMemMount("/res/Msgit/bmgres.arc");
break;
case 0:
default:
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create("/res/Msguk/bmgres.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpBmgResCommand = onMemMount("/res/Msguk/bmgres.arc");
+ break;
+ }
+ #elif VERSION == VERSION_SHIELD_DEBUG
+ switch (getPalLanguage()) {
+ case 2:
+ mpBmgResCommand = onMemMount("/res/Msgfr/bmgres.arc");
+ break;
+ case 3:
+ mpBmgResCommand = onMemMount("/res/Msgsp/bmgres.arc");
+ break;
+ default:
+ mpBmgResCommand = onMemMount("/res/Msgus/bmgres.arc");
break;
}
#else
- mpBmgResCommand = mDoDvdThd_mountXArchive_c::create(MSG_PATH, 0, JKRArchive::MOUNT_MEM, NULL);
- #endif
-
- mpMsgComCommand = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgcom.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMsgResCommand[0] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres00.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMsgResCommand[1] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres01.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMsgResCommand[2] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres02.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMsgResCommand[3] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres03.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
+ mpBmgResCommand = onMemMount(MSG_PATH);
+ #endif
+
+ mpMsgComCommand = aramMount(MSG_COM_PATH, mDoExt_getJ2dHeap());
+ mpMsgResCommand[0] = aramMount(MSG_RES0_PATH, mDoExt_getJ2dHeap());
+ mpMsgResCommand[1] = aramMount(MSG_RES1_PATH, mDoExt_getJ2dHeap());
+ mpMsgResCommand[2] = aramMount(MSG_RES2_PATH, mDoExt_getJ2dHeap());
+ mpMsgResCommand[3] = aramMount(MSG_RES3_PATH, mDoExt_getJ2dHeap());
#if VERSION == VERSION_GCN_JPN
- mpMsgResCommand[4] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres04.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
+ mpMsgResCommand[4] = aramMount("/res/Layout/msgres04.arc", mDoExt_getJ2dHeap());
#else
- mpMsgResCommand[4] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres04F.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
+ mpMsgResCommand[4] = aramMount("/res/Layout/msgres04F.arc", mDoExt_getJ2dHeap());
#endif
- mpMsgResCommand[5] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres05.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMsgResCommand[6] = mDoDvdThd_mountXArchive_c::create(
- "/res/Layout/msgres06.arc", 0, JKRArchive::MOUNT_ARAM, mDoExt_getJ2dHeap());
- mpMain2DCommand =
- mDoDvdThd_mountXArchive_c::create("/res/Layout/main2D.arc", 0, JKRArchive::MOUNT_MEM, NULL);
+ mpMsgResCommand[5] = aramMount("/res/Layout/msgres05.arc", mDoExt_getJ2dHeap());
+ mpMsgResCommand[6] = aramMount("/res/Layout/msgres06.arc", mDoExt_getJ2dHeap());
+
+ mpMain2DCommand = onMemMount(MAIN2D_PATH);
#if VERSION == VERSION_GCN_JPN
- mpFontResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontjp/fontres.arc", 1,
- JKRArchive::MOUNT_MEM, NULL);
- mpRubyResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontjp/rubyres.arc", 0,
- JKRArchive::MOUNT_MEM, NULL);
+ mpFontResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontjp/fontres.arc", 1, JKRArchive::MOUNT_MEM, NULL);
+ mpRubyResCommand = onMemMount("/res/Fontjp/rubyres.arc");
#elif VERSION == VERSION_GCN_PAL
- mpFontResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fonteu/fontres.arc", 0,
- JKRArchive::MOUNT_MEM, NULL);
- mpRubyResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fonteu/rubyres.arc", 0,
- JKRArchive::MOUNT_MEM, NULL);
+ mpFontResCommand = onMemMount("/res/Fonteu/fontres.arc");
+ mpRubyResCommand = onMemMount("/res/Fonteu/rubyres.arc");
+#elif VERSION == VERSION_SHIELD_DEBUG
+ mpFontResCommand = onMemMount("/res/Fonteu/fontres.arc");
+ mpRubyResCommand = onMemMount("/res/Fontus/rubyres.arc");
+#elif VERSION == VERSION_SHIELD
+ mpFontResCommand = onMemMount("/res/Fontcn/fontres.arc");
+ mpRubyResCommand = onMemMount("/res/Fontcn/rubyres.arc");
#else
- mpFontResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontus/fontres.arc", 0,
- JKRArchive::MOUNT_MEM, NULL);
- mpRubyResCommand = mDoDvdThd_mountXArchive_c::create("/res/Fontus/rubyres.arc", 0,
- JKRArchive::MOUNT_MEM, NULL);
+ mpFontResCommand = onMemMount("/res/Fontus/fontres.arc");
+ mpRubyResCommand = onMemMount("/res/Fontus/rubyres.arc");
#endif
- mParticleCommand = mDoDvdThd_toMainRam_c::create("/res/Particle/common.jpc", 0,
- dComIfGp_particle_getResHeap());
+
+ mParticleCommand = mDoDvdThd_toMainRam_c::create(PARTICLE_COM_PATH, 0, dComIfGp_particle_getResHeap());
+
mItemTableCommand = mDoDvdThd_toMainRam_c::create("/res/ItemTable/item_table.bin", 0, NULL);
+ JUT_ASSERT(2620, mItemTableCommand != NULL);
+
mEnemyItemCommand = mDoDvdThd_toMainRam_c::create("/res/ItemTable/enemy_table.bin", 0, NULL);
+ JUT_ASSERT(2624, mEnemyItemCommand != NULL);
preLoad_dyl_create();
preLoad_dyl();
@@ -858,13 +1438,58 @@ static int dScnLogo_Create(scene_class* i_this) {
}
static int dScnLogo_Execute(dScnLogo_c* i_this) {
+ fpc_ProcID id = fpcM_GetID(i_this);
+
if (mDoRst::isReset()) {
fopScnM_ChangeReq(i_this, PROC_LOGO_SCENE, 0, 5);
}
+
return 1;
}
+#if DEBUG
+static u8 lbl_8074CA49;
+#endif
+
static int dScnLogo_Draw(dScnLogo_c* i_this) {
+ #if DEBUG
+ int x = 36;
+ int y = 40;
+
+ y += 12;
+ JUTReport(x, y, "COPYDATE %s", mDoMain::COPYDATE_STRING);
+
+ y += 12;
+ JUTReport(x, y, "Build by %s", "Authorized User");
+
+ y += 12;
+ JUTReport(x, y, "_DEBUG/Debug version");
+
+ if (!lbl_8074CA49) {
+ lbl_8074CA49 = 1;
+ JUTReportConsole_f("COPYDATE %s\n", mDoMain::COPYDATE_STRING);
+ JUTReportConsole_f("Build by %s\n", "Authorized User");
+ JUTReportConsole_f("_DEBUG/Debug version\n");
+ JUTReportConsole_f("SDKVersion %s\n", "11Dec2009Patch02");
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ JUTReportConsole_f("ConsoleSimMem %08x\n", OSGetConsoleSimulatedMem1Size());
+ JUTReportConsole_f("PhysicalMemory %08x\n", OSGetPhysicalMem1Size());
+ JUTReportConsole_f("ConsoleType %08x\n", OSGetConsoleType());
+ JUTReportConsole_f("Language(PAL) %1x\n", SCGetLanguage());
+ JUTReportConsole_f("Progressive %1x\n", SCGetProgressiveMode());
+ JUTReportConsole_f("SoundMode %1x\n", SCGetSoundMode());
+ #else
+ JUTReportConsole_f("ConsoleSimMem %08x\n", OSGetConsoleSimulatedMemSize());
+ JUTReportConsole_f("PhysicalMemory %08x\n", OSGetPhysicalMemSize());
+ JUTReportConsole_f("ConsoleType %08x\n", OSGetConsoleType());
+ JUTReportConsole_f("Language(PAL) %1x\n", OSGetLanguage());
+ JUTReportConsole_f("Progressive %1x\n", OSGetProgressiveMode());
+ JUTReportConsole_f("SoundMode %1x\n", OSGetSoundMode());
+ #endif
+ }
+ #endif
+
i_this->draw();
return 1;
}
@@ -878,9 +1503,35 @@ static int dScnLogo_IsDelete(dScnLogo_c* i_this) {
return 1;
}
-#if VERSION == VERSION_GCN_PAL
+#if VERSION == VERSION_GCN_PAL || PLATFORM_WII || PLATFORM_SHIELD
u8 dScnLogo_c::getPalLanguage() {
u8 language;
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ switch (SCGetLanguage()) {
+ case SC_LANG_JAPANESE:
+ language = 6;
+ break;
+ case SC_LANG_ENGLISH:
+ language = 0;
+ break;
+ case SC_LANG_GERMAN:
+ language = 1;
+ break;
+ case SC_LANG_FRENCH:
+ language = 2;
+ break;
+ case SC_LANG_SPANISH:
+ language = 3;
+ break;
+ case SC_LANG_ITALIAN:
+ language = 4;
+ break;
+ case SC_LANG_DUTCH:
+ language = 5;
+ break;
+ }
+ #else
switch (OSGetLanguage()) {
case OS_LANGUAGE_ENGLISH:
language = 0;
@@ -901,13 +1552,20 @@ u8 dScnLogo_c::getPalLanguage() {
language = 5;
break;
}
+ #endif
return language;
}
#endif
void dScnLogo_c::setProgressiveMode(u8 mode) {
- #if VERSION == VERSION_GCN_PAL
+ #if VERSION == VERSION_SHIELD_DEBUG
+ return;
+ #endif
+
+ #if PLATFORM_WII
+ SCSetProgressiveMode(mode);
+ #elif VERSION == VERSION_GCN_PAL
OSSetEuRgb60Mode(mode);
#else
OSSetProgressiveMode(mode);
@@ -915,6 +1573,10 @@ void dScnLogo_c::setProgressiveMode(u8 mode) {
}
u8 dScnLogo_c::getProgressiveMode() {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ return SCGetProgressiveMode();
+ #endif
+
#if VERSION == VERSION_GCN_PAL
return OSGetEuRgb60Mode();
#else
@@ -934,8 +1596,6 @@ void dScnLogo_c::setRenderMode() {
mDoMch_render_c::setProgressiveMode();
}
-dLog_HIO_c::~dLog_HIO_c() {}
-
static scene_method_class l_dScnLogo_Method = {
(process_method_func)dScnLogo_Create,
(process_method_func)dScnLogo_Delete,
diff --git a/src/d/d_s_play.cpp b/src/d/d_s_play.cpp
index 1e4636c457..4f3c6807f0 100644
--- a/src/d/d_s_play.cpp
+++ b/src/d/d_s_play.cpp
@@ -26,13 +26,33 @@
#include "m_Do/m_Do_graphic.h"
#include "d/actor/d_a_suspend.h"
#include "d/actor/d_a_ykgr.h"
+#include "JSystem/JHostIO/JORFile.h"
+#include "JSystem/JHostIO/JORServer.h"
+#include "JSystem/JKernel/JKRExpHeap.h"
+#include "JSystem/JFramework/JFWSystem.h"
+#include "f_ap/f_ap_game.h"
+#include "d/d_bg_parts.h"
+#include "f_op/f_op_kankyo_mng.h"
+#include "d/actor/d_a_alink.h"
+#include "d/actor/d_a_midna.h"
+#include "JSystem/JKernel/JKRAram.h"
+#include "JSystem/JKernel/JKRAramArchive.h"
+
+#if DEBUG
+#include "d/d_s_menu.h"
+#include "d/d_debug_pad.h"
+#include "d/d_jpreviewer.h"
+#include "d/d_jcam_editor.h"
+#include "d/d_a_obj.h"
+#include "d/d_debug_viewer.h"
+#endif
#include <cstring>
#if PLATFORM_WII
#include "d/d_cursor_mng.h"
#endif
-static void dScnPly_Create(scene_class*);
+static int dScnPly_Create(scene_class*);
static int dScnPly_Delete(dScnPly_c*);
static int dScnPly_IsDelete(dScnPly_c);
static int dScnPly_Execute(dScnPly_c*);
@@ -54,6 +74,10 @@ static request_of_phase_process_class resPhase[1];
static request_of_phase_process_class dylPhase[1];
+#if DEBUG
+static OSTime dylPreLoadTime0;
+#endif
+
static OSTime dylPreLoadTime1;
static OSTime resPreLoadTime0;
@@ -66,6 +90,47 @@ s8 dScnPly_c::pauseTimer;
s8 dScnPly_c::nextPauseTimer;
+#if DEBUG
+u8 dScnPly_c::debugPause;
+#endif
+
+static const s16 T_JOINT_dylKeyTbl[1] = {
+ PROC_COW,
+};
+
+static const char* T_JOINT_resName[1] = {"Always"};
+
+struct PreLoadInfo {
+ const char* stageName;
+ const s16* profNameTbl;
+ const char** resNameTbl;
+ u8 dylKeyTblNum;
+ u8 resNameNum;
+};
+
+static PreLoadInfo const PreLoadInfoT[1] = {
+ {
+ "T_JOINT",
+ T_JOINT_dylKeyTbl,
+ T_JOINT_resName,
+ ARRAY_SIZE(T_JOINT_dylKeyTbl),
+ ARRAY_SIZE(T_JOINT_resName),
+ },
+};
+
+static s8 preLoadNo = -1;
+
+static u8 doPreLoad = 1;
+
+#if DEBUG
+void dScnPly_preLoad_HIO_c::genMessage(JORMContext* mctx) {
+ mctx->startComboBox("プリロード", &doPreLoad);
+ mctx->genComboBoxItem("しない", 0);
+ mctx->genComboBoxItem("する", 1);
+ mctx->endComboBox();
+}
+#endif
+
s8 dScnPly_c::calcPauseTimer() {
if (nextPauseTimer != 0) {
pauseTimer = nextPauseTimer;
@@ -76,18 +141,281 @@ s8 dScnPly_c::calcPauseTimer() {
}
}
-static const s16 T_JOINT_dylKeyTbl[1] = {
- 0x0106,
-};
+#if DEBUG
+dScnPly_reg_childHIO_c::dScnPly_reg_childHIO_c() {
+ for (int i = 0; i < 30; i++) {
+ mFloatReg[i] = 0.0f;
+ }
+
+ for (int i = 0; i < 10; i++) {
+ mShortReg[i] = 0;
+ }
+}
+
+void dScnPly_reg_childHIO_c::genMessage(JORMContext* mctx) {
+ char textbuf[8];
+
+ for (int i = 0; i < 20; i++) {
+ sprintf(textbuf, " F(%02d)", i);
+ mctx->genSlider(textbuf, &mFloatReg[i], -100000.0f, 100000.0f);
+ }
+
+ for (int i = 20; i < 25; i++) {
+ sprintf(textbuf, " F(%02d)", i);
+ mctx->genSlider(textbuf, &mFloatReg[i], 0.0f, 1.0f);
+ }
+
+ for (int i = 25; i < 30; i++) {
+ sprintf(textbuf, " F(%02d)", i);
+ mctx->genSlider(textbuf, &mFloatReg[i], -1.0f, 1.0f);
+ }
+
+ for (int i = 0; i < 10; i++) {
+ sprintf(textbuf, " S(%02d)", i);
+ mctx->genSlider(textbuf, &mShortReg[i], -0x8000, 0x7FFF);
+ }
+}
+
+void dScnPly_reg_HIO_c::genMessage(JORMContext* mctx) {
+ static const char l_nodeName[][20] = {
+ "森田(T)",
+ "まつたに(D)",
+ "イワワキ(I)",
+ "ささ(S)",
+ "うめみや(U)",
+ "おがわ(O)",
+ "坂口(Y)",
+ "さかい(K)",
+ "ハラ(B)",
+ "すみよし(M)",
+ "(空)-たけした(A)",
+ "吉田茂樹(P)",
+ "(空)-のま(N)",
+ "(空)-にしわき(W)",
+ "(空)-榊原政郎(J)",
+ "はやかわ(H)",
+ "(空)-定本(V)",
+ "(空)-西川(X)",
+ "(空)-鈴木(ゆ)(Z)",
+ "なかにし(n)",
+ "くわじま(k)",
+ "おかじま(o)",
+ "山崎(y)",
+ "芦田(a)",
+ "岡田(h)",
+ "高橋(t)",
+ };
+
+ // "Example usage"
+ mctx->genLabel("使い方例", 0);
+ mctx->genLabel("R_HS(00-09) ... はやかわレジスタ -32768 - +32767(short)", 0);
+ mctx->genLabel("R_HF(00-19) ... はやかわレジスタ -100000.0 - +100000.0", 0);
+ mctx->genLabel("R_HF(20-24) ... はやかわレジスタ 0.0f - 1.0f", 0);
+ mctx->genLabel("R_HF(25-29) ... はやかわレジスタ -1.0f - 1.0f", 0);
+
+ for (int i = 0; i < 26; i++) {
+ mctx->genNode(l_nodeName[i], &mChildReg[i], 0, 0);
+ }
+}
+
+dScnPly_preset_HIO_c::dScnPly_preset_HIO_c() {
+ field_0x5 = 0;
+ memset(mPresetData, 0, sizeof(mPresetData));
+ memset(filename_buf, 0, sizeof(filename_buf));
+ field_0x2716 = 0;
+ field_0x2717 = 0;
+}
+
+void dScnPly_preset_HIO_c::exePreset() {
+ JORFile file;
+
+ if (g_presetHIO.filename_buf[0] != 0) {
+ if (file.open((char*)filename_buf, 1, "", NULL, NULL, NULL)) {
+ memset(mPresetData, 0, sizeof(mPresetData));
+ field_0x2716 = 0;
+ field_0x2717 = 1;
+
+ file.readData(mPresetData, 0);
+ file.close();
+
+ if (dSm_read_stageset(mPresetData)) {
+ field_0x2717 = 2;
+ }
+ } else {
+ // "\nLoading error loop"
+ OS_REPORT("\n読み込みしっぱいのまきまき");
+ }
+
+ g_presetHIO.filename_buf[0] = 0;
+ }
+}
+
+void dScnPly_preset_HIO_c::genMessage(JORMContext* mctx) {
+ // "Load situation file"
+ mctx->genLabel("【状況ファイルを読みこみ】", 0x80000001);
+ // "Items and Status can be set in a file"
+ mctx->genLabel(" アイテムやステータスの状態をファイルで指定することが出来ます。", 0x80000001);
+ mctx->genLabel("", 0x80000001);
+
+ // "Click here to select a file to load!"
+ mctx->genButton("ここを押して読込ファイルを指定して下さい!", 0x40000001);
+ mctx->genLabel("", 0x80000001);
+
+ // "- Loading during gameplay will automatically return you to the debug menu."
+ mctx->genLabel("・ゲーム中に読み込むと自動的にデバッグメニューへ戻ります。", 0x80000001);
+ // "- When loading a file from the debug menu,"
+ mctx->genLabel("・デバッグメニューでファイルを読み込んだ際", 0x80000001);
+ // " if a stage command exists the game will temporarily load then return to the menu."
+ mctx->genLabel(" stage命令がある場合は一旦ゲームに入りメニューへと戻ります。", 0x80000001);
+ // " (To position the cursor)"
+ mctx->genLabel(" (カーソルを合わせる為)", 0x80000001);
+ mctx->genLabel("", 0x80000001);
+
+ // "Reset state to before loading situation file"
+ mctx->genButton("状況ファイルを読み込んでいない状態に戻す", 0x40000003);
+ mctx->genLabel("", 0x80000001);
+ mctx->genLabel("", 0x80000001);
+
+ // "Click here for the situation file location!"
+ mctx->genButton("状況ファイルの格納場所はコチラを押下!", 0x40000005);
+ mctx->genLabel("\\\\10.121.2.9\\zelda$\\JMAP_FOLDER\\situation", 0x80000001);
+ // "For details about the situation file contents, please refer to Nakamura-san's website"
+ mctx->genLabel("ファイルの内容については中村さんのHPをご参照ください", 0x80000001);
+ // "Click here to launch browser and view webpage."
+ mctx->genButton("ここを押すとブラウザが起動し表示されます。", 0x40000004);
+ mctx->genLabel("http://www-ead/~nakamuh/gc-zelda_2/misc/spec-situation_file.html", 0x80000001);
+}
+
+void dScnPly_preset_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ JORReflexible::listenPropertyEvent(event);
+ JORFile file;
+
+ switch ((int)event->id) {
+ case 0x40000001:
+ if (file.open(1, "すべてのファイル(*.*)\0*.*", NULL, NULL, NULL)) {
+ memset(mPresetData, 0, sizeof(mPresetData));
+ field_0x2716 = 0;
+ field_0x2717 = 1;
+
+ file.readData(mPresetData, 0);
+ file.close();
+
+ if (dSm_read_stageset(mPresetData)) {
+ field_0x2717 = 2;
+ }
+ }
+ break;
+ case 0x40000003:
+ memset(mPresetData, 0, sizeof(mPresetData));
+ break;
+ case 0x40000004:
+ JORShellExecute(NULL, "http://www-ead/~nakamuh/gc-zelda_2/misc/spec-situation_file.html", NULL, NULL, 1);
+ break;
+ case 0x40000005:
+ JORShellExecute(NULL, "\\\\10.121.2.9\\zelda$\\ZELDA2_JMAP_FOLDER\\situation", NULL, NULL, 1);
+ break;
+ }
+}
+#endif
dScnPly_env_otherHIO_c::dScnPly_env_otherHIO_c() {
mShadowDensity = 255.0f;
- mAdjustLODBias = 1;
- mDisplayTransparentCyl = false;
+ mAdjustLODBias = TRUE;
+ mDisplayTransparentCyl = FALSE;
+
+ #if DEBUG
+ mAdjustCullFar = FALSE;
+ mCullFarValue = 4000.0f;
+ mDisplayShadows = TRUE;
+ mDisplayShadowImage = FALSE;
+ mDisplayShadowPoly = FALSE;
+ mDisplayCullBox = FALSE;
+ mLoadAllRooms = FALSE;
+ mDepthOfField = TRUE;
+
+ mRailSize = 5.0f;
+ mRailColorR = 0x50;
+ mRailColorG = 0x50;
+ mRailColorB = 0x50;
+
+ field_0x1a = 0xFF;
+ mDisplayParticleInfo = 0;
+ field_0x4e = 0;
+ field_0x4f = 0;
+
+ for (int i = 0; i < 20; i++) {
+ field_0x1c[i] = -1;
+ }
+ #endif
}
-void dScnPly_env_otherHIO_c::genMessage(JORMContext* ctx) {
+void dScnPly_env_otherHIO_c::genMessage(JORMContext* mctx) {
+ #if DEBUG
+ mctx->genCheckBox("影表示", &mDisplayShadows, 1);
+ mctx->genSlider("影濃さ", &mShadowDensity, 0.0f, 255.0f);
+ mctx->genCheckBox("被写界深度", &mDepthOfField, 1);
+ mctx->genCheckBox("LODバイアス変更", &mAdjustLODBias, 1);
+ mctx->genCheckBox("カリングFar変更", &mAdjustCullFar, 1);
+ mctx->genSlider("カリングFar値", &mCullFarValue, 0.0f, 50000.0f);
+ mctx->genCheckBox("影イメージ表示", &mDisplayShadowImage, 1);
+ mctx->genCheckBox("影ポリゴン表示", &mDisplayShadowPoly, 1);
+ mctx->genCheckBox("透明円柱表示", &mDisplayTransparentCyl, 1);
+ mctx->genCheckBox("カリングボックス表示", &mDisplayCullBox, 1);
+ mctx->genCheckBox("パーティクル情報表示", &mDisplayParticleInfo, 1);
+ mctx->genButton("パーティクル履歴", 0x4000003);
+ mctx->genCheckBox("全部屋読み込み", &mLoadAllRooms, 1);
+ mctx->genButton("部屋メモリ", 0x4000001);
+ mctx->genButton("草、花、低木本数", 0x4000002);
+ mctx->genSlider("レールサイズ", &mRailSize, 0.0f, 100.0f);
+ mctx->genSlider("レールカラー(R)", &mRailColorR, 0, 0xff);
+ mctx->genSlider("レールカラー(G)", &mRailColorG, 0, 0xff);
+ mctx->genSlider("レールカラー(B)", &mRailColorB, 0, 0xff);
+ #endif
+}
+
+#if DEBUG
+void dScnPly_env_otherHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ JORReflexible::listenPropertyEvent(event);
+ JORFile file;
+
+ switch ((int)event->id) {
+ case 0x4000001:
+ OS_REPORT("#############################################\n");
+ break;
+ case 0x4000002:
+ break;
+ case 0x4000003:
+ g_envHIO.mOther.field_0x4e = 1;
+ break;
+ }
+}
+
+void dScnPly_env_otherHIO_c::printParticle() {
+ dDbVw_Report(20, 100, "Emitter Num <%d> X=<%d>", dComIfGp_particle_getEmitterNum(), dComIfGp_particle_getHeapSize());
+ dDbVw_Report(20, 120, "Particle Num <%d> Y=<%d>", dComIfGp_particle_getParticleNum(), dComIfGp_particle_getSceneHeapSize() - 0x180000);
+
+ int var_r26 = 0xA0;
+ int var_r28 = field_0x4f;
+ if (field_0x4e != 0) {
+ OS_REPORT("Particle Error !!\n");
+
+ for (int i = 0; i < 20; i++) {
+ var_r28--;
+ if (var_r28 < 0) {
+ var_r28= 19;
+ }
+
+ if (field_0x1c[var_r28] != 0xFFFF) {
+ OS_REPORT(" <ID=%d : %s>\n", field_0x1c[var_r28], dPa_name::getName(field_0x1c[var_r28]));
+ }
+
+ var_r26 += 20;
+ }
+
+ field_0x4e = 0;
+ }
}
+#endif
dScnPly_env_debugHIO_c::dScnPly_env_debugHIO_c() {
mBoxCullMinSize.set(-100.0f, -100.0f, -100.0f);
@@ -96,31 +424,152 @@ dScnPly_env_debugHIO_c::dScnPly_env_debugHIO_c() {
mSphereCullRadius = 100.0f;
}
-void dScnPly_env_debugHIO_c::genMessage(JORMContext* ctx) {
+void dScnPly_env_debugHIO_c::genMessage(JORMContext* mctx) {
+ #if DEBUG
+ mctx->genLabel("【ボックスカリング(CULLSIZE_DEBUG)サイズ】", 0x80000001);
+ mctx->genSlider("最小X", &mBoxCullMinSize.x, -10000.0f, 10000.0f);
+ mctx->genSlider("最小Y", &mBoxCullMinSize.y, -10000.0f, 10000.0f);
+ mctx->genSlider("最小Z", &mBoxCullMinSize.z, -10000.0f, 10000.0f);
+ mctx->genSlider("最大X", &mBoxCullMaxSize.x, -10000.0f, 10000.0f);
+ mctx->genSlider("最大Y", &mBoxCullMaxSize.y, -10000.0f, 10000.0f);
+ mctx->genSlider("最大Z", &mBoxCullMaxSize.z, -10000.0f, 10000.0f);
+
+ mctx->genLabel("【球カリング(CULLSIZE_Q_DEBUG)サイズ】", 0x80000001);
+ mctx->genSlider("中心X", &mSphereCullCenter.x, -10000.0f, 10000.0f);
+ mctx->genSlider("中心Y", &mSphereCullCenter.y, -10000.0f, 10000.0f);
+ mctx->genSlider("中心Z", &mSphereCullCenter.z, -10000.0f, 10000.0f);
+ mctx->genSlider("半径", &mSphereCullRadius, -10000.0f, 10000.0f);
+ #endif
+}
+
+#if DEBUG
+void dScnPly_env_debugHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ JORReflexible::listenPropertyEvent(event);
+
+ l_cullSizeBox[fopAc_CULLBOX_14_e].min = mBoxCullMinSize;
+ l_cullSizeBox[fopAc_CULLBOX_14_e].max = mBoxCullMaxSize;
+ l_cullSizeSphere[fopAc_CULLSPHERE_8_e - fopAc_CULLSPHERE_0_e].center = mSphereCullCenter;
+ l_cullSizeSphere[fopAc_CULLSPHERE_8_e - fopAc_CULLSPHERE_0_e].radius = mSphereCullRadius;
}
+void dScnPly_env_HIO_c::genMessage(JORMContext* mctx) {
+ mctx->genNode("デバッグ用", &mDebug, 0, 0);
+ mctx->genNode("その他", &mOther, 0, 0);
+}
+
+static u32 l_usedMemoryBlockSize = 0xFFFFFFFF;
+
+static int checkObjectSize(void* i_process, void* i_data) {
+ s16 profname = fpcM_GetProfName(i_process);
+ if (profname == PROC_BG) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)i_process;
+ *((u32*)i_data) += ((l_usedMemoryBlockSize != 0 && actor->heap == NULL) ? 0 : actor->heap->getHeapSize()) + actor->base.base.profile->process_size;
+ } else if (profname == PROC_PLAY_SCENE || profname == PROC_ROOM_SCENE) {
+ *((u32*)i_data) += ((base_process_class*)i_process)->profile->process_size;
+ } else if (fopKyM_IsKy(i_process)) {
+ *((u32*)i_data + 1) += ((base_process_class*)i_process)->profile->process_size;
+ } else if (fopAcM_IsActor(i_process)) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)i_process;
+ *((u32*)i_data + 1) += (actor->heap == NULL ? 0 : actor->heap->getHeapSize()) + actor->base.base.profile->process_size;
+
+ if (profname == PROC_ALINK) {
+ daAlink_c* alink = (daAlink_c*)actor;
+ *((u32*)i_data + 1) += alink->getOtherHeapSize();
+ } else if (profname == PROC_MIDNA) {
+ daMidna_c* midna = (daMidna_c*)actor;
+ *((u32*)i_data + 1) += midna->getOtherHeapSize();
+ }
+ }
+
+ return 1;
+}
+
+static void initUsedHeapSize() {
+ l_usedMemoryBlockSize = 0;
+ for (int i = 0; i < 19; i++) {
+ JKRHeap* heap = dStage_roomControl_c::getMemoryBlockHeap(i);
+ if (heap != NULL) {
+ l_usedMemoryBlockSize += heap->getHeapSize();
+ }
+ }
+}
+
+static bool lbl_8074CADB;
+
+static void drawUsedHeapSize() {
+ if (mDoCPd_c::getHoldL(PAD_3) && mDoCPd_c::getHoldR(PAD_3) && mDoCPd_c::getTrigZ(PAD_3)) {
+ lbl_8074CADB = !lbl_8074CADB;
+ }
+
+ if (lbl_8074CADB) {
+ int gameSize = mDoExt_getSafeGameHeapSize() - mDoExt_getGameHeap()->getTotalFreeSize();
+ int zeldaSize = mDoExt_getSafeZeldaHeapSize() - mDoExt_getZeldaHeap()->getTotalFreeSize();
+ int archiveSize = mDoExt_getSafeArchiveHeapSize() - mDoExt_getArchiveHeap()->getTotalFreeSize();
+ int j2dSize = mDoExt_getSafeJ2dHeapSize() - mDoExt_getJ2dHeap()->getTotalFreeSize();
+
+ u32 sizes[2];
+ sizes[0] = dComIfG_getStageAllSize();
+ sizes[1] = dComIfG_getObjectAllSize() - (dComIfG_getObjectSize("CamParam")
+ + dComIfG_getObjectSize("Event")
+ + dComIfG_getObjectSize("Always")
+ + dComIfG_getObjectSize("Alink")
+ + dComIfG_getObjectSize("Midna"));
+
+ fpcLyIt_All(checkObjectSize, sizes);
+ if (l_usedMemoryBlockSize != 0) {
+ sizes[0] = l_usedMemoryBlockSize + dComIfG_getStageSize("Stg_00") + dComIfG_getStageSize("Xtg_00");
+ }
+
+ int var_r25 = JKRGetAramFreeSize() / 1024;
+ JUTReport(380, 300, "Stage : %d(K)", (sizes[0] + 0x3FF) / 1024);
+ JUTReport(380, 316, "Obj : %d(K)", (sizes[1] + 0x3FF) / 1024);
+ JUTReport(380, 332, "C-ARAM : %d(K)", var_r25);
+ JUTReport(380, 348, ">Game : %d(K)", (gameSize + 0x3FF) / 1024);
+ JUTReport(380, 364, ">Zelda : %d(K)", (zeldaSize + 0x3FF) / 1024);
+ JUTReport(380, 380, ">Archive : %d(K)", (archiveSize + 0x3FF) / 1024);
+ JUTReport(380, 380, ">J2d : %d(K)", (j2dSize + 0x3FF) / 1024);
+ }
+}
+#endif
+
static int dScnPly_Draw(dScnPly_c* i_this) {
static s16 l_wipeType[] = {
- 0x0000, 0x0000, 0x0011, 0x0002, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0004, 0x0005, 0x0005,
- 0x0006, 0x0007, 0x0000, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0008, 0x0008,
+ 0, 0, 17, 2, 2, 1, 3, 1, 4, 4, 5, 5, 6, 7, 0, 0, 2, 2, 2, 2, 2, 8, 8,
};
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ fpc_ProcID id = fpcM_GetID(i_this);
+ drawUsedHeapSize();
+ dStage_DebugDisp();
+ #endif
+
dComIfG_Ccsp()->Move();
dComIfG_Bgsp().ClrMoveFlag();
- u8 useWhiteColor;
if (!fopOvlpM_IsPeek() && !dComIfG_resetToOpening(i_this)) {
- if (dComIfGp_isEnableNextStage()) {
+ if (dComIfGp_isEnableNextStage()
+ #if DEBUG
+ && !dScnMenu_c::isAutoSelect()
+ #endif
+ ) {
+ JUT_ASSERT(1019, dComIfGp_getNextStageWipe() < ARRAY_SIZEU(l_wipeType));
+
u8 wipe = dComIfGp_getNextStageWipe();
- fopScnM_ChangeReq(i_this, PROC_PLAY_SCENE, l_wipeType[wipe], 5);
+ #if DEBUG
+ if (g_kankyoHIO.navy.wipe_test_ON != 0xFF) {
+ wipe = g_kankyoHIO.navy.wipe_test_ON;
+ }
+ #endif
+
+ int rt = fopScnM_ChangeReq(i_this, PROC_PLAY_SCENE, l_wipeType[wipe], 5);
int hour = dKy_getdaytime_hour();
- useWhiteColor = hour >= 6 && hour < 18 ? true : false;
- BOOL tmp = useWhiteColor == 0 ? 1 : 0;
+ BOOL isDaytime = (hour >= 6 && hour < 18) ? FALSE : TRUE;
if (wipe == 1 || wipe == 2 || wipe == 7 || wipe == 17 || wipe == 21 ||
- ((wipe == 8 || wipe == 10 || wipe == 18) && tmp) ||
- ((wipe == 9 || wipe == 11 || wipe == 19) && !tmp))
+ ((wipe == 8 || wipe == 10 || wipe == 18) && isDaytime) ||
+ ((wipe == 9 || wipe == 11 || wipe == 19) && !isDaytime))
{
mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_saftyWhiteColor);
} else if (wipe == 14 || wipe == 20) {
@@ -136,42 +585,142 @@ static int dScnPly_Draw(dScnPly_c* i_this) {
}
}
}
+
dMdl_mng_c::reset();
- if (!dComIfGp_isPauseFlag() && dScnPly_c::pauseTimer == 0) {
+ if (!dComIfGp_isPauseFlag() && !dScnPly_c::isPause()
+ #if DEBUG
+ && !fapGm_HIO_c::isCaptureScreen()
+ #endif
+ ) {
if (fpcM_GetName(i_this) == PROC_PLAY_SCENE) {
dComIfGp_getVibration().Run();
}
daSus_c::execute();
dComIfG_Bgsp().Move();
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dPath_Move();
+ #endif
dComIfGp_particle_calc3D();
dComIfGp_particle_calc2D();
cCt_execCounter();
} else {
dPa_control_c::onStatus(1);
- if (dScnPly_c::pauseTimer == 0) {
+
+ if (!dScnPly_c::isPause()) {
dPa_control_c::onStatus(2);
}
+
if (dScnPly_c::pauseTimer == 0) {
dComIfGp_getVibration().Pause();
}
}
+ #if DEBUG
+ if (fopOvlpM_IsDoingReq() != TRUE) {
+ if (dScnMenu_c::isAutoSelect() || dComIfG_isSceneResetButton() || g_presetHIO.field_0x2717 != 0) {
+ if (g_presetHIO.field_0x2717 != 0) {
+ dSm_read_stageset(g_presetHIO.mPresetData);
+ g_presetHIO.field_0x2717 = 0;
+ }
+
+ s16 spA = 0;
+ if (dDemo_c::getMode() == 1) {
+ dDemo_c::end();
+ spA = 7;
+ }
+
+ fopScnM_ChangeReq(i_this, PROC_MENU_SCENE, spA, 5);
+ mDoAud_bgmStop(30);
+
+ if (fpcM_GetName(i_this) != PROC_PLAY_SCENE) {
+ dComIfG_playerStatusD();
+ }
+ }
+ }
+
+ dDebugPad.Update();
+
+ fapGm_HIO_c::printCpuTimer("");
+ fapGm_HIO_c::stopCpuTimer("ゲーム管理(計算処理2)");
+ fapGm_HIO_c::printCpuTimer("");
+ #endif
+
for (create_tag_class* i = fopDwIt_Begin(); i != NULL; i = fopDwIt_Next(i)) {
- fpcM_Draw(i->mpTagData);
+ void* process = i->mpTagData;
+ fpcM_Draw(process);
}
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
if (!dComIfGp_isPauseFlag()) {
dEyeHL_mng_c::update();
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dBgp_c::drawShare();
+ #endif
+ #if DEBUG
+ daSus_c::draw();
+ #endif
+
dComIfG_Ccsp()->Draw();
- dComIfGp_getAttention()->Draw();
+ #if DEBUG
+ dComIfG_Bgsp().Draw();
+ dPath_Draw();
+ #endif
+
+ dAttention_c* attention = dComIfGp_getAttention();
+ attention->Draw();
}
+ #if DEBUG
+ if (g_envHIO.mOther.mDisplayParticleInfo) {
+ g_envHIO.mOther.printParticle();
+ }
+
+ fapGm_HIO_c::printCpuTimer("");
+ fapGm_HIO_c::stopCpuTimer("ゲーム管理(描画処理)");
+ #endif
+
return 1;
}
+#if DEBUG
+static BOOL l_pause;
+static f32 l_pauseFrame;
+static u8 lbl_8074CAE4;
+static u32 l_sceneChangeStartTick;
+#endif
+
static int dScnPly_Execute(dScnPly_c* i_this) {
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
i_this->offReset();
+
+ #if DEBUG
+ if (lbl_8074CAE4) {
+ u32 var_r27 = OSGetTick() - l_sceneChangeStartTick;
+ OS_REPORT("\x1b[33m");
+ // "Scene transition time: %f seconds\n"
+ OS_REPORT("シーン切り替え時間 %f秒\n\x1B[m", (f32)OSTicksToMicroseconds(var_r27) / 1000000.0f);
+ lbl_8074CAE4 = 0;
+
+ initUsedHeapSize();
+ OS_REPORT("Game Heap <%d,%d,%d>\n", mDoExt_getGameHeap()->getTotalUsedSize(), mDoExt_getGameHeap()->getTotalFreeSize(), mDoExt_getGameHeap()->getFreeSize());
+ OS_REPORT("Zelda Heap <%d,%d,%d>\n", mDoExt_getZeldaHeap()->getTotalUsedSize(), mDoExt_getZeldaHeap()->getTotalFreeSize(), mDoExt_getZeldaHeap()->getFreeSize());
+ OS_REPORT("Archive Heap <%d,%d,%d>\n", mDoExt_getArchiveHeap()->getTotalUsedSize(), mDoExt_getArchiveHeap()->getTotalFreeSize(), mDoExt_getArchiveHeap()->getFreeSize());
+ OS_REPORT("最終残り %d(%fM)\n", JFWSystem::getRootHeap()->getTotalFreeSize(), (f32)JFWSystem::getRootHeap()->getTotalFreeSize() / (f32)0x100000);
+ OS_REPORT("拡張最終残り %d(%fM)\n", JKRGetRootHeap2()->getTotalFreeSize(), (f32)JKRGetRootHeap2()->getTotalFreeSize() / (f32)0x100000);
+ OS_REPORT("\x1b[m");
+ }
+ #endif
+
+ BOOL comboTrig = FALSE;
+
dStage_roomControl_c::offNoChangeRoom();
dStage_roomControl_c::setRoomReadId(0xFF);
@@ -188,11 +737,63 @@ static int dScnPly_Execute(dScnPly_c* i_this) {
}
dKy_itudemo_se();
+
+ #if DEBUG
+ if (mDoCPd_c::isConnect(PAD_3)) {
+ if (mDoCPd_c::getTrigStart(PAD_1) && !fapGmHIO_get2Ddraw()) {
+ comboTrig = TRUE;
+ } else if (mDoCPd_c::getHoldR(PAD_2) && mDoCPd_c::getTrigStart(PAD_2)) {
+ comboTrig = TRUE;
+ }
+
+ if (comboTrig == TRUE) {
+ if (l_pause) {
+ l_pause = FALSE;
+ } else {
+ l_pause = TRUE;
+ l_pauseFrame = 0.0f;
+ }
+ }
+
+ if (l_pause) {
+ l_pauseFrame += mDoCPd_c::getAnalogR(PAD_2);
+ if (!mDoCPd_c::getTrigZ(PAD_2) && l_pauseFrame < 1.0f) {
+ i_this->onDebugPause();
+ return 1;
+ }
+
+ l_pauseFrame -= 1.0f;
+ }
+
+ i_this->offDebugPause();
+ }
+ #endif
+
if (!dComIfGp_isPauseFlag()) {
+ #if DEBUG
+ dJprev_c::get()->update();
+ #endif
+
dDemo_c::update();
+
+ #if DEBUG
+ dJcame_c::get()->update();
+ #endif
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dBgp_c::executeShare();
+ #endif
+
dComIfGp_getEvent()->Step();
dComIfGp_getAttention()->Run();
}
+
+ #if DEBUG
+ fapGm_HIO_c::printCpuTimer("");
+ fapGm_HIO_c::stopCpuTimer("ゲーム管理(計算処理1)");
+ fapGm_HIO_c::printCpuTimer("");
+ #endif
+
return 1;
}
@@ -201,40 +802,34 @@ static int dScnPly_IsDelete(dScnPly_c i_this) {
return 1;
}
-struct PreLoadInfo {
- const char* stageName;
- const s16* profNameTbl;
- const char** resNameTbl;
- u8 dylKeyTblNum;
- u8 resNameNum;
-};
-
-static const char* T_JOINT_resName[1] = {"Always"};
-
-static PreLoadInfo const PreLoadInfoT[1] = {
- {
- "T_JOINT",
- T_JOINT_dylKeyTbl,
- T_JOINT_resName,
- 1,
- 1,
- },
-};
-
-static s8 preLoadNo = -1;
-
-static u8 doPreLoad = 1;
-
static int dScnPly_Delete(dScnPly_c* i_this) {
+ UNUSED(i_this);
+
+ #if VERSION == VERSION_SHIELD_DEBUG
+ for (int i = 0; i < 32; i++) {
+ char* bank = dStage_roomControl_c::getArcBank(i);
+ if (strcmp(bank, "") != 0) {
+ int rt = dComIfG_syncObjectRes(bank);
+ if (rt > 0) {
+ return 0;
+ }
+ }
+ }
+ #endif
+
daSus_c::reset();
dMpath_c::remove();
dTres_c::remove();
- dComIfGp_getAttention()->~dAttention_c();
+ dAttention_c* attention = dComIfGp_getAttention();
+ attention->~dAttention_c();
dComIfGp_getVibration().Remove();
dComIfG_Bgsp().Dt();
dComIfG_Ccsp()->Dt();
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dPath_Dt();
+ #endif
dStage_Delete();
dComIfGp_event_remove();
@@ -244,6 +839,11 @@ static int dScnPly_Delete(dScnPly_c* i_this) {
dComIfGp_getMsgDtArchive(1)->removeResourceAll();
JKRUnmountArchive(dComIfGp_getMsgDtArchive(1));
+ #if DEBUG
+ dJcame_c::remove();
+ dJprev_c::remove();
+ #endif
+
dDemo_c::remove();
fopMsgM_destroyExpHeap(dComIfGp_getExpHeap2D());
@@ -256,11 +856,25 @@ static int dScnPly_Delete(dScnPly_c* i_this) {
mDoGph_gInf_c::getBloom()->remove();
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dBgp_c::removeShare();
+ #endif
+
dComIfGs_offPlayerFieldLastStayFieldDataExistFlag();
+
+ #if DEBUG
+ daObj::HioObj_c::clean();
+ mDoHIO_deleteChild(g_envHIO.field_0x4);
+ mDoHIO_deleteChild(g_save_bit_HIO.field_0x4);
+ g_preLoadHIO.removeHIO();
+ #endif
+
dComIfGp_setWindowNum(0);
dComIfGd_setView(NULL);
if (preLoadNo >= 0) {
+ OS_REPORT("\x1b[32mプリロード解放\n\x1b[m");
+
const char** resname_table = PreLoadInfoT[preLoadNo].resNameTbl;
int res_num = PreLoadInfoT[preLoadNo].resNameNum;
if (resname_table != NULL && (*resname_table != NULL)) {
@@ -288,6 +902,113 @@ static int dScnPly_Delete(dScnPly_c* i_this) {
return 1;
}
+#if DEBUG
+static u32 getArchiveHeapSize(JKRHeap* i_heap, dRes_info_c* i_resInfo) {
+ if (i_resInfo == NULL) {
+ return 0;
+ }
+
+ u32 size = 0;
+ int var_r29;
+ JKRArchive* archive = i_resInfo->getArchive();
+ if (archive != NULL) {
+ var_r29 = i_heap->getSize(archive);
+ if (var_r29 > 0) {
+ size += var_r29 + 0x10;
+ }
+
+ var_r29 = i_heap->getSize(((JKRAramArchive*)archive)->mBlock);
+ if (var_r29 > 0) {
+ size += var_r29 + 0x10;
+ }
+ }
+
+ JKRSolidHeap* dataHeap = i_resInfo->getDataHeap();
+ if (dataHeap != NULL) {
+ int var_r26 = i_heap->getSize(dataHeap);
+ if (var_r26 > 0) {
+ size += var_r26 + 0x10;
+ }
+ }
+
+ return size;
+}
+
+static u32 getArchiveBankHeapSize(JKRHeap* i_heap) {
+ u32 size = 0;
+ for (int i = 0; i < 32; i++) {
+ char* bank = dStage_roomControl_c::getArcBank(i);
+ if (strcmp(bank, "") != 0) {
+ size += getArchiveHeapSize(i_heap, dComIfG_getObjectResInfo(bank));
+ }
+ }
+
+ return size;
+}
+
+static u32 getStageHeapSize(JKRHeap* i_heap) {
+ u32 size = 0;
+ for (int i = 0; i < 19; i++) {
+ JKRHeap* heap = dStage_roomControl_c::getMemoryBlockHeap(i);
+ if (heap != NULL) {
+ int var_r26 = i_heap->getSize(heap);
+ if (var_r26 > 0) {
+ size += var_r26 + 0x10;
+ }
+ }
+ }
+
+ if (size == 0) {
+ for (int i = 0; i < 64; i++) {
+ size += getArchiveHeapSize(i_heap, dComIfG_getStageResInfo(dComIfG_getRoomArcName(i)));
+ }
+ }
+
+ size += getArchiveHeapSize(i_heap, dComIfG_getStageResInfo("Stg_00")) + getArchiveHeapSize(i_heap, dComIfG_getStageResInfo("Xtg_00"));
+ return size;
+}
+
+static BOOL heapSizeCheck(const char* i_label, JKRExpHeap* i_heap, s32 i_base, BOOL param_3) {
+ s32 free = i_heap->getFreeSize();
+ s32 total = i_heap->getTotalUsedSize();
+
+ if (param_3) {
+ total -= getArchiveBankHeapSize(i_heap);
+ total -= getStageHeapSize(i_heap);
+ }
+
+ s32 archiveHeapSize = mDoExt_getSafeArchiveHeapSize();
+ f32 totalRatio = (f32)total / (f32)archiveHeapSize;
+ f32 freeRatio = (f32)free / (f32)total;
+ OS_REPORT("%s Free<%d> Total<%d> Base<%d> TotalRatio<%f> FreeRatio<%f>\n",
+ i_label,
+ free,
+ total,
+ i_base,
+ totalRatio,
+ freeRatio
+ );
+
+ int var_r30 = std::abs(total - i_base);
+ if (var_r30 > 64) {
+ // "%d (0x%x) byte difference!\n"
+ OS_REPORT("%d (0x%x) バイトの差があります!\n", var_r30, var_r30);
+ i_heap->dump();
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static BOOL heapSizeCheck() {
+ return heapSizeCheck("ArchiveHeap", mDoExt_getArchiveHeap(), mDoExt_getSafeArchiveHeapSize(), TRUE)
+ && heapSizeCheck("J2dHeap", mDoExt_getJ2dHeap(), mDoExt_getSafeJ2dHeapSize(), FALSE)
+ && heapSizeCheck("GameHeap", mDoExt_getGameHeap(), mDoExt_getSafeGameHeapSize(), TRUE)
+ && heapSizeCheck("ZeldaHeap", mDoExt_getZeldaHeap(), mDoExt_getSafeZeldaHeapSize(), FALSE)
+ && heapSizeCheck("CommandHeap", mDoExt_getCommandHeap(), mDoExt_getSafeCommandHeapSize(), FALSE);
+}
+#endif
+
bool dScnPly_c::resetGame() {
if (fpcM_GetName(this) == PROC_OPENING_SCENE) {
if (!dStage_roomControl_c::resetArchiveBank(0)) {
@@ -302,6 +1023,7 @@ bool dScnPly_c::resetGame() {
field_0x1d4 = 1;
}
} else {
+ #if VERSION != VERSION_SHIELD_DEBUG
if (dComIfGp_getNextStagePoint() == -4 || (dComIfGs_getLastSceneMode() & 0xF) == 0xC ||
!strcmp(dComIfGp_getNextStageName(), "F_SP109") ||
(!strcmp(dComIfGp_getNextStageName(), "F_SP116") &&
@@ -311,6 +1033,7 @@ bool dScnPly_c::resetGame() {
return false;
}
}
+ #endif
}
dComIfG_setBrightness(255);
@@ -323,8 +1046,10 @@ void dScnPly_c::offReset() {
if (field_0x1d4 != 0 && !fopOvlpM_IsPeek()) {
mDoRst::offReset();
mDoRst::offResetPrepare();
+ #if VERSION != VERSION_SHIELD_DEBUG
JUTGamePad::C3ButtonReset::sResetOccurred = false;
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
+ #endif
field_0x1d4 = 0;
}
}
@@ -332,14 +1057,35 @@ void dScnPly_c::offReset() {
static int phase_00(dScnPly_c* i_this) {
if (!i_this->resetGame()) {
return cPhs_INIT_e;
- } else {
- #if PLATFORM_WII
- data_8053a730 = 1;
- #endif
+ }
- mDoGph_gInf_c::offBlure();
- return cPhs_NEXT_e;
+ #if PLATFORM_WII
+ data_8053a730 = 1;
+ #endif
+
+ #if DEBUG
+ l_sceneChangeStartTick = OSGetTick();
+ lbl_8074CAE4 = 1;
+
+ mDoExt_setSafeGameHeapSize();
+ mDoExt_setSafeZeldaHeapSize();
+ mDoExt_setSafeCommandHeapSize();
+ mDoExt_setSafeArchiveHeapSize();
+ mDoExt_setSafeJ2dHeapSize();
+ #endif
+
+ mDoGph_gInf_c::offBlure();
+
+ #if DEBUG
+ if (!heapSizeCheck()) {
+ BOOL isDispWarning = mDoCPd_c::isConnect(PAD_3);
+ if (isDispWarning) {
+ JUT_WARN(2046, "%s", "Memory Danger !!");
+ }
}
+ #endif
+
+ return cPhs_NEXT_e;
}
static int phase_01(dScnPly_c* i_this) {
@@ -353,6 +1099,7 @@ static int phase_01(dScnPly_c* i_this) {
mDoAud_setInDarkness(false);
}
+
mDoAud_setSceneName(dComIfGp_getStartStageName(),
dComIfGp_getStartStageRoomNo(),
dComIfG_play_c::getLayerNo_common(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo(),
@@ -370,19 +1117,17 @@ static int phase_0(dScnPly_c* i_this) {
}
static int phase_1(dScnPly_c* i_this) {
- u32 id = fopScnM_GetID(i_this);
- dStage_roomControl_c::setProcID(id);
+ dStage_roomControl_c::setProcID(fopScnM_GetID(i_this));
dComIfGp_setStartStage(dComIfGp_getNextStartStage());
if (dComIfGp_getStartStageLayer() < 0 && daPy_py_c::checkRoomRestartStart()) {
- const char* stage = dComIfGp_getStartStageName();
- s8 room = dComIfGp_getStartStageRoomNo();
- s8 layer = dComIfGp_getStartStageLayer();
- if (dComIfG_play_c::getLayerNo_common_common(stage, room, layer) < 0) {
+ int layer = dComIfG_play_c::getLayerNo_common_common(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo(), dComIfGp_getStartStageLayer());
+ if (layer < 0) {
dComIfGp_setStartStageLayer(dComIfGp_getLayerOld());
}
}
+
dComIfGp_offEnableNextStage();
// Stage: Faron Woods, Room: Faron Spring
@@ -431,14 +1176,32 @@ static int phase_1(dScnPly_c* i_this) {
dComIfGp_world_dark_set(0);
}
+ #if DEBUG
+ if (dKy_darkworld_check()) {
+ if (dComIfGp_getStartStageLayer() != -1 && dComIfGp_getStartStageLayer() < 10 && dComIfG_play_c::getLayerNo(0) < 10) {
+ if (strcmp(dComIfGp_getStartStageName(), "D_MN08") != 0) {
+ // "Twilight layer spec error! sasaki"
+ OSReport_Error("\nトワイライトのレイヤー指定異常です! sasaki");
+ // "(If loaded from the debug menu, you can directly specify layers, so I can't tell if it's invalid.)"
+ OSReport_Error("\n(デバグメニューからの場合はレイヤー直指定できるので危険なのかは予測つきません。)");
+
+ OSReport_Error("\nstage[%s]", dComIfGp_getStartStageName());
+ OSReport_Error("\nroom[%d]", dComIfGp_getStartStageRoomNo());
+ OSReport_Error("\nlayer[%d]", dComIfG_play_c::getLayerNo(0));
+ OSReport_Error("\nTW1[%d]", dComIfGs_isDarkClearLV(0));
+ OSReport_Error("\nTW2[%d]", dComIfGs_isDarkClearLV(1));
+ OSReport_Error("\nTW3[%d]", dComIfGs_isDarkClearLV(2));
+ OSReport_Error("\nTW4[%d]", dComIfGs_isDarkClearLV(3));
+ }
+ }
+ }
+ #endif
+
// Stage: Lake Hylia, Room: Fountain
if (!strcmp(dComIfGp_getStartStageName(), "F_SP115") && dComIfGp_getStartStageRoomNo() == 1 &&
dComIfGp_getStartStageLayer() < 0)
{
- const char* stage = dComIfGp_getStartStageName();
- s8 room = dComIfGp_getStartStageRoomNo();
- s8 layer = dComIfGp_getStartStageLayer();
- if (dComIfG_play_c::getLayerNo_common(stage, room, layer) == 9) {
+ if (dComIfG_play_c::getLayerNo_common(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo(), dComIfGp_getStartStageLayer()) == 9) {
dComIfGp_setStartStageLayer(9);
}
}
@@ -467,6 +1230,14 @@ static int phase_1(dScnPly_c* i_this) {
dComIfGs_onSaveDunSwitch(30);
}
+ #if DEBUG
+ if (!strcmp(dComIfGp_getStartStageName(), "NPC_GND") && dComIfGp_getStartStageRoomNo() == 0 &&
+ dComIfGp_getStartStageLayer() >= 12)
+ {
+ dComIfGp_world_dark_set(1);
+ }
+ #endif
+
dKy_darkworld_Area_set(dComIfGp_getStartStageName(), dComIfGp_getStartStageRoomNo());
// Stage: Hyrule Castle Sewers, Room: Prison Cell
@@ -507,21 +1278,36 @@ static int phase_1(dScnPly_c* i_this) {
}
dComIfGs_BossLife_public_Set(0xFF);
+
+ #if DEBUG
+ if (g_env_light.light_mask_type & 0xF0) {
+ g_env_light.light_mask_type = g_env_light.light_mask_type & 0xF;
+ } else {
+ g_env_light.light_mask_type = 0;
+ }
+ #else
g_env_light.light_mask_type = 0;
+ #endif
JUTReportConsole_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(),
dComIfGp_getStartStageRoomNo());
dComIfGp_setStatus(0);
+
if (dComIfG_syncStageRes("Stg_00") < 0) {
- dComIfG_setStageRes("Stg_00", NULL);
+ int rt = dComIfG_setStageRes("Stg_00", NULL);
+ JUT_ASSERT(2442, rt == 1);
}
+
return cPhs_NEXT_e;
}
static int phase_1_0(dScnPly_c* i_this) {
static char camparamarc[10] = "CamParam";
- if (dComIfG_syncStageRes("Stg_00")) {
+ int rt = dComIfG_syncStageRes("Stg_00");
+ JUT_ASSERT(2469, rt >= 0);
+
+ if (rt != 0) {
return cPhs_INIT_e;
} else {
dStage_infoCreate();
@@ -533,8 +1319,8 @@ static int phase_1_0(dScnPly_c* i_this) {
}
static int phase_2(dScnPly_c* i_this) {
- int tmp = dComIfG_syncAllObjectRes();
- if (tmp >= 0 && tmp != 0) {
+ int rt = dComIfG_syncAllObjectRes();
+ if (rt >= 0 && rt != 0) {
return cPhs_INIT_e;
}
@@ -544,6 +1330,13 @@ static int phase_2(dScnPly_c* i_this) {
particle_no = dStage_stagInfo_GetParticleNo(dComIfGp_getStage()->getStagInfo());
}
+ #if DEBUG
+ if (fapGm_HIO_c::mParticle254Fix) {
+ particle_no = 0xFE;
+ }
+ #endif
+
+ OS_REPORT("============== sceneParticleNo=%d\n", particle_no);
dComIfGp_particle_readScene(particle_no, &i_this->sceneCommand);
dMsgObject_readMessageGroup(&i_this->field_0x1d0);
return cPhs_NEXT_e;
@@ -558,6 +1351,10 @@ static int phase_3(dScnPly_c* i_this) {
return cPhs_INIT_e;
}
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dBgp_c::createShare();
+ #endif
+
return cPhs_NEXT_e;
}
@@ -570,9 +1367,16 @@ dScnPly_preset_HIO_c g_presetHIO;
#endif
static int phase_4(dScnPly_c* i_this) {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ if (!dBgp_c::executeShare()) {
+ return cPhs_INIT_e;
+ }
+ #endif
+
if (i_this->sceneCommand) {
+ JUT_ASSERT(2610, i_this->sceneCommand->getMemAddress() != NULL);
dComIfGp_particle_createScene(i_this->sceneCommand->getMemAddress());
- i_this->sceneCommand->destroy();
+ delete i_this->sceneCommand;
} else {
dComIfGp_particle_createScene(NULL);
}
@@ -583,13 +1387,25 @@ static int phase_4(dScnPly_c* i_this) {
}
dComIfGp_calcNowRegion();
+ #if DEBUG
+ dComIfG_initStopwatch();
+ #endif
dComIfG_Bgsp().Ct();
fopAcM_lc_c::getLineCheck()->ClearPi();
fopAcM_gc_c::getGroundCheck()->ClearPi();
fopAcM_rc_c::getRoofCheck()->ClearPi();
fopAcM_wt_c::getWaterCheck()->ClearPi();
dComIfG_Ccsp()->Ct();
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dPath_Ct();
+ #endif
dDemo_c::create();
+ dEyeHL_mng_c::create();
+
+ #if DEBUG
+ dJcame_c::create(dDemo_c::getSystem(), 0.03333334f, *mDoCPd_c::getGamePad(PAD_4));
+ dJprev_c::create((JStudio::TControl*)dDemo_c::getControl(), *mDoCPd_c::getGamePad(PAD_4));
+ #endif
dComIfGp_setPlayerInfo(0, NULL, 0);
for (int i = 0; i < 2; i++) {
@@ -602,11 +1418,19 @@ static int phase_4(dScnPly_c* i_this) {
dComIfGd_setViewport(NULL);
dComIfGd_setView(NULL);
- dComIfGp_setExpHeap2D(fopMsgM_createExpHeap(0xBB800, NULL));
- dComIfGp_setMsgExpHeap(fopMsgM_createExpHeap(0xA800, NULL));
+ JKRExpHeap* heap = fopMsgM_createExpHeap(0xBB800, NULL);
+ JUT_ASSERT(2704, heap != NULL);
+ dComIfGp_setExpHeap2D(heap);
+
+ JKRExpHeap* heap2 = fopMsgM_createExpHeap(0xA800, NULL);
+ JUT_ASSERT(2709, heap2 != NULL);
+ dComIfGp_setMsgExpHeap(heap2);
if (fpcM_GetName(i_this) == PROC_OPENING_SCENE) {
fopAcM_create(PROC_TITLE, 0, NULL, -1, NULL, NULL, -1);
+ #if DEBUG
+ g_playerKind = 0;
+ #endif
dComIfGs_init();
dComIfGs_setOptPointer(0);
dComIfGs_setLife(12);
@@ -622,10 +1446,20 @@ static int phase_4(dScnPly_c* i_this) {
dComIfGp_createSimpleModel();
dMdl_mng_c::create();
- mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 30);
- g_envHIO.field_0x4 = -1;
- g_save_bit_HIO.field_0x4 = -1;
- new (dComIfGp_getAttention()) dAttention_c(dComIfGp_getPlayer(0), 0);
+ mDoGph_gInf_c::setTickRate(OS_TIMER_CLOCK / 30);
+
+ #if DEBUG
+ g_preLoadHIO.entryHIO("プリロード制御");
+ #endif
+ g_envHIO.field_0x4 = mDoHIO_CREATE_CHILD("描画設定", &g_envHIO);
+ g_save_bit_HIO.field_0x4 = mDoHIO_CREATE_CHILD("記録ビット", &g_save_bit_HIO);
+
+ #if DEBUG
+ daObj::HioObj_c::init();
+ #endif
+
+ dAttention_c* attention = dComIfGp_getAttention();
+ new (attention) dAttention_c(dComIfGp_getPlayer(0), 0);
dComIfGp_getVibration().Init();
daYkgr_c::init();
@@ -650,6 +1484,7 @@ static int phase_4(dScnPly_c* i_this) {
return cPhs_COMPLEATE_e;
}
+ OS_REPORT("\x1b[32mプリロードやります\n\x1b[m");
resPreLoadTime0 = OSGetTime();
return cPhs_NEXT_e;
}
@@ -657,25 +1492,30 @@ static int phase_4(dScnPly_c* i_this) {
static int phase_5(dScnPly_c* i_this) {
if (preLoadNo >= 0) {
int phase_state = cPhs_NEXT_e;
+ int goodLoads = 0;
+ int loadNum = 0;
const char** resNames = PreLoadInfoT[preLoadNo].resNameTbl;
s32 resNameNum = PreLoadInfoT[preLoadNo].resNameNum;
if (resNames != NULL && *resNames != NULL) {
JUT_ASSERT(2830, resNameNum <= ARRAY_SIZEU(resPhase));
- int goodLoads = 0;
- int loadNum = 0;
+
for (int i = 0; i < resNameNum; i++) {
- if (dComIfG_resLoad(&resPhase[i], resNames[i]) == 4) {
- goodLoads++;
- } else {
+ int load_phase = dComIfG_resLoad(&resPhase[i], resNames[i]);
+ if (load_phase != cPhs_COMPLEATE_e) {
phase_state = cPhs_INIT_e;
+ } else {
+ goodLoads++;
}
loadNum++;
}
+
+ OS_REPORT("\x1b[32mリソースプリロード %d/%d\n\x1b[m", goodLoads, loadNum);
}
if (phase_state == cPhs_COMPLEATE_e) {
resPreLoadTime1 = OSGetTime();
+ OS_REPORT("\x1b[32mリソースプリロード %lld ms\n\x1b[m", OSTicksToMilliseconds(resPreLoadTime1 - resPreLoadTime0));
}
return phase_state;
@@ -687,25 +1527,30 @@ static int phase_5(dScnPly_c* i_this) {
static int phase_6(dScnPly_c* i_this) {
if (preLoadNo >= 0) {
int phase_state = cPhs_NEXT_e;
+ int goodLoads = 0;
+ int loadNum = 0;
const s16* dylKeyTbl = PreLoadInfoT[preLoadNo].profNameTbl;
s32 dylKeyTblNum = PreLoadInfoT[preLoadNo].dylKeyTblNum;
if (dylKeyTbl != NULL && *dylKeyTbl != 0) {
JUT_ASSERT(2864, dylKeyTblNum <= ARRAY_SIZEU(dylPhase));
- int goodLoads = 0;
- int loadNum = 0;
+
for (int i = 0; i < dylKeyTblNum; i++) {
- if (cDylPhs::Link(&dylPhase[i], dylKeyTbl[i]) == cPhs_COMPLEATE_e) {
- goodLoads++;
- } else {
+ int load_phase = cDylPhs::Link(&dylPhase[i], dylKeyTbl[i]);
+ if (load_phase != cPhs_COMPLEATE_e) {
phase_state = cPhs_INIT_e;
+ } else {
+ goodLoads++;
}
loadNum++;
}
+
+ OS_REPORT("\x1b[32mダイナミックリンクプリロード %d/%d\n\x1b[m", goodLoads, loadNum);
}
if (phase_state == cPhs_COMPLEATE_e) {
dylPreLoadTime1 = OSGetTime();
+ OS_REPORT("\x1b[32mダイナミックリンクプリロード %lld ms\n\x1b[m", OSTicksToMilliseconds(dylPreLoadTime1 - dylPreLoadTime0));
}
return phase_state;
@@ -718,17 +1563,24 @@ static int phase_compleate(void* i_this) {
return cPhs_COMPLEATE_e;
}
-static void dScnPly_Create(scene_class* i_this) {
+static int dScnPly_Create(scene_class* i_this) {
static request_of_phase_process_fn l_method[] = {
- (request_of_phase_process_fn)phase_00, (request_of_phase_process_fn)phase_1,
- (request_of_phase_process_fn)phase_1_0, (request_of_phase_process_fn)phase_01,
- (request_of_phase_process_fn)phase_0, (request_of_phase_process_fn)phase_2,
- (request_of_phase_process_fn)phase_3, (request_of_phase_process_fn)phase_4,
- (request_of_phase_process_fn)phase_5, (request_of_phase_process_fn)phase_6,
+ (request_of_phase_process_fn)phase_00,
+ (request_of_phase_process_fn)phase_1,
+ (request_of_phase_process_fn)phase_1_0,
+ (request_of_phase_process_fn)phase_01,
+ (request_of_phase_process_fn)phase_0,
+ (request_of_phase_process_fn)phase_2,
+ (request_of_phase_process_fn)phase_3,
+ (request_of_phase_process_fn)phase_4,
+ (request_of_phase_process_fn)phase_5,
+ (request_of_phase_process_fn)phase_6,
(request_of_phase_process_fn)phase_compleate,
};
- dComLbG_PhaseHandler(&static_cast<dScnPly_c*>(i_this)->field_0x1c4, l_method, i_this);
+ dScnPly_c* a_this = (dScnPly_c*)i_this;
+ int phase_state = dComLbG_PhaseHandler(&a_this->field_0x1c4, l_method, a_this);
+ return phase_state;
}
static scene_method_class l_dScnPly_Method = {
diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp
index cd0fcd0958..e1bd46d431 100644
--- a/src/d/d_stage.cpp
+++ b/src/d/d_stage.cpp
@@ -1552,7 +1552,7 @@ u8 data_8074C56A_debug;
u8 data_8074C56B_debug;
u8 data_8074C56C_debug;
-u32 dStage_roomControl_c::mProcID;
+fpc_ProcID dStage_roomControl_c::mProcID;
s8 dStage_roomControl_c::mStayNo;
@@ -2485,7 +2485,7 @@ static void dStage_dt_c_stageInitLoader(void* i_data, dStage_dt_c* i_stage) {
}
#if DEBUG
-static void dStage_DebugDisp() {
+void dStage_DebugDisp() {
if (data_8074C569_debug) {
JUTReport(30, 270, "envLayerSet: EnvRoom None");
}
diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp
index 2bc28c2014..8c0bb21f31 100644
--- a/src/f_op/f_op_actor_mng.cpp
+++ b/src/f_op/f_op_actor_mng.cpp
@@ -895,7 +895,7 @@ bool fopAcM_checkCullingBox(Mtx m, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z
return false;
}
-static cull_box l_cullSizeBox[] = {
+cull_box l_cullSizeBox[fopAc_CULLBOX_MAX_e] = {
{
{-40.0f, 0.0f, -40.0f},
{40.0f, 125.0f, 40.0f},
@@ -960,7 +960,7 @@ static cull_box l_cullSizeBox[] = {
#endif
};
-static cull_sphere l_cullSizeSphere[] = {
+cull_sphere l_cullSizeSphere[fopAc_CULLSPHERE_MAX_e] = {
{
{0.0f, 0.0f, 0.0f},
80.0f,
diff --git a/src/f_op/f_op_kankyo.cpp b/src/f_op/f_op_kankyo.cpp
index c65007622a..2e0563f2c9 100644
--- a/src/f_op/f_op_kankyo.cpp
+++ b/src/f_op/f_op_kankyo.cpp
@@ -12,8 +12,8 @@
static int fopKy_KANKYO_TYPE;
-void fopKy_IsKankyo(void* i_this) {
- fpcM_IsJustType(fopKy_KANKYO_TYPE, ((kankyo_class*)i_this)->type);
+BOOL fopKy_IsKankyo(void* i_this) {
+ return fpcM_IsJustType(fopKy_KANKYO_TYPE, ((kankyo_class*)i_this)->type);
}
static int fopKy_Draw(void* i_this) {
diff --git a/src/f_op/f_op_kankyo_mng.cpp b/src/f_op/f_op_kankyo_mng.cpp
index 0093173817..fe71a828c2 100644
--- a/src/f_op/f_op_kankyo_mng.cpp
+++ b/src/f_op/f_op_kankyo_mng.cpp
@@ -11,8 +11,8 @@ void dummy(fpcLyIt_JudgeFunc i_createFunc, void* i_this) {
fpcM_Search(i_createFunc, i_this);
}
-void fopKyM_IsKy(void* i_this) {
- fopKy_IsKankyo((fopKyM_prm_class*)i_this);
+BOOL fopKyM_IsKy(void* i_this) {
+ return fopKy_IsKankyo((fopKyM_prm_class*)i_this);
}
fopKyM_prm_class* fopKyM_CreateAppend() {
diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp
index 231c818438..9d34eae1ee 100644
--- a/src/m_Do/m_Do_audio.cpp
+++ b/src/m_Do/m_Do_audio.cpp
@@ -22,7 +22,7 @@ u8 mDoAud_zelAudio_c::mInitFlag;
u8 mDoAud_zelAudio_c::mResetFlag;
-bool mDoAud_zelAudio_c::mBgmSet;
+u8 mDoAud_zelAudio_c::mBgmSet;
void mDoAud_zelAudio_c::reset() {
mBgmSet = false;