summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_e_bu.h4
-rw-r--r--include/d/actor/d_a_e_zh.h2
-rw-r--r--include/d/actor/d_a_midna.h6
-rw-r--r--include/d/actor/d_a_obj_twGate.h31
-rw-r--r--include/d/actor/d_a_obj_volcbom.h107
-rw-r--r--include/d/actor/d_a_player.h3
-rw-r--r--include/d/d_com_inf_game.h4
-rw-r--r--include/f_op/f_op_actor_mng.h12
-rw-r--r--include/f_pc/f_pc_base.h8
-rw-r--r--include/f_pc/f_pc_manager.h2
10 files changed, 154 insertions, 25 deletions
diff --git a/include/d/actor/d_a_e_bu.h b/include/d/actor/d_a_e_bu.h
index 8ec8f9a9a5..639ab6c7a9 100644
--- a/include/d/actor/d_a_e_bu.h
+++ b/include/d/actor/d_a_e_bu.h
@@ -67,11 +67,13 @@ public:
STATIC_ASSERT(sizeof(e_bu_class) == 0xaa4);
-class daE_BU_HIO_c {
+class daE_BU_HIO_c : public JORReflexible {
public:
/* 806911AC */ daE_BU_HIO_c();
/* 806941D4 */ virtual ~daE_BU_HIO_c() {}
+ void genMessage(JORMContext* ctx);
+
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 fly_speed;
diff --git a/include/d/actor/d_a_e_zh.h b/include/d/actor/d_a_e_zh.h
index 6bcbb6524a..9ddb99f390 100644
--- a/include/d/actor/d_a_e_zh.h
+++ b/include/d/actor/d_a_e_zh.h
@@ -118,6 +118,8 @@ public:
/* 8082902C */ daE_ZH_HIO_c();
/* 8082F160 */ virtual ~daE_ZH_HIO_c() {}
+ void genMessage(JORMContext* ctx);
+
// ボールマスター (Ball Master)
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size; // モデルサイズ (Model Size)
diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h
index 8e2fef4509..5f57975630 100644
--- a/include/d/actor/d_a_midna.h
+++ b/include/d/actor/d_a_midna.h
@@ -136,6 +136,7 @@ public:
FLG0_UNK_4 = 4,
FLG0_UNK_2 = 2,
FLG0_UNK_1 = 1,
+ FLG0_TAG_PORTAL = FLG0_TAG_WAIT | FLG0_PORTAL_OBJ_CALL,
};
enum daMidna_FLG1 {
@@ -298,6 +299,11 @@ public:
onEndResetStateFlg0(ERFLG0_UNK_2);
}
+ void onTagWaitPosPortalObj(const cXyz& i_pos) {
+ mTagWaitPos = i_pos;
+ onStateFlg0(FLG0_TAG_PORTAL);
+ }
+
void onTagWaitPos(const cXyz* param_0) {
mTagWaitPos = *param_0;
onStateFlg0(FLG0_TAG_WAIT);
diff --git a/include/d/actor/d_a_obj_twGate.h b/include/d/actor/d_a_obj_twGate.h
index 36a79741a1..56ad450466 100644
--- a/include/d/actor/d_a_obj_twGate.h
+++ b/include/d/actor/d_a_obj_twGate.h
@@ -2,6 +2,7 @@
#define D_A_OBJ_TWGATE_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,24 +12,36 @@
* @details
*
*/
-class daTwGate_c : public fopAc_ac_c {
+class daTwGate_c : public dBgS_MoveBgActor {
public:
/* 80D1FB84 */ void setBaseMtx();
- /* 80D1FC0C */ void CreateHeap();
- /* 80D1FD44 */ void create();
- /* 80D1FFA4 */ void Execute(f32 (**)[3][4]);
- /* 80D200B4 */ void Draw();
- /* 80D20180 */ void Delete();
+ /* 80D1FC0C */ int CreateHeap();
+ /* 80D1FD44 */ int create();
+ /* 80D1FFA4 */ int Execute(Mtx**);
+ /* 80D200B4 */ int Draw();
+ /* 80D20180 */ int Delete();
+
+ int getGateType() { return fopAcM_GetParamBit(this, 4, 8); }
+
private:
- /* 0x568 */ u8 field_0x568[0x5fc - 0x568];
+ /* 0x5A0 */ request_of_phase_process_class mPhase;
+ /* 0x5A8 */ J3DModel* mModel;
+ /* 0x5AC */ mDoExt_btkAnm mBtk;
+ /* 0x5C4 */ mDoExt_brkAnm mBrk;
+ /* 0x5DC */ u8 mGateType;
+ /* 0x5E0 */ cM3dGLin mLine;
};
STATIC_ASSERT(sizeof(daTwGate_c) == 0x5fc);
-class daTwGate_HIO_c {
+class daTwGate_HIO_c : public fOpAcm_HIO_entry_c {
public:
/* 80D1FAAC */ daTwGate_HIO_c();
- /* 80D2024C */ ~daTwGate_HIO_c();
+ /* 80D2024C */ ~daTwGate_HIO_c() {}
+
+ void genMessage(JORMContext* ctx);
+
+ /* 0x4 */ f32 mRange;
};
#endif /* D_A_OBJ_TWGATE_H */
diff --git a/include/d/actor/d_a_obj_volcbom.h b/include/d/actor/d_a_obj_volcbom.h
index f79dd3d893..3b8f512440 100644
--- a/include/d/actor/d_a_obj_volcbom.h
+++ b/include/d/actor/d_a_obj_volcbom.h
@@ -1,6 +1,10 @@
#ifndef D_A_OBJ_VOLCBOM_H
#define D_A_OBJ_VOLCBOM_H
+#include "d/d_bg_s_acch.h"
+#include "d/d_bg_s_movebg_actor.h"
+#include "d/d_cc_d.h"
+#include "d/d_msg_flow.h"
#include "f_op/f_op_actor_mng.h"
/**
@@ -11,14 +15,33 @@
* @details
*
*/
-class daObjVolcBom_c : public fopAc_ac_c {
+class daObjVolcBom_c : public dBgS_MoveBgActor {
public:
+ typedef void (daObjVolcBom_c::*modeFunc)();
+ typedef void (daObjVolcBom_c::*actionFunc)();
+
+ enum Mode {
+ MODE_WAIT_APPEAR,
+ MODE_FALL,
+ MODE_WAIT_END_FALL_DEMO,
+ MODE_WAIT,
+ };
+
+ enum Action {
+ ACTION_WAIT,
+ ACTION_ORDER_EVENT,
+ ACTION_TALK_EVENT,
+ ACTION_WARP_EVENT,
+ ACTION_ORDER_A_TALK_EVENT,
+ ACTION_DEAD,
+ };
+
/* 80D241E0 */ void initBaseMtx();
/* 80D24238 */ void setBaseMtx();
- /* 80D242A8 */ void Create();
- /* 80D244E0 */ void CreateHeap();
- /* 80D248F4 */ void create1st();
- /* 80D249D0 */ void Execute(f32 (**)[3][4]);
+ /* 80D242A8 */ int Create();
+ /* 80D244E0 */ int CreateHeap();
+ /* 80D248F4 */ int create1st();
+ /* 80D249D0 */ int Execute(Mtx**);
/* 80D24A2C */ void mode_proc_call();
/* 80D24B18 */ void init_modeWaitAppear();
/* 80D24B6C */ void modeWaitAppear();
@@ -33,7 +56,7 @@ public:
/* 80D25224 */ void appear();
/* 80D25230 */ void disappear();
/* 80D2523C */ void setSmoke();
- /* 80D252C8 */ void checkTalkDistance();
+ /* 80D252C8 */ bool checkTalkDistance();
/* 80D25364 */ void calcMidnaWaitPos();
/* 80D253FC */ void setSrcEffect();
/* 80D25528 */ void setBindEffect();
@@ -51,20 +74,82 @@ public:
/* 80D25EE4 */ void actionDead();
/* 80D25EE8 */ void demoProc();
/* 80D26468 */ void calcObjPos();
- /* 80D264E8 */ void Draw();
- /* 80D266FC */ void Delete();
+ /* 80D264E8 */ int Draw();
+ /* 80D266FC */ int Delete();
void startFall() { field_0x95f = 1; }
void startSearch() { field_0x960 = 1; }
+ void setAction(u8 action) { mAction = action; }
+ u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
+ u8 getArg0() { return fopAcM_GetParamBit(this, 16, 8); }
+ u16 getMsgID() { return mMsgID; }
private:
- /* 0x568 */ u8 field_0x568[0x95F - 0x568];
+ /* 0x5A0 */ request_of_phase_process_class mPhase;
+ /* 0x5A8 */ J3DModel* mModel1;
+ /* 0x5AC */ mDoExt_btkAnm* mBtk1;
+ /* 0x5B0 */ mDoExt_brkAnm* mBrk1;
+ /* 0x5B4 */ mDoExt_bckAnm* mBck1;
+ /* 0x5B8 */ J3DModel* mModel2;
+ /* 0x5BC */ mDoExt_btkAnm* mBtk2;
+ /* 0x5C0 */ mDoExt_brkAnm* mBrk2;
+ /* 0x5C4 */ JPABaseEmitter* mSmokeEmitter;
+ /* 0x5C8 */ u8 mSmokeTimer;
+ /* 0x5C9 */ bool field_0x5c9;
+ /* 0x5CA */ u8 mAction;
+ /* 0x5CB */ bool field_0x5cb;
+ /* 0x5CC */ dBgS_ObjAcch mAcch;
+ /* 0x7A4 */ dBgS_AcchCir mAcchCir;
+ /* 0x7E4 */ dCcD_Stts mStts;
+ /* 0x820 */ dCcD_Cyl mCyl;
+ /* 0x95C */ u8 mDemoTimer;
+ /* 0x95D */ u8 mWaitAppearState;
+ /* 0x95E */ bool field_0x95e;
/* 0x95F */ u8 field_0x95f;
- /* 0x960 */ u8 field_0x960;
- /* 0x961 */ u8 field_0x961[0xA1C - 0x961];
+ /* 0x960 */ bool field_0x960;
+ /* 0x961 */ u8 mMode;
+ /* 0x962 */ bool misAppearing;
+ /* 0x963 */ bool mIsMsgIDInit;
+ /* 0x964 */ u16 mMsgID;
+ /* 0x968 */ cXyz mLightPosWorld;
+ /* 0x974 */ u32 mShadowID;
+ /* 0x978 */ f32 field_0x978;
+ /* 0x97C */ f32 mBaseScale;
+ /* 0x980 */ cXyz mWarpSEPos;
+ /* 0x98C */ cXyz mWaitSEPos;
+ /* 0x998 */ cXyz mMidnaWaitPos;
+ /* 0x9A4 */ dMsgFlow_c mMsgFlow;
+ /* 0x9F0 */ s16 mEventId;
+ /* 0x9F4 */ int mStaffId;
+ /* 0x9F8 */ JPABaseEmitter* mStartEmitters[3];
+ /* 0xA04 */ JPABaseEmitter* mDisappearEmitters[1];
+ /* 0xA08 */ JPABaseEmitter* mBindEmitters[4];
+ /* 0xA18 */ u16 mEffectJntNo;
+ /* 0xA1A */ bool field_0xa1a;
+ /* 0xA1B */ u8 mNaviTimer;
};
STATIC_ASSERT(sizeof(daObjVolcBom_c) == 0xa1c);
+#ifdef DEBUG
+class daObjVolcBom_HIO_c : public mDoHIO_entry_c {
+public:
+ daObjVolcBom_HIO_c();
+ void genMessage(JORMContext* ctx);
+
+ /* 0x04 */ u8 field_0x04;
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ u8 field_0x0c[0x14 - 0x0c];
+ /* 0x14 */ u8 field_0x14;
+ /* 0x15 */ u8 field_0x15;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ u8 field_0x28[0x34 - 0x28];
+ /* 0x34 */ u8 field_0x34;
+};
+#endif
+
#endif /* D_A_OBJ_VOLCBOM_H */
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index e970e61617..b3c6e716f1 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -437,7 +437,7 @@ public:
FLG3_COPY_ROD_ATN_KEEP = 0x10000000,
FLG3_BOOMERANG_ATN_KEEP = 0x8000000,
FLG3_UNK_4000000 = 0x4000000,
- FLG3_UNK_2000000 = 0x2000000,
+ FLG3_WARP_OBJ_DEMO = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
FLG3_UNK_800000 = 0x800000,
FLG3_UNK_400000 = 0x400000,
@@ -963,6 +963,7 @@ public:
}
}
void onMidnaTalkPolySpeed() { onNoResetFlg3(FLG3_MIDNA_TALK_POLY_SPEED); }
+ void onWarpObjDemo() { onNoResetFlg3(FLG3_WARP_OBJ_DEMO); }
void offCargoCarry() {
if (checkCargoCarry()) {
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 71a9c43873..c15edc9348 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -3517,6 +3517,10 @@ inline BOOL dComIfGp_evmng_startCheck(char const* i_event) {
return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_event);
}
+inline BOOL dComIfGp_evmng_startCheck(s16 i_eventId) {
+ return g_dComIfG_gameInfo.play.getEvtManager().startCheck(i_eventId);
+}
+
inline BOOL dComIfGp_evmng_endCheck(const char* event) {
return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event);
}
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index ea2854dee6..8995430969 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -88,6 +88,18 @@ struct fopAcM_search_prm {
struct fOpAcm_HIO_entry_c : public mDoHIO_entry_c {
virtual ~fOpAcm_HIO_entry_c() {}
+
+ #ifdef DEBUG
+ void removeHIO(const fopAc_ac_c* i_this) { removeHIO(*i_this); }
+ void removeHIO(const fopAc_ac_c& i_this) { removeHIO(static_cast<const leafdraw_class&>(i_this)); }
+ void removeHIO(const leafdraw_class& i_this) { removeHIO(i_this.base); }
+ void removeHIO(const base_process_class& i_this) { removeHIO(i_this.state); }
+ void removeHIO(const state_class& state) {
+ if (state.create_phase == cPhs_NEXT_e) {
+ mDoHIO_entry_c::removeHIO();
+ }
+ }
+ #endif
};
class l_HIO {
diff --git a/include/f_pc/f_pc_base.h b/include/f_pc/f_pc_base.h
index 10f9041783..896e7a9c9d 100644
--- a/include/f_pc/f_pc_base.h
+++ b/include/f_pc/f_pc_base.h
@@ -14,14 +14,18 @@ typedef struct process_method_class process_method_class;
typedef struct process_profile_definition process_profile_definition;
typedef struct profile_method_class profile_method_class;
+typedef struct state_class {
+ /* 0x00 */ s8 init_state; // maybe inaccurate name
+ /* 0x01 */ u8 create_phase;
+} state_class;
+
typedef struct base_process_class {
/* 0x00 */ int type;
/* 0x04 */ fpc_ProcID id;
/* 0x08 */ s16 name;
/* 0x0A */ s8 unk_0xA;
/* 0x0B */ u8 pause_flag;
- /* 0x0C */ s8 init_state; // maybe inaccurate name
- /* 0x0D */ u8 create_phase;
+ /* 0x0C */ state_class state;
/* 0x0E */ s16 profname;
/* 0x10 */ process_profile_definition* profile;
/* 0x14 */ struct create_request* create_req;
diff --git a/include/f_pc/f_pc_manager.h b/include/f_pc/f_pc_manager.h
index a9ac53dff6..2150558827 100644
--- a/include/f_pc/f_pc_manager.h
+++ b/include/f_pc/f_pc_manager.h
@@ -54,7 +54,7 @@ inline BOOL fpcM_IsJustType(int i_typeA, int i_typeB) {
}
inline bool fpcM_IsFirstCreating(void* i_process) {
- return ((base_process_class*)i_process)->init_state == 0;
+ return ((base_process_class*)i_process)->state.init_state == 0;
}
inline process_profile_definition* fpcM_GetProfile(void* i_process) {