some cc doc and obj_brg work (#2184)

* some cc doc

* document dCcD material types

* work on d_a_obj_brg
This commit is contained in:
TakaRikka
2024-07-22 12:33:37 -06:00
committed by GitHub
parent 70e278ee84
commit 6bf2f3cc55
35 changed files with 2989 additions and 458 deletions
+15 -14
View File
@@ -6,6 +6,7 @@
#include "SSystem/SComponent/c_m3d_g_cyl.h"
#include "SSystem/SComponent/c_m3d_g_sph.h"
#include "SSystem/SComponent/c_m3d_g_tri.h"
#include "f_pc/f_pc_manager.h"
typedef struct _GXColor GXColor;
class fopAc_ac_c;
@@ -319,34 +320,34 @@ private:
class cCcD_Stts {
private:
/* 0x00 */ cXyz mXyz;
/* 0x0C */ fopAc_ac_c* mActor;
/* 0x10 */ int mApid;
/* 0x14 */ u8 mWeight;
/* 0x00 */ cXyz m_cc_move;
/* 0x0C */ fopAc_ac_c* mp_actor;
/* 0x10 */ fpc_ProcID m_apid;
/* 0x14 */ u8 m_weight;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ u8 mTg;
/* 0x16 */ u8 m_dmg;
public:
cCcD_Stts() {}
/* 801410A4 vt[3] */ virtual ~cCcD_Stts() {}
/* 80263894 vt[4] */ virtual const cCcD_GStts* GetGStts() const;
/* 8026389C vt[5] */ virtual cCcD_GStts* GetGStts();
/* 802638A4 */ void Init(int, int, void*, unsigned int);
/* 802638A4 */ void Init(int, int, void*, fpc_ProcID);
/* 80263904 vt[6] */ virtual void Ct();
/* 80263934 */ void PlusCcMove(f32, f32, f32);
/* 8026395C */ void ClrCcMove();
/* 80263970 */ void PlusDmg(int);
/* 80263984 */ f32 GetWeightF() const;
/* 802649E8 vt[7] */ virtual void ClrAt() {}
/* 802649EC vt[8] */ virtual void ClrTg() { mTg = 0; }
/* 802649EC vt[8] */ virtual void ClrTg() { m_dmg = 0; }
u8 GetWeightUc() const { return mWeight; }
void SetWeight(u8 weight) { mWeight = weight; }
fopAc_ac_c* GetAc() { return mActor; }
fopAc_ac_c* GetActor() const { return mActor; }
void SetActor(void* ac) { mActor = (fopAc_ac_c*)ac; }
cXyz* GetCCMoveP() { return &mXyz; }
unsigned int GetApid() const { return mApid; }
u8 GetWeightUc() const { return m_weight; }
void SetWeight(u8 weight) { m_weight = weight; }
fopAc_ac_c* GetAc() { return mp_actor; }
fopAc_ac_c* GetActor() const { return mp_actor; }
void SetActor(void* ac) { mp_actor = (fopAc_ac_c*)ac; }
cXyz* GetCCMoveP() { return &m_cc_move; }
fpc_ProcID GetApid() const { return m_apid; }
}; // Size = 0x1C
STATIC_ASSERT(0x1C == sizeof(cCcD_Stts));
+4 -3
View File
@@ -30,10 +30,11 @@ public:
bool cross(const cM3dGSph*, cXyz*) const;
bool cross(const cM3dGCyl*, cXyz*) const;
void calcMinMax(cXyz*, cXyz*);
const cXyz* GetCP(void) const { return &mCenter; }
f32 GetR(void) const { return mRadius; }
const cXyz* GetCP() const { return &mCenter; }
cXyz* GetCP() { return &mCenter; }
f32 GetR() const { return mRadius; }
f32* GetRP() { return &mRadius; }
f32 GetH(void) const { return mHeight; }
f32 GetH() const { return mHeight; }
cXyz& GetC() { return mCenter; }
bool Cross(const cM3dGCps* cps, cXyz* xyz) const { return cM3d_Cross_CpsCyl(*cps, *this, xyz); }
+2
View File
@@ -221,6 +221,8 @@ public:
bool ChkFlush() { return field_0x91 & 8; }
void SetLock() { mFlags |= LOCK_e; }
bool ChkRoofRegist() { return field_0x91 & 4;}
cBgD_Vtx_t* GetVtxTbl() const { return pm_vtx_tbl; }
int GetVtxNum() const { return pm_bgd->m_v_num; }
public:
/* 0x18 */ MtxP pm_base; // Model Matrix
+4
View File
@@ -5,6 +5,10 @@
class dBgWSv : public dBgW {
public:
dBgWSv() {
field_0xc0 = NULL;
}
/* 80082F98 */ u8 Set(cBgD_t*, u32);
/* 80083020 */ void CopyBackVtx();
/* 8008308C */ bool CrrPosWork(cXyz*, int, int, int);
+12 -1
View File
@@ -36,6 +36,17 @@ enum dCcD_hitSe {
/* 23 */ dCcD_SE_23,
};
enum dCcD_Material {
dCcD_MTRL_NONE,
dCcD_MTRL_FIRE,
dCcD_MTRL_ICE,
dCcD_MTRL_WIND,
dCcD_MTRL_LIGHT,
dCcD_MTRL_UNK_5,
dCcD_MTRL_UNK_6,
dCcD_MTRL_UNK_7,
};
enum dCcG_At_Spl {
/* 0x0 */ dCcG_At_Spl_UNK_0,
/* 0x1 */ dCcG_At_Spl_UNK_1,
@@ -135,7 +146,7 @@ class dCcD_Stts : public cCcD_Stts, public dCcD_GStts {
public:
dCcD_Stts() {}
/* 80083850 */ virtual cCcD_GStts* GetGStts();
/* 80083860 */ void Init(int, int, fopAc_ac_c*);
/* 80083860 */ void Init(int weight, int, fopAc_ac_c* pactor);
/* 800838F4 */ virtual void Ct();
/* 80083928 */ virtual void ClrAt();
/* 80083934 */ virtual void ClrTg();
+2 -2
View File
@@ -26,7 +26,7 @@ public:
/* 800872B0 */ void Move();
/* 800872D0 */ void Draw();
/* 8008730C */ void MassClear();
/* 80087330 */ int ChkAtTgMtrlHit(u8, u8);
/* 80087330 */ BOOL ChkAtTgMtrlHit(u8, u8);
/* 8008640C */ virtual void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32);
/* 80086240 */ virtual void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*,
@@ -47,7 +47,7 @@ public:
void SetMass(cCcD_Obj* i_obj, u8 i_priority) { mMass_Mng.Set(i_obj, i_priority); }
void PrepareMass() { mMass_Mng.Prepare(); }
static u8 m_mtrl_hit_tbl[64];
static bool m_mtrl_hit_tbl[64];
// /* 0x0000 */ cCcS mCCcS;
/* 0x284C */ dCcMassS_Mng mMass_Mng;
+2
View File
@@ -98,6 +98,8 @@ inline void mDoAud_sceneBgmStart() {
Z2AudioMgr::getInterface()->sceneBgmStart();
}
inline void mDoAud_seDeleteObject(Vec*) {}
inline void mDoAud_load2ndDynamicWave() {
Z2AudioMgr::getInterface()->load2ndDynamicWave();
}
+79 -8
View File
@@ -2,6 +2,43 @@
#define D_A_OBJ_BRG_H
#include "f_op/f_op_actor_mng.h"
#include "d/bg/d_bg_w_sv.h"
#include "d/cc/d_cc_d.h"
struct br_s {
/* 0x000 */ J3DModel* mpBridgeModel;
/* 0x004 */ J3DModel* mpKnotModels[2];
/* 0x00C */ JPABaseEmitter* field_0xc;
/* 0x010 */ JPABaseEmitter* field_0x10;
/* 0x014 */ mDoExt_3DlineMat1_c field_0x014;
/* 0x050 */ cXyz field_0x050[3];
/* 0x074 */ cXyz field_0x074[3];
/* 0x098 */ cXyz field_0x098[2];
/* 0x0B0 */ cXyz field_0x0b0;
/* 0x0BC */ cXyz field_0x0bc;
/* 0x0C8 */ cXyz field_0x0c8;
/* 0x0D4 */ csXyz field_0x0d4;
/* 0x0DC */ f32 field_0x0dc;
/* 0x0E0 */ f32 field_0x0e0;
/* 0x0E4 */ f32 field_0x0e4;
/* 0x0E8 */ f32 field_0x0e8;
/* 0x0EC */ f32 field_0x0ec;
/* 0x0F0 */ s16 field_0x0f0;
/* 0x0F2 */ s16 field_0x0f2;
/* 0x0F4 */ s16 field_0x0f4;
/* 0x0F6 */ s16 field_0x0f6;
/* 0x0F8 */ s16 field_0x0f8;
/* 0x0FA */ s16 field_0x0fa;
/* 0x0FC */ s16 field_0x0fc;
/* 0x0FE */ s16 field_0x0fe[2];
/* 0x104 */ dCcD_Cyl mCyl[2];
/* 0x37C */ dKy_tevstr_c mTevstr;
/* 0x704 */ s8 field_0x704;
/* 0x705 */ s8 field_0x705;
/* 0x706 */ u8 field_0x706;
/* 0x707 */ u8 field_0x707;
/* 0x708 */ u8 field_0x708;
};
/**
* @ingroup actors-objects
@@ -12,17 +49,51 @@
*
*/
class obj_brg_class : public fopAc_ac_c {
private:
/* 0x568 */ u8 field_0x568[0xb1f8 - 0x568];
public:
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ br_s mBr[24];
/* 0xAE90 */ mDoExt_3DlineMat1_c field_0xae90;
/* 0xAECC */ dBgWSv* mpBgW;
/* 0xAED0 */ int field_0xaed0;
/* 0xAED4 */ int field_0xaed4;
/* 0xAED8 */ int field_0xaed8;
/* 0xAEDC */ f32 field_0xaedc;
/* 0xAEE0 */ f32 field_0xaee0;
/* 0xAEE4 */ f32 field_0xaee4;
/* 0xAEE8 */ f32 field_0xaee8;
/* 0xAEEC */ f32 field_0xaeec;
/* 0xAEF0 */ f32 field_0xaef0;
/* 0xAEF4 */ f32 field_0xaef4;
/* 0xAEF8 */ cXyz mEndPos;
/* 0xAF04 */ cXyz field_0xaf04;
/* 0xAF10 */ cXyz field_0xaf10;
/* 0xAF1C */ s16 field_0xaf1c;
/* 0xAF1E */ s16 field_0xaf1e;
/* 0xAF20 */ s16 field_0xaf20;
/* 0xAF22 */ s16 field_0xaf22;
/* 0xAF24 */ s16 field_0xaf24;
/* 0xAF26 */ s16 field_0xaf26;
/* 0xAF28 */ s16 field_0xaf28;
/* 0xAF2A */ u8 field_0xAF2A[0xAF2C - 0xAF2A];
/* 0xAF2C */ s16 field_0xaf2c;
/* 0xAF2E */ s16 field_0xaf2e;
/* 0xAF30 */ f32 field_0xaf30;
/* 0xAF34 */ dCcD_Cyl mCyl[2];
/* 0xB1AC */ dCcD_Stts mCcStts;
/* 0xB1E8 */ u8 mType;
/* 0xB1E9 */ u8 field_0xb1e9;
/* 0xB1EA */ s8 field_0xb1ea;
/* 0xB1EB */ s8 field_0xb1eb;
/* 0xB1EC */ s8 field_0xb1ec;
/* 0xB1ED */ s8 field_0xb1ed;
/* 0xB1EE */ u8 field_0xB1EE[0xB1EF - 0xB1EE];
/* 0xB1EF */ s8 field_0xb1ef;
/* 0xB1F0 */ s8 field_0xb1f0;
/* 0xB1F1 */ u8 field_0xb1f1;
/* 0xB1F2 */ u8 field_0xb1f2[0xb1f8 - 0xB1F2];
};
STATIC_ASSERT(sizeof(obj_brg_class) == 0xb1f8);
struct br_s {
public:
/* 80BC1F54 */ ~br_s();
/* 80BC2000 */ br_s();
};
#endif /* D_A_OBJ_BRG_H */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -768,7 +768,7 @@ void daArrow_c::arrowShooting() {
}
if (mArrowType == 2) {
field_0x688.SetAtMtrl(04);
field_0x688.SetAtMtrl(dCcD_MTRL_LIGHT);
field_0x688.OnAtNoHitMark();
} else {
if (mArrowType == 4) {
-3
View File
@@ -11,8 +11,6 @@
// Types:
//
struct request_of_phase_process_class {};
struct mDoLib_clipper {
static u8 mClipper[92];
static f32 mSystemFar;
@@ -303,7 +301,6 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__8dCcD_Sph[36];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
+2 -2
View File
@@ -330,7 +330,7 @@ void daNbomb_c::tgHitCallback(dCcD_GObjInf* i_hitObj) {
procCarryInit();
onStateFlg0(FLG0_SET_HOOKSHOT_OFFSET);
} else if (i_hitObj->ChkAtType(0x200)) {
if (i_hitObj->GetAtMtrl() == 3 && !checkStateCarry() && !checkStateExplode() &&
if (i_hitObj->GetAtMtrl() == dCcD_MTRL_WIND && !checkStateCarry() && !checkStateExplode() &&
fopAcM_GetParam(this) != PRM_FLOWER_BOMB)
{
cLib_addCalcPos(&field_0xc20, *i_hitObj->GetAtVecP() * 2.0f, 0.5f, 10.0f, 1.0f);
@@ -340,7 +340,7 @@ void daNbomb_c::tgHitCallback(dCcD_GObjInf* i_hitObj) {
onStateFlg0(FLG0_BOMB_HIT);
}
if (i_hitObj->GetAtMtrl() == 2) {
if (i_hitObj->GetAtMtrl() == dCcD_MTRL_ICE) {
setFreeze();
}
}
-3
View File
@@ -10,8 +10,6 @@
// Types:
//
struct request_of_phase_process_class {};
struct csXyz {};
struct mDoMtx_stack_c {
@@ -582,7 +580,6 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" u8 item_info__10dItem_data[1020 + 4 /* padding */];
+1 -1
View File
@@ -854,7 +854,7 @@ static int daE_ARROW_Create(fopAc_ac_c* i_this) {
a_this->mCcAtSph.SetAtHitCallback(atHit_CB);
if (a_this->mArrowType == ARROW_TYPE_FIRE) {
a_this->mCcAtSph.SetAtMtrl(1);
a_this->mCcAtSph.SetAtMtrl(dCcD_MTRL_FIRE);
}
a_this->mCcAtSph.StartCAt(a_this->current.pos);
+2 -2
View File
@@ -2044,10 +2044,10 @@ static cPhs__Step daE_BA_Create(fopAc_ac_c* i_this) {
_this->mSph.SetStts(&_this->mStts);
if (_this->mType == e_ba_class::TYPE_FIRE) {
_this->mSph.SetAtType(0x100);
_this->mSph.SetAtMtrl(1);
_this->mSph.SetAtMtrl(dCcD_MTRL_FIRE);
} else if (_this->mType == e_ba_class::TYPE_ICE) {
_this->mSph.SetAtType(0x100);
_this->mSph.SetAtMtrl(2);
_this->mSph.SetAtMtrl(dCcD_MTRL_ICE);
}
_this->mAcch.Set(fopAcM_GetPosition_p(_this), fopAcM_GetOldPosition_p(_this), _this,
+1 -1
View File
@@ -1868,7 +1868,7 @@ s32 daE_FZ_c::create() {
mAtSph.SetAtSpl(dCcG_At_Spl_UNK_1);
setActionMode(ACT_ROLLMOVE,0);
} else {
mAtSph.SetAtMtrl(2);
mAtSph.SetAtMtrl(dCcD_MTRL_ICE);
mRadiusBase = 1.0f;
cM_rnd() < 0.5f ? setActionMode(ACT_WAIT,0) : setActionMode(ACT_MOVE,0);
}
+1 -1
View File
@@ -1072,7 +1072,7 @@ s32 daE_FZ_c::create() {
mAtSph.SetAtSpl(dCcG_At_Spl_UNK_1);
setActionMode(ACT_ROLLMOVE,0);
} else {
mAtSph.SetAtMtrl(2);
mAtSph.SetAtMtrl(dCcD_MTRL_ICE);
mRadiusBase = 1.0f;
cM_rnd() < 0.5f ? setActionMode(ACT_WAIT,0) : setActionMode(ACT_MOVE,0);
}
+4 -2
View File
@@ -1695,7 +1695,8 @@ extern "C" asm void __dt__8cM3dGAabFv() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm br_s::~br_s() {
extern "C" asm void __dt__4br_sFv() {
// asm br_s::~br_s() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_brg/d_a_obj_brg/__dt__4br_sFv.s"
}
@@ -1705,7 +1706,8 @@ asm br_s::~br_s() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm br_s::br_s() {
extern "C" asm void __ct__4br_sFv() {
// asm br_s::br_s() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_brg/d_a_obj_brg/__ct__4br_sFv.s"
}
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More