mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
Fix GX inlines
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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) = {
|
||||
|
||||
Reference in New Issue
Block a user