You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Refresh 2
This commit is contained in:
473
include/PR/abi.h
473
include/PR/abi.h
File diff suppressed because it is too large
Load Diff
204
include/PR/gbi.h
204
include/PR/gbi.h
@@ -18,7 +18,7 @@
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef _GBI_H_
|
||||
#define _GBI_H_
|
||||
#define _GBI_H_
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
@@ -91,57 +91,57 @@
|
||||
# ifndef F3DEX_GBI
|
||||
# define F3DEX_GBI
|
||||
# endif
|
||||
#define G_NOOP 0x00
|
||||
#define G_RDPHALF_2 0xf1
|
||||
#define G_SETOTHERMODE_H 0xe3
|
||||
#define G_SETOTHERMODE_L 0xe2
|
||||
#define G_RDPHALF_1 0xe1
|
||||
#define G_SPNOOP 0xe0
|
||||
#define G_ENDDL 0xdf
|
||||
#define G_DL 0xde
|
||||
#define G_LOAD_UCODE 0xdd
|
||||
#define G_MOVEMEM 0xdc
|
||||
#define G_MOVEWORD 0xdb
|
||||
#define G_MTX 0xda
|
||||
#define G_NOOP 0x00
|
||||
#define G_RDPHALF_2 0xf1
|
||||
#define G_SETOTHERMODE_H 0xe3
|
||||
#define G_SETOTHERMODE_L 0xe2
|
||||
#define G_RDPHALF_1 0xe1
|
||||
#define G_SPNOOP 0xe0
|
||||
#define G_ENDDL 0xdf
|
||||
#define G_DL 0xde
|
||||
#define G_LOAD_UCODE 0xdd
|
||||
#define G_MOVEMEM 0xdc
|
||||
#define G_MOVEWORD 0xdb
|
||||
#define G_MTX 0xda
|
||||
#define G_GEOMETRYMODE 0xd9
|
||||
#define G_POPMTX 0xd8
|
||||
#define G_TEXTURE 0xd7
|
||||
#define G_DMA_IO 0xd6
|
||||
#define G_SPECIAL_1 0xd5
|
||||
#define G_SPECIAL_2 0xd4
|
||||
#define G_SPECIAL_3 0xd3
|
||||
#define G_POPMTX 0xd8
|
||||
#define G_TEXTURE 0xd7
|
||||
#define G_DMA_IO 0xd6
|
||||
#define G_SPECIAL_1 0xd5
|
||||
#define G_SPECIAL_2 0xd4
|
||||
#define G_SPECIAL_3 0xd3
|
||||
|
||||
#define G_VTX 0x01
|
||||
#define G_MODIFYVTX 0x02
|
||||
#define G_CULLDL 0x03
|
||||
#define G_BRANCH_Z 0x04
|
||||
#define G_TRI1 0x05
|
||||
#define G_VTX 0x01
|
||||
#define G_MODIFYVTX 0x02
|
||||
#define G_CULLDL 0x03
|
||||
#define G_BRANCH_Z 0x04
|
||||
#define G_TRI1 0x05
|
||||
#define G_TRI2 0x06
|
||||
#define G_QUAD 0x07
|
||||
#define G_LINE3D 0x08
|
||||
#else /* F3DEX_GBI_2 */
|
||||
#else /* F3DEX_GBI_2 */
|
||||
|
||||
/* DMA commands: */
|
||||
#define G_SPNOOP 0 /* handle 0 gracefully */
|
||||
#define G_MTX 1
|
||||
#define G_SPNOOP 0 /* handle 0 gracefully */
|
||||
#define G_MTX 1
|
||||
#define G_RESERVED0 2 /* not implemeted */
|
||||
#define G_MOVEMEM 3 /* move a block of memory (up to 4 words) to dmem */
|
||||
#define G_VTX 4
|
||||
#define G_VTX 4
|
||||
#define G_RESERVED1 5 /* not implemeted */
|
||||
#define G_DL 6
|
||||
#define G_DL 6
|
||||
#define G_RESERVED2 7 /* not implemeted */
|
||||
#define G_RESERVED3 8 /* not implemeted */
|
||||
#define G_SPRITE2D_BASE 9 /* sprite command */
|
||||
|
||||
/* IMMEDIATE commands: */
|
||||
#define G_IMMFIRST -65
|
||||
#define G_TRI1 (G_IMMFIRST-0)
|
||||
#define G_IMMFIRST -65
|
||||
#define G_TRI1 (G_IMMFIRST-0)
|
||||
#define G_CULLDL (G_IMMFIRST-1)
|
||||
#define G_POPMTX (G_IMMFIRST-2)
|
||||
#define G_MOVEWORD (G_IMMFIRST-3)
|
||||
#define G_TEXTURE (G_IMMFIRST-4)
|
||||
#define G_SETOTHERMODE_H (G_IMMFIRST-5)
|
||||
#define G_SETOTHERMODE_L (G_IMMFIRST-6)
|
||||
#define G_POPMTX (G_IMMFIRST-2)
|
||||
#define G_MOVEWORD (G_IMMFIRST-3)
|
||||
#define G_TEXTURE (G_IMMFIRST-4)
|
||||
#define G_SETOTHERMODE_H (G_IMMFIRST-5)
|
||||
#define G_SETOTHERMODE_L (G_IMMFIRST-6)
|
||||
#define G_ENDDL (G_IMMFIRST-7)
|
||||
#define G_SETGEOMETRYMODE (G_IMMFIRST-8)
|
||||
#define G_CLEARGEOMETRYMODE (G_IMMFIRST-9)
|
||||
@@ -164,36 +164,36 @@
|
||||
#define G_SPRITE2D_DRAW (G_IMMFIRST-2)
|
||||
|
||||
/* RDP commands: */
|
||||
#define G_NOOP 0xc0 /* 0 */
|
||||
#define G_NOOP 0xc0 /* 0 */
|
||||
|
||||
#endif /* F3DEX_GBI_2 */
|
||||
#endif /* F3DEX_GBI_2 */
|
||||
|
||||
/* RDP commands: */
|
||||
#define G_SETCIMG 0xff /* -1 */
|
||||
#define G_SETZIMG 0xfe /* -2 */
|
||||
#define G_SETTIMG 0xfd /* -3 */
|
||||
#define G_SETCOMBINE 0xfc /* -4 */
|
||||
#define G_SETENVCOLOR 0xfb /* -5 */
|
||||
#define G_SETPRIMCOLOR 0xfa /* -6 */
|
||||
#define G_SETBLENDCOLOR 0xf9 /* -7 */
|
||||
#define G_SETFOGCOLOR 0xf8 /* -8 */
|
||||
#define G_SETFILLCOLOR 0xf7 /* -9 */
|
||||
#define G_FILLRECT 0xf6 /* -10 */
|
||||
#define G_SETTILE 0xf5 /* -11 */
|
||||
#define G_LOADTILE 0xf4 /* -12 */
|
||||
#define G_LOADBLOCK 0xf3 /* -13 */
|
||||
#define G_SETTILESIZE 0xf2 /* -14 */
|
||||
#define G_LOADTLUT 0xf0 /* -16 */
|
||||
#define G_RDPSETOTHERMODE 0xef /* -17 */
|
||||
#define G_SETPRIMDEPTH 0xee /* -18 */
|
||||
#define G_SETSCISSOR 0xed /* -19 */
|
||||
#define G_SETCONVERT 0xec /* -20 */
|
||||
#define G_SETKEYR 0xeb /* -21 */
|
||||
#define G_SETKEYGB 0xea /* -22 */
|
||||
#define G_RDPFULLSYNC 0xe9 /* -23 */
|
||||
#define G_RDPTILESYNC 0xe8 /* -24 */
|
||||
#define G_RDPPIPESYNC 0xe7 /* -25 */
|
||||
#define G_RDPLOADSYNC 0xe6 /* -26 */
|
||||
#define G_SETCIMG 0xff /* -1 */
|
||||
#define G_SETZIMG 0xfe /* -2 */
|
||||
#define G_SETTIMG 0xfd /* -3 */
|
||||
#define G_SETCOMBINE 0xfc /* -4 */
|
||||
#define G_SETENVCOLOR 0xfb /* -5 */
|
||||
#define G_SETPRIMCOLOR 0xfa /* -6 */
|
||||
#define G_SETBLENDCOLOR 0xf9 /* -7 */
|
||||
#define G_SETFOGCOLOR 0xf8 /* -8 */
|
||||
#define G_SETFILLCOLOR 0xf7 /* -9 */
|
||||
#define G_FILLRECT 0xf6 /* -10 */
|
||||
#define G_SETTILE 0xf5 /* -11 */
|
||||
#define G_LOADTILE 0xf4 /* -12 */
|
||||
#define G_LOADBLOCK 0xf3 /* -13 */
|
||||
#define G_SETTILESIZE 0xf2 /* -14 */
|
||||
#define G_LOADTLUT 0xf0 /* -16 */
|
||||
#define G_RDPSETOTHERMODE 0xef /* -17 */
|
||||
#define G_SETPRIMDEPTH 0xee /* -18 */
|
||||
#define G_SETSCISSOR 0xed /* -19 */
|
||||
#define G_SETCONVERT 0xec /* -20 */
|
||||
#define G_SETKEYR 0xeb /* -21 */
|
||||
#define G_SETKEYGB 0xea /* -22 */
|
||||
#define G_RDPFULLSYNC 0xe9 /* -23 */
|
||||
#define G_RDPTILESYNC 0xe8 /* -24 */
|
||||
#define G_RDPPIPESYNC 0xe7 /* -25 */
|
||||
#define G_RDPLOADSYNC 0xe6 /* -26 */
|
||||
#define G_TEXRECTFLIP 0xe5 /* -27 */
|
||||
#define G_TEXRECT 0xe4 /* -28 */
|
||||
|
||||
@@ -229,10 +229,10 @@
|
||||
*/
|
||||
|
||||
/* masks to build RDP triangle commands: */
|
||||
#define G_RDP_TRI_FILL_MASK 0x08
|
||||
#define G_RDP_TRI_SHADE_MASK 0x04
|
||||
#define G_RDP_TRI_TXTR_MASK 0x02
|
||||
#define G_RDP_TRI_ZBUFF_MASK 0x01
|
||||
#define G_RDP_TRI_FILL_MASK 0x08
|
||||
#define G_RDP_TRI_SHADE_MASK 0x04
|
||||
#define G_RDP_TRI_TXTR_MASK 0x02
|
||||
#define G_RDP_TRI_ZBUFF_MASK 0x01
|
||||
|
||||
/*
|
||||
* HACK:
|
||||
@@ -1485,7 +1485,7 @@ typedef struct {
|
||||
int cmd:8;
|
||||
unsigned int par:8;
|
||||
unsigned int len:16;
|
||||
unsigned int addr;
|
||||
uintptr_t addr;
|
||||
} Gdma;
|
||||
|
||||
/*
|
||||
@@ -1570,7 +1570,7 @@ typedef struct {
|
||||
unsigned int siz:2;
|
||||
unsigned int pad:7;
|
||||
unsigned int wd:12; /* really only 10 bits, extra */
|
||||
unsigned int dram; /* to account for 1024 */
|
||||
uintptr_t dram; /* to account for 1024 */
|
||||
} Gsetimg;
|
||||
|
||||
typedef struct {
|
||||
@@ -1667,16 +1667,21 @@ typedef struct {
|
||||
* Generic Gfx Packet
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned int w0;
|
||||
unsigned int w1;
|
||||
uintptr_t w0;
|
||||
uintptr_t w1;
|
||||
} Gwords;
|
||||
|
||||
/*
|
||||
* This union is the fundamental type of the display list.
|
||||
* It is, by law, exactly 64 bits in size.
|
||||
*
|
||||
* (Edit: except on 64-bit, where it is exactly 128 bit. On little-endian or
|
||||
* 64-bit systems, only the 'words' member may be accessed; the rest of the
|
||||
* structs don't have matching layouts for now.)
|
||||
*/
|
||||
typedef union {
|
||||
Gwords words;
|
||||
#if !defined(__x86_64__) && !defined(__i386__)
|
||||
Gdma dma;
|
||||
Gtri tri;
|
||||
Gline3D line;
|
||||
@@ -1694,6 +1699,7 @@ typedef union {
|
||||
Gloadtile loadtile; /* use for loadblock also, th is dxt */
|
||||
Gsettilesize settilesize;
|
||||
Gloadtlut loadtlut;
|
||||
#endif
|
||||
long long int force_structure_alignment;
|
||||
} Gfx;
|
||||
|
||||
@@ -1709,12 +1715,12 @@ typedef union {
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
\
|
||||
_g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24); \
|
||||
_g->words.w1 = (unsigned int)(s); \
|
||||
_g->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
#define gsDma0p(c, s, l) \
|
||||
{{ \
|
||||
_SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (unsigned int)(s) \
|
||||
_SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (uintptr_t)(s) \
|
||||
}}
|
||||
|
||||
#define gDma1p(pkt, c, s, l, p) \
|
||||
@@ -1723,14 +1729,14 @@ typedef union {
|
||||
\
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \
|
||||
_SHIFTL((l), 0, 16)); \
|
||||
_g->words.w1 = (unsigned int)(s); \
|
||||
_g->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
#define gsDma1p(c, s, l, p) \
|
||||
{{ \
|
||||
(_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \
|
||||
_SHIFTL((l), 0, 16)), \
|
||||
(unsigned int)(s) \
|
||||
(uintptr_t)(s) \
|
||||
}}
|
||||
|
||||
#define gDma2p(pkt, c, adrs, len, idx, ofs) \
|
||||
@@ -1738,13 +1744,13 @@ typedef union {
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \
|
||||
_SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)); \
|
||||
_g->words.w1 = (unsigned int)(adrs); \
|
||||
_g->words.w1 = (uintptr_t)(adrs); \
|
||||
}
|
||||
#define gsDma2p(c, adrs, len, idx, ofs) \
|
||||
{{ \
|
||||
(_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)| \
|
||||
_SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)), \
|
||||
(unsigned int)(adrs) \
|
||||
(uintptr_t)(adrs) \
|
||||
}}
|
||||
|
||||
#define gSPNoOp(pkt) gDma0p(pkt, G_SPNOOP, 0, 0)
|
||||
@@ -1775,12 +1781,12 @@ typedef union {
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = \
|
||||
_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7); \
|
||||
_g->words.w1 = (unsigned int)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
# define gsSPVertex(v, n, v0) \
|
||||
{{ \
|
||||
(_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7)), \
|
||||
(unsigned int)(v) \
|
||||
(uintptr_t)(v) \
|
||||
}}
|
||||
#elif (defined(F3DEX_GBI)||defined(F3DLP_GBI))
|
||||
/*
|
||||
@@ -1845,12 +1851,12 @@ typedef union {
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
\
|
||||
_g->words.w0 = _SHIFTL((c), 24, 8); \
|
||||
_g->words.w1 = (unsigned int)(p0); \
|
||||
_g->words.w1 = (uintptr_t)(p0); \
|
||||
}
|
||||
|
||||
#define gsImmp1(c, p0) \
|
||||
{{ \
|
||||
_SHIFTL((c), 24, 8), (unsigned int)(p0) \
|
||||
_SHIFTL((c), 24, 8), (uintptr_t)(p0) \
|
||||
}}
|
||||
|
||||
#define gImmp2(pkt, c, p0, p1) \
|
||||
@@ -1887,13 +1893,13 @@ typedef union {
|
||||
\
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | \
|
||||
_SHIFTL((p1), 0, 8)); \
|
||||
_g->words.w1 = (unsigned int) (dat); \
|
||||
_g->words.w1 = (uintptr_t) (dat); \
|
||||
}
|
||||
|
||||
#define gsImmp21(c, p0, p1, dat) \
|
||||
{{ \
|
||||
_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8),\
|
||||
(unsigned int) (dat) \
|
||||
(uintptr_t) (dat) \
|
||||
}}
|
||||
|
||||
#ifdef F3DEX_GBI_2
|
||||
@@ -2332,7 +2338,7 @@ typedef union {
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
|
||||
_g->words.w1 = (unsigned int)(dl); \
|
||||
_g->words.w1 = (uintptr_t)(dl); \
|
||||
_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \
|
||||
_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \
|
||||
@@ -2341,7 +2347,7 @@ typedef union {
|
||||
|
||||
#define gsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax) \
|
||||
{{ _SHIFTL(G_RDPHALF_1,24,8), \
|
||||
(unsigned int)(dl), }}, \
|
||||
(uintptr_t)(dl), }}, \
|
||||
{{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\
|
||||
G_DEPTOZSrg(zval, near, far, flag, zmin, zmax), }}
|
||||
|
||||
@@ -2361,7 +2367,7 @@ typedef union {
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
|
||||
_g->words.w1 = (unsigned int)(dl); \
|
||||
_g->words.w1 = (uintptr_t)(dl); \
|
||||
_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)| \
|
||||
_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12)); \
|
||||
@@ -2370,7 +2376,7 @@ typedef union {
|
||||
|
||||
#define gsSPBranchLessZraw(dl, vtx, zval) \
|
||||
{{ _SHIFTL(G_RDPHALF_1,24,8), \
|
||||
(unsigned int)(dl), }}, \
|
||||
(uintptr_t)(dl), }}, \
|
||||
{{ _SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\
|
||||
(unsigned int)(zval), }}
|
||||
|
||||
@@ -2384,19 +2390,19 @@ typedef union {
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8); \
|
||||
_g->words.w1 = (unsigned int)(uc_dstart); \
|
||||
_g->words.w1 = (uintptr_t)(uc_dstart); \
|
||||
_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)| \
|
||||
_SHIFTL((int)(uc_dsize)-1,0,16)); \
|
||||
_g->words.w1 = (unsigned int)(uc_start); \
|
||||
_g->words.w1 = (uintptr_t)(uc_start); \
|
||||
}
|
||||
|
||||
#define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \
|
||||
{{ _SHIFTL(G_RDPHALF_1,24,8), \
|
||||
(unsigned int)(uc_dstart), }}, \
|
||||
(uintptr_t)(uc_dstart), }}, \
|
||||
{{ _SHIFTL(G_LOAD_UCODE,24,8)| \
|
||||
_SHIFTL((int)(uc_dsize)-1,0,16), \
|
||||
(unsigned int)(uc_start), }}
|
||||
(uintptr_t)(uc_start), }}
|
||||
|
||||
#define gSPLoadUcode(pkt, uc_start, uc_dstart) \
|
||||
gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE)
|
||||
@@ -2420,14 +2426,14 @@ typedef union {
|
||||
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); \
|
||||
_g->words.w1 = (uintptr_t)(dram); \
|
||||
}
|
||||
|
||||
#define gsSPDma_io(flag, dmem, dram, size) \
|
||||
{{ \
|
||||
_SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)| \
|
||||
_SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12), \
|
||||
(unsigned int)(dram) \
|
||||
(uintptr_t)(dram) \
|
||||
}}
|
||||
|
||||
#define gSPDmaRead(pkt,dmem,dram,size) gSPDma_io((pkt),0,(dmem),(dram),(size))
|
||||
@@ -3000,14 +3006,14 @@ typedef union {
|
||||
\
|
||||
_g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \
|
||||
_SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12); \
|
||||
_g->words.w1 = (unsigned int)(i); \
|
||||
_g->words.w1 = (uintptr_t)(i); \
|
||||
}
|
||||
|
||||
#define gsSetImage(cmd, fmt, siz, width, i) \
|
||||
{{ \
|
||||
_SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \
|
||||
_SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12), \
|
||||
(unsigned int)(i) \
|
||||
(uintptr_t)(i) \
|
||||
}}
|
||||
|
||||
#define gDPSetColorImage(pkt, f, s, w, i) gSetImage(pkt, G_SETCIMG, f, s, w, i)
|
||||
@@ -4542,15 +4548,15 @@ typedef union {
|
||||
}
|
||||
|
||||
#define gsDPWord(wordhi, wordlo) \
|
||||
gsImmp1(G_RDPHALF_1, (unsigned int)(wordhi)), \
|
||||
gsImmp1(G_RDPHALF_2, (unsigned int)(wordlo))
|
||||
gsImmp1(G_RDPHALF_1, (uintptr_t)(wordhi)), \
|
||||
gsImmp1(G_RDPHALF_2, (uintptr_t)(wordlo))
|
||||
|
||||
#define gDPWord(pkt, wordhi, wordlo) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
\
|
||||
gImmp1(pkt, G_RDPHALF_1, (unsigned int)(wordhi)); \
|
||||
gImmp1(pkt, G_RDPHALF_2, (unsigned int)(wordlo)); \
|
||||
gImmp1(pkt, G_RDPHALF_1, (uintptr_t)(wordhi)); \
|
||||
gImmp1(pkt, G_RDPHALF_2, (uintptr_t)(wordlo)); \
|
||||
}
|
||||
|
||||
#define gDPFullSync(pkt) gDPNoParam(pkt, G_RDPFULLSYNC)
|
||||
|
||||
@@ -10,13 +10,19 @@
|
||||
|
||||
/* Macros */
|
||||
|
||||
.macro bytes4 byte1, byte2, byte3, byte4
|
||||
.word ((\byte1 & 0xFF) << 24) | ((\byte2 & 0xFF) << 16) | ((\byte3 & 0xFF) << 8) | (\byte4 & 0xFF)
|
||||
.endm
|
||||
|
||||
/* commands with no parameters */
|
||||
.macro f3d_noparam cmd
|
||||
.word (\cmd << 24), 0x00000000
|
||||
.word (\cmd << 24)
|
||||
.word 0
|
||||
.endm
|
||||
|
||||
.macro gsImmp1 cmd, param
|
||||
.word (\cmd << 24), \param
|
||||
.word (\cmd << 24)
|
||||
.word \param
|
||||
.endm
|
||||
|
||||
/* DMA helper */
|
||||
@@ -27,14 +33,14 @@
|
||||
|
||||
/* DMA helper 3*/
|
||||
.macro gsDma3p cmd, byte2, byte3, byte4, segAddr
|
||||
.byte \cmd, \byte2, \byte3, \byte4
|
||||
bytes4 \cmd, \byte2, \byte3, \byte4
|
||||
.word \segAddr
|
||||
.endm
|
||||
|
||||
/* Helper for RGBA colors. */
|
||||
.macro sDPRGBColor cmd r, g, b, a
|
||||
.word \cmd << 24
|
||||
.byte \r, \g, \b, \a
|
||||
bytes4 \r, \g, \b, \a
|
||||
.endm
|
||||
|
||||
/* Opcodes */
|
||||
@@ -667,7 +673,7 @@
|
||||
.word (\v0*10 << 16) | (\v1*10 << 8) | \v2*10
|
||||
.endif
|
||||
.else /* Fast3DEX2 */
|
||||
.byte G_TRI1, \v0*2, \v1*2, \v2*2
|
||||
bytes4 G_TRI1, \v0*2, \v1*2, \v2*2
|
||||
.word 0
|
||||
.endif
|
||||
.endm
|
||||
|
||||
@@ -53,8 +53,8 @@ typedef union
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int w0;
|
||||
unsigned int w1;
|
||||
uintptr_t w0;
|
||||
uintptr_t w1;
|
||||
} Gwords;
|
||||
|
||||
/* TODO: fill in the rest of the members */
|
||||
@@ -258,35 +258,35 @@ typedef union
|
||||
|
||||
/* G_SETOTHERMODE_L render modes */
|
||||
|
||||
#define AA_EN 0x8
|
||||
#define Z_CMP 0x10
|
||||
#define Z_UPD 0x20
|
||||
#define IM_RD 0x40
|
||||
#define CLR_ON_CVG 0x80
|
||||
#define CVG_DST_CLAMP 0
|
||||
#define CVG_DST_WRAP 0x100
|
||||
#define CVG_DST_FULL 0x200
|
||||
#define CVG_DST_SAVE 0x300
|
||||
#define ZMODE_OPA 0
|
||||
#define ZMODE_INTER 0x400
|
||||
#define ZMODE_XLU 0x800
|
||||
#define ZMODE_DEC 0xc00
|
||||
#define CVG_X_ALPHA 0x1000
|
||||
#define ALPHA_CVG_SEL 0x2000
|
||||
#define FORCE_BL 0x4000
|
||||
#define TEX_EDGE 0x0000
|
||||
#define AA_EN 0x8
|
||||
#define Z_CMP 0x10
|
||||
#define Z_UPD 0x20
|
||||
#define IM_RD 0x40
|
||||
#define CLR_ON_CVG 0x80
|
||||
#define CVG_DST_CLAMP 0
|
||||
#define CVG_DST_WRAP 0x100
|
||||
#define CVG_DST_FULL 0x200
|
||||
#define CVG_DST_SAVE 0x300
|
||||
#define ZMODE_OPA 0
|
||||
#define ZMODE_INTER 0x400
|
||||
#define ZMODE_XLU 0x800
|
||||
#define ZMODE_DEC 0xc00
|
||||
#define CVG_X_ALPHA 0x1000
|
||||
#define ALPHA_CVG_SEL 0x2000
|
||||
#define FORCE_BL 0x4000
|
||||
#define TEX_EDGE 0x0000
|
||||
|
||||
#define G_BL_CLR_IN 0
|
||||
#define G_BL_CLR_MEM 1
|
||||
#define G_BL_CLR_BL 2
|
||||
#define G_BL_CLR_FOG 3
|
||||
#define G_BL_1MA 0
|
||||
#define G_BL_A_MEM 1
|
||||
#define G_BL_A_IN 0
|
||||
#define G_BL_A_FOG 1
|
||||
#define G_BL_A_SHADE 2
|
||||
#define G_BL_1 2
|
||||
#define G_BL_0 3
|
||||
#define G_BL_CLR_IN 0
|
||||
#define G_BL_CLR_MEM 1
|
||||
#define G_BL_CLR_BL 2
|
||||
#define G_BL_CLR_FOG 3
|
||||
#define G_BL_1MA 0
|
||||
#define G_BL_A_MEM 1
|
||||
#define G_BL_A_IN 0
|
||||
#define G_BL_A_FOG 1
|
||||
#define G_BL_A_SHADE 2
|
||||
#define G_BL_1 2
|
||||
#define G_BL_0 3
|
||||
|
||||
#define GBL_c1(m1a, m1b, m2a, m2b) \
|
||||
(m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18
|
||||
@@ -511,93 +511,93 @@ typedef union
|
||||
|
||||
|
||||
|
||||
#define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1)
|
||||
#define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2)
|
||||
#define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1)
|
||||
#define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2)
|
||||
#define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1)
|
||||
#define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2)
|
||||
#define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1)
|
||||
#define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2)
|
||||
#define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1)
|
||||
#define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2)
|
||||
#define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1)
|
||||
#define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2)
|
||||
#define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1)
|
||||
#define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2)
|
||||
#define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1)
|
||||
#define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2)
|
||||
#define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1)
|
||||
#define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2)
|
||||
#define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1)
|
||||
#define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2)
|
||||
#define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1)
|
||||
#define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2)
|
||||
#define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1)
|
||||
#define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2)
|
||||
#define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1)
|
||||
#define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2)
|
||||
#define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1)
|
||||
#define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2)
|
||||
#define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1)
|
||||
#define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2)
|
||||
#define G_RM_AA_ZB_OPA_SURF RM_AA_ZB_OPA_SURF(1)
|
||||
#define G_RM_AA_ZB_OPA_SURF2 RM_AA_ZB_OPA_SURF(2)
|
||||
#define G_RM_AA_ZB_XLU_SURF RM_AA_ZB_XLU_SURF(1)
|
||||
#define G_RM_AA_ZB_XLU_SURF2 RM_AA_ZB_XLU_SURF(2)
|
||||
#define G_RM_AA_ZB_OPA_DECAL RM_AA_ZB_OPA_DECAL(1)
|
||||
#define G_RM_AA_ZB_OPA_DECAL2 RM_AA_ZB_OPA_DECAL(2)
|
||||
#define G_RM_AA_ZB_XLU_DECAL RM_AA_ZB_XLU_DECAL(1)
|
||||
#define G_RM_AA_ZB_XLU_DECAL2 RM_AA_ZB_XLU_DECAL(2)
|
||||
#define G_RM_AA_ZB_OPA_INTER RM_AA_ZB_OPA_INTER(1)
|
||||
#define G_RM_AA_ZB_OPA_INTER2 RM_AA_ZB_OPA_INTER(2)
|
||||
#define G_RM_AA_ZB_XLU_INTER RM_AA_ZB_XLU_INTER(1)
|
||||
#define G_RM_AA_ZB_XLU_INTER2 RM_AA_ZB_XLU_INTER(2)
|
||||
#define G_RM_AA_ZB_XLU_LINE RM_AA_ZB_XLU_LINE(1)
|
||||
#define G_RM_AA_ZB_XLU_LINE2 RM_AA_ZB_XLU_LINE(2)
|
||||
#define G_RM_AA_ZB_DEC_LINE RM_AA_ZB_DEC_LINE(1)
|
||||
#define G_RM_AA_ZB_DEC_LINE2 RM_AA_ZB_DEC_LINE(2)
|
||||
#define G_RM_AA_ZB_TEX_EDGE RM_AA_ZB_TEX_EDGE(1)
|
||||
#define G_RM_AA_ZB_TEX_EDGE2 RM_AA_ZB_TEX_EDGE(2)
|
||||
#define G_RM_AA_ZB_TEX_INTER RM_AA_ZB_TEX_INTER(1)
|
||||
#define G_RM_AA_ZB_TEX_INTER2 RM_AA_ZB_TEX_INTER(2)
|
||||
#define G_RM_AA_ZB_SUB_SURF RM_AA_ZB_SUB_SURF(1)
|
||||
#define G_RM_AA_ZB_SUB_SURF2 RM_AA_ZB_SUB_SURF(2)
|
||||
#define G_RM_AA_ZB_PCL_SURF RM_AA_ZB_PCL_SURF(1)
|
||||
#define G_RM_AA_ZB_PCL_SURF2 RM_AA_ZB_PCL_SURF(2)
|
||||
#define G_RM_AA_ZB_OPA_TERR RM_AA_ZB_OPA_TERR(1)
|
||||
#define G_RM_AA_ZB_OPA_TERR2 RM_AA_ZB_OPA_TERR(2)
|
||||
#define G_RM_AA_ZB_TEX_TERR RM_AA_ZB_TEX_TERR(1)
|
||||
#define G_RM_AA_ZB_TEX_TERR2 RM_AA_ZB_TEX_TERR(2)
|
||||
#define G_RM_AA_ZB_SUB_TERR RM_AA_ZB_SUB_TERR(1)
|
||||
#define G_RM_AA_ZB_SUB_TERR2 RM_AA_ZB_SUB_TERR(2)
|
||||
|
||||
#define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1)
|
||||
#define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2)
|
||||
#define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1)
|
||||
#define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2)
|
||||
#define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1)
|
||||
#define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2)
|
||||
#define G_RM_RA_ZB_OPA_SURF RM_RA_ZB_OPA_SURF(1)
|
||||
#define G_RM_RA_ZB_OPA_SURF2 RM_RA_ZB_OPA_SURF(2)
|
||||
#define G_RM_RA_ZB_OPA_DECAL RM_RA_ZB_OPA_DECAL(1)
|
||||
#define G_RM_RA_ZB_OPA_DECAL2 RM_RA_ZB_OPA_DECAL(2)
|
||||
#define G_RM_RA_ZB_OPA_INTER RM_RA_ZB_OPA_INTER(1)
|
||||
#define G_RM_RA_ZB_OPA_INTER2 RM_RA_ZB_OPA_INTER(2)
|
||||
|
||||
#define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1)
|
||||
#define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2)
|
||||
#define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1)
|
||||
#define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2)
|
||||
#define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1)
|
||||
#define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2)
|
||||
#define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1)
|
||||
#define G_RM_AA_DEC_LINE2 RM_AA_DEC_LINE(2)
|
||||
#define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1)
|
||||
#define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2)
|
||||
#define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1)
|
||||
#define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2)
|
||||
#define G_RM_AA_PCL_SURF RM_AA_PCL_SURF(1)
|
||||
#define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2)
|
||||
#define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1)
|
||||
#define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2)
|
||||
#define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1)
|
||||
#define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2)
|
||||
#define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1)
|
||||
#define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2)
|
||||
#define G_RM_AA_OPA_SURF RM_AA_OPA_SURF(1)
|
||||
#define G_RM_AA_OPA_SURF2 RM_AA_OPA_SURF(2)
|
||||
#define G_RM_AA_XLU_SURF RM_AA_XLU_SURF(1)
|
||||
#define G_RM_AA_XLU_SURF2 RM_AA_XLU_SURF(2)
|
||||
#define G_RM_AA_XLU_LINE RM_AA_XLU_LINE(1)
|
||||
#define G_RM_AA_XLU_LINE2 RM_AA_XLU_LINE(2)
|
||||
#define G_RM_AA_DEC_LINE RM_AA_DEC_LINE(1)
|
||||
#define G_RM_AA_DEC_LINE2 RM_AA_DEC_LINE(2)
|
||||
#define G_RM_AA_TEX_EDGE RM_AA_TEX_EDGE(1)
|
||||
#define G_RM_AA_TEX_EDGE2 RM_AA_TEX_EDGE(2)
|
||||
#define G_RM_AA_SUB_SURF RM_AA_SUB_SURF(1)
|
||||
#define G_RM_AA_SUB_SURF2 RM_AA_SUB_SURF(2)
|
||||
#define G_RM_AA_PCL_SURF RM_AA_PCL_SURF(1)
|
||||
#define G_RM_AA_PCL_SURF2 RM_AA_PCL_SURF(2)
|
||||
#define G_RM_AA_OPA_TERR RM_AA_OPA_TERR(1)
|
||||
#define G_RM_AA_OPA_TERR2 RM_AA_OPA_TERR(2)
|
||||
#define G_RM_AA_TEX_TERR RM_AA_TEX_TERR(1)
|
||||
#define G_RM_AA_TEX_TERR2 RM_AA_TEX_TERR(2)
|
||||
#define G_RM_AA_SUB_TERR RM_AA_SUB_TERR(1)
|
||||
#define G_RM_AA_SUB_TERR2 RM_AA_SUB_TERR(2)
|
||||
|
||||
#define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1)
|
||||
#define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2)
|
||||
#define G_RM_RA_OPA_SURF RM_RA_OPA_SURF(1)
|
||||
#define G_RM_RA_OPA_SURF2 RM_RA_OPA_SURF(2)
|
||||
|
||||
#define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1)
|
||||
#define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2)
|
||||
#define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1)
|
||||
#define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2)
|
||||
#define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1)
|
||||
#define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2)
|
||||
#define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1)
|
||||
#define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2)
|
||||
#define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1)
|
||||
#define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2)
|
||||
#define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1)
|
||||
#define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2)
|
||||
#define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1)
|
||||
#define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2)
|
||||
#define G_RM_ZB_OPA_SURF RM_ZB_OPA_SURF(1)
|
||||
#define G_RM_ZB_OPA_SURF2 RM_ZB_OPA_SURF(2)
|
||||
#define G_RM_ZB_XLU_SURF RM_ZB_XLU_SURF(1)
|
||||
#define G_RM_ZB_XLU_SURF2 RM_ZB_XLU_SURF(2)
|
||||
#define G_RM_ZB_OPA_DECAL RM_ZB_OPA_DECAL(1)
|
||||
#define G_RM_ZB_OPA_DECAL2 RM_ZB_OPA_DECAL(2)
|
||||
#define G_RM_ZB_XLU_DECAL RM_ZB_XLU_DECAL(1)
|
||||
#define G_RM_ZB_XLU_DECAL2 RM_ZB_XLU_DECAL(2)
|
||||
#define G_RM_ZB_CLD_SURF RM_ZB_CLD_SURF(1)
|
||||
#define G_RM_ZB_CLD_SURF2 RM_ZB_CLD_SURF(2)
|
||||
#define G_RM_ZB_OVL_SURF RM_ZB_OVL_SURF(1)
|
||||
#define G_RM_ZB_OVL_SURF2 RM_ZB_OVL_SURF(2)
|
||||
#define G_RM_ZB_PCL_SURF RM_ZB_PCL_SURF(1)
|
||||
#define G_RM_ZB_PCL_SURF2 RM_ZB_PCL_SURF(2)
|
||||
|
||||
#define G_RM_OPA_SURF RM_OPA_SURF(1)
|
||||
#define G_RM_OPA_SURF2 RM_OPA_SURF(2)
|
||||
#define G_RM_XLU_SURF RM_XLU_SURF(1)
|
||||
#define G_RM_XLU_SURF2 RM_XLU_SURF(2)
|
||||
#define G_RM_CLD_SURF RM_CLD_SURF(1)
|
||||
#define G_RM_CLD_SURF2 RM_CLD_SURF(2)
|
||||
#define G_RM_TEX_EDGE RM_TEX_EDGE(1)
|
||||
#define G_RM_TEX_EDGE2 RM_TEX_EDGE(2)
|
||||
#define G_RM_PCL_SURF RM_PCL_SURF(1)
|
||||
#define G_RM_PCL_SURF2 RM_PCL_SURF(2)
|
||||
#define G_RM_OPA_SURF RM_OPA_SURF(1)
|
||||
#define G_RM_OPA_SURF2 RM_OPA_SURF(2)
|
||||
#define G_RM_XLU_SURF RM_XLU_SURF(1)
|
||||
#define G_RM_XLU_SURF2 RM_XLU_SURF(2)
|
||||
#define G_RM_CLD_SURF RM_CLD_SURF(1)
|
||||
#define G_RM_CLD_SURF2 RM_CLD_SURF(2)
|
||||
#define G_RM_TEX_EDGE RM_TEX_EDGE(1)
|
||||
#define G_RM_TEX_EDGE2 RM_TEX_EDGE(2)
|
||||
#define G_RM_PCL_SURF RM_PCL_SURF(1)
|
||||
#define G_RM_PCL_SURF2 RM_PCL_SURF(2)
|
||||
#define G_RM_ADD RM_ADD(1)
|
||||
#define G_RM_ADD2 RM_ADD(2)
|
||||
#define G_RM_NOOP RM_NOOP(1)
|
||||
@@ -608,14 +608,14 @@ typedef union
|
||||
#define G_RM_OPA_CI2 RM_OPA_CI(2)
|
||||
|
||||
|
||||
#define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA)
|
||||
#define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA)
|
||||
#define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)
|
||||
#define G_RM_FOG_SHADE_A GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA)
|
||||
#define G_RM_FOG_PRIM_A GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA)
|
||||
#define G_RM_PASS GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)
|
||||
|
||||
#define G_MWO_NUMLIGHT 0x00
|
||||
#define G_MW_NUMLIGHT 0x02
|
||||
#define NUML(n) (((n)+1)*32 + 0x80000000)
|
||||
#define G_MW_PERSPNORM 0x0e
|
||||
#define G_MW_PERSPNORM 0x0e
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
@@ -630,16 +630,16 @@ typedef union
|
||||
#define gDma1p(pkt, c, s, l, p) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \
|
||||
_SHIFTL((l), 0, 16)); \
|
||||
_g->words.w1 = (unsigned int)(s); \
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) \
|
||||
| _SHIFTL((l), 0, 16)); \
|
||||
_g->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
#define gsDma1p(c, s, l, p) \
|
||||
{ \
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \
|
||||
_SHIFTL((l), 0, 16)); \
|
||||
_g->words.w1 = (unsigned int)(s); \
|
||||
_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) \
|
||||
| _SHIFTL((l), 0, 16)); \
|
||||
_g->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/* Matrix */
|
||||
@@ -650,7 +650,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MTX, 24, 8) \
|
||||
| _SHIFTL((p), 16, 8) \
|
||||
| _SHIFTL(sizeof(Mtx), 0, 16); \
|
||||
_g->words.w1 = (u32)(m); \
|
||||
_g->words.w1 = (uintptr_t)(m); \
|
||||
}
|
||||
|
||||
#define gsSPMatrix(m, p) \
|
||||
@@ -658,7 +658,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MTX, 24, 8) \
|
||||
| _SHIFTL((p), 16, 8) \
|
||||
| _SHIFTL(sizeof(Mtx), 0, 16); \
|
||||
_g->words.w1 = (u32)(m); \
|
||||
_g->words.w1 = (uintptr_t)(m); \
|
||||
}
|
||||
|
||||
/* Vertex */
|
||||
@@ -671,7 +671,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) \
|
||||
| _SHIFTL(((n)-1) << 4 | (v0), 16, 8) \
|
||||
| _SHIFTL(sizeof(Vtx)*(n), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
|
||||
#define gsSPVertex(v, n, v0) \
|
||||
@@ -679,7 +679,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) \
|
||||
| _SHIFTL(((n)-1) << 4 | (v0), 16, 8) \
|
||||
| _SHIFTL(sizeof(Vtx)*(n), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
|
||||
#else /* Fast3DEX */
|
||||
@@ -689,7 +689,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) \
|
||||
| _SHIFTL(((v0)*2), 16, 8) \
|
||||
| _SHIFTL((n << 10) | ((sizeof(Vtx)*(n))-1), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
|
||||
#define gsSPVertex(v, n, v0) \
|
||||
@@ -697,7 +697,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_VTX, 24, 8) \
|
||||
| _SHIFTL(((v0)*2), 16, 8) \
|
||||
| _SHIFTL((n << 10) | ((sizeof(Vtx)*(n))-1), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -767,13 +767,13 @@ typedef union
|
||||
{ \
|
||||
Gfx *_g = (Gfx *) (pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_DL, 24, 8); \
|
||||
_g->words.w1 = (u32)(dl); \
|
||||
_g->words.w1 = (uintptr_t)(dl); \
|
||||
}
|
||||
|
||||
#define gsSPDisplayList(dl) \
|
||||
{ \
|
||||
_g->words.w0 = _SHIFTL(G_DL, 24, 8); \
|
||||
_g->words.w1 = (u32)(dl); \
|
||||
_g->words.w1 = (uintptr_t)(dl); \
|
||||
}
|
||||
|
||||
/* BranchList */
|
||||
@@ -1186,7 +1186,7 @@ typedef union
|
||||
|
||||
/* SetPrimColor */
|
||||
|
||||
#define gDPSetPrimColor(pkt, m, l, r, g, b, a) \
|
||||
#define gDPSetPrimColor(pkt, m, l, r, g, b, a) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
_g->words.w0 = _SHIFTL(G_SETPRIMCOLOR, 24, 8) \
|
||||
@@ -1198,7 +1198,7 @@ typedef union
|
||||
| _SHIFTL(a, 0, 8); \
|
||||
}
|
||||
|
||||
#define gsDPSetPrimColor(m, l, r, g, b, a) \
|
||||
#define gsDPSetPrimColor(m, l, r, g, b, a) \
|
||||
{ \
|
||||
_g->words.w0 = _SHIFTL(G_SETPRIMCOLOR, 24, 8) \
|
||||
| _SHIFTL(m, 8, 8) \
|
||||
@@ -1239,7 +1239,7 @@ typedef union
|
||||
| _SHIFTL((fmt), 21, 3) \
|
||||
| _SHIFTL((size), 19, 2) \
|
||||
| _SHIFTL((width)-1, 0, 12); \
|
||||
_g->words.w1 = (u32)(img); \
|
||||
_g->words.w1 = (uintptr_t)(img); \
|
||||
}
|
||||
|
||||
#define gsDPSetTextureImage(fmt, size, width, img) \
|
||||
@@ -1248,7 +1248,7 @@ typedef union
|
||||
| _SHIFTL((fmt), 21, 3) \
|
||||
| _SHIFTL((size), 19, 2) \
|
||||
| _SHIFTL((width)-1, 0, 12); \
|
||||
_g->words.w1 = (u32)(img); \
|
||||
_g->words.w1 = (uintptr_t)(img); \
|
||||
}
|
||||
|
||||
/* MoveWd */
|
||||
@@ -1259,7 +1259,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MOVEWORD, 24, 8) \
|
||||
| _SHIFTL((offset), 8, 16) \
|
||||
| _SHIFTL((index), 0, 8); \
|
||||
_g->words.w1 = (u32)(data); \
|
||||
_g->words.w1 = (uintptr_t)(data); \
|
||||
}
|
||||
|
||||
#define gsMoveWd(index, offset, data) \
|
||||
@@ -1267,7 +1267,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MOVEWORD, 24, 8) \
|
||||
| _SHIFTL((offset), 8, 16) \
|
||||
| _SHIFTL((index), 0, 8); \
|
||||
_g->words.w1 = (u32)(data); \
|
||||
_g->words.w1 = (uintptr_t)(data); \
|
||||
}
|
||||
|
||||
/* Matrix Operations */
|
||||
@@ -1302,7 +1302,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_VIEWPORT, 16, 8) \
|
||||
| _SHIFTL(sizeof(Vp), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
|
||||
#define gsSPViewport(v) \
|
||||
@@ -1310,7 +1310,7 @@ typedef union
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_VIEWPORT, 16, 8) \
|
||||
| _SHIFTL(sizeof(Vp), 0, 16); \
|
||||
_g->words.w1 = (u32)(v); \
|
||||
_g->words.w1 = (uintptr_t)(v); \
|
||||
}
|
||||
|
||||
/* 1Triangle */
|
||||
@@ -1429,7 +1429,7 @@ typedef union
|
||||
| _SHIFTL((dtdy), 0, 16); \
|
||||
}
|
||||
|
||||
#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
|
||||
#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \
|
||||
{ \
|
||||
_g->words.w0 = _SHIFTL(G_TEXRECT, 24, 8) \
|
||||
| _SHIFTL((xh), 12, 12) \
|
||||
@@ -1511,7 +1511,7 @@ typedef union {
|
||||
#define LIGHT_2 2
|
||||
#define LIGHT_3 3
|
||||
#define LIGHT_4 4
|
||||
#define LIGHT_5 5
|
||||
#define LIGHT_5 5
|
||||
#define LIGHT_6 6
|
||||
#define LIGHT_7 7
|
||||
#define LIGHT_8 8
|
||||
@@ -1524,7 +1524,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(((n)-1)*2+G_MV_L0, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(l); \
|
||||
_g->words.w1 = (uintptr_t)(l); \
|
||||
}
|
||||
|
||||
#define gsSPLight(l, n) \
|
||||
@@ -1532,7 +1532,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(((n)-1)*2+G_MV_L0, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(l); \
|
||||
_g->words.w1 = (uintptr_t)(l); \
|
||||
}
|
||||
|
||||
/* LookAtX */
|
||||
@@ -1543,7 +1543,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATX, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
_g->words.w1 = (uintptr_t)(la); \
|
||||
}
|
||||
|
||||
#define gsSPLookAtX(la) \
|
||||
@@ -1551,7 +1551,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATX, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
_g->words.w1 = (uintptr_t)(la); \
|
||||
}
|
||||
|
||||
/* LookAtY */
|
||||
@@ -1562,7 +1562,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATY, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
_g->words.w1 = (uintptr_t)(la); \
|
||||
}
|
||||
|
||||
#define gsSPLookAtY(la) \
|
||||
@@ -1570,7 +1570,7 @@ typedef union {
|
||||
_g->words.w0 = _SHIFTL(G_MOVEMEM, 24, 8) \
|
||||
| _SHIFTL(G_MV_LOOKATY, 16, 8) \
|
||||
| _SHIFTL(sizeof(Light), 0, 16); \
|
||||
_g->words.w1 = (u32)(la); \
|
||||
_g->words.w1 = (uintptr_t)(la); \
|
||||
}
|
||||
|
||||
/* LookAt */
|
||||
@@ -1605,10 +1605,10 @@ typedef union {
|
||||
|
||||
#else
|
||||
#define gSPPerspNormalize(pkt, s) \
|
||||
gMoveWd(pkt, G_MW_PERSPNORM, 0, (s))
|
||||
gMoveWd(pkt, G_MW_PERSPNORM, 0, (s))
|
||||
|
||||
#define gsSPPerspNormalize(s) \
|
||||
gsMoveWd(G_MW_PERSPNORM, 0, (s))
|
||||
gsMoveWd(G_MW_PERSPNORM, 0, (s))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -81,9 +81,9 @@ extern "C" {
|
||||
|
||||
/* Cache operations and macros */
|
||||
|
||||
extern void osInvalDCache(void *, s32);
|
||||
extern void osInvalICache(void *, s32);
|
||||
extern void osWritebackDCache(void *, s32);
|
||||
extern void osInvalDCache(void *, size_t);
|
||||
extern void osInvalICache(void *, size_t);
|
||||
extern void osWritebackDCache(void *, size_t);
|
||||
extern void osWritebackDCacheAll(void);
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
void osInitialize(void);
|
||||
u32 osGetCount(void);
|
||||
|
||||
u32 osVirtualToPhysical(void *);
|
||||
uintptr_t osVirtualToPhysical(void *);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,7 +21,7 @@ typedef struct
|
||||
u16 transferMode;
|
||||
u16 blockNum;
|
||||
s32 sectorNum;
|
||||
u32 devAddr;
|
||||
uintptr_t devAddr;
|
||||
u32 bmCtlShadow;
|
||||
u32 seqCtlShadow;
|
||||
__OSBlockInfo block[2];
|
||||
@@ -44,7 +44,7 @@ typedef struct OSPiHandle_s
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
u32 address;
|
||||
uintptr_t address;
|
||||
} OSPiInfo;
|
||||
|
||||
typedef struct
|
||||
@@ -59,8 +59,8 @@ typedef struct
|
||||
{
|
||||
/*0x00*/ OSIoMesgHdr hdr;
|
||||
/*0x08*/ void *dramAddr;
|
||||
/*0x0C*/ u32 devAddr;
|
||||
/*0x10*/ u32 size;
|
||||
/*0x0C*/ uintptr_t devAddr;
|
||||
/*0x10*/ size_t size;
|
||||
//OSPiHandle *piHandle; //from the official definition
|
||||
} OSIoMesg;
|
||||
|
||||
@@ -75,11 +75,11 @@ typedef struct
|
||||
/* Functions */
|
||||
|
||||
s32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction,
|
||||
u32 devAddr, void *vAddr, u32 nbytes, OSMesgQueue *mq);
|
||||
uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *mq);
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf,
|
||||
s32 cmdMsgCnt);
|
||||
OSMesgQueue *osPiGetCmdQueue(void);
|
||||
s32 osPiWriteIo(u32 devAddr, u32 data);
|
||||
s32 osPiReadIo(u32 devAddr, u32 *data);
|
||||
s32 osPiWriteIo(uintptr_t devAddr, u32 data);
|
||||
s32 osPiReadIo(uintptr_t devAddr, u32 *data);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,6 +29,18 @@ typedef volatile s64 vs64;
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
|
||||
typedef unsigned long size_t;
|
||||
#ifdef __x86_64__
|
||||
typedef u64 size_t;
|
||||
typedef s64 ssize_t;
|
||||
typedef u64 uintptr_t;
|
||||
typedef s64 intptr_t;
|
||||
typedef s64 ptrdiff_t;
|
||||
#else
|
||||
typedef u32 size_t;
|
||||
typedef s32 ssize_t;
|
||||
typedef u32 uintptr_t;
|
||||
typedef s32 intptr_t;
|
||||
typedef s32 ptrdiff_t;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user