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: 28630 $ 14 *---------------------------------------------------------------------------*/ 15 #ifndef NN_GX_CTR_PICA_MACRO_OLD_H_ 16 #define NN_GX_CTR_PICA_MACRO_OLD_H_ 17 18 #include <nn/gx/CTR/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_SAMPLER_FG = 0x5, 597 PICA_DATA_SAMPLER_FB = 0x4 598 }; 599 600 enum 601 { 602 PICA_DATA_FRAG_TEXTURE0 = 0x0, 603 PICA_DATA_FRAG_TEXTURE1 = 0x1, 604 PICA_DATA_FRAG_TEXTURE2 = 0x2, 605 PICA_DATA_FRAG_TEXTURE3 = 0x3 606 }; 607 608 enum 609 { 610 PICA_DATA_FRAG_LIGHT_TEXTURE0 = 0x0, 611 PICA_DATA_FRAG_LIGHT_TEXTURE1 = 0x1, 612 PICA_DATA_FRAG_LIGHT_TEXTURE2 = 0x2, 613 PICA_DATA_FRAG_LIGHT_TEXTURE3 = 0x3 614 }; 615 616 enum 617 { 618 PICA_DATA_SAMPLERD0 = 0x0, 619 PICA_DATA_SAMPLERD1 = 0x1, 620 PICA_DATA_SAMPLERFR = 0x3, 621 PICA_DATA_SAMPLERFB = 0x4, 622 PICA_DATA_SAMPLERFG = 0x5, 623 PICA_DATA_SAMPLERRR = 0x6, 624 PICA_DATA_SAMPLERSP = 0x8, 625 PICA_DATA_SAMPLERDA = 0x10 626 }; 627 628 enum 629 { 630 PICA_DATA_NH_DMP = 0x0, 631 PICA_DATA_VH_DMP = 0x1, 632 PICA_DATA_NV_DMP = 0x2, 633 PICA_DATA_LN_DMP = 0x3, 634 PICA_DATA_SP_DMP = 0x4, 635 PICA_DATA_CP_DMP = 0x5 636 }; 637 638 #define PICA_CMD_DATA_FRAG_LIGHT_LUTINPUT(D0, D1, SP, FR, RB, RG, RR) \ 639 ( (D0) | (D1) << 4 | (SP) << 8 | \ 640 (FR) << 12 | (RB) << 16 | (RG) << 20 | (RR) << 24 ) 641 642 #define PICA_CMD_DATA_FRAG_LIGHT_LUTSCALE(D0, D1, SP, FR, RB, RG, RR) \ 643 ( (D0) | (D1) << 4 | (SP) << 8 | \ 644 (FR) << 12 | (RB) << 16 | (RG) << 20 | (RR) << 24 ) 645 646 #endif // NN_GX_CTR_PICA_MACRO_OLD_H 647