d_drawlist (#1881)

This commit is contained in:
Jcw87 2023-08-13 21:08:32 -07:00 committed by GitHub
parent 9ae61771ec
commit a997bb00bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 998 additions and 197 deletions

View File

@ -1,125 +0,0 @@
lbl_80054688:
/* 80054688 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8005468C 7C 08 02 A6 */ mflr r0
/* 80054690 90 01 00 24 */ stw r0, 0x24(r1)
/* 80054694 39 61 00 20 */ addi r11, r1, 0x20
/* 80054698 48 30 DB 39 */ bl _savegpr_26
/* 8005469C 7C 7A 1B 78 */ mr r26, r3
/* 800546A0 7C 9B 23 78 */ mr r27, r4
/* 800546A4 7C BC 2B 78 */ mr r28, r5
/* 800546A8 7C DD 33 78 */ mr r29, r6
/* 800546AC 7C FE 3B 78 */ mr r30, r7
/* 800546B0 7D 1F 43 78 */ mr r31, r8
/* 800546B4 80 63 00 38 */ lwz r3, 0x38(r3)
/* 800546B8 7F E4 FB 78 */ mr r4, r31
/* 800546BC 48 2F 2A D9 */ bl PSVECDotProduct
/* 800546C0 C0 02 86 50 */ lfs f0, lit_5061(r2)
/* 800546C4 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 800546C8 40 80 01 70 */ bge lbl_80054838
/* 800546CC 80 7A 00 34 */ lwz r3, 0x34(r26)
/* 800546D0 C0 3F 00 08 */ lfs f1, 8(r31)
/* 800546D4 C0 03 00 08 */ lfs f0, 8(r3)
/* 800546D8 EC 61 00 32 */ fmuls f3, f1, f0
/* 800546DC C0 3F 00 00 */ lfs f1, 0(r31)
/* 800546E0 C0 03 00 00 */ lfs f0, 0(r3)
/* 800546E4 EC 41 00 32 */ fmuls f2, f1, f0
/* 800546E8 C0 3F 00 04 */ lfs f1, 4(r31)
/* 800546EC C0 03 00 04 */ lfs f0, 4(r3)
/* 800546F0 EC 01 00 32 */ fmuls f0, f1, f0
/* 800546F4 EC 02 00 2A */ fadds f0, f2, f0
/* 800546F8 EC 23 00 2A */ fadds f1, f3, f0
/* 800546FC C0 1F 00 0C */ lfs f0, 0xc(r31)
/* 80054700 EC 21 00 2A */ fadds f1, f1, f0
/* 80054704 C0 02 86 54 */ lfs f0, lit_5062(r2)
/* 80054708 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 8005470C 40 81 01 2C */ ble lbl_80054838
/* 80054710 38 7A 00 20 */ addi r3, r26, 0x20
/* 80054714 1C 1C 00 0C */ mulli r0, r28, 0xc
/* 80054718 7C 9B 02 14 */ add r4, r27, r0
/* 8005471C 1C 1D 00 0C */ mulli r0, r29, 0xc
/* 80054720 7C BB 02 14 */ add r5, r27, r0
/* 80054724 1C 1E 00 0C */ mulli r0, r30, 0xc
/* 80054728 7C DB 02 14 */ add r6, r27, r0
/* 8005472C C0 44 00 04 */ lfs f2, 4(r4)
/* 80054730 C0 3A 00 18 */ lfs f1, 0x18(r26)
/* 80054734 FC 02 08 40 */ fcmpo cr0, f2, f1
/* 80054738 40 80 00 1C */ bge lbl_80054754
/* 8005473C C0 05 00 04 */ lfs f0, 4(r5)
/* 80054740 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054744 40 80 00 10 */ bge lbl_80054754
/* 80054748 C0 06 00 04 */ lfs f0, 4(r6)
/* 8005474C FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054750 41 80 00 C0 */ blt lbl_80054810
lbl_80054754:
/* 80054754 C0 23 00 04 */ lfs f1, 4(r3)
/* 80054758 FC 02 08 40 */ fcmpo cr0, f2, f1
/* 8005475C 40 81 00 1C */ ble lbl_80054778
/* 80054760 C0 05 00 04 */ lfs f0, 4(r5)
/* 80054764 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054768 40 81 00 10 */ ble lbl_80054778
/* 8005476C C0 06 00 04 */ lfs f0, 4(r6)
/* 80054770 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054774 41 81 00 9C */ bgt lbl_80054810
lbl_80054778:
/* 80054778 C0 44 00 00 */ lfs f2, 0(r4)
/* 8005477C C0 3A 00 14 */ lfs f1, 0x14(r26)
/* 80054780 FC 02 08 40 */ fcmpo cr0, f2, f1
/* 80054784 40 80 00 1C */ bge lbl_800547A0
/* 80054788 C0 05 00 00 */ lfs f0, 0(r5)
/* 8005478C FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054790 40 80 00 10 */ bge lbl_800547A0
/* 80054794 C0 06 00 00 */ lfs f0, 0(r6)
/* 80054798 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 8005479C 41 80 00 74 */ blt lbl_80054810
lbl_800547A0:
/* 800547A0 C0 23 00 00 */ lfs f1, 0(r3)
/* 800547A4 FC 02 08 40 */ fcmpo cr0, f2, f1
/* 800547A8 40 81 00 1C */ ble lbl_800547C4
/* 800547AC C0 05 00 00 */ lfs f0, 0(r5)
/* 800547B0 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 800547B4 40 81 00 10 */ ble lbl_800547C4
/* 800547B8 C0 06 00 00 */ lfs f0, 0(r6)
/* 800547BC FC 00 08 40 */ fcmpo cr0, f0, f1
/* 800547C0 41 81 00 50 */ bgt lbl_80054810
lbl_800547C4:
/* 800547C4 C0 44 00 08 */ lfs f2, 8(r4)
/* 800547C8 C0 3A 00 1C */ lfs f1, 0x1c(r26)
/* 800547CC FC 02 08 40 */ fcmpo cr0, f2, f1
/* 800547D0 40 80 00 1C */ bge lbl_800547EC
/* 800547D4 C0 05 00 08 */ lfs f0, 8(r5)
/* 800547D8 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 800547DC 40 80 00 10 */ bge lbl_800547EC
/* 800547E0 C0 06 00 08 */ lfs f0, 8(r6)
/* 800547E4 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 800547E8 41 80 00 28 */ blt lbl_80054810
lbl_800547EC:
/* 800547EC C0 23 00 08 */ lfs f1, 8(r3)
/* 800547F0 FC 02 08 40 */ fcmpo cr0, f2, f1
/* 800547F4 40 81 00 24 */ ble lbl_80054818
/* 800547F8 C0 05 00 08 */ lfs f0, 8(r5)
/* 800547FC FC 00 08 40 */ fcmpo cr0, f0, f1
/* 80054800 40 81 00 18 */ ble lbl_80054818
/* 80054804 C0 06 00 08 */ lfs f0, 8(r6)
/* 80054808 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 8005480C 40 81 00 0C */ ble lbl_80054818
lbl_80054810:
/* 80054810 38 60 00 01 */ li r3, 1
/* 80054814 48 00 00 28 */ b lbl_8005483C
lbl_80054818:
/* 80054818 80 7A 00 3C */ lwz r3, 0x3c(r26)
/* 8005481C 7F 64 DB 78 */ mr r4, r27
/* 80054820 57 85 04 3E */ clrlwi r5, r28, 0x10
/* 80054824 57 A6 04 3E */ clrlwi r6, r29, 0x10
/* 80054828 57 C7 04 3E */ clrlwi r7, r30, 0x10
/* 8005482C 7F E8 FB 78 */ mr r8, r31
/* 80054830 4B FF FA 59 */ bl set__18dDlst_shadowPoly_cFP10cBgD_Vtx_tUsUsUsP8cM3dGPla
/* 80054834 48 00 00 08 */ b lbl_8005483C
lbl_80054838:
/* 80054838 38 60 00 01 */ li r3, 1
lbl_8005483C:
/* 8005483C 39 61 00 20 */ addi r11, r1, 0x20
/* 80054840 48 30 D9 DD */ bl _restgpr_26
/* 80054844 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80054848 7C 08 03 A6 */ mtlr r0
/* 8005484C 38 21 00 20 */ addi r1, r1, 0x20
/* 80054850 4E 80 00 20 */ blr

View File

@ -18,6 +18,8 @@ public:
void Set(cXyz&, cXyz&);
void SetCallback(cBgS_ShdwDraw_Callback);
cM3dGAab* GetBndP() { return &mM3dGAab; }
private:
/* 0x14 */ cM3dGAab mM3dGAab;
/* 0x30 */ cBgS_ShdwDraw_Callback mCallbackFun;

View File

@ -25,8 +25,8 @@ public:
void SetMax(const cXyz&);
void CalcCenter(cXyz*) const;
void PlusR(f32);
const cXyz& getMaxP(void) const { return mMax; }
const cXyz& getMinP(void) const { return mMin; }
const cXyz* GetMaxP(void) const { return &mMax; }
const cXyz* GetMinP(void) const { return &mMin; }
const f32 GetMaxX(void) const { return mMax.x; }
const f32 GetMaxY(void) const { return mMax.y; }
const f32 GetMaxZ(void) const { return mMax.z; }

View File

@ -26,7 +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; }
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);

View File

@ -42,6 +42,9 @@ public:
/* 80053E9C */ virtual void draw();
/* 800541F4 */ void update(cXyz&, _GXColor&, u16, u16, u16, u16, f32, f32, f32, f32);
f32 getRndValue(f32 param_0, f32 param_1) { return mRnd.getValue(param_0, param_1); }
f32 getRndFX(f32 param_0) { return mRnd.getFX(param_0); }
private:
/* 0x04 */ cM_rnd_c mRnd;
/* 0x10 */ cXyz field_0x10;
@ -92,6 +95,10 @@ public:
/* 80052B00 */ dDlst_2DT2_c();
/* 80052B4C */ void init(ResTIMG*, f32, f32, f32, f32, u8, u8, u8, f32, f32);
f32 getScaleX() { return mScaleX; }
void setScaleX(f32 scale) { mScaleX = scale; }
void setScaleY(f32 scale) { mScaleY = scale; }
/* 0x04 */ GXTexObj mTexObj;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;

View File

@ -30,7 +30,6 @@ public:
/* 8025AC0C */ virtual ~dScnPly_env_otherHIO_c();
private:
/* 0x4 */ f32 mShadowDensity;
/* 0x8 */ u8 mLODBias;
/* 0x9 */ u8 field_0x9;
@ -55,7 +54,6 @@ class dScnPly_env_HIO_c {
public:
/* 8025AD04 */ virtual ~dScnPly_env_HIO_c();
private:
/* 0x04 */ u8 field_0x4;
/* 0x08 */ dScnPly_env_otherHIO_c mOther;
/* 0x14 */ dScnPly_env_debugHIO_c mDebug;

View File

@ -26,6 +26,7 @@ struct mDoLib_clipper {
}
static f32 getFar() { return mSystemFar; }
static f32 getFovyRate() { return mFovyRate; }
static void resetFar() {
mClipper.setFar(mSystemFar);

View File

@ -67,6 +67,10 @@ inline void cMtx_ZrotM(Mtx mtx, s16 z) {
mDoMtx_ZrotM(mtx, z);
}
inline void cMtx_lookAt(Mtx param_0, const Vec* param_1, const Vec* param_2, s16 param_3) {
mDoMtx_lookAt(param_0, param_1, param_2, param_3);
}
inline void cMtx_multVec(Mtx mtx, const Vec* src, Vec* dst) {
mDoMtx_multVec(mtx, src, dst);
}

View File

@ -281,12 +281,12 @@ inline bool cM3d_CrossNumSection(f32 lMinX, f32 lMaxX, f32 rMinX, f32 rMaxX) {
/* 802689E8-80268B0C 263328 0124+00 0/0 4/4 0/0 .text cM3d_Cross_AabAab__FPC8cM3dGAabPC8cM3dGAab
*/
bool cM3d_Cross_AabAab(const cM3dGAab* pAabA, const cM3dGAab* pAabB) {
if (cM3d_CrossNumSection(pAabA->getMinP().x, pAabA->getMaxP().x, pAabB->getMinP().x,
pAabB->getMaxP().x) &&
cM3d_CrossNumSection(pAabA->getMinP().y, pAabA->getMaxP().y, pAabB->getMinP().y,
pAabB->getMaxP().y) &&
cM3d_CrossNumSection(pAabA->getMinP().z, pAabA->getMaxP().z, pAabB->getMinP().z,
pAabB->getMaxP().z)) {
if (cM3d_CrossNumSection(pAabA->GetMinP()->x, pAabA->GetMaxP()->x, pAabB->GetMinP()->x,
pAabB->GetMaxP()->x) &&
cM3d_CrossNumSection(pAabA->GetMinP()->y, pAabA->GetMaxP()->y, pAabB->GetMinP()->y,
pAabB->GetMaxP()->y) &&
cM3d_CrossNumSection(pAabA->GetMinP()->z, pAabA->GetMaxP()->z, pAabB->GetMinP()->z,
pAabB->GetMaxP()->z)) {
return true;
} else {
return false;
@ -296,17 +296,17 @@ bool cM3d_Cross_AabAab(const cM3dGAab* pAabA, const cM3dGAab* pAabB) {
/* 80268B0C-80268BB4 26344C 00A8+00 0/0 4/4 0/0 .text cM3d_Cross_AabCyl__FPC8cM3dGAabPC8cM3dGCyl
*/
bool cM3d_Cross_AabCyl(const cM3dGAab* pAab, const cM3dGCyl* pCyl) {
if (pAab->getMinP().x > pCyl->GetCP()->x + pCyl->GetR()) {
if (pAab->GetMinP()->x > pCyl->GetCP()->x + pCyl->GetR()) {
return false;
} else if (pAab->getMaxP().x < pCyl->GetCP()->x - pCyl->GetR()) {
} else if (pAab->GetMaxP()->x < pCyl->GetCP()->x - pCyl->GetR()) {
return false;
} else if (pAab->getMinP().z > pCyl->GetCP()->z + pCyl->GetR()) {
} else if (pAab->GetMinP()->z > pCyl->GetCP()->z + pCyl->GetR()) {
return false;
} else if (pAab->getMaxP().z < pCyl->GetCP()->z - pCyl->GetR()) {
} else if (pAab->GetMaxP()->z < pCyl->GetCP()->z - pCyl->GetR()) {
return false;
} else if (pAab->getMinP().y > pCyl->GetCP()->y + pCyl->GetH()) {
} else if (pAab->GetMinP()->y > pCyl->GetCP()->y + pCyl->GetH()) {
return false;
} else if (pAab->getMaxP().y < pCyl->GetCP()->y) {
} else if (pAab->GetMaxP()->y < pCyl->GetCP()->y) {
return false;
} else {
return true;

View File

@ -685,8 +685,8 @@ void cBgW::MakeNodeTreeRp(int param_0) {
int tmp = tree_data->m_id[0];
if (tmp != 0xFFFF) {
cXyz* max = (cXyz*)&pm_node_tree[param_0].getMaxP();
cXyz* min = (cXyz*)&pm_node_tree[param_0].getMinP();
cXyz* max = (cXyz*)pm_node_tree[param_0].GetMaxP();
cXyz* min = (cXyz*)pm_node_tree[param_0].GetMinP();
MakeBlckBnd(tmp, min, max);
}
@ -700,8 +700,8 @@ void cBgW::MakeNodeTreeRp(int param_0) {
if (tmp != 0xFFFF) {
MakeNodeTreeRp(tmp);
pm_node_tree[param_0].SetMinMax(pm_node_tree[tmp].getMinP());
pm_node_tree[param_0].SetMinMax(pm_node_tree[tmp].getMaxP());
pm_node_tree[param_0].SetMinMax(*pm_node_tree[tmp].GetMinP());
pm_node_tree[param_0].SetMinMax(*pm_node_tree[tmp].GetMaxP());
}
}
}
@ -1183,8 +1183,8 @@ bool cBgW::GetTriPnt(cBgS_PolyInfo const& poly, cXyz* p_pnt1, cXyz* p_pnt2, cXyz
/* 8007B240-8007B270 075B80 0030+00 2/0 1/0 0/0 .text GetTopUnder__4cBgWCFPfPf */
void cBgW::GetTopUnder(f32* p_top, f32* p_under) const {
*p_under = pm_grp[field_0x92].m_aab.getMinP().y;
*p_top = pm_grp[field_0x92].m_aab.getMaxP().y;
*p_under = pm_grp[field_0x92].m_aab.GetMinP()->y;
*p_top = pm_grp[field_0x92].m_aab.GetMaxP()->y;
}
/* 8007B270-8007B2B0 075BB0 0040+00 2/0 1/0 0/0 .text GetTriPla__4cBgWCFRC13cBgS_PolyInfo

File diff suppressed because it is too large Load Diff