diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2023-03-28 04:11:41 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-28 05:11:41 -0600 |
| commit | 92b88e83e86c60442ba1f9748c80b7db9242bf92 (patch) | |
| tree | 0911f27946cfd9f4f108116bbb59576b053aac6b /include | |
| parent | 721880831e114f08756ffd846ab69cd0d729863c (diff) | |
d_menu_calibration done / J3DDrawBuffer done / more d_drawlist wip (#312)
* d_drawlist work / finish J3DDrawBuffer
* d_menu_calibration done
* remove asm
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DDrawBuffer.h | 26 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_bg_s_chk.h | 3 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_lib.h | 15 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_m3d_g_pla.h | 1 | ||||
| -rw-r--r-- | include/d/com/d_com_inf_game.h | 8 | ||||
| -rw-r--r-- | include/d/d_drawlist.h | 82 | ||||
| -rw-r--r-- | include/d/d_select_cursor.h | 20 | ||||
| -rw-r--r-- | include/d/kankyo/d_kankyo.h | 1 | ||||
| -rw-r--r-- | include/d/menu/d_menu_calibration.h | 87 | ||||
| -rw-r--r-- | include/d/meter/d_meter2_info.h | 4 | ||||
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 7 |
11 files changed, 205 insertions, 49 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h index b937d16387..b4577c07cf 100644 --- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h +++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h @@ -5,6 +5,30 @@ #include "dolphin/mtx/mtx.h" #include "dolphin/types.h" +// matches debug +inline f32 J3DCalcZValue(register MtxP m, register Vec v) { + register f32 temp_f4; + register f32 out; + register f32 temp_f0; + register f32 temp_f2; + register f32 temp_f1 = 1.0f; + + // clang-format off + asm { + psq_l temp_f0, 0(v), 0, 0 /* qr0 */ + lfs temp_f2, 8(v) + psq_l temp_f4, 32(m), 0, 0 /* qr0 */ + psq_l out, 40(m), 0, 0 /* qr0 */ + ps_merge00 temp_f2, temp_f2, temp_f1 + ps_mul temp_f4, temp_f0, temp_f4 + ps_madd out, temp_f2, out, temp_f4 + ps_sum0 out, out, out, out + } + // clang-format on + + return out; +} + class J3DDrawBuffer; class J3DPacket; class J3DDrawPacket; @@ -46,6 +70,8 @@ public: void drawHead() const; void drawTail() const; + u32 getEntryTableSize() { return mBufSize; } + inline void calcZRatio(); void setNonSort() { mSortType = 5; } void setZSort() { mSortType = 2; } diff --git a/include/SSystem/SComponent/c_bg_s_chk.h b/include/SSystem/SComponent/c_bg_s_chk.h index 7a832cf271..c0746f8eb8 100644 --- a/include/SSystem/SComponent/c_bg_s_chk.h +++ b/include/SSystem/SComponent/c_bg_s_chk.h @@ -2,6 +2,9 @@ #define C_BG_S_CHK_H #include "dolphin/types.h" +#include "dolphin/mtx/vec.h" + +struct cBgD_Vtx_t : public Vec {}; class cBgS_GrpPassChk { public: diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h index cf04ec17d6..e0e9c2084c 100644 --- a/include/SSystem/SComponent/c_lib.h +++ b/include/SSystem/SComponent/c_lib.h @@ -72,6 +72,21 @@ inline T cLib_minMaxLimit(T val, T min, T max) { } template <typename T> +inline T cLib_maxLimit(T val, T max) { + T ret; + T var_r30; + + if (val > max) { + var_r30 = max; + } else { + var_r30 = val; + } + + ret = var_r30; + return (T)ret; +} + +template <typename T> T cLib_calcTimer(T* val); void MtxInit(void); diff --git a/include/SSystem/SComponent/c_m3d_g_pla.h b/include/SSystem/SComponent/c_m3d_g_pla.h index bb628278f9..17b1e033ca 100644 --- a/include/SSystem/SComponent/c_m3d_g_pla.h +++ b/include/SSystem/SComponent/c_m3d_g_pla.h @@ -26,6 +26,7 @@ public: f32 getPlaneFunc(const Vec* pPoint) const { return mD + PSVECDotProduct(&mNormal, pPoint); } const cXyz& GetNP() const { return mNormal; } + const cXyz& i_GetNP() const { return mNormal; } f32 GetD() const { return mD; } void SetupFrom3Vtx(const Vec* v1, const Vec* v2, const Vec* v3) { cM3d_CalcPla(v1, v2, v3, &mNormal, &mD); diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 37f3eb7593..3bb28c00fc 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -1665,6 +1665,14 @@ inline u8 dComIfGs_getWalletSize() { return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getWalletSize(); } +inline void dComIfGs_setOptCalValue(s8 i_calValue) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setCalValue(i_calValue); +} + +inline void dComIfGs_setOptCalibrateDist(u16 i_calibrateDist) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setCalibrateDist(i_calibrateDist); +} + void dComIfGp_setSelectItem(int index); s32 dComIfGp_offHeapLockFlag(int flag); void dComIfGp_createSubExpHeap2D(); diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index e787cdd8d7..1a7f1f00dc 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -131,31 +131,37 @@ public: /* 0x38 */ Mtx mMtx; }; // Size: 0x68 -struct cBgD_Vtx_t {}; +struct cBgD_Vtx_t; + +class dDlst_shadowTri_c { +public: + /* 80056270 */ ~dDlst_shadowTri_c() {} + /* 80056344 */ dDlst_shadowTri_c() {} + + /* 0x0 */ cXyz mPos[3]; +}; class dDlst_shadowPoly_c { public: - /* 80054288 */ void set(cBgD_Vtx_t*, u16, u16, u16, cM3dGPla*); + dDlst_shadowPoly_c() { + reset(); + } + + void reset() { mCount = 0; } + + /* 80054288 */ int set(cBgD_Vtx_t*, u16, u16, u16, cM3dGPla*); /* 800543B4 */ void draw(); - virtual void getTri() = 0; + virtual dDlst_shadowTri_c* getTri() = 0; virtual s32 getTriMax() = 0; /* 0x4 */ u16 mCount; /* 0x6 */ u8 field_0x6[2]; }; -class dDlst_shadowTri_c { -public: - /* 80056270 */ ~dDlst_shadowTri_c(); - /* 80056344 */ dDlst_shadowTri_c(); - - /* 0x0 */ cXyz mPos[3]; -}; - class dDlst_shadowRealPoly_c : public dDlst_shadowPoly_c { public: - /* 800569A0 */ virtual void getTri(); + /* 800569A0 */ virtual dDlst_shadowTri_c* getTri(); /* 800569A8 */ virtual s32 getTriMax(); /* 0x8 */ dDlst_shadowTri_c mShadowTri[256]; @@ -166,11 +172,16 @@ public: /* 800544F0 */ void reset(); /* 80054500 */ void imageDraw(f32 (*)[4]); /* 800545D4 */ void draw(); - /* 80054BD0 */ void setShadowRealMtx(cXyz*, cXyz*, f32, f32, f32, dKy_tevstr_c*); - /* 80055028 */ void set(u32, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*, f32, f32); + /* 80054BD0 */ u8 setShadowRealMtx(cXyz*, cXyz*, f32, f32, f32, dKy_tevstr_c*); + /* 80055028 */ u32 set(u32, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*, f32, f32); /* 800551D4 */ bool add(J3DModel*); /* 800561F8 */ ~dDlst_shadowReal_c() {} - /* 800562D0 */ dDlst_shadowReal_c(); + /* 800562D0 */ dDlst_shadowReal_c() { mState = 0; } + + dDlst_shadowReal_c* getZsortNext() { return mZsortNext; } + bool isNoUse() { return mState == 0; } + bool isUse() { return mState == 1; } + bool checkKey(u32 i_key) { return mKey == i_key; } private: /* 0x0000 */ u8 mState; @@ -196,7 +207,7 @@ public: /* 800557C8 */ void imageDraw(f32 (*)[4]); /* 80055A14 */ void draw(f32 (*)[4]); /* 80055C74 */ int setReal(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*); - /* 80055F1C */ void addReal(u32, J3DModel*); + /* 80055F1C */ bool addReal(u32, J3DModel*); /* 80055F84 */ int setSimple(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*); /* 80055FE8 */ static void setSimpleTex(ResTIMG const*); @@ -214,8 +225,7 @@ private: /* 0x0340C */ int mNextID; /* 0x03410 */ dDlst_shadowReal_c mReal[8]; /* 0x15EB0 */ _GXTexObj field_0x15eb0[2]; - /* 0x15EF0 */ void* field_0x15ef0; - /* 0x15EF4 */ void* field_0x15ef4; + /* 0x15EF0 */ void* field_0x15ef0[2]; }; class dDlst_window_c { @@ -284,10 +294,10 @@ public: /* 0x14 */ DB_LIST_3D_LAST, }; - void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaSet[0], mp2DOpaSet[1], dlst); } - void set2DOpaTop(dDlst_base_c* dlst) { set(mp2DOpaTopSet[0], mp2DOpaTopSet[1], dlst); } - void set2DXlu(dDlst_base_c* dlst) { set(mp2DXluSet[0], mp2DXluSet[1], dlst); } - void setCopy2D(dDlst_base_c* dlst) { set(mpCopy2DSet[0], mpCopy2DSet[1], dlst); } + void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaStart, mp2DOpaEnd, dlst); } + void set2DOpaTop(dDlst_base_c* dlst) { set(mp2DOpaTopStart, mp2DOpaTopEnd, dlst); } + void set2DXlu(dDlst_base_c* dlst) { set(mp2DXluStart, mp2DXluEnd, dlst); } + void setCopy2D(dDlst_base_c* dlst) { set(mpCopy2DStart, mpCopy2DEnd, dlst); } view_class* getView() { return mView; } void setView(view_class* view) { mView = view; } void setWindow(dDlst_window_c* window) { mWindow = window; } @@ -334,7 +344,7 @@ public: view_port_class* getViewport() { return mViewport; } - void drawCopy2D() { draw(mpCopy2DDraw[0], mpCopy2DSet[0]); } + void drawCopy2D() { draw(mpCopy2DDrawLists, mpCopy2DStart); } void drawOpaListSky() { drawOpaDrawList(mDrawBuffers[DB_OPA_LIST_SKY]); } void drawXluListSky() { drawXluDrawList(mDrawBuffers[DB_XLU_LIST_SKY]); } void drawOpaListBG() { drawOpaDrawList(mDrawBuffers[DB_OPA_LIST_BG]); } @@ -354,9 +364,9 @@ public: void drawOpaList3Dlast() { drawOpaDrawList(mDrawBuffers[DB_LIST_3D_LAST]); } void drawOpaListFilter() { drawOpaDrawList(mDrawBuffers[DB_LIST_FILTER]); } void drawOpaListP0() { drawOpaDrawList(mDrawBuffers[DB_LIST_P0]); } - void draw2DOpa() { draw(mp2DOpaDraw[0], mp2DOpaSet[0]); } - void draw2DOpaTop() { draw(mp2DOpaTopDraw[0], mp2DOpaTopSet[0]); } - void draw2DXlu() { draw(mp2DXluDraw[0], mp2DXluSet[0]); } + void draw2DOpa() { draw(mp2DOpaDrawLists, mp2DOpaStart); } + void draw2DOpaTop() { draw(mp2DOpaTopDrawLists, mp2DOpaTopStart); } + void draw2DXlu() { draw(mp2DXluDrawLists, mp2DXluStart); } void imageDrawShadow(Mtx param_0) { mShadowControl.imageDraw(param_0); } void drawShadow(Mtx param_0) { mShadowControl.draw(param_0); } @@ -372,14 +382,18 @@ public: private: /* 0x00000 */ J3DDrawBuffer* mDrawBuffers[21]; - /* 0x00054 */ dDlst_base_c** mpCopy2DDraw[4]; - /* 0x00064 */ dDlst_base_c** mpCopy2DSet[2]; - /* 0x0006C */ dDlst_base_c** mp2DOpaTopDraw[16]; - /* 0x000AC */ dDlst_base_c** mp2DOpaTopSet[2]; - /* 0x000B4 */ dDlst_base_c** mp2DOpaDraw[64]; - /* 0x001B4 */ dDlst_base_c** mp2DOpaSet[2]; - /* 0x001BC */ dDlst_base_c** mp2DXluDraw[32]; - /* 0x0023C */ dDlst_base_c** mp2DXluSet[2]; + /* 0x00054 */ dDlst_base_c* mpCopy2DDrawLists[4]; + /* 0x00064 */ dDlst_base_c** mpCopy2DStart; + /* 0x00068 */ dDlst_base_c** mpCopy2DEnd; + /* 0x0006C */ dDlst_base_c* mp2DOpaTopDrawLists[16]; + /* 0x000AC */ dDlst_base_c** mp2DOpaTopStart; + /* 0x000B0 */ dDlst_base_c** mp2DOpaTopEnd; + /* 0x000B4 */ dDlst_base_c* mp2DOpaDrawLists[64]; + /* 0x001B4 */ dDlst_base_c** mp2DOpaStart; + /* 0x001B8 */ dDlst_base_c** mp2DOpaEnd; + /* 0x001BC */ dDlst_base_c* mp2DXluDrawLists[32]; + /* 0x0023C */ dDlst_base_c** mp2DXluStart; + /* 0x00240 */ dDlst_base_c** mp2DXluEnd; /* 0x00244 */ dDlst_window_c* mWindow; /* 0x00248 */ view_port_class* mViewport; /* 0x0024C */ view_class* mView; diff --git a/include/d/d_select_cursor.h b/include/d/d_select_cursor.h index fa188148e0..7c9d372d35 100644 --- a/include/d/d_select_cursor.h +++ b/include/d/d_select_cursor.h @@ -1,11 +1,10 @@ #ifndef D_D_SELECT_CURSOR_H #define D_D_SELECT_CURSOR_H +#include "JSystem/J2DGraph/J2DPane.h" +#include "JSystem/J2DGraph/J2DScreen.h" #include "d/d_drawlist.h" #include "d/d_select_icon.h" -#include "dolphin/types.h" -#include "JSystem/J2DGraph/J2DScreen.h" -#include "JSystem/J2DGraph/J2DPane.h" class dSelect_cursorHIO_c { public: @@ -49,17 +48,14 @@ public: mPositionY = y; } - void onUpdateFlag() { - mUpdateFlag = true; - } + void onUpdateFlag() { mUpdateFlag = true; } - void resetUpdateFlag() { - mUpdateFlag = false; - } + void resetUpdateFlag() { mUpdateFlag = false; } - bool getUpdateFlag() { - return mUpdateFlag; - } + bool getUpdateFlag() { return mUpdateFlag; } + + void onPlayAnime(int i_flag) { field_0xb4 |= (1 << i_flag); } + void offPlayAnime(int i_flag) { field_0xb4 &= ~(1 << i_flag); } private: /* 0x04 */ J2DScreen* mpScreen; diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 38dc72efc8..f9ca7ce440 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -42,6 +42,7 @@ void dKy_change_colpat(u8 colpat); void dKy_BossLight_set(cXyz* param_0, _GXColor* param_1, f32 param_2, u8 param_3); void dKy_custom_colset(u8 prevGather, u8 curGather, f32 blend); void dKy_setLight(); +cXyz dKy_plight_near_pos(); struct LIGHT_INFLUENCE { /* 800CFC7C */ ~LIGHT_INFLUENCE() {} diff --git a/include/d/menu/d_menu_calibration.h b/include/d/menu/d_menu_calibration.h index e81361d3ee..a937a01e51 100644 --- a/include/d/menu/d_menu_calibration.h +++ b/include/d/menu/d_menu_calibration.h @@ -1,6 +1,91 @@ #ifndef D_MENU_D_MENU_CALIBRATION_H #define D_MENU_D_MENU_CALIBRATION_H -#include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" +#include "d/msg/d_msg_string.h" + +class dMenu_Calibration_c { +public: + enum { + /* 0 */ PROC_STEP1_WAIT, + /* 1 */ PROC_STEP1_MOVE, + /* 2 */ PROC_STEP2_WAIT, + /* 3 */ PROC_STEP2_MOVE, + /* 4 */ PROC_STEP3_WAIT, + /* 5 */ PROC_STEP3_MOVE, + }; + + /* 801AEDAC */ void _move(); + /* 801AEE2C */ void _draw(); + /* 801AEE30 */ void step1_wait_init(); + /* 801AEF60 */ void step1_wait_move(); + /* 801AF084 */ void step1_move_init(); + /* 801AF0C0 */ void step1_move_move(); + /* 801AF188 */ void step2_wait_init(); + /* 801AF1F4 */ void step2_wait_move(); + /* 801AF380 */ void step2_move_init(); + /* 801AF3BC */ void step2_move_move(); + /* 801AF488 */ void step3_wait_init(); + /* 801AF4F8 */ void step3_wait_move(); + /* 801AF5F4 */ void step3_move_init(); + /* 801AF630 */ void step3_move_move(); + /* 801AF710 */ void setCalibrationValue(); + /* 801AF738 */ void setAButtonString(u16); + /* 801AF7E8 */ void setBButtonString(u16); + /* 801AF898 */ void setStepString(u16); + /* 801AF948 */ void setExplainString(u16); + /* 801AFA00 */ void setHIO(bool); + + /* 801AFBF4 */ virtual void draw(); + /* 801AED64 */ virtual ~dMenu_Calibration_c(); + + // this is just a hack to get .data section to match + // not sure how to fix it without this atm + virtual void unk0() = 0; + virtual void unk1() = 0; + + /* 0x004 */ JKRExpHeap* mpHeap; + /* 0x008 */ JKRArchive* mpArchive; + /* 0x00C */ J2DScreen* mpCalibrationMainScrn; + /* 0x010 */ J2DScreen* mpDoIconPartsScrn; + /* 0x014 */ J2DTextBox* mpAButtonString[5]; + /* 0x028 */ J2DTextBox* mpBButtonString[5]; + /* 0x03C */ J2DTextBox* mpExplainString[3]; + /* 0x048 */ J2DTextBox* mpStepString[3]; + /* 0x054 */ CPaneMgr* field_0x54; + /* 0x058 */ CPaneMgr* field_0x58[3]; + /* 0x064 */ CPaneMgr* field_0x64; + /* 0x068 */ CPaneMgr* field_0x68[5]; + /* 0x07C */ CPaneMgr* field_0x7c; + /* 0x080 */ CPaneMgr* field_0x80; + /* 0x084 */ CPaneMgr* field_0x84; + /* 0x088 */ CPaneMgr* field_0x88; + /* 0x08C */ CPaneMgr* field_0x8c; + /* 0x090 */ CPaneMgr* field_0x90; + /* 0x094 */ CPaneMgr* field_0x94; + /* 0x098 */ CPaneMgr* field_0x98; + /* 0x09C */ CPaneMgr* field_0x9c; + /* 0x0A0 */ CPaneMgr* field_0xa0; + /* 0x0A4 */ dMsgString_c* mpMsgString; + /* 0x0A8 */ dSelect_cursor_c* mpSelectCursor; + /* 0x0AC */ J2DTextBox::TFontSize field_0xac[5]; + /* 0x0D4 */ f32 field_0xd4; + /* 0x0D8 */ f32 field_0xd8; + /* 0x0DC */ f32 field_0xdc; + /* 0x0E0 */ f32 field_0xe0; + /* 0x0E4 */ f32 field_0xe4; + /* 0x0E8 */ int mCalibrationValue; + /* 0x0EC */ int field_0xec; + /* 0x0F0 */ int field_0xf0; + /* 0x0F4 */ u16 mCalibrateDist; + /* 0x0F6 */ s16 field_0xf6; + /* 0x0F8 */ s16 field_0xf8; + /* 0x0FA */ s16 field_0xfa; + /* 0x0FC */ s16 field_0xfc; + /* 0x0FE */ u8 mStatus; + /* 0x0FF */ u8 field_0xff; + /* 0x100 */ u8 mProcess; + /* 0x101 */ u8 field_0x101; +}; #endif /* D_MENU_D_MENU_CALIBRATION_H */ diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 085e504eac..c7be57cb59 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -266,6 +266,10 @@ inline void dMeter2Info_getString(u32 param_0, char* param_1, JMSMesgEntry_c* pa g_meter2_info.getString(param_0, param_1, param_2); } +inline void dMeter2Info_getStringKanji(u32 param_0, char* param_1, JMSMesgEntry_c* param_2) { + g_meter2_info.getStringKanji(param_0, param_1, param_2); +} + inline void dMeter2Info_setHotSpringTimer(u8 time) { g_meter2_info.setHotSpringTimer(time); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index fe8cff9386..b31b3cbbc0 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -435,7 +435,9 @@ public: class mDoExt_3DlineMatSortPacket : public J3DPacket { public: - mDoExt_3DlineMatSortPacket(); + mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; } + + void reset() { mp3DlineMat = NULL; } /* 80014738 */ void setMat(mDoExt_3DlineMat_c*); virtual void draw(); @@ -505,7 +507,8 @@ public: class mDoExt_cylinderPacket : public J3DPacket { public: - mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 param_4) { + mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, + u8 param_4) { mPosition = i_position; mRadius = i_radius; mHeight = i_height; |
