diff --git a/include/JSystem/J3DGraphBase/J3DGD.h b/include/JSystem/J3DGraphBase/J3DGD.h index b4a0bb60a..27e38e889 100644 --- a/include/JSystem/J3DGraphBase/J3DGD.h +++ b/include/JSystem/J3DGraphBase/J3DGD.h @@ -101,7 +101,7 @@ inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlend inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp, u8 ditherEnable) { J3DGDWriteBPCmd(0xFE001FE7); J3DGDWriteBPCmd( - (mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 | + u32(mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 | (mode == GX_BM_LOGIC) << 1 | ditherEnable << 2 | dstFactor << 5 | diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index e68d63d4e..2ff59d8cd 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -7,12 +7,32 @@ #include "JSystem/J3DGraphBase/J3DTexture.h" #include "dolphin/gx/GXEnum.h" -struct J3DGXColorS10 : public GXColorS10 { +struct J3DGXColorS10 { J3DGXColorS10() {} + J3DGXColorS10& operator=(const J3DGXColorS10& other) { + mColor = other.mColor; + return *this; + } + J3DGXColorS10& operator=(const GXColorS10& color) { + mColor = color; + return *this; + } + + GXColorS10 mColor; }; -struct J3DGXColor : public GXColor { +struct J3DGXColor { J3DGXColor() {} + J3DGXColor& operator=(const J3DGXColor& other) { + mColor = other.mColor; + return *this; + } + J3DGXColor& operator=(const GXColor& color) { + mColor = color; + return *this; + } + + GXColor mColor; }; class J3DTexGenBlock { @@ -140,10 +160,10 @@ public: virtual J3DTevOrder* getTevOrder(u32); virtual void setTevColor(u32, J3DGXColorS10 const*); virtual void setTevColor(u32, J3DGXColorS10); - virtual _GXColorS10* getTevColor(u32); + virtual J3DGXColorS10* getTevColor(u32); virtual void setTevKColor(u32, J3DGXColor const*); virtual void setTevKColor(u32, J3DGXColor); - virtual _GXColor* getTevKColor(u32); + virtual J3DGXColor* getTevKColor(u32); virtual void setTevKColorSel(u32 i, const u8* pNum) {} virtual void setTevKColorSel(u32, u8); virtual u8 getTevKColorSel(u32); @@ -213,10 +233,10 @@ public: virtual J3DIndTevStage* getIndTevStage(u32 i) { return &mIndTevStage[i]; } virtual void setTevColor(u32 i, const J3DGXColorS10* pColor) { mTevColor[i] = *pColor; } virtual void setTevColor(u32 i, J3DGXColorS10 color) { mTevColor[i] = color; } - virtual GXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } + virtual J3DGXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } virtual void setTevKColor(u32 i, const J3DGXColor* pColor) { mTevKColor[i] = *pColor; } virtual void setTevKColor(u32 i, J3DGXColor color) { mTevKColor[i] = color; } - virtual GXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } + virtual J3DGXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } virtual void setTevKColorSel(u32 i, const u8* pSel) { mTevKColorSel[i] = *pSel; } virtual void setTevKColorSel(u32 i, u8 sel) { mTevKColorSel[i] = sel; } virtual u8 getTevKColorSel(u32 i) { return mTevKColorSel[i]; } @@ -231,8 +251,8 @@ private: /* 0x18 */ J3DTevOrder mTevOrder[8]; /* 0x38 */ J3DTevStage mTevStage[8]; /* 0x78 */ J3DIndTevStage mIndTevStage[8]; - /* 0x98 */ GXColorS10 mTevColor[4]; - /* 0xB8 */ GXColor mTevKColor[4]; + /* 0x98 */ J3DGXColorS10 mTevColor[4]; + /* 0xB8 */ J3DGXColor mTevKColor[4]; /* 0xC8 */ u8 mTevKColorSel[8]; /* 0xD0 */ u8 mTevStageNum; /* 0xD4 */ u32 mTevRegOffset; @@ -270,10 +290,10 @@ public: virtual J3DTevOrder* getTevOrder(u32 i) { return &mTevOrder[i]; } virtual void setTevColor(u32 i, const J3DGXColorS10* pColor) { mTevColor[i] = *pColor; } virtual void setTevColor(u32 i, J3DGXColorS10 color) { mTevColor[i] = color; } - virtual GXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } + virtual J3DGXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } virtual void setTevKColor(u32 i, const J3DGXColor* pColor) { mTevKColor[i] = *pColor; } virtual void setTevKColor(u32 i, J3DGXColor color) { mTevKColor[i] = color; } - virtual GXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } + virtual J3DGXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } virtual void setTevKColorSel(u32 i, const u8* pNum) { mTevKColorSel[i] = *pNum; } virtual void setTevKColorSel(u32 i, u8 num) { mTevKColorSel[i] = num; } virtual u8 getTevKColorSel(u32 i) { return mTevKColorSel[i]; } @@ -286,10 +306,8 @@ public: virtual void setTevStage(u32 i, const J3DTevStage* pStage) { mTevStage[i] = *pStage; } virtual void setTevStage(u32 i, J3DTevStage stage) { mTevStage[i] = stage; } virtual J3DTevStage* getTevStage(u32 i) { return &mTevStage[i]; } - virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo*) { /* Nonmatching */ - } - virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo) { /* Nonmatching */ - } + virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo* pInfo) { mTevStage[i].setTevSwapModeInfo(*pInfo); } + virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo info) { mTevStage[i].setTevSwapModeInfo(info); } virtual void setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) { mTevSwapModeTable[i] = *pTable; } @@ -310,8 +328,8 @@ private: /* 0x10 */ J3DTevOrder mTevOrder[4]; /* 0x20 */ u8 mTevStageNum; /* 0x21 */ J3DTevStage mTevStage[4]; - /* 0x42 */ GXColorS10 mTevColor[4]; - /* 0x62 */ GXColor mTevKColor[4]; + /* 0x42 */ J3DGXColorS10 mTevColor[4]; + /* 0x62 */ J3DGXColor mTevKColor[4]; /* 0x72 */ u8 mTevKColorSel[4]; /* 0x76 */ u8 mTevKAlphaSel[4]; /* 0x7A */ J3DTevSwapModeTable mTevSwapModeTable[4]; @@ -347,10 +365,10 @@ public: virtual J3DTevOrder* getTevOrder(u32 i) { return &mTevOrder[i]; } virtual void setTevColor(u32 i, const J3DGXColorS10* pColor) { mTevColor[i] = *pColor; } virtual void setTevColor(u32 i, J3DGXColorS10 color) { mTevColor[i] = color; } - virtual GXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } + virtual J3DGXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } virtual void setTevKColor(u32 i, const J3DGXColor* pColor) { mTevKColor[i] = *pColor; } virtual void setTevKColor(u32 i, J3DGXColor color) { mTevKColor[i] = color; } - virtual GXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } + virtual J3DGXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } virtual void setTevKColorSel(u32 i, const u8* pNum) { mTevKColorSel[i] = *pNum; } virtual void setTevKColorSel(u32 i, u8 num) { mTevKColorSel[i] = num; } virtual u8 getTevKColorSel(u32 i) { return mTevKColorSel[i]; } @@ -363,10 +381,8 @@ public: virtual void setTevStage(u32 i, const J3DTevStage* pStage) { mTevStage[i] = *pStage; } virtual void setTevStage(u32 i, J3DTevStage stage) { mTevStage[i] = stage; } virtual J3DTevStage* getTevStage(u32 i) { return &mTevStage[i]; } - virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo*) { /* Nonmatching */ - } - virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo) { /* Nonmatching */ - } + virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo* pInfo) { mTevStage[i].setTevSwapModeInfo(*pInfo); } + virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo info) { mTevStage[i].setTevSwapModeInfo(info); } virtual void setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) { mTevSwapModeTable[i] = *pTable; } @@ -385,10 +401,10 @@ public: private: /* 0x08 */ u16 mTexNo[2]; /* 0x0C */ J3DTevOrder mTevOrder[2]; - /* 0x14 */ GXColorS10 mTevColor[4]; + /* 0x14 */ J3DGXColorS10 mTevColor[4]; /* 0x34 */ u8 mTevStageNum; /* 0x35 */ J3DTevStage mTevStage[2]; - /* 0x45 */ GXColor mTevKColor[4]; + /* 0x45 */ J3DGXColor mTevKColor[4]; /* 0x55 */ u8 mTevKColorSel[2]; /* 0x57 */ u8 mTevKAlphaSel[2]; /* 0x59 */ J3DTevSwapModeTable mTevSwapModeTable[4]; @@ -424,10 +440,10 @@ public: virtual J3DTevOrder* getTevOrder(u32 i) { return &mTevOrder[i]; } virtual void setTevColor(u32 i, const J3DGXColorS10* pColor) { mTevColor[i] = *pColor; } virtual void setTevColor(u32 i, J3DGXColorS10 color) { mTevColor[i] = color; } - virtual GXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } + virtual J3DGXColorS10* getTevColor(u32 i) { return &mTevColor[i]; } virtual void setTevKColor(u32 i, const J3DGXColor* pColor) { mTevKColor[i] = *pColor; } virtual void setTevKColor(u32 i, J3DGXColor color) { mTevKColor[i] = color; } - virtual GXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } + virtual J3DGXColor* getTevKColor(u32 i) { return &mTevKColor[i]; } virtual void setTevKColorSel(u32 i, const u8* pNum) { mTevKColorSel[i] = *pNum; } virtual void setTevKColorSel(u32 i, u8 num) { mTevKColorSel[i] = num; } virtual u8 getTevKColorSel(u32 i) { return mTevKColorSel[i]; } @@ -440,15 +456,8 @@ public: virtual void setTevStage(u32 i, const J3DTevStage* pStage) { mTevStage[i] = *pStage; } virtual void setTevStage(u32 i, J3DTevStage stage) { mTevStage[i] = stage; } virtual J3DTevStage* getTevStage(u32 i) { return &mTevStage[i]; } - virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo* pInfo) { - J3DTevStageTevSwapModeInfo& out = mTevStage[i].mTevSwapModeInfo; - out.field_0x0_29 = pInfo->field_0x0 + 1; - out.field_0x0_31 = pInfo->field_0x0; - } - virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo info) { - mTevStage[i].mTevSwapModeInfo.field_0x0_29 = info.field_0x0 + 1; - mTevStage[i].mTevSwapModeInfo.field_0x0_31 = info.field_0x0; - } + virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo* pInfo) { mTevStage[i].setTevSwapModeInfo(*pInfo); } + virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo info) { mTevStage[i].setTevSwapModeInfo(info); } virtual void setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) { mTevSwapModeTable[i] = *pTable; } @@ -469,8 +478,8 @@ public: /* 0x018 */ J3DTevOrder mTevOrder[16]; /* 0x058 */ u8 mTevStageNum; /* 0x059 */ J3DTevStage mTevStage[16]; - /* 0x0DA */ GXColorS10 mTevColor[4]; - /* 0x0FA */ GXColor mTevKColor[4]; + /* 0x0DA */ J3DGXColorS10 mTevColor[4]; + /* 0x0FA */ J3DGXColor mTevKColor[4]; /* 0x10A */ u8 mTevKColorSel[16]; /* 0x11A */ u8 mTevKAlphaSel[16]; /* 0x12A */ J3DTevSwapModeTable mTevSwapModeTable[4]; @@ -757,39 +766,28 @@ private: /* 0x0F */ u8 mDither; }; // Size: 0x10 -struct J3DIndTexCoordScale { +struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo { J3DIndTexCoordScale(); ~J3DIndTexCoordScale() {} u8 getScaleS() { return mScaleS; } u8 getScaleT() { return mScaleT; } - - /* 0x0 */ u8 mScaleS __attribute__((aligned(4))); - /* 0x1 */ u8 mScaleT; }; -struct J3DIndTexMtx { +struct J3DIndTexMtx : public J3DIndTexMtxInfo { J3DIndTexMtx(); ~J3DIndTexMtx() {} void load(u32 param_1) { J3DGDSetIndTexMtx(GXIndTexMtxID(param_1 + 1), mOffsetMtx, mScaleExp); } - - /* 0x00 */ Mtx23 mOffsetMtx; - /* 0x18 */ u8 mScaleExp; }; // Size: 0x1C -struct J3DIndTexOrder { +struct J3DIndTexOrder : public J3DIndTexOrderInfo { J3DIndTexOrder(); u8 getCoord() const { return mCoord; } u8 getMap() const { return mMap; } - - /* 0x0 */ u8 mCoord; - /* 0x1 */ u8 mMap; - /* 0x2 */ u8 field_0x2; - /* 0x3 */ u8 field_0x3; }; class J3DIndBlock { @@ -897,10 +895,10 @@ public: virtual u32 getType() = 0; virtual void setMatColor(u32, J3DGXColor const*); virtual void setMatColor(u32, J3DGXColor); - virtual GXColor* getMatColor(u32); + virtual J3DGXColor* getMatColor(u32); virtual void setAmbColor(u32, J3DGXColor const*); virtual void setAmbColor(u32, J3DGXColor); - virtual GXColor* getAmbColor(u32); + virtual J3DGXColor* getAmbColor(u32); virtual void setColorChanNum(u8); virtual void setColorChanNum(u8 const*); virtual u8 getColorChanNum() const; @@ -936,10 +934,10 @@ public: virtual u32 getType(); virtual void setMatColor(u32, J3DGXColor const*); virtual void setMatColor(u32, J3DGXColor); - virtual GXColor* getMatColor(u32); + virtual J3DGXColor* getMatColor(u32); virtual void setAmbColor(u32, J3DGXColor const*); virtual void setAmbColor(u32, J3DGXColor); - virtual GXColor* getAmbColor(u32); + virtual J3DGXColor* getAmbColor(u32); virtual void setColorChanNum(u8); virtual void setColorChanNum(u8 const*); virtual u8 getColorChanNum() const; @@ -958,8 +956,8 @@ public: virtual ~J3DColorBlockLightOn() {} private: - /* 0x04 */ GXColor mMatColor[2]; - /* 0x0C */ GXColor mAmbColor[2]; + /* 0x04 */ J3DGXColor mMatColor[2]; + /* 0x0C */ J3DGXColor mAmbColor[2]; /* 0x14 */ u8 mColorChanNum; /* 0x16 */ J3DColorChan mColorChan[4]; /* 0x20 */ J3DLightObj* mLight[8]; @@ -985,7 +983,7 @@ public: virtual u32 getType(); virtual void setMatColor(u32, J3DGXColor const*); virtual void setMatColor(u32, J3DGXColor); - virtual GXColor* getMatColor(u32); + virtual J3DGXColor* getMatColor(u32); virtual void setColorChanNum(u8); virtual void setColorChanNum(u8 const*); virtual u8 getColorChanNum() const; @@ -1002,7 +1000,7 @@ public: virtual ~J3DColorBlockLightOff() {} protected: - /* 0x04 */ GXColor mMatColor[2]; + /* 0x04 */ J3DGXColor mMatColor[2]; /* 0x0C */ u8 mColorChanNum; /* 0x0E */ J3DColorChan mColorChan[4]; /* 0x16 */ u8 mCullMode; @@ -1023,11 +1021,11 @@ public: virtual u32 getType(); virtual void setAmbColor(u32, J3DGXColor const*); virtual void setAmbColor(u32, J3DGXColor); - virtual GXColor* getAmbColor(u32); + virtual J3DGXColor* getAmbColor(u32); virtual ~J3DColorBlockAmbientOn() {} protected: - /* 0x20 */ GXColor mAmbColor[2]; + /* 0x20 */ J3DGXColor mAmbColor[2]; }; // Size: 0x28 extern int SizeOfJ3DColorBlockAmbientOnLoad; diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index 9dc13072c..d7d6833a6 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -59,8 +59,8 @@ public: } J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); } u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } - GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); } - GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); } + J3DGXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); } + J3DGXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); } J3DFog* getFog() { return mPEBlock->getFog(); } J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); } u16 getIndex() { return mIndex; } diff --git a/include/JSystem/J3DGraphBase/J3DStruct.h b/include/JSystem/J3DGraphBase/J3DStruct.h index 557723a39..d2f9dbc27 100644 --- a/include/JSystem/J3DGraphBase/J3DStruct.h +++ b/include/JSystem/J3DGraphBase/J3DStruct.h @@ -63,8 +63,16 @@ struct J3DTexMtxInfo { }; // Size: 0x64 struct J3DIndTexMtxInfo { - /* 0x00 */ Mtx23 field_0x0; - /* 0x18 */ u8 field_0x18; + void operator=(const J3DIndTexMtxInfo& other) { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + mOffsetMtx[i][j] = other.mOffsetMtx[i][j]; + } + } + mScaleExp = other.mScaleExp; + } + /* 0x00 */ Mtx23 mOffsetMtx; + /* 0x18 */ u8 mScaleExp; }; // Size: 0x1C struct J3DFogInfo { @@ -87,6 +95,11 @@ struct J3DNBTScaleInfo { }; // Size: 0x10 struct J3DIndTexOrderInfo { + void operator=(const J3DIndTexOrderInfo& other) { + mCoord = other.mCoord; + mMap = other.mMap; + } + /* 0x0 */ u8 mCoord; /* 0x1 */ u8 mMap; /* 0x2 */ u8 field_0x2; @@ -147,6 +160,11 @@ struct J3DTexCoordInfo { }; struct J3DIndTexCoordScaleInfo { + void operator=(const J3DIndTexCoordScaleInfo& other) { + mScaleS = other.mScaleS; + mScaleT = other.mScaleT; + } + /* 0x0 */ u8 mScaleS; /* 0x1 */ u8 mScaleT; /* 0x2 */ u8 field_0x2; diff --git a/include/JSystem/J3DGraphBase/J3DTevs.h b/include/JSystem/J3DGraphBase/J3DTevs.h index 762356cb9..fe3be9cd3 100644 --- a/include/JSystem/J3DGraphBase/J3DTevs.h +++ b/include/JSystem/J3DGraphBase/J3DTevs.h @@ -31,21 +31,14 @@ extern const u16 j3dDefaultTevSwapTableID; extern const u16 j3dDefaultAlphaCmpID; extern const u16 j3dDefaultZModeID; -struct J3DTevStageTevSwapModeInfo { - u8 field_0x0_29 : 2; - u8 field_0x0_31 : 2; -}; - struct J3DTevStage { J3DTevStage() { setTevStageInfo(j3dDefaultTevStageInfo); - mTevSwapModeInfo.field_0x0_29 = 0; - mTevSwapModeInfo.field_0x0_31 = 0; + setTevSwapModeInfo(j3dDefaultTevSwapMode); } J3DTevStage(const J3DTevStageInfo& info) { setTevStageInfo(info); - mTevSwapModeInfo.field_0x0_29 = 0; - mTevSwapModeInfo.field_0x0_31 = 0; + setTevSwapModeInfo(j3dDefaultTevSwapMode); } J3DTevStage& operator=(const J3DTevStage& other) { this->field_0x1 = other.field_0x1; @@ -57,6 +50,13 @@ struct J3DTevStage { return *this; } + void setTexSel(u8 param_0) { mTevSwapModeInfo = mTevSwapModeInfo & ~0x0C | param_0 << 2; } + void setRasSel(u8 param_0) { mTevSwapModeInfo = mTevSwapModeInfo & ~0x03 | param_0; } + void setTevSwapModeInfo(const J3DTevSwapModeInfo& info) { + setTexSel(info.field_0x1); + setRasSel(info.field_0x0); + } + void setTevStageInfo(const J3DTevStageInfo&); void load(u32) const { @@ -71,7 +71,7 @@ struct J3DTevStage { /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 field_0x5; /* 0x6 */ u8 field_0x6; - /* 0x7 */ J3DTevStageTevSwapModeInfo mTevSwapModeInfo; + /* 0x7 */ u8 mTevSwapModeInfo; }; struct J3DIndTevStage { diff --git a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp index edb8a2dda..50c5bf135 100644 --- a/src/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/src/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -51,11 +51,11 @@ inline void loadTexCoordScale(GXTexCoordID coord, const J3DTexCoordScaleInfo& in } inline void loadTevColor(u32 reg, const J3DGXColorS10& color) { - J3DGDSetTevColorS10(GXTevRegID(reg + 1), color); + J3DGDSetTevColorS10(GXTevRegID(reg + 1), color.mColor); } inline void loadTevKColor(u32 reg, const J3DGXColor& color) { - J3DGDSetTevKColor(GXTevKColorID(reg), color); + J3DGDSetTevKColor(GXTevKColorID(reg), color.mColor); } inline void loadZCompLoc(u8 compLoc) { @@ -340,7 +340,7 @@ s32 J3DPEBlockFull::countDLSize() { void J3DColorBlockLightOff::load() { GDOverflowCheck(SizeOfJ3DColorBlockLightOffLoad); mMatColorOffset = GDGetCurrOffset(); - loadMatColors((J3DGXColor*)mMatColor); + loadMatColors(mMatColor); mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100E, 4); mColorChan[0].load(); @@ -354,8 +354,8 @@ void J3DColorBlockLightOff::load() { void J3DColorBlockAmbientOn::load() { GDOverflowCheck(SizeOfJ3DColorBlockAmbientOnLoad); mMatColorOffset = GDGetCurrOffset(); - loadMatColors((J3DGXColor*)mMatColor); - loadAmbColors((J3DGXColor*)mAmbColor); + loadMatColors(mMatColor); + loadAmbColors(mAmbColor); mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100E, 4); mColorChan[0].load(); @@ -369,8 +369,8 @@ void J3DColorBlockAmbientOn::load() { void J3DColorBlockLightOn::load() { GDOverflowCheck(SizeOfJ3DColorBlockAmbientOnLoad); mMatColorOffset = GDGetCurrOffset(); - loadMatColors((J3DGXColor*)mMatColor); - loadAmbColors((J3DGXColor*)mAmbColor); + loadMatColors(mMatColor); + loadAmbColors(mAmbColor); mColorChanOffset = GDGetCurrOffset(); J3DGDWriteXFCmdHdr(0x100E, 4); mColorChan[0].load(); @@ -396,7 +396,7 @@ void J3DColorBlockLightOff::patchMatColor() { GDSetCurrOffset(mMatColorOffset); u8* start = GDGetCurrPointer(); GDOverflowCheck(SizeOfLoadMatColors); - loadMatColors((J3DGXColor*)mMatColor); + loadMatColors(mMatColor); u8* end = GDGetCurrPointer(); DCFlushRange(start, end - start); } @@ -427,7 +427,7 @@ void J3DColorBlockLightOn::patchMatColor() { GDSetCurrOffset(mMatColorOffset); u8* start = GDGetCurrPointer(); GDOverflowCheck(SizeOfLoadMatColors); - loadMatColors((J3DGXColor*)mMatColor); + loadMatColors(mMatColor); u8* end = GDGetCurrPointer(); DCFlushRange(start, end - start); } @@ -464,7 +464,7 @@ void J3DColorBlockLightOff::diff(u32 flag) { /* 802E1E80-802E1FFC .text diffMatColor__21J3DColorBlockLightOffFv */ void J3DColorBlockLightOff::diffMatColor() { GDOverflowCheck(SizeOfLoadMatColors); - loadMatColors((J3DGXColor*)mMatColor); + loadMatColors(mMatColor); } /* 802E1FFC-802E2408 .text diffLight__21J3DColorBlockLightOffFv */ @@ -489,7 +489,7 @@ void J3DColorBlockLightOn::diff(u32 flag) { /* 802E2478-802E25F4 .text diffMatColor__20J3DColorBlockLightOnFv */ void J3DColorBlockLightOn::diffMatColor() { GDOverflowCheck(SizeOfLoadMatColors); - loadMatColors((J3DGXColor*)mMatColor); + loadMatColors(mMatColor); } /* 802E25F4-802E2A38 .text diffLight__20J3DColorBlockLightOnFv */ @@ -626,7 +626,6 @@ void J3DTevBlock1::load() { /* 802E3110-802E362C .text load__12J3DTevBlock2Fv */ void J3DTevBlock2::load() { - /* Nonmatching */ u8 tevStageNum = mTevStageNum; mTexNoOffset = GDGetCurrOffset(); for (u32 i = 0; i < 2; i++) { @@ -653,10 +652,10 @@ void J3DTevBlock2::load() { ); mTevRegOffset = GDGetCurrOffset(); for (u32 i = 0; i < 3; i++) { - loadTevColor(i, ((J3DGXColorS10*)mTevColor)[i]); + loadTevColor(i, mTevColor[i]); } for (u32 i = 0; i < 4; i++) { - loadTevKColor(i, ((J3DGXColor*)mTevKColor)[i]); + loadTevKColor(i, mTevKColor[i]); } for (u32 i = 0; i < tevStageNum; i++) { mTevStage[i].load(i); @@ -686,7 +685,6 @@ void J3DTevBlock2::load() { /* 802E362C-802E3B70 .text load__12J3DTevBlock4Fv */ void J3DTevBlock4::load() { - /* Nonmatching */ u8 tevStageNum = mTevStageNum; mTexNoOffset = GDGetCurrOffset(); for (u32 i = 0; i < 4; i++) { @@ -715,10 +713,10 @@ void J3DTevBlock4::load() { } mTevRegOffset = GDGetCurrOffset(); for (u32 i = 0; i < 3; i++) { - loadTevColor(i, ((J3DGXColorS10*)mTevColor)[i]); + loadTevColor(i, mTevColor[i]); } for (u32 i = 0; i < 4; i++) { - loadTevKColor(i, ((J3DGXColor*)mTevKColor)[i]); + loadTevKColor(i, mTevKColor[i]); } for (u32 i = 0; i < tevStageNum; i++) { mTevStage[i].load(i); @@ -748,7 +746,6 @@ void J3DTevBlock4::load() { /* 802E3B70-802E40B8 .text load__13J3DTevBlock16Fv */ void J3DTevBlock16::load() { - /* Nonmatching */ u8 tevStageNum = mTevStageNum; mTexNoOffset = GDGetCurrOffset(); for (u32 i = 0; i < 8; i++) { @@ -777,10 +774,10 @@ void J3DTevBlock16::load() { } mTevRegOffset = GDGetCurrOffset(); for (u32 i = 0; i < 3; i++) { - loadTevColor(i, ((J3DGXColorS10*)mTevColor)[i]); + loadTevColor(i, mTevColor[i]); } for (u32 i = 0; i < 4; i++) { - loadTevKColor(i, ((J3DGXColor*)mTevKColor)[i]); + loadTevKColor(i, mTevKColor[i]); } for (u32 i = 0; i < tevStageNum; i++) { mTevStage[i].load(i); @@ -829,9 +826,9 @@ void J3DTevBlockPatched::patchTevReg() { u8 *pStart = GDGetCurrPointer(); for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); u8 *pEnd = GDGetCurrPointer(); DCFlushRange(pStart, pEnd - pStart); @@ -948,9 +945,9 @@ void J3DTevBlock2::patchTevReg() { u8 *pStart = GDGetCurrPointer(); for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); u8 *pEnd = GDGetCurrPointer(); DCFlushRange(pStart, pEnd - pStart); @@ -1016,9 +1013,9 @@ void J3DTevBlock4::patchTevReg() { u8 *pStart = GDGetCurrPointer(); for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); u8 *pEnd = GDGetCurrPointer(); DCFlushRange(pStart, pEnd - pStart); @@ -1087,9 +1084,9 @@ void J3DTevBlock16::patchTevReg() { u8 *pStart = GDGetCurrPointer(); for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); u8 *pEnd = GDGetCurrPointer(); DCFlushRange(pStart, pEnd - pStart); @@ -1097,7 +1094,6 @@ void J3DTevBlock16::patchTevReg() { /* 802E4CE8-802E4E64 .text patchTexNoAndTexCoordScale__13J3DTevBlock16Fv */ void J3DTevBlock16::patchTexNoAndTexCoordScale() { - /* Nonmatching */ GDSetCurrOffset(mTexNoOffset); u8 *start = GDGetCurrPointer(); @@ -1179,9 +1175,9 @@ void J3DTevBlockPatched::diffTevStageIndirect() { /* 802E5194-802E5230 .text diffTevReg__18J3DTevBlockPatchedFv */ void J3DTevBlockPatched::diffTevReg() { for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); } /* 802E5230-802E5328 .text diffTexCoordScale__18J3DTevBlockPatchedFv */ @@ -1197,7 +1193,6 @@ void J3DTevBlockPatched::diffTexCoordScale() { J3DSys::sTexCoordScaleTable[mTevOrder[i + 1].getTevOrderInfo().mTexMap & 7] ); } - /* Nonmatching */ } /* 802E5328-802E5360 .text diffTexNo__12J3DTevBlock1Fv */ @@ -1238,9 +1233,9 @@ void J3DTevBlock2::diffTexNo() { /* 802E55A0-802E563C .text diffTevReg__12J3DTevBlock2Fv */ void J3DTevBlock2::diffTevReg() { for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); } /* 802E563C-802E5750 .text diffTevStage__12J3DTevBlock2Fv */ @@ -1281,9 +1276,9 @@ void J3DTevBlock4::diffTexNo() { /* 802E5928-802E59C4 .text diffTevReg__12J3DTevBlock4Fv */ void J3DTevBlock4::diffTevReg() { for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); } /* 802E59C4-802E5AD8 .text diffTevStage__12J3DTevBlock4Fv */ @@ -1327,9 +1322,9 @@ void J3DTevBlock16::diffTexNo() { /* 802E5CE4-802E5D80 .text diffTevReg__13J3DTevBlock16Fv */ void J3DTevBlock16::diffTevReg() { for (u32 i = 0; i < ARRAY_SIZE(mTevColor) - 1; i++) - J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i]); + J3DGDSetTevColorS10((GXTevRegID)(i + 1), mTevColor[i].mColor); for (u32 i = 0; i < ARRAY_SIZE(mTevKColor); i++) - J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i]); + J3DGDSetTevKColor((GXTevKColorID)i, mTevKColor[i].mColor); } /* 802E5D80-802E5E94 .text diffTevStage__13J3DTevBlock16Fv */ @@ -1535,7 +1530,9 @@ void J3DPEBlockFogOff::diffBlend() { void J3DPEBlockFull::load() { mFogOffset = GDGetCurrOffset(); GDOverflowCheck(0x55); - mFog->load(); + if (mFog) { + mFog->load(); + } mAlphaComp.load(); mBlend.load(mDither); mZMode.load(); @@ -1545,7 +1542,7 @@ void J3DPEBlockFull::load() { /* 802E7A1C-802E7AD8 .text patch__14J3DPEBlockFullFv */ void J3DPEBlockFull::patch() { - mFogOffset = GDGetCurrOffset(); + GDSetCurrOffset(mFogOffset); GDOverflowCheck(0x37); u8* start = GDGetCurrPointer(); if (mFog) { @@ -1985,7 +1982,7 @@ void J3DColorBlockLightOn::setMatColor(u32 i, const J3DGXColor* pColor) { } /* 802EB580-802EB594 .text getMatColor__20J3DColorBlockLightOnFUl */ -GXColor * J3DColorBlockLightOn::getMatColor(u32 i) { +J3DGXColor * J3DColorBlockLightOn::getMatColor(u32 i) { return &mMatColor[i]; } @@ -2000,7 +1997,7 @@ void J3DColorBlockLightOn::setAmbColor(u32 i, const J3DGXColor* pColor) { } /* 802EB5EC-802EB600 .text getAmbColor__20J3DColorBlockLightOnFUl */ -GXColor * J3DColorBlockLightOn::getAmbColor(u32 i) { +J3DGXColor * J3DColorBlockLightOn::getAmbColor(u32 i) { return &mAmbColor[i]; } @@ -2095,7 +2092,7 @@ void J3DColorBlockAmbientOn::setAmbColor(u32 i, const J3DGXColor* color) { } /* 802EB774-802EB788 .text getAmbColor__22J3DColorBlockAmbientOnFUl */ -GXColor * J3DColorBlockAmbientOn::getAmbColor(u32 i) { +J3DGXColor * J3DColorBlockAmbientOn::getAmbColor(u32 i) { return &mAmbColor[i]; } @@ -2110,7 +2107,7 @@ void J3DColorBlockLightOff::setMatColor(u32 i, const J3DGXColor* pColor) { } /* 802EB84C-802EB860 .text getMatColor__21J3DColorBlockLightOffFUl */ -GXColor * J3DColorBlockLightOff::getMatColor(u32 i) { +J3DGXColor * J3DColorBlockLightOff::getMatColor(u32 i) { return &mMatColor[i]; }