mirror of https://github.com/zeldaret/tp.git
68 lines
1.6 KiB
C
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 */
|