diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index af3aac1375a..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_803251E4: -/* 803251E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803251E8 7C 08 02 A6 */ mflr r0 -/* 803251EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 803251F0 81 04 00 3C */ lwz r8, 0x3c(r4) -/* 803251F4 80 A3 00 04 */ lwz r5, 4(r3) -/* 803251F8 38 05 FF FF */ addi r0, r5, -1 -/* 803251FC 7D 06 00 38 */ and r6, r8, r0 -/* 80325200 28 08 00 00 */ cmplwi r8, 0 -/* 80325204 40 82 00 0C */ bne lbl_80325210 -/* 80325208 4B FF FE 95 */ bl entryMatSort__13J3DDrawBufferFP12J3DMatPacket -/* 8032520C 48 00 00 80 */ b lbl_8032528C -lbl_80325210: -/* 80325210 38 00 00 00 */ li r0, 0 -/* 80325214 90 04 00 04 */ stw r0, 4(r4) -/* 80325218 90 04 00 08 */ stw r0, 8(r4) -/* 8032521C 80 A4 00 2C */ lwz r5, 0x2c(r4) -/* 80325220 90 05 00 04 */ stw r0, 4(r5) -/* 80325224 90 05 00 08 */ stw r0, 8(r5) -/* 80325228 80 A3 00 00 */ lwz r5, 0(r3) -/* 8032522C 54 C7 10 3A */ slwi r7, r6, 2 -/* 80325230 7C C5 38 2E */ lwzx r6, r5, r7 -/* 80325234 28 06 00 00 */ cmplwi r6, 0 -/* 80325238 40 82 00 10 */ bne lbl_80325248 -/* 8032523C 7C 85 39 2E */ stwx r4, r5, r7 -/* 80325240 38 60 00 01 */ li r3, 1 -/* 80325244 48 00 00 48 */ b lbl_8032528C -lbl_80325248: -/* 80325248 7C C5 33 78 */ mr r5, r6 -/* 8032524C 48 00 00 28 */ b lbl_80325274 -lbl_80325250: -/* 80325250 80 05 00 3C */ lwz r0, 0x3c(r5) -/* 80325254 7C 00 40 40 */ cmplw r0, r8 -/* 80325258 40 82 00 18 */ bne lbl_80325270 -/* 8032525C 7C A3 2B 78 */ mr r3, r5 -/* 80325260 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 80325264 4B FE D7 A1 */ bl addShapePacket__12J3DMatPacketFP14J3DShapePacket -/* 80325268 38 60 00 00 */ li r3, 0 -/* 8032526C 48 00 00 20 */ b lbl_8032528C -lbl_80325270: -/* 80325270 80 A5 00 04 */ lwz r5, 4(r5) -lbl_80325274: -/* 80325274 28 05 00 00 */ cmplwi r5, 0 -/* 80325278 40 82 FF D8 */ bne lbl_80325250 -/* 8032527C 90 C4 00 04 */ stw r6, 4(r4) -/* 80325280 80 63 00 00 */ lwz r3, 0(r3) -/* 80325284 7C 83 39 2E */ stwx r4, r3, r7 -/* 80325288 38 60 00 01 */ li r3, 1 -lbl_8032528C: -/* 8032528C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80325290 7C 08 03 A6 */ mtlr r0 -/* 80325294 38 21 00 10 */ addi r1, r1, 0x10 -/* 80325298 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index 72b73af1a61..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,91 +0,0 @@ -lbl_8032509C: -/* 8032509C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803250A0 7C 08 02 A6 */ mflr r0 -/* 803250A4 90 01 00 24 */ stw r0, 0x24(r1) -/* 803250A8 39 61 00 20 */ addi r11, r1, 0x20 -/* 803250AC 48 03 D1 2D */ bl _savegpr_28 -/* 803250B0 7C 7E 1B 78 */ mr r30, r3 -/* 803250B4 7C 9F 23 78 */ mr r31, r4 -/* 803250B8 38 00 00 00 */ li r0, 0 -/* 803250BC 90 04 00 04 */ stw r0, 4(r4) -/* 803250C0 90 04 00 08 */ stw r0, 8(r4) -/* 803250C4 80 64 00 2C */ lwz r3, 0x2c(r4) -/* 803250C8 90 03 00 04 */ stw r0, 4(r3) -/* 803250CC 90 03 00 08 */ stw r0, 8(r3) -/* 803250D0 80 04 00 34 */ lwz r0, 0x34(r4) -/* 803250D4 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 803250D8 41 82 00 20 */ beq lbl_803250F8 -/* 803250DC 80 7E 00 00 */ lwz r3, 0(r30) -/* 803250E0 80 03 00 00 */ lwz r0, 0(r3) -/* 803250E4 90 1F 00 04 */ stw r0, 4(r31) -/* 803250E8 80 7E 00 00 */ lwz r3, 0(r30) -/* 803250EC 93 E3 00 00 */ stw r31, 0(r3) -/* 803250F0 38 60 00 01 */ li r3, 1 -/* 803250F4 48 00 00 D8 */ b lbl_803251CC -lbl_803250F8: -/* 803250F8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 803250FC 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80325100 83 A3 00 58 */ lwz r29, 0x58(r3) -/* 80325104 80 7F 00 30 */ lwz r3, 0x30(r31) -/* 80325108 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 8032510C 38 80 00 00 */ li r4, 0 -/* 80325110 81 83 00 00 */ lwz r12, 0(r3) -/* 80325114 81 8C 00 50 */ lwz r12, 0x50(r12) -/* 80325118 7D 89 03 A6 */ mtctr r12 -/* 8032511C 4E 80 04 21 */ bctrl -/* 80325120 54 60 04 3E */ clrlwi r0, r3, 0x10 -/* 80325124 28 00 FF FF */ cmplwi r0, 0xffff -/* 80325128 40 82 00 0C */ bne lbl_80325134 -/* 8032512C 38 80 00 00 */ li r4, 0 -/* 80325130 48 00 00 1C */ b lbl_8032514C -lbl_80325134: -/* 80325134 80 9D 00 04 */ lwz r4, 4(r29) -/* 80325138 54 60 2A F4 */ rlwinm r0, r3, 5, 0xb, 0x1a -/* 8032513C 7C 64 02 14 */ add r3, r4, r0 -/* 80325140 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 80325144 7C 03 02 14 */ add r0, r3, r0 -/* 80325148 54 04 D9 7E */ srwi r4, r0, 5 -lbl_8032514C: -/* 8032514C 80 7E 00 04 */ lwz r3, 4(r30) -/* 80325150 38 03 FF FF */ addi r0, r3, -1 -/* 80325154 7C 80 00 38 */ and r0, r4, r0 -/* 80325158 80 7E 00 00 */ lwz r3, 0(r30) -/* 8032515C 54 1D 10 3A */ slwi r29, r0, 2 -/* 80325160 7C 03 E8 2E */ lwzx r0, r3, r29 -/* 80325164 28 00 00 00 */ cmplwi r0, 0 -/* 80325168 40 82 00 10 */ bne lbl_80325178 -/* 8032516C 7F E3 E9 2E */ stwx r31, r3, r29 -/* 80325170 38 60 00 01 */ li r3, 1 -/* 80325174 48 00 00 58 */ b lbl_803251CC -lbl_80325178: -/* 80325178 7C 1C 03 78 */ mr r28, r0 -/* 8032517C 48 00 00 30 */ b lbl_803251AC -lbl_80325180: -/* 80325180 7F 83 E3 78 */ mr r3, r28 -/* 80325184 7F E4 FB 78 */ mr r4, r31 -/* 80325188 4B FE D8 ED */ bl isSame__12J3DMatPacketCFP12J3DMatPacket -/* 8032518C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80325190 41 82 00 18 */ beq lbl_803251A8 -/* 80325194 7F 83 E3 78 */ mr r3, r28 -/* 80325198 80 9F 00 2C */ lwz r4, 0x2c(r31) -/* 8032519C 4B FE D8 69 */ bl addShapePacket__12J3DMatPacketFP14J3DShapePacket -/* 803251A0 38 60 00 00 */ li r3, 0 -/* 803251A4 48 00 00 28 */ b lbl_803251CC -lbl_803251A8: -/* 803251A8 83 9C 00 04 */ lwz r28, 4(r28) -lbl_803251AC: -/* 803251AC 28 1C 00 00 */ cmplwi r28, 0 -/* 803251B0 40 82 FF D0 */ bne lbl_80325180 -/* 803251B4 80 7E 00 00 */ lwz r3, 0(r30) -/* 803251B8 7C 03 E8 2E */ lwzx r0, r3, r29 -/* 803251BC 90 1F 00 04 */ stw r0, 4(r31) -/* 803251C0 80 7E 00 00 */ lwz r3, 0(r30) -/* 803251C4 7F E3 E9 2E */ stwx r31, r3, r29 -/* 803251C8 38 60 00 01 */ li r3, 1 -lbl_803251CC: -/* 803251CC 39 61 00 20 */ addi r11, r1, 0x20 -/* 803251D0 48 03 D0 55 */ bl _restgpr_28 -/* 803251D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803251D8 7C 08 03 A6 */ mtlr r0 -/* 803251DC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803251E0 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s deleted file mode 100644 index be3143fab62..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80325068: -/* 80325068 80 A3 00 04 */ lwz r5, 4(r3) -/* 8032506C 38 80 00 00 */ li r4, 0 -/* 80325070 7C 80 23 78 */ mr r0, r4 -/* 80325074 7C A9 03 A6 */ mtctr r5 -/* 80325078 28 05 00 00 */ cmplwi r5, 0 -/* 8032507C 40 81 00 14 */ ble lbl_80325090 -lbl_80325080: -/* 80325080 80 A3 00 00 */ lwz r5, 0(r3) -/* 80325084 7C 05 21 2E */ stwx r0, r5, r4 -/* 80325088 38 84 00 04 */ addi r4, r4, 4 -/* 8032508C 42 00 FF F4 */ bdnz lbl_80325080 -lbl_80325090: -/* 80325090 38 00 00 00 */ li r0, 0 -/* 80325094 90 03 00 20 */ stw r0, 0x20(r3) -/* 80325098 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 0c54118357a..a6537a1bf2b 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -65,7 +65,7 @@ public: void offFlag(u32 flag) { mFlags &= ~flag; } bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } - bool isCpuSkinningOn() const { return (mFlags & 4) && (mFlags & 8); } + bool isCpuSkinningOn() const { return (mFlags & J3DMdlFlag_SkinPosCpu) && (mFlags & J3DMdlFlag_SkinNrmCpu); } Mtx& getBaseTRMtx() { return mBaseTransformMtx; } void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mBaseTransformMtx); } diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index 5097825618f..c489742c32b 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -148,7 +148,7 @@ public: /* 8031730C */ virtual bool countDLSize(); /* 80323544 */ virtual void setTexNo(u32, u16 const*); /* 8000E0AC */ virtual void setTexNo(u32, u16); - /* 8000DF94 */ virtual void getTexNo(u32) const; + /* 8000DF94 */ virtual u32 getTexNo(u32) const; /* 80323548 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 8000E0BC */ virtual void setTevOrder(u32, J3DTevOrder); /* 8000DFB8 */ virtual bool getTevOrder(u32); @@ -211,7 +211,7 @@ public: /* 80317BB4 */ virtual s32 countDLSize(); /* 803229D0 */ virtual void setTexNo(u32, u16 const*); /* 803229C0 */ virtual void setTexNo(u32, u16); - /* 803229E4 */ virtual void getTexNo(u32) const; + /* 803229E4 */ virtual u32 getTexNo(u32) const; /* 80322A08 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 803229F4 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322A1C */ virtual void getTevOrder(u32); @@ -275,7 +275,7 @@ public: /* 80317BCC */ virtual s32 countDLSize(); /* 8032202C */ virtual void setTexNo(u32, u16 const*); /* 8032201C */ virtual void setTexNo(u32, u16); - /* 80322040 */ virtual void getTexNo(u32) const; + /* 80322040 */ virtual u32 getTexNo(u32) const; /* 80322064 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80322050 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322078 */ virtual void getTevOrder(u32); @@ -345,7 +345,7 @@ public: /* 80317BC4 */ virtual s32 countDLSize(); /* 803223F0 */ virtual void setTexNo(u32, u16 const*); /* 803223E0 */ virtual void setTexNo(u32, u16); - /* 80322404 */ virtual void getTexNo(u32) const; + /* 80322404 */ virtual u32 getTexNo(u32) const; /* 80322428 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80322414 */ virtual void setTevOrder(u32, J3DTevOrder); /* 8032243C */ virtual void getTevOrder(u32); @@ -415,7 +415,7 @@ public: /* 80317BD4 */ virtual s32 countDLSize(); /* 80321C60 */ virtual void setTexNo(u32, u16 const*); /* 80321C50 */ virtual void setTexNo(u32, u16); - /* 80321C74 */ virtual void getTexNo(u32) const; + /* 80321C74 */ virtual u32 getTexNo(u32) const; /* 80321C98 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80321C84 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80321CAC */ virtual void getTevOrder(u32); @@ -485,7 +485,7 @@ public: /* 80317BBC */ virtual s32 countDLSize(); /* 803227B4 */ virtual void setTexNo(u32, u16 const*); /* 803227A4 */ virtual void setTexNo(u32, u16); - /* 803227C8 */ virtual void getTexNo(u32) const; + /* 803227C8 */ virtual u32 getTexNo(u32) const; /* 803227EC */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 803227D8 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322800 */ virtual void getTevOrder(u32); diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index d14c2fca4e2..3dae56cd03b 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -60,6 +60,7 @@ public: } } J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); } + u32 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); } diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 6b21f537ba8..00fa7590f04 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -150,7 +150,7 @@ public: J3DShapePacket* getShapePacket() const { return mpShapePacket; } void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; } void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; } - bool isChanged() const { return mDiffFlag < 0; } + bool isChanged() const { return mDiffFlag & 0x80000000; } virtual ~J3DMatPacket(); virtual int entry(J3DDrawBuffer*); diff --git a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp index ba72ac4999e..52d2a992dd7 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp @@ -623,13 +623,13 @@ void J3DModel::viewCalc() { if (getMtxCalcMode() == 2) { J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, (MtxP)&mInternalView); } - } else if (checkFlag(4)) { + } else if (checkFlag(J3DMdlFlag_SkinPosCpu)) { mMtxBuffer->calcDrawMtx(getMtxCalcMode(), mBaseScale, mBaseTransformMtx); calcNrmMtx(); calcBumpMtx(); DCStoreRangeNoSync(getDrawMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx)); DCStoreRange(getNrmMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx33)); - } else if (checkFlag(8)) { + } else if (checkFlag(J3DMdlFlag_SkinNrmCpu)) { mMtxBuffer->calcDrawMtx(getMtxCalcMode(), mBaseScale, mBaseTransformMtx); calcBBoardMtx(); DCStoreRange(getDrawMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx)); diff --git a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp index 371059303cc..d6160a56432 100644 --- a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp +++ b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp @@ -8,6 +8,7 @@ #include "dol2asm.h" #include "dolphin/types.h" #include "JSystem/J3DGraphBase/J3DPacket.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" // // Forward References: @@ -90,48 +91,82 @@ J3DDrawBuffer::~J3DDrawBuffer() { mpBuf = NULL; } -#ifdef NONMATCHING /* 80325068-8032509C 31F9A8 0034+00 2/2 1/1 0/0 .text frameInit__13J3DDrawBufferFv */ void J3DDrawBuffer::frameInit() { - // can't make mwcc not generate "mtctr" for this loop - for (int i = 0; i < mBufSize; i++) + u32 bufSize = mBufSize; + for (u32 i = 0; i < bufSize; i++) mpBuf[i] = NULL; mpCallBackPacket = NULL; } -#else -/* 80325068-8032509C 31F9A8 0034+00 2/2 1/1 0/0 .text frameInit__13J3DDrawBufferFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::frameInit() { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s" -} -#pragma pop -#endif /* 8032509C-803251E4 31F9DC 0148+00 2/1 0/0 0/0 .text * entryMatSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s" +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; + u32 texNo = pMatPacket->getMaterial()->getTexNo(0); + if ((u16)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; + } } -#pragma pop /* 803251E4-8032529C 31FB24 00B8+00 1/0 0/0 0/0 .text * entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s" +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; + } + } } -#pragma pop inline f32 J3DCalcZValue(register MtxP m, register Vec v) { register f32 out; diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index 20dd9a32ab3..3d0a4df2cc0 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -2586,7 +2586,7 @@ asm void J3DTevBlock16::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock16::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock16::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__13J3DTevBlock16CFUl.s" } @@ -3639,7 +3639,7 @@ asm void J3DTevBlock4::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock4::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock4::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock4CFUl.s" } @@ -4032,7 +4032,7 @@ asm void J3DTevBlock2::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock2::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock2::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock2CFUl.s" } @@ -4425,7 +4425,7 @@ asm void J3DTevBlock1::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock1::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock1::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock1CFUl.s" } @@ -4679,7 +4679,7 @@ asm void J3DTevBlockPatched::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlockPatched::getTexNo(u32 param_0) const { +asm u32 J3DTevBlockPatched::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__18J3DTevBlockPatchedCFUl.s" } diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index f1aa65aea33..0e702ac63c6 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1657,7 +1657,7 @@ bool J3DTevBlock::getTevStage(u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock::getTexNo(u32 param_0) const { nofralloc #include "asm/m_Do/m_Do_ext/getTexNo__11J3DTevBlockCFUl.s" }