summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphBase/J3DMatBlock.cpp
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2023-09-23 16:58:32 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2023-09-23 17:03:46 -0700
commit15343897d041f6fce71028a467ad8339ec1fceb1 (patch)
tree829c5eb81213840608bb6cc91dce61e07e4d29d1 /src/JSystem/J3DGraphBase/J3DMatBlock.cpp
parent45eef35f728198a518affe1796920c6d51bb8d81 (diff)
even more J3DMatBlock
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DMatBlock.cpp')
-rw-r--r--src/JSystem/J3DGraphBase/J3DMatBlock.cpp345
1 files changed, 279 insertions, 66 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp
index 686e3848..0c8f6a4c 100644
--- a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp
+++ b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp
@@ -4,10 +4,22 @@
//
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
+#include "JSystem/J3DGraphBase/J3DGD.h"
+#include "dolphin/gd/GDBase.h"
+#include "dolphin/os/OSCache.h"
#include "dolphin/types.h"
extern "C" extern const GXColor j3dDefaultColInfo;
extern "C" extern const GXColor j3dDefaultAmbInfo;
+extern "C" extern const GXColorS10 j3dDefaultTevColor;
+extern "C" extern const GXColor j3dDefaultTevKColor;
+
+extern bool isTexNoReg(void*);
+extern u16 getTexNoReg(void*);
+extern void loadTexNo(u32, const u16 &);
+
+extern void J3DGDSetTevColorS10(GXTevRegID, GXColorS10);
+extern void J3DGDSetTevKColor(GXTevKColorID, GXColor);
/* 802DF794-802DF7E4 .text initialize__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::initialize() {
@@ -44,62 +56,158 @@ void J3DColorBlockLightOn::initialize() {
/* 802DF91C-802DF94C .text initialize__21J3DTexGenBlockPatchedFv */
void J3DTexGenBlockPatched::initialize() {
- /* Nonmatching */
+ mTexGenNum = 0;
+ for (u32 i = 0; i < 8; i++)
+ mTexMtx[i] = NULL;
+ mTexMtxOffset = 0;
}
/* 802DF94C-802DF97C .text initialize__15J3DTexGenBlock4Fv */
void J3DTexGenBlock4::initialize() {
- /* Nonmatching */
+ mTexGenNum = 0;
+ for (u32 i = 0; i < 4; i++)
+ mTexMtx[i] = NULL;
+ mTexMtxOffset = 0;
}
/* 802DF97C-802DF9AC .text initialize__19J3DTexGenBlockBasicFv */
void J3DTexGenBlockBasic::initialize() {
- /* Nonmatching */
+ mTexGenNum = 0;
+ for (u32 i = 0; i < 8; i++)
+ mTexMtx[i] = NULL;
+ mTexMtxOffset = 0;
}
/* 802DF9AC-802DF9B8 .text initialize__15J3DTevBlockNullFv */
void J3DTevBlockNull::initialize() {
- /* Nonmatching */
+ mTexNoOffset = 0;
}
/* 802DF9B8-802DFABC .text initialize__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::initialize() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ mTexNo[i] = 0xFFFF;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevStage); i++) {
+ mTevStage[i].field_0x0 = 0xC0 + i * 2;
+ mTevStage[i].field_0x4 = 0xC1 + i * 2;
+ }
+ for (u32 i = 0; i < 3; i++)
+ mTevColor[i] = j3dDefaultTevColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ mTevKColor[i] = j3dDefaultTevKColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColorSel); i++)
+ mTevKColorSel[i] = GX_TEV_KCSEL_K0;
+ mTevStageNum = 1;
+ mTexNoOffset = 0;
+ mTevRegOffset = 0;
}
/* 802DFABC-802DFAE4 .text initialize__12J3DTevBlock1Fv */
void J3DTevBlock1::initialize() {
- /* Nonmatching */
+ mTexNo[0] = 0xFFFF;
+ mTevStage[0].field_0x0 = 0xC0;
+ mTevStage[0].field_0x4 = 0xC1;
+ mTexNoOffset = 0;
}
/* 802DFAE4-802DFBBC .text initialize__12J3DTevBlock2Fv */
void J3DTevBlock2::initialize() {
- /* Nonmatching */
+ mTexNo[0] = 0xFFFF;
+ mTexNo[1] = 0xFFFF;
+ mTevStageNum = 1;
+
+ mTevStage[0].field_0x0 = 0xC0;
+ mTevStage[0].field_0x4 = 0xC1;
+ mTevStage[1].field_0x0 = 0xC2;
+ mTevStage[1].field_0x4 = 0xC3;
+ mTevKColorSel[0] = GX_TEV_KCSEL_K0;
+ mTevKColorSel[1] = GX_TEV_KCSEL_K0;
+ mTevKAlphaSel[0] = GX_TEV_KASEL_K0_A;
+ mTevKAlphaSel[1] = GX_TEV_KASEL_K0_A;
+
+ for (u32 i = 0; i < 3; i++)
+ mTevColor[i] = j3dDefaultTevColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ mTevKColor[i] = j3dDefaultTevKColor;
+ mTexNoOffset = 0;
+ mTevRegOffset = 0;
}
/* 802DFBBC-802DFCCC .text initialize__12J3DTevBlock4Fv */
void J3DTevBlock4::initialize() {
- /* Nonmatching */
+ mTexNo[0] = 0xFFFF;
+ mTexNo[1] = 0xFFFF;
+ mTexNo[2] = 0xFFFF;
+ mTexNo[3] = 0xFFFF;
+ mTevStageNum = 1;
+
+ mTevStage[0].field_0x0 = 0xC0;
+ mTevStage[0].field_0x4 = 0xC1;
+ mTevStage[1].field_0x0 = 0xC2;
+ mTevStage[1].field_0x4 = 0xC3;
+ mTevStage[2].field_0x0 = 0xC4;
+ mTevStage[2].field_0x4 = 0xC5;
+ mTevStage[3].field_0x0 = 0xC6;
+ mTevStage[3].field_0x4 = 0xC7;
+ mTevKColorSel[0] = GX_TEV_KCSEL_K0;
+ mTevKColorSel[1] = GX_TEV_KCSEL_K0;
+ mTevKColorSel[2] = GX_TEV_KCSEL_K0;
+ mTevKColorSel[3] = GX_TEV_KCSEL_K0;
+ mTevKAlphaSel[0] = GX_TEV_KASEL_K0_A;
+ mTevKAlphaSel[1] = GX_TEV_KASEL_K0_A;
+ mTevKAlphaSel[2] = GX_TEV_KASEL_K0_A;
+ mTevKAlphaSel[3] = GX_TEV_KASEL_K0_A;
+
+ for (u32 i = 0; i < 3; i++)
+ mTevColor[i] = j3dDefaultTevColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ mTevKColor[i] = j3dDefaultTevKColor;
+ mTexNoOffset = 0;
+ mTevRegOffset = 0;
}
/* 802DFCCC-802DFDF0 .text initialize__13J3DTevBlock16Fv */
void J3DTevBlock16::initialize() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ mTexNo[i] = 0xFFFF;
+ mTevStageNum = 1;
+ for (u32 i = 0; i < 3; i++)
+ mTevColor[i] = j3dDefaultTevColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ mTevKColor[i] = j3dDefaultTevKColor;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColorSel); i++)
+ mTevKColorSel[i] = GX_TEV_KCSEL_K0;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColorSel); i++)
+ mTevKAlphaSel[i] = GX_TEV_KASEL_K0_A;
+ for (u32 i = 0; i < ARRAY_SIZE(mTevStage); i++) {
+ mTevStage[i].field_0x0 = 0xC0 + i * 2;
+ mTevStage[i].field_0x4 = 0xC1 + i * 2;
+ }
+ mTexNoOffset = 0;
+ mTevRegOffset = 0;
}
/* 802DFDF0-802DFDFC .text initialize__15J3DIndBlockFullFv */
void J3DIndBlockFull::initialize() {
- /* Nonmatching */
+ mIndTexStageNum = 0;
}
/* 802DFDFC-802DFE20 .text initialize__16J3DPEBlockFogOffFv */
void J3DPEBlockFogOff::initialize() {
- /* Nonmatching */
+ mAlphaComp.field_0x0 = 0xFFFF;
+ mZMode.mZModeID = 0xFFFF;
+ mZCompLoc = 0xFF;
+ mDither = 1;
}
/* 802DFE20-802DFE50 .text initialize__14J3DPEBlockFullFv */
void J3DPEBlockFull::initialize() {
- /* Nonmatching */
+ mFog = NULL;
+ mAlphaComp.field_0x0 = 0xFFFF;
+ mZMode.mZModeID = 0xFFFF;
+ mZCompLoc = 0xFF;
+ mDither = 1;
+ mFogOffset = 0;
}
/* 802DFE50-802DFE58 .text countDLSize__21J3DColorBlockLightOffFv */
@@ -204,7 +312,8 @@ void J3DColorBlockLightOn::load() {
/* 802E1180-802E11CC .text patch__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::patch() {
- /* Nonmatching */
+ patchMatColor();
+ patchLight();
}
/* 802E11CC-802E1378 .text patchMatColor__21J3DColorBlockLightOffFv */
@@ -219,7 +328,8 @@ void J3DColorBlockLightOff::patchLight() {
/* 802E17B4-802E1800 .text patch__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::patch() {
- /* Nonmatching */
+ patchMatColor();
+ patchLight();
}
/* 802E1800-802E19AC .text patchMatColor__20J3DColorBlockLightOnFv */
@@ -233,8 +343,11 @@ void J3DColorBlockLightOn::patchLight() {
}
/* 802E1E18-802E1E80 .text diff__21J3DColorBlockLightOffFUl */
-void J3DColorBlockLightOff::diff(u32 i) {
- /* Nonmatching */
+void J3DColorBlockLightOff::diff(u32 flag) {
+ if ((flag & 0x1) != 0)
+ diffMatColor();
+ if ((flag & 0x2) != 0)
+ diffLight();
}
/* 802E1E80-802E1FFC .text diffMatColor__21J3DColorBlockLightOffFv */
@@ -248,8 +361,11 @@ void J3DColorBlockLightOff::diffLight() {
}
/* 802E2408-802E2478 .text diff__20J3DColorBlockLightOnFUl */
-void J3DColorBlockLightOn::diff(u32 i) {
- /* Nonmatching */
+void J3DColorBlockLightOn::diff(u32 flag) {
+ if ((flag & 0x1))
+ diffMatColor();
+ if ((flag & 0x2) || (flag >> 4) & 0x0f)
+ diffLight();
}
/* 802E2478-802E25F4 .text diffMatColor__20J3DColorBlockLightOnFv */
@@ -288,8 +404,12 @@ void J3DTexGenBlockBasic::patch() {
}
/* 802E2D28-802E2D90 .text diff__21J3DTexGenBlockPatchedFUl */
-void J3DTexGenBlockPatched::diff(u32 i) {
- /* Nonmatching */
+void J3DTexGenBlockPatched::diff(u32 flag) {
+ if ((flag >> 8) & 0x0f) {
+ diffTexMtx();
+ if (flag & 0x1000)
+ diffTexGen();
+ }
}
/* 802E2D90-802E2DF0 .text diffTexMtx__21J3DTexGenBlockPatchedFv */
@@ -329,7 +449,16 @@ void J3DTevBlockPatched::patchTexNo() {
/* 802E414C-802E4218 .text patchTevReg__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::patchTevReg() {
- /* Nonmatching */
+ GDSetCurrOffset(mTevRegOffset);
+ u8 *pStart = GDGetCurrPointer();
+
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E4218-802E4394 .text patchTexNoAndTexCoordScale__18J3DTevBlockPatchedFv */
@@ -339,12 +468,20 @@ void J3DTevBlockPatched::patchTexNoAndTexCoordScale() {
/* 802E4394-802E43E0 .text patch__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::patch() {
- /* Nonmatching */
+ patchTexNo();
+ patchTevReg();
}
/* 802E43E0-802E4450 .text patchTexNo__12J3DTevBlock1Fv */
void J3DTevBlock1::patchTexNo() {
- /* Nonmatching */
+ GDSetCurrOffset(mTexNoOffset);
+ u8 *pStart = GDGetCurrPointer();
+
+ if (mTexNo[0] != 0xFFFF)
+ loadTexNo(0, mTexNo[0]);
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E4450-802E4454 .text patchTevReg__12J3DTevBlock1Fv */
@@ -368,7 +505,16 @@ void J3DTevBlock2::patchTexNo() {
/* 802E45F8-802E46C4 .text patchTevReg__12J3DTevBlock2Fv */
void J3DTevBlock2::patchTevReg() {
- /* Nonmatching */
+ GDSetCurrOffset(mTevRegOffset);
+ u8 *pStart = GDGetCurrPointer();
+
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E46C4-802E4814 .text patchTexNoAndTexCoordScale__12J3DTevBlock2Fv */
@@ -378,7 +524,8 @@ void J3DTevBlock2::patchTexNoAndTexCoordScale() {
/* 802E4814-802E4860 .text patch__12J3DTevBlock2Fv */
void J3DTevBlock2::patch() {
- /* Nonmatching */
+ patchTexNo();
+ patchTevReg();
}
/* 802E4860-802E48F4 .text patchTexNo__12J3DTevBlock4Fv */
@@ -388,7 +535,16 @@ void J3DTevBlock4::patchTexNo() {
/* 802E48F4-802E49C0 .text patchTevReg__12J3DTevBlock4Fv */
void J3DTevBlock4::patchTevReg() {
- /* Nonmatching */
+ GDSetCurrOffset(mTevRegOffset);
+ u8 *pStart = GDGetCurrPointer();
+
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E49C0-802E4B3C .text patchTexNoAndTexCoordScale__12J3DTevBlock4Fv */
@@ -398,7 +554,8 @@ void J3DTevBlock4::patchTexNoAndTexCoordScale() {
/* 802E4B3C-802E4B88 .text patch__12J3DTevBlock4Fv */
void J3DTevBlock4::patch() {
- /* Nonmatching */
+ patchTexNo();
+ patchTevReg();
}
/* 802E4B88-802E4C1C .text patchTexNo__13J3DTevBlock16Fv */
@@ -408,7 +565,16 @@ void J3DTevBlock16::patchTexNo() {
/* 802E4C1C-802E4CE8 .text patchTevReg__13J3DTevBlock16Fv */
void J3DTevBlock16::patchTevReg() {
- /* Nonmatching */
+ GDSetCurrOffset(mTevRegOffset);
+ u8 *pStart = GDGetCurrPointer();
+
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E4CE8-802E4E64 .text patchTexNoAndTexCoordScale__13J3DTevBlock16Fv */
@@ -418,17 +584,30 @@ void J3DTevBlock16::patchTexNoAndTexCoordScale() {
/* 802E4E64-802E4EB0 .text patch__13J3DTevBlock16Fv */
void J3DTevBlock16::patch() {
- /* Nonmatching */
+ patchTexNo();
+ patchTevReg();
}
/* 802E4EB0-802E4F6C .text diff__11J3DTevBlockFUl */
-void J3DTevBlock::diff(u32 i) {
- /* Nonmatching */
+void J3DTevBlock::diff(u32 flag) {
+ if ((flag >> 16) & 0x0f)
+ diffTexNo();
+ if (flag & 0x4000000)
+ diffTexCoordScale();
+ if ((flag >> 20) & 0x0f) {
+ diffTevStage();
+ if (flag & 0x8000000)
+ diffTevStageIndirect();
+ }
+ if (flag & 0x01000000)
+ diffTevReg();
}
/* 802E4F6C-802E4FD0 .text diffTexNo__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::diffTexNo() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ if (mTexNo[i] != 0xFFFF)
+ loadTexNo(i, mTexNo[i]);
}
/* 802E4FD0-802E50E4 .text diffTevStage__18J3DTevBlockPatchedFv */
@@ -443,7 +622,10 @@ void J3DTevBlockPatched::diffTevStageIndirect() {
/* 802E5194-802E5230 .text diffTevReg__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::diffTevReg() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
}
/* 802E5230-802E5328 .text diffTexCoordScale__18J3DTevBlockPatchedFv */
@@ -453,12 +635,12 @@ void J3DTevBlockPatched::diffTexCoordScale() {
/* 802E5328-802E5360 .text diffTexNo__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTexNo() {
- /* Nonmatching */
+ if (mTexNo[0] != 0xFFFF)
+ loadTexNo(0, mTexNo[0]);
}
/* 802E5360-802E5364 .text diffTevReg__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTevReg() {
- /* Nonmatching */
}
/* 802E5364-802E5454 .text diffTevStage__12J3DTevBlock1Fv */
@@ -478,12 +660,17 @@ void J3DTevBlock1::diffTexCoordScale() {
/* 802E553C-802E55A0 .text diffTexNo__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTexNo() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ if (mTexNo[i] != 0xFFFF)
+ loadTexNo(i, mTexNo[i]);
}
/* 802E55A0-802E563C .text diffTevReg__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTevReg() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
}
/* 802E563C-802E5750 .text diffTevStage__12J3DTevBlock2Fv */
@@ -503,12 +690,17 @@ void J3DTevBlock2::diffTexCoordScale() {
/* 802E58C4-802E5928 .text diffTexNo__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTexNo() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ if (mTexNo[i] != 0xFFFF)
+ loadTexNo(i, mTexNo[i]);
}
/* 802E5928-802E59C4 .text diffTevReg__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTevReg() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
}
/* 802E59C4-802E5AD8 .text diffTevStage__12J3DTevBlock4Fv */
@@ -528,12 +720,17 @@ void J3DTevBlock4::diffTexCoordScale() {
/* 802E5C80-802E5CE4 .text diffTexNo__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTexNo() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTexNo); i++)
+ if (mTexNo[i] != 0xFFFF)
+ loadTexNo(i, mTexNo[i]);
}
/* 802E5CE4-802E5D80 .text diffTevReg__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTevReg() {
- /* Nonmatching */
+ for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++)
+ J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]);
+ for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++)
+ J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]);
}
/* 802E5D80-802E5E94 .text diffTevStage__13J3DTevBlock16Fv */
@@ -562,8 +759,21 @@ void J3DTevBlockPatched::ptrToIndex() {
}
/* 802E6204-802E6298 .text indexToPtr_private__11J3DTevBlockFUl */
-void J3DTevBlock::indexToPtr_private(u32 i) {
- /* Nonmatching */
+void J3DTevBlock::indexToPtr_private(u32 offs) {
+ GDSetCurrOffset(offs);
+ u8* pStart = GDGetCurrPointer();
+
+ for (u32 i = 0; ; i++) {
+ u8* pDL = GDGetCurrPointer();
+ if (!isTexNoReg(pDL))
+ break;
+
+ u16 texNoReg = getTexNoReg(pDL);
+ loadTexNo(i, texNoReg);
+ }
+
+ u8 *pEnd = GDGetCurrPointer();
+ DCFlushRange(pStart, pEnd - pStart);
}
/* 802E6298-802E6494 .text load__15J3DIndBlockFullFv */
@@ -572,7 +782,7 @@ void J3DIndBlockFull::load() {
}
/* 802E6494-802E657C .text diff__15J3DIndBlockFullFUl */
-void J3DIndBlockFull::diff(u32 i) {
+void J3DIndBlockFull::diff(u32 flag) {
/* Nonmatching */
}
@@ -622,8 +832,11 @@ void J3DPEBlockFull::diffBlend() {
}
/* 802E7E44-802E7EAC .text diff__14J3DPEBlockFullFUl */
-void J3DPEBlockFull::diff(u32 i) {
- /* Nonmatching */
+void J3DPEBlockFull::diff(u32 flag) {
+ if ((flag & 0x10000000))
+ diffFog();
+ if ((flag & 0x20000000))
+ diffBlend();
}
/* 802E7EAC-802E7F88 .text reset__21J3DColorBlockLightOffFP13J3DColorBlock */
@@ -837,8 +1050,9 @@ J3DPEBlockFull::~J3DPEBlockFull() {
}
/* 802EA088-802EA0BC .text diff__16J3DPEBlockFogOffFUl */
-void J3DPEBlockFogOff::diff(u32 i) {
- /* Nonmatching */
+void J3DPEBlockFogOff::diff(u32 flag) {
+ if ((flag & 0x20000000) != 0)
+ diffBlend();
}
/* 802EA0BC-802EA0C8 .text getType__16J3DPEBlockFogOffFv */
@@ -1043,17 +1257,17 @@ u8 J3DTevBlock16::getTevStageNum() const {
/* 802EA410-802EA44C .text setTevStage__13J3DTevBlock16FUl11J3DTevStage */
void J3DTevBlock16::setTevStage(u32 i, J3DTevStage stage) {
- /* Nonmatching */
+ mTevStage[i] = stage;
}
/* 802EA44C-802EA488 .text setTevStage__13J3DTevBlock16FUlPC11J3DTevStage */
void J3DTevBlock16::setTevStage(u32 i, const J3DTevStage* pStage) {
- /* Nonmatching */
+ mTevStage[i] = *pStage;
}
/* 802EA488-802EA49C .text getTevStage__13J3DTevBlock16FUl */
J3DTevStage * J3DTevBlock16::getTevStage(u32 i) {
- /* Nonmatching */
+ return &mTevStage[i];
}
/* 802EA49C-802EA4D4 .text setTevSwapModeInfo__13J3DTevBlock16FUl18J3DTevSwapModeInfo */
@@ -1068,17 +1282,17 @@ void J3DTevBlock16::setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo*) {
/* 802EA50C-802EA51C .text setTevSwapModeTable__13J3DTevBlock16FUl19J3DTevSwapModeTable */
void J3DTevBlock16::setTevSwapModeTable(u32 i, J3DTevSwapModeTable table) {
- /* Nonmatching */
+ mTevSwapModeTable[i] = table;
}
/* 802EA51C-802EA52C .text setTevSwapModeTable__13J3DTevBlock16FUlPC19J3DTevSwapModeTable */
void J3DTevBlock16::setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) {
- /* Nonmatching */
+ mTevSwapModeTable[i] = *pTable;
}
/* 802EA52C-802EA53C .text getTevSwapModeTable__13J3DTevBlock16FUl */
J3DTevSwapModeTable * J3DTevBlock16::getTevSwapModeTable(u32 i) {
- /* Nonmatching */
+ return &mTevSwapModeTable[i];
}
/* 802EA53C-802EA550 .text setIndTevStage__13J3DTevBlock16FUl14J3DIndTevStage */
@@ -1093,7 +1307,7 @@ void J3DTevBlock16::setIndTevStage(u32 i, const J3DIndTevStage* pStage) {
/* 802EA564-802EA578 .text getIndTevStage__13J3DTevBlock16FUl */
J3DIndTevStage * J3DTevBlock16::getIndTevStage(u32 i) {
- /* Nonmatching */
+ return &mIndTevStage[i];
}
/* 802EA578-802EA580 .text getTexNoOffset__13J3DTevBlock16CFv */
@@ -1117,13 +1331,12 @@ J3DTevBlock16::~J3DTevBlock16() {
}
/* 802EA5EC-802EA5F4 .text setTexNoOffset__11J3DTevBlockFUl */
-void J3DTevBlock::setTexNoOffset(u32 i) {
- mTexNoOffset = i;
+void J3DTevBlock::setTexNoOffset(u32 offs) {
+ mTexNoOffset = offs;
}
/* 802EA5F4-802EA5F8 .text ptrToIndex__12J3DTevBlock4Fv */
void J3DTevBlock4::ptrToIndex() {
- /* Nonmatching */
}
/* 802EA5F8-802EA61C .text indexToPtr__12J3DTevBlock4Fv */
@@ -1133,7 +1346,7 @@ void J3DTevBlock4::indexToPtr() {
/* 802EA61C-802EA628 .text getType__12J3DTevBlock4Fv */
u32 J3DTevBlock4::getType() {
- /* Nonmatching */
+ return 'TVB4';
}
/* 802EA628-802EA638 .text setTexNo__12J3DTevBlock4FUlUs */
@@ -1243,17 +1456,17 @@ u8 J3DTevBlock4::getTevStageNum() const {
/* 802EA7FC-802EA838 .text setTevStage__12J3DTevBlock4FUl11J3DTevStage */
void J3DTevBlock4::setTevStage(u32 i, J3DTevStage stage) {
- /* Nonmatching */
+ mTevStage[i] = stage;
}
/* 802EA838-802EA874 .text setTevStage__12J3DTevBlock4FUlPC11J3DTevStage */
void J3DTevBlock4::setTevStage(u32 i, const J3DTevStage* pStage) {
- /* Nonmatching */
+ mTevStage[i] = *pStage;
}
/* 802EA874-802EA888 .text getTevStage__12J3DTevBlock4FUl */
J3DTevStage * J3DTevBlock4::getTevStage(u32 i) {
- /* Nonmatching */
+ return &mTevStage[i];
}
/* 802EA888-802EA8C0 .text setTevSwapModeInfo__12J3DTevBlock4FUl18J3DTevSwapModeInfo */
@@ -1268,17 +1481,17 @@ void J3DTevBlock4::setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo*) {
/* 802EA8F8-802EA908 .text setTevSwapModeTable__12J3DTevBlock4FUl19J3DTevSwapModeTable */
void J3DTevBlock4::setTevSwapModeTable(u32 i, J3DTevSwapModeTable table) {
- /* Nonmatching */
+ mTevSwapModeTable[i] = table;
}
/* 802EA908-802EA918 .text setTevSwapModeTable__12J3DTevBlock4FUlPC19J3DTevSwapModeTable */
void J3DTevBlock4::setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) {
- /* Nonmatching */
+ mTevSwapModeTable[i] = *pTable;
}
/* 802EA918-802EA928 .text getTevSwapModeTable__12J3DTevBlock4FUl */
J3DTevSwapModeTable * J3DTevBlock4::getTevSwapModeTable(u32 i) {
- /* Nonmatching */
+ return &mTevSwapModeTable[i];
}
/* 802EA928-802EA93C .text setIndTevStage__12J3DTevBlock4FUl14J3DIndTevStage */
@@ -1293,7 +1506,7 @@ void J3DTevBlock4::setIndTevStage(u32 i, const J3DIndTevStage* pStage) {
/* 802EA950-802EA964 .text getIndTevStage__12J3DTevBlock4FUl */
J3DIndTevStage * J3DTevBlock4::getIndTevStage(u32 i) {
- /* Nonmatching */
+ return &mIndTevStage[i];
}
/* 802EA964-802EA96C .text getTexNoOffset__12J3DTevBlock4CFv */