d_s_room / d_a_bg first pass

This commit is contained in:
TakaRikka
2023-01-03 17:43:38 -08:00
parent ba08966f58
commit f1518a9a93
23 changed files with 973 additions and 707 deletions
@@ -368,6 +368,9 @@ public:
calcTransform(getFrame(), param_0, pSRTInfo);
}
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
u16 getUpdateMaterialNum() const { return field_0x14 / 3; }
private:
/* 0x0C */ int field_0xc;
/* 0x10 */ int field_0x10;
@@ -379,7 +382,7 @@ private:
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
/* 0x28 */ u8 mUpdateTexMtxID[4];
/* 0x2C */ u16 mUpdateMaterialID[2];
/* 0x2C */ u16* mUpdateMaterialID;
/* 0x30 */ JUTNameTab field_0x30;
/* 0x40 */ int field_0x40;
/* 0x44 */ u16 field_0x44;
@@ -427,6 +430,12 @@ public:
/* 8032BD9C */ virtual ~J3DAnmTevRegKey();
/* 8032BE24 */ virtual s32 getKind() const;
u16 getCRegUpdateMaterialNum() const { return mCRegUpdateMaterialNum; }
u16 getKRegUpdateMaterialNum() const { return mKRegUpdateMaterialNum; }
u16 getCRegUpdateMaterialID(u16 idx) const { return mCRegUpdateMaterialID[idx]; }
u16 getKRegUpdateMaterialID(u16 idx) const { return mKRegUpdateMaterialID[idx]; }
private:
/* 0x0C */ u16 mCRegUpdateMaterialNum;
/* 0x0E */ u16 mKRegUpdateMaterialNum;
@@ -438,8 +447,10 @@ private:
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ u16 field_0x1e;
/* 0x20 */ u16 mCRegUpdateMaterialID[20];
/* 0x34 */ u16 mKRegUpdateMaterialID[20];
/* 0x20 */ u16* mCRegUpdateMaterialID;
/* 0x24 */ u8 field_0x24[0x34 - 0x24];
/* 0x34 */ u16* mKRegUpdateMaterialID;
/* 0x38 */ u8 field_0x38[0x48 - 0x38];
/* 0x48 */ void* field_0x48;
/* 0x4C */ void* field_0x4c;
/* 0x50 */ int field_0x50;
@@ -32,6 +32,8 @@ public:
J3DTexture* getTexture() const { return mTexture; }
JUTNameTab* getTextureName() const { return mTextureName; }
JUTNameTab* getMaterialName() const { return mMaterialName; }
u16 getMaterialNum() const { return mMaterialNum; }
bool isLocked() const { return field_0x1c == 1; }
@@ -22,6 +22,7 @@ public:
/* 8032617C */ virtual ~J3DModelData();
J3DMaterialTable& getMaterialTable() { return mMaterialTable; }
JUTNameTab* getMaterialName() const { return mMaterialTable.getMaterialName(); }
J3DVertexData& getVertexData() { return mVertexData; }
u16 getShapeNum() const { return mShapeTable.getShapeNum(); }
u16 getMaterialNum() const { return mMaterialTable.getMaterialNum(); }
@@ -63,6 +63,8 @@ public:
u32 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); }
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
public:
/* 0x04 */ J3DMaterial* mNext;
+10 -7
View File
@@ -97,16 +97,19 @@ public:
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; }
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
bool getNBTFlag() const { return mHasNBT; }
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
inline J3DMaterial* getMaterial() const { return mMaterial; }
inline u32 getIndex() const { return mIndex; }
inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
inline u32 getMtxGroupNum() const { return mMtxGroupNum; }
inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
J3DMaterial* getMaterial() const { return mMaterial; }
u32 getIndex() const { return mIndex; }
u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
u32 getMtxGroupNum() const { return mMtxGroupNum; }
J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
Vec* getMin() { return &mMin; }
Vec* getMax() { return &mMax; }
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
+5
View File
@@ -17,6 +17,10 @@ class dBgW_Base : public cBgW_BgId {
public:
enum PushPullLabel {};
enum PRIORITY {
PRIORITY_0,
};
typedef s32 (*PushPull_CallBack)(cBgS_PolyInfo const&, fopAc_ac_c*, s16,
dBgW_Base::PushPullLabel);
@@ -91,6 +95,7 @@ public:
bool ChkPushPullOk() const { return m_pushPull_Ok; }
void SetRoomId(int id) { m_roomId = id; }
bool ChkPriority(int prio) { return m_priority == prio; }
void SetPriority(PRIORITY priority) { m_priority = priority; }
private:
/* 0x08 */ u8 m_priority;
+29 -2
View File
@@ -825,6 +825,7 @@ BOOL dComIfGs_isEventBit(u16 i_flag);
int dComIfGs_isItemFirstBit(u8 i_no);
u16 dComIfGs_getRupee();
static u16 dComIfGs_getLife();
s8 dComIfGs_BossLife_public_Get();
inline void dComIfGs_init() {
g_dComIfG_gameInfo.info.init();
@@ -1523,6 +1524,10 @@ inline void dComIfGs_setMemoryToCard(u8* i_saveData, int i_dataNum) {
g_dComIfG_gameInfo.info.memory_to_card((char*)i_saveData, i_dataNum);
}
inline int dComIfGs_createZone(int roomNo) {
return g_dComIfG_gameInfo.info.createZone(roomNo);
}
void dComIfGp_setSelectItem(int index);
s32 dComIfGp_offHeapLockFlag(int flag);
@@ -1544,6 +1549,7 @@ int dComIfGp_getSelectItemMaxNum(int index);
void dComIfGp_mapShow();
void dComIfGp_mapHide();
bool dComIfGp_checkMapShow();
void dComIfGp_ret_wp_set(s8);
s32 dComIfGp_setHeapLockFlag(u8 flag);
u8 dComIfGp_world_dark_get();
JKRExpHeap* dComIfGp_getSubHeap2D(int flag);
@@ -1567,6 +1573,7 @@ static u8 dComIfGp_getDoStatus();
static u8 dComIfGp_getRStatus();
static dAttCatch_c* dComIfGp_att_getCatghTarget();
static void dComIfGp_setBottleStatus(u8 param_0, u8 param_1);
bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle);
inline bool i_dComIfGp_checkPlayerStatus0(int param_0, u32 flag) {
return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 0, flag);
@@ -2347,6 +2354,10 @@ inline s32 dComIfGp_roomControl_getStayNo() {
return dStage_roomControl_c::getStayNo();
}
inline s32 dComIfGp_roomControl_getZoneNo(int i_roomNo) {
return dStage_roomControl_c::getZoneNo(i_roomNo);
}
inline void dComIfGp_roomControl_initZone() {
g_dComIfG_gameInfo.play.getRoomControl()->initZone();
}
@@ -2375,12 +2386,28 @@ inline void dComIfGp_roomControl_setStayNo(int stayNo) {
g_dComIfG_gameInfo.play.getRoomControl()->setStayNo(stayNo);
}
inline void dComIfGp_roomControl_setZoneNo(int roomNo, int zoneNo) {
g_dComIfG_gameInfo.play.getRoomControl()->setZoneNo(roomNo, zoneNo);
}
inline dKy_tevstr_c* dComIfGp_roomControl_getTevStr(int i_roomNo) {
return g_dComIfG_gameInfo.play.getRoomControl()->getTevStr(i_roomNo);
}
inline bool dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag) {
return g_dComIfG_gameInfo.play.mRoomControl.checkStatusFlag(i_roomNo, flag);
inline BOOL dComIfGp_roomControl_checkStatusFlag(int i_roomNo, u8 flag) {
return g_dComIfG_gameInfo.play.getRoomControl()->checkStatusFlag(i_roomNo, flag);
}
inline void dComIfGp_roomControl_offStatusFlag(int i_roomNo, u8 flag) {
return g_dComIfG_gameInfo.play.getRoomControl()->offStatusFlag(i_roomNo, flag);
}
inline void dComIfGp_roomControl_onStatusFlag(int i_roomNo, u8 flag) {
return g_dComIfG_gameInfo.play.getRoomControl()->onStatusFlag(i_roomNo, flag);
}
inline void dComIfGp_roomControl_setStatusFlag(int i_roomNo, u8 flag) {
return g_dComIfG_gameInfo.play.getRoomControl()->setStatusFlag(i_roomNo, flag);
}
inline void dComIfGp_roomControl_zoneCountCheck(int i_roomNo) {
+5
View File
@@ -48,6 +48,11 @@ public:
/* 80031434 */ static bool check(s8 i_roomNo, cXyz const& i_pos);
/* 800315A4 */ static void execute();
static void reset(int roomNo) {
room_c* room = (room_c*)mRoom; // tmp
room[roomNo].reset();
}
static u8 mData[1152];
static u8 mRoom[256];
static s16 mSetTop;
+1
View File
@@ -273,6 +273,7 @@ public:
static dDemo_actor_c* getActor(u8 param_0) { return m_object->getActor(param_0); }
static u32 getFrameNoMsg() { return m_frameNoMsg; }
static s32 getMode() { return m_mode; }
static int getFrame() { return m_frame; }
static JStudio::stb::TControl* getControl() { return m_control; }
static bool isStatus(u32 status) { return m_status & status; }
static void onStatus(u32 status) { m_status |= status; }
+33 -3
View File
@@ -684,6 +684,7 @@ public:
/* 0x68 */ int mVrboxcolNumInfo;
}; // Size: 0x6C
class dBgW_base;
class dStage_roomStatus_c {
public:
/* 0x000 */ dStage_roomDt_c mRoomDt;
@@ -695,7 +696,7 @@ public:
/* 0x3F8 */ s8 mMemBlockID;
/* 0x3F9 */ u8 mRegionNo;
/* 0x3FC */ int mProcID;
/* 0x400 */ int field_0x400;
/* 0x400 */ dBgW_base* mpBgW;
int getZoneNo() const { return mZoneNo; }
~dStage_roomStatus_c() {}
@@ -723,6 +724,11 @@ public:
/* 0x04 */ void** m_dzs;
};
struct nameData {
/* 0x0 */ s8 m_num;
/* 0x1 */ char m_names[32][10]; // ?
};
static void createRoomDzs(u8 i_num) { m_roomDzs.create(i_num); }
static void* addRoomDzs(u8 i_num, u8 roomNo) { return m_roomDzs.add(i_num, roomNo); }
static void removeRoomDzs() { m_roomDzs.remove(); }
@@ -744,7 +750,7 @@ public:
/* 80024940 */ static char* getArcBank(int);
/* 80024954 */ static bool resetArchiveBank(int);
/* 80024DB0 */ static void SetTimePass(int);
/* 8025BAAC */ void setZoneNo(int, int);
/* 8025BAAC */ static void setZoneNo(int, int);
static s32 GetTimePass();
static s8 getStayNo() { return mStayNo; }
@@ -763,14 +769,28 @@ public:
static void offNoChangeRoom() { mNoChangeRoom = false; }
static void setProcID(u32 id) { mProcID = id; }
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 setFileList2(int i_roomNo, dStage_FileList2_dt_c* list) {
mStatus[i_roomNo].mRoomDt.mFileList2Info = list;
}
bool checkStatusFlag(int i_roomNo, u8 flag) const {
static void setBgW(int param_0, dBgW_base* i_bgw) {
mStatus[param_0].mpBgW = i_bgw;
}
BOOL checkStatusFlag(int i_roomNo, u8 flag) const {
return cLib_checkBit(mStatus[i_roomNo].mFlag, flag);
}
void offStatusFlag(int i_roomNo, u8 flag) {
return cLib_offBit(mStatus[i_roomNo].mFlag, flag);
}
void onStatusFlag(int i_roomNo, u8 flag) {
return cLib_onBit(mStatus[i_roomNo].mFlag, flag);
}
static JKRExpHeap* mMemoryBlock[19];
static char mArcBank[32][10];
static dStage_roomStatus_c mStatus[0x40];
@@ -917,6 +937,12 @@ static s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0);
void dStage_restartRoom(u32 roomParam, u32 mode, int param_2);
struct cBgS_GndChk;
int dStage_RoomCheck(cBgS_GndChk* gndChk);
void dStage_dt_c_roomReLoader(void* i_data, dStage_dt_c* stageDt, int param_2);
void dStage_dt_c_roomLoader(void* i_data, dStage_dt_c* stageDt, int param_2);
inline bool dStage_roomRead_dt_c_ChkBg(u8 param_0) {
return param_0 & 0x80;
}
inline s32 dStage_roomRead_dt_c_GetVrboxswitch(roomRead_data_class& data) {
return data.field_0x2 & 8;
@@ -970,6 +996,10 @@ inline s8 dStage_stagInfo_GetTimeH(stage_stag_info_class* p_info) {
return p_info->field_0x0c >> 8;
}
inline BOOL dStage_staginfo_GetArchiveHeap(stage_stag_info_class* p_info) {
return p_info->field_0x0a & 0x1000;
}
inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
return p_info->field_0xb & 0xF;
}
+1 -1
View File
@@ -37,7 +37,7 @@ static void GxFog_set();
static void GxXFog_set();
u8 dKy_pol_argument_get(cBgS_PolyInfo const* i_poly);
void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int param_3);
void dKy_bg_MAxx_proc(void* param_0);
struct LIGHT_INFLUENCE {
/* 800CFC7C */ ~LIGHT_INFLUENCE() {}
+2
View File
@@ -344,6 +344,8 @@ public:
JKRExpHeap* getResHeap() { return m_resHeap; }
void levelAllForceOnEventMove() { field_0x210.allForceOnEventMove(); }
static void onStatus(u8 status) { mStatus |= status; }
static void offStatus(u8 status) { mStatus &= ~status; }
static bool isStatus(u8 status) { return mStatus & status; }
+4
View File
@@ -26,4 +26,8 @@ inline int fopScnM_LayerID(void* proc) {
return fpcM_LayerID(proc);
}
inline u32 fopScnM_GetParam(void* proc) {
return fpcM_GetParam(proc);
}
#endif
+5
View File
@@ -10,6 +10,7 @@
#include "f_pc/f_pc_stdcreate_req.h"
#include "f_pc/f_pc_executor.h"
#include "f_pc/f_pc_leaf.h"
#include "f_pc/f_pc_layer_iter.h"
typedef int (*FastCreateReqFunc)(void*);
typedef void (*fpcM_ManagementFunc)(void);
@@ -66,6 +67,10 @@ inline BOOL fpcM_IsExecuting(unsigned int id) {
return fpcEx_IsExist(id);
}
inline void* fpcM_LyJudge(process_node_class* i_node, fpcLyIt_JudgeFunc i_func, void* i_data) {
return fpcLyIt_Judge(&i_node->mLayer, i_func, i_data);
}
void fpcM_Draw(void* pProc);
s32 fpcM_DrawIterater(fpcM_DrawIteraterFunc pFunc);
s32 fpcM_Execute(void* pProc);
+9
View File
@@ -61,6 +61,10 @@ public:
}
int remove(J3DModelData* i_modelData) { return i_modelData->removeTexMtxAnimator(mpAnm); }
void entryFrame() { entryFrame(getFrame()); }
void entryFrame(f32 frame) { setFrame(frame); }
J3DAnmTextureSRTKey* getBtkAnm() const { return mpAnm; }
private:
/* 0x14 */ J3DAnmTextureSRTKey* mpAnm;
@@ -87,6 +91,10 @@ public:
}
int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); }
void entryFrame() { entryFrame(getFrame()); }
void entryFrame(f32 frame) { setFrame(frame); }
J3DAnmTevRegKey* getBrkAnm() const { return mpAnm; }
private:
/* 0x14 */ J3DAnmTevRegKey* mpAnm;
@@ -508,6 +516,7 @@ J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 param_1, u32 pa
void mDoExt_setAraCacheSize(u32 size);
int mDoExt_resIDToIndex(JKRArchive* p_archive, u16 id);
void mDoExt_modelEntryDL(J3DModel* i_model);
void mDoExt_setupStageTexture(J3DModelData* i_modelData);
struct JUTFont;
JUTFont* mDoExt_getMesgFont();
+9
View File
@@ -8,6 +8,15 @@
struct mDoLib_clipper {
/* 8001528C */ void setup(f32, f32, f32, f32);
static void changeFar(f32 far) {
mClipper.setFar(far);
mClipper.calcViewFrustum();
}
static u32 clip(const Mtx m, const Vec* param_1, const Vec* param_2) {
return mClipper.clip(m, (Vec*)param_1, (Vec*)param_2);
}
static J3DUClipper mClipper;
static f32 mSystemFar;
static f32 mFovyRate;