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
15 changed files with 2165 additions and 2270 deletions
+52 -20
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 */
+132 -40
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 */
+35 -17
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 */
+11 -5
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
+2
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 */
+8 -4
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);
}
+5
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));
}