1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-03 14:34:32 +00:00

Add do whiles to all remaining gbi macros (#946)

* Add do whiles to all remaining gbi macros

* Cleanup and remove unnecessary do whiles
This commit is contained in:
Roman971 2021-09-05 20:41:02 +02:00 committed by GitHub
parent d874cd08fc
commit 3d57eaf019
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 142 additions and 204 deletions

View file

@ -1618,12 +1618,12 @@ typedef union {
* DMA macros
*/
#define gDma0p(pkt, c, s, l) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); \
_g->words.w1 = (unsigned int)(s); \
}
})
#define gsDma0p(c, s, l) \
{ \
@ -1742,11 +1742,11 @@ _DW({ \
* RSP short command (no DMA required) macros
*/
#define gImmp0(pkt, c) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL((c), 24, 8); \
}
})
#define gsImmp0(c) \
{ \
@ -1767,12 +1767,12 @@ _DW({ \
}
#define gImmp2(pkt, c, p0, p1) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL((c), 24, 8); \
_g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8); \
}
})
#define gsImmp2(c, p0, p1) \
{ \
@ -1780,13 +1780,13 @@ _DW({ \
}
#define gImmp3(pkt, c, p0, p1, p2) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL((c), 24, 8); \
_g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) | \
_SHIFTL((p2), 0, 8)); \
}
})
#define gsImmp3(c, p0, p1, p2) \
{ \
@ -1824,7 +1824,7 @@ _DW({ \
/* Sprite immediate macros, there is also a sprite dma macro above */
#define gSPSprite2DScaleFlip(pkt, sx, sy, fx, fy) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) | \
@ -1832,7 +1832,7 @@ _DW({ \
_SHIFTL((fy), 0, 8)); \
_g->words.w1 = (_SHIFTL((sx), 16, 16) | \
_SHIFTL((sy), 0, 16)); \
}
})
#define gsSPSprite2DScaleFlip(sx, sy, fx, fy) \
{ \
@ -1844,13 +1844,13 @@ _DW({ \
}
#define gSPSprite2DDraw(pkt, px, py) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)); \
_g->words.w1 = (_SHIFTL((px), 16, 16) | \
_SHIFTL((py), 0, 16)); \
}
})
#define gsSPSprite2DDraw(px, py) \
{ \
@ -1917,13 +1917,13 @@ _DW({ \
*** Line
***/
#define gSPLine3D(pkt, v0, v1, flag) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \
__gsSPLine3D_w1f(v0, v1, 0, flag); \
_g->words.w1 = 0; \
}
})
#define gsSPLine3D(v0, v1, flag) \
{ \
_SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, 0, flag), \
@ -1940,13 +1940,13 @@ _DW({ \
* a 2.0 pixels wide line.
*/
#define gSPLineW3D(pkt, v0, v1, wd, flag) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)| \
__gsSPLine3D_w1f(v0, v1, wd, flag); \
_g->words.w1 = 0; \
}
})
#define gsSPLineW3D(v0, v1, wd, flag) \
{ \
_SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, wd, flag), \
@ -2071,13 +2071,13 @@ _DW({ \
#if (defined(F3DEX_GBI)||defined(F3DLP_GBI))
#define gSPCullDisplayList(pkt,vstart,vend) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \
_SHIFTL((vstart)*2, 0, 16); \
_g->words.w1 = _SHIFTL((vend)*2, 0, 16); \
}
})
#define gsSPCullDisplayList(vstart,vend) \
{ \
@ -2126,12 +2126,12 @@ _DW({ \
* r should be one of: FRUSTRATIO_1, FRUSTRATIO_2, FRUSTRATIO_3, ... FRUSTRATIO_6
*/
#define gSPClipRatio(pkt, r) \
{ \
_DW({ \
gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r); \
gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r); \
gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r); \
gMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r); \
}
})
#define gsSPClipRatio(r) \
gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r), \
@ -2165,9 +2165,10 @@ _DW({ \
*/
#ifdef F3DEX_GBI_2
#define gSPForceMatrix(pkt, mptr) \
{ gDma2p((pkt),G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0); \
_DW({ \
gDma2p((pkt),G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0); \
gMoveWd((pkt), G_MW_FORCEMTX,0,0x00010000); \
}
})
#define gsSPForceMatrix(mptr) \
gsDma2p(G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0), \
gsMoveWd(G_MW_FORCEMTX,0,0x00010000)
@ -2196,12 +2197,12 @@ _DW({ \
*/
#if (defined(F3DEX_GBI)||defined(F3DLP_GBI))
# define gSPModifyVertex(pkt, vtx, where, val) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = (_SHIFTL(G_MODIFYVTX,24,8)| \
_SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16)); \
_g->words.w1 = (unsigned int)(val); \
}
})
# define gsSPModifyVertex(vtx, where, val) \
{ \
_SHIFTL(G_MODIFYVTX,24,8)| \
@ -2242,7 +2243,7 @@ _DW({ \
G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ)
#define gSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, zmin, zmax) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
_g->words.w1 = (unsigned int)(dl); \
@ -2250,7 +2251,7 @@ _DW({ \
_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \
_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \
_g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax); \
}
})
#define gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax) \
{ _SHIFTL(G_RDPHALF_1,24,8), \
@ -2271,7 +2272,7 @@ _DW({ \
* zval = Raw value of screen depth
*/
#define gSPBranchLessZraw(pkt, dl, vtx, zval) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
_g->words.w1 = (unsigned int)(dl); \
@ -2279,7 +2280,7 @@ _DW({ \
_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \
_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \
_g->words.w1 = (unsigned int)(zval); \
}
})
#define gsSPBranchLessZraw(dl, vtx, zval) \
{ _SHIFTL(G_RDPHALF_1,24,8), \
@ -2329,12 +2330,12 @@ _DW({ \
* gSPDma_io DMA to/from DMEM/IMEM for DEBUG.
*/
#define gSPDma_io(pkt, flag, dmem, dram, size) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
_g->words.w0 = _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \
_SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12); \
_g->words.w1 = (unsigned int)(dram); \
}
})
#define gsSPDma_io(flag, dmem, dram, size) \
{ \
@ -2409,10 +2410,10 @@ _DW({ \
* n should be one of LIGHT_1, LIGHT_2, ..., LIGHT_8
*/
#define gSPLightColor(pkt, n, col) \
{ \
_DW({ \
gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col); \
gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col); \
}
})
#define gsSPLightColor(n, col) \
gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col), \
gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col)
@ -2420,34 +2421,34 @@ _DW({ \
/* These macros use a structure "name" which is init'd with the gdSPDefLights macros*/
#define gSPSetLights0(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_0); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.a,2); \
}
})
#define gsSPSetLights0(name) \
gsSPNumLights(NUMLIGHTS_0), \
gsSPLight(&name.l[0],1), \
gsSPLight(&name.a,2)
#define gSPSetLights1(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_1); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.a,2); \
}
})
#define gsSPSetLights1(name) \
gsSPNumLights(NUMLIGHTS_1), \
gsSPLight(&name.l[0],1), \
gsSPLight(&name.a,2)
#define gSPSetLights2(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_2); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
gSPLight(pkt,&name.a,3); \
}
})
#define gsSPSetLights2(name) \
gsSPNumLights(NUMLIGHTS_2), \
gsSPLight(&name.l[0],1), \
@ -2455,13 +2456,13 @@ _DW({ \
gsSPLight(&name.a,3)
#define gSPSetLights3(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_3); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
gSPLight(pkt,&name.l[2],3); \
gSPLight(pkt,&name.a,4); \
}
})
#define gsSPSetLights3(name) \
gsSPNumLights(NUMLIGHTS_3), \
gsSPLight(&name.l[0],1), \
@ -2470,14 +2471,14 @@ _DW({ \
gsSPLight(&name.a,4)
#define gSPSetLights4(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_4); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
gSPLight(pkt,&name.l[2],3); \
gSPLight(pkt,&name.l[3],4); \
gSPLight(pkt,&name.a,5); \
}
})
#define gsSPSetLights4(name) \
gsSPNumLights(NUMLIGHTS_4), \
gsSPLight(&name.l[0],1), \
@ -2487,7 +2488,7 @@ _DW({ \
gsSPLight(&name.a,5)
#define gSPSetLights5(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_5); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
@ -2495,7 +2496,7 @@ _DW({ \
gSPLight(pkt,&name.l[3],4); \
gSPLight(pkt,&name.l[4],5); \
gSPLight(pkt,&name.a,6); \
}
})
#define gsSPSetLights5(name) \
gsSPNumLights(NUMLIGHTS_5), \
@ -2507,7 +2508,7 @@ _DW({ \
gsSPLight(&name.a,6)
#define gSPSetLights6(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_6); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
@ -2516,7 +2517,7 @@ _DW({ \
gSPLight(pkt,&name.l[4],5); \
gSPLight(pkt,&name.l[5],6); \
gSPLight(pkt,&name.a,7); \
}
})
#define gsSPSetLights6(name) \
gsSPNumLights(NUMLIGHTS_6), \
@ -2529,7 +2530,7 @@ _DW({ \
gsSPLight(&name.a,7)
#define gSPSetLights7(pkt,name) \
{ \
_DW({ \
gSPNumLights(pkt,NUMLIGHTS_7); \
gSPLight(pkt,&name.l[0],1); \
gSPLight(pkt,&name.l[1],2); \
@ -2539,7 +2540,7 @@ _DW({ \
gSPLight(pkt,&name.l[5],6); \
gSPLight(pkt,&name.l[6],7); \
gSPLight(pkt,&name.a,8); \
}
})
#define gsSPSetLights7(name) \
gsSPNumLights(NUMLIGHTS_7), \
@ -2654,7 +2655,7 @@ _DW({ \
* which is currently reserved in the microcode.
*/
# define gSPTextureL(pkt, s, t, level, xparam, tile, on) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \
@ -2662,7 +2663,7 @@ _DW({ \
_SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | \
_SHIFTL((on),1,7)); \
_g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16)); \
}
})
# define gsSPTextureL(s, t, level, xparam, tile, on) \
{ \
(_SHIFTL(G_TEXTURE,24,8) | _SHIFTL((xparam),16,8) | \
@ -2947,12 +2948,12 @@ _DW({ \
*/
#define gDPSetCombine(pkt, muxs0, muxs1) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24);\
_g->words.w1 = (unsigned int)(muxs1); \
}
})
#define gsDPSetCombine(muxs0, muxs1) \
{ \
@ -3287,7 +3288,7 @@ _DW({ \
#define gDPLoadTextureBlock(pkt, timg, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \
0 , cmt, maskt, shiftt, cms, masks, shifts); \
@ -3303,11 +3304,11 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
#define gDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \
0 , cmt, maskt, shiftt, cms, masks, shifts); \
@ -3323,14 +3324,14 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/* Load fix rww 27jun95 */
/* The S at the end means odd lines are already word Swapped */
#define gDPLoadTextureBlockS(pkt, timg, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \
0 , cmt, maskt, shiftt, cms, masks, shifts); \
@ -3345,7 +3346,7 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* Allow tmem address and render tile to be specified.
@ -3353,7 +3354,7 @@ _DW({ \
*/
#define gDPLoadMultiBlockS(pkt, timg, tmem, rtile, fmt, siz, width, \
height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \
0 , cmt, maskt, shiftt, cms, masks, shifts); \
@ -3368,12 +3369,12 @@ _DW({ \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
#define gDPLoadTextureBlockYuvS(pkt, timg, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \
0 , cmt, maskt, shiftt, cms, masks, shifts); \
@ -3388,14 +3389,14 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* allows tmem address to be specified
*/
#define _gDPLoadTextureBlock(pkt, timg, tmem, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \
0, cmt, maskt, shiftt, cms, masks, shifts); \
@ -3410,14 +3411,14 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* allows tmem address and render tile to be specified
*/
#define _gDPLoadTextureBlockTile(pkt, timg, tmem, rtile, fmt, siz, width, \
height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3432,14 +3433,14 @@ _DW({ \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* allows tmem address and render tile to be specified
*/
#define gDPLoadMultiBlock(pkt, timg, tmem, rtile, fmt, siz, width, \
height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg); \
gDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3454,7 +3455,7 @@ _DW({ \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
#define gsDPLoadTextureBlock(timg, fmt, siz, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
@ -3594,7 +3595,7 @@ _DW({ \
#define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3609,14 +3610,14 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/* Load fix rww 27jun95 */
/* The S at the end means odd lines are already word Swapped */
#define gDPLoadTextureBlock_4bS(pkt, timg, fmt, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3630,14 +3631,14 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* 4-bit load block. Useful when loading multiple tiles
*/
#define gDPLoadMultiBlock_4b(pkt, timg, tmem, rtile, fmt, width, height,\
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3652,7 +3653,7 @@ _DW({ \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* 4-bit load block. Allows tmem and render tile to be specified. Useful when
@ -3660,7 +3661,7 @@ _DW({ \
*/
#define gDPLoadMultiBlock_4bS(pkt, timg, tmem, rtile, fmt, width, height,\
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3674,12 +3675,12 @@ _DW({ \
gDPSetTileSize(pkt, rtile, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
#define _gDPLoadTextureBlock_4b(pkt, timg, tmem, fmt, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0, \
cmt, maskt, shiftt, cms, masks, shifts); \
@ -3694,7 +3695,7 @@ _DW({ \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \
((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
}
})
#define gsDPLoadTextureBlock_4b(timg, fmt, width, height, \
pal, cms, cmt, masks, maskt, shifts, shiftt) \
@ -3931,7 +3932,7 @@ _DW({ \
#define gDPLoadTextureTile_4b(pkt, timg, fmt, width, height, \
uls, ult, lrs, lrt, pal, \
cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \
(((((lrs)-(uls)+1)>>1)+7)>>3), 0, \
@ -3953,7 +3954,7 @@ _DW({ \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
})
/*
* Load texture tile. Allows tmem address and render tile to be specified.
@ -3962,7 +3963,7 @@ _DW({ \
#define gDPLoadMultiTile_4b(pkt, timg, tmem, rtile, fmt, width, height, \
uls, ult, lrs, lrt, pal, \
cms, cmt, masks, maskt, shifts, shiftt) \
{ \
_DW({ \
gDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg); \
gDPSetTile(pkt, fmt, G_IM_SIZ_8b, \
(((((lrs)-(uls)+1)>>1)+7)>>3), tmem, \
@ -3984,7 +3985,7 @@ _DW({ \
(ult)<<G_TEXTURE_IMAGE_FRAC, \
(lrs)<<G_TEXTURE_IMAGE_FRAC, \
(lrt)<<G_TEXTURE_IMAGE_FRAC); \
}
})
#define gsDPLoadTextureTile_4b(timg, fmt, width, height, \
uls, ult, lrs, lrt, pal, \
@ -4045,7 +4046,7 @@ _DW({ \
#ifndef _HW_VERSION_1
#define gDPLoadTLUT_pal16(pkt, pal, dram) \
{ \
_DW({ \
gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \
gDPTileSync(pkt); \
gDPSetTile(pkt, 0, 0, 0, (256+(((pal)&0xf)*16)), \
@ -4053,7 +4054,7 @@ _DW({ \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15); \
gDPPipeSync(pkt); \
}
})
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
@ -4099,7 +4100,7 @@ _DW({ \
#ifndef _HW_VERSION_1
#define gDPLoadTLUT_pal256(pkt, dram) \
{ \
_DW({ \
gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \
gDPTileSync(pkt); \
gDPSetTile(pkt, 0, 0, 0, 256, \
@ -4107,7 +4108,7 @@ _DW({ \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255); \
gDPPipeSync(pkt); \
}
})
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
@ -4147,7 +4148,7 @@ _DW({ \
#ifndef _HW_VERSION_1
#define gDPLoadTLUT(pkt, count, tmemaddr, dram) \
{ \
_DW({ \
gDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram); \
gDPTileSync(pkt); \
gDPSetTile(pkt, 0, 0, 0, tmemaddr, \
@ -4155,7 +4156,7 @@ _DW({ \
gDPLoadSync(pkt); \
gDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1)); \
gDPPipeSync(pkt); \
}
})
#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */
@ -4253,7 +4254,7 @@ _DW({ \
/* like gDPFillRectangle but accepts negative arguments */
#define gDPScisFillRectangle(pkt, ulx, uly, lrx, lry) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \
@ -4261,10 +4262,10 @@ _DW({ \
_SHIFTL(MAX((lry),0), 2, 10)); \
_g->words.w1 = (_SHIFTL(MAX((ulx),0), 14, 10) | \
_SHIFTL(MAX((uly),0), 2, 10)); \
}
})
#define gDPSetConvert(pkt, k0, k1, k2, k3, k4, k5) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) | \
@ -4272,7 +4273,7 @@ _DW({ \
_SHIFTR(k2, 5, 4)); \
_g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | \
_SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9)); \
}
})
#define gsDPSetConvert(k0, k1, k2, k3, k4, k5) \
{ \
@ -4283,13 +4284,13 @@ _DW({ \
}
#define gDPSetKeyR(pkt, cR, sR, wR) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8); \
_g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | \
_SHIFTL(sR, 0, 8)); \
}
})
#define gsDPSetKeyR(cR, sR, wR) \
{ \
@ -4298,14 +4299,14 @@ _DW({ \
}
#define gDPSetKeyGB(pkt, cG, sG, wG, cB, sB, wB) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) | \
_SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12)); \
_g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | \
_SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8)); \
}
})
#define gsDPSetKeyGB(cG, sG, wG, cB, sB, wB) \
{ \
@ -4329,12 +4330,12 @@ _DW({ \
}
#define gDPParam(pkt, cmd, param) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = _SHIFTL(cmd, 24, 8); \
_g->words.w1 = (param); \
}
})
#define gsDPParam(cmd, param) \
{ \
@ -4358,7 +4359,7 @@ _DW({ \
}
#define gDPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
if (pkt); \
_g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \
@ -4368,7 +4369,7 @@ _DW({ \
_g ++; \
_g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \
_g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \
}
})
#define gsDPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
{ \
@ -4382,7 +4383,7 @@ _DW({ \
}
#define gDPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
if (pkt); \
_g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \
@ -4392,7 +4393,7 @@ _DW({ \
_g ++; \
_g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)); \
_g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)); \
}
})
#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
(_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\
@ -4414,7 +4415,7 @@ _DW({ \
/* like gSPTextureRectangle but accepts negative position arguments */
#define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | \
@ -4438,7 +4439,7 @@ _DW({ \
0, 16))); \
gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | \
_SHIFTL((dtdy), 0, 16))); \
}
})
#define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
(_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \
@ -4448,7 +4449,7 @@ _DW({ \
gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))
#define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
_g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\
@ -4457,19 +4458,19 @@ _DW({ \
_SHIFTL(yl, 0, 12)); \
gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))); \
gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \
}
})
#define gsDPWord(wordhi, wordlo) \
gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), \
gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo))
#define gDPWord(pkt, wordhi, wordlo) \
{ \
_DW({ \
Gfx *_g = (Gfx *)(pkt); \
\
gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); \
gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); \
}
})
#define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC)
#define gsDPFullSync() gsDPNoParam(G_RDPFULLSYNC)