diff --git a/config/GZ2J01/rels/d_a_obj_swpush2/splits.txt b/config/GZ2J01/rels/d_a_obj_swpush2/splits.txt index 4b3813014f8..c6931fdc9a8 100644 --- a/config/GZ2J01/rels/d_a_obj_swpush2/splits.txt +++ b/config/GZ2J01/rels/d_a_obj_swpush2/splits.txt @@ -13,3 +13,4 @@ d/actor/d_a_obj_swpush2.cpp: .text start:0x00000078 end:0x00001BCC .rodata start:0x00000000 end:0x000001AC .data start:0x00000000 end:0x00000154 + .bss start:0x00000000 end:0x00000004 diff --git a/config/GZ2P01/rels/d_a_obj_swpush2/splits.txt b/config/GZ2P01/rels/d_a_obj_swpush2/splits.txt index 4b3813014f8..c6931fdc9a8 100644 --- a/config/GZ2P01/rels/d_a_obj_swpush2/splits.txt +++ b/config/GZ2P01/rels/d_a_obj_swpush2/splits.txt @@ -13,3 +13,4 @@ d/actor/d_a_obj_swpush2.cpp: .text start:0x00000078 end:0x00001BCC .rodata start:0x00000000 end:0x000001AC .data start:0x00000000 end:0x00000154 + .bss start:0x00000000 end:0x00000004 diff --git a/configure.py b/configure.py index 464d3b35db4..8ede17f0fa5 100755 --- a/configure.py +++ b/configure.py @@ -2107,7 +2107,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6SzGate"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6Tenbin"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6TogeRoll"), - ActorRel(NonMatching, "d_a_obj_lv6TogeTrap"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6TogeTrap"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6bemos"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6bemos2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6egate"), @@ -2201,12 +2201,12 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swchain"), ActorRel(Equivalent, "d_a_obj_swhang"), # vtable order ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_sword"), - ActorRel(NonMatching, "d_a_obj_swpush2"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swpush2"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swspinner"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swturn"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_syRock"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_szbridge"), - ActorRel(NonMatching, "d_a_obj_taFence"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_taFence"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_table"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_takaraDai"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_tatigi"), diff --git a/include/d/actor/d_a_obj_lv6TogeTrap.h b/include/d/actor/d_a_obj_lv6TogeTrap.h index 77438e832f9..ca2eb440f17 100644 --- a/include/d/actor/d_a_obj_lv6TogeTrap.h +++ b/include/d/actor/d_a_obj_lv6TogeTrap.h @@ -2,6 +2,8 @@ #define D_A_OBJ_LV6TOGETRAP_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -11,13 +13,11 @@ * @details * */ -class daLv6TogeTrap_c : public fopAc_ac_c { +class daLv6TogeTrap_c : public dBgS_MoveBgActor { public: /* 80C79F10 */ void setBaseMtx(); - /* 80C79FE8 */ void CreateHeap(); - /* 80C7A068 */ void create(); - /* 80C7A6B0 */ void searchSekizoAct(void*, void*); - /* 80C7A700 */ void Execute(Mtx**); + /* 80C7A068 */ int create(); + /* 80C7A6B0 */ static void* searchSekizoAct(void*, void*); /* 80C7A97C */ void moveLift(); /* 80C7ABC8 */ void executeType1(); /* 80C7ACA0 */ void init_modeBound(); @@ -50,25 +50,57 @@ public: /* 80C7BED8 */ void init_modeBreak(); /* 80C7BFE4 */ void modeBreak(); /* 80C7C1D8 */ void setNextPoint(); - /* 80C7C33C */ void Draw(); - /* 80C7C3E0 */ void Delete(); - static u8 const mCcDObjInfo[48]; - static u8 const mCcDObjInfo2[48]; - static u8 const mSpeed[64]; - static u8 mCcDSph[64]; - static u8 mCcDCyl[68]; + /* 80C79FE8 */ virtual int CreateHeap(); + /* 80C7A700 */ virtual int Execute(Mtx**); + /* 80C7C33C */ virtual int Draw(); + /* 80C7C3E0 */ virtual int Delete(); -private: - /* 0x568 */ u8 field_0x568[0x8f4 - 0x568]; + int getSpeed() { return fopAcM_GetParamBit(this, 8, 4); } + int getType() { return fopAcM_GetParamBit(this, 12, 4); } + int getHankei() { return fopAcM_GetParamBit(this, 16, 4); } + int getModelType() { return fopAcM_GetParamBit(this, 20, 4); } + int getHankei2() { return fopAcM_GetParamBit(this, 24, 8); } + + static const dCcD_SrcGObjInf mCcDObjInfo; + static const dCcD_SrcGObjInf mCcDObjInfo2; + static const f32 mSpeed[16]; + static dCcD_SrcSph mCcDSph; + static dCcD_SrcCyl mCcDCyl; + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ u8 mPathNo; + /* 0x5AD */ s8 mRotateDirection; + /* 0x5AE */ s16 field_0x5ae; + /* 0x5B0 */ cXyz field_0x5b0; + /* 0x5BC */ cXyz field_0x5bc; + /* 0x5C8 */ cXyz field_0x5c8; + /* 0x5D4 */ f32 mMoveSpeed; + /* 0x5D8 */ u8 mMode; + /* 0x5D9 */ u8 field_0x5d9; + /* 0x5DA */ u8 mType; + /* 0x5DB */ u8 field_0x5db; + /* 0x5DC */ cM3dGLin mLine; + /* 0x5F8 */ u8 mIsPathClosed; + /* 0x5F9 */ u8 field_0x5f9; + /* 0x5FC */ f32 mRadius; + /* 0x600 */ s16 field_0x600; + /* 0x604 */ f32 field_0x604; + /* 0x608 */ u8 field_0x608; + /* 0x609 */ u8 field_0x609; + /* 0x60A */ u8 field_0x60a; + /* 0x60B */ u8 field_0x60b; + /* 0x60C */ u8 mModelType; + /* 0x610 */ f32 field_0x610; + /* 0x614 */ dCcD_Stts mCcStts; + /* 0x650 */ dCcD_Sph mCcSph; + /* 0x788 */ dCcD_Cyl mCcCyl; + /* 0x8C4 */ cXyz field_0x8c4; + /* 0x8D0 */ u8 field_0x8d0; + /* 0x8D4 */ Z2SoundObjSimple mSound; }; STATIC_ASSERT(sizeof(daLv6TogeTrap_c) == 0x8f4); -class daLv6TogeTrap_HIO_c { -public: - /* 80C79E4C */ daLv6TogeTrap_HIO_c(); - /* 80C7C504 */ ~daLv6TogeTrap_HIO_c(); -}; - #endif /* D_A_OBJ_LV6TOGETRAP_H */ diff --git a/include/d/actor/d_a_obj_swpush2.h b/include/d/actor/d_a_obj_swpush2.h index 24203985be0..55bb6c32711 100644 --- a/include/d/actor/d_a_obj_swpush2.h +++ b/include/d/actor/d_a_obj_swpush2.h @@ -2,6 +2,7 @@ #define D_A_OBJ_SWPUSH2_H #include "f_op/f_op_actor_mng.h" +#include "d/d_a_obj.h" /** * @ingroup actors-objects @@ -11,32 +12,81 @@ * @details * */ -class daObjSwpush2 : public fopAc_ac_c { -public: - class Act_c { - public: - struct Prm_e {}; +namespace daObjSwpush2 { + enum AttrFlag_e { + AttrFlag_UNK_0x1_e = 0x1, + AttrFlag_UNK_0x2_e = 0x2, + AttrFlag_REV_SW_e = 0x4, + AttrFlag_HEAVY_e = 0x8, + AttrFlag_UNK_0x10_e = 0x10, + AttrFlag_UNK_0x20_e = 0x20, + }; - /* 80CFE098 */ void getArcName(); - /* 80CFE0A4 */ void getBmdName(); - /* 80CFE0B4 */ void getDzbName(); - /* 80CFE0C4 */ void getNmlBtkName(); - /* 80CFE0D4 */ void getNmlBrkName(); - /* 80CFE0E4 */ void getOnBtkName(); - /* 80CFE0F4 */ void getRunBpkName(); - /* 80CFE104 */ void getRunBrkName(); - /* 80CFE114 */ void getRunBtkName(); + class Attr_c { + public: + /* 0x00 */ u32 heap_size; + /* 0x04 */ AttrFlag_e flags; + /* 0x08 */ f32 size; + /* 0x0C */ const char* arcname; + /* 0x10 */ f32 unk_0x10; + /* 0x14 */ f32 unk_0x14; + /* 0x18 */ f32 unk_0x18; + /* 0x1C */ f32 unk_0x1c; + /* 0x20 */ s16 unk_0x20; + /* 0x22 */ s16 ride_time; + /* 0x24 */ s16 heavy_ride_time; + /* 0x26 */ s16 field_0x26; + /* 0x28 */ f32 unk_0x28; + /* 0x2C */ f32 unk_0x2c; + /* 0x30 */ s16 demo_run_time; + /* 0x34 */ f32 effect_distance; + }; + + class Hio_c : public JORReflexible { + public: + void genMessage(JORMContext*); + + void ct(); + void dt(); + void default_set(); + + /* 0x4 */ int field_0x4; + /* 0x8 */ Attr_c M_attr[4]; + }; + + class Act_c : public fopAc_ac_c { + public: + enum Prm_e { + PRM_SAVESW_SHIFT_e = 0x8, + PRM_SAVESW_NBITS_e = 0x8, + + PRM_EVID_SHIFT_e = 0x0, + PRM_EVID_NBITS_e = 0x8, + + PRM_TYPE_SHIFT_e = 0x18, + PRM_TYPE_NBITS_e = 0x3, + }; + + /* 80CFE098 */ const char* getArcName(); + /* 80CFE0A4 */ const char* getBmdName(); + /* 80CFE0B4 */ const char* getDzbName(); + /* 80CFE0C4 */ const char* getNmlBtkName(); + /* 80CFE0D4 */ const char* getNmlBrkName(); + /* 80CFE0E4 */ const char* getOnBtkName(); + /* 80CFE0F4 */ const char* getRunBpkName(); + /* 80CFE104 */ const char* getRunBrkName(); + /* 80CFE114 */ const char* getRunBtkName(); /* 80CFE124 */ void prmZ_init(); - /* 80CFE154 */ void is_switch2() const; - /* 80CFE1AC */ void solidHeapCB(fopAc_ac_c*); - /* 80CFE1D0 */ void create_heap(); - /* 80CFE6D8 */ void create_init(); - /* 80CFE8CC */ void create_res_load(); - /* 80CFE928 */ void Mthd_Create(); - /* 80CFEA3C */ void Mthd_Delete(); + /* 80CFE154 */ bool is_switch2() const; + /* 80CFE1AC */ static int solidHeapCB(fopAc_ac_c*); + /* 80CFE1D0 */ bool create_heap(); + /* 80CFE6D8 */ bool create_init(); + /* 80CFE8CC */ int create_res_load(); + /* 80CFE928 */ int Mthd_Create(); + /* 80CFEA3C */ int Mthd_Delete(); /* 80CFEAB4 */ void set_mtx(); /* 80CFEB3C */ void init_mtx(); - /* 80CFEB78 */ void rideCB(dBgW*, fopAc_ac_c*, fopAc_ac_c*); + /* 80CFEB78 */ static void rideCB(dBgW*, fopAc_ac_c*, fopAc_ac_c*); /* 80CFEBE4 */ void calc_top_pos(); /* 80CFEC4C */ void set_push_flag(); /* 80CFEDDC */ void mode_upper_init(); @@ -57,27 +107,69 @@ public: /* 80CFF48C */ void demo_reqSw(); /* 80CFF500 */ void demo_runSw_init(); /* 80CFF50C */ void demo_runSw(); - /* 80CFF568 */ void Mthd_Execute(); - /* 80CFF8FC */ void Mthd_Draw(); + /* 80CFF568 */ int Mthd_Execute(); + /* 80CFF8FC */ int Mthd_Draw(); - static u8 const M_arcname[9 + 3 /* padding */]; - static void* const M_attr[56]; + const Attr_c& attr() const { + #if DEBUG + return M_hio.M_attr[mType]; + #else + return M_attr[mType]; + #endif + } + + u8 prmZ_get_swSave2() const { return mPrmZ & 0xFF; } + int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SAVESW_NBITS_e, PRM_SAVESW_SHIFT_e); } + u8 prm_get_evId() const { return daObj::PrmAbstract(this, PRM_EVID_NBITS_e, PRM_EVID_SHIFT_e); } + int prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_NBITS_e, PRM_TYPE_SHIFT_e); } + + bool is_switch() const { return fopAcM_isSwitch(this, prm_get_swSave()); } + void on_switch() const { fopAcM_onSwitch(this, prm_get_swSave()); } + void off_switch() const { fopAcM_offSwitch(this, prm_get_swSave()); } + void rev_switch() const { fopAcM_revSwitch(this, prm_get_swSave()); } + + static const char M_arcname[]; + static const Attr_c M_attr[4]; + + #if DEBUG + static Hio_c M_hio; + #endif + + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ dBgW* mpBgw; + /* 0x574 */ Mtx mBgMtx; + /* 0x5A4 */ J3DModel* mpModel; + /* 0x5A8 */ mDoExt_bpkAnm* mpRunBpk; + /* 0x5AC */ mDoExt_btkAnm* mpRunBtk; + /* 0x5B0 */ mDoExt_brkAnm* mpRunBrk; + /* 0x5B4 */ mDoExt_btkAnm* mpOnBtk; + /* 0x5B8 */ mDoExt_brkAnm* mpNmlBrk; + /* 0x5BC */ mDoExt_btkAnm* mpNmlBtk; + /* 0x5C0 */ int mType; + /* 0x5C4 */ int mModeProc; + /* 0x5C8 */ int mDemoProc; + /* 0x5CC */ s16 mDemoRunTime; + /* 0x5CE */ s16 mEventIdx; + /* 0x5D0 */ u16 mPrmZ; + /* 0x5D2 */ u8 mPrmInit; + /* 0x5D3 */ u8 mShockTimer; + /* 0x5D4 */ u8 mRideType; + /* 0x5D5 */ u8 mPrevRideType; + /* 0x5D6 */ s16 mRideTimer; + /* 0x5D8 */ u8 mPushFlag; + /* 0x5D9 */ u8 mIsPlayerRideHeavy; + /* 0x5DA */ u8 mPrevPlayerRideHeavy; + /* 0x5DC */ s16 mHeavyRideTimer; + /* 0x5DE */ u8 mHeavyPushFlag; + /* 0x5DF */ u8 field_0x5df; + /* 0x5E0 */ s16 mPauseDemoTimer; + /* 0x5E4 */ f32 mTopPos; + /* 0x5E8 */ f32 field_0x5e8; + /* 0x5EC */ f32 field_0x5ec; + /* 0x5F0 */ u8 field_0x5f0; }; - -private: - /* 0x568 */ u8 field_0x568[0x5f4 - 0x568]; -}; - -STATIC_ASSERT(sizeof(daObjSwpush2) == 0x5f4); - -struct daObj { -public: - template - void PrmAbstract(/* ... */); - /* 80CFFBD0 */ /* daObj::PrmAbstract */ - void func_80CFFBD0(void* _this, fopAc_ac_c const*, daObjSwpush2::Act_c::Prm_e, - daObjSwpush2::Act_c::Prm_e); }; +STATIC_ASSERT(sizeof(daObjSwpush2::Act_c) == 0x5f4); #endif /* D_A_OBJ_SWPUSH2_H */ diff --git a/include/d/actor/d_a_obj_taFence.h b/include/d/actor/d_a_obj_taFence.h index 4a9dbbe74c0..eac74aee857 100644 --- a/include/d/actor/d_a_obj_taFence.h +++ b/include/d/actor/d_a_obj_taFence.h @@ -2,6 +2,8 @@ #define D_A_OBJ_TAFENCE_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -11,12 +13,10 @@ * @details * */ -class daTaFence_c : public fopAc_ac_c { +class daTaFence_c : public dBgS_MoveBgActor { public: /* 80D04F8C */ void setBaseMtx(); - /* 80D0503C */ void CreateHeap(); - /* 80D050A8 */ void create(); - /* 80D05550 */ void Execute(Mtx**); + /* 80D050A8 */ int create(); /* 80D055A0 */ void fenceProc(); /* 80D057C4 */ void init_modeWait(); /* 80D057D0 */ void modeWait(); @@ -26,23 +26,41 @@ public: /* 80D05CAC */ void modeMove(); /* 80D05D2C */ void init_modeMoveEnd(); /* 80D05E54 */ void modeMoveEnd(); - /* 80D05E58 */ void Draw(); - /* 80D05EFC */ void Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; + /* 80D0503C */ virtual int CreateHeap(); + /* 80D05550 */ virtual int Execute(Mtx**); + /* 80D05E58 */ virtual int Draw(); + /* 80D05EFC */ virtual int Delete(); -private: - /* 0x568 */ u8 field_0x568[0x13d4 - 0x568]; + static const dCcD_SrcGObjInf mCcDObjInfo; + static dCcD_SrcCyl mCcDCyl; + + /* 0x05A0 */ request_of_phase_process_class mPhase; + /* 0x05A8 */ J3DModel* mpModel; + /* 0x05AC */ u8 mMode; + /* 0x05B0 */ dCcD_Stts mCcStts; + /* 0x05EC */ dCcD_Cyl mCyl[11]; + /* 0x1380 */ f32 mFallSpeed; + /* 0x1384 */ s16 field_0x1384; + /* 0x1386 */ u8 mCollapseTimer; + /* 0x1388 */ int mCounter; + /* 0x138C */ csXyz mShakeYZ; + /* 0x1394 */ f32 mShakeYZ_intensity; + /* 0x1398 */ f32 mShakeYZ_ampZ; + /* 0x139C */ f32 mShakeYZ_ampY; + /* 0x13A0 */ f32 mShakeYZ_damp; + /* 0x13A4 */ f32 mShakeYZ_maxDamp; + /* 0x13A8 */ f32 mShakeYZ_minDamp; + /* 0x13AC */ cXyz mShakeXZ; + /* 0x13B8 */ f32 mShakeXZ_ampX; + /* 0x13BC */ f32 mShakeXZ_ampZ; + /* 0x13C0 */ f32 mShakeXZ_intensity; + /* 0x13C4 */ f32 mShakeXZ_damp; + /* 0x13C8 */ f32 mShakeXZ_maxDamp; + /* 0x13CC */ f32 mShakeXZ_minDamp; + /* 0x13D0 */ u8 mShakeTimer; }; STATIC_ASSERT(sizeof(daTaFence_c) == 0x13d4); -class daTaFence_HIO_c { -public: - /* 80D04E6C */ daTaFence_HIO_c(); - /* 80D06000 */ ~daTaFence_HIO_c(); -}; - - #endif /* D_A_OBJ_TAFENCE_H */ diff --git a/include/d/d_a_obj.h b/include/d/d_a_obj.h index aa1f5f65666..50eb03abd2e 100644 --- a/include/d/d_a_obj.h +++ b/include/d/d_a_obj.h @@ -17,15 +17,21 @@ void quat_rotBaseY(Quaternion*, cXyz const&); void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32); template -int PrmAbstract(const fopAc_ac_c* i_actor, T i_prmA, T i_prmB) { +T PrmAbstract(const fopAc_ac_c* i_actor, T i_nbits, T i_shift) { u32 param = fopAcM_GetParam(i_actor); - return ((1 << i_prmA) - 1) & (param >> i_prmB); + return T((param >> i_shift) & ((1 << i_nbits) - 1)); } -class HioVarious_c { +class HioVarious_c : public JORReflexible { public: - static void init(JORReflexible*, const char*); - static void clean(JORReflexible*); + static void init(JORReflexible* node_ptr, const char* node_name); + static void clean(JORReflexible* node_ptr); + + void genMessage(JORMContext*); + + /* 0x04 */ JORReflexible* node_ptrs[16]; + /* 0x44 */ const char* node_names[16]; + /* 0x84 */ u8 field_0x84; }; }; // namespace daObj diff --git a/include/d/d_bg_w.h b/include/d/d_bg_w.h index 0df43782ac0..0de571eacc6 100644 --- a/include/d/d_bg_w.h +++ b/include/d/d_bg_w.h @@ -341,4 +341,6 @@ private: /* 0xBC */ u8 m_flags; }; +dBgW* dBgW_NewSet(cBgD_t* pbgd, u32 flags, Mtx* pbase_mtx); + #endif /* D_BG_D_BG_W_H */ diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index de900f731d8..5401dfdb45b 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1237,6 +1237,10 @@ inline void dComIfGs_offSwitch(int i_no, int i_roomNo) { g_dComIfG_gameInfo.info.offSwitch(i_no, i_roomNo); } +inline void dComIfGs_revSwitch(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.revSwitch(i_no, i_roomNo); +} + inline BOOL dComIfGs_isSwitch(int i_no, int i_roomNo) { return g_dComIfG_gameInfo.info.isSwitch(i_no, i_roomNo); } @@ -2147,10 +2151,6 @@ inline void dComIfGs_offTransformLV(int i_no) { g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offTransformLV(i_no); } -inline void dComIfGs_revSwitch(int i_no, int i_roomNo) { - g_dComIfG_gameInfo.info.revSwitch(i_no, i_roomNo); -} - inline s8 dComIfGs_Grass_hide_Check() { return g_dComIfG_gameInfo.field_0x1ddfc; } @@ -3748,6 +3748,10 @@ inline bool dComIfGp_evmng_existence(const char* eventname) { dComIfGp_evmng_getEventIdx(eventname, 0xFF)) != NULL; } +inline bool dComIfGp_evmng_existence(s16 eventId) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventId) != NULL; +} + inline void dComIfGp_particle_createCommon(const void* data) { g_dComIfG_gameInfo.play.getParticle()->createCommon(data); } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 545d650dc7e..86214932095 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -441,6 +441,7 @@ inline void fopAcM_SetAngle(fopAc_ac_c* i_actor, s16 x, s16 y, s16 z) { inline void dComIfGs_onSwitch(int i_no, int i_roomNo); inline void dComIfGs_offSwitch(int i_no, int i_roomNo); +inline void dComIfGs_revSwitch(int i_no, int i_roomNo); inline BOOL dComIfGs_isSwitch(int i_no, int i_roomNo); inline void dComIfGs_offActor(int i_no, int i_roomNo); @@ -452,6 +453,10 @@ inline void fopAcM_offSwitch(const fopAc_ac_c* i_actor, int sw) { return dComIfGs_offSwitch(sw, fopAcM_GetHomeRoomNo(i_actor)); } +inline void fopAcM_revSwitch(const fopAc_ac_c* i_actor, int sw) { + return dComIfGs_revSwitch(sw, fopAcM_GetHomeRoomNo(i_actor)); +} + inline BOOL fopAcM_isSwitch(const fopAc_ac_c* i_actor, int sw) { return dComIfGs_isSwitch(sw, fopAcM_GetHomeRoomNo(i_actor)); } diff --git a/src/d/actor/d_a_obj_ladder.cpp b/src/d/actor/d_a_obj_ladder.cpp index ae0526a4c26..c505de23268 100644 --- a/src/d/actor/d_a_obj_ladder.cpp +++ b/src/d/actor/d_a_obj_ladder.cpp @@ -254,10 +254,6 @@ void daObjLadder::Act_c::mode_demoreq_init() { mInDemo = false; } -static inline bool dComIfGp_evmng_existence(s16 eventIdx) { - return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventIdx) != NULL; -} - /* 8058D628-8058D6E8 000548 00C0+00 1/0 0/0 0/0 .text mode_demoreq__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_demoreq() { bool isDemo = false; diff --git a/src/d/actor/d_a_obj_lv6TogeTrap.cpp b/src/d/actor/d_a_obj_lv6TogeTrap.cpp index ba8c61acda1..89ff9b1e3fe 100644 --- a/src/d/actor/d_a_obj_lv6TogeTrap.cpp +++ b/src/d/actor/d_a_obj_lv6TogeTrap.cpp @@ -6,398 +6,839 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_lv6TogeTrap.h" -#include "dol2asm.h" +#include "d/d_s_play.h" +#include "d/d_path.h" +#include "d/d_cc_uty.h" +class daLv6TogeTrap_HIO_c : public mDoHIO_entry_c { +public: + /* 80C79E4C */ daLv6TogeTrap_HIO_c(); + /* 80C7C504 */ virtual ~daLv6TogeTrap_HIO_c() {} + void genMessage(JORMContext*); + /* 0x04 */ u8 field_0x4; + /* 0x05 */ u8 field_0x5; + /* 0x08 */ f32 search_range; + /* 0x0C */ f32 search_ratio; + /* 0x10 */ f32 return_ratio; + /* 0x14 */ u8 return_wait; + /* 0x15 */ u8 test; + /* 0x16 */ u8 search_wait; + /* 0x18 */ f32 search_return_speed; + /* 0x1C */ f32 search_accel; + /* 0x20 */ f32 return_accel; + /* 0x24 */ f32 rotate_speed; +}; -// -// Forward References: -// +/* 80C79E4C-80C79EC8 0000EC 007C+00 1/1 0/0 0/0 .text __ct__19daLv6TogeTrap_HIO_cFv */ +daLv6TogeTrap_HIO_c::daLv6TogeTrap_HIO_c() { + field_0x4 = 60; + field_0x5 = 1; -extern "C" void __ct__19daLv6TogeTrap_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__15daLv6TogeTrap_cFv(); -extern "C" void CreateHeap__15daLv6TogeTrap_cFv(); -extern "C" void create__15daLv6TogeTrap_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__8cM3dGLinFv(); -extern "C" void searchSekizoAct__15daLv6TogeTrap_cFPvPv(); -extern "C" void Execute__15daLv6TogeTrap_cFPPA3_A4_f(); -extern "C" void moveLift__15daLv6TogeTrap_cFv(); -extern "C" void executeType1__15daLv6TogeTrap_cFv(); -extern "C" void init_modeBound__15daLv6TogeTrap_cFv(); -extern "C" void modeBound__15daLv6TogeTrap_cFv(); -extern "C" void init_modeBoundWait__15daLv6TogeTrap_cFv(); -extern "C" void modeBoundWait__15daLv6TogeTrap_cFv(); -extern "C" void init_modeAcc__15daLv6TogeTrap_cFv(); -extern "C" void modeAcc__15daLv6TogeTrap_cFv(); -extern "C" void init_modeMove__15daLv6TogeTrap_cFv(); -extern "C" void modeMove__15daLv6TogeTrap_cFv(); -extern "C" void init_modeBrk__15daLv6TogeTrap_cFv(); -extern "C" void modeBrk__15daLv6TogeTrap_cFv(); -extern "C" void init_modeMove2__15daLv6TogeTrap_cFv(); -extern "C" void modeMove2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeWaitInit__15daLv6TogeTrap_cFv(); -extern "C" void modeWaitInit__15daLv6TogeTrap_cFv(); -extern "C" void init_modeWait__15daLv6TogeTrap_cFv(); -extern "C" void modeWait__15daLv6TogeTrap_cFv(); -extern "C" void executeType2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeWaitType2__15daLv6TogeTrap_cFv(); -extern "C" void modeWaitType2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeMoveInitType2__15daLv6TogeTrap_cFv(); -extern "C" void modeMoveInitType2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeAccType2__15daLv6TogeTrap_cFv(); -extern "C" void modeAccType2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeWaitAttackType2__15daLv6TogeTrap_cFv(); -extern "C" void modeWaitAttackType2__15daLv6TogeTrap_cFv(); -extern "C" void init_modeRotate__15daLv6TogeTrap_cFv(); -extern "C" void modeRotate__15daLv6TogeTrap_cFv(); -extern "C" void init_modeBreak__15daLv6TogeTrap_cFv(); -extern "C" void modeBreak__15daLv6TogeTrap_cFv(); -extern "C" void setNextPoint__15daLv6TogeTrap_cFv(); -extern "C" void Draw__15daLv6TogeTrap_cFv(); -extern "C" void Delete__15daLv6TogeTrap_cFv(); -extern "C" static void daLv6TogeTrap_Draw__FP15daLv6TogeTrap_c(); -extern "C" static void daLv6TogeTrap_Execute__FP15daLv6TogeTrap_c(); -extern "C" static void daLv6TogeTrap_Delete__FP15daLv6TogeTrap_c(); -extern "C" static void daLv6TogeTrap_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__19daLv6TogeTrap_HIO_cFv(); -extern "C" void __sinit_d_a_obj_lv6TogeTrap_cpp(); -extern "C" u8 const mCcDObjInfo__15daLv6TogeTrap_c[48]; -extern "C" u8 const mCcDObjInfo2__15daLv6TogeTrap_c[48]; -extern "C" u8 const mSpeed__15daLv6TogeTrap_c[64]; -extern "C" extern char const* const d_a_obj_lv6TogeTrap__stringBase0; -extern "C" u8 mCcDSph__15daLv6TogeTrap_c[64]; -extern "C" u8 mCcDCyl__15daLv6TogeTrap_c[68]; + search_range = 300.0f; + search_ratio = 1.0f; + search_wait = 15; + search_return_speed = 0.25f; + search_accel = 15.0f; -// -// External References: -// + return_ratio = 0.3f; + return_wait = 15; -extern "C" void mDoMtx_ZXYrotS__FPA4_fsss(); -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dPath_GetRoomPath__Fii(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv(); -extern "C" void getHitSeID__12dCcD_GObjInfFUci(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" bool __eq__4cXyzCFRC3Vec(); -extern "C" void cM3d_InDivPos2__FPC3VecPC3VecfP3Vec(); -extern "C" void cM3d_Len3dSqPntAndSegLine__FPC8cM3dGLinPC3VecP3VecPf(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void SetStartEnd__8cM3dGLinFRC4cXyzRC4cXyz(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalcPos__FP4cXyzRC4cXyzfff(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); + rotate_speed = 15.0f; + test = 0; + return_accel = 10.0f; +} -// -// Declarations: -// +/* 80C7CA64-80C7CA8C 000014 0028+00 9/9 0/0 0/0 .bss l_HIO */ +static daLv6TogeTrap_HIO_c l_HIO; -/* ############################################################################################## */ -/* 80C7C618-80C7C61C 000000 0004+00 11/11 0/0 0/0 .rodata @3631 */ -SECTION_RODATA static f32 const lit_3631 = 300.0f; -COMPILER_STRIP_GATE(0x80C7C618, &lit_3631); +/* 80C7C630-80C7C660 000018 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__15daLv6TogeTrap_c */ +const dCcD_SrcGObjInf daLv6TogeTrap_c::mCcDObjInfo = { + {0, {{0x800, 0x1, 0x1F}, {0xD8FBFDFF, 0x11}, {0x79}}}, + {dCcD_SE_SWORD, 0, 1, 0, 1}, + {dCcD_SE_STONE, 5, 0, 0, 0}, + {0}, +}; -/* 80C7C61C-80C7C620 000004 0004+00 7/17 0/0 0/0 .rodata @3632 */ -SECTION_RODATA static f32 const lit_3632 = 1.0f; -COMPILER_STRIP_GATE(0x80C7C61C, &lit_3632); - -/* 80C7C620-80C7C624 000008 0004+00 0/1 0/0 0/0 .rodata @3633 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3633 = 0.25f; -COMPILER_STRIP_GATE(0x80C7C620, &lit_3633); -#pragma pop - -/* 80C7C624-80C7C628 00000C 0004+00 0/1 0/0 0/0 .rodata @3634 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3634 = 15.0f; -COMPILER_STRIP_GATE(0x80C7C624, &lit_3634); -#pragma pop - -/* 80C7C628-80C7C62C 000010 0004+00 0/2 0/0 0/0 .rodata @3635 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3635 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C7C628, &lit_3635); -#pragma pop - -/* 80C7C62C-80C7C630 000014 0004+00 0/2 0/0 0/0 .rodata @3636 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3636 = 10.0f; -COMPILER_STRIP_GATE(0x80C7C62C, &lit_3636); -#pragma pop - -/* 80C7C75C-80C7C75C 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C7C75C = "L6TogeTp"; -SECTION_DEAD static char const* const stringBase_80C7C765 = "L4TogeTp"; -SECTION_DEAD static char const* const stringBase_80C7C76E = "L9Toge"; -#pragma pop +/* 80C7C660-80C7C690 000048 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo2__15daLv6TogeTrap_c */ +const dCcD_SrcGObjInf daLv6TogeTrap_c::mCcDObjInfo2 = { + {0, {{0x0, 0x0, 0}, {0xDAFBFDFF, 0x11}, {0x0}}}, + {dCcD_SE_SWORD, 0, 0, 0, 0}, + {dCcD_SE_STONE, 1, 0, 0, 2}, + {0}, +}; /* 80C7C798-80C7C7D8 000020 0040+00 1/2 0/0 0/0 .data mCcDSph__15daLv6TogeTrap_c */ -SECTION_DATA u8 daLv6TogeTrap_c::mCcDSph[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcSph daLv6TogeTrap_c::mCcDSph = { + daLv6TogeTrap_c::mCcDObjInfo, + { + {{0.0f, 0.0f, 0.0f}, 0.0f} // mSph + } // mSphAttr }; /* 80C7C7D8-80C7C81C 000060 0044+00 1/2 0/0 0/0 .data mCcDCyl__15daLv6TogeTrap_c */ -SECTION_DATA u8 daLv6TogeTrap_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcCyl daLv6TogeTrap_c::mCcDCyl = { + daLv6TogeTrap_c::mCcDObjInfo2, + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; /* 80C7C81C-80C7C828 -00001 000C+00 2/3 0/0 0/0 .data l_resNameIdx */ -SECTION_DATA static void* l_resNameIdx[3] = { - (void*)&d_a_obj_lv6TogeTrap__stringBase0, - (void*)(((char*)&d_a_obj_lv6TogeTrap__stringBase0) + 0x9), - (void*)(((char*)&d_a_obj_lv6TogeTrap__stringBase0) + 0x12), +static char* l_resNameIdx[3] = { + "L6TogeTp", + "L4TogeTp", + "L9Toge", }; -/* 80C7C828-80C7C834 -00001 000C+00 0/1 0/0 0/0 .data @4038 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4038[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeAcc__15daLv6TogeTrap_cFv, +/* 80C7C690-80C7C6D0 000078 0040+00 0/1 0/0 0/0 .rodata mSpeed__15daLv6TogeTrap_c */ +const f32 daLv6TogeTrap_c::mSpeed[16] = { + 10.0f, + 16.666666f, + 23.333334f, + 25.0f, + 26.666666f, + 28.333334f, + 30.0f, + 31.666666f, + 33.333332f, + 40.0f, + 46.666668f, + 53.333332f, + 60.0f, + 66.666664f, + 83.333336f, + 3.3333333f, }; -#pragma pop -/* 80C7C834-80C7C840 -00001 000C+00 0/1 0/0 0/0 .data @4039 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4039[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMove__15daLv6TogeTrap_cFv, -}; -#pragma pop +/* 80C7C6D0-80C7C6DC 0000B8 000C+00 1/1 0/0 0/0 .rodata l_bmdIdx */ +static const int l_bmdIdx[] = {4, 4, 4}; -/* 80C7C840-80C7C84C -00001 000C+00 0/1 0/0 0/0 .data @4040 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4040[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMove2__15daLv6TogeTrap_cFv, -}; -#pragma pop +/* 80C7C6DC-80C7C6E8 0000C4 000C+00 0/0 0/0 0/0 .rodata l_dzbIdx */ +static const int l_dzbIdx[] = {7, 7, 7}; -/* 80C7C84C-80C7C858 -00001 000C+00 0/1 0/0 0/0 .data @4041 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4041[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBrk__15daLv6TogeTrap_cFv, -}; -#pragma pop +/* 80C79F10-80C79FE8 0001B0 00D8+00 2/2 0/0 0/0 .text setBaseMtx__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x * (field_0x610 + oREG_F(19)), current.pos.y, current.pos.z * (field_0x610 + oREG_F(19))); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::transM(mRadius, 0.0f, 0.0f); + mDoMtx_stack_c::ZXYrotM(0, field_0x600, 0); + mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); -/* 80C7C858-80C7C864 -00001 000C+00 0/1 0/0 0/0 .data @4042 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4042[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__15daLv6TogeTrap_cFv, -}; -#pragma pop + cXyz scale(1.0f, 1.0f, 1.0f); + mpModel->setBaseScale(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 80C7C864-80C7C870 -00001 000C+00 0/1 0/0 0/0 .data @4043 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4043[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitInit__15daLv6TogeTrap_cFv, -}; -#pragma pop +/* 80C79FE8-80C7A068 000288 0080+00 1/0 0/0 0/0 .text CreateHeap__15daLv6TogeTrap_cFv */ +int daLv6TogeTrap_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_resNameIdx[mModelType], l_bmdIdx[mModelType]); + JUT_ASSERT(376, modelData != NULL); -/* 80C7C870-80C7C87C -00001 000C+00 0/1 0/0 0/0 .data @4044 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4044[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBound__15daLv6TogeTrap_cFv, -}; -#pragma pop + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } -/* 80C7C87C-80C7C888 -00001 000C+00 0/1 0/0 0/0 .data @4045 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4045[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBoundWait__15daLv6TogeTrap_cFv, -}; -#pragma pop + return 1; +} -/* 80C7C888-80C7C894 -00001 000C+00 0/1 0/0 0/0 .data @4046 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4046[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitType2__15daLv6TogeTrap_cFv, -}; -#pragma pop +/* 80C7A068-80C7A534 000308 04CC+00 1/1 0/0 0/0 .text create__15daLv6TogeTrap_cFv */ +int daLv6TogeTrap_c::create() { + fopAcM_ct(this, daLv6TogeTrap_c); -/* 80C7C894-80C7C8A0 -00001 000C+00 0/1 0/0 0/0 .data @4047 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4047[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveInitType2__15daLv6TogeTrap_cFv, -}; -#pragma pop + mModelType = getModelType(); + if (mModelType == 0xF) { + mModelType = 0; + } -/* 80C7C8A0-80C7C8AC -00001 000C+00 0/1 0/0 0/0 .data @4048 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4048[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeAccType2__15daLv6TogeTrap_cFv, -}; -#pragma pop + int phase_state = dComIfG_resLoad(&mPhase, l_resNameIdx[mModelType]); + if (phase_state == cPhs_COMPLEATE_e) { + static const u16 estimateSizeTbl[] = { + 0x810, + 0x2A00, + 0x1540, + }; -/* 80C7C8AC-80C7C8B8 -00001 000C+00 0/1 0/0 0/0 .data @4049 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4049[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitAttackType2__15daLv6TogeTrap_cFv, -}; -#pragma pop + u32 heap_size = estimateSizeTbl[mModelType]; + OS_REPORT("l6TogeT: %u 0x%04x %s\n", mModelType, heap_size, l_resNameIdx[mModelType]); -/* 80C7C8B8-80C7C8C4 -00001 000C+00 0/1 0/0 0/0 .data @4050 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4050[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeBreak__15daLv6TogeTrap_cFv, -}; -#pragma pop + if (MoveBGCreate(l_resNameIdx[mModelType], -1, NULL, 0x2A00, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } -/* 80C7C8C4-80C7C8D0 -00001 000C+00 0/1 0/0 0/0 .data @4051 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4051[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeRotate__15daLv6TogeTrap_cFv, -}; -#pragma pop + mType = getType(); + if (mType == 0) { + mType = 1; + } -/* 80C7C8D0-80C7C978 000158 00A8+00 0/1 0/0 0/0 .data mode_proc$4037 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[168] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mMoveSpeed = mSpeed[getSpeed()]; + fopAcM_SetSpeedF(this, 0.0f); + field_0x5f9 = 3; + field_0x610 = 1.0f; + + dPath* path; + if (mType == 3 || mType == 4) { + mRadius = 100.0f * getHankei(); + + u8 sp8 = getHankei2(); + if (sp8 != 0xFF) { + mRadius += 100.0f * sp8; + } + + mRotateDirection = 1; + + if (mType == 4) { + mRotateDirection = -1; + } + } else { + mPathNo = fopAcM_GetParam(this); + + path = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this)); + if (path == NULL) { + OS_REPORT("[Lv6トゲトラップ]%d番のパスが見つかりませんでした\n", mPathNo); + return cPhs_INIT_e; + } + + dPnt* pnt = path->m_points; + current.pos = pnt->m_position; + + mIsPathClosed = dPath_ChkClose(path); + mRadius = 0.0f; + mRotateDirection = -1; + field_0x5ae = 0; + + if (mType == 5) { + mRotateDirection = 1; + field_0x610 = 1.05f; + field_0x5ae = getHankei2(); + + dPnt* pnt = &path->m_points[field_0x5ae]; + current.pos = pnt->m_position; + } + } + + if (mType == 1 || mType == 5) { + init_modeWaitInit(); + } else if (mType == 2) { + dPnt* start_pnt = &path->m_points[0]; + dPnt* end_pnt = &path->m_points[1]; + + cXyz start_pos; + cXyz end_pos; + start_pos = start_pnt->m_position; + end_pos = end_pnt->m_position; + mLine.SetStartEnd(start_pos, end_pos); + field_0x5b0 = start_pnt->m_position; + + init_modeWaitType2(); + } else if (mType == 3 || mType == 4) { + init_modeRotate(); + } + + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + field_0x600 = 0; + field_0x60b = 0; + setBaseMtx(); + + mCcStts.Init(100, 1, this); + mCcSph.Set(mCcDSph); + mCcSph.SetStts(&mCcStts); + mCcCyl.Set(mCcDCyl); + mCcCyl.SetStts(&mCcStts); + + health = 1; + mSound.init(¤t.pos, 1); + field_0x8d0 = 0; + + #if DEBUG + l_HIO.entryHIO("Lv6トゲトラップ"); + #endif + } + + return phase_state; +} + +/* 80C7A6B0-80C7A700 000950 0050+00 1/1 0/0 0/0 .text searchSekizoAct__15daLv6TogeTrap_cFPvPv */ +void* daLv6TogeTrap_c::searchSekizoAct(void* i_actor, void* i_data) { + if (i_actor != NULL && fopAcM_IsActor(i_actor) && fopAcM_GetProfName(i_actor) == PROC_CSTATUE) { + return i_actor; + } + + return NULL; +} + +/* 80C7A700-80C7A97C 0009A0 027C+00 1/0 0/0 0/0 .text Execute__15daLv6TogeTrap_cFPPA3_A4_f */ +int daLv6TogeTrap_c::Execute(Mtx** param_0) { + moveLift(); + + if (mCcSph.ChkTgHit()) { + cCcD_Obj* tg_hitobj = mCcSph.GetTgHitObj(); + if (tg_hitobj != NULL) { + fopAc_ac_c* hitactor = dCc_GetAc(tg_hitobj->GetAc()); + u8 var_r26 = TRUE; + + if (hitactor != NULL) { + if (fopAcM_GetName(hitactor) == PROC_ALINK && (mCcSph.GetTgHitGObj()->GetAtType() & AT_TYPE_NORMAL_SWORD) && field_0x8d0 != 0) { + var_r26 = FALSE; + } + + if (var_r26) { + mSound.startCollisionSE(mCcSph.GetTgHitObjHitSeID(1), 9, NULL); + field_0x8d0 = 1; + } + } + } + } else { + field_0x8d0 = 0; + } + + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + cXyz sp38(mRadius, 0.0f, 0.0f); + cXyz sp2C; + mDoMtx_stack_c::multVec(&sp38, &sp2C); + + mCcSph.SetR((75.0f + oREG_F(0)) * scale.x); + cXyz sp20(current.pos); + sp20.x *= field_0x610 + oREG_F(19); + sp20.z *= field_0x610 + oREG_F(19); + cXyz sp14 = sp20 + sp2C; + sp14.y += 50.0f; + mCcSph.SetC(sp14); + dComIfG_Ccsp()->Set(&mCcSph); + + mCcCyl.SetR((30.0f + oREG_F(1)) * scale.x); + mCcCyl.SetC(sp20 + sp2C); + mCcCyl.SetH((100.0f + oREG_F(2)) * scale.y); + dComIfG_Ccsp()->Set(&mCcCyl); + + mCcStts.Move(); + + field_0x600 += cM_deg2s(l_HIO.rotate_speed); + *param_0 = &mpModel->getBaseTRMtx(); + mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + setBaseMtx(); + return 1; +} + +/* 80C7A97C-80C7ABC8 000C1C 024C+00 1/1 0/0 0/0 .text moveLift__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::moveLift() { + if (mPathNo != 0xFF) { + static void (daLv6TogeTrap_c::*mode_proc[])() = { + &daLv6TogeTrap_c::modeAcc, + &daLv6TogeTrap_c::modeMove, + &daLv6TogeTrap_c::modeMove2, + &daLv6TogeTrap_c::modeBrk, + &daLv6TogeTrap_c::modeWait, + &daLv6TogeTrap_c::modeWaitInit, + &daLv6TogeTrap_c::modeBound, + &daLv6TogeTrap_c::modeBoundWait, + &daLv6TogeTrap_c::modeWaitType2, + &daLv6TogeTrap_c::modeMoveInitType2, + &daLv6TogeTrap_c::modeAccType2, + &daLv6TogeTrap_c::modeWaitAttackType2, + &daLv6TogeTrap_c::modeBreak, + &daLv6TogeTrap_c::modeRotate, + }; + + switch (mType) { + case 1: + executeType1(); + break; + case 2: + executeType2(); + break; + case 3: + break; + } + + (this->*mode_proc[mMode])(); + + if (mCcCyl.ChkTgHit() && (mCcCyl.GetTgHitGObj()->GetAtType() & (AT_TYPE_2000000 | AT_TYPE_CSTATUE_SWING))) { + init_modeBreak(); + } + + if (health == 0) { + init_modeBreak(); + } + } +} + +/* 80C7ABC8-80C7ACA0 000E68 00D8+00 1/1 0/0 0/0 .text executeType1__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::executeType1() { + if (field_0x60b == 0 && mCcSph.ChkCoHit()) { + fopAc_ac_c* co_hitactor = mCcSph.GetCoHitAc(); + if (co_hitactor != NULL && fopAcM_GetProfName(co_hitactor) == PROC_CSTATUE) { + cXyz sp14 = current.pos - co_hitactor->current.pos; + cXyz sp8 = current.pos - field_0x5b0; + + if (sp14.getDotProduct(sp8) >= 0.0f) { + init_modeBound(); + } + } + } +} + +/* 80C7ACA0-80C7AD40 000F40 00A0+00 1/1 0/0 0/0 .text init_modeBound__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeBound() { + field_0x60b = 1; + fopAcM_SetSpeedF(this, 0.0f); + mRotateDirection *= -1; + setNextPoint(); + field_0x5bc = field_0x5b0; + + cXyz sp8; + cM3d_InDivPos2(¤t.pos, &field_0x5b0, l_HIO.return_ratio, &sp8); + field_0x5b0 = sp8; + + mMode = 6; +} + +/* 80C7AD40-80C7ADA4 000FE0 0064+00 1/0 0/0 0/0 .text modeBound__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeBound() { + if (0.0f == cLib_addCalcPos(¤t.pos, field_0x5b0, 1.0f, mMoveSpeed, 5.0f)) { + init_modeBoundWait(); + } +} + +/* 80C7ADA4-80C7ADC0 001044 001C+00 1/1 0/0 0/0 .text init_modeBoundWait__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeBoundWait() { + field_0x60a = l_HIO.return_wait; + mMode = 7; +} + +/* 80C7ADC0-80C7AE18 001060 0058+00 1/0 0/0 0/0 .text modeBoundWait__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::modeBoundWait() { + if (field_0x60a != 0) { + field_0x60a--; + } else { + field_0x60b = 0; + field_0x5b0 = field_0x5bc; + init_modeWait(); + } +} + +/* 80C7AE18-80C7AE24 0010B8 000C+00 1/1 0/0 0/0 .text init_modeAcc__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeAcc() { + mMode = 0; +} + +/* 80C7AE24-80C7AF10 0010C4 00EC+00 1/0 0/0 0/0 .text modeAcc__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeAcc() { + BOOL temp_r30 = cLib_chaseF(&speedF, mMoveSpeed, mMoveSpeed / l_HIO.return_accel); + cLib_addCalcPos(¤t.pos, field_0x5b0, 1.0f, fopAcM_GetSpeedF(this), 0.1f); + + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (temp_r30 == TRUE || current.pos == field_0x5b0) { + init_modeMove(); + } +} + +/* 80C7AF10-80C7AF1C 0011B0 000C+00 1/1 0/0 0/0 .text init_modeMove__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeMove() { + mMode = 1; +} + +/* 80C7AF1C-80C7B234 0011BC 0318+00 1/0 0/0 0/0 .text modeMove__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeMove() { + f32 temp_f30 = 30.0f; + f32 temp_f29 = 300.0f; + + cXyz sp2C(field_0x5c8); + cXyz sp20(field_0x5b0); + f32 var_f31 = 0.3f * (sp2C - sp20).abs(); + if (var_f31 < temp_f30) { + var_f31 = temp_f30; + } + if (var_f31 > temp_f29) { + var_f31 = temp_f29; + } + + cLib_addCalcPos(¤t.pos, field_0x5b0, 1.0f, fopAcM_GetSpeedF(this), 0.1f); + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + BOOL temp_r29 = var_f31 > (current.pos - field_0x5b0).abs(); + if (temp_r29) { + init_modeBrk(); + } +} + +/* 80C7B234-80C7B240 0014D4 000C+00 1/1 0/0 0/0 .text init_modeBrk__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeBrk() { + mMode = 3; +} + +/* 80C7B240-80C7B43C 0014E0 01FC+00 1/0 0/0 0/0 .text modeBrk__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeBrk() { + cXyz sp14(current.pos); + f32 temp_f31 = cLib_addCalcPos(¤t.pos, field_0x5b0, 0.1f, fopAcM_GetSpeedF(this), 0.5f); + f32 temp_f30 = (sp14 - current.pos).abs(); + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, temp_f30, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (0.0f == temp_f31) { + init_modeWaitInit(); + } +} + +/* 80C7B43C-80C7B448 0016DC 000C+00 1/1 0/0 0/0 .text init_modeMove2__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeMove2() { + mMode = 2; +} + +/* 80C7B448-80C7B518 0016E8 00D0+00 1/0 0/0 0/0 .text modeMove2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeMove2() { + f32 temp_f31 = cLib_addCalcPos(¤t.pos, field_0x5b0, 1.0f, mMoveSpeed, mMoveSpeed); + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, mMoveSpeed, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + if (temp_f31 == 0.0f) { + init_modeWaitInit(); + } +} + +/* 80C7B518-80C7B530 0017B8 0018+00 3/3 0/0 0/0 .text init_modeWaitInit__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeWaitInit() { + fopAcM_SetSpeedF(this, 0.0f); + mMode = 5; +} + +/* 80C7B530-80C7B600 0017D0 00D0+00 1/0 0/0 0/0 .text modeWaitInit__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::modeWaitInit() { + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + setNextPoint(); + + if (mType == 5) { + if (field_0x5ae == -1) { + fopAcM_delete(this); + } else { + init_modeWait(); + } + } else { + init_modeWait(); + } +} + +/* 80C7B600-80C7B60C 0018A0 000C+00 2/2 0/0 0/0 .text init_modeWait__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeWait() { + mMode = 4; +} + +/* 80C7B60C-80C7B6D4 0018AC 00C8+00 1/0 0/0 0/0 .text modeWait__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeWait() { + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (mType == 5) { + init_modeMove2(); + } else if (mIsPathClosed) { + init_modeMove2(); + } else { + init_modeAcc(); + } +} + +/* 80C7B6D4-80C7B988 001974 02B4+00 1/1 0/0 0/0 .text executeType2__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::executeType2() { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp40; + cXyz sp34; + + if (mCcSph.ChkCoHit()) { + fopAc_ac_c* co_hitactor = mCcSph.GetCoHitAc(); + if (co_hitactor != NULL && fopAcM_GetProfName(co_hitactor) == PROC_CSTATUE) { + cXyz sp28 = current.pos - co_hitactor->current.pos; + cXyz sp1C = current.pos - field_0x5b0; + + if (sp28.getDotProduct(sp1C) >= 0.0f) { + dPath* path = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this)); + dPnt* pnt = path->m_points; + + mRotateDirection = -1; + field_0x5c8 = field_0x5b0; + field_0x5b0 = pnt->m_position; + field_0x5ae = 0; + init_modeWaitAttackType2(); + } + } + } + + fopAc_ac_c* cstatue = fopAcM_Search(searchSekizoAct, this); + field_0x609 = 0; + + f32 spC, sp8; + sp8 = 10000.0f; + if (cstatue != 0) { + field_0x609 = cM3d_Len3dSqPntAndSegLine(&mLine, &cstatue->current.pos, &sp34, &sp8); + } + + field_0x608 = cM3d_Len3dSqPntAndSegLine(&mLine, &player->current.pos, &sp40, &spC); + + if (field_0x609 == 1 && field_0x608 == 1) { + if (spC > sp8) { + spC = sp8; + sp40 = sp34; + } + } else if (field_0x609 == 1 && field_0x608 == 0) { + spC = sp8; + sp40 = sp34; + } + + f32 temp_f30 = JMAFastSqrt(spC); + if (field_0x609 == 1 || field_0x608 == 1) { + if (temp_f30 <= l_HIO.search_range && field_0x5db == 0) { + mRotateDirection = 1; + field_0x5c8 = field_0x5b0; + + cXyz sp10; + field_0x5b0 = sp40; + field_0x5ae = 1; + field_0x5db = 1; + field_0x604 = mMoveSpeed; + init_modeWaitAttackType2(); + } + } +} + +/* 80C7B988-80C7B9A8 001C28 0020+00 2/2 0/0 0/0 .text init_modeWaitType2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeWaitType2() { + fopAcM_SetSpeedF(this, 0.0f); + field_0x5db = 0; + mMode = 8; +} + +/* 80C7B9A8-80C7BA38 001C48 0090+00 1/0 0/0 0/0 .text modeWaitType2__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::modeWaitType2() { + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); +} + +/* 80C7BA38-80C7BA50 001CD8 0018+00 1/1 0/0 0/0 .text init_modeMoveInitType2__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeMoveInitType2() { + fopAcM_SetSpeedF(this, 0.0f); + mMode = 9; +} + +/* 80C7BA50-80C7BAE8 001CF0 0098+00 1/0 0/0 0/0 .text modeMoveInitType2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeMoveInitType2() { + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + init_modeAccType2(); +} + +/* 80C7BAE8-80C7BAF4 001D88 000C+00 1/1 0/0 0/0 .text init_modeAccType2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeAccType2() { + mMode = 10; +} + +/* 80C7BAF4-80C7BC54 001D94 0160+00 1/0 0/0 0/0 .text modeAccType2__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::modeAccType2() { + cLib_chaseF(&speedF, field_0x604, field_0x604 / l_HIO.search_accel); + f32 temp_f31 = cLib_addCalcPos(¤t.pos, field_0x5b0, 1.0f, fopAcM_GetSpeedF(this), 0.1f); + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (0.0f == temp_f31) { + dPath* path = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this)); + dPnt* pnt = path->m_points; + + if (current.pos == pnt->m_position) { + init_modeWaitType2(); + } else { + mRotateDirection = -1; + field_0x5c8 = field_0x5b0; + field_0x5b0 = pnt->m_position; + field_0x5ae = 0; + init_modeWaitAttackType2(); + } + } +} + +/* 80C7BC54-80C7BC7C 001EF4 0028+00 2/2 0/0 0/0 .text + * init_modeWaitAttackType2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeWaitAttackType2() { + fopAcM_SetSpeedF(this, 0.0f); + field_0x60a = l_HIO.search_wait; + mMode = 11; +} + +/* 80C7BC7C-80C7BD64 001F1C 00E8+00 1/0 0/0 0/0 .text modeWaitAttackType2__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeWaitAttackType2() { + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, ¤t.pos, fopAcM_GetSpeedF(this), dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (field_0x608 == 0 && field_0x609 == 0) { + field_0x60a = 0; + } + + if (field_0x60a != 0) { + field_0x60a--; + } else { + field_0x604 = mMoveSpeed * l_HIO.search_return_speed; + init_modeMoveInitType2(); + } +} + +/* 80C7BD64-80C7BD70 002004 000C+00 1/1 0/0 0/0 .text init_modeRotate__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::init_modeRotate() { + mMode = 13; +} + +/* 80C7BD70-80C7BED8 002010 0168+00 1/0 0/0 0/0 .text modeRotate__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeRotate() { + if (mCcSph.ChkCoHit()) { + fopAc_ac_c* co_hitactor = mCcSph.GetCoHitAc(); + if (co_hitactor != NULL && fopAcM_GetProfName(co_hitactor) == PROC_CSTATUE) { + mRotateDirection *= -1; + } + } + + f32 var_f31 = 360.0f * (mMoveSpeed / (M_PI * (2.0f * mRadius))); + shape_angle.y += mRotateDirection * cM_deg2s(var_f31); + + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + field_0x8c4.set(mRadius, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&field_0x8c4, &field_0x8c4); + field_0x8c4 += current.pos; + mDoAud_seStartLevel(Z2SE_OBJ_TOGE_SPIN, &field_0x8c4, mMoveSpeed, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); +} + +/* 80C7BED8-80C7BFE4 002178 010C+00 1/1 0/0 0/0 .text init_modeBreak__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::init_modeBreak() { + cXyz sound_pos; + if (mType == 3 || mType == 4) { + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + sound_pos.set(mRadius, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&sound_pos, &sound_pos); + sound_pos += current.pos; + } else { + sound_pos = current.pos; + } + + mDoAud_seStart(Z2SE_OBJ_TRAP_BREAK, &sound_pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mMode = 12; +} + +/* 80C7BFE4-80C7C1D8 002284 01F4+00 1/0 0/0 0/0 .text modeBreak__15daLv6TogeTrap_cFv */ +void daLv6TogeTrap_c::modeBreak() { + cXyz effpos; + if (mType == 3 || mType == 4) { + mDoMtx_stack_c::ZXYrotS(shape_angle.x, shape_angle.y, shape_angle.z); + effpos.set(mRadius, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&effpos, &effpos); + effpos += current.pos; + } else { + effpos = current.pos; + } + + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV6TOGE_HAKAI_A), &effpos, NULL, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV6TOGE_HAKAI_B), &effpos, NULL, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV6TOGE_HAKAI_C), &effpos, NULL, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV6TOGE_HAKAI_D), &effpos, NULL, NULL); + fopAcM_delete(this); +} + +/* 80C7C1D8-80C7C33C 002478 0164+00 2/2 0/0 0/0 .text setNextPoint__15daLv6TogeTrap_cFv + */ +void daLv6TogeTrap_c::setNextPoint() { + s16 step = field_0x5ae + mRotateDirection; + dPath* path = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this)); + + if (mIsPathClosed) { + if (step > path->m_num - 1) { + step = 0; + mRotateDirection = 1; + } else if (step < 0) { + step = (s8)(path->m_num - 1); + mRotateDirection = -1; + } + } else if (step > path->m_num - 1) { + mRotateDirection = -1; + if (mType == 5) { + step = -1; + } else { + step = (s8)(path->m_num - 2); + } + } else if (step < 0) { + if (mType == 1) { + mRotateDirection = 1; + step = 1; + } else { + mRotateDirection = 0; + step = 0; + } + } + + if (step != -1) { + field_0x5c8 = field_0x5b0; + dPnt* pnt = &path->m_points[step]; + field_0x5b0 = pnt->m_position; + field_0x5ae = step; + } else { + field_0x5ae = -1; + } +} + +/* 80C7C33C-80C7C3E0 0025DC 00A4+00 1/0 0/0 0/0 .text Draw__15daLv6TogeTrap_cFv */ +int daLv6TogeTrap_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 80C7C3E0-80C7C430 002680 0050+00 1/0 0/0 0/0 .text Delete__15daLv6TogeTrap_cFv */ +int daLv6TogeTrap_c::Delete() { + mSound.deleteObject(); + dComIfG_resDelete(&mPhase, l_resNameIdx[mModelType]); + + #if DEBUG + l_HIO.removeHIO(); + #endif + return 1; +} + +/* 80C7C430-80C7C45C 0026D0 002C+00 1/0 0/0 0/0 .text daLv6TogeTrap_Draw__FP15daLv6TogeTrap_c */ +static int daLv6TogeTrap_Draw(daLv6TogeTrap_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80C7C45C-80C7C47C 0026FC 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Execute__FP15daLv6TogeTrap_c + */ +static int daLv6TogeTrap_Execute(daLv6TogeTrap_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C7C47C-80C7C49C 00271C 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Delete__FP15daLv6TogeTrap_c */ +static int daLv6TogeTrap_Delete(daLv6TogeTrap_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C7C49C-80C7C4BC 00273C 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Create__FP10fopAc_ac_c */ +static int daLv6TogeTrap_Create(fopAc_ac_c* i_this) { + return ((daLv6TogeTrap_c*)i_this)->create(); +} /* 80C7C978-80C7C998 -00001 0020+00 1/0 0/0 0/0 .data l_daLv6TogeTrap_Method */ static actor_method_class l_daLv6TogeTrap_Method = { - (process_method_func)daLv6TogeTrap_Create__FP10fopAc_ac_c, - (process_method_func)daLv6TogeTrap_Delete__FP15daLv6TogeTrap_c, - (process_method_func)daLv6TogeTrap_Execute__FP15daLv6TogeTrap_c, - 0, - (process_method_func)daLv6TogeTrap_Draw__FP15daLv6TogeTrap_c, + (process_method_func)daLv6TogeTrap_Create, + (process_method_func)daLv6TogeTrap_Delete, + (process_method_func)daLv6TogeTrap_Execute, + NULL, + (process_method_func)daLv6TogeTrap_Draw, }; /* 80C7C998-80C7C9C8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv6TogeTrap */ @@ -417,602 +858,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv6TogeTrap = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C7C9C8-80C7C9D4 000250 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80C7C9D4-80C7C9E0 00025C 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80C7C9E0-80C7C9EC 000268 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80C7C9EC-80C7C9F8 000274 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80C7C9F8-80C7CA04 000280 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80C7CA04-80C7CA10 00028C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGLin */ -SECTION_DATA extern void* __vt__8cM3dGLin[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGLinFv, -}; - -/* 80C7CA10-80C7CA38 000298 0028+00 1/1 0/0 0/0 .data __vt__15daLv6TogeTrap_c */ -SECTION_DATA extern void* __vt__15daLv6TogeTrap_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__15daLv6TogeTrap_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__15daLv6TogeTrap_cFPPA3_A4_f, - (void*)Draw__15daLv6TogeTrap_cFv, - (void*)Delete__15daLv6TogeTrap_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C7CA38-80C7CA44 0002C0 000C+00 2/2 0/0 0/0 .data __vt__19daLv6TogeTrap_HIO_c */ -SECTION_DATA extern void* __vt__19daLv6TogeTrap_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daLv6TogeTrap_HIO_cFv, -}; - -/* 80C7CA44-80C7CA50 0002CC 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80C79E4C-80C79EC8 0000EC 007C+00 1/1 0/0 0/0 .text __ct__19daLv6TogeTrap_HIO_cFv */ -daLv6TogeTrap_HIO_c::daLv6TogeTrap_HIO_c() { - // NONMATCHING -} - -/* 80C79EC8-80C79F10 000168 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C630-80C7C660 000018 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__15daLv6TogeTrap_c */ -SECTION_RODATA u8 const daLv6TogeTrap_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C630, &daLv6TogeTrap_c::mCcDObjInfo); - -/* 80C7C660-80C7C690 000048 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo2__15daLv6TogeTrap_c */ -SECTION_RODATA u8 const daLv6TogeTrap_c::mCcDObjInfo2[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xDA, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C660, &daLv6TogeTrap_c::mCcDObjInfo2); - -/* 80C7C690-80C7C6D0 000078 0040+00 0/1 0/0 0/0 .rodata mSpeed__15daLv6TogeTrap_c */ -#pragma push -#pragma force_active on -SECTION_RODATA u8 const daLv6TogeTrap_c::mSpeed[64] = { - 0x41, 0x20, 0x00, 0x00, 0x41, 0x85, 0x55, 0x55, 0x41, 0xBA, 0xAA, 0xAB, 0x41, 0xC8, 0x00, 0x00, - 0x41, 0xD5, 0x55, 0x55, 0x41, 0xE2, 0xAA, 0xAB, 0x41, 0xF0, 0x00, 0x00, 0x41, 0xFD, 0x55, 0x55, - 0x42, 0x05, 0x55, 0x55, 0x42, 0x20, 0x00, 0x00, 0x42, 0x3A, 0xAA, 0xAB, 0x42, 0x55, 0x55, 0x55, - 0x42, 0x70, 0x00, 0x00, 0x42, 0x85, 0x55, 0x55, 0x42, 0xA6, 0xAA, 0xAB, 0x40, 0x55, 0x55, 0x55, -}; -COMPILER_STRIP_GATE(0x80C7C690, &daLv6TogeTrap_c::mSpeed); -#pragma pop - -/* 80C7C6D0-80C7C6DC 0000B8 000C+00 1/1 0/0 0/0 .rodata l_bmdIdx */ -SECTION_RODATA static u8 const l_bmdIdx[12] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x80C7C6D0, &l_bmdIdx); - -/* 80C7C6DC-80C7C6E8 0000C4 000C+00 0/0 0/0 0/0 .rodata l_dzbIdx */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_dzbIdx[12] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, -}; -COMPILER_STRIP_GATE(0x80C7C6DC, &l_dzbIdx); -#pragma pop - -/* 80C7C6E8-80C7C6EC 0000D0 0004+00 9/18 0/0 0/0 .rodata @3665 */ -SECTION_RODATA static u8 const lit_3665[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C6E8, &lit_3665); - -/* 80C79F10-80C79FE8 0001B0 00D8+00 2/2 0/0 0/0 .text setBaseMtx__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::setBaseMtx() { - // NONMATCHING -} - -/* 80C79FE8-80C7A068 000288 0080+00 1/0 0/0 0/0 .text CreateHeap__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C6EC-80C7C6F4 0000D4 0006+02 0/0 0/0 0/0 .rodata estimateSizeTbl$3689 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const estimateSizeTbl[6 + 2 /* padding */] = { - 0x08, - 0x10, - 0x2A, - 0x00, - 0x15, - 0x40, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C6EC, &estimateSizeTbl); -#pragma pop - -/* 80C7C6F4-80C7C6F8 0000DC 0004+00 0/2 0/0 0/0 .rodata @3843 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3843 = 100.0f; -COMPILER_STRIP_GATE(0x80C7C6F4, &lit_3843); -#pragma pop - -/* 80C7C6F8-80C7C700 0000E0 0004+04 0/1 0/0 0/0 .rodata @3844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3844[1 + 1 /* padding */] = { - 21.0f / 20.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C7C6F8, &lit_3844); -#pragma pop - -/* 80C7C700-80C7C708 0000E8 0008+00 0/1 0/0 0/0 .rodata @3846 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3846[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C700, &lit_3846); -#pragma pop - -/* 80C7C708-80C7C710 0000F0 0008+00 0/1 0/0 0/0 .rodata @3847 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3847[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C708, &lit_3847); -#pragma pop - -/* 80C7A068-80C7A534 000308 04CC+00 1/1 0/0 0/0 .text create__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::create() { - // NONMATCHING -} - -/* 80C7A534-80C7A57C 0007D4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80C7A57C-80C7A5C4 00081C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80C7A5C4-80C7A60C 000864 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C7A60C-80C7A668 0008AC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C7A668-80C7A6B0 000908 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */ -// cM3dGLin::~cM3dGLin() { -extern "C" void __dt__8cM3dGLinFv() { - // NONMATCHING -} - -/* 80C7A6B0-80C7A700 000950 0050+00 1/1 0/0 0/0 .text searchSekizoAct__15daLv6TogeTrap_cFPvPv */ -void daLv6TogeTrap_c::searchSekizoAct(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C710-80C7C714 0000F8 0004+00 0/1 0/0 0/0 .rodata @4027 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4027 = 75.0f; -COMPILER_STRIP_GATE(0x80C7C710, &lit_4027); -#pragma pop - -/* 80C7C714-80C7C718 0000FC 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 50.0f; -COMPILER_STRIP_GATE(0x80C7C714, &lit_4028); -#pragma pop - -/* 80C7C718-80C7C71C 000100 0004+00 0/2 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = 30.0f; -COMPILER_STRIP_GATE(0x80C7C718, &lit_4029); -#pragma pop - -/* 80C7C71C-80C7C720 000104 0004+00 0/2 0/0 0/0 .rodata @4030 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4030 = 0x43360B61; -COMPILER_STRIP_GATE(0x80C7C71C, &lit_4030); -#pragma pop - -/* 80C7CA58-80C7CA64 000008 000C+00 1/1 0/0 0/0 .bss @3625 */ -static u8 lit_3625[12]; - -/* 80C7CA64-80C7CA8C 000014 0028+00 9/9 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[40]; - -/* 80C7A700-80C7A97C 0009A0 027C+00 1/0 0/0 0/0 .text Execute__15daLv6TogeTrap_cFPPA3_A4_f */ -void daLv6TogeTrap_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7CA8C-80C7CA90 00003C 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80C7CA8C[4]; - -/* 80C7A97C-80C7ABC8 000C1C 024C+00 1/1 0/0 0/0 .text moveLift__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::moveLift() { - // NONMATCHING -} - -/* 80C7ABC8-80C7ACA0 000E68 00D8+00 1/1 0/0 0/0 .text executeType1__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::executeType1() { - // NONMATCHING -} - -/* 80C7ACA0-80C7AD40 000F40 00A0+00 1/1 0/0 0/0 .text init_modeBound__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeBound() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C720-80C7C724 000108 0004+00 0/1 0/0 0/0 .rodata @4114 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4114 = 5.0f; -COMPILER_STRIP_GATE(0x80C7C720, &lit_4114); -#pragma pop - -/* 80C7AD40-80C7ADA4 000FE0 0064+00 1/0 0/0 0/0 .text modeBound__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeBound() { - // NONMATCHING -} - -/* 80C7ADA4-80C7ADC0 001044 001C+00 1/1 0/0 0/0 .text init_modeBoundWait__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeBoundWait() { - // NONMATCHING -} - -/* 80C7ADC0-80C7AE18 001060 0058+00 1/0 0/0 0/0 .text modeBoundWait__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::modeBoundWait() { - // NONMATCHING -} - -/* 80C7AE18-80C7AE24 0010B8 000C+00 1/1 0/0 0/0 .text init_modeAcc__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeAcc() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C724-80C7C728 00010C 0004+00 0/4 0/0 0/0 .rodata @4149 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4149 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C7C724, &lit_4149); -#pragma pop - -/* 80C7C728-80C7C730 000110 0004+04 5/12 0/0 0/0 .rodata @4150 */ -SECTION_RODATA static f32 const lit_4150[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C7C728, &lit_4150); - -/* 80C7AE24-80C7AF10 0010C4 00EC+00 1/0 0/0 0/0 .text modeAcc__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeAcc() { - // NONMATCHING -} - -/* 80C7AF10-80C7AF1C 0011B0 000C+00 1/1 0/0 0/0 .text init_modeMove__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeMove() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C730-80C7C738 000118 0008+00 0/2 0/0 0/0 .rodata @4232 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4232[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C730, &lit_4232); -#pragma pop - -/* 80C7C738-80C7C740 000120 0008+00 0/2 0/0 0/0 .rodata @4233 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4233[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C738, &lit_4233); -#pragma pop - -/* 80C7C740-80C7C748 000128 0008+00 0/2 0/0 0/0 .rodata @4234 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4234[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7C740, &lit_4234); -#pragma pop - -/* 80C7AF1C-80C7B234 0011BC 0318+00 1/0 0/0 0/0 .text modeMove__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeMove() { - // NONMATCHING -} - -/* 80C7B234-80C7B240 0014D4 000C+00 1/1 0/0 0/0 .text init_modeBrk__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeBrk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C748-80C7C74C 000130 0004+00 0/1 0/0 0/0 .rodata @4280 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4280 = 0.5f; -COMPILER_STRIP_GATE(0x80C7C748, &lit_4280); -#pragma pop - -/* 80C7B240-80C7B43C 0014E0 01FC+00 1/0 0/0 0/0 .text modeBrk__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeBrk() { - // NONMATCHING -} - -/* 80C7B43C-80C7B448 0016DC 000C+00 1/1 0/0 0/0 .text init_modeMove2__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeMove2() { - // NONMATCHING -} - -/* 80C7B448-80C7B518 0016E8 00D0+00 1/0 0/0 0/0 .text modeMove2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeMove2() { - // NONMATCHING -} - -/* 80C7B518-80C7B530 0017B8 0018+00 3/3 0/0 0/0 .text init_modeWaitInit__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeWaitInit() { - // NONMATCHING -} - -/* 80C7B530-80C7B600 0017D0 00D0+00 1/0 0/0 0/0 .text modeWaitInit__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::modeWaitInit() { - // NONMATCHING -} - -/* 80C7B600-80C7B60C 0018A0 000C+00 2/2 0/0 0/0 .text init_modeWait__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeWait() { - // NONMATCHING -} - -/* 80C7B60C-80C7B6D4 0018AC 00C8+00 1/0 0/0 0/0 .text modeWait__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C74C-80C7C750 000134 0004+00 1/1 0/0 0/0 .rodata @4416 */ -SECTION_RODATA static f32 const lit_4416 = 10000.0f; -COMPILER_STRIP_GATE(0x80C7C74C, &lit_4416); - -/* 80C7B6D4-80C7B988 001974 02B4+00 1/1 0/0 0/0 .text executeType2__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::executeType2() { - // NONMATCHING -} - -/* 80C7B988-80C7B9A8 001C28 0020+00 2/2 0/0 0/0 .text init_modeWaitType2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeWaitType2() { - // NONMATCHING -} - -/* 80C7B9A8-80C7BA38 001C48 0090+00 1/0 0/0 0/0 .text modeWaitType2__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::modeWaitType2() { - // NONMATCHING -} - -/* 80C7BA38-80C7BA50 001CD8 0018+00 1/1 0/0 0/0 .text init_modeMoveInitType2__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeMoveInitType2() { - // NONMATCHING -} - -/* 80C7BA50-80C7BAE8 001CF0 0098+00 1/0 0/0 0/0 .text modeMoveInitType2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeMoveInitType2() { - // NONMATCHING -} - -/* 80C7BAE8-80C7BAF4 001D88 000C+00 1/1 0/0 0/0 .text init_modeAccType2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeAccType2() { - // NONMATCHING -} - -/* 80C7BAF4-80C7BC54 001D94 0160+00 1/0 0/0 0/0 .text modeAccType2__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::modeAccType2() { - // NONMATCHING -} - -/* 80C7BC54-80C7BC7C 001EF4 0028+00 2/2 0/0 0/0 .text - * init_modeWaitAttackType2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeWaitAttackType2() { - // NONMATCHING -} - -/* 80C7BC7C-80C7BD64 001F1C 00E8+00 1/0 0/0 0/0 .text modeWaitAttackType2__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeWaitAttackType2() { - // NONMATCHING -} - -/* 80C7BD64-80C7BD70 002004 000C+00 1/1 0/0 0/0 .text init_modeRotate__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::init_modeRotate() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7C750-80C7C754 000138 0004+00 0/1 0/0 0/0 .rodata @4533 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4533 = 360.0f; -COMPILER_STRIP_GATE(0x80C7C750, &lit_4533); -#pragma pop - -/* 80C7C754-80C7C758 00013C 0004+00 0/1 0/0 0/0 .rodata @4534 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4534 = 0x40490FDB; -COMPILER_STRIP_GATE(0x80C7C754, &lit_4534); -#pragma pop - -/* 80C7C758-80C7C75C 000140 0004+00 0/1 0/0 0/0 .rodata @4535 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4535 = 2.0f; -COMPILER_STRIP_GATE(0x80C7C758, &lit_4535); -#pragma pop - -/* 80C7BD70-80C7BED8 002010 0168+00 1/0 0/0 0/0 .text modeRotate__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeRotate() { - // NONMATCHING -} - -/* 80C7BED8-80C7BFE4 002178 010C+00 1/1 0/0 0/0 .text init_modeBreak__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::init_modeBreak() { - // NONMATCHING -} - -/* 80C7BFE4-80C7C1D8 002284 01F4+00 1/0 0/0 0/0 .text modeBreak__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::modeBreak() { - // NONMATCHING -} - -/* 80C7C1D8-80C7C33C 002478 0164+00 2/2 0/0 0/0 .text setNextPoint__15daLv6TogeTrap_cFv - */ -void daLv6TogeTrap_c::setNextPoint() { - // NONMATCHING -} - -/* 80C7C33C-80C7C3E0 0025DC 00A4+00 1/0 0/0 0/0 .text Draw__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::Draw() { - // NONMATCHING -} - -/* 80C7C3E0-80C7C430 002680 0050+00 1/0 0/0 0/0 .text Delete__15daLv6TogeTrap_cFv */ -void daLv6TogeTrap_c::Delete() { - // NONMATCHING -} - -/* 80C7C430-80C7C45C 0026D0 002C+00 1/0 0/0 0/0 .text daLv6TogeTrap_Draw__FP15daLv6TogeTrap_c */ -static void daLv6TogeTrap_Draw(daLv6TogeTrap_c* param_0) { - // NONMATCHING -} - -/* 80C7C45C-80C7C47C 0026FC 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Execute__FP15daLv6TogeTrap_c - */ -static void daLv6TogeTrap_Execute(daLv6TogeTrap_c* param_0) { - // NONMATCHING -} - -/* 80C7C47C-80C7C49C 00271C 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Delete__FP15daLv6TogeTrap_c */ -static void daLv6TogeTrap_Delete(daLv6TogeTrap_c* param_0) { - // NONMATCHING -} - -/* 80C7C49C-80C7C4BC 00273C 0020+00 1/0 0/0 0/0 .text daLv6TogeTrap_Create__FP10fopAc_ac_c */ -static void daLv6TogeTrap_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C7C4BC-80C7C504 00275C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C7C504-80C7C560 0027A4 005C+00 2/1 0/0 0/0 .text __dt__19daLv6TogeTrap_HIO_cFv */ -daLv6TogeTrap_HIO_c::~daLv6TogeTrap_HIO_c() { - // NONMATCHING -} - -/* 80C7C560-80C7C604 002800 00A4+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv6TogeTrap_cpp */ -void __sinit_d_a_obj_lv6TogeTrap_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C7C560, __sinit_d_a_obj_lv6TogeTrap_cpp); -#pragma pop - -/* 80C7C75C-80C7C75C 000144 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_swpush.cpp b/src/d/actor/d_a_obj_swpush.cpp index 56b20516aca..c6ed8c7d43e 100644 --- a/src/d/actor/d_a_obj_swpush.cpp +++ b/src/d/actor/d_a_obj_swpush.cpp @@ -749,10 +749,6 @@ void daObjSwpush::Act_c::demo_stop_puase() { } } -static inline bool dComIfGp_evmng_existence(s16 eventIdx) { - return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventIdx) != NULL; -} - /* 80484708-804847B4 001AA8 00AC+00 2/2 0/0 0/0 .text demo_reqSw_init__Q211daObjSwpush5Act_cFv */ void daObjSwpush::Act_c::demo_reqSw_init() { if (dComIfGp_evmng_existence(mEventID) && (mDemoMode == DEMO_MODE_NON || mDemoMode == DEMO_MODE_REQ_PAUSE || mDemoMode == DEMO_MODE_RUN_PAUSE)) { diff --git a/src/d/actor/d_a_obj_swpush2.cpp b/src/d/actor/d_a_obj_swpush2.cpp index 7917ae1a9a0..01a077a135e 100644 --- a/src/d/actor/d_a_obj_swpush2.cpp +++ b/src/d/actor/d_a_obj_swpush2.cpp @@ -6,443 +6,779 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_swpush2.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" - -// -// Forward References: -// - -extern "C" void getArcName__Q212daObjSwpush25Act_cFv(); -extern "C" void getBmdName__Q212daObjSwpush25Act_cFv(); -extern "C" void getDzbName__Q212daObjSwpush25Act_cFv(); -extern "C" void getNmlBtkName__Q212daObjSwpush25Act_cFv(); -extern "C" void getNmlBrkName__Q212daObjSwpush25Act_cFv(); -extern "C" void getOnBtkName__Q212daObjSwpush25Act_cFv(); -extern "C" void getRunBpkName__Q212daObjSwpush25Act_cFv(); -extern "C" void getRunBrkName__Q212daObjSwpush25Act_cFv(); -extern "C" void getRunBtkName__Q212daObjSwpush25Act_cFv(); -extern "C" void prmZ_init__Q212daObjSwpush25Act_cFv(); -extern "C" void is_switch2__Q212daObjSwpush25Act_cCFv(); -extern "C" void solidHeapCB__Q212daObjSwpush25Act_cFP10fopAc_ac_c(); -extern "C" void create_heap__Q212daObjSwpush25Act_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void create_init__Q212daObjSwpush25Act_cFv(); -extern "C" void create_res_load__Q212daObjSwpush25Act_cFv(); -extern "C" void Mthd_Create__Q212daObjSwpush25Act_cFv(); -extern "C" void Mthd_Delete__Q212daObjSwpush25Act_cFv(); -extern "C" void set_mtx__Q212daObjSwpush25Act_cFv(); -extern "C" void init_mtx__Q212daObjSwpush25Act_cFv(); -extern "C" void rideCB__Q212daObjSwpush25Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void calc_top_pos__Q212daObjSwpush25Act_cFv(); -extern "C" void set_push_flag__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_upper_init__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_upper__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_u_l_init__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_u_l__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_lower_init__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_lower__Q212daObjSwpush25Act_cFv(); -extern "C" void mode_l_u__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_non_init__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_non__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_reqPause_init__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_reqPause__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_runPause_init__Q212daObjSwpush25Act_cFi(); -extern "C" void demo_runPause__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_stop_puase__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_reqSw_init__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_reqSw__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_runSw_init__Q212daObjSwpush25Act_cFv(); -extern "C" void demo_runSw__Q212daObjSwpush25Act_cFv(); -extern "C" void Mthd_Execute__Q212daObjSwpush25Act_cFv(); -extern "C" void Mthd_Draw__Q212daObjSwpush25Act_cFv(); -extern "C" static void func_80CFFB50(); -extern "C" static void func_80CFFB70(); -extern "C" static void func_80CFFB90(); -extern "C" static void func_80CFFBB0(); -extern "C" void func_80CFFBD0(void* _this, fopAc_ac_c const*, daObjSwpush2::Act_c::Prm_e, - daObjSwpush2::Act_c::Prm_e); -extern "C" u8 const M_arcname__Q212daObjSwpush25Act_c[9 + 3 /* padding */]; -extern "C" void* const M_attr__Q212daObjSwpush25Act_c[56]; -extern "C" extern char const* const d_a_obj_swpush2__stringBase0; - -// -// External References: -// - -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_bpkAnmFP16J3DMaterialTableP11J3DAnmColoriifss(); -extern "C" void entry__13mDoExt_bpkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void revSwitch__10dSv_info_cFii(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getEventData__16dEvent_manager_cFs(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void Move__4dBgWFv(); -extern "C" void dBgW_NewSet__FP6cBgD_tUlPA3_A4_f(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor(); -extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); -extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 struct_80CFFEF8[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD24 = "K_swmn00"; -#pragma pop +#if DEBUG +daObjSwpush2::Hio_c daObjSwpush2::Act_c::M_hio; +#endif /* 80CFE098-80CFE0A4 000078 000C+00 1/1 0/0 0/0 .text getArcName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getArcName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getArcName() { + return "K_swmn00"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD2D = "K_hum_isw00.bmd"; -#pragma pop - /* 80CFE0A4-80CFE0B4 000084 0010+00 1/1 0/0 0/0 .text getBmdName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getBmdName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getBmdName() { + return "K_hum_isw00.bmd"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD3D = "K_hum_isw00.dzb"; -#pragma pop - /* 80CFE0B4-80CFE0C4 000094 0010+00 1/1 0/0 0/0 .text getDzbName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getDzbName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getDzbName() { + return "K_hum_isw00.dzb"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD4D = "K_isw_nml.btk"; -#pragma pop - /* 80CFE0C4-80CFE0D4 0000A4 0010+00 1/1 0/0 0/0 .text getNmlBtkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getNmlBtkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getNmlBtkName() { + return "K_isw_nml.btk"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD5B = "K_isw_nml.brk"; -#pragma pop - /* 80CFE0D4-80CFE0E4 0000B4 0010+00 1/1 0/0 0/0 .text getNmlBrkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getNmlBrkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getNmlBrkName() { + return "K_isw_nml.brk"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD69 = "K_isw_on.btk"; -#pragma pop - /* 80CFE0E4-80CFE0F4 0000C4 0010+00 1/1 0/0 0/0 .text getOnBtkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getOnBtkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getOnBtkName() { + return "K_isw_on.btk"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD76 = "K_isw_run.bpk"; -#pragma pop - /* 80CFE0F4-80CFE104 0000D4 0010+00 1/1 0/0 0/0 .text getRunBpkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getRunBpkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getRunBpkName() { + return "K_isw_run.bpk"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD84 = "K_isw_run.brk"; -#pragma pop - /* 80CFE104-80CFE114 0000E4 0010+00 1/1 0/0 0/0 .text getRunBrkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getRunBrkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getRunBrkName() { + return "K_isw_run.brk"; } -/* ############################################################################################## */ -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CFFD92 = "K_isw_run.btk"; -#pragma pop - /* 80CFE114-80CFE124 0000F4 0010+00 1/1 0/0 0/0 .text getRunBtkName__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::getRunBtkName() { - // NONMATCHING +const char* daObjSwpush2::Act_c::getRunBtkName() { + return "K_isw_run.btk"; } /* 80CFE124-80CFE154 000104 0030+00 1/1 0/0 0/0 .text prmZ_init__Q212daObjSwpush25Act_cFv */ void daObjSwpush2::Act_c::prmZ_init() { - // NONMATCHING + if (!mPrmInit) { + mPrmZ = home.angle.z; + mPrmInit = true; + home.angle.z = 0; + current.angle.z = 0; + shape_angle.z = 0; + } } /* 80CFE154-80CFE1AC 000134 0058+00 1/1 0/0 0/0 .text is_switch2__Q212daObjSwpush25Act_cCFv */ -void daObjSwpush2::Act_c::is_switch2() const { - // NONMATCHING +bool daObjSwpush2::Act_c::is_switch2() const { + int swbit = prmZ_get_swSave2(); + if (swbit == 0xFF) { + return 0; + } + + return fopAcM_isSwitch(this, swbit); } /* 80CFE1AC-80CFE1D0 00018C 0024+00 1/1 0/0 0/0 .text * solidHeapCB__Q212daObjSwpush25Act_cFP10fopAc_ac_c */ -void daObjSwpush2::Act_c::solidHeapCB(fopAc_ac_c* param_0) { - // NONMATCHING +int daObjSwpush2::Act_c::solidHeapCB(fopAc_ac_c* i_this) { + return ((daObjSwpush2::Act_c*)i_this)->create_heap(); } -/* ############################################################################################## */ /* 80CFFBF4-80CFFC00 000000 0009+03 5/4 0/0 0/0 .rodata M_arcname__Q212daObjSwpush25Act_c */ -SECTION_RODATA u8 const daObjSwpush2::Act_c::M_arcname[9 + 3 /* padding */] = { - 0x4B, - 0x5F, - 0x73, - 0x77, - 0x6D, - 0x6E, - 0x30, - 0x30, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CFFBF4, &daObjSwpush2::Act_c::M_arcname); +const char daObjSwpush2::Act_c::M_arcname[9] = "K_swmn00"; /* 80CFFC00-80CFFCE0 -00001 00E0+00 7/10 0/0 0/0 .rodata M_attr__Q212daObjSwpush25Act_c */ -SECTION_RODATA void* const daObjSwpush2::Act_c::M_attr[56] = { - (void*)0x00002000, (void*)0x00000003, - (void*)0x3F800000, (void*)&daObjSwpush2::Act_c::M_arcname, - (void*)0x3F666666, (void*)0x3F19999A, - (void*)NULL, (void*)0xBE99999A, - (void*)0x00010006, (void*)0x0006000D, - (void*)0x3F800000, (void*)0x40200000, - (void*)0x00060000, (void*)0x43960000, - (void*)0x00002000, (void*)0x00000020, - (void*)0x3F800000, (void*)&daObjSwpush2::Act_c::M_arcname, - (void*)0x3F666666, (void*)0x3F19999A, - (void*)NULL, (void*)0xBE99999A, - (void*)0x00010006, (void*)0x0006000D, - (void*)0x3F800000, (void*)0x40200000, - (void*)0x00060000, (void*)0x43960000, - (void*)0x00002000, (void*)0x00000013, - (void*)0x3F800000, (void*)&daObjSwpush2::Act_c::M_arcname, - (void*)0x3F666666, (void*)0x3F19999A, - (void*)NULL, (void*)0xBE99999A, - (void*)0x00010006, (void*)0x0006000D, - (void*)0x3F800000, (void*)0x40200000, - (void*)0x00060000, (void*)0x43960000, - (void*)0x00008000, (void*)0x0000000B, - (void*)0x3FC00000, (void*)&daObjSwpush2::Act_c::M_arcname, - (void*)0x3F6E147B, (void*)0x3ED70A3D, - (void*)NULL, (void*)NULL, - (void*)0x00040004, (void*)0x000F0004, - (void*)0x3F800000, (void*)0x40200000, - (void*)0x00060000, (void*)0x43960000, +const daObjSwpush2::Attr_c daObjSwpush2::Act_c::M_attr[4] = { + { + 0x2000, + daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e), + 1.0f, + M_arcname, + 0.90f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 6, + 300.0f, + }, + { + 0x2000, + daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x20_e), + 1.0f, + M_arcname, + 0.90f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 6, + 300.0f, + }, + { + 0x2000, + daObjSwpush2::AttrFlag_e(AttrFlag_UNK_0x10_e | AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e), + 1.0f, + M_arcname, + 0.90f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 6, + 300.0f, + }, + { + 0x8000, + daObjSwpush2::AttrFlag_e(AttrFlag_HEAVY_e | AttrFlag_UNK_0x1_e | AttrFlag_UNK_0x2_e), + 1.5f, + M_arcname, + 0.93f, + 0.42f, + 0.0f, + 0.0f, + 4, + 4, + 15, + 4, + 1.0f, + 2.5f, + 6, + 300.0f, + }, }; -COMPILER_STRIP_GATE(0x80CFFC00, &daObjSwpush2::Act_c::M_attr); -/* 80CFFCE0-80CFFCE4 0000EC 0004+00 3/7 0/0 0/0 .rodata @3857 */ -SECTION_RODATA static f32 const lit_3857 = 1.0f; -COMPILER_STRIP_GATE(0x80CFFCE0, &lit_3857); +/* 80CFE1D0-80CFE690 0001B0 04C0+00 1/1 0/0 0/0 .text create_heap__Q212daObjSwpush25Act_cFv */ +bool daObjSwpush2::Act_c::create_heap() { + void* model_data = dComIfG_getObjectRes(getArcName(), getBmdName()); + JUT_ASSERT(436, model_data != NULL); -/* 80CFFCE4-80CFFCE8 0000F0 0004+00 2/5 0/0 0/0 .rodata @3858 */ -SECTION_RODATA static u8 const lit_3858[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CFFCE4, &lit_3858); + mpModel = mDoExt_J3DModel__create((J3DModelData*)model_data, 0x80000, 0x11000285); + if (mpModel == NULL) { + return 0; + } -/* 80CFFDC0-80CFFDCC -00001 000C+00 0/1 0/0 0/0 .data @4336 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4336[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_non__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + { + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(getArcName(), getNmlBrkName()); + JUT_ASSERT(452, pbrk != NULL); + mpNmlBrk = new mDoExt_brkAnm(); + if (mpNmlBrk == NULL || !mpNmlBrk->init((J3DModelData*)model_data, pbrk, 1, 2, 1.0f, 0, -1)) { + return 0; + } -/* 80CFFDCC-80CFFDD8 -00001 000C+00 0/1 0/0 0/0 .data @4337 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4337[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_reqPause__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + mpNmlBrk->setPlaySpeed(1.0f); + } -/* 80CFFDD8-80CFFDE4 -00001 000C+00 0/1 0/0 0/0 .data @4338 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4338[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_runPause__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + { + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getNmlBtkName()); + JUT_ASSERT(465, pbtk != NULL); -/* 80CFFDE4-80CFFDF0 -00001 000C+00 0/1 0/0 0/0 .data @4339 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4339[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_reqSw__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + mpNmlBtk = new mDoExt_btkAnm(); + if (mpNmlBtk == NULL || !mpNmlBtk->init((J3DModelData*)model_data, pbtk, 1, 2, 1.0f, 0, -1)) { + return 0; + } -/* 80CFFDF0-80CFFDFC -00001 000C+00 0/1 0/0 0/0 .data @4340 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4340[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_runSw__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + mpNmlBtk->setPlaySpeed(1.0f); + } -/* 80CFFDFC-80CFFE38 00005C 003C+00 0/1 0/0 0/0 .data demo_proc$4335 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 demo_proc[60] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + { + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getOnBtkName()); + JUT_ASSERT(478, pbtk != NULL); + mpOnBtk = new mDoExt_btkAnm(); + if (mpOnBtk == NULL || !mpOnBtk->init((J3DModelData*)model_data, pbtk, 1, 0, 1.0f, 0, -1)) { + return 0; + } -/* 80CFFE38-80CFFE44 -00001 000C+00 0/1 0/0 0/0 .data @4344 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4344[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_upper__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + mpOnBtk->setPlaySpeed(0.0f); + } -/* 80CFFE44-80CFFE50 -00001 000C+00 0/1 0/0 0/0 .data @4345 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4345[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_u_l__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + { + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(getArcName(), getRunBtkName()); + JUT_ASSERT(491, pbtk != NULL); + mpRunBtk = new mDoExt_btkAnm(); + if (mpRunBtk == NULL || !mpRunBtk->init((J3DModelData*)model_data, pbtk, 1, 0, 1.0f, 0, -1)) { + return 0; + } -/* 80CFFE50-80CFFE5C -00001 000C+00 0/1 0/0 0/0 .data @4346 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4346[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_lower__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + mpRunBtk->setPlaySpeed(0.0f); + } -/* 80CFFE5C-80CFFE68 -00001 000C+00 0/1 0/0 0/0 .data @4347 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4347[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_l_u__Q212daObjSwpush25Act_cFv, -}; -#pragma pop + { + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(getArcName(), getRunBrkName()); + JUT_ASSERT(504, pbrk != NULL); + mpRunBrk = new mDoExt_brkAnm(); + if (mpRunBrk == NULL || !mpRunBrk->init((J3DModelData*)model_data, pbrk, 1, 0, 1.0f, 0, -1)) { + return 0; + } -/* 80CFFE68-80CFFE98 0000C8 0030+00 0/1 0/0 0/0 .data mode_proc$4343 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mpRunBrk->setPlaySpeed(0.0f); + } + + { + J3DAnmColor* pbpk = (J3DAnmColor*)dComIfG_getObjectRes(getArcName(), getRunBpkName()); + JUT_ASSERT(517, pbpk != NULL); + mpRunBpk = new mDoExt_bpkAnm(); + if (mpRunBpk == NULL || !mpRunBpk->init((J3DModelData*)model_data, pbpk, 1, 0, 1.0f, 0, -1)) { + return 0; + } + + mpRunBpk->setPlaySpeed(0.0f); + } + + mpBgw = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(getArcName(), getDzbName()), 1, &mBgMtx); + if (mpBgw == NULL) { + return 0; + } + + return 1; +} + +/* 80CFE6D8-80CFE8CC 0006B8 01F4+00 1/1 0/0 0/0 .text create_init__Q212daObjSwpush25Act_cFv */ +bool daObjSwpush2::Act_c::create_init() { + bool rt = true; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(scale); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); + mpBgw->SetRideCallback(rideCB); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + init_mtx(); + + fopAcM_setCullSizeBox(this, -150.0f * attr().size, 0.0f, -150.0f * attr().size, 150.0f * attr().size, 60.0f, 150.0f * attr().size); + + mShockTimer = 0; + mRideType = 0; + mPrevRideType = 0; + mRideTimer = 0; + mPushFlag = false; + mIsPlayerRideHeavy = false; + mPrevPlayerRideHeavy = false; + mHeavyRideTimer = 0; + mHeavyPushFlag = false; + + u8 temp_r26 = cLib_checkBit(attr().flags, AttrFlag_REV_SW_e) != 0; + u8 temp_r28 = cLib_checkBit(attr().flags, AttrFlag_UNK_0x10_e) != 0; + u8 temp_r25 = cLib_checkBit(attr().flags, AttrFlag_UNK_0x20_e) != 0; + + bool is_sw = is_switch(); + bool is_sw2 = is_switch2(); + if ((temp_r26 || (!is_sw && !temp_r28) || (is_sw && temp_r28)) && (!temp_r25 || !is_sw2)) { + field_0x5e8 = 1.0f; + mode_upper_init(); + } else { + field_0x5e8 = -1.0f; + mode_lower_init(); + } + + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, prm_get_evId()); + if (dComIfG_Bgsp().Regist(mpBgw, this)) { + rt = false; + } + + return rt; +} + +/* 80CFE8CC-80CFE928 0008AC 005C+00 1/1 0/0 0/0 .text create_res_load__Q212daObjSwpush25Act_cFv */ +int daObjSwpush2::Act_c::create_res_load() { + int phase_state; + if (attr().arcname != NULL) { + phase_state = dComIfG_resLoad(&mPhase, attr().arcname); + } else { + phase_state = cPhs_COMPLEATE_e; + } + + if (phase_state != cPhs_COMPLEATE_e) { + return phase_state; + } + + return cPhs_COMPLEATE_e; +} + +/* 80CFE928-80CFEA3C 000908 0114+00 1/1 0/0 0/0 .text Mthd_Create__Q212daObjSwpush25Act_cFv */ +int daObjSwpush2::Act_c::Mthd_Create() { + fopAcM_ct(this, daObjSwpush2::Act_c); + + prmZ_init(); + mType = prm_get_type(); + + int phase_state = create_res_load(); + if (phase_state == cPhs_COMPLEATE_e) { + scale.x *= attr().size; + scale.z *= attr().size; + + if (!fopAcM_entrySolidHeap(this, solidHeapCB, attr().heap_size)) { + return cPhs_ERROR_e; + } + + if (!create_init()) { + return cPhs_ERROR_e; + } + + demo_non_init(); + + #if DEBUG + M_hio.ct(); + #endif + } + + return phase_state; +} + +/* 80CFEA3C-80CFEAB4 000A1C 0078+00 1/1 0/0 0/0 .text Mthd_Delete__Q212daObjSwpush25Act_cFv */ +int daObjSwpush2::Act_c::Mthd_Delete() { + if (mpBgw != NULL && mpBgw->ChkUsed()) { + if (dComIfG_Bgsp().Release(mpBgw)) { + OS_REPORT_ERROR("Release Error(%s %d)\n", __FILE__, 683); + } + } + + dComIfG_resDelete(&mPhase, attr().arcname); + + #if DEBUG + M_hio.dt(); + #endif + return 1; +} + +/* 80CFEAB4-80CFEB3C 000A94 0088+00 2/2 0/0 0/0 .text set_mtx__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::set_mtx() { + mDoMtx_stack_c::transS(current.pos.x, mTopPos + (-10.0f + current.pos.y), current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + mDoMtx_stack_c::scaleM(scale); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); +} + +/* 80CFEB3C-80CFEB78 000B1C 003C+00 1/1 0/0 0/0 .text init_mtx__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::init_mtx() { + mpModel->setBaseScale(scale); + set_mtx(); +} + +/* 80CFEB78-80CFEBE4 000B58 006C+00 1/1 0/0 0/0 .text + * rideCB__Q212daObjSwpush25Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +void daObjSwpush2::Act_c::rideCB(dBgW* i_bgw, fopAc_ac_c* i_this, fopAc_ac_c* i_rideActor) { + (void)i_bgw; + daObjSwpush2::Act_c* a_this = (daObjSwpush2::Act_c*)i_this; + + if (fopAcM_CheckStatus(i_rideActor, 0x400)) { + if (fopAcM_CheckCarryType(i_rideActor, fopAcM_CARRY_TYPE_1)) { + a_this->mRideType = 2; + } else { + a_this->mRideType = 1; + } + + bool is_player_ride = fopAcM_GetProfName(i_rideActor) == PROC_ALINK; + if (is_player_ride) { + a_this->mShockTimer = 4; + } + + if (is_player_ride && ((daPy_py_c*)i_rideActor)->checkEquipHeavyBoots()) { + a_this->mIsPlayerRideHeavy = true; + } + } +} + +/* 80CFEBE4-80CFEC4C 000BC4 0068+00 1/1 0/0 0/0 .text calc_top_pos__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::calc_top_pos() { + cLib_addCalc(&field_0x5e8, field_0x5ec, 0.05f, 0.02f, 0.01f); + mTopPos = -50.0f * (1.0f - field_0x5e8); +} + +/* 80CFEC4C-80CFEDDC 000C2C 0190+00 1/1 0/0 0/0 .text set_push_flag__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::set_push_flag() { + if (mShockTimer != 0) { + mShockTimer--; + } + + if (mPushFlag) { + if (mRideType != 0) { + if (mRideType == 2) { + mRideTimer = attr().field_0x26; + } else { + mRideTimer = attr().ride_time; + } + } else { + if (--mRideTimer <= 0) { + mPushFlag = false; + } + } + } else if (mRideType != 0) { + if (++mRideTimer >= attr().ride_time) { + mPushFlag = true; + } + } else { + mRideTimer = 0; + } + + if (mHeavyPushFlag) { + if (mIsPlayerRideHeavy) { + mHeavyRideTimer = attr().heavy_ride_time; + } else if (--mHeavyRideTimer <= 0) { + mHeavyPushFlag = false; + } + } else if (mIsPlayerRideHeavy) { + if (++mHeavyRideTimer >= attr().heavy_ride_time) { + mHeavyPushFlag = true; + } + } else { + mHeavyRideTimer = 0; + } +} + +/* 80CFEDDC-80CFEDFC 000DBC 0020+00 2/2 0/0 0/0 .text mode_upper_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::mode_upper_init() { + mModeProc = 0; + field_0x5df = 0; + mPauseDemoTimer = 0; + field_0x5ec = 1.0f; +} + +/* 80CFEDFC-80CFEF84 000DDC 0188+00 1/0 0/0 0/0 .text mode_upper__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::mode_upper() { + bool do_pause_demo = false; + bool do_sw_demo = false; + bool is_push_flag = false; + f32 var_f31 = 1.0f; + + if (mPushFlag) { + if (cLib_checkBit(attr().flags, AttrFlag_HEAVY_e)) { + if (mHeavyPushFlag) { + is_push_flag = true; + } + } else { + is_push_flag = true; + } + } + + if (mRideType != 0 && mPrevRideType == 0 && mPauseDemoTimer <= 0) { + mPauseDemoTimer = 30; + do_pause_demo = true; + } else if (mPauseDemoTimer > 0) { + mPauseDemoTimer--; + } + + bool is_sw = is_switch(); + bool temp_r26 = cLib_checkBit(attr().flags, AttrFlag_UNK_0x10_e); + if (is_push_flag || (cLib_checkBit(attr().flags, AttrFlag_UNK_0x1_e) && ((is_sw && !temp_r26) || (!is_sw && temp_r26)))) { + if (is_push_flag) { + field_0x5df = 1; + } + do_sw_demo = true; + mode_u_l_init(); + } + + if (do_sw_demo) { + demo_reqSw_init(); + } else if (do_pause_demo) { + demo_reqPause_init(); + } +} + +/* 80CFEF84-80CFEF98 000F64 0014+00 1/1 0/0 0/0 .text mode_u_l_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::mode_u_l_init() { + mModeProc = 1; + field_0x5f0 = 12; +} + +/* 80CFEF98-80CFF168 000F78 01D0+00 1/0 0/0 0/0 .text mode_u_l__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::mode_u_l() { + if (field_0x5f0 != 0) { + field_0x5f0--; + if (field_0x5f0 == 0) { + mpRunBpk->setPlaySpeed(1.0f); + mpRunBtk->setPlaySpeed(1.0f); + mpRunBrk->setPlaySpeed(1.0f); + field_0x5ec = -1.0f; + } + } + + if (field_0x5e8 <= -1.0f) { + if (field_0x5df != 0) { + if (cLib_checkBit(attr().flags, AttrFlag_REV_SW_e)) { + rev_switch(); + } else if (cLib_checkBit(attr().flags, AttrFlag_UNK_0x10_e)) { + off_switch(); + } else { + on_switch(); + } + + if (mShockTimer != 0) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } + } + + fopAcM_seStart(this, JA_SE_OBJ_FOOT_SW_ON, 0); + mode_lower_init(); + } +} + +/* 80CFF168-80CFF188 001148 0020+00 2/2 0/0 0/0 .text mode_lower_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::mode_lower_init() { + mModeProc = 2; + field_0x5df = 0; + field_0x5ec = -1.0f; +} + +/* 80CFF188-80CFF18C 001168 0004+00 1/0 0/0 0/0 .text mode_lower__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::mode_lower() {} + +/* 80CFF18C-80CFF24C 00116C 00C0+00 1/0 0/0 0/0 .text mode_l_u__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::mode_l_u() { + if (field_0x5e8 >= 1.0f) { + if (field_0x5df != 0) { + if (cLib_checkBit(attr().flags, AttrFlag_UNK_0x10_e)) { + on_switch(); + } else { + off_switch(); + } + } + mode_upper_init(); + } +} + +/* 80CFF24C-80CFF258 00122C 000C+00 4/4 0/0 0/0 .text demo_non_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_non_init() { + mDemoProc = 0; +} + +/* 80CFF258-80CFF25C 001238 0004+00 1/0 0/0 0/0 .text demo_non__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::demo_non() {} + +/* 80CFF25C-80CFF2B4 00123C 0058+00 1/1 0/0 0/0 .text demo_reqPause_init__Q212daObjSwpush25Act_cFv + */ +void daObjSwpush2::Act_c::demo_reqPause_init() { + if (mDemoProc == 0) { + mDemoProc = 1; + fopAcM_orderPotentialEvent(this, 2, 0, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } +} + +/* 80CFF2B4-80CFF2EC 001294 0038+00 2/1 0/0 0/0 .text demo_reqPause__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_reqPause() { + if (eventInfo.checkCommandDemoAccrpt()) { + demo_runPause_init(TRUE); + } else { + demo_non_init(); + } +} + +/* 80CFF2EC-80CFF31C 0012CC 0030+00 2/2 0/0 0/0 .text demo_runPause_init__Q212daObjSwpush25Act_cFi + */ +void daObjSwpush2::Act_c::demo_runPause_init(BOOL i_setRunTime) { + mDemoProc = 2; + if (i_setRunTime) { + mDemoRunTime = attr().demo_run_time; + } +} + +/* 80CFF31C-80CFF374 0012FC 0058+00 1/0 0/0 0/0 .text demo_runPause__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_runPause() { + mDemoRunTime--; + if (mDemoRunTime <= 0) { + dComIfGp_event_reset(); + demo_non_init(); + } +} + +/* 80CFF374-80CFF3C8 001354 0054+00 1/1 0/0 0/0 .text demo_stop_puase__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_stop_puase() { + if (mDemoProc == 1) { + demo_reqPause(); + } + + if (mDemoProc == 2) { + dComIfGp_event_reset(); + } +} + +/* 80CFF3C8-80CFF48C 0013A8 00C4+00 1/1 0/0 0/0 .text demo_reqSw_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_reqSw_init() { + if (dComIfGp_evmng_existence(mEventIdx)) { + if (mDemoProc == 0 || mDemoProc == 1 || mDemoProc == 2) { + demo_stop_puase(); + mDemoProc = 3; + fopAcM_orderOtherEventId(this, mEventIdx, prm_get_evId(), 0xFFFF, 0, 1); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } + } else { + mDemoRunTime = 100; + demo_runPause_init(FALSE); + } +} + +/* 80CFF48C-80CFF500 00146C 0074+00 1/0 0/0 0/0 .text demo_reqSw__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_reqSw() { + if (eventInfo.checkCommandDemoAccrpt()) { + demo_runSw_init(); + } else { + fopAcM_orderOtherEventId(this, mEventIdx, prm_get_evId(), 0xFFFF, 0, 1); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } +} + +/* 80CFF500-80CFF50C 0014E0 000C+00 1/1 0/0 0/0 .text demo_runSw_init__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_runSw_init() { + mDemoProc = 4; +} + +/* 80CFF50C-80CFF568 0014EC 005C+00 1/0 0/0 0/0 .text demo_runSw__Q212daObjSwpush25Act_cFv */ +void daObjSwpush2::Act_c::demo_runSw() { + if (dComIfGp_evmng_endCheck(mEventIdx)) { + dComIfGp_event_reset(); + demo_non_init(); + } +} + +/* 80CFF568-80CFF8FC 001548 0394+00 1/1 0/0 0/0 .text Mthd_Execute__Q212daObjSwpush25Act_cFv */ +int daObjSwpush2::Act_c::Mthd_Execute() { + static void (daObjSwpush2::Act_c::*demo_proc[])() = { + &daObjSwpush2::Act_c::demo_non, + &daObjSwpush2::Act_c::demo_reqPause, + &daObjSwpush2::Act_c::demo_runPause, + &daObjSwpush2::Act_c::demo_reqSw, + &daObjSwpush2::Act_c::demo_runSw, + }; + + (this->*demo_proc[mDemoProc])(); + set_push_flag(); + + static void (daObjSwpush2::Act_c::*mode_proc[])() = { + &daObjSwpush2::Act_c::mode_upper, + &daObjSwpush2::Act_c::mode_u_l, + &daObjSwpush2::Act_c::mode_lower, + &daObjSwpush2::Act_c::mode_l_u, + }; + + (this->*mode_proc[mModeProc])(); + calc_top_pos(); + + mpNmlBrk->play(); + mpNmlBtk->play(); + mpOnBtk->play(); + mpRunBpk->play(); + mpRunBrk->play(); + mpRunBtk->play(); + + if (!is_switch()) { + if (daPy_getPlayerActorClass()->current.pos.abs(current.pos) < attr().effect_distance) { + mpOnBtk->setPlaySpeed(1.0f); + } else { + mpOnBtk->setPlaySpeed(-1.0f); + } + } + + mPrevRideType = mRideType != 0; + mPrevPlayerRideHeavy = mIsPlayerRideHeavy; + mRideType = 0; + mIsPlayerRideHeavy = false; + + set_mtx(); + mpBgw->Move(); + + eyePos.x = current.pos.x; + eyePos.y = (current.pos.y + mTopPos) - -10.0f; + eyePos.z = current.pos.z; + return 1; +} + +/* 80CFF8FC-80CFFB50 0018DC 0254+00 1/1 0/0 0/0 .text Mthd_Draw__Q212daObjSwpush25Act_cFv + */ +int daObjSwpush2::Act_c::Mthd_Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + mpNmlBrk->entry(mpModel->getModelData()); + mpNmlBtk->entry(mpModel->getModelData()); + + if (mpOnBtk->isStop() && mpOnBtk->getFrame() != 0.0f) { + mpRunBtk->entry(mpModel->getModelData()); + mpRunBpk->entry(mpModel->getModelData()); + mpRunBrk->entry(mpModel->getModelData()); + } else { + mpOnBtk->entry(mpModel->getModelData()); + } + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + + mpNmlBrk->remove(mpModel->getModelData()); + mpNmlBtk->remove(mpModel->getModelData()); + + if (mpOnBtk->isStop() && mpOnBtk->getFrame() != 0.0f) { + mpRunBtk->remove(mpModel->getModelData()); + mpRunBpk->remove(mpModel->getModelData()); + mpRunBrk->remove(mpModel->getModelData()); + } else { + mpOnBtk->remove(mpModel->getModelData()); + } + + return 1; +} + +namespace daObjSwpush2 { +namespace { +/* 80CFFB50-80CFFB70 001B30 0020+00 1/0 0/0 0/0 .text + * Mthd_Create__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ +int Mthd_Create(void* i_this) { + return ((Act_c*)i_this)->Mthd_Create(); +} + +/* 80CFFB70-80CFFB90 001B50 0020+00 1/0 0/0 0/0 .text + * Mthd_Delete__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ +int Mthd_Delete(void* i_this) { + return ((Act_c*)i_this)->Mthd_Delete(); +} + +/* 80CFFB90-80CFFBB0 001B70 0020+00 1/0 0/0 0/0 .text + * Mthd_Execute__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ +int Mthd_Execute(void* i_this) { + return ((Act_c*)i_this)->Mthd_Execute(); +} + +/* 80CFFBB0-80CFFBD0 001B90 0020+00 1/0 0/0 0/0 .text + * Mthd_Draw__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ +int Mthd_Draw(void* i_this) { + return ((Act_c*)i_this)->Mthd_Draw(); +} /* 80CFFE98-80CFFEB8 -00001 0020+00 1/0 0/0 0/0 .data * Mthd_Table__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@ */ -static actor_method_class data_80CFFE98 = { - (process_method_func)func_80CFFB50, - (process_method_func)func_80CFFB70, - (process_method_func)func_80CFFB90, - 0, - (process_method_func)func_80CFFBB0, +actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, + (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, + NULL, + (process_method_func)Mthd_Draw, }; +} +} /* 80CFFEB8-80CFFEE8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush2 */ extern actor_process_profile_definition g_profile_Obj_Swpush2 = { @@ -451,308 +787,13 @@ extern actor_process_profile_definition g_profile_Obj_Swpush2 = { fpcPi_CURRENT_e, // mListPrio PROC_Obj_Swpush2, // mProcName &g_fpcLf_Method.base, // sub_method - sizeof(daObjSwpush2), // mSize + sizeof(daObjSwpush2::Act_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method 12, // mPriority - &data_80CFFE98, // sub_method + &daObjSwpush2::Mthd_Table, // sub_method 0x00040100, // mStatus fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CFFEE8-80CFFEF4 000148 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80CFE1D0-80CFE690 0001B0 04C0+00 1/1 0/0 0/0 .text create_heap__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::create_heap() { - // NONMATCHING -} - -/* 80CFE690-80CFE6D8 000670 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CFFCE8-80CFFCEC 0000F4 0004+00 0/1 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 150.0f; -COMPILER_STRIP_GATE(0x80CFFCE8, &lit_3936); -#pragma pop - -/* 80CFFCEC-80CFFCF0 0000F8 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = -150.0f; -COMPILER_STRIP_GATE(0x80CFFCEC, &lit_3937); -#pragma pop - -/* 80CFFCF0-80CFFCF4 0000FC 0004+00 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 60.0f; -COMPILER_STRIP_GATE(0x80CFFCF0, &lit_3938); -#pragma pop - -/* 80CFFCF4-80CFFCF8 000100 0004+00 1/4 0/0 0/0 .rodata @3939 */ -SECTION_RODATA static f32 const lit_3939 = -1.0f; -COMPILER_STRIP_GATE(0x80CFFCF4, &lit_3939); - -/* 80CFE6D8-80CFE8CC 0006B8 01F4+00 1/1 0/0 0/0 .text create_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::create_init() { - // NONMATCHING -} - -/* 80CFE8CC-80CFE928 0008AC 005C+00 1/1 0/0 0/0 .text create_res_load__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::create_res_load() { - // NONMATCHING -} - -/* 80CFE928-80CFEA3C 000908 0114+00 1/1 0/0 0/0 .text Mthd_Create__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::Mthd_Create() { - // NONMATCHING -} - -/* 80CFEA3C-80CFEAB4 000A1C 0078+00 1/1 0/0 0/0 .text Mthd_Delete__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::Mthd_Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CFFCF8-80CFFCFC 000104 0004+00 1/2 0/0 0/0 .rodata @4012 */ -SECTION_RODATA static f32 const lit_4012 = -10.0f; -COMPILER_STRIP_GATE(0x80CFFCF8, &lit_4012); - -/* 80CFEAB4-80CFEB3C 000A94 0088+00 2/2 0/0 0/0 .text set_mtx__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::set_mtx() { - // NONMATCHING -} - -/* 80CFEB3C-80CFEB78 000B1C 003C+00 1/1 0/0 0/0 .text init_mtx__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::init_mtx() { - // NONMATCHING -} - -/* 80CFEB78-80CFEBE4 000B58 006C+00 1/1 0/0 0/0 .text - * rideCB__Q212daObjSwpush25Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -void daObjSwpush2::Act_c::rideCB(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CFFCFC-80CFFD00 000108 0004+00 0/1 0/0 0/0 .rodata @4039 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4039 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80CFFCFC, &lit_4039); -#pragma pop - -/* 80CFFD00-80CFFD04 00010C 0004+00 0/1 0/0 0/0 .rodata @4040 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4040 = 1.0f / 50.0f; -COMPILER_STRIP_GATE(0x80CFFD00, &lit_4040); -#pragma pop - -/* 80CFFD04-80CFFD08 000110 0004+00 0/1 0/0 0/0 .rodata @4041 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4041 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80CFFD04, &lit_4041); -#pragma pop - -/* 80CFFD08-80CFFD0C 000114 0004+00 0/1 0/0 0/0 .rodata @4042 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4042 = -50.0f; -COMPILER_STRIP_GATE(0x80CFFD08, &lit_4042); -#pragma pop - -/* 80CFEBE4-80CFEC4C 000BC4 0068+00 1/1 0/0 0/0 .text calc_top_pos__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::calc_top_pos() { - // NONMATCHING -} - -/* 80CFEC4C-80CFEDDC 000C2C 0190+00 1/1 0/0 0/0 .text set_push_flag__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::set_push_flag() { - // NONMATCHING -} - -/* 80CFEDDC-80CFEDFC 000DBC 0020+00 2/2 0/0 0/0 .text mode_upper_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::mode_upper_init() { - // NONMATCHING -} - -/* 80CFEDFC-80CFEF84 000DDC 0188+00 1/0 0/0 0/0 .text mode_upper__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::mode_upper() { - // NONMATCHING -} - -/* 80CFEF84-80CFEF98 000F64 0014+00 1/1 0/0 0/0 .text mode_u_l_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::mode_u_l_init() { - // NONMATCHING -} - -/* 80CFEF98-80CFF168 000F78 01D0+00 1/0 0/0 0/0 .text mode_u_l__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::mode_u_l() { - // NONMATCHING -} - -/* 80CFF168-80CFF188 001148 0020+00 2/2 0/0 0/0 .text mode_lower_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::mode_lower_init() { - // NONMATCHING -} - -/* 80CFF188-80CFF18C 001168 0004+00 1/0 0/0 0/0 .text mode_lower__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::mode_lower() { - /* empty function */ -} - -/* 80CFF18C-80CFF24C 00116C 00C0+00 1/0 0/0 0/0 .text mode_l_u__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::mode_l_u() { - // NONMATCHING -} - -/* 80CFF24C-80CFF258 00122C 000C+00 4/4 0/0 0/0 .text demo_non_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_non_init() { - // NONMATCHING -} - -/* 80CFF258-80CFF25C 001238 0004+00 1/0 0/0 0/0 .text demo_non__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::demo_non() { - /* empty function */ -} - -/* 80CFF25C-80CFF2B4 00123C 0058+00 1/1 0/0 0/0 .text demo_reqPause_init__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::demo_reqPause_init() { - // NONMATCHING -} - -/* 80CFF2B4-80CFF2EC 001294 0038+00 2/1 0/0 0/0 .text demo_reqPause__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_reqPause() { - // NONMATCHING -} - -/* 80CFF2EC-80CFF31C 0012CC 0030+00 2/2 0/0 0/0 .text demo_runPause_init__Q212daObjSwpush25Act_cFi - */ -void daObjSwpush2::Act_c::demo_runPause_init(int param_0) { - // NONMATCHING -} - -/* 80CFF31C-80CFF374 0012FC 0058+00 1/0 0/0 0/0 .text demo_runPause__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_runPause() { - // NONMATCHING -} - -/* 80CFF374-80CFF3C8 001354 0054+00 1/1 0/0 0/0 .text demo_stop_puase__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_stop_puase() { - // NONMATCHING -} - -/* 80CFF3C8-80CFF48C 0013A8 00C4+00 1/1 0/0 0/0 .text demo_reqSw_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_reqSw_init() { - // NONMATCHING -} - -/* 80CFF48C-80CFF500 00146C 0074+00 1/0 0/0 0/0 .text demo_reqSw__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_reqSw() { - // NONMATCHING -} - -/* 80CFF500-80CFF50C 0014E0 000C+00 1/1 0/0 0/0 .text demo_runSw_init__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_runSw_init() { - // NONMATCHING -} - -/* 80CFF50C-80CFF568 0014EC 005C+00 1/0 0/0 0/0 .text demo_runSw__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::demo_runSw() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CFFD0C-80CFFD14 000118 0008+00 0/1 0/0 0/0 .rodata @4395 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4395[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CFFD0C, &lit_4395); -#pragma pop - -/* 80CFFD14-80CFFD1C 000120 0008+00 0/1 0/0 0/0 .rodata @4396 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4396[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CFFD14, &lit_4396); -#pragma pop - -/* 80CFFD1C-80CFFD24 000128 0008+00 0/1 0/0 0/0 .rodata @4397 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4397[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CFFD1C, &lit_4397); -#pragma pop - -/* 80CFF568-80CFF8FC 001548 0394+00 1/1 0/0 0/0 .text Mthd_Execute__Q212daObjSwpush25Act_cFv */ -void daObjSwpush2::Act_c::Mthd_Execute() { - // NONMATCHING -} - -/* 80CFF8FC-80CFFB50 0018DC 0254+00 1/1 0/0 0/0 .text Mthd_Draw__Q212daObjSwpush25Act_cFv - */ -void daObjSwpush2::Act_c::Mthd_Draw() { - // NONMATCHING -} - -/* 80CFFB50-80CFFB70 001B30 0020+00 1/0 0/0 0/0 .text - * Mthd_Create__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ -static void func_80CFFB50() { - // NONMATCHING -} - -/* 80CFFB70-80CFFB90 001B50 0020+00 1/0 0/0 0/0 .text - * Mthd_Delete__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ -static void func_80CFFB70() { - // NONMATCHING -} - -/* 80CFFB90-80CFFBB0 001B70 0020+00 1/0 0/0 0/0 .text - * Mthd_Execute__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ -static void func_80CFFB90() { - // NONMATCHING -} - -/* 80CFFBB0-80CFFBD0 001B90 0020+00 1/0 0/0 0/0 .text - * Mthd_Draw__Q212daObjSwpush229@unnamed@d_a_obj_swpush2_cpp@FPv */ -static void func_80CFFBB0() { - // NONMATCHING -} - -/* 80CFFBD0-80CFFBEC 001BB0 001C+00 8/8 0/0 0/0 .text - * PrmAbstract__5daObjFPC10fopAc_ac_cQ312daObjSwpush25Act_c5Prm_eQ312daObjSwpush25Act_c5Prm_e - */ -extern "C" void func_80CFFBD0(void* _this, fopAc_ac_c const* param_0, - daObjSwpush2::Act_c::Prm_e param_1, - daObjSwpush2::Act_c::Prm_e param_2) { - // NONMATCHING -} - -/* 80CFFD24-80CFFD24 000130 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_taFence.cpp b/src/d/actor/d_a_obj_taFence.cpp index 077596f2c56..e89b67e90df 100644 --- a/src/d/actor/d_a_obj_taFence.cpp +++ b/src/d/actor/d_a_obj_taFence.cpp @@ -6,274 +6,440 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_taFence.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" +#include "d/d_lib.h" +#include "d/d_s_play.h" +class daTaFence_HIO_c : public mDoHIO_entry_c { +public: + /* 80D04E6C */ daTaFence_HIO_c(); + /* 80D06000 */ virtual ~daTaFence_HIO_c() {} + void genMessage(JORMContext*); -// -// Forward References: -// - -extern "C" void __ct__15daTaFence_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__11daTaFence_cFv(); -extern "C" void CreateHeap__11daTaFence_cFv(); -extern "C" void create__11daTaFence_cFv(); -extern "C" void __dt__8dCcD_CylFv(); -extern "C" void __ct__8dCcD_CylFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void Execute__11daTaFence_cFPPA3_A4_f(); -extern "C" void fenceProc__11daTaFence_cFv(); -extern "C" void init_modeWait__11daTaFence_cFv(); -extern "C" void modeWait__11daTaFence_cFv(); -extern "C" void init_modeMoveInit__11daTaFence_cFv(); -extern "C" void modeMoveInit__11daTaFence_cFv(); -extern "C" void init_modeMove__11daTaFence_cFv(); -extern "C" void modeMove__11daTaFence_cFv(); -extern "C" void init_modeMoveEnd__11daTaFence_cFv(); -extern "C" void modeMoveEnd__11daTaFence_cFv(); -extern "C" void Draw__11daTaFence_cFv(); -extern "C" void Delete__11daTaFence_cFv(); -extern "C" static void daTaFence_Draw__FP11daTaFence_c(); -extern "C" static void daTaFence_Execute__FP11daTaFence_c(); -extern "C" static void daTaFence_Delete__FP11daTaFence_c(); -extern "C" static void daTaFence_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__15daTaFence_HIO_cFv(); -extern "C" void __sinit_d_a_obj_taFence_cpp(); -extern "C" u8 const mCcDObjInfo__11daTaFence_c[48]; -extern "C" extern char const* const d_a_obj_taFence__stringBase0; -extern "C" u8 mCcDCyl__11daTaFence_c[68]; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dLib_checkActorInRectangle__FP10fopAc_ac_cP10fopAc_ac_cPC4cXyzPC4cXyz(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80D060E0-80D060E4 000000 0004+00 6/6 0/0 0/0 .rodata @3651 */ -SECTION_RODATA static u8 const lit_3651[4] = { - 0x00, - 0x00, - 0x00, - 0x00, + /* 0x04 */ f32 fall_init_speed; + /* 0x08 */ f32 fall_max_speed; + /* 0x0C */ u8 vibration; + /* 0x10 */ f32 pre_fall_shake_intensity; + /* 0x14 */ f32 pre_fall_shakeYZ_ampZ; + /* 0x18 */ f32 pre_fall_shakeYZ_ampY; + /* 0x1C */ f32 pre_fall_shakeYZ_damp; + /* 0x20 */ f32 pre_fall_shakeYZ_max_damp; + /* 0x24 */ f32 pre_fall_shakeYZ_min_damp; + /* 0x28 */ f32 pre_fall_shakeXZ_ampX; + /* 0x2C */ f32 pre_fall_shakeXZ_ampZ; + /* 0x30 */ f32 pre_fall_shakeXZ_intensity; + /* 0x34 */ f32 pre_fall_shakeXZ_damp; + /* 0x38 */ f32 pre_fall_shakeXZ_max_damp; + /* 0x3C */ f32 pre_fall_shakeXZ_min_damp; + /* 0x40 */ f32 sword_hit_shakeYZ_intensity; + /* 0x44 */ f32 sword_hit_shakeYZ_ampZ; + /* 0x48 */ f32 sword_hit_shakeYZ_ampY; + /* 0x4C */ f32 sword_hit_shakeYZ_damp; + /* 0x50 */ f32 sword_hit_shakeYZ_max_damp; + /* 0x54 */ f32 sword_hit_shakeYZ_min_damp; + /* 0x58 */ f32 sword_hit_shakeXZ_ampX; + /* 0x5C */ f32 sword_hit_shakeXZ_ampZ; + /* 0x60 */ f32 sword_hit_shakeXZ_intensity; + /* 0x64 */ f32 sword_hit_shakeXZ_damp; + /* 0x68 */ f32 sword_hit_shakeXZ_max_damp; + /* 0x6C */ f32 sword_hit_shakeXZ_min_damp; + /* 0x70 */ u8 collapse_time; + /* 0x71 */ u8 shake_time; }; -COMPILER_STRIP_GATE(0x80D060E0, &lit_3651); -/* 80D060E4-80D060E8 000004 0004+00 0/1 0/0 0/0 .rodata @3652 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3652 = 13.0f; -COMPILER_STRIP_GATE(0x80D060E4, &lit_3652); -#pragma pop +/* 80D0633C-80D063B0 000014 0074+00 5/5 0/0 0/0 .bss l_HIO */ +static daTaFence_HIO_c l_HIO; -/* 80D060E8-80D060EC 000008 0004+00 0/1 0/0 0/0 .rodata @3653 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3653 = 200.0f; -COMPILER_STRIP_GATE(0x80D060E8, &lit_3653); -#pragma pop +/* 80D04E6C-80D04F44 0000EC 00D8+00 1/1 0/0 0/0 .text __ct__15daTaFence_HIO_cFv */ +daTaFence_HIO_c::daTaFence_HIO_c() { + fall_init_speed = 0.0f; + fall_max_speed = 13.0f; + vibration = 4; -/* 80D060EC-80D060F0 00000C 0004+00 0/1 0/0 0/0 .rodata @3654 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3654 = 90.0f; -COMPILER_STRIP_GATE(0x80D060EC, &lit_3654); -#pragma pop + pre_fall_shake_intensity = 200.0f; + pre_fall_shakeYZ_ampZ = 90.0f; + pre_fall_shakeYZ_ampY = 45.0f; + pre_fall_shakeYZ_damp = 0.1f; + pre_fall_shakeYZ_max_damp = 10.0f; + pre_fall_shakeYZ_min_damp = 1.0f; + pre_fall_shakeXZ_intensity = 10.0f; + pre_fall_shakeXZ_ampX = 90.0f; + pre_fall_shakeXZ_ampZ = 45.0f; + pre_fall_shakeXZ_damp = 0.1f; + pre_fall_shakeXZ_max_damp = 10.0f; + pre_fall_shakeXZ_min_damp = 1.0f; -/* 80D060F0-80D060F4 000010 0004+00 0/1 0/0 0/0 .rodata @3655 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3655 = 45.0f; -COMPILER_STRIP_GATE(0x80D060F0, &lit_3655); -#pragma pop + sword_hit_shakeYZ_intensity = 100.0f; + sword_hit_shakeYZ_ampZ = 90.0f; + sword_hit_shakeYZ_ampY = 45.0f; + sword_hit_shakeYZ_damp = 0.3f; + sword_hit_shakeYZ_max_damp = 1.5f; + sword_hit_shakeYZ_min_damp = 1.0f; + sword_hit_shakeXZ_intensity = 12.0f; + sword_hit_shakeXZ_ampX = 90.0f; + sword_hit_shakeXZ_ampZ = 45.0f; + sword_hit_shakeXZ_damp = 0.3f; + sword_hit_shakeXZ_max_damp = 1.0f; + sword_hit_shakeXZ_min_damp = 0.5f; -/* 80D060F4-80D060F8 000014 0004+00 0/1 0/0 0/0 .rodata @3656 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3656 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D060F4, &lit_3656); -#pragma pop + collapse_time = 10; + shake_time = 27; +} -/* 80D060F8-80D060FC 000018 0004+00 0/1 0/0 0/0 .rodata @3657 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3657 = 10.0f; -COMPILER_STRIP_GATE(0x80D060F8, &lit_3657); -#pragma pop +/* 80D04F8C-80D0503C 00020C 00B0+00 2/2 0/0 0/0 .text setBaseMtx__11daTaFence_cFv */ +void daTaFence_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::ZXYrotM(mShakeYZ.x, mShakeYZ.y, mShakeYZ.z); + mDoMtx_stack_c::transM(mShakeXZ.x, mShakeXZ.y, mShakeXZ.z); + mpModel->setBaseScale(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 80D060FC-80D06100 00001C 0004+00 1/3 0/0 0/0 .rodata @3658 */ -SECTION_RODATA static f32 const lit_3658 = 1.0f; -COMPILER_STRIP_GATE(0x80D060FC, &lit_3658); +/* 80D0503C-80D050A8 0002BC 006C+00 1/0 0/0 0/0 .text CreateHeap__11daTaFence_cFv */ +int daTaFence_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("P_Mfence", 4); + JUT_ASSERT(339, modelData != NULL); -/* 80D06100-80D06104 000020 0004+00 0/1 0/0 0/0 .rodata @3659 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3659 = 100.0f; -COMPILER_STRIP_GATE(0x80D06100, &lit_3659); -#pragma pop + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } -/* 80D06104-80D06108 000024 0004+00 0/1 0/0 0/0 .rodata @3660 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3660 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D06104, &lit_3660); -#pragma pop + return 1; +} -/* 80D06108-80D0610C 000028 0004+00 0/1 0/0 0/0 .rodata @3661 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3661 = 1.5f; -COMPILER_STRIP_GATE(0x80D06108, &lit_3661); -#pragma pop - -/* 80D0610C-80D06110 00002C 0004+00 0/1 0/0 0/0 .rodata @3662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3662 = 12.0f; -COMPILER_STRIP_GATE(0x80D0610C, &lit_3662); -#pragma pop - -/* 80D06110-80D06114 000030 0004+00 0/2 0/0 0/0 .rodata @3663 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3663 = 0.5f; -COMPILER_STRIP_GATE(0x80D06110, &lit_3663); -#pragma pop +/* 80D06114-80D06144 000034 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__11daTaFence_c */ +const dCcD_SrcGObjInf daTaFence_c::mCcDObjInfo = { + {0, {{0x0, 0x0, 0x0}, {0x400032, 0x11}, {0x0}}}, + {dCcD_SE_SWORD, 0, 0, 0, 0}, + {dCcD_SE_STONE, 0, 0, 0, 0}, + {0}, +}; /* 80D061C4-80D06208 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__11daTaFence_c */ -SECTION_DATA u8 daTaFence_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcCyl daTaFence_c::mCcDCyl = { + daTaFence_c::mCcDObjInfo, + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; -/* 80D06208-80D06214 -00001 000C+00 0/1 0/0 0/0 .data @3870 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3870[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__11daTaFence_cFv, -}; -#pragma pop +/* 80D050A8-80D05314 000328 026C+00 1/1 0/0 0/0 .text create__11daTaFence_cFv */ +int daTaFence_c::create() { + fopAcM_ct(this, daTaFence_c); -/* 80D06214-80D06220 -00001 000C+00 0/1 0/0 0/0 .data @3871 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3871[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveInit__11daTaFence_cFv, -}; -#pragma pop + int phase_state = dComIfG_resLoad(&mPhase, "P_Mfence"); + if (phase_state == cPhs_COMPLEATE_e) { + if (MoveBGCreate("P_Mfence", 7, dBgS_MoveBGProc_TypicalRotY, 0x1500, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } -/* 80D06220-80D0622C -00001 000C+00 0/1 0/0 0/0 .data @3872 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3872[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMove__11daTaFence_cFv, -}; -#pragma pop + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); -/* 80D0622C-80D06238 -00001 000C+00 0/1 0/0 0/0 .data @3873 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3873[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveEnd__11daTaFence_cFv, -}; -#pragma pop + mCcStts.Init(0xFF, 0xFF, this); -/* 80D06238-80D06268 000094 0030+00 0/1 0/0 0/0 .data mode_proc$3869 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + if (fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF)) { + if (fopAcM_isSwitch(this, (fopAcM_GetParam(this) & 0xFF00) >> 8)) { + shape_angle.x += 0x8000; + } + + if (mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + + init_modeMoveEnd(); + } else { + shape_angle.x += 0x4000; + + for (int i = 0; i < 11; i++) { + mCyl[i].Set(mCcDCyl); + mCyl[i].SetStts(&mCcStts); + } + + mShakeYZ.x = 0; + mShakeYZ.y = 0; + mShakeYZ.z = 0; + + mShakeYZ_intensity = 0.0f; + + mShakeXZ.x = 0.0f; + mShakeXZ.y = 0.0f; + mShakeXZ.z = 0.0f; + + mShakeXZ_intensity = 0.0f; + mShakeYZ_ampY = 0.0f; + mShakeYZ_ampZ = 0.0f; + mShakeYZ_damp = 0.0f; + mShakeYZ_maxDamp = 0.0f; + mShakeYZ_minDamp = 0.0f; + + mShakeXZ_ampX = 0.0f; + mShakeXZ_ampZ = 0.0f; + mShakeXZ_damp = 0.0f; + mShakeXZ_maxDamp = 0.0f; + mShakeXZ_minDamp = 0.0f; + + mCounter = 0; + mCollapseTimer = 0; + mShakeTimer = 0; + + init_modeWait(); + } + + setBaseMtx(); + + #if DEBUG + l_HIO.entryHIO("体当たり金網"); + #endif + } + + return phase_state; +} + +/* 80D05550-80D055A0 0007D0 0050+00 1/0 0/0 0/0 .text Execute__11daTaFence_cFPPA3_A4_f */ +int daTaFence_c::Execute(Mtx** param_0) { + fenceProc(); + *param_0 = &mpModel->getBaseTRMtx(); + setBaseMtx(); + return 1; +} + +/* 80D06144-80D06174 000064 0030+00 0/1 0/0 0/0 .rodata l_check_area */ +static const Vec l_check_area[4] = { + {-225.0f, 0.0f, -100.0f}, + {-225.0f, 225.0f, -100.0f}, + {225.0f, 225.0f, 100.0f}, + {225.0f, 0.0f, 100.0f}, }; -#pragma pop + +/* 80D055A0-80D057C4 000820 0224+00 1/1 0/0 0/0 .text fenceProc__11daTaFence_cFv */ +void daTaFence_c::fenceProc() { + static void (daTaFence_c::*mode_proc[])() = { + &daTaFence_c::modeWait, + &daTaFence_c::modeMoveInit, + &daTaFence_c::modeMove, + &daTaFence_c::modeMoveEnd, + }; + + (this->*mode_proc[mMode])(); + + mShakeYZ.z = mShakeYZ_intensity * cM_scos(mCounter * (s16)cM_deg2s(mShakeYZ_ampY)); + mShakeYZ.y = mShakeYZ_intensity * cM_ssin(mCounter * (s16)cM_deg2s(mShakeYZ_ampZ)); + cLib_addCalc(&mShakeYZ_intensity, 0.0f, mShakeYZ_damp, mShakeYZ_maxDamp, mShakeYZ_minDamp); + + mShakeXZ.x = mShakeXZ_intensity * cM_scos(mCounter * (s16)cM_deg2s(mShakeXZ_ampX)); + mShakeXZ.y = mShakeXZ_intensity * cM_ssin(mCounter * (s16)cM_deg2s(mShakeXZ_ampZ)); + cLib_addCalc(&mShakeXZ_intensity, 0.0f, mShakeXZ_damp, mShakeXZ_maxDamp, mShakeXZ_minDamp); + + mCounter++; +} + +/* 80D057C4-80D057D0 000A44 000C+00 1/1 0/0 0/0 .text init_modeWait__11daTaFence_cFv */ +void daTaFence_c::init_modeWait() { + mMode = 0; +} + +/* 80D057D0-80D05A54 000A50 0284+00 1/0 0/0 0/0 .text modeWait__11daTaFence_cFv */ +void daTaFence_c::modeWait() { + daPy_py_c* player = dComIfGp_getLinkPlayer(); + if (player->checkFrontRollCrash()) { + cXyz sp2C; + cXyz sp20; + sp2C = l_check_area[0]; + sp20 = l_check_area[2]; + + BOOL pl_in_area = dLib_checkActorInRectangle(player, this, &sp2C, &sp20); + if (pl_in_area) { + init_modeMoveInit(); + } + } + + for (int i = 0; i < 11; i++) { + if (mCyl[i].ChkTgHit()) { + dCcD_GObjInf* tg_hitgobj = mCyl[i].GetTgHitGObj(); + + if (tg_hitgobj->GetAtType() & (AT_TYPE_IRON_BALL | AT_TYPE_BOMB | AT_TYPE_SHIELD_ATTACK)) { + init_modeMoveInit(); + } else if (tg_hitgobj->ChkAtType(AT_TYPE_NORMAL_SWORD) && mShakeTimer == 0) { + mShakeYZ_intensity = l_HIO.sword_hit_shakeYZ_intensity; + mShakeYZ_ampY = l_HIO.sword_hit_shakeYZ_ampY; + mShakeYZ_ampZ = l_HIO.sword_hit_shakeYZ_ampZ; + mShakeYZ_damp = l_HIO.sword_hit_shakeYZ_damp; + mShakeYZ_maxDamp = l_HIO.sword_hit_shakeYZ_max_damp; + mShakeYZ_minDamp = l_HIO.sword_hit_shakeYZ_min_damp; + + mShakeXZ_intensity = l_HIO.sword_hit_shakeXZ_intensity; + mShakeXZ_ampX = l_HIO.sword_hit_shakeXZ_ampX; + mShakeXZ_ampZ = l_HIO.sword_hit_shakeXZ_ampZ; + mShakeXZ_damp = l_HIO.sword_hit_shakeXZ_damp; + mShakeXZ_maxDamp = l_HIO.sword_hit_shakeXZ_max_damp; + mShakeXZ_minDamp = l_HIO.sword_hit_shakeXZ_min_damp; + + mShakeTimer = l_HIO.shake_time; + break; + } + } + + mCyl[i].ClrTgHit(); + } + + for (int i = 0; i < 11; i++) { + mCyl[i].SetR(25.0f + oREG_F(0)); + mCyl[i].SetH(250.0f + oREG_F(1)); + + cXyz pos(current.pos); + pos.x = (pos.x + (i * (41.0f + oREG_F(2)))) - 205.0f; + mCyl[i].SetC(pos); + dComIfG_Ccsp()->Set(&mCyl[i]); + } + + if (mShakeTimer != 0) { + mShakeTimer--; + } +} + +/* 80D05A54-80D05B5C 000CD4 0108+00 1/1 0/0 0/0 .text init_modeMoveInit__11daTaFence_cFv + */ +void daTaFence_c::init_modeMoveInit() { + if (mCollapseTimer == 0) { + mCollapseTimer = l_HIO.collapse_time; + } + + mShakeYZ_intensity = l_HIO.pre_fall_shake_intensity; + mShakeYZ_ampY = l_HIO.pre_fall_shakeYZ_ampY; + mShakeYZ_ampZ = l_HIO.pre_fall_shakeYZ_ampZ; + mShakeYZ_damp = l_HIO.pre_fall_shakeYZ_damp; + mShakeYZ_maxDamp = l_HIO.pre_fall_shakeYZ_max_damp; + mShakeYZ_minDamp = l_HIO.pre_fall_shakeYZ_min_damp; + + mShakeXZ_intensity = l_HIO.pre_fall_shakeXZ_intensity; + mShakeXZ_ampX = l_HIO.pre_fall_shakeXZ_ampX; + mShakeXZ_ampZ = l_HIO.pre_fall_shakeXZ_ampZ; + mShakeXZ_damp = l_HIO.pre_fall_shakeXZ_damp; + mShakeXZ_maxDamp = l_HIO.pre_fall_shakeXZ_max_damp; + mShakeXZ_minDamp = l_HIO.pre_fall_shakeXZ_min_damp; + + mDoAud_seStart(Z2SE_OBJ_ATK_FENCE_HIT, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mMode = 1; +} + +/* 80D05B5C-80D05B94 000DDC 0038+00 1/0 0/0 0/0 .text modeMoveInit__11daTaFence_cFv */ +void daTaFence_c::modeMoveInit() { + if (mCollapseTimer == 0) { + init_modeMove(); + } else { + mCollapseTimer--; + } +} + +/* 80D05B94-80D05CAC 000E14 0118+00 1/1 0/0 0/0 .text init_modeMove__11daTaFence_cFv */ +void daTaFence_c::init_modeMove() { + for (int i = 0; i < 11; i++) { + mCyl[i].OffCoSetBit(); + } + + if (mpBgW->ChkUsed()) { + int result = dComIfG_Bgsp().Release(mpBgW); + } + + mFallSpeed = l_HIO.fall_max_speed; + + fopAcM_SetSpeedF(this, l_HIO.fall_init_speed); + + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz sp8 = player->current.pos - current.pos; + mDoMtx_stack_c::YrotS(-current.angle.y); + mDoMtx_stack_c::multVec(&sp8, &sp8); + + if (sp8.z < 0.0f) { + field_0x1384 = -0x8000; + } else { + field_0x1384 = 0; + } + + mMode = 2; +} + +/* 80D05CAC-80D05D2C 000F2C 0080+00 1/0 0/0 0/0 .text modeMove__11daTaFence_cFv */ +void daTaFence_c::modeMove() { + cLib_chaseF(&speedF, mFallSpeed, mFallSpeed / 30.0f); + if (cLib_addCalcAngleS(&shape_angle.x, field_0x1384, 1, (182.04445f * fopAcM_GetSpeedF(this)), 1) == 0) { + init_modeMoveEnd(); + } +} + +/* 80D05D2C-80D05E54 000FAC 0128+00 2/2 0/0 0/0 .text init_modeMoveEnd__11daTaFence_cFv + */ +void daTaFence_c::init_modeMoveEnd() { + mDoAud_seStart(Z2SE_OBJ_ATK_FENCE_FALLDOWN, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + dComIfGp_getVibration().StartShock(l_HIO.vibration, 0xF, cXyz(0.0f, 1.0f, 0.0f)); + fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF); + + if (field_0x1384 == 0) { + fopAcM_offSwitch(this, (fopAcM_GetParam(this) & 0xFF00) >> 8); + } else { + fopAcM_onSwitch(this, (fopAcM_GetParam(this) & 0xFF00) >> 8); + } + + mMode = 3; +} + +/* 80D05E54-80D05E58 0010D4 0004+00 1/0 0/0 0/0 .text modeMoveEnd__11daTaFence_cFv */ +void daTaFence_c::modeMoveEnd() {} + +/* 80D05E58-80D05EFC 0010D8 00A4+00 1/0 0/0 0/0 .text Draw__11daTaFence_cFv */ +int daTaFence_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 80D05EFC-80D05F2C 00117C 0030+00 1/0 0/0 0/0 .text Delete__11daTaFence_cFv */ +int daTaFence_c::Delete() { + dComIfG_resDelete(&mPhase, "P_Mfence"); + #if DEBUG + l_HIO.removeHIO(); + #endif + return 1; +} + +/* 80D05F2C-80D05F58 0011AC 002C+00 1/0 0/0 0/0 .text daTaFence_Draw__FP11daTaFence_c */ +static int daTaFence_Draw(daTaFence_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80D05F58-80D05F78 0011D8 0020+00 1/0 0/0 0/0 .text daTaFence_Execute__FP11daTaFence_c + */ +static int daTaFence_Execute(daTaFence_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80D05F78-80D05F98 0011F8 0020+00 1/0 0/0 0/0 .text daTaFence_Delete__FP11daTaFence_c + */ +static int daTaFence_Delete(daTaFence_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80D05F98-80D05FB8 001218 0020+00 1/0 0/0 0/0 .text daTaFence_Create__FP10fopAc_ac_c */ +static int daTaFence_Create(fopAc_ac_c* i_this) { + return ((daTaFence_c*)i_this)->create(); +} /* 80D06268-80D06288 -00001 0020+00 1/0 0/0 0/0 .data l_daTaFence_Method */ static actor_method_class l_daTaFence_Method = { - (process_method_func)daTaFence_Create__FP10fopAc_ac_c, - (process_method_func)daTaFence_Delete__FP11daTaFence_c, - (process_method_func)daTaFence_Execute__FP11daTaFence_c, - 0, - (process_method_func)daTaFence_Draw__FP11daTaFence_c, + (process_method_func)daTaFence_Create, + (process_method_func)daTaFence_Delete, + (process_method_func)daTaFence_Execute, + NULL, + (process_method_func)daTaFence_Draw, }; /* 80D06288-80D062B8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_TaFence */ @@ -293,310 +459,3 @@ extern actor_process_profile_definition g_profile_Obj_TaFence = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80D062B8-80D062C4 000114 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80D062C4-80D062D0 000120 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80D062D0-80D062DC 00012C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80D062DC-80D062E8 000138 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80D062E8-80D06310 000144 0028+00 1/1 0/0 0/0 .data __vt__11daTaFence_c */ -SECTION_DATA extern void* __vt__11daTaFence_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__11daTaFence_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__11daTaFence_cFPPA3_A4_f, - (void*)Draw__11daTaFence_cFv, - (void*)Delete__11daTaFence_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80D06310-80D0631C 00016C 000C+00 2/2 0/0 0/0 .data __vt__15daTaFence_HIO_c */ -SECTION_DATA extern void* __vt__15daTaFence_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15daTaFence_HIO_cFv, -}; - -/* 80D0631C-80D06328 000178 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80D04E6C-80D04F44 0000EC 00D8+00 1/1 0/0 0/0 .text __ct__15daTaFence_HIO_cFv */ -daTaFence_HIO_c::daTaFence_HIO_c() { - // NONMATCHING -} - -/* 80D04F44-80D04F8C 0001C4 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* 80D04F8C-80D0503C 00020C 00B0+00 2/2 0/0 0/0 .text setBaseMtx__11daTaFence_cFv */ -void daTaFence_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D06198-80D06198 0000B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D06198 = "P_Mfence"; -#pragma pop - -/* 80D0503C-80D050A8 0002BC 006C+00 1/0 0/0 0/0 .text CreateHeap__11daTaFence_cFv */ -void daTaFence_c::CreateHeap() { - // NONMATCHING -} - -/* 80D050A8-80D05314 000328 026C+00 1/1 0/0 0/0 .text create__11daTaFence_cFv */ -void daTaFence_c::create() { - // NONMATCHING -} - -/* 80D05314-80D053E0 000594 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_CylFv */ -// dCcD_Cyl::~dCcD_Cyl() { -extern "C" void __dt__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80D053E0-80D05464 000660 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_CylFv */ -// dCcD_Cyl::dCcD_Cyl() { -extern "C" void __ct__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80D05464-80D054AC 0006E4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D054AC-80D054F4 00072C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D054F4-80D05550 000774 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D05550-80D055A0 0007D0 0050+00 1/0 0/0 0/0 .text Execute__11daTaFence_cFPPA3_A4_f */ -void daTaFence_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D06114-80D06144 000034 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__11daTaFence_c */ -SECTION_RODATA u8 const daTaFence_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x32, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D06114, &daTaFence_c::mCcDObjInfo); - -/* 80D06144-80D06174 000064 0030+00 0/1 0/0 0/0 .rodata l_check_area */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_check_area[48] = { - 0xC3, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC3, 0x61, 0x00, 0x00, - 0x43, 0x61, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0x43, 0x61, 0x00, 0x00, 0x43, 0x61, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x43, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D06144, &l_check_area); -#pragma pop - -/* 80D06174-80D06178 000094 0004+00 2/2 0/0 0/0 .rodata @3903 */ -SECTION_RODATA static u32 const lit_3903 = 0x43360B61; -COMPILER_STRIP_GATE(0x80D06174, &lit_3903); - -/* 80D06330-80D0633C 000008 000C+00 1/1 0/0 0/0 .bss @3645 */ -static u8 lit_3645[12]; - -/* 80D0633C-80D063B0 000014 0074+00 5/5 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[116]; - -/* 80D063B0-80D063B4 000088 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80D063B0[4]; - -/* 80D055A0-80D057C4 000820 0224+00 1/1 0/0 0/0 .text fenceProc__11daTaFence_cFv */ -void daTaFence_c::fenceProc() { - // NONMATCHING -} - -/* 80D057C4-80D057D0 000A44 000C+00 1/1 0/0 0/0 .text init_modeWait__11daTaFence_cFv */ -void daTaFence_c::init_modeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D06178-80D0617C 000098 0004+00 0/1 0/0 0/0 .rodata @3963 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3963 = 25.0f; -COMPILER_STRIP_GATE(0x80D06178, &lit_3963); -#pragma pop - -/* 80D0617C-80D06180 00009C 0004+00 0/1 0/0 0/0 .rodata @3964 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3964 = 250.0f; -COMPILER_STRIP_GATE(0x80D0617C, &lit_3964); -#pragma pop - -/* 80D06180-80D06184 0000A0 0004+00 0/1 0/0 0/0 .rodata @3965 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3965 = 41.0f; -COMPILER_STRIP_GATE(0x80D06180, &lit_3965); -#pragma pop - -/* 80D06184-80D06188 0000A4 0004+00 0/1 0/0 0/0 .rodata @3966 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3966 = 205.0f; -COMPILER_STRIP_GATE(0x80D06184, &lit_3966); -#pragma pop - -/* 80D06188-80D06190 0000A8 0008+00 0/1 0/0 0/0 .rodata @3968 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3968[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D06188, &lit_3968); -#pragma pop - -/* 80D057D0-80D05A54 000A50 0284+00 1/0 0/0 0/0 .text modeWait__11daTaFence_cFv */ -void daTaFence_c::modeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D06190-80D06194 0000B0 0004+00 1/2 0/0 0/0 .rodata @3981 */ -SECTION_RODATA static f32 const lit_3981 = -1.0f; -COMPILER_STRIP_GATE(0x80D06190, &lit_3981); - -/* 80D05A54-80D05B5C 000CD4 0108+00 1/1 0/0 0/0 .text init_modeMoveInit__11daTaFence_cFv - */ -void daTaFence_c::init_modeMoveInit() { - // NONMATCHING -} - -/* 80D05B5C-80D05B94 000DDC 0038+00 1/0 0/0 0/0 .text modeMoveInit__11daTaFence_cFv */ -void daTaFence_c::modeMoveInit() { - // NONMATCHING -} - -/* 80D05B94-80D05CAC 000E14 0118+00 1/1 0/0 0/0 .text init_modeMove__11daTaFence_cFv */ -void daTaFence_c::init_modeMove() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D06194-80D06198 0000B4 0004+00 1/1 0/0 0/0 .rodata @4028 */ -SECTION_RODATA static f32 const lit_4028 = 30.0f; -COMPILER_STRIP_GATE(0x80D06194, &lit_4028); - -/* 80D05CAC-80D05D2C 000F2C 0080+00 1/0 0/0 0/0 .text modeMove__11daTaFence_cFv */ -void daTaFence_c::modeMove() { - // NONMATCHING -} - -/* 80D05D2C-80D05E54 000FAC 0128+00 2/2 0/0 0/0 .text init_modeMoveEnd__11daTaFence_cFv - */ -void daTaFence_c::init_modeMoveEnd() { - // NONMATCHING -} - -/* 80D05E54-80D05E58 0010D4 0004+00 1/0 0/0 0/0 .text modeMoveEnd__11daTaFence_cFv */ -void daTaFence_c::modeMoveEnd() { - /* empty function */ -} - -/* 80D05E58-80D05EFC 0010D8 00A4+00 1/0 0/0 0/0 .text Draw__11daTaFence_cFv */ -void daTaFence_c::Draw() { - // NONMATCHING -} - -/* 80D05EFC-80D05F2C 00117C 0030+00 1/0 0/0 0/0 .text Delete__11daTaFence_cFv */ -void daTaFence_c::Delete() { - // NONMATCHING -} - -/* 80D05F2C-80D05F58 0011AC 002C+00 1/0 0/0 0/0 .text daTaFence_Draw__FP11daTaFence_c */ -static void daTaFence_Draw(daTaFence_c* param_0) { - // NONMATCHING -} - -/* 80D05F58-80D05F78 0011D8 0020+00 1/0 0/0 0/0 .text daTaFence_Execute__FP11daTaFence_c - */ -static void daTaFence_Execute(daTaFence_c* param_0) { - // NONMATCHING -} - -/* 80D05F78-80D05F98 0011F8 0020+00 1/0 0/0 0/0 .text daTaFence_Delete__FP11daTaFence_c - */ -static void daTaFence_Delete(daTaFence_c* param_0) { - // NONMATCHING -} - -/* 80D05F98-80D05FB8 001218 0020+00 1/0 0/0 0/0 .text daTaFence_Create__FP10fopAc_ac_c */ -static void daTaFence_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80D05FB8-80D06000 001238 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D06000-80D0605C 001280 005C+00 2/1 0/0 0/0 .text __dt__15daTaFence_HIO_cFv */ -daTaFence_HIO_c::~daTaFence_HIO_c() { - // NONMATCHING -} - -/* 80D0605C-80D060CC 0012DC 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_taFence_cpp */ -void __sinit_d_a_obj_taFence_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80D0605C, __sinit_d_a_obj_taFence_cpp); -#pragma pop - -/* 80D06198-80D06198 0000B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */