tp/include/JSystem/J3DGraphBase/J3DFifo.h

68 lines
1.6 KiB
C

#ifndef J3DFIFO_H
#define J3DFIFO_H
#include <dolphin/gx.h>
#include <dolphin/gd.h>
inline void J3DFifoLoadBPCmd(u32 regval) {
GXCmd1u8(GX_LOAD_BP_REG);
GXCmd1u32(regval);
}
inline void J3DFifoWriteXFCmdHdr(u16 addr, u8 len) {
GXCmd1u8(GX_LOAD_XF_REG);
GXCmd1u16(len - 1);
GXCmd1u16(addr);
}
inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) {
GXWGFifo.u8 = cmd;
GXWGFifo.u16 = indx;
GXWGFifo.u16 = addr;
}
inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
GXWGFifo.u8 = GX_LOAD_CP_REG;
GXWGFifo.u8 = cmd;
GXWGFifo.u32 = param;
}
inline void J3DFifoLoadCPCmd(u8 reg, u32 value) {
GXCmd1u8(GX_LOAD_CP_REG);
GXCmd1u8(reg);
GXCmd1u32(value);
}
inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
GXWGFifo.u8 = GX_LOAD_XF_REG;
GXWGFifo.u16 = (len - 1);
GXWGFifo.u16 = cmd;
}
inline void J3DFifoLoadXFCmdHdr(u16 addr, u8 len) {
GXCmd1u8(GX_LOAD_XF_REG);
GXCmd1u16(len - 1);
GXCmd1u16(addr);
}
inline void J3DFifoLoadPosMtxIndx(u16 index, u32 addr) {
GXCmd1u8(GX_LOAD_INDX_A);
GXCmd1u16(index);
GXCmd1u16(((sizeof(Vec) - 1) << 12) | (u16)(addr * 4));
}
inline void J3DFifoLoadNrmMtxIndx3x3(u16 index, u32 addr) {
GXCmd1u8(GX_LOAD_INDX_B);
GXCmd1u16(index);
GXCmd1u16(((9 - 1) << 12) | (u16)((addr * 3) + 0x400));
}
void J3DFifoLoadPosMtxImm(f32 (*)[4], u32);
void J3DFifoLoadNrmMtxImm(f32 (*)[4], u32);
void J3DFifoLoadNrmMtxImm3x3(f32 (*)[3], u32);
void J3DFifoLoadNrmMtxToTexMtx(f32 (*)[4], u32);
void J3DFifoLoadNrmMtxToTexMtx3x3(f32 (*)[3], u32);
void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize);
#endif /* J3DFIFO_H */