Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
J3DGD.h
Go to the documentation of this file.
1#ifndef J3DGD_H
2#define J3DGD_H
3
4#include <dolphin/gx.h>
5#include "dolphin/gd/GDBase.h"
6
7inline void J3DGDWrite_u8(u8 param) {
8 __GDWrite(param);
9}
10
11inline void J3DGDWrite_u16(u16 param) {
12 __GDWrite((param & 0xffff) >> 8);
13 __GDWrite(param & 0xff);
14}
15
16inline void J3DGDWrite_u32(u32 param) {
17 __GDWrite((param >> 24) & 0xff);
18 __GDWrite((param >> 16) & 0xff);
19 __GDWrite((param >> 8) & 0xff);
20 __GDWrite(param & 0xff);
21}
22
23inline void J3DGDWrite_f32(f32 param) {
24 u32 tmp = *(u32*)&param;
26}
27
28inline void J3DGDWriteBPCmd(u32 cmd) {
29 J3DGDWrite_u8(0x61);
30 J3DGDWrite_u32(cmd);
31}
32
33inline void J3DFifoLoadBPCmd(u32 cmd) {
34 GXWGFifo.u8 = 0x61;
35 GXWGFifo.u32 = cmd;
36}
37
38inline void J3DGDWriteXFCmd(u16 addr, u32 cmd) {
39 J3DGDWrite_u8(0x10);
41 J3DGDWrite_u16(addr);
42 J3DGDWrite_u32(cmd);
43}
44
45inline void J3DGDWriteXFCmdHdr(u16 addr, u8 len) {
46 J3DGDWrite_u8(0x10);
47 J3DGDWrite_u16(len - 1);
48 J3DGDWrite_u16(addr);
49}
50
51inline void J3DFifoWriteXFCmdHdr(u16 addr, u8 len) {
52 GXWGFifo.u8 = 0x10;
53 GXWGFifo.u16 = len - 1;
54 GXWGFifo.u16 = addr;
55}
56
57inline void J3DGXCmd1f32ptr(f32* value) {
58 GXWGFifo.u32 = *(u32*)value;
59}
60
61inline void J3DGXCmd1f32(f32 value) {
62 GXWGFifo.u32 = *(u32*)&value;
63}
64
65inline void J3DGDWriteCPCmd(u8 reg, u32 value) {
67 J3DGDWrite_u8(reg);
68 J3DGDWrite_u32(value);
69}
70
71void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 IndTexStageNum,
72 GXCullMode cullMode);
73void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum);
84void J3DGDSetTexImgPtr(GXTexMapID, void*);
105
106static inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) {
107 GXWGFifo.u8 = cmd;
108 GXWGFifo.u16 = indx;
109 GXWGFifo.u16 = addr;
110}
111
112inline void J3DGDSetNumChans(u8 numChans) {
113 J3DGDWriteXFCmd(0x1009, numChans);
114}
115
116inline void J3DGDSetNumTexGens(u8 numTexGens) {
117 J3DGDWriteXFCmd(0x103f, numTexGens);
118}
119
121 J3DGDWriteBPCmd((stage / 2 + 0xf6) << 24 | (chan1 | chan2 << 2 | colorSel1 << 4 | alphaSel1 << 9 | colorSel2 << 14 | alphaSel2 << 19) & 0x00FFFFFF);
122}
123
124inline void J3DGDSetAlphaCompare(GXCompare cmp0, u8 ref0, GXAlphaOp op, GXCompare cmp1, u8 ref1) {
125 J3DGDWriteBPCmd(ref0 | ref1 << 8 | cmp0 << 16 | cmp1 << 19 | op << 22 | 0xF3 << 24);
126}
127
128inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp) {
129 J3DGDWriteBPCmd(0xFE00FFE3);
131 (mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 |
132 (mode == GX_BM_LOGIC) << 1 |
133 dstFactor << 5 |
134 srcFactor << 8 |
135 (mode == GX_BM_SUBTRACT) << 11 |
136 logicOp << 12 |
137 0x41 << 24);
138}
139
140inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp, u8 ditherEnable) {
141 J3DGDWriteBPCmd(0xFE00FFE7);
143 u32(mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 |
144 (mode == GX_BM_LOGIC) << 1 |
145 ditherEnable << 2 |
146 dstFactor << 5 |
147 srcFactor << 8 |
148 (mode == GX_BM_SUBTRACT) << 11 |
149 logicOp << 12 |
150 0x41 << 24);
151}
152
153inline void J3DGDSetZMode(u8 compareEnable, GXCompare func, u8 writeEnable) {
154 J3DGDWriteBPCmd(compareEnable | func << 1 | writeEnable << 4 | 0x40 << 24);
155}
156
157inline void J3DGDSetZCompLoc(u32 compLocEnable) {
158 J3DGDWriteBPCmd(0xFE000040);
159 J3DGDWriteBPCmd(compLocEnable << 6 | 0x43 << 24);
160}
161
162
163#endif /* J3DGD_H */
static void __GDWrite(u8 data)
Definition GDBase.h:36
enum _GXTevKColorID GXTevKColorID
@ GX_BM_BLEND
Definition GXEnum.h:327
@ GX_BM_SUBTRACT
Definition GXEnum.h:329
@ GX_BM_LOGIC
Definition GXEnum.h:328
enum _GXTexCoordID GXTexCoordID
_GXTlutSize
Definition GXEnum.h:879
enum _GXTexGenSrc GXTexGenSrc
enum _GXIndTexScale GXIndTexScale
enum _GXIndTexStageID GXIndTexStageID
enum _GXTexFmt GXTexFmt
enum _GXTexMapID GXTexMapID
_GXTlutFmt
Definition GXEnum.h:872
enum _GXAlphaOp GXAlphaOp
enum _GXTevColorChan GXTevColorChan
enum _GXTexCacheSize GXTexCacheSize
enum _GXBlendMode GXBlendMode
enum _GXLightID GXLightID
enum _GXVtxFmt GXVtxFmt
enum _GXCullMode GXCullMode
enum _GXTevKAlphaSel GXTevKAlphaSel
enum _GXTexWrapMode GXTexWrapMode
enum _GXIndTexMtxID GXIndTexMtxID
enum _GXChannelID GXChannelID
enum _GXTevKColorSel GXTevKColorSel
enum _GXFogType GXFogType
enum _GXTevRegID GXTevRegID
enum _GXTevStageID GXTevStageID
enum _GXCompare GXCompare
enum _GXTexFilter GXTexFilter
enum _GXLogicOp GXLogicOp
enum _GXTexGenType GXTexGenType
enum _GXAnisotropy GXAnisotropy
enum _GXBlendFactor GXBlendFactor
u32 mode
Definition GXTev.c:56
void J3DGDWrite_f32(f32 param)
Definition J3DGD.h:23
void J3DGDSetTexImgPtr(GXTexMapID, void *)
Definition J3DGD.cpp:364
void J3DGDSetIndTexMtx(GXIndTexMtxID, f32(*)[3], s8)
void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum)
Definition J3DGD.cpp:20
void J3DGDWriteCPCmd(u8 reg, u32 value)
Definition J3DGD.h:65
void J3DGDWriteXFCmdHdr(u16 addr, u8 len)
Definition J3DGD.h:45
void J3DGDWrite_u32(u32 param)
Definition J3DGD.h:16
void J3DFifoLoadNrmMtxImm3x3(f32(*)[3], u32)
void J3DFifoLoadNrmMtxToTexMtx3x3(f32(*)[3], u32)
void J3DGDSetTevKonstantSel_SwapModeTable(GXTevStageID stage, GXTevKColorSel colorSel1, GXTevKAlphaSel alphaSel1, GXTevKColorSel colorSel2, GXTevKAlphaSel alphaSel2, GXTevColorChan chan1, GXTevColorChan chan2)
Definition J3DGD.h:120
void J3DGDSetNumTexGens(u8 numTexGens)
Definition J3DGD.h:116
void J3DGDSetTevKColor(GXTevKColorID, GXColor)
Definition J3DGD.cpp:498
void J3DGDSetZCompLoc(u32 compLocEnable)
Definition J3DGD.h:157
void J3DGDSetAlphaCompare(GXCompare cmp0, u8 ref0, GXAlphaOp op, GXCompare cmp1, u8 ref1)
Definition J3DGD.h:124
void J3DGXCmd1f32(f32 value)
Definition J3DGD.h:61
void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp)
Definition J3DGD.h:128
void J3DFifoLoadBPCmd(u32 cmd)
Definition J3DGD.h:33
void J3DGDSetTexLookupMode(GXTexMapID, GXTexWrapMode, GXTexWrapMode, GXTexFilter, GXTexFilter, f32, f32, f32, u8, u8, GXAnisotropy)
Definition J3DGD.cpp:344
void J3DGDWriteBPCmd(u32 cmd)
Definition J3DGD.h:28
void J3DGDSetIndTexOrder(u32, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID)
Definition J3DGD.cpp:452
void J3DGDSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale, GXIndTexScale, GXIndTexScale)
Definition J3DGD.cpp:442
void J3DFifoLoadNrmMtxImm(f32(*)[4], u32)
void J3DGDSetTevColorS10(GXTevRegID, GXColorS10)
Definition J3DGD.cpp:508
void J3DGXCmd1f32ptr(f32 *value)
Definition J3DGD.h:57
void J3DGDWrite_u16(u16 param)
Definition J3DGD.h:11
void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize)
Definition J3DGD.cpp:656
void J3DGDSetZMode(u8 compareEnable, GXCompare func, u8 writeEnable)
Definition J3DGD.h:153
void J3DGDLoadTlut(void *, u32, _GXTlutSize)
void J3DGDSetFog(GXFogType, f32, f32, f32, f32, GXColor)
Definition J3DGD.cpp:521
void J3DGDSetTexCoordGen(GXTexGenType, GXTexGenSrc)
Definition J3DGD.cpp:189
void J3DGDSetLightColor(GXLightID, GXColor)
Definition J3DGD.cpp:39
void J3DGDSetFogRangeAdj(u8, u16, _GXFogAdjTable *)
Definition J3DGD.cpp:552
void J3DGDSetNumChans(u8 numChans)
Definition J3DGD.h:112
void J3DGDSetTexTlut(GXTexMapID, u32, _GXTlutFmt)
void J3DGDSetLightDir(GXLightID, f32, f32, f32)
Definition J3DGD.cpp:55
void J3DGDSetTexImgAttr(GXTexMapID, u16, u16, GXTexFmt)
Definition J3DGD.cpp:357
void J3DGDWriteXFCmd(u16 addr, u32 cmd)
Definition J3DGD.h:38
void J3DGDSetLightPos(GXLightID, f32, f32, f32)
Definition J3DGD.cpp:46
static void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr)
Definition J3DGD.h:106
void J3DGDSetLightAttn(GXLightID, f32, f32, f32, f32, f32, f32)
Definition J3DGD.cpp:27
void J3DGDSetTevOrder(GXTevStageID, GXTexCoordID, GXTexMapID, GXChannelID, GXTexCoordID, GXTexMapID, GXChannelID)
Definition J3DGD.cpp:482
void J3DGDSetTexImgPtrRaw(GXTexMapID, u32)
Definition J3DGD.cpp:369
void J3DGDWrite_u8(u8 param)
Definition J3DGD.h:7
void J3DFifoLoadNrmMtxToTexMtx(f32(*)[4], u32)
void J3DFifoWriteXFCmdHdr(u16 addr, u8 len)
Definition J3DGD.h:51
void J3DGDSetTexCoordScale2(GXTexCoordID, u16, u8, u8, u16, u8, u8)
Definition J3DGD.cpp:301
void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 IndTexStageNum, GXCullMode cullMode)
Definition J3DGD.cpp:10
void J3DFifoLoadPosMtxImm(f32(*)[4], u32)
void J3DGDSetVtxAttrFmtv(GXVtxFmt, GXVtxAttrFmtList const *, bool)
Definition J3DGD.cpp:64
static char * tmp[5]
Definition d_a_npc_ashB.cpp:231
Definition GXStruct.h:31
Definition d_menu_dmap_map.cpp:90
Definition GXStruct.h:55
Definition GXStruct.h:64
signed char s8
Definition types.h:4
unsigned long u32
Definition types.h:9
float f32
Definition types.h:22
unsigned short int u16
Definition types.h:7
unsigned char u8
Definition types.h:5