diff options
| author | Max Roncace <me@caseif.net> | 2026-01-19 21:11:54 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-19 18:11:54 -0800 |
| commit | a0a5b0cc3874952316d42be82040f0f87f3df70c (patch) | |
| tree | 21ab8d82de806bafc76ee0ac51c8d0b7e181d408 /include | |
| parent | 1817d3123f558861cb5f12db6f96a3281c8ce0c3 (diff) | |
d_a_tag_* TUs mostly matching for debug (#3054)
* d_a_tag_event debug almost matching
* d_a_tag_msg debug almost matching
* d_a_tag_attention almost matching
* d_a_tag_chkpoint debug almost matching (weak func order)
* d_a_tag_evt debug almost matching (extra weak fns)
* d_a_tag_evtarea debug almost matching (weak func order)
* d_a_tag_evtmsg debug almost matching (weak func order)
* d_a_tag_mist debug almost matching (weak func order)
* d_a_tag_howl debug almost matching (weak func order)
* d_a_tag_lantern debug almost matching (weak func order)
* d_a_tag_push debug almost matching (weak func order)
* d_a_tag_telop debug almost matching (weak func order)
* d_a_tag_CstaSw debug almost matching (weak func order)
* d_a_tag_ajnot debug almost matching (weak func order)
* d_a_tag_attack_item debug almost matching (weak func order)
* d_a_tag_gstart debug almost matching (weak func order)
* d_a_tag_hinit debug almost matching (debug weak func order)
* d_a_tag_hjump debug almost matching (weak func order)
* d_a_tag_hstop debug almost matching (weak func order)
* d_a_tag_lv2prchk debug almost matching (weak func order)
* d_a_tag_magne debug almost matching (weak func order)
* d_a_tag_mhint debug almost matching (weak func order)
* d_a_tag_mstop debug almost matching (weak func order)
* d_a_tag_spring debug almost matching (weak func order)
* d_a_tag_statue_evt debug almost matching (weak func order)
* d_a_tag_arena debug almost matching (weak func order)
* d_a_tag_Lv6Gate debug almost matching (weak func order)
* d_a_tag_Lv7Gate debug almost matching (weak func order)
* d_a_tag_Lv8Gate debug almost matching (.data + weak func order)
* d_a_tag_TWgate debug almost matching (weak func order)
* d_a_tag_lv6CstaSw debug almost matching (weak func order)
* d_a_tag_assistance debug almost matching (weak func order)
* d_a_tag_bottle_item debug almost matching (weak func order)
* d_a_tag_chgrestart debug almost matching (weak func order)
* d_a_tag_csw debug almost matching (weak func order)
* d_a_tag_escape debug almost matching (weak func order)
* d_a_tag_firewall debug almost matching (weak func order)
* d_a_tag_gra debug almost matching (weak func order)
* d_a_tag_guard debug almost matching (weak func order)
* d_a_tag_instruction debug almost matching (weak func order)
* d_a_tag_kago_fall debug almost matching (weak func order)
* d_a_tag_lightball debug almost matching (weak func order)
* d_a_tag_lv5soup debug almost matching (weak func order)
* d_a_tag_mmsg debug almost matching (weak func order)
* d_a_tag_mwait debug almost matching (weak func order)
* d_a_tag_myna2 debug almost matching (weak func order)
* d_a_tag_myna_light debug almost matching (weak func order)
* d_a_tag_pachi debug almost matching (weak func order)
* d_a_tag_poFire debug almost matching (weak func order)
* d_a_tag_qs debug almost matching (small mismatch in search)
* d_a_tag_ret_room debug almost matching (weak func order)
* d_a_tag_river_back debug almost matching (weak func order)
* d_a_tag_rmbit_sw debug almost matching (weak func order)
* d_a_tag_schedule debug almost matching (weak func order)
* d_a_tag_setBall debug almost matching (weak func order)
* d_a_tag_setrestart debug almost matching (weak func order)
* d_a_tag_shop_item debug almost matching (weak func order)
* d_a_tag_smk_emt debug almost matching (weak func order)
* d_a_tag_spinner debug almost matching (weak func order)
* d_a_tag_sspath debug almost matching (weak func order)
* d_a_tag_ss_drink debug almost matching (weak func order)
* d_a_tag_stream debug almost matching (weak func order)
* d_a_tag_theB_hint debug almost matching (weak func order)
* d_a_tag_watchge debug almost matching (weak func order)
* d_a_tag_waterfall debug almost matching (weak func order)
* d_a_tag_allmato debug almost matching (weak func order)
* d_a_tag_camera debug almost matching (extra weak fns)
* d_a_tag_wara_howl debug almost matching (RTTI mismatch?)
* d_a_tag_yami debug almost matching (weak func order)
* Fix Shield regressions related to d_a_tag_* debug work
Diffstat (limited to 'include')
42 files changed, 224 insertions, 245 deletions
diff --git a/include/d/actor/d_a_cstatue.h b/include/d/actor/d_a_cstatue.h index ca888e7dc4..e20e683398 100644 --- a/include/d/actor/d_a_cstatue.h +++ b/include/d/actor/d_a_cstatue.h @@ -5,22 +5,6 @@ #include "d/d_particle_copoly.h" #include "f_op/f_op_actor.h" -enum daCstatue_FLG0 { - daCstatue_FLG0_1 = 0x1, - daCstatue_FLG0_2 = 0x2, - daCstatue_FLG0_4 = 0x4, - daCstatue_FLG0_8 = 0x8, - daCstatue_FLG0_10 = 0x10, - daCstatue_FLG0_20 = 0x20, - daCstatue_FLG0_Demo = 0x40, - daCstatue_FLG0_80 = 0x80, - daCstatue_FLG0_100 = 0x100, - daCstatue_FLG0_200 = 0x200, - daCstatue_FLG0_400 = 0x400, - daCstatue_FLG0_800 = 0x800, - daCstatue_FLG0_1000 = 0x1000, -}; - enum daCstatue_MoveMode { daCstatue_MoveMode_0, daCstatue_MoveMode_1, @@ -58,6 +42,22 @@ enum daCstatueType { * */ class daCstatue_c : public fopAc_ac_c { + enum daCstatue_FLG0 { + daCstatue_FLG0_1 = 0x1, + daCstatue_FLG0_2 = 0x2, + daCstatue_FLG0_4 = 0x4, + daCstatue_FLG0_8 = 0x8, + daCstatue_FLG0_10 = 0x10, + daCstatue_FLG0_20 = 0x20, + daCstatue_FLG0_Demo = 0x40, + daCstatue_FLG0_80 = 0x80, + daCstatue_FLG0_100 = 0x100, + daCstatue_FLG0_200 = 0x200, + daCstatue_FLG0_400 = 0x400, + daCstatue_FLG0_800 = 0x800, + daCstatue_FLG0_1000 = 0x1000, + }; + public: void atHitCallback(fopAc_ac_c*); int createHeap(); diff --git a/include/d/actor/d_a_npc4.h b/include/d/actor/d_a_npc4.h index 7c311d0733..8b82886e62 100644 --- a/include/d/actor/d_a_npc4.h +++ b/include/d/actor/d_a_npc4.h @@ -388,7 +388,7 @@ public: } BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); } void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); } - void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; } + void setIntFlowNodeNo(s32 i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; } void setCutType(int i_cutType) { mCutType = i_cutType; } void onInterrupt(u8 param_0) { field_0x9ef = param_0; } void onHide() { mHide = true; } diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 9131286505..fdbb0bc0f7 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -336,7 +336,7 @@ public: FLG0_FAST_SWORD_CUT = 0x80000, FLG0_UNK_40000 = 0x40000, FLG0_DK_CAUGHT2 = 0x20000, - FLG0_UNK_10000 = 0x10000, + FLG0_DEMO_STREAM_ACCEPT = 0x10000, FLG0_UNK_8000 = 0x8000, FLG0_UNK_4000 = 0x4000, FLG0_UNK_2000 = 0x2000, @@ -951,6 +951,8 @@ public: void onTraningCutLargeTurn() { onNoResetFlg3(FLG3_TRANING_CUT_LARGE_TURN); } void onTraningCutDown() { onNoResetFlg3(FLG3_TRANING_CUT_DOWN); } void onTraningShieldAttack() { onNoResetFlg3(FLG3_TRANING_SHIELD_ATTACK); } + void onDemoStreamAccept() { onNoResetFlg0(FLG0_DEMO_STREAM_ACCEPT); } + void offDemoStreamAccept() { offNoResetFlg0(FLG0_DEMO_STREAM_ACCEPT); } BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_STICK_ARROW_RESET); } BOOL getCutAtFlg() const { return checkNoResetFlg0(FLG0_CUT_AT_FLG); } diff --git a/include/d/actor/d_a_tag_CstaSw.h b/include/d/actor/d_a_tag_CstaSw.h index 691342c14a..b40a9d178e 100644 --- a/include/d/actor/d_a_tag_CstaSw.h +++ b/include/d/actor/d_a_tag_CstaSw.h @@ -14,7 +14,7 @@ public: int Draw(); int Delete(); - u8 getSw() { return fopAcM_GetParamBit(this, 0, 8); } + u32 getSw() { return fopAcM_GetParamBit(this, 0, 8); } private: /* 0x568 */ u8 mSwitch; @@ -25,11 +25,11 @@ private: class daTagCstaSw_HIO_c : public mDoHIO_entry_c { public: daTagCstaSw_HIO_c(); - virtual ~daTagCstaSw_HIO_c(); + virtual ~daTagCstaSw_HIO_c() {} void genMessage(JORMContext*); - u8 unk_0x4; + u8 show_range; }; #endif /* D_A_TAG_CSTASW_H */ diff --git a/include/d/actor/d_a_tag_Lv6Gate.h b/include/d/actor/d_a_tag_Lv6Gate.h index 504f6c2fed..d8a248db91 100644 --- a/include/d/actor/d_a_tag_Lv6Gate.h +++ b/include/d/actor/d_a_tag_Lv6Gate.h @@ -6,7 +6,7 @@ class daTagLv6Gate_c : public fopAc_ac_c { public: - int createHeap(); + inline int createHeap(); int create(); inline int execute(); int draw(); diff --git a/include/d/actor/d_a_tag_Lv7Gate.h b/include/d/actor/d_a_tag_Lv7Gate.h index db7b15d22e..efbb88b0cf 100644 --- a/include/d/actor/d_a_tag_Lv7Gate.h +++ b/include/d/actor/d_a_tag_Lv7Gate.h @@ -6,23 +6,23 @@ class daTagLv7Gate_c : public fopAc_ac_c { public: int create(); - void create_init(); - int execute(); + inline void create_init(); + inline int execute(); void calcFly(); inline ~daTagLv7Gate_c(); inline int createHeap(); - inline void setPath(u8 i_path_ID); + inline int setPath(int i_path_ID); inline void initBaseMtx(); inline void setBaseMtx(); inline void flyAnime(); - inline bool checkPoint(f32 i_speed); + inline bool checkPoint(cXyz& i_point, f32 i_speed); inline bool setNextPoint(); inline int draw(); - u8 getPathID() { return fopAcM_GetParam(this) >> 0x10; } - u16 getFlowNodeNo() { return fopAcM_GetParam(this); } + u8 getPathID() { return (fopAcM_GetParam(this) >> 16) & 0xFF; } + s16 getFlowNodeNo() { return (u16)fopAcM_GetParam(this); } /* 0x568 */ J3DModel* mpModel; /* 0x56C */ mDoExt_bckAnm* mpBck; diff --git a/include/d/actor/d_a_tag_Lv8Gate.h b/include/d/actor/d_a_tag_Lv8Gate.h index 9cf455a739..31f3e41e49 100644 --- a/include/d/actor/d_a_tag_Lv8Gate.h +++ b/include/d/actor/d_a_tag_Lv8Gate.h @@ -10,8 +10,8 @@ class daTagLv8Gate_c : public fopAc_ac_c { public: inline ~daTagLv8Gate_c(); - int createHeap(); - int execute(); + inline int createHeap(); + inline int execute(); void initBaseMtx(); void create_init(); diff --git a/include/d/actor/d_a_tag_TWgate.h b/include/d/actor/d_a_tag_TWgate.h index 495be5bad2..e5952da286 100644 --- a/include/d/actor/d_a_tag_TWgate.h +++ b/include/d/actor/d_a_tag_TWgate.h @@ -8,6 +8,26 @@ class daTagTWGate_c; typedef void (daTagTWGate_c::*actionFunc)(); +struct daTagTWGate_Attr_c { + /* 0x00 */ u8 show_range; +}; + +class daTagTWGate_Hio_c : public mDoHIO_entry_c { +public: + daTagTWGate_Hio_c(); + + inline void ct(); + + inline void dt(); + + void default_set(); + + inline void genMessage(JORMContext*); + + /* 0x08 */ int field_0x8; + /* 0x0C */ daTagTWGate_Attr_c attr; +}; + class daTagTWGate_c : public fopAc_ac_c { public: enum EType { @@ -31,6 +51,7 @@ public: /* 0x0A */ ACT_DEMO_HYRAL_1, /* 0x0B */ ACT_DEMO_HYRAL_2, /* 0x0C */ ACT_DEMO_HYRAL_3, + /* 0x0D */ MODE_MAX_e, }; inline ~daTagTWGate_c(); @@ -62,65 +83,47 @@ public: void initDemoHyral3(); void executeDemoHyral3(); void initBaseMtx(); - int downloadModels(); + inline int downloadModels(); void initTalk(int, fopAc_ac_c**); bool talkProc(int*, int, fopAc_ac_c**); static int createHeapCallBack(fopAc_ac_c*); int CreateHeap(); - u8 getSwitch() { return fopAcM_GetParam(this) >> 8; } + u8 getSwitch() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } u8 getType() { return fopAcM_GetParam(this); } inline int create(); - void create_init() { - field_0x5e0 = 0; - mActionID = 0; - mAction = &ActionTable[mActionID][0]; - (this->**mAction)(); - } + inline void create_init(); - void callExecute() { - (this->*mAction[1])(); - mDoAud_seStartLevel(Z2SE_OBJ_DARK_GATE, ¤t.pos, 0, 0); - } + inline void callExecute(); - int execute() { - callExecute(); + inline int execute(); - if (field_0x5e0 != 0) { - mpMorf->play(0, 0); - mpMorf->modelCalc(); - } - return 1; - } + inline int draw(); - int draw() { - if (field_0x5e0 != 0) { - mpMorf->entryDL(); - } - return 1; +#if DEBUG + daTagTWGate_Attr_c& attr() const { + return mHio.attr; } +#endif - void callInit() { - (this->*(*mAction))(); - } + inline void callInit(); - void setAction(Mode_e action) { - mActionID = action; - mAction = ActionTable[mActionID]; - callInit(); - } + inline void setAction(Mode_e i_action); - static u8 const mAttr[1]; - static actionFunc ActionTable[13][2]; + static daTagTWGate_Attr_c const mAttr; +#if DEBUG + static daTagTWGate_Hio_c mHio; +#endif + static const actionFunc ActionTable[][2]; private: /* 0x568 */ mDoExt_McaMorfSO* mpMorf; /* 0x56C */ request_of_phase_process_class mPhaseZevArc; /* 0x574 */ request_of_phase_process_class mPhaseMdRes; /* 0x57C */ request_of_phase_process_class mPhasePyRes; - /* 0x584 */ actionFunc* mAction; + /* 0x584 */ const actionFunc* mAction; /* 0x588 */ int mActionID; /* 0x58C */ dMsgFlow_c mMsgFlow; /* 0x5D8 */ u8 field_0x5d8[4]; diff --git a/include/d/actor/d_a_tag_assistance.h b/include/d/actor/d_a_tag_assistance.h index 73f71e297f..8262cf3ff0 100644 --- a/include/d/actor/d_a_tag_assistance.h +++ b/include/d/actor/d_a_tag_assistance.h @@ -5,21 +5,9 @@ class daTagAssist_c : public fopAc_ac_c { public: - void create_init() { - attention_info.flags = 0; - field_0x570 = -1; - } - - int create() { - fopAcM_ct(this, daTagAssist_c); - create_init(); - return cPhs_COMPLEATE_e; - } - - int execute() { - fopAcM_searchPlayerDistanceXZ(this); - return 1; - } + inline void create_init(); + inline int create(); + inline int execute(); u8 field_0x568[8]; s16 field_0x570; diff --git a/include/d/actor/d_a_tag_attack_item.h b/include/d/actor/d_a_tag_attack_item.h index 1f33cb9f83..b24c67003e 100644 --- a/include/d/actor/d_a_tag_attack_item.h +++ b/include/d/actor/d_a_tag_attack_item.h @@ -16,6 +16,7 @@ public: void action(); BOOL checkHit(); void createItem(); + int draw(); int _delete(); virtual ~daTagAtkItem_c() {} diff --git a/include/d/actor/d_a_tag_attention.h b/include/d/actor/d_a_tag_attention.h index 45d2292bec..37969d8903 100644 --- a/include/d/actor/d_a_tag_attention.h +++ b/include/d/actor/d_a_tag_attention.h @@ -4,6 +4,22 @@ #include "d/d_com_inf_game.h" #include "f_op/f_op_actor_mng.h" +class daAttp_HIO_c : public mDoHIO_entry_c { +public: + daAttp_HIO_c(); + + void genMessage(JORMContext*); + + /* 0x06 */ u8 enable_type_switching; + /* 0x07 */ u8 type_spec; + /* 0x08 */ u8 enable_distance_display; + /* 0x0C */ f32 dist_max; + /* 0x10 */ f32 dist_max_release; + /* 0x14 */ f32 dist_adjust; + /* 0x18 */ f32 upper_y; + /* 0x1C */ f32 lower_y; +}; + class daAttp_c : public fopAc_ac_c { public: int Create(); @@ -11,28 +27,33 @@ public: int execute(); int draw(); int _delete(); + +#if DEBUG + Mtx field_0x568; + u8 field_0x598; +#endif }; // Size: 0x568 namespace daAttp_prm { -static inline u32 getArg0(daAttp_c* pActor) { - return fopAcM_GetParam(pActor) & 3; +static inline u8 getArg0(daAttp_c* pActor) { + return fopAcM_GetParam(pActor) & 0x3; } -static inline u32 getArg1(daAttp_c* pActor) { - return (fopAcM_GetParam(pActor) >> 2) & 3; +static inline u8 getArg1(daAttp_c* pActor) { + return (fopAcM_GetParam(pActor) >> 2) & 0x3; } -static inline u32 getArg2(daAttp_c* pActor) { - return (fopAcM_GetParam(pActor) >> 4) & 7; +static inline u8 getArg2(daAttp_c* pActor) { + return (fopAcM_GetParam(pActor) >> 4) & 0x7; } -static inline u32 getArg3(daAttp_c* pActor) { - return (fopAcM_GetParam(pActor) >> 7) & 1; +static inline u8 getArg3(daAttp_c* pActor) { + return (fopAcM_GetParam(pActor) >> 7) & 0x1; } -static inline u32 getArg4(daAttp_c* pActor) { - return (fopAcM_GetParam(pActor) >> 8) & 1; +static inline u8 getArg4(daAttp_c* pActor) { + return (fopAcM_GetParam(pActor) >> 8) & 0x1; } -static inline u32 getSw1(daAttp_c* pActor) { +static inline u8 getSw1(daAttp_c* pActor) { return (fopAcM_GetParam(pActor) >> 0x10) & 0xff; } -static inline u32 getSw2(daAttp_c* pActor) { +static inline u8 getSw2(daAttp_c* pActor) { return (fopAcM_GetParam(pActor) >> 0x18); } } // namespace daAttp_prm diff --git a/include/d/actor/d_a_tag_bottle_item.h b/include/d/actor/d_a_tag_bottle_item.h index ecdba3d544..cd122c8cad 100644 --- a/include/d/actor/d_a_tag_bottle_item.h +++ b/include/d/actor/d_a_tag_bottle_item.h @@ -14,18 +14,18 @@ private: /* 0x0576 */ u8 mBottleItemType; public: - s32 create(); - s32 Delete(); - s32 Execute(); - s32 Draw(); + int create(); + int Delete(); + int Execute(); + int Draw(); void setTypeFromParam(); void restart(); void initialize(); int checkProcess(ProcessFunc); int setProcess(ProcessFunc); void setAttnPos(); - s32 chkEvent(); - s32 orderEvent(); + int chkEvent(); + int orderEvent(); void makeSoup(); int wait(void*); virtual ~daTag_BottleItem_c(); diff --git a/include/d/actor/d_a_tag_camera.h b/include/d/actor/d_a_tag_camera.h index e9b4516637..b2b558adb3 100644 --- a/include/d/actor/d_a_tag_camera.h +++ b/include/d/actor/d_a_tag_camera.h @@ -14,6 +14,7 @@ public: u16 getAreaType(); u16 getAreaNoChk(); int execute(); + int draw(); inline int create(); diff --git a/include/d/actor/d_a_tag_chgrestart.h b/include/d/actor/d_a_tag_chgrestart.h index 496b4a0477..18b1cd6a48 100644 --- a/include/d/actor/d_a_tag_chgrestart.h +++ b/include/d/actor/d_a_tag_chgrestart.h @@ -6,10 +6,11 @@ class daTagChgRestart_c : public fopAc_ac_c { public: daTagChgRestart_c() {} - s32 Create(); - s32 create(); - s32 execute(); - s32 _delete(); + int Create(); + int create(); + int execute(); + int draw(); + int _delete(); /* 0x0568 */ cXyz mVertices[4]; }; @@ -17,8 +18,12 @@ public: STATIC_ASSERT(sizeof(daTagChgRestart_c) == 0x598); namespace daTagChgRestart_prm { - inline u8 getSwNo(daTagChgRestart_c* p_chgRestart) { return fopAcM_GetParam(p_chgRestart) >> 8; } - inline u8 getPlayerNo(daTagChgRestart_c* p_chgRestart) { return fopAcM_GetParam(p_chgRestart); } + inline u8 getSwNo(daTagChgRestart_c* p_chgRestart) { + return (fopAcM_GetParam(p_chgRestart) >> 8) & 0xFF; + } + inline u8 getPlayerNo(daTagChgRestart_c* p_chgRestart) { + return fopAcM_GetParam(p_chgRestart); + } }; // namespace daTagChgRestart_prm #endif /* D_A_TAG_CHGRESTART_H */ diff --git a/include/d/actor/d_a_tag_chkpoint.h b/include/d/actor/d_a_tag_chkpoint.h index 842408d20c..4871ec3946 100644 --- a/include/d/actor/d_a_tag_chkpoint.h +++ b/include/d/actor/d_a_tag_chkpoint.h @@ -7,11 +7,12 @@ class daTag_Chk_c : public fopAc_ac_c { public: int execute(); + int draw(); u16 getAreaType() { return home.angle.z & 0x100; } - u16 getHeight() { return fopAcM_GetParam(this) & 0xff; } - u8 getSwBit() { return fopAcM_GetParam(this) >> 8; } - u8 getSwBit2() { return fopAcM_GetParam(this) >> 16; } + u8 getHeight() { return fopAcM_GetParam(this) & 0xff; } + u8 getSwBit() { return (fopAcM_GetParam(this) & 0xff00) >> 8; } + u8 getSwBit2() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; } int create() { fopAcM_ct(this, daTag_Chk_c); @@ -34,8 +35,11 @@ public: attention_info.position = current.pos; - u16 height = getHeight(); - height != 0xff ? attention_info.position.y += height * 10.0f : attention_info.position.y += scale.y * 0.5f; + if (getHeight() != 0xff) { + attention_info.position.y += getHeight() * 10.0f; + } else { + attention_info.position.y += scale.y * 0.5f; + } eyePos = attention_info.position; return cPhs_COMPLEATE_e; diff --git a/include/d/actor/d_a_tag_csw.h b/include/d/actor/d_a_tag_csw.h index 97d08ffda2..a55f21cb88 100644 --- a/include/d/actor/d_a_tag_csw.h +++ b/include/d/actor/d_a_tag_csw.h @@ -23,7 +23,7 @@ struct daTagCsw_c : public fopAc_ac_c, public request_of_phase_process_class { int getSw2() { return fopAcM_GetParamBit(this, 9, 8); } int getType() { return fopAcM_GetParamBit(this, 0, 1); } int getParam(int param_1, int param_2, int param_3) { - return (1 << param_3) - 1U & param_1 >> (param_2 & 0x3fU); + return (1 << param_3) - 1U & param_1 >> param_2; } int getArg0() { return getParam(current.angle.x, 0, 8); } int getItemBit() { return fopAcM_GetParamBit(this, 17, 8); } diff --git a/include/d/actor/d_a_tag_escape.h b/include/d/actor/d_a_tag_escape.h index d9a0aa23a4..b733e95aa9 100644 --- a/include/d/actor/d_a_tag_escape.h +++ b/include/d/actor/d_a_tag_escape.h @@ -5,8 +5,7 @@ class daTagEscape_c : public fopAc_ac_c { public: - daTagEscape_c() {} - ~daTagEscape_c() {} + inline int create(); u8 getPathID() { return fopAcM_GetParam(this) & 0xff; } }; diff --git a/include/d/actor/d_a_tag_guard.h b/include/d/actor/d_a_tag_guard.h index 0d2c784303..adebfffb75 100644 --- a/include/d/actor/d_a_tag_guard.h +++ b/include/d/actor/d_a_tag_guard.h @@ -9,7 +9,7 @@ public: int getAppearPoint(Vec*); void createGuard(u32); - u8 getPathID() { return fopAcM_GetParam(this) >> 8; } + u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } inline int create(); inline void create_init(); diff --git a/include/d/actor/d_a_tag_howl.h b/include/d/actor/d_a_tag_howl.h index 9d1f9ed023..222987b8f6 100644 --- a/include/d/actor/d_a_tag_howl.h +++ b/include/d/actor/d_a_tag_howl.h @@ -14,7 +14,7 @@ public: int destroy(); int execute(); int draw(); - u8 isAreaCheck(); + bool isAreaCheck(); int getParam(); u8 getSwitchBit(); virtual ~daTag_Howl_c() {} diff --git a/include/d/actor/d_a_tag_lantern.h b/include/d/actor/d_a_tag_lantern.h index 9cb8c698e1..54e1e5cf22 100644 --- a/include/d/actor/d_a_tag_lantern.h +++ b/include/d/actor/d_a_tag_lantern.h @@ -5,7 +5,7 @@ #include "d/d_msg_flow.h" struct daTag_Lantern_HIOParam { - u8 field_0x0; + u8 enable_debug_info; }; class daTag_Lantern_Param_c { diff --git a/include/d/actor/d_a_tag_lightball.h b/include/d/actor/d_a_tag_lightball.h index a9e3453e39..c27ef8e061 100644 --- a/include/d/actor/d_a_tag_lightball.h +++ b/include/d/actor/d_a_tag_lightball.h @@ -13,8 +13,8 @@ public: int draw(); int _delete(); - u8 getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } - u32 getType() { return fopAcM_GetParamBit(this, 8, 4); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getType() { return fopAcM_GetParamBit(this, 8, 4); } /* 0x568 */ DALKMIST_INFLUENCE mInfluence; /* 0x57C */ u8 field_0x57c; diff --git a/include/d/actor/d_a_tag_lv6CstaSw.h b/include/d/actor/d_a_tag_lv6CstaSw.h index 9f8bf99dd6..17b58e4b28 100644 --- a/include/d/actor/d_a_tag_lv6CstaSw.h +++ b/include/d/actor/d_a_tag_lv6CstaSw.h @@ -14,7 +14,7 @@ public: int Draw(); int Delete(); - u8 getSw() { return fopAcM_GetParamBit(this, 0, 8); } + u32 getSw() { return fopAcM_GetParamBit(this, 0, 8); } private: /* 0x568 */ u8 mSwitch; @@ -24,11 +24,11 @@ private: class daLv6CstaSw_HIO_c : public mDoHIO_entry_c { public: daLv6CstaSw_HIO_c(); - virtual ~daLv6CstaSw_HIO_c(); + virtual ~daLv6CstaSw_HIO_c() {} void genMessage(JORMContext*); - u8 unk_0x4; + u8 show_range; }; #endif /* D_A_TAG_LV6CSTASW_H */ diff --git a/include/d/actor/d_a_tag_mist.h b/include/d/actor/d_a_tag_mist.h index 798be173d9..9579ff62d5 100644 --- a/include/d/actor/d_a_tag_mist.h +++ b/include/d/actor/d_a_tag_mist.h @@ -11,6 +11,7 @@ public: int Create(); int create(); int execute(); + int draw(); int _delete(); static u8 getPlayerNo(); @@ -28,18 +29,18 @@ public: namespace daTagMist_prm { inline u8 getSwNoNum(daTagMist_c* i_this) { - return fopAcM_GetParam(i_this) >> 0x10; + return (fopAcM_GetParam(i_this) >> 16) & 0xFF; } inline u8 getMySwNo(daTagMist_c* i_this) { - return fopAcM_GetParam(i_this) >> 0x8; + return (fopAcM_GetParam(i_this) >> 8) & 0xFF; } inline u8 getTopSwNo(daTagMist_c* i_this) { return fopAcM_GetParam(i_this); } inline u8 getExitNo(daTagMist_c* i_this) { - return (fopAcM_GetParam(i_this) >> 0x18) & 0x3F; + return (fopAcM_GetParam(i_this) >> 24) & 0x3F; } -inline int getSwNo2(daTagMist_c* i_this) { +inline u8 getSwNo2(daTagMist_c* i_this) { return i_this->field_0x5a2 & 0xFF; } } // namespace daTagMist_prm diff --git a/include/d/actor/d_a_tag_mmsg.h b/include/d/actor/d_a_tag_mmsg.h index b916e2f212..9fdd0b3c66 100644 --- a/include/d/actor/d_a_tag_mmsg.h +++ b/include/d/actor/d_a_tag_mmsg.h @@ -12,13 +12,13 @@ public: int execute(); void onUseFlg() { mUseFlg = true; } - bool checkNoAttention() { return mAttention == 0xFF; } + bool checkNoAttention() const { return mAttention == 0xFF; } private: /* 0x568 */ u8 field_0x568; /* 0x569 */ u8 field_0x569; /* 0x56A */ u8 mAttention; - /* 0x56B */ bool field_0x56b; + /* 0x56B */ u8 field_0x56b; /* 0x56C */ bool mUseFlg; /* 0x56D */ u8 field_0x56d[3]; /* 0x570 */ u16 field_0x570; diff --git a/include/d/actor/d_a_tag_msg.h b/include/d/actor/d_a_tag_msg.h index 52f60bf13b..5ff6163559 100644 --- a/include/d/actor/d_a_tag_msg.h +++ b/include/d/actor/d_a_tag_msg.h @@ -16,6 +16,23 @@ public: static const daTag_Msg_HIO_Param_c m; }; +#if DEBUG +class daTag_Msg_HIO_c : public JORReflexible { +public: + daTag_Msg_HIO_c(); + ~daTag_Msg_HIO_c(); + + void genMessage(JORMContext*); + + s8 mChild; + daTag_Msg_HIO_Param_c m; +}; + +#define TAG_MSG_HIO_CLASS daTag_Msg_HIO_c +#else +#define TAG_MSG_HIO_CLASS daTag_Msg_Param_c +#endif + class daTag_Msg_c : public fopAc_ac_c { public: virtual ~daTag_Msg_c(); @@ -39,9 +56,9 @@ public: /* 0x5CC */ int mOrderEvtNum; /* 0x5D0 */ s16 mEventIdx; /* 0x5D2 */ u8 field_0x5D2[0x5D8 - 0x5D2]; - /* 0x5D8 */ daTag_Msg_Param_c* mParam; - /* 0x5DC */ u8 field_0x5dc; - /* 0x5DD */ u8 field_0x5dd; + /* 0x5D8 */ TAG_MSG_HIO_CLASS* mpHIO; + /* 0x5DC */ bool field_0x5dc; + /* 0x5DD */ bool field_0x5dd; /* 0x5DE */ u8 mOnSwitch; /* 0x5DF */ u8 mOffSwitch; /* 0x5E0 */ u16 mOnSaveLabel; diff --git a/include/d/actor/d_a_tag_myna2.h b/include/d/actor/d_a_tag_myna2.h index 5117e36c22..7eecb0c1d7 100644 --- a/include/d/actor/d_a_tag_myna2.h +++ b/include/d/actor/d_a_tag_myna2.h @@ -8,8 +8,8 @@ public: s32 create(); s32 execute(); - u8 getSwBit() { return fopAcM_GetParam(this) >> 8; } - u8 getMode() { return fopAcM_GetParam(this); } + u8 getSwBit() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + int getMode() { return fopAcM_GetParam(this) & 0xFF; } f32 getExtent() { return scale.x * 100.0f;} private: diff --git a/include/d/actor/d_a_tag_myna_light.h b/include/d/actor/d_a_tag_myna_light.h index 0a8b27c15d..664aea5e57 100644 --- a/include/d/actor/d_a_tag_myna_light.h +++ b/include/d/actor/d_a_tag_myna_light.h @@ -10,8 +10,8 @@ public: int Execute(); int Draw(); bool setTurnOnOffChange(); - u32 getTurnOnTime(); - u32 getTurnOffTime(); + u8 getTurnOnTime(); + u8 getTurnOffTime(); void initialize(); virtual ~daTag_MynaLight_c(); diff --git a/include/d/actor/d_a_tag_push.h b/include/d/actor/d_a_tag_push.h index ae3d664401..3a20b5ed77 100644 --- a/include/d/actor/d_a_tag_push.h +++ b/include/d/actor/d_a_tag_push.h @@ -16,12 +16,12 @@ public: int getId() { u16 id = (fopAcM_GetParam(this) & 0xFF000000) >> 24; - return (id == 0xFF) ? -1 : id; + return id == 0xFF ? -1 : id; } u8 getBitSW() { return fopAcM_GetParam(this) & 0xFF; } - u8 getBitSW2() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + u8 getBitSW2() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } u32 getFlowNodeNo() { if (home.angle.x != 0xFFFF) { diff --git a/include/d/actor/d_a_tag_qs.h b/include/d/actor/d_a_tag_qs.h index 832881d338..0ff7b20127 100644 --- a/include/d/actor/d_a_tag_qs.h +++ b/include/d/actor/d_a_tag_qs.h @@ -17,7 +17,7 @@ public: int execute(); int draw(); - u8 getType() { return fopAcM_GetParamBit(this, 0, 1); } + u32 getType() { return fopAcM_GetParamBit(this, 0, 1); } int getSwNo() { return fopAcM_GetParamBit(this, 1, 8); } /* 0x568 */ f32 field_0x568; diff --git a/include/d/actor/d_a_tag_ret_room.h b/include/d/actor/d_a_tag_ret_room.h index 063f644d8f..9e5f579e76 100644 --- a/include/d/actor/d_a_tag_ret_room.h +++ b/include/d/actor/d_a_tag_ret_room.h @@ -13,7 +13,7 @@ public: int draw(); int execute(); void init(); - u8 chkPlyrInTag(); + bool chkPlyrInTag(); /* 0x56C */ f32 field_0x56c; /* 0x570 */ f32 field_0x570; diff --git a/include/d/actor/d_a_tag_river_back.h b/include/d/actor/d_a_tag_river_back.h index 9cbd1e603e..3d53fe9d27 100644 --- a/include/d/actor/d_a_tag_river_back.h +++ b/include/d/actor/d_a_tag_river_back.h @@ -31,9 +31,11 @@ public: void setAction(u8 i_action) { mAction = i_action; } - u8 getSwBit() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 8, 8); } - u8 getSwBit2() { return fopAcM_GetParamBit(this, 0x10, 8); } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 0x10, 8); } + + u8 getNextSceneNo() { return fopAcM_GetParamBit(this, 0, 8); } /* 0x568 */ request_of_phase_process_class mPhase; /* 0x570 */ u8 mTimer; diff --git a/include/d/actor/d_a_tag_rmbit_sw.h b/include/d/actor/d_a_tag_rmbit_sw.h index 8b214533b9..957267dd1d 100644 --- a/include/d/actor/d_a_tag_rmbit_sw.h +++ b/include/d/actor/d_a_tag_rmbit_sw.h @@ -12,13 +12,13 @@ public: int draw(); int execute(); void init(); - u8 chkPlyrInTag(); + bool chkPlyrInTag(); s8 getArg0_RoomSaveTableNo() { return fopAcM_GetParamBit(this, 0, 8); } s8 getArg1_RoomNo() { return fopAcM_GetParamBit(this, 8, 8); } u8 getArg2_CngBitVal() { return fopAcM_GetParamBit(this, 16, 1); } u8 getArg3_CngBitFlg() { return fopAcM_GetParamBit(this, 17, 1); } - u8 getSwBit() { return fopAcM_GetParamBit(this, 24, 8); } + int getSwBit() { return fopAcM_GetParamBit(this, 24, 8); } /* 0x56C */ f32 field_0x56c; /* 0x570 */ f32 field_0x570; diff --git a/include/d/actor/d_a_tag_setrestart.h b/include/d/actor/d_a_tag_setrestart.h index 73eb563ace..9cc144a55c 100644 --- a/include/d/actor/d_a_tag_setrestart.h +++ b/include/d/actor/d_a_tag_setrestart.h @@ -8,6 +8,7 @@ public: int Create(); int create(); int execute(); + int draw(); int _delete(); /* 0x568 */ s8 mPlayerRoomNo; diff --git a/include/d/actor/d_a_tag_spinner.h b/include/d/actor/d_a_tag_spinner.h index b0d97dfb56..cae6eeb9b6 100644 --- a/include/d/actor/d_a_tag_spinner.h +++ b/include/d/actor/d_a_tag_spinner.h @@ -14,6 +14,7 @@ public: int CreateHeap(); int create(); int execute(); + int draw(); int _delete(); f32 GetR() { return mRadius; } }; diff --git a/include/d/actor/d_a_tag_spring.h b/include/d/actor/d_a_tag_spring.h index 4d6a50a9b0..353d920ad9 100644 --- a/include/d/actor/d_a_tag_spring.h +++ b/include/d/actor/d_a_tag_spring.h @@ -10,10 +10,11 @@ public: int Create(); int create(); int execute(); - u8 checkArea(); + bool checkArea(); + int draw(); int _delete(); - u32 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } /* 0x568 */ u8 mTimer; }; // Size: 0x56C diff --git a/include/d/actor/d_a_tag_ss_drink.h b/include/d/actor/d_a_tag_ss_drink.h index 4055bd3fc0..c5766c9dfc 100644 --- a/include/d/actor/d_a_tag_ss_drink.h +++ b/include/d/actor/d_a_tag_ss_drink.h @@ -14,7 +14,7 @@ public: int Delete(); int Execute(); int Draw(); - int getTypeFromParam(); + u8 getTypeFromParam(); u8 getSwitchFromParam(); u16 getFlowNodeNum(); u16 getValue(); @@ -29,7 +29,6 @@ public: int talk(void*); ~daTag_SSDrink_c(); - s32 fopAcM_seenPlayerAngleY() { return fopAcM_seenActorAngleY(this, dComIfGp_getPlayer(0)); } bool checkShopOil() const { return field_0x5D2 == 4; } /* 0x578 */ dMsgFlow_c field_0x578; diff --git a/include/d/actor/d_a_tag_statue_evt.h b/include/d/actor/d_a_tag_statue_evt.h index 596d820e65..e116dea787 100644 --- a/include/d/actor/d_a_tag_statue_evt.h +++ b/include/d/actor/d_a_tag_statue_evt.h @@ -21,7 +21,7 @@ public: void endParticle(); BOOL checkStartDemo(); BOOL checkOnEffect(); - s32 getLetterCount(); + int getLetterCount(); int draw(); int _delete(); @@ -38,7 +38,7 @@ private: /* 0x596 */ u8 mMapToolId; /* 0x597 */ u8 mSkyCharacterEventBitIdIndex; /* 0x598 */ s16 mEventId; - /* 0x59C */ u32 mTreasureDemoItemId; + /* 0x59C */ u32 mItemId; /* 0x5A0 */ s32 mOwlStatueId; enum Action_e { @@ -63,19 +63,23 @@ private: TAG_LOCATION_RUINED_THEATRE }; - void setAction(Action_e action) { + void setAction(u8 action) { mCurrentAction = action; } - u32 getSwbit() { + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } // Returns whether player has obtained a Sky Character from the tag - u32 getSwbit2() { + u8 getSwbit2() { return fopAcM_GetParamBit(this, 12, 8); } + + u8 getType() { + return fopAcM_GetParamBit(this, 8, 4); + } }; #endif /* D_A_TAG_STATUE_EVT_H */ diff --git a/include/d/actor/d_a_tag_stream.h b/include/d/actor/d_a_tag_stream.h index 6988320281..7c3b3eb4ac 100644 --- a/include/d/actor/d_a_tag_stream.h +++ b/include/d/actor/d_a_tag_stream.h @@ -5,7 +5,7 @@ class daTagStream_c : public fopAc_ac_c { public: - u8 getPriority() { + u8 getPriority() const { return mPriority; } diff --git a/include/d/actor/d_a_tag_theB_hint.h b/include/d/actor/d_a_tag_theB_hint.h index cd80a3e5e7..fb200e1ecd 100644 --- a/include/d/actor/d_a_tag_theB_hint.h +++ b/include/d/actor/d_a_tag_theB_hint.h @@ -1,61 +1,16 @@ #ifndef D_A_TAG_THEB_HINT_H #define D_A_TAG_THEB_HINT_H -// #include "d/actor/d_a_npc_theB.h" -#include "d/d_com_inf_game.h" #include "f_op/f_op_actor_mng.h" -// needs to be pulled from d_a_npc_theB.h eventually -struct daNpcTheB_c { - daNpcTheB_c(); - ~daNpcTheB_c(); - void create(); - void CreateHeap(); - void Delete(); - void Execute(); - void Draw(); - void ctrlJoint(J3DJoint*, J3DModel*); - void createHeapCallBack(fopAc_ac_c*); - void ctrlJointCallBack(J3DJoint*, int); - void getHandPos1(int); - void getHandPos2(int); - void setHintEvent(s32, u16, int); - void main(); - void setParam(); - void ctrlBtk(); - void setAttnPos(); - void setExpressionAnm(int, bool); - void setExpressionBtp(int); - bool setMotionAnm(int, f32); - bool drawDbgInfo(); - void reset(); - void playExpression(); - void playMotion(); - void doNormalAction(); - void doEvent(); - void lookat(); - void wait(void*); - void setMotion(int, f32, int); - void setExpression(int, f32); - void talk(void*); - void EvCut_PersonalCombatIntro(int); - void EvCut_PersonalCombatRevenge(int); - void EvCut_PersonalCombatAfter(); - void EvCut_AnnulationFieldRace(int); - void EvCut_TheBHint(int); - void EvCut_CoachGuardGameOver(int); - - static u8 mEvtSeqList[72]; -}; - class daTagTheBHint_c : public fopAc_ac_c { public: - u8 getSwitchNo() { + u32 getSwitchNo() { return shape_angle.x & 0xff; } - u16 getMessageNo() { + u32 getMessageNo() { return shape_angle.z & 0xffff; } @@ -65,37 +20,11 @@ public: s8 getRoomNo() { return fopAcM_GetParam(this) >> 24; - } - - int create() { - fopAcM_ct(this, daTagTheBHint_c); - field_0x568 = pow(scale.x * 100.0f,2.0f); - return cPhs_COMPLEATE_e; } - int execute() { - if (fopAcM_isSwitch(this,getSwitchNo())) { - fopAcM_delete(this); - return 1; - } else { - f32 distance = fopAcM_searchPlayerDistanceXZ2(this); + inline int create(); + inline int execute(); - if (distance < field_0x568) { - daNpcTheB_c* the_b = (daNpcTheB_c*)fpcM_SearchByName(PROC_NPC_THEB); - if (the_b) { - s8 roomNo = getRoomNo(); - - if (roomNo == 0xFF) { - roomNo = fopAcM_GetRoomNo(this); - } - - the_b->setHintEvent(getMessageNo(),getLinkID(),roomNo); - } - } - } - - return 1; - } /* 0x568 */ f32 field_0x568; }; diff --git a/include/d/actor/d_a_tag_waterfall.h b/include/d/actor/d_a_tag_waterfall.h index 26c1bc040c..fe833394c2 100644 --- a/include/d/actor/d_a_tag_waterfall.h +++ b/include/d/actor/d_a_tag_waterfall.h @@ -29,31 +29,31 @@ private: /* 0x574 */ f32 mFogNear; /* 0x578 */ f32 mFogFar; /* 0x57C */ f32 mColorBlend; - /* 0x580 */ bool mPrevCameraInWaterfall; + /* 0x580 */ u8 mPrevCameraInWaterfall; /* 0x581 */ u8 mFrameCountdown; /* 0x582 */ u8 mColpat; /* 0x583 */ u8 mIsMasterWaterfallTag; }; -struct daTagWaterFall_HIO_c { +struct daTagWaterFall_HIO_c : public JORReflexible { public: daTagWaterFall_HIO_c(); - virtual ~daTagWaterFall_HIO_c(); + virtual ~daTagWaterFall_HIO_c() {} + + void genMessage(JORMContext*); /* 0x00 */ /* vtable */ - /* 0x04 */ s8 field_0x04; - /* 0x05 */ bool mShouldModifyFog; - /* 0x06 */ u8 pad0[2]; - /* 0x08 */ f32 mBaseFogNear; - /* 0x0C */ f32 mBaseFogFar; - /* 0x10 */ f32 mColorBlendStepDivisor; - /* 0x14 */ u8 field_0x14; - /* 0x15 */ u8 field_0x15; - /* 0x16 */ u8 pad1[2]; - /* 0x18 */ f32 field_0x18; - /* 0x1C */ f32 field_0x1C; - /* 0x20 */ f32 field_0x20; + /* 0x04 */ s8 child; + /* 0x05 */ u8 enable_fog_adjust; + /* 0x08 */ f32 base_fog_far; + /* 0x0C */ f32 base_fog_near; + /* 0x10 */ f32 color_blend_step_divisor; + /* 0x14 */ u8 draw_ellipse; + /* 0x15 */ u8 enable_ellipse_adjust; + /* 0x18 */ f32 ellipse_radius_a; + /* 0x1C */ f32 ellipse_radius_b; + /* 0x20 */ f32 ellipse_rotate; }; #endif /* D_A_TAG_WATERFALL_H */ diff --git a/include/d/actor/d_a_tag_yami.h b/include/d/actor/d_a_tag_yami.h index 0af2271e6b..8410899186 100644 --- a/include/d/actor/d_a_tag_yami.h +++ b/include/d/actor/d_a_tag_yami.h @@ -16,8 +16,8 @@ public: void offMidnaTagSw2(); void setCoC(cXyz i_coC) { mCoC = i_coC; } - u8 get_MTagSw() { return fopAcM_GetParamBit(this, 8, 8); } - u8 get_MTagSw2() { return fopAcM_GetParamBit(this, 16, 8); } + int get_MTagSw() { return (fopAcM_GetParam(this) >> 8) & 0xFF; } + int get_MTagSw2() { return (fopAcM_GetParam(this) >> 16) & 0xFF; } s32 get_prm() { return fopAcM_GetParam(this) & 0xff; } int is_CoHit() { return mIsCoHit; } diff --git a/include/d/d_bg_w.h b/include/d/d_bg_w.h index 846a177bd9..527c0e3fe4 100644 --- a/include/d/d_bg_w.h +++ b/include/d/d_bg_w.h @@ -219,7 +219,7 @@ public: MtxP GetBaseMtxP() { return pm_base; } bool ChkNoCalcVtx() { return mFlags & NO_CALC_VTX_e; } bool ChkFlush() { return field_0x91 & 8; } - void SetLock() { mFlags |= LOCK_e; } + void SetLock() { mFlags |= (u8)LOCK_e; } void OffRoofRegist() { field_0x91 |= 0x4; } void OnRoofRegist() { field_0x91 &= ~0x04; } bool ChkRoofRegist() { return field_0x91 & 4;} |
