diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2024-10-10 07:29:58 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-10 08:29:58 -0600 |
| commit | 12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch) | |
| tree | 4509be332b2ccfc6fe939f47740d68f7746eca3e /src/JSystem/J3DGraphBase | |
| parent | 2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff) | |
switch to dtk setup (#2203)
* switch to dtk setup
* some cleanup / fixes
* cleanup d_a_alink literals
* Restore doxygen, update CI & README.md (#1)
* Fix build image ref (#2)
---------
Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/JSystem/J3DGraphBase')
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp | 243 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DGD.cpp | 665 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DMatBlock.cpp | 5206 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DMaterial.cpp | 1276 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DPacket.cpp | 403 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DShape.cpp | 354 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DShapeDraw.cpp | 100 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DShapeMtx.cpp | 760 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DStruct.cpp | 75 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DSys.cpp | 400 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DTevs.cpp | 565 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DTexture.cpp | 70 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DTransform.cpp | 378 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DVertex.cpp | 244 |
14 files changed, 10739 insertions, 0 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp b/src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp new file mode 100644 index 0000000000..52a31e0d57 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DDrawBuffer.cpp @@ -0,0 +1,243 @@ +/** + * J3DDrawBuffer.cpp + * + */ + +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/JKernel/JKRHeap.h" + +void J3DDrawBuffer::calcZRatio() { + mZRatio = (mZFar - mZNear) / (f32)mBufSize; +} + +void J3DDrawBuffer::initialize() { + mDrawType = DRAW_HEAD; + mSortType = SORT_MAT; + mZNear = 1.0f; + mZFar = 10000.0f; + mpZMtx = NULL; + mpCallBackPacket = NULL; + mBufSize = 0x20; + calcZRatio(); +} + +J3DError J3DDrawBuffer::allocBuffer(u32 bufSize) { + mpBuf = new (0x20) J3DPacket*[bufSize]; + if (mpBuf == NULL) + return kJ3DError_Alloc; + + mBufSize = bufSize; + frameInit(); + calcZRatio(); + return kJ3DError_Success; +} + +J3DDrawBuffer::~J3DDrawBuffer() { + frameInit(); + + delete[] mpBuf; + mpBuf = NULL; +} + +/* 80325068-8032509C 31F9A8 0034+00 2/2 1/1 0/0 .text frameInit__13J3DDrawBufferFv */ +void J3DDrawBuffer::frameInit() { + u32 bufSize = mBufSize; + for (u32 i = 0; i < bufSize; i++) + mpBuf[i] = NULL; + + mpCallBackPacket = NULL; +} + +/* 8032509C-803251E4 31F9DC 0148+00 2/1 0/0 0/0 .text + * entryMatSort__13J3DDrawBufferFP12J3DMatPacket */ +int J3DDrawBuffer::entryMatSort(J3DMatPacket* pMatPacket) { + pMatPacket->drawClear(); + pMatPacket->getShapePacket()->drawClear(); + + if (pMatPacket->isChanged()) { + pMatPacket->setNextPacket(mpBuf[0]); + mpBuf[0] = pMatPacket; + return 1; + } + + J3DTexture* texture = j3dSys.getTexture(); + u32 hash; + u16 texNo = pMatPacket->getMaterial()->getTexNo(0); + if (texNo == 0xFFFF) { + hash = 0; + } else { + hash = ((u32)texture->getResTIMG(texNo) + texture->getResTIMG(texNo)->imageOffset) >> 5; + } + u32 slot = hash & (mBufSize - 1); + + if (mpBuf[slot] == NULL) { + mpBuf[slot] = pMatPacket; + return 1; + } else { + for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL; + pkt = (J3DMatPacket*)pkt->getNextPacket()) + { + if (pkt->isSame(pMatPacket)) { + pkt->addShapePacket(pMatPacket->getShapePacket()); + return 0; + } + } + + pMatPacket->setNextPacket(mpBuf[slot]); + mpBuf[slot] = pMatPacket; + return 1; + } +} + +/* 803251E4-8032529C 31FB24 00B8+00 1/0 0/0 0/0 .text + * entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket */ +int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* pMatPacket) { + J3DMaterialAnm* pMaterialAnm = pMatPacket->mpMaterialAnm; + u32 slot = (u32)pMaterialAnm & (mBufSize - 1); + + if (pMaterialAnm == NULL) { + return entryMatSort(pMatPacket); + } else { + pMatPacket->drawClear(); + pMatPacket->getShapePacket()->drawClear(); + if (mpBuf[slot] == NULL) { + mpBuf[slot] = pMatPacket; + return 1; + } else { + for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL; + pkt = (J3DMatPacket*)pkt->getNextPacket()) + { + if (pkt->mpMaterialAnm == pMaterialAnm) { + pkt->addShapePacket(pMatPacket->getShapePacket()); + return 0; + } + } + + pMatPacket->setNextPacket(mpBuf[slot]); + mpBuf[slot] = pMatPacket; + return 1; + } + } +} + +/* 8032529C-803253B4 31FBDC 0118+00 1/0 0/0 0/0 .text entryZSort__13J3DDrawBufferFP12J3DMatPacket + */ +int J3DDrawBuffer::entryZSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); + + Vec tmp; + tmp.x = mpZMtx[0][3]; + tmp.y = mpZMtx[1][3]; + tmp.z = mpZMtx[2][3]; + + f32 value = -J3DCalcZValue(j3dSys.getViewMtx(), tmp); + + u32 uvar4; + if (mZNear + mZRatio < value) { + if (mZFar - mZRatio > value) { + uvar4 = value / mZRatio; + } else { + uvar4 = mBufSize - 1; + } + } else { + uvar4 = 0; + } + + u32 idx = (mBufSize - 1) - uvar4; + i_packet->setNextPacket(mpBuf[idx]); + mpBuf[idx] = i_packet; + + return 1; +} + +/* 803253B4-80325404 31FCF4 0050+00 1/0 0/0 0/0 .text + * entryModelSort__13J3DDrawBufferFP12J3DMatPacket */ +int J3DDrawBuffer::entryModelSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); + + if (mpCallBackPacket != NULL) { + mpCallBackPacket->addChildPacket(i_packet); + return 1; + } + + return 0; +} + +/* 80325404-80325458 31FD44 0054+00 1/0 0/0 0/0 .text + * entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket */ +int J3DDrawBuffer::entryInvalidSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); + + if (mpCallBackPacket != NULL) { + mpCallBackPacket->addChildPacket(i_packet->getShapePacket()); + return 1; + } + + return 0; +} + +int J3DDrawBuffer::entryNonSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->mpShapePacket->drawClear(); + + i_packet->setNextPacket(mpBuf[0]); + mpBuf[0] = i_packet; + + return 1; +} + +int J3DDrawBuffer::entryImm(J3DPacket* i_packet, u16 index) { + i_packet->setNextPacket(mpBuf[index]); + mpBuf[index] = i_packet; + + return 1; +} + +/* 803CEC30-803CEC78 02BD50 0048+00 0/1 1/1 0/0 .data sortFuncTable__13J3DDrawBuffer */ +sortFunc J3DDrawBuffer::sortFuncTable[6] = { + &J3DDrawBuffer::entryMatSort, &J3DDrawBuffer::entryMatAnmSort, &J3DDrawBuffer::entryZSort, + &J3DDrawBuffer::entryModelSort, &J3DDrawBuffer::entryInvalidSort, &J3DDrawBuffer::entryNonSort, +}; + +/* 803CEC90-803CECA8 02BDB0 0018+00 1/2 0/0 0/0 .data drawFuncTable__13J3DDrawBuffer */ +drawFunc J3DDrawBuffer::drawFuncTable[2] = { + &J3DDrawBuffer::drawHead, + &J3DDrawBuffer::drawTail, +}; + +/* 803254AC-80325500 31FDEC 0054+00 0/0 2/2 0/0 .text draw__13J3DDrawBufferCFv */ +void J3DDrawBuffer::draw() const { + drawFunc func = drawFuncTable[mDrawType]; + (this->*func)(); +} + +/* 80325500-80325578 31FE40 0078+00 1/0 0/0 0/0 .text drawHead__13J3DDrawBufferCFv */ +void J3DDrawBuffer::drawHead() const { + u32 size = mBufSize; + J3DPacket** buf = mpBuf; + + for (u32 i = 0; i < size; i++) { + for (J3DPacket* packet = buf[i]; packet != NULL; packet = packet->getNextPacket()) { + packet->draw(); + } + } +} + +/* 80325578-803255F0 31FEB8 0078+00 1/0 0/0 0/0 .text drawTail__13J3DDrawBufferCFv */ +void J3DDrawBuffer::drawTail() const { + int num = mBufSize - 1; + + for (int i = num; i >= 0; i--) { + for (J3DPacket* packet = mpBuf[i]; packet != NULL; packet = packet->getNextPacket()) { + packet->draw(); + } + } +} + +/* ############################################################################################## */ +/* 804515E0-804515E8 000AE0 0004+04 0/0 1/1 0/0 .sbss entryNum__13J3DDrawBuffer */ +int J3DDrawBuffer::entryNum;
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DGD.cpp b/src/JSystem/J3DGraphBase/J3DGD.cpp new file mode 100644 index 0000000000..5e361862b9 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DGD.cpp @@ -0,0 +1,665 @@ +// +// J3DGD +// + +#include "JSystem/J3DGraphBase/J3DGD.h" +#include "dolphin/gd.h" +#include "dolphin/os.h" + +/* 8030D098-8030D210 3079D8 0178+00 0/0 1/1 0/0 .text J3DGDSetGenMode__FUcUcUcUc11_GXCullMode */ +void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 indTexStageNum, + GXCullMode cullMode) { + GDOverflowCheck(0xa); + J3DGDWriteBPCmd(0xfe07fc3f); + static u8 cm2hw[4] = {0, 2, 1, 3}; + J3DGDWriteBPCmd(texGenNum | colorChanNum << 4 | (tevStageNum - 1) << 0xa | + cm2hw[cullMode] << 0xe | indTexStageNum << 0x10); +} + +/* 8030D210-8030D364 307B50 0154+00 0/0 1/1 0/0 .text J3DGDSetGenMode_3Param__FUcUcUc */ +void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum) { + GDOverflowCheck(0xa); + J3DGDWriteBPCmd(0xfe073c0f); + J3DGDWriteBPCmd(texGenNum | (tevStageNum - 1) << 0xa | indTexStageNum << 0x10); +} + +/* 8030D364-8030D65C 307CA4 02F8+00 0/0 1/1 0/0 .text J3DGDSetLightAttn__F10_GXLightIDffffff */ +void J3DGDSetLightAttn(GXLightID id, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2) { + J3DGDWriteXFCmdHdr(0x0604 + __GDLightID2Offset(id), 6); + J3DGDWrite_f32(a0); + J3DGDWrite_f32(a1); + J3DGDWrite_f32(a2); + J3DGDWrite_f32(k0); + J3DGDWrite_f32(k1); + J3DGDWrite_f32(k2); +} + +/* 8030D65C-8030D76C 307F9C 0110+00 0/0 1/1 0/0 .text J3DGDSetLightColor__F10_GXLightID8_GXColor + */ +void J3DGDSetLightColor(GXLightID id, GXColor color) { + J3DGDWriteXFCmd(0x0603 + __GDLightID2Offset(id), + (color.r << 24) | (color.g << 16) | (color.b << 8) | (color.a << 0)); +} + +/* 8030D76C-8030D938 3080AC 01CC+00 0/0 1/1 0/0 .text J3DGDSetLightPos__F10_GXLightIDfff + */ +void J3DGDSetLightPos(GXLightID id, f32 x, f32 y, f32 z) { + J3DGDWriteXFCmdHdr(0x060A + __GDLightID2Offset(id), 3); + J3DGDWrite_f32(x); + J3DGDWrite_f32(y); + J3DGDWrite_f32(z); +} + +/* 8030D938-8030DB04 308278 01CC+00 0/0 1/1 0/0 .text J3DGDSetLightDir__F10_GXLightIDfff + */ +void J3DGDSetLightDir(GXLightID id, f32 x, f32 y, f32 z) { + J3DGDWriteXFCmdHdr(0x060D + __GDLightID2Offset(id), 3); + J3DGDWrite_f32(x); + J3DGDWrite_f32(y); + J3DGDWrite_f32(z); +} + +/* 8030DB04-8030E064 308444 0560+00 1/0 1/1 0/0 .text + * J3DGDSetVtxAttrFmtv__F9_GXVtxFmtPC17_GXVtxAttrFmtListb */ +void J3DGDSetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList const* fmtList, bool param_2) { + u32 pos_cnt = GX_POS_XYZ; + u32 pos_type = GX_F32; + u32 pos_shift = 0; + u32 nrm_cnt = GX_NRM_XYZ; + u32 nrm_type = GX_F32; + u32 local_34 = 0; + u32 clr0_cnt = GX_CLR_RGBA; + u32 clr0_type = GX_RGBA8; + u32 clr1_cnt = GX_CLR_RGBA; + u32 clr1_type = GX_RGBA8; + u32 tex0_cnt = GX_TEX_ST; + u32 tex0_type = GX_F32; + u32 tex0_shift = 0; + u32 tex1_cnt = GX_TEX_ST; + u32 tex1_type = GX_F32; + u32 tex1_shift = 0; + u32 tex2_cnt = GX_TEX_ST; + u32 tex2_type = GX_F32; + u32 tex2_shift = 0; + u32 tex3_cnt = GX_TEX_ST; + u32 tex3_type = GX_F32; + u32 tex3_shift = 0; + u32 tex4_cnt = GX_TEX_ST; + u32 tex4_type = GX_F32; + u32 tex4_shift = 0; + u32 tex5_cnt = GX_TEX_ST; + u32 tex5_type = GX_F32; + u32 tex5_shift = 0; + u32 tex6_cnt = GX_TEX_ST; + u32 tex6_type = GX_F32; + u32 tex6_shift = 0; + u32 tex7_cnt = GX_TEX_ST; + u32 tex7_type = GX_F32; + u32 tex7_shift = 0; + for (; fmtList->mAttrib != GX_VA_NULL; fmtList++) { + switch (fmtList->mAttrib) { + case GX_VA_POS: + pos_cnt = fmtList->mCompCnt; + pos_type = fmtList->mCompType; + pos_shift = fmtList->mCompShift; + break; + case GX_VA_NRM: + case GX_VA_NBT: + nrm_type = fmtList->mCompType; + if (fmtList->mCompCnt == GX_NRM_NBT3) { + nrm_cnt = GX_NRM_NBT; + local_34 = 1; + } else { + if (param_2) { + nrm_cnt = GX_NRM_NBT; + } else { + nrm_cnt = fmtList->mCompCnt; + } + local_34 = 0; + } + break; + case GX_VA_CLR0: + clr0_cnt = fmtList->mCompCnt; + clr0_type = fmtList->mCompType; + break; + case GX_VA_CLR1: + clr1_cnt = fmtList->mCompCnt; + clr1_type = fmtList->mCompType; + break; + case GX_VA_TEX0: + tex0_cnt = fmtList->mCompCnt; + tex0_type = fmtList->mCompType; + tex0_shift = fmtList->mCompShift; + break; + case GX_VA_TEX1: + tex1_cnt = fmtList->mCompCnt; + tex1_type = fmtList->mCompType; + tex1_shift = fmtList->mCompShift; + break; + case GX_VA_TEX2: + tex2_cnt = fmtList->mCompCnt; + tex2_type = fmtList->mCompType; + tex2_shift = fmtList->mCompShift; + break; + case GX_VA_TEX3: + tex3_cnt = fmtList->mCompCnt; + tex3_type = fmtList->mCompType; + tex3_shift = fmtList->mCompShift; + break; + case GX_VA_TEX4: + tex4_cnt = fmtList->mCompCnt; + tex4_type = fmtList->mCompType; + tex4_shift = fmtList->mCompShift; + break; + case GX_VA_TEX5: + tex5_cnt = fmtList->mCompCnt; + tex5_type = fmtList->mCompType; + tex5_shift = fmtList->mCompShift; + break; + case GX_VA_TEX6: + tex6_cnt = fmtList->mCompCnt; + tex6_type = fmtList->mCompType; + tex6_shift = fmtList->mCompShift; + break; + case GX_VA_TEX7: + tex7_cnt = fmtList->mCompCnt; + tex7_type = fmtList->mCompType; + tex7_shift = fmtList->mCompShift; + break; + } + } + GDOverflowCheck(0x12); + J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP0 + fmt, + pos_cnt | pos_type << 1 | pos_shift << 4 | nrm_cnt << 9 | nrm_type << 0xa | + clr0_cnt << 0xd | clr0_type << 0xe | clr1_cnt << 0x11 | clr1_type << 0x12 | + tex0_cnt << 0x15 | tex0_type << 0x16 | tex0_shift << 0x19 | 0x40000000 | + local_34 << 0x1f); + J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP1 + fmt, + tex1_cnt | tex1_type << 1 | tex1_shift << 4 | tex2_cnt << 9 | tex2_type << 0xa | + tex2_shift << 0xd | tex3_cnt << 0x12 | tex3_type << 0x13 | + tex3_shift << 0x16 | tex4_cnt << 0x1b | tex4_type << 0x1c | 0x80000000); + J3DGDWriteCPCmd(GX_CP_REG_VAT_GRP2 + fmt, + tex4_shift | tex5_cnt << 5 | tex5_type << 6 | tex5_shift << 9 | + tex6_cnt << 0xe | tex6_type << 0xf | tex6_shift << 0x12 | tex7_cnt << 0x17 | + tex7_type << 0x18 | tex7_shift << 0x1b); +} + +/* 8030E064-8030E234 3089A4 01D0+00 1/0 1/1 0/0 .text + * J3DGDSetTexCoordGen__F13_GXTexGenType12_GXTexGenSrc */ +void J3DGDSetTexCoordGen(GXTexGenType texGenType, GXTexGenSrc texGenSrc) { + u32 input_form = 0; + u32 proj_type = 0; + u32 src_row = 5; + u32 bump_src_tex = 5; + u32 bump_src_light = 0; + u32 texgen_type; + switch (texGenSrc) { + case GX_TG_POS: + src_row = 0; + input_form = 1; + break; + case GX_TG_NRM: + src_row = 1; + input_form = 1; + break; + case GX_TG_BINRM: + src_row = 3; + input_form = 1; + break; + case GX_TG_TANGENT: + src_row = 4; + input_form = 1; + break; + case GX_TG_COLOR0: + src_row = 2; + break; + case GX_TG_COLOR1: + src_row = 2; + break; + case GX_TG_TEX0: + src_row = 5; + break; + case GX_TG_TEX1: + src_row = 6; + break; + case GX_TG_TEX2: + src_row = 7; + break; + case GX_TG_TEX3: + src_row = 8; + break; + case GX_TG_TEX4: + src_row = 9; + break; + case GX_TG_TEX5: + src_row = 10; + break; + case GX_TG_TEX6: + src_row = 11; + break; + case GX_TG_TEX7: + src_row = 12; + break; + case GX_TG_TEXCOORD0: + bump_src_tex = 0; + break; + case GX_TG_TEXCOORD1: + bump_src_tex = 1; + break; + case GX_TG_TEXCOORD2: + bump_src_tex = 2; + break; + case GX_TG_TEXCOORD3: + bump_src_tex = 3; + break; + case GX_TG_TEXCOORD4: + bump_src_tex = 4; + break; + case GX_TG_TEXCOORD5: + bump_src_tex = 5; + break; + case GX_TG_TEXCOORD6: + bump_src_tex = 6; + break; + } + switch (texGenType) { + case GX_TG_MTX2x4: + texgen_type = 0; + break; + case GX_TG_MTX3x4: + texgen_type = 0; + proj_type = 1; + break; + case GX_TG_BUMP0: + case GX_TG_BUMP1: + case GX_TG_BUMP2: + case GX_TG_BUMP3: + case GX_TG_BUMP4: + case GX_TG_BUMP5: + case GX_TG_BUMP6: + case GX_TG_BUMP7: + texgen_type = 1; + bump_src_light = texGenType - 2; + break; + case GX_TG_SRTG: + if (texGenSrc == GX_TG_COLOR0) { + texgen_type = 2; + } else { + texgen_type = 3; + } + break; + } + J3DGDWrite_u32( + proj_type << (31 - GX_XF_TEX_PROJTYPE_END) | input_form << (31 - GX_XF_TEX_INPUTFORM_END) | + texgen_type << (31 - GX_XF_TEX_TEXGENTYPE_END) | src_row << (31 - GX_XF_TEX_SRCROW_END) | + bump_src_tex << (31 - GX_XF_TEX_BUMPSRCTEX_END) | + bump_src_light << (31 - GX_XF_TEX_BUMPSRCLIGHT_END)); +} + +/* 8030E234-8030E438 308B74 0204+00 0/0 16/16 0/0 .text + * J3DGDSetTexCoordScale2__F13_GXTexCoordIDUsUcUcUsUcUc */ +void J3DGDSetTexCoordScale2(GXTexCoordID param_0, u16 param_1, u8 param_2, u8 param_3, u16 param_4, + u8 param_5, u8 param_6) { + GDOverflowCheck(0xf); + J3DGDWriteBPCmd(0xfe03ffff); + J3DGDWriteBPCmd((param_1 - 1) | param_2 << 0x10 | param_3 << 0x11 | + (param_0 * 2 + 0x30) << 0x18); + J3DGDWriteBPCmd((param_4 - 1) | param_5 << 0x10 | param_6 << 0x11 | + (param_0 * 2 + 0x31) << 0x18); +} + +/* 8045090C-80450914 00038C 0008+00 1/1 0/0 0/0 .sdata J3DGDTexMode0Ids */ +static u8 J3DGDTexMode0Ids[8] = { + 0x80, 0x81, 0x82, 0x83, 0xA0, 0xA1, 0xA2, 0xA3, +}; + +/* 80450914-8045091C 000394 0008+00 1/1 0/0 0/0 .sdata J3DGDTexMode1Ids */ +static u8 J3DGDTexMode1Ids[8] = { + 0x84, 0x85, 0x86, 0x87, 0xA4, 0xA5, 0xA6, 0xA7, +}; + +/* 8045091C-80450924 00039C 0008+00 1/1 0/0 0/0 .sdata J3DGDTexImage0Ids */ +static u8 J3DGDTexImage0Ids[8] = { + 0x88, 0x89, 0x8A, 0x8B, 0xA8, 0xA9, 0xAA, 0xAB, +}; + +/* 80450924-8045092C 0003A4 0008+00 2/2 0/0 0/0 .sdata J3DGDTexImage3Ids */ +static u8 J3DGDTexImage3Ids[8] = { + 0x94, 0x95, 0x96, 0x97, 0xB4, 0xB5, 0xB6, 0xB7, +}; + +/* 8045092C-80450934 0003AC 0008+00 1/1 0/0 0/0 .sdata J3DGDTexTlutIds */ +static u8 J3DGDTexTlutIds[8] = { + 0x98, 0x99, 0x9A, 0x9B, 0xB8, 0xB9, 0xBA, 0xBB, +}; + +/* 80450934-8045093C 0003B4 0006+02 1/1 0/0 0/0 .sdata GX2HWFiltConv */ +static u8 GX2HWFiltConv[6] = { + 0x00, 0x04, 0x01, 0x05, 0x02, 0x06, +}; + +/* 8030E438-8030E5D4 308D78 019C+00 0/0 1/1 0/0 .text + * J3DGDSetTexLookupMode__F11_GXTexMapID14_GXTexWrapMode14_GXTexWrapMode12_GXTexFilter12_GXTexFilterfffUcUc13_GXAnisotropy + */ +void J3DGDSetTexLookupMode(GXTexMapID param_0, GXTexWrapMode param_1, GXTexWrapMode param_2, + GXTexFilter param_3, GXTexFilter param_4, f32 param_5, f32 param_6, + f32 param_7, u8 param_8, u8 param_9, GXAnisotropy param_10) { + J3DGDWriteBPCmd(param_1 | param_2 << 2 | (param_4 == GX_LINEAR) << 4 | + GX2HWFiltConv[param_3] << 5 | (param_9 == 0) << 8 | + ((int)(param_7 * 32.0f) & 0xff) << 9 | param_10 << 0x13 | param_8 << 0x15 | + J3DGDTexMode0Ids[param_0] << 0x18); + J3DGDWriteBPCmd(((int)(param_5 * 16.0f) & 0xff) | ((int)(param_6 * 16.0f) & 0xff) << 8 | + J3DGDTexMode1Ids[param_0] << 0x18); +} + +/* 8030E5D4-8030E67C 308F14 00A8+00 0/0 1/1 0/0 .text + * J3DGDSetTexImgAttr__F11_GXTexMapIDUsUs9_GXTexFmt */ +void J3DGDSetTexImgAttr(GXTexMapID param_0, u16 param_1, u16 param_2, GXTexFmt param_3) { + J3DGDWriteBPCmd((param_1 - 1) | (param_2 - 1) << 0xa | param_3 << 0x14 | + J3DGDTexImage0Ids[param_0] << 0x18); +} + +/* 8030E67C-8030E70C 308FBC 0090+00 0/0 1/1 0/0 .text J3DGDSetTexImgPtr__F11_GXTexMapIDPv + */ +void J3DGDSetTexImgPtr(GXTexMapID param_0, void* param_1) { + J3DGDWriteBPCmd(OSCachedToPhysical(param_1) >> 5 | J3DGDTexImage3Ids[param_0] << 0x18); +} + +/* 8030E70C-8030E7E0 30904C 00D4+00 0/0 1/1 0/0 .text J3DGDSetTexImgPtrRaw__F11_GXTexMapIDUl */ +void J3DGDSetTexImgPtrRaw(GXTexMapID param_0, u32 param_1) { + GDOverflowCheck(5); + J3DGDWriteBPCmd(param_1 | J3DGDTexImage3Ids[param_0] << 0x18); +} + +/* 8030E7E0-8030E878 309120 0098+00 0/0 1/1 0/0 .text + * J3DGDSetTexTlut__F11_GXTexMapIDUl10_GXTlutFmt */ +void J3DGDSetTexTlut(GXTexMapID param_0, u32 param_1, GXTlutFmt param_2) { + J3DGDWriteBPCmd((param_1 - 0x80000) >> 9 | param_2 << 0xa | J3DGDTexTlutIds[param_0] << 0x18); +} + +/* 8030E878-8030EB30 3091B8 02B8+00 0/0 1/1 0/0 .text J3DGDLoadTlut__FPvUl11_GXTlutSize + */ +void J3DGDLoadTlut(void* param_0, u32 param_1, GXTlutSize param_2) { + J3DGDWriteBPCmd(0xfeffff00); + J3DGDWriteBPCmd(0x0f000000); + J3DGDWriteBPCmd(OSCachedToPhysical(param_0) >> 5 | 0x64000000); + J3DGDWriteBPCmd((param_1 - 0x80000) >> 9 | param_2 << 0xa | 0x65000000); + J3DGDWriteBPCmd(0xfeffff00); + J3DGDWriteBPCmd(0x0f000000); +} + +/* 8030EB30-8030EE10 309470 02E0+00 0/0 2/2 0/0 .text J3DGDSetIndTexMtx__F14_GXIndTexMtxIDPA3_fSc + */ +void J3DGDSetIndTexMtx(GXIndTexMtxID id, Mtx3P mtx, s8 exp) { + s32 mtx32[6]; + u32 idx; + + switch (id) { + case GX_ITM_0: + case GX_ITM_1: + case GX_ITM_2: + idx = (u32)(id - GX_ITM_0); + break; + case GX_ITM_S0: + case GX_ITM_S1: + case GX_ITM_S2: + idx = (u32)(id - GX_ITM_S0); + break; + case GX_ITM_T0: + case GX_ITM_T1: + case GX_ITM_T2: + idx = (u32)(id - GX_ITM_T0); + break; + default: + idx = 0; + break; + } + + exp += 17; + + mtx32[0] = (s32)(mtx[0][0] * 1024.0f) & 0x7FF; + mtx32[1] = (s32)(mtx[1][0] * 1024.0f) & 0x7FF; + + mtx32[2] = (s32)(mtx[0][1] * 1024.0f) & 0x7FF; + mtx32[3] = (s32)(mtx[1][1] * 1024.0f) & 0x7FF; + + mtx32[4] = (s32)(mtx[0][2] * 1024.0f) & 0x7FF; + mtx32[5] = (s32)(mtx[1][2] * 1024.0f) & 0x7FF; + + GDOverflowCheck(15); + + J3DGDWriteBPCmd((mtx32[0] << 0) | (mtx32[1] << 11) | (((exp >> 0) & 0x03) << 22) | + (0x06 + idx * 3) << 24); + J3DGDWriteBPCmd((mtx32[2] << 0) | (mtx32[3] << 11) | (((exp >> 2) & 0x03) << 22) | + (0x07 + idx * 3) << 24); + J3DGDWriteBPCmd((mtx32[4] << 0) | (mtx32[5] << 11) | (((exp >> 4) & 0x03) << 22) | + (0x08 + idx * 3) << 24); +} + +/* 8030EE10-8030EF08 309750 00F8+00 0/0 2/2 0/0 .text + * J3DGDSetIndTexCoordScale__F16_GXIndTexStageID14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale + */ +void J3DGDSetIndTexCoordScale(GXIndTexStageID stage, GXIndTexScale scale0, GXIndTexScale scale1, + GXIndTexScale scale2, GXIndTexScale scale3) { + GDOverflowCheck(5); + J3DGDWriteBPCmd(scale0 | scale1 << 4 | scale2 << 8 | scale3 << 0xc | + ((stage >> 1) + GX_BP_REG_RAS1_SS0) << 0x18); +} + +/* 8030EF08-8030F108 309848 0200+00 0/0 2/2 0/0 .text + * J3DGDSetIndTexOrder__FUl13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID + */ +void J3DGDSetIndTexOrder(u32 count, GXTexCoordID coord0, GXTexMapID map0, GXTexCoordID coord1, + GXTexMapID map1, GXTexCoordID coord2, GXTexMapID map2, GXTexCoordID coord3, + GXTexMapID map3) { + GDOverflowCheck(0xa); + J3DGDWriteBPCmd(map0 & 7 | (coord0 & 7) << 3 | (map1 & 7) << 6 | (coord1 & 7) << 9 | + (map2 & 7) << 0xc | (coord2 & 7) << 0xf | (map3 & 7) << 0x12 | + (coord3 & 7) << 0x15 | GX_BP_REG_RAS1_IREF << 0x18); + u32 imask = 0; + for (u32 i = 0; i < count; i++) { + switch (i) { + case 0: + imask |= 1 << (map0 & 7); + break; + case 1: + imask |= 1 << (map1 & 7); + break; + case 2: + imask |= 1 << (map2 & 7); + break; + case 3: + imask |= 1 << (map3 & 7); + break; + } + } + J3DGDWriteBPCmd(imask | GX_BP_REG_INDIMASK << 0x18); +} + +/* 8030F108-8030F294 309A48 018C+00 0/0 9/9 0/0 .text + * J3DGDSetTevOrder__F13_GXTevStageID13_GXTexCoordID11_GXTexMapID12_GXChannelID13_GXTexCoordID11_GXTexMapID12_GXChannelID + */ +void J3DGDSetTevOrder(GXTevStageID stage, GXTexCoordID coord0, GXTexMapID map0, + GXChannelID channel0, GXTexCoordID coord1, GXTexMapID map1, + GXChannelID channel1) { + coord0 = coord0 >= GX_MAXCOORD ? GX_TEXCOORD0 : coord0; + coord1 = coord1 >= GX_MAXCOORD ? GX_TEXCOORD0 : coord1; + GDOverflowCheck(5); + static u8 c2r[32] = {0, 1, 0, 1, 0, 1, 7, 5, 6, 0, 0, 0, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + J3DGDWriteBPCmd((map0 & 7) | coord0 << 3 | + (map0 != GX_TEXMAP_NULL && !(map0 & GX_TEXMAP_DISABLE)) << 6 | + c2r[channel0 & 0xf] << 7 | (map1 & 7) << 0xc | coord1 << 0xf | + (map1 != GX_TEXMAP_NULL && !(map1 & GX_TEXMAP_DISABLE)) << 0x12 | + c2r[channel1 & 0xf] << 0x13 | (stage / 2 + GX_BP_REG_RAS1_TREF0) << 0x18); +} + +/* 8030F294-8030F3FC 309BD4 0168+00 0/0 11/11 0/0 .text + * J3DGDSetTevKColor__F14_GXTevKColorID8_GXColor */ +void J3DGDSetTevKColor(GXTevKColorID id, GXColor color) { + u32 cmd0 = color.r | color.a << 0xc | 0x800000 | (id * 2 + GX_BP_REG_TEVREG0LO) << 0x18; + u32 cmd1 = color.b | color.g << 0xc | 0x800000 | (id * 2 + GX_BP_REG_TEVREG0HI) << 0x18; + GDOverflowCheck(0xa); + J3DGDWriteBPCmd(cmd0); + J3DGDWriteBPCmd(cmd1); +} + +/* 8030F3FC-8030F630 309D3C 0234+00 0/0 11/11 0/0 .text + * J3DGDSetTevColorS10__F11_GXTevRegID11_GXColorS10 */ +void J3DGDSetTevColorS10(GXTevRegID id, GXColorS10 color) { + u32 cmd0 = + (color.r & 0x7ff) | (color.a & 0x7ff) << 0xc | (id * 2 + GX_BP_REG_TEVREG0LO) << 0x18; + u32 cmd1 = + (color.b & 0x7ff) | (color.g & 0x7ff) << 0xc | (id * 2 + GX_BP_REG_TEVREG0HI) << 0x18; + GDOverflowCheck(0x14); + J3DGDWriteBPCmd(cmd0); + J3DGDWriteBPCmd(cmd1); + J3DGDWriteBPCmd(cmd1); + J3DGDWriteBPCmd(cmd1); +} + +/* 8030F630-8030F994 309F70 0364+00 0/0 3/3 0/0 .text J3DGDSetFog__F10_GXFogTypeffff8_GXColor */ +void J3DGDSetFog(GXFogType fogType, f32 param_1, f32 param_2, f32 nearZ, f32 farZ, GXColor color) { + f32 fvar1, fvar2, fvar3; + if (farZ == nearZ || param_2 == param_1) { + fvar1 = 0.0f; + fvar2 = 0.5f; + fvar3 = 0.0f; + } else { + fvar1 = (farZ * nearZ) / ((farZ - nearZ) * (param_2 - param_1)); + fvar2 = farZ / (farZ - nearZ); + fvar3 = param_1 / (param_2 - param_1); + } + u32 shift = 1; + for (; fvar2 > 1.0; fvar2 *= 0.5f) { + shift++; + } + for (; fvar2 > 0.0f && fvar2 < 0.5; fvar2 *= 2.0f) { + shift--; + } + f32 fvar4 = (fvar1 / (1 << shift)); + u32 param1 = fvar2 * 8388638.0f; + u32 param0 = *(u32*)&fvar4; + u32 param3 = *(u32*)&fvar3; + J3DGDWriteBPCmd(param0 >> 0xc | GX_BP_REG_FOGPARAM0 << 0x18); + J3DGDWriteBPCmd(param1 | GX_BP_REG_FOGPARAM1 << 0x18); + J3DGDWriteBPCmd(shift | GX_BP_REG_FOGPARAM2 << 0x18); + J3DGDWriteBPCmd(param3 >> 0xc | fogType << 0x15 | GX_BP_REG_FOGPARAM3 << 0x18); + J3DGDWriteBPCmd(color.b | color.g << 8 | color.r << 0x10 | GX_BP_REG_FOGCOLOR << 0x18); +} + +/* 8030F994-8030FAE0 30A2D4 014C+00 0/0 3/3 0/0 .text J3DGDSetFogRangeAdj__FUcUsP14_GXFogAdjTable + */ +void J3DGDSetFogRangeAdj(u8 param_0, u16 param_1, GXFogAdjTable* table) { + if (param_0 != 0) { + for (int i = 0; i < 0xa; i += 2) { + J3DGDWriteBPCmd((i / 2 + GX_BP_REG_FOGRANGEK0) << 0x18 | table->fogVals[i + 1] << 0xc | + table->fogVals[i]); + } + } + u32 cmd = GX_BP_REG_FOGRANGE << 0x18 | (param_1 + 0x156) | param_0 << 0xa; + J3DGDWriteBPCmd(cmd); +} + +/* 8030FAE0-8030FB60 30A420 0080+00 0/0 10/10 0/0 .text J3DFifoLoadPosMtxImm__FPA4_fUl */ +void J3DFifoLoadPosMtxImm(MtxP mtx, u32 addr) { + J3DFifoWriteXFCmdHdr((addr & 0x3fff) << 2, 0xc); + J3DGXCmd1f32ptr(&mtx[0][0]); + J3DGXCmd1f32ptr(&mtx[0][1]); + J3DGXCmd1f32ptr(&mtx[0][2]); + J3DGXCmd1f32ptr(&mtx[0][3]); + J3DGXCmd1f32ptr(&mtx[1][0]); + J3DGXCmd1f32ptr(&mtx[1][1]); + J3DGXCmd1f32ptr(&mtx[1][2]); + J3DGXCmd1f32ptr(&mtx[1][3]); + J3DGXCmd1f32ptr(&mtx[2][0]); + J3DGXCmd1f32ptr(&mtx[2][1]); + J3DGXCmd1f32ptr(&mtx[2][2]); + J3DGXCmd1f32ptr(&mtx[2][3]); +} + +/* 8030FB60-8030FBCC 30A4A0 006C+00 0/0 9/9 0/0 .text J3DFifoLoadNrmMtxImm__FPA4_fUl */ +void J3DFifoLoadNrmMtxImm(MtxP mtx, u32 addr) { + J3DFifoWriteXFCmdHdr(addr * 3 + 0x400, 9); + J3DGXCmd1f32ptr(&mtx[0][0]); + J3DGXCmd1f32ptr(&mtx[0][1]); + J3DGXCmd1f32ptr(&mtx[0][2]); + J3DGXCmd1f32ptr(&mtx[1][0]); + J3DGXCmd1f32ptr(&mtx[1][1]); + J3DGXCmd1f32ptr(&mtx[1][2]); + J3DGXCmd1f32ptr(&mtx[2][0]); + J3DGXCmd1f32ptr(&mtx[2][1]); + J3DGXCmd1f32ptr(&mtx[2][2]); +} + +/* 8030FBCC-8030FC38 30A50C 006C+00 0/0 3/3 0/0 .text J3DFifoLoadNrmMtxImm3x3__FPA3_fUl + */ +void J3DFifoLoadNrmMtxImm3x3(Mtx3P mtx, u32 addr) { + J3DFifoWriteXFCmdHdr(addr * 3 + 0x400, 9); + J3DGXCmd1f32ptr(&mtx[0][0]); + J3DGXCmd1f32ptr(&mtx[0][1]); + J3DGXCmd1f32ptr(&mtx[0][2]); + J3DGXCmd1f32ptr(&mtx[1][0]); + J3DGXCmd1f32ptr(&mtx[1][1]); + J3DGXCmd1f32ptr(&mtx[1][2]); + J3DGXCmd1f32ptr(&mtx[2][0]); + J3DGXCmd1f32ptr(&mtx[2][1]); + J3DGXCmd1f32ptr(&mtx[2][2]); +} + +/* 8030FC38-8030FCD0 30A578 0098+00 0/0 4/4 0/0 .text J3DFifoLoadNrmMtxToTexMtx__FPA4_fUl + */ +void J3DFifoLoadNrmMtxToTexMtx(MtxP mtx, u32 addr) { + J3DFifoWriteXFCmdHdr((addr & 0x3fff) << 2, 0xc); + J3DGXCmd1f32ptr(&mtx[0][0]); + J3DGXCmd1f32ptr(&mtx[0][1]); + J3DGXCmd1f32ptr(&mtx[0][2]); + J3DGXCmd1f32(0.0f); + J3DGXCmd1f32ptr(&mtx[1][0]); + J3DGXCmd1f32ptr(&mtx[1][1]); + J3DGXCmd1f32ptr(&mtx[1][2]); + J3DGXCmd1f32(0.0f); + J3DGXCmd1f32ptr(&mtx[2][0]); + J3DGXCmd1f32ptr(&mtx[2][1]); + J3DGXCmd1f32ptr(&mtx[2][2]); + J3DGXCmd1f32(0.0f); +} + +/* 8030FCD0-8030FD68 30A610 0098+00 0/0 2/2 0/0 .text J3DFifoLoadNrmMtxToTexMtx3x3__FPA3_fUl */ +void J3DFifoLoadNrmMtxToTexMtx3x3(Mtx3P mtx, u32 addr) { + J3DFifoWriteXFCmdHdr((addr & 0x3fff) << 2, 0xc); + J3DGXCmd1f32ptr(&mtx[0][0]); + J3DGXCmd1f32ptr(&mtx[0][1]); + J3DGXCmd1f32ptr(&mtx[0][2]); + J3DGXCmd1f32(0.0f); + J3DGXCmd1f32ptr(&mtx[1][0]); + J3DGXCmd1f32ptr(&mtx[1][1]); + J3DGXCmd1f32ptr(&mtx[1][2]); + J3DGXCmd1f32(0.0f); + J3DGXCmd1f32ptr(&mtx[2][0]); + J3DGXCmd1f32ptr(&mtx[2][1]); + J3DGXCmd1f32ptr(&mtx[2][2]); + J3DGXCmd1f32(0.0f); +} + +/* 8045093C-80450944 0003BC 0008+00 1/1 0/0 0/0 .sdata J3DTexImage1Ids */ +static u8 J3DTexImage1Ids[8] = { + 0x8C, 0x8D, 0x8E, 0x8F, 0xAC, 0xAD, 0xAE, 0xAF, +}; + +/* 80450944-8045094C 0003C4 0008+00 1/1 0/0 0/0 .sdata J3DTexImage2Ids */ +static u8 J3DTexImage2Ids[8] = { + 0x90, 0x91, 0x92, 0x93, 0xB0, 0xB1, 0xB2, 0xB3, +}; + +/* 8030FD68-8030FDE8 30A6A8 0080+00 0/0 1/1 0/0 .text + * J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize */ +void J3DFifoLoadTexCached(GXTexMapID id, u32 param_1, GXTexCacheSize param_2, u32 param_3, + GXTexCacheSize param_4) { + J3DFifoLoadBPCmd(param_1 >> 5 | (param_2 + 3) << 0xf | (param_2 + 3) << 0x12 | + J3DTexImage1Ids[id] << 0x18); + if (param_4 != GX_TEXCACHE_NONE && param_3 < 0x100000) { + J3DFifoLoadBPCmd(param_3 >> 5 | (param_4 + 3) << 0xf | (param_4 + 3) << 0x12 | + J3DTexImage2Ids[id] << 0x18); + } +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp new file mode 100644 index 0000000000..378ad97737 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -0,0 +1,5206 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DMatBlock +// + +#include "JSystem/J3DGraphBase/J3DMatBlock.h" +#include "JSystem/J3DGraphBase/J3DGD.h" +#include "JSystem/J3DGraphBase/J3DSys.h" +#include "JSystem/J3DGraphBase/J3DTransform.h" +#include "dol2asm.h" +#include "dolphin/os.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); +} + +// +// Forward References: +// + +extern "C" void initialize__21J3DColorBlockLightOffFv(); +extern "C" void initialize__22J3DColorBlockAmbientOnFv(); +extern "C" void initialize__20J3DColorBlockLightOnFv(); +extern "C" void initialize__21J3DTexGenBlockPatchedFv(); +extern "C" void initialize__15J3DTexGenBlock4Fv(); +extern "C" void initialize__19J3DTexGenBlockBasicFv(); +extern "C" void initialize__15J3DTevBlockNullFv(); +extern "C" void initialize__18J3DTevBlockPatchedFv(); +extern "C" void initialize__12J3DTevBlock1Fv(); +extern "C" void initialize__12J3DTevBlock2Fv(); +extern "C" void initialize__12J3DTevBlock4Fv(); +extern "C" void initialize__13J3DTevBlock16Fv(); +extern "C" void initialize__15J3DIndBlockFullFv(); +extern "C" void initialize__16J3DPEBlockFogOffFv(); +extern "C" void initialize__14J3DPEBlockFullFv(); +extern "C" s32 countDLSize__21J3DColorBlockLightOffFv(); +extern "C" s32 countDLSize__22J3DColorBlockAmbientOnFv(); +extern "C" s32 countDLSize__20J3DColorBlockLightOnFv(); +extern "C" s32 countDLSize__21J3DTexGenBlockPatchedFv(); +extern "C" s32 countDLSize__15J3DTexGenBlock4Fv(); +extern "C" s32 countDLSize__19J3DTexGenBlockBasicFv(); +extern "C" s32 countDLSize__18J3DTevBlockPatchedFv(); +extern "C" s32 countDLSize__12J3DTevBlock1Fv(); +extern "C" s32 countDLSize__12J3DTevBlock2Fv(); +extern "C" s32 countDLSize__12J3DTevBlock4Fv(); +extern "C" s32 countDLSize__13J3DTevBlock16Fv(); +extern "C" s32 countDLSize__15J3DIndBlockFullFv(); +extern "C" s32 countDLSize__13J3DPEBlockOpaFv(); +extern "C" s32 countDLSize__17J3DPEBlockTexEdgeFv(); +extern "C" s32 countDLSize__13J3DPEBlockXluFv(); +extern "C" s32 countDLSize__16J3DPEBlockFogOffFv(); +extern "C" s32 countDLSize__14J3DPEBlockFullFv(); +extern "C" void load__21J3DColorBlockLightOffFv(); +extern "C" void load__22J3DColorBlockAmbientOnFv(); +extern "C" void load__20J3DColorBlockLightOnFv(); +extern "C" void patch__21J3DColorBlockLightOffFv(); +extern "C" void patchMatColor__21J3DColorBlockLightOffFv(); +extern "C" void patchLight__21J3DColorBlockLightOffFv(); +extern "C" void patch__20J3DColorBlockLightOnFv(); +extern "C" void patchMatColor__20J3DColorBlockLightOnFv(); +extern "C" void patchLight__20J3DColorBlockLightOnFv(); +extern "C" void diff__21J3DColorBlockLightOffFUl(); +extern "C" void diffMatColor__21J3DColorBlockLightOffFv(); +extern "C" void diffColorChan__21J3DColorBlockLightOffFv(); +extern "C" void diff__20J3DColorBlockLightOnFUl(); +extern "C" void diffAmbColor__20J3DColorBlockLightOnFv(); +extern "C" void diffMatColor__20J3DColorBlockLightOnFv(); +extern "C" void diffColorChan__20J3DColorBlockLightOnFv(); +extern "C" void diffLightObj__20J3DColorBlockLightOnFUl(); +extern "C" void load__15J3DTexGenBlock4Fv(); +extern "C" void load__19J3DTexGenBlockBasicFv(); +extern "C" void patch__21J3DTexGenBlockPatchedFv(); +extern "C" void patch__15J3DTexGenBlock4Fv(); +extern "C" void patch__19J3DTexGenBlockBasicFv(); +extern "C" void diff__21J3DTexGenBlockPatchedFUl(); +extern "C" void diffTexMtx__21J3DTexGenBlockPatchedFv(); +extern "C" void diffTexGen__21J3DTexGenBlockPatchedFv(); +extern "C" void load__12J3DTevBlock1Fv(); +extern "C" void load__12J3DTevBlock2Fv(); +extern "C" void load__12J3DTevBlock4Fv(); +extern "C" void load__13J3DTevBlock16Fv(); +extern "C" void patchTexNo__18J3DTevBlockPatchedFv(); +extern "C" void patchTevReg__18J3DTevBlockPatchedFv(); +extern "C" void patchTexNoAndTexCoordScale__18J3DTevBlockPatchedFv(); +extern "C" void patch__18J3DTevBlockPatchedFv(); +extern "C" void patchTexNo__12J3DTevBlock1Fv(); +extern "C" void patchTevReg__12J3DTevBlock1Fv(); +extern "C" void patchTexNoAndTexCoordScale__12J3DTevBlock1Fv(); +extern "C" void patch__12J3DTevBlock1Fv(); +extern "C" void patchTexNo__12J3DTevBlock2Fv(); +extern "C" void patchTevReg__12J3DTevBlock2Fv(); +extern "C" void patchTexNoAndTexCoordScale__12J3DTevBlock2Fv(); +extern "C" void patch__12J3DTevBlock2Fv(); +extern "C" void patchTexNo__12J3DTevBlock4Fv(); +extern "C" void patchTevReg__12J3DTevBlock4Fv(); +extern "C" void patchTexNoAndTexCoordScale__12J3DTevBlock4Fv(); +extern "C" void patch__12J3DTevBlock4Fv(); +extern "C" void patchTexNo__13J3DTevBlock16Fv(); +extern "C" void patchTevReg__13J3DTevBlock16Fv(); +extern "C" void patchTexNoAndTexCoordScale__13J3DTevBlock16Fv(); +extern "C" void patch__13J3DTevBlock16Fv(); +extern "C" void diff__11J3DTevBlockFUl(); +extern "C" void diffTexNo__18J3DTevBlockPatchedFv(); +extern "C" void diffTevStage__18J3DTevBlockPatchedFv(); +extern "C" void diffTevStageIndirect__18J3DTevBlockPatchedFv(); +extern "C" void diffTevReg__18J3DTevBlockPatchedFv(); +extern "C" void diffTexCoordScale__18J3DTevBlockPatchedFv(); +extern "C" void diffTexNo__12J3DTevBlock1Fv(); +extern "C" void diffTevReg__12J3DTevBlock1Fv(); +extern "C" void diffTevStage__12J3DTevBlock1Fv(); +extern "C" void diffTevStageIndirect__12J3DTevBlock1Fv(); +extern "C" void diffTexCoordScale__12J3DTevBlock1Fv(); +extern "C" void diffTexNo__12J3DTevBlock2Fv(); +extern "C" void diffTevReg__12J3DTevBlock2Fv(); +extern "C" void diffTevStage__12J3DTevBlock2Fv(); +extern "C" void diffTevStageIndirect__12J3DTevBlock2Fv(); +extern "C" void diffTexCoordScale__12J3DTevBlock2Fv(); +extern "C" void diffTexNo__12J3DTevBlock4Fv(); +extern "C" void diffTevReg__12J3DTevBlock4Fv(); +extern "C" void diffTevStage__12J3DTevBlock4Fv(); +extern "C" void diffTevStageIndirect__12J3DTevBlock4Fv(); +extern "C" void diffTexCoordScale__12J3DTevBlock4Fv(); +extern "C" void diffTexNo__13J3DTevBlock16Fv(); +extern "C" void diffTevReg__13J3DTevBlock16Fv(); +extern "C" void diffTevStage__13J3DTevBlock16Fv(); +extern "C" void diffTevStageIndirect__13J3DTevBlock16Fv(); +extern "C" void diffTexCoordScale__13J3DTevBlock16Fv(); +extern "C" void ptrToIndex__13J3DTevBlock16Fv(); +extern "C" void ptrToIndex__18J3DTevBlockPatchedFv(); +extern "C" void indexToPtr_private__11J3DTevBlockFUl(); +extern "C" void load__15J3DIndBlockFullFv(); +extern "C" void diff__15J3DIndBlockFullFUl(); +extern "C" void load__13J3DPEBlockOpaFv(); +extern "C" void load__17J3DPEBlockTexEdgeFv(); +extern "C" void load__13J3DPEBlockXluFv(); +extern "C" void load__16J3DPEBlockFogOffFv(); +extern "C" void diffBlend__16J3DPEBlockFogOffFv(); +extern "C" void load__14J3DPEBlockFullFv(); +extern "C" void patch__14J3DPEBlockFullFv(); +extern "C" void diffFog__14J3DPEBlockFullFv(); +extern "C" void diffBlend__14J3DPEBlockFullFv(); +extern "C" void diff__14J3DPEBlockFullFUl(); +extern "C" void reset__21J3DColorBlockLightOffFP13J3DColorBlock(); +extern "C" void reset__22J3DColorBlockAmbientOnFP13J3DColorBlock(); +extern "C" void reset__20J3DColorBlockLightOnFP13J3DColorBlock(); +extern "C" void reset__21J3DTexGenBlockPatchedFP14J3DTexGenBlock(); +extern "C" void reset__15J3DTexGenBlock4FP14J3DTexGenBlock(); +extern "C" void reset__19J3DTexGenBlockBasicFP14J3DTexGenBlock(); +extern "C" void reset__18J3DTevBlockPatchedFP11J3DTevBlock(); +extern "C" void reset__12J3DTevBlock1FP11J3DTevBlock(); +extern "C" void reset__12J3DTevBlock2FP11J3DTevBlock(); +extern "C" void reset__12J3DTevBlock4FP11J3DTevBlock(); +extern "C" void reset__13J3DTevBlock16FP11J3DTevBlock(); +extern "C" void reset__15J3DIndBlockFullFP11J3DIndBlock(); +extern "C" void reset__16J3DPEBlockFogOffFP10J3DPEBlock(); +extern "C" void reset__14J3DPEBlockFullFP10J3DPEBlock(); +extern "C" void calc__21J3DTexGenBlockPatchedFPA4_Cf(); +extern "C" void calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf(); +extern "C" void calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf(); +extern "C" void calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf(); +extern "C" void diffTevReg__11J3DTevBlockFv(); +extern "C" void diffTevStageIndirect__11J3DTevBlockFv(); +extern "C" void diffTevStage__11J3DTevBlockFv(); +extern "C" void diffTexCoordScale__11J3DTevBlockFv(); +extern "C" void diffTexNo__11J3DTevBlockFv(); +extern "C" void getType__14J3DPEBlockFullFv(); +extern "C" void setFog__14J3DPEBlockFullFP6J3DFog(); +extern "C" void setFog__14J3DPEBlockFullF6J3DFog(); +extern "C" void getFog__14J3DPEBlockFullFv(); +extern "C" void setAlphaComp__14J3DPEBlockFullFRC12J3DAlphaComp(); +extern "C" void setAlphaComp__14J3DPEBlockFullFPC12J3DAlphaComp(); +extern "C" void getAlphaComp__14J3DPEBlockFullFv(); +extern "C" void setBlend__14J3DPEBlockFullFRC8J3DBlend(); +extern "C" void setBlend__14J3DPEBlockFullFPC8J3DBlend(); +extern "C" void getBlend__14J3DPEBlockFullFv(); +extern "C" void setZMode__14J3DPEBlockFullF8J3DZMode(); +extern "C" void setZMode__14J3DPEBlockFullFPC8J3DZMode(); +extern "C" void getZMode__14J3DPEBlockFullFv(); +extern "C" void setZCompLoc__14J3DPEBlockFullFUc(); +extern "C" void setZCompLoc__14J3DPEBlockFullFPCUc(); +extern "C" void getZCompLoc__14J3DPEBlockFullCFv(); +extern "C" void setDither__14J3DPEBlockFullFUc(); +extern "C" void setDither__14J3DPEBlockFullFPCUc(); +extern "C" void getDither__14J3DPEBlockFullCFv(); +extern "C" void getFogOffset__14J3DPEBlockFullCFv(); +extern "C" void setFogOffset__14J3DPEBlockFullFUl(); +extern "C" void __dt__14J3DPEBlockFullFv(); +extern "C" void diff__16J3DPEBlockFogOffFUl(); +extern "C" void getType__16J3DPEBlockFogOffFv(); +extern "C" void setAlphaComp__16J3DPEBlockFogOffFRC12J3DAlphaComp(); +extern "C" void setAlphaComp__16J3DPEBlockFogOffFPC12J3DAlphaComp(); +extern "C" void getAlphaComp__16J3DPEBlockFogOffFv(); +extern "C" void setBlend__16J3DPEBlockFogOffFRC8J3DBlend(); +extern "C" void setBlend__16J3DPEBlockFogOffFPC8J3DBlend(); +extern "C" void getBlend__16J3DPEBlockFogOffFv(); +extern "C" void setZMode__16J3DPEBlockFogOffF8J3DZMode(); +extern "C" void setZMode__16J3DPEBlockFogOffFPC8J3DZMode(); +extern "C" void getZMode__16J3DPEBlockFogOffFv(); +extern "C" void setZCompLoc__16J3DPEBlockFogOffFUc(); +extern "C" void setZCompLoc__16J3DPEBlockFogOffFPCUc(); +extern "C" void getZCompLoc__16J3DPEBlockFogOffCFv(); +extern "C" void setDither__16J3DPEBlockFogOffFUc(); +extern "C" void setDither__16J3DPEBlockFogOffFPCUc(); +extern "C" void getDither__16J3DPEBlockFogOffCFv(); +extern "C" void __dt__16J3DPEBlockFogOffFv(); +extern "C" void indexToPtr__13J3DTevBlock16Fv(); +extern "C" void getType__13J3DTevBlock16Fv(); +extern "C" void setTexNo__13J3DTevBlock16FUlUs(); +extern "C" void setTexNo__13J3DTevBlock16FUlPCUs(); +extern "C" void getTexNo__13J3DTevBlock16CFUl(); +extern "C" void setTevOrder__13J3DTevBlock16FUl11J3DTevOrder(); +extern "C" void setTevOrder__13J3DTevBlock16FUlPC11J3DTevOrder(); +extern "C" void getTevOrder__13J3DTevBlock16FUl(); +extern "C" void setTevColor__13J3DTevBlock16FUl13J3DGXColorS10(); +extern "C" void setTevColor__13J3DTevBlock16FUlPC13J3DGXColorS10(); +extern "C" void getTevColor__13J3DTevBlock16FUl(); +extern "C" void setTevKColor__13J3DTevBlock16FUl10J3DGXColor(); +extern "C" void setTevKColor__13J3DTevBlock16FUlPC10J3DGXColor(); +extern "C" void getTevKColor__13J3DTevBlock16FUl(); +extern "C" void setTevKColorSel__13J3DTevBlock16FUlUc(); +extern "C" void setTevKColorSel__13J3DTevBlock16FUlPCUc(); +extern "C" void getTevKColorSel__13J3DTevBlock16FUl(); +extern "C" void setTevKAlphaSel__13J3DTevBlock16FUlUc(); +extern "C" void setTevKAlphaSel__13J3DTevBlock16FUlPCUc(); +extern "C" void getTevKAlphaSel__13J3DTevBlock16FUl(); +extern "C" void setTevStageNum__13J3DTevBlock16FUc(); +extern "C" void setTevStageNum__13J3DTevBlock16FPCUc(); +extern "C" void getTevStageNum__13J3DTevBlock16CFv(); +extern "C" void setTevStage__13J3DTevBlock16FUl11J3DTevStage(); +extern "C" void setTevStage__13J3DTevBlock16FUlPC11J3DTevStage(); +extern "C" void getTevStage__13J3DTevBlock16FUl(); +extern "C" void setTevSwapModeInfo__13J3DTevBlock16FUl18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeInfo__13J3DTevBlock16FUlPC18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeTable__13J3DTevBlock16FUl19J3DTevSwapModeTable(); +extern "C" void setTevSwapModeTable__13J3DTevBlock16FUlPC19J3DTevSwapModeTable(); +extern "C" void getTevSwapModeTable__13J3DTevBlock16FUl(); +extern "C" void setIndTevStage__13J3DTevBlock16FUl14J3DIndTevStage(); +extern "C" void setIndTevStage__13J3DTevBlock16FUlPC14J3DIndTevStage(); +extern "C" void getIndTevStage__13J3DTevBlock16FUl(); +extern "C" void getTexNoOffset__13J3DTevBlock16CFv(); +extern "C" void getTevRegOffset__13J3DTevBlock16CFv(); +extern "C" void setTevRegOffset__13J3DTevBlock16FUl(); +extern "C" void __dt__13J3DTevBlock16Fv(); +extern "C" void setTexNoOffset__11J3DTevBlockFUl(); +extern "C" void ptrToIndex__12J3DTevBlock4Fv(); +extern "C" void indexToPtr__12J3DTevBlock4Fv(); +extern "C" void getType__12J3DTevBlock4Fv(); +extern "C" void setTexNo__12J3DTevBlock4FUlUs(); +extern "C" void setTexNo__12J3DTevBlock4FUlPCUs(); +extern "C" void getTexNo__12J3DTevBlock4CFUl(); +extern "C" void setTevOrder__12J3DTevBlock4FUl11J3DTevOrder(); +extern "C" void setTevOrder__12J3DTevBlock4FUlPC11J3DTevOrder(); +extern "C" void getTevOrder__12J3DTevBlock4FUl(); +extern "C" void setTevColor__12J3DTevBlock4FUl13J3DGXColorS10(); +extern "C" void setTevColor__12J3DTevBlock4FUlPC13J3DGXColorS10(); +extern "C" void getTevColor__12J3DTevBlock4FUl(); +extern "C" void setTevKColor__12J3DTevBlock4FUl10J3DGXColor(); +extern "C" void setTevKColor__12J3DTevBlock4FUlPC10J3DGXColor(); +extern "C" void getTevKColor__12J3DTevBlock4FUl(); +extern "C" void setTevKColorSel__12J3DTevBlock4FUlUc(); +extern "C" void setTevKColorSel__12J3DTevBlock4FUlPCUc(); +extern "C" void getTevKColorSel__12J3DTevBlock4FUl(); +extern "C" void setTevKAlphaSel__12J3DTevBlock4FUlUc(); +extern "C" void setTevKAlphaSel__12J3DTevBlock4FUlPCUc(); +extern "C" void getTevKAlphaSel__12J3DTevBlock4FUl(); +extern "C" void setTevStageNum__12J3DTevBlock4FUc(); +extern "C" void setTevStageNum__12J3DTevBlock4FPCUc(); +extern "C" void getTevStageNum__12J3DTevBlock4CFv(); +extern "C" void setTevStage__12J3DTevBlock4FUl11J3DTevStage(); +extern "C" void setTevStage__12J3DTevBlock4FUlPC11J3DTevStage(); +extern "C" void getTevStage__12J3DTevBlock4FUl(); +extern "C" void setTevSwapModeInfo__12J3DTevBlock4FUl18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeInfo__12J3DTevBlock4FUlPC18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeTable__12J3DTevBlock4FUl19J3DTevSwapModeTable(); +extern "C" void setTevSwapModeTable__12J3DTevBlock4FUlPC19J3DTevSwapModeTable(); +extern "C" void getTevSwapModeTable__12J3DTevBlock4FUl(); +extern "C" void setIndTevStage__12J3DTevBlock4FUl14J3DIndTevStage(); +extern "C" void setIndTevStage__12J3DTevBlock4FUlPC14J3DIndTevStage(); +extern "C" void getIndTevStage__12J3DTevBlock4FUl(); +extern "C" void getTexNoOffset__12J3DTevBlock4CFv(); +extern "C" void getTevRegOffset__12J3DTevBlock4CFv(); +extern "C" void setTevRegOffset__12J3DTevBlock4FUl(); +extern "C" void __dt__12J3DTevBlock4Fv(); +extern "C" void ptrToIndex__12J3DTevBlock2Fv(); +extern "C" void indexToPtr__12J3DTevBlock2Fv(); +extern "C" void getType__12J3DTevBlock2Fv(); +extern "C" void setTexNo__12J3DTevBlock2FUlUs(); +extern "C" void setTexNo__12J3DTevBlock2FUlPCUs(); +extern "C" void getTexNo__12J3DTevBlock2CFUl(); +extern "C" void setTevOrder__12J3DTevBlock2FUl11J3DTevOrder(); +extern "C" void setTevOrder__12J3DTevBlock2FUlPC11J3DTevOrder(); +extern "C" void getTevOrder__12J3DTevBlock2FUl(); +extern "C" void setTevColor__12J3DTevBlock2FUl13J3DGXColorS10(); +extern "C" void setTevColor__12J3DTevBlock2FUlPC13J3DGXColorS10(); +extern "C" void getTevColor__12J3DTevBlock2FUl(); +extern "C" void setTevKColor__12J3DTevBlock2FUl10J3DGXColor(); +extern "C" void setTevKColor__12J3DTevBlock2FUlPC10J3DGXColor(); +extern "C" void getTevKColor__12J3DTevBlock2FUl(); +extern "C" void setTevKColorSel__12J3DTevBlock2FUlUc(); +extern "C" void setTevKColorSel__12J3DTevBlock2FUlPCUc(); +extern "C" void getTevKColorSel__12J3DTevBlock2FUl(); +extern "C" void setTevKAlphaSel__12J3DTevBlock2FUlUc(); +extern "C" void setTevKAlphaSel__12J3DTevBlock2FUlPCUc(); +extern "C" void getTevKAlphaSel__12J3DTevBlock2FUl(); +extern "C" void setTevStageNum__12J3DTevBlock2FUc(); +extern "C" void setTevStageNum__12J3DTevBlock2FPCUc(); +extern "C" void getTevStageNum__12J3DTevBlock2CFv(); +extern "C" void setTevStage__12J3DTevBlock2FUl11J3DTevStage(); +extern "C" void setTevStage__12J3DTevBlock2FUlPC11J3DTevStage(); +extern "C" void getTevStage__12J3DTevBlock2FUl(); +extern "C" void setTevSwapModeInfo__12J3DTevBlock2FUl18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeInfo__12J3DTevBlock2FUlPC18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeTable__12J3DTevBlock2FUl19J3DTevSwapModeTable(); +extern "C" void setTevSwapModeTable__12J3DTevBlock2FUlPC19J3DTevSwapModeTable(); +extern "C" void getTevSwapModeTable__12J3DTevBlock2FUl(); +extern "C" void setIndTevStage__12J3DTevBlock2FUl14J3DIndTevStage(); +extern "C" void setIndTevStage__12J3DTevBlock2FUlPC14J3DIndTevStage(); +extern "C" void getIndTevStage__12J3DTevBlock2FUl(); +extern "C" void getTexNoOffset__12J3DTevBlock2CFv(); +extern "C" void getTevRegOffset__12J3DTevBlock2CFv(); +extern "C" void setTevRegOffset__12J3DTevBlock2FUl(); +extern "C" void __dt__12J3DTevBlock2Fv(); +extern "C" void ptrToIndex__12J3DTevBlock1Fv(); +extern "C" void indexToPtr__12J3DTevBlock1Fv(); +extern "C" void getType__12J3DTevBlock1Fv(); +extern "C" void setTexNo__12J3DTevBlock1FUlUs(); +extern "C" void setTexNo__12J3DTevBlock1FUlPCUs(); +extern "C" void getTexNo__12J3DTevBlock1CFUl(); +extern "C" void setTevOrder__12J3DTevBlock1FUl11J3DTevOrder(); +extern "C" void setTevOrder__12J3DTevBlock1FUlPC11J3DTevOrder(); +extern "C" void getTevOrder__12J3DTevBlock1FUl(); +extern "C" void setTevStageNum__12J3DTevBlock1FUc(); +extern "C" void setTevStageNum__12J3DTevBlock1FPCUc(); +extern "C" bool getTevStageNum__12J3DTevBlock1CFv(); +extern "C" void setTevStage__12J3DTevBlock1FUl11J3DTevStage(); +extern "C" void setTevStage__12J3DTevBlock1FUlPC11J3DTevStage(); +extern "C" void getTevStage__12J3DTevBlock1FUl(); +extern "C" void setIndTevStage__12J3DTevBlock1FUl14J3DIndTevStage(); +extern "C" void setIndTevStage__12J3DTevBlock1FUlPC14J3DIndTevStage(); +extern "C" void getIndTevStage__12J3DTevBlock1FUl(); +extern "C" void getTexNoOffset__12J3DTevBlock1CFv(); +extern "C" void __dt__12J3DTevBlock1Fv(); +extern "C" void setTevKColorSel__11J3DTevBlockFUlPCUc(); +extern "C" void setTevKAlphaSel__11J3DTevBlockFUlPCUc(); +extern "C" void setTevSwapModeInfo__11J3DTevBlockFUl18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeInfo__11J3DTevBlockFUlPC18J3DTevSwapModeInfo(); +extern "C" void setTevSwapModeTable__11J3DTevBlockFUlPC19J3DTevSwapModeTable(); +extern "C" bool getTevRegOffset__11J3DTevBlockCFv(); +extern "C" void setTevRegOffset__11J3DTevBlockFUl(); +extern "C" void load__18J3DTevBlockPatchedFv(); +extern "C" void indexToPtr__18J3DTevBlockPatchedFv(); +extern "C" void getType__18J3DTevBlockPatchedFv(); +extern "C" void setTevStageNum__18J3DTevBlockPatchedFUc(); +extern "C" void setTevStageNum__18J3DTevBlockPatchedFPCUc(); +extern "C" void getTevStageNum__18J3DTevBlockPatchedCFv(); +extern "C" void setTexNo__18J3DTevBlockPatchedFUlUs(); +extern "C" void setTexNo__18J3DTevBlockPatchedFUlPCUs(); +extern "C" void getTexNo__18J3DTevBlockPatchedCFUl(); +extern "C" void setTevOrder__18J3DTevBlockPatchedFUl11J3DTevOrder(); +extern "C" void setTevOrder__18J3DTevBlockPatchedFUlPC11J3DTevOrder(); +extern "C" void getTevOrder__18J3DTevBlockPatchedFUl(); +extern "C" void setTevStage__18J3DTevBlockPatchedFUl11J3DTevStage(); +extern "C" void setTevStage__18J3DTevBlockPatchedFUlPC11J3DTevStage(); +extern "C" void getTevStage__18J3DTevBlockPatchedFUl(); +extern "C" void setIndTevStage__18J3DTevBlockPatchedFUl14J3DIndTevStage(); +extern "C" void setIndTevStage__18J3DTevBlockPatchedFUlPC14J3DIndTevStage(); +extern "C" void getIndTevStage__18J3DTevBlockPatchedFUl(); +extern "C" void setTevColor__18J3DTevBlockPatchedFUl13J3DGXColorS10(); +extern "C" void setTevColor__18J3DTevBlockPatchedFUlPC13J3DGXColorS10(); +extern "C" void getTevColor__18J3DTevBlockPatchedFUl(); +extern "C" void setTevKColor__18J3DTevBlockPatchedFUl10J3DGXColor(); +extern "C" void setTevKColor__18J3DTevBlockPatchedFUlPC10J3DGXColor(); +extern "C" void getTevKColor__18J3DTevBlockPatchedFUl(); +extern "C" void setTevKColorSel__18J3DTevBlockPatchedFUlUc(); +extern "C" void setTevKColorSel__18J3DTevBlockPatchedFUlPCUc(); +extern "C" void getTevKColorSel__18J3DTevBlockPatchedFUl(); +extern "C" void getTexNoOffset__18J3DTevBlockPatchedCFv(); +extern "C" void getTevRegOffset__18J3DTevBlockPatchedCFv(); +extern "C" void setTevRegOffset__18J3DTevBlockPatchedFUl(); +extern "C" void __dt__18J3DTevBlockPatchedFv(); +extern "C" void getType__19J3DTexGenBlockBasicFv(); +extern "C" void setNBTScale__19J3DTexGenBlockBasicF11J3DNBTScale(); +extern "C" void setNBTScale__19J3DTexGenBlockBasicFPC11J3DNBTScale(); +extern "C" void getNBTScale__19J3DTexGenBlockBasicFv(); +extern "C" void __dt__19J3DTexGenBlockBasicFv(); +extern "C" void setTexGenNum__21J3DTexGenBlockPatchedFUl(); +extern "C" void setTexGenNum__21J3DTexGenBlockPatchedFPCUl(); +extern "C" void getTexGenNum__21J3DTexGenBlockPatchedCFv(); +extern "C" void setTexCoord__21J3DTexGenBlockPatchedFUlPC11J3DTexCoord(); +extern "C" void getTexCoord__21J3DTexGenBlockPatchedFUl(); +extern "C" void setTexMtx__21J3DTexGenBlockPatchedFUlP9J3DTexMtx(); +extern "C" void getTexMtx__21J3DTexGenBlockPatchedFUl(); +extern "C" void getTexMtxOffset__21J3DTexGenBlockPatchedCFv(); +extern "C" void setTexMtxOffset__21J3DTexGenBlockPatchedFUl(); +extern "C" void getType__15J3DTexGenBlock4Fv(); +extern "C" void setNBTScale__15J3DTexGenBlock4F11J3DNBTScale(); +extern "C" void setNBTScale__15J3DTexGenBlock4FPC11J3DNBTScale(); +extern "C" void getNBTScale__15J3DTexGenBlock4Fv(); +extern "C" void __dt__15J3DTexGenBlock4Fv(); +extern "C" void load__21J3DTexGenBlockPatchedFv(); +extern "C" void getType__21J3DTexGenBlockPatchedFv(); +extern "C" void getType__20J3DColorBlockLightOnFv(); +extern "C" void setMatColor__20J3DColorBlockLightOnFUl10J3DGXColor(); +extern "C" void setMatColor__20J3DColorBlockLightOnFUlPC10J3DGXColor(); +extern "C" void getMatColor__20J3DColorBlockLightOnFUl(); +extern "C" void setAmbColor__20J3DColorBlockLightOnFUl10J3DGXColor(); +extern "C" void setAmbColor__20J3DColorBlockLightOnFUlPC10J3DGXColor(); +extern "C" void getAmbColor__20J3DColorBlockLightOnFUl(); +extern "C" void setColorChanNum__20J3DColorBlockLightOnFPCUc(); +extern "C" void setColorChanNum__20J3DColorBlockLightOnFUc(); +extern "C" void getColorChanNum__20J3DColorBlockLightOnCFv(); +extern "C" void setColorChan__20J3DColorBlockLightOnFUlPC12J3DColorChan(); +extern "C" void setColorChan__20J3DColorBlockLightOnFUlRC12J3DColorChan(); +extern "C" void getColorChan__20J3DColorBlockLightOnFUl(); +extern "C" void setLight__20J3DColorBlockLightOnFUlP11J3DLightObj(); +extern "C" void getLight__20J3DColorBlockLightOnFUl(); +extern "C" void setCullMode__20J3DColorBlockLightOnFUc(); +extern "C" void setCullMode__20J3DColorBlockLightOnFPCUc(); +extern "C" void getCullMode__20J3DColorBlockLightOnCFv(); +extern "C" void getMatColorOffset__20J3DColorBlockLightOnCFv(); +extern "C" void getColorChanOffset__20J3DColorBlockLightOnCFv(); +extern "C" void setMatColorOffset__20J3DColorBlockLightOnFUl(); +extern "C" void setColorChanOffset__20J3DColorBlockLightOnFUl(); +extern "C" void __dt__20J3DColorBlockLightOnFv(); +extern "C" void getType__22J3DColorBlockAmbientOnFv(); +extern "C" void setAmbColor__22J3DColorBlockAmbientOnFUl10J3DGXColor(); +extern "C" void setAmbColor__22J3DColorBlockAmbientOnFUlPC10J3DGXColor(); +extern "C" void getAmbColor__22J3DColorBlockAmbientOnFUl(); +extern "C" void __dt__22J3DColorBlockAmbientOnFv(); +extern "C" void setMatColor__21J3DColorBlockLightOffFUl10J3DGXColor(); +extern "C" void setMatColor__21J3DColorBlockLightOffFUlPC10J3DGXColor(); +extern "C" void getMatColor__21J3DColorBlockLightOffFUl(); +extern "C" void setColorChanNum__21J3DColorBlockLightOffFPCUc(); +extern "C" void setColorChanNum__21J3DColorBlockLightOffFUc(); +extern "C" void getColorChanNum__21J3DColorBlockLightOffCFv(); +extern "C" void setColorChan__21J3DColorBlockLightOffFUlPC12J3DColorChan(); +extern "C" void setColorChan__21J3DColorBlockLightOffFUlRC12J3DColorChan(); +extern "C" void getColorChan__21J3DColorBlockLightOffFUl(); +extern "C" void setCullMode__21J3DColorBlockLightOffFUc(); +extern "C" void setCullMode__21J3DColorBlockLightOffFPCUc(); +extern "C" void getCullMode__21J3DColorBlockLightOffCFv(); +extern "C" void getMatColorOffset__21J3DColorBlockLightOffCFv(); +extern "C" void getColorChanOffset__21J3DColorBlockLightOffCFv(); +extern "C" void setMatColorOffset__21J3DColorBlockLightOffFUl(); +extern "C" void setColorChanOffset__21J3DColorBlockLightOffFUl(); +extern "C" void getType__13J3DPEBlockXluFv(); +extern "C" void __dt__13J3DPEBlockXluFv(); +extern "C" void getType__17J3DPEBlockTexEdgeFv(); +extern "C" void __dt__17J3DPEBlockTexEdgeFv(); +extern "C" void getType__13J3DPEBlockOpaFv(); +extern "C" void __dt__13J3DPEBlockOpaFv(); +extern "C" void getType__15J3DIndBlockFullFv(); +extern "C" void setIndTexStageNum__15J3DIndBlockFullFUc(); +extern "C" void getIndTexStageNum__15J3DIndBlockFullCFv(); +extern "C" void setIndTexOrder__15J3DIndBlockFullFUl14J3DIndTexOrder(); +extern "C" void setIndTexOrder__15J3DIndBlockFullFUlPC14J3DIndTexOrder(); +extern "C" void getIndTexOrder__15J3DIndBlockFullFUl(); +extern "C" void setIndTexMtx__15J3DIndBlockFullFUl12J3DIndTexMtx(); +extern "C" void setIndTexMtx__15J3DIndBlockFullFUlPC12J3DIndTexMtx(); +extern "C" void getIndTexMtx__15J3DIndBlockFullFUl(); +extern "C" void setIndTexCoordScale__15J3DIndBlockFullFUl19J3DIndTexCoordScale(); +extern "C" void setIndTexCoordScale__15J3DIndBlockFullFUlPC19J3DIndTexCoordScale(); +extern "C" void getIndTexCoordScale__15J3DIndBlockFullFUl(); +extern "C" void __dt__15J3DIndBlockFullFv(); +extern "C" void patchTexNo__11J3DTevBlockFv(); +extern "C" void patchTevReg__11J3DTevBlockFv(); +extern "C" void setTexNo__11J3DTevBlockFUlPCUs(); +extern "C" void setTevOrder__11J3DTevBlockFUlPC11J3DTevOrder(); +extern "C" void setTevStageNum__11J3DTevBlockFPCUc(); +extern "C" void setTevStage__11J3DTevBlockFUlPC11J3DTevStage(); +extern "C" void setIndTevStage__11J3DTevBlockFUlPC14J3DIndTevStage(); +extern "C" u32 getTexNoOffset__11J3DTevBlockCFv(); +extern "C" void getType__21J3DColorBlockLightOffFv(); +extern "C" void __sinit_J3DMatBlock_cpp(); +extern "C" extern char const* const J3DMatBlock__stringBase0; + +// +// External References: +// + +extern "C" void patchTexNoAndTexCoordScale__11J3DTevBlockFv(); +extern "C" void patch__10J3DPEBlockFv(); +extern "C" void patch__11J3DTevBlockFv(); +extern "C" bool getZCompLoc__10J3DPEBlockCFv(); +extern "C" bool getZMode__10J3DPEBlockFv(); +extern "C" bool getBlend__10J3DPEBlockFv(); +extern "C" bool getAlphaComp__10J3DPEBlockFv(); +extern "C" bool getFog__10J3DPEBlockFv(); +extern "C" bool getIndTevStage__11J3DTevBlockFUl(); +extern "C" bool getTevStage__11J3DTevBlockFUl(); +extern "C" void getTexNo__11J3DTevBlockCFUl(); +extern "C" bool getTevSwapModeTable__11J3DTevBlockFUl(); +extern "C" bool getTevKAlphaSel__11J3DTevBlockFUl(); +extern "C" bool getTevKColorSel__11J3DTevBlockFUl(); +extern "C" bool getTevOrder__11J3DTevBlockFUl(); +extern "C" bool getTevKColor__11J3DTevBlockFUl(); +extern "C" bool getTevColor__11J3DTevBlockFUl(); +extern "C" bool getTevStageNum__11J3DTevBlockCFv(); +extern "C" bool getAmbColor__13J3DColorBlockFUl(); +extern "C" void setZCompLoc__10J3DPEBlockFUc(); +extern "C" void setZMode__10J3DPEBlockF8J3DZMode(); +extern "C" void setBlend__10J3DPEBlockFRC8J3DBlend(); +extern "C" void setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp(); +extern "C" void __dt__19J3DIndTexCoordScaleFv(); +extern "C" void __dt__12J3DIndTexMtxFv(); +extern "C" void setIndTevStage__11J3DTevBlockFUl14J3DIndTevStage(); +extern "C" void setTevStage__11J3DTevBlockFUl11J3DTevStage(); +extern "C" void setTexNo__11J3DTevBlockFUlUs(); +extern "C" void setTevSwapModeTable__11J3DTevBlockFUl19J3DTevSwapModeTable(); +extern "C" void setTevKAlphaSel__11J3DTevBlockFUlUc(); +extern "C" void setTevKColorSel__11J3DTevBlockFUlUc(); +extern "C" void setTevOrder__11J3DTevBlockFUl11J3DTevOrder(); +extern "C" void setTevKColor__11J3DTevBlockFUl10J3DGXColor(); +extern "C" void setTevColor__11J3DTevBlockFUl13J3DGXColorS10(); +extern "C" void setTevStageNum__11J3DTevBlockFUc(); +extern "C" void setAmbColor__13J3DColorBlockFUl10J3DGXColor(); +extern "C" void setTevKColor__11J3DTevBlockFUlPC10J3DGXColor(); +extern "C" void setTevColor__11J3DTevBlockFUlPC13J3DGXColorS10(); +extern "C" void setLight__13J3DColorBlockFUlP11J3DLightObj(); +extern "C" void setAmbColor__13J3DColorBlockFUlPC10J3DGXColor(); +extern "C" void __dl__FPv(); +extern "C" void J3DGDSetTexCoordScale2__F13_GXTexCoordIDUsUcUcUsUcUc(); +extern "C" void J3DGDSetIndTexMtx__F14_GXIndTexMtxIDPA3_fSc(); +extern "C" void +J3DGDSetIndTexCoordScale__F16_GXIndTexStageID14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale14_GXIndTexScale(); +extern "C" void +J3DGDSetIndTexOrder__FUl13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID13_GXTexCoordID11_GXTexMapID(); +extern "C" void +J3DGDSetTevOrder__F13_GXTevStageID13_GXTexCoordID11_GXTexMapID12_GXChannelID13_GXTexCoordID11_GXTexMapID12_GXChannelID(); +extern "C" void J3DGDSetTevKColor__F14_GXTevKColorID8_GXColor(); +extern "C" void J3DGDSetTevColorS10__F11_GXTevRegID11_GXColorS10(); +extern "C" void J3DGDSetFog__F10_GXFogTypeffff8_GXColor(); +extern "C" void J3DGDSetFogRangeAdj__FUcUsP14_GXFogAdjTable(); +extern "C" void __dt__21J3DColorBlockLightOffFv(); +extern "C" void __dt__21J3DTexGenBlockPatchedFv(); +extern "C" void __dt__11J3DTevBlockFv(); +extern "C" bool countDLSize__11J3DTevBlockFv(); +extern "C" void load__11J3DTevBlockFv(); +extern "C" bool getNBTScale__14J3DTexGenBlockFv(); +extern "C" void diff__10J3DPEBlockFUl(); +extern "C" void reset__10J3DPEBlockFP10J3DPEBlock(); +extern "C" void reset__11J3DTevBlockFP11J3DTevBlock(); +extern "C" void diffFog__10J3DPEBlockFv(); +extern "C" void diffBlend__10J3DPEBlockFv(); +extern "C" void setFog__10J3DPEBlockFP6J3DFog(); +extern "C" void setFog__10J3DPEBlockF6J3DFog(); +extern "C" void setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp(); +extern "C" void setBlend__10J3DPEBlockFPC8J3DBlend(); +extern "C" void setZMode__10J3DPEBlockFPC8J3DZMode(); +extern "C" void setZCompLoc__10J3DPEBlockFPCUc(); +extern "C" void setDither__10J3DPEBlockFUc(); +extern "C" void setDither__10J3DPEBlockFPCUc(); +extern "C" bool getDither__10J3DPEBlockCFv(); +extern "C" bool getFogOffset__10J3DPEBlockCFv(); +extern "C" void setFogOffset__10J3DPEBlockFUl(); +extern "C" void setNBTScale__14J3DTexGenBlockF11J3DNBTScale(); +extern "C" void setNBTScale__14J3DTexGenBlockFPC11J3DNBTScale(); +extern "C" void diffAmbColor__13J3DColorBlockFv(); +extern "C" void diffLightObj__13J3DColorBlockFUl(); +extern "C" bool getLight__13J3DColorBlockFUl(); +extern "C" void load__11J3DLightObjCFUl(); +extern "C" void loadTexCoordGens__FUlP11J3DTexCoord(); +extern "C" void load__9J3DTexMtxCFUl(); +extern "C" void calc__9J3DTexMtxFPA4_Cf(); +extern "C" void calcPostTexMtx__9J3DTexMtxFPA4_Cf(); +extern "C" void isTexNoReg__FPv(); +extern "C" void getTexNoReg__FPv(); +extern "C" void loadTexNo__FUlRCUs(); +extern "C" void patchTexNo_PtrToIdx__FUlRCUs(); +extern "C" void __as__16J3DIndTexMtxInfoFRC16J3DIndTexMtxInfo(); +extern "C" void __as__10J3DFogInfoFRC10J3DFogInfo(); +extern "C" void __as__15J3DNBTScaleInfoFRC15J3DNBTScaleInfo(); +extern "C" void GDOverflowed(); +extern "C" void __destroy_arr(); +extern "C" void _savegpr_24(); +extern "C" void _savegpr_25(); +extern "C" void _savegpr_26(); +extern "C" void _savegpr_27(); +extern "C" void _savegpr_28(); +extern "C" void _savegpr_29(); +extern "C" void _restgpr_24(); +extern "C" void _restgpr_25(); +extern "C" void _restgpr_26(); +extern "C" void _restgpr_27(); +extern "C" void _restgpr_28(); +extern "C" void _restgpr_29(); +extern "C" extern void* __vt__10J3DPEBlock[31]; +extern "C" extern void* __vt__11J3DIndBlock[19]; +extern "C" extern void* __vt__14J3DTexGenBlock[27]; +extern "C" extern void* __vt__13J3DColorBlock[36]; +extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */]; +extern "C" extern u8 j3dAlphaCmpTable[768]; +extern "C" extern u8 j3dZModeTable[96]; + +/* 8031747C-803174DC 311DBC 0060+00 0/0 1/1 0/0 .text initialize__21J3DColorBlockLightOffFv */ +void J3DColorBlockLightOff::initialize() { + mColorChanNum = 0; + for (u32 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 (u32 i = 0; i < ARRAY_SIZE(mMatColor); i++) { + mMatColor[i] = j3dDefaultColInfo; + } + for (u32 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 (u32 i = 0; i < ARRAY_SIZE(mMatColor); i++) { + mMatColor[i] = j3dDefaultColInfo; + } + for (u32 i = 0; i < ARRAY_SIZE(mAmbColor); i++) { + mAmbColor[i] = j3dDefaultAmbInfo; + } + for (u32 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 (u32 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 (u32 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 (u32 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 (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; +} + +/* 803177E8-80317810 312128 0028+00 0/0 1/1 0/0 .text initialize__12J3DTevBlock1Fv */ +void J3DTevBlock1::initialize() { + mTexNo[0] = 0xFFFF; + mTevStage[0].field_0x0 = 0xC0; + mTevStage[0].field_0x4 = 0xC1; + 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].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; +} + +/* 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].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; +} + +/* 80317A00-80317B28 312340 0128+00 0/0 1/1 0/0 .text initialize__13J3DTevBlock16Fv */ +void J3DTevBlock16::initialize() { + 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; +} + +/* 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.mID = 0xFFFF; + mZMode.mZModeID = 0xFFFF; + mZCompLoc = 0xFF; + mDither = 1; +} + +/* 80317B58-80317B84 312498 002C+00 0/0 1/1 0/0 .text initialize__14J3DPEBlockFullFv */ +void J3DPEBlockFull::initialize() { + mAlphaComp.mID = 0xFFFF; + mZMode.mZModeID = 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 */ +SECTION_SDATA static u32 SizeOfLoadMatColors = 0x0000000D; + +/* ############################################################################################## */ +/* 80450964-80450968 0003E4 0004+00 2/2 0/0 0/0 .sdata SizeOfLoadAmbColors */ +SECTION_SDATA static u32 SizeOfLoadAmbColors = 0x0000000D; + +/* 80450968-80450970 0003E8 0004+04 5/5 0/0 0/0 .sdata SizeOfLoadColorChans */ +SECTION_SDATA static u32 SizeOfLoadColorChans = 21; + +/* ############################################################################################## */ +/* 804515D8-804515DC 000AD8 0004+00 2/2 0/0 0/0 .sbss SizeOfJ3DColorBlockLightOffLoad */ +static u32 SizeOfJ3DColorBlockLightOffLoad = SizeOfLoadMatColors + SizeOfLoadColorChans; + +/* 804563A8-804563AC 0049A8 0004+00 7/7 0/0 0/0 .sdata2 @585 */ +SECTION_SDATA2 static u32 lit_585 = 0x02000201; + +/* 80317C0C-8031816C 31254C 0560+00 1/0 0/0 0/0 .text load__21J3DColorBlockLightOffFv */ +// Issues with mColorChanID +#ifdef NONMATCHING +void J3DColorBlockLightOff::load() { + GDOverflowCheck(SizeOfJ3DColorBlockLightOffLoad); + mMatColorOffset = GDGetCurrOffset(); + loadMatColors(mMatColor); + mColorChanOffset = GDGetCurrOffset(); + J3DGDWriteXFCmdHdr(0x100e, 4); + mColorChan[0].load(); + mColorChan[1].load(); + mColorChan[2].load(); + mColorChan[3].load(); +} +#else +extern "C" void load__21J3DColorBlockLightOffFv() { + // asm void J3DColorBlockLightOff::load() { + // NONMATCHING +} +#endif + +/* ############################################################################################## */ +/* 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 */ +extern "C" void load__22J3DColorBlockAmbientOnFv() { + // asm void J3DColorBlockAmbientOn::load() { + // NONMATCHING +} + +/* 803187F4-80318EB4 313134 06C0+00 1/0 0/0 0/0 .text load__20J3DColorBlockLightOnFv */ +extern "C" void load__20J3DColorBlockLightOnFv() { + // asm void J3DColorBlockLightOn::load() { + // NONMATCHING +} + +/* 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); + u8* start = GDGetCurrPointer(); + GDOverflowCheck(SizeOfLoadMatColors); + loadMatColors(mMatColor); + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 803190AC-803194E8 3139EC 043C+00 2/0 0/0 0/0 .text patchLight__21J3DColorBlockLightOffFv */ +void J3DColorBlockLightOff::patchLight() { + // NONMATCHING +} + +/* 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); + u8* start = GDGetCurrPointer(); + GDOverflowCheck(SizeOfLoadMatColors); + loadMatColors(mMatColor); + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 803196E0-80319B4C 314020 046C+00 1/0 0/0 0/0 .text patchLight__20J3DColorBlockLightOnFv */ +void J3DColorBlockLightOn::patchLight() { + // NONMATCHING +} + +/* 80319B4C-80319BB4 31448C 0068+00 2/0 0/0 0/0 .text diff__21J3DColorBlockLightOffFUl */ +void J3DColorBlockLightOff::diff(u32 flag) { + if (flag & 0x1) + diffMatColor(); + if (flag & 0x2) + 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() { + // NONMATCHING +} + +/* 8031A13C-8031A1DC 314A7C 00A0+00 1/0 0/0 0/0 .text diff__20J3DColorBlockLightOnFUl */ +void J3DColorBlockLightOn::diff(u32 flag) { + if (flag & 4) + diffAmbColor(); + + if (flag & 1) + diffMatColor(); + + if (flag & 2) + diffColorChan(); + + if ((flag >> 4) & 0x0f) + diffLightObj((flag >> 4) & 0x0f); +} + +/* 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() { + // NONMATCHING +} + +/* 8031A8E0-8031A948 315220 0068+00 1/0 0/0 0/0 .text diffLightObj__20J3DColorBlockLightOnFUl */ +void J3DColorBlockLightOn::diffLightObj(u32 param_1) { + for (u32 i = 0; i < param_1; 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); + u8* start = GDGetCurrPointer(); + for (u32 i = 0; i < 8; i++) { + if (mTexMtx[i]) { + mTexMtx[i]->load(i); + } + } + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031AB18-8031ABC0 315458 00A8+00 1/0 0/0 0/0 .text patch__15J3DTexGenBlock4Fv */ +void J3DTexGenBlock4::patch() { + GDSetCurrOffset(mTexMtxOffset); + u8* start = GDGetCurrPointer(); + for (u32 i = 0; i < 4; i++) { + if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) { + mTexMtx[i]->load(i); + } + } + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031ABC0-8031AC68 315500 00A8+00 1/0 0/0 0/0 .text patch__19J3DTexGenBlockBasicFv */ +void J3DTexGenBlockBasic::patch() { + GDSetCurrOffset(mTexMtxOffset); + u8* start = GDGetCurrPointer(); + for (u32 i = 0; i < 8; i++) { + if (mTexMtx[i] && mTexCoord[i].getTexGenMtx() != GX_IDENTITY) { + mTexMtx[i]->load(i); + } + } + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031AC68-8031ACD0 3155A8 0068+00 3/0 0/0 0/0 .text diff__21J3DTexGenBlockPatchedFUl */ +void J3DTexGenBlockPatched::diff(u32 flag) { + if ((flag >> 8) & 0x0f) { + diffTexMtx(); + if (flag & 0x1000) { + diffTexGen(); + } + } +} + +/* 8031ACD0-8031AD30 315610 0060+00 3/0 0/0 0/0 .text diffTexMtx__21J3DTexGenBlockPatchedFv */ +void J3DTexGenBlockPatched::diffTexMtx() { + for (u32 i = 0; i < ARRAY_SIZE(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() { + u8 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]), + GXTevColor(mTevSwapModeTable[i / 4].getR()), + GXTevColor(mTevSwapModeTable[i / 4].getG()) + ); + J3DGDSetTevKonstantSel_SwapModeTable( + GXTevStageID(i + 2), + GXTevKColorSel(mTevKColorSel[0]), + GXTevKAlphaSel(mTevKAlphaSel[0]), + GXTevKColorSel(mTevKColorSel[1]), + GXTevKAlphaSel(mTevKAlphaSel[1]), + GXTevColor(mTevSwapModeTable[i / 4].getB()), + GXTevColor(mTevSwapModeTable[i / 4].getA()) + ); + } +} + +/* 8031B4C0-8031BA04 315E00 0544+00 1/0 0/0 0/0 .text load__12J3DTevBlock4Fv */ +void J3DTevBlock4::load() { + u8 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]), + GXTevColor(mTevSwapModeTable[i / 4].getR()), + GXTevColor(mTevSwapModeTable[i / 4].getG()) + ); + J3DGDSetTevKonstantSel_SwapModeTable( + GXTevStageID(i + 2), + GXTevKColorSel(mTevKColorSel[2]), + GXTevKAlphaSel(mTevKAlphaSel[2]), + GXTevKColorSel(mTevKColorSel[3]), + GXTevKAlphaSel(mTevKAlphaSel[3]), + GXTevColor(mTevSwapModeTable[i / 4].getB()), + GXTevColor(mTevSwapModeTable[i / 4].getA()) + ); + } +} + +/* 8031BA04-8031BF4C 316344 0548+00 1/0 0/0 0/0 .text load__13J3DTevBlock16Fv */ +void J3DTevBlock16::load() { + u8 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]), + GXTevColor(mTevSwapModeTable[i / 4].getR()), + GXTevColor(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]), + GXTevColor(mTevSwapModeTable[i / 4].getB()), + GXTevColor(mTevSwapModeTable[i / 4].getA()) + ); + } +} + + +/* 8031BF4C-8031BFE0 31688C 0094+00 1/0 0/0 0/0 .text patchTexNo__18J3DTevBlockPatchedFv + */ +void J3DTevBlockPatched::patchTexNo() { + GDSetCurrOffset(mTexNoOffset); + u8* start = GDGetCurrPointer(); + + for (u32 i = 0; i < 8; i++) { + if (mTexNo[i] != 0xffff) { + loadTexNo(i, mTexNo[i]); + } + } + + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031BFE0-8031C0AC 316920 00CC+00 1/0 0/0 0/0 .text patchTevReg__18J3DTevBlockPatchedFv + */ +void J3DTevBlockPatched::patchTevReg() { + 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(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031C0AC-8031C228 3169EC 017C+00 1/0 0/0 0/0 .text + * patchTexNoAndTexCoordScale__18J3DTevBlockPatchedFv */ +void J3DTevBlockPatched::patchTexNoAndTexCoordScale() { + GDSetCurrOffset(mTexNoOffset); + u8 *start = GDGetCurrPointer(); + + u8 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] + ); + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - 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); + u8 *pStart = GDGetCurrPointer(); + + if (mTexNo[0] != 0xFFFF) { + loadTexNo(0, mTexNo[0]); + } + + u8 *pEnd = GDGetCurrPointer(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 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); + u8 *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] + ); + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - 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); + u8 *start = GDGetCurrPointer(); + + for (u32 i = 0; i < 2; i++) { + if (mTexNo[i] != 0xffff) { + loadTexNo(i, mTexNo[i]); + } + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031C48C-8031C558 316DCC 00CC+00 1/0 0/0 0/0 .text patchTevReg__12J3DTevBlock2Fv */ +void J3DTevBlock2::patchTevReg() { + 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(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031C558-8031C6A8 316E98 0150+00 1/0 0/0 0/0 .text patchTexNoAndTexCoordScale__12J3DTevBlock2Fv + */ +void J3DTevBlock2::patchTexNoAndTexCoordScale() { + GDSetCurrOffset(mTexNoOffset); + u8 *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] + ); + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - 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); + u8 *start = GDGetCurrPointer(); + + for (u32 i = 0; i < 4; i++) { + if (mTexNo[i] != 0xffff) { + loadTexNo(i, mTexNo[i]); + } + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031C788-8031C854 3170C8 00CC+00 1/0 0/0 0/0 .text patchTevReg__12J3DTevBlock4Fv */ +void J3DTevBlock4::patchTevReg() { + 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(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031C854-8031C9D0 317194 017C+00 1/0 0/0 0/0 .text patchTexNoAndTexCoordScale__12J3DTevBlock4Fv + */ +void J3DTevBlock4::patchTexNoAndTexCoordScale() { + GDSetCurrOffset(mTexNoOffset); + u8 *start = GDGetCurrPointer(); + + u8 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] + ); + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - 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); + u8 *start = GDGetCurrPointer(); + + for (u32 i = 0; i < 8; i++) { + if (mTexNo[i] != 0xffff) { + loadTexNo(i, mTexNo[i]); + } + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - start); +} + +/* 8031CAB0-8031CB7C 3173F0 00CC+00 1/0 0/0 0/0 .text patchTevReg__13J3DTevBlock16Fv */ +void J3DTevBlock16::patchTevReg() { + 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(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031CB7C-8031CCF8 3174BC 017C+00 1/0 0/0 0/0 .text + * patchTexNoAndTexCoordScale__13J3DTevBlock16Fv */ +void J3DTevBlock16::patchTexNoAndTexCoordScale() { + GDSetCurrOffset(mTexNoOffset); + u8 *start = GDGetCurrPointer(); + + u8 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] + ); + } + + u8 *end = GDGetCurrPointer(); + DCStoreRange(start, end - 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 flag) { + if ((flag >> 16) & 0x0f) { + diffTexNo(); + } + if (flag & 0x4000000) { + diffTexCoordScale(); + } + if ((flag >> 20) & 0x0f) { + diffTevStage(); + if (flag & 0x8000000) { + diffTevStageIndirect(); + } + } + if (flag & 0x01000000) { + diffTevReg(); + } +} + +/* 8031CE00-8031CE64 317740 0064+00 1/0 0/0 0/0 .text diffTexNo__18J3DTevBlockPatchedFv + */ +void J3DTevBlockPatched::diffTexNo() { + for (u32 i = 0; i < ARRAY_SIZE(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() { + u8 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() { + u8 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_SIZE(mTevColor) - 1; i++) { + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + } + for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) { + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + } +} + +/* 8031D0C4-8031D1BC 317A04 00F8+00 1/0 0/0 0/0 .text diffTexCoordScale__18J3DTevBlockPatchedFv */ +void J3DTevBlockPatched::diffTexCoordScale() { + u8 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_SIZE(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_SIZE(mTevColor) - 1; i++) { + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + } + for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) { + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + } +} + +/* 8031D4D0-8031D5E4 317E10 0114+00 1/0 0/0 0/0 .text diffTevStage__12J3DTevBlock2Fv */ +void J3DTevBlock2::diffTevStage() { + u8 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() { + u8 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_SIZE(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_SIZE(mTevColor) - 1; i++) { + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + } + for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) { + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + } +} + +/* 8031D858-8031D96C 318198 0114+00 1/0 0/0 0/0 .text diffTevStage__12J3DTevBlock4Fv */ +void J3DTevBlock4::diffTevStage() { + u8 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() { + u8 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() { + u8 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_SIZE(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_SIZE(mTevColor) - 1; i++) { + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + } + for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) { + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + } +} + +/* 8031DC14-8031DD28 318554 0114+00 1/0 0/0 0/0 .text diffTevStage__13J3DTevBlock16Fv */ +void J3DTevBlock16::diffTevStage() { + u8 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() { + u8 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() { + u8 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); + u8* pStart = GDGetCurrPointer(); + + u32 offs = 0; + for (u32 i = 0; i < 8; i++) { + if (mTexNo[i] != 0xFFFF) { + GDSetCurrOffset(mTexNoOffset + offs); + patchTexNo_PtrToIdx(i, mTexNo[i]); + offs += 0x14; + if (j3dSys.getTexture()->getResTIMG(mTexNo[i])->indexTexture == 1) { + offs += 0x23; + } + } + } + + u8 *pEnd = GDGetCurrPointer(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031DFB4-8031E098 3188F4 00E4+00 1/0 0/0 0/0 .text ptrToIndex__18J3DTevBlockPatchedFv + */ +void J3DTevBlockPatched::ptrToIndex() { + GDSetCurrOffset(mTexNoOffset); + u8* pStart = GDGetCurrPointer(); + + u32 offs = 0; + for (u32 i = 0; i < 8; i++) { + if (mTexNo[i] != 0xFFFF) { + GDSetCurrOffset(mTexNoOffset + offs); + patchTexNo_PtrToIdx(i, mTexNo[i]); + offs += 0x14; + if (j3dSys.getTexture()->getResTIMG(mTexNo[i])->indexTexture == 1) { + offs += 0x23; + } + } + } + + u8 *pEnd = GDGetCurrPointer(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031E098-8031E12C 3189D8 0094+00 5/5 1/1 0/0 .text indexToPtr_private__11J3DTevBlockFUl */ +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(); + DCStoreRange(pStart, pEnd - pStart); +} + +/* 8031E12C-8031E328 318A6C 01FC+00 1/0 0/0 0/0 .text load__15J3DIndBlockFullFv */ +// regalloc +#ifdef NONMATCHING +void J3DIndBlockFull::load() { + u8 indTexStageNum = mIndTexStageNum; + for (u32 i = 0; i < indTexStageNum; i++) { + mIndTexMtx[i].load(i); + } + for (u32 i = 0; i < indTexStageNum; i += 2) { + J3DGDSetIndTexCoordScale( + GXIndTexStageID(i), + mIndTexCoordScale[i].getScaleS(), + mIndTexCoordScale[i].getScaleT(), + mIndTexCoordScale[i + 1].getScaleS(), + mIndTexCoordScale[i + 1].getScaleT() + ); + } + loadTexCoordScale(mIndTexOrder[0].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[0].getMap() & 7]); + loadTexCoordScale(mIndTexOrder[1].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[1].getMap() & 7]); + loadTexCoordScale(mIndTexOrder[2].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[2].getMap() & 7]); + loadTexCoordScale(mIndTexOrder[3].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[3].getMap() & 7]); + J3DGDSetIndTexOrder( + indTexStageNum, + mIndTexOrder[0].getCoord(), + mIndTexOrder[0].getMap(), + mIndTexOrder[1].getCoord(), + mIndTexOrder[1].getMap(), + mIndTexOrder[2].getCoord(), + mIndTexOrder[2].getMap(), + mIndTexOrder[3].getCoord(), + mIndTexOrder[3].getMap() + ); +} +#else +void J3DIndBlockFull::load() { + // NONMATCHING +} +#endif + +/* 8031E328-8031E408 318C68 00E0+00 1/0 0/0 0/0 .text diff__15J3DIndBlockFullFUl */ +void J3DIndBlockFull::diff(u32 flag) { + if ((flag & 0x08000000) == 0) { + return; + } + u8 indTexStageNum = mIndTexStageNum; + mIndTexMtx[0].load(0); + J3DGDSetIndTexCoordScale( + GX_INDTEXSTAGE0, + mIndTexCoordScale[0].getScaleS(), + mIndTexCoordScale[0].getScaleT(), + mIndTexCoordScale[1].getScaleS(), + mIndTexCoordScale[1].getScaleT() + ); + loadTexCoordScale(mIndTexOrder[0].getCoord(), J3DSys::sTexCoordScaleTable[mIndTexOrder[0].getMap() & 7]); + J3DGDSetIndTexOrder( + indTexStageNum, + mIndTexOrder[0].getCoord(), + mIndTexOrder[0].getMap(), + mIndTexOrder[1].getCoord(), + mIndTexOrder[1].getMap(), + mIndTexOrder[2].getCoord(), + mIndTexOrder[2].getMap(), + mIndTexOrder[3].getCoord(), + mIndTexOrder[3].getMap() + ); +} + +/* 8031E408-8031E6C8 318D48 02C0+00 1/0 0/0 0/0 .text load__13J3DPEBlockOpaFv */ +// vtable +#ifdef NONMATCHING +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); +} +#else +extern "C" void load__13J3DPEBlockOpaFv() { + // asm void J3DPEBlockOpa::load() { + // NONMATCHING +} +#endif + +/* 8031E6C8-8031E98C 319008 02C4+00 1/0 0/0 0/0 .text load__17J3DPEBlockTexEdgeFv */ +// vtable +#ifdef NONMATCHING +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); +} +#else +extern "C" void load__17J3DPEBlockTexEdgeFv() { + // asm void J3DPEBlockTexEdge::load() { + // NONMATCHING +} +#endif + +/* 8031E98C-8031EC50 3192CC 02C4+00 1/0 0/0 0/0 .text load__13J3DPEBlockXluFv */ +// vtable +#ifdef NONMATCHING +void J3DPEBlockXlu::load() { + GDOverflowCheck(0x1e); + J3DGDSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND,GX_ALWAYS, 0); + J3DGDSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_COPY); + J3DGDSetZMode(1, GX_LEQUAL, 0); + J3DGDSetZCompLoc(1); +} +#else +extern "C" void load__13J3DPEBlockXluFv() { + // asm void J3DPEBlockXlu::load() { + // NONMATCHING +} +#endif + +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); + u8* start = GDGetCurrPointer(); + mFog.load(); + u8* end = GDGetCurrPointer(); + DCStoreRange(start, end - 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 flag) { + if ((flag & 0x10000000)) { + diffFog(); + } + if ((flag & 0x20000000)) { + diffBlend(); + } +} + +/* 8031FD08-8031FDE4 31A648 00DC+00 1/0 0/0 0/0 .text + * reset__21J3DColorBlockLightOffFP13J3DColorBlock */ +void J3DColorBlockLightOff::reset(J3DColorBlock* pBlock) { + mColorChanNum = pBlock->getColorChanNum(); + + for (u32 i = 0; i < ARRAY_SIZE(mMatColor); i++) { + mMatColor[i] = *pBlock->getMatColor(i); + } + for (u32 i = 0; i < ARRAY_SIZE(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) { + mColorChanNum = pBlock->getColorChanNum(); + + for (u32 i = 0; i < ARRAY_SIZE(mMatColor); i++) { + mMatColor[i] = *pBlock->getMatColor(i); + } + for (u32 i = 0; i < ARRAY_SIZE(mColorChan); i++) { + mColorChan[i] = *pBlock->getColorChan(i); + } + for (u32 i = 0; i < ARRAY_SIZE(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) { + mColorChanNum = pBlock->getColorChanNum(); + + for (u32 i = 0; i < ARRAY_SIZE(mMatColor); i++) { + mMatColor[i] = *pBlock->getMatColor(i); + } + for (u32 i = 0; i < ARRAY_SIZE(mColorChan); i++) { + mColorChan[i] = *pBlock->getColorChan(i); + } + for (u32 i = 0; i < ARRAY_SIZE(mAmbColor); i++) { + if (pBlock->getAmbColor(i) != NULL) { + mAmbColor[i] = *pBlock->getAmbColor(i); + } + } +} + +/* ############################################################################################## */ +/* 803A1EA8-803A1EA8 02E508 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +#pragma push +#pragma force_active on +SECTION_DEAD static char const* const stringBase_803A1EA8 = "Error : TexMtx[%d] is Null.\n"; +/* @stringBase0 padding */ +SECTION_DEAD static char const* const pad_803A1EC5 = "\0\0"; +#pragma pop + +/* 80320084-803201A0 31A9C4 011C+00 1/0 0/0 0/0 .text + * reset__21J3DTexGenBlockPatchedFP14J3DTexGenBlock */ +// vtable +#ifdef NONMATCHING +void J3DTexGenBlockPatched::reset(J3DTexGenBlock* pBlock) { + 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); + } + } + } +} +#else +extern "C" void reset__21J3DTexGenBlockPatchedFP14J3DTexGenBlock() { + // asm void J3DTexGenBlockPatched::reset(J3DTexGenBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803201A0-803202DC 31AAE0 013C+00 1/0 0/0 0/0 .text reset__15J3DTexGenBlock4FP14J3DTexGenBlock + */ +// vtable +#ifdef NONMATCHING +void J3DTexGenBlock4::reset(J3DTexGenBlock* pBlock) { + 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(); +} +#else +extern "C" void reset__15J3DTexGenBlock4FP14J3DTexGenBlock() { + // asm void J3DTexGenBlock4::reset(J3DTexGenBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803202DC-80320418 31AC1C 013C+00 1/0 0/0 0/0 .text + * reset__19J3DTexGenBlockBasicFP14J3DTexGenBlock */ +// vtable +#ifdef NONMATCHING +void J3DTexGenBlockBasic::reset(J3DTexGenBlock* pBlock) { + 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(); +} +#else +extern "C" void reset__19J3DTexGenBlockBasicFP14J3DTexGenBlock() { + // asm void J3DTexGenBlockBasic::reset(J3DTexGenBlock* param_0) { + // NONMATCHING +} +#endif + +/* 80320418-803205D4 31AD58 01BC+00 1/0 0/0 0/0 .text reset__18J3DTevBlockPatchedFP11J3DTevBlock + */ +#ifdef NONMATCHING +// vtable +void J3DTevBlockPatched::reset(J3DTevBlock* pBlock) { + 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); + } +} +#else +extern "C" void reset__18J3DTevBlockPatchedFP11J3DTevBlock() { + // asm void J3DTevBlockPatched::reset(J3DTevBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803205D4-803206AC 31AF14 00D8+00 1/0 0/0 0/0 .text reset__12J3DTevBlock1FP11J3DTevBlock */ +// vtable +#ifdef NONMATCHING +void J3DTevBlock1::reset(J3DTevBlock* pBlock) { + mTexNo[0] = pBlock->getTexNo(0); + mTevOrder[0] = *pBlock->getTevOrder(0); + mTevStage[0] = *pBlock->getTevStage(0); + mIndTevStage[0] = *pBlock->getIndTevStage(0); +} +#else +extern "C" void reset__12J3DTevBlock1FP11J3DTevBlock() { + // asm void J3DTevBlock1::reset(J3DTevBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803206AC-8032098C 31AFEC 02E0+00 1/0 0/0 0/0 .text reset__12J3DTevBlock2FP11J3DTevBlock */ +// vtable +#ifdef NONMATCHING +void J3DTevBlock2::reset(J3DTevBlock* pBlock) { + 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); + } +} +#else +extern "C" void reset__12J3DTevBlock2FP11J3DTevBlock() { + // asm void J3DTevBlock2::reset(J3DTevBlock* param_0) { + // NONMATCHING +} +#endif + +/* 8032098C-80320E24 31B2CC 0498+00 1/0 0/0 0/0 .text reset__12J3DTevBlock4FP11J3DTevBlock */ +// vtable +#ifdef NONMATCHING +void J3DTevBlock4::reset(J3DTevBlock* pBlock) { + 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); +} +#else +extern "C" void reset__12J3DTevBlock4FP11J3DTevBlock() { + // asm void J3DTevBlock4::reset(J3DTevBlock* param_0) { + // NONMATCHING +} +#endif + +/* 80320E24-803210B0 31B764 028C+00 1/0 0/0 0/0 .text reset__13J3DTevBlock16FP11J3DTevBlock */ +// vtable +#ifdef NONMATCHING +void J3DTevBlock16::reset(J3DTevBlock* pBlock) { + 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); + } +} +#else +extern "C" void reset__13J3DTevBlock16FP11J3DTevBlock() { + // asm void J3DTevBlock16::reset(J3DTevBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803210B0-803211B4 31B9F0 0104+00 1/0 0/0 0/0 .text reset__15J3DIndBlockFullFP11J3DIndBlock */ +// vtable +#ifdef NONMATCHING +void J3DIndBlockFull::reset(J3DIndBlock* pBlock) { + 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); + } +} +#else +extern "C" void reset__15J3DIndBlockFullFP11J3DIndBlock() { + // asm void J3DIndBlockFull::reset(J3DIndBlock* param_0) { + // NONMATCHING +} +#endif + +/* 803211B4-8032129C 31BAF4 00E8+00 1/0 0/0 0/0 .text reset__16J3DPEBlockFogOffFP10J3DPEBlock */ +// vtable +#ifdef NONMATCHING +void J3DPEBlockFogOff::reset(J3DPEBlock* pBlock) { + switch (pBlock->getType()) { + case 'PEFL': + case 'PEFG': + mAlphaComp = *pBlock->getAlphaComp(); + mBlend = *pBlock->getBlend(); + mZMode = *pBlock->getZMode(); + mZCompLoc = pBlock->getZCompLoc(); + break; + } +} +#else +extern "C" void reset__16J3DPEBlockFogOffFP10J3DPEBlock() { + // asm void J3DPEBlockFogOff::reset(J3DPEBlock* param_0) { + // NONMATCHING +} +#endif + +/* 8032129C-803213C0 31BBDC 0124+00 1/0 0/0 0/0 .text reset__14J3DPEBlockFullFP10J3DPEBlock */ +// vtable +#ifdef NONMATCHING +void J3DPEBlockFull::reset(J3DPEBlock* pBlock) { + if (pBlock->getFog() != NULL) { + mFog = *pBlock->getFog(); + } + + switch (pBlock->getType()) { + case 'PEFL': + case 'PEFG': + mAlphaComp = *pBlock->getAlphaComp(); + mBlend = *pBlock->getBlend(); + mZMode = *pBlock->getZMode(); + mZCompLoc = pBlock->getZCompLoc(); + break; + } +} +#else +extern "C" void reset__14J3DPEBlockFullFP10J3DPEBlock() { + // asm void J3DPEBlockFull::reset(J3DPEBlock* param_0) { + // NONMATCHING +} +#endif + +/* ############################################################################################## */ +/* 803CDF30-803CDF60 -00001 0030+00 1/1 0/0 0/0 .data @5062 */ +SECTION_DATA static void* lit_5062[12] = { + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x188), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0xC8), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0xF8), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x188), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x13C), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0xC8), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0xF8), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x13C), + (void*)(((char*)calc__21J3DTexGenBlockPatchedFPA4_Cf) + 0x13C), +}; + +/* 804563AC-804563B0 0049AC 0004+00 3/3 0/0 0/0 .sdata2 @5060 */ +SECTION_SDATA2 static u8 lit_5060[4] = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 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) { + u8 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; + } + } + } +} + + +/* ############################################################################################## */ +/* 803CDF60-803CDF90 -00001 0030+00 1/1 0/0 0/0 .data @5110 */ +SECTION_DATA static void* lit_5110[12] = { + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x118), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x88), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xB8), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x118), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xCC), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x74), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x88), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xB8), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xCC), + (void*)(((char*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xCC), +}; + +/* 80321584-803216D8 31BEC4 0154+00 4/0 0/0 0/0 .text + * calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf */ +void J3DTexGenBlockPatched::calcWithoutViewMtx(f32 const (*param_0)[4]) { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 803CDF90-803CDFC0 -00001 0030+00 1/1 0/0 0/0 .data @5150 */ +SECTION_DATA static void* lit_5150[12] = { + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x100), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x84), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xAC), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x100), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xC8), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x84), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xAC), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xC8), + (void*)(((char*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xC8), +}; + +/* 803216D8-8032181C 31C018 0144+00 4/0 0/0 0/0 .text + * calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf */ +void J3DTexGenBlockPatched::calcPostTexMtx(f32 const (*param_0)[4]) { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 803CDFC0-803CDFF0 -00001 0030+00 1/1 0/0 0/0 .data @5187 */ +SECTION_DATA static void* lit_5187[12] = { + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xD8), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x84), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xA0), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xD8), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xBC), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x68), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0x84), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xA0), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xBC), + (void*)(((char*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf) + 0xBC), +}; + +/* 8032181C-80321938 31C15C 011C+00 4/0 0/0 0/0 .text + * calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf */ +void J3DTexGenBlockPatched::calcPostTexMtxWithoutViewMtx(f32 const (*param_0)[4]) { + // NONMATCHING +} + +/* 80321938-8032193C 31C278 0004+00 1/0 1/0 0/0 .text diffTevReg__11J3DTevBlockFv */ +void J3DTevBlock::diffTevReg() { +} + +/* 8032193C-80321940 31C27C 0004+00 1/0 1/0 0/0 .text diffTevStageIndirect__11J3DTevBlockFv */ +void J3DTevBlock::diffTevStageIndirect() { +} + +/* 80321940-80321944 31C280 0004+00 1/0 1/0 0/0 .text diffTevStage__11J3DTevBlockFv */ +void J3DTevBlock::diffTevStage() { +} + +/* 80321944-80321948 31C284 0004+00 1/0 1/0 0/0 .text diffTexCoordScale__11J3DTevBlockFv + */ +void J3DTevBlock::diffTexCoordScale() { +} + +/* 80321948-8032194C 31C288 0004+00 1/0 1/0 0/0 .text diffTexNo__11J3DTevBlockFv */ +void J3DTevBlock::diffTexNo() { +} + +/* 8032194C-80321958 31C28C 000C+00 1/0 0/0 0/0 .text getType__14J3DPEBlockFullFv */ +u32 J3DPEBlockFull::getType() { + return 'PEFL'; +} + +/* 80321958-8032197C 31C298 0024+00 1/0 0/0 0/0 .text setFog__14J3DPEBlockFullFP6J3DFog + */ +void J3DPEBlockFull::setFog(J3DFog* pFog) { + mFog.setFogInfo(pFog->getFogInfo()); +} + +/* 8032197C-803219A0 31C2BC 0024+00 1/0 0/0 0/0 .text setFog__14J3DPEBlockFullF6J3DFog */ +void J3DPEBlockFull::setFog(J3DFog fog) { + mFog.setFogInfo(fog.getFogInfo()); +} + +/* 803219A0-803219A8 31C2E0 0008+00 1/0 0/0 0/0 .text getFog__14J3DPEBlockFullFv */ +J3DFog* J3DPEBlockFull::getFog() { + return &mFog; +} + +/* 803219A8-803219C4 31C2E8 001C+00 1/0 0/0 0/0 .text + * setAlphaComp__14J3DPEBlockFullFRC12J3DAlphaComp */ +void J3DPEBlockFull::setAlphaComp(J3DAlphaComp const& alphaComp) { + mAlphaComp = alphaComp; +} + +/* 803219C4-803219E0 31C304 001C+00 1/0 0/0 0/0 .text + * setAlphaComp__14J3DPEBlockFullFPC12J3DAlphaComp */ +void J3DPEBlockFull::setAlphaComp(J3DAlphaComp const* alphaComp) { + mAlphaComp = *alphaComp; +} + +/* 803219E0-803219E8 31C320 0008+00 1/0 0/0 0/0 .text getAlphaComp__14J3DPEBlockFullFv */ +J3DAlphaComp* J3DPEBlockFull::getAlphaComp() { + return &mAlphaComp; +} + +/* 803219E8-803219F4 31C328 000C+00 1/0 0/0 0/0 .text setBlend__14J3DPEBlockFullFRC8J3DBlend */ +void J3DPEBlockFull::setBlend(J3DBlend const& blend) { + mBlend = blend; +} + +/* 803219F4-80321A00 31C334 000C+00 1/0 0/0 0/0 .text setBlend__14J3DPEBlockFullFPC8J3DBlend */ +void J3DPEBlockFull::setBlend(J3DBlend const* blend) { + mBlend = *blend; +} + +/* 80321A00-80321A08 31C340 0008+00 1/0 0/0 0/0 .text getBlend__14J3DPEBlockFullFv */ +J3DBlend* J3DPEBlockFull::getBlend() { + return &mBlend; +} + +/* 80321A08-80321A14 31C348 000C+00 1/0 0/0 0/0 .text setZMode__14J3DPEBlockFullF8J3DZMode */ +void J3DPEBlockFull::setZMode(J3DZMode zMode) { + mZMode = zMode; +} + +/* 80321A14-80321A20 31C354 000C+00 1/0 0/0 0/0 .text setZMode__14J3DPEBlockFullFPC8J3DZMode */ +void J3DPEBlockFull::setZMode(J3DZMode const* zMode) { + mZMode = *zMode; +} + +/* 80321A20-80321A28 31C360 0008+00 1/0 0/0 0/0 .text getZMode__14J3DPEBlockFullFv */ +J3DZMode* J3DPEBlockFull::getZMode() { + return &mZMode; +} + +/* 80321A28-80321A30 -00001 0008+00 0/0 0/0 0/0 .text setZCompLoc__14J3DPEBlockFullFUc */ +void J3DPEBlockFull::setZCompLoc(u8 zCompLoc) { + mZCompLoc = zCompLoc; +} + +/* 80321A30-80321A3C 31C370 000C+00 1/0 0/0 0/0 .text setZCompLoc__14J3DPEBlockFullFPCUc + */ +void J3DPEBlockFull::setZCompLoc(u8 const* zCompLoc) { + mZCompLoc = *zCompLoc; +} + +/* 80321A3C-80321A44 31C37C 0008+00 1/0 0/0 0/0 .text getZCompLoc__14J3DPEBlockFullCFv */ +u8 J3DPEBlockFull::getZCompLoc() const { + return mZCompLoc; +} + +/* 80321A44-80321A4C -00001 0008+00 0/0 0/0 0/0 .text setDither__14J3DPEBlockFullFUc */ +void J3DPEBlockFull::setDither(u8 dither) { + mDither = dither; +} + +/* 80321A4C-80321A58 31C38C 000C+00 1/0 0/0 0/0 .text setDither__14J3DPEBlockFullFPCUc */ +void J3DPEBlockFull::setDither(u8 const* dither) { + mDither = *dither; +} + +/* 80321A58-80321A60 31C398 0008+00 1/0 0/0 0/0 .text getDither__14J3DPEBlockFullCFv */ +u8 J3DPEBlockFull::getDither() const { + return mDither; +} + +/* 80321A60-80321A68 31C3A0 0008+00 1/0 0/0 0/0 .text getFogOffset__14J3DPEBlockFullCFv + */ +u32 J3DPEBlockFull::getFogOffset() const { + return mFogOffset; +} + +/* 80321A68-80321A70 -00001 0008+00 0/0 0/0 0/0 .text setFogOffset__14J3DPEBlockFullFUl + */ +void J3DPEBlockFull::setFogOffset(u32 fogOffset) { + mFogOffset = fogOffset; +} + +/* ############################################################################################## */ +/* 803CDFF0-803CE06C 02B110 007C+00 1/1 1/1 0/0 .data __vt__14J3DPEBlockFull */ +SECTION_DATA extern void* __vt__14J3DPEBlockFull[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__14J3DPEBlockFullFP10J3DPEBlock, + (void*)load__14J3DPEBlockFullFv, + (void*)patch__14J3DPEBlockFullFv, + (void*)diff__14J3DPEBlockFullFUl, + (void*)diffFog__14J3DPEBlockFullFv, + (void*)diffBlend__14J3DPEBlockFullFv, + (void*)countDLSize__14J3DPEBlockFullFv, + (void*)getType__14J3DPEBlockFullFv, + (void*)setFog__14J3DPEBlockFullF6J3DFog, + (void*)setFog__14J3DPEBlockFullFP6J3DFog, + (void*)getFog__14J3DPEBlockFullFv, + (void*)setAlphaComp__14J3DPEBlockFullFPC12J3DAlphaComp, + (void*)setAlphaComp__14J3DPEBlockFullFRC12J3DAlphaComp, + (void*)getAlphaComp__14J3DPEBlockFullFv, + (void*)setBlend__14J3DPEBlockFullFPC8J3DBlend, + (void*)setBlend__14J3DPEBlockFullFRC8J3DBlend, + (void*)getBlend__14J3DPEBlockFullFv, + (void*)setZMode__14J3DPEBlockFullFPC8J3DZMode, + (void*)setZMode__14J3DPEBlockFullF8J3DZMode, + (void*)getZMode__14J3DPEBlockFullFv, + (void*)setZCompLoc__14J3DPEBlockFullFPCUc, + (void*)setZCompLoc__14J3DPEBlockFullFUc, + (void*)getZCompLoc__14J3DPEBlockFullCFv, + (void*)setDither__14J3DPEBlockFullFPCUc, + (void*)setDither__14J3DPEBlockFullFUc, + (void*)getDither__14J3DPEBlockFullCFv, + (void*)getFogOffset__14J3DPEBlockFullCFv, + (void*)setFogOffset__14J3DPEBlockFullFUl, + (void*)__dt__14J3DPEBlockFullFv, +}; + +/* 80321A70-80321ACC 31C3B0 005C+00 1/0 0/0 0/0 .text __dt__14J3DPEBlockFullFv */ +J3DPEBlockFull::~J3DPEBlockFull() {} + +/* 80321ACC-80321B00 31C40C 0034+00 1/0 0/0 0/0 .text diff__16J3DPEBlockFogOffFUl */ +void J3DPEBlockFogOff::diff(u32 param_1) { + if ((param_1 & 0x20000000) != 0) { + diffBlend(); + } +} + +/* 80321B00-80321B0C 31C440 000C+00 1/0 0/0 0/0 .text getType__16J3DPEBlockFogOffFv */ +u32 J3DPEBlockFogOff::getType() { + return 'PEFG'; +} + +/* 80321B0C-80321B28 31C44C 001C+00 1/0 0/0 0/0 .text + * setAlphaComp__16J3DPEBlockFogOffFRC12J3DAlphaComp */ +void J3DPEBlockFogOff::setAlphaComp(J3DAlphaComp const& alphaComp) { + mAlphaComp = alphaComp; +} + +/* 80321B28-80321B44 31C468 001C+00 1/0 0/0 0/0 .text + * setAlphaComp__16J3DPEBlockFogOffFPC12J3DAlphaComp */ +void J3DPEBlockFogOff::setAlphaComp(J3DAlphaComp const* alphaComp) { + mAlphaComp = *alphaComp; +} + +/* 80321B44-80321B4C 31C484 0008+00 1/0 0/0 0/0 .text getAlphaComp__16J3DPEBlockFogOffFv + */ +J3DAlphaComp* J3DPEBlockFogOff::getAlphaComp() { + return &mAlphaComp; +} + +/* 80321B4C-80321B58 31C48C 000C+00 1/0 0/0 0/0 .text setBlend__16J3DPEBlockFogOffFRC8J3DBlend */ +void J3DPEBlockFogOff::setBlend(J3DBlend const& blend) { + mBlend = blend; +} + +/* 80321B58-80321B64 31C498 000C+00 1/0 0/0 0/0 .text setBlend__16J3DPEBlockFogOffFPC8J3DBlend */ +void J3DPEBlockFogOff::setBlend(J3DBlend const* blend) { + mBlend = *blend; +} + +/* 80321B64-80321B6C 31C4A4 0008+00 1/0 0/0 0/0 .text getBlend__16J3DPEBlockFogOffFv */ +J3DBlend* J3DPEBlockFogOff::getBlend() { + return &mBlend; +} + +/* 80321B6C-80321B78 31C4AC 000C+00 1/0 0/0 0/0 .text setZMode__16J3DPEBlockFogOffF8J3DZMode */ +void J3DPEBlockFogOff::setZMode(J3DZMode zMode) { + mZMode = zMode; +} + +/* 80321B78-80321B84 31C4B8 000C+00 1/0 0/0 0/0 .text setZMode__16J3DPEBlockFogOffFPC8J3DZMode */ +void J3DPEBlockFogOff::setZMode(J3DZMode const* zMode) { + mZMode = *zMode; +} + +/* 80321B84-80321B8C 31C4C4 0008+00 1/0 0/0 0/0 .text getZMode__16J3DPEBlockFogOffFv */ +J3DZMode* J3DPEBlockFogOff::getZMode() { + return &mZMode; +} + +/* 80321B8C-80321B94 -00001 0008+00 0/0 0/0 0/0 .text setZCompLoc__16J3DPEBlockFogOffFUc + */ +void J3DPEBlockFogOff::setZCompLoc(u8 zCompLoc) { + mZCompLoc = zCompLoc; +} + +/* 80321B94-80321BA0 31C4D4 000C+00 1/0 0/0 0/0 .text setZCompLoc__16J3DPEBlockFogOffFPCUc */ +void J3DPEBlockFogOff::setZCompLoc(u8 const* zCompLoc) { + mZCompLoc = *zCompLoc; +} + +/* 80321BA0-80321BA8 31C4E0 0008+00 1/0 0/0 0/0 .text getZCompLoc__16J3DPEBlockFogOffCFv + */ +u8 J3DPEBlockFogOff::getZCompLoc() const { + return mZCompLoc; +} + +/* 80321BA8-80321BB0 -00001 0008+00 0/0 0/0 0/0 .text setDither__16J3DPEBlockFogOffFUc */ +void J3DPEBlockFogOff::setDither(u8 dither) { + mDither = dither; +} + +/* 80321BB0-80321BBC 31C4F0 000C+00 1/0 0/0 0/0 .text setDither__16J3DPEBlockFogOffFPCUc + */ +void J3DPEBlockFogOff::setDither(u8 const* dither) { + mDither = *dither; +} + +/* 80321BBC-80321BC4 31C4FC 0008+00 1/0 0/0 0/0 .text getDither__16J3DPEBlockFogOffCFv */ +u8 J3DPEBlockFogOff::getDither() const { + return mDither; +} + +/* ############################################################################################## */ +/* 803CE06C-803CE0E8 02B18C 007C+00 1/1 1/1 0/0 .data __vt__16J3DPEBlockFogOff */ +SECTION_DATA extern void* __vt__16J3DPEBlockFogOff[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__16J3DPEBlockFogOffFP10J3DPEBlock, + (void*)load__16J3DPEBlockFogOffFv, + (void*)patch__10J3DPEBlockFv, + (void*)diff__16J3DPEBlockFogOffFUl, + (void*)diffFog__10J3DPEBlockFv, + (void*)diffBlend__16J3DPEBlockFogOffFv, + (void*)countDLSize__16J3DPEBlockFogOffFv, + (void*)getType__16J3DPEBlockFogOffFv, + (void*)setFog__10J3DPEBlockF6J3DFog, + (void*)setFog__10J3DPEBlockFP6J3DFog, + (void*)getFog__10J3DPEBlockFv, + (void*)setAlphaComp__16J3DPEBlockFogOffFPC12J3DAlphaComp, + (void*)setAlphaComp__16J3DPEBlockFogOffFRC12J3DAlphaComp, + (void*)getAlphaComp__16J3DPEBlockFogOffFv, + (void*)setBlend__16J3DPEBlockFogOffFPC8J3DBlend, + (void*)setBlend__16J3DPEBlockFogOffFRC8J3DBlend, + (void*)getBlend__16J3DPEBlockFogOffFv, + (void*)setZMode__16J3DPEBlockFogOffFPC8J3DZMode, + (void*)setZMode__16J3DPEBlockFogOffF8J3DZMode, + (void*)getZMode__16J3DPEBlockFogOffFv, + (void*)setZCompLoc__16J3DPEBlockFogOffFPCUc, + (void*)setZCompLoc__16J3DPEBlockFogOffFUc, + (void*)getZCompLoc__16J3DPEBlockFogOffCFv, + (void*)setDither__16J3DPEBlockFogOffFPCUc, + (void*)setDither__16J3DPEBlockFogOffFUc, + (void*)getDither__16J3DPEBlockFogOffCFv, + (void*)getFogOffset__10J3DPEBlockCFv, + (void*)setFogOffset__10J3DPEBlockFUl, + (void*)__dt__16J3DPEBlockFogOffFv, +}; + +/* 80321BC4-80321C20 31C504 005C+00 1/0 0/0 0/0 .text __dt__16J3DPEBlockFogOffFv */ +J3DPEBlockFogOff::~J3DPEBlockFogOff() {} + +/* 80321C20-80321C44 31C560 0024+00 1/0 0/0 0/0 .text indexToPtr__13J3DTevBlock16Fv */ +void J3DTevBlock16::indexToPtr() { + indexToPtr_private(mTexNoOffset); +} + +/* 80321C44-80321C50 31C584 000C+00 1/0 0/0 0/0 .text getType__13J3DTevBlock16Fv */ +u32 J3DTevBlock16::getType() { + return 'TV16'; +} + +/* 80321C50-80321C60 31C590 0010+00 1/0 0/0 0/0 .text setTexNo__13J3DTevBlock16FUlUs */ +void J3DTevBlock16::setTexNo(u32 param_1, u16 param_2) { + mTexNo[param_1] = param_2; +} + +/* 80321C60-80321C74 31C5A0 0014+00 1/0 0/0 0/0 .text setTexNo__13J3DTevBlock16FUlPCUs */ +void J3DTevBlock16::setTexNo(u32 param_0, u16 const* param_1) { + // NONMATCHING +} + +/* 80321C74-80321C84 31C5B4 0010+00 1/0 0/0 0/0 .text getTexNo__13J3DTevBlock16CFUl */ +u16 J3DTevBlock16::getTexNo(u32 param_0) const { + // NONMATCHING +} + +/* 80321C84-80321C98 31C5C4 0014+00 1/0 0/0 0/0 .text setTevOrder__13J3DTevBlock16FUl11J3DTevOrder + */ +void J3DTevBlock16::setTevOrder(u32 param_0, J3DTevOrder param_1) { + // NONMATCHING +} + +/* 80321C98-80321CAC 31C5D8 0014+00 1/0 0/0 0/0 .text + * setTevOrder__13J3DTevBlock16FUlPC11J3DTevOrder */ +void J3DTevBlock16::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { + // NONMATCHING +} + +/* 80321CAC-80321CC0 31C5EC 0014+00 1/0 0/0 0/0 .text getTevOrder__13J3DTevBlock16FUl */ +J3DTevOrder* J3DTevBlock16::getTevOrder(u32 param_0) { + // NONMATCHING +} + +/* 80321CC0-80321CEC 31C600 002C+00 1/0 0/0 0/0 .text + * setTevColor__13J3DTevBlock16FUl13J3DGXColorS10 */ +void J3DTevBlock16::setTevColor(u32 param_0, J3DGXColorS10 param_1) { + // NONMATCHING +} + +/* 80321CEC-80321D18 31C62C 002C+00 1/0 0/0 0/0 .text + * setTevColor__13J3DTevBlock16FUlPC13J3DGXColorS10 */ +void J3DTevBlock16::setTevColor(u32 param_0, J3DGXColorS10 const* param_1) { + // NONMATCHING +} + +/* 80321D18-80321D2C 31C658 0014+00 1/0 0/0 0/0 .text getTevColor__13J3DTevBlock16FUl */ +J3DGXColorS10* J3DTevBlock16::getTevColor(u32 param_0) { + // NONMATCHING +} + +/* 80321D2C-80321D58 31C66C 002C+00 1/0 0/0 0/0 .text setTevKColor__13J3DTevBlock16FUl10J3DGXColor + */ +void J3DTevBlock16::setTevKColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 80321D58-80321D84 31C698 002C+00 1/0 0/0 0/0 .text + * setTevKColor__13J3DTevBlock16FUlPC10J3DGXColor */ +void J3DTevBlock16::setTevKColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80321D84-80321D98 31C6C4 0014+00 1/0 0/0 0/0 .text getTevKColor__13J3DTevBlock16FUl */ +J3DGXColor* J3DTevBlock16::getTevKColor(u32 param_0) { + // NONMATCHING +} + +/* 80321D98-80321DA4 31C6D8 000C+00 1/0 0/0 0/0 .text setTevKColorSel__13J3DTevBlock16FUlUc */ +void J3DTevBlock16::setTevKColorSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80321DA4-80321DB4 31C6E4 0010+00 1/0 0/0 0/0 .text setTevKColorSel__13J3DTevBlock16FUlPCUc */ +void J3DTevBlock16::setTevKColorSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 80321DB4-80321DC0 31C6F4 000C+00 1/0 0/0 0/0 .text getTevKColorSel__13J3DTevBlock16FUl + */ +bool J3DTevBlock16::getTevKColorSel(u32 param_0) { + // NONMATCHING +} + +/* 80321DC0-80321DCC 31C700 000C+00 1/0 0/0 0/0 .text setTevKAlphaSel__13J3DTevBlock16FUlUc */ +void J3DTevBlock16::setTevKAlphaSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80321DCC-80321DDC 31C70C 0010+00 1/0 0/0 0/0 .text setTevKAlphaSel__13J3DTevBlock16FUlPCUc */ +void J3DTevBlock16::setTevKAlphaSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 80321DDC-80321DE8 31C71C 000C+00 1/0 0/0 0/0 .text getTevKAlphaSel__13J3DTevBlock16FUl + */ +bool J3DTevBlock16::getTevKAlphaSel(u32 param_0) { + // NONMATCHING +} + +/* 80321DE8-80321DF0 -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__13J3DTevBlock16FUc + */ +void J3DTevBlock16::setTevStageNum(u8 param_0) { + *(u8*)(((u8*)this) + 88) /* this->field_0x58 */ = (u8)(param_0); +} + +/* 80321DF0-80321DFC 31C730 000C+00 1/0 0/0 0/0 .text setTevStageNum__13J3DTevBlock16FPCUc */ +void J3DTevBlock16::setTevStageNum(u8 const* param_0) { + // NONMATCHING +} + +/* 80321DFC-80321E04 31C73C 0008+00 1/0 0/0 0/0 .text getTevStageNum__13J3DTevBlock16CFv + */ +u8 J3DTevBlock16::getTevStageNum() const { + // NONMATCHING +} + +/* 80321E04-80321E40 31C744 003C+00 1/0 0/0 0/0 .text setTevStage__13J3DTevBlock16FUl11J3DTevStage + */ +void J3DTevBlock16::setTevStage(u32 param_0, J3DTevStage param_1) { + // NONMATCHING +} + +/* 80321E40-80321E7C 31C780 003C+00 1/0 0/0 0/0 .text + * setTevStage__13J3DTevBlock16FUlPC11J3DTevStage */ +void J3DTevBlock16::setTevStage(u32 param_0, J3DTevStage const* param_1) { + // NONMATCHING +} + +/* 80321E7C-80321E90 31C7BC 0014+00 1/0 0/0 0/0 .text getTevStage__13J3DTevBlock16FUl */ +J3DTevStage* J3DTevBlock16::getTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80321E90-80321EC8 31C7D0 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__13J3DTevBlock16FUl18J3DTevSwapModeInfo */ +void J3DTevBlock16::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo param_1) { + // NONMATCHING +} + +/* 80321EC8-80321F00 31C808 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__13J3DTevBlock16FUlPC18J3DTevSwapModeInfo */ +void J3DTevBlock16::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo const* param_1) { + // NONMATCHING +} + +/* 80321F00-80321F10 31C840 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__13J3DTevBlock16FUl19J3DTevSwapModeTable */ +void J3DTevBlock16::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable param_1) { + // NONMATCHING +} + +/* 80321F10-80321F20 31C850 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__13J3DTevBlock16FUlPC19J3DTevSwapModeTable */ +void J3DTevBlock16::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable const* param_1) { + // NONMATCHING +} + +/* 80321F20-80321F30 31C860 0010+00 1/0 0/0 0/0 .text getTevSwapModeTable__13J3DTevBlock16FUl */ +J3DTevSwapModeTable* J3DTevBlock16::getTevSwapModeTable(u32 param_0) { + // NONMATCHING +} + +/* 80321F30-80321F44 31C870 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__13J3DTevBlock16FUl14J3DIndTevStage */ +void J3DTevBlock16::setIndTevStage(u32 param_0, J3DIndTevStage param_1) { + // NONMATCHING +} + +/* 80321F44-80321F58 31C884 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__13J3DTevBlock16FUlPC14J3DIndTevStage */ +void J3DTevBlock16::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { + // NONMATCHING +} + +/* 80321F58-80321F6C 31C898 0014+00 1/0 0/0 0/0 .text getIndTevStage__13J3DTevBlock16FUl + */ +J3DIndTevStage* J3DTevBlock16::getIndTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80321F6C-80321F74 31C8AC 0008+00 1/0 0/0 0/0 .text getTexNoOffset__13J3DTevBlock16CFv + */ +u32 J3DTevBlock16::getTexNoOffset() const { + // NONMATCHING +} + +/* 80321F74-80321F7C 31C8B4 0008+00 1/0 0/0 0/0 .text getTevRegOffset__13J3DTevBlock16CFv + */ +bool J3DTevBlock16::getTevRegOffset() const { + // NONMATCHING +} + +/* 80321F7C-80321F84 -00001 0008+00 0/0 0/0 0/0 .text setTevRegOffset__13J3DTevBlock16FUl + */ +void J3DTevBlock16::setTevRegOffset(u32 param_0) { + *(u32*)(((u8*)this) + 368) /* this->field_0x170 */ = (u32)(param_0); +} + +/* ############################################################################################## */ +/* 803CE0E8-803CE1C4 02B208 00DC+00 1/1 1/1 0/0 .data __vt__13J3DTevBlock16 */ +SECTION_DATA extern void* __vt__13J3DTevBlock16[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__13J3DTevBlock16FP11J3DTevBlock, + (void*)load__13J3DTevBlock16Fv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__13J3DTevBlock16Fv, + (void*)diffTevReg__13J3DTevBlock16Fv, + (void*)diffTexCoordScale__13J3DTevBlock16Fv, + (void*)diffTevStage__13J3DTevBlock16Fv, + (void*)diffTevStageIndirect__13J3DTevBlock16Fv, + (void*)patch__13J3DTevBlock16Fv, + (void*)patchTexNo__13J3DTevBlock16Fv, + (void*)patchTevReg__13J3DTevBlock16Fv, + (void*)patchTexNoAndTexCoordScale__13J3DTevBlock16Fv, + (void*)ptrToIndex__13J3DTevBlock16Fv, + (void*)indexToPtr__13J3DTevBlock16Fv, + (void*)getType__13J3DTevBlock16Fv, + (void*)countDLSize__13J3DTevBlock16Fv, + (void*)setTexNo__13J3DTevBlock16FUlPCUs, + (void*)setTexNo__13J3DTevBlock16FUlUs, + (void*)getTexNo__13J3DTevBlock16CFUl, + (void*)setTevOrder__13J3DTevBlock16FUlPC11J3DTevOrder, + (void*)setTevOrder__13J3DTevBlock16FUl11J3DTevOrder, + (void*)getTevOrder__13J3DTevBlock16FUl, + (void*)setTevColor__13J3DTevBlock16FUlPC13J3DGXColorS10, + (void*)setTevColor__13J3DTevBlock16FUl13J3DGXColorS10, + (void*)getTevColor__13J3DTevBlock16FUl, + (void*)setTevKColor__13J3DTevBlock16FUlPC10J3DGXColor, + (void*)setTevKColor__13J3DTevBlock16FUl10J3DGXColor, + (void*)getTevKColor__13J3DTevBlock16FUl, + (void*)setTevKColorSel__13J3DTevBlock16FUlPCUc, + (void*)setTevKColorSel__13J3DTevBlock16FUlUc, + (void*)getTevKColorSel__13J3DTevBlock16FUl, + (void*)setTevKAlphaSel__13J3DTevBlock16FUlPCUc, + (void*)setTevKAlphaSel__13J3DTevBlock16FUlUc, + (void*)getTevKAlphaSel__13J3DTevBlock16FUl, + (void*)setTevStageNum__13J3DTevBlock16FPCUc, + (void*)setTevStageNum__13J3DTevBlock16FUc, + (void*)getTevStageNum__13J3DTevBlock16CFv, + (void*)setTevStage__13J3DTevBlock16FUlPC11J3DTevStage, + (void*)setTevStage__13J3DTevBlock16FUl11J3DTevStage, + (void*)getTevStage__13J3DTevBlock16FUl, + (void*)setTevSwapModeInfo__13J3DTevBlock16FUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__13J3DTevBlock16FUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__13J3DTevBlock16FUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__13J3DTevBlock16FUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__13J3DTevBlock16FUl, + (void*)setIndTevStage__13J3DTevBlock16FUlPC14J3DIndTevStage, + (void*)setIndTevStage__13J3DTevBlock16FUl14J3DIndTevStage, + (void*)getIndTevStage__13J3DTevBlock16FUl, + (void*)getTexNoOffset__13J3DTevBlock16CFv, + (void*)getTevRegOffset__13J3DTevBlock16CFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__13J3DTevBlock16FUl, + (void*)__dt__13J3DTevBlock16Fv, +}; + +/* 803CE1C4-803CE2A0 02B2E4 00DC+00 1/1 1/1 0/0 .data __vt__12J3DTevBlock4 */ +SECTION_DATA extern void* __vt__12J3DTevBlock4[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__12J3DTevBlock4FP11J3DTevBlock, + (void*)load__12J3DTevBlock4Fv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__12J3DTevBlock4Fv, + (void*)diffTevReg__12J3DTevBlock4Fv, + (void*)diffTexCoordScale__12J3DTevBlock4Fv, + (void*)diffTevStage__12J3DTevBlock4Fv, + (void*)diffTevStageIndirect__12J3DTevBlock4Fv, + (void*)patch__12J3DTevBlock4Fv, + (void*)patchTexNo__12J3DTevBlock4Fv, + (void*)patchTevReg__12J3DTevBlock4Fv, + (void*)patchTexNoAndTexCoordScale__12J3DTevBlock4Fv, + (void*)ptrToIndex__12J3DTevBlock4Fv, + (void*)indexToPtr__12J3DTevBlock4Fv, + (void*)getType__12J3DTevBlock4Fv, + (void*)countDLSize__12J3DTevBlock4Fv, + (void*)setTexNo__12J3DTevBlock4FUlPCUs, + (void*)setTexNo__12J3DTevBlock4FUlUs, + (void*)getTexNo__12J3DTevBlock4CFUl, + (void*)setTevOrder__12J3DTevBlock4FUlPC11J3DTevOrder, + (void*)setTevOrder__12J3DTevBlock4FUl11J3DTevOrder, + (void*)getTevOrder__12J3DTevBlock4FUl, + (void*)setTevColor__12J3DTevBlock4FUlPC13J3DGXColorS10, + (void*)setTevColor__12J3DTevBlock4FUl13J3DGXColorS10, + (void*)getTevColor__12J3DTevBlock4FUl, + (void*)setTevKColor__12J3DTevBlock4FUlPC10J3DGXColor, + (void*)setTevKColor__12J3DTevBlock4FUl10J3DGXColor, + (void*)getTevKColor__12J3DTevBlock4FUl, + (void*)setTevKColorSel__12J3DTevBlock4FUlPCUc, + (void*)setTevKColorSel__12J3DTevBlock4FUlUc, + (void*)getTevKColorSel__12J3DTevBlock4FUl, + (void*)setTevKAlphaSel__12J3DTevBlock4FUlPCUc, + (void*)setTevKAlphaSel__12J3DTevBlock4FUlUc, + (void*)getTevKAlphaSel__12J3DTevBlock4FUl, + (void*)setTevStageNum__12J3DTevBlock4FPCUc, + (void*)setTevStageNum__12J3DTevBlock4FUc, + (void*)getTevStageNum__12J3DTevBlock4CFv, + (void*)setTevStage__12J3DTevBlock4FUlPC11J3DTevStage, + (void*)setTevStage__12J3DTevBlock4FUl11J3DTevStage, + (void*)getTevStage__12J3DTevBlock4FUl, + (void*)setTevSwapModeInfo__12J3DTevBlock4FUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__12J3DTevBlock4FUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__12J3DTevBlock4FUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__12J3DTevBlock4FUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__12J3DTevBlock4FUl, + (void*)setIndTevStage__12J3DTevBlock4FUlPC14J3DIndTevStage, + (void*)setIndTevStage__12J3DTevBlock4FUl14J3DIndTevStage, + (void*)getIndTevStage__12J3DTevBlock4FUl, + (void*)getTexNoOffset__12J3DTevBlock4CFv, + (void*)getTevRegOffset__12J3DTevBlock4CFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__12J3DTevBlock4FUl, + (void*)__dt__12J3DTevBlock4Fv, +}; + +/* 803CE2A0-803CE37C 02B3C0 00DC+00 1/1 1/1 0/0 .data __vt__12J3DTevBlock2 */ +SECTION_DATA extern void* __vt__12J3DTevBlock2[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__12J3DTevBlock2FP11J3DTevBlock, + (void*)load__12J3DTevBlock2Fv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__12J3DTevBlock2Fv, + (void*)diffTevReg__12J3DTevBlock2Fv, + (void*)diffTexCoordScale__12J3DTevBlock2Fv, + (void*)diffTevStage__12J3DTevBlock2Fv, + (void*)diffTevStageIndirect__12J3DTevBlock2Fv, + (void*)patch__12J3DTevBlock2Fv, + (void*)patchTexNo__12J3DTevBlock2Fv, + (void*)patchTevReg__12J3DTevBlock2Fv, + (void*)patchTexNoAndTexCoordScale__12J3DTevBlock2Fv, + (void*)ptrToIndex__12J3DTevBlock2Fv, + (void*)indexToPtr__12J3DTevBlock2Fv, + (void*)getType__12J3DTevBlock2Fv, + (void*)countDLSize__12J3DTevBlock2Fv, + (void*)setTexNo__12J3DTevBlock2FUlPCUs, + (void*)setTexNo__12J3DTevBlock2FUlUs, + (void*)getTexNo__12J3DTevBlock2CFUl, + (void*)setTevOrder__12J3DTevBlock2FUlPC11J3DTevOrder, + (void*)setTevOrder__12J3DTevBlock2FUl11J3DTevOrder, + (void*)getTevOrder__12J3DTevBlock2FUl, + (void*)setTevColor__12J3DTevBlock2FUlPC13J3DGXColorS10, + (void*)setTevColor__12J3DTevBlock2FUl13J3DGXColorS10, + (void*)getTevColor__12J3DTevBlock2FUl, + (void*)setTevKColor__12J3DTevBlock2FUlPC10J3DGXColor, + (void*)setTevKColor__12J3DTevBlock2FUl10J3DGXColor, + (void*)getTevKColor__12J3DTevBlock2FUl, + (void*)setTevKColorSel__12J3DTevBlock2FUlPCUc, + (void*)setTevKColorSel__12J3DTevBlock2FUlUc, + (void*)getTevKColorSel__12J3DTevBlock2FUl, + (void*)setTevKAlphaSel__12J3DTevBlock2FUlPCUc, + (void*)setTevKAlphaSel__12J3DTevBlock2FUlUc, + (void*)getTevKAlphaSel__12J3DTevBlock2FUl, + (void*)setTevStageNum__12J3DTevBlock2FPCUc, + (void*)setTevStageNum__12J3DTevBlock2FUc, + (void*)getTevStageNum__12J3DTevBlock2CFv, + (void*)setTevStage__12J3DTevBlock2FUlPC11J3DTevStage, + (void*)setTevStage__12J3DTevBlock2FUl11J3DTevStage, + (void*)getTevStage__12J3DTevBlock2FUl, + (void*)setTevSwapModeInfo__12J3DTevBlock2FUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__12J3DTevBlock2FUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__12J3DTevBlock2FUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__12J3DTevBlock2FUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__12J3DTevBlock2FUl, + (void*)setIndTevStage__12J3DTevBlock2FUlPC14J3DIndTevStage, + (void*)setIndTevStage__12J3DTevBlock2FUl14J3DIndTevStage, + (void*)getIndTevStage__12J3DTevBlock2FUl, + (void*)getTexNoOffset__12J3DTevBlock2CFv, + (void*)getTevRegOffset__12J3DTevBlock2CFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__12J3DTevBlock2FUl, + (void*)__dt__12J3DTevBlock2Fv, +}; + +/* 803CE37C-803CE458 02B49C 00DC+00 1/1 1/1 0/0 .data __vt__12J3DTevBlock1 */ +SECTION_DATA extern void* __vt__12J3DTevBlock1[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__12J3DTevBlock1FP11J3DTevBlock, + (void*)load__12J3DTevBlock1Fv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__12J3DTevBlock1Fv, + (void*)diffTevReg__12J3DTevBlock1Fv, + (void*)diffTexCoordScale__12J3DTevBlock1Fv, + (void*)diffTevStage__12J3DTevBlock1Fv, + (void*)diffTevStageIndirect__12J3DTevBlock1Fv, + (void*)patch__12J3DTevBlock1Fv, + (void*)patchTexNo__12J3DTevBlock1Fv, + (void*)patchTevReg__12J3DTevBlock1Fv, + (void*)patchTexNoAndTexCoordScale__12J3DTevBlock1Fv, + (void*)ptrToIndex__12J3DTevBlock1Fv, + (void*)indexToPtr__12J3DTevBlock1Fv, + (void*)getType__12J3DTevBlock1Fv, + (void*)countDLSize__12J3DTevBlock1Fv, + (void*)setTexNo__12J3DTevBlock1FUlPCUs, + (void*)setTexNo__12J3DTevBlock1FUlUs, + (void*)getTexNo__12J3DTevBlock1CFUl, + (void*)setTevOrder__12J3DTevBlock1FUlPC11J3DTevOrder, + (void*)setTevOrder__12J3DTevBlock1FUl11J3DTevOrder, + (void*)getTevOrder__12J3DTevBlock1FUl, + (void*)setTevColor__11J3DTevBlockFUlPC13J3DGXColorS10, + (void*)setTevColor__11J3DTevBlockFUl13J3DGXColorS10, + (void*)getTevColor__11J3DTevBlockFUl, + (void*)setTevKColor__11J3DTevBlockFUlPC10J3DGXColor, + (void*)setTevKColor__11J3DTevBlockFUl10J3DGXColor, + (void*)getTevKColor__11J3DTevBlockFUl, + (void*)setTevKColorSel__11J3DTevBlockFUlPCUc, + (void*)setTevKColorSel__11J3DTevBlockFUlUc, + (void*)getTevKColorSel__11J3DTevBlockFUl, + (void*)setTevKAlphaSel__11J3DTevBlockFUlPCUc, + (void*)setTevKAlphaSel__11J3DTevBlockFUlUc, + (void*)getTevKAlphaSel__11J3DTevBlockFUl, + (void*)setTevStageNum__12J3DTevBlock1FPCUc, + (void*)setTevStageNum__12J3DTevBlock1FUc, + (void*)getTevStageNum__12J3DTevBlock1CFv, + (void*)setTevStage__12J3DTevBlock1FUlPC11J3DTevStage, + (void*)setTevStage__12J3DTevBlock1FUl11J3DTevStage, + (void*)getTevStage__12J3DTevBlock1FUl, + (void*)setTevSwapModeInfo__11J3DTevBlockFUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__11J3DTevBlockFUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__11J3DTevBlockFUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__11J3DTevBlockFUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__11J3DTevBlockFUl, + (void*)setIndTevStage__12J3DTevBlock1FUlPC14J3DIndTevStage, + (void*)setIndTevStage__12J3DTevBlock1FUl14J3DIndTevStage, + (void*)getIndTevStage__12J3DTevBlock1FUl, + (void*)getTexNoOffset__12J3DTevBlock1CFv, + (void*)getTevRegOffset__11J3DTevBlockCFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__11J3DTevBlockFUl, + (void*)__dt__12J3DTevBlock1Fv, +}; + +/* 803CE458-803CE534 02B578 00DC+00 1/1 1/1 0/0 .data __vt__18J3DTevBlockPatched */ +SECTION_DATA extern void* __vt__18J3DTevBlockPatched[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__18J3DTevBlockPatchedFP11J3DTevBlock, + (void*)load__18J3DTevBlockPatchedFv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__18J3DTevBlockPatchedFv, + (void*)diffTevReg__18J3DTevBlockPatchedFv, + (void*)diffTexCoordScale__18J3DTevBlockPatchedFv, + (void*)diffTevStage__18J3DTevBlockPatchedFv, + (void*)diffTevStageIndirect__18J3DTevBlockPatchedFv, + (void*)patch__18J3DTevBlockPatchedFv, + (void*)patchTexNo__18J3DTevBlockPatchedFv, + (void*)patchTevReg__18J3DTevBlockPatchedFv, + (void*)patchTexNoAndTexCoordScale__18J3DTevBlockPatchedFv, + (void*)ptrToIndex__18J3DTevBlockPatchedFv, + (void*)indexToPtr__18J3DTevBlockPatchedFv, + (void*)getType__18J3DTevBlockPatchedFv, + (void*)countDLSize__18J3DTevBlockPatchedFv, + (void*)setTexNo__18J3DTevBlockPatchedFUlPCUs, + (void*)setTexNo__18J3DTevBlockPatchedFUlUs, + (void*)getTexNo__18J3DTevBlockPatchedCFUl, + (void*)setTevOrder__18J3DTevBlockPatchedFUlPC11J3DTevOrder, + (void*)setTevOrder__18J3DTevBlockPatchedFUl11J3DTevOrder, + (void*)getTevOrder__18J3DTevBlockPatchedFUl, + (void*)setTevColor__18J3DTevBlockPatchedFUlPC13J3DGXColorS10, + (void*)setTevColor__18J3DTevBlockPatchedFUl13J3DGXColorS10, + (void*)getTevColor__18J3DTevBlockPatchedFUl, + (void*)setTevKColor__18J3DTevBlockPatchedFUlPC10J3DGXColor, + (void*)setTevKColor__18J3DTevBlockPatchedFUl10J3DGXColor, + (void*)getTevKColor__18J3DTevBlockPatchedFUl, + (void*)setTevKColorSel__18J3DTevBlockPatchedFUlPCUc, + (void*)setTevKColorSel__18J3DTevBlockPatchedFUlUc, + (void*)getTevKColorSel__18J3DTevBlockPatchedFUl, + (void*)setTevKAlphaSel__11J3DTevBlockFUlPCUc, + (void*)setTevKAlphaSel__11J3DTevBlockFUlUc, + (void*)getTevKAlphaSel__11J3DTevBlockFUl, + (void*)setTevStageNum__18J3DTevBlockPatchedFPCUc, + (void*)setTevStageNum__18J3DTevBlockPatchedFUc, + (void*)getTevStageNum__18J3DTevBlockPatchedCFv, + (void*)setTevStage__18J3DTevBlockPatchedFUlPC11J3DTevStage, + (void*)setTevStage__18J3DTevBlockPatchedFUl11J3DTevStage, + (void*)getTevStage__18J3DTevBlockPatchedFUl, + (void*)setTevSwapModeInfo__11J3DTevBlockFUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__11J3DTevBlockFUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__11J3DTevBlockFUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__11J3DTevBlockFUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__11J3DTevBlockFUl, + (void*)setIndTevStage__18J3DTevBlockPatchedFUlPC14J3DIndTevStage, + (void*)setIndTevStage__18J3DTevBlockPatchedFUl14J3DIndTevStage, + (void*)getIndTevStage__18J3DTevBlockPatchedFUl, + (void*)getTexNoOffset__18J3DTevBlockPatchedCFv, + (void*)getTevRegOffset__18J3DTevBlockPatchedCFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__18J3DTevBlockPatchedFUl, + (void*)__dt__18J3DTevBlockPatchedFv, +}; + +/* 803CE534-803CE5A0 02B654 006C+00 1/1 1/1 0/0 .data __vt__19J3DTexGenBlockBasic */ +SECTION_DATA extern void* __vt__19J3DTexGenBlockBasic[27] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__19J3DTexGenBlockBasicFP14J3DTexGenBlock, + (void*)calc__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)load__19J3DTexGenBlockBasicFv, + (void*)patch__19J3DTexGenBlockBasicFv, + (void*)diff__21J3DTexGenBlockPatchedFUl, + (void*)diffTexMtx__21J3DTexGenBlockPatchedFv, + (void*)diffTexGen__21J3DTexGenBlockPatchedFv, + (void*)countDLSize__19J3DTexGenBlockBasicFv, + (void*)getType__19J3DTexGenBlockBasicFv, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFPCUl, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFUl, + (void*)getTexGenNum__21J3DTexGenBlockPatchedCFv, + (void*)setTexCoord__21J3DTexGenBlockPatchedFUlPC11J3DTexCoord, + (void*)getTexCoord__21J3DTexGenBlockPatchedFUl, + (void*)setTexMtx__21J3DTexGenBlockPatchedFUlP9J3DTexMtx, + (void*)getTexMtx__21J3DTexGenBlockPatchedFUl, + (void*)setNBTScale__19J3DTexGenBlockBasicFPC11J3DNBTScale, + (void*)setNBTScale__19J3DTexGenBlockBasicF11J3DNBTScale, + (void*)getNBTScale__19J3DTexGenBlockBasicFv, + (void*)getTexMtxOffset__21J3DTexGenBlockPatchedCFv, + (void*)setTexMtxOffset__21J3DTexGenBlockPatchedFUl, + (void*)__dt__19J3DTexGenBlockBasicFv, +}; + +/* 803CE5A0-803CE60C 02B6C0 006C+00 1/1 1/1 0/0 .data __vt__15J3DTexGenBlock4 */ +SECTION_DATA extern void* __vt__15J3DTexGenBlock4[27] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__15J3DTexGenBlock4FP14J3DTexGenBlock, + (void*)calc__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)load__15J3DTexGenBlock4Fv, + (void*)patch__15J3DTexGenBlock4Fv, + (void*)diff__21J3DTexGenBlockPatchedFUl, + (void*)diffTexMtx__21J3DTexGenBlockPatchedFv, + (void*)diffTexGen__21J3DTexGenBlockPatchedFv, + (void*)countDLSize__15J3DTexGenBlock4Fv, + (void*)getType__15J3DTexGenBlock4Fv, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFPCUl, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFUl, + (void*)getTexGenNum__21J3DTexGenBlockPatchedCFv, + (void*)setTexCoord__21J3DTexGenBlockPatchedFUlPC11J3DTexCoord, + (void*)getTexCoord__21J3DTexGenBlockPatchedFUl, + (void*)setTexMtx__21J3DTexGenBlockPatchedFUlP9J3DTexMtx, + (void*)getTexMtx__21J3DTexGenBlockPatchedFUl, + (void*)setNBTScale__15J3DTexGenBlock4FPC11J3DNBTScale, + (void*)setNBTScale__15J3DTexGenBlock4F11J3DNBTScale, + (void*)getNBTScale__15J3DTexGenBlock4Fv, + (void*)getTexMtxOffset__21J3DTexGenBlockPatchedCFv, + (void*)setTexMtxOffset__21J3DTexGenBlockPatchedFUl, + (void*)__dt__15J3DTexGenBlock4Fv, +}; + +/* 803CE60C-803CE678 02B72C 006C+00 2/2 3/3 0/0 .data __vt__21J3DTexGenBlockPatched */ +SECTION_DATA extern void* __vt__21J3DTexGenBlockPatched[27] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__21J3DTexGenBlockPatchedFP14J3DTexGenBlock, + (void*)calc__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)calcPostTexMtxWithoutViewMtx__21J3DTexGenBlockPatchedFPA4_Cf, + (void*)load__21J3DTexGenBlockPatchedFv, + (void*)patch__21J3DTexGenBlockPatchedFv, + (void*)diff__21J3DTexGenBlockPatchedFUl, + (void*)diffTexMtx__21J3DTexGenBlockPatchedFv, + (void*)diffTexGen__21J3DTexGenBlockPatchedFv, + (void*)countDLSize__21J3DTexGenBlockPatchedFv, + (void*)getType__21J3DTexGenBlockPatchedFv, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFPCUl, + (void*)setTexGenNum__21J3DTexGenBlockPatchedFUl, + (void*)getTexGenNum__21J3DTexGenBlockPatchedCFv, + (void*)setTexCoord__21J3DTexGenBlockPatchedFUlPC11J3DTexCoord, + (void*)getTexCoord__21J3DTexGenBlockPatchedFUl, + (void*)setTexMtx__21J3DTexGenBlockPatchedFUlP9J3DTexMtx, + (void*)getTexMtx__21J3DTexGenBlockPatchedFUl, + (void*)setNBTScale__14J3DTexGenBlockFPC11J3DNBTScale, + (void*)setNBTScale__14J3DTexGenBlockF11J3DNBTScale, + (void*)getNBTScale__14J3DTexGenBlockFv, + (void*)getTexMtxOffset__21J3DTexGenBlockPatchedCFv, + (void*)setTexMtxOffset__21J3DTexGenBlockPatchedFUl, + (void*)__dt__21J3DTexGenBlockPatchedFv, +}; + +/* 803CE678-803CE708 02B798 0090+00 1/1 1/1 0/0 .data __vt__20J3DColorBlockLightOn */ +SECTION_DATA extern void* __vt__20J3DColorBlockLightOn[36] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__20J3DColorBlockLightOnFv, + (void*)reset__20J3DColorBlockLightOnFP13J3DColorBlock, + (void*)patch__20J3DColorBlockLightOnFv, + (void*)patchMatColor__20J3DColorBlockLightOnFv, + (void*)patchLight__20J3DColorBlockLightOnFv, + (void*)diff__20J3DColorBlockLightOnFUl, + (void*)diffAmbColor__20J3DColorBlockLightOnFv, + (void*)diffMatColor__20J3DColorBlockLightOnFv, + (void*)diffColorChan__20J3DColorBlockLightOnFv, + (void*)diffLightObj__20J3DColorBlockLightOnFUl, + (void*)countDLSize__20J3DColorBlockLightOnFv, + (void*)getType__20J3DColorBlockLightOnFv, + (void*)setMatColor__20J3DColorBlockLightOnFUlPC10J3DGXColor, + (void*)setMatColor__20J3DColorBlockLightOnFUl10J3DGXColor, + (void*)getMatColor__20J3DColorBlockLightOnFUl, + (void*)setAmbColor__20J3DColorBlockLightOnFUlPC10J3DGXColor, + (void*)setAmbColor__20J3DColorBlockLightOnFUl10J3DGXColor, + (void*)getAmbColor__20J3DColorBlockLightOnFUl, + (void*)setColorChanNum__20J3DColorBlockLightOnFUc, + (void*)setColorChanNum__20J3DColorBlockLightOnFPCUc, + (void*)getColorChanNum__20J3DColorBlockLightOnCFv, + (void*)setColorChan__20J3DColorBlockLightOnFUlRC12J3DColorChan, + (void*)setColorChan__20J3DColorBlockLightOnFUlPC12J3DColorChan, + (void*)getColorChan__20J3DColorBlockLightOnFUl, + (void*)setLight__20J3DColorBlockLightOnFUlP11J3DLightObj, + (void*)getLight__20J3DColorBlockLightOnFUl, + (void*)setCullMode__20J3DColorBlockLightOnFPCUc, + (void*)setCullMode__20J3DColorBlockLightOnFUc, + (void*)getCullMode__20J3DColorBlockLightOnCFv, + (void*)getMatColorOffset__20J3DColorBlockLightOnCFv, + (void*)getColorChanOffset__20J3DColorBlockLightOnCFv, + (void*)setMatColorOffset__20J3DColorBlockLightOnFUl, + (void*)setColorChanOffset__20J3DColorBlockLightOnFUl, + (void*)__dt__20J3DColorBlockLightOnFv, +}; + +/* 803CE708-803CE798 02B828 0090+00 1/1 1/1 0/0 .data __vt__22J3DColorBlockAmbientOn */ +SECTION_DATA extern void* __vt__22J3DColorBlockAmbientOn[36] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__22J3DColorBlockAmbientOnFv, + (void*)reset__22J3DColorBlockAmbientOnFP13J3DColorBlock, + (void*)patch__21J3DColorBlockLightOffFv, + (void*)patchMatColor__21J3DColorBlockLightOffFv, + (void*)patchLight__21J3DColorBlockLightOffFv, + (void*)diff__21J3DColorBlockLightOffFUl, + (void*)diffAmbColor__13J3DColorBlockFv, + (void*)diffMatColor__21J3DColorBlockLightOffFv, + (void*)diffColorChan__21J3DColorBlockLightOffFv, + (void*)diffLightObj__13J3DColorBlockFUl, + (void*)countDLSize__22J3DColorBlockAmbientOnFv, + (void*)getType__22J3DColorBlockAmbientOnFv, + (void*)setMatColor__21J3DColorBlockLightOffFUlPC10J3DGXColor, + (void*)setMatColor__21J3DColorBlockLightOffFUl10J3DGXColor, + (void*)getMatColor__21J3DColorBlockLightOffFUl, + (void*)setAmbColor__22J3DColorBlockAmbientOnFUlPC10J3DGXColor, + (void*)setAmbColor__22J3DColorBlockAmbientOnFUl10J3DGXColor, + (void*)getAmbColor__22J3DColorBlockAmbientOnFUl, + (void*)setColorChanNum__21J3DColorBlockLightOffFUc, + (void*)setColorChanNum__21J3DColorBlockLightOffFPCUc, + (void*)getColorChanNum__21J3DColorBlockLightOffCFv, + (void*)setColorChan__21J3DColorBlockLightOffFUlRC12J3DColorChan, + (void*)setColorChan__21J3DColorBlockLightOffFUlPC12J3DColorChan, + (void*)getColorChan__21J3DColorBlockLightOffFUl, + (void*)setLight__13J3DColorBlockFUlP11J3DLightObj, + (void*)getLight__13J3DColorBlockFUl, + (void*)setCullMode__21J3DColorBlockLightOffFPCUc, + (void*)setCullMode__21J3DColorBlockLightOffFUc, + (void*)getCullMode__21J3DColorBlockLightOffCFv, + (void*)getMatColorOffset__21J3DColorBlockLightOffCFv, + (void*)getColorChanOffset__21J3DColorBlockLightOffCFv, + (void*)setMatColorOffset__21J3DColorBlockLightOffFUl, + (void*)setColorChanOffset__21J3DColorBlockLightOffFUl, + (void*)__dt__22J3DColorBlockAmbientOnFv, +}; + +/* 803CE798-803CE814 02B8B8 007C+00 1/1 1/1 0/0 .data __vt__13J3DPEBlockXlu */ +SECTION_DATA extern void* __vt__13J3DPEBlockXlu[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__10J3DPEBlockFP10J3DPEBlock, + (void*)load__13J3DPEBlockXluFv, + (void*)patch__10J3DPEBlockFv, + (void*)diff__10J3DPEBlockFUl, + (void*)diffFog__10J3DPEBlockFv, + (void*)diffBlend__10J3DPEBlockFv, + (void*)countDLSize__13J3DPEBlockXluFv, + (void*)getType__13J3DPEBlockXluFv, + (void*)setFog__10J3DPEBlockF6J3DFog, + (void*)setFog__10J3DPEBlockFP6J3DFog, + (void*)getFog__10J3DPEBlockFv, + (void*)setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp, + (void*)setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp, + (void*)getAlphaComp__10J3DPEBlockFv, + (void*)setBlend__10J3DPEBlockFPC8J3DBlend, + (void*)setBlend__10J3DPEBlockFRC8J3DBlend, + (void*)getBlend__10J3DPEBlockFv, + (void*)setZMode__10J3DPEBlockFPC8J3DZMode, + (void*)setZMode__10J3DPEBlockF8J3DZMode, + (void*)getZMode__10J3DPEBlockFv, + (void*)setZCompLoc__10J3DPEBlockFPCUc, + (void*)setZCompLoc__10J3DPEBlockFUc, + (void*)getZCompLoc__10J3DPEBlockCFv, + (void*)setDither__10J3DPEBlockFPCUc, + (void*)setDither__10J3DPEBlockFUc, + (void*)getDither__10J3DPEBlockCFv, + (void*)getFogOffset__10J3DPEBlockCFv, + (void*)setFogOffset__10J3DPEBlockFUl, + (void*)__dt__13J3DPEBlockXluFv, +}; + +/* 803CE814-803CE890 02B934 007C+00 1/1 1/1 0/0 .data __vt__17J3DPEBlockTexEdge */ +SECTION_DATA extern void* __vt__17J3DPEBlockTexEdge[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__10J3DPEBlockFP10J3DPEBlock, + (void*)load__17J3DPEBlockTexEdgeFv, + (void*)patch__10J3DPEBlockFv, + (void*)diff__10J3DPEBlockFUl, + (void*)diffFog__10J3DPEBlockFv, + (void*)diffBlend__10J3DPEBlockFv, + (void*)countDLSize__17J3DPEBlockTexEdgeFv, + (void*)getType__17J3DPEBlockTexEdgeFv, + (void*)setFog__10J3DPEBlockF6J3DFog, + (void*)setFog__10J3DPEBlockFP6J3DFog, + (void*)getFog__10J3DPEBlockFv, + (void*)setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp, + (void*)setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp, + (void*)getAlphaComp__10J3DPEBlockFv, + (void*)setBlend__10J3DPEBlockFPC8J3DBlend, + (void*)setBlend__10J3DPEBlockFRC8J3DBlend, + (void*)getBlend__10J3DPEBlockFv, + (void*)setZMode__10J3DPEBlockFPC8J3DZMode, + (void*)setZMode__10J3DPEBlockF8J3DZMode, + (void*)getZMode__10J3DPEBlockFv, + (void*)setZCompLoc__10J3DPEBlockFPCUc, + (void*)setZCompLoc__10J3DPEBlockFUc, + (void*)getZCompLoc__10J3DPEBlockCFv, + (void*)setDither__10J3DPEBlockFPCUc, + (void*)setDither__10J3DPEBlockFUc, + (void*)getDither__10J3DPEBlockCFv, + (void*)getFogOffset__10J3DPEBlockCFv, + (void*)setFogOffset__10J3DPEBlockFUl, + (void*)__dt__17J3DPEBlockTexEdgeFv, +}; + +/* 803CE890-803CE90C 02B9B0 007C+00 1/1 1/1 0/0 .data __vt__13J3DPEBlockOpa */ +SECTION_DATA extern void* __vt__13J3DPEBlockOpa[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__10J3DPEBlockFP10J3DPEBlock, + (void*)load__13J3DPEBlockOpaFv, + (void*)patch__10J3DPEBlockFv, + (void*)diff__10J3DPEBlockFUl, + (void*)diffFog__10J3DPEBlockFv, + (void*)diffBlend__10J3DPEBlockFv, + (void*)countDLSize__13J3DPEBlockOpaFv, + (void*)getType__13J3DPEBlockOpaFv, + (void*)setFog__10J3DPEBlockF6J3DFog, + (void*)setFog__10J3DPEBlockFP6J3DFog, + (void*)getFog__10J3DPEBlockFv, + (void*)setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp, + (void*)setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp, + (void*)getAlphaComp__10J3DPEBlockFv, + (void*)setBlend__10J3DPEBlockFPC8J3DBlend, + (void*)setBlend__10J3DPEBlockFRC8J3DBlend, + (void*)getBlend__10J3DPEBlockFv, + (void*)setZMode__10J3DPEBlockFPC8J3DZMode, + (void*)setZMode__10J3DPEBlockF8J3DZMode, + (void*)getZMode__10J3DPEBlockFv, + (void*)setZCompLoc__10J3DPEBlockFPCUc, + (void*)setZCompLoc__10J3DPEBlockFUc, + (void*)getZCompLoc__10J3DPEBlockCFv, + (void*)setDither__10J3DPEBlockFPCUc, + (void*)setDither__10J3DPEBlockFUc, + (void*)getDither__10J3DPEBlockCFv, + (void*)getFogOffset__10J3DPEBlockCFv, + (void*)setFogOffset__10J3DPEBlockFUl, + (void*)__dt__13J3DPEBlockOpaFv, +}; + +/* 803CE90C-803CE958 02BA2C 004C+00 1/1 1/1 0/0 .data __vt__15J3DIndBlockFull */ +SECTION_DATA extern void* __vt__15J3DIndBlockFull[19] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__15J3DIndBlockFullFP11J3DIndBlock, + (void*)diff__15J3DIndBlockFullFUl, + (void*)load__15J3DIndBlockFullFv, + (void*)countDLSize__15J3DIndBlockFullFv, + (void*)getType__15J3DIndBlockFullFv, + (void*)setIndTexStageNum__15J3DIndBlockFullFUc, + (void*)getIndTexStageNum__15J3DIndBlockFullCFv, + (void*)setIndTexOrder__15J3DIndBlockFullFUl14J3DIndTexOrder, + (void*)setIndTexOrder__15J3DIndBlockFullFUlPC14J3DIndTexOrder, + (void*)getIndTexOrder__15J3DIndBlockFullFUl, + (void*)setIndTexMtx__15J3DIndBlockFullFUlPC12J3DIndTexMtx, + (void*)setIndTexMtx__15J3DIndBlockFullFUl12J3DIndTexMtx, + (void*)getIndTexMtx__15J3DIndBlockFullFUl, + (void*)setIndTexCoordScale__15J3DIndBlockFullFUlPC19J3DIndTexCoordScale, + (void*)setIndTexCoordScale__15J3DIndBlockFullFUl19J3DIndTexCoordScale, + (void*)getIndTexCoordScale__15J3DIndBlockFullFUl, + (void*)__dt__15J3DIndBlockFullFv, +}; + +/* 803CE958-803CEA34 02BA78 00DC+00 5/5 5/5 0/0 .data __vt__11J3DTevBlock */ +SECTION_DATA extern void* __vt__11J3DTevBlock[55] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__11J3DTevBlockFP11J3DTevBlock, + (void*)load__11J3DTevBlockFv, + (void*)diff__11J3DTevBlockFUl, + (void*)diffTexNo__11J3DTevBlockFv, + (void*)diffTevReg__11J3DTevBlockFv, + (void*)diffTexCoordScale__11J3DTevBlockFv, + (void*)diffTevStage__11J3DTevBlockFv, + (void*)diffTevStageIndirect__11J3DTevBlockFv, + (void*)patch__11J3DTevBlockFv, + (void*)patchTexNo__11J3DTevBlockFv, + (void*)patchTevReg__11J3DTevBlockFv, + (void*)patchTexNoAndTexCoordScale__11J3DTevBlockFv, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)countDLSize__11J3DTevBlockFv, + (void*)setTexNo__11J3DTevBlockFUlPCUs, + (void*)setTexNo__11J3DTevBlockFUlUs, + (void*)getTexNo__11J3DTevBlockCFUl, + (void*)setTevOrder__11J3DTevBlockFUlPC11J3DTevOrder, + (void*)setTevOrder__11J3DTevBlockFUl11J3DTevOrder, + (void*)getTevOrder__11J3DTevBlockFUl, + (void*)setTevColor__11J3DTevBlockFUlPC13J3DGXColorS10, + (void*)setTevColor__11J3DTevBlockFUl13J3DGXColorS10, + (void*)getTevColor__11J3DTevBlockFUl, + (void*)setTevKColor__11J3DTevBlockFUlPC10J3DGXColor, + (void*)setTevKColor__11J3DTevBlockFUl10J3DGXColor, + (void*)getTevKColor__11J3DTevBlockFUl, + (void*)setTevKColorSel__11J3DTevBlockFUlPCUc, + (void*)setTevKColorSel__11J3DTevBlockFUlUc, + (void*)getTevKColorSel__11J3DTevBlockFUl, + (void*)setTevKAlphaSel__11J3DTevBlockFUlPCUc, + (void*)setTevKAlphaSel__11J3DTevBlockFUlUc, + (void*)getTevKAlphaSel__11J3DTevBlockFUl, + (void*)setTevStageNum__11J3DTevBlockFPCUc, + (void*)setTevStageNum__11J3DTevBlockFUc, + (void*)getTevStageNum__11J3DTevBlockCFv, + (void*)setTevStage__11J3DTevBlockFUlPC11J3DTevStage, + (void*)setTevStage__11J3DTevBlockFUl11J3DTevStage, + (void*)getTevStage__11J3DTevBlockFUl, + (void*)setTevSwapModeInfo__11J3DTevBlockFUlPC18J3DTevSwapModeInfo, + (void*)setTevSwapModeInfo__11J3DTevBlockFUl18J3DTevSwapModeInfo, + (void*)setTevSwapModeTable__11J3DTevBlockFUlPC19J3DTevSwapModeTable, + (void*)setTevSwapModeTable__11J3DTevBlockFUl19J3DTevSwapModeTable, + (void*)getTevSwapModeTable__11J3DTevBlockFUl, + (void*)setIndTevStage__11J3DTevBlockFUlPC14J3DIndTevStage, + (void*)setIndTevStage__11J3DTevBlockFUl14J3DIndTevStage, + (void*)getIndTevStage__11J3DTevBlockFUl, + (void*)getTexNoOffset__11J3DTevBlockCFv, + (void*)getTevRegOffset__11J3DTevBlockCFv, + (void*)setTexNoOffset__11J3DTevBlockFUl, + (void*)setTevRegOffset__11J3DTevBlockFUl, + (void*)__dt__11J3DTevBlockFv, +}; + +/* 80321F84-80321FE0 31C8C4 005C+00 1/0 0/0 0/0 .text __dt__13J3DTevBlock16Fv */ +J3DTevBlock16::~J3DTevBlock16() { + // NONMATCHING +} + +/* 80321FE0-80321FE8 -00001 0008+00 0/0 0/0 0/0 .text setTexNoOffset__11J3DTevBlockFUl */ +void J3DTevBlock::setTexNoOffset(u32 param_0) { + *(u32*)(((u8*)this) + 4) /* this->field_0x4 */ = (u32)(param_0); +} + +/* 80321FE8-80321FEC 31C928 0004+00 1/0 0/0 0/0 .text ptrToIndex__12J3DTevBlock4Fv */ +void J3DTevBlock4::ptrToIndex() { + /* empty function */ +} + +/* 80321FEC-80322010 31C92C 0024+00 1/0 0/0 0/0 .text indexToPtr__12J3DTevBlock4Fv */ +void J3DTevBlock4::indexToPtr() { + // NONMATCHING +} + +/* 80322010-8032201C 31C950 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock4Fv */ +u32 J3DTevBlock4::getType() { + return 'TVB4'; +} + +/* 8032201C-8032202C 31C95C 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock4FUlUs */ +void J3DTevBlock4::setTexNo(u32 param_0, u16 param_1) { + // NONMATCHING +} + +/* 8032202C-80322040 31C96C 0014+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock4FUlPCUs */ +void J3DTevBlock4::setTexNo(u32 param_0, u16 const* param_1) { + // NONMATCHING +} + +/* 80322040-80322050 31C980 0010+00 1/0 0/0 0/0 .text getTexNo__12J3DTevBlock4CFUl */ +u16 J3DTevBlock4::getTexNo(u32 param_0) const { + // NONMATCHING +} + +/* 80322050-80322064 31C990 0014+00 1/0 0/0 0/0 .text setTevOrder__12J3DTevBlock4FUl11J3DTevOrder + */ +void J3DTevBlock4::setTevOrder(u32 param_0, J3DTevOrder param_1) { + // NONMATCHING +} + +/* 80322064-80322078 31C9A4 0014+00 1/0 0/0 0/0 .text + * setTevOrder__12J3DTevBlock4FUlPC11J3DTevOrder */ +void J3DTevBlock4::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { + // NONMATCHING +} + +/* 80322078-8032208C 31C9B8 0014+00 1/0 0/0 0/0 .text getTevOrder__12J3DTevBlock4FUl */ +J3DTevOrder* J3DTevBlock4::getTevOrder(u32 param_0) { + // NONMATCHING +} + +/* 8032208C-803220B8 31C9CC 002C+00 1/0 0/0 0/0 .text + * setTevColor__12J3DTevBlock4FUl13J3DGXColorS10 */ +void J3DTevBlock4::setTevColor(u32 param_0, J3DGXColorS10 param_1) { + // NONMATCHING +} + +/* 803220B8-803220E4 31C9F8 002C+00 1/0 0/0 0/0 .text + * setTevColor__12J3DTevBlock4FUlPC13J3DGXColorS10 */ +void J3DTevBlock4::setTevColor(u32 param_0, J3DGXColorS10 const* param_1) { + // NONMATCHING +} + +/* 803220E4-803220F8 31CA24 0014+00 1/0 0/0 0/0 .text getTevColor__12J3DTevBlock4FUl */ +J3DGXColorS10* J3DTevBlock4::getTevColor(u32 param_0) { + // NONMATCHING +} + +/* 803220F8-80322124 31CA38 002C+00 1/0 0/0 0/0 .text setTevKColor__12J3DTevBlock4FUl10J3DGXColor + */ +void J3DTevBlock4::setTevKColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 80322124-80322150 31CA64 002C+00 1/0 0/0 0/0 .text + * setTevKColor__12J3DTevBlock4FUlPC10J3DGXColor */ +void J3DTevBlock4::setTevKColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80322150-80322164 31CA90 0014+00 1/0 0/0 0/0 .text getTevKColor__12J3DTevBlock4FUl */ +J3DGXColor* J3DTevBlock4::getTevKColor(u32 param_0) { + // NONMATCHING +} + +/* 80322164-80322170 31CAA4 000C+00 1/0 0/0 0/0 .text setTevKColorSel__12J3DTevBlock4FUlUc */ +void J3DTevBlock4::setTevKColorSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80322170-80322180 31CAB0 0010+00 1/0 0/0 0/0 .text setTevKColorSel__12J3DTevBlock4FUlPCUc */ +void J3DTevBlock4::setTevKColorSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 80322180-8032218C 31CAC0 000C+00 1/0 0/0 0/0 .text getTevKColorSel__12J3DTevBlock4FUl + */ +bool J3DTevBlock4::getTevKColorSel(u32 param_0) { + // NONMATCHING +} + +/* 8032218C-80322198 31CACC 000C+00 1/0 0/0 0/0 .text setTevKAlphaSel__12J3DTevBlock4FUlUc */ +void J3DTevBlock4::setTevKAlphaSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80322198-803221A8 31CAD8 0010+00 1/0 0/0 0/0 .text setTevKAlphaSel__12J3DTevBlock4FUlPCUc */ +void J3DTevBlock4::setTevKAlphaSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 803221A8-803221B4 31CAE8 000C+00 1/0 0/0 0/0 .text getTevKAlphaSel__12J3DTevBlock4FUl + */ +bool J3DTevBlock4::getTevKAlphaSel(u32 param_0) { + // NONMATCHING +} + +/* 803221B4-803221BC -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock4FUc + */ +void J3DTevBlock4::setTevStageNum(u8 param_0) { + *(u8*)(((u8*)this) + 32) /* this->field_0x20 */ = (u8)(param_0); +} + +/* 803221BC-803221C8 31CAFC 000C+00 1/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock4FPCUc + */ +void J3DTevBlock4::setTevStageNum(u8 const* param_0) { + // NONMATCHING +} + +/* 803221C8-803221D0 31CB08 0008+00 1/0 0/0 0/0 .text getTevStageNum__12J3DTevBlock4CFv + */ +u8 J3DTevBlock4::getTevStageNum() const { + // NONMATCHING +} + +/* 803221D0-8032220C 31CB10 003C+00 1/0 0/0 0/0 .text setTevStage__12J3DTevBlock4FUl11J3DTevStage + */ +void J3DTevBlock4::setTevStage(u32 param_0, J3DTevStage param_1) { + // NONMATCHING +} + +/* 8032220C-80322248 31CB4C 003C+00 1/0 0/0 0/0 .text + * setTevStage__12J3DTevBlock4FUlPC11J3DTevStage */ +void J3DTevBlock4::setTevStage(u32 param_0, J3DTevStage const* param_1) { + // NONMATCHING +} + +/* 80322248-8032225C 31CB88 0014+00 1/0 0/0 0/0 .text getTevStage__12J3DTevBlock4FUl */ +J3DTevStage* J3DTevBlock4::getTevStage(u32 param_0) { + // NONMATCHING +} + +/* 8032225C-80322294 31CB9C 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__12J3DTevBlock4FUl18J3DTevSwapModeInfo */ +void J3DTevBlock4::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo param_1) { + // NONMATCHING +} + +/* 80322294-803222CC 31CBD4 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__12J3DTevBlock4FUlPC18J3DTevSwapModeInfo */ +void J3DTevBlock4::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo const* param_1) { + // NONMATCHING +} + +/* 803222CC-803222DC 31CC0C 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__12J3DTevBlock4FUl19J3DTevSwapModeTable */ +void J3DTevBlock4::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable param_1) { + // NONMATCHING +} + +/* 803222DC-803222EC 31CC1C 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__12J3DTevBlock4FUlPC19J3DTevSwapModeTable */ +void J3DTevBlock4::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable const* param_1) { + // NONMATCHING +} + +/* 803222EC-803222FC 31CC2C 0010+00 1/0 0/0 0/0 .text getTevSwapModeTable__12J3DTevBlock4FUl */ +J3DTevSwapModeTable* J3DTevBlock4::getTevSwapModeTable(u32 param_0) { + // NONMATCHING +} + +/* 803222FC-80322310 31CC3C 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock4FUl14J3DIndTevStage */ +void J3DTevBlock4::setIndTevStage(u32 param_0, J3DIndTevStage param_1) { + // NONMATCHING +} + +/* 80322310-80322324 31CC50 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock4FUlPC14J3DIndTevStage */ +void J3DTevBlock4::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { + // NONMATCHING +} + +/* 80322324-80322338 31CC64 0014+00 1/0 0/0 0/0 .text getIndTevStage__12J3DTevBlock4FUl + */ +J3DIndTevStage* J3DTevBlock4::getIndTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80322338-80322340 31CC78 0008+00 1/0 0/0 0/0 .text getTexNoOffset__12J3DTevBlock4CFv + */ +u32 J3DTevBlock4::getTexNoOffset() const { + // NONMATCHING +} + +/* 80322340-80322348 31CC80 0008+00 1/0 0/0 0/0 .text getTevRegOffset__12J3DTevBlock4CFv + */ +bool J3DTevBlock4::getTevRegOffset() const { + // NONMATCHING +} + +/* 80322348-80322350 -00001 0008+00 0/0 0/0 0/0 .text setTevRegOffset__12J3DTevBlock4FUl + */ +void J3DTevBlock4::setTevRegOffset(u32 param_0) { + *(u32*)(((u8*)this) + 144) /* this->field_0x90 */ = (u32)(param_0); +} + +/* 80322350-803223AC 31CC90 005C+00 1/0 0/0 0/0 .text __dt__12J3DTevBlock4Fv */ +J3DTevBlock4::~J3DTevBlock4() { + // NONMATCHING +} + +/* 803223AC-803223B0 31CCEC 0004+00 1/0 0/0 0/0 .text ptrToIndex__12J3DTevBlock2Fv */ +void J3DTevBlock2::ptrToIndex() { + /* empty function */ +} + +/* 803223B0-803223D4 31CCF0 0024+00 1/0 0/0 0/0 .text indexToPtr__12J3DTevBlock2Fv */ +void J3DTevBlock2::indexToPtr() { + // NONMATCHING +} + +/* 803223D4-803223E0 31CD14 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock2Fv */ +u32 J3DTevBlock2::getType() { + return 'TVB2'; +} + +/* 803223E0-803223F0 31CD20 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock2FUlUs */ +void J3DTevBlock2::setTexNo(u32 param_0, u16 param_1) { + // NONMATCHING +} + +/* 803223F0-80322404 31CD30 0014+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock2FUlPCUs */ +void J3DTevBlock2::setTexNo(u32 param_0, u16 const* param_1) { + // NONMATCHING +} + +/* 80322404-80322414 31CD44 0010+00 1/0 0/0 0/0 .text getTexNo__12J3DTevBlock2CFUl */ +u16 J3DTevBlock2::getTexNo(u32 param_0) const { + // NONMATCHING +} + +/* 80322414-80322428 31CD54 0014+00 1/0 0/0 0/0 .text setTevOrder__12J3DTevBlock2FUl11J3DTevOrder + */ +void J3DTevBlock2::setTevOrder(u32 param_0, J3DTevOrder param_1) { + // NONMATCHING +} + +/* 80322428-8032243C 31CD68 0014+00 1/0 0/0 0/0 .text + * setTevOrder__12J3DTevBlock2FUlPC11J3DTevOrder */ +void J3DTevBlock2::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { + // NONMATCHING +} + +/* 8032243C-80322450 31CD7C 0014+00 1/0 0/0 0/0 .text getTevOrder__12J3DTevBlock2FUl */ +J3DTevOrder* J3DTevBlock2::getTevOrder(u32 param_0) { + // NONMATCHING +} + +/* 80322450-8032247C 31CD90 002C+00 1/0 0/0 0/0 .text + * setTevColor__12J3DTevBlock2FUl13J3DGXColorS10 */ +void J3DTevBlock2::setTevColor(u32 param_0, J3DGXColorS10 param_1) { + // NONMATCHING +} + +/* 8032247C-803224A8 31CDBC 002C+00 1/0 0/0 0/0 .text + * setTevColor__12J3DTevBlock2FUlPC13J3DGXColorS10 */ +void J3DTevBlock2::setTevColor(u32 param_0, J3DGXColorS10 const* param_1) { + // NONMATCHING +} + +/* 803224A8-803224BC 31CDE8 0014+00 1/0 0/0 0/0 .text getTevColor__12J3DTevBlock2FUl */ +J3DGXColorS10* J3DTevBlock2::getTevColor(u32 param_0) { + // NONMATCHING +} + +/* 803224BC-803224E8 31CDFC 002C+00 1/0 0/0 0/0 .text setTevKColor__12J3DTevBlock2FUl10J3DGXColor + */ +void J3DTevBlock2::setTevKColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 803224E8-80322514 31CE28 002C+00 1/0 0/0 0/0 .text + * setTevKColor__12J3DTevBlock2FUlPC10J3DGXColor */ +void J3DTevBlock2::setTevKColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80322514-80322528 31CE54 0014+00 1/0 0/0 0/0 .text getTevKColor__12J3DTevBlock2FUl */ +J3DGXColor* J3DTevBlock2::getTevKColor(u32 param_0) { + // NONMATCHING +} + +/* 80322528-80322534 31CE68 000C+00 1/0 0/0 0/0 .text setTevKColorSel__12J3DTevBlock2FUlUc */ +void J3DTevBlock2::setTevKColorSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80322534-80322544 31CE74 0010+00 1/0 0/0 0/0 .text setTevKColorSel__12J3DTevBlock2FUlPCUc */ +void J3DTevBlock2::setTevKColorSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 80322544-80322550 31CE84 000C+00 1/0 0/0 0/0 .text getTevKColorSel__12J3DTevBlock2FUl + */ +bool J3DTevBlock2::getTevKColorSel(u32 param_0) { + // NONMATCHING +} + +/* 80322550-8032255C 31CE90 000C+00 1/0 0/0 0/0 .text setTevKAlphaSel__12J3DTevBlock2FUlUc */ +void J3DTevBlock2::setTevKAlphaSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 8032255C-8032256C 31CE9C 0010+00 1/0 0/0 0/0 .text setTevKAlphaSel__12J3DTevBlock2FUlPCUc */ +void J3DTevBlock2::setTevKAlphaSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 8032256C-80322578 31CEAC 000C+00 1/0 0/0 0/0 .text getTevKAlphaSel__12J3DTevBlock2FUl + */ +bool J3DTevBlock2::getTevKAlphaSel(u32 param_0) { + // NONMATCHING +} + +/* 80322578-80322580 -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock2FUc + */ +void J3DTevBlock2::setTevStageNum(u8 param_0) { + *(u8*)(((u8*)this) + 52) /* this->field_0x34 */ = (u8)(param_0); +} + +/* 80322580-8032258C 31CEC0 000C+00 1/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock2FPCUc + */ +void J3DTevBlock2::setTevStageNum(u8 const* param_0) { + // NONMATCHING +} + +/* 8032258C-80322594 31CECC 0008+00 1/0 0/0 0/0 .text getTevStageNum__12J3DTevBlock2CFv + */ +u8 J3DTevBlock2::getTevStageNum() const { + // NONMATCHING +} + +/* 80322594-803225D0 31CED4 003C+00 1/0 0/0 0/0 .text setTevStage__12J3DTevBlock2FUl11J3DTevStage + */ +void J3DTevBlock2::setTevStage(u32 param_0, J3DTevStage param_1) { + // NONMATCHING +} + +/* 803225D0-8032260C 31CF10 003C+00 1/0 0/0 0/0 .text + * setTevStage__12J3DTevBlock2FUlPC11J3DTevStage */ +void J3DTevBlock2::setTevStage(u32 param_0, J3DTevStage const* param_1) { + // NONMATCHING +} + +/* 8032260C-80322620 31CF4C 0014+00 1/0 0/0 0/0 .text getTevStage__12J3DTevBlock2FUl */ +J3DTevStage* J3DTevBlock2::getTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80322620-80322658 31CF60 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__12J3DTevBlock2FUl18J3DTevSwapModeInfo */ +void J3DTevBlock2::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo param_1) { + // NONMATCHING +} + +/* 80322658-80322690 31CF98 0038+00 1/0 0/0 0/0 .text + * setTevSwapModeInfo__12J3DTevBlock2FUlPC18J3DTevSwapModeInfo */ +void J3DTevBlock2::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo const* param_1) { + // NONMATCHING +} + +/* 80322690-803226A0 31CFD0 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__12J3DTevBlock2FUl19J3DTevSwapModeTable */ +void J3DTevBlock2::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable param_1) { + // NONMATCHING +} + +/* 803226A0-803226B0 31CFE0 0010+00 1/0 0/0 0/0 .text + * setTevSwapModeTable__12J3DTevBlock2FUlPC19J3DTevSwapModeTable */ +void J3DTevBlock2::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable const* param_1) { + // NONMATCHING +} + +/* 803226B0-803226C0 31CFF0 0010+00 1/0 0/0 0/0 .text getTevSwapModeTable__12J3DTevBlock2FUl */ +J3DTevSwapModeTable* J3DTevBlock2::getTevSwapModeTable(u32 param_0) { + // NONMATCHING +} + +/* 803226C0-803226D4 31D000 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock2FUl14J3DIndTevStage */ +void J3DTevBlock2::setIndTevStage(u32 param_0, J3DIndTevStage param_1) { + // NONMATCHING +} + +/* 803226D4-803226E8 31D014 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock2FUlPC14J3DIndTevStage */ +void J3DTevBlock2::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { + // NONMATCHING +} + +/* 803226E8-803226FC 31D028 0014+00 1/0 0/0 0/0 .text getIndTevStage__12J3DTevBlock2FUl + */ +J3DIndTevStage* J3DTevBlock2::getIndTevStage(u32 param_0) { + // NONMATCHING +} + +/* 803226FC-80322704 31D03C 0008+00 1/0 0/0 0/0 .text getTexNoOffset__12J3DTevBlock2CFv + */ +u32 J3DTevBlock2::getTexNoOffset() const { + // NONMATCHING +} + +/* 80322704-8032270C 31D044 0008+00 1/0 0/0 0/0 .text getTevRegOffset__12J3DTevBlock2CFv + */ +bool J3DTevBlock2::getTevRegOffset() const { + // NONMATCHING +} + +/* 8032270C-80322714 -00001 0008+00 0/0 0/0 0/0 .text setTevRegOffset__12J3DTevBlock2FUl + */ +void J3DTevBlock2::setTevRegOffset(u32 param_0) { + *(u32*)(((u8*)this) + 104) /* this->field_0x68 */ = (u32)(param_0); +} + +/* 80322714-80322770 31D054 005C+00 1/0 0/0 0/0 .text __dt__12J3DTevBlock2Fv */ +J3DTevBlock2::~J3DTevBlock2() { + // NONMATCHING +} + +/* 80322770-80322774 31D0B0 0004+00 1/0 0/0 0/0 .text ptrToIndex__12J3DTevBlock1Fv */ +void J3DTevBlock1::ptrToIndex() { + /* empty function */ +} + +/* 80322774-80322798 31D0B4 0024+00 1/0 0/0 0/0 .text indexToPtr__12J3DTevBlock1Fv */ +void J3DTevBlock1::indexToPtr() { + // NONMATCHING +} + +/* 80322798-803227A4 31D0D8 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock1Fv */ +u32 J3DTevBlock1::getType() { + return 'TVB1'; +} + +/* 803227A4-803227B4 31D0E4 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock1FUlUs */ +void J3DTevBlock1::setTexNo(u32 param_0, u16 param_1) { + // NONMATCHING +} + +/* 803227B4-803227C8 31D0F4 0014+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock1FUlPCUs */ +void J3DTevBlock1::setTexNo(u32 param_0, u16 const* param_1) { + // NONMATCHING +} + +/* 803227C8-803227D8 31D108 0010+00 1/0 0/0 0/0 .text getTexNo__12J3DTevBlock1CFUl */ +u16 J3DTevBlock1::getTexNo(u32 param_0) const { + // NONMATCHING +} + +/* 803227D8-803227EC 31D118 0014+00 1/0 0/0 0/0 .text setTevOrder__12J3DTevBlock1FUl11J3DTevOrder + */ +void J3DTevBlock1::setTevOrder(u32 param_0, J3DTevOrder param_1) { + // NONMATCHING +} + +/* 803227EC-80322800 31D12C 0014+00 1/0 0/0 0/0 .text + * setTevOrder__12J3DTevBlock1FUlPC11J3DTevOrder */ +void J3DTevBlock1::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { + // NONMATCHING +} + +/* 80322800-80322814 31D140 0014+00 1/0 0/0 0/0 .text getTevOrder__12J3DTevBlock1FUl */ +J3DTevOrder* J3DTevBlock1::getTevOrder(u32 param_0) { + // NONMATCHING +} + +/* 80322814-80322818 31D154 0004+00 1/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock1FUc + */ +void J3DTevBlock1::setTevStageNum(u8 param_0) { + /* empty function */ +} + +/* 80322818-8032281C 31D158 0004+00 1/0 0/0 0/0 .text setTevStageNum__12J3DTevBlock1FPCUc + */ +void J3DTevBlock1::setTevStageNum(u8 const* param_0) { + /* empty function */ +} + +/* 8032281C-80322824 31D15C 0008+00 1/0 0/0 0/0 .text getTevStageNum__12J3DTevBlock1CFv + */ +u8 J3DTevBlock1::getTevStageNum() const { + return true; +} + +/* 80322824-80322860 31D164 003C+00 1/0 0/0 0/0 .text setTevStage__12J3DTevBlock1FUl11J3DTevStage + */ +void J3DTevBlock1::setTevStage(u32 param_0, J3DTevStage param_1) { + // NONMATCHING +} + +/* 80322860-8032289C 31D1A0 003C+00 1/0 0/0 0/0 .text + * setTevStage__12J3DTevBlock1FUlPC11J3DTevStage */ +void J3DTevBlock1::setTevStage(u32 param_0, J3DTevStage const* param_1) { + // NONMATCHING +} + +/* 8032289C-803228B0 31D1DC 0014+00 1/0 0/0 0/0 .text getTevStage__12J3DTevBlock1FUl */ +J3DTevStage* J3DTevBlock1::getTevStage(u32 param_0) { + // NONMATCHING +} + +/* 803228B0-803228C4 31D1F0 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock1FUl14J3DIndTevStage */ +void J3DTevBlock1::setIndTevStage(u32 param_0, J3DIndTevStage param_1) { + // NONMATCHING +} + +/* 803228C4-803228D8 31D204 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__12J3DTevBlock1FUlPC14J3DIndTevStage */ +void J3DTevBlock1::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { + // NONMATCHING +} + +/* 803228D8-803228EC 31D218 0014+00 1/0 0/0 0/0 .text getIndTevStage__12J3DTevBlock1FUl + */ +J3DIndTevStage* J3DTevBlock1::getIndTevStage(u32 param_0) { + // NONMATCHING +} + +/* 803228EC-803228F4 31D22C 0008+00 1/0 0/0 0/0 .text getTexNoOffset__12J3DTevBlock1CFv + */ +u32 J3DTevBlock1::getTexNoOffset() const { + // NONMATCHING +} + +/* 803228F4-80322950 31D234 005C+00 1/0 0/0 0/0 .text __dt__12J3DTevBlock1Fv */ +J3DTevBlock1::~J3DTevBlock1() { + // NONMATCHING +} + +/* 80322950-80322954 31D290 0004+00 2/0 1/0 0/0 .text setTevKColorSel__11J3DTevBlockFUlPCUc */ +void J3DTevBlock::setTevKColorSel(u32 param_0, u8 const* param_1) { + /* empty function */ +} + +/* 80322954-80322958 31D294 0004+00 3/0 1/0 0/0 .text setTevKAlphaSel__11J3DTevBlockFUlPCUc */ +void J3DTevBlock::setTevKAlphaSel(u32 param_0, u8 const* param_1) { + /* empty function */ +} + +/* 80322958-8032295C 31D298 0004+00 3/0 1/0 0/0 .text + * setTevSwapModeInfo__11J3DTevBlockFUl18J3DTevSwapModeInfo */ +void J3DTevBlock::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo param_1) { + /* empty function */ +} + +/* 8032295C-80322960 31D29C 0004+00 3/0 1/0 0/0 .text + * setTevSwapModeInfo__11J3DTevBlockFUlPC18J3DTevSwapModeInfo */ +void J3DTevBlock::setTevSwapModeInfo(u32 param_0, J3DTevSwapModeInfo const* param_1) { + /* empty function */ +} + +/* 80322960-80322964 31D2A0 0004+00 3/0 1/0 0/0 .text + * setTevSwapModeTable__11J3DTevBlockFUlPC19J3DTevSwapModeTable */ +void J3DTevBlock::setTevSwapModeTable(u32 param_0, J3DTevSwapModeTable const* param_1) { + /* empty function */ +} + +/* 80322964-8032296C 31D2A4 0008+00 2/0 1/0 0/0 .text getTevRegOffset__11J3DTevBlockCFv + */ +bool J3DTevBlock::getTevRegOffset() const { + return false; +} + +/* 8032296C-80322970 31D2AC 0004+00 2/0 1/0 0/0 .text setTevRegOffset__11J3DTevBlockFUl + */ +void J3DTevBlock::setTevRegOffset(u32 param_0) { + /* empty function */ +} + +/* 80322970-80322974 31D2B0 0004+00 1/0 0/0 0/0 .text load__18J3DTevBlockPatchedFv */ +void J3DTevBlockPatched::load() { + /* empty function */ +} + +/* 80322974-80322998 31D2B4 0024+00 1/0 0/0 0/0 .text indexToPtr__18J3DTevBlockPatchedFv + */ +void J3DTevBlockPatched::indexToPtr() { + // NONMATCHING +} + +/* 80322998-803229A4 31D2D8 000C+00 1/0 0/0 0/0 .text getType__18J3DTevBlockPatchedFv */ +u32 J3DTevBlockPatched::getType() { + return 'TVPT'; +} + +/* 803229A4-803229AC -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__18J3DTevBlockPatchedFUc */ +void J3DTevBlockPatched::setTevStageNum(u8 param_0) { + *(u8*)(((u8*)this) + 208) /* this->field_0xd0 */ = (u8)(param_0); +} + +/* 803229AC-803229B8 31D2EC 000C+00 1/0 0/0 0/0 .text setTevStageNum__18J3DTevBlockPatchedFPCUc */ +void J3DTevBlockPatched::setTevStageNum(u8 const* param_0) { + // NONMATCHING +} + +/* 803229B8-803229C0 31D2F8 0008+00 1/0 0/0 0/0 .text getTevStageNum__18J3DTevBlockPatchedCFv */ +u8 J3DTevBlockPatched::getTevStageNum() const { + // NONMATCHING +} + +/* 803229C0-803229D0 31D300 0010+00 1/0 0/0 0/0 .text setTexNo__18J3DTevBlockPatchedFUlUs + */ +void J3DTevBlockPatched::setTexNo(u32 param_0, u16 param_1) { + // NONMATCHING +} + +/* 803229D0-803229E4 31D310 0014+00 1/0 0/0 0/0 .text setTexNo__18J3DTevBlockPatchedFUlPCUs */ +void J3DTevBlockPatched::setTexNo(u32 param_0, u16 const* param_1) { + // NONMATCHING +} + +/* 803229E4-803229F4 31D324 0010+00 1/0 0/0 0/0 .text getTexNo__18J3DTevBlockPatchedCFUl + */ +u16 J3DTevBlockPatched::getTexNo(u32 param_0) const { + // NONMATCHING +} + +/* 803229F4-80322A08 31D334 0014+00 1/0 0/0 0/0 .text + * setTevOrder__18J3DTevBlockPatchedFUl11J3DTevOrder */ +void J3DTevBlockPatched::setTevOrder(u32 param_0, J3DTevOrder param_1) { + // NONMATCHING +} + +/* 80322A08-80322A1C 31D348 0014+00 1/0 0/0 0/0 .text + * setTevOrder__18J3DTevBlockPatchedFUlPC11J3DTevOrder */ +void J3DTevBlockPatched::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { + // NONMATCHING +} + +/* 80322A1C-80322A30 31D35C 0014+00 1/0 0/0 0/0 .text getTevOrder__18J3DTevBlockPatchedFUl */ +J3DTevOrder* J3DTevBlockPatched::getTevOrder(u32 param_0) { + // NONMATCHING +} + +/* 80322A30-80322A6C 31D370 003C+00 1/0 0/0 0/0 .text + * setTevStage__18J3DTevBlockPatchedFUl11J3DTevStage */ +void J3DTevBlockPatched::setTevStage(u32 param_0, J3DTevStage param_1) { + // NONMATCHING +} + +/* 80322A6C-80322AA8 31D3AC 003C+00 1/0 0/0 0/0 .text + * setTevStage__18J3DTevBlockPatchedFUlPC11J3DTevStage */ +void J3DTevBlockPatched::setTevStage(u32 param_0, J3DTevStage const* param_1) { + // NONMATCHING +} + +/* 80322AA8-80322ABC 31D3E8 0014+00 1/0 0/0 0/0 .text getTevStage__18J3DTevBlockPatchedFUl */ +J3DTevStage* J3DTevBlockPatched::getTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80322ABC-80322AD0 31D3FC 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__18J3DTevBlockPatchedFUl14J3DIndTevStage */ +void J3DTevBlockPatched::setIndTevStage(u32 param_0, J3DIndTevStage param_1) { + // NONMATCHING +} + +/* 80322AD0-80322AE4 31D410 0014+00 1/0 0/0 0/0 .text + * setIndTevStage__18J3DTevBlockPatchedFUlPC14J3DIndTevStage */ +void J3DTevBlockPatched::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { + // NONMATCHING +} + +/* 80322AE4-80322AF8 31D424 0014+00 1/0 0/0 0/0 .text getIndTevStage__18J3DTevBlockPatchedFUl */ +J3DIndTevStage* J3DTevBlockPatched::getIndTevStage(u32 param_0) { + // NONMATCHING +} + +/* 80322AF8-80322B24 31D438 002C+00 1/0 0/0 0/0 .text + * setTevColor__18J3DTevBlockPatchedFUl13J3DGXColorS10 */ +void J3DTevBlockPatched::setTevColor(u32 param_0, J3DGXColorS10 param_1) { + // NONMATCHING +} + +/* 80322B24-80322B50 31D464 002C+00 1/0 0/0 0/0 .text + * setTevColor__18J3DTevBlockPatchedFUlPC13J3DGXColorS10 */ +void J3DTevBlockPatched::setTevColor(u32 param_0, J3DGXColorS10 const* param_1) { + // NONMATCHING +} + +/* 80322B50-80322B64 31D490 0014+00 1/0 0/0 0/0 .text getTevColor__18J3DTevBlockPatchedFUl */ +J3DGXColorS10* J3DTevBlockPatched::getTevColor(u32 param_0) { + // NONMATCHING +} + +/* 80322B64-80322B90 31D4A4 002C+00 1/0 0/0 0/0 .text + * setTevKColor__18J3DTevBlockPatchedFUl10J3DGXColor */ +void J3DTevBlockPatched::setTevKColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 80322B90-80322BBC 31D4D0 002C+00 1/0 0/0 0/0 .text + * setTevKColor__18J3DTevBlockPatchedFUlPC10J3DGXColor */ +void J3DTevBlockPatched::setTevKColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80322BBC-80322BD0 31D4FC 0014+00 1/0 0/0 0/0 .text getTevKColor__18J3DTevBlockPatchedFUl */ +J3DGXColor* J3DTevBlockPatched::getTevKColor(u32 param_0) { + // NONMATCHING +} + +/* 80322BD0-80322BDC 31D510 000C+00 1/0 0/0 0/0 .text setTevKColorSel__18J3DTevBlockPatchedFUlUc + */ +void J3DTevBlockPatched::setTevKColorSel(u32 param_0, u8 param_1) { + // NONMATCHING +} + +/* 80322BDC-80322BEC 31D51C 0010+00 1/0 0/0 0/0 .text setTevKColorSel__18J3DTevBlockPatchedFUlPCUc + */ +void J3DTevBlockPatched::setTevKColorSel(u32 param_0, u8 const* param_1) { + // NONMATCHING +} + +/* 80322BEC-80322BF8 31D52C 000C+00 1/0 0/0 0/0 .text getTevKColorSel__18J3DTevBlockPatchedFUl */ +bool J3DTevBlockPatched::getTevKColorSel(u32 param_0) { + // NONMATCHING +} + +/* 80322BF8-80322C00 31D538 0008+00 1/0 0/0 0/0 .text getTexNoOffset__18J3DTevBlockPatchedCFv */ +u32 J3DTevBlockPatched::getTexNoOffset() const { + // NONMATCHING +} + +/* 80322C00-80322C08 31D540 0008+00 1/0 0/0 0/0 .text getTevRegOffset__18J3DTevBlockPatchedCFv */ +bool J3DTevBlockPatched::getTevRegOffset() const { + // NONMATCHING +} + +/* 80322C08-80322C10 -00001 0008+00 0/0 0/0 0/0 .text setTevRegOffset__18J3DTevBlockPatchedFUl */ +void J3DTevBlockPatched::setTevRegOffset(u32 param_0) { + *(u32*)(((u8*)this) + 212) /* this->field_0xd4 */ = (u32)(param_0); +} + +/* 80322C10-80322C6C 31D550 005C+00 1/0 0/0 0/0 .text __dt__18J3DTevBlockPatchedFv */ +J3DTevBlockPatched::~J3DTevBlockPatched() { + // NONMATCHING +} + +/* 80322C6C-80322C78 31D5AC 000C+00 1/0 0/0 0/0 .text getType__19J3DTexGenBlockBasicFv */ +u32 J3DTexGenBlockBasic::getType() { + return 'TGBC'; +} + +/* 80322C78-80322C9C 31D5B8 0024+00 1/0 0/0 0/0 .text + * setNBTScale__19J3DTexGenBlockBasicF11J3DNBTScale */ +void J3DTexGenBlockBasic::setNBTScale(J3DNBTScale param_0) { + // NONMATCHING +} + +/* 80322C9C-80322CC0 31D5DC 0024+00 1/0 0/0 0/0 .text + * setNBTScale__19J3DTexGenBlockBasicFPC11J3DNBTScale */ +void J3DTexGenBlockBasic::setNBTScale(J3DNBTScale const* param_0) { + // NONMATCHING +} + +/* 80322CC0-80322CC8 31D600 0008+00 1/0 0/0 0/0 .text getNBTScale__19J3DTexGenBlockBasicFv */ +J3DNBTScale* J3DTexGenBlockBasic::getNBTScale() { + // NONMATCHING +} + +/* 80322CC8-80322D34 31D608 006C+00 1/0 0/0 0/0 .text __dt__19J3DTexGenBlockBasicFv */ +J3DTexGenBlockBasic::~J3DTexGenBlockBasic() { + // NONMATCHING +} + +/* 80322D34-80322D3C -00001 0008+00 0/0 0/0 0/0 .text setTexGenNum__21J3DTexGenBlockPatchedFUl */ +void J3DTexGenBlockPatched::setTexGenNum(u32 param_0) { + *(u32*)(((u8*)this) + 4) /* this->field_0x4 */ = (u32)(param_0); +} + +/* 80322D3C-80322D48 31D67C 000C+00 3/0 0/0 0/0 .text setTexGenNum__21J3DTexGenBlockPatchedFPCUl + */ +void J3DTexGenBlockPatched::setTexGenNum(u32 const* param_0) { + // NONMATCHING +} + +/* 80322D48-80322D50 31D688 0008+00 3/0 0/0 0/0 .text getTexGenNum__21J3DTexGenBlockPatchedCFv */ +u32 J3DTexGenBlockPatched::getTexGenNum() const { + // NONMATCHING +} + +/* 80322D50-80322D64 31D690 0014+00 3/0 0/0 0/0 .text + * setTexCoord__21J3DTexGenBlockPatchedFUlPC11J3DTexCoord */ +void J3DTexGenBlockPatched::setTexCoord(u32 param_0, J3DTexCoord const* param_1) { + // NONMATCHING +} + +/* 80322D64-80322D78 31D6A4 0014+00 3/0 0/0 0/0 .text getTexCoord__21J3DTexGenBlockPatchedFUl */ +J3DTexCoord* J3DTexGenBlockPatched::getTexCoord(u32 param_0) { + // NONMATCHING +} + +/* 80322D78-80322D88 31D6B8 0010+00 3/0 0/0 0/0 .text + * setTexMtx__21J3DTexGenBlockPatchedFUlP9J3DTexMtx */ +void J3DTexGenBlockPatched::setTexMtx(u32 param_0, J3DTexMtx* param_1) { + // NONMATCHING +} + +/* 80322D88-80322D98 31D6C8 0010+00 3/0 0/0 0/0 .text getTexMtx__21J3DTexGenBlockPatchedFUl */ +J3DTexMtx* J3DTexGenBlockPatched::getTexMtx(u32 param_0) { + // NONMATCHING +} + +/* 80322D98-80322DA0 31D6D8 0008+00 3/0 0/0 0/0 .text getTexMtxOffset__21J3DTexGenBlockPatchedCFv + */ +bool J3DTexGenBlockPatched::getTexMtxOffset() const { + // NONMATCHING +} + +/* 80322DA0-80322DA8 -00001 0008+00 0/0 0/0 0/0 .text setTexMtxOffset__21J3DTexGenBlockPatchedFUl + */ +void J3DTexGenBlockPatched::setTexMtxOffset(u32 param_0) { + *(u32*)(((u8*)this) + 88) /* this->field_0x58 */ = (u32)(param_0); +} + +/* 80322DA8-80322DB4 31D6E8 000C+00 1/0 0/0 0/0 .text getType__15J3DTexGenBlock4Fv */ +u32 J3DTexGenBlock4::getType() { + return 'TGB4'; +} + +/* 80322DB4-80322DD8 31D6F4 0024+00 1/0 0/0 0/0 .text setNBTScale__15J3DTexGenBlock4F11J3DNBTScale + */ +void J3DTexGenBlock4::setNBTScale(J3DNBTScale param_0) { + // NONMATCHING +} + +/* 80322DD8-80322DFC 31D718 0024+00 1/0 0/0 0/0 .text + * setNBTScale__15J3DTexGenBlock4FPC11J3DNBTScale */ +void J3DTexGenBlock4::setNBTScale(J3DNBTScale const* param_0) { + // NONMATCHING +} + +/* 80322DFC-80322E04 31D73C 0008+00 1/0 0/0 0/0 .text getNBTScale__15J3DTexGenBlock4Fv */ +J3DNBTScale* J3DTexGenBlock4::getNBTScale() { + // NONMATCHING +} + +/* 80322E04-80322E70 31D744 006C+00 1/0 0/0 0/0 .text __dt__15J3DTexGenBlock4Fv */ +J3DTexGenBlock4::~J3DTexGenBlock4() { + // NONMATCHING +} + +/* 80322E70-80322E74 31D7B0 0004+00 1/0 0/0 0/0 .text load__21J3DTexGenBlockPatchedFv */ +void J3DTexGenBlockPatched::load() { + /* empty function */ +} + +/* 80322E74-80322E80 31D7B4 000C+00 1/0 0/0 0/0 .text getType__21J3DTexGenBlockPatchedFv + */ +u32 J3DTexGenBlockPatched::getType() { + return 'TGPT'; +} + +/* 80322E80-80322E8C 31D7C0 000C+00 1/0 0/0 0/0 .text getType__20J3DColorBlockLightOnFv + */ +u32 J3DColorBlockLightOn::getType() { + return 'CLON'; +} + +/* 80322E8C-80322EB8 31D7CC 002C+00 1/0 0/0 0/0 .text + * setMatColor__20J3DColorBlockLightOnFUl10J3DGXColor */ +void J3DColorBlockLightOn::setMatColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 80322EB8-80322EE4 31D7F8 002C+00 1/0 0/0 0/0 .text + * setMatColor__20J3DColorBlockLightOnFUlPC10J3DGXColor */ +void J3DColorBlockLightOn::setMatColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80322EE4-80322EF8 31D824 0014+00 1/0 0/0 0/0 .text getMatColor__20J3DColorBlockLightOnFUl */ +J3DGXColor* J3DColorBlockLightOn::getMatColor(u32 param_0) { + // NONMATCHING +} + +/* 80322EF8-80322F24 31D838 002C+00 1/0 0/0 0/0 .text + * setAmbColor__20J3DColorBlockLightOnFUl10J3DGXColor */ +void J3DColorBlockLightOn::setAmbColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 80322F24-80322F50 31D864 002C+00 1/0 0/0 0/0 .text + * setAmbColor__20J3DColorBlockLightOnFUlPC10J3DGXColor */ +void J3DColorBlockLightOn::setAmbColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 80322F50-80322F64 31D890 0014+00 1/0 0/0 0/0 .text getAmbColor__20J3DColorBlockLightOnFUl */ +J3DGXColor* J3DColorBlockLightOn::getAmbColor(u32 param_0) { + // NONMATCHING +} + +/* 80322F64-80322F70 31D8A4 000C+00 1/0 0/0 0/0 .text setColorChanNum__20J3DColorBlockLightOnFPCUc + */ +void J3DColorBlockLightOn::setColorChanNum(u8 const* param_0) { + // NONMATCHING +} + +/* 80322F70-80322F78 -00001 0008+00 0/0 0/0 0/0 .text setColorChanNum__20J3DColorBlockLightOnFUc + */ +void J3DColorBlockLightOn::setColorChanNum(u8 param_0) { + *(u8*)(((u8*)this) + 20) /* this->field_0x14 */ = (u8)(param_0); +} + +/* 80322F78-80322F80 31D8B8 0008+00 1/0 0/0 0/0 .text getColorChanNum__20J3DColorBlockLightOnCFv + */ +u8 J3DColorBlockLightOn::getColorChanNum() const { + // NONMATCHING +} + +/* 80322F80-80322F94 31D8C0 0014+00 1/0 0/0 0/0 .text + * setColorChan__20J3DColorBlockLightOnFUlPC12J3DColorChan */ +void J3DColorBlockLightOn::setColorChan(u32 param_0, J3DColorChan const* param_1) { + // NONMATCHING +} + +/* 80322F94-80322FA8 31D8D4 0014+00 1/0 0/0 0/0 .text + * setColorChan__20J3DColorBlockLightOnFUlRC12J3DColorChan */ +void J3DColorBlockLightOn::setColorChan(u32 param_0, J3DColorChan const& param_1) { + // NONMATCHING +} + +/* 80322FA8-80322FBC 31D8E8 0014+00 1/0 0/0 0/0 .text getColorChan__20J3DColorBlockLightOnFUl */ +J3DColorChan* J3DColorBlockLightOn::getColorChan(u32 param_0) { + // NONMATCHING +} + +/* 80322FBC-80322FCC 31D8FC 0010+00 1/0 0/0 0/0 .text + * setLight__20J3DColorBlockLightOnFUlP11J3DLightObj */ +void J3DColorBlockLightOn::setLight(u32 param_0, J3DLightObj* param_1) { + // NONMATCHING +} + +/* 80322FCC-80322FDC 31D90C 0010+00 1/0 0/0 0/0 .text getLight__20J3DColorBlockLightOnFUl + */ +bool J3DColorBlockLightOn::getLight(u32 param_0) { + // NONMATCHING +} + +/* 80322FDC-80322FE4 -00001 0008+00 0/0 0/0 0/0 .text setCullMode__20J3DColorBlockLightOnFUc */ +void J3DColorBlockLightOn::setCullMode(u8 param_0) { + *(u8*)(((u8*)this) + 64) /* this->field_0x40 */ = (u8)(param_0); +} + +/* 80322FE4-80322FF0 31D924 000C+00 1/0 0/0 0/0 .text setCullMode__20J3DColorBlockLightOnFPCUc */ +void J3DColorBlockLightOn::setCullMode(u8 const* param_0) { + // NONMATCHING +} + +/* 80322FF0-80322FF8 31D930 0008+00 1/0 0/0 0/0 .text getCullMode__20J3DColorBlockLightOnCFv */ +s32 J3DColorBlockLightOn::getCullMode() const { + // NONMATCHING +} + +/* 80322FF8-80323000 31D938 0008+00 1/0 0/0 0/0 .text getMatColorOffset__20J3DColorBlockLightOnCFv + */ +u32 J3DColorBlockLightOn::getMatColorOffset() const { + // NONMATCHING +} + +/* 80323000-80323008 31D940 0008+00 1/0 0/0 0/0 .text + * getColorChanOffset__20J3DColorBlockLightOnCFv */ +u32 J3DColorBlockLightOn::getColorChanOffset() const { + // NONMATCHING +} + +/* 80323008-80323010 -00001 0008+00 0/0 0/0 0/0 .text setMatColorOffset__20J3DColorBlockLightOnFUl + */ +void J3DColorBlockLightOn::setMatColorOffset(u32 param_0) { + *(u32*)(((u8*)this) + 68) /* this->field_0x44 */ = (u32)(param_0); +} + +/* 80323010-80323018 -00001 0008+00 0/0 0/0 0/0 .text + * setColorChanOffset__20J3DColorBlockLightOnFUl */ +void J3DColorBlockLightOn::setColorChanOffset(u32 param_0) { + *(u32*)(((u8*)this) + 72) /* this->field_0x48 */ = (u32)(param_0); +} + +/* 80323018-80323074 31D958 005C+00 1/0 0/0 0/0 .text __dt__20J3DColorBlockLightOnFv */ +J3DColorBlockLightOn::~J3DColorBlockLightOn() { + // NONMATCHING +} + +/* 80323074-80323080 31D9B4 000C+00 1/0 0/0 0/0 .text getType__22J3DColorBlockAmbientOnFv + */ +u32 J3DColorBlockAmbientOn::getType() { + return 'CLAB'; +} + +/* 80323080-803230AC 31D9C0 002C+00 1/0 0/0 0/0 .text + * setAmbColor__22J3DColorBlockAmbientOnFUl10J3DGXColor */ +void J3DColorBlockAmbientOn::setAmbColor(u32 param_0, J3DGXColor param_1) { + // NONMATCHING +} + +/* 803230AC-803230D8 31D9EC 002C+00 1/0 0/0 0/0 .text + * setAmbColor__22J3DColorBlockAmbientOnFUlPC10J3DGXColor */ +void J3DColorBlockAmbientOn::setAmbColor(u32 param_0, J3DGXColor const* param_1) { + // NONMATCHING +} + +/* 803230D8-803230EC 31DA18 0014+00 1/0 0/0 0/0 .text getAmbColor__22J3DColorBlockAmbientOnFUl */ +J3DGXColor* J3DColorBlockAmbientOn::getAmbColor(u32 param_0) { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 803CEA34-803CEAC8 02BB54 0090+04 1/1 2/2 0/0 .data __vt__21J3DColorBlockLightOff */ +SECTION_DATA extern void* __vt__21J3DColorBlockLightOff[36 + 1 /* padding */] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__21J3DColorBlockLightOffFv, + (void*)reset__21J3DColorBlockLightOffFP13J3DColorBlock, + (void*)patch__21J3DColorBlockLightOffFv, + (void*)patchMatColor__21J3DColorBlockLightOffFv, + (void*)patchLight__21J3DColorBlockLightOffFv, + (void*)diff__21J3DColorBlockLightOffFUl, + (void*)diffAmbColor__13J3DColorBlockFv, + (void*)diffMatColor__21J3DColorBlockLightOffFv, + (void*)diffColorChan__21J3DColorBlockLightOffFv, + (void*)diffLightObj__13J3DColorBlockFUl, + (void*)countDLSize__21J3DColorBlockLightOffFv, + (void*)getType__21J3DColorBlockLightOffFv, + (void*)setMatColor__21J3DColorBlockLightOffFUlPC10J3DGXColor, + (void*)setMatColor__21J3DColorBlockLightOffFUl10J3DGXColor, + (void*)getMatColor__21J3DColorBlockLightOffFUl, + (void*)setAmbColor__13J3DColorBlockFUlPC10J3DGXColor, + (void*)setAmbColor__13J3DColorBlockFUl10J3DGXColor, + (void*)getAmbColor__13J3DColorBlockFUl, + (void*)setColorChanNum__21J3DColorBlockLightOffFUc, + (void*)setColorChanNum__21J3DColorBlockLightOffFPCUc, + (void*)getColorChanNum__21J3DColorBlockLightOffCFv, + (void*)setColorChan__21J3DColorBlockLightOffFUlRC12J3DColorChan, + (void*)setColorChan__21J3DColorBlockLightOffFUlPC12J3DColorChan, + (void*)getColorChan__21J3DColorBlockLightOffFUl, + (void*)setLight__13J3DColorBlockFUlP11J3DLightObj, + (void*)getLight__13J3DColorBlockFUl, + (void*)setCullMode__21J3DColorBlockLightOffFPCUc, + (void*)setCullMode__21J3DColorBlockLightOffFUc, + (void*)getCullMode__21J3DColorBlockLightOffCFv, + (void*)getMatColorOffset__21J3DColorBlockLightOffCFv, + (void*)getColorChanOffset__21J3DColorBlockLightOffCFv, + (void*)setMatColorOffset__21J3DColorBlockLightOffFUl, + (void*)setColorChanOffset__21J3DColorBlockLightOffFUl, + (void*)__dt__21J3DColorBlockLightOffFv, + /* padding */ + NULL, +}; + +/* 803230EC-80323158 31DA2C 006C+00 1/0 0/0 0/0 .text __dt__22J3DColorBlockAmbientOnFv */ +J3DColorBlockAmbientOn::~J3DColorBlockAmbientOn() {} + +/* 80323158-80323184 31DA98 002C+00 2/0 0/0 0/0 .text + * setMatColor__21J3DColorBlockLightOffFUl10J3DGXColor */ +void J3DColorBlockLightOff::setMatColor(u32 param_0, J3DGXColor param_1) { + mMatColor[param_0] = param_1; +} + +/* 80323184-803231B0 31DAC4 002C+00 2/0 0/0 0/0 .text + * setMatColor__21J3DColorBlockLightOffFUlPC10J3DGXColor */ +void J3DColorBlockLightOff::setMatColor(u32 param_0, J3DGXColor const* param_1) { + mMatColor[param_0] = *param_1; +} + +/* 803231B0-803231C4 31DAF0 0014+00 2/0 0/0 0/0 .text getMatColor__21J3DColorBlockLightOffFUl */ +J3DGXColor* J3DColorBlockLightOff::getMatColor(u32 param_0) { + return &mMatColor[param_0]; +} + +/* 803231C4-803231D0 31DB04 000C+00 2/0 0/0 0/0 .text + * setColorChanNum__21J3DColorBlockLightOffFPCUc */ +void J3DColorBlockLightOff::setColorChanNum(u8 const* param_0) { + mColorChanNum = *param_0; +} + +/* 803231D0-803231D8 -00001 0008+00 0/0 0/0 0/0 .text setColorChanNum__21J3DColorBlockLightOffFUc + */ +void J3DColorBlockLightOff::setColorChanNum(u8 param_0) { + mColorChanNum = param_0; +} + +/* 803231D8-803231E0 31DB18 0008+00 2/0 0/0 0/0 .text getColorChanNum__21J3DColorBlockLightOffCFv + */ +u8 J3DColorBlockLightOff::getColorChanNum() const { + return mColorChanNum; +} + +/* 803231E0-803231F4 31DB20 0014+00 2/0 0/0 0/0 .text + * setColorChan__21J3DColorBlockLightOffFUlPC12J3DColorChan */ +void J3DColorBlockLightOff::setColorChan(u32 param_0, J3DColorChan const* param_1) { + mColorChan[param_0] = *param_1; +} + +/* 803231F4-80323208 31DB34 0014+00 2/0 0/0 0/0 .text + * setColorChan__21J3DColorBlockLightOffFUlRC12J3DColorChan */ +void J3DColorBlockLightOff::setColorChan(u32 param_0, J3DColorChan const& param_1) { + mColorChan[param_0] = param_1; +} + +/* 80323208-8032321C 31DB48 0014+00 2/0 0/0 0/0 .text getColorChan__21J3DColorBlockLightOffFUl */ +J3DColorChan* J3DColorBlockLightOff::getColorChan(u32 param_0) { + return &mColorChan[param_0]; +} + +/* 8032321C-80323224 -00001 0008+00 0/0 0/0 0/0 .text setCullMode__21J3DColorBlockLightOffFUc */ +void J3DColorBlockLightOff::setCullMode(u8 param_0) { + mCullMode = param_0; +} + +/* 80323224-80323230 31DB64 000C+00 2/0 0/0 0/0 .text setCullMode__21J3DColorBlockLightOffFPCUc */ +void J3DColorBlockLightOff::setCullMode(u8 const* param_0) { + mCullMode = *param_0; +} + +/* 80323230-80323238 31DB70 0008+00 2/0 0/0 0/0 .text getCullMode__21J3DColorBlockLightOffCFv */ +s32 J3DColorBlockLightOff::getCullMode() const { + return mCullMode; +} + +/* 80323238-80323240 31DB78 0008+00 2/0 0/0 0/0 .text + * getMatColorOffset__21J3DColorBlockLightOffCFv */ +u32 J3DColorBlockLightOff::getMatColorOffset() const { + return mMatColorOffset; +} + +/* 80323240-80323248 31DB80 0008+00 2/0 0/0 0/0 .text + * getColorChanOffset__21J3DColorBlockLightOffCFv */ +u32 J3DColorBlockLightOff::getColorChanOffset() const { + return mColorChanOffset; +} + +/* 80323248-80323250 -00001 0008+00 0/0 0/0 0/0 .text + * setMatColorOffset__21J3DColorBlockLightOffFUl */ +void J3DColorBlockLightOff::setMatColorOffset(u32 param_0) { + mMatColorOffset = param_0; +} + +/* 80323250-80323258 -00001 0008+00 0/0 0/0 0/0 .text + * setColorChanOffset__21J3DColorBlockLightOffFUl */ +void J3DColorBlockLightOff::setColorChanOffset(u32 param_0) { + mColorChanOffset = param_0; +} + +/* 80323258-80323264 31DB98 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockXluFv */ +u32 J3DPEBlockXlu::getType() { + return 'PEXL'; +} + +/* 80323264-803232C0 31DBA4 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockXluFv */ +J3DPEBlockXlu::~J3DPEBlockXlu() {} + +/* 803232C0-803232CC 31DC00 000C+00 1/0 0/0 0/0 .text getType__17J3DPEBlockTexEdgeFv */ +u32 J3DPEBlockTexEdge::getType() { + return 'PEED'; +} + +/* 803232CC-80323328 31DC0C 005C+00 1/0 0/0 0/0 .text __dt__17J3DPEBlockTexEdgeFv */ +J3DPEBlockTexEdge::~J3DPEBlockTexEdge() {} + +/* 80323328-80323334 31DC68 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockOpaFv */ +u32 J3DPEBlockOpa::getType() { + return 'PEOP'; +} + +/* 80323334-80323390 31DC74 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockOpaFv */ +J3DPEBlockOpa::~J3DPEBlockOpa() {} + +/* 80323390-8032339C 31DCD0 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockFullFv */ +u32 J3DIndBlockFull::getType() { + return 'IBLF'; +} + +/* 8032339C-803233A4 -00001 0008+00 0/0 0/0 0/0 .text setIndTexStageNum__15J3DIndBlockFullFUc */ +void J3DIndBlockFull::setIndTexStageNum(u8 param_0) { + *(u8*)(((u8*)this) + 4) /* this->field_0x4 */ = (u8)(param_0); +} + +/* 803233A4-803233AC 31DCE4 0008+00 1/0 0/0 0/0 .text getIndTexStageNum__15J3DIndBlockFullCFv */ +u8 J3DIndBlockFull::getIndTexStageNum() const { + return mIndTexStageNum; +} + +/* 803233AC-803233C0 31DCEC 0014+00 1/0 0/0 0/0 .text + * setIndTexOrder__15J3DIndBlockFullFUl14J3DIndTexOrder */ +void J3DIndBlockFull::setIndTexOrder(u32 param_0, J3DIndTexOrder param_1) { + mIndTexOrder[param_0] = param_1; +} + +/* 803233C0-803233D4 31DD00 0014+00 1/0 0/0 0/0 .text + * setIndTexOrder__15J3DIndBlockFullFUlPC14J3DIndTexOrder */ +void J3DIndBlockFull::setIndTexOrder(u32 param_0, J3DIndTexOrder const* param_1) { + mIndTexOrder[param_0] = *param_1; +} + +/* 803233D4-803233E8 31DD14 0014+00 1/0 0/0 0/0 .text getIndTexOrder__15J3DIndBlockFullFUl */ +J3DIndTexOrder* J3DIndBlockFull::getIndTexOrder(u32 param_0) { + return &mIndTexOrder[param_0]; +} + +/* 803233E8-8032341C 31DD28 0034+00 1/0 0/0 0/0 .text + * setIndTexMtx__15J3DIndBlockFullFUl12J3DIndTexMtx */ +void J3DIndBlockFull::setIndTexMtx(u32 param_0, J3DIndTexMtx param_1) { + mIndTexMtx[param_0] = param_1; +} + +/* 8032341C-80323450 31DD5C 0034+00 1/0 0/0 0/0 .text + * setIndTexMtx__15J3DIndBlockFullFUlPC12J3DIndTexMtx */ +void J3DIndBlockFull::setIndTexMtx(u32 param_0, J3DIndTexMtx const* param_1) { + mIndTexMtx[param_0] = *param_1; +} + +/* 80323450-80323464 31DD90 0014+00 1/0 0/0 0/0 .text getIndTexMtx__15J3DIndBlockFullFUl + */ +J3DIndTexMtx* J3DIndBlockFull::getIndTexMtx(u32 param_0) { + return &mIndTexMtx[param_0]; +} + +/* 80323464-80323478 31DDA4 0014+00 1/0 0/0 0/0 .text + * setIndTexCoordScale__15J3DIndBlockFullFUl19J3DIndTexCoordScale */ +void J3DIndBlockFull::setIndTexCoordScale(u32 param_0, J3DIndTexCoordScale param_1) { + mIndTexCoordScale[param_0] = param_1; +} + +/* 80323478-8032348C 31DDB8 0014+00 1/0 0/0 0/0 .text + * setIndTexCoordScale__15J3DIndBlockFullFUlPC19J3DIndTexCoordScale */ +void J3DIndBlockFull::setIndTexCoordScale(u32 param_0, J3DIndTexCoordScale const* param_1) { + mIndTexCoordScale[param_0] = *param_1; +} + +/* 8032348C-803234A0 31DDCC 0014+00 1/0 0/0 0/0 .text getIndTexCoordScale__15J3DIndBlockFullFUl */ +J3DIndTexCoordScale* J3DIndBlockFull::getIndTexCoordScale(u32 param_0) { + return &mIndTexCoordScale[param_0]; +} + +/* 803234A0-8032353C 31DDE0 009C+00 1/0 0/0 0/0 .text __dt__15J3DIndBlockFullFv */ +J3DIndBlockFull::~J3DIndBlockFull() {} + +/* 8032353C-80323540 31DE7C 0004+00 1/0 1/0 0/0 .text patchTexNo__11J3DTevBlockFv */ +void J3DTevBlock::patchTexNo() { +} + +/* 80323540-80323544 31DE80 0004+00 1/0 1/0 0/0 .text patchTevReg__11J3DTevBlockFv */ +void J3DTevBlock::patchTevReg() { +} + +/* 80323544-80323548 31DE84 0004+00 1/0 1/0 0/0 .text setTexNo__11J3DTevBlockFUlPCUs */ +void J3DTevBlock::setTexNo(u32 param_0, u16 const* param_1) { +} + +/* 80323548-8032354C 31DE88 0004+00 1/0 1/0 0/0 .text setTevOrder__11J3DTevBlockFUlPC11J3DTevOrder + */ +void J3DTevBlock::setTevOrder(u32 param_0, J3DTevOrder const* param_1) { +} + +/* 8032354C-80323550 31DE8C 0004+00 1/0 1/0 0/0 .text setTevStageNum__11J3DTevBlockFPCUc + */ +void J3DTevBlock::setTevStageNum(u8 const* param_0) { +} + +/* 80323550-80323554 31DE90 0004+00 1/0 1/0 0/0 .text setTevStage__11J3DTevBlockFUlPC11J3DTevStage + */ +void J3DTevBlock::setTevStage(u32 param_0, J3DTevStage const* param_1) { +} + +/* 80323554-80323558 31DE94 0004+00 1/0 1/0 0/0 .text + * setIndTevStage__11J3DTevBlockFUlPC14J3DIndTevStage */ +void J3DTevBlock::setIndTevStage(u32 param_0, J3DIndTevStage const* param_1) { +} + +/* 80323558-80323560 31DE98 0008+00 1/0 1/0 0/0 .text getTexNoOffset__11J3DTevBlockCFv */ +u32 J3DTevBlock::getTexNoOffset() const { + return 0; +} + +/* 80323560-8032356C 31DEA0 000C+00 1/0 0/0 0/0 .text getType__21J3DColorBlockLightOffFv + */ +u32 J3DColorBlockLightOff::getType() { + return 'CLOF'; +} + +/* 803A1EA8-803A1EA8 02E508 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DMaterial.cpp b/src/JSystem/J3DGraphBase/J3DMaterial.cpp new file mode 100644 index 0000000000..fcdf40ea6b --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DMaterial.cpp @@ -0,0 +1,1276 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DMaterial +// + +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/J3DGraphBase/J3DGD.h" +#include "dol2asm.h" + +// +// Forward References: +// + +extern "C" void createColorBlock__11J3DMaterialFUl(); +extern "C" void createTexGenBlock__11J3DMaterialFUl(); +extern "C" void createTevBlock__11J3DMaterialFi(); +extern "C" void createIndBlock__11J3DMaterialFi(); +extern "C" void createPEBlock__11J3DMaterialFUlUl(); +extern "C" void calcSizeColorBlock__11J3DMaterialFUl(); +extern "C" void calcSizeTexGenBlock__11J3DMaterialFUl(); +extern "C" void calcSizeTevBlock__11J3DMaterialFi(); +extern "C" void calcSizeIndBlock__11J3DMaterialFi(); +extern "C" void calcSizePEBlock__11J3DMaterialFUlUl(); +extern "C" void initialize__11J3DMaterialFv(); +extern "C" void countDLSize__11J3DMaterialFv(); +extern "C" void makeDisplayList_private__11J3DMaterialFP17J3DDisplayListObj(); +extern "C" void makeDisplayList__11J3DMaterialFv(); +extern "C" void makeSharedDisplayList__11J3DMaterialFv(); +extern "C" void load__11J3DMaterialFv(); +extern "C" void loadSharedDL__11J3DMaterialFv(); +extern "C" void patch__11J3DMaterialFv(); +extern "C" void diff__11J3DMaterialFUl(); +extern "C" void calc__11J3DMaterialFPA4_Cf(); +extern "C" void calcDiffTexMtx__11J3DMaterialFPA4_Cf(); +extern "C" void setCurrentMtx__11J3DMaterialFv(); +extern "C" void calcCurrentMtx__11J3DMaterialFv(); +extern "C" void copy__11J3DMaterialFP11J3DMaterial(); +extern "C" void reset__11J3DMaterialFv(); +extern "C" void change__11J3DMaterialFv(); +extern "C" void newSharedDisplayList__11J3DMaterialFUl(); +extern "C" void newSingleSharedDisplayList__11J3DMaterialFUl(); +extern "C" void initialize__18J3DPatchedMaterialFv(); +extern "C" void makeDisplayList__18J3DPatchedMaterialFv(); +extern "C" void makeSharedDisplayList__18J3DPatchedMaterialFv(); +extern "C" void load__18J3DPatchedMaterialFv(); +extern "C" void loadSharedDL__18J3DPatchedMaterialFv(); +extern "C" void reset__18J3DPatchedMaterialFv(); +extern "C" void change__18J3DPatchedMaterialFv(); +extern "C" void initialize__17J3DLockedMaterialFv(); +extern "C" void makeDisplayList__17J3DLockedMaterialFv(); +extern "C" void makeSharedDisplayList__17J3DLockedMaterialFv(); +extern "C" void load__17J3DLockedMaterialFv(); +extern "C" void loadSharedDL__17J3DLockedMaterialFv(); +extern "C" void patch__17J3DLockedMaterialFv(); +extern "C" void diff__17J3DLockedMaterialFUl(); +extern "C" void calc__17J3DLockedMaterialFPA4_Cf(); +extern "C" void reset__17J3DLockedMaterialFv(); +extern "C" void change__17J3DLockedMaterialFv(); +extern "C" void __dt__21J3DColorBlockLightOffFv(); +extern "C" void __dt__13J3DColorBlockFv(); +extern "C" void __dt__21J3DTexGenBlockPatchedFv(); +extern "C" void __dt__14J3DTexGenBlockFv(); +extern "C" void __dt__11J3DTevBlockFv(); +extern "C" void __dt__11J3DIndBlockFv(); +extern "C" void __dt__10J3DPEBlockFv(); +extern "C" bool countDLSize__14J3DTexGenBlockFv(); +extern "C" bool countDLSize__13J3DColorBlockFv(); +extern "C" bool countDLSize__11J3DTevBlockFv(); +extern "C" bool countDLSize__11J3DIndBlockFv(); +extern "C" bool countDLSize__10J3DPEBlockFv(); +extern "C" void load__13J3DColorBlockFv(); +extern "C" s32 getCullMode__13J3DColorBlockCFv(); +extern "C" void load__11J3DTevBlockFv(); +extern "C" J3DNBTScale* getNBTScale__14J3DTexGenBlockFv(); +extern "C" void patch__13J3DColorBlockFv(); +extern "C" void diff__13J3DColorBlockFUl(); +extern "C" void diff__10J3DPEBlockFUl(); +extern "C" void reset__10J3DPEBlockFP10J3DPEBlock(); +extern "C" void reset__11J3DIndBlockFP11J3DIndBlock(); +extern "C" void reset__11J3DTevBlockFP11J3DTevBlock(J3DTevBlock* param_0); +extern "C" void reset__14J3DTexGenBlockFP14J3DTexGenBlock(); +extern "C" void reset__13J3DColorBlockFP13J3DColorBlock(); +extern "C" void diffFog__10J3DPEBlockFv(); +extern "C" void diffBlend__10J3DPEBlockFv(); +extern "C" void setFog__10J3DPEBlockFP6J3DFog(); +extern "C" void setFog__10J3DPEBlockF6J3DFog(); +extern "C" void setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp(); +extern "C" void setBlend__10J3DPEBlockFPC8J3DBlend(); +extern "C" void setZMode__10J3DPEBlockFPC8J3DZMode(); +extern "C" void setZCompLoc__10J3DPEBlockFPCUc(); +extern "C" void setDither__10J3DPEBlockFUc(); +extern "C" void setDither__10J3DPEBlockFPCUc(); +extern "C" bool getDither__10J3DPEBlockCFv(); +extern "C" bool getFogOffset__10J3DPEBlockCFv(); +extern "C" void setFogOffset__10J3DPEBlockFUl(); +extern "C" void diff__15J3DIndBlockNullFUl(); +extern "C" void load__15J3DIndBlockNullFv(); +extern "C" void reset__15J3DIndBlockNullFP11J3DIndBlock(); +extern "C" void getType__15J3DIndBlockNullFv(); +extern "C" void __dt__15J3DIndBlockNullFv(); +extern "C" void setIndTexOrder__11J3DIndBlockFUlPC14J3DIndTexOrder(); +extern "C" void setIndTexOrder__11J3DIndBlockFUl14J3DIndTexOrder(); +extern "C" void setIndTexMtx__11J3DIndBlockFUlPC12J3DIndTexMtx(); +extern "C" void setIndTexCoordScale__11J3DIndBlockFUlPC19J3DIndTexCoordScale(); +extern "C" void setTexGenNum__14J3DTexGenBlockFPCUl(); +extern "C" void setNBTScale__14J3DTexGenBlockF11J3DNBTScale(); +extern "C" void setNBTScale__14J3DTexGenBlockFPC11J3DNBTScale(); +extern "C" bool getTexMtxOffset__14J3DTexGenBlockCFv(); +extern "C" void setTexMtxOffset__14J3DTexGenBlockFUl(); +extern "C" void patchMatColor__13J3DColorBlockFv(); +extern "C" void diffAmbColor__13J3DColorBlockFv(); +extern "C" void diffMatColor__13J3DColorBlockFv(); +extern "C" void diffColorChan__13J3DColorBlockFv(); +extern "C" void diffLightObj__13J3DColorBlockFUl(); +extern "C" void setMatColor__13J3DColorBlockFUlPC10J3DGXColor(); +extern "C" void setColorChanNum__13J3DColorBlockFPCUc(); +extern "C" void setColorChan__13J3DColorBlockFUlPC12J3DColorChan(); +extern "C" bool getLight__13J3DColorBlockFUl(); +extern "C" void setCullMode__13J3DColorBlockFUc(); +extern "C" void setCullMode__13J3DColorBlockFPCUc(); +extern "C" u32 getMatColorOffset__13J3DColorBlockCFv(); +extern "C" bool getColorChanOffset__13J3DColorBlockCFv(); +extern "C" void setMatColorOffset__13J3DColorBlockFUl(); +extern "C" void setColorChanOffset__13J3DColorBlockFUl(); + +// +// External References: +// + +extern "C" void patch__10J3DPEBlockFv(); +extern "C" void patchLight__13J3DColorBlockFv(); +extern "C" bool getZCompLoc__10J3DPEBlockCFv(); +extern "C" bool getZMode__10J3DPEBlockFv(); +extern "C" bool getBlend__10J3DPEBlockFv(); +extern "C" bool getAlphaComp__10J3DPEBlockFv(); +extern "C" bool getFog__10J3DPEBlockFv(); +extern "C" bool getIndTexCoordScale__11J3DIndBlockFUl(); +extern "C" bool getIndTexMtx__11J3DIndBlockFUl(); +extern "C" bool getIndTexOrder__11J3DIndBlockFUl(); +extern "C" bool getIndTexStageNum__11J3DIndBlockCFv(); +extern "C" bool getTexMtx__14J3DTexGenBlockFUl(); +extern "C" bool getTexCoord__14J3DTexGenBlockFUl(); +extern "C" bool getTexGenNum__14J3DTexGenBlockCFv(); +extern "C" bool getAmbColor__13J3DColorBlockFUl(); +extern "C" bool getColorChan__13J3DColorBlockFUl(); +extern "C" bool getMatColor__13J3DColorBlockFUl(); +extern "C" bool getColorChanNum__13J3DColorBlockCFv(); +extern "C" void setZCompLoc__10J3DPEBlockFUc(); +extern "C" void setZMode__10J3DPEBlockF8J3DZMode(); +extern "C" void setBlend__10J3DPEBlockFRC8J3DBlend(); +extern "C" void setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp(); +extern "C" void setIndTexCoordScale__11J3DIndBlockFUl19J3DIndTexCoordScale(); +extern "C" void __dt__19J3DIndTexCoordScaleFv(); +extern "C" void setIndTexMtx__11J3DIndBlockFUl12J3DIndTexMtx(); +extern "C" void __dt__12J3DIndTexMtxFv(); +extern "C" void setIndTexStageNum__11J3DIndBlockFUc(); +extern "C" void setTexCoord__14J3DTexGenBlockFUlPC11J3DTexCoord(); +extern "C" void setTexGenNum__14J3DTexGenBlockFUl(); +extern "C" void setAmbColor__13J3DColorBlockFUl10J3DGXColor(); +extern "C" void setColorChan__13J3DColorBlockFUlRC12J3DColorChan(); +extern "C" void setMatColor__13J3DColorBlockFUl10J3DGXColor(); +extern "C" void setColorChanNum__13J3DColorBlockFUc(); +extern "C" void __ct__19J3DIndTexCoordScaleFv(); +extern "C" void __ct__12J3DIndTexMtxFv(); +extern "C" void __ct__14J3DIndTexOrderFv(); +extern "C" void __ct__19J3DTevSwapModeTableFv(); +extern "C" void __ct__11J3DTevOrderFv(); +extern "C" void __ct__14J3DIndTevStageFv(); +extern "C" void __ct__11J3DTevStageFv(); +extern "C" void __ct__13J3DGXColorS10Fv(); +extern "C" void __ct__11J3DTexCoordFv(); +extern "C" void __ct__12J3DColorChanFv(); +extern "C" void __ct__10J3DGXColorFv(); +extern "C" void setTexMtx__14J3DTexGenBlockFUlP9J3DTexMtx(); +extern "C" void setLight__13J3DColorBlockFUlP11J3DLightObj(); +extern "C" void setAmbColor__13J3DColorBlockFUlPC10J3DGXColor(); +extern "C" void* __nw__FUl(); +extern "C" void __dl__FPv(); +extern "C" void J3DGDSetGenMode__FUcUcUcUc11_GXCullMode(); +extern "C" void J3DGDSetGenMode_3Param__FUcUcUc(); +extern "C" void newDisplayList__17J3DDisplayListObjFUl(); +extern "C" void newSingleDisplayList__17J3DDisplayListObjFUl(); +extern "C" void callDL__17J3DDisplayListObjCFv(); +extern "C" void beginDL__17J3DDisplayListObjFv(); +extern "C" void endDL__17J3DDisplayListObjFv(); +extern "C" void beginPatch__17J3DDisplayListObjFv(); +extern "C" void endPatch__17J3DDisplayListObjFv(); +extern "C" void beginDiff__12J3DMatPacketFv(); +extern "C" void endDiff__12J3DMatPacketFv(); +extern "C" void initialize__21J3DColorBlockLightOffFv(); +extern "C" void initialize__22J3DColorBlockAmbientOnFv(); +extern "C" void initialize__20J3DColorBlockLightOnFv(); +extern "C" void initialize__21J3DTexGenBlockPatchedFv(); +extern "C" void initialize__15J3DTexGenBlock4Fv(); +extern "C" void initialize__19J3DTexGenBlockBasicFv(); +extern "C" void initialize__12J3DTevBlock1Fv(); +extern "C" void initialize__12J3DTevBlock2Fv(); +extern "C" void initialize__12J3DTevBlock4Fv(); +extern "C" void initialize__13J3DTevBlock16Fv(); +extern "C" void initialize__15J3DIndBlockFullFv(); +extern "C" void initialize__16J3DPEBlockFogOffFv(); +extern "C" void initialize__14J3DPEBlockFullFv(); +extern "C" void loadNBTScale__FR11J3DNBTScale(); +extern "C" void __as__10J3DFogInfoFRC10J3DFogInfo(); +extern "C" void __construct_array(); +extern "C" void _savegpr_24(); +extern "C" void _savegpr_26(); +extern "C" void _savegpr_27(); +extern "C" void _savegpr_29(); +extern "C" void _restgpr_24(); +extern "C" void _restgpr_26(); +extern "C" void _restgpr_27(); +extern "C" void _restgpr_29(); +extern "C" extern void* __vt__14J3DPEBlockFull[31]; +extern "C" extern void* __vt__16J3DPEBlockFogOff[31]; +extern "C" extern void* __vt__13J3DTevBlock16[55]; +extern "C" extern void* __vt__12J3DTevBlock4[55]; +extern "C" extern void* __vt__12J3DTevBlock2[55]; +extern "C" extern void* __vt__12J3DTevBlock1[55]; +extern "C" extern void* __vt__19J3DTexGenBlockBasic[27]; +extern "C" extern void* __vt__15J3DTexGenBlock4[27]; +extern "C" extern void* __vt__21J3DTexGenBlockPatched[27]; +extern "C" extern void* __vt__20J3DColorBlockLightOn[36]; +extern "C" extern void* __vt__22J3DColorBlockAmbientOn[36]; +extern "C" extern void* __vt__13J3DPEBlockXlu[31]; +extern "C" extern void* __vt__17J3DPEBlockTexEdge[31]; +extern "C" extern void* __vt__13J3DPEBlockOpa[31]; +extern "C" extern void* __vt__15J3DIndBlockFull[19]; +extern "C" extern void* __vt__11J3DTevBlock[55]; +extern "C" extern void* __vt__21J3DColorBlockLightOff[36 + 1 /* padding */]; + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 803CDC90-803CDCC0 02ADB0 0030+00 0/0 1/1 0/0 .data __vt__17J3DLockedMaterial */ +SECTION_DATA extern void* __vt__17J3DLockedMaterial[12] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)calc__17J3DLockedMaterialFPA4_Cf, + (void*)calcDiffTexMtx__11J3DMaterialFPA4_Cf, + (void*)makeDisplayList__17J3DLockedMaterialFv, + (void*)makeSharedDisplayList__17J3DLockedMaterialFv, + (void*)load__17J3DLockedMaterialFv, + (void*)loadSharedDL__17J3DLockedMaterialFv, + (void*)patch__17J3DLockedMaterialFv, + (void*)diff__17J3DLockedMaterialFUl, + (void*)reset__17J3DLockedMaterialFv, + (void*)change__17J3DLockedMaterialFv, +}; + +/* 803CDCC0-803CDCF0 02ADE0 0030+00 0/0 1/1 0/0 .data __vt__18J3DPatchedMaterial */ +SECTION_DATA extern void* __vt__18J3DPatchedMaterial[12] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)calc__11J3DMaterialFPA4_Cf, + (void*)calcDiffTexMtx__11J3DMaterialFPA4_Cf, + (void*)makeDisplayList__18J3DPatchedMaterialFv, + (void*)makeSharedDisplayList__18J3DPatchedMaterialFv, + (void*)load__18J3DPatchedMaterialFv, + (void*)loadSharedDL__18J3DPatchedMaterialFv, + (void*)patch__11J3DMaterialFv, + (void*)diff__11J3DMaterialFUl, + (void*)reset__18J3DPatchedMaterialFv, + (void*)change__18J3DPatchedMaterialFv, +}; + +/* 803CDCF0-803CDD20 02AE10 0030+00 0/0 6/6 0/0 .data __vt__11J3DMaterial */ +SECTION_DATA extern void* __vt__11J3DMaterial[12] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)calc__11J3DMaterialFPA4_Cf, + (void*)calcDiffTexMtx__11J3DMaterialFPA4_Cf, + (void*)makeDisplayList__11J3DMaterialFv, + (void*)makeSharedDisplayList__11J3DMaterialFv, + (void*)load__11J3DMaterialFv, + (void*)loadSharedDL__11J3DMaterialFv, + (void*)patch__11J3DMaterialFv, + (void*)diff__11J3DMaterialFUl, + (void*)reset__11J3DMaterialFv, + (void*)change__11J3DMaterialFv, +}; + +/* 803CDD20-803CDD9C 02AE40 007C+00 2/2 7/7 0/0 .data __vt__10J3DPEBlock */ +SECTION_DATA extern void* __vt__10J3DPEBlock[31] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__10J3DPEBlockFP10J3DPEBlock, + (void*)NULL, + (void*)patch__10J3DPEBlockFv, + (void*)diff__10J3DPEBlockFUl, + (void*)diffFog__10J3DPEBlockFv, + (void*)diffBlend__10J3DPEBlockFv, + (void*)countDLSize__10J3DPEBlockFv, + (void*)NULL, + (void*)setFog__10J3DPEBlockF6J3DFog, + (void*)setFog__10J3DPEBlockFP6J3DFog, + (void*)getFog__10J3DPEBlockFv, + (void*)setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp, + (void*)setAlphaComp__10J3DPEBlockFRC12J3DAlphaComp, + (void*)getAlphaComp__10J3DPEBlockFv, + (void*)setBlend__10J3DPEBlockFPC8J3DBlend, + (void*)setBlend__10J3DPEBlockFRC8J3DBlend, + (void*)getBlend__10J3DPEBlockFv, + (void*)setZMode__10J3DPEBlockFPC8J3DZMode, + (void*)setZMode__10J3DPEBlockF8J3DZMode, + (void*)getZMode__10J3DPEBlockFv, + (void*)setZCompLoc__10J3DPEBlockFPCUc, + (void*)setZCompLoc__10J3DPEBlockFUc, + (void*)getZCompLoc__10J3DPEBlockCFv, + (void*)setDither__10J3DPEBlockFPCUc, + (void*)setDither__10J3DPEBlockFUc, + (void*)getDither__10J3DPEBlockCFv, + (void*)getFogOffset__10J3DPEBlockCFv, + (void*)setFogOffset__10J3DPEBlockFUl, + (void*)__dt__10J3DPEBlockFv, +}; + +/* 803CDD9C-803CDDE8 02AEBC 004C+00 2/2 1/1 0/0 .data __vt__15J3DIndBlockNull */ +SECTION_DATA extern void* __vt__15J3DIndBlockNull[19] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__15J3DIndBlockNullFP11J3DIndBlock, + (void*)diff__15J3DIndBlockNullFUl, + (void*)load__15J3DIndBlockNullFv, + (void*)countDLSize__11J3DIndBlockFv, + (void*)getType__15J3DIndBlockNullFv, + (void*)setIndTexStageNum__11J3DIndBlockFUc, + (void*)getIndTexStageNum__11J3DIndBlockCFv, + (void*)setIndTexOrder__11J3DIndBlockFUl14J3DIndTexOrder, + (void*)setIndTexOrder__11J3DIndBlockFUlPC14J3DIndTexOrder, + (void*)getIndTexOrder__11J3DIndBlockFUl, + (void*)setIndTexMtx__11J3DIndBlockFUlPC12J3DIndTexMtx, + (void*)setIndTexMtx__11J3DIndBlockFUl12J3DIndTexMtx, + (void*)getIndTexMtx__11J3DIndBlockFUl, + (void*)setIndTexCoordScale__11J3DIndBlockFUlPC19J3DIndTexCoordScale, + (void*)setIndTexCoordScale__11J3DIndBlockFUl19J3DIndTexCoordScale, + (void*)getIndTexCoordScale__11J3DIndBlockFUl, + (void*)__dt__15J3DIndBlockNullFv, +}; + +/* 803CDDE8-803CDE34 02AF08 004C+00 3/3 2/2 0/0 .data __vt__11J3DIndBlock */ +SECTION_DATA extern void* __vt__11J3DIndBlock[19] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__11J3DIndBlockFP11J3DIndBlock, + (void*)NULL, + (void*)NULL, + (void*)countDLSize__11J3DIndBlockFv, + (void*)NULL, + (void*)setIndTexStageNum__11J3DIndBlockFUc, + (void*)getIndTexStageNum__11J3DIndBlockCFv, + (void*)setIndTexOrder__11J3DIndBlockFUl14J3DIndTexOrder, + (void*)setIndTexOrder__11J3DIndBlockFUlPC14J3DIndTexOrder, + (void*)getIndTexOrder__11J3DIndBlockFUl, + (void*)setIndTexMtx__11J3DIndBlockFUlPC12J3DIndTexMtx, + (void*)setIndTexMtx__11J3DIndBlockFUl12J3DIndTexMtx, + (void*)getIndTexMtx__11J3DIndBlockFUl, + (void*)setIndTexCoordScale__11J3DIndBlockFUlPC19J3DIndTexCoordScale, + (void*)setIndTexCoordScale__11J3DIndBlockFUl19J3DIndTexCoordScale, + (void*)getIndTexCoordScale__11J3DIndBlockFUl, + (void*)__dt__11J3DIndBlockFv, +}; + +/* 803CDE34-803CDEA0 02AF54 006C+00 3/3 5/5 0/0 .data __vt__14J3DTexGenBlock */ +SECTION_DATA extern void* __vt__14J3DTexGenBlock[27] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)reset__14J3DTexGenBlockFP14J3DTexGenBlock, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)NULL, + (void*)countDLSize__14J3DTexGenBlockFv, + (void*)NULL, + (void*)setTexGenNum__14J3DTexGenBlockFPCUl, + (void*)setTexGenNum__14J3DTexGenBlockFUl, + (void*)getTexGenNum__14J3DTexGenBlockCFv, + (void*)setTexCoord__14J3DTexGenBlockFUlPC11J3DTexCoord, + (void*)getTexCoord__14J3DTexGenBlockFUl, + (void*)setTexMtx__14J3DTexGenBlockFUlP9J3DTexMtx, + (void*)getTexMtx__14J3DTexGenBlockFUl, + (void*)setNBTScale__14J3DTexGenBlockFPC11J3DNBTScale, + (void*)setNBTScale__14J3DTexGenBlockF11J3DNBTScale, + (void*)getNBTScale__14J3DTexGenBlockFv, + (void*)getTexMtxOffset__14J3DTexGenBlockCFv, + (void*)setTexMtxOffset__14J3DTexGenBlockFUl, + (void*)__dt__14J3DTexGenBlockFv, +}; + +/* 803CDEA0-803CDF30 02AFC0 0090+00 3/3 4/4 0/0 .data __vt__13J3DColorBlock */ +SECTION_DATA extern void* __vt__13J3DColorBlock[36] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__13J3DColorBlockFv, + (void*)reset__13J3DColorBlockFP13J3DColorBlock, + (void*)patch__13J3DColorBlockFv, + (void*)patchMatColor__13J3DColorBlockFv, + (void*)patchLight__13J3DColorBlockFv, + (void*)diff__13J3DColorBlockFUl, + (void*)diffAmbColor__13J3DColorBlockFv, + (void*)diffMatColor__13J3DColorBlockFv, + (void*)diffColorChan__13J3DColorBlockFv, + (void*)diffLightObj__13J3DColorBlockFUl, + (void*)countDLSize__13J3DColorBlockFv, + (void*)NULL, + (void*)setMatColor__13J3DColorBlockFUlPC10J3DGXColor, + (void*)setMatColor__13J3DColorBlockFUl10J3DGXColor, + (void*)getMatColor__13J3DColorBlockFUl, + (void*)setAmbColor__13J3DColorBlockFUlPC10J3DGXColor, + (void*)setAmbColor__13J3DColorBlockFUl10J3DGXColor, + (void*)getAmbColor__13J3DColorBlockFUl, + (void*)setColorChanNum__13J3DColorBlockFUc, + (void*)setColorChanNum__13J3DColorBlockFPCUc, + (void*)getColorChanNum__13J3DColorBlockCFv, + (void*)setColorChan__13J3DColorBlockFUlRC12J3DColorChan, + (void*)setColorChan__13J3DColorBlockFUlPC12J3DColorChan, + (void*)getColorChan__13J3DColorBlockFUl, + (void*)setLight__13J3DColorBlockFUlP11J3DLightObj, + (void*)getLight__13J3DColorBlockFUl, + (void*)setCullMode__13J3DColorBlockFPCUc, + (void*)setCullMode__13J3DColorBlockFUc, + (void*)getCullMode__13J3DColorBlockCFv, + (void*)getMatColorOffset__13J3DColorBlockCFv, + (void*)getColorChanOffset__13J3DColorBlockCFv, + (void*)setMatColorOffset__13J3DColorBlockFUl, + (void*)setColorChanOffset__13J3DColorBlockFUl, + (void*)__dt__13J3DColorBlockFv, +}; + +/* 803157A0-803159A0 3100E0 0200+00 0/0 3/3 0/0 .text createColorBlock__11J3DMaterialFUl + */ +J3DColorBlock* J3DMaterial::createColorBlock(u32 param_0) { + J3DColorBlock* rv = NULL; + switch (param_0) { + case 0: + rv = new J3DColorBlockLightOff(); + break; + case 0x40000000: + rv = new J3DColorBlockLightOn(); + break; + case 0x80000000: + rv = new J3DColorBlockAmbientOn(); + break; + } + + return rv; +} + +/* 803159A0-80315B04 3102E0 0164+00 0/0 2/2 0/0 .text createTexGenBlock__11J3DMaterialFUl + */ +J3DTexGenBlock* J3DMaterial::createTexGenBlock(u32 param_0) { + switch (param_0) { + case 0x8000000: + return new J3DTexGenBlock4(); + case 0: + default: + return new J3DTexGenBlockBasic(); + } +} + +/* 80315B04-80315E78 310444 0374+00 0/0 2/2 0/0 .text createTevBlock__11J3DMaterialFi */ +J3DTevBlock* J3DMaterial::createTevBlock(int param_0) { + J3DTevBlock* rv = NULL; + if (param_0 <= 1) { + rv = new J3DTevBlock1(); + } else if (param_0 == 2) { + rv = new J3DTevBlock2(); + } else if (param_0 <= 4) { + rv = new J3DTevBlock4(); + } else if (param_0 <= 16) { + rv = new J3DTevBlock16(); + } + return rv; +} + +/* 80315E78-80315F60 3107B8 00E8+00 0/0 3/3 0/0 .text createIndBlock__11J3DMaterialFi */ +J3DIndBlock* J3DMaterial::createIndBlock(int param_0) { + if (param_0 != 0) { + return new J3DIndBlockFull(); + } + + return new J3DIndBlockNull(); +} + +/* 80315F60-80316100 3108A0 01A0+00 0/0 3/3 0/0 .text createPEBlock__11J3DMaterialFUlUl + */ +J3DPEBlock* J3DMaterial::createPEBlock(u32 createFlag, u32 materialMode) { + J3DPEBlock* rv = NULL; + + if (createFlag == 0) { + if (materialMode & 1) { + rv = new J3DPEBlockOpa(); + return rv; + } else if (materialMode & 2) { + rv = new J3DPEBlockTexEdge(); + return rv; + } else if (materialMode & 4) { + rv = new J3DPEBlockXlu(); + return rv; + } + } + + if (createFlag == 0x10000000) { + rv = new J3DPEBlockFull(); + } else if (createFlag == 0x20000000) { + rv = new J3DPEBlockFogOff(); + } + + return rv; +} + +/* 80316100-80316150 310A40 0050+00 0/0 2/2 0/0 .text calcSizeColorBlock__11J3DMaterialFUl */ +u32 J3DMaterial::calcSizeColorBlock(u32 param_0) { + u32 rv = 0; + switch (param_0) { + case 0: + rv = sizeof(J3DColorBlockLightOff); + break; + case 0x40000000: + rv = sizeof(J3DColorBlockLightOn); + break; + case 0x80000000: + rv = sizeof(J3DColorBlockAmbientOn); + break; + } + + return rv; +} + +/* 80316150-8031617C 310A90 002C+00 0/0 1/1 0/0 .text calcSizeTexGenBlock__11J3DMaterialFUl */ +u32 J3DMaterial::calcSizeTexGenBlock(u32 param_0) { + switch (param_0) { + case 0x8000000: + return sizeof(J3DTexGenBlock4); + case 0: + default: + return sizeof(J3DTexGenBlockBasic); + } +} + +/* 8031617C-803161C4 310ABC 0048+00 0/0 1/1 0/0 .text calcSizeTevBlock__11J3DMaterialFi + */ +u32 J3DMaterial::calcSizeTevBlock(int param_0) { + u32 rv = 0; + if (param_0 <= 1) { + rv = sizeof(J3DTevBlock1); + } else if (param_0 == 2) { + rv = sizeof(J3DTevBlock2); + } else if (param_0 <= 4) { + rv = sizeof(J3DTevBlock4); + } else if (param_0 <= 16) { + rv = sizeof(J3DTevBlock16); + } + return rv; +} + +/* 803161C4-803161D8 310B04 0014+00 0/0 2/2 0/0 .text calcSizeIndBlock__11J3DMaterialFi + */ +u32 J3DMaterial::calcSizeIndBlock(int param_0) { + if (param_0 != 0) { + return sizeof(J3DIndBlockFull); + } + + return sizeof(J3DIndBlockNull); +} + +/* 803161D8-80316240 310B18 0068+00 0/0 2/2 0/0 .text calcSizePEBlock__11J3DMaterialFUlUl + */ +u32 J3DMaterial::calcSizePEBlock(u32 param_0, u32 param_1) { + u32 rv = 0; + if (param_0 == 0) { + if (param_1 & 1) { + rv = sizeof(J3DPEBlockOpa); + } else if (param_1 & 2) { + rv = sizeof(J3DPEBlockTexEdge); + } else if (param_1 & 4) { + rv = sizeof(J3DPEBlockXlu); + } + } + else if (param_0 == 0x10000000) { + rv = sizeof(J3DPEBlockFull); + } else if (param_0 == 0x20000000) { + rv = sizeof(J3DPEBlockFogOff); + } + return rv; +} + +/* 80316240-80316290 310B80 0050+00 2/2 5/5 0/0 .text initialize__11J3DMaterialFv */ +void J3DMaterial::initialize() { + mShape = NULL; + mNext = NULL; + mJoint = NULL; + mMaterialMode = 1; + mIndex = -1; + mInvalid = 0; + mDiffFlag = 0; + mColorBlock = NULL; + mTexGenBlock = NULL; + mTevBlock = NULL; + mIndBlock = NULL; + mPEBlock = NULL; + mpOrigMaterial = NULL; + mMaterialAnm = NULL; + mSharedDLObj = NULL; +} + +/* 80316290-80316344 310BD0 00B4+00 0/0 2/2 0/0 .text countDLSize__11J3DMaterialFv */ +u32 J3DMaterial::countDLSize() { + return (mColorBlock->countDLSize() + mTexGenBlock->countDLSize() + mTevBlock->countDLSize() + + mIndBlock->countDLSize() + mPEBlock->countDLSize() + 31) & ~0x1f; +} + +/* 80316344-80316620 310C84 02DC+00 2/2 0/0 0/0 .text + * makeDisplayList_private__11J3DMaterialFP17J3DDisplayListObj */ +void J3DMaterial::makeDisplayList_private(J3DDisplayListObj* param_0) { + param_0->beginDL(); + mTevBlock->load(); + mIndBlock->load(); + mPEBlock->load(); + J3DGDSetGenMode(mTexGenBlock->getTexGenNum(), mColorBlock->getColorChanNum(), mTevBlock->getTevStageNum(), mIndBlock->getIndTexStageNum(), (GXCullMode)(u8)mColorBlock->getCullMode()); + mTexGenBlock->load(); + mColorBlock->load(); + J3DGDSetNumChans(mColorBlock->getColorChanNum()); + J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum()); + param_0->endDL(); +} + +/* 80316620-80316668 310F60 0048+00 1/0 0/0 0/0 .text makeDisplayList__11J3DMaterialFv */ +void J3DMaterial::makeDisplayList() { + if (!j3dSys.getMatPacket()->isLocked()) { + j3dSys.getMatPacket()->mDiffFlag = mDiffFlag; + makeDisplayList_private(j3dSys.getMatPacket()->getDisplayListObj()); + } +} + +/* 80316668-8031668C 310FA8 0024+00 1/0 0/0 0/0 .text makeSharedDisplayList__11J3DMaterialFv */ +void J3DMaterial::makeSharedDisplayList() { + makeDisplayList_private(mSharedDLObj); +} + +/* 8031668C-803166DC 310FCC 0050+00 1/0 0/0 0/0 .text load__11J3DMaterialFv */ +void J3DMaterial::load() { + j3dSys.setMaterialMode(mMaterialMode); + if (!j3dSys.checkFlag(2)) { + loadNBTScale(*mTexGenBlock->getNBTScale()); + } +} + +/* 803166DC-80316740 31101C 0064+00 1/0 0/0 0/0 .text loadSharedDL__11J3DMaterialFv */ +void J3DMaterial::loadSharedDL() { + j3dSys.setMaterialMode(mMaterialMode); + if (!j3dSys.checkFlag(2)) { + mSharedDLObj->callDL(); + loadNBTScale(*mTexGenBlock->getNBTScale()); + } +} + +/* 80316740-803167D8 311080 0098+00 2/0 0/0 0/0 .text patch__11J3DMaterialFv */ +void J3DMaterial::patch() { + j3dSys.getMatPacket()->mDiffFlag = mDiffFlag; + j3dSys.getMatPacket()->beginPatch(); + mTevBlock->patch(); + mColorBlock->patch(); + mTexGenBlock->patch(); + j3dSys.getMatPacket()->endPatch(); +} + +/* 803167D8-803169DC 311118 0204+00 2/0 0/0 0/0 .text diff__11J3DMaterialFUl */ +void J3DMaterial::diff(u32 param_0) { + if (j3dSys.getMatPacket()->isEnabled_Diff()) { + j3dSys.getMatPacket()->beginDiff(); + mTevBlock->diff(param_0); + mIndBlock->diff(param_0); + mPEBlock->diff(param_0); + if (param_0 & 0x2000000) { + J3DGDSetGenMode_3Param(mTexGenBlock->getTexGenNum(), mTevBlock->getTevStageNum(), mIndBlock->getIndTexStageNum()); + J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum()); + } + mTexGenBlock->diff(param_0); + mColorBlock->diff(param_0); + j3dSys.getMatPacket()->endDiff(); + } +} + +/* 803169DC-80316A54 31131C 0078+00 2/0 0/0 0/0 .text calc__11J3DMaterialFPA4_Cf */ +// Matches but changes order of TU vtables (?!) +#ifdef NONMATCHING +void J3DMaterial::calc(f32 const (*param_0)[4]) { + if (j3dSys.checkFlag(0x40000000)) { + mTexGenBlock->calcPostTexMtx(param_0); + } else { + mTexGenBlock->calc(param_0); + } + + calcCurrentMtx(); + setCurrentMtx(); +} +#else +extern "C" void calc__11J3DMaterialFPA4_Cf() { + // asm void J3DMaterial::calc(f32 const (*param_0)[4]) { + // NONMATCHING +} +#endif + +/* 80316A54-80316AB0 311394 005C+00 3/0 0/0 0/0 .text calcDiffTexMtx__11J3DMaterialFPA4_Cf */ +void J3DMaterial::calcDiffTexMtx(f32 const (*param_0)[4]) { + if (j3dSys.checkFlag(0x40000000)) { + mTexGenBlock->calcPostTexMtxWithoutViewMtx(param_0); + } else { + mTexGenBlock->calcWithoutViewMtx(param_0); + } +} + +/* 80316AB0-80316AC8 3113F0 0018+00 1/1 1/1 0/0 .text setCurrentMtx__11J3DMaterialFv */ +void J3DMaterial::setCurrentMtx() { + mShape->setCurrentMtx(mCurrentMtx); +} + +/* 80316AC8-80316D68 311408 02A0+00 1/1 0/0 0/0 .text calcCurrentMtx__11J3DMaterialFv */ +// Issues with setCurrentTexMtx +#ifdef NONMATCHING +void J3DMaterial::calcCurrentMtx() { + if (!j3dSys.checkFlag(0x40000000)) { + mCurrentMtx.setCurrentTexMtx( + mTexGenBlock->getTexCoord(0)->getTexGenMtx(), + mTexGenBlock->getTexCoord(1)->getTexGenMtx(), + mTexGenBlock->getTexCoord(2)->getTexGenMtx(), + mTexGenBlock->getTexCoord(3)->getTexGenMtx(), + mTexGenBlock->getTexCoord(4)->getTexGenMtx(), + mTexGenBlock->getTexCoord(5)->getTexGenMtx(), + mTexGenBlock->getTexCoord(6)->getTexGenMtx(), + mTexGenBlock->getTexCoord(7)->getTexGenMtx() + ); + } else { + mCurrentMtx.setCurrentTexMtx( + mTexGenBlock->getTexCoord(0)->getTexMtxReg(), + mTexGenBlock->getTexCoord(1)->getTexMtxReg(), + mTexGenBlock->getTexCoord(2)->getTexMtxReg(), + mTexGenBlock->getTexCoord(3)->getTexMtxReg(), + mTexGenBlock->getTexCoord(4)->getTexMtxReg(), + mTexGenBlock->getTexCoord(5)->getTexMtxReg(), + mTexGenBlock->getTexCoord(6)->getTexMtxReg(), + mTexGenBlock->getTexCoord(7)->getTexMtxReg() + ); + } +} +#else +void J3DMaterial::calcCurrentMtx() { + // NONMATCHING +} +#endif + +/* 80316D68-80316E14 3116A8 00AC+00 1/1 0/0 0/0 .text copy__11J3DMaterialFP11J3DMaterial + */ +void J3DMaterial::copy(J3DMaterial* param_0) { + mColorBlock->reset(param_0->mColorBlock); + mTexGenBlock->reset(param_0->mTexGenBlock); + mTevBlock->reset(param_0->mTevBlock); + mIndBlock->reset(param_0->mIndBlock); + mPEBlock->reset(param_0->mPEBlock); +} + +/* 80316E14-80316E70 311754 005C+00 1/0 0/0 0/0 .text reset__11J3DMaterialFv */ +void J3DMaterial::reset() { + if ((~mDiffFlag & 0x80000000) == 0) { + mDiffFlag &= ~0x80000000; + mMaterialMode = mpOrigMaterial->mMaterialMode; + mInvalid = mpOrigMaterial->mInvalid; + mMaterialAnm = NULL; + copy(mpOrigMaterial); + } +} + +/* 80316E70-80316E90 3117B0 0020+00 1/0 0/0 0/0 .text change__11J3DMaterialFv */ +void J3DMaterial::change() { + if ((mDiffFlag & 0xc0000000) == 0) { + mDiffFlag |= 0x80000000; + mMaterialAnm = NULL; + } +} + +/* 80316E90-80316F24 3117D0 0094+00 0/0 2/2 0/0 .text newSharedDisplayList__11J3DMaterialFUl */ +s32 J3DMaterial::newSharedDisplayList(u32 param_0) { + if (mSharedDLObj == NULL) { + mSharedDLObj = new J3DDisplayListObj(); + if (mSharedDLObj == NULL) { + return 4; + } + s32 res = mSharedDLObj->newDisplayList(param_0); + switch (res) { + case kJ3DError_Success: + break; + default: + return res; + } + } + return 0; +} + +/* 80316F24-80316FB8 311864 0094+00 0/0 2/2 0/0 .text newSingleSharedDisplayList__11J3DMaterialFUl + */ +s32 J3DMaterial::newSingleSharedDisplayList(u32 param_0) { + if (mSharedDLObj == NULL) { + mSharedDLObj = new J3DDisplayListObj(); + if (mSharedDLObj == NULL) { + return 4; + } + s32 res = mSharedDLObj->newSingleDisplayList(param_0); + switch (res) { + case kJ3DError_Success: + break; + default: + return res; + } + } + return 0; +} + +/* 80316FB8-80316FD8 3118F8 0020+00 0/0 1/1 0/0 .text initialize__18J3DPatchedMaterialFv + */ +void J3DPatchedMaterial::initialize() { + J3DMaterial::initialize(); +} + +/* 80316FD8-80316FDC 311918 0004+00 1/0 0/0 0/0 .text makeDisplayList__18J3DPatchedMaterialFv */ +extern "C" void makeDisplayList__18J3DPatchedMaterialFv() { +//void J3DPatchedMaterial::makeDisplayList() { + /* empty function */ +} + +/* 80316FDC-80316FE0 31191C 0004+00 1/0 0/0 0/0 .text + * makeSharedDisplayList__18J3DPatchedMaterialFv */ +void J3DPatchedMaterial::makeSharedDisplayList() { + /* empty function */ +} + +/* 80316FE0-80316FFC 311920 001C+00 1/0 0/0 0/0 .text load__18J3DPatchedMaterialFv */ +void J3DPatchedMaterial::load() { + j3dSys.setMaterialMode(mMaterialMode); + if (j3dSys.checkFlag(2)) { + return; + } +} + +/* 80316FFC-8031703C 31193C 0040+00 1/0 0/0 0/0 .text loadSharedDL__18J3DPatchedMaterialFv */ +void J3DPatchedMaterial::loadSharedDL() { + j3dSys.setMaterialMode(mMaterialMode); + if (!j3dSys.checkFlag(0x02)) + mSharedDLObj->callDL(); +} + +/* 8031703C-80317040 31197C 0004+00 1/0 0/0 0/0 .text reset__18J3DPatchedMaterialFv */ +void J3DPatchedMaterial::reset() { + /* empty function */ +} + +/* 80317040-80317044 311980 0004+00 1/0 0/0 0/0 .text change__18J3DPatchedMaterialFv */ +void J3DPatchedMaterial::change() { + /* empty function */ +} + +/* 80317044-80317064 311984 0020+00 0/0 1/1 0/0 .text initialize__17J3DLockedMaterialFv + */ +void J3DLockedMaterial::initialize() { + J3DMaterial::initialize(); +} + +/* 80317064-80317068 3119A4 0004+00 1/0 0/0 0/0 .text makeDisplayList__17J3DLockedMaterialFv */ +void J3DLockedMaterial::makeDisplayList() { + /* empty function */ +} + +/* 80317068-8031706C 3119A8 0004+00 1/0 0/0 0/0 .text makeSharedDisplayList__17J3DLockedMaterialFv + */ +void J3DLockedMaterial::makeSharedDisplayList() { + /* empty function */ +} + +/* 8031706C-80317088 3119AC 001C+00 1/0 0/0 0/0 .text load__17J3DLockedMaterialFv */ +void J3DLockedMaterial::load() { + j3dSys.setMaterialMode(mMaterialMode); + if (j3dSys.checkFlag(2)) { + return; + } +} + +/* 80317088-803170C8 3119C8 0040+00 1/0 0/0 0/0 .text loadSharedDL__17J3DLockedMaterialFv + */ +void J3DLockedMaterial::loadSharedDL() { + j3dSys.setMaterialMode(mMaterialMode); + if (!j3dSys.checkFlag(0x02)) + mSharedDLObj->callDL(); +} + +/* 803170C8-803170CC 311A08 0004+00 1/0 0/0 0/0 .text patch__17J3DLockedMaterialFv */ +void J3DLockedMaterial::patch() { + /* empty function */ +} + +/* 803170CC-803170D0 311A0C 0004+00 1/0 0/0 0/0 .text diff__17J3DLockedMaterialFUl */ +void J3DLockedMaterial::diff(u32 param_0) { + /* empty function */ +} + +/* 803170D0-803170D4 311A10 0004+00 1/0 0/0 0/0 .text calc__17J3DLockedMaterialFPA4_Cf */ +extern "C" void calc__17J3DLockedMaterialFPA4_Cf() { + /* empty function */ +} + +/* 803170D4-803170D8 311A14 0004+00 1/0 0/0 0/0 .text reset__17J3DLockedMaterialFv */ +void J3DLockedMaterial::reset() { + /* empty function */ +} + +/* 803170D8-803170DC 311A18 0004+00 1/0 0/0 0/0 .text change__17J3DLockedMaterialFv */ +void J3DLockedMaterial::change() { + /* empty function */ +} + +/* 803170DC-80317138 311A1C 005C+00 0/0 1/0 0/0 .text __dt__21J3DColorBlockLightOffFv */ +void __dt__21J3DColorBlockLightOffFv() { +//asm J3DColorBlockLightOff::~J3DColorBlockLightOff() { + // NONMATCHING +} + +/* 80317138-80317180 311A78 0048+00 1/0 0/0 0/0 .text __dt__13J3DColorBlockFv */ +// J3DColorBlock::~J3DColorBlock() { +extern "C" void __dt__13J3DColorBlockFv() { + // NONMATCHING +} + +/* 80317180-803171DC 311AC0 005C+00 0/0 1/0 0/0 .text __dt__21J3DTexGenBlockPatchedFv */ +J3DTexGenBlockPatched::~J3DTexGenBlockPatched() { + // NONMATCHING +} + +/* 803171DC-80317224 311B1C 0048+00 1/0 0/0 0/0 .text __dt__14J3DTexGenBlockFv */ +// J3DTexGenBlock::~J3DTexGenBlock() { +extern "C" void __dt__14J3DTexGenBlockFv() { + // NONMATCHING +} + +/* 80317224-8031726C 311B64 0048+00 0/0 1/0 0/0 .text __dt__11J3DTevBlockFv */ +// J3DTevBlock::~J3DTevBlock() { +extern "C" void __dt__11J3DTevBlockFv() { + // NONMATCHING +} + +/* 8031726C-803172B4 311BAC 0048+00 1/0 0/0 0/0 .text __dt__11J3DIndBlockFv */ +void __dt__11J3DIndBlockFv() { + // NONMATCHING +} + +/* 803172B4-803172FC 311BF4 0048+00 1/0 0/0 0/0 .text __dt__10J3DPEBlockFv */ +// J3DPEBlock::~J3DPEBlock() { +extern "C" void __dt__10J3DPEBlockFv() { + // NONMATCHING +} + +/* 803172FC-80317304 311C3C 0008+00 1/0 1/0 0/0 .text countDLSize__14J3DTexGenBlockFv */ +s32 J3DTexGenBlock::countDLSize() { + return false; +} + +/* 80317304-8031730C 311C44 0008+00 1/0 1/0 0/0 .text countDLSize__13J3DColorBlockFv */ +s32 J3DColorBlock::countDLSize() { + return false; +} + +/* 8031730C-80317314 311C4C 0008+00 0/0 2/0 0/0 .text countDLSize__11J3DTevBlockFv */ +s32 J3DTevBlock::countDLSize() { + return false; +} + +/* 80317314-8031731C 311C54 0008+00 2/0 0/0 0/0 .text countDLSize__11J3DIndBlockFv */ +s32 J3DIndBlock::countDLSize() { + return false; +} + +/* 8031731C-80317324 311C5C 0008+00 1/0 1/0 0/0 .text countDLSize__10J3DPEBlockFv */ +s32 J3DPEBlock::countDLSize() { + return false; +} + +/* 80317324-80317328 311C64 0004+00 1/0 1/0 0/0 .text load__13J3DColorBlockFv */ +extern "C" void load__13J3DColorBlockFv() { + /* empty function */ +} + +/* 80317328-80317330 311C68 0008+00 1/0 1/0 0/0 .text getCullMode__13J3DColorBlockCFv */ +s32 J3DColorBlock::getCullMode() const { + return 2; +} + +/* 80317330-80317334 311C70 0004+00 0/0 2/0 0/0 .text load__11J3DTevBlockFv */ +void J3DTevBlock::load() { + /* empty function */ +} + +/* 80317334-8031733C 311C74 0008+00 1/0 2/0 0/0 .text getNBTScale__14J3DTexGenBlockFv */ +J3DNBTScale* J3DTexGenBlock::getNBTScale() { + return NULL; +} + +/* 8031733C-80317340 311C7C 0004+00 1/0 1/0 0/0 .text patch__13J3DColorBlockFv */ +void J3DColorBlock::patch() { + /* empty function */ +} + +/* 80317340-80317344 311C80 0004+00 1/0 1/0 0/0 .text diff__13J3DColorBlockFUl */ +void J3DColorBlock::diff(u32 param_0) { + /* empty function */ +} + +/* 80317344-80317348 311C84 0004+00 1/0 4/0 0/0 .text diff__10J3DPEBlockFUl */ +void J3DPEBlock::diff(u32 param_0) { + /* empty function */ +} + +/* 80317348-8031734C 311C88 0004+00 1/0 4/0 0/0 .text reset__10J3DPEBlockFP10J3DPEBlock + */ +extern "C" void reset__10J3DPEBlockFP10J3DPEBlock() { + /* empty function */ +} + +/* 8031734C-80317350 311C8C 0004+00 1/0 0/0 0/0 .text reset__11J3DIndBlockFP11J3DIndBlock + */ +extern "C" void reset__11J3DIndBlockFP11J3DIndBlock() { + /* empty function */ +} + +/* 80317350-80317354 311C90 0004+00 0/0 1/0 0/0 .text reset__11J3DTevBlockFP11J3DTevBlock + */ +extern "C" void reset__11J3DTevBlockFP11J3DTevBlock(J3DTevBlock* param_0) { + /* empty function */ +} + +/* 80317354-80317358 311C94 0004+00 1/0 1/0 0/0 .text reset__14J3DTexGenBlockFP14J3DTexGenBlock */ +extern "C" void reset__14J3DTexGenBlockFP14J3DTexGenBlock() { + /* empty function */ +} + +/* 80317358-8031735C 311C98 0004+00 1/0 1/0 0/0 .text reset__13J3DColorBlockFP13J3DColorBlock */ +void J3DColorBlock::reset(J3DColorBlock* param_0) { + /* empty function */ +} + +/* 8031735C-80317360 311C9C 0004+00 1/0 5/0 0/0 .text diffFog__10J3DPEBlockFv */ +void J3DPEBlock::diffFog() { + /* empty function */ +} + +/* 80317360-80317364 311CA0 0004+00 1/0 4/0 0/0 .text diffBlend__10J3DPEBlockFv */ +void J3DPEBlock::diffBlend() { + /* empty function */ +} + +/* 80317364-80317368 311CA4 0004+00 1/0 5/0 0/0 .text setFog__10J3DPEBlockFP6J3DFog */ +void J3DPEBlock::setFog(J3DFog* param_0) { + /* empty function */ +} + +/* 80317368-8031736C 311CA8 0004+00 1/0 5/0 0/0 .text setFog__10J3DPEBlockF6J3DFog */ +void J3DPEBlock::setFog(J3DFog param_0) { + /* empty function */ +} + +/* 8031736C-80317370 311CAC 0004+00 1/0 4/0 0/0 .text setAlphaComp__10J3DPEBlockFPC12J3DAlphaComp + */ +void J3DPEBlock::setAlphaComp(J3DAlphaComp const* param_0) { + /* empty function */ +} + +/* 80317370-80317374 311CB0 0004+00 1/0 4/0 0/0 .text setBlend__10J3DPEBlockFPC8J3DBlend + */ +void J3DPEBlock::setBlend(J3DBlend const* param_0) { + /* empty function */ +} + +/* 80317374-80317378 311CB4 0004+00 1/0 4/0 0/0 .text setZMode__10J3DPEBlockFPC8J3DZMode + */ +void J3DPEBlock::setZMode(J3DZMode const* param_0) { + /* empty function */ +} + +/* 80317378-8031737C 311CB8 0004+00 1/0 4/0 0/0 .text setZCompLoc__10J3DPEBlockFPCUc */ +void J3DPEBlock::setZCompLoc(u8 const* param_0) { + /* empty function */ +} + +/* 8031737C-80317380 311CBC 0004+00 1/0 4/0 0/0 .text setDither__10J3DPEBlockFUc */ +void J3DPEBlock::setDither(u8 param_0) { + /* empty function */ +} + +/* 80317380-80317384 311CC0 0004+00 1/0 4/0 0/0 .text setDither__10J3DPEBlockFPCUc */ +void J3DPEBlock::setDither(u8 const* param_0) { + /* empty function */ +} + +/* 80317384-8031738C 311CC4 0008+00 1/0 4/0 0/0 .text getDither__10J3DPEBlockCFv */ +u8 J3DPEBlock::getDither() const { + return 0; +} + +/* 8031738C-80317394 311CCC 0008+00 1/0 5/0 0/0 .text getFogOffset__10J3DPEBlockCFv */ +u32 J3DPEBlock::getFogOffset() const { + return 0; +} + +/* 80317394-80317398 311CD4 0004+00 1/0 5/0 0/0 .text setFogOffset__10J3DPEBlockFUl */ +void J3DPEBlock::setFogOffset(u32 param_0) { + /* empty function */ +} + +/* 80317398-8031739C 311CD8 0004+00 1/0 0/0 0/0 .text diff__15J3DIndBlockNullFUl */ +void J3DIndBlockNull::diff(u32 param_0) { + /* empty function */ +} + +/* 8031739C-803173A0 311CDC 0004+00 1/0 0/0 0/0 .text load__15J3DIndBlockNullFv */ +void J3DIndBlockNull::load() { + /* empty function */ +} + +/* 803173A0-803173A4 311CE0 0004+00 1/0 0/0 0/0 .text reset__15J3DIndBlockNullFP11J3DIndBlock */ +extern "C" void reset__15J3DIndBlockNullFP11J3DIndBlock() { + /* empty function */ +} + +/* 803173A4-803173B0 311CE4 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockNullFv */ +u32 J3DIndBlockNull::getType() { + return 'IBLN'; +} + +/* 803173B0-8031740C 311CF0 005C+00 1/0 0/0 0/0 .text __dt__15J3DIndBlockNullFv */ +J3DIndBlockNull::~J3DIndBlockNull() { + // NONMATCHING +} + +/* 8031740C-80317410 311D4C 0004+00 2/0 0/0 0/0 .text + * setIndTexOrder__11J3DIndBlockFUlPC14J3DIndTexOrder */ +void J3DIndBlock::setIndTexOrder(u32 param_0, J3DIndTexOrder const* param_1) { + /* empty function */ +} + +/* 80317410-80317414 311D50 0004+00 2/0 0/0 0/0 .text + * setIndTexOrder__11J3DIndBlockFUl14J3DIndTexOrder */ +void J3DIndBlock::setIndTexOrder(u32 param_0, J3DIndTexOrder param_1) { + /* empty function */ +} + +/* 80317414-80317418 311D54 0004+00 2/0 0/0 0/0 .text + * setIndTexMtx__11J3DIndBlockFUlPC12J3DIndTexMtx */ +void J3DIndBlock::setIndTexMtx(u32 param_0, J3DIndTexMtx const* param_1) { + /* empty function */ +} + +/* 80317418-8031741C 311D58 0004+00 2/0 0/0 0/0 .text + * setIndTexCoordScale__11J3DIndBlockFUlPC19J3DIndTexCoordScale */ +void J3DIndBlock::setIndTexCoordScale(u32 param_0, J3DIndTexCoordScale const* param_1) { + /* empty function */ +} + +/* 8031741C-80317420 311D5C 0004+00 1/0 1/0 0/0 .text setTexGenNum__14J3DTexGenBlockFPCUl + */ +void J3DTexGenBlock::setTexGenNum(u32 const* param_0) { + /* empty function */ +} + +/* 80317420-80317424 311D60 0004+00 1/0 2/0 0/0 .text setNBTScale__14J3DTexGenBlockF11J3DNBTScale + */ +void J3DTexGenBlock::setNBTScale(J3DNBTScale param_0) { + /* empty function */ +} + +/* 80317424-80317428 311D64 0004+00 1/0 2/0 0/0 .text + * setNBTScale__14J3DTexGenBlockFPC11J3DNBTScale */ +void J3DTexGenBlock::setNBTScale(J3DNBTScale const* param_0) { + /* empty function */ +} + +/* 80317428-80317430 311D68 0008+00 1/0 1/0 0/0 .text getTexMtxOffset__14J3DTexGenBlockCFv */ +bool J3DTexGenBlock::getTexMtxOffset() const { + return false; +} + +/* 80317430-80317434 311D70 0004+00 1/0 1/0 0/0 .text setTexMtxOffset__14J3DTexGenBlockFUl */ +void J3DTexGenBlock::setTexMtxOffset(u32 param_0) { + /* empty function */ +} + +/* 80317434-80317438 311D74 0004+00 1/0 1/0 0/0 .text patchMatColor__13J3DColorBlockFv */ +void J3DColorBlock::patchMatColor() { + /* empty function */ +} + +/* 80317438-8031743C 311D78 0004+00 1/0 3/0 0/0 .text diffAmbColor__13J3DColorBlockFv */ +void J3DColorBlock::diffAmbColor() { + /* empty function */ +} + +/* 8031743C-80317440 311D7C 0004+00 1/0 1/0 0/0 .text diffMatColor__13J3DColorBlockFv */ +void J3DColorBlock::diffMatColor() { + /* empty function */ +} + +/* 80317440-80317444 311D80 0004+00 1/0 1/0 0/0 .text diffColorChan__13J3DColorBlockFv */ +void J3DColorBlock::diffColorChan() { + /* empty function */ +} + +/* 80317444-80317448 311D84 0004+00 1/0 3/0 0/0 .text diffLightObj__13J3DColorBlockFUl */ +void J3DColorBlock::diffLightObj(u32 param_0) { + /* empty function */ +} + +/* 80317448-8031744C 311D88 0004+00 1/0 1/0 0/0 .text + * setMatColor__13J3DColorBlockFUlPC10J3DGXColor */ +void J3DColorBlock::setMatColor(u32 param_0, J3DGXColor const* param_1) { + /* empty function */ +} + +/* 8031744C-80317450 311D8C 0004+00 1/0 1/0 0/0 .text setColorChanNum__13J3DColorBlockFPCUc */ +void J3DColorBlock::setColorChanNum(u8 const* param_0) { + /* empty function */ +} + +/* 80317450-80317454 311D90 0004+00 1/0 1/0 0/0 .text + * setColorChan__13J3DColorBlockFUlPC12J3DColorChan */ +void J3DColorBlock::setColorChan(u32 param_0, J3DColorChan const* param_1) { + /* empty function */ +} + +/* 80317454-8031745C 311D94 0008+00 1/0 3/0 0/0 .text getLight__13J3DColorBlockFUl */ +bool J3DColorBlock::getLight(u32 param_0) { + return false; +} + +/* 8031745C-80317460 311D9C 0004+00 1/0 1/0 0/0 .text setCullMode__13J3DColorBlockFUc */ +void J3DColorBlock::setCullMode(u8 param_0) { + /* empty function */ +} + +/* 80317460-80317464 311DA0 0004+00 1/0 1/0 0/0 .text setCullMode__13J3DColorBlockFPCUc + */ +void J3DColorBlock::setCullMode(u8 const* param_0) { + /* empty function */ +} + +/* 80317464-8031746C 311DA4 0008+00 1/0 1/0 0/0 .text getMatColorOffset__13J3DColorBlockCFv */ +u32 J3DColorBlock::getMatColorOffset() const { + return 0; +} + +/* 8031746C-80317474 311DAC 0008+00 1/0 1/0 0/0 .text getColorChanOffset__13J3DColorBlockCFv */ +u32 J3DColorBlock::getColorChanOffset() const { + return 0; +} + +/* 80317474-80317478 311DB4 0004+00 1/0 1/0 0/0 .text setMatColorOffset__13J3DColorBlockFUl */ +void J3DColorBlock::setMatColorOffset(u32 param_0) { + /* empty function */ +} + +/* 80317478-8031747C 311DB8 0004+00 1/0 1/0 0/0 .text setColorChanOffset__13J3DColorBlockFUl */ +void J3DColorBlock::setColorChanOffset(u32 param_0) { + /* empty function */ +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DPacket.cpp b/src/JSystem/J3DGraphBase/J3DPacket.cpp new file mode 100644 index 0000000000..c43cce816c --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DPacket.cpp @@ -0,0 +1,403 @@ +#include "JSystem/J3DGraphBase/J3DPacket.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "dolphin/os/OSCache.h" +#include "dolphin/os/OSInterrupt.h" +#include "string.h" + +J3DError J3DDisplayListObj::newDisplayList(u32 capacity) { + mCapacity = ALIGN_NEXT(capacity, 0x20); + mpData[0] = new (0x20) char[mCapacity]; + mpData[1] = new (0x20) char[mCapacity]; + mSize = 0; + + if (mpData[0] == NULL || mpData[1] == NULL) + return kJ3DError_Alloc; + + return kJ3DError_Success; +} + +J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) { + mCapacity = ALIGN_NEXT(capacity, 0x20); + mpData[0] = new (0x20) char[mCapacity]; + mpData[1] = mpData[0]; + mSize = 0; + + if (mpData[0] == NULL) + return kJ3DError_Alloc; + + return kJ3DError_Success; +} + +/* 8031256C-803125E4 30CEAC 0078+00 0/0 1/1 0/0 .text single_To_Double__17J3DDisplayListObjFv */ +J3DError J3DDisplayListObj::single_To_Double() { + if (mpData[0] == mpData[1]) { + mpData[1] = new (0x20) char[mCapacity]; + + if (mpData[1] == NULL) + return kJ3DError_Alloc; + + memcpy(mpData[1], mpData[0], mCapacity); + DCStoreRange(mpData[1], mCapacity); + } + + return kJ3DError_Success; +} + +void J3DDisplayListObj::setSingleDisplayList(void* pDLData, u32 size) { + mCapacity = ALIGN_NEXT(size, 0x20); + mpData[0] = pDLData; + mpData[1] = mpData[0]; + mSize = size; +} + +void J3DDisplayListObj::swapBuffer() { + void* pTmp = mpData[0]; + mpData[0] = mpData[1]; + mpData[1] = pTmp; +} + +void J3DDisplayListObj::callDL() const { + GXCallDisplayList(mpData[0], mSize); +} + +/* ############################################################################################## */ +/* 80434C70-80434C80 061990 0010+00 2/2 3/3 0/0 .bss sGDLObj__17J3DDisplayListObj */ +GDLObj J3DDisplayListObj::sGDLObj; + +/* 804515A0-804515A8 000AA0 0004+04 3/3 0/0 0/0 .sbss sInterruptFlag__17J3DDisplayListObj + */ +s32 J3DDisplayListObj::sInterruptFlag; + +/* 80312644-80312698 30CF84 0054+00 2/2 1/1 0/0 .text beginDL__17J3DDisplayListObjFv */ +void J3DDisplayListObj::beginDL() { + swapBuffer(); + sInterruptFlag = OSDisableInterrupts(); + GDInitGDLObj(&sGDLObj, (u8*)mpData[0], mCapacity); + GDSetCurrent(&sGDLObj); +} + +/* 80312698-803126F4 30CFD8 005C+00 1/1 1/1 0/0 .text endDL__17J3DDisplayListObjFv */ +u32 J3DDisplayListObj::endDL() { + GDPadCurr32(); + OSRestoreInterrupts(sInterruptFlag); + mSize = GDGetGDLObjOffset(&sGDLObj); + GDFlushCurrToMem(); + GDSetCurrent(NULL); + return mSize; +} + +/* 803126F4-80312714 30D034 0020+00 0/0 1/1 0/0 .text beginPatch__17J3DDisplayListObjFv + */ +void J3DDisplayListObj::beginPatch() { + beginDL(); +} + +/* 80312714-80312750 30D054 003C+00 0/0 1/1 0/0 .text endPatch__17J3DDisplayListObjFv */ +u32 J3DDisplayListObj::endPatch() { + OSRestoreInterrupts(sInterruptFlag); + GDSetCurrent(NULL); + return mSize; +} + +/* 80312750-80312758 30D090 0008+00 3/0 16/0 10/0 .text entry__9J3DPacketFP13J3DDrawBuffer */ +int J3DPacket::entry(J3DDrawBuffer*) { + return 1; +} + +void J3DPacket::addChildPacket(J3DPacket* pPacket) { + if (mpFirstChild == NULL) { + mpFirstChild = pPacket; + } else { + pPacket->mpNextPacket = mpFirstChild; + mpFirstChild = pPacket; + } +} + +/* ############################################################################################## */ +/* 803CD900-803CD920 02AA20 0020+00 1/1 0/0 0/0 .data sDifferedRegister */ +static u32 sDifferedRegister[8] = { + 0x00000004, 0x00000001, 0x00000002, 0x01000000, 0x10000000, 0x20000000, 0x02000000, 0x08000000, +}; + +/* 803CD920-803CD940 02AA40 0020+00 1/1 0/0 0/0 .data sSizeOfDiffered */ +static s32 sSizeOfDiffered[8] = { + 13, 13, 21, 120, 55, 15, 19, 45, +}; + +/* 80312778-803127B0 30D0B8 0038+00 2/2 0/0 0/0 .text __ct__13J3DDrawPacketFv */ +J3DDrawPacket::J3DDrawPacket() { + mFlags = 0; + mpDisplayListObj = NULL; + mpTexMtxObj = NULL; +} + +/* 803127B0-8031280C 30D0F0 005C+00 3/2 0/0 0/0 .text __dt__13J3DDrawPacketFv */ +J3DDrawPacket::~J3DDrawPacket() {} + +/* 8031280C-80312898 30D14C 008C+00 1/1 1/1 0/0 .text newDisplayList__13J3DDrawPacketFUl + */ +J3DError J3DDrawPacket::newDisplayList(u32 size) { + mpDisplayListObj = new J3DDisplayListObj(); + + if (mpDisplayListObj == NULL) + return kJ3DError_Alloc; + + J3DError ret = mpDisplayListObj->newDisplayList(size); + if (ret != kJ3DError_Success) + return ret; + + return kJ3DError_Success; +} + +/* 80312898-80312924 30D1D8 008C+00 0/0 1/1 0/0 .text newSingleDisplayList__13J3DDrawPacketFUl */ +J3DError J3DDrawPacket::newSingleDisplayList(u32 size) { + mpDisplayListObj = new J3DDisplayListObj(); + + if (mpDisplayListObj == NULL) + return kJ3DError_Alloc; + + J3DError ret = mpDisplayListObj->newSingleDisplayList(size); + if (ret != kJ3DError_Success) + return ret; + + return kJ3DError_Success; +} + +void J3DDrawPacket::draw() { + mpDisplayListObj->callDL(); +} + +/* 80312948-803129A4 30D288 005C+00 0/0 1/1 0/0 .text __ct__12J3DMatPacketFv */ +J3DMatPacket::J3DMatPacket() { + mpInitShapePacket = NULL; + mpShapePacket = NULL; + mpMaterial = NULL; + mDiffFlag = -1; + mpTexture = NULL; + mpMaterialAnm = NULL; +} + +/* 803129A4-80312A04 30D2E4 0060+00 1/0 1/1 0/0 .text __dt__12J3DMatPacketFv */ +J3DMatPacket::~J3DMatPacket() {} + +void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) { + if (mpShapePacket == NULL) { + mpShapePacket = pShape; + } else { + pShape->mpNextPacket = mpShapePacket; + mpShapePacket = pShape; + } +} + +void J3DMatPacket::beginDiff() { + mpInitShapePacket->mpDisplayListObj->beginDL(); +} + +void J3DMatPacket::endDiff() { + mpInitShapePacket->mpDisplayListObj->endDL(); +} + +/* 80312A74-80312A9C 30D3B4 0028+00 0/0 1/1 0/0 .text isSame__12J3DMatPacketCFP12J3DMatPacket */ +bool J3DMatPacket::isSame(J3DMatPacket* pOther) const { + bool isSame = false; + + if (mDiffFlag == pOther->mDiffFlag && !(mDiffFlag >> 0x1F)) { + isSame = true; + } + return isSame; +} + +/* 80312A9C-80312B20 30D3DC 0084+00 1/0 0/0 0/0 .text draw__12J3DMatPacketFv */ +void J3DMatPacket::draw() { + mpMaterial->load(); + callDL(); + J3DShapePacket* packet = getShapePacket(); + + J3DShape* shape = packet->getShape(); + shape->loadPreDrawSetting(); + + while (packet != NULL) { + if (packet->getDisplayListObj() != NULL) { + packet->getDisplayListObj()->callDL(); + } + + packet->drawFast(); + packet = (J3DShapePacket*)packet->getNextPacket(); + } + + shape->resetVcdVatCache(); +} + +/* 80312B20-80312B74 30D460 0054+00 0/0 1/1 0/0 .text __ct__14J3DShapePacketFv */ +J3DShapePacket::J3DShapePacket() { + mpShape = NULL; + mpMtxBuffer = NULL; + mpBaseMtxPtr = NULL; + mDiffFlag = 0; + mpModel = NULL; +} + +/* 80312B74-80312BD4 30D4B4 0060+00 1/0 1/1 0/0 .text __dt__14J3DShapePacketFv */ +J3DShapePacket::~J3DShapePacket() {} + +/* 80312BD4-80312DBC 30D514 01E8+00 1/1 0/0 0/0 .text calcDifferedBufferSize__14J3DShapePacketFUl + */ +u32 J3DShapePacket::calcDifferedBufferSize(u32 flag) { + int iVar5 = 0; + for (int i = 0; i < 8; i++) { + if ((flag & sDifferedRegister[i]) != 0) { + iVar5 += sSizeOfDiffered[i]; + } + } + + iVar5 += getDiffFlag_LightObjNum(flag) * 0x48; + u32 uVar2 = getDiffFlag_TexGenNum(flag); + if (uVar2 != 0) { + u32 local_4c = mpShape->getMaterial()->getTexGenNum(); + if (uVar2 > local_4c) { + local_4c = uVar2; + } + if ((flag & 0x1000)) { + iVar5 += calcDifferedBufferSize_TexGenSize(local_4c); + } else { + iVar5 += calcDifferedBufferSize_TexMtxSize(local_4c); + } + } + + uVar2 = getDiffFlag_TexNoNum(flag); + if (uVar2 != 0) { + u8 local_58; + if (mpShape->getMaterial()->getTevStageNum() > 8) { + local_58 = 8; + } else { + local_58 = mpShape->getMaterial()->getTevStageNum(); + } + u32 local_50 = local_58; + local_50 = uVar2 > local_50 ? uVar2 : local_50; + if ((flag & 0x4000000)) { + iVar5 += calcDifferedBufferSize_TexNoAndTexCoordScaleSize(local_50); + } else { + iVar5 += calcDifferedBufferSize_TexNoSize(local_50); + } + } + + uVar2 = getDiffFlag_TevStageNum(flag); + if (uVar2 != 0) { + u8 local_58; + if (mpShape->getMaterial()->getTevStageNum() > 8) { + local_58 = 8; + } else { + local_58 = mpShape->getMaterial()->getTevStageNum(); + } + u32 local_50 = local_58; + local_50 = uVar2 > local_50 ? uVar2 : local_50; + iVar5 += calcDifferedBufferSize_TevStageSize(local_50); + if (flag & 0x8000000) { + iVar5 += calcDifferedBufferSize_TevStageDirectSize(local_50); + } + } + + return (iVar5 + 0x1f) & ~0x1f; +} + +/* 80312DBC-80312E08 30D6FC 004C+00 0/0 1/1 0/0 .text newDifferedDisplayList__14J3DShapePacketFUl + */ +J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) { + mDiffFlag = flag; + u32 bufSize = calcDifferedBufferSize(flag); + J3DError error = newDisplayList(bufSize); + + if (error != kJ3DError_Success) { + return error; + } + + setDisplayListObj(getDisplayListObj()); + return kJ3DError_Success; +} + +/* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */ +void J3DShapePacket::prepareDraw() const { + mpModel->getVertexBuffer()->setArray(); + j3dSys.setModel(mpModel); + j3dSys.setShapePacket((J3DShapePacket*)this); + + // the way that the LOD flag is set seems to be wrong... + J3DShapeMtx::setLODFlag(mpModel->checkFlag(0x10)); + + if (mpModel->checkFlag(J3DMdlFlag_SkinPosCpu)) { + mpShape->onFlag(J3DShpFlag_SkinPosCpu); + } else { + mpShape->offFlag(J3DShpFlag_SkinPosCpu); + } + + if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && + mpShape->checkFlag(J3DShpFlag_EnableLod) == false) + { + mpShape->onFlag(J3DShpFlag_SkinNrmCpu); + } else { + mpShape->offFlag(J3DShpFlag_SkinNrmCpu); + } + + J3DMtxBuffer* buffer = mpMtxBuffer; + mpShape->setCurrentViewNoPtr(buffer->getCurrentViewNoPtr()); + mpShape->setScaleFlagArray(buffer->getScaleFlagArray()); + mpShape->setDrawMtx(buffer->getDrawMtxPtrPtr()); + + if (!mpShape->getNBTFlag()) { + mpShape->setNrmMtx(buffer->getNrmMtxPtrPtr()); + } else { + mpShape->setNrmMtx(buffer->getBumpMtxPtrPtr()[mpShape->getBumpMtxOffset()]); + } + + mpModel->getModelData()->syncJ3DSysFlags(); +} + +/* 80312F24-80312FBC 30D864 0098+00 1/0 0/0 0/0 .text draw__14J3DShapePacketFv */ +void J3DShapePacket::draw() { + if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { + prepareDraw(); + + if (mpTexMtxObj != NULL) { + J3DMaterial* material = mpShape->getMaterial(); + J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); + J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj(); + } else { + J3DDifferedTexMtx::sTexGenBlock = NULL; + } + + if (mpDisplayListObj != NULL) { + mpDisplayListObj->callDL(); + } + + mpShape->draw(); + } +} + +/* 80312FBC-80313044 30D8FC 0088+00 1/1 2/2 1/1 .text drawFast__14J3DShapePacketFv */ +void J3DShapePacket::drawFast() { + if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { + prepareDraw(); + + if (mpTexMtxObj != NULL) { + J3DMaterial* material = mpShape->getMaterial(); + J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); + J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj(); + } else { + J3DDifferedTexMtx::sTexGenBlock = NULL; + } + + mpShape->drawFast(); + } +} + +/* 80313044-80313048 30D984 0004+00 1/0 0/0 0/0 .text draw__9J3DPacketFv */ +void J3DPacket::draw() {} + +/* 80313048-803130A8 30D988 0060+00 1/0 0/0 0/0 .text entry__12J3DMatPacketFP13J3DDrawBuffer */ +int J3DMatPacket::entry(J3DDrawBuffer* i_buffer) { + sortFunc func = J3DDrawBuffer::sortFuncTable[i_buffer->mSortType]; + return (i_buffer->*func)(this); +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DShape.cpp b/src/JSystem/J3DGraphBase/J3DShape.cpp new file mode 100644 index 0000000000..17dab88daf --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DShape.cpp @@ -0,0 +1,354 @@ +#include "JSystem/J3DGraphBase/J3DShape.h" +#include "JSystem/J3DGraphBase/J3DPacket.h" +#include "JSystem/J3DGraphBase/J3DVertex.h" +#include "dolphin/gd.h" +#include "dolphin/os.h" + +void J3DGDSetVtxAttrFmtv(_GXVtxFmt, GXVtxAttrFmtList const*, bool); +void J3DFifoLoadPosMtxImm(Mtx, u32); +void J3DFifoLoadNrmMtxImm(Mtx, u32); + + +enum { + kVcdVatDLSize = 0xC0, +}; + +void J3DShape::initialize() { + mMaterial = NULL; + mIndex = -1; + mMtxGroupNum = 0; + mFlags = 0; + mRadius = 0.0f; + mMin.x = 0.0f; + mMin.y = 0.0f; + mMin.z = 0.0f; + mMax.x = 0.0f; + mMax.y = 0.0f; + mMax.z = 0.0f; + mVtxDesc = NULL; + mShapeMtx = NULL; + mShapeDraw = NULL; + mVertexData = NULL; + mDrawMtxData = NULL; + mScaleFlagArray = NULL; + mDrawMtx = NULL; + mNrmMtx = NULL; + mCurrentViewNo = &j3dDefaultViewNo; + mHasNBT = false; + mHasPNMTXIdx = false; +} + +/* 80314BB8-80314CBC 30F4F8 0104+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl */ +void J3DShape::addTexMtxIndexInDL(GXAttr attr, u32 valueBase) { + u32 kSize[] = {0, 1, 1, 2}; + + s32 pnmtxidxOffs = -1; + s32 attrOffs = -1; + s32 stride = 0; + bool found = false; + + for (GXVtxDescList* vtxDesc = mVtxDesc; vtxDesc->attr != GX_VA_NULL; vtxDesc++) { + if (vtxDesc->attr == GX_VA_PNMTXIDX) + pnmtxidxOffs = stride; + + if (attr < vtxDesc->attr && !found) { + attrOffs = stride; + found = true; + } + + stride = stride + kSize[vtxDesc->type]; + } + + if (pnmtxidxOffs == -1) + return; + + for (u16 i = 0; i < getMtxGroupNum(); i++) + getShapeDraw(i)->addTexMtxIndexInDL(stride, attrOffs, (s32)valueBase); +} + +/* 80314CBC-80314DA8 30F5FC 00EC+00 0/0 1/1 0/0 .text addTexMtxIndexInVcd__8J3DShapeF7_GXAttr */ +void J3DShape::addTexMtxIndexInVcd(GXAttr attr) { + s32 attrIdx = -1; + GXVtxDescList* vtxDesc = mVtxDesc; + s32 attrCount = 0; + + for (; vtxDesc->attr != GX_VA_NULL; attrCount++, vtxDesc++) { + if (vtxDesc->attr == GX_VA_PNMTXIDX) + attrIdx = 0; + } + + if (attrIdx == -1) + return; + + GXVtxDescList* newVtxDesc = new GXVtxDescList[attrCount + 2]; + bool inserted = false; + + vtxDesc = mVtxDesc; + GXVtxDescList* dst = newVtxDesc; + for (; vtxDesc->attr != GX_VA_NULL; dst++, vtxDesc++) { + if ((attr < vtxDesc->attr) && !inserted) { + dst->attr = attr; + dst->type = GX_DIRECT; + inserted = true; + dst++; + } + + *dst = *vtxDesc; + } + + dst->attr = GX_VA_NULL; + dst->type = GX_NONE; + mVtxDesc = newVtxDesc; + makeVcdVatCmd(); +} + +/* 80314DA8-80314E28 30F6E8 0080+00 0/0 1/1 0/0 .text + * calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f */ +void J3DShape::calcNBTScale(Vec const& param_0, f32 (*param_1)[3][3], f32 (*param_2)[3][3]) { + for (u16 i = 0; i < getMtxGroupNum(); i++) + getShapeMtx(i)->calcNBTScale(param_0, param_1, param_2); +} + +/* 80314E28-80314E98 30F768 0070+00 0/0 1/1 0/0 .text countBumpMtxNum__8J3DShapeCFv */ +u32 J3DShape::countBumpMtxNum() const { + u32 num = 0; + for (u16 i = 0; i < getMtxGroupNum(); i++) + num += getShapeMtx(i)->getUseMtxNum(); + return num; +} + +/* 80314E98-80314EB0 30F7D8 0018+00 1/1 0/0 0/0 .text J3DLoadCPCmd__FUcUl */ +void J3DLoadCPCmd(u8 cmd, u32 param) { + GXWGFifo.u8 = GX_CMD_LOAD_CP_REG; + GXWGFifo.u8 = cmd; + GXWGFifo.u32 = param; +} + +/* 80314EB0-80314EEC 30F7F0 003C+00 1/1 0/0 0/0 .text J3DLoadArrayBasePtr__F7_GXAttrPv */ +static void J3DLoadArrayBasePtr(_GXAttr attr, void* data) { + u32 idx = (attr == GX_VA_NBT) ? 1 : (attr - GX_VA_POS); + J3DLoadCPCmd(0xA0 + idx, ((u32)data & 0x7FFFFFFF)); +} + +/* 80314EEC-80314F5C 30F82C 0070+00 3/3 0/0 0/0 .text loadVtxArray__8J3DShapeCFv */ +void J3DShape::loadVtxArray() const { + J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos()); + if (!mHasNBT) { + J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm()); + } + J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol()); +} + +/* 80314F5C-80314F98 30F89C 003C+00 0/0 1/1 0/0 .text isSameVcdVatCmd__8J3DShapeFP8J3DShape */ +bool J3DShape::isSameVcdVatCmd(J3DShape* other) { + u8* a = other->mVcdVatCmd; + u8* b = mVcdVatCmd; + for (u32 i = 0; i < kVcdVatDLSize; i++) + if (a[i] != b[i]) + return false; + return true; +} + +/* 80314F98-80315260 30F8D8 02C8+00 1/1 0/0 0/0 .text makeVtxArrayCmd__8J3DShapeFv */ +void J3DShape::makeVtxArrayCmd() { + GXVtxAttrFmtList* vtxAttr = mVertexData->getVtxAttrFmtList(); + + u8 stride[0x0C]; + void* array[0x0C]; + for (u32 i = 0; i < 0x0C; i++) { + stride[i] = 0; + array[i] = 0; + } + + for (; vtxAttr->mAttrib != GX_VA_NULL; vtxAttr++) { + switch (vtxAttr->mAttrib) { + case GX_VA_POS: { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxPosArray(); + mVertexData->setVtxPosFrac(vtxAttr->mCompShift); + mVertexData->setVtxPosType((GXCompType)vtxAttr->mCompType); + } break; + case GX_VA_NRM: { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxNrmArray(); + mVertexData->setVtxNrmFrac(vtxAttr->mCompShift); + mVertexData->setVtxNrmType((GXCompType)vtxAttr->mCompType); + } break; + case GX_VA_CLR0: + case GX_VA_CLR1: { + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04; + array[vtxAttr->mAttrib - GX_VA_POS] = + mVertexData->getVtxColorArray(vtxAttr->mAttrib - GX_VA_CLR0); + } break; + case GX_VA_TEX0: + case GX_VA_TEX1: + case GX_VA_TEX2: + case GX_VA_TEX3: + case GX_VA_TEX4: + case GX_VA_TEX5: + case GX_VA_TEX6: + case GX_VA_TEX7: { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x08; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04; + array[vtxAttr->mAttrib - GX_VA_POS] = + mVertexData->getVtxTexCoordArray(vtxAttr->mAttrib - GX_VA_TEX0); + } break; + default: + break; + } + } + + GXVtxDescList* vtxDesc = mVtxDesc; + mHasPNMTXIdx = false; + for (; vtxDesc->attr != GX_VA_NULL; vtxDesc++) { + if (vtxDesc->attr == GX_VA_NBT && vtxDesc->type != GX_NONE) { + mHasNBT = true; + stride[GX_VA_NRM - GX_VA_POS] *= 3; + array[GX_VA_NRM - GX_VA_POS] = mVertexData->getVtxNBTArray(); + } else if (vtxDesc->attr == GX_VA_PNMTXIDX && vtxDesc->type != GX_NONE) { + mHasPNMTXIdx = true; + } + } + + for (u32 i = 0; i < 0x0C; i++) { + if (array[i] != 0) + GDSetArray((GXAttr)(i + GX_VA_POS), array[i], stride[i]); + else + GDSetArrayRaw((GXAttr)(i + GX_VA_POS), NULL, stride[i]); + } +} + +/* ############################################################################################## */ +/* 804515C8-804515CC 000AC8 0004+00 1/1 0/0 0/0 .sbss sInterruptFlag$903 */ +static s32 sInterruptFlag; + +/* 804515CC-804515D0 000ACC 0004+00 1/1 0/0 0/0 .sbss None */ +static s8 sInitInterruptFlag; + +/* 80315260-80315300 30FBA0 00A0+00 1/1 2/2 0/0 .text makeVcdVatCmd__8J3DShapeFv */ +void J3DShape::makeVcdVatCmd() { + if (!sInitInterruptFlag) { + sInterruptFlag = OSDisableInterrupts(); + sInitInterruptFlag = true; + } + OSDisableScheduler(); + + GDLObj gdl_obj; + GDInitGDLObj(&gdl_obj, mVcdVatCmd, kVcdVatDLSize); + GDSetCurrent(&gdl_obj); + GDSetVtxDescv(mVtxDesc); + makeVtxArrayCmd(); + J3DGDSetVtxAttrFmtv(GX_VTXFMT0, mVertexData->getVtxAttrFmtList(), mHasNBT); + GDPadCurr32(); + GDFlushCurrToMem(); + GDSetCurrent(NULL); + OSEnableScheduler(); + OSRestoreInterrupts(sInterruptFlag); +} + +/* ############################################################################################## */ +/* 804515D0-804515D4 000AD0 0004+00 5/5 25/25 9/9 .sbss sOldVcdVatCmd__8J3DShape */ +void* J3DShape::sOldVcdVatCmd; + +/* 80315300-80315398 30FC40 0098+00 2/2 6/6 3/3 .text loadPreDrawSetting__8J3DShapeCFv */ +void J3DShape::loadPreDrawSetting() const { + if (sOldVcdVatCmd != mVcdVatCmd) { + GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize); + sOldVcdVatCmd = mVcdVatCmd; + } + + mCurrentMtx.load(); +} + +/* ############################################################################################## */ +/* 804515D4-804515D8 000AD4 0004+00 3/3 0/0 0/0 .sbss None */ +static u8 data_804515D4[4]; + +/* 80315398-8031544C 30FCD8 00B4+00 1/1 0/0 0/0 .text setArrayAndBindPipeline__8J3DShapeCFv */ +void J3DShape::setArrayAndBindPipeline() const { + J3DShapeMtx::setCurrentPipeline(getPipeline()); + loadVtxArray(); + j3dSys.setModelDrawMtx(mDrawMtx[*mCurrentViewNo]); + j3dSys.setModelNrmMtx(mNrmMtx[*mCurrentViewNo]); + J3DShapeMtx::sCurrentScaleFlag = mScaleFlagArray; + // The below struct_804515B0 is actually a continuation of sCurrentScaleFlag, I believe? + // Also, there seems to be an extra entry in the array that's only there in DEBUG builds. + J3DShapeMtx::sNBTFlag = mHasNBT; + data_804515D4[0] = mHasPNMTXIdx; + J3DShapeMtx::sTexMtxLoadType = getTexMtxLoadType(); +} + +/* 8031544C-803155E0 30FD8C 0194+00 1/0 0/0 0/0 .text drawFast__8J3DShapeCFv */ +void J3DShape::drawFast() const { + if (sOldVcdVatCmd != mVcdVatCmd) { + GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize); + sOldVcdVatCmd = mVcdVatCmd; + } + + if (data_804515D4[0] != 0 && !mHasPNMTXIdx) + mCurrentMtx.load(); + + setArrayAndBindPipeline(); + if (!checkFlag(J3DShpFlag_NoMtx)) { + // LOD flag shenanigans + if (J3DShapeMtx::getLODFlag() != 0) + J3DShapeMtx::resetMtxLoadCache(); + + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) { + if (getShapeMtx(i) != NULL) + getShapeMtx(i)->load(); + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); + } + } else { + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); + } +} + +/* 803155E0-80315628 30FF20 0048+00 1/0 0/0 0/0 .text draw__8J3DShapeCFv */ +void J3DShape::draw() const { + sOldVcdVatCmd = NULL; + loadPreDrawSetting(); + drawFast(); +} + +/* 80315628-803156AC 30FF68 0084+00 1/0 0/0 0/0 .text simpleDraw__8J3DShapeCFv */ +void J3DShape::simpleDraw() const { + resetVcdVatCache(); + loadPreDrawSetting(); + J3DShapeMtx::setCurrentPipeline(getPipeline()); + loadVtxArray(); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) { + if (getShapeDraw(i) != NULL) { + getShapeDraw(i)->draw(); + } + } +} + +/* 803156AC-803157A0 30FFEC 00F4+00 1/0 0/0 0/0 .text simpleDrawCache__8J3DShapeCFv */ +void J3DShape::simpleDrawCache() const { + if (sOldVcdVatCmd != mVcdVatCmd) { + GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize); + sOldVcdVatCmd = mVcdVatCmd; + } + + if (data_804515D4[0] != 0 && !mHasPNMTXIdx) + mCurrentMtx.load(); + + loadVtxArray(); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp new file mode 100644 index 0000000000..61efef6fa8 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -0,0 +1,100 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DShapeDraw +// + +#include "JSystem/J3DGraphBase/J3DShapeDraw.h" +#include "string.h" +#include "dolphin/gx.h" +#include "dolphin/os/OSCache.h" +#include "global.h" + +// +// External References: +// + +extern "C" void countVertex__12J3DShapeDrawFUl(); +extern "C" void* __nwa__FUli(); +extern "C" void __dl__FPv(); +extern "C" void _savegpr_18(); +extern "C" void _restgpr_18(); + +/* 80314924-80314974 30F264 0050+00 1/1 0/0 0/0 .text countVertex__12J3DShapeDrawFUl */ +u32 J3DShapeDraw::countVertex(u32 stride) { + u32 count = 0; + u32 dlStart = (u32)getDisplayList(); + for (u8* dl = (u8*)dlStart; ((u32)dl - dlStart) < getDisplayListSize();) { + if (*dl != GX_TRIANGLEFAN && *dl != GX_TRIANGLESTRIP) + break; + u16 vtxNum = *((u16*)(dl + 1)); + count += vtxNum; + dl += stride * vtxNum; + dl += 3; + } + return count; +} + +#ifdef NONMATCHING +/* 80314974-80314ABC 30F2B4 0148+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl */ +void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { + u32 byteNum = countVertex(stride); + u32 newSize = ALIGN_NEXT(mDisplayListSize + byteNum, 0x20); + u8* newDLStart = new (0x20) u8[newSize]; + u8* oldDLStart = getDisplayList(); + u8* oldDL = oldDLStart; + u8* newDL = newDLStart; + for (; (oldDL - oldDLStart) < mDisplayListSize;) { + // Copy command + u8 h = *oldDL; + *newDL++ = h; + + if (h != GX_TRIANGLEFAN && h != GX_TRIANGLESTRIP) + break; + + // Copy count + // regalloc (I suspect there's a way to shove this in a u16 temp without an mr) + u32 vtxNum = *((u16*)(oldDL + 1)); + *((u16*)newDL) = vtxNum; + newDL += 2; + + for (s32 i = 0; i < (u16)vtxNum; i++) { + // mul arg swap + u8* oldDLVtx = (&oldDL[stride * i + 3]); + u8 pnmtxidx = *oldDLVtx; + memcpy(newDL, oldDLVtx, attrOffs); + u8* newDL1 = &newDL[attrOffs]; + *newDL1++ = valueBase + pnmtxidx; + memcpy(newDL1, oldDLVtx + attrOffs, stride - attrOffs); + newDL = newDL1 + (stride - attrOffs); + } + + oldDL += stride * vtxNum; + oldDL += 3; + } + + u32 realSize = ALIGN_NEXT((u32)newDL - (u32)newDLStart, 0x20); + for (; (newDL - newDLStart) < newSize; newDL++) + *newDL = 0; + mDisplayListSize = realSize; + mDisplayList = newDLStart; + DCStoreRange(newDLStart, mDisplayListSize); +} +#else +void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2) { + // NONMATCHING +} +#endif + +/* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */ +J3DShapeDraw::J3DShapeDraw(u8 const* displayList, u32 displayListSize) { + mDisplayList = (void*)displayList; + mDisplayListSize = displayListSize; +} + +/* 80314AD4-80314B00 30F414 002C+00 0/0 3/3 0/0 .text draw__12J3DShapeDrawCFv */ +void J3DShapeDraw::draw() const { + GXCallDisplayList(mDisplayList, mDisplayListSize); +} + +/* 80314B00-80314B48 30F440 0048+00 1/0 0/0 0/0 .text __dt__12J3DShapeDrawFv */ +J3DShapeDraw::~J3DShapeDraw() {}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp new file mode 100644 index 0000000000..591b917e8c --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -0,0 +1,760 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DShapeMtx +// + +#include "JSystem/J3DGraphBase/J3DShapeMtx.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/J3DGraphBase/J3DGD.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// Forward References: +// + +extern "C" void resetMtxLoadCache__11J3DShapeMtxFv(); +extern "C" void loadMtxIndx_PNGP__11J3DShapeMtxCFiUs(); +extern "C" void loadMtxIndx_PCPU__11J3DShapeMtxCFiUs(); +extern "C" void loadMtxIndx_NCPU__11J3DShapeMtxCFiUs(); +extern "C" void loadMtxIndx_PNCPU__11J3DShapeMtxCFiUs(); +extern "C" void loadExecute__17J3DDifferedTexMtxFPA4_Cf(); +extern "C" void loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void load__11J3DShapeMtxCFv(); +extern "C" void calcNBTScale__11J3DShapeMtxFRC3VecPA3_A3_fPA3_A3_f(); +extern "C" void load__21J3DShapeMtxConcatViewCFv(); +extern "C" void loadNrmMtx__21J3DShapeMtxConcatViewCFiUsPA4_f(); +extern "C" void load__16J3DShapeMtxMultiCFv(); +extern "C" void calcNBTScale__16J3DShapeMtxMultiFRC3VecPA3_A3_fPA3_A3_f(); +extern "C" void load__26J3DShapeMtxMultiConcatViewCFv(); +extern "C" void loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUsPA4_f(); +extern "C" void load__27J3DShapeMtxBBoardConcatViewCFv(); +extern "C" void load__28J3DShapeMtxYBBoardConcatViewCFv(); +extern "C" void __dt__28J3DShapeMtxYBBoardConcatViewFv(); +extern "C" void getType__28J3DShapeMtxYBBoardConcatViewCFv(); +extern "C" void loadNrmMtx__21J3DShapeMtxConcatViewCFiUs(); +extern "C" void getUseMtxIndex__11J3DShapeMtxCFUs(); +extern "C" void __dt__27J3DShapeMtxBBoardConcatViewFv(); +extern "C" void getType__27J3DShapeMtxBBoardConcatViewCFv(); +extern "C" void __dt__26J3DShapeMtxMultiConcatViewFv(); +extern "C" void getType__26J3DShapeMtxMultiConcatViewCFv(); +extern "C" void getUseMtxNum__26J3DShapeMtxMultiConcatViewCFv(); +extern "C" void getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs(); +extern "C" void loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUs(); +extern "C" void __dt__16J3DShapeMtxMultiFv(); +extern "C" void getType__16J3DShapeMtxMultiCFv(); +extern "C" void getUseMtxNum__16J3DShapeMtxMultiCFv(); +extern "C" void getUseMtxIndex__16J3DShapeMtxMultiCFUs(); +extern "C" void __dt__21J3DShapeMtxConcatViewFv(); +extern "C" void getType__21J3DShapeMtxConcatViewCFv(); +extern "C" void __dt__11J3DShapeMtxFv(); +extern "C" void getType__11J3DShapeMtxCFv(); +extern "C" void __sinit_J3DShapeMtx_cpp(); +extern "C" u8 sMtxLoadPipeline__11J3DShapeMtx[48]; +extern "C" u8 sMtxLoadPipeline__21J3DShapeMtxConcatView[48]; +extern "C" u8 sMtxLoadLODPipeline__21J3DShapeMtxConcatView[48]; +extern "C" u8 sMtxLoadCache__11J3DShapeMtx[20 + 4 /* padding */]; +extern "C" u8 sCurrentPipeline__11J3DShapeMtx[4]; +extern "C" u8 sCurrentScaleFlag__11J3DShapeMtx[4]; +extern "C" u8 sTexMtxLoadType__11J3DShapeMtx[4]; +extern "C" u8 sMtxPtrTbl__21J3DShapeMtxConcatView[8]; +extern "C" u8 sTexGenBlock__17J3DDifferedTexMtx[4]; +extern "C" u8 sTexMtxObj__17J3DDifferedTexMtx[4]; + +// +// External References: +// + +void J3DFifoLoadPosMtxImm(Mtx, u32); +void J3DFifoLoadNrmMtxImm(Mtx, u32); +void J3DFifoLoadNrmMtxImm3x3(Mtx33, u32); +void J3DFifoLoadNrmMtxToTexMtx(Mtx, u32); +void J3DFifoLoadNrmMtxToTexMtx33(Mtx33, u32); + +extern "C" bool getUseMtxNum__11J3DShapeMtxCFv(); +extern "C" void __dl__FPv(); +extern "C" void J3DFifoLoadPosMtxImm__FPA4_fUl(); +extern "C" void J3DFifoLoadNrmMtxImm__FPA4_fUl(); +extern "C" void J3DFifoLoadNrmMtxImm3x3__FPA3_fUl(); +extern "C" void J3DFifoLoadNrmMtxToTexMtx__FPA4_fUl(); +extern "C" void J3DFifoLoadNrmMtxToTexMtx3x3__FPA3_fUl(); +extern "C" void loadPosMtxIndx__6J3DSysCFiUs(); +extern "C" void loadNrmMtxIndx__6J3DSysCFiUs(); +extern "C" void J3DCalcBBoardMtx__FPA4_f(); +extern "C" void J3DCalcYBBoardMtx__FPA4_f(); +extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f(); +extern "C" void J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f(); +extern "C" void J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f(); +extern "C" void J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f(); +extern "C" void J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f(); +extern "C" void J3DScaleNrmMtx__FPA4_fRC3Vec(); +extern "C" void J3DScaleNrmMtx33__FPA3_fRC3Vec(); +extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f(); +extern "C" void __ptmf_scall(); +extern "C" void _savegpr_22(); +extern "C" void _savegpr_25(); +extern "C" void _savegpr_27(); +extern "C" void _savegpr_28(); +extern "C" void _savegpr_29(); +extern "C" void _restgpr_22(); +extern "C" void _restgpr_25(); +extern "C" void _restgpr_27(); +extern "C" void _restgpr_28(); +extern "C" void _restgpr_29(); + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 80434C80-80434C98 0619A0 0014+04 2/2 0/0 0/0 .bss sMtxLoadCache__11J3DShapeMtx */ +u16 J3DShapeMtx::sMtxLoadCache[10 + 2 /* padding */]; + +/* 803130A8-803130E4 30D9E8 003C+00 0/0 1/1 0/0 .text resetMtxLoadCache__11J3DShapeMtxFv + */ +void J3DShapeMtx::resetMtxLoadCache() { + sMtxLoadCache[9] = 0xFFFF; + sMtxLoadCache[8] = 0xFFFF; + sMtxLoadCache[7] = 0xFFFF; + sMtxLoadCache[6] = 0xFFFF; + sMtxLoadCache[5] = 0xFFFF; + sMtxLoadCache[4] = 0xFFFF; + sMtxLoadCache[3] = 0xFFFF; + sMtxLoadCache[2] = 0xFFFF; + sMtxLoadCache[1] = 0xFFFF; + sMtxLoadCache[0] = 0xFFFF; +} + +/* 803130E4-80313128 30DA24 0044+00 1/0 0/0 0/0 .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */ +void J3DShapeMtx::loadMtxIndx_PNGP(int slot, u16 indx) const { + // inlined J3DFifoLoadPosMtxIndx + J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, indx, 0xB000 | ((u16)(slot * 0x0C))); + // inlined J3DFifoLoadNrmMtxIndx3x3 + J3DFifoLoadIndx(GX_CMD_LOAD_INDX_B, indx, 0x8000 | ((u16)((slot * 0x09) + 0x400))); +} + +/* 80313128-80313188 30DA68 0060+00 1/0 0/0 0/0 .text loadMtxIndx_PCPU__11J3DShapeMtxCFiUs */ +void J3DShapeMtx::loadMtxIndx_PCPU(int slot, u16 indx) const { + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + j3dSys.loadNrmMtxIndx(slot, indx); +} + +/* 80313188-803131D4 30DAC8 004C+00 1/0 0/0 0/0 .text loadMtxIndx_NCPU__11J3DShapeMtxCFiUs */ +void J3DShapeMtx::loadMtxIndx_NCPU(int slot, u16 indx) const { + j3dSys.loadPosMtxIndx(slot, indx); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); +} + +/* 803131D4-8031322C 30DB14 0058+00 1/0 0/0 0/0 .text loadMtxIndx_PNCPU__11J3DShapeMtxCFiUs */ +void J3DShapeMtx::loadMtxIndx_PNCPU(int slot, u16 indx) const { + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); +} + +/* 803CD9C0-803CD9F0 02AAE0 0030+00 2/3 0/0 0/0 .data sMtxLoadPipeline__11J3DShapeMtx */ +J3DShapeMtx_LoadFunc J3DShapeMtx::sMtxLoadPipeline[4] = { + &loadMtxIndx_PNGP, + &loadMtxIndx_PCPU, + &loadMtxIndx_NCPU, + &loadMtxIndx_PNCPU, +}; + +/* 803CDA20-803CDA50 02AB40 0030+00 2/3 0/0 0/0 .data sMtxLoadPipeline__21J3DShapeMtxConcatView */ +J3DShapeMtxConcatView_LoadFunc J3DShapeMtxConcatView::sMtxLoadPipeline[4] = { + &loadMtxConcatView_PNGP, + &loadMtxConcatView_PCPU, + &loadMtxConcatView_NCPU, + &loadMtxConcatView_PNCPU, +}; + +/* 803CDA80-803CDAB0 02ABA0 0030+00 1/2 0/0 0/0 .data sMtxLoadLODPipeline__21J3DShapeMtxConcatView + */ +J3DShapeMtxConcatView_LoadFunc J3DShapeMtxConcatView::sMtxLoadLODPipeline[4] = { + &loadMtxConcatView_PNGP_LOD, + &loadMtxConcatView_PCPU, + &loadMtxConcatView_NCPU, + &loadMtxConcatView_PNCPU, +}; + +#ifndef NONMATCHING +/* 803CDAB0-803CDAE0 02ABD0 0030+00 1/1 0/0 0/0 .data qMtx$895 */ +SECTION_DATA static u8 qMtx[48] = { + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803CDAE0-803CDB10 02AC00 0030+00 1/1 0/0 0/0 .data qMtx2$896 */ +SECTION_DATA static u8 qMtx2[48] = { + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803CDB10-803CDB40 -00001 0030+00 1/1 0/0 0/0 .data @1035 */ +SECTION_DATA static void* lit_1035[12] = { + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x5B4), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x390), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x3CC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x370), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x5B4), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x3DC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x390), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x390), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x3CC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x370), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x510), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x46C), +}; + +/* 803CDB40-803CDB70 -00001 0030+00 1/1 0/0 0/0 .data @1034 */ +SECTION_DATA static void* lit_1034[12] = { + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x2B8), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xCC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xE0), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xB8), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x2B8), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x110), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xCC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xCC), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xE0), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0xB8), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x224), + (void*)(((char*)loadExecute__17J3DDifferedTexMtxFPA4_Cf) + 0x190), +}; +#endif + +/* 804515A8-804515AC 000AA8 0004+00 4/4 2/2 0/0 .sbss sCurrentPipeline__11J3DShapeMtx */ +u32 J3DShapeMtx::sCurrentPipeline; + +/* 804515AC-804515B0 000AAC 0004+00 3/3 1/1 0/0 .sbss sCurrentScaleFlag__11J3DShapeMtx */ +u8* J3DShapeMtx::sCurrentScaleFlag; + +// This below is technically part of J3DScaleFlag. + +/* 804515B0-804515B4 -00001 0004+00 5/5 3/3 0/0 .sbss None */ +/* 804515B0 0001+00 data_804515B0 None */ +/* 804515B1 0003+00 data_804515B1 None */ +extern u8 struct_804515B0; // temporary +u8 J3DShapeMtx::sNBTFlag; +u8 J3DShapeMtx::sLODFlag; + +/* 804515B4-804515B8 000AB4 0004+00 4/4 1/1 0/0 .sbss sTexMtxLoadType__11J3DShapeMtx */ +u32 J3DShapeMtx::sTexMtxLoadType; + +/* 804515B8-804515C0 000AB8 0008+00 2/2 0/0 0/0 .sbss sMtxPtrTbl__21J3DShapeMtxConcatView + */ +MtxP J3DShapeMtxConcatView::sMtxPtrTbl[2]; + +/* 804515C0-804515C4 000AC0 0004+00 6/6 2/2 0/0 .sbss sTexGenBlock__17J3DDifferedTexMtx + */ +J3DTexGenBlock* J3DDifferedTexMtx::sTexGenBlock; + +/* 804515C4-804515C8 000AC4 0004+00 1/1 2/2 0/0 .sbss sTexMtxObj__17J3DDifferedTexMtx */ +J3DTexMtxObj* J3DDifferedTexMtx::sTexMtxObj; + +/* 80456398-8045639C 004998 0004+00 2/2 0/0 0/0 .sdata2 @1032 */ +SECTION_SDATA2 static u8 lit_1032[4] = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 8031322C-80313828 30DB6C 05FC+00 7/5 0/0 0/0 .text loadExecute__17J3DDifferedTexMtxFPA4_Cf */ +#ifdef NONMATCHING +void J3DDifferedTexMtx::loadExecute(f32 const (*param_0)[4]) { +// regalloc + static Mtx qMtx = { + {0.5f, 0.0f, 0.5f, 0.0f}, + {0.0f, -0.5f, 0.5f, 0.0f}, + {0.0f, 0.0f, 1.0f, 0.0f}, + }; + static Mtx qMtx2 = { + {0.5f, 0.0f, 0.0f, 0.5f}, + {0.0f, -0.5f, 0.0f, 0.5f}, + {0.0f, 0.0f, 1.0f, 0.0f} + }; + J3DTexCoord* tex_coord; + J3DTexMtx* tex_mtx; + Mtx* mtx; + Mtx44* eff_mtx; + Mtx tmp2; + Mtx44 tmp1, tmp0; + J3DTexMtxInfo* tex_mtx_info; + J3DTexGenBlock* tex_gen_block = sTexGenBlock; + J3DTexMtxObj* tex_mtx_obj = sTexMtxObj; + u16 tex_mtx_num = tex_mtx_obj->getNumTexMtx(); + if ((j3dSys.checkFlag(J3DSysFlag_PostTexMtx))) { + for (u16 i = 0; i < (u16)tex_mtx_num; i++) { + tex_coord = tex_gen_block->getTexCoord(i); + int tex_gen_type = tex_coord->getTexGenType(); + if (tex_gen_type == 1 || tex_gen_type == 0) { + tex_mtx = tex_gen_block->getTexMtx(i); + u8 tex_gen_src = tex_mtx->getTexMtxInfo().mInfo; + u32 unk; + switch (tex_gen_src & 0x3f) { + case 3: + case 9: + Mtx& tmp5 = tex_mtx_obj->getMtx(i); + mtx = &tmp5; + break; + case 1: + case 6: + case 7: + Mtx& tmp6 = tex_mtx_obj->getMtx(i); + mtx = &tmp6; + break; + case 2: + case 8: + PSMTXInverse(j3dSys.mViewMtx, tmp2); + PSMTXConcat(tex_mtx_obj->getMtx(i), tmp2, tmp2); + mtx = &tmp2; + break; + case 5: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + case 10: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + PSMTXConcat(tmp0, qMtx2, tmp0); + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + case 11: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + PSMTXConcat(tmp0, qMtx, tmp0); + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + default: + Mtx& tmp7 = tex_mtx_obj->getMtx(i); + mtx = &tmp7; + break; + } + GXLoadTexMtxImm(*mtx, i * 3 + 0x40, GX_MTX3x4); + } + } + } else { + for (u16 i = 0; i < (u16)tex_mtx_num; i++) { + int tex_gen_type = tex_gen_block->getTexCoord(i)->getTexGenType(); + if (tex_gen_type == 1 || tex_gen_type == 0) { + tex_mtx = tex_gen_block->getTexMtx(i); + u8 tex_gen_src = tex_mtx->getTexMtxInfo().mInfo; + u32 unk; + switch (tex_gen_src & 0x3f) { + case 3: + case 9: + PSMTXConcat(tex_mtx_obj->getMtx(i), param_0, tmp2); + mtx = &tmp2; + break; + case 1: + case 6: + case 7: + PSMTXCopy(param_0, tmp1); + tmp1[2][3] = 0.0f; + tmp1[1][3] = 0.0f; + tmp1[0][3] = 0.0f; + PSMTXConcat(tex_mtx_obj->getMtx(i), tmp1, tmp2); + mtx = &tmp2; + break; + case 2: + case 8: + mtx = &tex_mtx_obj->getMtx(i); + break; + case 5: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + PSMTXConcat(tmp2, param_0, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + case 10: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + PSMTXConcat(tmp0, qMtx2, tmp0); + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + PSMTXConcat(tmp2, param_0, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + case 11: + tex_mtx_info = &tex_mtx->getTexMtxInfo(); + unk = (tex_gen_src & 0x80) >> 7; + if (unk == 0) { + J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); + } else if (unk == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + PSMTXConcat(tmp0, qMtx, tmp0); + eff_mtx = &tex_mtx_obj->getEffectMtx(i); + J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); + PSMTXInverse(j3dSys.mViewMtx, tmp1); + PSMTXConcat(tmp2, tmp1, tmp2); + PSMTXConcat(tmp2, param_0, tmp2); + tmp2[2][3] = 0.0f; + tmp2[1][3] = 0.0f; + tmp2[0][3] = 0.0f; + mtx = &tmp2; + break; + default: + mtx = &tex_mtx_obj->getMtx(i); + break; + } + GXLoadTexMtxImm(*mtx, i * 3 + 0x1e, + (GXTexMtxType)tex_mtx->getTexMtxInfo().mProjection); + } + } + } +} +#else +void J3DDifferedTexMtx::loadExecute(f32 const (*param_0)[4]) { + // NONMATCHING +} +#endif + +/* 80313828-803138C8 30E168 00A0+00 1/0 0/0 0/0 .text + * loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadMtxConcatView_PNGP(int slot, u16 drw) const { + Mtx m; + MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m); + J3DDifferedTexMtx::load(m); + J3DFifoLoadPosMtxImm(m, slot * 3); + loadNrmMtx(slot, drw, m); +} + +/* 803138C8-8031396C 30E208 00A4+00 2/0 0/0 0/0 .text + * loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadMtxConcatView_PCPU(int slot, u16 drw) const { + Mtx m; + MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m); + J3DDifferedTexMtx::load(m); + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + loadNrmMtx(slot, drw, m); +} + +/* 8031396C-80313A14 30E2AC 00A8+00 2/0 0/0 0/0 .text + * loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadMtxConcatView_NCPU(int slot, u16 drw) const { + Mtx m; + MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m); + J3DDifferedTexMtx::load(m); + J3DFifoLoadPosMtxImm(m, slot * 3); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + if (J3DShapeMtx::sTexMtxLoadType == 0x2000) + J3DFifoLoadNrmMtxToTexMtx(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3 + GX_TEXMTX0); +} + +/* 80313A14-80313AC8 30E354 00B4+00 2/0 0/0 0/0 .text + * loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int slot, u16 drw) const { + Mtx m; + if (J3DDifferedTexMtx::sTexGenBlock != NULL) { + MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m); + J3DDifferedTexMtx::loadExecute(m); + } + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3); + if (J3DShapeMtx::sTexMtxLoadType == 0x2000) + J3DFifoLoadNrmMtxToTexMtx(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3 + GX_TEXMTX0); +} + +/* 80313AC8-80313B94 30E408 00CC+00 1/0 0/0 0/0 .text + * loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadMtxConcatView_PNGP_LOD(int slot, u16 drw) const { + Mtx m; + MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m); + MTXConcat(m, j3dSys.mModel->getModelData()->getInvJointMtx(drw), m); + J3DDifferedTexMtx::load(m); + J3DFifoLoadPosMtxImm(m, slot * 3); + loadNrmMtx(slot, drw, m); +} + +/* 80313B94-80313BF0 30E4D4 005C+00 1/0 0/0 0/0 .text load__11J3DShapeMtxCFv */ +void J3DShapeMtx::load() const { + J3DShapeMtx_LoadFunc func = sMtxLoadPipeline[sCurrentPipeline]; + (this->*func)(0, mUseMtxIndex); +} + +/* 80313BF0-80313C54 30E530 0064+00 5/0 0/0 0/0 .text + * calcNBTScale__11J3DShapeMtxFRC3VecPA3_A3_fPA3_A3_f */ +void J3DShapeMtx::calcNBTScale(Vec const& param_0, Mtx33* param_1, Mtx33* param_2) { + J3DPSMtx33Copy(param_1[mUseMtxIndex], param_2[mUseMtxIndex]); + J3DScaleNrmMtx33(param_2[mUseMtxIndex], param_0); +} + +/* 80313C54-80313D28 30E594 00D4+00 1/0 0/0 0/0 .text load__21J3DShapeMtxConcatViewCFv */ +void J3DShapeMtxConcatView::load() const { + sMtxPtrTbl[0] = j3dSys.getModel()->getMtxBuffer()->getUserAnmMtx(0); + sMtxPtrTbl[1] = j3dSys.getModel()->getMtxBuffer()->getWeightAnmMtx(0); + J3DShapeMtxConcatView_LoadFunc func = sMtxLoadPipeline[sCurrentPipeline]; + u32 draw_mtx_flag = j3dSys.getModel()->getModelData()->getDrawMtxFlag(mUseMtxIndex); + j3dSys.setModelDrawMtx((Mtx*)sMtxPtrTbl[draw_mtx_flag]); + u16 draw_mtx_index = j3dSys.getModel()->getModelData()->getDrawMtxIndex(mUseMtxIndex); + (this->*func)(0, draw_mtx_index); +} + +/* 80313D28-80313E4C 30E668 0124+00 3/0 0/0 0/0 .text + * loadNrmMtx__21J3DShapeMtxConcatViewCFiUsPA4_f */ +void J3DShapeMtxConcatView::loadNrmMtx(int param_0, u16 param_1, MtxP param_2) const { + if (sCurrentScaleFlag[param_1] == 1) { + if (sTexMtxLoadType == 0x2000) { + J3DFifoLoadNrmMtxToTexMtx(param_2, 0x1e); + } + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm(param_2, 0); + } else { + Mtx33 mtx; + Vec* scale = j3dSys.getNBTScale(); + J3DPSMtx33CopyFrom34(param_2, mtx); + J3DScaleNrmMtx33(mtx, *scale); + J3DFifoLoadNrmMtxImm3x3(mtx, 0); + } + } else { + Mtx33 mtx; + J3DPSCalcInverseTranspose(param_2, mtx); + if (sTexMtxLoadType == 0x2000) { + J3DFifoLoadNrmMtxToTexMtx3x3(mtx, 0x1e); + } + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm3x3(mtx, 0); + } else { + Vec* scale = j3dSys.getNBTScale(); + J3DScaleNrmMtx33(mtx, *scale); + J3DFifoLoadNrmMtxImm3x3(mtx, 0); + } + } +} + +/* 80313E4C-80313EEC 30E78C 00A0+00 1/0 0/0 0/0 .text load__16J3DShapeMtxMultiCFv */ +void J3DShapeMtxMulti::load() const { + J3DShapeMtx_LoadFunc func = sMtxLoadPipeline[sCurrentPipeline]; + int use_mtx_num = mUseMtxNum; + for (int i = 0; i < use_mtx_num; i++) { + u16 use_mtx_index = mUseMtxIndexTable[i]; + if (use_mtx_index != 0xffff) { + (this->*func)(i, use_mtx_index); + } + } +} + +/* 80313EEC-80313FA4 30E82C 00B8+00 1/0 0/0 0/0 .text + * calcNBTScale__16J3DShapeMtxMultiFRC3VecPA3_A3_fPA3_A3_f */ +void J3DShapeMtxMulti::calcNBTScale(Vec const& param_0, Mtx33* param_1, Mtx33* param_2) { + int use_mtx_num = mUseMtxNum; + for (int i = 0; i < use_mtx_num; i++) { + u16 use_mtx_index = mUseMtxIndexTable[i]; + if (use_mtx_index != 0xffff) { + J3DPSMtx33Copy(param_1[use_mtx_index], param_2[use_mtx_index]); + J3DScaleNrmMtx33(param_2[mUseMtxIndexTable[i]], param_0); + } + } +} + +/* 80313FA4-8031419C 30E8E4 01F8+00 1/0 0/0 0/0 .text load__26J3DShapeMtxMultiConcatViewCFv */ +void J3DShapeMtxMultiConcatView::load() const { + sMtxPtrTbl[0] = j3dSys.getModel()->getMtxBuffer()->getUserAnmMtx(0); + sMtxPtrTbl[1] = j3dSys.getModel()->getMtxBuffer()->getWeightAnmMtx(0); + if (!sLODFlag) { + J3DShapeMtxConcatView_LoadFunc func = sMtxLoadPipeline[sCurrentPipeline]; + int use_mtx_num = mUseMtxNum; + for (int i = 0; i < use_mtx_num; i++) { + u16 use_mtx_index = mUseMtxIndexTable[i]; + if (use_mtx_index != 0xffff) { + u16 draw_mtx_index = + j3dSys.getModel()->getModelData()->getDrawMtxIndex(use_mtx_index); + u8 draw_mtx_flag = j3dSys.getModel()->getModelData()->getDrawMtxFlag(use_mtx_index); + j3dSys.setModelDrawMtx((Mtx*)sMtxPtrTbl[draw_mtx_flag]); + (this->*func)(i, draw_mtx_index); + } + } + } else { + u16* important_mtx_indices = j3dSys.getModel()->getModelData()->getWEvlpImportantMtxIndex(); + j3dSys.setModelDrawMtx((Mtx*)sMtxPtrTbl[0]); + int use_mtx_num = mUseMtxNum; + for (int i = 0; i < use_mtx_num; i++) { + u32 current_pipeline = sCurrentPipeline; + J3DShapeMtxConcatView_LoadFunc func = sMtxLoadLODPipeline[current_pipeline]; + u16 use_mtx_index = mUseMtxIndexTable[i]; + if (use_mtx_index != 0xffff) { + u16 important_mtx_index = important_mtx_indices[use_mtx_index]; + if (important_mtx_index != sMtxLoadCache[i]) { + u8 draw_mtx_flag = + j3dSys.getModel()->getModelData()->getDrawMtxFlag(use_mtx_index); + if (draw_mtx_flag == 0) { + func = sMtxLoadPipeline[current_pipeline]; + } + (this->*func)(i, important_mtx_index); + sMtxLoadCache[i] = important_mtx_index; + } + } + } + } +} + +/* 8031419C-803142D4 30EADC 0138+00 1/0 0/0 0/0 .text + * loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUsPA4_f */ +void J3DShapeMtxMultiConcatView::loadNrmMtx(int param_0, u16 param_1, MtxP param_2) const { + Mtx33 mtx1, mtx2; + if (sCurrentScaleFlag[param_1] == 1) { + if (sTexMtxLoadType == 0x2000) { + J3DFifoLoadNrmMtxToTexMtx(param_2, param_0 * 3 + 0x1e); + } + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm(param_2, param_0 * 3); + } else { + Vec* nbt_scale = j3dSys.getNBTScale(); + J3DPSMtx33CopyFrom34(param_2, mtx1); + J3DScaleNrmMtx33(mtx1, *nbt_scale); + J3DFifoLoadNrmMtxImm3x3(mtx1, 0); + } + } else { + J3DPSCalcInverseTranspose(param_2, mtx2); + if (sTexMtxLoadType == 0x2000) { + J3DFifoLoadNrmMtxToTexMtx3x3(mtx2, param_0 * 3 + 0x1e); + } + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm3x3(mtx2, param_0 * 3); + } else { + Vec* nbt_scale = j3dSys.getNBTScale(); + J3DScaleNrmMtx33(mtx2, *nbt_scale); + J3DFifoLoadNrmMtxImm3x3(mtx2, param_0 * 3); + } + } +} + +/* 803142D4-803143E4 30EC14 0110+00 1/0 0/0 0/0 .text load__27J3DShapeMtxBBoardConcatViewCFv */ +void J3DShapeMtxBBoardConcatView::load() const { + Mtx mtx; + u16 draw_mtx_index = j3dSys.getModel()->getModelData()->getDrawMtxIndex(mUseMtxIndex); + u8 draw_mtx_flag = j3dSys.getModel()->getModelData()->getDrawMtxFlag(mUseMtxIndex); + if (draw_mtx_flag == 0) { + MtxP user_anm_mtx = j3dSys.getModel()->getMtxBuffer()->getUserAnmMtx(draw_mtx_index); + PSMTXConcat(j3dSys.getViewMtx(), user_anm_mtx, mtx); + } else { + MtxP weight_anm_mtx = j3dSys.getModel()->getMtxBuffer()->getWeightAnmMtx(draw_mtx_index); + PSMTXConcat(j3dSys.getViewMtx(), weight_anm_mtx, mtx); + } + J3DCalcBBoardMtx(mtx); + J3DFifoLoadPosMtxImm(mtx, 0); + mtx[0][0] = 1.0f / mtx[0][0]; + mtx[1][1] = 1.0f / mtx[1][1]; + mtx[2][2] = 1.0f / mtx[2][2]; + mtx[0][3] = FLOAT_LABEL(lit_1032); // 0.0f; + mtx[1][3] = FLOAT_LABEL(lit_1032); // 0.0f; + mtx[2][3] = FLOAT_LABEL(lit_1032); // 0.0f; + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm(mtx, 0); + } else { + Vec* nbt_scale = j3dSys.getNBTScale(); + J3DScaleNrmMtx(mtx, *nbt_scale); + J3DFifoLoadNrmMtxImm(mtx, 0); + } +} + +/* 803143E4-80314520 30ED24 013C+00 1/0 0/0 0/0 .text load__28J3DShapeMtxYBBoardConcatViewCFv */ +void J3DShapeMtxYBBoardConcatView::load() const { + Mtx mtx1; + Mtx33 mtx2; + u16 draw_mtx_index = j3dSys.getModel()->getModelData()->getDrawMtxIndex(mUseMtxIndex); + u8 draw_mtx_flag = j3dSys.getModel()->getModelData()->getDrawMtxFlag(mUseMtxIndex); + if (draw_mtx_flag == 0) { + MtxP user_anm_mtx = j3dSys.getModel()->getMtxBuffer()->getUserAnmMtx(draw_mtx_index); + PSMTXConcat(j3dSys.getViewMtx(), user_anm_mtx, mtx1); + } else { + MtxP weight_anm_mtx = j3dSys.getModel()->getMtxBuffer()->getWeightAnmMtx(draw_mtx_index); + PSMTXConcat(j3dSys.getViewMtx(), weight_anm_mtx, mtx1); + } + J3DCalcYBBoardMtx(mtx1); + J3DFifoLoadPosMtxImm(mtx1, 0); + if (sCurrentScaleFlag[mUseMtxIndex] == 1) { + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm(mtx1, 0); + } else { + Vec* nbt_scale = j3dSys.getNBTScale(); + J3DScaleNrmMtx(mtx1, *nbt_scale); + J3DFifoLoadNrmMtxImm(mtx1, 0); + } + } else { + J3DPSCalcInverseTranspose(mtx1, mtx2); + if (!sNBTFlag) { + J3DFifoLoadNrmMtxImm3x3(mtx2, 0); + } else { + Vec* nbt_scale = j3dSys.getNBTScale(); + J3DScaleNrmMtx33(mtx2, *nbt_scale); + J3DFifoLoadNrmMtxImm3x3(mtx2, 0); + } + } +} + +/* ############################################################################################## */ +/* 803CDB70-803CDB84 02AC90 0014+00 0/0 0/0 0/0 .data mtxCache$1263 */ +#pragma push +#pragma force_active on +SECTION_DATA static u8 mtxCache[20] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +}; +#pragma pop
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DStruct.cpp b/src/JSystem/J3DGraphBase/J3DStruct.cpp new file mode 100644 index 0000000000..8ee47fc799 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DStruct.cpp @@ -0,0 +1,75 @@ +// +// J3DStruct +// + +#include "JSystem/J3DGraphBase/J3DStruct.h" +#include "JSystem/JMath/JMath.h" + +/* 803256C4-80325718 320004 0054+00 0/0 11/11 24/24 .text __as__12J3DLightInfoFRC12J3DLightInfo */ +J3DLightInfo& J3DLightInfo::operator=(J3DLightInfo const& param_0) { + JMath::gekko_ps_copy6(&mLightPosition, ¶m_0.mLightPosition); + mColor = param_0.mColor; + JMath::gekko_ps_copy6(&mCosAtten, ¶m_0.mCosAtten); + return *this; +} + +/* 80325718-80325794 320058 007C+00 0/0 4/4 0/0 .text __as__13J3DTexMtxInfoFRC13J3DTexMtxInfo */ +J3DTexMtxInfo& J3DTexMtxInfo::operator=(J3DTexMtxInfo const& param_0) { + mProjection = param_0.mProjection; + mInfo = param_0.mInfo; + JMath::gekko_ps_copy3(&mCenter, ¶m_0.mCenter); + mSRT = param_0.mSRT; + JMath::gekko_ps_copy16(&mEffectMtx, ¶m_0.mEffectMtx); + return *this; +} + +// Helper functions to set float literal order +static f32 dummyLiteralOrder() { + return 1.0f; +} + +/* 80325794-803257DC 3200D4 0048+00 0/0 2/2 7/7 .text setEffectMtx__13J3DTexMtxInfoFPA4_f + */ +void J3DTexMtxInfo::setEffectMtx(Mtx param_0) { + JMath::gekko_ps_copy12(&mEffectMtx, param_0); + register f32 zero = 0.0f; + register f32* mtx = (f32*)mEffectMtx; + asm { + psq_st zero, 0x30(mtx), 0, 0 + }; + mEffectMtx[3][2] = 0.0f; + mEffectMtx[3][3] = 1.0f; +} + +/* 803257DC-80325800 32011C 0024+00 0/0 5/5 0/0 .text + * __as__16J3DIndTexMtxInfoFRC16J3DIndTexMtxInfo */ +J3DIndTexMtxInfo& J3DIndTexMtxInfo::operator=(J3DIndTexMtxInfo const& param_0) { + JMath::gekko_ps_copy6(field_0x0, param_0.field_0x0); + field_0x18 = param_0.field_0x18; + return *this; +} + +/* 80325800-8032587C 320140 007C+00 0/0 6/6 0/0 .text __as__10J3DFogInfoFRC10J3DFogInfo + */ +J3DFogInfo& J3DFogInfo::operator=(J3DFogInfo const& param_0) { + mType = param_0.mType; + mAdjEnable = param_0.mAdjEnable; + mCenter = param_0.mCenter; + mStartZ = param_0.mStartZ; + mEndZ = param_0.mEndZ; + mNearZ = param_0.mNearZ; + mFarZ = param_0.mFarZ; + mColor = param_0.mColor; + for (int i = 0; i < 10; i++) { + mFogAdjTable.fogVals[i] = param_0.mFogAdjTable.fogVals[i]; + } + return *this; +} + +/* 8032587C-803258A0 3201BC 0024+00 0/0 6/6 0/0 .text __as__15J3DNBTScaleInfoFRC15J3DNBTScaleInfo + */ +J3DNBTScaleInfo& J3DNBTScaleInfo::operator=(J3DNBTScaleInfo const& param_0) { + mbHasScale = param_0.mbHasScale; + mScale = param_0.mScale; + return *this; +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DSys.cpp b/src/JSystem/J3DGraphBase/J3DSys.cpp new file mode 100644 index 0000000000..8e6e64f7ab --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DSys.cpp @@ -0,0 +1,400 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DSys +// + +#include "JSystem/J3DGraphBase/J3DSys.h" + +#include "dol2asm.h" +#include "dolphin/gx/GXPixel.h" +#include "dolphin/os.h" +#include "dolphin/types.h" +#include "global.h" + +#include "JSystem/J3DGraphBase/J3DTevs.h" + +#include "JSystem/J3DGraphBase/J3DTexture.h" +#include "JSystem/J3DGraphBase/J3DGD.h" + +// +// Forward References: +// + +extern void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize); +extern void makeTexCoordTable(); +extern void makeAlphaCmpTable(); +extern void makeZModeTable(); +extern void makeTevSwapTable(); +extern "C" void GXInvalidateVtxCache(); + +extern "C" extern const GXColor j3dDefaultColInfo; +extern "C" extern u8 data_804563C8; + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 80434AC8-80434BE4 0617E8 011C+00 1/1 151/151 486/486 .bss j3dSys */ +J3DSys j3dSys; + +/* 80434BE4-80434C14 061904 0030+00 0/0 17/17 154/154 .bss mCurrentMtx__6J3DSys */ +Mtx J3DSys::mCurrentMtx; + +/* 80434C14-80434C20 061934 000C+00 0/0 6/6 0/0 .bss mCurrentS__6J3DSys */ +Vec J3DSys::mCurrentS; + +/* 80434C20-80434C2C 061940 000C+00 0/0 5/5 0/0 .bss mParentS__6J3DSys */ +Vec J3DSys::mParentS; + +/* 80434C2C-80434C70 06194C 0040+04 1/1 17/17 0/0 .bss sTexCoordScaleTable__6J3DSys */ +J3DTexCoordScaleInfo J3DSys::sTexCoordScaleTable[8]; + +/* 8030FDE8-8030FEC0 30A728 00D8+00 1/1 0/0 0/0 .text __ct__6J3DSysFv */ +J3DSys::J3DSys() { + makeTexCoordTable(); + makeTevSwapTable(); + makeAlphaCmpTable(); + makeZModeTable(); + + mFlags = 0; + MTXIdentity(mViewMtx); + mDrawMode = 1; + mMaterialMode = 0; + mModel = NULL; + mShape = NULL; + for (u32 i = 0; i < ARRAY_SIZE(mDrawBuffer); i++) + mDrawBuffer[i] = NULL; + mTexture = NULL; + mMatPacket = NULL; + mShapePacket = NULL; + mModelDrawMtx = NULL; + mModelNrmMtx = NULL; + mVtxPos = NULL; + mVtxNrm = NULL; + mVtxCol = NULL; + + for (u32 i = 0; i < 8; i++) { + sTexCoordScaleTable[i].field_0x00 = 1; + sTexCoordScaleTable[i].field_0x02 = 1; + sTexCoordScaleTable[i].field_0x04 = 0; + sTexCoordScaleTable[i].field_0x06 = 0; + } +} + +/* 8030FEC0-8030FEE4 30A800 0024+00 0/0 1/1 0/0 .text loadPosMtxIndx__6J3DSysCFiUs */ +void J3DSys::loadPosMtxIndx(int addr, u16 indx) const { + J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, indx, 0xB000 | ((u16)(addr * 0x0C))); +} + +/* 8030FEE4-8030FF0C 30A824 0028+00 0/0 1/1 0/0 .text loadNrmMtxIndx__6J3DSysCFiUs */ +void J3DSys::loadNrmMtxIndx(int addr, u16 indx) const { + J3DFifoLoadIndx(GX_CMD_LOAD_INDX_B, indx, 0x8000 | ((u16)((addr * 0x09) + 0x400))); +} + +/* 8030FF0C-803100BC 30A84C 01B0+00 1/1 0/0 0/0 .text setTexCacheRegion__6J3DSysF15_GXTexCacheSize + */ +void J3DSys::setTexCacheRegion(GXTexCacheSize size) { + const u32 kSize[] = { + 0x00008000, + 0x00020000, + 0x00080000, + 0x00000000, + }; + const u32 kRegionNum[] = {8, 4, 1, 0}; + + u32 regionNum = kRegionNum[size]; + mTexCacheRegionNum = regionNum; + + if (!!(mFlags & 0x80000000)) { + for (u32 i = 0; i < regionNum; i++) { + if (!!(i & 1)) { + GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size] + 0x80000, size, + i * kSize[size], size); + J3DFifoLoadTexCached((GXTexMapID)i, i * kSize[size] + 0x80000, size, + i * kSize[size], size); + } else { + GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size], size, + i * kSize[size] + 0x80000, size); + J3DFifoLoadTexCached((GXTexMapID)i, i * kSize[size], size, + i * kSize[size] + 0x80000, size); + } + } + } else { + for (u32 i = 0; i < regionNum; i++) { + GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size], size, + i * kSize[size] + 0x80000, size); + J3DFifoLoadTexCached((GXTexMapID)i, i * kSize[size], size, i * kSize[size] + 0x80000, + size); + } + } +} + +/* 803CD8A0-803CD8B0 02A9C0 0010+00 1/1 0/0 0/0 .data NullTexData */ +SECTION_DATA static u8 NullTexData[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803CD8B0-803CD8E0 02A9D0 0030+00 1/1 0/0 0/0 .data j3dIdentityMtx */ +SECTION_DATA static Mtx j3dIdentityMtx = { + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, +}; + +/* 803100BC-8031073C 30A9FC 0680+00 0/0 3/3 0/0 .text drawInit__6J3DSysFv */ +void J3DSys::drawInit() { + GXInvalidateVtxCache(); + GXSetCurrentMtx(GX_PNMTX0); + GXSetCullMode(GX_CULL_BACK); + GXSetCoPlanar(GX_FALSE); + GXSetClipMode(GX_CLIP_ENABLE); + GXSetColorUpdate(GX_TRUE); + GXSetDither(GX_TRUE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_NOOP); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetZCompLoc(GX_TRUE); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR1, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX2, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX3, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX4, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX5, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX6, GX_CLR_RGBA, GX_RGBA4, 7); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX7, GX_CLR_RGBA, GX_RGBA4, 7); + + GXSetNumIndStages(0); + reinitTexture(); + + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + + for (u32 i = 0; i < 10; i++) + GXLoadTexMtxImm(j3dIdentityMtx, GX_TEXMTX0 + i * 3, GX_MTX3x4); + + Mtx23 indTexMtx = { + {0.5f, 0.0f, 0.0f}, + {0.0f, 0.5f, 0.0f}, + }; + + u8 i; + for (i = 0; i < 3; i++) + GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), (f32*)indTexMtx, 1); + + GXSetChanMatColor(GX_COLOR0A0, j3dDefaultColInfo); + GXSetChanMatColor(GX_COLOR1A1, j3dDefaultColInfo); + + GXSetNumChans(data_804563C8); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + + for (i = 0; i < GX_MAX_TEXMAP; i++) + GXSetTexCoordGen2((GXTexCoordID)i, (GXTexGenType)j3dDefaultTexCoordInfo[i].mTexGenType, + (GXTexGenSrc)j3dDefaultTexCoordInfo[i].mTexGenSrc, + j3dDefaultTexCoordInfo[i].mTexGenMtx, GX_FALSE, GX_PTIDENTITY); + + for (i = 0; i < GX_MAX_INDTEXSTAGE; i++) + GXSetIndTexCoordScale((GXIndTexStageID)i, GX_ITS_1, GX_ITS_1); + + for (i = 0; i < GX_MAX_TEVREG; i++) + GXSetTevKColor((GXTevKColorID)i, j3dDefaultTevKColor); + + for (i = 0; i < GX_MAX_TEVREG; i++) + GXSetTevColorS10((GXTevRegID)i, j3dDefaultTevColor); + + for (i = 0; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevColorIn((GXTevStageID)i, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); + GXSetTevAlphaIn((GXTevStageID)i, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); + } + + for (i = 0; i < GX_MAX_TEVSTAGE; i++) + GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0); + + GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); + + for (i = 0; i < GX_MAX_TEVSTAGE; i++) + GXSetTevIndirect((GXTevStageID)i, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, + GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF); + + OSInitFastCast(); + setTexCacheRegion(GX_TEXCACHE_32K); +} + +/* 8031073C-8031079C 30B07C 0060+00 0/0 16/16 6/6 .text reinitGX__6J3DSysFv */ +void J3DSys::reinitGX() { + reinitGenMode(); + reinitLighting(); + reinitTransform(); + reinitTexture(); + reinitTevStages(); + reinitIndStages(); + reinitPixelProc(); + GXFlush(); +} + +/* 8031079C-803107E8 30B0DC 004C+00 1/1 0/0 0/0 .text reinitGenMode__6J3DSysFv */ +void J3DSys::reinitGenMode() { + GXSetNumChans(0); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + GXSetNumIndStages(0); + GXSetCullMode(GX_CULL_BACK); + GXSetCoPlanar(GX_FALSE); +} + +/* ############################################################################################## */ +/* 80450950-80450954 0003D0 0004+00 2/2 0/0 0/0 .sdata ColorBlack */ +SECTION_SDATA static GXColor ColorBlack = {0x00, 0x00, 0x00, 0x00}; + +/* 80450954-80450958 0003D4 0004+00 2/2 0/0 0/0 .sdata ColorWhite */ +SECTION_SDATA static GXColor ColorWhite = {0xFF, 0xFF, 0xFF, 0xFF}; + +/* 803107E8-80310894 30B128 00AC+00 1/1 0/0 0/0 .text reinitLighting__6J3DSysFv */ +void J3DSys::reinitLighting() { + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, + GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, + GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, ColorBlack); + GXSetChanAmbColor(GX_COLOR1A1, ColorBlack); + GXSetChanMatColor(GX_COLOR0A0, ColorWhite); + GXSetChanMatColor(GX_COLOR1A1, ColorWhite); +} + +/* 80310894-80310998 30B1D4 0104+00 1/1 0/0 0/0 .text reinitTransform__6J3DSysFv */ +void J3DSys::reinitTransform() { + GXSetCurrentMtx(GX_PNMTX0); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX2, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEX3, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEX4, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD5, GX_TG_MTX2x4, GX_TG_TEX5, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD6, GX_TG_MTX2x4, GX_TG_TEX6, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD7, GX_TG_MTX2x4, GX_TG_TEX7, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); +} + +/* 80310998-80310A3C 30B2D8 00A4+00 2/2 0/0 0/0 .text reinitTexture__6J3DSysFv */ +void J3DSys::reinitTexture() { + GXTexObj texObj; + GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&texObj, GX_TEXMAP0); + GXLoadTexObj(&texObj, GX_TEXMAP1); + GXLoadTexObj(&texObj, GX_TEXMAP2); + GXLoadTexObj(&texObj, GX_TEXMAP3); + GXLoadTexObj(&texObj, GX_TEXMAP4); + GXLoadTexObj(&texObj, GX_TEXMAP5); + GXLoadTexObj(&texObj, GX_TEXMAP6); + GXLoadTexObj(&texObj, GX_TEXMAP7); +} + +/* 80310A3C-80310D44 30B37C 0308+00 1/1 0/0 0/0 .text reinitTevStages__6J3DSysFv */ +void J3DSys::reinitTevStages() { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + + GXSetTevColor(GX_TEVREG0, ColorWhite); + GXSetTevColor(GX_TEVREG1, ColorWhite); + GXSetTevColor(GX_TEVREG2, ColorWhite); + GXSetTevKColor(GX_KCOLOR0, ColorWhite); + GXSetTevKColor(GX_KCOLOR1, ColorWhite); + GXSetTevKColor(GX_KCOLOR2, ColorWhite); + GXSetTevKColor(GX_KCOLOR3, ColorWhite); + + for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevColorIn((GXTevStageID)i, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); + GXSetTevAlphaIn((GXTevStageID)i, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); + GXSetTevKColorSel((GXTevStageID)i, GX_TEV_KCSEL_1_4); + GXSetTevKAlphaSel((GXTevStageID)i, GX_TEV_KASEL_1); + GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0); + } + + GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA); + GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); +} + +/* ############################################################################################## */ +/* 803CD8E0-803CD8F8 02AA00 0018+00 1/1 0/0 0/0 .data IndMtx */ +SECTION_DATA static Mtx23 IndMtx = {0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f}; + +/* 80310D44-80310E3C 30B684 00F8+00 1/1 0/0 0/0 .text reinitIndStages__6J3DSysFv */ +void J3DSys::reinitIndStages() { + for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) { + GXSetTevDirect((GXTevStageID)i); + } + + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0); + GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1); + GXSetIndTexOrder(GX_INDTEXSTAGE2, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexOrder(GX_INDTEXSTAGE3, GX_TEXCOORD3, GX_TEXMAP3); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1); + GXSetIndTexMtx(GX_ITM_0, (f32*)IndMtx, 1); + GXSetIndTexMtx(GX_ITM_1, (f32*)IndMtx, 1); + GXSetIndTexMtx(GX_ITM_2, (f32*)IndMtx, 1); +} + +/* 80310E3C-80310ED0 30B77C 0094+00 1/1 0/0 0/0 .text reinitPixelProc__6J3DSysFv */ +void J3DSys::reinitPixelProc() { + GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR); + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + GXSetDither(GX_TRUE); + GXSetFog(GX_FOG_NONE, 0.0f, 1.0f, 0.1f, 1.0f, ColorBlack); + GXSetFogRangeAdj(GX_FALSE, 0, NULL); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetZCompLoc(GX_TRUE); +} + +/* ############################################################################################## */ +/* 80451598-804515A0 000A98 0004+04 0/0 1/1 0/0 .sbss j3dDefaultViewNo */ +u32 j3dDefaultViewNo;
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DTevs.cpp b/src/JSystem/J3DGraphBase/J3DTevs.cpp new file mode 100644 index 0000000000..47071e924f --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DTevs.cpp @@ -0,0 +1,565 @@ +// +// J3DTevs +// + +#include "JSystem/J3DGraphBase/J3DTevs.h" +#include "JSystem/J3DGraphBase/J3DGD.h" +#include "JSystem/J3DGraphBase/J3DMatBlock.h" +#include "JSystem/J3DGraphBase/J3DSys.h" +#include "JSystem/J3DGraphBase/J3DTransform.h" + +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 */ +void J3DLightObj::load(u32 lightIdx) const { + GDOverflowCheck(0x48); + J3DGDSetLightPos(GXLightID(1 << lightIdx), mInfo.mLightPosition.x, mInfo.mLightPosition.y, mInfo.mLightPosition.z); + J3DGDSetLightAttn(GXLightID(1 << lightIdx), mInfo.mCosAtten.x, mInfo.mCosAtten.y, mInfo.mCosAtten.z, mInfo.mDistAtten.x, mInfo.mDistAtten.y, mInfo.mDistAtten.z); + J3DGDSetLightColor(GXLightID(1 << lightIdx), mInfo.mColor); + J3DGDSetLightDir(GXLightID(1 << lightIdx), mInfo.mLightDirection.x, mInfo.mLightDirection.y, mInfo.mLightDirection.z); +} + +/* 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++) { + J3DGDSetTexCoordGen( + GXTexGenType(param_1[i].getTexGenType()), + GXTexGenSrc(param_1[i].getTexGenSrc()) + ); + } + J3DGDWriteXFCmdHdr(0x1050, param_0); + if (j3dSys.checkFlag(0x40000000)) { + for (int i = 0; i < param_0; i++) { + J3DGDWrite_u32(param_1[i].getTexGenMtx() == 60 ? 61 : i * 3); + } + } else { + for (int i = 0; i < param_0; i++) { + J3DGDWrite_u32(61); + } + } +} + +/* 803238C4-80323900 31E204 003C+00 0/0 6/6 0/0 .text load__9J3DTexMtxCFUl */ +void J3DTexMtx::load(u32 mtxIdx) const { + if (j3dSys.checkFlag(J3DSysFlag_PostTexMtx)) { + loadPostTexMtx(mtxIdx); + } else { + loadTexMtx(mtxIdx); + } +} + +/* 80323900-80323920 31E240 0020+00 0/0 2/2 0/0 .text calc__9J3DTexMtxFPA4_Cf */ +void J3DTexMtx::calc(f32 const (*param_0)[4]) { + calcTexMtx(param_0); +} + +/* 80323920-80323C0C 31E260 02EC+00 2/1 0/0 0/0 .text calcTexMtx__9J3DTexMtxFPA4_Cf */ +void J3DTexMtx::calcTexMtx(const Mtx param_0) { + Mtx44 mtx1; + Mtx44 mtx2; + + static Mtx qMtx = { + 0.5f, 0.0f, 0.5f, 0.0f, + 0.0f, -0.5f, 0.5f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + }; + static Mtx qMtx2 = { + 0.5f, 0.0f, 0.0f, 0.5f, + 0.0f, -0.5f, 0.0f, 0.5f, + 0.0f, 0.0f, 1.0f, 0.0f, + }; + + u8 r28 = mTexMtxInfo.mInfo & 0x3f; + u32 r30 = (mTexMtxInfo.mInfo >> 7) & 1; + switch (r28) { + case 8: + case 9: + case 11: + if (r30 == 0) { + J3DGetTextureMtx(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMaya(mTexMtxInfo.mSRT, mtx2); + } + MTXConcat(mtx2, qMtx, mtx2); + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 7: + if (r30 == 0) { + J3DGetTextureMtx(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx1); + } else if (r30 == 1) { + J3DGetTextureMtxMaya(mTexMtxInfo.mSRT, mtx1); + } + MTXConcat(mtx1, qMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 10: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + MTXConcat(mtx2, qMtx2, mtx2); + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 6: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx1); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx1); + } + MTXConcat(mtx1, qMtx2, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 1: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx1); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx1); + } + MTXConcat(mtx1, param_0, mMtx); + break; + case 2: + case 3: + case 5: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 4: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mMtx); + break; + default: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mMtx); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mMtx); + } + break; + } +} + +/* 80323C0C-80323F64 31E54C 0358+00 1/0 2/2 0/0 .text calcPostTexMtx__9J3DTexMtxFPA4_Cf + */ +void J3DTexMtx::calcPostTexMtx(const Mtx param_0) { + Mtx44 mtx1; + Mtx44 mtx2; + + static Mtx qMtx = { + 0.5f, 0.0f, 0.5f, 0.0f, + 0.0f, -0.5f, 0.5f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + }; + static Mtx qMtx2 = { + 0.5f, 0.0f, 0.0f, 0.5f, + 0.0f, -0.5f, 0.0f, 0.5f, + 0.0f, 0.0f, 1.0f, 0.0f, + }; + + u8 r29 = mTexMtxInfo.mInfo & 0x3f; + u32 r30 = (mTexMtxInfo.mInfo >> 7) & 1; + switch (r29) { + case 8: + case 11: + if (r30 == 0) { + J3DGetTextureMtx(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMaya(mTexMtxInfo.mSRT, mtx2); + } + MTXConcat(mtx2, qMtx, mtx2); + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 9: + if (r30 == 0) { + J3DGetTextureMtx(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMaya(mTexMtxInfo.mSRT, mtx2); + } + MTXConcat(mtx2, qMtx, mtx2); + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mMtx); + break; + case 7: + if (r30 == 0) { + J3DGetTextureMtx(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx1); + } else if (r30 == 1) { + J3DGetTextureMtxMaya(mTexMtxInfo.mSRT, mtx1); + } + MTXConcat(mtx1, qMtx, mMtx); + break; + case 10: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + MTXConcat(mtx2, qMtx2, mtx2); + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 6: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx1); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx1); + } + MTXConcat(mtx1, qMtx2, mMtx); + break; + case 1: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mMtx); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mMtx); + } + break; + case 2: + case 5: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mtx1); + MTXConcat(mtx1, param_0, mMtx); + break; + case 3: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mMtx); + break; + case 4: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mtx2); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mtx2); + } + J3DMtxProjConcat(mtx2, mTexMtxInfo.mEffectMtx, mMtx); + break; + default: + if (r30 == 0) { + J3DGetTextureMtxOld(mTexMtxInfo.mSRT, mTexMtxInfo.mCenter, mMtx); + } else if (r30 == 1) { + J3DGetTextureMtxMayaOld(mTexMtxInfo.mSRT, mMtx); + } + break; + } +} + +/* 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]; + if (r31 >= 0x80 && r31 <= 0xbb) { + return true; + } + return false; +} + +/* 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); +} + +/* 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; + 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); + J3DGDLoadTlut((u8*)resTIMG + resTIMG->paletteOffset, (param_0 << 13) + 0xf0000, tlutSize); + J3DGDSetTexTlut(GXTexMapID(param_0), (param_0 << 13) + 0xf0000, GXTlutFmt(resTIMG->colorFormat)); + } +} + +/* 8032413C-80324160 31EA7C 0024+00 0/0 2/2 0/0 .text patchTexNo_PtrToIdx__FUlRCUs */ +void patchTexNo_PtrToIdx(u32 texID, u16 const& idx) { + 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(¶m_0.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, + 0.0f, -1.0f, 0.0f, + 0xff, 0xff, 0xff, 0xff, + 1.0f, 0.0f, 0.0f, + 1.0f, 0.0f, 0.0f, +}; + +/* 803A1EFC-803A1F1C 02E55C 0020+00 0/0 5/5 0/0 .rodata j3dDefaultTexCoordInfo */ +extern J3DTexCoordInfo const j3dDefaultTexCoordInfo[8] = { + {GX_MTX2x4, GX_TG_TEX0, GX_IDENTITY, 0}, {GX_MTX2x4, GX_TG_TEX1, GX_IDENTITY, 0}, + {GX_MTX2x4, GX_TG_TEX2, GX_IDENTITY, 0}, {GX_MTX2x4, GX_TG_TEX3, GX_IDENTITY, 0}, + {GX_MTX2x4, GX_TG_TEX4, GX_IDENTITY, 0}, {GX_MTX2x4, GX_TG_TEX5, GX_IDENTITY, 0}, + {GX_MTX2x4, GX_TG_TEX6, GX_IDENTITY, 0}, {GX_MTX2x4, GX_TG_TEX7, GX_IDENTITY, 0}, +}; + +/* 803A1F1C-803A1F80 02E57C 0064+00 0/0 1/1 0/0 .rodata j3dDefaultTexMtxInfo */ +extern J3DTexMtxInfo const j3dDefaultTexMtxInfo = { + 0x01, + 0x00, + 0xFF, + 0xFF, + {0.0f, 0.0f, 0.0f}, + {1.0f, 1.0f, 0, 0.0f, 0.0f}, + {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 1.0f}, +}; + +/* 803A1F80-803A1F9C 02E5E0 001C+00 0/0 2/2 0/0 .rodata j3dDefaultIndTexMtxInfo */ +extern J3DIndTexMtxInfo const j3dDefaultIndTexMtxInfo = { + 0.5f, 0.0f, 0.0f, + 0.0f, 0.5f, 0.0f, + 1 +}; + +/* 803A1F9C-803A1FB0 02E5FC 0014+00 0/0 1/1 0/0 .rodata j3dDefaultTevStageInfo */ +extern J3DTevStageInfo const j3dDefaultTevStageInfo = { + 0x04, 0x0A, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x05, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +}; + +/* 803A1FB0-803A1FBC 02E610 000C+00 0/0 2/2 0/0 .rodata j3dDefaultIndTevStageInfo */ +extern J3DIndTevStageInfo const j3dDefaultIndTevStageInfo = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 803A1FBC-803A1FE8 02E61C 002C+00 0/0 3/3 0/0 .rodata j3dDefaultFogInfo */ +extern J3DFogInfo const j3dDefaultFogInfo = { + 0x00, 0x00, 0x0140, 0.0f, 0.0f, 0.1f, 10000.0f, 0xFF, 0xFF, 0xFF, 0x00, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +}; + +/* 803A1FE8-803A1FF8 02E648 0010+00 0/0 3/3 0/0 .rodata j3dDefaultNBTScaleInfo */ +extern J3DNBTScaleInfo const j3dDefaultNBTScaleInfo = { + 0x00, 1.0f, 1.0f, 1.0f, +}; + +/* 80434C98-80436A60 0619B8 1DC7+01 1/1 0/0 0/0 .bss j3dTexCoordTable */ +static u8 j3dTexCoordTable[7623 + 1 /* padding */]; + +/* 80324194-8032423C 31EAD4 00A8+00 0/0 1/1 0/0 .text makeTexCoordTable__Fv */ +void makeTexCoordTable() { + u8 texMtx[] = { + GX_TEXMTX0, + GX_TEXMTX1, + GX_TEXMTX2, + GX_TEXMTX3, + GX_TEXMTX4, + GX_TEXMTX5, + GX_TEXMTX6, + GX_TEXMTX7, + GX_TEXMTX8, + GX_TEXMTX9, + GX_IDENTITY, + }; + + u8* table = j3dTexCoordTable; + for (u32 i = 0; i < 11; i++) { + for (u32 j = 0; j < 21; j++) { + for (int k = 0; k < ARRAY_SIZE(texMtx); k++) { + u32 idx = j * 11 + i * 0xe7 + k; + table[idx * 3 + 0] = i; + table[idx * 3 + 1] = j; + table[idx * 3 + 2] = texMtx[k]; + } + } + } +} + +/* ############################################################################################## */ +/* 80436A60-80436E60 063780 0400+00 1/1 3/3 0/0 .bss j3dTevSwapTableTable */ +u8 j3dTevSwapTableTable[1024]; + +/* 80436E60-80437160 063B80 0300+00 1/1 2/2 0/0 .bss j3dAlphaCmpTable */ +u8 j3dAlphaCmpTable[768]; + +/* 8032423C-803242A8 31EB7C 006C+00 0/0 1/1 0/0 .text makeAlphaCmpTable__Fv */ +void makeAlphaCmpTable() { + u8* table = j3dAlphaCmpTable; + for (u32 i = 0; i < 8; i++) { + for (int j = 0; j < 4; j++) { + for (u32 k = 0; k < 8; k++) { + u32 idx = i * 32 + j * 8 + k; + table[idx * 3] = i; + table[idx * 3 + 1] = j; + table[idx * 3 + 2] = k; + } + } + } +} + +/* ############################################################################################## */ +/* 80437160-804371C0 063E80 0060+00 1/1 4/4 5/5 .bss j3dZModeTable */ +extern u8 j3dZModeTable[96]; +u8 j3dZModeTable[96]; + +/* 803242A8-80324314 31EBE8 006C+00 0/0 1/1 0/0 .text makeZModeTable__Fv */ +void makeZModeTable() { + u8* table = j3dZModeTable; + for (int i = 0; i < 2; i++) { + for (u32 j = 0; j < 8; j++) { + for (int k = 0; k < 2; k++) { + u32 idx = j * 2 + i * 16 + k; + table[idx * 3 + 0] = i; + table[idx * 3 + 1] = j; + table[idx * 3 + 2] = k; + } + } + } +} + +/* 80324314-80324358 31EC54 0044+00 0/0 1/1 0/0 .text makeTevSwapTable__Fv */ +void makeTevSwapTable() { + u8* table = j3dTevSwapTableTable; + int i = 0; + do { + table[0] = i >> 6; + table[1] = (i >> 4) & 3; + table[2] = (i >> 2) & 3; + table[3] = i & 3; + i++; + table += 4; + } while (i < 256); +} + +/* 80324358-803243BC 31EC98 0064+00 1/1 0/0 0/0 .text loadTexMtx__9J3DTexMtxCFUl */ +void J3DTexMtx::loadTexMtx(u32 param_0) const { + GDOverflowCheck(0x35); + J3DGDLoadTexMtxImm((MtxP)mMtx, param_0 * 3 + 30, (_GXTexMtxType)mTexMtxInfo.mProjection); +} + +/* 803243BC-8032441C 31ECFC 0060+00 1/1 0/0 0/0 .text loadPostTexMtx__9J3DTexMtxCFUl */ +void J3DTexMtx::loadPostTexMtx(u32 param_0) const { + GDOverflowCheck(0x35); + J3DGDLoadPostTexMtxImm((MtxP)mMtx, param_0 * 3 + 0x40); +} + +/* 8032441C-8032499C 31ED5C 0580+00 1/1 0/0 0/0 .text J3DGDLoadTexMtxImm__FPA4_fUl13_GXTexMtxType + */ +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); + J3DGDWrite_f32(param_1[0][0]); + J3DGDWrite_f32(param_1[0][1]); + J3DGDWrite_f32(param_1[0][2]); + J3DGDWrite_f32(param_1[0][3]); + J3DGDWrite_f32(param_1[1][0]); + J3DGDWrite_f32(param_1[1][1]); + J3DGDWrite_f32(param_1[1][2]); + J3DGDWrite_f32(param_1[1][3]); + if (param_3 == GX_MTX3x4) { + J3DGDWrite_f32(param_1[2][0]); + J3DGDWrite_f32(param_1[2][1]); + J3DGDWrite_f32(param_1[2][2]); + J3DGDWrite_f32(param_1[2][3]); + } +} + +/* 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); + J3DGDWrite_f32(param_1[0][0]); + J3DGDWrite_f32(param_1[0][1]); + J3DGDWrite_f32(param_1[0][2]); + J3DGDWrite_f32(param_1[0][3]); + J3DGDWrite_f32(param_1[1][0]); + J3DGDWrite_f32(param_1[1][1]); + J3DGDWrite_f32(param_1[1][2]); + J3DGDWrite_f32(param_1[1][3]); + J3DGDWrite_f32(param_1[2][0]); + J3DGDWrite_f32(param_1[2][1]); + J3DGDWrite_f32(param_1[2][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}; + +/* 804563C4-804563C8 0049C4 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultAmbInfo */ +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; + +/* 804563CC-804563D0 0049CC 0004+00 0/0 3/3 0/0 .sdata2 j3dDefaultTevOrderInfoNull */ +extern const J3DTevOrderInfo j3dDefaultTevOrderInfoNull = {0xFF, 0xFF, 0xFF, 0x00}; + +/* 804563D0-804563D4 0049D0 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultIndTexOrderNull */ +extern const J3DIndTexOrderInfo j3dDefaultIndTexOrderNull = {0xFF, 0xFF, 0x00, 0x00}; + +/* 804563D4-804563D8 0049D4 0004+00 0/0 5/5 0/0 .sdata2 j3dDefaultTevColor */ +extern const GXColorS10 j3dDefaultTevColor = {0xFF, 0xFF, 0xFF, 0xFF}; + +/* 804563DC-804563E0 0049DC 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultIndTexCoordScaleInfo */ +extern const J3DIndTexCoordScaleInfo j3dDefaultIndTexCoordScaleInfo = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 804563E0-804563E4 0049E0 0004+00 0/0 5/5 0/0 .sdata2 j3dDefaultTevKColor */ +extern const GXColor j3dDefaultTevKColor = {0xFF, 0xFF, 0xFF, 0xFF}; + +/* 804563E4-804563E8 0049E4 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultTevSwapMode */ +extern J3DTevSwapModeInfo const j3dDefaultTevSwapMode = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 804563E8-804563EC 0049E8 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultTevSwapModeTable */ +extern const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable = {0x00, 0x01, 0x02, 0x03}; + +/* 804563EC-804563F0 0049EC 0004+00 0/0 3/3 0/0 .sdata2 j3dDefaultBlendInfo */ +extern const J3DBlendInfo j3dDefaultBlendInfo = {GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_NOOP}; + +/* 804563F0-804563F8 0049F0 0008+00 0/0 3/3 0/0 .sdata2 j3dDefaultColorChanInfo */ +extern const J3DColorChanInfo j3dDefaultColorChanInfo = { + 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0xFF, 0xFF, +}; + +/* 804563F8-804563FA 0049F8 0002+00 0/0 1/1 0/0 .sdata2 None */ +extern const u16 data_804563F8 = 0x1B00; + +/* 804563FA-804563FC 0049FA 0002+00 0/0 1/1 0/0 .sdata2 j3dDefaultAlphaCmpID */ +const u16 j3dDefaultAlphaCmpID = 0x00E7; + +/* 804563FC-80456400 0049FC 0002+02 0/0 3/3 0/0 .sdata2 j3dDefaultZModeID */ +const u16 j3dDefaultZModeID = 0x0017;
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DTexture.cpp b/src/JSystem/J3DGraphBase/J3DTexture.cpp new file mode 100644 index 0000000000..0eb87b63e5 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DTexture.cpp @@ -0,0 +1,70 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DTexture +// + +#include "JSystem/J3DGraphBase/J3DTexture.h" +#include "dolphin/gx.h" + +/* 8031204C-803121A4 30C98C 0158+00 0/0 1/1 0/0 .text loadGX__10J3DTextureCFUs11_GXTexMapID */ +void J3DTexture::loadGX(u16 idx, GXTexMapID texMapID) const { + ResTIMG* timg = getResTIMG(idx); + GXTexObj texObj; + + if (!timg->indexTexture) { + GXInitTexObj(&texObj, ((u8*)timg) + timg->imageOffset, timg->width, timg->height, + (GXTexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT, + (GXBool)timg->mipmapEnabled); + } else { + GXTlutObj tlutObj; + + GXInitTexObjCI(&texObj, ((u8*)timg) + timg->imageOffset, timg->width, timg->height, + (GXCITexFmt)timg->format, (GXTexWrapMode)timg->wrapS, + (GXTexWrapMode)timg->wrapT, (GXBool)timg->mipmapEnabled, (u32)texMapID); + GXInitTlutObj(&tlutObj, ((u8*)timg) + timg->paletteOffset, (GXTlutFmt)timg->colorFormat, + timg->numColors); + GXLoadTlut(&tlutObj, texMapID); + } + + const f32 kLODClampScale = 1.0f / 8.0f; + const f32 kLODBiasScale = 1.0f / 100.0f; + GXInitTexObjLOD(&texObj, (GXTexFilter)timg->minFilter, (GXTexFilter)timg->magFilter, + timg->minLOD * kLODClampScale, timg->maxLOD * kLODClampScale, + timg->LODBias * kLODBiasScale, (GXBool)timg->biasClamp, (GXBool)timg->doEdgeLOD, + (GXAnisotropy)timg->maxAnisotropy); + GXLoadTexObj(&texObj, texMapID); +} + +/* 803121A4-8031221C 30CAE4 0078+00 1/1 0/0 0/0 .text entryNum__10J3DTextureFUs */ +void J3DTexture::entryNum(u16 num) { + mNum = num; + mpRes = new ResTIMG[num](); + + for (s32 i = 0; i < mNum; i++) { + mpRes[i].paletteOffset = 0; + mpRes[i].imageOffset = 0; + } +} + +/* 8031221C-80312488 30CB5C 026C+00 0/0 1/1 0/0 .text addResTIMG__10J3DTextureFUsPC7ResTIMG */ +void J3DTexture::addResTIMG(u16 newNum, ResTIMG const* newRes) { + if (newNum == 0) + return; + + u16 oldNum = mNum; + ResTIMG* oldRes = mpRes; + + entryNum(mNum + newNum); + + for (u16 i = 0; i < oldNum; i++) { + mpRes[i] = oldRes[i]; + mpRes[i].imageOffset = (u32)(&oldRes[i]) + mpRes[i].imageOffset - (u32)(&mpRes[i]); + mpRes[i].paletteOffset = (u32)(&oldRes[i]) + mpRes[i].paletteOffset - (u32)(&mpRes[i]); + } + + for (u16 i = oldNum; i < mNum; i++) { + mpRes[i] = newRes[i]; + mpRes[i].imageOffset = (u32)(&newRes[i]) + mpRes[i].imageOffset - (u32)(&mpRes[i]); + mpRes[i].paletteOffset = (u32)(&newRes[i]) + mpRes[i].paletteOffset - (u32)(&mpRes[i]); + } +}
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DTransform.cpp b/src/JSystem/J3DGraphBase/J3DTransform.cpp new file mode 100644 index 0000000000..2ea8c60e34 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DTransform.cpp @@ -0,0 +1,378 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DTransform +// + +#include "JSystem/J3DGraphBase/J3DTransform.h" +#include "JSystem/JMath/JMATrigonometric.h" +#include "JSystem/J3DGraphBase/J3DStruct.h" +#include "dol2asm.h" +#include "dolphin/base/PPCArch.h" + +// +// Forward References: +// + +extern "C" void __MTGQR7__FUl(); +extern "C" void J3DGQRSetup7__FUlUlUlUl(); +extern "C" void J3DCalcBBoardMtx__FPA4_f(); +extern "C" void J3DCalcYBBoardMtx__FPA4_f(); +extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f(); +extern "C" void J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f(); +extern "C" void J3DGetTranslateRotateMtx__FsssfffPA4_f(); +extern "C" void J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f(); +extern "C" void J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f(); +extern "C" void J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f(); +extern "C" void J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f(); +extern "C" void J3DScaleNrmMtx__FPA4_fRC3Vec(); +extern "C" void J3DScaleNrmMtx33__FPA3_fRC3Vec(); +extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f(); +extern "C" void J3DPSMtxArrayConcat__FPA4_fPA4_fPA4_fUl(); +extern "C" extern f32 PSMulUnit01[2]; + +// +// External References: +// + +extern "C" u8 sincosTable___5JMath[65536]; + +// +// Declarations: +// + +/* 80311630-80311638 -00001 0008+00 0/0 0/0 0/0 .text __MTGQR7__FUl */ +void __MTGQR7(register u32 v) { + // clang-format off + asm { + mtspr GQR7, v + } + // clang-format on +} + +/* 80311638-80311670 30BF78 0038+00 0/0 2/2 0/0 .text J3DGQRSetup7__FUlUlUlUl */ +void J3DGQRSetup7(u32 r0, u32 r1, u32 r2, u32 r3) { + u32 v = (((r0 << 8) + r1) << 16) | ((r2 << 8) + r3); + __MTGQR7(v); +} + +/* ############################################################################################## */ +/* 80456378-8045637C 004978 0004+00 6/6 0/0 0/0 .sdata2 @435 */ +SECTION_SDATA2 static u8 lit_435[4] = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 80311670-80311760 30BFB0 00F0+00 0/0 2/2 0/0 .text J3DCalcBBoardMtx__FPA4_f */ +// this uses a non-standard sqrtf, not sure why or how its supposed to be setup +#ifdef NONMATCHING +static inline f32 sqrtf2(f32 x) { + if (x > 0.0f) { + f32 guess = (f32)__frsqrte(x); + return (f32)(x * guess); + } + return x; +} + +void J3DCalcBBoardMtx(Mtx mtx) { + f32 x = (mtx[0][0] * mtx[0][0]) + (mtx[1][0] * mtx[1][0]) + (mtx[2][0] * mtx[2][0]); + f32 y = (mtx[0][1] * mtx[0][1]) + (mtx[1][1] * mtx[1][1]) + (mtx[2][1] * mtx[2][1]); + f32 z = (mtx[0][2] * mtx[0][2]) + (mtx[1][2] * mtx[1][2]) + (mtx[2][2] * mtx[2][2]); + + if (x > 0.0f) { + x *= sqrtf2(x); + } + if (y > 0.0f) { + y *= sqrtf2(y); + } + if (z > 0.0f) { + z *= sqrtf2(z); + } + + mtx[0][0] = x; + mtx[0][1] = 0.0f; + mtx[0][2] = 0.0f; + + mtx[1][0] = 0.0f; + mtx[1][1] = y; + mtx[1][2] = 0.0f; + + mtx[2][0] = 0.0f; + mtx[2][1] = 0.0f; + mtx[2][2] = z; +} +#else +void J3DCalcBBoardMtx(f32 (*param_0)[4]) { + // NONMATCHING +} +#endif + +/* ############################################################################################## */ +/* 803A1E30-803A1E50 02E490 0020+00 0/0 1/1 0/0 .rodata j3dDefaultTransformInfo */ +extern J3DTransformInfo const j3dDefaultTransformInfo = { + {1.0f, 1.0f, 1.0f}, {0, 0, 0}, {0.0f, 0.0f, 0.0f}}; + +/* 803A1E50-803A1E5C 02E4B0 000C+00 0/0 1/1 0/0 .rodata j3dDefaultScale */ +extern Vec const j3dDefaultScale = {1.0f, 1.0f, 1.0f}; + +/* 803A1E5C-803A1E8C 02E4BC 0030+00 0/0 8/8 7/7 .rodata j3dDefaultMtx */ +extern Mtx const j3dDefaultMtx = { + {1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}}; + +/* 803A1E8C-803A1E98 02E4EC 000C+00 1/1 0/0 0/0 .rodata @443 */ +SECTION_RODATA static u8 const lit_443[12] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +COMPILER_STRIP_GATE(0x803A1E8C, &lit_443); + +/* 80311760-8031189C 30C0A0 013C+00 0/0 2/2 0/0 .text J3DCalcYBBoardMtx__FPA4_f */ +void J3DCalcYBBoardMtx(f32 (*param_0)[4]) { + // NONMATCHING +} + +/* 8031189C-80311964 30C1DC 00C8+00 0/0 6/6 0/0 .text J3DPSCalcInverseTranspose__FPA4_fPA3_f */ +void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]) { + // NONMATCHING +} + +/* 80311964-80311A24 30C2A4 00C0+00 0/0 2/2 2/2 .text + * J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f */ +void J3DGetTranslateRotateMtx(const J3DTransformInfo& tx, Mtx dst) { + f32 sx = JMASSin(tx.mRotation.x), cx = JMASCos(tx.mRotation.x); + f32 sy = JMASSin(tx.mRotation.y), cy = JMASCos(tx.mRotation.y); + f32 sz = JMASSin(tx.mRotation.z), cz = JMASCos(tx.mRotation.z); + + dst[2][0] = -sy; + dst[0][0] = cz * cy; + dst[1][0] = sz * cy; + dst[2][1] = cy * sx; + dst[2][2] = cy * cx; + + f32 cxsz = cx * sz; + f32 sxcz = sx * cz; + dst[0][1] = sxcz * sy - cxsz; + dst[1][2] = cxsz * sy - sxcz; + + f32 sxsz = sx * sz; + f32 cxcz = cx * cz; + dst[0][2] = cxcz * sy + sxsz; + dst[1][1] = sxsz * sy + cxcz; + + dst[0][3] = tx.mTranslate.x; + dst[1][3] = tx.mTranslate.y; + dst[2][3] = tx.mTranslate.z; +} + +/* 80311A24-80311ACC 30C364 00A8+00 0/0 1/1 0/0 .text J3DGetTranslateRotateMtx__FsssfffPA4_f */ +void J3DGetTranslateRotateMtx(s16 rx, s16 ry, s16 rz, f32 tx, f32 ty, f32 tz, Mtx dst) { + f32 sx = JMASSin(rx), cx = JMASCos(rx); + f32 sy = JMASSin(ry), cy = JMASCos(ry); + f32 sz = JMASSin(rz), cz = JMASCos(rz); + + dst[2][0] = -sy; + dst[0][0] = cz * cy; + dst[1][0] = sz * cy; + dst[2][1] = cy * sx; + dst[2][2] = cy * cx; + + f32 cxsz = cx * sz; + f32 sxcz = sx * cz; + dst[0][1] = sxcz * sy - cxsz; + dst[1][2] = cxsz * sy - sxcz; + + f32 sxsz = sx * sz; + f32 cxcz = cx * cz; + dst[0][2] = cxcz * sy + sxsz; + dst[1][1] = sxsz * sy + cxcz; + + dst[0][3] = tx; + dst[1][3] = ty; + dst[2][3] = tz; +} + +/* ############################################################################################## */ +/* 8045637C-80456380 00497C 0004+00 4/4 0/0 0/0 .sdata2 @526 */ +SECTION_SDATA2 static f32 lit_526 = 1.0f; + +/* 80311ACC-80311B80 30C40C 00B4+00 0/0 3/3 0/0 .text + * J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f */ +void J3DGetTextureMtx(const J3DTextureSRTInfo& srt, const Vec& center, Mtx dst) { + f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation); + + f32 cx = srt.mScaleX * cr; + f32 sx = srt.mScaleX * sr; + f32 sy = srt.mScaleY * sr; + f32 cy = srt.mScaleY * cr; + + dst[0][0] = cx; + dst[0][1] = -sx; + dst[0][2] = (-cx * center.x + sx * center.y) + center.x + srt.mTranslationX; + + dst[1][0] = sy; + dst[1][1] = cy; + dst[1][2] = (-sy * center.x - cy * center.y) + center.y + srt.mTranslationY; + + dst[2][3] = 0.0f; + dst[2][1] = 0.0f; + dst[2][0] = 0.0f; + dst[1][3] = 0.0f; + dst[0][3] = 0.0f; + dst[2][2] = 1.0f; +} + + +/* 80311B80-80311C34 30C4C0 00B4+00 0/0 3/3 0/0 .text + * J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f */ +void J3DGetTextureMtxOld(const J3DTextureSRTInfo& srt, const Vec& center, Mtx dst) { + f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation); + + f32 cx = srt.mScaleX * cr; + f32 sx = srt.mScaleX * sr; + f32 sy = srt.mScaleY * sr; + f32 cy = srt.mScaleY * cr; + + dst[0][0] = cx; + dst[0][1] = -sx; + dst[0][3] = (-cx * center.x + sx * center.y) + center.x + srt.mTranslationX; + + dst[1][0] = sy; + dst[1][1] = cy; + dst[1][3] = (-sy * center.x - cy * center.y) + center.y + srt.mTranslationY; + + dst[2][3] = 0.0f; + dst[2][1] = 0.0f; + dst[2][0] = 0.0f; + dst[1][2] = 0.0f; + dst[0][2] = 0.0f; + dst[2][2] = 1.0f; +} + + +/* ############################################################################################## */ +/* 80456380-80456388 004980 0004+04 2/2 0/0 0/0 .sdata2 @557 */ +SECTION_SDATA2 static f32 lit_557[1 + 1 /* padding */] = { + 0.5f, + /* padding */ + 0.0f, +}; + +/* 80311C34-80311CE4 30C574 00B0+00 0/0 3/3 0/0 .text + * J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f */ +void J3DGetTextureMtxMaya(const J3DTextureSRTInfo& srt, Mtx dst) { + f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation); + f32 tx = srt.mTranslationX - 0.5f; + f32 ty = srt.mTranslationY - 0.5f; + + dst[0][0] = srt.mScaleX * cr; + dst[0][1] = srt.mScaleY * sr; + dst[0][2] = tx * cr - sr * (ty + srt.mScaleY) + 0.5f; + + dst[1][0] = -srt.mScaleX * sr; + dst[1][1] = srt.mScaleY * cr; + dst[1][2] = -tx * sr - cr * (ty + srt.mScaleY) + 0.5f; + + dst[2][3] = 0.0f; + dst[2][1] = 0.0f; + dst[2][0] = 0.0f; + dst[1][3] = 0.0f; + dst[0][3] = 0.0f; + dst[2][2] = 1.0f; +} + + +/* 80311CE4-80311D94 30C624 00B0+00 0/0 3/3 0/0 .text + * J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f */ +void J3DGetTextureMtxMayaOld(const J3DTextureSRTInfo& srt, Mtx dst) { + f32 sr = JMASSin(srt.mRotation), cr = JMASCos(srt.mRotation); + f32 tx = srt.mTranslationX - 0.5f; + f32 ty = srt.mTranslationY - 0.5f; + + dst[0][0] = srt.mScaleX * cr; + dst[0][1] = srt.mScaleY * sr; + dst[0][3] = tx * cr - sr * (ty + srt.mScaleY) + 0.5f; + + dst[1][0] = -srt.mScaleX * sr; + dst[1][1] = srt.mScaleY * cr; + dst[1][3] = -tx * sr - cr * (ty + srt.mScaleY) + 0.5f; + + dst[2][3] = 0.0f; + dst[2][1] = 0.0f; + dst[2][0] = 0.0f; + dst[1][2] = 0.0f; + dst[0][2] = 0.0f; + dst[2][2] = 1.0f; +} + + +/* 80311D94-80311DF8 30C6D4 0064+00 0/0 2/2 0/0 .text J3DScaleNrmMtx__FPA4_fRC3Vec */ +#ifdef NONMATCHING +void J3DScaleNrmMtx(register Mtx mtx, const register Vec& scl) { + register f32 mtx_xy, mtx_z_, scl_xy, scl_z_; + + asm { + /* Row 0 */ + psq_l scl_xy, 0(scl), 0, 0 + psq_l mtx_xy, 0(mtx), 0, 0 + lfs scl_z_, 8(scl) + lfs mtx_z_, 8(mtx) + ps_mul f4, mtx_xy, scl_xy + psq_st f4, 0(mtx), 0, 0 + fmuls f4, mtx_z_, scl_z_ + stfs f4, 8(mtx) + + /* Row 1 */ + psq_l scl_xy, 0(scl), 0, 0 + psq_l mtx_xy, 16(mtx), 0, 0 + lfs scl_z_, 8(scl) + lfs mtx_z_, 24(mtx) + ps_mul f4, mtx_xy, scl_xy + psq_st f4, 16(mtx), 0, 0 + fmuls f4, mtx_z_, scl_z_ + stfs f4, 24(mtx) + + /* Row 2 */ + psq_l scl_xy, 0(scl), 0, 0 + psq_l mtx_xy, 32(mtx), 0, 0 + lfs scl_z_, 8(scl) + lfs mtx_z_, 40(mtx) + ps_mul f4, mtx_xy, scl_xy + psq_st f4, 32(mtx), 0, 0 + fmuls f4, mtx_z_, scl_z_ + stfs f4, 40(mtx) + } +} +#else +void J3DScaleNrmMtx(f32 (*param_0)[4], Vec const& param_1) { + // NONMATCHING +} +#endif + +/* 80311DF8-80311E4C 30C738 0054+00 0/0 5/5 0/0 .text J3DScaleNrmMtx33__FPA3_fRC3Vec */ +void J3DScaleNrmMtx33(f32 (*param_0)[3], Vec const& param_1) { + // NONMATCHING +} + +/* 80311E4C-80311F70 30C78C 0124+00 0/0 3/3 0/0 .text J3DMtxProjConcat__FPA4_fPA4_fPA4_f + */ +void J3DMtxProjConcat(f32 (*param_0)[4], f32 (*param_1)[4], f32 (*param_2)[4]) { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 80450958-80450960 0003D8 0008+00 1/1 0/0 0/0 .sdata Unit01 */ +SECTION_SDATA static u8 Unit01[8] = { + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, +}; + +/* 80311F70-8031204C 30C8B0 00DC+00 0/0 1/1 0/0 .text J3DPSMtxArrayConcat__FPA4_fPA4_fPA4_fUl */ +void J3DPSMtxArrayConcat(f32 (*param_0)[4], f32 (*param_1)[4], f32 (*param_2)[4], u32 param_3) { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 803CD8F8-803CD900 02AA18 0008+00 0/0 2/2 0/0 .data PSMulUnit01 */ +SECTION_DATA extern f32 PSMulUnit01[2] = { + 0.0f, + -1.0f, +};
\ No newline at end of file diff --git a/src/JSystem/J3DGraphBase/J3DVertex.cpp b/src/JSystem/J3DGraphBase/J3DVertex.cpp new file mode 100644 index 0000000000..96f42dedb9 --- /dev/null +++ b/src/JSystem/J3DGraphBase/J3DVertex.cpp @@ -0,0 +1,244 @@ +// +// Generated By: dol2asm +// Translation Unit: J3DVertex +// + +#include "JSystem/J3DGraphBase/J3DVertex.h" +#include "JSystem/J3DGraphAnimator/J3DJointTree.h" +#include "JSystem/J3DGraphBase/J3DSys.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "string.h" +#include "dolphin/os/OSCache.h" + +/* 80310EF8-80310F78 30B838 0080+00 0/0 1/1 0/0 .text __ct__13J3DVertexDataFv */ +J3DVertexData::J3DVertexData() { + mVtxNum = 0; + mNrmNum = 0; + mColNum = 0; + mTexCoordNum = 0; + mPacketNum = 0; + + mVtxAttrFmtList = NULL; + mVtxPosArray = NULL; + mVtxNrmArray = NULL; + mVtxNBTArray = NULL; + + for (int i = 0; i < ARRAY_SIZE(mVtxColorArray); i++) + mVtxColorArray[i] = NULL; + + for (int i = 0; i < ARRAY_SIZE(mVtxTexCoordArray); i++) + mVtxTexCoordArray[i] = NULL; + + mVtxPosFrac = 0; + mVtxPosType = GX_F32; + mVtxNrmFrac = 0; + mVtxNrmType = GX_F32; +} + +/* 80310F78-80310FD8 30B8B8 0060+00 0/0 1/1 0/0 .text + * setVertexData__15J3DVertexBufferFP13J3DVertexData */ +void J3DVertexBuffer::setVertexData(J3DVertexData* pVtxData) { + mVtxData = pVtxData; + mVtxPosArray[0] = pVtxData->getVtxPosArray(); + mVtxNrmArray[0] = pVtxData->getVtxNrmArray(); + mVtxColArray[0] = pVtxData->getVtxColorArray(0); + mVtxPosArray[1] = NULL; + mVtxNrmArray[1] = NULL; + mVtxColArray[1] = NULL; + + mTransformedVtxPosArray[0] = pVtxData->getVtxPosArray(); + mTransformedVtxNrmArray[0] = pVtxData->getVtxNrmArray(); + mTransformedVtxPosArray[1] = NULL; + mTransformedVtxNrmArray[1] = NULL; + + frameInit(); +} + +/* 80310FD8-80311030 30B918 0058+00 0/0 3/3 0/0 .text init__15J3DVertexBufferFv */ +void J3DVertexBuffer::init() { + mVtxData = NULL; + + mVtxPosArray[1] = NULL; + mVtxPosArray[0] = NULL; + + mVtxNrmArray[1] = NULL; + mVtxNrmArray[0] = NULL; + + mVtxColArray[1] = NULL; + mVtxColArray[0] = NULL; + + mTransformedVtxPosArray[1] = NULL; + mTransformedVtxPosArray[0] = NULL; + + mTransformedVtxNrmArray[1] = NULL; + mTransformedVtxNrmArray[0] = NULL; + + mCurrentVtxPos = NULL; + mCurrentVtxNrm = NULL; + mCurrentVtxCol = NULL; + + frameInit(); +} + +/* 80311030-8031106C 30B970 003C+00 0/0 1/1 0/0 .text __dt__15J3DVertexBufferFv */ +J3DVertexBuffer::~J3DVertexBuffer() {} + +/* 8031106C-80311090 30B9AC 0024+00 0/0 1/1 0/0 .text setArray__15J3DVertexBufferCFv */ +void J3DVertexBuffer::setArray() const { + j3dSys.setVtxPos(mCurrentVtxPos); + j3dSys.setVtxNrm(mCurrentVtxNrm); + j3dSys.setVtxCol(mCurrentVtxCol); +} + +/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl + */ +s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) { + if (flag & 1) { + for (int i = 0; i < 2; i++) { + mVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()]; + + if (mVtxPosArray[i] == NULL) { + return kJ3DError_Alloc; + } + memcpy(mVtxPosArray[i], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12); + DCStoreRange(mVtxPosArray[i], mVtxData->getVtxNum() * 12); + } + } else { + mVtxPosArray[0] = mVtxData->getVtxPosArray(); + + if (mVtxPosArray[1] == NULL) { + mVtxPosArray[1] = new (0x20) Vec[mVtxData->getVtxNum()]; + if (mVtxPosArray[1] == NULL) { + return kJ3DError_Alloc; + } + } + memcpy(mVtxPosArray[1], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12); + DCStoreRange(mVtxPosArray[1], mVtxData->getVtxNum() * 12); + } + + return kJ3DError_Success; +} + +/* 803111B0-803112D0 30BAF0 0120+00 1/1 0/0 0/0 .text copyLocalVtxNrmArray__15J3DVertexBufferFUl + */ +s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 flag) { + if (flag & 1) { + for (int i = 0; i < 2; i++) { + mVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()]; + + if (mVtxNrmArray[i] == NULL) { + return kJ3DError_Alloc; + } + memcpy(mVtxNrmArray[i], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12); + DCStoreRange(mVtxNrmArray[i], mVtxData->getNrmNum() * 12); + } + } else { + mVtxNrmArray[0] = mVtxData->getVtxNrmArray(); + + if (mVtxNrmArray[1] == NULL) { + mVtxNrmArray[1] = new (0x20) VertexNormal[mVtxData->getNrmNum()]; + if (mVtxNrmArray[1] == NULL) { + return kJ3DError_Alloc; + } + } + memcpy(mVtxNrmArray[1], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12); + DCStoreRange(mVtxNrmArray[1], mVtxData->getNrmNum() * 12); + } + + return kJ3DError_Success; +} + +/* 803112D0-80311478 30BC10 01A8+00 0/0 1/1 0/0 .text copyLocalVtxArray__15J3DVertexBufferFUl */ +s32 J3DVertexBuffer::copyLocalVtxArray(u32 flag) { + void* oldPosArray[2]; + void* oldNrmArray[2]; + + for (int i = 0; i < 2; i++) + oldPosArray[i] = mVtxPosArray[i]; + + if (~flag & 2) { + s32 ret = copyLocalVtxPosArray(flag); + if (ret != 0) { + for (int i = 0; i < 2; i++) { + if (oldPosArray[i] != mVtxPosArray[i]) { + if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) + delete mVtxPosArray[i]; + mVtxPosArray[i] = oldPosArray[i]; + } + } + return ret; + } + } else { + mVtxPosArray[0] = mVtxPosArray[1] = mVtxData->getVtxPosArray(); + } + + for (int i = 0; i < 2; i++) + oldNrmArray[i] = mVtxNrmArray[i]; + + if (~flag & 4) { + s32 ret = copyLocalVtxNrmArray(flag); + if (ret != 0) { + for (int i = 0; i < 2; i++) { + if (oldPosArray[i] != mVtxPosArray[i]) { + if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) + delete mVtxPosArray[i]; + mVtxPosArray[i] = oldPosArray[i]; + } + if (oldNrmArray[i] != mVtxNrmArray[i]) { + if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray()) + delete mVtxNrmArray[i]; + mVtxNrmArray[i] = oldNrmArray[i]; + } + } + return ret; + } + } else { + mVtxNrmArray[0] = mVtxNrmArray[1] = mVtxData->getVtxNrmArray(); + } + + return kJ3DError_Success; +} + +/* 80311478-8031152C 30BDB8 00B4+00 0/0 1/1 0/0 .text + * allocTransformedVtxPosArray__15J3DVertexBufferFv */ +s32 J3DVertexBuffer::allocTransformedVtxPosArray() { + if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL) + return kJ3DError_Success; + + for (int i = 0; i < 2; i++) { + if (i == 0 || mTransformedVtxPosArray[i] == NULL) { + mTransformedVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()]; + if (mTransformedVtxPosArray[i] == NULL) + return kJ3DError_Alloc; + } + } + + return kJ3DError_Success; +} + +/* 8031152C-803115E0 30BE6C 00B4+00 0/0 1/1 0/0 .text + * allocTransformedVtxNrmArray__15J3DVertexBufferFv */ +s32 J3DVertexBuffer::allocTransformedVtxNrmArray() { + if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL) + return kJ3DError_Success; + + for (int i = 0; i < 2; i++) { + if (i == 0 || mTransformedVtxNrmArray[i] == NULL) { + mTransformedVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()]; + if (mTransformedVtxNrmArray[i] == NULL) + return kJ3DError_Alloc; + } + } + + return kJ3DError_Success; +} + +/* 803115E0-803115F4 30BF20 0014+00 0/0 1/1 0/0 .text __ct__14J3DDrawMtxDataFv */ +J3DDrawMtxData::J3DDrawMtxData() { + mEntryNum = 0; + mDrawMtxFlag = NULL; + mDrawMtxIndex = NULL; +} + +/* 803115F4-80311630 30BF34 003C+00 0/0 2/2 0/0 .text __dt__14J3DDrawMtxDataFv */ +J3DDrawMtxData::~J3DDrawMtxData() {}
\ No newline at end of file |
