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