Merge pull request #376 from TakaRikka/lv4floor

d_a_obj_lv4floor OK, d_a_b_oh / d_a_dshutter mostly done
This commit is contained in:
hatal175
2023-07-19 16:11:46 +03:00
committed by GitHub
19 changed files with 2046 additions and 1603 deletions
+13 -13
View File
@@ -4,10 +4,10 @@
#include "JSystem/JMath/JMATrigonometric.h"
#include "dolphin/types.h"
s16 cM_rad2s(float);
s16 cM_rad2s(float rad);
u16 U_GetAtanTable(float, float);
s16 cM_atan2s(float, float);
float cM_atan2f(float, float);
s16 cM_atan2s(float y, float x);
float cM_atan2f(float y, float x);
void cM_initRnd(int, int, int);
float cM_rnd(void);
float cM_rndF(float);
@@ -17,24 +17,24 @@ float cM_rnd2(void);
float cM_rndF2(float);
float cM_rndFX2(float);
inline f32 cM_scos(s16 s) {
return JMASCos(s);
inline f32 cM_scos(s16 x) {
return JMASCos(x);
}
inline f32 cM_ssin(s16 s) {
return JMASSin(s);
inline f32 cM_ssin(s16 x) {
return JMASSin(x);
}
inline s16 cM_deg2s(f32 val) {
return val * 182.04445f;
inline s16 cM_deg2s(f32 deg) {
return deg * 182.04445f;
}
inline s16 i_cM_deg2s(f32 val) {
return val;
inline s16 i_cM_deg2s(f32 deg) {
return deg;
}
inline f32 cM_fsin(f32 v) {
return JMASSin(cM_rad2s(v));
inline f32 cM_fsin(f32 x) {
return JMASSin(cM_rad2s(x));
}
inline f32 cM_sht2d(f32 v) {
+18 -2
View File
@@ -223,7 +223,10 @@ public:
/* 0x1C */ s16 field_0x1c;
}; // Size: 0x20
struct dStage_MemoryMap_c {};
struct dStage_MemoryMap_c {
/* 0x0 */ int m_num;
/* 0x4 */ u32* field_0x4;
};
struct dPath;
struct dStage_dPath_c {
@@ -300,7 +303,15 @@ struct dStage_Elst_c {
/* 0x4 */ unkData* field_0x4;
};
struct dStage_MemoryConfig_c {};
struct dStage_MemoryConfig_data {
/* 0x0 */ u8 m_roomNo;
/* 0x1 */ u8 m_blockID;
}; // Size: 0x2
struct dStage_MemoryConfig_c {
/* 0x0 */ int m_num;
/* 0x4 */ dStage_MemoryConfig_data* field_0x4;
};
struct dStage_DMap_c {
// DMAP
@@ -791,6 +802,11 @@ public:
static u32 getProcID() { return mProcID; }
static void setStatusProcID(int i_roomNo, unsigned int i_id) { mStatus[i_roomNo].mProcID = i_id; }
static int getStatusProcID(int i_roomNo) { return mStatus[i_roomNo].mProcID; }
static void setMemoryBlockID(int i_roomNo, int i_blockID) {
mStatus[i_roomNo].mMemBlockID = i_blockID;
}
static void setFileList2(int i_roomNo, dStage_FileList2_dt_c* list) {
mStatus[i_roomNo].mRoomDt.mFileList2Info = list;
}
+13 -13
View File
@@ -8,40 +8,40 @@
class dDrawPath_c : public dDlst_base_c {
public:
struct line_class {
/* 0x00 */ u8 unk0;
/* 0x01 */ u8 unk1;
/* 0x02 */ u8 unk2;
/* 0x03 */ u8 unk3;
/* 0x04 */ u16* unk4;
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x02 */ u8 mDataNum;
/* 0x03 */ u8 field_0x3;
/* 0x04 */ u16* mpData;
}; // Size: 0x8
struct poly_class {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x04 */ u16* field_0x4;
/* 0x01 */ u8 mDataNum;
/* 0x04 */ u16* mpData;
}; // Size: 0x8
struct group_class {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x02 */ u8 field_0x2;
/* 0x02 */ u8 mLineNum;
/* 0x03 */ u8 field_0x3;
/* 0x04 */ u8 field_0x4;
/* 0x04 */ u8 mPolyNum;
/* 0x08 */ dDrawPath_c::line_class* mpLine;
/* 0x0C */ u8 field_0xc[4];
/* 0x10 */ dDrawPath_c::poly_class* mpPoly;
}; // Size: 0x14
struct floor_class {
/* 0x0 */ s8 field_0x0;
/* 0x1 */ u8 field_0x1;
/* 0x0 */ s8 mFloorNo;
/* 0x1 */ u8 mGroupNum;
/* 0x4 */ dDrawPath_c::group_class* mpGroup;
}; // Size: 0x8
struct room_class {
/* 0x0 */ u8 field_0x0;
/* 0x0 */ u8 mFloorNum;
/* 0x4 */ dDrawPath_c::floor_class* mpFloor;
/* 0x8 */ void* field_0x8;
/* 0x8 */ f32* mpFloatData; // might be Vec or cXyz instead
};
/* 8003CB00 */ void rendering(dDrawPath_c::group_class const*);
+156 -1
View File
@@ -1,6 +1,161 @@
#ifndef D_MAP_D_MAP_PATH_FMAP_H
#define D_MAP_D_MAP_PATH_FMAP_H
#include "dolphin/types.h"
#include "d/map/d_map_path.h"
#include "d/d_tresure.h"
#include "d/d_stage.h"
class fmpTresTypeGroupData_c {
public:
fmpTresTypeGroupData_c() {
mpTresData = NULL;
mpNext = NULL;
}
/* 8003EB70 */ ~fmpTresTypeGroupData_c();
void setTypeGroupNo(u8 i_no) { mTypeGroupNo = i_no; }
void setNextData(fmpTresTypeGroupData_c* i_next) { mpNext = i_next; }
void setTresData(const dTres_c::data_s* i_data) { mpTresData = i_data; }
const dTres_c::data_s* getTresData() { return mpTresData; }
fmpTresTypeGroupData_c* getNextData() { return mpNext; }
/* 0x0 */ const dTres_c::data_s* mpTresData;
/* 0x0 */ fmpTresTypeGroupData_c* mpNext;
/* 0x8 */ u8 mTypeGroupNo;
}; // Size: 0xC
class fmpTresTypeGroupDataList_c {
public:
/* 8003D790 */ void addTypeGroupData(u8, dTres_c::data_s const*);
/* 8003EB10 */ ~fmpTresTypeGroupDataList_c();
/* 8003EC90 */ fmpTresTypeGroupDataList_c();
/* 0x0 */ fmpTresTypeGroupData_c* mpTypeGroupDataHead;
/* 0x4 */ fmpTresTypeGroupData_c* mpNextData;
};
class fmpTresTypeGroupDataListAll_c {
public:
void addTypeGroupData(u8 i_typeGroupNo, const dTres_c::data_s* i_data) {
mpTypeGroupData[i_typeGroupNo].addTypeGroupData(i_typeGroupNo, i_data);
}
/* 0x0 */ fmpTresTypeGroupDataList_c mpTypeGroupData[17];
};
class dMenu_Fmap_data_c {
public:
dTres_c::list_class* getTresure() { return mp_tresure; }
f32 getFilelist2MinX() { return m_fileList2->mLeftRmX; }
f32 getFilelist2MinZ() { return m_fileList2->mInnerRmZ; }
f32 getFilelist2MaxX() { return m_fileList2->mRightRmX; }
f32 getFilelist2MaxZ() { return m_fileList2->mFrontRmZ; }
void setFileList2(dStage_FileList2_dt_c* i_fileList) { m_fileList2 = i_fileList; }
void setTresure(dTres_c::list_class* i_list) { mp_tresure = i_list; }
void setMapPath(dDrawPath_c::room_class* i_path) { mp_mapPath = i_path; }
/* 0x0 */ dTres_c::list_class* mp_tresure;
/* 0x4 */ dStage_FileList2_dt_c* m_fileList2;
/* 0x8 */ dDrawPath_c::room_class* mp_mapPath;
/* 0xC */ void* mp_dzsData;
};
class dMenu_Fmap_stage_data_c;
class dMenu_Fmap_room_data_c {
public:
/* 8003D818 */ bool isArrival();
/* 8003D868 */ void buildTresTypeGroup(int, int, int);
/* 8003D92C */ void buildFmapRoomData(int, int, f32, f32, f32, f32);
f32 getFileList2MinX() { return mp_fmapData->getFilelist2MinX(); }
f32 getFileList2MinZ() { return mp_fmapData->getFilelist2MinZ(); }
f32 getFileList2MaxX() { return mp_fmapData->getFilelist2MaxX(); }
f32 getFileList2MaxZ() { return mp_fmapData->getFilelist2MaxZ(); }
dMenu_Fmap_room_data_c* getNextData() { return mp_nextData; }
int getRoomNo() { return m_roomNo; }
/* 0x00 */ dMenu_Fmap_data_c* mp_fmapData;
/* 0x04 */ fmpTresTypeGroupDataListAll_c* mp_fmpTresTypeGroupDataListAll;
/* 0x08 */ dMenu_Fmap_room_data_c* mp_nextData;
/* 0x0C */ dMenu_Fmap_stage_data_c* mp_parentStage;
/* 0x10 */ u8 m_roomNo;
};
class dMenu_Fmap_stage_arc_data_c {
public:
u8 getVisitedRoomSaveTableNo() { return mVisitedRoomSaveTableNo; }
/* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 mSaveTableNo;
/* 0x2 */ u8 mVisitedRoomSaveTableNo;
};
class dMenu_Fmap_stage_data_c {
public:
/* 8003D95C */ bool isArrival();
/* 8003D9D8 */ int buildFmapStageData(int, f32, f32);
dMenu_Fmap_stage_arc_data_c* getStageArc() { return mpStageArc; }
dMenu_Fmap_stage_data_c* getNextData() { return mpNextData; }
/* 0x00 */ char name[8];
/* 0x08 */ dMenu_Fmap_stage_arc_data_c* mpStageArc;
/* 0x0C */ dMenu_Fmap_room_data_c* mp_roomTop;
/* 0x10 */ dMenu_Fmap_stage_data_c* mpNextData;
/* 0x14 */ f32 m_offsetX;
/* 0x18 */ f32 m_offsetZ;
/* 0x1C */ f32 m_stageMinX;
/* 0x20 */ f32 m_stageMinZ;
/* 0x24 */ f32 m_stageMaxX;
/* 0x28 */ f32 m_stageMaxZ;
/* 0x2C */ int m_stageCntNo;
};
class dMenu_Fmap_region_data_c {
public:
/* 8003DB48 */ dMenu_Fmap_stage_data_c* getMenuFmapStageData(int);
/* 8003DB70 */ void getPointStagePathInnerNo(f32, f32, int, int*, int*);
/* 8003DEE0 */ void buildFmapRegionData(int);
/* 0x00 */ dMenu_Fmap_stage_data_c* mpMenuFmapStageDataTop;
/* 0x04 */ dMenu_Fmap_region_data_c* mpNextData;
/* 0x08 */ f32 mRegionOffsetX;
/* 0x0C */ f32 mRegionOffsetZ;
/* 0x10 */ f32 mRegionMinX;
/* 0x14 */ f32 mRegionMaxX;
/* 0x18 */ f32 mRegionMinZ;
/* 0x1C */ f32 mRegionMaxZ;
/* 0x20 */ int mRegionNo;
};
struct dMenu_Fmap_world_data_c {
/* 8003E028 */ void create(dMenu_Fmap_region_data_c*);
/* 8003E04C */ void buildFmapWorldData();
/* 0x00 */ dMenu_Fmap_region_data_c* mp_fmapRegionData;
/* 0x04 */ f32 m_worldMinX;
/* 0x08 */ f32 m_worldMinZ;
/* 0x0C */ f32 m_worldMaxX;
/* 0x10 */ f32 m_worldMaxZ;
};
struct dMenuFmapIconPointer_c {
/* 8003E114 */ void init(dMenu_Fmap_region_data_c*, dMenu_Fmap_stage_data_c*, u8, int, int);
/* 8003E1C0 */ void getFirstData();
/* 8003E2BC */ void getData();
/* 8003E350 */ void getFirstRoomData();
/* 8003E37C */ void getNextRoomData();
/* 8003E3A4 */ void getNextStageData();
/* 8003E3D8 */ void getNextData();
/* 8003E490 */ void nextData();
/* 8003E510 */ void getValidData();
};
struct dMenuFmapIconDisp_c {
/* 8003E578 */ void getPosition(int*, int*, f32*, f32*, dTres_c::data_s const**);
/* 8003E6E8 */ void isDrawDisp();
};
#endif /* D_MAP_D_MAP_PATH_FMAP_H */
+2
View File
@@ -91,6 +91,8 @@ class dBgS_WtrChk;
class fopAcM_wt_c {
public:
static dBgS_WtrChk* getWaterCheck() { return (dBgS_WtrChk*)&mWaterCheck; }
static f32 getWaterY() { return mWaterY[0]; }
static bool waterCheck(const cXyz*);
static u8 mWaterCheck[84 + 4 /* padding */];
static f32 mWaterY[1 + 1 /* padding */];
+3 -2
View File
@@ -70,7 +70,7 @@ public:
/* 0x4738 */ int field_0x4738;
/* 0x4738 */ u8 field_0x473c;
/* 0x4740 */ f32 field_0x4740;
/* 0x4744 */ u8 field_0x4744;
/* 0x4744 */ s8 field_0x4744;
/* 0x4745 */ u8 field_0x4745;
/* 0x4748 */ u32 field_0x4748;
/* 0x474C */ u8 field_0x474c;
@@ -158,7 +158,8 @@ public:
/* 0x5D08 */ s16 field_0x5d08;
/* 0x5D0A */ s16 field_0x5d0a;
/* 0x5D0C */ s16 field_0x5d0c;
/* 0x5D0E */ u8 field_0x5d0e[0x5d11 - 0x5d0e];
/* 0x5D0E */ u8 field_0x5d0e[0x5d10 - 0x5d0e];
/* 0x5D10 */ u8 field_0x5d10;
/* 0x5D11 */ s8 field_0x5d11;
/* 0x5D12 */ s8 field_0x5d12;
/* 0x5D14 */ f32 field_0x5d14;
+75 -1
View File
@@ -1,6 +1,80 @@
#ifndef D_A_B_OH_H
#define D_A_B_OH_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/cc/d_cc_d.h"
#include "d/cc/d_cc_uty.h"
class daB_OH_HIO_c {
public:
/* 8061B72C */ daB_OH_HIO_c();
/* 8061D93C */ virtual ~daB_OH_HIO_c();
/* 0x4 */ s8 field_0x4;
/* 0x8 */ f32 mModelSize;
/* 0xC */ f32 mLength;
};
class b_oh_class : public fopEn_enemy_c {
public:
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ mDoExt_McaMorf* mpMorf;
/* 0x05B8 */ mDoExt_invisibleModel mInvisModel;
/* 0x05C0 */ mDoExt_btkAnm* mpBtk;
/* 0x05C4 */ mDoExt_brkAnm* mpBrk;
/* 0x05C8 */ int field_0x5c8;
/* 0x05CC */ s16 field_0x5cc;
/* 0x05CE */ s16 mAction;
/* 0x05D0 */ s16 mActionPhase;
/* 0x05D2 */ u8 field_0x5D2[0x05E2 - 0x05D2];
/* 0x05E2 */ s16 mAngleToPlayer;
/* 0x05E4 */ f32 mDistToPlayer;
/* 0x05E8 */ u8 field_0x5E8[0x05EC - 0x05E8];
/* 0x05EC */ s16 mTimers[4];
/* 0x05F4 */ s16 field_0x5f4;
/* 0x05F6 */ s16 field_0x5f6;
/* 0x05F8 */ s16 field_0x5f8;
/* 0x05FA */ s16 field_0x5fa;
/* 0x05FC */ f32 field_0x5fc;
/* 0x0600 */ f32 field_0x600;
/* 0x0604 */ f32 field_0x604;
/* 0x0608 */ f32 field_0x608;
/* 0x060C */ f32 field_0x60c;
/* 0x0610 */ f32 field_0x610;
/* 0x0614 */ f32 field_0x614;
/* 0x0618 */ f32 mTentacleLength;
/* 0x061C */ csXyz field_0x61c[30];
/* 0x06D0 */ csXyz field_0x6d0[30];
/* 0x0784 */ csXyz field_0x784[30];
/* 0x0838 */ csXyz field_0x838[30];
/* 0x08EC */ f32 field_0x8ec[30];
/* 0x0964 */ f32 field_0x964[30];
/* 0x09DC */ f32 field_0x9dc[30];
/* 0x0A54 */ u8 field_0xa54[0xA58 - 0xA54];
/* 0x0A58 */ cXyz field_0xa58[31];
/* 0x0BCC */ csXyz field_0xbcc[31];
/* 0x0C86 */ u8 field_0xC86[0x0C88 - 0x0C86];
/* 0x0C88 */ int field_0xc88;
/* 0x0C8C */ f32 field_0xc8c;
/* 0x0C90 */ f32 field_0xc90;
/* 0x0C94 */ s16 field_0xc94;
/* 0x0C96 */ s16 field_0xc96;
/* 0x0C98 */ s16 field_0xc98;
/* 0x0C9A */ u8 field_0xC9A[0x0C9C - 0x0C9A];
/* 0x0C9C */ f32 field_0xc9c;
/* 0x0CA0 */ s16 field_0xca0;
/* 0x0CA2 */ s16 field_0xca2;
/* 0x0CA4 */ s16 field_0xca4;
/* 0x0CA6 */ u8 field_0xCA6[0x0CA8 - 0x0CA6];
/* 0x0CA8 */ int field_0xca8;
/* 0x0CAC */ f32 field_0xcac;
/* 0x0CB0 */ dCcD_Stts mCcStts;
/* 0x0CEC */ dCcD_Sph mColliders[15];
/* 0x1F34 */ dCcU_AtInfo mAtInfo;
/* 0x1F58 */ u8 field_0x1F58[0x1F80 - 0x1F58];
/* 0x1F80 */ u32 field_0x1f80;
/* 0x1F84 */ u8 field_0x1F84[0x1F86 - 0x1F84];
/* 0x1F86 */ u8 field_0x1f86;
};
#endif /* D_A_B_OH_H */
+74 -1
View File
@@ -1,6 +1,79 @@
#ifndef D_A_DSHUTTER_H
#define D_A_DSHUTTER_H
#include "dolphin/types.h"
#include "d/bg/d_bg_s_movebg_actor.h"
#include "d/com/d_com_inf_game.h"
#include "f_op/f_op_actor_mng.h"
class daDsh_c : public dBgS_MoveBgActor {
public:
class action_c {
public:
typedef int (daDsh_c::*actionFunc)();
/* action_c(actionFunc i_initFunc, actionFunc i_execFunc) {
mInitFunc = i_initFunc;
mExecuteFunc = i_execFunc;
} */
actionFunc& getInit() { return mInitFunc; }
actionFunc& getExecute() { return mExecuteFunc; }
/* 0x0 */ actionFunc mInitFunc;
/* 0xC */ actionFunc mExecuteFunc;
};
/* 80467498 */ ~daDsh_c();
/* 80467694 */ void setMtx();
/* 80467708 */ void setAction(daDsh_c::action_c*);
/* 8046772C */ int callInit();
/* 8046777C */ int callExecute();
/* 804677D4 */ int initOpenWait();
/* 804677E4 */ int executeOpenWait();
/* 80467840 */ int initOpen();
/* 80467988 */ int executeOpen();
/* 80467A64 */ int initCloseWait();
/* 80467A80 */ int executeCloseWait();
/* 80467ADC */ int initClose();
/* 80467B04 */ int executeClose();
/* 8046751C */ virtual int CreateHeap();
/* 80467640 */ virtual int Execute(f32 (**)[3][4]);
/* 8046759C */ virtual int Draw();
inline int create();
u8 getType() { return (fopAcM_GetParam(this) >> 8) & 0xF; }
int getSw() { return fopAcM_GetParam(this) & 0xFF; }
u8 getOpenTiltTime() { return 0; }
f32 getOpenAccel() { return OPEN_ACCEL; }
f32 getOpenSpeed() { return OPEN_SPEED; }
f32 getOpenBoundSpeed() { return OPEN_BOUND_SPEED; }
f32 getOpenBoundRatio() { return OPEN_BOUND_RATIO; }
u8 getCloseTiltTime() { return 0; }
f32 getCloseAccel() { return CLOSE_ACCEL; }
f32 getCloseSpeed() { return CLOSE_SPEED; }
f32 getCloseBoundSpeed() { return CLOSE_BOUND_SPEED; }
f32 getCloseBoundRatio() { return CLOSE_BOUND_RATIO; }
static f32 OPEN_SIZE;
static f32 OPEN_ACCEL;
static f32 OPEN_SPEED;
static f32 OPEN_BOUND_SPEED;
static f32 OPEN_BOUND_RATIO;
static f32 CLOSE_ACCEL;
static f32 CLOSE_SPEED;
static f32 CLOSE_BOUND_SPEED;
static f32 CLOSE_BOUND_RATIO;
/* 0x5A0 */ dComIfG_resLoader_c mResLoader;
/* 0x5B0 */ J3DModel* mpModel;
/* 0x5B4 */ action_c* mpAction;
/* 0x5B8 */ s16 mTiltTime;
/* 0x5BA */ u8 mSw;
/* 0x5BB */ u8 mType;
};
#endif /* D_A_DSHUTTER_H */
@@ -1,6 +1,39 @@
#ifndef D_A_OBJ_LV4FLOOR_H
#define D_A_OBJ_LV4FLOOR_H
#include "dolphin/types.h"
#include "d/bg/d_bg_s_movebg_actor.h"
#include "f_op/f_op_actor_mng.h"
class daObjLv4Floor_c : public dBgS_MoveBgActor {
public:
enum Action_e {
MODE_WAIT_e,
MODE_MOVE_e,
MODE_DEAD_e,
};
/* 80C677F8 */ void initBaseMtx();
/* 80C67834 */ void setBaseMtx();
/* 80C67944 */ int create1st();
/* 80C67A30 */ void action();
/* 80C67AD4 */ void mode_wait();
/* 80C67B28 */ void mode_init_move();
/* 80C67B40 */ void mode_move();
/* 80C67BA8 */ void mode_init_dead();
/* 80C67BB4 */ void mode_dead();
/* 80C678D4 */ virtual int CreateHeap();
/* 80C678B0 */ virtual int Create();
/* 80C679E4 */ virtual int Execute(f32 (**)[3][4]);
/* 80C67BD4 */ virtual int Draw();
/* 80C67C78 */ virtual int Delete();
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8) & 0xFF; }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ f32 mMoveYPos;
/* 0x5B0 */ u8 mAction;
};
#endif /* D_A_OBJ_LV4FLOOR_H */