1#ifndef _DOLPHIN_GD_GEOMETRY_H_
2#define _DOLPHIN_GD_GEOMETRY_H_
11#define CP_REG_MTXIDXA_ID 0x30
12#define CP_REG_MTXIDXB_ID 0x40
13#define CP_REG_VCD_LO_ID 0x50
14#define CP_REG_VCD_HI_ID 0x60
15#define CP_REG_VAT_GRP0_ID 0x70
16#define CP_REG_VAT_GRP1_ID 0x80
17#define CP_REG_VAT_GRP2_ID 0x90
18#define CP_REG_ARRAYBASE_ID 0xA0
19#define CP_REG_ARRAYSTRIDE_ID 0xB0
23#define GX_XF_TEX_PROJTYPE_ST 30
24#define GX_XF_TEX_PROJTYPE_END 30
27#define GX_XF_TEX_INPUTFORM_ST 29
28#define GX_XF_TEX_INPUTFORM_END 29
31#define GX_XF_TEX_TEXGENTYPE_ST 25
32#define GX_XF_TEX_TEXGENTYPE_END 27
35#define GX_XF_TEX_SRCROW_ST 20
36#define GX_XF_TEX_SRCROW_END 24
39#define GX_XF_TEX_BUMPSRCTEX_ST 17
40#define GX_XF_TEX_BUMPSRCTEX_END 19
43#define GX_XF_TEX_BUMPSRCLIGHT_ST 14
44#define GX_XF_TEX_BUMPSRCLIGHT_END 16
47#define GX_BP_REG_GENMODE 0x0
50#define GX_BP_REG_DISPCOPYFILTER0 0x1
51#define GX_BP_REG_DISPCOPYFILTER1 0x2
52#define GX_BP_REG_DISPCOPYFILTER2 0x3
53#define GX_BP_REG_DISPCOPYFILTER3 0x4
56#define GX_BP_REG_INDMTX0A 0x6
57#define GX_BP_REG_INDMTX0B 0x7
58#define GX_BP_REG_INDMTX0C 0x8
59#define GX_BP_REG_INDMTX1A 0x9
60#define GX_BP_REG_INDMTX1B 0xA
61#define GX_BP_REG_INDMTX1C 0xB
62#define GX_BP_REG_INDMTX2A 0xC
63#define GX_BP_REG_INDMTX2B 0xD
64#define GX_BP_REG_INDMTX2C 0xE
65#define GX_BP_REG_INDIMASK 0xF
68#define GX_BP_REG_INDTEVSTAGE0 0x10
69#define GX_BP_REG_INDTEVSTAGE1 0x11
70#define GX_BP_REG_INDTEVSTAGE2 0x12
71#define GX_BP_REG_INDTEVSTAGE3 0x13
72#define GX_BP_REG_INDTEVSTAGE4 0x14
73#define GX_BP_REG_INDTEVSTAGE5 0x15
74#define GX_BP_REG_INDTEVSTAGE6 0x16
75#define GX_BP_REG_INDTEVSTAGE7 0x17
76#define GX_BP_REG_INDTEVSTAGE8 0x18
77#define GX_BP_REG_INDTEVSTAGE9 0x19
78#define GX_BP_REG_INDTEVSTAGE10 0x1A
79#define GX_BP_REG_INDTEVSTAGE11 0x1B
80#define GX_BP_REG_INDTEVSTAGE12 0x1C
81#define GX_BP_REG_INDTEVSTAGE13 0x1D
82#define GX_BP_REG_INDTEVSTAGE14 0x1E
83#define GX_BP_REG_INDTEVSTAGE15 0x1F
86#define GX_BP_REG_SCISSORTL 0x20
87#define GX_BP_REG_SCISSORBR 0x21
88#define GX_BP_REG_LINEPTWIDTH 0x22
89#define GX_BP_REG_PERF0TRI 0x23
90#define GX_BP_REG_PERF0QUAD 0x24
93#define GX_BP_REG_RAS1_SS0 0x25
94#define GX_BP_REG_RAS1_SS1 0x26
95#define GX_BP_REG_RAS1_IREF 0x27
96#define GX_BP_REG_RAS1_TREF0 0x28
97#define GX_BP_REG_RAS1_TREF1 0x29
98#define GX_BP_REG_RAS1_TREF2 0x2A
99#define GX_BP_REG_RAS1_TREF3 0x2B
100#define GX_BP_REG_RAS1_TREF4 0x2C
101#define GX_BP_REG_RAS1_TREF5 0x2D
102#define GX_BP_REG_RAS1_TREF6 0x2E
103#define GX_BP_REG_RAS1_TREF7 0x2F
106#define GX_BP_REG_SU_SSIZE0 0x30
107#define GX_BP_REG_SU_TSIZE0 0x31
108#define GX_BP_REG_SU_SSIZE1 0x32
109#define GX_BP_REG_SU_TSIZE1 0x33
110#define GX_BP_REG_SU_SSIZE2 0x34
111#define GX_BP_REG_SU_TSIZE2 0x35
112#define GX_BP_REG_SU_SSIZE3 0x36
113#define GX_BP_REG_SU_TSIZE3 0x37
114#define GX_BP_REG_SU_SSIZE4 0x38
115#define GX_BP_REG_SU_TSIZE4 0x39
116#define GX_BP_REG_SU_SSIZE5 0x3A
117#define GX_BP_REG_SU_TSIZE5 0x3B
118#define GX_BP_REG_SU_SSIZE6 0x3C
119#define GX_BP_REG_SU_TSIZE6 0x3D
120#define GX_BP_REG_SU_SSIZE7 0x3E
121#define GX_BP_REG_SU_TSIZE7 0x3F
124#define GX_BP_REG_ZMODE 0x40
125#define GX_BP_REG_BLENDMODE 0x41
126#define GX_BP_REG_DSTALPHA 0x42
127#define GX_BP_REG_ZCONTROL 0x43
128#define GX_BP_REG_FIELDMASK 0x44
129#define GX_BP_REG_DRAWDONE 0x45
130#define GX_BP_REG_PETOKEN 0x47
131#define GX_BP_REG_PETOKENINT 0x48
134#define GX_BP_REG_TEXCOPYSRCXY 0x49
135#define GX_BP_REG_TEXCOPYSRCWH 0x4A
136#define GX_BP_REG_TEXCOPYDST 0x4B
137#define GX_BP_REG_DISPCOPYSTRIDE 0x4D
138#define GX_BP_REG_DISPCOPYSCALEY 0x4E
139#define GX_BP_REG_COPYCLEARAR 0x4F
140#define GX_BP_REG_COPYCLEARGB 0x50
141#define GX_BP_REG_COPYCLEARZ 0x51
142#define GX_BP_REG_COPYFILTER0 0x53
143#define GX_BP_REG_COPYFILTER1 0x54
146#define GX_BP_REG_BOUNDINGBOX0 0x55
147#define GX_BP_REG_BOUNDINGBOX1 0x56
149#define GX_BP_REG_SCISSOROFFSET 0x59
152#define GX_BP_REG_TMEMPRELOADADDR 0x60
153#define GX_BP_REG_TMEMPRELOADEVEN 0x61
154#define GX_BP_REG_TMEMPRELOADODD 0x62
155#define GX_BP_REG_TMEMPRELOADMODE 0x63
156#define GX_BP_REG_TMEMTLUTSRC 0x64
157#define GX_BP_REG_TMEMTLUTDST 0x65
158#define GX_BP_REG_TMEMTEXINVALIDATE 0x66
161#define GX_BP_REG_PERF1 0x67
162#define GX_BP_REG_FIELDMODE 0x68
165#define GX_BP_REG_SETMODE0_TEX0 0x80
166#define GX_BP_REG_SETMODE0_TEX1 0x81
167#define GX_BP_REG_SETMODE0_TEX2 0x82
168#define GX_BP_REG_SETMODE0_TEX3 0x83
169#define GX_BP_REG_SETMODE1_TEX0 0x84
170#define GX_BP_REG_SETMODE1_TEX1 0x85
171#define GX_BP_REG_SETMODE1_TEX2 0x86
172#define GX_BP_REG_SETMODE1_TEX3 0x87
175#define GX_BP_REG_SETIMAGE0_TEX0 0x88
176#define GX_BP_REG_SETIMAGE0_TEX1 0x89
177#define GX_BP_REG_SETIMAGE0_TEX2 0x8A
178#define GX_BP_REG_SETIMAGE0_TEX3 0x8B
179#define GX_BP_REG_SETIMAGE1_TEX0 0x8C
180#define GX_BP_REG_SETIMAGE1_TEX1 0x8D
181#define GX_BP_REG_SETIMAGE1_TEX2 0x8E
182#define GX_BP_REG_SETIMAGE1_TEX3 0x8F
183#define GX_BP_REG_SETIMAGE2_TEX0 0x90
184#define GX_BP_REG_SETIMAGE2_TEX1 0x91
185#define GX_BP_REG_SETIMAGE2_TEX2 0x92
186#define GX_BP_REG_SETIMAGE2_TEX3 0x93
187#define GX_BP_REG_SETIMAGE3_TEX0 0x94
188#define GX_BP_REG_SETIMAGE3_TEX1 0x95
189#define GX_BP_REG_SETIMAGE3_TEX2 0x96
190#define GX_BP_REG_SETIMAGE3_TEX3 0x97
193#define GX_BP_REG_SETTLUT_TEX0 0x98
194#define GX_BP_REG_SETTLUT_TEX1 0x99
195#define GX_BP_REG_SETTLUT_TEX2 0x9A
196#define GX_BP_REG_SETTLUT_TEX3 0x9B
199#define GX_BP_REG_SETMODE0_TEX4 0xA0
200#define GX_BP_REG_SETMODE0_TEX5 0xA1
201#define GX_BP_REG_SETMODE0_TEX6 0xA2
202#define GX_BP_REG_SETMODE0_TEX7 0xA3
203#define GX_BP_REG_SETMODE1_TEX4 0xA4
204#define GX_BP_REG_SETMODE1_TEX5 0xA5
205#define GX_BP_REG_SETMODE1_TEX6 0xA6
206#define GX_BP_REG_SETMODE1_TEX7 0xA7
209#define GX_BP_REG_SETIMAGE0_TEX4 0xA8
210#define GX_BP_REG_SETIMAGE0_TEX5 0xA9
211#define GX_BP_REG_SETIMAGE0_TEX6 0xAA
212#define GX_BP_REG_SETIMAGE0_TEX7 0xAB
213#define GX_BP_REG_SETIMAGE1_TEX4 0xAC
214#define GX_BP_REG_SETIMAGE1_TEX5 0xAD
215#define GX_BP_REG_SETIMAGE1_TEX6 0xAE
216#define GX_BP_REG_SETIMAGE1_TEX7 0xAF
217#define GX_BP_REG_SETIMAGE2_TEX4 0xB0
218#define GX_BP_REG_SETIMAGE2_TEX5 0xB1
219#define GX_BP_REG_SETIMAGE2_TEX6 0xB2
220#define GX_BP_REG_SETIMAGE2_TEX7 0xB3
221#define GX_BP_REG_SETIMAGE3_TEX4 0xB4
222#define GX_BP_REG_SETIMAGE3_TEX5 0xB5
223#define GX_BP_REG_SETIMAGE3_TEX6 0xB6
224#define GX_BP_REG_SETIMAGE3_TEX7 0xB7
227#define GX_BP_REG_SETTLUT_TEX4 0xB8
228#define GX_BP_REG_SETTLUT_TEX5 0xB9
229#define GX_BP_REG_SETTLUT_TEX6 0xBA
230#define GX_BP_REG_SETTLUT_TEX7 0xBB
233#define GX_BP_REG_TEVCOLORCOMBINER0 0xC0
234#define GX_BP_REG_TEVALPHACOMBINER0 0xC1
235#define GX_BP_REG_TEVCOLORCOMBINER1 0xC2
236#define GX_BP_REG_TEVALPHACOMBINER1 0xC3
237#define GX_BP_REG_TEVCOLORCOMBINER2 0xC4
238#define GX_BP_REG_TEVALPHACOMBINER2 0xC5
239#define GX_BP_REG_TEVCOLORCOMBINER3 0xC6
240#define GX_BP_REG_TEVALPHACOMBINER3 0xC7
241#define GX_BP_REG_TEVCOLORCOMBINER4 0xC8
242#define GX_BP_REG_TEVALPHACOMBINER4 0xC9
243#define GX_BP_REG_TEVCOLORCOMBINER5 0xCA
244#define GX_BP_REG_TEVALPHACOMBINER5 0xCB
245#define GX_BP_REG_TEVCOLORCOMBINER6 0xCC
246#define GX_BP_REG_TEVALPHACOMBINER6 0xCD
247#define GX_BP_REG_TEVCOLORCOMBINER7 0xCE
248#define GX_BP_REG_TEVALPHACOMBINER7 0xCF
249#define GX_BP_REG_TEVCOLORCOMBINER8 0xD0
250#define GX_BP_REG_TEVALPHACOMBINER8 0xD1
251#define GX_BP_REG_TEVCOLORCOMBINER9 0xD2
252#define GX_BP_REG_TEVALPHACOMBINER9 0xD3
253#define GX_BP_REG_TEVCOLORCOMBINER10 0xD4
254#define GX_BP_REG_TEVALPHACOMBINER10 0xD5
255#define GX_BP_REG_TEVCOLORCOMBINER11 0xD6
256#define GX_BP_REG_TEVALPHACOMBINER11 0xD7
257#define GX_BP_REG_TEVCOLORCOMBINER12 0xD8
258#define GX_BP_REG_TEVALPHACOMBINER12 0xD9
259#define GX_BP_REG_TEVCOLORCOMBINER13 0xDA
260#define GX_BP_REG_TEVALPHACOMBINER13 0xDB
261#define GX_BP_REG_TEVCOLORCOMBINER14 0xDC
262#define GX_BP_REG_TEVALPHACOMBINER14 0xDD
263#define GX_BP_REG_TEVCOLORCOMBINER15 0xDE
264#define GX_BP_REG_TEVALPHACOMBINER15 0xDF
267#define GX_BP_REG_TEVREG0LO 0xE0
268#define GX_BP_REG_TEVREG0HI 0xE1
269#define GX_BP_REG_TEVREG1LO 0xE2
270#define GX_BP_REG_TEVREG1HI 0xE3
271#define GX_BP_REG_TEVREG2LO 0xE4
272#define GX_BP_REG_TEVREG2HI 0xE5
273#define GX_BP_REG_TEVREG3LO 0xE6
274#define GX_BP_REG_TEVREG3HI 0xE7
277#define GX_BP_REG_FOGRANGE 0xE8
278#define GX_BP_REG_FOGRANGEK0 0xE9
279#define GX_BP_REG_FOGRANGEK1 0xEA
280#define GX_BP_REG_FOGRANGEK2 0xEB
281#define GX_BP_REG_FOGRANGEK3 0xEC
282#define GX_BP_REG_FOGRANGEK4 0xED
283#define GX_BP_REG_FOGPARAM0 0xEE
284#define GX_BP_REG_FOGPARAM1 0xEF
285#define GX_BP_REG_FOGPARAM2 0xF0
286#define GX_BP_REG_FOGPARAM3 0xF1
287#define GX_BP_REG_FOGCOLOR 0xF2
290#define GX_BP_REG_ALPHACOMPARE 0xF3
291#define GX_BP_REG_ZTEXTURE0 0xF4
292#define GX_BP_REG_ZTEXTURE1 0xF5
295#define GX_BP_REG_TEVKSEL0 0xF6
296#define GX_BP_REG_TEVKSEL1 0xF7
297#define GX_BP_REG_TEVKSEL2 0xF8
298#define GX_BP_REG_TEVKSEL3 0xF9
299#define GX_BP_REG_TEVKSEL4 0xFA
300#define GX_BP_REG_TEVKSEL5 0xFB
301#define GX_BP_REG_TEVKSEL6 0xFC
302#define GX_BP_REG_TEVKSEL7 0xFD
305#define GX_BP_REG_SSMASK 0xFE
308#define GX_XF_REG_ERROR 0x1000
309#define GX_XF_REG_DIAGNOSTICS 0x1001
310#define GX_XF_REG_STATE0 0x1002
311#define GX_XF_REG_STATE1 0x1003
312#define GX_XF_REG_CLOCK 0x1004
313#define GX_XF_REG_CLIPDISABLE 0x1005
314#define GX_XF_REG_PERF0 0x1006
315#define GX_XF_REG_PERF1 0x1007
316#define GX_XF_REG_INVERTEXSPEC 0x1008
317#define GX_XF_REG_NUMCOLORS 0x1009
318#define GX_XF_REG_AMBIENT0 0x100A
319#define GX_XF_REG_AMBIENT1 0x100B
320#define GX_XF_REG_MATERIAL0 0x100C
321#define GX_XF_REG_MATERIAL1 0x100D
322#define GX_XF_REG_COLOR0CNTRL 0x100E
323#define GX_XF_REG_COLOR1CNTRL 0x100F
324#define GX_XF_REG_ALPHA0CNTRL 0x1010
325#define GX_XF_REG_ALPHA1CNTRL 0x1011
326#define GX_XF_REG_DUALTEXTRAN 0x1012
327#define GX_XF_REG_MATRIXINDEX0 0x1018
328#define GX_XF_REG_MATRIXINDEX1 0x1019
329#define GX_XF_REG_SCALEX 0x101A
330#define GX_XF_REG_SCALEY 0x101B
331#define GX_XF_REG_SCALEZ 0x101C
332#define GX_XF_REG_OFFSETX 0x101D
333#define GX_XF_REG_OFFSETY 0x101E
334#define GX_XF_REG_OFFSETZ 0x101F
335#define GX_XF_REG_PROJECTIONA 0x1020
336#define GX_XF_REG_PROJECTIONB 0x1021
337#define GX_XF_REG_PROJECTIONC 0x1022
338#define GX_XF_REG_PROJECTIOND 0x1023
339#define GX_XF_REG_PROJECTIONE 0x1024
340#define GX_XF_REG_PROJECTIONF 0x1025
341#define GX_XF_REG_PROJECTORTHO 0x1026
342#define GX_XF_REG_NUMTEX 0x103F
343#define GX_XF_REG_TEX0 0x1040
344#define GX_XF_REG_TEX1 0x1041
345#define GX_XF_REG_TEX2 0x1042
346#define GX_XF_REG_TEX3 0x1043
347#define GX_XF_REG_TEX4 0x1044
348#define GX_XF_REG_TEX5 0x1045
349#define GX_XF_REG_TEX6 0x1046
350#define GX_XF_REG_TEX7 0x1047
351#define GX_XF_REG_DUALTEX0 0x1050
352#define GX_XF_REG_DUALTEX1 0x1051
353#define GX_XF_REG_DUALTEX2 0x1052
354#define GX_XF_REG_DUALTEX3 0x1053
355#define GX_XF_REG_DUALTEX4 0x1054
356#define GX_XF_REG_DUALTEX5 0x1055
357#define GX_XF_REG_DUALTEX6 0x1056
358#define GX_XF_REG_DUALTEX7 0x1057
360#define CP_REG_VCD_LO(pnMtxIdx, txMtxIdxMask, posn, norm, col0, col1) \
363 (txMtxIdxMask) << 1 | \
370#define CP_REG_VCD_HI(tex0, tex1, tex2, tex3, tex4, tex5, tex6, tex7) \
382#define CP_REG_VAT_GRP0(posCnt, posType, posFrac, nrmCnt, nrmType, c0Cnt, c0Type, c1Cnt, c1Type, tx0Cnt, tx0Type, tx0Frac, p12, nrmIdx3) \
400#define CP_REG_VAT_GRP1(tx1Cnt, tx1Type, tx1Frac, tx2Cnt, tx2Type, tx2Frac, tx3Cnt, tx3Type, tx3Frac, tx4Cnt, tx4Type, p11) \
416#define CP_REG_VAT_GRP2(tx4Frac, tx5Cnt, tx5Type, tx5Frac, tx6Cnt, tx6Type, tx6Frac, tx7Cnt, tx7Type, tx7Frac) \
431#define XF_REG_ERROR_ID 0x1000
432#define XF_REG_DIAGNOSTICS_ID 0x1001
433#define XF_REG_STATE0_ID 0x1002
434#define XF_REG_STATE1_ID 0x1003
435#define XF_REG_CLOCK_ID 0x1004
436#define XF_REG_CLIPDISABLE_ID 0x1005
437#define XF_REG_PERF0_ID 0x1006
438#define XF_REG_PERF1_ID 0x1007
439#define XF_REG_INVERTEXSPEC_ID 0x1008
440#define XF_REG_NUMCOLORS_ID 0x1009
441#define XF_REG_DUALTEXTRAN_ID 0x1012
442#define XF_REG_SCALEX_ID 0x101A
443#define XF_REG_SCALEY_ID 0x101B
444#define XF_REG_SCALEZ_ID 0x101C
445#define XF_REG_OFFSETX_ID 0x101D
446#define XF_REG_OFFSETY_ID 0x101E
447#define XF_REG_OFFSETZ_ID 0x101F
448#define XF_REG_NUMTEX_ID 0x103F
449#define XF_REG_TEX0_ID 0x1040
450#define XF_REG_TEX1_ID 0x1041
451#define XF_REG_TEX2_ID 0x1042
452#define XF_REG_TEX3_ID 0x1043
453#define XF_REG_TEX4_ID 0x1044
454#define XF_REG_TEX5_ID 0x1045
455#define XF_REG_TEX6_ID 0x1046
456#define XF_REG_TEX7_ID 0x1047
457#define XF_REG_DUALTEX0_ID 0x1050
458#define XF_REG_DUALTEX1_ID 0x1051
459#define XF_REG_DUALTEX2_ID 0x1052
460#define XF_REG_DUALTEX3_ID 0x1053
461#define XF_REG_DUALTEX4_ID 0x1054
462#define XF_REG_DUALTEX5_ID 0x1055
463#define XF_REG_DUALTEX6_ID 0x1056
464#define XF_REG_DUALTEX7_ID 0x1057
466#define XF_REG_INVTXSPEC(ncols, nnorms, ntexs) \
473#define XF_REG_TEX(proj, form, tgType, row, embossRow, embossLit) \
479 (embossRow) << 12 | \
483#define XF_REG_DUALTEX(mtx, normalize) \
489#define BP_GEN_MODE(nTexGens, nChans, nTevs, p4, nInds) \
491 (u32)(nTexGens) << 0 | \
492 (u32)(nChans) << 4 | \
493 (u32)(nTevs) << 10 | \
498#define BP_LP_SIZE(lineWidth, pointSize, lineOffset, pointOffset, lineHalfAspect, p5) \
500 (u32)(lineWidth) << 0 | \
501 (u32)(pointSize) << 8 | \
502 (u32)(lineOffset) << 16 | \
503 (u32)(pointOffset) << 19 | \
504 (u32)(lineHalfAspect) << 22 | \
void GDSetVtxAttrFmtv(GXVtxFmt vtxfmt, const GXVtxAttrFmtList *list)
Definition GDGeometry.c:120
void GDSetArrayRaw(GXAttr attr, u32 base_ptr_raw, u8 stride)
Definition GDGeometry.c:257
void GDSetLPSize(u8 lineWidth, u8 pointSize, GXTexOffset lineOffset, GXTexOffset pointOffset, u8 lineHalfAspect)
Definition GDGeometry.c:423
void GDSetArray(GXAttr attr, void *base_ptr, u8 stride)
Definition GDGeometry.c:245
void GDSetCullMode(GXCullMode mode)
Definition GDGeometry.c:398
void GDSetTexCoordGen(GXTexCoordID dst_coord, GXTexGenType func, GXTexGenSrc src_param, u8 normalize, u32 postmtx)
Definition GDGeometry.c:273
void GDPatchArrayPtr(void *base_ptr)
Definition GDGeometry.c:269
void GDSetGenMode(u8 nTexGens, u8 nChans, u8 nTevs)
Definition GDGeometry.c:405
void GDSetGenMode2(u8 nTexGens, u8 nChans, u8 nTevs, u8 nInds, GXCullMode cm)
Definition GDGeometry.c:413
void GDSetVtxDescv(const GXVtxDescList *attrPtr)
Definition GDGeometry.c:4
void GDSetCoPlanar(u8 enable)
Definition GDGeometry.c:427
static void normalize(f32 v[3])
Definition GXDraw.c:45
enum _GXTexCoordID GXTexCoordID
enum _GXTexGenSrc GXTexGenSrc
enum _GXCullMode GXCullMode
enum _GXTexOffset GXTexOffset
enum _GXTexGenType GXTexGenType
u32 mode
Definition GXTev.c:56
static const Attr & attr()
Definition d_a_obj_ladder.cpp:135
va_list list
Definition os.h:192
unsigned long u32
Definition types.h:9
unsigned char u8
Definition types.h:5