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