Merge pull request #498 from Jcw87/J3DMatBlock

J3DMatBlock
This commit is contained in:
Jasper St. Pierre
2023-10-01 12:15:11 -07:00
committed by GitHub
6 changed files with 133 additions and 120 deletions
+1 -1
View File
@@ -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 |
+59 -61
View File
@@ -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;
+2 -2
View File
@@ -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; }
+20 -2
View File
@@ -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;
+10 -10
View File
@@ -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 {
+41 -44
View File
@@ -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];
}