summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/SSystem/SComponent/c_bg_s_chk.h2
-rw-r--r--include/d/a/d_a_alink.h254
-rw-r--r--include/d/bg/d_bg_s.h3
-rw-r--r--include/d/com/d_com_inf_game.h16
-rw-r--r--include/d/d_stage.h5
-rw-r--r--include/d/d_tresure.h4
-rw-r--r--include/d/kankyo/d_kankyo.h3
-rw-r--r--include/f_op/f_op_actor_mng.h24
-rw-r--r--include/m_Do/m_Do_ext.h1
-rw-r--r--include/rel/d/a/d_a_midna/d_a_midna.h262
-rw-r--r--include/rel/d/a/d_a_tbox/d_a_tbox.h207
11 files changed, 517 insertions, 264 deletions
diff --git a/include/SSystem/SComponent/c_bg_s_chk.h b/include/SSystem/SComponent/c_bg_s_chk.h
index 8367b50e25..eacef20b80 100644
--- a/include/SSystem/SComponent/c_bg_s_chk.h
+++ b/include/SSystem/SComponent/c_bg_s_chk.h
@@ -25,7 +25,7 @@ public:
void SetExtChk(cBgS_Chk&);
bool ChkSameActorPid(unsigned int) const;
- void setActorPid(u32 pid) { mActorPid = pid; }
+ void SetActorPid(u32 pid) { mActorPid = pid; }
u32 GetActorPid() const { return mActorPid; }
void SetPolyPassChk(cBgS_PolyPassChk* p_chk) { mPolyPassChk = p_chk; }
void SetGrpPassChk(cBgS_GrpPassChk* p_chk) { mGrpPassChk = p_chk; }
diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h
index f1a5ecfe43..3a73feb858 100644
--- a/include/d/a/d_a_alink.h
+++ b/include/d/a/d_a_alink.h
@@ -6237,263 +6237,9 @@ public:
static daAlinkHIO_hookshot_c1 const m;
};
-class mDoExt_morf_c;
-
inline BOOL dComIfGs_isTransformLV(int i_no);
inline BOOL i_dComIfGs_isEventBit(const u16);
-typedef int (daMidna_c::*daMidna_func)();
-class daMidna_c : public fopAc_ac_c {
-public:
- enum daMidna_ERFLG0 {
- ERFLG0_NO_SERVICE_WAIT = 0x80,
- ERFLG0_FORCE_PANIC = 8,
- ERFLG0_UNK_2 = 2,
- };
-
- enum daMidna_FLG0 {
- FLG0_UNK_80000000 = 0x80000000,
- FLG0_UNK_8000000 = 0x8000000,
- FLG0_NPC_NEAR = 0x100000,
- FLG0_NPC_FAR = 0x40000,
- FLG0_NO_INPUT = 0x4000,
- FLG0_NO_DRAW = 0x2000,
- FLG0_UNK_400 = 0x400,
- FLG0_UNK_800 = 0x800,
- FLG0_UNK_200 = 0x200,
- };
-
- enum daMidna_FLG1 {
- FLG1_FORCE_NORMAL_COL = 8,
- FLG1_FORCE_TIRED_COL = 4,
- FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE = 2,
- };
-
- enum daMidna_ANM {};
-
- void onForcePanic();
- u32 checkForceNormalColor() const;
- u32 checkForceTiredColor() const;
- bool checkMidnaTired();
- void onNoServiceWait();
-
- /* 804BC3E0 */ void modelCallBack(int);
- /* 804BC5C4 */ void changeUpperBck();
- /* 804BC614 */ void changeFaceBck();
- /* 804BC670 */ void baseModelCallBack(int);
- /* 804BC740 */ void initInvModel(u16, J3DModel**, mDoExt_invisibleModel*, u32);
- /* 804BC7D4 */ void initDemoModel(J3DModel**, char const*, u32);
- /* 804BC868 */ void createHeap();
- /* 804BD274 */ void create();
- /* 804BD93C */ void allAnimePlay();
- /* 804BDE04 */ void setMatrix();
- /* 804BE470 */ void setBodyPartMatrix();
- /* 804BED1C */ void setRoomInfo();
- /* 804BEDB8 */ void setBodyPartPos();
- /* 804BEFA0 */ void checkAppear();
- /* 804BF070 */ void checkMidnaPosState();
- /* 804BFF80 */ void setUpperAnime(u16, u16);
- /* 804C0020 */ void setUpperAnimeAndSe(daMidna_c::daMidna_ANM);
- /* 804C0094 */ void setFaceAnime(u16, u16);
- /* 804C0134 */ void endHighModel();
- /* 804C0238 */ void setDemoAnm();
- /* 804C0BAC */ void setFaceBtp(u16, int);
- /* 804C0C6C */ void setFaceBtk(u16, int);
- /* 804C0D2C */ void setLeftHandShape(u16);
- /* 804C0E18 */ void setRightHandShape(u16);
- /* 804C0F04 */ void checkHairOnlyAnime(int) const;
- /* 804C0F24 */ void setBckAnime(J3DAnmTransform*, int, f32);
- /* 804C103C */ void setAnm();
- /* 804C287C */ void getNeckAimAngle(cXyz const*, s16*, s16*, s16*, s16*);
- /* 804C2A68 */ void clearEyeMove();
- /* 804C2AB8 */ void setEyeMove(cXyz const*, s16, s16);
- /* 804C2EBC */ void setNeckAngle();
- /* 804C3168 */ void initHairAngle();
- /* 804C3298 */ void setHairAngle();
- /* 804C3F04 */ void setDemoData();
- /* 804C4394 */ void setSimpleBrk(J3DModelData*, u16);
- /* 804C4444 */ void setSimpleBtk(J3DModelData*, u16);
- /* 804C44CC */ void initMidnaModel();
- /* 804C49B8 */ void setMidnaNoDrawFlg();
- /* 804C4AE8 */ void checkMetamorphoseEnableBase();
- /* 804C4B68 */ void checkNoDrawState();
- /* 804C4BC0 */ void setSound();
- /* 804C4FDC */ void execute();
- /* 804C5A08 */ void draw();
- /* 804C61A4 */ ~daMidna_c();
-
- void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; }
- void onStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 |= i_flag; }
- void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
- u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; }
- u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; }
- void setFaceNum(int num) { mFaceNum = num; }
- void setMotionNum(int num) { mMotionNum = num; }
- bool checkDemoTypeNone() const { return mDemoType == 0; }
- void changeOriginalDemo() { mDemoType = 3; }
- void changeDemoMode(u32 mode) { mDemoMode = mode; }
- BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); }
- BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); }
- BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); }
- BOOL checkNoInput() const { return checkStateFlg0(FLG0_NO_INPUT); }
- BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_UNK_800); }
- int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
- int checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
-
- void onTagWaitPosWarp(const cXyz* param_0) {
- field_0x9ac = *param_0;
- onStateFlg0(FLG0_UNK_400);
- onEndResetStateFlg0(ERFLG0_UNK_2);
- }
-
- void onTagWaitPos(const cXyz* param_0) {
- field_0x9ac = *param_0;
- onStateFlg0(FLG0_UNK_400);
- }
-
- void offTagWaitPos() {
- offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_UNK_8000000 | FLG0_UNK_400));
- }
-
- void onTagNoHairLead() {
- onStateFlg0(FLG0_UNK_80000000);
- }
-
- bool checkReturnAnime() const {
- return field_0x5e4[0].getIdx() == 0x1CA;
- }
-
- bool checkShadowModelDrawSmode() const {
- return field_0x84e == 3 || field_0x84e == 4 || field_0x84e == 2;
- }
-
- bool checkShadowModelDraw() const {
- return checkShadowModelDrawDemoForce() || checkShadowModelDrawSmode();
- }
-
- bool checkShadowReturnEnd() const {
- return field_0x5e4[0].getIdx() == 0x21C && field_0x578->isStop();
- }
-
- bool checkShadowModeTalkWait() const {
- return (field_0x84e == 2 || field_0x84e == 1) ;
- }
-
- void setShadowReturn() { field_0x84e = 4; }
-
-
- bool checkPortalObjRide() const {
- return checkStateFlg0(FLG0_UNK_8000000) && checkStateFlg0(FLG0_UNK_200);
- }
-
- inline static BOOL checkMidnaRealBody();
-
- bool i_checkMidnaTired() {
- return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1E08);
- }
-
- static u8 const m_texDataTable[84];
- static u8 const m_anmDataTable[636];
-
-private:
- /* 0x0568 */ request_of_phase_process_class mPhase;
- /* 0x0570 */ J3DModel* field_0x570;
- /* 0x0574 */ J3DModel* field_0x574;
- /* 0x0578 */ mDoExt_McaMorfSO* field_0x578;
- /* 0x057C */ mDoExt_McaMorfCallBack1_c* field_0x57c; // this is really daMidna_McaMorfCB1_c. fix later
- /* 0x0580 */ cXyz* field_0x580;
- /* 0x0584 */ mDoExt_bckAnm field_0x584;
- /* 0x05A0 */ mDoExt_bckAnm field_0x5a0;
- /* 0x05BC */ J3DAnmTexPattern* field_0x5bc;
- /* 0x05C0 */ J3DAnmTextureSRTKey* field_0x5c0;
- /* 0x05C4 */ mDoExt_invisibleModel field_0x5c4;
- /* 0x05CC */ mDoExt_invisibleModel mInvMaskBmd;
- /* 0x05D4 */ mDoExt_invisibleModel mInvHandsBmd;
- /* 0x05DC */ mDoExt_invisibleModel mInvHairhandBmd;
- /* 0x05E4 */ daPy_anmHeap_c field_0x5e4[3];
- /* 0x0620 */ daPy_anmHeap_c field_0x620;
- /* 0x0634 */ daPy_anmHeap_c field_0x634;
- /* 0x0648 */ J3DAnmTextureSRTKey* field_0x648;
- /* 0x064C */ J3DAnmTextureSRTKey* field_0x64c;
- /* 0x0650 */ J3DAnmTextureSRTKey* field_0x650;
- /* 0x0654 */ J3DAnmTextureSRTKey* field_0x654;
- /* 0x0658 */ J3DAnmTevRegKey* field_0x658;
- /* 0x065C */ J3DAnmTevRegKey* field_0x65c;
- /* 0x0660 */ J3DAnmTevRegKey* field_0x660;
- /* 0x0664 */ J3DAnmTevRegKey* field_0x664;
- /* 0x0668 */ J3DAnmTevRegKey* field_0x668;
- /* 0x066C */ J3DAnmTevRegKey* field_0x66c;
- /* 0x0670 */ J3DModel* field_0x670;
- /* 0x0674 */ J3DModel* mpMaskBmd;
- /* 0x0678 */ J3DModel* field_0x678;
- /* 0x067C */ J3DModel* mpHandsBmd;
- /* 0x0680 */ J3DModel* field_0x680;
- /* 0x0684 */ J3DModel* mpHairhandBmd;
- /* 0x0688 */ J3DModel* mpDemoBDTmpBmd;
- /* 0x068C */ J3DModel* mpDemoBDMaskBmd;
- /* 0x0690 */ J3DModel* mpDemoBDHandsBmd;
- /* 0x0694 */ J3DModel* mpDemoBDHairhandBmd;
- /* 0x0698 */ J3DModel* mpGokouBmd;
- /* 0x069C */ J3DShape* field_0x69c;
- /* 0x06A0 */ J3DShape* field_0x6a0;
- /* 0x06A4 */ J3DShape* field_0x6a4;
- /* 0x06A8 */ J3DShape* field_0x6a8;
- /* 0x06AC */ J3DModel* mpDemoFCBlendBmd;
- /* 0x06B0 */ J3DModel* mpDemoFCTongueBmd;
- /* 0x06B4 */ J3DAnmTextureSRTKey* field_0x6b4;
- /* 0x06B8 */ mDoExt_bckAnm* mpDemoFCTmpBck;
- /* 0x06BC */ J3DDeformData* mpDemoFCTmpBls;
- /* 0x06C0 */ J3DAnmCluster* field_0x6c0;
- /* 0x06C4 */ mDoExt_blkAnm* field_0x6c4;
- /* 0x06C8 */ J3DModel* mpDemoHLTmpBmd;
- /* 0x06CC */ mDoExt_bckAnm* mpDemoHLTmpBck;
- /* 0x06D0 */ J3DModel* mpDemoHRTmpBmd;
- /* 0x06D4 */ mDoExt_bckAnm* mpDemoHRTmpBck;
- /* 0x06D8 */ J3DModel* mpDemoHDTmpBmd;
- /* 0x06DC */ mDoExt_bckAnm* mpDemoHDTmpBck;
- /* 0x06E0 */ J3DGXColorS10 field_0x6e0;
- /* 0x06E8 */ J3DGXColor field_0x6e8;
- /* 0x06EC */ u8 field_0x6ec; // this is probably J3DGXColor. fix later
- /* 0x06ED */ u8 field_0x6ed;
- /* 0x06EE */ u8 field_0x6ee;
- /* 0x06EF */ u8 field_0x6ef;
- /* 0x06F0 */ void* field_0x6f0;
- /* 0x06F4 */ void* field_0x6f4;
- /* 0x06F8 */ void* field_0x6f8;
- /* 0x06FC */ Z2Creature field_0x6fc;
- /* 0x078C */ dMsgFlow_c mMsgFlow;
- /* 0x07D8 */ dBgS_LinkLinChk mLinChk;
- /* 0x0848 */ u8 mMotionNum;
- /* 0x0849 */ u8 mFaceNum;
- /* 0x084A */ u8 field_0x84a[4];
- /* 0x084E */ u8 field_0x84e;
- /* 0x084F */ u8 mDemoType;
- /* 0x0850 */ u8 field_0x850[0xA];
- /* 0x085A */ s16 field_0x85a;
- /* 0x085C */ u8 field_0x85c[0x22];
- /* 0x087E */ s16 field_0x87e;
- /* 0x0880 */ u8 field_0x880[0xC]; // csXyz in here, fix later
- /* 0x088C */ int mStaffID;
- /* 0x0890 */ u32 mStateFlg0;
- /* 0x0894 */ u32 mStateFlg1;
- /* 0x0898 */ u32 mEndResetStateFlg0;
- /* 0x089C */ u8 field_0x89c[0x24];
- /* 0x08C0 */ u32 mDemoMode;
- /* 0x08C4 */ u8 field_0x8c4[4];
- /* 0x08C8 */ f32 field_0x8c8;
- /* 0x08CC */ u8 field_0x8cc[0x14];
- /* 0x08E0 */ cXyz field_0x8e0[5];
- /* 0x091C */ cXyz field_0x91c[5];
- /* 0x0958 */ u8 field_0x958[0xC]; // cXyz here, fix later
- /* 0x0964 */ cXyz field_0x964[5];
- /* 0x09A0 */ u8 field_0x9a0[0xC];
- /* 0x09AC */ cXyz field_0x9ac;
- /* 0x09B8 */ u8 field_0x9b8[0x9C4 - 0x9B8];
- /* 0x09C4 */ cXyz field_0x9c4;
- /* 0x09D0 */ u8 field_0x9d0[4];
- /* 0x09D4 */ daMidna_func mpFunc;
-};
-
static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1);
static fopAc_ac_c* daAlink_searchCanoe(fopAc_ac_c* param_0, void* param_1);
static void* daAlink_searchBoar(fopAc_ac_c* param_0, void* param_1);
diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h
index 011ff553b9..2d9e1ccbb9 100644
--- a/include/d/bg/d_bg_s.h
+++ b/include/d/bg/d_bg_s.h
@@ -61,6 +61,8 @@ public:
class dBgS_Acch;
+u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0);
+
class dBgS : public cBgS {
public:
dBgS() {}
@@ -107,6 +109,7 @@ public:
bool PushPullCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel);
bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); }
+ u32 GetMtrlSndId(cBgS_PolyInfo* param_0) { return dKy_pol_sound_get(param_0); }
}; // Size: 0x1404
bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&);
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index 06d32de25b..36050fe6f7 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -1248,6 +1248,10 @@ inline BOOL dComIfGs_isTbox(int i_no) {
return g_dComIfG_gameInfo.info.getMemory().getBit().isTbox(i_no);
}
+inline void dComIfGs_onTbox(int i_no) {
+ g_dComIfG_gameInfo.info.getMemory().getBit().onTbox(i_no);
+}
+
inline BOOL dComIfGs_isSaveItem(int i_no) {
return g_dComIfG_gameInfo.info.getMemory().getBit().isItem(i_no);
}
@@ -1638,6 +1642,10 @@ inline u8 i_dComIfGs_getEventReg(u16 reg) {
return g_dComIfG_gameInfo.info.getEvent().getEventReg(reg);
}
+inline void dComIfGs_setEventReg(u16 reg, u8 value) {
+ g_dComIfG_gameInfo.info.getEvent().setEventReg(reg, value);
+}
+
inline void dComIfGs_setWarashibeItem(u8 i_itemNo) {
g_dComIfG_gameInfo.info.getPlayer().getItem().setWarashibeItem(i_itemNo);
}
@@ -2982,6 +2990,10 @@ inline void i_dComIfGp_event_reset() {
g_dComIfG_gameInfo.play.getEvent().reset();
}
+inline void dComIfGp_event_onEventFlag(u16 i_flag) {
+ g_dComIfG_gameInfo.play.getEvent().onEventFlag(i_flag);
+}
+
inline void dComIfGp_evmng_cutEnd(int param_0) {
dComIfGp_getPEvtManager()->cutEnd(param_0);
}
@@ -2998,6 +3010,10 @@ inline u8 dComIfGp_event_getPreItemNo() {
return g_dComIfG_gameInfo.play.getEvent().getPreItemNo();
}
+inline void dComIfGp_event_setItemPartner(void* param_0) {
+ g_dComIfG_gameInfo.play.getEvent().setPtI(param_0);
+}
+
inline void dComIfGp_event_setItemPartnerId(unsigned int id) {
g_dComIfG_gameInfo.play.getEvent().setPtI_Id(id);
}
diff --git a/include/d/d_stage.h b/include/d/d_stage.h
index 0955bdf316..b1943fc7fb 100644
--- a/include/d/d_stage.h
+++ b/include/d/d_stage.h
@@ -160,7 +160,7 @@ struct stage_camera2_data_class {
struct stage_camera_class {
/* 0x0 */ int field_0x0;
- /* 0x4 */ stage_camera2_data_class* field_0x4;
+ /* 0x4 */ stage_camera2_data_class* mEntries;
};
struct stage_arrow_data_class {
@@ -335,7 +335,8 @@ struct dStage_DMap_c {
struct dStage_MapEvent_dt_c {
/* 0x00 */ u8 mType;
- /* 0x01 */ u8 field_0x1[3 - 1];
+ /* 0x01 */ u8 field_0x1;
+ /* 0x02 */ u8 field_0x2;
/* 0x03 */ u8 field_0x3;
/* 0x04 */ u8 field_0x4;
/* 0x05 */ u8 field_0x5;
diff --git a/include/d/d_tresure.h b/include/d/d_tresure.h
index 78ac174efe..04650bc038 100644
--- a/include/d/d_tresure.h
+++ b/include/d/d_tresure.h
@@ -70,6 +70,10 @@ public:
return mTypeGroupListAll[index].mNumber;
}
+ static void setPosition(int i_tboxNo, Vec const* i_pos) {
+ setPosition(i_tboxNo, 0, i_pos, -1);
+ }
+
static u8 const typeToTypeGroup[17][2];
static type_group_list mTypeGroupListAll[17];
static typeGroupData_c* mTypeGroupData;
diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h
index add7ddb20a..b4c0ab2947 100644
--- a/include/d/kankyo/d_kankyo.h
+++ b/include/d/kankyo/d_kankyo.h
@@ -560,12 +560,15 @@ void dKy_setLight_again();
void dKy_GxFog_tevstr_set(dKy_tevstr_c*);
void dKy_plight_set(LIGHT_INFLUENCE* param_0);
void dKy_plight_priority_set(LIGHT_INFLUENCE* param_0);
+void dKy_efplight_set(LIGHT_INFLUENCE* param_0);
+void dKy_efplight_cut(LIGHT_INFLUENCE* param_0);
void dKy_tevstr_init(dKy_tevstr_c* param_0, s8 param_1, u8 param_2);
SND_INFLUENCE* dKy_Sound_get();
void dKy_plight_cut(LIGHT_INFLUENCE* param_0);
void dKy_dalkmist_inf_set(DALKMIST_INFLUENCE*);
void dKy_dalkmist_inf_cut(DALKMIST_INFLUENCE*);
int dKy_rain_check();
+void dKy_set_allcol_ratio(f32 ratio);
void dKy_set_actcol_ratio(f32 ratio);
void dKy_set_bgcol_ratio(f32 ratio);
void dKy_set_fogcol_ratio(f32 ratio);
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index 2b36b5feff..4835731cbf 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -5,6 +5,9 @@
#include "f_op/f_op_actor_iter.h"
#include "f_pc/f_pc_manager.h"
#include "f_pc/f_pc_searcher.h"
+#include "d/bg/d_bg_s.h"
+#include "d/bg/d_bg_s_lin_chk.h"
+#include "d/bg/d_bg_s_wtr_chk.h"
#define fopAcM_SetupActor(ptr,ClassName) \
if (!fopAcM_CheckCondition(ptr, fopAcCnd_INIT_e)) { \
@@ -57,10 +60,13 @@ struct fopAcM_search_prm {
/* 0x0A */ s8 mSubType;
};
-class dBgS_LinChk;
+dBgS& dComIfG_Bgsp();
+
class fopAcM_lc_c {
public:
static dBgS_LinChk* getLineCheck() { return (dBgS_LinChk*)&mLineCheck; }
+ static bool checkMoveBG() { return dComIfG_Bgsp().ChkMoveBG(*(dBgS_LinChk*)&mLineCheck); }
+ static cXyz* getCrossP() { return ((dBgS_LinChk*)&mLineCheck)->GetCrossP(); }
static bool lineCheck(const cXyz*, const cXyz*, const fopAc_ac_c*);
static u8 mLineCheck[112];
};
@@ -90,11 +96,11 @@ public:
static f32 getGroundY() { return mGroundY; }
};
-class dBgS_WtrChk;
class fopAcM_wt_c {
public:
static dBgS_WtrChk* getWaterCheck() { return (dBgS_WtrChk*)&mWaterCheck; }
static f32 getWaterY() { return mWaterY[0]; }
+ static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(*(dBgS_WtrChk*)&mWaterCheck); }
static bool waterCheck(const cXyz*);
static u8 mWaterCheck[84 + 4 /* padding */];
@@ -588,23 +594,27 @@ inline void make_prm_bokkuri(u32* pActorParams, csXyz* p_angle, u8 param_2, u8 p
inline fopAc_ac_c* dComIfGp_getPlayer(int);
inline s16 fopAcM_searchPlayerAngleY(const fopAc_ac_c* actor) {
- return fopAcM_searchActorAngleY(actor, (fopAc_ac_c*)dComIfGp_getPlayer(0));
+ return fopAcM_searchActorAngleY(actor, dComIfGp_getPlayer(0));
}
inline f32 fopAcM_searchPlayerDistanceY(const fopAc_ac_c* actor) {
- return fopAcM_searchActorDistanceY(actor, (fopAc_ac_c*)dComIfGp_getPlayer(0));
+ return fopAcM_searchActorDistanceY(actor, dComIfGp_getPlayer(0));
}
inline f32 fopAcM_searchPlayerDistanceXZ2(const fopAc_ac_c* actor) {
- return fopAcM_searchActorDistanceXZ2(actor, (fopAc_ac_c*)dComIfGp_getPlayer(0));
+ return fopAcM_searchActorDistanceXZ2(actor, dComIfGp_getPlayer(0));
}
inline f32 fopAcM_searchPlayerDistanceXZ(const fopAc_ac_c* actor) {
- return fopAcM_searchActorDistanceXZ(actor, (fopAc_ac_c*)dComIfGp_getPlayer(0));
+ return fopAcM_searchActorDistanceXZ(actor, dComIfGp_getPlayer(0));
}
inline f32 fopAcM_searchPlayerDistance(const fopAc_ac_c* actor) {
- return fopAcM_searchActorDistance(actor, (fopAc_ac_c*)dComIfGp_getPlayer(0));
+ return fopAcM_searchActorDistance(actor, dComIfGp_getPlayer(0));
+}
+
+inline s32 fopAcM_seenPlayerAngleY(const fopAc_ac_c* i_actor) {
+ return fopAcM_seenActorAngleY(i_actor, dComIfGp_getPlayer(0));
}
s8 dComIfGp_getReverb(int roomNo);
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index 6c8215cabd..05926d090e 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -604,6 +604,7 @@ J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 i_modelFlag, u3
void mDoExt_setAraCacheSize(u32 size);
int mDoExt_resIDToIndex(JKRArchive* p_archive, u16 id);
void mDoExt_modelEntryDL(J3DModel* i_model);
+void mDoExt_brkAnmRemove(J3DModelData* i_modelData);
void mDoExt_setupStageTexture(J3DModelData* i_modelData);
OSThread* mDoExt_GetCurrentRunningThread();
void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareModelData);
diff --git a/include/rel/d/a/d_a_midna/d_a_midna.h b/include/rel/d/a/d_a_midna/d_a_midna.h
index f9d2191565..9d65fc9600 100644
--- a/include/rel/d/a/d_a_midna/d_a_midna.h
+++ b/include/rel/d/a/d_a_midna/d_a_midna.h
@@ -1,6 +1,268 @@
#ifndef D_A_MIDNA_H
#define D_A_MIDNA_H
+#include "SSystem/SComponent/c_phase.h"
+#include "JSystem/J3DGraphBase/J3DMatBlock.h"
+#include "Z2AudioLib/Z2Creature.h"
+#include "f_op/f_op_actor.h"
+#include "d/bg/d_bg_s_lin_chk.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/a/d_a_player.h"
+#include "d/msg/d_msg_flow.h"
#include "dolphin/types.h"
+class daMidna_c;
+typedef int (daMidna_c::*daMidna_func)();
+
+class daMidna_c : public fopAc_ac_c {
+public:
+ enum daMidna_ERFLG0 {
+ ERFLG0_NO_SERVICE_WAIT = 0x80,
+ ERFLG0_FORCE_PANIC = 8,
+ ERFLG0_UNK_2 = 2,
+ };
+
+ enum daMidna_FLG0 {
+ FLG0_UNK_80000000 = 0x80000000,
+ FLG0_UNK_8000000 = 0x8000000,
+ FLG0_NPC_NEAR = 0x100000,
+ FLG0_NPC_FAR = 0x40000,
+ FLG0_NO_INPUT = 0x4000,
+ FLG0_NO_DRAW = 0x2000,
+ FLG0_UNK_400 = 0x400,
+ FLG0_UNK_800 = 0x800,
+ FLG0_UNK_200 = 0x200,
+ };
+
+ enum daMidna_FLG1 {
+ FLG1_FORCE_NORMAL_COL = 8,
+ FLG1_FORCE_TIRED_COL = 4,
+ FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE = 2,
+ };
+
+ enum daMidna_ANM {};
+
+ void onForcePanic();
+ u32 checkForceNormalColor() const;
+ u32 checkForceTiredColor() const;
+ bool checkMidnaTired();
+ void onNoServiceWait();
+
+ /* 804BC3E0 */ void modelCallBack(int);
+ /* 804BC5C4 */ void changeUpperBck();
+ /* 804BC614 */ void changeFaceBck();
+ /* 804BC670 */ void baseModelCallBack(int);
+ /* 804BC740 */ void initInvModel(u16, J3DModel**, mDoExt_invisibleModel*, u32);
+ /* 804BC7D4 */ void initDemoModel(J3DModel**, char const*, u32);
+ /* 804BC868 */ void createHeap();
+ /* 804BD274 */ void create();
+ /* 804BD93C */ void allAnimePlay();
+ /* 804BDE04 */ void setMatrix();
+ /* 804BE470 */ void setBodyPartMatrix();
+ /* 804BED1C */ void setRoomInfo();
+ /* 804BEDB8 */ void setBodyPartPos();
+ /* 804BEFA0 */ void checkAppear();
+ /* 804BF070 */ void checkMidnaPosState();
+ /* 804BFF80 */ void setUpperAnime(u16, u16);
+ /* 804C0020 */ void setUpperAnimeAndSe(daMidna_c::daMidna_ANM);
+ /* 804C0094 */ void setFaceAnime(u16, u16);
+ /* 804C0134 */ void endHighModel();
+ /* 804C0238 */ void setDemoAnm();
+ /* 804C0BAC */ void setFaceBtp(u16, int);
+ /* 804C0C6C */ void setFaceBtk(u16, int);
+ /* 804C0D2C */ void setLeftHandShape(u16);
+ /* 804C0E18 */ void setRightHandShape(u16);
+ /* 804C0F04 */ void checkHairOnlyAnime(int) const;
+ /* 804C0F24 */ void setBckAnime(J3DAnmTransform*, int, f32);
+ /* 804C103C */ void setAnm();
+ /* 804C287C */ void getNeckAimAngle(cXyz const*, s16*, s16*, s16*, s16*);
+ /* 804C2A68 */ void clearEyeMove();
+ /* 804C2AB8 */ void setEyeMove(cXyz const*, s16, s16);
+ /* 804C2EBC */ void setNeckAngle();
+ /* 804C3168 */ void initHairAngle();
+ /* 804C3298 */ void setHairAngle();
+ /* 804C3F04 */ void setDemoData();
+ /* 804C4394 */ void setSimpleBrk(J3DModelData*, u16);
+ /* 804C4444 */ void setSimpleBtk(J3DModelData*, u16);
+ /* 804C44CC */ void initMidnaModel();
+ /* 804C49B8 */ void setMidnaNoDrawFlg();
+ /* 804C4AE8 */ void checkMetamorphoseEnableBase();
+ /* 804C4B68 */ void checkNoDrawState();
+ /* 804C4BC0 */ void setSound();
+ /* 804C4FDC */ void execute();
+ /* 804C5A08 */ void draw();
+ /* 804C61A4 */ ~daMidna_c();
+
+ void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; }
+ void onStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 |= i_flag; }
+ void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
+ u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; }
+ u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; }
+ void setFaceNum(int num) { mFaceNum = num; }
+ void setMotionNum(int num) { mMotionNum = num; }
+ bool checkDemoTypeNone() const { return mDemoType == 0; }
+ void changeOriginalDemo() { mDemoType = 3; }
+ void changeDemoMode(u32 mode) { mDemoMode = mode; }
+ BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); }
+ BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); }
+ BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); }
+ BOOL checkNoInput() const { return checkStateFlg0(FLG0_NO_INPUT); }
+ BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_UNK_800); }
+ int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
+ int checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
+
+ void onTagWaitPosWarp(const cXyz* param_0) {
+ field_0x9ac = *param_0;
+ onStateFlg0(FLG0_UNK_400);
+ onEndResetStateFlg0(ERFLG0_UNK_2);
+ }
+
+ void onTagWaitPos(const cXyz* param_0) {
+ field_0x9ac = *param_0;
+ onStateFlg0(FLG0_UNK_400);
+ }
+
+ void offTagWaitPos() {
+ offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_UNK_8000000 | FLG0_UNK_400));
+ }
+
+ void onTagNoHairLead() {
+ onStateFlg0(FLG0_UNK_80000000);
+ }
+
+ bool checkReturnAnime() const {
+ return field_0x5e4[0].getIdx() == 0x1CA;
+ }
+
+ bool checkShadowModelDrawSmode() const {
+ return field_0x84e == 3 || field_0x84e == 4 || field_0x84e == 2;
+ }
+
+ bool checkShadowModelDraw() const {
+ return checkShadowModelDrawDemoForce() || checkShadowModelDrawSmode();
+ }
+
+ bool checkShadowReturnEnd() const {
+ return field_0x5e4[0].getIdx() == 0x21C && field_0x578->isStop();
+ }
+
+ bool checkShadowModeTalkWait() const {
+ return (field_0x84e == 2 || field_0x84e == 1) ;
+ }
+
+ void setShadowReturn() { field_0x84e = 4; }
+
+
+ bool checkPortalObjRide() const {
+ return checkStateFlg0(FLG0_UNK_8000000) && checkStateFlg0(FLG0_UNK_200);
+ }
+
+ inline static BOOL checkMidnaRealBody();
+
+ bool i_checkMidnaTired() {
+ return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1E08);
+ }
+
+ static u8 const m_texDataTable[84];
+ static u8 const m_anmDataTable[636];
+
+private:
+ /* 0x0568 */ request_of_phase_process_class mPhase;
+ /* 0x0570 */ J3DModel* field_0x570;
+ /* 0x0574 */ J3DModel* field_0x574;
+ /* 0x0578 */ mDoExt_McaMorfSO* field_0x578;
+ /* 0x057C */ mDoExt_McaMorfCallBack1_c* field_0x57c; // this is really daMidna_McaMorfCB1_c. fix later
+ /* 0x0580 */ cXyz* field_0x580;
+ /* 0x0584 */ mDoExt_bckAnm field_0x584;
+ /* 0x05A0 */ mDoExt_bckAnm field_0x5a0;
+ /* 0x05BC */ J3DAnmTexPattern* field_0x5bc;
+ /* 0x05C0 */ J3DAnmTextureSRTKey* field_0x5c0;
+ /* 0x05C4 */ mDoExt_invisibleModel field_0x5c4;
+ /* 0x05CC */ mDoExt_invisibleModel mInvMaskBmd;
+ /* 0x05D4 */ mDoExt_invisibleModel mInvHandsBmd;
+ /* 0x05DC */ mDoExt_invisibleModel mInvHairhandBmd;
+ /* 0x05E4 */ daPy_anmHeap_c field_0x5e4[3];
+ /* 0x0620 */ daPy_anmHeap_c field_0x620;
+ /* 0x0634 */ daPy_anmHeap_c field_0x634;
+ /* 0x0648 */ J3DAnmTextureSRTKey* field_0x648;
+ /* 0x064C */ J3DAnmTextureSRTKey* field_0x64c;
+ /* 0x0650 */ J3DAnmTextureSRTKey* field_0x650;
+ /* 0x0654 */ J3DAnmTextureSRTKey* field_0x654;
+ /* 0x0658 */ J3DAnmTevRegKey* field_0x658;
+ /* 0x065C */ J3DAnmTevRegKey* field_0x65c;
+ /* 0x0660 */ J3DAnmTevRegKey* field_0x660;
+ /* 0x0664 */ J3DAnmTevRegKey* field_0x664;
+ /* 0x0668 */ J3DAnmTevRegKey* field_0x668;
+ /* 0x066C */ J3DAnmTevRegKey* field_0x66c;
+ /* 0x0670 */ J3DModel* field_0x670;
+ /* 0x0674 */ J3DModel* mpMaskBmd;
+ /* 0x0678 */ J3DModel* field_0x678;
+ /* 0x067C */ J3DModel* mpHandsBmd;
+ /* 0x0680 */ J3DModel* field_0x680;
+ /* 0x0684 */ J3DModel* mpHairhandBmd;
+ /* 0x0688 */ J3DModel* mpDemoBDTmpBmd;
+ /* 0x068C */ J3DModel* mpDemoBDMaskBmd;
+ /* 0x0690 */ J3DModel* mpDemoBDHandsBmd;
+ /* 0x0694 */ J3DModel* mpDemoBDHairhandBmd;
+ /* 0x0698 */ J3DModel* mpGokouBmd;
+ /* 0x069C */ J3DShape* field_0x69c;
+ /* 0x06A0 */ J3DShape* field_0x6a0;
+ /* 0x06A4 */ J3DShape* field_0x6a4;
+ /* 0x06A8 */ J3DShape* field_0x6a8;
+ /* 0x06AC */ J3DModel* mpDemoFCBlendBmd;
+ /* 0x06B0 */ J3DModel* mpDemoFCTongueBmd;
+ /* 0x06B4 */ J3DAnmTextureSRTKey* field_0x6b4;
+ /* 0x06B8 */ mDoExt_bckAnm* mpDemoFCTmpBck;
+ /* 0x06BC */ J3DDeformData* mpDemoFCTmpBls;
+ /* 0x06C0 */ J3DAnmCluster* field_0x6c0;
+ /* 0x06C4 */ mDoExt_blkAnm* field_0x6c4;
+ /* 0x06C8 */ J3DModel* mpDemoHLTmpBmd;
+ /* 0x06CC */ mDoExt_bckAnm* mpDemoHLTmpBck;
+ /* 0x06D0 */ J3DModel* mpDemoHRTmpBmd;
+ /* 0x06D4 */ mDoExt_bckAnm* mpDemoHRTmpBck;
+ /* 0x06D8 */ J3DModel* mpDemoHDTmpBmd;
+ /* 0x06DC */ mDoExt_bckAnm* mpDemoHDTmpBck;
+ /* 0x06E0 */ J3DGXColorS10 field_0x6e0;
+ /* 0x06E8 */ J3DGXColor field_0x6e8;
+ /* 0x06EC */ u8 field_0x6ec; // this is probably J3DGXColor. fix later
+ /* 0x06ED */ u8 field_0x6ed;
+ /* 0x06EE */ u8 field_0x6ee;
+ /* 0x06EF */ u8 field_0x6ef;
+ /* 0x06F0 */ void* field_0x6f0;
+ /* 0x06F4 */ void* field_0x6f4;
+ /* 0x06F8 */ void* field_0x6f8;
+ /* 0x06FC */ Z2Creature field_0x6fc;
+ /* 0x078C */ dMsgFlow_c mMsgFlow;
+ /* 0x07D8 */ dBgS_LinkLinChk mLinChk;
+ /* 0x0848 */ u8 mMotionNum;
+ /* 0x0849 */ u8 mFaceNum;
+ /* 0x084A */ u8 field_0x84a[4];
+ /* 0x084E */ u8 field_0x84e;
+ /* 0x084F */ u8 mDemoType;
+ /* 0x0850 */ u8 field_0x850[0xA];
+ /* 0x085A */ s16 field_0x85a;
+ /* 0x085C */ u8 field_0x85c[0x22];
+ /* 0x087E */ s16 field_0x87e;
+ /* 0x0880 */ u8 field_0x880[0xC]; // csXyz in here, fix later
+ /* 0x088C */ int mStaffID;
+ /* 0x0890 */ u32 mStateFlg0;
+ /* 0x0894 */ u32 mStateFlg1;
+ /* 0x0898 */ u32 mEndResetStateFlg0;
+ /* 0x089C */ u8 field_0x89c[0x24];
+ /* 0x08C0 */ u32 mDemoMode;
+ /* 0x08C4 */ u8 field_0x8c4[4];
+ /* 0x08C8 */ f32 field_0x8c8;
+ /* 0x08CC */ u8 field_0x8cc[0x14];
+ /* 0x08E0 */ cXyz field_0x8e0[5];
+ /* 0x091C */ cXyz field_0x91c[5];
+ /* 0x0958 */ u8 field_0x958[0xC]; // cXyz here, fix later
+ /* 0x0964 */ cXyz field_0x964[5];
+ /* 0x09A0 */ u8 field_0x9a0[0xC];
+ /* 0x09AC */ cXyz field_0x9ac;
+ /* 0x09B8 */ u8 field_0x9b8[0x9C4 - 0x9B8];
+ /* 0x09C4 */ cXyz field_0x9c4;
+ /* 0x09D0 */ u8 field_0x9d0[4];
+ /* 0x09D4 */ daMidna_func mpFunc;
+};
+
#endif /* D_A_MIDNA_H */
diff --git a/include/rel/d/a/d_a_tbox/d_a_tbox.h b/include/rel/d/a/d_a_tbox/d_a_tbox.h
index 70a00cfbef..e58d779d21 100644
--- a/include/rel/d/a/d_a_tbox/d_a_tbox.h
+++ b/include/rel/d/a/d_a_tbox/d_a_tbox.h
@@ -1,6 +1,213 @@
#ifndef D_A_TBOX_H
#define D_A_TBOX_H
+#include "SSystem/SComponent/c_phase.h"
+#include "d/cc/d_cc_d.h"
+#include "d/bg/d_bg_s_acch.h"
+#include "d/bg/d_bg_s_movebg_actor.h"
+#include "f_op/f_op_actor_mng.h"
+#include "m_Do/m_Do_hostIO.h"
#include "dolphin/types.h"
+class dBgW;
+
+class daTboxBase_c : public dBgS_MoveBgActor {
+protected:
+ /* 0x5A0 */ dCcD_Stts mStts;
+ /* 0x5DC */ dCcD_Cyl mCyl;
+};
+
+STATIC_ASSERT(sizeof(daTboxBase_c) == 0x718);
+
+struct daTbox_ModelInfo {
+ /* 0x00 */ char* mArcName;
+ /* 0x04 */ int mModelResNo;
+ /* 0x08 */ int mBckResNo;
+ /* 0x0C */ int mClosedDzbResNo;
+ /* 0x10 */ int mOpenDzbResNo;
+ /* 0x14 */ int mEffectResNo;
+ /* 0x18 */ int mBrkResNo;
+};
+
+STATIC_ASSERT(sizeof(daTbox_ModelInfo) == 0x1C);
+
+class daTbox_c;
+typedef int (daTbox_c::*daTbox_actionFn)();
+typedef void (daTbox_c::*daTbox_modeFn)();
+
+class daTbox_c : public daTboxBase_c {
+public:
+ enum Shape {
+ SHAPE_SMALL = 0,
+ SHAPE_LARGE = 1,
+ SHAPE_BOSSKEY = 2,
+ };
+
+ enum Mode {
+ MODE_EXEC_WAIT = 0,
+ MODE_EXEC = 1,
+ };
+
+ /* 80490E50 */ daTbox_ModelInfo* getModelInfo();
+ /* 80490E6C */ cPhs__Step commonShapeSet();
+ /* 804911B8 */ cPhs__Step effectShapeSet();
+ /* 804911C0 */ cPhs__Step envShapeSet();
+ /* 804911C8 */ cPhs__Step bgCheckSet();
+ /* 8049129C */ void lightReady();
+ /* 804912EC */ void setLightPos();
+ /* 8049135C */ int checkEnv();
+ /* 80491364 */ int checkAppear();
+ /* 8049139C */ int checkOpen();
+ /* 804913D0 */ void clrDzb();
+ /* 8049141C */ void setDzb();
+ /* 80491484 */ void surfaceProc();
+ /* 80491544 */ int checkNormal();
+ /* 804915BC */ int checkEnvEffectTbox();
+ /* 80491624 */ u32 calcHeapSize();
+ /* 804916A4 */ int CreateHeap();
+ /* 80491744 */ void CreateInit();
+ /* 804919B0 */ void initPos();
+ /* 80491BB0 */ void initAnm();
+ /* 80491F68 */ int boxCheck();
+ /* 804920A8 */ void demoProcOpen();
+ /* 8049216C */ void lightColorProc();
+ /* 8049233C */ void environmentProc();
+ /* 80492398 */ void lightUpProc();
+ /* 804923D4 */ void lightDownProc();
+ /* 80492408 */ void dropProcInitCall();
+ /* 80492450 */ void dropProcInit();
+ /* 804928DC */ int calcJumpGoalAndAngle(cXyz*, s16*);
+ /* 80492B10 */ bool getDropSAngle(s16*);
+ /* 80492BC8 */ int getDir();
+ /* 80492C84 */ void setRotAxis(cXyz const*, cXyz const*);
+ /* 80492D08 */ void dropProcInit2();
+ /* 80492F50 */ void dropProc();
+ /* 80493338 */ void demoInitAppear();
+ /* 80493484 */ void demoProcAppear();
+ /* 80493518 */ int demoProc();
+ /* 80493838 */ void OpenInit_com();
+ /* 804939A4 */ void OpenInit();
+ /* 804939F4 */ int actionWait();
+ /* 804939FC */ int actionDemo();
+ /* 80493CC8 */ int actionDemo2();
+ /* 80493D90 */ int actionDropDemo();
+ /* 80493ED8 */ u8 getBombItemNo(u8, u8);
+ /* 80493FE8 */ u8 getBombItemNo2(u8, u8, u8);
+ /* 80494144 */ u8 getBombItemNo3(u8, u8, u8, u8);
+ /* 804942CC */ u8 getBombItemNoMain(u8);
+ /* 804945C8 */ int setGetDemoItem();
+ /* 804946A4 */ int actionOpenWait();
+ /* 804948CC */ int actionNotOpenDemo();
+ /* 80494950 */ int checkDrop();
+ /* 80494A0C */ void settingDropDemoCamera();
+ /* 80494D88 */ int actionSwOnWait();
+ /* 80494E98 */ int actionSwOnWait2();
+ /* 80494F44 */ int actionDropWait();
+ /* 80495058 */ int actionGenocide();
+ /* 8049518C */ int actionDropWaitForWeb();
+ /* 80495250 */ int actionDropForWeb();
+ /* 804953D4 */ void initBaseMtx();
+ /* 80495490 */ void setBaseMtx();
+ /* 80495660 */ void mode_proc_call();
+ /* 804956EC */ void mode_exec_wait();
+ /* 80495818 */ void mode_exec();
+ /* 80495910 */ cPhs__Step create1st();
+ /* 804959EC */ int Execute(f32 (**)[3][4]);
+ /* 80495AF0 */ int Draw();
+ /* 80495C9C */ int Delete();
+ /* 804961B0 */ int Create();
+ /* 804961B8 */ bool checkSmallTbox();
+
+ u32 getEvent() { return fopAcM_GetParam(this) >> 24; }
+ int getShapeType() { return (fopAcM_GetParam(this) >> 20) & 0xf; }
+ int getSwNo() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
+ int getTboxNo() { return (fopAcM_GetParam(this) >> 6) & 0x3f; }
+ int getFuncType() { return fopAcM_GetParam(this) & 0x3f; }
+ u32 getSwType() { return field_0x980 & 0xf; }
+ int getItemNo() { return (field_0x982 >> 8) & 0xff; }
+ int getPathId() { return field_0x982 & 0xff; }
+ void flagClr() { mFlags = 0; }
+ void flagOn(u16 i_flag) { mFlags |= i_flag; }
+ void flagOff(u16 i_flag) { mFlags &= ~i_flag; }
+ u16 flagCheck(u16 i_flag) { return mFlags & i_flag; }
+ void setAction(daTbox_actionFn i_actionFn) { mpActionFn = i_actionFn; }
+ void action() { (this->*mpActionFn)(); }
+
+private:
+ /* 0x718 */ bool field_0x718;
+ /* 0x71C */ request_of_phase_process_class mPhase;
+ /* 0x724 */ J3DModel* mpModel;
+ /* 0x728 */ J3DModel* mpSlimeModel;
+ /* 0x72C */ mDoExt_bckAnm* mpAnm;
+ /* 0x730 */ J3DModel* mpEffectModel;
+ /* 0x734 */ mDoExt_brkAnm* mpEffectAnm;
+ /* 0x738 */ dBgW* mpOpenBgW;
+ /* 0x73C */ dBgW* mpBgCollider;
+ /* 0x740 */ daTbox_actionFn mpActionFn;
+ /* 0x74C */ int mStaffId;
+ /* 0x750 */ f32 field_0x750;
+ /* 0x754 */ u16 mFlags;
+ /* 0x756 */ u16 mDemoFrame;
+ /* 0x758 */ bool field_0x758;
+ /* 0x759 */ u8 field_0x759;
+ /* 0x75A */ u16 field_0x75a;
+ /* 0x75C */ u8 mTimer;
+ /* 0x760 */ dBgS_ObjAcch mAcch;
+ /* 0x938 */ dBgS_AcchCir mAcchCir;
+ /* 0x978 */ u8 mTboxNo;
+ /* 0x97A */ s16 mEventId;
+ /* 0x97C */ bool field_0x97c;
+ /* 0x97D */ bool field_0x97d;
+ /* 0x97E */ u8 field_0x97e;
+ /* 0x97F */ bool mParamsInit;
+ /* 0x980 */ u16 field_0x980;
+ /* 0x982 */ u16 field_0x982;
+ /* 0x984 */ s16 field_0x984;
+ /* 0x988 */ Mtx field_0x988;
+ /* 0x9B8 */ cXyz mRotAxis;
+ /* 0x9C4 */ s16 field_0x9c4;
+ /* 0x9C6 */ s16 field_0x9c6;
+ /* 0x9C8 */ u8 field_0x9c8;
+ /* 0x9C9 */ u8 field_0x9c9;
+ /* 0x9CA */ s16 field_0x9ca;
+ /* 0x9CC */ u8 field_0x9cc;
+ /* 0x9CD */ u8 mMode;
+ /* 0x9D0 */ LIGHT_INFLUENCE mLight;
+ /* 0x9F0 */ f32 mAllcolRatio;
+ /* 0x9F4 */ int field_0x9f4;
+ /* 0x9F8 */ u32 mOpenSeId;
+ /* 0x9FC */ u8 field_0x9fc;
+ /* 0x9FD */ u8 field_0x9fd;
+ /* 0xA00 */ Mtx field_0xa00;
+};
+
+STATIC_ASSERT(sizeof(daTbox_c) == 0xA30);
+
+class daTbox_HIO_c : mDoHIO_entry_c {
+public:
+ /* 80490D2C */ daTbox_HIO_c();
+ /* 804960B8 */ virtual ~daTbox_HIO_c() {}
+
+ /* 0x04 */ u8 mItemNo;
+ /* 0x05 */ u8 mUseDebugItemNo;
+ /* 0x06 */ u8 mClearSwitch;
+ /* 0x07 */ u8 mDemoType;
+ /* 0x08 */ u8 mDebugLightColorEnabled;
+ /* 0x09 */ u8 mTimerDisplay;
+ /* 0x0A */ u8 mCheckDisplay;
+ /* 0x0B */ u8 mSaveOff;
+ /* 0x0C */ f32 mGravity;
+ /* 0x10 */ cXyz mLightOffset;
+ /* 0x1C */ s16 mLightColorR;
+ /* 0x1E */ s16 mLightColorG;
+ /* 0x20 */ s16 mLightColorB;
+ /* 0x24 */ f32 mLightPower;
+ /* 0x28 */ f32 mFluctuationRate;
+ /* 0x2C */ f32 mEnvColorInfluence;
+ /* 0x30 */ s16 mFluctuationSpeed;
+ /* 0x32 */ u8 mForPlacementCheck;
+};
+
+STATIC_ASSERT(sizeof(daTbox_HIO_c) == 0x34);
+
#endif /* D_A_TBOX_H */