obj_master_sword wip, fmobj mostly done, obj_usaku OK, some BG doc (#1897)

* obj_master_sword work, fix tag_chgrestart

* fmobj mostly done

* some bg documentation

* d_a_obj_usaku OK

* remove asm
This commit is contained in:
TakaRikka
2023-08-27 01:39:15 -07:00
committed by GitHub
parent 73cdbf5495
commit d369e2908c
47 changed files with 1211 additions and 2054 deletions
+4 -3
View File
@@ -9,12 +9,13 @@ typedef void (*MoveBGActor_SetFunc)(dBgW*, void*, cBgS_PolyInfo const&, bool, cX
class dBgS_MoveBgActor : public fopAc_ac_c {
public:
/* 0x568 */ dBgW* field_0x568;
/* 0x56C */ Mtx field_0x56c;
/* 0x568 */ dBgW* mpBgW;
/* 0x56C */ Mtx mBgMtx;
/* 80078624 */ dBgS_MoveBgActor();
/* 800786C8 */ int MoveBGCreateHeap();
/* 800787BC */ int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32, Mtx*);
/* 800787BC */ int MoveBGCreate(char const* i_arcName, int i_dzb_id,
MoveBGActor_SetFunc i_setFunc, u32 i_heapSize, Mtx* i_bgMtx);
/* 800788DC */ int MoveBGDelete();
/* 80078950 */ int MoveBGExecute();
+59 -45
View File
@@ -2,6 +2,8 @@
#define D_BG_D_BG_W_H
#include "SSystem/SComponent/c_m3d_g_aab.h"
#include "SSystem/SComponent/c_xyz.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "d/bg/d_bg_w_base.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
@@ -24,7 +26,7 @@ public:
class cBgW_RwgElm {
public:
/* 0x0 */ u16 field_0x0;
/* 0x0 */ u16 m_next;
/* 800791C4 */ cBgW_RwgElm();
/* 800791D4 */ virtual ~cBgW_RwgElm();
@@ -46,66 +48,78 @@ public:
/* 0x4 */ cM3dGAab m_aab;
};
struct cBgW_unk_b_data {
/* 0x0 */ u16 field_0x0;
/* 0x2 */ u16 field_0x2;
/* 0x4 */ u16 field_0x4;
struct cBgW_BlkElm {
/* 0x0 */ u16 m_roof_idx;
/* 0x2 */ u16 m_wall_idx;
/* 0x4 */ u16 m_gnd_idx;
}; // Size: 0x6
struct dzb_tri_data {
/* 0x0 */ u16 field_0x0;
/* 0x2 */ u16 field_0x2;
/* 0x4 */ u16 field_0x4;
struct cBgD_Tri_t {
/* 0x0 */ u16 m_vtx_idx0;
/* 0x2 */ u16 m_vtx_idx1;
/* 0x4 */ u16 m_vtx_idx2;
/* 0x6 */ u16 m_id;
/* 0x8 */ u16 m_grp;
}; // Size: 0xA
struct dzb_ti_data {
struct cBgD_Ti_t {
/* 0x0 */ u32 m_info0;
/* 0x4 */ u32 m_info1;
/* 0x8 */ u32 m_info2;
/* 0xC */ u8 field_0xc[0x10 - 0xC];
/* 0xC */ u32 m_passFlag;
};
struct dzb_b_data {
struct cBgD_Blk_t {
/* 0x0 */ u16 field_0x0;
};
struct dzb_tree_data {
/* 0x0 */ u16 field_0x0;
/* 0x2 */ u16 field_0x2;
struct cBgD_Tree_t {
/* 0x0 */ u16 m_flag;
/* 0x2 */ u16 m_parent_id;
/* 0x4 */ u16 m_id[8];
}; // Size: 0x14
struct dzb_g_data {
/* 0x00 */ u8 field_0x0[0x24 - 0x0];
/* 0x24 */ u16 field_0x24;
/* 0x26 */ u16 field_0x26;
/* 0x28 */ u16 field_0x28;
/* 0x2A */ u16 field_0x2a;
/* 0x2C */ u8 field_0x2c[0x2E - 0x2C];
/* 0x2E */ u16 field_0x2e;
struct cBgD_Grp_t {
/* 0x00 */ char* m_name;
/* 0x04 */ cXyz m_scale;
/* 0x10 */ csXyz m_rotation;
/* 0x18 */ cXyz m_translation;
/* 0x24 */ u16 m_parent;
/* 0x26 */ u16 m_next_sibling;
/* 0x28 */ u16 m_first_child;
/* 0x2A */ u16 m_room_id;
/* 0x2C */ u16 m_first_vtx_idx;
/* 0x2E */ u16 m_tree_idx;
/* 0x30 */ u32 m_info;
}; // Size: 0x34
struct cBgD_t {
/* 0x00 */ int m_v_num; // vertex num
/* 0x04 */ Vec* m_v_tbl; // vertex table
/* 0x04 */ cBgD_Vtx_t* m_v_tbl; // vertex table
/* 0x08 */ int m_t_num; // triangle num
/* 0x0C */ dzb_tri_data* m_t_tbl; // triangle table
/* 0x10 */ int m_b_num; // spatial?
/* 0x14 */ dzb_b_data* m_b_tbl;
/* 0x18 */ int m_tree_num; // face group?
/* 0x1C */ dzb_tree_data* m_tree_tbl;
/* 0x20 */ int m_g_num; // string group?
/* 0x24 */ dzb_g_data* m_g_tbl;
/* 0x28 */ int m_ti_num; // surface property?
/* 0x2C */ dzb_ti_data* m_ti_tbl;
/* 0x30 */ int field_0x30;
/* 0x0C */ cBgD_Tri_t* m_t_tbl; // triangle table
/* 0x10 */ int m_b_num;
/* 0x14 */ cBgD_Blk_t* m_b_tbl;
/* 0x18 */ int m_tree_num;
/* 0x1C */ cBgD_Tree_t* m_tree_tbl;
/* 0x20 */ int m_g_num;
/* 0x24 */ cBgD_Grp_t* m_g_tbl;
/* 0x28 */ int m_ti_num;
/* 0x2C */ cBgD_Ti_t* m_ti_tbl;
/* 0x30 */ int mFlags;
};
class cBgW : public dBgW_Base {
public:
enum Flags_e {
MOVE_BG_e = 0x1,
NO_CALC_VTX_e = 0x2,
NO_VTX_TBL_e = 0x10,
GLOBAL_e = 0x20,
CBGW_UNK_FLAG_40 = 0x40,
LOCK_e = 0x80,
};
/* 80079294 */ cBgW();
/* 800793A4 */ void FreeArea();
/* 800793C4 */ void GlobalVtx();
@@ -118,7 +132,7 @@ public:
/* 80079BDC */ void MakeNodeTreeRp(int);
/* 80079CC4 */ void MakeNodeTreeGrpRp(int);
/* 80079DF0 */ void MakeNodeTree();
/* 80079F38 */ bool Set(cBgD_t*, u32, f32 (*)[3][4]);
/* 80079F38 */ bool Set(cBgD_t* pdzb, u32 flags, Mtx* pbase_mtx);
/* 8007A200 */ bool RwgLineCheck(u16, cBgS_LinChk*);
/* 8007A3A0 */ bool LineCheckRp(cBgS_LinChk*, int);
/* 8007A52C */ bool LineCheckGrpRp(cBgS_LinChk*, int, int);
@@ -204,27 +218,27 @@ public:
u32 GetOldInvMtx(Mtx m) { return PSMTXInverse(m_inv_mtx, m); }
MtxP GetBaseMtxP() { return pm_base; }
bool ChkNoCalcVtx() { return field_0x88 & 2; }
bool ChkNoCalcVtx() { return mFlags & NO_CALC_VTX_e; }
bool ChkFlush() { return field_0x91 & 8; }
void SetLock() { field_0x88 |= 0x80; }
void SetLock() { mFlags |= LOCK_e; }
bool ChkRoofRegist() { return field_0x91 & 4;}
public:
/* 0x18 */ MtxP pm_base;
/* 0x18 */ MtxP pm_base; // Model Matrix
/* 0x1C */ Mtx m_inv_mtx;
/* 0x4C */ Mtx field_0x4c;
/* 0x7C */ cXyz field_0x7c;
/* 0x88 */ u8 field_0x88;
/* 0x89 */ u8 field_0x89;
/* 0x4C */ Mtx m_mtx;
/* 0x7C */ cXyz mTransVel;
/* 0x88 */ u8 mFlags;
/* 0x89 */ u8 mNeedsFullTransform;
/* 0x8A */ u8 field_0x8a[6];
/* 0x90 */ u8 field_0x90;
/* 0x90 */ u8 mMoveCounter;
/* 0x91 */ u8 field_0x91;
/* 0x92 */ u16 field_0x92;
/* 0x92 */ u16 m_rootGrpIdx;
/* 0x94 */ cBgW_TriElm* pm_tri;
/* 0x98 */ cBgW_RwgElm* pm_rwg;
/* 0x9C */ cBgD_Vtx_t* pm_vtx_tbl;
/* 0xA0 */ cBgD_t* pm_bgd;
/* 0xA4 */ cBgW_unk_b_data* field_0xa4;
/* 0xA4 */ cBgW_BlkElm* pm_blk;
/* 0xA8 */ cBgW_GrpElm* pm_grp;
/* 0xAC */ cBgW_NodeTree* pm_node_tree;
};
+1
View File
@@ -140,6 +140,7 @@ enum fopAcM_CARRY {
/* 0x04 */ fopAcM_CARRY_SIDE = 4,
/* 0x08 */ fopAcM_CARRY_TYPE_8 = 8,
/* 0x10 */ fopAcM_CARRY_LIGHT = 16, // guess based on context
/* 0x30 */ fopAcM_CARRY_UNK_30 = 0x30,
};
inline u32 fopAcM_CheckCarryType(fopAc_ac_c* actor, fopAcM_CARRY type) {
+1 -1
View File
@@ -90,7 +90,7 @@ public:
/* 0x5A8 */ J3DModel* field_0x5a8[2][2];
/* 0x5B8 */ mDoExt_btkAnm* field_0x5b8[2][2];
/* 0x5C8 */ mDoExt_brkAnm* field_0x5c8[2][2];
/* 0x5D8 */ dBgW* mpBgW;
/* 0x5D8 */ dBgW* mpBgW2;
/* 0x5DC */ dCcD_Stts mStts;
/* 0x618 */ dCcD_Tri mTris[4];
/* 0xB88 */ dCcD_Cyl mCyl;
@@ -1,6 +1,21 @@
#ifndef D_A_OBJ_FMOBJ_H
#define D_A_OBJ_FMOBJ_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class dBgW;
class obj_fmobj_class : public fopAc_ac_c {
public:
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ u8 field_0x570;
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ s16 field_0x578;
/* 0x57A */ u8 field_0x57A[0x57E - 0x57A];
/* 0x57E */ s16 field_0x57e[2];
/* 0x582 */ u8 field_0x582[0x588 - 0x582];
/* 0x588 */ Mtx mBgMtx;
/* 0x5B8 */ dBgW* mpBgW;
};
#endif /* D_A_OBJ_FMOBJ_H */
@@ -1,6 +1,6 @@
#ifndef D_A_OBJ_MASTER_SWORD_H
#define D_A_OBJ_MASTER_SWORD_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#endif /* D_A_OBJ_MASTER_SWORD_H */
@@ -1,6 +1,18 @@
#ifndef D_A_OBJ_USAKU_H
#define D_A_OBJ_USAKU_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class dBgW;
class obj_usaku_class : public fopAc_ac_c {
public:
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ u8 field_0x570;
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ u8 field_0x578[0x580 - 0x578];
/* 0x580 */ Mtx mBgMtx;
/* 0x5B0 */ dBgW* mpBgW;
};
#endif /* D_A_OBJ_USAKU_H */
@@ -12,7 +12,7 @@ public:
/* 80D568B8 */ s32 execute();
/* 80D56A84 */ s32 _delete();
/* 0x0568 */ cXyz field_0x568[4];
/* 0x0568 */ cXyz mVertices[4];
};
STATIC_ASSERT(sizeof(daTagChgRestart_c) == 0x598);