Files
tp/src/JSystem/J3DGraphBase/J3DMatBlock.cpp
T
TakaRikka b45a089e15 some J3D/misc cleanup (#2628)
* some j3d cleanup

* begin using uintptr_t

* j3dgraphbase cleanup

* j3dgraphanimator cleanup
2025-09-04 17:56:59 +03:00

2204 lines
71 KiB
C++

#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "global.h"
#include <string.h>
inline void loadMatColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100C, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
}
inline void loadAmbColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100A, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
}
inline void loadTexCoordScale(GXTexCoordID coord, const J3DTexCoordScaleInfo& info) {
J3DGDSetTexCoordScale2(coord, info.field_0x00, info.field_0x04 == 1, 0, info.field_0x02, info.field_0x06 == 1, 0);
}
inline void loadTevColor(u32 reg, const J3DGXColorS10& color) {
J3DGDSetTevColorS10(GXTevRegID(reg + 1), color);
}
inline void loadTevKColor(u32 reg, const J3DGXColor& color) {
J3DGDSetTevKColor(GXTevKColorID(reg), color);
}
/* 8031747C-803174DC 311DBC 0060+00 0/0 1/1 0/0 .text initialize__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::initialize() {
mColorChanNum = 0;
for (int i = 0; i < ARRAY_SIZE(mMatColor); i++) {
mMatColor[i] = j3dDefaultColInfo;
}
mMatColorOffset = 0;
mColorChanOffset = 0;
}
/* 803174DC-80317580 311E1C 00A4+00 0/0 1/1 0/0 .text initialize__22J3DColorBlockAmbientOnFv */
void J3DColorBlockAmbientOn::initialize() {
mColorChanNum = 0;
for (int i = 0; i < ARRAY_SIZE(mMatColor); i++) {
mMatColor[i] = j3dDefaultColInfo;
}
for (int i = 0; i < ARRAY_SIZE(mAmbColor); i++) {
mAmbColor[i] = j3dDefaultAmbInfo;
}
mMatColorOffset = 0;
mColorChanOffset = 0;
}
/* 80317580-80317644 311EC0 00C4+00 0/0 1/1 0/0 .text initialize__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::initialize() {
mColorChanNum = 0;
for (int i = 0; i < ARRAY_SIZE(mMatColor); i++) {
mMatColor[i] = j3dDefaultColInfo;
}
for (int i = 0; i < ARRAY_SIZE(mAmbColor); i++) {
mAmbColor[i] = j3dDefaultAmbInfo;
}
for (int i = 0; i < ARRAY_SIZE(mLight); i++) {
mLight[i] = NULL;
}
mMatColorOffset = 0;
mColorChanOffset = 0;
}
/* 80317644-80317674 311F84 0030+00 0/0 2/2 0/0 .text initialize__21J3DTexGenBlockPatchedFv */
void J3DTexGenBlockPatched::initialize() {
mTexGenNum = 0;
for (int i = 0; i < 8; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
/* 80317674-803176A4 311FB4 0030+00 0/0 1/1 0/0 .text initialize__15J3DTexGenBlock4Fv */
void J3DTexGenBlock4::initialize() {
mTexGenNum = 0;
for (int i = 0; i < 4; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
/* 803176A4-803176D4 311FE4 0030+00 0/0 1/1 0/0 .text initialize__19J3DTexGenBlockBasicFv
*/
void J3DTexGenBlockBasic::initialize() {
mTexGenNum = 0;
for (int i = 0; i < 8; i++)
mTexMtx[i] = NULL;
mTexMtxOffset = 0;
}
/* 803176D4-803176E0 312014 000C+00 0/0 1/1 0/0 .text initialize__15J3DTevBlockNullFv */
void J3DTevBlockNull::initialize() {
mTexNoOffset = 0;
}
/* 803176E0-803177E8 312020 0108+00 0/0 1/1 0/0 .text initialize__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::initialize() {
for (int i = 0; i < ARRAY_SIZE(mTexNo); i++) {
mTexNo[i] = 0xFFFF;
}
for (int i = 0; i < ARRAY_SIZEU(mTevStage); i++) {
mTevStage[i].setStageNo(i);
}
for (int i = 0; i < 3; i++) {
mTevColor[i] = j3dDefaultTevColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColor); i++) {
mTevKColor[i] = j3dDefaultTevKColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColorSel); i++) {
mTevKColorSel[i] = GX_TEV_KCSEL_K0;
}
mTevStageNum = 1;
mTexNoOffset = 0;
mTevRegOffset = 0;
}
/* 803177E8-80317810 312128 0028+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock1Fv */
void J3DTevBlock1::initialize() {
mTexNo[0] = 0xFFFF;
mTevStage[0].setStageNo(0);
mTexNoOffset = 0;
}
/* 80317810-803178EC 312150 00DC+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock2Fv */
void J3DTevBlock2::initialize() {
mTexNo[0] = 0xFFFF;
mTexNo[1] = 0xFFFF;
mTevStageNum = 1;
mTevStage[0].setStageNo(0);
mTevStage[1].setStageNo(1);
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 (int i = 0; i < 3; i++) {
mTevColor[i] = j3dDefaultTevColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColor); i++) {
mTevKColor[i] = j3dDefaultTevKColor;
}
mTexNoOffset = 0;
mTevRegOffset = 0;
}
/* 803178EC-80317A00 31222C 0114+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock4Fv */
void J3DTevBlock4::initialize() {
mTexNo[0] = 0xFFFF;
mTexNo[1] = 0xFFFF;
mTexNo[2] = 0xFFFF;
mTexNo[3] = 0xFFFF;
mTevStageNum = 1;
mTevStage[0].setStageNo(0);
mTevStage[1].setStageNo(1);
mTevStage[2].setStageNo(2);
mTevStage[3].setStageNo(3);
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 (int i = 0; i < 3; i++) {
mTevColor[i] = j3dDefaultTevColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColor); i++) {
mTevKColor[i] = j3dDefaultTevKColor;
}
mTexNoOffset = 0;
mTevRegOffset = 0;
}
/* 80317A00-80317B28 312340 0128+00 0/0 1/1 0/0 .text initialize__13J3DTevBlock16Fv */
void J3DTevBlock16::initialize() {
for (int i = 0; i < ARRAY_SIZE(mTexNo); i++) {
mTexNo[i] = 0xFFFF;
}
mTevStageNum = 1;
for (int i = 0; i < 3; i++) {
mTevColor[i] = j3dDefaultTevColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColor); i++) {
mTevKColor[i] = j3dDefaultTevKColor;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColorSel); i++) {
mTevKColorSel[i] = GX_TEV_KCSEL_K0;
}
for (int i = 0; i < ARRAY_SIZE(mTevKColorSel); i++) {
mTevKAlphaSel[i] = GX_TEV_KASEL_K0_A;
}
for (int i = 0; i < ARRAY_SIZEU(mTevStage); i++) {
mTevStage[i].setStageNo(i);
}
mTexNoOffset = 0;
mTevRegOffset = 0;
}
/* 80317B28-80317B34 312468 000C+00 0/0 1/1 0/0 .text initialize__15J3DIndBlockFullFv */
void J3DIndBlockFull::initialize() {
mIndTexStageNum = 0;
}
/* 80317B34-80317B58 312474 0024+00 0/0 1/1 0/0 .text initialize__16J3DPEBlockFogOffFv */
void J3DPEBlockFogOff::initialize() {
mAlphaComp = 0xFFFF;
mZMode = 0xFFFF;
mZCompLoc = 0xFF;
mDither = 1;
}
/* 80317B58-80317B84 312498 002C+00 0/0 1/1 0/0 .text initialize__14J3DPEBlockFullFv */
void J3DPEBlockFull::initialize() {
mAlphaComp = 0xFFFF;
mZMode = 0xFFFF;
mZCompLoc = 0xFF;
mDither = 1;
mFogOffset = 0;
}
/* 80317B84-80317B8C 3124C4 0008+00 1/0 0/0 0/0 .text countDLSize__21J3DColorBlockLightOffFv */
s32 J3DColorBlockLightOff::countDLSize() {
return 34;
}
/* 80317B8C-80317B94 3124CC 0008+00 1/0 0/0 0/0 .text countDLSize__22J3DColorBlockAmbientOnFv */
s32 J3DColorBlockAmbientOn::countDLSize() {
return 47;
}
/* 80317B94-80317B9C 3124D4 0008+00 1/0 0/0 0/0 .text countDLSize__20J3DColorBlockLightOnFv */
s32 J3DColorBlockLightOn::countDLSize() {
return 623;
}
/* 80317B9C-80317BA4 3124DC 0008+00 1/0 0/0 0/0 .text countDLSize__21J3DTexGenBlockPatchedFv */
s32 J3DTexGenBlockPatched::countDLSize() {
return 424;
}
/* 80317BA4-80317BAC 3124E4 0008+00 1/0 0/0 0/0 .text countDLSize__15J3DTexGenBlock4Fv */
s32 J3DTexGenBlock4::countDLSize() {
return 254;
}
/* 80317BAC-80317BB4 3124EC 0008+00 1/0 0/0 0/0 .text countDLSize__19J3DTexGenBlockBasicFv */
s32 J3DTexGenBlockBasic::countDLSize() {
return 498;
}
/* 80317BB4-80317BBC 3124F4 0008+00 1/0 0/0 0/0 .text countDLSize__18J3DTevBlockPatchedFv
*/
s32 J3DTevBlockPatched::countDLSize() {
return 560;
}
/* 80317BBC-80317BC4 3124FC 0008+00 1/0 0/0 0/0 .text countDLSize__12J3DTevBlock1Fv */
s32 J3DTevBlock1::countDLSize() {
return 105;
}
/* 80317BC4-80317BCC 312504 0008+00 1/0 0/0 0/0 .text countDLSize__12J3DTevBlock2Fv */
s32 J3DTevBlock2::countDLSize() {
return 335;
}
/* 80317BCC-80317BD4 31250C 0008+00 1/0 0/0 0/0 .text countDLSize__12J3DTevBlock4Fv */
s32 J3DTevBlock4::countDLSize() {
return 580;
}
/* 80317BD4-80317BDC 312514 0008+00 1/0 0/0 0/0 .text countDLSize__13J3DTevBlock16Fv */
s32 J3DTevBlock16::countDLSize() {
return 1000;
}
/* 80317BDC-80317BE4 31251C 0008+00 1/0 0/0 0/0 .text countDLSize__15J3DIndBlockFullFv */
s32 J3DIndBlockFull::countDLSize() {
return 140;
}
/* 80317BE4-80317BEC 312524 0008+00 1/0 0/0 0/0 .text countDLSize__13J3DPEBlockOpaFv */
s32 J3DPEBlockOpa::countDLSize() {
return 30;
}
/* 80317BEC-80317BF4 31252C 0008+00 1/0 0/0 0/0 .text countDLSize__17J3DPEBlockTexEdgeFv
*/
s32 J3DPEBlockTexEdge::countDLSize() {
return 30;
}
/* 80317BF4-80317BFC 312534 0008+00 1/0 0/0 0/0 .text countDLSize__13J3DPEBlockXluFv */
s32 J3DPEBlockXlu::countDLSize() {
return 30;
}
/* 80317BFC-80317C04 31253C 0008+00 1/0 0/0 0/0 .text countDLSize__16J3DPEBlockFogOffFv
*/
s32 J3DPEBlockFogOff::countDLSize() {
return 30;
}
/* 80317C04-80317C0C 312544 0008+00 1/0 0/0 0/0 .text countDLSize__14J3DPEBlockFullFv */
s32 J3DPEBlockFull::countDLSize() {
return 85;
}
/* 80450960-80450964 0003E0 0004+00 5/5 0/0 0/0 .sdata SizeOfLoadMatColors */
static u32 SizeOfLoadMatColors = 13;
/* 80450964-80450968 0003E4 0004+00 2/2 0/0 0/0 .sdata SizeOfLoadAmbColors */
static u32 SizeOfLoadAmbColors = 13;
/* 80450968-80450970 0003E8 0004+04 5/5 0/0 0/0 .sdata SizeOfLoadColorChans */
static u32 SizeOfLoadColorChans = 21;
static u8 sdata_padding[4] = {};
/* 804515D8-804515DC 000AD8 0004+00 2/2 0/0 0/0 .sbss SizeOfJ3DColorBlockLightOffLoad */
static u32 SizeOfJ3DColorBlockLightOffLoad = SizeOfLoadMatColors + SizeOfLoadColorChans;
/* 80317C0C-8031816C 31254C 0560+00 1/0 0/0 0/0 .text load__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::load() {
GDOverflowCheck(SizeOfJ3DColorBlockLightOffLoad);
mMatColorOffset = GDGetCurrOffset();
loadMatColors(mMatColor);
mColorChanOffset = GDGetCurrOffset();
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
}
/* 804515DC-804515E0 000ADC 0004+00 3/3 0/0 0/0 .sbss SizeOfJ3DColorBlockAmbientOnLoad */
static u32 SizeOfJ3DColorBlockAmbientOnLoad = SizeOfLoadMatColors + SizeOfLoadAmbColors + SizeOfLoadColorChans;
/* 8031816C-803187F4 312AAC 0688+00 1/0 0/0 0/0 .text load__22J3DColorBlockAmbientOnFv */
void J3DColorBlockAmbientOn::load() {
GDOverflowCheck(SizeOfJ3DColorBlockAmbientOnLoad);
mMatColorOffset = GDGetCurrOffset();
loadMatColors(mMatColor);
loadAmbColors(mAmbColor);
mColorChanOffset = GDGetCurrOffset();
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
}
/* 803187F4-80318EB4 313134 06C0+00 1/0 0/0 0/0 .text load__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::load() {
GDOverflowCheck(SizeOfJ3DColorBlockAmbientOnLoad);
mMatColorOffset = GDGetCurrOffset();
loadMatColors(mMatColor);
loadAmbColors(mAmbColor);
mColorChanOffset = GDGetCurrOffset();
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
for (u32 i = 0; i < 8; i++) {
if (mLight[i] != NULL) {
mLight[i]->load(i);
}
}
}
/* 80318EB4-80318F00 3137F4 004C+00 2/0 0/0 0/0 .text patch__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::patch() {
patchMatColor();
patchLight();
}
/* 80318F00-803190AC 313840 01AC+00 2/0 0/0 0/0 .text patchMatColor__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::patchMatColor() {
GDSetCurrOffset(mMatColorOffset);
void* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 803190AC-803194E8 3139EC 043C+00 2/0 0/0 0/0 .text patchLight__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::patchLight() {
GDSetCurrOffset(mColorChanOffset);
void* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadColorChans);
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 803194E8-80319534 313E28 004C+00 1/0 0/0 0/0 .text patch__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::patch() {
patchMatColor();
patchLight();
}
/* 80319534-803196E0 313E74 01AC+00 1/0 0/0 0/0 .text patchMatColor__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::patchMatColor() {
GDSetCurrOffset(mMatColorOffset);
void* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 803196E0-80319B4C 314020 046C+00 1/0 0/0 0/0 .text patchLight__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::patchLight() {
GDSetCurrOffset(mColorChanOffset);
void* start = GDGetCurrPointer();
GDOverflowCheck(SizeOfLoadColorChans);
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
for (u32 i = 0; i < 8; i++) {
if (mLight[i] != NULL) {
mLight[i]->load(i);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 80319B4C-80319BB4 31448C 0068+00 2/0 0/0 0/0 .text diff__21J3DColorBlockLightOffFUl */
void J3DColorBlockLightOff::diff(u32 diffFlags) {
if (diffFlags & J3DDiffFlag_MatColor)
diffMatColor();
if (diffFlags & J3DDiffFlag_ColorChan)
diffColorChan();
}
/* 80319BB4-80319D30 3144F4 017C+00 2/0 0/0 0/0 .text diffMatColor__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::diffMatColor() {
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
}
/* 80319D30-8031A13C 314670 040C+00 2/0 0/0 0/0 .text diffColorChan__21J3DColorBlockLightOffFv */
void J3DColorBlockLightOff::diffColorChan() {
GDOverflowCheck(SizeOfLoadColorChans);
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
}
/* 8031A13C-8031A1DC 314A7C 00A0+00 1/0 0/0 0/0 .text diff__20J3DColorBlockLightOnFUl */
void J3DColorBlockLightOn::diff(u32 diffFlags) {
if (diffFlags & J3DDiffFlag_AmbColor)
diffAmbColor();
if (diffFlags & J3DDiffFlag_MatColor)
diffMatColor();
if (diffFlags & J3DDiffFlag_ColorChan)
diffColorChan();
s32 lightObjNum = getDiffFlag_LightObjNum(diffFlags);
if (lightObjNum != 0)
diffLightObj(lightObjNum);
}
/* 8031A1DC-8031A358 314B1C 017C+00 1/0 0/0 0/0 .text diffAmbColor__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::diffAmbColor() {
GDOverflowCheck(SizeOfLoadAmbColors);
loadAmbColors(mAmbColor);
}
/* 8031A358-8031A4D4 314C98 017C+00 1/0 0/0 0/0 .text diffMatColor__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::diffMatColor() {
GDOverflowCheck(SizeOfLoadMatColors);
loadMatColors(mMatColor);
}
/* 8031A4D4-8031A8E0 314E14 040C+00 1/0 0/0 0/0 .text diffColorChan__20J3DColorBlockLightOnFv */
void J3DColorBlockLightOn::diffColorChan() {
GDOverflowCheck(SizeOfLoadColorChans);
J3DGDWriteXFCmdHdr(XF_REG_COLOR0CNTRL_ID, 4);
mColorChan[0].load();
mColorChan[2].load();
mColorChan[1].load();
mColorChan[3].load();
}
/* 8031A8E0-8031A948 315220 0068+00 1/0 0/0 0/0 .text diffLightObj__20J3DColorBlockLightOnFUl */
void J3DColorBlockLightOn::diffLightObj(u32 lightObjNum) {
for (u32 i = 0; i < lightObjNum; i ++) {
if (mLight[i] != NULL) {
mLight[i]->load(i);
}
}
}
/* 8031A948-8031A9E8 315288 00A0+00 1/0 0/0 0/0 .text load__15J3DTexGenBlock4Fv */
void J3DTexGenBlock4::load() {
mTexMtxOffset = GDGetCurrOffset();
for (u32 i = 0; i < 4; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
if (mTexGenNum != 0) {
loadTexCoordGens(mTexGenNum, mTexCoord);
}
}
/* 8031A9E8-8031AA88 315328 00A0+00 1/0 0/0 0/0 .text load__19J3DTexGenBlockBasicFv */
void J3DTexGenBlockBasic::load() {
mTexMtxOffset = GDGetCurrOffset();
for (u32 i = 0; i < 8; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
if (mTexGenNum != 0) {
loadTexCoordGens(mTexGenNum, mTexCoord);
}
}
/* 8031AA88-8031AB18 3153C8 0090+00 1/0 0/0 0/0 .text patch__21J3DTexGenBlockPatchedFv */
void J3DTexGenBlockPatched::patch() {
GDSetCurrOffset(mTexMtxOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 8; i++) {
if (mTexMtx[i]) {
mTexMtx[i]->load(i);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031AB18-8031ABC0 315458 00A8+00 1/0 0/0 0/0 .text patch__15J3DTexGenBlock4Fv */
void J3DTexGenBlock4::patch() {
GDSetCurrOffset(mTexMtxOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 4; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031ABC0-8031AC68 315500 00A8+00 1/0 0/0 0/0 .text patch__19J3DTexGenBlockBasicFv */
void J3DTexGenBlockBasic::patch() {
GDSetCurrOffset(mTexMtxOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 8; i++) {
if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) {
mTexMtx[i]->load(i);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031AC68-8031ACD0 3155A8 0068+00 3/0 0/0 0/0 .text diff__21J3DTexGenBlockPatchedFUl */
void J3DTexGenBlockPatched::diff(u32 diffFlags) {
if (getDiffFlag_TexGenNum(diffFlags)) {
diffTexMtx();
if (diffFlags & J3DDiffFlag_TexGen) {
diffTexGen();
}
}
}
/* 8031ACD0-8031AD30 315610 0060+00 3/0 0/0 0/0 .text diffTexMtx__21J3DTexGenBlockPatchedFv */
void J3DTexGenBlockPatched::diffTexMtx() {
for (u32 i = 0; i < ARRAY_SIZEU(mTexMtx); ++i) {
if (mTexMtx[i] != NULL) {
mTexMtx[i]->load(i);
}
}
}
/* 8031AD30-8031AD64 315670 0034+00 3/0 0/0 0/0 .text diffTexGen__21J3DTexGenBlockPatchedFv */
void J3DTexGenBlockPatched::diffTexGen() {
if (mTexGenNum > 0) {
loadTexCoordGens(mTexGenNum, mTexCoord);
}
}
/* 8031AD64-8031AFA4 3156A4 0240+00 1/0 0/0 0/0 .text load__12J3DTevBlock1Fv */
void J3DTevBlock1::load() {
mTexNoOffset = GDGetCurrOffset();
GDOverflowCheck(0x69);
if (mTexNo[0] != 0xffff) {
loadTexNo(0, mTexNo[0]);
}
J3DGDSetTevOrder(
GX_TEVSTAGE0,
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[0].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[0].getTevOrderInfo().mColorChan),
GX_TEXCOORD_NULL,
GX_TEXMAP_NULL,
GX_COLOR_NULL
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
mTevStage[0].load(0);
mIndTevStage[0].load(0);
}
/* 8031AFA4-8031B4C0 3158E4 051C+00 1/0 0/0 0/0 .text load__12J3DTevBlock2Fv */
void J3DTevBlock2::load() {
u32 tevStageNum = mTevStageNum;
mTexNoOffset = GDGetCurrOffset();
for (u32 i = 0; i < 2; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
J3DGDSetTevOrder(
GX_TEVSTAGE0,
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[0].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[0].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[1].getTevOrderInfo().mTexMap & 7]
);
mTevRegOffset = GDGetCurrOffset();
for (u32 i = 0; i < 3; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < 4; i++) {
loadTevKColor(i, mTevKColor[i]);
}
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
mIndTevStage[i].load(i);
}
for (u32 i = 0; i < 16; i += 4) {
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i),
GXTevKColorSel(mTevKColorSel[0]),
GXTevKAlphaSel(mTevKAlphaSel[0]),
GXTevKColorSel(mTevKColorSel[1]),
GXTevKAlphaSel(mTevKAlphaSel[1]),
GXTevColorChan(mTevSwapModeTable[i / 4].getR()),
GXTevColorChan(mTevSwapModeTable[i / 4].getG())
);
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i + 2),
GXTevKColorSel(mTevKColorSel[0]),
GXTevKAlphaSel(mTevKAlphaSel[0]),
GXTevKColorSel(mTevKColorSel[1]),
GXTevKAlphaSel(mTevKAlphaSel[1]),
GXTevColorChan(mTevSwapModeTable[i / 4].getB()),
GXTevColorChan(mTevSwapModeTable[i / 4].getA())
);
}
}
/* 8031B4C0-8031BA04 315E00 0544+00 1/0 0/0 0/0 .text load__12J3DTevBlock4Fv */
void J3DTevBlock4::load() {
u32 tevStageNum = mTevStageNum;
mTexNoOffset = GDGetCurrOffset();
for (u32 i = 0; i < 4; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
for (u32 i = 0; i < tevStageNum; i += 2) {
J3DGDSetTevOrder(
GXTevStageID(i),
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i + 1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i + 1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
mTevRegOffset = GDGetCurrOffset();
for (u32 i = 0; i < 3; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < 4; i++) {
loadTevKColor(i, mTevKColor[i]);
}
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
mIndTevStage[i].load(i);
}
for (u32 i = 0; i < 16; i += 4) {
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i),
GXTevKColorSel(mTevKColorSel[0]),
GXTevKAlphaSel(mTevKAlphaSel[0]),
GXTevKColorSel(mTevKColorSel[1]),
GXTevKAlphaSel(mTevKAlphaSel[1]),
GXTevColorChan(mTevSwapModeTable[i / 4].getR()),
GXTevColorChan(mTevSwapModeTable[i / 4].getG())
);
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i + 2),
GXTevKColorSel(mTevKColorSel[2]),
GXTevKAlphaSel(mTevKAlphaSel[2]),
GXTevKColorSel(mTevKColorSel[3]),
GXTevKAlphaSel(mTevKAlphaSel[3]),
GXTevColorChan(mTevSwapModeTable[i / 4].getB()),
GXTevColorChan(mTevSwapModeTable[i / 4].getA())
);
}
}
/* 8031BA04-8031BF4C 316344 0548+00 1/0 0/0 0/0 .text load__13J3DTevBlock16Fv */
void J3DTevBlock16::load() {
u32 tevStageNum = mTevStageNum;
mTexNoOffset = GDGetCurrOffset();
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
for (u32 i = 0; i < tevStageNum; i += 2) {
J3DGDSetTevOrder(
GXTevStageID(i),
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i + 1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i + 1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
mTevRegOffset = GDGetCurrOffset();
for (u32 i = 0; i < 3; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < 4; i++) {
loadTevKColor(i, mTevKColor[i]);
}
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
mIndTevStage[i].load(i);
}
for (u32 i = 0; i < 16; i += 4) {
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i),
GXTevKColorSel(mTevKColorSel[i]),
GXTevKAlphaSel(mTevKAlphaSel[i]),
GXTevKColorSel(mTevKColorSel[i + 1]),
GXTevKAlphaSel(mTevKAlphaSel[i + 1]),
GXTevColorChan(mTevSwapModeTable[i / 4].getR()),
GXTevColorChan(mTevSwapModeTable[i / 4].getG())
);
J3DGDSetTevKonstantSel_SwapModeTable(
GXTevStageID(i + 2),
GXTevKColorSel(mTevKColorSel[i + 2]),
GXTevKAlphaSel(mTevKAlphaSel[i + 2]),
GXTevKColorSel(mTevKColorSel[i + 3]),
GXTevKAlphaSel(mTevKAlphaSel[i + 3]),
GXTevColorChan(mTevSwapModeTable[i / 4].getB()),
GXTevColorChan(mTevSwapModeTable[i / 4].getA())
);
}
}
/* 8031BF4C-8031BFE0 31688C 0094+00 1/0 0/0 0/0 .text patchTexNo__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::patchTexNo() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031BFE0-8031C0AC 316920 00CC+00 1/0 0/0 0/0 .text patchTevReg__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::patchTevReg() {
GDSetCurrOffset(mTevRegOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C0AC-8031C228 3169EC 017C+00 1/0 0/0 0/0 .text
* patchTexNoAndTexCoordScale__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::patchTexNoAndTexCoordScale() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
for (u32 i = 0; i < tevStageNum; i += 2) {
J3DGDSetTevOrder(
GXTevStageID(i),
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i + 1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i + 1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C228-8031C274 316B68 004C+00 1/0 0/0 0/0 .text patch__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::patch() {
patchTexNo();
patchTevReg();
}
/* 8031C274-8031C2E4 316BB4 0070+00 1/0 0/0 0/0 .text patchTexNo__12J3DTevBlock1Fv */
void J3DTevBlock1::patchTexNo() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
if (mTexNo[0] != 0xFFFF) {
loadTexNo(0, mTexNo[0]);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C2E4-8031C2E8 316C24 0004+00 1/0 0/0 0/0 .text patchTevReg__12J3DTevBlock1Fv */
void J3DTevBlock1::patchTevReg() {}
/* 8031C2E8-8031C3CC 316C28 00E4+00 1/0 0/0 0/0 .text patchTexNoAndTexCoordScale__12J3DTevBlock1Fv
*/
void J3DTevBlock1::patchTexNoAndTexCoordScale() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
if (mTexNo[0] != 0xffff) {
loadTexNo(0, mTexNo[0]);
}
J3DGDSetTevOrder(
GX_TEVSTAGE0,
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[0].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[0].getTevOrderInfo().mColorChan),
GX_TEXCOORD_NULL,
GX_TEXMAP_NULL,
GX_COLOR_NULL
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C3CC-8031C3F8 316D0C 002C+00 1/0 0/0 0/0 .text patch__12J3DTevBlock1Fv */
void J3DTevBlock1::patch() {
patchTexNo();
}
/* 8031C3F8-8031C48C 316D38 0094+00 1/0 0/0 0/0 .text patchTexNo__12J3DTevBlock2Fv */
void J3DTevBlock2::patchTexNo() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 2; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C48C-8031C558 316DCC 00CC+00 1/0 0/0 0/0 .text patchTevReg__12J3DTevBlock2Fv */
void J3DTevBlock2::patchTevReg() {
GDSetCurrOffset(mTevRegOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C558-8031C6A8 316E98 0150+00 1/0 0/0 0/0 .text patchTexNoAndTexCoordScale__12J3DTevBlock2Fv
*/
void J3DTevBlock2::patchTexNoAndTexCoordScale() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 2; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
J3DGDSetTevOrder(
GX_TEVSTAGE0,
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[0].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[0].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[1].getTevOrderInfo().mTexMap & 7]
);
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C6A8-8031C6F4 316FE8 004C+00 1/0 0/0 0/0 .text patch__12J3DTevBlock2Fv */
void J3DTevBlock2::patch() {
patchTexNo();
patchTevReg();
}
/* 8031C6F4-8031C788 317034 0094+00 1/0 0/0 0/0 .text patchTexNo__12J3DTevBlock4Fv */
void J3DTevBlock4::patchTexNo() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 4; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C788-8031C854 3170C8 00CC+00 1/0 0/0 0/0 .text patchTevReg__12J3DTevBlock4Fv */
void J3DTevBlock4::patchTevReg() {
GDSetCurrOffset(mTevRegOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C854-8031C9D0 317194 017C+00 1/0 0/0 0/0 .text patchTexNoAndTexCoordScale__12J3DTevBlock4Fv
*/
void J3DTevBlock4::patchTexNoAndTexCoordScale() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < 4; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
for (u32 i = 0; i < tevStageNum; i += 2) {
J3DGDSetTevOrder(
GXTevStageID(i),
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i + 1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i + 1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031C9D0-8031CA1C 317310 004C+00 1/0 0/0 0/0 .text patch__12J3DTevBlock4Fv */
void J3DTevBlock4::patch() {
patchTexNo();
patchTevReg();
}
/* 8031CA1C-8031CAB0 31735C 0094+00 1/0 0/0 0/0 .text patchTexNo__13J3DTevBlock16Fv */
void J3DTevBlock16::patchTexNo() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031CAB0-8031CB7C 3173F0 00CC+00 1/0 0/0 0/0 .text patchTevReg__13J3DTevBlock16Fv */
void J3DTevBlock16::patchTevReg() {
GDSetCurrOffset(mTevRegOffset);
void* start = GDGetCurrPointer();
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031CB7C-8031CCF8 3174BC 017C+00 1/0 0/0 0/0 .text
* patchTexNoAndTexCoordScale__13J3DTevBlock16Fv */
void J3DTevBlock16::patchTexNoAndTexCoordScale() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xffff) {
loadTexNo(i, mTexNo[i]);
}
}
for (u32 i = 0; i < tevStageNum; i += 2) {
J3DGDSetTevOrder(
GXTevStageID(i),
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i].getTevOrderInfo().mColorChan),
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord),
GXTexMapID(mTevOrder[i + 1].getTevOrderInfo().mTexMap),
GXChannelID(mTevOrder[i + 1].getTevOrderInfo().mColorChan)
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031CCF8-8031CD44 317638 004C+00 1/0 0/0 0/0 .text patch__13J3DTevBlock16Fv */
void J3DTevBlock16::patch() {
patchTexNo();
patchTevReg();
}
/* 8031CD44-8031CE00 317684 00BC+00 6/0 1/0 0/0 .text diff__11J3DTevBlockFUl */
void J3DTevBlock::diff(u32 diffFlags) {
if (getDiffFlag_TexNoNum(diffFlags)) {
diffTexNo();
}
if (diffFlags & J3DDiffFlag_TexCoordScale) {
diffTexCoordScale();
}
if (getDiffFlag_TevStageNum(diffFlags)) {
diffTevStage();
if (diffFlags & J3DDiffFlag_TevStageIndirect) {
diffTevStageIndirect();
}
}
if (diffFlags & J3DDiffFlag_TevReg) {
diffTevReg();
}
}
/* 8031CE00-8031CE64 317740 0064+00 1/0 0/0 0/0 .text diffTexNo__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::diffTexNo() {
for (u32 i = 0; i < ARRAY_SIZEU(mTexNo); i++) {
if (mTexNo[i] != 0xFFFF) {
loadTexNo(i, mTexNo[i]);
}
}
}
/* 8031CE64-8031CF78 3177A4 0114+00 1/0 0/0 0/0 .text diffTevStage__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::diffTevStage() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
}
}
/* 8031CF78-8031D028 3178B8 00B0+00 1/0 0/0 0/0 .text diffTevStageIndirect__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::diffTevStageIndirect() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mIndTevStage[i].load(i);
}
}
/* 8031D028-8031D0C4 317968 009C+00 1/0 0/0 0/0 .text diffTevReg__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::diffTevReg() {
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
}
/* 8031D0C4-8031D1BC 317A04 00F8+00 1/0 0/0 0/0 .text diffTexCoordScale__18J3DTevBlockPatchedFv */
void J3DTevBlockPatched::diffTexCoordScale() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i += 2) {
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
}
/* 8031D1BC-8031D1F4 317AFC 0038+00 1/0 0/0 0/0 .text diffTexNo__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTexNo() {
if (mTexNo[0] != 0xFFFF) {
loadTexNo(0, mTexNo[0]);
}
}
/* 8031D1F4-8031D1F8 317B34 0004+00 1/0 0/0 0/0 .text diffTevReg__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTevReg() {}
/* 8031D1F8-8031D2E8 317B38 00F0+00 1/0 0/0 0/0 .text diffTevStage__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTevStage() {
mTevStage[0].load(0);
}
/* 8031D2E8-8031D368 317C28 0080+00 1/0 0/0 0/0 .text diffTevStageIndirect__12J3DTevBlock1Fv */
void J3DTevBlock1::diffTevStageIndirect() {
mIndTevStage[0].load(0);
}
/* 8031D368-8031D3D0 317CA8 0068+00 1/0 0/0 0/0 .text diffTexCoordScale__12J3DTevBlock1Fv
*/
void J3DTevBlock1::diffTexCoordScale() {
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
}
/* 8031D3D0-8031D434 317D10 0064+00 1/0 0/0 0/0 .text diffTexNo__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTexNo() {
for (u32 i = 0; i < ARRAY_SIZEU(mTexNo); i++) {
if (mTexNo[i] != 0xFFFF) {
loadTexNo(i, mTexNo[i]);
}
}
}
/* 8031D434-8031D4D0 317D74 009C+00 1/0 0/0 0/0 .text diffTevReg__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTevReg() {
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
}
/* 8031D4D0-8031D5E4 317E10 0114+00 1/0 0/0 0/0 .text diffTevStage__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTevStage() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
}
}
/* 8031D5E4-8031D694 317F24 00B0+00 1/0 0/0 0/0 .text diffTevStageIndirect__12J3DTevBlock2Fv */
void J3DTevBlock2::diffTevStageIndirect() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mIndTevStage[i].load(i);
}
}
/* 8031D694-8031D758 317FD4 00C4+00 1/0 0/0 0/0 .text diffTexCoordScale__12J3DTevBlock2Fv
*/
void J3DTevBlock2::diffTexCoordScale() {
loadTexCoordScale(
GXTexCoordID(mTevOrder[0].getTevOrderInfo().mTexCoord),
J3DSys::sTexCoordScaleTable[mTevOrder[0].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[1].getTevOrderInfo().mTexMap & 7]
);
}
/* 8031D758-8031D7BC 318098 0064+00 1/0 0/0 0/0 .text diffTexNo__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTexNo() {
for (u32 i = 0; i < ARRAY_SIZEU(mTexNo); i++) {
if (mTexNo[i] != 0xFFFF) {
loadTexNo(i, mTexNo[i]);
}
}
}
/* 8031D7BC-8031D858 3180FC 009C+00 1/0 0/0 0/0 .text diffTevReg__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTevReg() {
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
}
/* 8031D858-8031D96C 318198 0114+00 1/0 0/0 0/0 .text diffTevStage__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTevStage() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
}
}
/* 8031D96C-8031DA1C 3182AC 00B0+00 1/0 0/0 0/0 .text diffTevStageIndirect__12J3DTevBlock4Fv */
void J3DTevBlock4::diffTevStageIndirect() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mIndTevStage[i].load(i);
}
}
/* 8031DA1C-8031DB14 31835C 00F8+00 1/0 0/0 0/0 .text diffTexCoordScale__12J3DTevBlock4Fv
*/
void J3DTevBlock4::diffTexCoordScale() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i += 2) {
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
}
/* 8031DB14-8031DB78 318454 0064+00 1/0 0/0 0/0 .text diffTexNo__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTexNo() {
for (u32 i = 0; i < ARRAY_SIZEU(mTexNo); i++) {
if (mTexNo[i] != 0xFFFF) {
loadTexNo(i, mTexNo[i]);
}
}
}
/* 8031DB78-8031DC14 3184B8 009C+00 1/0 0/0 0/0 .text diffTevReg__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTevReg() {
for (u32 i = 0; i < ARRAY_SIZEU(mTevColor) - 1; i++) {
loadTevColor(i, mTevColor[i]);
}
for (u32 i = 0; i < ARRAY_SIZEU(mTevKColor); i++) {
loadTevKColor(i, mTevKColor[i]);
}
}
/* 8031DC14-8031DD28 318554 0114+00 1/0 0/0 0/0 .text diffTevStage__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTevStage() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mTevStage[i].load(i);
}
}
/* 8031DD28-8031DDD8 318668 00B0+00 1/0 0/0 0/0 .text diffTevStageIndirect__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTevStageIndirect() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i++) {
mIndTevStage[i].load(i);
}
}
/* 8031DDD8-8031DED0 318718 00F8+00 1/0 0/0 0/0 .text diffTexCoordScale__13J3DTevBlock16Fv */
void J3DTevBlock16::diffTexCoordScale() {
u32 tevStageNum = mTevStageNum;
for (u32 i = 0; i < tevStageNum; i += 2) {
loadTexCoordScale(
GXTexCoordID(mTevOrder[i].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i].getTevOrderInfo().mTexMap & 7]
);
loadTexCoordScale(
GXTexCoordID(mTevOrder[i + 1].getTevOrderInfo().mTexCoord & 7),
J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7]
);
}
}
/* 8031DED0-8031DFB4 318810 00E4+00 1/0 0/0 0/0 .text ptrToIndex__13J3DTevBlock16Fv */
void J3DTevBlock16::ptrToIndex() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
u32 offs = 0;
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xFFFF) {
GDSetCurrOffset(mTexNoOffset + offs);
patchTexNo_PtrToIdx(i, mTexNo[i]);
ResTIMG* img = j3dSys.getTexture()->getResTIMG(mTexNo[i]);
J3D_ASSERT_NULLPTR(2088, img != NULL);
offs += 0x14;
if (img->indexTexture == 1) {
offs += 0x23;
}
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031DFB4-8031E098 3188F4 00E4+00 1/0 0/0 0/0 .text ptrToIndex__18J3DTevBlockPatchedFv
*/
void J3DTevBlockPatched::ptrToIndex() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
u32 offs = 0;
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xFFFF) {
GDSetCurrOffset(mTexNoOffset + offs);
patchTexNo_PtrToIdx(i, mTexNo[i]);
ResTIMG* img = j3dSys.getTexture()->getResTIMG(mTexNo[i]);
J3D_ASSERT_NULLPTR(2129, img != NULL);
offs += 0x14;
if (img->indexTexture == 1) {
offs += 0x23;
}
}
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031E098-8031E12C 3189D8 0094+00 5/5 1/1 0/0 .text indexToPtr_private__11J3DTevBlockFUl */
void J3DTevBlock::indexToPtr_private(u32 offs) {
GDSetCurrOffset(offs);
void* start = GDGetCurrPointer();
for (u32 i = 0; ; i++) {
void* pDL = GDGetCurrPointer();
if (!isTexNoReg(pDL)) {
break;
}
u16 texNoReg = getTexNoReg(pDL);
loadTexNo(i, texNoReg);
}
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031E12C-8031E328 318A6C 01FC+00 1/0 0/0 0/0 .text load__15J3DIndBlockFullFv */
void J3DIndBlockFull::load() {
int indTexStageNum = mIndTexStageNum;
for (u32 i = 0; i < indTexStageNum; i++) {
mIndTexMtx[i].load(i);
}
for (u32 i = 0; i < indTexStageNum; i += 2) {
J3DGDSetIndTexCoordScale(
GXIndTexStageID(i),
(GXIndTexScale)mIndTexCoordScale[i].getScaleS(),
(GXIndTexScale)mIndTexCoordScale[i].getScaleT(),
(GXIndTexScale)mIndTexCoordScale[i + 1].getScaleS(),
(GXIndTexScale)mIndTexCoordScale[i + 1].getScaleT()
);
}
loadTexCoordScale((GXTexCoordID)mIndTexOrder[0].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[0].getMap() & 7]);
loadTexCoordScale((GXTexCoordID)mIndTexOrder[1].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[1].getMap() & 7]);
loadTexCoordScale((GXTexCoordID)mIndTexOrder[2].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[2].getMap() & 7]);
loadTexCoordScale((GXTexCoordID)mIndTexOrder[3].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[3].getMap() & 7]);
J3DGDSetIndTexOrder(
indTexStageNum,
(GXTexCoordID)mIndTexOrder[0].getCoord(),
(GXTexMapID)mIndTexOrder[0].getMap(),
(GXTexCoordID)mIndTexOrder[1].getCoord(),
(GXTexMapID)mIndTexOrder[1].getMap(),
(GXTexCoordID)mIndTexOrder[2].getCoord(),
(GXTexMapID)mIndTexOrder[2].getMap(),
(GXTexCoordID)mIndTexOrder[3].getCoord(),
(GXTexMapID)mIndTexOrder[3].getMap()
);
}
/* 8031E328-8031E408 318C68 00E0+00 1/0 0/0 0/0 .text diff__15J3DIndBlockFullFUl */
void J3DIndBlockFull::diff(u32 diffFlags) {
if (diffFlags & J3DDiffFlag_TevStageIndirect) {
u32 indTexStageNum = mIndTexStageNum;
mIndTexMtx[0].load(0);
J3DGDSetIndTexCoordScale(
GX_INDTEXSTAGE0,
(GXIndTexScale)mIndTexCoordScale[0].getScaleS(),
(GXIndTexScale)mIndTexCoordScale[0].getScaleT(),
(GXIndTexScale)mIndTexCoordScale[1].getScaleS(),
(GXIndTexScale)mIndTexCoordScale[1].getScaleT()
);
loadTexCoordScale((GXTexCoordID)mIndTexOrder[0].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[0].getMap() & 7]);
J3DGDSetIndTexOrder(
indTexStageNum,
(GXTexCoordID)mIndTexOrder[0].getCoord(),
(GXTexMapID)mIndTexOrder[0].getMap(),
(GXTexCoordID)mIndTexOrder[1].getCoord(),
(GXTexMapID)mIndTexOrder[1].getMap(),
(GXTexCoordID)mIndTexOrder[2].getCoord(),
(GXTexMapID)mIndTexOrder[2].getMap(),
(GXTexCoordID)mIndTexOrder[3].getCoord(),
(GXTexMapID)mIndTexOrder[3].getMap()
);
}
}
/* 8031E408-8031E6C8 318D48 02C0+00 1/0 0/0 0/0 .text load__13J3DPEBlockOpaFv */
void J3DPEBlockOpa::load() {
GDOverflowCheck(0x1e);
J3DGDSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
J3DGDSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_COPY);
J3DGDSetZMode(1, GX_LEQUAL, 1);
J3DGDSetZCompLoc(1);
}
/* 8031E6C8-8031E98C 319008 02C4+00 1/0 0/0 0/0 .text load__17J3DPEBlockTexEdgeFv */
void J3DPEBlockTexEdge::load() {
GDOverflowCheck(0x1e);
J3DGDSetAlphaCompare(GX_GEQUAL, 0x80, GX_AOP_AND, GX_LEQUAL, 0xff);
J3DGDSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_COPY);
J3DGDSetZMode(1, GX_LEQUAL, 1);
J3DGDSetZCompLoc(0);
}
/* 8031E98C-8031EC50 3192CC 02C4+00 1/0 0/0 0/0 .text load__13J3DPEBlockXluFv */
void J3DPEBlockXlu::load() {
GDOverflowCheck(0x1e);
J3DGDSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND,GX_ALWAYS, 0);
J3DGDSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_COPY);
J3DGDSetZMode(1, GX_LEQUAL, 0);
J3DGDSetZCompLoc(1);
}
inline void loadZCompLoc(u8 compLoc) {
J3DGDSetZCompLoc(compLoc);
}
/* 8031EC50-8031F0D8 319590 0488+00 1/0 0/0 0/0 .text load__16J3DPEBlockFogOffFv */
void J3DPEBlockFogOff::load() {
GDOverflowCheck(0x1e);
mAlphaComp.load();
mBlend.load(mDither);
mZMode.load();
loadZCompLoc(mZCompLoc);
}
/* 8031F0D8-8031F3C0 319A18 02E8+00 1/0 0/0 0/0 .text diffBlend__16J3DPEBlockFogOffFv */
void J3DPEBlockFogOff::diffBlend() {
GDOverflowCheck(0xf);
mBlend.load(mDither);
mZMode.load();
}
/* 8031F3C0-8031F890 319D00 04D0+00 1/0 0/0 0/0 .text load__14J3DPEBlockFullFv */
void J3DPEBlockFull::load() {
mFogOffset = GDGetCurrOffset();
GDOverflowCheck(0x55);
mFog.load();
mAlphaComp.load();
mBlend.load(mDither);
mZMode.load();
loadZCompLoc(mZCompLoc);
}
/* 8031F890-8031F940 31A1D0 00B0+00 1/0 0/0 0/0 .text patch__14J3DPEBlockFullFv */
void J3DPEBlockFull::patch() {
GDSetCurrOffset(mFogOffset);
GDOverflowCheck(0x37);
void* start = GDGetCurrPointer();
mFog.load();
void* end = GDGetCurrPointer();
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
/* 8031F940-8031F9B8 31A280 0078+00 1/0 0/0 0/0 .text diffFog__14J3DPEBlockFullFv */
void J3DPEBlockFull::diffFog() {
GDOverflowCheck(0x37);
mFog.load();
}
/* 8031F9B8-8031FCA0 31A2F8 02E8+00 1/0 0/0 0/0 .text diffBlend__14J3DPEBlockFullFv */
void J3DPEBlockFull::diffBlend() {
GDOverflowCheck(0xf);
mBlend.load(mDither);
mZMode.load();
}
/* 8031FCA0-8031FD08 31A5E0 0068+00 1/0 0/0 0/0 .text diff__14J3DPEBlockFullFUl */
void J3DPEBlockFull::diff(u32 diffFlags) {
if ((diffFlags & J3DDiffFlag_Fog)) {
diffFog();
}
if ((diffFlags & J3DDiffFlag_Blend)) {
diffBlend();
}
}
/* 8031FD08-8031FDE4 31A648 00DC+00 1/0 0/0 0/0 .text
* reset__21J3DColorBlockLightOffFP13J3DColorBlock */
void J3DColorBlockLightOff::reset(J3DColorBlock* pBlock) {
J3D_ASSERT_NULLPTR(2434, pBlock != NULL);
mColorChanNum = pBlock->getColorChanNum();
for (u32 i = 0; i < ARRAY_SIZEU(mMatColor); i++) {
mMatColor[i] = *pBlock->getMatColor(i);
}
for (u32 i = 0; i < ARRAY_SIZEU(mColorChan); i++) {
mColorChan[i] = *pBlock->getColorChan(i);
}
}
/* 8031FDE4-8031FF34 31A724 0150+00 1/0 0/0 0/0 .text
* reset__22J3DColorBlockAmbientOnFP13J3DColorBlock */
void J3DColorBlockAmbientOn::reset(J3DColorBlock* pBlock) {
J3D_ASSERT_NULLPTR(2451, pBlock != NULL);
mColorChanNum = pBlock->getColorChanNum();
for (u32 i = 0; i < ARRAY_SIZEU(mMatColor); i++) {
mMatColor[i] = *pBlock->getMatColor(i);
}
for (u32 i = 0; i < ARRAY_SIZEU(mColorChan); i++) {
mColorChan[i] = *pBlock->getColorChan(i);
}
for (u32 i = 0; i < ARRAY_SIZEU(mAmbColor); i++) {
if (pBlock->getAmbColor(i) != NULL) {
mAmbColor[i] = *pBlock->getAmbColor(i);
}
}
}
/* 8031FF34-80320084 31A874 0150+00 1/0 0/0 0/0 .text
* reset__20J3DColorBlockLightOnFP13J3DColorBlock */
void J3DColorBlockLightOn::reset(J3DColorBlock* pBlock) {
J3D_ASSERT_NULLPTR(2476, pBlock != NULL);
mColorChanNum = pBlock->getColorChanNum();
for (u32 i = 0; i < ARRAY_SIZEU(mMatColor); i++) {
mMatColor[i] = *pBlock->getMatColor(i);
}
for (u32 i = 0; i < ARRAY_SIZEU(mColorChan); i++) {
mColorChan[i] = *pBlock->getColorChan(i);
}
for (u32 i = 0; i < ARRAY_SIZEU(mAmbColor); i++) {
if (pBlock->getAmbColor(i) != NULL) {
mAmbColor[i] = *pBlock->getAmbColor(i);
}
}
}
/* 80320084-803201A0 31A9C4 011C+00 1/0 0/0 0/0 .text
* reset__21J3DTexGenBlockPatchedFP14J3DTexGenBlock */
void J3DTexGenBlockPatched::reset(J3DTexGenBlock* pBlock) {
J3D_ASSERT_NULLPTR(2504, pBlock != NULL);
mTexGenNum = pBlock->getTexGenNum();
for (u32 i = 0; i < 8; i++) {
mTexCoord[i] = *pBlock->getTexCoord(i);
}
for (u32 i = 0; i < 8; i++) {
if (pBlock->getTexMtx(i) != NULL) {
if (mTexMtx[i] != NULL) {
memcpy(mTexMtx[i], pBlock->getTexMtx(i), sizeof(*mTexMtx[i]));
DCStoreRange(mTexMtx[i], sizeof(*mTexMtx[i]));
} else {
OSReport("Error : TexMtx[%d] is Null.\n", i);
}
}
}
}
/* 803201A0-803202DC 31AAE0 013C+00 1/0 0/0 0/0 .text reset__15J3DTexGenBlock4FP14J3DTexGenBlock
*/
void J3DTexGenBlock4::reset(J3DTexGenBlock* pBlock) {
J3D_ASSERT_NULLPTR(2537, pBlock != NULL);
mTexGenNum = pBlock->getTexGenNum();
for (u32 i = 0; i < 4; i++) {
mTexCoord[i] = *pBlock->getTexCoord(i);
}
for (u32 i = 0; i < 4; i++) {
if (pBlock->getTexMtx(i) != NULL) {
if (mTexMtx[i] != NULL) {
memcpy(mTexMtx[i], pBlock->getTexMtx(i), sizeof(*mTexMtx[i]));
DCStoreRange(mTexMtx[i], sizeof(*mTexMtx[i]));
} else {
OSReport("Error : TexMtx[%d] is Null.\n", i);
}
}
}
mNBTScale = *pBlock->getNBTScale();
}
/* 803202DC-80320418 31AC1C 013C+00 1/0 0/0 0/0 .text
* reset__19J3DTexGenBlockBasicFP14J3DTexGenBlock */
void J3DTexGenBlockBasic::reset(J3DTexGenBlock* pBlock) {
J3D_ASSERT_NULLPTR(2572, pBlock != NULL);
mTexGenNum = pBlock->getTexGenNum();
for (u32 i = 0; i < 8; i++) {
mTexCoord[i] = *pBlock->getTexCoord(i);
}
for (u32 i = 0; i < 8; i++) {
if (pBlock->getTexMtx(i) != NULL) {
if (mTexMtx[i] != NULL) {
memcpy(mTexMtx[i], pBlock->getTexMtx(i), sizeof(*mTexMtx[i]));
DCStoreRange(mTexMtx[i], sizeof(*mTexMtx[i]));
} else {
OSReport("Error : TexMtx[%d] is Null.\n", i);
}
}
}
mNBTScale = *pBlock->getNBTScale();
}
/* 80320418-803205D4 31AD58 01BC+00 1/0 0/0 0/0 .text reset__18J3DTevBlockPatchedFP11J3DTevBlock
*/
void J3DTevBlockPatched::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2608, pBlock != NULL);
mTevStageNum = pBlock->getTevStageNum();
for (u32 i = 0; i < 8; i++) {
mTexNo[i] = pBlock->getTexNo(i);
}
for (u32 i = 0; i < 4; i++) {
mTevColor[i] = *pBlock->getTevColor(i);
}
for (u32 i = 0; i < 4; i++) {
mTevKColor[i] = *pBlock->getTevKColor(i);
}
for (u32 i = 0; i < 8; i++) {
mTevStage[i] = *pBlock->getTevStage(i);
mIndTevStage[i] = *pBlock->getIndTevStage(i);
}
}
/* 803205D4-803206AC 31AF14 00D8+00 1/0 0/0 0/0 .text reset__12J3DTevBlock1FP11J3DTevBlock */
void J3DTevBlock1::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2633, pBlock != NULL);
mTexNo[0] = pBlock->getTexNo(0);
mTevOrder[0] = *pBlock->getTevOrder(0);
mTevStage[0] = *pBlock->getTevStage(0);
mIndTevStage[0] = *pBlock->getIndTevStage(0);
}
/* 803206AC-8032098C 31AFEC 02E0+00 1/0 0/0 0/0 .text reset__12J3DTevBlock2FP11J3DTevBlock */
void J3DTevBlock2::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2649, pBlock != NULL);
mTevStageNum = pBlock->getTevStageNum();
mTexNo[0] = pBlock->getTexNo(0);
mTexNo[1] = pBlock->getTexNo(1);
mTevStage[0] = *pBlock->getTevStage(0);
mTevStage[1] = *pBlock->getTevStage(1);
mIndTevStage[0] = *pBlock->getIndTevStage(0);
mIndTevStage[1] = *pBlock->getIndTevStage(1);
mTevOrder[0] = *pBlock->getTevOrder(0);
mTevOrder[1] = *pBlock->getTevOrder(1);
mTevKColorSel[0] = pBlock->getTevKColorSel(0);
mTevKColorSel[1] = pBlock->getTevKColorSel(1);
mTevKAlphaSel[0] = pBlock->getTevKAlphaSel(0);
mTevKAlphaSel[1] = pBlock->getTevKAlphaSel(1);
for (u32 i = 0; i < 4; i++) {
mTevColor[i] = *pBlock->getTevColor(i);
}
for (u32 i = 0; i < 4; i++) {
mTevKColor[i] = *pBlock->getTevKColor(i);
}
for (u32 i = 0; i < 4; i++) {
mTevSwapModeTable[i] = *pBlock->getTevSwapModeTable(i);
}
}
/* 8032098C-80320E24 31B2CC 0498+00 1/0 0/0 0/0 .text reset__12J3DTevBlock4FP11J3DTevBlock */
void J3DTevBlock4::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2682, pBlock != NULL);
mTevStageNum = pBlock->getTevStageNum();
mTexNo[0] = pBlock->getTexNo(0);
mTexNo[1] = pBlock->getTexNo(1);
mTexNo[2] = pBlock->getTexNo(2);
mTexNo[3] = pBlock->getTexNo(3);
mTevStage[0] = *pBlock->getTevStage(0);
mTevStage[1] = *pBlock->getTevStage(1);
mTevStage[2] = *pBlock->getTevStage(2);
mTevStage[3] = *pBlock->getTevStage(3);
mIndTevStage[0] = *pBlock->getIndTevStage(0);
mIndTevStage[1] = *pBlock->getIndTevStage(1);
mIndTevStage[2] = *pBlock->getIndTevStage(2);
mIndTevStage[3] = *pBlock->getIndTevStage(3);
mTevOrder[0] = *pBlock->getTevOrder(0);
mTevOrder[1] = *pBlock->getTevOrder(1);
mTevOrder[2] = *pBlock->getTevOrder(2);
mTevOrder[3] = *pBlock->getTevOrder(3);
mTevKColorSel[0] = pBlock->getTevKColorSel(0);
mTevKColorSel[1] = pBlock->getTevKColorSel(1);
mTevKColorSel[2] = pBlock->getTevKColorSel(2);
mTevKColorSel[3] = pBlock->getTevKColorSel(3);
mTevKAlphaSel[0] = pBlock->getTevKAlphaSel(0);
mTevKAlphaSel[1] = pBlock->getTevKAlphaSel(1);
mTevKAlphaSel[2] = pBlock->getTevKAlphaSel(2);
mTevKAlphaSel[3] = pBlock->getTevKAlphaSel(3);
for (u32 i = 0; i < 4; i++)
mTevColor[i] = *pBlock->getTevColor(i);
for (u32 i = 0; i < 4; i++)
mTevKColor[i] = *pBlock->getTevKColor(i);
for (u32 i = 0; i < 4; i++)
mTevSwapModeTable[i] = *pBlock->getTevSwapModeTable(i);
}
/* 80320E24-803210B0 31B764 028C+00 1/0 0/0 0/0 .text reset__13J3DTevBlock16FP11J3DTevBlock */
void J3DTevBlock16::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2728, pBlock != NULL);
mTevStageNum = pBlock->getTevStageNum();
for (u32 i = 0; i < 8; i++) {
mTexNo[i] = pBlock->getTexNo(i);
}
for (u32 i = 0; i < 16; i++) {
mTevOrder[i] = *pBlock->getTevOrder(i);
}
for (u32 i = 0; i < 16; i++) {
mTevStage[i] = *pBlock->getTevStage(i);
mIndTevStage[i] = *pBlock->getIndTevStage(i);
}
for (u32 i = 0; i < 4; i++) {
mTevColor[i] = *pBlock->getTevColor(i);
}
for (u32 i = 0; i < 4; i++) {
mTevKColor[i] = *pBlock->getTevKColor(i);
}
for (u32 i = 0; i < 16; i++) {
mTevKColorSel[i] = pBlock->getTevKColorSel(i);
}
for (u32 i = 0; i < 16; i++) {
mTevKAlphaSel[i] = pBlock->getTevKAlphaSel(i);
}
for (u32 i = 0; i < 4; i++) {
mTevSwapModeTable[i] = *pBlock->getTevSwapModeTable(i);
}
}
/* 803210B0-803211B4 31B9F0 0104+00 1/0 0/0 0/0 .text reset__15J3DIndBlockFullFP11J3DIndBlock */
void J3DIndBlockFull::reset(J3DIndBlock* pBlock) {
J3D_ASSERT_NULLPTR(2762, pBlock != NULL);
mIndTexStageNum = pBlock->getIndTexStageNum();
for (u32 i = 0; i < 4; i++) {
mIndTexOrder[i] = *pBlock->getIndTexOrder(i);
}
for (u32 i = 0; i < 3; i++) {
mIndTexMtx[i] = *pBlock->getIndTexMtx(i);
}
for (u32 i = 0; i < 4; i++) {
mIndTexCoordScale[i] = *pBlock->getIndTexCoordScale(i);
}
}
/* 803211B4-8032129C 31BAF4 00E8+00 1/0 0/0 0/0 .text reset__16J3DPEBlockFogOffFP10J3DPEBlock */
void J3DPEBlockFogOff::reset(J3DPEBlock* pBlock) {
J3D_ASSERT_NULLPTR(2783, pBlock != NULL);
switch (pBlock->getType()) {
case 'PEFL':
case 'PEFG':
mAlphaComp = *pBlock->getAlphaComp();
mBlend = *pBlock->getBlend();
mZMode = *pBlock->getZMode();
mZCompLoc = pBlock->getZCompLoc();
break;
}
}
/* 8032129C-803213C0 31BBDC 0124+00 1/0 0/0 0/0 .text reset__14J3DPEBlockFullFP10J3DPEBlock */
void J3DPEBlockFull::reset(J3DPEBlock* pBlock) {
J3D_ASSERT_NULLPTR(2807, pBlock != NULL);
if (pBlock->getFog() != NULL) {
mFog.setFogInfo(pBlock->getFog()->getFogInfo());
}
switch (pBlock->getType()) {
case 'PEFL':
case 'PEFG':
mAlphaComp = *pBlock->getAlphaComp();
mBlend = *pBlock->getBlend();
mZMode = *pBlock->getZMode();
mZCompLoc = pBlock->getZCompLoc();
break;
}
}
/* 803213C0-80321584 31BD00 01C4+00 4/0 0/0 0/0 .text calc__21J3DTexGenBlockPatchedFPA4_Cf */
void J3DTexGenBlockPatched::calc(const Mtx modelMtx) {
Mtx viewMtx;
for (int i = 0; i < 8; i++) {
if (mTexMtx[i] != NULL) {
u32 texMtxMode = mTexMtx[i]->getTexMtxInfo().mInfo & 0x3f;
mTexCoord[i].resetTexMtxReg();
switch (texMtxMode) {
case J3DTexMtxMode_EnvmapBasic:
case J3DTexMtxMode_EnvmapOld:
case J3DTexMtxMode_Envmap:
if (j3dSys.checkFlag(8) == 0) {
MTXConcat(j3dSys.getViewMtx(), modelMtx, viewMtx);
} else {
MTXCopy(j3dSys.getViewMtx(), viewMtx);
}
viewMtx[0][3] = 0.0f;
viewMtx[1][3] = 0.0f;
viewMtx[2][3] = 0.0f;
mTexMtx[i]->calc(viewMtx);
break;
case J3DTexMtxMode_ProjmapBasic:
case J3DTexMtxMode_Projmap:
if (j3dSys.checkFlag(4) == 0) {
mTexMtx[i]->calc(modelMtx);
} else {
mTexMtx[i]->calc(j3dDefaultMtx);
}
break;
case J3DTexMtxMode_ViewProjmapBasic:
case J3DTexMtxMode_ViewProjmap:
if (j3dSys.checkFlag(4) == 0) {
MTXConcat(j3dSys.getViewMtx(), modelMtx, viewMtx);
mTexMtx[i]->calc( viewMtx);
} else {
mTexMtx[i]->calc(j3dSys.getViewMtx());
}
break;
case J3DTexMtxMode_Unknown5:
case J3DTexMtxMode_EnvmapOldEffectMtx:
case J3DTexMtxMode_EnvmapEffectMtx:
if (j3dSys.checkFlag(8) == 0) {
MTXCopy(modelMtx, viewMtx);
viewMtx[0][3] = 0.0f;
viewMtx[1][3] = 0.0f;
viewMtx[2][3] = 0.0f;
mTexMtx[i]->calc(viewMtx);
} else {
mTexMtx[i]->calc(j3dDefaultMtx);
}
break;
default:
mTexMtx[i]->calc(j3dDefaultMtx);
break;
}
}
}
}
/* 80321584-803216D8 31BEC4 0154+00 4/0 0/0 0/0 .text
* calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf */
void J3DTexGenBlockPatched::calcWithoutViewMtx(const Mtx modelMtx) {
Mtx mtx;
for (int i = 0; i < 8; i++) {
if (mTexMtx[i] != NULL) {
u32 texMtxMode = mTexMtx[i]->getTexMtxInfo().mInfo & 0x3f;
mTexCoord[i].resetTexMtxReg();
switch (texMtxMode) {
case J3DTexMtxMode_EnvmapBasic:
case J3DTexMtxMode_EnvmapOld:
case J3DTexMtxMode_Envmap:
mTexMtx[i]->calc(j3dDefaultMtx);
break;
case J3DTexMtxMode_ProjmapBasic:
case J3DTexMtxMode_Projmap:
if (j3dSys.checkFlag(4) == 0) {
mTexMtx[i]->calc(modelMtx);
} else {
mTexMtx[i]->calc(j3dDefaultMtx);
}
break;
case J3DTexMtxMode_ViewProjmapBasic:
case J3DTexMtxMode_ViewProjmap:
mTexMtx[i]->calc(j3dDefaultMtx);
break;
case J3DTexMtxMode_Unknown5:
case J3DTexMtxMode_EnvmapOldEffectMtx:
case J3DTexMtxMode_EnvmapEffectMtx:
if (j3dSys.checkFlag(8) == 0) {
MTXCopy(modelMtx, mtx);
mtx[0][3] = 0.0f;
mtx[1][3] = 0.0f;
mtx[2][3] = 0.0f;
mTexMtx[i]->calc(mtx);
} else {
mTexMtx[i]->calc(j3dDefaultMtx);
}
break;
default:
mTexMtx[i]->calc(j3dDefaultMtx);
break;
}
}
}
}
/* 803216D8-8032181C 31C018 0144+00 4/0 0/0 0/0 .text
* calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf */
void J3DTexGenBlockPatched::calcPostTexMtx(const Mtx modelMtx) {
Mtx mtx1, mtx2;
for (int i = 0; i < 8; i++) {
if (mTexMtx[i] != NULL) {
u32 texMtxMode = mTexMtx[i]->getTexMtxInfo().mInfo & 0x3f;
mTexCoord[i].resetTexMtxReg();
switch (texMtxMode) {
case J3DTexMtxMode_EnvmapBasic:
case J3DTexMtxMode_EnvmapOld:
case J3DTexMtxMode_Envmap:
mTexCoord[i].setTexMtxReg(30);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
case J3DTexMtxMode_ProjmapBasic:
case J3DTexMtxMode_Projmap:
PSMTXInverse(j3dSys.getViewMtx(), mtx1);
mTexCoord[i].setTexMtxReg(0);
mTexMtx[i]->calcPostTexMtx(mtx1);
break;
case J3DTexMtxMode_ViewProjmapBasic:
case J3DTexMtxMode_ViewProjmap:
mTexCoord[i].setTexMtxReg(0);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
case J3DTexMtxMode_Unknown5:
case J3DTexMtxMode_EnvmapOldEffectMtx:
case J3DTexMtxMode_EnvmapEffectMtx:
PSMTXInverse(j3dSys.getViewMtx(), mtx2);
mtx2[0][3] = 0.0f;
mtx2[1][3] = 0.0f;
mtx2[2][3] = 0.0f;
mTexCoord[i].setTexMtxReg(30);
mTexMtx[i]->calcPostTexMtx(mtx2);
break;
default:
mTexCoord[i].setTexMtxReg(60);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
continue;
}
}
}
}
/* 8032181C-80321938 31C15C 011C+00 4/0 0/0 0/0 .text
* calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf */
void J3DTexGenBlockPatched::calcPostTexMtxWithoutViewMtx(f32 const (*param_0)[4]) {
for (int i = 0; i < 8; i++) {
if (mTexMtx[i] != NULL) {
int texMtxMode = mTexMtx[i]->getTexMtxInfo().mInfo & 0x3f;
mTexCoord[i].resetTexMtxReg();
switch (texMtxMode) {
case J3DTexMtxMode_EnvmapBasic:
case J3DTexMtxMode_EnvmapOld:
case J3DTexMtxMode_Envmap:
mTexCoord[i].setTexMtxReg(30);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
case J3DTexMtxMode_ProjmapBasic:
case J3DTexMtxMode_Projmap:
mTexCoord[i].setTexMtxReg(0);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
case J3DTexMtxMode_ViewProjmapBasic:
case J3DTexMtxMode_ViewProjmap:
mTexCoord[i].setTexMtxReg(0);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
case J3DTexMtxMode_Unknown5:
case J3DTexMtxMode_EnvmapOldEffectMtx:
case J3DTexMtxMode_EnvmapEffectMtx:
mTexCoord[i].setTexMtxReg(30);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
default:
mTexCoord[i].setTexMtxReg(60);
mTexMtx[i]->calcPostTexMtx(j3dDefaultMtx);
break;
}
}
}
}
void J3DTevBlock::diffTevReg() {}
void J3DTevBlock::diffTevStageIndirect() {}
void J3DTevBlock::diffTevStage() {}
void J3DTevBlock::diffTexCoordScale() {}
void J3DTevBlock::diffTexNo() {}