summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphBase/J3DTevs.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-09-04 07:56:59 -0700
committerGitHub <noreply@github.com>2025-09-04 17:56:59 +0300
commitb45a089e15d79821b07be020db628e01a49b1fd2 (patch)
tree948057548cc19b19d644bd4f300ca6434e6bff11 /src/JSystem/J3DGraphBase/J3DTevs.cpp
parentee8b843996f4d888903f8c125b95ec1af376877e (diff)
some J3D/misc cleanup (#2628)
* some j3d cleanup * begin using uintptr_t * j3dgraphbase cleanup * j3dgraphanimator cleanup
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DTevs.cpp')
-rw-r--r--src/JSystem/J3DGraphBase/J3DTevs.cpp82
1 files changed, 49 insertions, 33 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DTevs.cpp b/src/JSystem/J3DGraphBase/J3DTevs.cpp
index da4bdc4b44..338198883a 100644
--- a/src/JSystem/J3DGraphBase/J3DTevs.cpp
+++ b/src/JSystem/J3DGraphBase/J3DTevs.cpp
@@ -9,7 +9,7 @@
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "global.h"
-static void J3DGDLoadTexMtxImm(f32 (*)[4], u32, _GXTexMtxType);
+static void J3DGDLoadTexMtxImm(f32 (*)[4], u32, GXTexMtxType);
static void J3DGDLoadPostTexMtxImm(f32 (*)[4], u32);
/* 80323590-80323644 31DED0 00B4+00 0/0 3/3 0/0 .text load__11J3DLightObjCFUl */
@@ -23,23 +23,33 @@ void J3DLightObj::load(u32 lightIdx) const {
/* 80323644-803238C4 31DF84 0280+00 0/0 3/3 0/0 .text loadTexCoordGens__FUlP11J3DTexCoord
*/
-void loadTexCoordGens(u32 param_0, J3DTexCoord* param_1) {
- GDOverflowCheck(param_0 * 8 + 10);
- J3DGDWriteXFCmdHdr(0x1040, param_0);
- for (int i = 0; i < param_0; i++) {
+void loadTexCoordGens(u32 texGenNum, J3DTexCoord* texCoords) {
+ u32 var_r28;
+ GDOverflowCheck(texGenNum * 4 * 2 + 10);
+ J3DGDWriteXFCmdHdr(GX_XF_REG_TEX0, texGenNum);
+
+ for (int i = 0; i < texGenNum; i++) {
J3DGDSetTexCoordGen(
- GXTexGenType(param_1[i].getTexGenType()),
- GXTexGenSrc(param_1[i].getTexGenSrc())
+ GXTexGenType(texCoords[i].getTexGenType()),
+ GXTexGenSrc(texCoords[i].getTexGenSrc())
);
}
- J3DGDWriteXFCmdHdr(0x1050, param_0);
+
+ var_r28 = 61;
+ J3DGDWriteXFCmdHdr(GX_XF_REG_DUALTEX0, texGenNum);
+
if (j3dSys.checkFlag(0x40000000)) {
- for (int i = 0; i < param_0; i++) {
- J3DGDWrite_u32(param_1[i].getTexGenMtx() == 60 ? 61 : i * 3);
+ for (int i = 0; i < texGenNum; i++) {
+ if (texCoords[i].getTexGenMtx() != 60) {
+ var_r28 = i * 3;
+ } else {
+ var_r28 = 61;
+ }
+ J3DGDWrite_u32(var_r28);
}
} else {
- for (int i = 0; i < param_0; i++) {
- J3DGDWrite_u32(61);
+ for (int i = 0; i < texGenNum; i++) {
+ J3DGDWrite_u32(var_r28);
}
}
}
@@ -74,7 +84,7 @@ void J3DTexMtx::calcTexMtx(const Mtx param_0) {
0.0f, 0.0f, 1.0f, 0.0f,
};
- u8 r28 = mTexMtxInfo.mInfo & 0x3f;
+ u32 r28 = mTexMtxInfo.mInfo & 0x3f;
u32 r30 = (mTexMtxInfo.mInfo >> 7) & 1;
switch (r28) {
case 8:
@@ -171,7 +181,7 @@ void J3DTexMtx::calcPostTexMtx(const Mtx param_0) {
0.0f, 0.0f, 1.0f, 0.0f,
};
- u8 r29 = mTexMtxInfo.mInfo & 0x3f;
+ u32 r29 = mTexMtxInfo.mInfo & 0x3f;
u32 r30 = (mTexMtxInfo.mInfo >> 7) & 1;
switch (r29) {
case 8:
@@ -264,8 +274,8 @@ void J3DTexMtx::calcPostTexMtx(const Mtx param_0) {
}
/* 80323F64-80323F88 31E8A4 0024+00 0/0 1/1 0/0 .text isTexNoReg__FPv */
-bool isTexNoReg(void* param_0) {
- u8 r31 = ((u8*)param_0)[1];
+bool isTexNoReg(void* pDL) {
+ u8 r31 = ((u8*)pDL)[1];
if (r31 >= 0x80 && r31 <= 0xbb) {
return true;
}
@@ -273,19 +283,24 @@ bool isTexNoReg(void* param_0) {
}
/* 80323F88-80323F94 31E8C8 000C+00 0/0 1/1 0/0 .text getTexNoReg__FPv */
-u16 getTexNoReg(void* param_0) {
- return *(u32*)((u8*)param_0 + 1);
+u16 getTexNoReg(void* pDL) {
+ u32 var_r31 = *(u32*)((u8*)pDL + 1);
+ return var_r31 & 0xFFFFFF;
}
/* 80323F94-8032413C 31E8D4 01A8+00 0/0 20/20 0/0 .text loadTexNo__FUlRCUs */
-void loadTexNo(u32 param_0, u16 const& param_1) {
- ResTIMG* resTIMG = j3dSys.getTexture()->getResTIMG(param_1);
- J3DSys::sTexCoordScaleTable[param_0].field_0x00 = resTIMG->width;
- J3DSys::sTexCoordScaleTable[param_0].field_0x02 = resTIMG->height;
+void loadTexNo(u32 param_0, const u16& texNo) {
+ ResTIMG* resTIMG = j3dSys.getTexture()->getResTIMG(texNo);
+ J3D_ASSERT_NULLPTR(462, resTIMG != NULL);
+
+ J3DSys::sTexCoordScaleTable[param_0].field_0x00 = (u16)resTIMG->width;
+ J3DSys::sTexCoordScaleTable[param_0].field_0x02 = (u16)resTIMG->height;
+
GDOverflowCheck(0x14);
J3DGDSetTexImgPtr(GXTexMapID(param_0), (u8*)resTIMG + resTIMG->imageOffset);
J3DGDSetTexImgAttr(GXTexMapID(param_0), resTIMG->width, resTIMG->height, GXTexFmt(resTIMG->format & 0x0f));
J3DGDSetTexLookupMode(GXTexMapID(param_0), GXTexWrapMode(resTIMG->wrapS), GXTexWrapMode(resTIMG->wrapT), GXTexFilter(resTIMG->minFilter), GXTexFilter(resTIMG->magFilter), resTIMG->minLOD * 0.125f, resTIMG->maxLOD * 0.125f, resTIMG->LODBias * 0.01f, resTIMG->biasClamp, resTIMG->doEdgeLOD, GXAnisotropy(resTIMG->maxAnisotropy));
+
if (resTIMG->indexTexture == true) {
GXTlutSize tlutSize = resTIMG->numColors > 16 ? GX_TLUT_256 : GX_TLUT_16;
GDOverflowCheck(0x14);
@@ -295,20 +310,22 @@ void loadTexNo(u32 param_0, u16 const& param_1) {
}
/* 8032413C-80324160 31EA7C 0024+00 0/0 2/2 0/0 .text patchTexNo_PtrToIdx__FUlRCUs */
-void patchTexNo_PtrToIdx(u32 texID, u16 const& idx) {
+void patchTexNo_PtrToIdx(u32 texID, const u16& idx) {
+ ResTIMG* timg = j3dSys.getTexture()->getResTIMG(idx);
+ J3D_ASSERT_NULLPTR(523, timg != NULL);
+
J3DGDSetTexImgPtrRaw(GXTexMapID(texID), idx);
}
/* 80324160-80324194 31EAA0 0034+00 0/0 2/2 0/0 .text loadNBTScale__FR11J3DNBTScale */
-void loadNBTScale(J3DNBTScale& param_0) {
- if (param_0.mbHasScale == true) {
- j3dSys.setNBTScale(&param_0.mScale);
+void loadNBTScale(J3DNBTScale& NBTScale) {
+ if (NBTScale.mbHasScale == true) {
+ j3dSys.setNBTScale(&NBTScale.mScale);
} else {
j3dSys.setNBTScale(NULL);
}
}
-/* ############################################################################################## */
/* 803A1EC8-803A1EFC 02E528 0034+00 0/0 9/9 24/24 .rodata j3dDefaultLightInfo */
extern const J3DLightInfo j3dDefaultLightInfo = {
0.0f, 0.0f, 0.0f,
@@ -399,7 +416,6 @@ void makeTexCoordTable() {
}
}
-/* ############################################################################################## */
/* 80436A60-80436E60 063780 0400+00 1/1 3/3 0/0 .bss j3dTevSwapTableTable */
u8 j3dTevSwapTableTable[1024];
@@ -421,7 +437,6 @@ void makeAlphaCmpTable() {
}
}
-/* ############################################################################################## */
/* 80437160-804371C0 063E80 0060+00 1/1 4/4 5/5 .bss j3dZModeTable */
extern u8 j3dZModeTable[96];
u8 j3dZModeTable[96];
@@ -472,7 +487,7 @@ void J3DTexMtx::loadPostTexMtx(u32 param_0) const {
static void J3DGDLoadTexMtxImm(f32 (*param_1)[4], u32 param_2, _GXTexMtxType param_3) {
u16 addr = param_2 << 2;
u8 len = param_3 == GX_MTX2x4 ? 8 : 12;
- J3DGDWriteXFCmdHdr(addr & 0xffff, len);
+ J3DGDWriteXFCmdHdr(addr, len);
J3DGDWrite_f32(param_1[0][0]);
J3DGDWrite_f32(param_1[0][1]);
J3DGDWrite_f32(param_1[0][2]);
@@ -492,7 +507,9 @@ static void J3DGDLoadTexMtxImm(f32 (*param_1)[4], u32 param_2, _GXTexMtxType par
/* 8032499C-80324F08 31F2DC 056C+00 1/1 0/0 0/0 .text J3DGDLoadPostTexMtxImm__FPA4_fUl */
static void J3DGDLoadPostTexMtxImm(f32 (*param_1)[4], u32 param_2) {
u16 addr = (param_2 - 0x40) * 4 + 0x500;
- J3DGDWriteXFCmdHdr(addr, 12);
+ int stride = 12;
+
+ J3DGDWriteXFCmdHdr(addr, stride);
J3DGDWrite_f32(param_1[0][0]);
J3DGDWrite_f32(param_1[0][1]);
J3DGDWrite_f32(param_1[0][2]);
@@ -507,7 +524,6 @@ static void J3DGDLoadPostTexMtxImm(f32 (*param_1)[4], u32 param_2) {
J3DGDWrite_f32(param_1[2][3]);
}
-/* ############################################################################################## */
/* 804563C0-804563C4 0049C0 0004+00 0/0 4/4 0/0 .sdata2 j3dDefaultColInfo */
extern const GXColor j3dDefaultColInfo = {0xFF, 0xFF, 0xFF, 0xFF};
@@ -515,7 +531,7 @@ extern const GXColor j3dDefaultColInfo = {0xFF, 0xFF, 0xFF, 0xFF};
extern const GXColor j3dDefaultAmbInfo = {0x32, 0x32, 0x32, 0x32};
/* 804563C8-804563CC 0049C8 0004+00 0/0 1/1 0/0 .sdata2 None */
-extern const u8 data_804563C8 = 0x01;
+extern const u8 j3dDefaultNumChans = 1;
/* 804563CC-804563D0 0049CC 0004+00 0/0 3/3 0/0 .sdata2 j3dDefaultTevOrderInfoNull */
extern const J3DTevOrderInfo j3dDefaultTevOrderInfoNull = {0xFF, 0xFF, 0xFF, 0x00};