Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
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.h>
6
7inline void J3DGDWrite_u8(u8 data) {
8 __GDWrite(data);
9}
10
11inline void J3DGDWrite_u16(u16 data) {
12 __GDWrite((u8)((data >> 8)));
13 __GDWrite((u8)((data >> 0) & 0xFF));
14}
15
16inline void J3DGDWrite_u32(u32 data) {
17 __GDWrite((u8)((data >> 24) & 0xFF));
18 __GDWrite((u8)((data >> 16) & 0xFF));
19 __GDWrite((u8)((data >> 8) & 0xFF));
20 __GDWrite((u8)((data >> 0) & 0xFF));
21}
22
23inline void J3DGDWrite_f32(f32 data) {
24 union {
25 f32 f;
26 u32 u;
27 } fid;
28 fid.f = data;
29 J3DGDWrite_u32(fid.u);
30}
31
32inline void J3DGDWriteBPCmd(u32 regval) {
33 J3DGDWrite_u8(GX_LOAD_BP_REG);
34 J3DGDWrite_u32(regval);
35}
36
37inline void J3DGDWriteXFCmd(u16 addr, u32 val) {
38 J3DGDWrite_u8(GX_LOAD_XF_REG);
40 J3DGDWrite_u16(addr);
41 J3DGDWrite_u32(val);
42}
43
44inline void J3DGDWriteXFCmdHdr(u16 addr, u8 len) {
45 J3DGDWrite_u8(GX_LOAD_XF_REG);
46 J3DGDWrite_u16(len - 1);
47 J3DGDWrite_u16(addr);
48}
49
50inline void J3DGXCmd1f32ptr(f32* data) {
51 GXCmd1u32(*(u32*)data);
52}
53
54inline void J3DGXCmd1f32(f32 data) {
55 union {
56 f32 f;
57 u32 u;
58 } fid;
59 fid.f = data;
60 GXCmd1u32(fid.u);
61}
62
63inline void J3DGDWriteCPCmd(u8 reg, u32 value) {
65 J3DGDWrite_u8(reg);
66 J3DGDWrite_u32(value);
67}
68
69void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 IndTexStageNum,
70 GXCullMode cullMode);
71void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum);
82void J3DGDSetTexImgPtr(GXTexMapID, void*);
97
98inline void J3DGDSetNumChans(u8 numChans) {
99 J3DGDWriteXFCmd(0x1009, numChans);
100}
101
102inline void J3DGDSetNumTexGens(u8 numTexGens) {
103 J3DGDWriteXFCmd(0x103f, numTexGens);
104}
105
107 J3DGDWriteBPCmd((stage / 2 + 0xf6) << 24 | (chan1 | chan2 << 2 | colorSel1 << 4 | alphaSel1 << 9 | colorSel2 << 14 | alphaSel2 << 19) & 0x00FFFFFF);
108}
109
110inline void J3DGDSetAlphaCompare(GXCompare cmp0, u8 ref0, GXAlphaOp op, GXCompare cmp1, u8 ref1) {
111 J3DGDWriteBPCmd(ref0 | ref1 << 8 | cmp0 << 16 | cmp1 << 19 | op << 22 | 0xF3 << 24);
112}
113
114inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp) {
115 J3DGDWriteBPCmd(0xFE00FFE3);
117 (mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 |
118 (mode == GX_BM_LOGIC) << 1 |
119 dstFactor << 5 |
120 srcFactor << 8 |
121 (mode == GX_BM_SUBTRACT) << 11 |
122 logicOp << 12 |
123 0x41 << 24);
124}
125
126inline void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp, u8 ditherEnable) {
127 J3DGDWriteBPCmd(0xFE00FFE7);
129 u32(mode == GX_BM_BLEND || mode == GX_BM_SUBTRACT) << 0 |
130 (mode == GX_BM_LOGIC) << 1 |
131 ditherEnable << 2 |
132 dstFactor << 5 |
133 srcFactor << 8 |
134 (mode == GX_BM_SUBTRACT) << 11 |
135 logicOp << 12 |
136 0x41 << 24);
137}
138
139inline void J3DGDSetZMode(u8 compareEnable, GXCompare func, u8 writeEnable) {
140 J3DGDWriteBPCmd(compareEnable | func << 1 | writeEnable << 4 | 0x40 << 24);
141}
142
143inline void J3DGDSetZCompLoc(u32 compLocEnable) {
144 J3DGDWriteBPCmd(0xFE000040);
145 J3DGDWriteBPCmd(compLocEnable << 6 | 0x43 << 24);
146}
147
148
149#endif /* J3DGD_H */
void J3DGDWrite_u8(u8 data)
Definition J3DGD.h:7
void J3DGDSetTexImgPtr(GXTexMapID, void *)
Definition J3DGD.cpp:354
void J3DGDSetIndTexMtx(GXIndTexMtxID, f32(*)[3], s8)
void J3DGDSetGenMode_3Param(u8 texGenNum, u8 tevStageNum, u8 indTexStageNum)
Definition J3DGD.cpp:19
void J3DGDWriteCPCmd(u8 reg, u32 value)
Definition J3DGD.h:63
void J3DGDWriteXFCmdHdr(u16 addr, u8 len)
Definition J3DGD.h:44
void J3DGDWriteBPCmd(u32 regval)
Definition J3DGD.h:32
void J3DGDSetTevKonstantSel_SwapModeTable(GXTevStageID stage, GXTevKColorSel colorSel1, GXTevKAlphaSel alphaSel1, GXTevKColorSel colorSel2, GXTevKAlphaSel alphaSel2, GXTevColorChan chan1, GXTevColorChan chan2)
Definition J3DGD.h:106
void J3DGDSetNumTexGens(u8 numTexGens)
Definition J3DGD.h:102
void J3DGDSetTevKColor(GXTevKColorID, GXColor)
Definition J3DGD.cpp:519
void J3DGDSetZCompLoc(u32 compLocEnable)
Definition J3DGD.h:143
void J3DGDSetAlphaCompare(GXCompare cmp0, u8 ref0, GXAlphaOp op, GXCompare cmp1, u8 ref1)
Definition J3DGD.h:110
void J3DGXCmd1f32ptr(f32 *data)
Definition J3DGD.h:50
void J3DGDSetBlendMode(GXBlendMode mode, GXBlendFactor srcFactor, GXBlendFactor dstFactor, GXLogicOp logicOp)
Definition J3DGD.h:114
void J3DGDWrite_u16(u16 data)
Definition J3DGD.h:11
void J3DGDSetTexLookupMode(GXTexMapID, GXTexWrapMode, GXTexWrapMode, GXTexFilter, GXTexFilter, f32, f32, f32, u8, u8, GXAnisotropy)
Definition J3DGD.cpp:341
void J3DGDWrite_u32(u32 data)
Definition J3DGD.h:16
void J3DGDWrite_f32(f32 data)
Definition J3DGD.h:23
void J3DGDSetIndTexOrder(u32, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID, GXTexCoordID, GXTexMapID)
Definition J3DGD.cpp:457
void J3DGDSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale, GXIndTexScale, GXIndTexScale)
Definition J3DGD.cpp:441
void J3DGDSetTevColorS10(GXTevRegID, GXColorS10)
Definition J3DGD.cpp:531
void J3DGDWriteXFCmd(u16 addr, u32 val)
Definition J3DGD.h:37
void J3DGXCmd1f32(f32 data)
Definition J3DGD.h:54
void J3DGDSetZMode(u8 compareEnable, GXCompare func, u8 writeEnable)
Definition J3DGD.h:139
void J3DGDLoadTlut(void *, u32, _GXTlutSize)
void J3DGDSetFog(GXFogType, f32, f32, f32, f32, GXColor)
Definition J3DGD.cpp:545
void J3DGDSetTexCoordGen(GXTexGenType, GXTexGenSrc)
Definition J3DGD.cpp:184
void J3DGDSetLightColor(GXLightID, GXColor)
Definition J3DGD.cpp:35
void J3DGDSetFogRangeAdj(u8, u16, _GXFogAdjTable *)
Definition J3DGD.cpp:610
void J3DGDSetNumChans(u8 numChans)
Definition J3DGD.h:98
void J3DGDSetTexTlut(GXTexMapID, u32, _GXTlutFmt)
void J3DGDSetLightDir(GXLightID, f32, f32, f32)
Definition J3DGD.cpp:47
void J3DGDSetTexImgAttr(GXTexMapID, u16, u16, GXTexFmt)
Definition J3DGD.cpp:350
void J3DGDSetLightPos(GXLightID, f32, f32, f32)
Definition J3DGD.cpp:40
void J3DGDSetLightAttn(GXLightID, f32, f32, f32, f32, f32, f32)
Definition J3DGD.cpp:25
void J3DGDSetTevOrder(GXTevStageID, GXTexCoordID, GXTexMapID, GXChannelID, GXTexCoordID, GXTexMapID, GXChannelID)
Definition J3DGD.cpp:498
void J3DGDSetTexImgPtrRaw(GXTexMapID, u32)
Definition J3DGD.cpp:358
void J3DGDSetTexCoordScale2(GXTexCoordID, u16, u8, u8, u16, u8, u8)
Definition J3DGD.cpp:306
void J3DGDSetGenMode(u8 texGenNum, u8 colorChanNum, u8 tevStageNum, u8 IndTexStageNum, GXCullMode cullMode)
Definition J3DGD.cpp:10
void J3DGDSetVtxAttrFmtv(GXVtxFmt, GXVtxAttrFmtList const *, bool)
Definition J3DGD.cpp:54
static void __GDWrite(u8 data)
Definition GDBase.h:39
enum _GXTevKColorID GXTevKColorID
@ GX_BM_BLEND
Definition GXEnum.h:330
@ GX_BM_SUBTRACT
Definition GXEnum.h:332
@ GX_BM_LOGIC
Definition GXEnum.h:331
enum _GXTexCoordID GXTexCoordID
_GXTlutSize
Definition GXEnum.h:882
enum _GXTexGenSrc GXTexGenSrc
enum _GXIndTexScale GXIndTexScale
enum _GXIndTexStageID GXIndTexStageID
enum _GXTexFmt GXTexFmt
enum _GXTexMapID GXTexMapID
_GXTlutFmt
Definition GXEnum.h:875
enum _GXAlphaOp GXAlphaOp
enum _GXTevColorChan GXTevColorChan
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
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
double u
Definition e_pow.c:163
Definition GXStruct.h:34
Definition GXStruct.h:30
Definition GXStruct.h:58
Definition GXStruct.h:67