d_a_obj_auzu (#935)

* 59% matching in .text

* d_a_obj_auzu 100% for demo and retail

* Named all fields of daObjAuzu::Act_c

* All fields named
This commit is contained in:
Roland
2026-03-01 17:36:56 -06:00
committed by GitHub
parent 034b90bfdc
commit 60b0d94e2a
5 changed files with 298 additions and 38 deletions
+54 -18
View File
@@ -1,42 +1,78 @@
#ifndef D_A_OBJ_AUZU_H
#define D_A_OBJ_AUZU_H
#include "d/d_a_obj.h"
#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_ext.h"
class J3DMaterial;
namespace daObjAuzu {
struct Attr_c {
/* 0x00 */ f32 mRadiusMult;
/* 0x04 */ f32 mOuterActivationMult;
/* 0x08 */ f32 mInnerActivationMult;
/* 0x0C */ f32 mAnmSpeed;
};
class Act_c : public fopAc_ac_c {
public:
void attr() const {}
bool is_appear() const { return field_0x2B4 > 0.999f; }
void prm_get_appear() const {}
void prm_get_linkID() const {}
void prm_get_swSave() const {}
void prm_get_type() const {}
void prm_make_squid() {}
void to_appear() { field_0x2B8 = true; }
void to_disappear() { field_0x2B8 = false; }
enum Prm_e {
PRM_APPEAR_W = 0x1,
PRM_APPEAR_S = 0x10,
PRM_LINK_ID_W = 0x8,
PRM_LINK_ID_S = 0x8,
PRM_SWSAVE_W = 0x8,
PRM_SWSAVE_S = 0x0,
PRM_TYPE_W = 0x4,
PRM_TYPE_S = 0x14
};
public:
const Attr_c& attr() const { return M_attr[mType]; }
bool is_appear() const { return mScaleAnimFactor > 0.999f; }
s32 prm_get_appear() const { return daObj::PrmAbstract(this, PRM_APPEAR_W, PRM_APPEAR_S); }
s32 prm_get_linkID() const { return daObj::PrmAbstract(this, PRM_LINK_ID_W, PRM_LINK_ID_S); }
s32 prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); }
s32 prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); }
static s32 prm_make_squid() {
return
0x1 << 20 | // type
0x1 << 16 | // appear
0x00 << 8 | // linkID
0xFF << 0; // swSave
}
void to_appear() { mbToAppear = true; }
void to_disappear() { mbToAppear = false; }
void solidHeapCB(fopAc_ac_c*);
void create_heap();
bool create_heap();
cPhs_State _create();
bool _delete();
void is_exist() const;
bool is_exist() const;
void set_mtx();
void init_mtx();
void set_state_map();
void ship_whirl();
void bgm_start();
bool _execute();
void set_material(J3DMaterial*, unsigned char);
bool _draw();
static BOOL solidHeapCB(fopAc_ac_c*);
static void set_material(J3DMaterial*, u8);
static const char M_arcname[];
static const Attr_c M_attr[2];
public:
/* 0x290 */ u8 field_0x290[0x2B4 - 0x290];
/* 0x2B4 */ f32 field_0x2B4;
/* 0x2B8 */ bool field_0x2B8;
/* 0x2B9 */ u8 field_0x2B9[0x2C0 - 0x2B9];
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ J3DModel* mpModel;
/* 0x29C */ mDoExt_btkAnm mBtkAnm;
/* 0x2B0 */ s32 mType;
/* 0x2B4 */ f32 mScaleAnimFactor;
/* 0x2B8 */ bool mbToAppear;
/* 0x2B9 */ bool mbIsExist;
/* 0x2BA */ bool mbBgmStarted;
/* 0x2BB */ /* 1 byte of alignment padding */
/* 0x2BC */ fpc_ProcID mKytagPcId;
}; // Size: 0x2C0
};
+10 -2
View File
@@ -186,8 +186,16 @@ public:
void onShortHitFlg() { onStateFlg(daSFLG_UNK20_e); }
void onStateFlg(daSHIP_SFLG flag) { mStateFlag |= flag; }
void onTornadoFlg(u32 tornadoID) { mTornadoID = tornadoID; }
void onWhirlFlg(u32, s16) {}
void onWhirlFlgDirect(u32, s16) {}
void onWhirlFlg(u32 whirlID, s16 linkID) {
mWhirlID = whirlID;
m03B2 = linkID;
m0352 = 1;
}
void onWhirlFlgDirect(u32 whirlID, s16 linkID) {
mWhirlID = whirlID;
m03B2 = linkID;
m0352 = 0;
}
void setAtnPos(const cXyz* pPos) {
onStateFlg(daSFLG_UNK1000000_e);
m1068 = *pPos;
+3
View File
@@ -18,6 +18,9 @@ typedef int (*fpcM_DrawIteraterFunc)(void*, void*);
inline fpc_ProcID fpcM_GetID(void* pProc) {
return pProc != NULL ? ((base_process_class*)pProc)->mBsPcId : fpcM_ERROR_PROCESS_ID_e;
}
inline BOOL fpcM_IsErrorID(fpc_ProcID id) {
return id == fpcM_ERROR_PROCESS_ID_e ? TRUE : FALSE;
}
inline s16 fpcM_GetName(void* pProc) {
return ((base_process_class*)pProc)->mProcName;
}