1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#ifndef GUARD_GX_G3X_H
#define GUARD_GX_G3X_H
#include "fx.h"
#include "registers.h"
void GXi_NopClearFifo128_(void *reg);
void G3X_Init();
void G3X_ResetMtxStack();
void G3X_ClearFifo();
void G3X_InitMtxStack();
void G3X_ResetMtxStack_2();
void G3X_SetFog(u32 enable, u32 alphamode, u32 depth, s32 offset);
u32 G3X_GetClipMtx(struct Mtx44 *dst);
u32 G3X_GetVectorMtx(struct Mtx33 *dst);
void G3X_SetEdgeColorTable(void *tbl_ptr);
void G3X_SetFogTable(void *tbl_ptr);
void G3X_SetClearColor(u32 col, u32 alpha, u32 depth, u32 polygon_id, u32 enable_fog);
void G3X_InitTable();
u32 G3X_GetMtxStackLevelPV(u32 *level);
u32 G3X_GetMtxStackLevelPJ(u32 *level);
u32 G3X_GetBoxTestResult(u32 *result);
void G3X_SetHOffset(u32 offset);
typedef enum
{
GX_SHADING_TOON = 0,
GX_SHADING_HIGHLIGHT = 1
}
GXShading;
typedef enum
{
GX_FOGBLEND_COLOR_ALPHA = 0,
GX_FOGBLEND_ALPHA = 1
}
GXFogBlend;
typedef enum
{
GX_FOGSLOPE_0x8000 = 0,
GX_FOGSLOPE_0x4000 = 1,
GX_FOGSLOPE_0x2000 = 2,
GX_FOGSLOPE_0x1000 = 3,
GX_FOGSLOPE_0x0800 = 4,
GX_FOGSLOPE_0x0400 = 5,
GX_FOGSLOPE_0x0200 = 6,
GX_FOGSLOPE_0x0100 = 7,
GX_FOGSLOPE_0x0080 = 8,
GX_FOGSLOPE_0x0040 = 9,
GX_FOGSLOPE_0x0020 = 10
}
GXFogSlope;
typedef enum
{
GX_FIFOINTR_COND_DISABLE = 0,
GX_FIFOINTR_COND_UNDERHALF = 1,
GX_FIFOINTR_COND_EMPTY = 2
}
GXFifoIntrCond;
typedef enum
{
GX_FIFOSTAT_EMPTY = 6,
GX_FIFOSTAT_UNDERHALF = 2,
GX_FIFOSTAT_OVERHALF = 0,
GX_FIFOSTAT_FULL = 1
}
GXFifoStat;
static inline void G3X_SetFifoIntrCond(GXFifoIntrCond cond)
{
reg_G3X_GXSTAT = ((reg_G3X_GXSTAT & ~0xc0000000) |
(cond << 30));
}
static inline GXFifoStat G3X_GetCommandFifoStatus(void)
{
return (GXFifoStat)((reg_G3X_GXSTAT & (0x01000000 |
0x02000000 |
0x04000000)) >> 24);
}
#endif //GUARD_GX_G3X_H
|