Fix GX inlines

This commit is contained in:
LagoLunatic
2024-04-15 19:55:09 -04:00
parent 0dbf34dfbf
commit 19325b3c0b
5 changed files with 86 additions and 90 deletions
+13 -3
View File
@@ -49,6 +49,10 @@ inline void J3DGDWriteXFCmdHdr(u16 cmd, u8 len) {
J3DGDWrite_u16(cmd);
}
inline void J3DGXCmd1f32ptr(f32* value) {
GXFIFO.u32 = *(u32*)value;
}
void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 IndTexStageNum, _GXCullMode cullMode);
void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum);
void J3DGDSetIndTexStageNum(u32);
@@ -75,9 +79,15 @@ void J3DGDSetFog(GXFogType, f32, f32, f32, f32, GXColor);
void J3DGDSetFogRangeAdj(u8, u16, GXFogAdjTable*);
static inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) {
GFX_FIFO(u8) = cmd;
GFX_FIFO(u16) = indx;
GFX_FIFO(u16) = addr;
GXFIFO.u8 = cmd;
GXFIFO.u16 = indx;
GXFIFO.u16 = addr;
}
inline void J3DFifoWriteXFCmdHdr(u16 addr, u8 len) {
GXFIFO.u8 = GX_CMD_LOAD_XF_REG;
GXFIFO.u16 = len - 1;
GXFIFO.u16 = addr;
}
inline void J3DGDSetNumChans(u8 numChans) {
+13 -13
View File
@@ -12,16 +12,16 @@ public:
/* 0x04 */ u32 mMtxIdxRegB;
};
static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
GFX_FIFO(u8) = cmd;
GFX_FIFO(u32) = param;
static inline void JRNLoadCPCmd(u8 cmd, u32 param) {
GXFIFO.u8 = GX_CMD_LOAD_CP_REG;
GXFIFO.u8 = cmd;
GXFIFO.u32 = param;
}
static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
GFX_FIFO(u8) = GX_CMD_LOAD_XF_REG;
GFX_FIFO(u16) = (len - 1);
GFX_FIFO(u16) = cmd;
inline void JRNLoadXFCmdHdr(u16 cmd, u8 len) {
GXFIFO.u8 = GX_CMD_LOAD_XF_REG;
GXFIFO.u16 = len - 1;
GXFIFO.u16 = cmd;
}
class J3DCurrentMtx : public J3DCurrentMtxInfo {
@@ -40,11 +40,11 @@ public:
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
inline void load() const {
J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
J3DFifoWriteXFCmd(0x1018, 2);
GFX_FIFO(u32) = getMtxIdxRegA();
GFX_FIFO(u32) = getMtxIdxRegB();
JRNLoadCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
JRNLoadCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
JRNLoadXFCmdHdr(0x1018, 2);
GXFIFO.u32 = getMtxIdxRegA();
GXFIFO.u32 = getMtxIdxRegB();
}
void setCurrentTexMtx(u8 t0, u8 t1, u8 t2, u8 t3, u8 t4, u8 t5, u8 t6, u8 t7) {
+24 -26
View File
@@ -44,8 +44,6 @@ typedef union {
volatile PPCWGPipe GXFIFO : 0xCC008000;
#define GFX_FIFO(T) (*(volatile T*)0xCC008000)
inline void GXPosition3f32(f32 x, f32 y, f32 z) {
GXFIFO.f32 = x;
GXFIFO.f32 = y;
@@ -64,66 +62,66 @@ inline void GXPosition2f32(f32 x, f32 z) {
}
inline void GXColor1u32(u32 c) {
GFX_FIFO(u32) = c;
GXFIFO.u32 = c;
}
inline void GXTexCoord2f32(f32 s, f32 t) {
GFX_FIFO(f32) = s;
GFX_FIFO(f32) = t;
GXFIFO.f32 = s;
GXFIFO.f32 = t;
}
inline void GXTexCoord2u8(u8 s, u8 t) {
GFX_FIFO(u8) = s;
GFX_FIFO(u8) = t;
GXFIFO.u8 = s;
GXFIFO.u8 = t;
}
inline void GXTexCoord1x8(u8 s) {
GFX_FIFO(u8) = s;
GXFIFO.u8 = s;
}
inline void GXPosition2u16(u16 x, u16 y) {
GFX_FIFO(u16) = x;
GFX_FIFO(u16) = y;
GXFIFO.u16 = x;
GXFIFO.u16 = y;
}
inline void GXPosition1x16(u16 x) {
GFX_FIFO(u16) = x;
GXFIFO.u16 = x;
}
inline void GXPosition1x8(u8 x) {
GFX_FIFO(u8) = x;
GXFIFO.u8 = x;
}
inline void GXPosition3s8(s8 x, s8 y, s8 z) {
GFX_FIFO(s8) = x;
GFX_FIFO(s8) = y;
GFX_FIFO(s8) = z;
GXFIFO.s8 = x;
GXFIFO.s8 = y;
GXFIFO.s8 = z;
}
inline void GXPosition2s8(s8 x, s8 y) {
GFX_FIFO(s8) = x;
GFX_FIFO(s8) = y;
GXFIFO.s8 = x;
GXFIFO.s8 = y;
}
inline void GXPosition3s16(s16 x, s16 y, s16 z) {
GFX_FIFO(s16) = x;
GFX_FIFO(s16) = y;
GFX_FIFO(s16) = z;
GXFIFO.s16 = x;
GXFIFO.s16 = y;
GXFIFO.s16 = z;
}
inline void GXTexCoord2s8(s8 x, s8 y) {
GFX_FIFO(s8) = x;
GFX_FIFO(s8) = y;
GXFIFO.s8 = x;
GXFIFO.s8 = y;
}
inline void GXTexCoord2u16(u16 x, u16 y) {
GFX_FIFO(u16) = x;
GFX_FIFO(u16) = y;
GXFIFO.u16 = x;
GXFIFO.u16 = y;
}
inline void GXTexCoord2s16(const s16 u, const s16 v) {
GFX_FIFO(s16) = u;
GFX_FIFO(s16) = v;
GXFIFO.s16 = u;
GXFIFO.s16 = v;
}
inline void GFWriteBPCmd(u32 param_1) {
+3 -3
View File
@@ -58,9 +58,9 @@ u32 J3DShape::countBumpMtxNum() const {
/* 802DD2F0-802DD308 .text J3DLoadCPCmd__FUcUl */
void J3DLoadCPCmd(u8 cmd, u32 param) {
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
GFX_FIFO(u8) = cmd;
GFX_FIFO(u32) = param;
GXFIFO.u8 = GX_CMD_LOAD_CP_REG;
GXFIFO.u8 = cmd;
GXFIFO.u32 = param;
}
/* 802DD308-802DD344 .text J3DLoadArrayBasePtr__F7_GXAttrPv */
+33 -45
View File
@@ -64,59 +64,47 @@ void J3DSys::loadNrmMtxIndx(int addr, u16 indx) const {
/* 802D8BD8-802D8C58 .text J3DFifoLoadPosMtxImm__FPA4_fUl */
void J3DFifoLoadPosMtxImm(Mtx mtx, u32 idx) {
J3DFifoWriteXFCmd(idx << 2, 12);
u32 * mtx_u32 = (u32*)mtx;
GFX_FIFO(u32) = mtx_u32[0];
GFX_FIFO(u32) = mtx_u32[1];
GFX_FIFO(u32) = mtx_u32[2];
GFX_FIFO(u32) = mtx_u32[3];
GFX_FIFO(u32) = mtx_u32[4];
GFX_FIFO(u32) = mtx_u32[5];
GFX_FIFO(u32) = mtx_u32[6];
GFX_FIFO(u32) = mtx_u32[7];
GFX_FIFO(u32) = mtx_u32[8];
GFX_FIFO(u32) = mtx_u32[9];
GFX_FIFO(u32) = mtx_u32[10];
GFX_FIFO(u32) = mtx_u32[11];
J3DFifoWriteXFCmdHdr(idx << 2, 12);
J3DGXCmd1f32ptr(&mtx[0][0]);
J3DGXCmd1f32ptr(&mtx[0][1]);
J3DGXCmd1f32ptr(&mtx[0][2]);
J3DGXCmd1f32ptr(&mtx[0][3]);
J3DGXCmd1f32ptr(&mtx[1][0]);
J3DGXCmd1f32ptr(&mtx[1][1]);
J3DGXCmd1f32ptr(&mtx[1][2]);
J3DGXCmd1f32ptr(&mtx[1][3]);
J3DGXCmd1f32ptr(&mtx[2][0]);
J3DGXCmd1f32ptr(&mtx[2][1]);
J3DGXCmd1f32ptr(&mtx[2][2]);
J3DGXCmd1f32ptr(&mtx[2][3]);
}
/* 802D8C58-802D8CC4 .text J3DFifoLoadNrmMtxImm__FPA4_fUl */
void J3DFifoLoadNrmMtxImm(Mtx mtx, u32 idx) {
J3DFifoWriteXFCmd(0x400 + (idx * 3), 9);
u32 * mtx_u32 = (u32*)mtx;
GFX_FIFO(u32) = mtx_u32[0];
GFX_FIFO(u32) = mtx_u32[1];
GFX_FIFO(u32) = mtx_u32[2];
GFX_FIFO(u32) = mtx_u32[4];
GFX_FIFO(u32) = mtx_u32[5];
GFX_FIFO(u32) = mtx_u32[6];
GFX_FIFO(u32) = mtx_u32[8];
GFX_FIFO(u32) = mtx_u32[9];
GFX_FIFO(u32) = mtx_u32[10];
J3DFifoWriteXFCmdHdr(0x400 + (idx * 3), 9);
J3DGXCmd1f32ptr(&mtx[0][0]);
J3DGXCmd1f32ptr(&mtx[0][1]);
J3DGXCmd1f32ptr(&mtx[0][2]);
J3DGXCmd1f32ptr(&mtx[1][0]);
J3DGXCmd1f32ptr(&mtx[1][1]);
J3DGXCmd1f32ptr(&mtx[1][2]);
J3DGXCmd1f32ptr(&mtx[2][0]);
J3DGXCmd1f32ptr(&mtx[2][1]);
J3DGXCmd1f32ptr(&mtx[2][2]);
}
/* 802D8CC4-802D8D30 .text J3DFifoLoadNrmMtxImm3x3__FPA3_fUl */
void J3DFifoLoadNrmMtxImm3x3(Mtx33 mtx, u32 idx) {
J3DFifoWriteXFCmd(0x400 + (idx * 3), 9);
u32 * mtx_u32 = (u32*)mtx;
GFX_FIFO(u32) = mtx_u32[0];
GFX_FIFO(u32) = mtx_u32[1];
GFX_FIFO(u32) = mtx_u32[2];
GFX_FIFO(u32) = mtx_u32[3];
GFX_FIFO(u32) = mtx_u32[4];
GFX_FIFO(u32) = mtx_u32[5];
GFX_FIFO(u32) = mtx_u32[6];
GFX_FIFO(u32) = mtx_u32[7];
GFX_FIFO(u32) = mtx_u32[8];
J3DFifoWriteXFCmdHdr(0x400 + (idx * 3), 9);
J3DGXCmd1f32ptr(&mtx[0][0]);
J3DGXCmd1f32ptr(&mtx[0][1]);
J3DGXCmd1f32ptr(&mtx[0][2]);
J3DGXCmd1f32ptr(&mtx[1][0]);
J3DGXCmd1f32ptr(&mtx[1][1]);
J3DGXCmd1f32ptr(&mtx[1][2]);
J3DGXCmd1f32ptr(&mtx[2][0]);
J3DGXCmd1f32ptr(&mtx[2][1]);
J3DGXCmd1f32ptr(&mtx[2][2]);
}
u8 NullTexData[16] ALIGN_DECL(32) = {