mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-02 10:10:06 -04:00
@@ -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 |
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user