lv6togetrap, swpush2, tafence done (#2771)

* lv6togetrap, swpush2, tafence done

* fix jp/pal

* Use dEvtCnd_CANDEMO_e

---------

Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
This commit is contained in:
TakaRikka 2025-11-05 17:19:01 -08:00 committed by GitHub
parent 957a743742
commit 226325284d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 2165 additions and 2270 deletions

View File

@ -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

View File

@ -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

View File

@ -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"),

View File

@ -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 */

View File

@ -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 <typename A1>
void PrmAbstract(/* ... */);
/* 80CFFBD0 */ /* daObj::PrmAbstract<daObjSwpush2::Act_c::Prm_e> */
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 */

View File

@ -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 */

View File

@ -17,15 +17,21 @@ void quat_rotBaseY(Quaternion*, cXyz const&);
void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32);
template <typename T>
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

View File

@ -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 */

View File

@ -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);
}

View File

@ -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));
}

View File

@ -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;

File diff suppressed because it is too large Load Diff

View File

@ -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)) {

File diff suppressed because it is too large Load Diff

View File

@ -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, &current.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, &current.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, &current.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 */