95 #define G_RDPHALF_2 0xf1 96 #define G_SETOTHERMODE_H 0xe3 97 #define G_SETOTHERMODE_L 0xe2 98 #define G_RDPHALF_1 0xe1 102 #define G_LOAD_UCODE 0xdd 103 #define G_MOVEMEM 0xdc 104 #define G_MOVEWORD 0xdb 106 #define G_GEOMETRYMODE 0xd9 107 #define G_POPMTX 0xd8 108 #define G_TEXTURE 0xd7 109 #define G_DMA_IO 0xd6 110 #define G_SPECIAL_1 0xd5 111 #define G_SPECIAL_2 0xd4 112 #define G_SPECIAL_3 0xd3 115 #define G_MODIFYVTX 0x02 116 #define G_CULLDL 0x03 117 #define G_BRANCH_Z 0x04 121 #define G_LINE3D 0x08 127 #define G_RESERVED0 2 130 #define G_RESERVED1 5 132 #define G_RESERVED2 7 133 #define G_RESERVED3 8 134 #define G_SPRITE2D_BASE 9 137 #define G_IMMFIRST -65 138 #define G_TRI1 (G_IMMFIRST-0) 139 #define G_CULLDL (G_IMMFIRST-1) 140 #define G_POPMTX (G_IMMFIRST-2) 141 #define G_MOVEWORD (G_IMMFIRST-3) 142 #define G_TEXTURE (G_IMMFIRST-4) 143 #define G_SETOTHERMODE_H (G_IMMFIRST-5) 144 #define G_SETOTHERMODE_L (G_IMMFIRST-6) 145 #define G_ENDDL (G_IMMFIRST-7) 146 #define G_SETGEOMETRYMODE (G_IMMFIRST-8) 147 #define G_CLEARGEOMETRYMODE (G_IMMFIRST-9) 148 #define G_LINE3D (G_IMMFIRST-10) 149 #define G_RDPHALF_1 (G_IMMFIRST-11) 150 #define G_RDPHALF_2 (G_IMMFIRST-12) 151 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 152 # define G_MODIFYVTX (G_IMMFIRST-13) 153 # define G_TRI2 (G_IMMFIRST-14) 154 # define G_BRANCH_Z (G_IMMFIRST-15) 155 # define G_LOAD_UCODE (G_IMMFIRST-16) 157 # define G_RDPHALF_CONT (G_IMMFIRST-13) 163 #define G_SPRITE2D_SCALEFLIP (G_IMMFIRST-1) 164 #define G_SPRITE2D_DRAW (G_IMMFIRST-2) 172 #define G_SETCIMG 0xff 173 #define G_SETZIMG 0xfe 174 #define G_SETTIMG 0xfd 175 #define G_SETCOMBINE 0xfc 176 #define G_SETENVCOLOR 0xfb 177 #define G_SETPRIMCOLOR 0xfa 178 #define G_SETBLENDCOLOR 0xf9 179 #define G_SETFOGCOLOR 0xf8 180 #define G_SETFILLCOLOR 0xf7 181 #define G_FILLRECT 0xf6 182 #define G_SETTILE 0xf5 183 #define G_LOADTILE 0xf4 184 #define G_LOADBLOCK 0xf3 185 #define G_SETTILESIZE 0xf2 186 #define G_LOADTLUT 0xf0 187 #define G_RDPSETOTHERMODE 0xef 188 #define G_SETPRIMDEPTH 0xee 189 #define G_SETSCISSOR 0xed 190 #define G_SETCONVERT 0xec 191 #define G_SETKEYR 0xeb 192 #define G_SETKEYGB 0xea 193 #define G_RDPFULLSYNC 0xe9 194 #define G_RDPTILESYNC 0xe8 195 #define G_RDPPIPESYNC 0xe7 196 #define G_RDPLOADSYNC 0xe6 197 #define G_TEXRECTFLIP 0xe5 198 #define G_TEXRECT 0xe4 209 #define G_TRI_FILL 0xc8 210 #define G_TRI_SHADE 0xcc 211 #define G_TRI_TXTR 0xca 212 #define G_TRI_SHADE_TXTR 0xce 213 #define G_TRI_FILL_ZBUFF 0xc9 214 #define G_TRI_SHADE_ZBUFF 0xcd 215 #define G_TRI_TXTR_ZBUFF 0xcb 216 #define G_TRI_SHADE_TXTR_ZBUFF 0xcf 232 #define G_RDP_TRI_FILL_MASK 0x08 233 #define G_RDP_TRI_SHADE_MASK 0x04 234 #define G_RDP_TRI_TXTR_MASK 0x02 235 #define G_RDP_TRI_ZBUFF_MASK 0x01 254 #define G_RDP_ADDR_FIXUP 3 255 #ifdef _LANGUAGE_ASSEMBLY 256 #define G_RDP_TEXRECT_CHECK ((-1*G_TEXRECTFLIP)& 0xff) 260 #define GDMACMD(x) (x) 261 #define GIMMCMD(x) (G_IMMFIRST-(x)) 262 #define GRDPCMD(x) (0xff-(x)) 264 #define G_DMACMDSIZ 128 265 #define G_IMMCMDSIZ 64 266 #define G_RDPCMDSIZ 64 271 #define G_TEXTURE_IMAGE_FRAC 2 272 #define G_TEXTURE_SCALE_FRAC 16 273 #define G_SCALE_FRAC 8 274 #define G_ROTATE_FRAC 16 289 #define G_MAXFBZ 0x3fff 291 #define GPACK_RGBA5551(r, g, b, a) ((((r)<<8) & 0xf800) | \ 292 (((g)<<3) & 0x7c0) | \ 293 (((b)>>2) & 0x3e) | ((a) & 0x1)) 294 #define GPACK_ZDZ(z, dz) ((z) << 2 | (dz)) 300 # define G_MTX_MODELVIEW 0x00 301 # define G_MTX_PROJECTION 0x04 302 # define G_MTX_MUL 0x00 303 # define G_MTX_LOAD 0x02 304 # define G_MTX_NOPUSH 0x00 305 # define G_MTX_PUSH 0x01 307 # define G_MTX_MODELVIEW 0x00 308 # define G_MTX_PROJECTION 0x01 309 # define G_MTX_MUL 0x00 310 # define G_MTX_LOAD 0x02 311 # define G_MTX_NOPUSH 0x00 312 # define G_MTX_PUSH 0x04 340 #define G_ZBUFFER 0x00000001 341 #define G_SHADE 0x00000004 344 # define G_TEXTURE_ENABLE 0x00000000 345 # define G_SHADING_SMOOTH 0x00200000 346 # define G_CULL_FRONT 0x00000200 347 # define G_CULL_BACK 0x00000400 348 # define G_CULL_BOTH 0x00000600 350 # define G_TEXTURE_ENABLE 0x00000002 351 # define G_SHADING_SMOOTH 0x00000200 352 # define G_CULL_FRONT 0x00001000 353 # define G_CULL_BACK 0x00002000 354 # define G_CULL_BOTH 0x00003000 356 #define G_FOG 0x00010000 357 #define G_LIGHTING 0x00020000 358 #define G_TEXTURE_GEN 0x00040000 359 #define G_TEXTURE_GEN_LINEAR 0x00080000 360 #define G_LOD 0x00100000 361 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 362 # define G_CLIPPING 0x00800000 364 # define G_CLIPPING 0x00000000 367 #ifdef _LANGUAGE_ASSEMBLY 368 #define G_FOG_H (G_FOG/0x10000) 369 #define G_LIGHTING_H (G_LIGHTING/0x10000) 370 #define G_TEXTURE_GEN_H (G_TEXTURE_GEN/0x10000) 371 #define G_TEXTURE_GEN_LINEAR_H (G_TEXTURE_GEN_LINEAR/0x10000) 372 #define G_LOD_H (G_LOD/0x10000) 373 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 374 # define G_CLIPPING_H (G_CLIPPING/0x10000) 379 #ifdef _LANGUAGE_ASSEMBLY 380 #define G_TX_LOADTILE 7 381 #define G_TX_RENDERTILE 0 383 #define G_TX_NOMIRROR 0 385 #define G_TX_MIRROR 0x1 386 #define G_TX_CLAMP 0x2 387 #define G_TX_NOMASK 0 394 #define G_IM_FMT_RGBA 0 395 #define G_IM_FMT_YUV 1 396 #define G_IM_FMT_CI 2 397 #define G_IM_FMT_IA 3 403 #define G_IM_SIZ_4b 0 404 #define G_IM_SIZ_8b 1 405 #define G_IM_SIZ_16b 2 406 #define G_IM_SIZ_32b 3 407 #define G_IM_SIZ_DD 5 409 #define G_IM_SIZ_4b_BYTES 0 410 #define G_IM_SIZ_4b_TILE_BYTES G_IM_SIZ_4b_BYTES 411 #define G_IM_SIZ_4b_LINE_BYTES G_IM_SIZ_4b_BYTES 413 #define G_IM_SIZ_8b_BYTES 1 414 #define G_IM_SIZ_8b_TILE_BYTES G_IM_SIZ_8b_BYTES 415 #define G_IM_SIZ_8b_LINE_BYTES G_IM_SIZ_8b_BYTES 417 #define G_IM_SIZ_16b_BYTES 2 418 #define G_IM_SIZ_16b_TILE_BYTES G_IM_SIZ_16b_BYTES 419 #define G_IM_SIZ_16b_LINE_BYTES G_IM_SIZ_16b_BYTES 421 #define G_IM_SIZ_32b_BYTES 4 422 #define G_IM_SIZ_32b_TILE_BYTES 2 423 #define G_IM_SIZ_32b_LINE_BYTES 2 425 #define G_IM_SIZ_4b_LOAD_BLOCK G_IM_SIZ_16b 426 #define G_IM_SIZ_8b_LOAD_BLOCK G_IM_SIZ_16b 427 #define G_IM_SIZ_16b_LOAD_BLOCK G_IM_SIZ_16b 428 #define G_IM_SIZ_32b_LOAD_BLOCK G_IM_SIZ_32b 430 #define G_IM_SIZ_4b_SHIFT 2 431 #define G_IM_SIZ_8b_SHIFT 1 432 #define G_IM_SIZ_16b_SHIFT 0 433 #define G_IM_SIZ_32b_SHIFT 0 435 #define G_IM_SIZ_4b_INCR 3 436 #define G_IM_SIZ_8b_INCR 1 437 #define G_IM_SIZ_16b_INCR 0 438 #define G_IM_SIZ_32b_INCR 0 444 #define G_CCMUX_COMBINED 0 445 #define G_CCMUX_TEXEL0 1 446 #define G_CCMUX_TEXEL1 2 447 #define G_CCMUX_PRIMITIVE 3 448 #define G_CCMUX_SHADE 4 449 #define G_CCMUX_ENVIRONMENT 5 450 #define G_CCMUX_CENTER 6 451 #define G_CCMUX_SCALE 6 452 #define G_CCMUX_COMBINED_ALPHA 7 453 #define G_CCMUX_TEXEL0_ALPHA 8 454 #define G_CCMUX_TEXEL1_ALPHA 9 455 #define G_CCMUX_PRIMITIVE_ALPHA 10 456 #define G_CCMUX_SHADE_ALPHA 11 457 #define G_CCMUX_ENV_ALPHA 12 458 #define G_CCMUX_LOD_FRACTION 13 459 #define G_CCMUX_PRIM_LOD_FRAC 14 460 #define G_CCMUX_NOISE 7 462 #define G_CCMUX_K5 15 467 #define G_ACMUX_COMBINED 0 468 #define G_ACMUX_TEXEL0 1 469 #define G_ACMUX_TEXEL1 2 470 #define G_ACMUX_PRIMITIVE 3 471 #define G_ACMUX_SHADE 4 472 #define G_ACMUX_ENVIRONMENT 5 473 #define G_ACMUX_LOD_FRACTION 0 474 #define G_ACMUX_PRIM_LOD_FRAC 6 479 #define G_CC_PRIMITIVE 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE 480 #define G_CC_SHADE 0, 0, 0, SHADE, 0, 0, 0, SHADE 481 #define G_CC_MODULATEI TEXEL0, 0, SHADE, 0, 0, 0, 0, SHADE 482 #define G_CC_MODULATEIA TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0 483 #define G_CC_MODULATEIDECALA TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0 484 #define G_CC_MODULATERGB G_CC_MODULATEI 485 #define G_CC_MODULATERGBA G_CC_MODULATEIA 486 #define G_CC_MODULATERGBDECALA G_CC_MODULATEIDECALA 487 #define G_CC_MODULATEI_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE 488 #define G_CC_MODULATEIA_PRIM TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0 489 #define G_CC_MODULATEIDECALA_PRIM TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0 490 #define G_CC_MODULATERGB_PRIM G_CC_MODULATEI_PRIM 491 #define G_CC_MODULATERGBA_PRIM G_CC_MODULATEIA_PRIM 492 #define G_CC_MODULATERGBDECALA_PRIM G_CC_MODULATEIDECALA_PRIM 493 #define G_CC_DECALRGB 0, 0, 0, TEXEL0, 0, 0, 0, SHADE 494 #define G_CC_DECALRGBA 0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0 495 #define G_CC_BLENDI ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE 496 #define G_CC_BLENDIA ENVIRONMENT, SHADE, TEXEL0, SHADE, TEXEL0, 0, SHADE, 0 497 #define G_CC_BLENDIDECALA ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 498 #define G_CC_BLENDRGBA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, SHADE 499 #define G_CC_BLENDRGBDECALA TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, TEXEL0 500 #define G_CC_ADDRGB 1, 0, TEXEL0, SHADE, 0, 0, 0, SHADE 501 #define G_CC_ADDRGBDECALA 1, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 502 #define G_CC_REFLECTRGB ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, SHADE 503 #define G_CC_REFLECTRGBDECALA ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0 504 #define G_CC_HILITERGB PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE 505 #define G_CC_HILITERGBA PRIMITIVE, SHADE, TEXEL0, SHADE, PRIMITIVE, SHADE, TEXEL0, SHADE 506 #define G_CC_HILITERGBDECALA PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0 507 #define G_CC_SHADEDECALA 0, 0, 0, SHADE, 0, 0, 0, TEXEL0 508 #define G_CC_BLENDPE PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0 509 #define G_CC_BLENDPEDECALA PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0 512 #define _G_CC_BLENDPE ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, SHADE, 0 513 #define _G_CC_BLENDPEDECALA ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0 514 #define _G_CC_TWOCOLORTEX PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE 516 #define _G_CC_SPARSEST PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0 517 #define G_CC_TEMPLERP TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0 520 #define G_CC_TRILERP TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0 521 #define G_CC_INTERFERENCE TEXEL0, 0, TEXEL1, 0, TEXEL0, 0, TEXEL1, 0 526 #define G_CC_1CYUV2RGB TEXEL0, K4, K5, TEXEL0, 0, 0, 0, SHADE 532 #define G_CC_YUV2RGB TEXEL1, K4, K5, TEXEL1, 0, 0, 0, 0 535 #define G_CC_PASS2 0, 0, 0, COMBINED, 0, 0, 0, COMBINED 536 #define G_CC_MODULATEI2 COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE 537 #define G_CC_MODULATEIA2 COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0 538 #define G_CC_MODULATERGB2 G_CC_MODULATEI2 539 #define G_CC_MODULATERGBA2 G_CC_MODULATEIA2 540 #define G_CC_MODULATEI_PRIM2 COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE 541 #define G_CC_MODULATEIA_PRIM2 COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0 542 #define G_CC_MODULATERGB_PRIM2 G_CC_MODULATEI_PRIM2 543 #define G_CC_MODULATERGBA_PRIM2 G_CC_MODULATEIA_PRIM2 544 #define G_CC_DECALRGB2 0, 0, 0, COMBINED, 0, 0, 0, SHADE 549 #define G_CC_BLENDI2 ENVIRONMENT, SHADE, COMBINED, SHADE, 0, 0, 0, SHADE 550 #define G_CC_BLENDIA2 ENVIRONMENT, SHADE, COMBINED, SHADE, COMBINED, 0, SHADE, 0 551 #define G_CC_CHROMA_KEY2 TEXEL0, CENTER, SCALE, 0, 0, 0, 0, 0 552 #define G_CC_HILITERGB2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, SHADE 553 #define G_CC_HILITERGBA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, ENVIRONMENT, COMBINED, TEXEL0, COMBINED 554 #define G_CC_HILITERGBDECALA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, TEXEL0 555 #define G_CC_HILITERGBPASSA2 ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, COMBINED 560 #define G_MDSFT_ALPHACOMPARE 0 561 #define G_MDSFT_ZSRCSEL 2 562 #define G_MDSFT_RENDERMODE 3 563 #define G_MDSFT_BLENDER 16 568 #define G_MDSFT_BLENDMASK 0 569 #define G_MDSFT_ALPHADITHER 4 570 #define G_MDSFT_RGBDITHER 6 572 #define G_MDSFT_COMBKEY 8 573 #define G_MDSFT_TEXTCONV 9 574 #define G_MDSFT_TEXTFILT 12 575 #define G_MDSFT_TEXTLUT 14 576 #define G_MDSFT_TEXTLOD 16 577 #define G_MDSFT_TEXTDETAIL 17 578 #define G_MDSFT_TEXTPERSP 19 579 #define G_MDSFT_CYCLETYPE 20 580 #define G_MDSFT_COLORDITHER 22 581 #define G_MDSFT_PIPELINE 23 584 #define G_PM_1PRIMITIVE (1 << G_MDSFT_PIPELINE) 585 #define G_PM_NPRIMITIVE (0 << G_MDSFT_PIPELINE) 588 #define G_CYC_1CYCLE (0 << G_MDSFT_CYCLETYPE) 589 #define G_CYC_2CYCLE (1 << G_MDSFT_CYCLETYPE) 590 #define G_CYC_COPY (2 << G_MDSFT_CYCLETYPE) 591 #define G_CYC_FILL (3 << G_MDSFT_CYCLETYPE) 594 #define G_TP_NONE (0 << G_MDSFT_TEXTPERSP) 595 #define G_TP_PERSP (1 << G_MDSFT_TEXTPERSP) 598 #define G_TD_CLAMP (0 << G_MDSFT_TEXTDETAIL) 599 #define G_TD_SHARPEN (1 << G_MDSFT_TEXTDETAIL) 600 #define G_TD_DETAIL (2 << G_MDSFT_TEXTDETAIL) 603 #define G_TL_TILE (0 << G_MDSFT_TEXTLOD) 604 #define G_TL_LOD (1 << G_MDSFT_TEXTLOD) 607 #define G_TT_NONE (0 << G_MDSFT_TEXTLUT) 608 #define G_TT_RGBA16 (2 << G_MDSFT_TEXTLUT) 609 #define G_TT_IA16 (3 << G_MDSFT_TEXTLUT) 612 #define G_TF_POINT (0 << G_MDSFT_TEXTFILT) 613 #define G_TF_AVERAGE (3 << G_MDSFT_TEXTFILT) 614 #define G_TF_BILERP (2 << G_MDSFT_TEXTFILT) 617 #define G_TC_CONV (0 << G_MDSFT_TEXTCONV) 618 #define G_TC_FILTCONV (5 << G_MDSFT_TEXTCONV) 619 #define G_TC_FILT (6 << G_MDSFT_TEXTCONV) 622 #define G_CK_NONE (0 << G_MDSFT_COMBKEY) 623 #define G_CK_KEY (1 << G_MDSFT_COMBKEY) 626 #define G_CD_MAGICSQ (0 << G_MDSFT_RGBDITHER) 627 #define G_CD_BAYER (1 << G_MDSFT_RGBDITHER) 628 #define G_CD_NOISE (2 << G_MDSFT_RGBDITHER) 630 #ifndef _HW_VERSION_1 631 #define G_CD_DISABLE (3 << G_MDSFT_RGBDITHER) 632 #define G_CD_ENABLE G_CD_NOISE 634 #define G_CD_ENABLE (1 << G_MDSFT_COLORDITHER) 635 #define G_CD_DISABLE (0 << G_MDSFT_COLORDITHER) 639 #define G_AD_PATTERN (0 << G_MDSFT_ALPHADITHER) 640 #define G_AD_NOTPATTERN (1 << G_MDSFT_ALPHADITHER) 641 #define G_AD_NOISE (2 << G_MDSFT_ALPHADITHER) 642 #define G_AD_DISABLE (3 << G_MDSFT_ALPHADITHER) 645 #define G_AC_NONE (0 << G_MDSFT_ALPHACOMPARE) 646 #define G_AC_THRESHOLD (1 << G_MDSFT_ALPHACOMPARE) 647 #define G_AC_DITHER (3 << G_MDSFT_ALPHACOMPARE) 650 #define G_ZS_PIXEL (0 << G_MDSFT_ZSRCSEL) 651 #define G_ZS_PRIM (1 << G_MDSFT_ZSRCSEL) 658 #define CLR_ON_CVG 0x80 659 #define CVG_DST_CLAMP 0 660 #define CVG_DST_WRAP 0x100 661 #define CVG_DST_FULL 0x200 662 #define CVG_DST_SAVE 0x300 664 #define ZMODE_INTER 0x400 665 #define ZMODE_XLU 0x800 666 #define ZMODE_DEC 0xc00 667 #define CVG_X_ALPHA 0x1000 668 #define ALPHA_CVG_SEL 0x2000 669 #define FORCE_BL 0x4000 670 #define TEX_EDGE 0x0000 672 #define G_BL_CLR_IN 0 673 #define G_BL_CLR_MEM 1 674 #define G_BL_CLR_BL 2 675 #define G_BL_CLR_FOG 3 680 #define G_BL_A_SHADE 2 684 #define GBL_c1(m1a, m1b, m2a, m2b) \ 685 (m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18 686 #define GBL_c2(m1a, m1b, m2a, m2b) \ 687 (m1a) << 28 | (m1b) << 24 | (m2a) << 20 | (m2b) << 16 689 #define RM_AA_ZB_OPA_SURF(clk) \ 690 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 691 ZMODE_OPA | ALPHA_CVG_SEL | \ 692 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 694 #define RM_RA_ZB_OPA_SURF(clk) \ 695 AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | \ 696 ZMODE_OPA | ALPHA_CVG_SEL | \ 697 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 699 #define RM_AA_ZB_XLU_SURF(clk) \ 700 AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ 701 FORCE_BL | ZMODE_XLU | \ 702 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 704 #define RM_AA_ZB_OPA_DECAL(clk) \ 705 AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ALPHA_CVG_SEL | \ 707 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 709 #define RM_RA_ZB_OPA_DECAL(clk) \ 710 AA_EN | Z_CMP | CVG_DST_WRAP | ALPHA_CVG_SEL | \ 712 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 714 #define RM_AA_ZB_XLU_DECAL(clk) \ 715 AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ 716 FORCE_BL | ZMODE_DEC | \ 717 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 719 #define RM_AA_ZB_OPA_INTER(clk) \ 720 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 721 ALPHA_CVG_SEL | ZMODE_INTER | \ 722 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 724 #define RM_RA_ZB_OPA_INTER(clk) \ 725 AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | \ 726 ALPHA_CVG_SEL | ZMODE_INTER | \ 727 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 729 #define RM_AA_ZB_XLU_INTER(clk) \ 730 AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | \ 731 FORCE_BL | ZMODE_INTER | \ 732 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 734 #define RM_AA_ZB_XLU_LINE(clk) \ 735 AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | \ 736 ALPHA_CVG_SEL | FORCE_BL | ZMODE_XLU | \ 737 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 739 #define RM_AA_ZB_DEC_LINE(clk) \ 740 AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | CVG_X_ALPHA | \ 741 ALPHA_CVG_SEL | FORCE_BL | ZMODE_DEC | \ 742 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 744 #define RM_AA_ZB_TEX_EDGE(clk) \ 745 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 746 CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \ 747 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 749 #define RM_AA_ZB_TEX_INTER(clk) \ 750 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 751 CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_INTER | TEX_EDGE | \ 752 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 754 #define RM_AA_ZB_SUB_SURF(clk) \ 755 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | \ 756 ZMODE_OPA | ALPHA_CVG_SEL | \ 757 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 759 #define RM_AA_ZB_PCL_SURF(clk) \ 760 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 761 ZMODE_OPA | G_AC_DITHER | \ 762 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 764 #define RM_AA_ZB_OPA_TERR(clk) \ 765 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 766 ZMODE_OPA | ALPHA_CVG_SEL | \ 767 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 769 #define RM_AA_ZB_TEX_TERR(clk) \ 770 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ 771 CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \ 772 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 774 #define RM_AA_ZB_SUB_TERR(clk) \ 775 AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | \ 776 ZMODE_OPA | ALPHA_CVG_SEL | \ 777 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 780 #define RM_AA_OPA_SURF(clk) \ 781 AA_EN | IM_RD | CVG_DST_CLAMP | \ 782 ZMODE_OPA | ALPHA_CVG_SEL | \ 783 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 785 #define RM_RA_OPA_SURF(clk) \ 786 AA_EN | CVG_DST_CLAMP | \ 787 ZMODE_OPA | ALPHA_CVG_SEL | \ 788 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 790 #define RM_AA_XLU_SURF(clk) \ 791 AA_EN | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL | \ 793 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 795 #define RM_AA_XLU_LINE(clk) \ 796 AA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA | \ 797 ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | \ 798 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 800 #define RM_AA_DEC_LINE(clk) \ 801 AA_EN | IM_RD | CVG_DST_FULL | CVG_X_ALPHA | \ 802 ALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA | \ 803 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 805 #define RM_AA_TEX_EDGE(clk) \ 806 AA_EN | IM_RD | CVG_DST_CLAMP | \ 807 CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \ 808 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 810 #define RM_AA_SUB_SURF(clk) \ 811 AA_EN | IM_RD | CVG_DST_FULL | \ 812 ZMODE_OPA | ALPHA_CVG_SEL | \ 813 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 815 #define RM_AA_PCL_SURF(clk) \ 816 AA_EN | IM_RD | CVG_DST_CLAMP | \ 817 ZMODE_OPA | G_AC_DITHER | \ 818 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 820 #define RM_AA_OPA_TERR(clk) \ 821 AA_EN | IM_RD | CVG_DST_CLAMP | \ 822 ZMODE_OPA | ALPHA_CVG_SEL | \ 823 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 825 #define RM_AA_TEX_TERR(clk) \ 826 AA_EN | IM_RD | CVG_DST_CLAMP | \ 827 CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \ 828 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 830 #define RM_AA_SUB_TERR(clk) \ 831 AA_EN | IM_RD | CVG_DST_FULL | \ 832 ZMODE_OPA | ALPHA_CVG_SEL | \ 833 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 836 #define RM_ZB_OPA_SURF(clk) \ 837 Z_CMP | Z_UPD | CVG_DST_FULL | ALPHA_CVG_SEL | \ 839 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 841 #define RM_ZB_XLU_SURF(clk) \ 842 Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_XLU | \ 843 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 845 #define RM_ZB_OPA_DECAL(clk) \ 846 Z_CMP | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_DEC | \ 847 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) 849 #define RM_ZB_XLU_DECAL(clk) \ 850 Z_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_DEC | \ 851 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 853 #define RM_ZB_CLD_SURF(clk) \ 854 Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_XLU | \ 855 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 857 #define RM_ZB_OVL_SURF(clk) \ 858 Z_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_DEC | \ 859 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 861 #define RM_ZB_PCL_SURF(clk) \ 862 Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | \ 864 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 867 #define RM_OPA_SURF(clk) \ 868 CVG_DST_CLAMP | FORCE_BL | ZMODE_OPA | \ 869 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 871 #define RM_XLU_SURF(clk) \ 872 IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_OPA | \ 873 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 875 #define RM_TEX_EDGE(clk) \ 876 CVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL |\ 877 ZMODE_OPA | TEX_EDGE | AA_EN | \ 878 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 880 #define RM_CLD_SURF(clk) \ 881 IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | \ 882 GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) 884 #define RM_PCL_SURF(clk) \ 885 CVG_DST_FULL | FORCE_BL | ZMODE_OPA | \ 887 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 889 #define RM_ADD(clk) \ 890 IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA | \ 891 GBL_c##clk(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1) 893 #define RM_NOOP(clk) \ 894 GBL_c##clk(0, 0, 0, 0) 896 #define RM_VISCVG(clk) \ 898 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) 901 #define RM_OPA_CI(clk) \ 902 CVG_DST_CLAMP | ZMODE_OPA | \ 903 GBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 907 #define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1) 908 #define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2) 909 #define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1) 910 #define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2) 911 #define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1) 912 #define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2) 913 #define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1) 914 #define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2) 915 #define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1) 916 #define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2) 917 #define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1) 918 #define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2) 919 #define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1) 920 #define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2) 921 #define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1) 922 #define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2) 923 #define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1) 924 #define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2) 925 #define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1) 926 #define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2) 927 #define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1) 928 #define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2) 929 #define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1) 930 #define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2) 931 #define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1) 932 #define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2) 933 #define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1) 934 #define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2) 935 #define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1) 936 #define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2) 938 #define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1) 939 #define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2) 940 #define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1) 941 #define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2) 942 #define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1) 943 #define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2) 945 #define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1) 946 #define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2) 947 #define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1) 948 #define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2) 949 #define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1) 950 #define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2) 951 #define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1) 952 #define G_RM_AA_DEC_LINE2 RM_AA_DEC_LINE(2) 953 #define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1) 954 #define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2) 955 #define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1) 956 #define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2) 957 #define G_RM_AA_PCL_SURF RM_AA_PCL_SURF(1) 958 #define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2) 959 #define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1) 960 #define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2) 961 #define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1) 962 #define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2) 963 #define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1) 964 #define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2) 966 #define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1) 967 #define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2) 969 #define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1) 970 #define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2) 971 #define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1) 972 #define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2) 973 #define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1) 974 #define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2) 975 #define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1) 976 #define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2) 977 #define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1) 978 #define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2) 979 #define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1) 980 #define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2) 981 #define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1) 982 #define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2) 984 #define G_RM_OPA_SURF RM_OPA_SURF(1) 985 #define G_RM_OPA_SURF2 RM_OPA_SURF(2) 986 #define G_RM_XLU_SURF RM_XLU_SURF(1) 987 #define G_RM_XLU_SURF2 RM_XLU_SURF(2) 988 #define G_RM_CLD_SURF RM_CLD_SURF(1) 989 #define G_RM_CLD_SURF2 RM_CLD_SURF(2) 990 #define G_RM_TEX_EDGE RM_TEX_EDGE(1) 991 #define G_RM_TEX_EDGE2 RM_TEX_EDGE(2) 992 #define G_RM_PCL_SURF RM_PCL_SURF(1) 993 #define G_RM_PCL_SURF2 RM_PCL_SURF(2) 994 #define G_RM_ADD RM_ADD(1) 995 #define G_RM_ADD2 RM_ADD(2) 996 #define G_RM_NOOP RM_NOOP(1) 997 #define G_RM_NOOP2 RM_NOOP(2) 998 #define G_RM_VISCVG RM_VISCVG(1) 999 #define G_RM_VISCVG2 RM_VISCVG(2) 1000 #define G_RM_OPA_CI RM_OPA_CI(1) 1001 #define G_RM_OPA_CI2 RM_OPA_CI(2) 1004 #define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA) 1005 #define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA) 1006 #define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) 1021 #define G_SC_NON_INTERLACE 0 1022 #define G_SC_ODD_INTERLACE 3 1023 #define G_SC_EVEN_INTERLACE 2 1026 #define G_DL_PUSH 0x00 1027 #define G_DL_NOPUSH 0x01 1032 #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) 1072 unsigned short flag;
1074 unsigned char cn[4];
1082 unsigned short flag;
1091 long long int force_structure_alignment;
1099 void *SourceImagePointer;
1102 short SubImageWidth;
1103 short SubImageHeight;
1104 char SourceImageType;
1105 char SourceImageBitSize;
1106 short SourceImageOffsetS;
1107 short SourceImageOffsetT;
1119 long long int force_structure_allignment[3];
1135 typedef long Mtx_t[4][4];
1139 long long int force_structure_alignment;
1163 #define G_MAXZ 0x03ff 1184 long long int force_structure_alignment;
1197 # define G_MV_MMTX 2 1198 # define G_MV_PMTX 6 1199 # define G_MV_VIEWPORT 8 1200 # define G_MV_LIGHT 10 1201 # define G_MV_POINT 12 1202 # define G_MV_MATRIX 14 1203 # define G_MVO_LOOKATX (0*24) 1204 # define G_MVO_LOOKATY (1*24) 1205 # define G_MVO_L0 (2*24) 1206 # define G_MVO_L1 (3*24) 1207 # define G_MVO_L2 (4*24) 1208 # define G_MVO_L3 (5*24) 1209 # define G_MVO_L4 (6*24) 1210 # define G_MVO_L5 (7*24) 1211 # define G_MVO_L6 (8*24) 1212 # define G_MVO_L7 (9*24) 1214 # define G_MV_VIEWPORT 0x80 1215 # define G_MV_LOOKATY 0x82 1216 # define G_MV_LOOKATX 0x84 1217 # define G_MV_L0 0x86 1218 # define G_MV_L1 0x88 1219 # define G_MV_L2 0x8a 1220 # define G_MV_L3 0x8c 1221 # define G_MV_L4 0x8e 1222 # define G_MV_L5 0x90 1223 # define G_MV_L6 0x92 1224 # define G_MV_L7 0x94 1225 # define G_MV_TXTATT 0x96 1226 # define G_MV_MATRIX_1 0x9e 1227 # define G_MV_MATRIX_2 0x98 1228 # define G_MV_MATRIX_3 0x9a 1229 # define G_MV_MATRIX_4 0x9c 1240 #define G_MW_MATRIX 0x00 1241 #define G_MW_NUMLIGHT 0x02 1242 #define G_MW_CLIP 0x04 1243 #define G_MW_SEGMENT 0x06 1244 #define G_MW_FOG 0x08 1245 #define G_MW_LIGHTCOL 0x0a 1247 # define G_MW_FORCEMTX 0x0c 1249 # define G_MW_POINTS 0x0c 1251 #define G_MW_PERSPNORM 0x0e 1256 #define G_MWO_NUMLIGHT 0x00 1257 #define G_MWO_CLIP_RNX 0x04 1258 #define G_MWO_CLIP_RNY 0x0c 1259 #define G_MWO_CLIP_RPX 0x14 1260 #define G_MWO_CLIP_RPY 0x1c 1261 #define G_MWO_SEGMENT_0 0x00 1262 #define G_MWO_SEGMENT_1 0x01 1263 #define G_MWO_SEGMENT_2 0x02 1264 #define G_MWO_SEGMENT_3 0x03 1265 #define G_MWO_SEGMENT_4 0x04 1266 #define G_MWO_SEGMENT_5 0x05 1267 #define G_MWO_SEGMENT_6 0x06 1268 #define G_MWO_SEGMENT_7 0x07 1269 #define G_MWO_SEGMENT_8 0x08 1270 #define G_MWO_SEGMENT_9 0x09 1271 #define G_MWO_SEGMENT_A 0x0a 1272 #define G_MWO_SEGMENT_B 0x0b 1273 #define G_MWO_SEGMENT_C 0x0c 1274 #define G_MWO_SEGMENT_D 0x0d 1275 #define G_MWO_SEGMENT_E 0x0e 1276 #define G_MWO_SEGMENT_F 0x0f 1277 #define G_MWO_FOG 0x00 1278 #define G_MWO_aLIGHT_1 0x00 1279 #define G_MWO_bLIGHT_1 0x04 1281 #define G_MWO_aLIGHT_2 0x18 1282 #define G_MWO_bLIGHT_2 0x1c 1283 #define G_MWO_aLIGHT_3 0x30 1284 #define G_MWO_bLIGHT_3 0x34 1285 #define G_MWO_aLIGHT_4 0x48 1286 #define G_MWO_bLIGHT_4 0x4c 1287 #define G_MWO_aLIGHT_5 0x60 1288 #define G_MWO_bLIGHT_5 0x64 1289 #define G_MWO_aLIGHT_6 0x78 1290 #define G_MWO_bLIGHT_6 0x7c 1291 #define G_MWO_aLIGHT_7 0x90 1292 #define G_MWO_bLIGHT_7 0x94 1293 #define G_MWO_aLIGHT_8 0xa8 1294 #define G_MWO_bLIGHT_8 0xac 1296 #define G_MWO_aLIGHT_2 0x20 1297 #define G_MWO_bLIGHT_2 0x24 1298 #define G_MWO_aLIGHT_3 0x40 1299 #define G_MWO_bLIGHT_3 0x44 1300 #define G_MWO_aLIGHT_4 0x60 1301 #define G_MWO_bLIGHT_4 0x64 1302 #define G_MWO_aLIGHT_5 0x80 1303 #define G_MWO_bLIGHT_5 0x84 1304 #define G_MWO_aLIGHT_6 0xa0 1305 #define G_MWO_bLIGHT_6 0xa4 1306 #define G_MWO_aLIGHT_7 0xc0 1307 #define G_MWO_bLIGHT_7 0xc4 1308 #define G_MWO_aLIGHT_8 0xe0 1309 #define G_MWO_bLIGHT_8 0xe4 1311 #define G_MWO_MATRIX_XX_XY_I 0x00 1312 #define G_MWO_MATRIX_XZ_XW_I 0x04 1313 #define G_MWO_MATRIX_YX_YY_I 0x08 1314 #define G_MWO_MATRIX_YZ_YW_I 0x0c 1315 #define G_MWO_MATRIX_ZX_ZY_I 0x10 1316 #define G_MWO_MATRIX_ZZ_ZW_I 0x14 1317 #define G_MWO_MATRIX_WX_WY_I 0x18 1318 #define G_MWO_MATRIX_WZ_WW_I 0x1c 1319 #define G_MWO_MATRIX_XX_XY_F 0x20 1320 #define G_MWO_MATRIX_XZ_XW_F 0x24 1321 #define G_MWO_MATRIX_YX_YY_F 0x28 1322 #define G_MWO_MATRIX_YZ_YW_F 0x2c 1323 #define G_MWO_MATRIX_ZX_ZY_F 0x30 1324 #define G_MWO_MATRIX_ZZ_ZW_F 0x34 1325 #define G_MWO_MATRIX_WX_WY_F 0x38 1326 #define G_MWO_MATRIX_WZ_WW_F 0x3c 1327 #define G_MWO_POINT_RGBA 0x10 1328 #define G_MWO_POINT_ST 0x14 1329 #define G_MWO_POINT_XYSCREEN 0x18 1330 #define G_MWO_POINT_ZSCREEN 0x1c 1343 unsigned char col[3];
1345 unsigned char colc[3];
1352 unsigned char col[3];
1354 unsigned char colc[3];
1364 long long int force_structure_alignment[2];
1369 long long int force_structure_alignment[1];
1423 long int force_structure_alignment[4];
1426 #define gdSPDefLights0(ar,ag,ab) \ 1427 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1428 {{{ { 0, 0, 0},0,{ 0, 0, 0},0,{ 0, 0, 0},0}}} } 1429 #define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1) \ 1430 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1431 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} } 1432 #define gdSPDefLights2(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2) \ 1433 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1434 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1435 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}} } 1436 #define gdSPDefLights3(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3) \ 1437 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1438 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1439 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ 1440 {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}} } 1441 #define gdSPDefLights4(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4) \ 1442 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1443 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1444 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ 1445 {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ 1446 {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}} } 1447 #define gdSPDefLights5(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5) \ 1448 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1449 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1450 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ 1451 {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ 1452 {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ 1453 {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}} } 1456 #define gdSPDefLights6(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6) \ 1457 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1458 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1459 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ 1460 {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ 1461 {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ 1462 {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, \ 1463 {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}} } 1466 #define gdSPDefLights7(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6,r7,g7,b7,x7,y7,z7) \ 1467 { {{ {ar,ag,ab},0,{ar,ag,ab},0}}, \ 1468 {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}, \ 1469 {{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}, \ 1470 {{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}, \ 1471 {{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}, \ 1472 {{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}, \ 1473 {{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}, \ 1474 {{ {r7,g7,b7},0,{r7,g7,b7},0,{x7,y7,z7},0}}} } 1477 #define gdSPDefLookAt(rightx,righty,rightz,upx,upy,upz) \ 1478 { {{ {{0,0,0},0,{0,0,0},0,{rightx,righty,rightz},0}}, \ 1479 { {{0,0x80,0},0,{0,0x80,0},0,{upx,upy,upz},0}}} } 1487 unsigned int len:16;
1504 unsigned char param:8;
1530 unsigned int data:32;
1538 unsigned int data:32;
1543 unsigned char lodscale;
1578 unsigned int muxs0:24;
1579 unsigned int muxs1:32;
1585 unsigned char prim_min_level;
1586 unsigned char prim_level;
1587 unsigned long color;
1607 unsigned int pad0:1;
1608 unsigned int line:9;
1609 unsigned int tmem:9;
1610 unsigned int pad1:5;
1611 unsigned int tile:3;
1612 unsigned int palette:4;
1615 unsigned int maskt:4;
1616 unsigned int shiftt:4;
1619 unsigned int masks:4;
1620 unsigned int shifts:4;
1628 unsigned int tile:3;
1633 typedef Gloadtile Gloadblock;
1635 typedef Gloadtile Gsettilesize;
1637 typedef Gloadtile Gloadtlut;
1643 unsigned int pad1:5;
1644 unsigned int tile:3;
1649 unsigned int dsdx:16;
1650 unsigned int dtdy:16;
1653 #define MakeTexRect(xh,yh,flip,tile,xl,yl,s,t,dsdx,dtdy) \ 1654 G_TEXRECT, xh, yh, 0, flip, 0, tile, xl, yl, s, t, dsdx, dtdy 1685 GsetothermodeH setothermodeH;
1686 GsetothermodeL setothermodeL;
1688 Gperspnorm perspnorm;
1690 Gsetcombine setcombine;
1695 Gsettilesize settilesize;
1697 long long int force_structure_alignment;
1707 #define gDma0p(pkt, c, s, l) \ 1709 Gfx *_g = (Gfx *)(pkt); \ 1711 _g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); \ 1712 _g->words.w1 = (unsigned int)(s); \ 1715 #define gsDma0p(c, s, l) \ 1717 _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (unsigned int)(s) \ 1720 #define gDma1p(pkt, c, s, l, p) \ 1722 Gfx *_g = (Gfx *)(pkt); \ 1724 _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \ 1725 _SHIFTL((l), 0, 16)); \ 1726 _g->words.w1 = (unsigned int)(s); \ 1729 #define gsDma1p(c, s, l, p) \ 1731 (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \ 1732 _SHIFTL((l), 0, 16)), \ 1736 #define gDma2p(pkt, c, adrs, len, idx, ofs) \ 1738 Gfx *_g = (Gfx *)(pkt); \ 1739 _g->words.w0 = (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \ 1740 _SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)); \ 1741 _g->words.w1 = (unsigned int)(adrs); \ 1743 #define gsDma2p(c, adrs, len, idx, ofs) \ 1745 (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \ 1746 _SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)), \ 1747 (unsigned int)(adrs) \ 1750 #define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0) 1751 #define gsSPNoOp() gsDma0p(G_SPNOOP, 0, 0) 1754 # define gSPMatrix(pkt, m, p) \ 1755 gDma2p((pkt),G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0) 1756 # define gsSPMatrix(m, p) \ 1757 gsDma2p( G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0) 1759 # define gSPMatrix(pkt, m, p) gDma1p(pkt, G_MTX, m, sizeof(Mtx), p) 1760 # define gsSPMatrix(m, p) gsDma1p(G_MTX, m, sizeof(Mtx), p) 1763 #if defined(F3DEX_GBI_2) 1773 # define gSPVertex(pkt, v, n, v0) \ 1775 Gfx *_g = (Gfx *)(pkt); \ 1777 _SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7); \ 1778 _g->words.w1 = (unsigned int)(v); \ 1780 # define gsSPVertex(v, n, v0) \ 1782 (_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7)), \ 1785 #elif (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 1795 # define gSPVertex(pkt, v, n, v0) \ 1796 gDma1p((pkt),G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2) 1797 # define gsSPVertex(v, n, v0) \ 1798 gsDma1p(G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2) 1800 # define gSPVertex(pkt, v, n, v0) \ 1801 gDma1p(pkt, G_VTX, v, sizeof(Vtx)*(n),((n)-1)<<4|(v0)) 1802 # define gsSPVertex(v, n, v0) \ 1803 gsDma1p(G_VTX, v, sizeof(Vtx)*(n), ((n)-1)<<4|(v0)) 1808 # define gSPViewport(pkt, v) \ 1809 gDma2p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) 1810 # define gsSPViewport(v) \ 1811 gsDma2p( G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0) 1813 # define gSPViewport(pkt,v) \ 1814 gDma1p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) 1815 # define gsSPViewport(v) \ 1816 gsDma1p( G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT) 1819 #define gSPDisplayList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_PUSH) 1820 #define gsSPDisplayList( dl) gsDma1p( G_DL,dl,0,G_DL_PUSH) 1822 #define gSPBranchList(pkt,dl) gDma1p(pkt,G_DL,dl,0,G_DL_NOPUSH) 1823 #define gsSPBranchList( dl) gsDma1p( G_DL,dl,0,G_DL_NOPUSH) 1825 #define gSPSprite2DBase(pkt, s) gDma1p(pkt, G_SPRITE2D_BASE, s, sizeof(uSprite), 0) 1826 #define gsSPSprite2DBase(s) gsDma1p(G_SPRITE2D_BASE, s, sizeof(uSprite), 0) 1831 #define gImmp0(pkt, c) \ 1833 Gfx *_g = (Gfx *)(pkt); \ 1835 _g->words.w0 = _SHIFTL((c), 24, 8); \ 1838 #define gsImmp0(c) \ 1840 _SHIFTL((c), 24, 8) \ 1843 #define gImmp1(pkt, c, p0) \ 1845 Gfx *_g = (Gfx *)(pkt); \ 1847 _g->words.w0 = _SHIFTL((c), 24, 8); \ 1848 _g->words.w1 = (unsigned int)(p0); \ 1851 #define gsImmp1(c, p0) \ 1853 _SHIFTL((c), 24, 8), (unsigned int)(p0) \ 1856 #define gImmp2(pkt, c, p0, p1) \ 1858 Gfx *_g = (Gfx *)(pkt); \ 1860 _g->words.w0 = _SHIFTL((c), 24, 8); \ 1861 _g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8); \ 1864 #define gsImmp2(c, p0, p1) \ 1866 _SHIFTL((c), 24, 8), _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8)\ 1869 #define gImmp3(pkt, c, p0, p1, p2) \ 1871 Gfx *_g = (Gfx *)(pkt); \ 1873 _g->words.w0 = _SHIFTL((c), 24, 8); \ 1874 _g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | \ 1875 _SHIFTL((p2), 0, 8)); \ 1878 #define gsImmp3(c, p0, p1, p2) \ 1880 _SHIFTL((c), 24, 8), (_SHIFTL((p0), 16, 16) | \ 1881 _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8))\ 1884 #define gImmp21(pkt, c, p0, p1, dat) \ 1886 Gfx *_g = (Gfx *)(pkt); \ 1888 _g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | \ 1889 _SHIFTL((p1), 0, 8)); \ 1890 _g->words.w1 = (unsigned int) (dat); \ 1893 #define gsImmp21(c, p0, p1, dat) \ 1895 _SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8),\ 1896 (unsigned int) (dat) \ 1900 #define gMoveWd(pkt, index, offset, data) \ 1901 gDma1p((pkt), G_MOVEWORD, data, offset, index) 1902 #define gsMoveWd( index, offset, data) \ 1903 gsDma1p( G_MOVEWORD, data, offset, index) 1905 #define gMoveWd(pkt, index, offset, data) \ 1906 gImmp21((pkt), G_MOVEWORD, offset, index, data) 1907 #define gsMoveWd( index, offset, data) \ 1908 gsImmp21( G_MOVEWORD, offset, index, data) 1913 #define gSPSprite2DScaleFlip(pkt, sx, sy, fx, fy) \ 1915 Gfx *_g = (Gfx *)(pkt); \ 1917 _g->words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | \ 1918 _SHIFTL((fx), 8, 8) | \ 1919 _SHIFTL((fy), 0, 8)); \ 1920 _g->words.w1 = (_SHIFTL((sx), 16, 16) | \ 1921 _SHIFTL((sy), 0, 16)); \ 1924 #define gsSPSprite2DScaleFlip(sx, sy, fx, fy) \ 1926 (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | \ 1927 _SHIFTL((fx), 8, 8) | \ 1928 _SHIFTL((fy), 0, 8)), \ 1929 (_SHIFTL((sx), 16, 16) | \ 1930 _SHIFTL((sy), 0, 16)) \ 1933 #define gSPSprite2DDraw(pkt, px, py) \ 1935 Gfx *_g = (Gfx *)(pkt); \ 1937 _g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)); \ 1938 _g->words.w1 = (_SHIFTL((px), 16, 16) | \ 1939 _SHIFTL((py), 0, 16)); \ 1942 #define gsSPSprite2DDraw(px, py) \ 1944 (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)), \ 1945 (_SHIFTL((px), 16, 16) | \ 1946 _SHIFTL((py), 0, 16)) \ 1954 #if (defined(F3DLP_GBI)||defined(F3DEX_GBI)) 1955 # define __gsSP1Triangle_w1(v0, v1, v2) \ 1956 (_SHIFTL((v0)*2,16,8)|_SHIFTL((v1)*2,8,8)|_SHIFTL((v2)*2,0,8)) 1957 # define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ 1958 (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): \ 1959 ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v0): \ 1960 __gsSP1Triangle_w1(v2, v0, v1)) 1961 # define __gsSPLine3D_w1(v0, v1, wd) \ 1962 (_SHIFTL((v0)*2,16,8)|_SHIFT((v1)*2,8,8)|_SHIFT((wd),0,8)) 1963 # define __gsSPLine3D_w1f(v0, v1, wd, flag) \ 1964 (((flag) == 0) ? __gsSPLine3D_w1(v0, v1, wd): \ 1965 __gsSPLine3D_w1(v1, v0, wd)) 1966 # define __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag) \ 1967 (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2): \ 1968 ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v3): \ 1969 ((flag) == 2) ? __gsSP1Triangle_w1(v2, v3, v0): \ 1970 __gsSP1Triangle_w1(v3, v0, v1)) 1971 # define __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ 1972 (((flag) == 0) ? __gsSP1Triangle_w1(v0, v2, v3): \ 1973 ((flag) == 1) ? __gsSP1Triangle_w1(v1, v3, v0): \ 1974 ((flag) == 2) ? __gsSP1Triangle_w1(v2, v0, v1): \ 1975 __gsSP1Triangle_w1(v3, v1, v2)) 1977 # define __gsSP1Triangle_w1f(v0, v1, v2, flag) \ 1978 (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)| \ 1979 _SHIFTL((v1)*10, 8,8)|_SHIFTL((v2)*10, 0,8)) 1980 # define __gsSPLine3D_w1f(v0, v1, wd, flag) \ 1981 (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)| \ 1982 _SHIFTL((v1)*10, 8,8)|_SHIFTL((wd), 0,8)) 1989 #define gSP1Triangle(pkt, v0, v1, v2, flag) \ 1991 Gfx *_g = (Gfx *)(pkt); \ 1993 _g->words.w0 = _SHIFTL(G_TRI1, 24, 8)| \ 1994 __gsSP1Triangle_w1f(v0, v1, v2, flag); \ 1997 #define gsSP1Triangle(v0, v1, v2, flag) \ 1999 _SHIFTL(G_TRI1, 24, 8)|__gsSP1Triangle_w1f(v0, v1, v2, flag), \ 2006 #define gSPLine3D(pkt, v0, v1, flag) \ 2008 Gfx *_g = (Gfx *)(pkt); \ 2010 _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \ 2011 __gsSPLine3D_w1f(v0, v1, 0, flag); \ 2014 #define gsSPLine3D(v0, v1, flag) \ 2016 _SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, 0, flag), \ 2029 #define gSPLineW3D(pkt, v0, v1, wd, flag) \ 2031 Gfx *_g = (Gfx *)(pkt); \ 2033 _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \ 2034 __gsSPLine3D_w1f(v0, v1, wd, flag); \ 2037 #define gsSPLineW3D(v0, v1, wd, flag) \ 2039 _SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, wd, flag), \ 2046 #define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ 2048 Gfx *_g = (Gfx *)(pkt); \ 2050 _g->words.w0 = (_SHIFTL(G_QUAD, 24, 8)| \ 2051 __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ 2052 _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ 2055 #define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ 2057 (_SHIFTL(G_QUAD, 24, 8)| \ 2058 __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ 2059 __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ 2066 #define gSP1Triangle(pkt, v0, v1, v2, flag) \ 2068 Gfx *_g = (Gfx *)(pkt); \ 2070 _g->words.w0 = _SHIFTL(G_TRI1, 24, 8); \ 2071 _g->words.w1 = __gsSP1Triangle_w1f(v0, v1, v2, flag); \ 2073 #define gsSP1Triangle(v0, v1, v2, flag) \ 2075 _SHIFTL(G_TRI1, 24, 8), \ 2076 __gsSP1Triangle_w1f(v0, v1, v2, flag) \ 2082 #define gSPLine3D(pkt, v0, v1, flag) \ 2084 Gfx *_g = (Gfx *)(pkt); \ 2086 _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ 2087 _g->words.w1 = __gsSPLine3D_w1f(v0, v1, 0, flag); \ 2089 #define gsSPLine3D(v0, v1, flag) \ 2091 _SHIFTL(G_LINE3D, 24, 8), \ 2092 __gsSPLine3D_w1f(v0, v1, 0, flag) \ 2104 #define gSPLineW3D(pkt, v0, v1, wd, flag) \ 2106 Gfx *_g = (Gfx *)(pkt); \ 2108 _g->words.w0 = _SHIFTL(G_LINE3D, 24, 8); \ 2109 _g->words.w1 = __gsSPLine3D_w1f(v0, v1, wd, flag); \ 2111 #define gsSPLineW3D(v0, v1, wd, flag) \ 2113 _SHIFTL(G_LINE3D, 24, 8), \ 2114 __gsSPLine3D_w1f(v0, v1, wd, flag) \ 2120 #define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag) \ 2122 Gfx *_g = (Gfx *)(pkt); \ 2124 _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| \ 2125 __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)); \ 2126 _g->words.w1 = __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag); \ 2129 #define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ 2131 (_SHIFTL(G_TRI2, 24, 8)| \ 2132 __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)), \ 2133 __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag) \ 2137 #if (defined(F3DLP_GBI)||defined(F3DEX_GBI)) 2141 #define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1) \ 2143 Gfx *_g = (Gfx *)(pkt); \ 2145 _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)| \ 2146 __gsSP1Triangle_w1f(v00, v01, v02, flag0)); \ 2147 _g->words.w1 = __gsSP1Triangle_w1f(v10, v11, v12, flag1); \ 2150 #define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \ 2152 (_SHIFTL(G_TRI2, 24, 8)| \ 2153 __gsSP1Triangle_w1f(v00, v01, v02, flag0)), \ 2154 __gsSP1Triangle_w1f(v10, v11, v12, flag1) \ 2159 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 2160 #define gSPCullDisplayList(pkt,vstart,vend) \ 2162 Gfx *_g = (Gfx *)(pkt); \ 2164 _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \ 2165 _SHIFTL((vstart)*2, 0, 16); \ 2166 _g->words.w1 = _SHIFTL((vend)*2, 0, 16); \ 2169 #define gsSPCullDisplayList(vstart,vend) \ 2171 _SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart)*2, 0, 16), \ 2172 _SHIFTL((vend)*2, 0, 16) \ 2176 #define gSPCullDisplayList(pkt,vstart,vend) \ 2178 Gfx *_g = (Gfx *)(pkt); \ 2180 _g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \ 2181 ((0x0f & (vstart))*40); \ 2182 _g->words.w1 = (unsigned int)((0x0f & ((vend)+1))*40); \ 2185 #define gsSPCullDisplayList(vstart,vend) \ 2187 _SHIFTL(G_CULLDL, 24, 8) | ((0x0f & (vstart))*40), \ 2188 ((0x0f & ((vend)+1))*40) \ 2192 #define gSPSegment(pkt, segment, base) \ 2193 gMoveWd(pkt, G_MW_SEGMENT, (segment)*4, base) 2194 #define gsSPSegment(segment, base) \ 2195 gsMoveWd( G_MW_SEGMENT, (segment)*4, base) 2200 #define FR_NEG_FRUSTRATIO_1 0x00000001 2201 #define FR_POS_FRUSTRATIO_1 0x0000ffff 2202 #define FR_NEG_FRUSTRATIO_2 0x00000002 2203 #define FR_POS_FRUSTRATIO_2 0x0000fffe 2204 #define FR_NEG_FRUSTRATIO_3 0x00000003 2205 #define FR_POS_FRUSTRATIO_3 0x0000fffd 2206 #define FR_NEG_FRUSTRATIO_4 0x00000004 2207 #define FR_POS_FRUSTRATIO_4 0x0000fffc 2208 #define FR_NEG_FRUSTRATIO_5 0x00000005 2209 #define FR_POS_FRUSTRATIO_5 0x0000fffb 2210 #define FR_NEG_FRUSTRATIO_6 0x00000006 2211 #define FR_POS_FRUSTRATIO_6 0x0000fffa 2215 #define gSPClipRatio(pkt, r) \ 2217 gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r); \ 2218 gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r); \ 2219 gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r); \ 2220 gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r); \ 2223 #define gsSPClipRatio(r) \ 2224 gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r), \ 2225 gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r), \ 2226 gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r), \ 2227 gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r) 2237 #define gSPInsertMatrix(pkt, where, num) \ 2238 ERROR!! gSPInsertMatrix is no longer supported. 2239 #define gsSPInsertMatrix(where, num) \ 2240 ERROR!! gsSPInsertMatrix is no longer supported. 2242 #define gSPInsertMatrix(pkt, where, num) \ 2243 gMoveWd(pkt, G_MW_MATRIX, where, num) 2244 #define gsSPInsertMatrix(where, num) \ 2245 gsMoveWd(G_MW_MATRIX, where, num) 2254 #define gSPForceMatrix(pkt, mptr) \ 2255 { gDma2p((pkt),G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0); \ 2256 gMoveWd((pkt), G_MW_FORCEMTX,0,0x00010000); \ 2258 #define gsSPForceMatrix(mptr) \ 2259 gsDma2p(G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0), \ 2260 gsMoveWd(G_MW_FORCEMTX,0,0x00010000) 2263 #define gSPForceMatrix(pkt, mptr) \ 2265 gDma1p(pkt, G_MOVEMEM, mptr, 16, G_MV_MATRIX_1); \ 2266 gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2); \ 2267 gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3); \ 2268 gDma1p(pkt, G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4); \ 2270 #define gsSPForceMatrix(mptr) \ 2271 gsDma1p( G_MOVEMEM, mptr, 16, G_MV_MATRIX_1), \ 2272 gsDma1p( G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2), \ 2273 gsDma1p( G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3), \ 2274 gsDma1p( G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4) 2284 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 2285 # define gSPModifyVertex(pkt, vtx, where, val) \ 2287 Gfx *_g = (Gfx *)(pkt); \ 2288 _g->words.w0 = (_SHIFTL(G_MODIFYVTX,24,8)| \ 2289 _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16)); \ 2290 _g->words.w1 = (unsigned int)(val); \ 2292 # define gsSPModifyVertex(vtx, where, val) \ 2294 _SHIFTL(G_MODIFYVTX,24,8)| \ 2295 _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16), \ 2296 (unsigned int)(val) \ 2299 # define gSPModifyVertex(pkt, vtx, where, val) \ 2300 gMoveWd(pkt, G_MW_POINTS, (vtx)*40+(where), val) 2301 # define gsSPModifyVertex(vtx, where, val) \ 2302 gsMoveWd(G_MW_POINTS, (vtx)*40+(where), val) 2305 #if (defined(F3DEX_GBI)||defined(F3DLP_GBI)) 2317 #define G_BZ_PERSP 0 2318 #define G_BZ_ORTHO 1 2320 #define G_DEPTOZSrg(zval, near, far, flag, zmin, zmax) \ 2321 (((unsigned int)FTOFIX32(((flag) == G_BZ_PERSP ? \ 2322 (1.0f-(float)(near)/(float)(zval)) / \ 2323 (1.0f-(float)(near)/(float)(far )) : \ 2324 ((float)(zval) - (float)(near)) / \ 2325 ((float)(far ) - (float)(near))))) * \ 2326 (((int)((zmax) - (zmin)))&~1) + (int)FTOFIX32(zmin)) 2328 #define G_DEPTOZS(zval, near, far, flag) \ 2329 G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ) 2331 #define gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, zmin, zmax) \ 2333 Gfx *_g = (Gfx *)(pkt); \ 2334 _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ 2335 _g->words.w1 = (unsigned int)(dl); \ 2336 _g = (Gfx *)(pkt); \ 2337 _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \ 2338 _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \ 2339 _g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax); \ 2342 #define gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax) \ 2343 {{ _SHIFTL(G_RDPHALF_1,24,8), \ 2344 (unsigned int)(dl), }}, \ 2345 {{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\ 2346 G_DEPTOZSrg(zval, near, far, flag, zmin, zmax), }} 2348 #define gSPBranchLessZ(pkt, dl, vtx, zval, near, far, flag) \ 2349 gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, 0, G_MAXZ) 2350 #define gsSPBranchLessZ(dl, vtx, zval, near, far, flag) \ 2351 gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, 0, G_MAXZ) 2360 #define gSPBranchLessZraw(pkt, dl, vtx, zval) \ 2362 Gfx *_g = (Gfx *)(pkt); \ 2363 _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ 2364 _g->words.w1 = (unsigned int)(dl); \ 2365 _g = (Gfx *)(pkt); \ 2366 _g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \ 2367 _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \ 2368 _g->words.w1 = (unsigned int)(zval); \ 2371 #define gsSPBranchLessZraw(dl, vtx, zval) \ 2372 {{ _SHIFTL(G_RDPHALF_1,24,8), \ 2373 (unsigned int)(dl), }}, \ 2374 {{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\ 2375 (unsigned int)(zval), }} 2383 #define gSPLoadUcodeEx(pkt, uc_start, uc_dstart, uc_dsize) \ 2385 Gfx *_g = (Gfx *)(pkt); \ 2386 _g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \ 2387 _g->words.w1 = (unsigned int)(uc_dstart); \ 2388 _g = (Gfx *)(pkt); \ 2389 _g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)| \ 2390 _SHIFTL((int)(uc_dsize)-1,0,16)); \ 2391 _g->words.w1 = (unsigned int)(uc_start); \ 2394 #define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \ 2395 {{ _SHIFTL(G_RDPHALF_1,24,8), \ 2396 (unsigned int)(uc_dstart), }}, \ 2397 {{ _SHIFTL(G_LOAD_UCODE,24,8)| \ 2398 _SHIFTL((int)(uc_dsize)-1,0,16), \ 2399 (unsigned int)(uc_start), }} 2401 #define gSPLoadUcode(pkt, uc_start, uc_dstart) \ 2402 gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) 2403 #define gsSPLoadUcode(uc_start, uc_dstart) \ 2404 gsSPLoadUcodeEx((uc_start), (uc_dstart), SP_UCODE_DATA_SIZE) 2406 #define gSPLoadUcodeL(pkt, ucode) \ 2407 gSPLoadUcode((pkt), OS_K0_TO_PHYSICAL(&##ucode##TextStart), \ 2408 OS_K0_TO_PHYSICAL(&##ucode##DataStart)) 2409 #define gsSPLoadUcodeL(ucode) \ 2410 gsSPLoadUcode(OS_K0_TO_PHYSICAL(&##ucode##TextStart), \ 2411 OS_K0_TO_PHYSICAL(&##ucode##DataStart)) 2418 #define gSPDma_io(pkt, flag, dmem, dram, size) \ 2420 Gfx *_g = (Gfx *)(pkt); \ 2421 _g->words.w0 = _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \ 2422 _SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12); \ 2423 _g->words.w1 = (unsigned int)(dram); \ 2426 #define gsSPDma_io(flag, dmem, dram, size) \ 2428 _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \ 2429 _SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12), \ 2430 (unsigned int)(dram) \ 2433 #define gSPDmaRead(pkt,dmem,dram,size) gSPDma_io((pkt),0,(dmem),(dram),(size)) 2434 #define gsSPDmaRead(dmem,dram,size) gsSPDma_io(0,(dmem),(dram),(size)) 2435 #define gSPDmaWrite(pkt,dmem,dram,size) gSPDma_io((pkt),1,(dmem),(dram),(size)) 2436 #define gsSPDmaWrite(dmem,dram,size) gsSPDma_io(1,(dmem),(dram),(size)) 2443 # define NUML(n) ((n)*24) 2445 # define NUML(n) (((n)+1)*32 + 0x80000000) 2447 #define NUMLIGHTS_0 1 2448 #define NUMLIGHTS_1 1 2449 #define NUMLIGHTS_2 2 2450 #define NUMLIGHTS_3 3 2451 #define NUMLIGHTS_4 4 2452 #define NUMLIGHTS_5 5 2453 #define NUMLIGHTS_6 6 2454 #define NUMLIGHTS_7 7 2460 #define gSPNumLights(pkt, n) \ 2461 gMoveWd(pkt, G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) 2462 #define gsSPNumLights(n) \ 2463 gsMoveWd( G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) 2482 # define gSPLight(pkt, l, n) \ 2483 gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24) 2484 # define gsSPLight(l, n) \ 2485 gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24) 2487 # define gSPLight(pkt, l, n) \ 2488 gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) 2489 # define gsSPLight(l, n) \ 2490 gsDma1p( G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0) 2498 #define gSPLightColor(pkt, n, col) \ 2500 gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col); \ 2501 gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col); \ 2503 #define gsSPLightColor(n, col) \ 2504 gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col), \ 2505 gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col) 2509 #define gSPSetLights0(pkt,name) \ 2511 gSPNumLights(pkt,NUMLIGHTS_0); \ 2512 gSPLight(pkt,&name.l[0],1); \ 2513 gSPLight(pkt,&name.a,2); \ 2515 #define gsSPSetLights0(name) \ 2516 gsSPNumLights(NUMLIGHTS_0), \ 2517 gsSPLight(&name.l[0],1), \ 2518 gsSPLight(&name.a,2) 2520 #define gSPSetLights1(pkt,name) \ 2522 gSPNumLights(pkt,NUMLIGHTS_1); \ 2523 gSPLight(pkt,&name.l[0],1); \ 2524 gSPLight(pkt,&name.a,2); \ 2526 #define gsSPSetLights1(name) \ 2527 gsSPNumLights(NUMLIGHTS_1), \ 2528 gsSPLight(&name.l[0],1), \ 2529 gsSPLight(&name.a,2) 2531 #define gSPSetLights2(pkt,name) \ 2533 gSPNumLights(pkt,NUMLIGHTS_2); \ 2534 gSPLight(pkt,&name.l[0],1); \ 2535 gSPLight(pkt,&name.l[1],2); \ 2536 gSPLight(pkt,&name.a,3); \ 2538 #define gsSPSetLights2(name) \ 2539 gsSPNumLights(NUMLIGHTS_2), \ 2540 gsSPLight(&name.l[0],1), \ 2541 gsSPLight(&name.l[1],2), \ 2542 gsSPLight(&name.a,3) 2544 #define gSPSetLights3(pkt,name) \ 2546 gSPNumLights(pkt,NUMLIGHTS_3); \ 2547 gSPLight(pkt,&name.l[0],1); \ 2548 gSPLight(pkt,&name.l[1],2); \ 2549 gSPLight(pkt,&name.l[2],3); \ 2550 gSPLight(pkt,&name.a,4); \ 2552 #define gsSPSetLights3(name) \ 2553 gsSPNumLights(NUMLIGHTS_3), \ 2554 gsSPLight(&name.l[0],1), \ 2555 gsSPLight(&name.l[1],2), \ 2556 gsSPLight(&name.l[2],3), \ 2557 gsSPLight(&name.a,4) 2559 #define gSPSetLights4(pkt,name) \ 2561 gSPNumLights(pkt,NUMLIGHTS_4); \ 2562 gSPLight(pkt,&name.l[0],1); \ 2563 gSPLight(pkt,&name.l[1],2); \ 2564 gSPLight(pkt,&name.l[2],3); \ 2565 gSPLight(pkt,&name.l[3],4); \ 2566 gSPLight(pkt,&name.a,5); \ 2568 #define gsSPSetLights4(name) \ 2569 gsSPNumLights(NUMLIGHTS_4), \ 2570 gsSPLight(&name.l[0],1), \ 2571 gsSPLight(&name.l[1],2), \ 2572 gsSPLight(&name.l[2],3), \ 2573 gsSPLight(&name.l[3],4), \ 2574 gsSPLight(&name.a,5) 2576 #define gSPSetLights5(pkt,name) \ 2578 gSPNumLights(pkt,NUMLIGHTS_5); \ 2579 gSPLight(pkt,&name.l[0],1); \ 2580 gSPLight(pkt,&name.l[1],2); \ 2581 gSPLight(pkt,&name.l[2],3); \ 2582 gSPLight(pkt,&name.l[3],4); \ 2583 gSPLight(pkt,&name.l[4],5); \ 2584 gSPLight(pkt,&name.a,6); \ 2587 #define gsSPSetLights5(name) \ 2588 gsSPNumLights(NUMLIGHTS_5), \ 2589 gsSPLight(&name.l[0],1), \ 2590 gsSPLight(&name.l[1],2), \ 2591 gsSPLight(&name.l[2],3), \ 2592 gsSPLight(&name.l[3],4), \ 2593 gsSPLight(&name.l[4],5), \ 2594 gsSPLight(&name.a,6) 2596 #define gSPSetLights6(pkt,name) \ 2598 gSPNumLights(pkt,NUMLIGHTS_6); \ 2599 gSPLight(pkt,&name.l[0],1); \ 2600 gSPLight(pkt,&name.l[1],2); \ 2601 gSPLight(pkt,&name.l[2],3); \ 2602 gSPLight(pkt,&name.l[3],4); \ 2603 gSPLight(pkt,&name.l[4],5); \ 2604 gSPLight(pkt,&name.l[5],6); \ 2605 gSPLight(pkt,&name.a,7); \ 2608 #define gsSPSetLights6(name) \ 2609 gsSPNumLights(NUMLIGHTS_6), \ 2610 gsSPLight(&name.l[0],1), \ 2611 gsSPLight(&name.l[1],2), \ 2612 gsSPLight(&name.l[2],3), \ 2613 gsSPLight(&name.l[3],4), \ 2614 gsSPLight(&name.l[4],5), \ 2615 gsSPLight(&name.l[5],6), \ 2616 gsSPLight(&name.a,7) 2618 #define gSPSetLights7(pkt,name) \ 2620 gSPNumLights(pkt,NUMLIGHTS_7); \ 2621 gSPLight(pkt,&name.l[0],1); \ 2622 gSPLight(pkt,&name.l[1],2); \ 2623 gSPLight(pkt,&name.l[2],3); \ 2624 gSPLight(pkt,&name.l[3],4); \ 2625 gSPLight(pkt,&name.l[4],5); \ 2626 gSPLight(pkt,&name.l[5],6); \ 2627 gSPLight(pkt,&name.l[6],7); \ 2628 gSPLight(pkt,&name.a,8); \ 2631 #define gsSPSetLights7(name) \ 2632 gsSPNumLights(NUMLIGHTS_7), \ 2633 gsSPLight(&name.l[0],1), \ 2634 gsSPLight(&name.l[1],2), \ 2635 gsSPLight(&name.l[2],3), \ 2636 gsSPLight(&name.l[3],4), \ 2637 gsSPLight(&name.l[4],5), \ 2638 gsSPLight(&name.l[5],6), \ 2639 gsSPLight(&name.l[6],7), \ 2640 gsSPLight(&name.a,8) 2646 # define gSPLookAtX(pkt, l) \ 2647 gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX) 2648 # define gsSPLookAtX(l) \ 2649 gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX) 2650 # define gSPLookAtY(pkt, l) \ 2651 gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY) 2652 # define gsSPLookAtY(l) \ 2653 gsDma2p( G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY) 2655 # define gSPLookAtX(pkt, l) \ 2656 gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) 2657 # define gsSPLookAtX(l) \ 2658 gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX) 2659 # define gSPLookAtY(pkt, l) \ 2660 gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) 2661 # define gsSPLookAtY(l) \ 2662 gsDma1p( G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY) 2665 #define gSPLookAt(pkt, la) \ 2667 gSPLookAtX(pkt,la) \ 2668 gSPLookAtY(pkt,(char *)(la)+16) \ 2670 #define gsSPLookAt(la) \ 2672 gsSPLookAtY((char *)(la)+16) 2674 #define gDPSetHilite1Tile(pkt, tile, hilite, width, height) \ 2675 gDPSetTileSize(pkt, tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, \ 2676 ((((width)-1)*4)+(hilite)->h.x1) & 0xfff, ((((height)-1)*4)+(hilite)->h.y1) & 0xfff) 2678 #define gDPSetHilite2Tile(pkt, tile, hilite, width, height) \ 2679 gDPSetTileSize(pkt, tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, \ 2680 ((((width)-1)*4)+(hilite)->h.x2) & 0xfff, ((((height)-1)*4)+(hilite)->h.y2) & 0xfff) 2696 #define gSPFogFactor(pkt, fm, fo) \ 2697 gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \ 2698 (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) 2700 #define gsSPFogFactor(fm, fo) \ 2701 gsMoveWd(G_MW_FOG, G_MWO_FOG, \ 2702 (_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16))) 2704 #define gSPFogPosition(pkt, min, max) \ 2705 gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \ 2706 (_SHIFTL((128000/((max)-(min))),16,16) | \ 2707 _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) 2709 #define gsSPFogPosition(min, max) \ 2710 gsMoveWd(G_MW_FOG, G_MWO_FOG, \ 2711 (_SHIFTL((128000/((max)-(min))),16,16) | \ 2712 _SHIFTL(((500-(min))*256/((max)-(min))),0,16))) 2718 # define gSPTexture(pkt, s, t, level, tile, on) \ 2720 Gfx *_g = (Gfx *)(pkt); \ 2722 _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \ 2723 _SHIFTL(BOWTIE_VAL,16,8) | \ 2724 _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \ 2725 _SHIFTL((on),1,7)); \ 2726 _g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \ 2728 # define gsSPTexture(s, t, level, tile, on) \ 2730 (_SHIFTL(G_TEXTURE,24,8) | _SHIFTL(BOWTIE_VAL,16,8) | \ 2731 _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\ 2732 (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)) \ 2738 # define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ 2740 Gfx *_g = (Gfx *)(pkt); \ 2742 _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \ 2743 _SHIFTL((xparam),16,8) | \ 2744 _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \ 2745 _SHIFTL((on),1,7)); \ 2746 _g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \ 2748 # define gsSPTextureL(s, t, level, xparam, tile, on) \ 2750 (_SHIFTL(G_TEXTURE,24,8) | _SHIFTL((xparam),16,8) | \ 2751 _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\ 2752 (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)) \ 2758 # define gSPTexture(pkt, s, t, level, tile, on) \ 2760 Gfx *_g = (Gfx *)(pkt); \ 2762 _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)|\ 2763 _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)| \ 2764 _SHIFTL((on),0,8)); \ 2765 _g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)); \ 2767 # define gsSPTexture(s, t, level, tile, on) \ 2769 (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)| \ 2770 _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)), \ 2771 (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)) \ 2777 # define gSPTextureL(pkt, s, t, level, xparam, tile, on) \ 2779 Gfx *_g = (Gfx *)(pkt); \ 2781 _g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)| \ 2782 _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)| \ 2783 _SHIFTL((on),0,8)); \ 2784 _g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)); \ 2786 # define gsSPTextureL(s, t, level, xparam, tile, on) \ 2788 (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)| \ 2789 _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)), \ 2790 (_SHIFTL((s),16,16)|_SHIFTL((t),0,16)) \ 2794 #define gSPPerspNormalize(pkt, s) gMoveWd(pkt, G_MW_PERSPNORM, 0, (s)) 2795 #define gsSPPerspNormalize(s) gsMoveWd( G_MW_PERSPNORM, 0, (s)) 2798 # define gSPPopMatrixN(pkt, n, num) gDma2p((pkt),G_POPMTX,(num)*64,64,2,0) 2799 # define gsSPPopMatrixN(n, num) gsDma2p( G_POPMTX,(num)*64,64,2,0) 2800 # define gSPPopMatrix(pkt, n) gSPPopMatrixN((pkt), (n), 1) 2801 # define gsSPPopMatrix(n) gsSPPopMatrixN( (n), 1) 2803 # define gSPPopMatrix(pkt, n) gImmp1(pkt, G_POPMTX, n) 2804 # define gsSPPopMatrix(n) gsImmp1( G_POPMTX, n) 2807 #define gSPEndDisplayList(pkt) \ 2809 Gfx *_g = (Gfx *)(pkt); \ 2811 _g->words.w0 = _SHIFTL(G_ENDDL, 24, 8); \ 2815 #define gsSPEndDisplayList() \ 2817 _SHIFTL(G_ENDDL, 24, 8), 0 \ 2829 #define gSPGeometryMode(pkt, c, s) \ 2831 Gfx *_g = (Gfx *)(pkt); \ 2832 _g->words.w0 = _SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24);\ 2833 _g->words.w1 = (u32)(s); \ 2836 #define gsSPGeometryMode(c, s) \ 2838 (_SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24)),(u32)(s) \ 2840 #define gSPSetGeometryMode(pkt, word) gSPGeometryMode((pkt),0,(word)) 2841 #define gsSPSetGeometryMode(word) gsSPGeometryMode(0,(word)) 2842 #define gSPClearGeometryMode(pkt, word) gSPGeometryMode((pkt),(word),0) 2843 #define gsSPClearGeometryMode(word) gsSPGeometryMode((word),0) 2844 #define gSPLoadGeometryMode(pkt, word) gSPGeometryMode((pkt),-1,(word)) 2845 #define gsSPLoadGeometryMode(word) gsSPGeometryMode(-1,(word)) 2848 #define gSPSetGeometryMode(pkt, word) \ 2850 Gfx *_g = (Gfx *)(pkt); \ 2852 _g->words.w0 = _SHIFTL(G_SETGEOMETRYMODE, 24, 8); \ 2853 _g->words.w1 = (unsigned int)(word); \ 2856 #define gsSPSetGeometryMode(word) \ 2858 _SHIFTL(G_SETGEOMETRYMODE, 24, 8), (unsigned int)(word) \ 2861 #define gSPClearGeometryMode(pkt, word) \ 2863 Gfx *_g = (Gfx *)(pkt); \ 2865 _g->words.w0 = _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8); \ 2866 _g->words.w1 = (unsigned int)(word); \ 2869 #define gsSPClearGeometryMode(word) \ 2871 _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8), (unsigned int)(word) \ 2876 #define gSPSetOtherMode(pkt, cmd, sft, len, data) \ 2878 Gfx *_g = (Gfx *)(pkt); \ 2879 _g->words.w0 = (_SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)| \ 2880 _SHIFTL((len)-1,0,8)); \ 2881 _g->words.w1 = (unsigned int)(data); \ 2884 #define gsSPSetOtherMode(cmd, sft, len, data) \ 2886 _SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)|_SHIFTL((len)-1,0,8), \ 2887 (unsigned int)(data) \ 2890 #define gSPSetOtherMode(pkt, cmd, sft, len, data) \ 2892 Gfx *_g = (Gfx *)(pkt); \ 2894 _g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | \ 2895 _SHIFTL(len, 0, 8)); \ 2896 _g->words.w1 = (unsigned int)(data); \ 2899 #define gsSPSetOtherMode(cmd, sft, len, data) \ 2901 _SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8), \ 2902 (unsigned int)(data) \ 2909 #define gDPPipelineMode(pkt, mode) \ 2910 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) 2911 #define gsDPPipelineMode(mode) \ 2912 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode) 2914 #define gDPSetCycleType(pkt, type) \ 2915 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) 2916 #define gsDPSetCycleType(type) \ 2917 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type) 2919 #define gDPSetTexturePersp(pkt, type) \ 2920 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) 2921 #define gsDPSetTexturePersp(type) \ 2922 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type) 2924 #define gDPSetTextureDetail(pkt, type) \ 2925 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) 2926 #define gsDPSetTextureDetail(type) \ 2927 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type) 2929 #define gDPSetTextureLOD(pkt, type) \ 2930 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) 2931 #define gsDPSetTextureLOD(type) \ 2932 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type) 2934 #define gDPSetTextureLUT(pkt, type) \ 2935 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) 2936 #define gsDPSetTextureLUT(type) \ 2937 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type) 2939 #define gDPSetTextureFilter(pkt, type) \ 2940 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) 2941 #define gsDPSetTextureFilter(type) \ 2942 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type) 2944 #define gDPSetTextureConvert(pkt, type) \ 2945 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) 2946 #define gsDPSetTextureConvert(type) \ 2947 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type) 2949 #define gDPSetCombineKey(pkt, type) \ 2950 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) 2951 #define gsDPSetCombineKey(type) \ 2952 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type) 2954 #ifndef _HW_VERSION_1 2955 #define gDPSetColorDither(pkt, mode) \ 2956 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) 2957 #define gsDPSetColorDither(mode) \ 2958 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode) 2960 #define gDPSetColorDither(pkt, mode) \ 2961 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) 2962 #define gsDPSetColorDither(mode) \ 2963 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode) 2966 #ifndef _HW_VERSION_1 2967 #define gDPSetAlphaDither(pkt, mode) \ 2968 gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) 2969 #define gsDPSetAlphaDither(mode) \ 2970 gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode) 2977 #define gDPSetBlendMask(pkt, mask) gDPNoOp(pkt) 2978 #define gsDPSetBlendMask(mask) gsDPNoOp() 2980 #define gDPSetAlphaCompare(pkt, type) \ 2981 gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) 2982 #define gsDPSetAlphaCompare(type) \ 2983 gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type) 2985 #define gDPSetDepthSource(pkt, src) \ 2986 gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) 2987 #define gsDPSetDepthSource(src) \ 2988 gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src) 2990 #define gDPSetRenderMode(pkt, c0, c1) \ 2991 gSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \ 2993 #define gsDPSetRenderMode(c0, c1) \ 2994 gsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \ 2997 #define gSetImage(pkt, cmd, fmt, siz, width, i) \ 2999 Gfx *_g = (Gfx *)(pkt); \ 3001 _g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \ 3002 _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12); \ 3003 _g->words.w1 = (unsigned int)(i); \ 3006 #define gsSetImage(cmd, fmt, siz, width, i) \ 3008 _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \ 3009 _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12), \ 3013 #define gDPSetColorImage(pkt, f, s, w, i) gSetImage(pkt, G_SETCIMG, f, s, w, i) 3014 #define gsDPSetColorImage(f, s, w, i) gsSetImage(G_SETCIMG, f, s, w, i) 3018 #define gDPSetDepthImage(pkt, i) gSetImage(pkt, G_SETZIMG, 0, 0, 1, i) 3019 #define gsDPSetDepthImage(i) gsSetImage(G_SETZIMG, 0, 0, 1, i) 3021 #define gDPSetMaskImage(pkt, i) gDPSetDepthImage(pkt, i) 3022 #define gsDPSetMaskImage(i) gsDPSetDepthImage(i) 3024 #define gDPSetTextureImage(pkt, f, s, w, i) gSetImage(pkt, G_SETTIMG, f, s, w, i) 3025 #define gsDPSetTextureImage(f, s, w, i) gsSetImage(G_SETTIMG, f, s, w, i) 3031 #define gDPSetCombine(pkt, muxs0, muxs1) \ 3033 Gfx *_g = (Gfx *)(pkt); \ 3035 _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24);\ 3036 _g->words.w1 = (unsigned int)(muxs1); \ 3039 #define gsDPSetCombine(muxs0, muxs1) \ 3041 _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), \ 3042 (unsigned int)(muxs1) \ 3045 #define GCCc0w0(saRGB0, mRGB0, saA0, mA0) \ 3046 (_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | \ 3047 _SHIFTL((saA0), 12, 3) | _SHIFTL((mA0), 9, 3)) 3049 #define GCCc1w0(saRGB1, mRGB1) \ 3050 (_SHIFTL((saRGB1), 5, 4) | _SHIFTL((mRGB1), 0, 5)) 3052 #define GCCc0w1(sbRGB0, aRGB0, sbA0, aA0) \ 3053 (_SHIFTL((sbRGB0), 28, 4) | _SHIFTL((aRGB0), 15, 3) | \ 3054 _SHIFTL((sbA0), 12, 3) | _SHIFTL((aA0), 9, 3)) 3056 #define GCCc1w1(sbRGB1, saA1, mA1, aRGB1, sbA1, aA1) \ 3057 (_SHIFTL((sbRGB1), 24, 4) | _SHIFTL((saA1), 21, 3) | \ 3058 _SHIFTL((mA1), 18, 3) | _SHIFTL((aRGB1), 6, 3) | \ 3059 _SHIFTL((sbA1), 3, 3) | _SHIFTL((aA1), 0, 3)) 3061 #define gDPSetCombineLERP(pkt, a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ 3062 a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ 3064 Gfx *_g = (Gfx *)(pkt); \ 3066 _g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | \ 3067 _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, \ 3068 G_ACMUX_##Aa0, G_ACMUX_##Ac0) | \ 3069 GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), \ 3071 _g->words.w1 = (unsigned int)(GCCc0w1(G_CCMUX_##b0, \ 3075 GCCc1w1(G_CCMUX_##b1, \ 3083 #define gsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ 3084 a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ 3086 _SHIFTL(G_SETCOMBINE, 24, 8) | \ 3087 _SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0, \ 3088 G_ACMUX_##Aa0, G_ACMUX_##Ac0) | \ 3089 GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), 0, 24), \ 3090 (unsigned int)(GCCc0w1(G_CCMUX_##b0, G_CCMUX_##d0, \ 3091 G_ACMUX_##Ab0, G_ACMUX_##Ad0) | \ 3092 GCCc1w1(G_CCMUX_##b1, G_ACMUX_##Aa1, \ 3093 G_ACMUX_##Ac1, G_CCMUX_##d1, \ 3094 G_ACMUX_##Ab1, G_ACMUX_##Ad1)) \ 3107 #define gDPSetCombineMode(pkt, a, b) gDPSetCombineLERP(pkt, a, b) 3108 #define gsDPSetCombineMode(a, b) gsDPSetCombineLERP(a, b) 3110 #define gDPSetColor(pkt, c, d) \ 3112 Gfx *_g = (Gfx *)(pkt); \ 3114 _g->words.w0 = _SHIFTL(c, 24, 8); \ 3115 _g->words.w1 = (unsigned int)(d); \ 3118 #define gsDPSetColor(c, d) \ 3120 _SHIFTL(c, 24, 8), (unsigned int)(d) \ 3123 #define DPRGBColor(pkt, cmd, r, g, b, a) \ 3124 gDPSetColor(pkt, cmd, \ 3125 (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ 3126 _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) 3127 #define sDPRGBColor(cmd, r, g, b, a) \ 3129 (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ 3130 _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8))) 3132 #define gDPSetEnvColor(pkt, r, g, b, a) \ 3133 DPRGBColor(pkt, G_SETENVCOLOR, r,g,b,a) 3134 #define gsDPSetEnvColor(r, g, b, a) \ 3135 sDPRGBColor(G_SETENVCOLOR, r,g,b,a) 3136 #define gDPSetBlendColor(pkt, r, g, b, a) \ 3137 DPRGBColor(pkt, G_SETBLENDCOLOR, r,g,b,a) 3138 #define gsDPSetBlendColor(r, g, b, a) \ 3139 sDPRGBColor(G_SETBLENDCOLOR, r,g,b,a) 3140 #define gDPSetFogColor(pkt, r, g, b, a) \ 3141 DPRGBColor(pkt, G_SETFOGCOLOR, r,g,b,a) 3142 #define gsDPSetFogColor(r, g, b, a) \ 3143 sDPRGBColor(G_SETFOGCOLOR, r,g,b,a) 3144 #define gDPSetFillColor(pkt, d) \ 3145 gDPSetColor(pkt, G_SETFILLCOLOR, (d)) 3146 #define gsDPSetFillColor(d) \ 3147 gsDPSetColor(G_SETFILLCOLOR, (d)) 3149 #define gDPSetPrimDepth(pkt, z, dz) \ 3150 gDPSetColor(pkt, G_SETPRIMDEPTH, \ 3151 _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16)) 3152 #define gsDPSetPrimDepth(z, dz) \ 3153 gsDPSetColor(G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | \ 3156 #define gDPSetPrimColor(pkt, m, l, r, g, b, a) \ 3158 Gfx *_g = (Gfx *)(pkt); \ 3160 _g->words.w0 = (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | \ 3161 _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8)); \ 3162 _g->words.w1 = (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \ 3163 _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)); \ 3166 #define gsDPSetPrimColor(m, l, r, g, b, a) \ 3168 (_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) | \ 3169 _SHIFTL(l, 0, 8)), \ 3170 (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) | \ 3202 #define gDPSetOtherMode(pkt, mode0, mode1) \ 3204 Gfx *_g = (Gfx *)(pkt); \ 3206 _g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24);\ 3207 _g->words.w1 = (unsigned int)(mode1); \ 3210 #define gsDPSetOtherMode(mode0, mode1) \ 3212 _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24), \ 3213 (unsigned int)(mode1) \ 3222 #define G_TX_LOADTILE 7 3223 #define G_TX_RENDERTILE 0 3225 #define G_TX_NOMIRROR 0 3227 #define G_TX_MIRROR 0x1 3228 #define G_TX_CLAMP 0x2 3229 #define G_TX_NOMASK 0 3230 #define G_TX_NOLOD 0 3234 #define MAX(a, b) ((a) > (b) ? (a) : (b)) 3238 #define MIN(a, b) ((a) < (b) ? (a) : (b)) 3248 #define G_TX_DXT_FRAC 11 3260 #ifdef _HW_VERSION_1 3261 #define G_TX_LDBLK_MAX_TXL 4095 3263 #define G_TX_LDBLK_MAX_TXL 2047 3266 #define TXL2WORDS(txls, b_txl) MAX(1, ((txls)*(b_txl)/8)) 3267 #define CALC_DXT(width, b_txl) \ 3268 (((1 << G_TX_DXT_FRAC) + TXL2WORDS(width, b_txl) - 1) / \ 3269 TXL2WORDS(width, b_txl)) 3271 #define TXL2WORDS_4b(txls) MAX(1, ((txls)/16)) 3272 #define CALC_DXT_4b(width) \ 3273 (((1 << G_TX_DXT_FRAC) + TXL2WORDS_4b(width) - 1) / \ 3274 TXL2WORDS_4b(width)) 3276 #define gDPLoadTileGeneric(pkt, c, tile, uls, ult, lrs, lrt) \ 3278 Gfx *_g = (Gfx *)(pkt); \ 3280 _g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | \ 3281 _SHIFTL(ult, 0, 12); \ 3282 _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | \ 3283 _SHIFTL(lrt, 0, 12); \ 3286 #define gsDPLoadTileGeneric(c, tile, uls, ult, lrs, lrt) \ 3288 _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12), \ 3289 _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12)\ 3292 #define gDPSetTileSize(pkt, t, uls, ult, lrs, lrt) \ 3293 gDPLoadTileGeneric(pkt, G_SETTILESIZE, t, uls, ult, lrs, lrt) 3294 #define gsDPSetTileSize(t, uls, ult, lrs, lrt) \ 3295 gsDPLoadTileGeneric(G_SETTILESIZE, t, uls, ult, lrs, lrt) 3296 #define gDPLoadTile(pkt, t, uls, ult, lrs, lrt) \ 3297 gDPLoadTileGeneric(pkt, G_LOADTILE, t, uls, ult, lrs, lrt) 3298 #define gsDPLoadTile(t, uls, ult, lrs, lrt) \ 3299 gsDPLoadTileGeneric(G_LOADTILE, t, uls, ult, lrs, lrt) 3301 #define gDPSetTile(pkt, fmt, siz, line, tmem, tile, palette, cmt, \ 3302 maskt, shiftt, cms, masks, shifts) \ 3304 Gfx *_g = (Gfx *)(pkt); \ 3306 _g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) |\ 3307 _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | \ 3308 _SHIFTL(tmem, 0, 9); \ 3309 _g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | \ 3310 _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \ 3311 _SHIFTL(shiftt, 10, 4) |_SHIFTL(cms, 8, 2) | \ 3312 _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4); \ 3315 #define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, \ 3316 maskt, shiftt, cms, masks, shifts) \ 3318 (_SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | \ 3319 _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | _SHIFTL(tmem, 0, 9)),\ 3320 (_SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | \ 3321 _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \ 3322 _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | \ 3323 _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4)) \ 3336 #define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt) \ 3338 Gfx *_g = (Gfx *)(pkt); \ 3340 _g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | \ 3341 _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12)); \ 3342 _g->words.w1 = (_SHIFTL(tile, 24, 3) | \ 3343 _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) |\ 3344 _SHIFTL(dxt, 0, 12)); \ 3347 #define gsDPLoadBlock(tile, uls, ult, lrs, dxt) \ 3349 (_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | \ 3350 _SHIFTL(ult, 0, 12)), \ 3351 (_SHIFTL(tile, 24, 3) | \ 3352 _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) | \ 3353 _SHIFTL(dxt, 0, 12)) \ 3356 #define gDPLoadTLUTCmd(pkt, tile, count) \ 3358 Gfx *_g = (Gfx *)pkt; \ 3360 _g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8); \ 3361 _g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10);\ 3364 #define gsDPLoadTLUTCmd(tile, count) \ 3366 _SHIFTL(G_LOADTLUT, 24, 8), \ 3367 _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10) \ 3370 #define gDPLoadTextureBlock(pkt, timg, fmt, siz, width, height, \ 3371 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3373 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3374 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ 3375 0 , cmt, maskt, shiftt, cms, masks, shifts); \ 3377 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3378 (((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1, \ 3379 CALC_DXT(width, siz##_BYTES)); \ 3381 gDPSetTile(pkt, fmt, siz, \ 3382 (((width) * siz##_LINE_BYTES)+7)>>3, 0, \ 3383 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3385 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3386 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3387 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3390 #define gDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height, \ 3391 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3393 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3394 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ 3395 0 , cmt, maskt, shiftt, cms, masks, shifts); \ 3397 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3398 (((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1, \ 3399 CALC_DXT(width, siz##_BYTES)); \ 3401 gDPSetTile(pkt, fmt, siz, \ 3402 (((width) * 1)+7)>>3, 0, \ 3403 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3405 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3406 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3407 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3413 #define gDPLoadTextureBlockS(pkt, timg, fmt, siz, width, height, \ 3414 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3416 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3417 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ 3418 0 , cmt, maskt, shiftt, cms, masks, shifts); \ 3420 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3421 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ 3423 gDPSetTile(pkt, fmt, siz, \ 3424 (((width) * siz##_LINE_BYTES)+7)>>3, 0, \ 3425 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3427 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3428 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3429 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3436 #define gDPLoadMultiBlockS(pkt, timg, tmem, rtile, fmt, siz, width, \ 3437 height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3439 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3440 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ 3441 0 , cmt, maskt, shiftt, cms, masks, shifts); \ 3443 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3444 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ 3446 gDPSetTile(pkt, fmt, siz, \ 3447 (((width) * siz##_LINE_BYTES)+7)>>3, tmem, \ 3448 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3450 gDPSetTileSize(pkt, rtile, 0, 0, \ 3451 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3452 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3456 #define gDPLoadTextureBlockYuvS(pkt, timg, fmt, siz, width, height, \ 3457 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3459 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3460 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \ 3461 0 , cmt, maskt, shiftt, cms, masks, shifts); \ 3463 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3464 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0); \ 3466 gDPSetTile(pkt, fmt, siz, \ 3467 (((width) * 1)+7)>>3, 0, \ 3468 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3470 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3471 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3472 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3478 #define _gDPLoadTextureBlock(pkt, timg, tmem, fmt, siz, width, height, \ 3479 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3481 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3482 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ 3483 0, cmt, maskt, shiftt, cms, masks, shifts); \ 3485 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3486 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3487 CALC_DXT(width, siz##_BYTES)); \ 3489 gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ 3490 tmem, G_TX_RENDERTILE, pal, cmt, \ 3491 maskt, shiftt, cms, masks, shifts); \ 3492 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3493 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3494 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3500 #define _gDPLoadTextureBlockTile(pkt, timg, tmem, rtile, fmt, siz, width, \ 3501 height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3503 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3504 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\ 3505 cmt, maskt, shiftt, cms, masks, shifts); \ 3507 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3508 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3509 CALC_DXT(width, siz##_BYTES)); \ 3511 gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ 3512 tmem, rtile, pal, cmt, \ 3513 maskt, shiftt, cms, masks, shifts); \ 3514 gDPSetTileSize(pkt, rtile, 0, 0, \ 3515 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3516 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3522 #define gDPLoadMultiBlock(pkt, timg, tmem, rtile, fmt, siz, width, \ 3523 height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3525 gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \ 3526 gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\ 3527 cmt, maskt, shiftt, cms, masks, shifts); \ 3529 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3530 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3531 CALC_DXT(width, siz##_BYTES)); \ 3533 gDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3, \ 3534 tmem, rtile, pal, cmt, \ 3535 maskt, shiftt, cms, masks, shifts); \ 3536 gDPSetTileSize(pkt, rtile, 0, 0, \ 3537 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3538 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3541 #define gsDPLoadTextureBlock(timg, fmt, siz, width, height, \ 3542 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3544 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3545 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, \ 3546 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ 3549 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3550 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3551 CALC_DXT(width, siz##_BYTES)), \ 3553 gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0, \ 3554 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3556 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3557 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3558 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3564 #define gsDPLoadTextureBlockS(timg, fmt, siz, width, height, \ 3565 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3567 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3568 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , \ 3569 cmt, maskt,shiftt, cms, masks, shifts), \ 3571 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3572 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\ 3574 gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0, \ 3575 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3577 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3578 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3579 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3584 #define _gsDPLoadTextureBlock(timg, tmem, fmt, siz, width, height, \ 3585 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3587 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3588 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ 3589 0 , cmt, maskt, shiftt, cms, masks, shifts), \ 3591 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3592 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3593 CALC_DXT(width, siz##_BYTES)), \ 3595 gsDPSetTile(fmt, siz, \ 3596 ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ 3597 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3599 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3600 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3601 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3607 #define _gsDPLoadTextureBlockTile(timg, tmem, rtile, fmt, siz, width, \ 3608 height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3610 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3611 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ 3612 0 , cmt, maskt, shiftt, cms, masks, shifts), \ 3614 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3615 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3616 CALC_DXT(width, siz##_BYTES)), \ 3618 gsDPSetTile(fmt, siz, \ 3619 ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ 3620 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3622 gsDPSetTileSize(rtile, 0, 0, \ 3623 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3624 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3631 #define gsDPLoadMultiBlock(timg, tmem, rtile, fmt, siz, width, \ 3632 height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3634 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3635 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \ 3636 0 , cmt, maskt, shiftt, cms, masks, shifts), \ 3638 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3639 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, \ 3640 CALC_DXT(width, siz##_BYTES)), \ 3642 gsDPSetTile(fmt, siz, \ 3643 ((((width) * siz##_LINE_BYTES)+7)>>3), tmem, \ 3644 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3646 gsDPSetTileSize(rtile, 0, 0, \ 3647 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3648 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3659 #define gsDPLoadMultiBlockS(timg, tmem, rtile, fmt, siz, width, height, \ 3660 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3662 gsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg), \ 3663 gsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , \ 3664 cmt, maskt,shiftt, cms, masks, shifts), \ 3666 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ 3667 (((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\ 3669 gsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\ 3670 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3672 gsDPSetTileSize(rtile, 0, 0, \ 3673 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3674 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3677 #define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \ 3678 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3680 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ 3681 gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ 3682 cmt, maskt, shiftt, cms, masks, shifts); \ 3684 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3685 (((width)*(height)+3)>>2)-1, \ 3686 CALC_DXT_4b(width)); \ 3688 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ 3689 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3691 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3692 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3693 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3699 #define gDPLoadTextureBlock_4bS(pkt, timg, fmt, width, height, \ 3700 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3702 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ 3703 gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ 3704 cmt, maskt, shiftt, cms, masks, shifts); \ 3706 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3707 (((width)*(height)+3)>>2)-1, 0 ); \ 3709 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ 3710 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3712 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3713 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3714 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3720 #define gDPLoadMultiBlock_4b(pkt, timg, tmem, rtile, fmt, width, height,\ 3721 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3723 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ 3724 gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ 3725 cmt, maskt, shiftt, cms, masks, shifts); \ 3727 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3728 (((width)*(height)+3)>>2)-1, \ 3729 CALC_DXT_4b(width)); \ 3731 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3732 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3734 gDPSetTileSize(pkt, rtile, 0, 0, \ 3735 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3736 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3743 #define gDPLoadMultiBlock_4bS(pkt, timg, tmem, rtile, fmt, width, height,\ 3744 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3746 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ 3747 gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ 3748 cmt, maskt, shiftt, cms, masks, shifts); \ 3750 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3751 (((width)*(height)+3)>>2)-1, 0 ); \ 3753 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3754 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3756 gDPSetTileSize(pkt, rtile, 0, 0, \ 3757 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3758 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3762 #define _gDPLoadTextureBlock_4b(pkt, timg, tmem, fmt, width, height, \ 3763 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3765 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ 3766 gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \ 3767 cmt, maskt, shiftt, cms, masks, shifts); \ 3769 gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \ 3770 (((width)*(height)+3)>>2)-1, \ 3771 CALC_DXT_4b(width)); \ 3773 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3774 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3776 gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ 3777 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3778 ((height)-1) << G_TEXTURE_IMAGE_FRAC) \ 3781 #define gsDPLoadTextureBlock_4b(timg, fmt, width, height, \ 3782 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3784 gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ 3785 gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt, \ 3786 maskt, shiftt, cms, masks, shifts), \ 3788 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ 3789 CALC_DXT_4b(width)), \ 3791 gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ 3792 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3794 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3795 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3796 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3798 #define gsDPLoadTextureBlock_4bS(timg, fmt, width, height, \ 3799 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3801 gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ 3802 gsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt, \ 3803 maskt, shiftt, cms, masks, shifts), \ 3805 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\ 3807 gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0, \ 3808 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3810 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3811 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3812 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3818 #define gsDPLoadMultiBlock_4b(timg, tmem, rtile, fmt, width, height, \ 3819 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3821 gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ 3822 gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ 3823 maskt, shiftt, cms, masks, shifts), \ 3825 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ 3826 CALC_DXT_4b(width)), \ 3828 gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3829 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3831 gsDPSetTileSize(rtile, 0, 0, \ 3832 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3833 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3840 #define gsDPLoadMultiBlock_4bS(timg, tmem, rtile, fmt, width, height, \ 3841 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3843 gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ 3844 gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ 3845 maskt, shiftt, cms, masks, shifts), \ 3847 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\ 3849 gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3850 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3852 gsDPSetTileSize(rtile, 0, 0, \ 3853 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3854 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3860 #define _gsDPLoadTextureBlock_4b(timg, tmem, fmt, width, height, \ 3861 pal, cms, cmt, masks, maskt, shifts, shiftt) \ 3863 gsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg), \ 3864 gsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt, \ 3865 maskt, shiftt, cms, masks, shifts), \ 3867 gsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1, \ 3868 CALC_DXT_4b(width)), \ 3870 gsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem, \ 3871 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3873 gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, \ 3874 ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ 3875 ((height)-1) << G_TEXTURE_IMAGE_FRAC) 3877 #ifndef _HW_VERSION_1 3879 #define gDPLoadTextureTile(pkt, timg, fmt, siz, width, height, \ 3880 uls, ult, lrs, lrt, pal, \ 3881 cms, cmt, masks, maskt, shifts, shiftt) \ 3883 gDPSetTextureImage(pkt, fmt, siz, width, timg); \ 3884 gDPSetTile(pkt, fmt, siz, \ 3885 (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0, \ 3886 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 3889 gDPLoadTile( pkt, G_TX_LOADTILE, \ 3890 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3891 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3892 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3893 (lrt)<<G_TEXTURE_IMAGE_FRAC); \ 3895 gDPSetTile(pkt, fmt, siz, \ 3896 (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), 0, \ 3897 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 3899 gDPSetTileSize(pkt, G_TX_RENDERTILE, \ 3900 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3901 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3902 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3903 (lrt)<<G_TEXTURE_IMAGE_FRAC) \ 3908 #define gDPLoadTextureTile(pkt, timg, fmt, siz, width, height, \ 3909 uls, ult, lrs, lrt, pal, \ 3910 cms, cmt, masks, maskt, shifts, shiftt) \ 3913 int _loadtile_i, _loadtile_nw; Gfx *_loadtile_temp = pkt; \ 3914 guDPLoadTextureTile(_loadtile_temp, timg, fmt, siz, \ 3916 uls, ult, lrs, lrt, pal, \ 3917 cms, cmt, masks, maskt, shifts, shiftt); \ 3918 _loadtile_nw = guGetDPLoadTextureTileSz(ult, lrt) - 1; \ 3919 for(_loadtile_i = 0; _loadtile_i < _loadtile_nw; _loadtile_i++) \ 3929 #define gDPLoadMultiTile(pkt, timg, tmem, rtile, fmt, siz, width, height,\ 3930 uls, ult, lrs, lrt, pal, \ 3931 cms, cmt, masks, maskt, shifts, shiftt) \ 3933 gDPSetTextureImage(pkt, fmt, siz, width, timg); \ 3934 gDPSetTile(pkt, fmt, siz, \ 3935 (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), tmem, \ 3936 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 3939 gDPLoadTile( pkt, G_TX_LOADTILE, \ 3940 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3941 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3942 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3943 (lrt)<<G_TEXTURE_IMAGE_FRAC); \ 3945 gDPSetTile(pkt, fmt, siz, \ 3946 (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), tmem, \ 3947 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 3949 gDPSetTileSize(pkt, rtile, \ 3950 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3951 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3952 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3953 (lrt)<<G_TEXTURE_IMAGE_FRAC) \ 3957 #define gsDPLoadTextureTile(timg, fmt, siz, width, height, \ 3958 uls, ult, lrs, lrt, pal, \ 3959 cms, cmt, masks, maskt, shifts, shiftt) \ 3961 gsDPSetTextureImage(fmt, siz, width, timg), \ 3962 gsDPSetTile(fmt, siz, \ 3963 (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0, \ 3964 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 3967 gsDPLoadTile( G_TX_LOADTILE, \ 3968 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3969 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3970 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3971 (lrt)<<G_TEXTURE_IMAGE_FRAC), \ 3973 gsDPSetTile(fmt, siz, \ 3974 (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), 0, \ 3975 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\ 3977 gsDPSetTileSize(G_TX_RENDERTILE, \ 3978 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3979 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 3980 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 3981 (lrt)<<G_TEXTURE_IMAGE_FRAC) 3987 #define gsDPLoadMultiTile(timg, tmem, rtile, fmt, siz, width, height, \ 3988 uls, ult, lrs, lrt, pal, \ 3989 cms, cmt, masks, maskt, shifts, shiftt) \ 3991 gsDPSetTextureImage(fmt, siz, width, timg), \ 3992 gsDPSetTile(fmt, siz, \ 3993 (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), \ 3994 tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ 3997 gsDPLoadTile( G_TX_LOADTILE, \ 3998 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 3999 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4000 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4001 (lrt)<<G_TEXTURE_IMAGE_FRAC), \ 4003 gsDPSetTile(fmt, siz, \ 4004 (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), \ 4005 tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ 4007 gsDPSetTileSize(rtile, \ 4008 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 4009 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4010 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4011 (lrt)<<G_TEXTURE_IMAGE_FRAC) 4013 #define gDPLoadTextureTile_4b(pkt, timg, fmt, width, height, \ 4014 uls, ult, lrs, lrt, pal, \ 4015 cms, cmt, masks, maskt, shifts, shiftt) \ 4017 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \ 4018 gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \ 4019 (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ 4020 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 4023 gDPLoadTile( pkt, G_TX_LOADTILE, \ 4024 (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4025 (ult)<<(G_TEXTURE_IMAGE_FRAC), \ 4026 (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4027 (lrt)<<(G_TEXTURE_IMAGE_FRAC)); \ 4029 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, \ 4030 (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ 4031 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, \ 4033 gDPSetTileSize(pkt, G_TX_RENDERTILE, \ 4034 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 4035 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4036 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4037 (lrt)<<G_TEXTURE_IMAGE_FRAC) \ 4044 #define gDPLoadMultiTile_4b(pkt, timg, tmem, rtile, fmt, width, height, \ 4045 uls, ult, lrs, lrt, pal, \ 4046 cms, cmt, masks, maskt, shifts, shiftt) \ 4048 gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \ 4049 gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \ 4050 (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, \ 4051 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 4054 gDPLoadTile( pkt, G_TX_LOADTILE, \ 4055 (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4056 (ult)<<(G_TEXTURE_IMAGE_FRAC), \ 4057 (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4058 (lrt)<<(G_TEXTURE_IMAGE_FRAC)); \ 4060 gDPSetTile(pkt, fmt, G_IM_SIZ_4b, \ 4061 (((((lrs)-(uls)+1)>>1)+7)>>3), tmem, \ 4062 rtile, pal, cmt, maskt, shiftt, cms, masks, \ 4064 gDPSetTileSize(pkt, rtile, \ 4065 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 4066 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4067 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4068 (lrt)<<G_TEXTURE_IMAGE_FRAC) \ 4071 #define gsDPLoadTextureTile_4b(timg, fmt, width, height, \ 4072 uls, ult, lrs, lrt, pal, \ 4073 cms, cmt, masks, maskt, shifts, shiftt) \ 4075 gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), \ 4076 gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ 4077 G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks, \ 4080 gsDPLoadTile( G_TX_LOADTILE, \ 4081 (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4082 (ult)<<(G_TEXTURE_IMAGE_FRAC), \ 4083 (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4084 (lrt)<<(G_TEXTURE_IMAGE_FRAC)), \ 4086 gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0, \ 4087 G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, \ 4089 gsDPSetTileSize(G_TX_RENDERTILE, \ 4090 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 4091 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4092 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4093 (lrt)<<G_TEXTURE_IMAGE_FRAC) 4099 #define gsDPLoadMultiTile_4b(timg, tmem, rtile, fmt, width, height, \ 4100 uls, ult, lrs, lrt, pal, \ 4101 cms, cmt, masks, maskt, shifts, shiftt) \ 4103 gsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg), \ 4104 gsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), \ 4105 tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \ 4108 gsDPLoadTile( G_TX_LOADTILE, \ 4109 (uls)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4110 (ult)<<(G_TEXTURE_IMAGE_FRAC), \ 4111 (lrs)<<(G_TEXTURE_IMAGE_FRAC-1), \ 4112 (lrt)<<(G_TEXTURE_IMAGE_FRAC)), \ 4114 gsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), \ 4115 tmem, rtile, pal, cmt, maskt, shiftt, cms, masks, \ 4117 gsDPSetTileSize(rtile, \ 4118 (uls)<<G_TEXTURE_IMAGE_FRAC, \ 4119 (ult)<<G_TEXTURE_IMAGE_FRAC, \ 4120 (lrs)<<G_TEXTURE_IMAGE_FRAC, \ 4121 (lrt)<<G_TEXTURE_IMAGE_FRAC) 4127 #ifndef _HW_VERSION_1 4129 #define gDPLoadTLUT_pal16(pkt, pal, dram) \ 4131 gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ 4133 gDPSetTile(pkt, 0, 0, 0, (256+(((pal)&0xf)*16)), \ 4134 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ 4136 gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \ 4142 #define gDPLoadTLUT_pal16(pkt, pal, dram) \ 4144 _gDPLoadTextureBlock(pkt, dram, (256+(((pal)&0xf)*16)), \ 4145 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1, \ 4146 pal, 0, 0, 0, 0, 0, 0) 4155 #ifndef _HW_VERSION_1 4157 #define gsDPLoadTLUT_pal16(pal, dram) \ 4159 gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ 4161 gsDPSetTile(0, 0, 0, (256+(((pal)&0xf)*16)), \ 4162 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ 4164 gsDPLoadTLUTCmd(G_TX_LOADTILE, 15), \ 4169 #define gsDPLoadTLUT_pal16(pal, dram) \ 4171 _gsDPLoadTextureBlock(dram, (256+(((pal)&0xf)*16)), \ 4172 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1, \ 4173 pal, 0, 0, 0, 0, 0, 0) 4181 #ifndef _HW_VERSION_1 4183 #define gDPLoadTLUT_pal256(pkt, dram) \ 4185 gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ 4187 gDPSetTile(pkt, 0, 0, 0, 256, \ 4188 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ 4190 gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); \ 4196 #define gDPLoadTLUT_pal256(pkt, dram) \ 4198 _gDPLoadTextureBlock(pkt, dram, 256, \ 4199 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1, \ 4200 0, 0, 0, 0, 0, 0, 0) 4206 #ifndef _HW_VERSION_1 4208 #define gsDPLoadTLUT_pal256(dram) \ 4210 gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ 4212 gsDPSetTile(0, 0, 0, 256, \ 4213 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ 4215 gsDPLoadTLUTCmd(G_TX_LOADTILE, 255), \ 4220 #define gsDPLoadTLUT_pal256(dram) \ 4222 _gsDPLoadTextureBlock(dram, 256, \ 4223 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1, \ 4224 0, 0, 0, 0, 0, 0, 0) 4229 #ifndef _HW_VERSION_1 4231 #define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ 4233 gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \ 4235 gDPSetTile(pkt, 0, 0, 0, tmemaddr, \ 4236 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0); \ 4238 gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1)); \ 4244 #define gDPLoadTLUT(pkt, count, tmemaddr, dram) \ 4246 _gDPLoadTextureBlock(pkt, dram, tmemaddr, \ 4247 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, \ 4248 0, 0, 0, 0, 0, 0, 0) 4253 #ifndef _HW_VERSION_1 4255 #define gsDPLoadTLUT(count, tmemaddr, dram) \ 4257 gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ 4259 gsDPSetTile(0, 0, 0, tmemaddr, \ 4260 G_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0), \ 4262 gsDPLoadTLUTCmd(G_TX_LOADTILE, ((count)-1)), \ 4266 #define gsDPLoadTLUT(count, tmemaddr, dram) \ 4268 _gsDPLoadTextureBlock(dram, tmemaddr, \ 4269 G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count, \ 4270 0, 0, 0, 0, 0, 0, 0) 4274 #define gDPSetScissor(pkt, mode, ulx, uly, lrx, lry) \ 4276 Gfx *_g = (Gfx *)pkt; \ 4278 _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | \ 4279 _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | \ 4280 _SHIFTL((int)((float)(uly)*4.0F), 0, 12); \ 4281 _g->words.w1 = _SHIFTL(mode, 24, 2) | \ 4282 _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | \ 4283 _SHIFTL((int)((float)(lry)*4.0F), 0, 12); \ 4287 #define gDPSetScissorFrac(pkt, mode, ulx, uly, lrx, lry) \ 4289 Gfx *_g = (Gfx *)pkt; \ 4291 _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | \ 4292 _SHIFTL((int)((ulx)), 12, 12) | \ 4293 _SHIFTL((int)((uly)), 0, 12); \ 4294 _g->words.w1 = _SHIFTL(mode, 24, 2) | \ 4295 _SHIFTL((int)((lrx)), 12, 12) | \ 4296 _SHIFTL((int)((lry)), 0, 12); \ 4299 #define gsDPSetScissor(mode, ulx, uly, lrx, lry) \ 4301 _SHIFTL(G_SETSCISSOR, 24, 8) | \ 4302 _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) | \ 4303 _SHIFTL((int)((float)(uly)*4.0F), 0, 12), \ 4304 _SHIFTL(mode, 24, 2) | \ 4305 _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) | \ 4306 _SHIFTL((int)((float)(lry)*4.0F), 0, 12) \ 4309 #define gsDPSetScissorFrac(mode, ulx, uly, lrx, lry) \ 4311 _SHIFTL(G_SETSCISSOR, 24, 8) | \ 4312 _SHIFTL((int)((ulx)), 12, 12) | \ 4313 _SHIFTL((int)((uly)), 0, 12), \ 4314 _SHIFTL(mode, 24, 2) | \ 4315 _SHIFTL((int)(lrx), 12, 12) | \ 4316 _SHIFTL((int)(lry), 0, 12) \ 4320 #define gDPFillRectangle(pkt, ulx, uly, lrx, lry) \ 4322 Gfx *_g = (Gfx *)(pkt); \ 4324 _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \ 4325 _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10));\ 4326 _g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10));\ 4329 #define gsDPFillRectangle(ulx, uly, lrx, lry) \ 4331 (_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | \ 4332 _SHIFTL((lry), 2, 10)), \ 4333 (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10)) \ 4337 #define gDPScisFillRectangle(pkt, ulx, uly, lrx, lry) \ 4339 Gfx *_g = (Gfx *)(pkt); \ 4341 _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \ 4342 _SHIFTL(MAX((lrx),0), 14, 10) | \ 4343 _SHIFTL(MAX((lry),0), 2, 10)); \ 4344 _g->words.w1 = (_SHIFTL(MAX((ulx),0), 14, 10) | \ 4345 _SHIFTL(MAX((uly),0), 2, 10)); \ 4348 #define gDPSetConvert(pkt, k0, k1, k2, k3, k4, k5) \ 4350 Gfx *_g = (Gfx *)(pkt); \ 4352 _g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) | \ 4353 _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | \ 4354 _SHIFTR(k2, 5, 4)); \ 4355 _g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | \ 4356 _SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)); \ 4359 #define gsDPSetConvert(k0, k1, k2, k3, k4, k5) \ 4361 (_SHIFTL(G_SETCONVERT, 24, 8) | \ 4362 _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)), \ 4363 (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | \ 4364 _SHIFTL(k5, 0, 9)) \ 4367 #define gDPSetKeyR(pkt, cR, sR, wR) \ 4369 Gfx *_g = (Gfx *)(pkt); \ 4371 _g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8); \ 4372 _g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | \ 4373 _SHIFTL(sR, 0, 8)); \ 4376 #define gsDPSetKeyR(cR, sR, wR) \ 4378 _SHIFTL(G_SETKEYR, 24, 8), \ 4379 _SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8) \ 4382 #define gDPSetKeyGB(pkt, cG, sG, wG, cB, sB, wB) \ 4384 Gfx *_g = (Gfx *)(pkt); \ 4386 _g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) | \ 4387 _SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)); \ 4388 _g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | \ 4389 _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)); \ 4392 #define gsDPSetKeyGB(cG, sG, wG, cB, sB, wB) \ 4394 (_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) | \ 4395 _SHIFTL(wB, 0, 12)), \ 4396 (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) | \ 4397 _SHIFTL(sB, 0, 8)) \ 4400 #define gDPNoParam(pkt, cmd) \ 4402 Gfx *_g = (Gfx *)(pkt); \ 4404 _g->words.w0 = _SHIFTL(cmd, 24, 8); \ 4408 #define gsDPNoParam(cmd) \ 4410 _SHIFTL(cmd, 24, 8), 0 \ 4413 #define gDPParam(pkt, cmd, param) \ 4415 Gfx *_g = (Gfx *)(pkt); \ 4417 _g->words.w0 = _SHIFTL(cmd, 24, 8); \ 4418 _g->words.w1 = (param); \ 4421 #define gsDPParam(cmd, param) \ 4423 _SHIFTL(cmd, 24, 8), (param) \ 4431 #define gsDPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4433 (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4434 _SHIFTL(yh, 0, 12)), \ 4435 (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ 4438 _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), \ 4439 _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ 4442 #define gDPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ 4444 Gfx *_g = (Gfx *)(pkt); \ 4446 _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4447 _SHIFTL(yh, 0, 12)); \ 4448 _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ 4449 _SHIFTL(yl, 0, 12)); \ 4451 _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ 4452 _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ 4455 #define gsDPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4457 (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4458 _SHIFTL(yh, 0, 12)), \ 4459 (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)), \ 4462 _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16), \ 4463 _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16) \ 4466 #define gDPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ 4468 Gfx *_g = (Gfx *)(pkt); \ 4470 _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4471 _SHIFTL(yh, 0, 12)); \ 4472 _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ 4473 _SHIFTL(yl, 0, 12)); \ 4475 _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \ 4476 _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \ 4479 #define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4480 {{(_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\ 4481 (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}}, \ 4482 gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ 4483 gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) 4485 #define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\ 4487 Gfx *_g = (Gfx *)(pkt); \ 4489 _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4490 _SHIFTL(yh, 0, 12)); \ 4491 _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ 4492 _SHIFTL(yl, 0, 12)); \ 4493 gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ 4494 gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));\ 4498 #define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4500 Gfx *_g = (Gfx *)(pkt); \ 4502 _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | \ 4503 _SHIFTL(MAX((s16)(xh),0), 12, 12) | \ 4504 _SHIFTL(MAX((s16)(yh),0), 0, 12)); \ 4505 _g->words.w1 = (_SHIFTL((tile), 24, 3) | \ 4506 _SHIFTL(MAX((s16)(xl),0), 12, 12) | \ 4507 _SHIFTL(MAX((s16)(yl),0), 0, 12)); \ 4508 gImmp1(pkt, G_RDPHALF_1, \ 4510 (((s16)(xl) < 0) ? \ 4511 (((s16)(dsdx) < 0) ? \ 4512 (MAX((((s16)(xl)*(s16)(dsdx))>>7),0)) : \ 4513 (MIN((((s16)(xl)*(s16)(dsdx))>>7),0))) : 0)), \ 4517 (((s16)(dtdy) < 0) ? \ 4518 (MAX((((s16)(yl)*(s16)(dtdy))>>7),0)) : \ 4519 (MIN((((s16)(yl)*(s16)(dtdy))>>7),0))) : 0)), \ 4521 gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | \ 4522 _SHIFTL((dtdy), 0, 16))); \ 4525 #define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4526 {{(_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ 4527 _SHIFTL(yh, 0, 12)), \ 4528 (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}}, \ 4529 gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))), \ 4530 gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))) 4532 #define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ 4534 Gfx *_g = (Gfx *)(pkt); \ 4536 _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\ 4537 _SHIFTL(yh, 0, 12)); \ 4538 _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | \ 4539 _SHIFTL(yl, 0, 12)); \ 4540 gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \ 4541 gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \ 4544 #define gsDPWord(wordhi, wordlo) \ 4545 gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), \ 4546 gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo)) 4548 #define gDPWord(pkt, wordhi, wordlo) \ 4550 Gfx *_g = (Gfx *)(pkt); \ 4552 gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); \ 4553 gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); \ 4556 #define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC) 4557 #define gsDPFullSync() gsDPNoParam(G_RDPFULLSYNC) 4558 #define gDPTileSync(pkt) gDPNoParam(pkt, G_RDPTILESYNC) 4559 #define gsDPTileSync() gsDPNoParam(G_RDPTILESYNC) 4560 #define gDPPipeSync(pkt) gDPNoParam(pkt, G_RDPPIPESYNC) 4561 #define gsDPPipeSync() gsDPNoParam(G_RDPPIPESYNC) 4562 #define gDPLoadSync(pkt) gDPNoParam(pkt, G_RDPLOADSYNC) 4563 #define gsDPLoadSync() gsDPNoParam(G_RDPLOADSYNC) 4564 #define gDPNoOp(pkt) gDPNoParam(pkt, G_NOOP) 4565 #define gsDPNoOp() gsDPNoParam(G_NOOP) 4566 #define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag) 4567 #define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag) Definition: gbi_old.h:1484
Definition: gbi_old.h:1479
long int Mtx_t[4][4]
Definition: gbi_old.h:45
Definition: gbi_old.h:1469
data
Definition: seq_decoder.py:292
at end of structure union member declaration In standard C each member declaration must be terminated by a
Definition: err.english.cc:690
Definition: gbi_old.h:1488
def m
Definition: first-diff.py:153
input is a non tagged type Internal error in function gen_type_str not a type tree s Cannot open file s Prototype should be moved after tag or a typedef declaration Please look for comments in the extracted header file The extracted header file includes prototypes static for which should be if you wish to include the header in a source file other than the originator ANSI C requires formal parameter before This extension is meant to be used for compatibility with varargs h(35) syntax error cannot initialize Was the struct ever after argument a legal assembly string The float option will be ignored in ANSI mode The float option is since otherwise program semantics would violate the ANSI standard In fp constants are always double with ANSI while with float the type of fp constants will depend on the context and may be float ANSI C support unavailable with C compiler bundled with RISC os The C compiler bundled with RISC os does not support ANSI C ANSI C support requires a separate license Ignored invalid warning s s ! Warning numbers must be in the range s to s The set of warning numbers in cfe is disjoint from the set of warning numbers in since accom warnings cannot be mapped one to one to cfe warnings s not handled as an intrinsic due to incompatible argument types __unalign only qualifies pointers __unalign indicates the object pointed at by pointer is but unlike both cannot qualify a base type index expression is an anachronism ANSI C doesn t support array index expressions in delete member cannot be of function or incomplete s
Definition: err.english.cc:1194
input is a non tagged type Internal error in function gen_type_str not a type tree s Cannot open file s Prototype should be moved after tag or a typedef declaration Please look for comments in the extracted header file The extracted header file includes prototypes static for which should be if you wish to include the header in a source file other than the originator ANSI C requires formal parameter before This extension is meant to be used for compatibility with varargs h(35) syntax error cannot initialize Was the struct ever after argument a legal assembly string The float option will be ignored in ANSI mode The float option is since otherwise program semantics would violate the ANSI standard In fp constants are always double with ANSI while with float the type of fp constants will depend on the context and may be float ANSI C support unavailable with C compiler bundled with RISC os The C compiler bundled with RISC os does not support ANSI C ANSI C support requires a separate license Ignored invalid warning number(s) in -woff option
Definition: gbi_old.h:1474
addr
Definition: first-diff.py:150
Definition: gbi_old.h:1462
Definition: gbi_old.h:1492
Definition: gbi_old.h:1453