Loading [MathJax]/extensions/MathMenu.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
__gx.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_GX_INTERNAL_H_
2#define _DOLPHIN_GX_INTERNAL_H_
3
4#include <dolphin/gx.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10// FIFO WRITE
11
12#define GX_WRITE_U8(ub) \
13 GXWGFifo.u8 = (u8)(ub)
14
15#define GX_WRITE_U16(us) \
16 GXWGFifo.u16 = (u16)(us)
17
18#define GX_WRITE_U32(ui) \
19 GXWGFifo.u32 = (u32)(ui)
20
21#define GX_WRITE_F32(f) \
22 GXWGFifo.f32 = (f32)(f);
23
24
25// REG VERIF
26
27#if DEBUG
28#define VERIF_XF_REG(addr, value) \
29do { \
30 s32 regAddr = (addr); \
31 if (regAddr >= 0 && regAddr < 0x50) { \
32 __gxVerif->xfRegs[regAddr] = (value); \
33 __gxVerif->xfRegsDirty[regAddr] = 1; \
34 } \
35} while (0)
36
37#define VERIF_XF_REG_alt(addr, value) \
38do { \
39 s32 xfAddr = (addr); \
40 if (xfAddr >= 0 && xfAddr < 0x50) { \
41 __gxVerif->xfRegs[xfAddr] = (value); \
42 __gxVerif->xfRegsDirty[xfAddr] = 1; \
43 } \
44} while (0)
45
46#define VERIF_RAS_REG(value) (__gxVerif->rasRegs[((value) & 0xFF000000) >> 24] = value)
47
48#define VERIF_MTXLIGHT(addr, data) \
49do { \
50 s32 xfAddr; \
51 if (addr < 0x400U) { \
52 __gxVerif->xfMtx[addr] = data; \
53 __gxVerif->xfMtxDirty[addr] = 1; \
54 } else if (addr < 0x500U) { \
55 xfAddr = addr - 0x400; \
56 __gxVerif->xfNrm[xfAddr] = data; \
57 __gxVerif->xfNrmDirty[xfAddr] = 1; \
58 } else if (addr < 0x600U) { \
59 xfAddr = addr - 0x500; \
60 __gxVerif->xfDMtx[xfAddr] = data; \
61 __gxVerif->xfDMtxDirty[xfAddr] = 1; \
62 } else if (addr < 0x680U) { \
63 xfAddr = addr - 0x600; \
64 __gxVerif->xfLight[xfAddr] = data; \
65 __gxVerif->xfLightDirty[xfAddr] = 1; \
66 } else { \
67 xfAddr = addr - 0x1000; \
68 if ((xfAddr >= 0) && (xfAddr < 0x50)) { \
69 __gxVerif->xfRegs[xfAddr] = data; \
70 __gxVerif->xfRegsDirty[xfAddr] = 1; \
71 } \
72 } \
73} while (0)
74#else
75#define VERIF_XF_REG(addr, value) ((void)0)
76#define VERIF_XF_REG_alt(addr, value) ((void)0)
77#define VERIF_RAS_REG(value) ((void)0)
78#endif
79
80// WRITE REG
81
82#define GX_WRITE_XF_REG(addr, value) \
83do { \
84 GX_WRITE_U8(0x10); \
85 GX_WRITE_U32(0x1000 + (addr)); \
86 GX_WRITE_U32(value); \
87 VERIF_XF_REG(addr, value); \
88} while (0)
89
90#if DEBUG
91#define GX_WRITE_XF_REG_2(addr, value) \
92do { \
93 u32 xfData = (value); &xfData; \
94 GX_WRITE_U32(value); \
95 VERIF_XF_REG_alt(addr, xfData); \
96} while (0)
97
98#define GX_WRITE_XF_REG_F(addr, value) \
99do { \
100 f32 xfData = (value); \
101 GX_WRITE_F32(value); \
102 VERIF_XF_REG_alt(addr, *(u32 *)&xfData); \
103} while (0)
104#else
105#define GX_WRITE_XF_REG_2(addr, value) \
106do { \
107 GX_WRITE_U32(value); \
108} while (0)
109
110#define GX_WRITE_XF_REG_F(addr, value) \
111do { \
112 GX_WRITE_F32(value); \
113} while (0)
114#endif
115
116#define GX_WRITE_RAS_REG(value) \
117do { \
118 GX_WRITE_U8(0x61); \
119 GX_WRITE_U32(value); \
120 VERIF_RAS_REG(value); \
121} while (0)
122
123#ifdef DEBUG
124#define GX_WRITE_SOME_REG2(a, b, c, addr) \
125do { \
126 long regAddr; \
127 GX_WRITE_U8(a); \
128 GX_WRITE_U8(b); \
129 GX_WRITE_U32(c); \
130 regAddr = addr; \
131 if (regAddr >= 0 && regAddr < 4) { \
132 __GXData->indexBase[regAddr] = c; \
133 } \
134} while (0)
135#else
136#define GX_WRITE_SOME_REG2(a, b, c, addr) \
137do { \
138 GX_WRITE_U8(a); \
139 GX_WRITE_U8(b); \
140 GX_WRITE_U32(c); \
141} while (0)
142#endif
143
144#ifdef DEBUG
145#define GX_WRITE_SOME_REG3(a, b, c, addr) \
146do { \
147 long regAddr; \
148 GX_WRITE_U8(a); \
149 GX_WRITE_U8(b); \
150 GX_WRITE_U32(c); \
151 regAddr = addr; \
152 if (regAddr >= 0 && regAddr < 4) { \
153 __GXData->indexStride[regAddr] = c; \
154 } \
155} while (0)
156#else
157#define GX_WRITE_SOME_REG3(a, b, c, addr) \
158do { \
159 GX_WRITE_U8(a); \
160 GX_WRITE_U8(b); \
161 GX_WRITE_U32(c); \
162} while (0)
163#endif
164
165#define GX_WRITE_SOME_REG4(a, b, c, addr) \
166do { \
167 long regAddr; \
168 GX_WRITE_U8(a); \
169 GX_WRITE_U8(b); \
170 GX_WRITE_U32(c); \
171 regAddr = addr; \
172} while (0)
173
174// REG MACROS
175
176#define GET_REG_FIELD(reg, size, shift) ((int)((reg) >> (shift)) & ((1 << (size)) - 1))
177
178// TODO: reconcile reg macro differences
179// this one is needed to match non GX libs
180#define OLD_SET_REG_FIELD(line, reg, size, shift, val) \
181do { \
182 ASSERTMSGLINE(line, ((u32)(val) & ~((1 << (size)) - 1)) == 0, "GX Internal: Register field out of range"); \
183 (reg) = ((u32)(reg) & ~(((1 << (size)) - 1) << (shift))) | ((u32)(val) << (shift)); \
184} while (0)
185
186// above doesn't seem to work with GX, only can get it to work with this
187#define SET_REG_FIELD(line, reg, size, shift, val) \
188do { \
189 ASSERTMSGLINE(line, ((u32)(val) & ~((1 << (size)) - 1)) == 0, "GX Internal: Register field out of range"); \
190 (reg) = ((u32)__rlwimi((u32)(reg), (val), (shift), 32 - (shift) - (size), 31 - (shift))); \
191} while (0)
192
193#define CHECK_GXBEGIN(line, name) ASSERTMSGLINE(line, !__GXinBegin, "'" name "' is not allowed between GXBegin/GXEnd")
194
195/* GXAttr */
196void __GXSetVCD(void);
197void __GXSetVAT(void);
198
199/* GXBump */
200void __GXUpdateBPMask(void);
201void __GXFlushTextureState(void);
202
203/* GXFifo */
204// GXFifoObj private data
217
218void __GXSaveCPUFifoAux(__GXFifoObj* realFifo);
219void __GXFifoInit(void);
220void __GXInsaneWatermark(void);
221void __GXCleanGPFifo(void);
222
223/* GXGeometry */
224void __GXSetDirtyState(void);
225void __GXSendFlushPrim(void);
226void __GXSetGenMode(void);
227
228/* GXInit */
229void __GXInitGX();
230void __GXInitRevisionBits(void);
231
232typedef struct __GXData_struct {
282 GXTexRegion* (*texRegionCallback)(GXTexObj*, GXTexMapID);
283 GXTlutRegion* (*tlutRegionCallback)(u32);
311
312extern GXData* const __GXData;
313extern void* __memReg;
314extern void* __peReg;
315extern void* __cpReg;
316extern void* __piReg;
317
318#if DEBUG
319extern GXBool __GXinBegin;
320#endif
321
322#define GX_GET_MEM_REG(offset) (*(volatile u16*)((volatile u16*)(__memReg) + (offset)))
323#define GX_GET_CP_REG(offset) (*(volatile u16*)((volatile u16*)(__cpReg) + (offset)))
324#define GX_GET_PE_REG(offset) (*(volatile u16*)((volatile u16*)(__peReg) + (offset)))
325#define GX_GET_PI_REG(offset) (*(volatile u32*)((volatile u32*)(__piReg) + (offset)))
326
327#define GX_SET_MEM_REG(offset, val) (*(volatile u16*)((volatile u16*)(__memReg) + (offset)) = val)
328#define GX_SET_CP_REG(offset, val) (*(volatile u16*)((volatile u16*)(__cpReg) + (offset)) = val)
329#define GX_SET_PE_REG(offset, val) (*(volatile u16*)((volatile u16*)(__peReg) + (offset)) = val)
330#define GX_SET_PI_REG(offset, val) (*(volatile u32*)((volatile u32*)(__piReg) + (offset)) = val)
331
332/* GXMisc */
333void __GXBypass(u32 reg);
335void __GXPEInit(void);
336void __GXAbort();
337
338/* GXPerf */
339void __GXSetBWDials(u16 cpDial, u16 tcDial, u16 peDial, u16 cpuRdDial, u16 cpuWrDial);
340
341static inline u32 __GXReadCPCounterU32(u32 regAddrL, u32 regAddrH) {
342 u32 ctrH0;
343 u32 ctrH1;
344 u32 ctrL;
345
346 ctrH0 = GX_GET_CP_REG(regAddrH);
347
348 do {
349 ctrH1 = ctrH0;
350 ctrL = GX_GET_CP_REG(regAddrL);
351 ctrH0 = GX_GET_CP_REG(regAddrH);
352 } while (ctrH0 != ctrH1);
353
354 return (ctrH0 << 0x10) | ctrL;
355}
356
357static inline u32 __GXReadMEMCounterU32(u32 regAddrL, u32 regAddrH) {
358 u32 ctrH0;
359 u32 ctrH1;
360 u32 ctrL;
361
362 ctrH0 = GX_GET_MEM_REG(regAddrH);
363
364 do {
365 ctrH1 = ctrH0;
366 ctrL = GX_GET_MEM_REG(regAddrL);
367 ctrH0 = GX_GET_MEM_REG(regAddrH);
368 } while (ctrH0 != ctrH1);
369
370 return (ctrH0 << 0x10) | ctrL;
371}
372
373static inline u32 __GXReadPECounterU32(u32 regAddrL, u32 regAddrH) {
374 u32 ctrH0;
375 u32 ctrH1;
376 u32 ctrL;
377
378 ctrH0 = GX_GET_PE_REG(regAddrH);
379
380 do {
381 ctrH1 = ctrH0;
382 ctrL = GX_GET_PE_REG(regAddrL);
383 ctrH0 = GX_GET_PE_REG(regAddrH);
384 } while (ctrH0 != ctrH1);
385
386 return (ctrH0 << 0x10) | ctrL;
387}
388
389/* GXSave */
390void __GXShadowDispList(void* list, u32 nbytes);
391void __GXShadowIndexState(u32 idx_reg, u32 reg_data);
392void __GXPrintShadowState(void);
393
394/* GXStubs */
395void __GXSetRange(f32 nearz, f32 fgSideX);
396
397/* GXTexture */
398void __GetImageTileCount(GXTexFmt fmt, u16 wd, u16 ht, u32* rowTiles, u32* colTiles, u32* cmpTiles);
399void __GXSetSUTexRegs(void);
400void __GXGetSUTexSize(GXTexCoordID coord, u16* width, u16* height);
401void __GXSetTmemConfig(u32 config);
402
403/* GXTransform */
404void __GXSetMatrixIndex(GXAttr matIdxAttr);
405void __GXSetProjection(void);
406void __GXSetViewport();
407
408
409/* GXVerifRAS */
410void __GXVerifySU(void);
411void __GXVerifyBUMP(void);
412void __GXVerifyTEX(void);
413void __GXVerifyTEV(void);
414void __GXVerifyPE(void);
415
416/* GXVerif */
417typedef enum {
544} GXWarnID;
545
546#define __GX_WARN(id) (__gxVerif->cb(__gxvWarnLev[(id)], (id), __gxvWarnings[(id)]))
547#define __GX_WARNF(id, ...) \
548do { \
549 sprintf(__gxvDummyStr, __gxvWarnings[(id)], __VA_ARGS__); \
550 __gxVerif->cb(__gxvWarnLev[(id)], (id), __gxvDummyStr); \
551} while (0)
552
553#define __GX_WARN2(level, id) (__gxVerif->cb(level, (id), __gxvWarnings[(id)]))
554#define __GX_WARN2F(level, id, ...) \
555do { \
556 sprintf(__gxvDummyStr, __gxvWarnings[(id)], __VA_ARGS__); \
557 __gxVerif->cb(level, (id), __gxvDummyStr); \
558} while (0)
559
575
577extern char* __gxvWarnings[125];
578extern char __gxvDummyStr[256];
580
583void __GXVerifyState(GXVtxFmt vtxfmt);
584
585/* GXVerifXF */
586void __GXVerifyXF(void);
587
588#ifdef __cplusplus
589}
590#endif
591
592#endif
enum _GXTexCoordID GXTexCoordID
enum _GXTexFmt GXTexFmt
enum _GXTexMapID GXTexMapID
enum _GXAttr GXAttr
enum _GXVtxFmt GXVtxFmt
enum _GXPerf0 GXPerf0
enum _GXPerf1 GXPerf1
u8 GXBool
Definition GXEnum.h:6
enum _GXAttrType GXAttrType
GXWarningLevel
Definition GXVerify.h:11
void(* GXVerifyCallback)(GXWarningLevel level, u32 id, char *msg)
Definition GXVerify.h:18
static u32 __GXReadPECounterU32(u32 regAddrL, u32 regAddrH)
Definition __gx.h:373
__GXVerifyData * __gxVerif
Definition GXVerify.c:8
void * __piReg
Definition GXInit.c:40
void * __cpReg
Definition GXInit.c:39
void __GXVerifyState(GXVtxFmt vtxfmt)
Definition GXVerify.c:287
void __GXVerifySU(void)
Definition GXVerifRAS.c:24
char * __gxvWarnings[125]
Definition GXVerify.c:10
void __GXSetSUTexRegs(void)
Definition GXTexture.c:1176
void __GXFifoInit(void)
Definition GXFifo.c:459
void __GXPEInit(void)
Definition GXMisc.c:355
void __GXCleanGPFifo(void)
Definition GXFifo.c:503
u16 __GXReadPEReg(u32 reg)
Definition GXMisc.c:185
void __GXInitRevisionBits(void)
Definition GXInit.c:203
void __GXSetRange(f32 nearz, f32 fgSideX)
Definition GXStubs.c:5
void __GXAbort()
Definition GXMisc.c:88
void __GXBypass(u32 reg)
Definition GXMisc.c:179
void __GXShadowDispList(void *list, u32 nbytes)
Definition GXSave.c:332
void __GXVerifyCP(GXVtxFmt fmt)
void __GXSetVCD(void)
Definition GXAttr.c:133
void __GXSetGenMode(void)
Definition GXGeometry.c:153
void __GXVerifyBUMP(void)
Definition GXVerifRAS.c:82
void __GXInitGX()
Definition GXInit.c:398
void __GXSetBWDials(u16 cpDial, u16 tcDial, u16 peDial, u16 cpuRdDial, u16 cpuWrDial)
Definition GXPerf.c:425
void __GXInsaneWatermark(void)
Definition GXFifo.c:495
void __GXSaveCPUFifoAux(__GXFifoObj *realFifo)
Definition GXFifo.c:291
void __GXVerifyXF(void)
Definition GXVerifXF.c:992
void __GetImageTileCount(GXTexFmt fmt, u16 wd, u16 ht, u32 *rowTiles, u32 *colTiles, u32 *cmpTiles)
Definition GXTexture.c:143
char __gxvDummyStr[256]
Definition GXVerify.c:266
void __GXVerifyPE(void)
Definition GXVerifRAS.c:613
void __GXSendFlushPrim(void)
Definition GXGeometry.c:54
GXWarnID
Definition __gx.h:417
@ GXWARN_INV_NUM_REG_TEX
Definition __gx.h:519
@ GXWARN_VAT_F32_FRAC
Definition __gx.h:479
@ GXWARN_INV_NUM_ANY_TEX
Definition __gx.h:518
@ GXWARN_VAL_SMALL
Definition __gx.h:512
@ GXWARN_RND_CLR_INDX
Definition __gx.h:449
@ GXWARN_MAX
Definition __gx.h:543
@ GXWARN_VIEWPORT_BOTTOM
Definition __gx.h:504
@ GXWARN_TEX_CONFIG
Definition __gx.h:437
@ GXWARN_VCD_TEX_ORDER
Definition __gx.h:489
@ GXWARN_BM_INV_MTX_NDX
Definition __gx.h:498
@ GXWARN_DIAG_LOD
Definition __gx.h:445
@ GXWARN_INV_CLR_TEX
Definition __gx.h:522
@ GXWARN_INV_TEX_SRC
Definition __gx.h:496
@ GXWARN_INDIRECT_MTX
Definition __gx.h:427
@ GXWARN_TEX_CLAMP
Definition __gx.h:441
@ GXWARN_TEX_RND_FP
Definition __gx.h:448
@ GXWARN_BUMP_ACCUMULATION
Definition __gx.h:431
@ GXWARN_NRM_XF3_CP1
Definition __gx.h:486
@ GXWARN_TLUT_CONFIG
Definition __gx.h:439
@ GXWARN_TEX_SRC_NNRM
Definition __gx.h:491
@ GXWARN_SCISSOR_RECT_LEFT
Definition __gx.h:420
@ GXWARN_CLR_XFN_SUM
Definition __gx.h:517
@ GXWARN_TEV_LAST_A
Definition __gx.h:461
@ GXWARN_TEX_SRC_NCLR1
Definition __gx.h:493
@ GXWARN_MTX1_UNINIT
Definition __gx.h:514
@ GXWARN_VAL_INFINITY
Definition __gx.h:510
@ GXWARN_IND_DIR_BOTH
Definition __gx.h:436
@ GXWARN_CLR_XF2_CPN1
Definition __gx.h:536
@ GXWARN_BUMP_CMD
Definition __gx.h:425
@ GXWARN_TEX_ANISO
Definition __gx.h:446
@ GXWARN_SAMPLE_VALUE
Definition __gx.h:424
@ GXWARN_TEX_SRC_NTEX
Definition __gx.h:495
@ GXWARN_BM_INV_TEX
Definition __gx.h:499
@ GXWARN_TEX_SRC_NPOS
Definition __gx.h:490
@ GXWARN_DITHER_MODE
Definition __gx.h:466
@ GXWARN_Z_BEFORE_T_A
Definition __gx.h:464
@ GXWARN_BUMP_ALPHA_EN
Definition __gx.h:432
@ GXWARN_CLR_AMB_UNINIT
Definition __gx.h:542
@ GXWARN_IND_TEX_NO_SCALE
Definition __gx.h:429
@ GXWARN_TEX_SRC_NCLR0
Definition __gx.h:492
@ GXWARN_DL_NESTED
Definition __gx.h:532
@ GXWARN_ZTEX_INVALID
Definition __gx.h:459
@ GXWARN_MIN_LOD
Definition __gx.h:443
@ GXWARN_TEX_SIZE_INIT
Definition __gx.h:419
@ GXWARN_INV_COLOR_TG_COMB
Definition __gx.h:473
@ GXWARN_INV_NUM_CLR_TEX
Definition __gx.h:521
@ GXWARN_INV_TG_ORDER
Definition __gx.h:497
@ GXWARN_XF_CTRL_INIT
Definition __gx.h:472
@ GXWARN_VCD_CLR_ORDER
Definition __gx.h:488
@ GXWARN_IND_DIR_MASK
Definition __gx.h:433
@ GXWARN_MAX_LOD
Definition __gx.h:444
@ GXWARN_INV_TEX_NUM
Definition __gx.h:502
@ GXWARN_CLR_XF0_CP1
Definition __gx.h:533
@ GXWARN_NRM_XF0_CP1
Definition __gx.h:482
@ GXWARN_VAT_MISMATCH
Definition __gx.h:476
@ GXWARN_NRM_XF1_CP0
Definition __gx.h:484
@ GXWARN_ADDR_UNINIT
Definition __gx.h:529
@ GXWARN_VAT_NRM_FRAC
Definition __gx.h:478
@ GXWARN_TEV_CLR_CLAMP
Definition __gx.h:456
@ GXWARN_CLR_MAT_UNINIT
Definition __gx.h:541
@ GXWARN_VIEWPORT_RIGHT
Definition __gx.h:506
@ GXWARN_CLR_INV_SPEC
Definition __gx.h:507
@ GXWARN_VIEWPORT_TOP
Definition __gx.h:503
@ GXWARN_SCISSOR_RECT_BOT
Definition __gx.h:423
@ GXWARN_TEV_LAST_CLR
Definition __gx.h:460
@ GXWARN_BM_NO_NBT
Definition __gx.h:501
@ GXWARN_INV_NUM_COLORS
Definition __gx.h:538
@ GXWARN_TEV_INV_TEX_COORD
Definition __gx.h:435
@ GXWARN_TEX_MIN_FILT
Definition __gx.h:442
@ GXWARN_TEV_NULL_TEX
Definition __gx.h:452
@ GXWARN_VAL_LARGE
Definition __gx.h:513
@ GXWARN_TEX_FIELD
Definition __gx.h:447
@ GXWARN_VIEWPORT_LEFT
Definition __gx.h:505
@ GXWARN_TEV_INV_CHAN
Definition __gx.h:451
@ GXWARN_MULTISAMP0
Definition __gx.h:467
@ GXWARN_TEX_POW2
Definition __gx.h:440
@ GXWARN_CLR_NO_NRM
Definition __gx.h:508
@ GXWARN_ZTEX_OFFSET
Definition __gx.h:458
@ GXWARN_CLR_ADDR_UNINIT
Definition __gx.h:540
@ GXWARN_GM_UNINIT
Definition __gx.h:515
@ GXWARN_TEX_XFN_SUM
Definition __gx.h:516
@ GXWARN_BM_INV_LIT_POS
Definition __gx.h:500
@ GXWARN_VCD_FMT_UNSUP
Definition __gx.h:487
@ GXWARN_VTX_NO_GEOM
Definition __gx.h:475
@ GXWARN_DUP_CLR_TEX
Definition __gx.h:523
@ GXWARN_TEV_LAST_A_WRAP
Definition __gx.h:463
@ GXWARN_CLR_XF1_CP2
Definition __gx.h:535
@ GXWARN_CLR_INV_MTX_VAL
Definition __gx.h:527
@ GXWARN_INVALID_INDIRECT
Definition __gx.h:426
@ GXWARN_TEV_A_CLAMP
Definition __gx.h:457
@ GXWARN_CLR_INV_MTX_NDX
Definition __gx.h:509
@ GXWARN_TEV_TEX_REF
Definition __gx.h:434
@ GXWARN_VAL_NAN
Definition __gx.h:511
@ GXWARN_DL_INV_CMD
Definition __gx.h:531
@ GXWARN_TEV_DIRTY_REG
Definition __gx.h:454
@ GXWARN_IND_TEX_NO_INIT
Definition __gx.h:428
@ GXWARN_BLEND_LOGICOP
Definition __gx.h:465
@ GXWARN_TEV_NULL_TEX_A
Definition __gx.h:453
@ GXWARN_SCISSOR_RECT_RIGHT
Definition __gx.h:422
@ GXWARN_INV_TG_SRC
Definition __gx.h:539
@ GXWARN_LIT_INV_REG
Definition __gx.h:526
@ GXWARN_TEX_INV_MTX_VAL
Definition __gx.h:525
@ GXWARN_INVALID_VTX_FMT
Definition __gx.h:418
@ GXWARN_INV_MTX_VAL
Definition __gx.h:528
@ GXWARN_IND_TEX_BUMP
Definition __gx.h:430
@ GXWARN_INVALID_TG_TYPE
Definition __gx.h:470
@ GXWARN_TEV_DIRTY_REG_A
Definition __gx.h:455
@ GXWARN_TEV_LAST_CLR_WRAP
Definition __gx.h:462
@ GXWARN_VAT_CLR_FRAC
Definition __gx.h:480
@ GXWARN_CLR_XF1_CP0
Definition __gx.h:534
@ GXWARN_NRM_XF1_CP3
Definition __gx.h:485
@ GXWARN_MULTISAMP1
Definition __gx.h:468
@ GXWARN_VAT_NRM_TYPE
Definition __gx.h:477
@ GXWARN_BM_INV_MTX_VAL
Definition __gx.h:524
@ GXWARN_INV_IVS_CLR
Definition __gx.h:481
@ GXWARN_REG_UNINIT
Definition __gx.h:530
@ GXWARN_XF_NO_CLR_TEX
Definition __gx.h:474
@ GXWARN_INV_NUM_BM_TEX
Definition __gx.h:520
@ GXWARN_TEX_BASE
Definition __gx.h:438
@ GXWARN_NRM_XF0_CP3
Definition __gx.h:483
@ GXWARN_TEV_ENV
Definition __gx.h:450
@ GXWARN_CLR_XF2_CPN2
Definition __gx.h:537
@ GXWARN_SAMP_ORDER
Definition __gx.h:469
@ GXWARN_SCISSOR_RECT_TOP
Definition __gx.h:421
@ GXWARN_XF_CTRL_UNINIT
Definition __gx.h:471
@ GXWARN_TEX_SRC_NNBT
Definition __gx.h:494
GXWarningLevel __gxvWarnLev[]
Definition GXVerify.c:138
struct __GXFifoObj __GXFifoObj
void __GXShadowIndexState(u32 idx_reg, u32 reg_data)
Definition GXSave.c:429
void __GXSetProjection(void)
Definition GXTransform.c:61
void __GXSetViewport()
Definition GXTransform.c:421
void __GXUpdateBPMask(void)
Definition GXBump.c:296
static u32 __GXReadMEMCounterU32(u32 regAddrL, u32 regAddrH)
Definition __gx.h:357
struct __GXData_struct GXData
void __GXSetDirtyState(void)
Definition GXGeometry.c:7
struct __GXVerifyData __GXVerifyData
void __GXVerifyTEV(void)
Definition GXVerifRAS.c:392
GXData *const __GXData
Definition GXInit.c:29
void __GXFlushTextureState(void)
Definition GXBump.c:305
void __GXGetSUTexSize(GXTexCoordID coord, u16 *width, u16 *height)
Definition GXTexture.c:1229
void __GXSetVAT(void)
Definition GXAttr.c:369
void __GXSetTmemConfig(u32 config)
Definition GXTexture.c:1234
void * __peReg
Definition GXInit.c:38
void __GXSetMatrixIndex(GXAttr matIdxAttr)
Definition GXTransform.c:599
static u32 __GXReadCPCounterU32(u32 regAddrL, u32 regAddrH)
Definition __gx.h:341
void __GXVerifyGlobal(void)
void * __memReg
Definition GXInit.c:37
GXBool __GXinBegin
Definition GXInit.c:43
void __GXPrintShadowState(void)
Definition GXSave.c:458
void __GXVerifyTEX(void)
Definition GXVerifRAS.c:172
va_list list
Definition os.h:192
Definition GXStruct.h:35
Definition GXStruct.h:43
Definition GXStruct.h:51
Definition __gx.h:232
u8 abtWaitPECopy
Definition __gx.h:307
u32 vatC[8]
Definition __gx.h:244
u16 vNumNot
Definition __gx.h:233
u32 tevTcEnab
Definition __gx.h:301
u32 perfSel
Definition __gx.h:304
u32 texmapId[16]
Definition __gx.h:299
u32 zmode
Definition __gx.h:266
u32 bpMask
Definition __gx.h:258
u32 ambColor[2]
Definition __gx.h:250
u32 projType
Definition __gx.h:287
u32 tevKsel[8]
Definition __gx.h:263
f32 vpTop
Definition __gx.h:290
u8 dlSaveContext
Definition __gx.h:306
f32 vpHt
Definition __gx.h:292
u8 hasNrms
Definition __gx.h:285
GXTexRegion TexRegions2[8]
Definition __gx.h:280
u32 cpTex
Definition __gx.h:275
u32 cpDispSize
Definition __gx.h:269
u32 genMode
Definition __gx.h:277
f32 vpWd
Definition __gx.h:291
u32 matIdxA
Definition __gx.h:246
u32 cpTexSrc
Definition __gx.h:272
u16 bpSentNot
Definition __gx.h:234
u32 matIdxB
Definition __gx.h:247
u32 cpDispSrc
Definition __gx.h:268
f32 vpFarz
Definition __gx.h:294
f32 vpLeft
Definition __gx.h:289
GXPerf1 perf1
Definition __gx.h:303
u32 cpTexSize
Definition __gx.h:273
u32 cpStatus
Definition __gx.h:238
u8 cpTexZ
Definition __gx.h:276
u32 suScis1
Definition __gx.h:255
u8 hasBiNrms
Definition __gx.h:286
u32 cpEnable
Definition __gx.h:237
u32 tevc[16]
Definition __gx.h:261
GXAttrType nrmType
Definition __gx.h:284
u32 cpDisp
Definition __gx.h:271
u32 vcdLo
Definition __gx.h:240
u32 vcdHi
Definition __gx.h:241
u32 cpTexStride
Definition __gx.h:274
u32 IndTexScale0
Definition __gx.h:259
u32 cpClr
Definition __gx.h:239
u16 vLim
Definition __gx.h:236
u32 suTs0[8]
Definition __gx.h:252
u32 vatB[8]
Definition __gx.h:243
GXTlutRegion TlutRegions[20]
Definition __gx.h:281
u32 indexBase[4]
Definition __gx.h:248
u32 teva[16]
Definition __gx.h:262
u32 vatA[8]
Definition __gx.h:242
u32 indexStride[4]
Definition __gx.h:249
u32 peCtrl
Definition __gx.h:267
u32 iref
Definition __gx.h:257
u8 dirtyVAT
Definition __gx.h:308
u16 vNum
Definition __gx.h:235
f32 zScale
Definition __gx.h:296
GXTexRegion TexRegions1[8]
Definition __gx.h:279
u32 matColor[2]
Definition __gx.h:251
GXTexRegion TexRegions0[8]
Definition __gx.h:278
u8 inDispList
Definition __gx.h:305
u32 suTs1[8]
Definition __gx.h:253
u32 tImage0[8]
Definition __gx.h:297
u32 cmode1
Definition __gx.h:265
u32 tcsManEnab
Definition __gx.h:300
u32 cpDispStride
Definition __gx.h:270
u32 tMode0[8]
Definition __gx.h:298
f32 projMtx[6]
Definition __gx.h:288
GXPerf0 perf0
Definition __gx.h:302
u32 dirtyState
Definition __gx.h:309
u32 suScis0
Definition __gx.h:254
u32 lpSize
Definition __gx.h:245
u32 IndTexScale1
Definition __gx.h:260
u32 cmode0
Definition __gx.h:264
f32 vpNearz
Definition __gx.h:293
u32 tref[8]
Definition __gx.h:256
f32 zOffset
Definition __gx.h:295
Definition __gx.h:205
u32 size
Definition __gx.h:208
u8 bind_cpu
Definition __gx.h:214
u8 bind_gp
Definition __gx.h:215
u8 * base
Definition __gx.h:206
u32 hiWatermark
Definition __gx.h:209
u8 * top
Definition __gx.h:207
void * rdPtr
Definition __gx.h:211
s32 count
Definition __gx.h:213
u32 loWatermark
Definition __gx.h:210
void * wrPtr
Definition __gx.h:212
Definition __gx.h:560
u8 xfMtxDirty[256]
Definition __gx.h:570
u32 xfMtx[256]
Definition __gx.h:564
GXVerifyCallback cb
Definition __gx.h:561
u8 xfDMtxDirty[256]
Definition __gx.h:572
u8 xfRegsDirty[80]
Definition __gx.h:569
u32 xfRegs[80]
Definition __gx.h:563
u32 xfLight[128]
Definition __gx.h:567
u32 xfDMtx[256]
Definition __gx.h:566
u32 xfNrm[96]
Definition __gx.h:565
u8 xfNrmDirty[96]
Definition __gx.h:571
GXWarningLevel verifyLevel
Definition __gx.h:562
u8 xfLightDirty[128]
Definition __gx.h:573
u32 rasRegs[256]
Definition __gx.h:568
unsigned long u32
Definition types.h:9
float f32
Definition types.h:22
unsigned short int u16
Definition types.h:7
signed long s32
Definition types.h:8
unsigned char u8
Definition types.h:5