1  /*---------------------------------------------------------------------------*
2   Project:  PICA register macro header
3   File:     gx_MacroOld.h
4 
5   Copyright (C)2010 Nintendo Co., Ltd. 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   $Revision: 25357 $
14  *---------------------------------------------------------------------------*/
15 #ifndef NN_GX_CTR_PICA_MACRO_OLD_H_
16 #define NN_GX_CTR_PICA_MACRO_OLD_H_
17 
18 #include "gx_MacroCommon.h"
19 
20 
21 
22 enum
23 {
24     PICA_REG_FRAG_OP_CLIP           = 0x047,
25     PICA_REG_FRAG_OP_CLIP_DATA1     = 0x048,
26     PICA_REG_FRAG_OP_CLIP_DATA2     = 0x049,
27     PICA_REG_FRAG_OP_CLIP_DATA3     = 0x04a,
28     PICA_REG_FRAG_OP_CLIP_DATA4     = 0x04b,
29 
30     PICA_REG_FRAG_OP_WSCALE_DATA1   = 0x04d,
31     PICA_REG_FRAG_OP_WSCALE_DATA2   = 0x04e,
32 
33     PICA_REG_FRAG_OP_WSCALE         = 0x06d,
34 
35     PICA_REG_RENDER_BUF_RESOLUTION1 = 0x06e
36 };
37 
38 enum
39 {
40     PICA_REG_TEXTURE3_PROTEX0     = 0x0a8,
41     PICA_REG_TEXTURE3_PROTEX1     = 0x0a9,
42     PICA_REG_TEXTURE3_PROTEX2     = 0x0aa,
43     PICA_REG_TEXTURE3_PROTEX3     = 0x0ab,
44     PICA_REG_TEXTURE3_PROTEX4     = 0x0ac,
45     PICA_REG_TEXTURE3_PROTEX5     = 0x0ad,
46 
47     PICA_REG_PROTEX_LUT           = 0x0af,
48     PICA_REG_PROTEX_LUT_DATA0     = 0x0b0,
49     PICA_REG_PROTEX_LUT_DATA1     = 0x0b1,
50     PICA_REG_PROTEX_LUT_DATA2     = 0x0b2,
51     PICA_REG_PROTEX_LUT_DATA3     = 0x0b3,
52     PICA_REG_PROTEX_LUT_DATA4     = 0x0b4,
53     PICA_REG_PROTEX_LUT_DATA5     = 0x0b5,
54     PICA_REG_PROTEX_LUT_DATA6     = 0x0b6,
55     PICA_REG_PROTEX_LUT_DATA7     = 0x0b7
56 };
57 
58 enum
59 {
60     PICA_REG_TEX_ENV_0            = 0x0c0,
61     PICA_REG_TEX_ENV_0_OPERAND    = 0x0c1,
62     PICA_REG_TEX_ENV_0_COMBINE    = 0x0c2,
63     PICA_REG_TEX_ENV_0_COLOR      = 0x0c3,
64     PICA_REG_TEX_ENV_0_SCALE      = 0x0c4,
65 
66     PICA_REG_TEX_ENV_1            = 0x0c8,
67     PICA_REG_TEX_ENV_1_OPERAND    = 0x0c9,
68     PICA_REG_TEX_ENV_1_COMBINE    = 0x0ca,
69     PICA_REG_TEX_ENV_1_COLOR      = 0x0cb,
70     PICA_REG_TEX_ENV_1_SCALE      = 0x0cc,
71 
72     PICA_REG_TEX_ENV_2            = 0x0d0,
73     PICA_REG_TEX_ENV_2_OPERAND    = 0x0d1,
74     PICA_REG_TEX_ENV_2_COMBINE    = 0x0d2,
75     PICA_REG_TEX_ENV_2_COLOR      = 0x0d3,
76     PICA_REG_TEX_ENV_2_SCALE      = 0x0d4,
77 
78     PICA_REG_TEX_ENV_3            = 0x0d8,
79     PICA_REG_TEX_ENV_3_OPERAND    = 0x0d9,
80     PICA_REG_TEX_ENV_3_COMBINE    = 0x0da,
81     PICA_REG_TEX_ENV_3_COLOR      = 0x0db,
82     PICA_REG_TEX_ENV_3_SCALE      = 0x0dc,
83 
84     PICA_REG_TEX_ENV_4            = 0x0f0,
85     PICA_REG_TEX_ENV_4_OPERAND    = 0x0f1,
86     PICA_REG_TEX_ENV_4_COMBINE    = 0x0f2,
87     PICA_REG_TEX_ENV_4_COLOR      = 0x0f3,
88     PICA_REG_TEX_ENV_4_SCALE      = 0x0f4,
89 
90     PICA_REG_TEX_ENV_BUF_COLOR    = 0x0fd,
91 
92     PICA_REG_TEX_ENV_5            = 0x0f8,
93     PICA_REG_TEX_ENV_5_OPERAND    = 0x0f9,
94     PICA_REG_TEX_ENV_5_COMBINE    = 0x0fa,
95     PICA_REG_TEX_ENV_5_COLOR      = 0x0fb,
96     PICA_REG_TEX_ENV_5_SCALE      = 0x0fc,
97 
98     PICA_REG_TEX_ENV_BUF_INPUT    = 0x0e0
99 };
100 
101 enum
102 {
103     PICA_REG_FRAG_OP_ALPHA_TEST     = 0x104,
104 
105     PICA_REG_COLOR_BUFFER_CLEAR0    = 0x110,
106     PICA_REG_COLOR_BUFFER_CLEAR1    = 0x111,
107 
108     PICA_REG_DEPTH_STENCIL_READ     = 0x114,
109     PICA_REG_DEPTH_STENCIL_WRITE    = 0x115,
110 
111     PICA_REG_RENDER_BUF_DEPTH_MODE  = 0x116,
112     PICA_REG_RENDER_BUF_COLOR_MODE  = 0x117,
113 
114     PICA_REG_RENDER_BUF_DEPTH_ADDR  = 0x11c,
115     PICA_REG_RENDER_BUF_COLOR_ADDR  = 0x11d,
116     PICA_REG_RENDER_BUF_RESOLUTION0 = 0x11e,
117 
118     PICA_REG_FRAG_OP_SHADOW         = 0x130
119 };
120 
121 enum
122 {
123     PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR = 0x200,
124     PICA_REG_VTX_ATTR_ARRAYS0          = 0x201,
125     PICA_REG_VTX_ATTR_ARRAYS1          = 0x202,
126 
127     PICA_REG_VTX_FUNC                  = 0x231,
128 
129     PICA_REG_GS_PROG_RENEWAL_END       = 0x28f,
130     PICA_REG_GS_FLOAT_DATA1            = 0x291,
131     PICA_REG_GS_FLOAT_DATA2            = 0x292,
132     PICA_REG_GS_FLOAT_DATA3            = 0x293,
133     PICA_REG_GS_FLOAT_DATA4            = 0x294,
134     PICA_REG_GS_FLOAT_DATA5            = 0x295,
135     PICA_REG_GS_FLOAT_DATA6            = 0x296,
136     PICA_REG_GS_FLOAT_DATA7            = 0x297,
137     PICA_REG_GS_FLOAT_DATA8            = 0x298,
138 
139     PICA_REG_VS_PROG_RENEWAL_END       = 0x2bf,
140     PICA_REG_VS_FLOAT_DATA1            = 0x2c1,
141     PICA_REG_VS_FLOAT_DATA2            = 0x2c2,
142     PICA_REG_VS_FLOAT_DATA3            = 0x2c3,
143     PICA_REG_VS_FLOAT_DATA4            = 0x2c4,
144     PICA_REG_VS_FLOAT_DATA5            = 0x2c5,
145     PICA_REG_VS_FLOAT_DATA6            = 0x2c6,
146     PICA_REG_VS_FLOAT_DATA7            = 0x2c7,
147     PICA_REG_VS_FLOAT_DATA8            = 0x2c8
148 };
149 
150 
151 
152 //
153 // gx_MacroCommon.h
154 //
155 
156 #define PICA_CMD_HEADER_V_SHADER_F32( size ) PICA_CMD_HEADER(0x2c1, (size) * 4 -1, 0xf, 0)
157 
158 
159 
160 //
161 // gx_MacroMisc.h
162 //
163 
164 enum
165 {
166     PICA_DATA_1_0  = 0x0,
167     PICA_DATA_2_0  = 0x1,
168     PICA_DATA_4_0  = 0x2,
169     PICA_DATA_8_0  = 0x3,
170     PICA_DATA_0_25 = 0x6,
171     PICA_DATA_0_5  = 0x7
172 };
173 
174 ///////////////////////////////////
175 // Fragment Operation Double buffer
176 
177 // PICA_REG_FOG_OP_WSCALE          0x06d
178 #define PICA_CMD_DATA_FOG_OP_WSCALE(mode) ((mode == 0) ? 1 : 0)
179 
180 // PICA_REG_FOG_OP_WSCALE_DATA1    0x04d
181 // PICA_REG_FOG_OP_WSCALE_DATA2    0x04e
182 #define PICA_CMD_DATA_FOG_OP_WSCALE_DATA(data) (data)
183 
184 ///////////////////////////////////
185 // Fragment Operation User Clipping
186 
187 // PICA_REG_FOG_OP_CLIP            0x047
188 
189 // 0x47 [0:0]
190 #define PICA_CMD_DATA_FOG_OP_CLIP(mode) ((mode) ? 1 : 0)
191 
192 #define PICA_CMD_SET_FOG_OP_CLIP(mode) \
193     PICA_CMD_DATA_FOG_OP_CLIP(mode),   \
194     PICA_CMD_HEADER_SINGLE_BE(PICA_REG_FRAGOP_CLIP, 0x1)
195 
196 // PICA_REG_FOG_OP_CLIP_DATA1      0x048
197 // PICA_REG_FOG_OP_CLIP_DATA2      0x049
198 // PICA_REG_FOG_OP_CLIP_DATA3      0x04a
199 // PICA_REG_FOG_OP_CLIP_DATA4      0x04b
200 #define PICA_CMD_DATA_FOG_OP_CLIP_DATA(data) (data)
201 
202 enum
203 {
204     PICA_DATA_FRAGOP_MODE         = 0x0,
205     PICA_DATA_FRAGOP_MODE_GAS_ACC = 0x1,
206     PICA_DATA_FRAGOP_MODE_SHADOW  = 0x3
207 };
208 
209 #define PICA_CMD_DATA_FRAG_OP_ALPHA_TEST_DISABLE() 0x0
210 
211 // PICA_REG_FRAG_OP_ALPHA_TEST      0x104
212 #define PICA_CMD_DATA_FRAG_OP_ALPHA_TEST( enable, func, value ) \
213     ( enable | (func) << 4 | (value) << 8 )
214 
215 // PICA_REG_RENDER_BUF_COLOR_ADDR   0x11d
216 #define PICA_CMD_DATA_RENDER_BUF_COLOR_ADDR( addr ) ( (addr) >> 3 )
217 
218 // PICA_REG_RENDER_BUF_DEPTH_ADDR   0x11c
219 #define PICA_CMD_DATA_RENDER_BUF_DEPTH_ADDR( addr ) ( (addr) >> 3 )
220 
221 // PICA_REG_RENDER_BUF_COLOR_MODE   0x117
222 #define PICA_CMD_DATA_RENDER_BUF_COLOR_MODE( pixSize, format ) \
223     ( (pixSize) | (format) << 16 )
224 
225 // PICA_REG_RENDER_BUF_DEPTH_MODE   0x116
226 #define PICA_CMD_DATA_RENDER_BUF_DEPTH_MODE( mode ) (mode)
227 
228 /*
229 struct CommandRenderBufResolution
230 {
231     u32 width   : 11;
232     CMD_PADDING(1);
233     u32 height  : 10;
234     CMD_PADDING(2);
235     CMD_PADDING(8):   // 0x01
236 };
237 */
238 // PICA_REG_RENDER_BUF_RESOLUTION0    0x11e
239 // PICA_REG_RENDER_BUF_RESOLUTION1    0x06e
240 #define PICA_CMD_DATA_RENDER_BUF_RESOLUTION( width, height ) ( (width) | (height) << 12 | 0x01000000 )
241 
242 #define PICA_CMD_DATA_COLOR_BUFFER_CLEAR( data ) \
243     ( (data) ? 1 : 0 )
244 
245 #define PICA_CMD_SET_COLOR_BUFFER_CLEAR( data1, data2 ) \
246     PICA_CMD_DATA_COLOR_BUFFER_CLEAR(data1), PICA_CMD_HEADER_SINGLE(PICA_REG_COLOR_BUFFER_CLEAR1), \
247     PICA_CMD_DATA_COLOR_BUFFER_CLEAR(data2), PICA_CMD_HEADER_SINGLE(PICA_REG_COLOR_BUFFER_CLEAR0)
248 
249 #define PICA_CMD_DATA_FOG_OP_SHADOW(penumbraScale, penumbraBias) \
250     (( (penumbraScale) << 16) | (penumbraBias) )
251 
252 
253 //
254 // gx_MacroShader.h
255 //
256 enum
257 {
258     PICA_DATA_VS_OUTATTR_X        = 0x00,
259     PICA_DATA_VS_OUTATTR_Y        = 0x01,
260     PICA_DATA_VS_OUTATTR_Z        = 0x02,
261     PICA_DATA_VS_OUTATTR_W        = 0x03,
262     PICA_DATA_VS_OUTATTR_QAURTX   = 0x04,
263     PICA_DATA_VS_OUTATTR_QAURTY   = 0x05,
264     PICA_DATA_VS_OUTATTR_QAURTZ   = 0x06,
265     PICA_DATA_VS_OUTATTR_QAURTW   = 0x07,
266     PICA_DATA_VS_OUTATTR_R        = 0x08,
267     PICA_DATA_VS_OUTATTR_G        = 0x09,
268     PICA_DATA_VS_OUTATTR_B        = 0x0a,
269     PICA_DATA_VS_OUTATTR_A        = 0x0b,
270     PICA_DATA_VS_OUTATTR_TEX0_U   = 0x0c,
271     PICA_DATA_VS_OUTATTR_TEX0_V   = 0x0d,
272     PICA_DATA_VS_OUTATTR_TEX1_U   = 0x0e,
273     PICA_DATA_VS_OUTATTR_TEX1_V   = 0x0f,
274     PICA_DATA_VS_OUTATTR_TEX0_W   = 0x10,
275     PICA_DATA_VS_OUTATTR_VIEW_X   = 0x12,
276     PICA_DATA_VS_OUTATTR_VIEW_Y   = 0x13,
277     PICA_DATA_VS_OUTATTR_VIEW_Z   = 0x14,
278     PICA_DATA_VS_OUTATTR_TEX2_U   = 0x16,
279     PICA_DATA_VS_OUTATTR_TEX2_V   = 0x17,
280     PICA_DATA_VS_OUTATTR_INVALID  = 0x1f
281 };
282 
283 // PICA_REG_VS_FLOAT_DATA  0x2c1 to 0x2c8
284 #define PICA_CMD_DATA_VS_FLOAT_DATA(data) (data)
285 
286 // PICA_REG_VS_ATTR_IN_REG_MAP1  0x2bc
287 #define PICA_CMD_DATA_VS_ATTR_IN_MAP1(index9, index10, index11, index12) \
288       ((index9) | (index10) << 4 | (index11) << 8 | (index12) << 12)
289 
290 #define PICA_CMD_DATA_VTX_ATTR_ARRAYS_BASE_ADDR(addr) ( ((u32)(addr) >> 4) << 1 )
291 
292 #define PICA_CMD_DATA_VTX_ATTR_ARRAYS(attr0, attr1, attr2, attr3, attr4, attr5, attr6, attr7) \
293    ((attr0)       | (attr1) <<  4 | (attr2) <<  8 | (attr3) << 12 | \
294     (attr4) << 16 | (attr5) << 20 | (attr6) << 24 | (attr7) << 28)
295 
296 // PICA_REG_VERTEX_ATTR_ARRAYS0         0x201
297 #define PICA_CMD_DATA_VERTEX_ATTR_ARRAYS(attr0, attr1, attr2, attr3, attr4, attr5, attr6, attr7) \
298    ((attr0)       | (attr1) <<  4 | (attr2) <<  8 | (attr3) << 12 | \
299     (attr4) << 16 | (attr5) << 20 | (attr6) << 24 | (attr7) << 28)
300 
301 // PICA_REG_LOAD_ARRAY0_ELEMENT0         0x204
302 #define PICA_CMD_DATA_LOAD_ARRAY0_ELEMENT(attr0, attr1, attr2, attr3, attr4, attr5, attr6, attr7) \
303    ( (attr0)       | (attr1) << 4  | (attr2) << 8  | (attr3) << 12 | \
304      (attr4) << 16 | (attr5) << 20 | (attr6) << 24 | (attr7) << 28)
305 
306 enum
307 {
308     PICA_DATA_VS_OUT_ATTR_QAURTX   = 0x04,
309     PICA_DATA_VS_OUT_ATTR_QAURTY   = 0x05,
310     PICA_DATA_VS_OUT_ATTR_QAURTZ   = 0x06,
311     PICA_DATA_VS_OUT_ATTR_QAURTW   = 0x07
312 };
313 
314 enum
315 {
316     PICA_DATA_BIT_MODE_F32 = 0x80000000,
317     PICA_DATA_BIT_MODE_F24 = 0x0
318 };
319 
320 enum
321 {
322     PICA_DATA_GS_USE    = 0x08,
323     PICA_DATA_GS_NO_USE = 0xa0
324 };
325 
326 #define PICA_CMD_SET_GS_MISC_REG0_DISABLE() \
327     0x00000000, PICA_CMD_HEADER_SINGLE(PICA_REG_GS_MISC_REG0)
328 
329 
330 
331 //
332 // gx_MacroTexture.h
333 //
334 // PICA_REG_TEXTURE0_ADDR1      0x085
335 #define PICA_CMD_DATA_TEXTURE_CUBE(cubeMap) \
336     ( (cubeMap) & 0x3fffff )
337 
338 enum
339 {
340     PICA_DATA_PRIMARY_COLOR            = 0x0,
341     PICA_DATA_FRAGMENT_PRIMARY_COLOR   = 0x1,
342     PICA_DATA_FRAGMENT_SECONDARY_COLOR = 0x2,
343     PICA_DATA_TEXTURE0                 = 0x3,
344     PICA_DATA_TEXTURE1                 = 0x4,
345     PICA_DATA_TEXTURE2                 = 0x5,
346     PICA_DATA_TEXTURE3                 = 0x6,
347     PICA_DATA_PREVIOUS_BUFFER          = 0xd,
348     PICA_DATA_CONSTANT                 = 0xe,
349     PICA_DATA_PREVIOUS                 = 0xf
350 };
351 
352 enum
353 {
354     PICA_DATA_REPLACE     = 0x0,
355     PICA_DATA_MODULATE    = 0x1,
356     PICA_DATA_ADD         = 0x2,
357     PICA_DATA_ADD_SIGNED  = 0x3,
358     PICA_DATA_INTERPOLATE = 0x4,
359     PICA_DATA_SUBTRACT    = 0x5,
360     PICA_DATA_DOT3_RGB    = 0x6,
361     PICA_DATA_DOT3_RGBA   = 0x7,
362     PICA_DATA_MULT_ADD    = 0x8,
363     PICA_DATA_ADD_MULT    = 0x9
364 };
365 
366 enum
367 {
368     PICA_DATA_SCALE_1 = 0x0,
369     PICA_DATA_SCALE_2 = 0x1,
370     PICA_DATA_SCALE_4 = 0x2
371 };
372 
373 #define PICA_CMD_DATA_COLOR_WHITE 0xffffffff
374 #define PICA_CMD_DATA_COLOR_BLACK 0x00000000
375 
376 enum
377 {
378     PICA_DATA_TEX_ENV_PREVIOUS_BUFFER = 0x0,
379     PICA_DATA_TEX_ENV_PREVIOUS        = 0x1
380 };
381 
382 #define PICA_CMD_DATA_BUFFER_INPUT(i, bufInput1, bufInput2) \
383     ((bufInput1) << 7+(i) | (bufInput2) << 11+(i))
384 
385 // PICA_REG_TEXTURE0_SHADOW      0x08b
386 #define PICA_CMD_DATA_TEX_SHADOW(perspectiveShadow, shadowZBias, shadowZScale) \
387     (( (perspectiveShadow) ? 0 : 1) | (shadowZBias) << 1 | (shadowZScale) << 24)
388 
389 // PICA_REG_TEXTURE_FUNC          0x080
390 #define PICA_CMD_DATA_TEX_FUNC(type0_0, type1, type2, texcoord3, type3, texcoord2, clear) \
391     ( ((type0_0) ? 1 : 0 | ((type1) ? 1 : 0) << 1 | ((type2) ? 1 : 0) << 2 | \
392     0 << 3 | (texcoord3) << 8 | ((type3) ? 1 : 0) << 10) | 1 << 12 | ((texcoord2) ? 1 : 0) << 13 | (clear) << 16 | 0 << 24 )
393 
394 // PICA_REG_PROTEX_LUT         0x0af
395 #define PICA_CMD_DATA_PROTEX_LUT(index, attrib) \
396     ((index) | (attrib) << 11)
397 
398 // PICA_REG_PROTEX_LUT_DATA0  0x0b0
399 // PICA_REG_PROTEX_LUT_DATA1  0x0b1
400 // PICA_REG_PROTEX_LUT_DATA2  0x0b2
401 // PICA_REG_PROTEX_LUT_DATA3  0x0b3
402 // PICA_REG_PROTEX_LUT_DATA4  0x0b4
403 // PICA_REG_PROTEX_LUT_DATA5  0x0b5
404 // PICA_REG_PROTEX_LUT_DATA6  0x0b6
405 // PICA_REG_PROTEX_LUT_DATA7  0x0b7
406 #define PICA_CMD_DATA_PROTEX_LUT_DATA(data) (data)
407 
408 enum
409 {
410     PICA_DATA_DOT_3_RGB   = 0x6,
411     PICA_DATA_DOT_3_RGBA  = 0x7
412 };
413 
414 enum   //  Texture Sampler
415 {
416     PICA_DATA_TEX0_1_GL_TEXTURE_2D              = 0x0,
417     PICA_DATA_TEX0_1_GL_TEXTURE_CUBE_MAP        = 0x1,
418     PICA_DATA_TEX0_1_GL_TEXTURE_SHADOW_2D_DMP   = 0x2,
419     PICA_DATA_TEX0_1_GL_TEXTURE_PROJECTION_DMP  = 0x3,
420     PICA_DATA_TEX0_1_GL_TEXTURE_SHADOW_CUBE_DMP = 0x4
421 };
422 
423 enum
424 {
425     PICA_DATA_TEXCOORD3_TEXTURE0 = 0x0,
426     PICA_DATA_TEXCOORD3_TEXTURE1 = 0x1,
427     PICA_DATA_TEXCOORD3_TEXTURE2 = 0x2
428 };
429 
430 #define PICA_CMD_DATA_BUF_INPUT(bufInput1, bufInput2, i) \
431     ((bufInput1) << 7+(i) | (bufInput2) << 11+(i))
432 
433 enum
434 {
435     PICA_DATA_CLAMP_TO_ZERO_DMP       = 0x0,
436     PICA_DATA_CLAMP_TO_EDGE           = 0x1,
437     PICA_DATA_SYMMETRICAL_REPEAT_DMP  = 0x2,
438     PICA_DATA_MIRRORED_REPEAT         = 0x3,
439     PICA_DATA_PULSE_DMP               = 0x4
440 };
441 
442 enum
443 {
444     PICA_DATA_NONE_DMP     = 0x0,
445     PICA_DATA_ODD_DMP      = 0x1,
446     PICA_DATA_EVEN_DMP     = 0x2
447 };
448 
449 // PICA_REG_TEXTURE3_PROTEX0     0x0a8
450 #define PICA_CMD_DATA_PROTEX0(ptClampU, ptClampV, ptRgbMap, ptAlphaMap, \
451     ptAlphaSeparate, ptNoiseEnable, ptShiftU, ptShiftV, ptTexBias1) \
452     ((ptClampU) | (ptClampV) << 3 | (ptRgbMap) << 6 | (ptAlphaMap) << 10 | \
453     (ptAlphaSeparate) << 14 | (ptNoiseEnable) << 15 | (ptShiftU) << 16 | \
454     (ptShiftV) << 18 | (ptTexBias1) << 20)
455 
456 /*
457 struct CommandProTex1
458 {
459     u32 ptNoiseU1  : 32;
460 };
461 */
462 
463 // PICA_REG_TEXTURE3_PROTEX1    0x0a9
464 #define PICA_CMD_DATA_PROTEX1(ptNoiseU1) (ptNoiseU1)
465 
466 /*
467 struct CommandProTex2
468 {
469     u32 ptNoiseV1  : 32;
470 };
471 */
472 // PICA_REG_TEXTURE3_PROTEX2    0x0aa
473 #define PICA_CMD_DATA_PROTEX2(ptNoiseV1) (ptNoiseV1)
474 
475 /*
476 struct CommandProTex3
477 {
478     u32 ptNoiseU2  : 16;
479     u32 ptNoiseV2  : 16;
480 };
481 */
482 // PICA_REG_TEXTURE3_PROTEX3    0x0ab
483 #define PICA_CMD_DATA_PROTEX3(ptNoiseU2, ptNoiseV2) \
484     ( (ptNoiseU2) | (ptNoiseV2) << 16 )
485 
486 // PICA_REG_TEXTURE3_PROTEX4    0x0ac
487 #define PICA_CMD_DATA_PROTEX4(ptMinFilter, ptTexWidth, ptTexBias2) \
488     ((ptMinFilter) | 0x60 << 3 | (ptTexWidth) << 11 | (ptTexBias2) << 19)
489 
490 /*
491 struct CommandProTex5
492 {
493     u32 ptTexOffset  : 8;
494     CMD_PADDING(24);   // 0xe0c080
495 };
496 */
497 
498 // PICA_REG_TEXTURE3_PROTEX5    0x0ad
499 #define PICA_CMD_DATA_PROTEX5(ptTexOffset) ( (ptTexOffset) | 0xe0c0080 )
500 
501 enum
502 {
503     PICA_DATA_NOISE_REF_TABLE      = 0x0,
504     PICA_DATA_RGB_MAP_REF_TABLE    = 0x2,
505     PICA_DATA_ALPHA_MAP_REF_TABLE  = 0x3,
506     PICA_DATA_COLOR_REF_TABLE      = 0x4,
507     PICA_DATA_COLOR_DIFF_REF_TABLE = 0x5
508 };
509 
510 // PICA_REG_TEXTURE0_SIZE        0x082
511 // PICA_REG_TEXTURE1_SIZE        0x092
512 // PICA_REG_TEXTURE2_SIZE        0x09a
513 #define PICA_CMD_DATA_TEX_SIZE( width, height ) \
514     ( (width) << 16 | (height) )
515 
516 enum
517 {
518     PICA_DATA_TEX_FORMAT_RGBA8  = 0x0,
519     PICA_DATA_TEX_FORMAT_RGB8   = 0x1,
520     PICA_DATA_TEX_FORMAT_RGB5A1 = 0x2,
521     PICA_DATA_TEX_FORMAT_RGB565 = 0x3,
522     PICA_DATA_TEX_FORMAT_RGBA4  = 0x4,
523     PICA_DATA_TEX_FORMAT_LA8    = 0x5,
524     PICA_DATA_TEX_FORMAT_HILO8  = 0x6,
525     PICA_DATA_TEX_FORMAT_L8     = 0x7,
526     PICA_DATA_TEX_FORMAT_A8     = 0x8,
527     PICA_DATA_TEX_FORMAT_LA4    = 0x9,
528     PICA_DATA_TEX_FORMAT_L4     = 0xa,
529     PICA_DATA_TEX_FORMAT_A4     = 0xb,
530     PICA_DATA_TEX_FORMAT_ETC1   = 0xc,
531     PICA_DATA_TEX_FORMAT_ETC1A4 = 0xd
532 };
533 
534 enum
535 {
536     PICA_DATA_TEXTURE_FORMAT_HILO8_DMP_UNSIGNED_BYTE_DMP = 0x6
537 };
538 
539 // PICA_REG_TEXTURE0_FORMAT      0x08e
540 // PICA_REG_TEXTURE1_FORMAT      0x096
541 // PICA_REG_TEXTURE2_FORMAT      0x09e
542 #define PICA_CMD_DATA_TEX_FORMAT_TYPE( type ) (type)
543 
544 enum
545 {
546     PICA_DATA_TEX_NEAREST = 0,
547     PICA_DATA_TEX_LINEAR  = 1
548 };
549 
550 enum
551 {
552     PICA_DATA_NEAREST                = 0x0,
553     PICA_DATA_LINEAR                 = 0x1,
554     PICA_DATA_NEAREST_MIPMAP_NEAREST = 0x2,
555     PICA_DATA_LINEAR_MIPMAP_NEAREST  = 0x3,
556     PICA_DATA_NEAREST_MIPMAP_LINEAR  = 0x4,
557     PICA_DATA_LINEAR_MIPMAP_LINEAR   = 0x5
558 };
559 
560 enum
561 {
562     PICA_DATA_TEX_CLAMP_TO_EDGE   = 0,
563     PICA_DATA_TEX_CLAMP_TO_BORDER = 1,
564     PICA_DATA_TEX_REPEAT          = 2,
565     PICA_DATA_TEX_MIRRORED_REPEAT = 3
566 };
567 
568 // PICA_REG_TEXTURE0_WRAP_FILTER  0x083
569 #define PICA_CMD_DATA_TEX0_WRAP_FILTER( magFilter, minFilter, isETC1, wrapT, wrapS, enable, minFilter2, type1_1 ) \
570     ( (magFilter) << 1 | (minFilter) << 2 | ( (isETC1) ? 2 : 0 ) << 4 | (wrapT) << 8 | (wrapS) << 12 | 0 << 16 | (enable) << 20 | \
571      (minFilter2) << 24 | (type1_1) << 28)
572 
573 // PICA_REG_TEXTURE1_WRAP_FILTER   0x093
574 #define PICA_CMD_DATA_TEX1_WRAP_FILTER( magFilter, minFilter1, isETC1, wrapT, wrapS, minFilter2) \
575     ( (magFilter) << 1 | (minFilter) << 2 | ((isETC1) ? 2 : 0) << 4 | (wrapT) << 8 | (wrapS) << 12 | 0 << 16 | (minFilter2) << 24 )
576 
577 // PICA_REG_TEXTURE2_WRAP_FILTER   0x09b
578 #define PICA_CMD_DATA_TEX2_WRAP_FILTER( magFilter, minFilter1, isETC1, wrapT, wrapS, minFilter2) \
579     ( (magFilter) << 1 | (minFilter) << 2 | ((isETC1) ? 2 : 0) << 4 | (wrapT) << 8 | (wrapS) << 12 | 0 << 16 | (minFilter2) << 24 )
580 
581 #define PICA_CMD_DATA_TEX_LOD_REV(bias, max, min) \
582     ( (bias) | (max) << 16 | (((min) < 0) ? 0 : (min)) << 24 )
583 
584 
585 
586 //
587 // gx_MacroFragment.h
588 //
589 
590 // PICA_REG_FRAG_LIGHT_AMBIENT     0x1c0
591 #define PICA_CMD_DATA_FRAG_AMBIENT(color) \
592     ( (color.b) | (color.g) << 10 | (color.r) << 20 )
593 
594 enum
595 {
596     PICA_DATA_FRAG_TEXTURE0 = 0x0,
597     PICA_DATA_FRAG_TEXTURE1 = 0x1,
598     PICA_DATA_FRAG_TEXTURE2 = 0x2,
599     PICA_DATA_FRAG_TEXTURE3 = 0x3
600 };
601 
602 enum
603 {
604     PICA_DATA_FRAG_LIGHT_TEXTURE0 = 0x0,
605     PICA_DATA_FRAG_LIGHT_TEXTURE1 = 0x1,
606     PICA_DATA_FRAG_LIGHT_TEXTURE2 = 0x2,
607     PICA_DATA_FRAG_LIGHT_TEXTURE3 = 0x3
608 };
609 
610 enum
611 {
612     PICA_DATA_SAMPLERD0 = 0x0,
613     PICA_DATA_SAMPLERD1 = 0x1,
614     PICA_DATA_SAMPLERFR = 0x3,
615     PICA_DATA_SAMPLERFB = 0x4,
616     PICA_DATA_SAMPLERFG = 0x5,
617     PICA_DATA_SAMPLERRR = 0x6,
618     PICA_DATA_SAMPLERSP = 0x8,
619     PICA_DATA_SAMPLERDA = 0x10
620 };
621 
622 enum
623 {
624     PICA_DATA_NH_DMP = 0x0,
625     PICA_DATA_VH_DMP = 0x1,
626     PICA_DATA_NV_DMP = 0x2,
627     PICA_DATA_LN_DMP = 0x3,
628     PICA_DATA_SP_DMP = 0x4,
629     PICA_DATA_CP_DMP = 0x5
630 };
631 
632 #define PICA_CMD_DATA_FRAG_LIGHT_LUTINPUT(D0, D1, SP, FR, RB, RG, RR) \
633     ( (D0) | (D1) << 4 | (SP) << 8 | \
634       (FR) << 12 | (RB) << 16 | (RG) << 20 | (RR) << 24 )
635 
636 #define PICA_CMD_DATA_FRAG_LIGHT_LUTSCALE(D0, D1, SP, FR, RB, RG, RR) \
637     ( (D0) | (D1) << 4 | (SP) << 8 | \
638       (FR) << 12 | (RB) << 16 | (RG) << 20 | (RR) << 24 )
639 
640 #endif // NN_GX_CTR_PICA_MACRO_OLD_H
641