1 /*---------------------------------------------------------------------------*
2 Project: Dolphin GD library
3 File: GDGEOMETRY.h
4
5 Copyright 2001 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Log: GDGeometry.h,v $
14 Revision 1.2 2006/02/04 11:56:46 hashida
15 (none)
16
17 Revision 1.1.1.1 2005/05/12 02:41:07 yasuh-to
18 Ported from dolphin source tree.
19
20
21 4 2002/08/05 19:49 Hirose
22 Const type specifier support.
23
24 3 2001/10/13 2:24a Hirose
25 Added GDSetCullMode().
26
27 2 2001/09/19 6:35p Carl
28 Added GDSetLPSize.
29
30 1 2001/09/12 1:55p Carl
31 Initial revision of GD: Graphics Display List Library.
32
33 $NoKeywords: $
34 *---------------------------------------------------------------------------*/
35
36 #ifndef __GDGEOMETRY_H__
37 #define __GDGEOMETRY_H__
38
39 /*---------------------------------------------------------------------------*/
40 #include <revolution/types.h>
41 #include <revolution/gx/GXEnum.h>
42 #include <revolution/gx/GXStruct.h>
43 /*---------------------------------------------------------------------------*/
44
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48
49 /*---------------------------------------------------------------------------*/
50
51
52 /*---------------------------------------------------------------------------*/
53
54 void GDSetVtxDescv ( const GXVtxDescList *attrPtr );
55
56 void GDSetVtxAttrFmtv ( GXVtxFmt vtxfmt, const GXVtxAttrFmtList *list );
57
58 void GDSetArray ( GXAttr attr, const void *base_ptr, u8 stride );
59
60 void GDSetArrayRaw ( GXAttr attr, u32 base_ptr_raw, u8 stride );
61
62 void GDPatchArrayPtr ( const void *base_ptr );
63
64 void GDSetTexCoordGen ( GXTexCoordID dst_coord,
65 GXTexGenType func,
66 GXTexGenSrc src_param,
67 GXBool normalize,
68 u32 postmtx );
69
70 void GDSetCullMode( GXCullMode cm );
71
72 void GDSetGenMode( u8 nTexGens, u8 nChans, u8 nTevs );
73
74 void GDSetGenMode2( u8 nTexGens, u8 nChans, u8 nTevs, u8 nInds, GXCullMode cm );
75
76
77
78 void GDSetLPSize( u8 lineWidth, u8 pointSize,
79 GXTexOffset lineOffset, GXTexOffset pointOffset,
80 GXBool lineHalfAspect );
81
82 void GDSetCoPlanar( GXBool enable );
83
84 // For GDBegin and GDEnd we have declarations and definitions
85
GDBegin(GXPrimitive type,GXVtxFmt vtxfmt,u16 nverts)86 static inline void GDBegin ( GXPrimitive type, GXVtxFmt vtxfmt, u16 nverts )
87 {
88 GDWrite_u8((u8) (vtxfmt | type));
89 GDWrite_u16(nverts);
90 }
91
GDEnd(void)92 static inline void GDEnd ( void )
93 {
94 }
95
96 /*---------------------------------------------------------------------------*/
97
98 // Defines for setting CP (and XF and GEN_MODE) registers...
99
100 /*
101 * cp_vcd_reg_lo struct
102 */
103 #define CP_VCD_REG_LO_PMIDX_SHIFT 0
104 #define CP_VCD_REG_LO_T0MIDX_SHIFT 1
105 #define CP_VCD_REG_LO_T1MIDX_SHIFT 2
106 #define CP_VCD_REG_LO_T2MIDX_SHIFT 3
107 #define CP_VCD_REG_LO_T3MIDX_SHIFT 4
108 #define CP_VCD_REG_LO_T4MIDX_SHIFT 5
109 #define CP_VCD_REG_LO_T5MIDX_SHIFT 6
110 #define CP_VCD_REG_LO_T6MIDX_SHIFT 7
111 #define CP_VCD_REG_LO_T7MIDX_SHIFT 8
112 #define CP_VCD_REG_LO_POS_SHIFT 9
113 #define CP_VCD_REG_LO_NRM_SHIFT 11
114 #define CP_VCD_REG_LO_COL0_SHIFT 13
115 #define CP_VCD_REG_LO_COL1_SHIFT 15
116 #define CP_VCD_REG_LO(pmidx, t0midx, t1midx, t2midx, t3midx, t4midx, t5midx, t6midx, t7midx, pos, nrm, col0, col1) \
117 ((((unsigned long)(pmidx)) << CP_VCD_REG_LO_PMIDX_SHIFT) | \
118 (((unsigned long)(t0midx)) << CP_VCD_REG_LO_T0MIDX_SHIFT) | \
119 (((unsigned long)(t1midx)) << CP_VCD_REG_LO_T1MIDX_SHIFT) | \
120 (((unsigned long)(t2midx)) << CP_VCD_REG_LO_T2MIDX_SHIFT) | \
121 (((unsigned long)(t3midx)) << CP_VCD_REG_LO_T3MIDX_SHIFT) | \
122 (((unsigned long)(t4midx)) << CP_VCD_REG_LO_T4MIDX_SHIFT) | \
123 (((unsigned long)(t5midx)) << CP_VCD_REG_LO_T5MIDX_SHIFT) | \
124 (((unsigned long)(t6midx)) << CP_VCD_REG_LO_T6MIDX_SHIFT) | \
125 (((unsigned long)(t7midx)) << CP_VCD_REG_LO_T7MIDX_SHIFT) | \
126 (((unsigned long)(pos)) << CP_VCD_REG_LO_POS_SHIFT) | \
127 (((unsigned long)(nrm)) << CP_VCD_REG_LO_NRM_SHIFT) | \
128 (((unsigned long)(col0)) << CP_VCD_REG_LO_COL0_SHIFT) | \
129 (((unsigned long)(col1)) << CP_VCD_REG_LO_COL1_SHIFT))
130
131 #define CP_VCD_REG_LO_PS(pmidx, t76543210midx, pos, nrm, col0, col1) \
132 ((((unsigned long)(pmidx)) << CP_VCD_REG_LO_PMIDX_SHIFT) | \
133 (((unsigned long)(t76543210midx)) << CP_VCD_REG_LO_T0MIDX_SHIFT) | \
134 (((unsigned long)(pos)) << CP_VCD_REG_LO_POS_SHIFT) | \
135 (((unsigned long)(nrm)) << CP_VCD_REG_LO_NRM_SHIFT) | \
136 (((unsigned long)(col0)) << CP_VCD_REG_LO_COL0_SHIFT) | \
137 (((unsigned long)(col1)) << CP_VCD_REG_LO_COL1_SHIFT))
138
139 /*
140 * cp_vcd_reg_hi struct
141 */
142 #define CP_VCD_REG_HI_TEX0_SHIFT 0
143 #define CP_VCD_REG_HI_TEX1_SHIFT 2
144 #define CP_VCD_REG_HI_TEX2_SHIFT 4
145 #define CP_VCD_REG_HI_TEX3_SHIFT 6
146 #define CP_VCD_REG_HI_TEX4_SHIFT 8
147 #define CP_VCD_REG_HI_TEX5_SHIFT 10
148 #define CP_VCD_REG_HI_TEX6_SHIFT 12
149 #define CP_VCD_REG_HI_TEX7_SHIFT 14
150 #define CP_VCD_REG_HI(tex0, tex1, tex2, tex3, tex4, tex5, tex6, tex7) \
151 ((((unsigned long)(tex0)) << CP_VCD_REG_HI_TEX0_SHIFT) | \
152 (((unsigned long)(tex1)) << CP_VCD_REG_HI_TEX1_SHIFT) | \
153 (((unsigned long)(tex2)) << CP_VCD_REG_HI_TEX2_SHIFT) | \
154 (((unsigned long)(tex3)) << CP_VCD_REG_HI_TEX3_SHIFT) | \
155 (((unsigned long)(tex4)) << CP_VCD_REG_HI_TEX4_SHIFT) | \
156 (((unsigned long)(tex5)) << CP_VCD_REG_HI_TEX5_SHIFT) | \
157 (((unsigned long)(tex6)) << CP_VCD_REG_HI_TEX6_SHIFT) | \
158 (((unsigned long)(tex7)) << CP_VCD_REG_HI_TEX7_SHIFT))
159
160 /*
161 * cp_vat_reg_a struct
162 */
163 #define CP_VAT_REG_A_POSCNT_SHIFT 0
164 #define CP_VAT_REG_A_POSFMT_SHIFT 1
165 #define CP_VAT_REG_A_POSSHFT_SHIFT 4
166 #define CP_VAT_REG_A_NRMCNT_SHIFT 9
167 #define CP_VAT_REG_A_NRMFMT_SHIFT 10
168 #define CP_VAT_REG_A_COL0CNT_SHIFT 13
169 #define CP_VAT_REG_A_COL0FMT_SHIFT 14
170 #define CP_VAT_REG_A_COL1CNT_SHIFT 17
171 #define CP_VAT_REG_A_COL1FMT_SHIFT 18
172 #define CP_VAT_REG_A_TEX0CNT_SHIFT 21
173 #define CP_VAT_REG_A_TEX0FMT_SHIFT 22
174 #define CP_VAT_REG_A_TEX0SHFT_SHIFT 25
175 #define CP_VAT_REG_A_BYTEDEQUANT_SHIFT 30 /* Should always be 1 */
176 #define CP_VAT_REG_A_NORMALINDEX3_SHIFT 31
177 #define CP_VAT_REG_A(posCnt, posFmt, posShft, nrmCnt, nrmFmt, Col0Cnt, Col0Fmt, Col1Cnt, Col1Fmt, tex0Cnt, tex0Fmt, tex0Shft, normalIndex3) \
178 ((((unsigned long)(posCnt)) << CP_VAT_REG_A_POSCNT_SHIFT) | \
179 (((unsigned long)(posFmt)) << CP_VAT_REG_A_POSFMT_SHIFT) | \
180 (((unsigned long)(posShft)) << CP_VAT_REG_A_POSSHFT_SHIFT) | \
181 (((unsigned long)(nrmCnt)) << CP_VAT_REG_A_NRMCNT_SHIFT) | \
182 (((unsigned long)(nrmFmt)) << CP_VAT_REG_A_NRMFMT_SHIFT) | \
183 (((unsigned long)(Col0Cnt)) << CP_VAT_REG_A_COL0CNT_SHIFT) | \
184 (((unsigned long)(Col0Fmt)) << CP_VAT_REG_A_COL0FMT_SHIFT) | \
185 (((unsigned long)(Col1Cnt)) << CP_VAT_REG_A_COL1CNT_SHIFT) | \
186 (((unsigned long)(Col1Fmt)) << CP_VAT_REG_A_COL1FMT_SHIFT) | \
187 (((unsigned long)(tex0Cnt)) << CP_VAT_REG_A_TEX0CNT_SHIFT) | \
188 (((unsigned long)(tex0Fmt)) << CP_VAT_REG_A_TEX0FMT_SHIFT) | \
189 (((unsigned long)(tex0Shft)) << CP_VAT_REG_A_TEX0SHFT_SHIFT) | \
190 (((unsigned long)(1)) << CP_VAT_REG_A_BYTEDEQUANT_SHIFT) | \
191 (((unsigned long)(normalIndex3)) << CP_VAT_REG_A_NORMALINDEX3_SHIFT))
192
193 /*
194 * cp_vat_reg_b struct
195 */
196 #define CP_VAT_REG_B_TEX1CNT_SHIFT 0
197 #define CP_VAT_REG_B_TEX1FMT_SHIFT 1
198 #define CP_VAT_REG_B_TEX1SHFT_SHIFT 4
199 #define CP_VAT_REG_B_TEX2CNT_SHIFT 9
200 #define CP_VAT_REG_B_TEX2FMT_SHIFT 10
201 #define CP_VAT_REG_B_TEX2SHFT_SHIFT 13
202 #define CP_VAT_REG_B_TEX3CNT_SHIFT 18
203 #define CP_VAT_REG_B_TEX3FMT_SHIFT 19
204 #define CP_VAT_REG_B_TEX3SHFT_SHIFT 22
205 #define CP_VAT_REG_B_TEX4CNT_SHIFT 27
206 #define CP_VAT_REG_B_TEX4FMT_SHIFT 28
207 #define CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT 31 /* Must always be 1 */
208 #define CP_VAT_REG_B(tex1Cnt, tex1Fmt, tex1Shft, tex2Cnt, tex2Fmt, tex2Shft, tex3Cnt, tex3Fmt, tex3Shft, tex4Cnt, tex4Fmt) \
209 ((((unsigned long)(tex1Cnt)) << CP_VAT_REG_B_TEX1CNT_SHIFT) | \
210 (((unsigned long)(tex1Fmt)) << CP_VAT_REG_B_TEX1FMT_SHIFT) | \
211 (((unsigned long)(tex1Shft)) << CP_VAT_REG_B_TEX1SHFT_SHIFT) | \
212 (((unsigned long)(tex2Cnt)) << CP_VAT_REG_B_TEX2CNT_SHIFT) | \
213 (((unsigned long)(tex2Fmt)) << CP_VAT_REG_B_TEX2FMT_SHIFT) | \
214 (((unsigned long)(tex2Shft)) << CP_VAT_REG_B_TEX2SHFT_SHIFT) | \
215 (((unsigned long)(tex3Cnt)) << CP_VAT_REG_B_TEX3CNT_SHIFT) | \
216 (((unsigned long)(tex3Fmt)) << CP_VAT_REG_B_TEX3FMT_SHIFT) | \
217 (((unsigned long)(tex3Shft)) << CP_VAT_REG_B_TEX3SHFT_SHIFT) | \
218 (((unsigned long)(tex4Cnt)) << CP_VAT_REG_B_TEX4CNT_SHIFT) | \
219 (((unsigned long)(tex4Fmt)) << CP_VAT_REG_B_TEX4FMT_SHIFT) | \
220 (((unsigned long)(1)) << CP_VAT_REG_B_VCACHE_ENHANCE_SHIFT))
221
222 /*
223 * cp_vat_reg_c struct
224 */
225 #define CP_VAT_REG_C_TEX4SHFT_SHIFT 0
226 #define CP_VAT_REG_C_TEX5CNT_SHIFT 5
227 #define CP_VAT_REG_C_TEX5FMT_SHIFT 6
228 #define CP_VAT_REG_C_TEX5SHFT_SHIFT 9
229 #define CP_VAT_REG_C_TEX6CNT_SHIFT 14
230 #define CP_VAT_REG_C_TEX6FMT_SHIFT 15
231 #define CP_VAT_REG_C_TEX6SHFT_SHIFT 18
232 #define CP_VAT_REG_C_TEX7CNT_SHIFT 23
233 #define CP_VAT_REG_C_TEX7FMT_SHIFT 24
234 #define CP_VAT_REG_C_TEX7SHFT_SHIFT 27
235 #define CP_VAT_REG_C(tex4Shft, tex5Cnt, tex5Fmt, tex5Shft, tex6Cnt, tex6Fmt, tex6Shft, tex7Cnt, tex7Fmt, tex7Shft) \
236 ((((unsigned long)(tex4Shft)) << CP_VAT_REG_C_TEX4SHFT_SHIFT) | \
237 (((unsigned long)(tex5Cnt)) << CP_VAT_REG_C_TEX5CNT_SHIFT) | \
238 (((unsigned long)(tex5Fmt)) << CP_VAT_REG_C_TEX5FMT_SHIFT) | \
239 (((unsigned long)(tex5Shft)) << CP_VAT_REG_C_TEX5SHFT_SHIFT) | \
240 (((unsigned long)(tex6Cnt)) << CP_VAT_REG_C_TEX6CNT_SHIFT) | \
241 (((unsigned long)(tex6Fmt)) << CP_VAT_REG_C_TEX6FMT_SHIFT) | \
242 (((unsigned long)(tex6Shft)) << CP_VAT_REG_C_TEX6SHFT_SHIFT) | \
243 (((unsigned long)(tex7Cnt)) << CP_VAT_REG_C_TEX7CNT_SHIFT) | \
244 (((unsigned long)(tex7Fmt)) << CP_VAT_REG_C_TEX7FMT_SHIFT) | \
245 (((unsigned long)(tex7Shft)) << CP_VAT_REG_C_TEX7SHFT_SHIFT))
246
247 /*
248 * cp_array_base_reg struct
249 */
250 #define CP_ARRAY_BASE_REG_BASE_SHIFT 0
251 #define CP_ARRAY_BASE_REG(base) \
252 ((((unsigned long)(base)) << CP_ARRAY_BASE_REG_BASE_SHIFT))
253
254 /*
255 * cp_array_stride_reg struct
256 */
257 #define CP_ARRAY_STRIDE_REG_STRIDE_SHIFT 0
258 #define CP_ARRAY_STRIDE_REG(stride) \
259 ((((unsigned long)(stride)) << CP_ARRAY_STRIDE_REG_STRIDE_SHIFT))
260
261 /*
262 * xf_invtxspec_f struct
263 */
264 #define XF_INVTXSPEC_HOST_COLORS_SHIFT 0
265 #define XF_INVTXSPEC_HOST_NORMAL_SHIFT 2
266 #define XF_INVTXSPEC_HOST_TEXTURES_SHIFT 4
267 #define XF_INVTXSPEC(host_colors, host_normal, host_textures) \
268 ((((unsigned long)(host_colors)) << XF_INVTXSPEC_HOST_COLORS_SHIFT) | \
269 (((unsigned long)(host_normal)) << XF_INVTXSPEC_HOST_NORMAL_SHIFT) | \
270 (((unsigned long)(host_textures)) << XF_INVTXSPEC_HOST_TEXTURES_SHIFT))
271
272 /*
273 * xf_numcolors_f struct
274 */
275 #define XF_NUMCOLORS_SHIFT 0
276 #define XF_NUMCOLORS(numcolors) \
277 ((((unsigned long)(numcolors)) << XF_NUMCOLORS_SHIFT))
278
279 /*
280 * xf_numtex_f struct
281 */
282 #define XF_NUMTEX_SHIFT 0
283 #define XF_NUMTEX(numtex) \
284 ((((unsigned long)(numtex)) << XF_NUMTEX_SHIFT))
285
286 /*
287 * xf_tex struct (texgen)
288 */
289 #define XF_TEX_PROJECTION_SHIFT 1
290 #define XF_TEX_INPUT_FORM_SHIFT 2
291 #define XF_TEX_TEXGEN_TYPE_SHIFT 4
292 #define XF_TEX_SOURCE_ROW_SHIFT 7
293 #define XF_TEX_EMBOSS_SOURCE_SHIFT 12
294 #define XF_TEX_EMBOSS_LIGHT_SHIFT 15
295 #define XF_TEX(projection, input_form, texgen_type, source_row, emboss_source, emboss_light) \
296 ((((unsigned long)(projection)) << XF_TEX_PROJECTION_SHIFT) | \
297 (((unsigned long)(input_form)) << XF_TEX_INPUT_FORM_SHIFT) | \
298 (((unsigned long)(texgen_type)) << XF_TEX_TEXGEN_TYPE_SHIFT) | \
299 (((unsigned long)(source_row)) << XF_TEX_SOURCE_ROW_SHIFT) | \
300 (((unsigned long)(emboss_source)) << XF_TEX_EMBOSS_SOURCE_SHIFT) | \
301 (((unsigned long)(emboss_light)) << XF_TEX_EMBOSS_LIGHT_SHIFT))
302
303 /*
304 * xf_dualtex_f struct
305 */
306 #define XF_DUALTEX_DUALMTX_SHIFT 0
307 #define XF_DUALTEX_NORMAL_ENABLE_SHIFT 8
308 #define XF_DUALTEX(dualmtx, normal_enable) \
309 ((((unsigned long)(dualmtx)) << XF_DUALTEX_DUALMTX_SHIFT) | \
310 (((unsigned long)(normal_enable)) << XF_DUALTEX_NORMAL_ENABLE_SHIFT))
311
312 /*
313 * gen_mode struct
314 */
315 #define GEN_MODE_NTEX_SHIFT 0
316 #define GEN_MODE_NCOL_SHIFT 4
317 #define GEN_MODE_MS_EN_SHIFT 9
318 #define GEN_MODE_NTEV_SHIFT 10
319 #define GEN_MODE_REJECT_EN_SHIFT 14
320 #define GEN_MODE_NBMP_SHIFT 16
321 #define GEN_MODE_ZFREEZE_SHIFT 19
322 #define GEN_MODE_RID_SHIFT 24
323 #define GEN_MODE(ntex, ncol, ms_en, ntev, reject_en, nbmp, zfreeze, rid) \
324 ((((unsigned long)(ntex)) << GEN_MODE_NTEX_SHIFT) | \
325 (((unsigned long)(ncol)) << GEN_MODE_NCOL_SHIFT) | \
326 (((unsigned long)(ms_en)) << GEN_MODE_MS_EN_SHIFT) | \
327 (((unsigned long)(ntev)) << GEN_MODE_NTEV_SHIFT) | \
328 (((unsigned long)(reject_en)) << GEN_MODE_REJECT_EN_SHIFT) | \
329 (((unsigned long)(nbmp)) << GEN_MODE_NBMP_SHIFT) | \
330 (((unsigned long)(zfreeze)) << GEN_MODE_ZFREEZE_SHIFT) | \
331 (((unsigned long)(rid)) << GEN_MODE_RID_SHIFT))
332
333 /*
334 * su_lpsize struct
335 */
336 #define SU_LPSIZE_LSIZE_SHIFT 0
337 #define SU_LPSIZE_PSIZE_SHIFT 8
338 #define SU_LPSIZE_LTOFF_SHIFT 16
339 #define SU_LPSIZE_PTOFF_SHIFT 19
340 #define SU_LPSIZE_LINEASPECT_SHIFT 22
341 #define SU_LPSIZE_PAD0_SHIFT 23
342 #define SU_LPSIZE_RID_SHIFT 24
343 #define SU_LPSIZE(lsize, psize, ltoff, ptoff, lineaspect, rid) \
344 ((((unsigned long)(lsize)) << SU_LPSIZE_LSIZE_SHIFT) | \
345 (((unsigned long)(psize)) << SU_LPSIZE_PSIZE_SHIFT) | \
346 (((unsigned long)(ltoff)) << SU_LPSIZE_LTOFF_SHIFT) | \
347 (((unsigned long)(ptoff)) << SU_LPSIZE_PTOFF_SHIFT) | \
348 (((unsigned long)(lineaspect)) << SU_LPSIZE_LINEASPECT_SHIFT) | \
349 (((unsigned long)(rid)) << SU_LPSIZE_RID_SHIFT))
350
351 /*
352 * CP register addresses (CP address space)
353 */
354 #define CP_MATINDEX_A_ID 0x30
355 #define CP_MATINDEX_B_ID 0x40
356 #define CP_VCD_LO_ID 0x50
357 #define CP_VCD_HI_ID 0x60
358 #define CP_VAT_A_ID 0x70
359 #define CP_VAT_B_ID 0x80
360 #define CP_VAT_C_ID 0x90
361 #define CP_ARRAY_BASE_ID 0xa0
362 #define CP_ARRAY_STRIDE_ID 0xb0
363
364 /*
365 * XF register addresses (XF address space)
366 */
367 #define XF_INVTXSPEC_ID 0x1008
368 #define XF_NUMCOLORS_ID 0x1009
369 #define XF_NUMTEX_ID 0x103f
370 #define XF_TEX0_ID 0x1040
371 #define XF_TEX1_ID 0x1041
372 #define XF_TEX2_ID 0x1042
373 #define XF_TEX3_ID 0x1043
374 #define XF_TEX4_ID 0x1044
375 #define XF_TEX5_ID 0x1045
376 #define XF_TEX6_ID 0x1046
377 #define XF_TEX7_ID 0x1047
378 #define XF_DUALTEX0_ID 0x1050
379 #define XF_DUALTEX1_ID 0x1051
380 #define XF_DUALTEX2_ID 0x1052
381 #define XF_DUALTEX3_ID 0x1053
382 #define XF_DUALTEX4_ID 0x1054
383 #define XF_DUALTEX5_ID 0x1055
384 #define XF_DUALTEX6_ID 0x1056
385 #define XF_DUALTEX7_ID 0x1057
386
387 /*
388 * GEN_MODE register address (BP address space)
389 */
390 #define GEN_MODE_ID 0x00000000
391
392 /*
393 * SU register addresses (BP address space)
394 */
395 #define SU_LPSIZE_ID 0x00000022
396
397 /*
398 * XF register field definitions
399 */
400
401 // xf_tex_projection_f enum
402 #define XF_TEX_ST 0x00000000
403 #define XF_TEX_STQ 0x00000001
404
405 // xf_tex_input_form_f enum
406 #define XF_TEX_AB11 0x00000000
407 #define XF_TEX_ABC1 0x00000001
408
409 // xf_tex_texgen_type_f enum
410 #define XF_TEXGEN_REGULAR 0x00000000
411 #define XF_TEXGEN_EMBOSS_MAP 0x00000001
412 #define XF_TEXGEN_COLOR_STRGBC0 0x00000002
413 #define XF_TEXGEN_COLOR_STRGBC1 0x00000003
414
415 // xf_tex_source_row_f enum
416 #define XF_GEOM_INROW 0x00000000
417 #define XF_NORMAL_INROW 0x00000001
418 #define XF_COLORS_INROW 0x00000002
419 #define XF_BINORMAL_T_INROW 0x00000003
420 #define XF_BINORMAL_B_INROW 0x00000004
421 #define XF_TEX0_INROW 0x00000005
422 #define XF_TEX1_INROW 0x00000006
423 #define XF_TEX2_INROW 0x00000007
424 #define XF_TEX3_INROW 0x00000008
425 #define XF_TEX4_INROW 0x00000009
426 #define XF_TEX5_INROW 0x0000000a
427 #define XF_TEX6_INROW 0x0000000b
428 #define XF_TEX7_INROW 0x0000000c
429
430 /*---------------------------------------------------------------------------*/
431 #ifdef __cplusplus
432 }
433 #endif
434
435 #endif // __GDGEOMETRY_H__
436