1#ifndef RVL_SDK_GX_TYPES_H
2#define RVL_SDK_GX_TYPES_H
13#define GX_BITSET(field, pos, size, value) \
14 __rlwimi((field), (value), 31 - (pos) - (size) + 1, (pos), \
22#define GX_BITGET(field, pos, size) \
23 ((field) >> (31 - (pos) - (size) + 1) & ((1 << (size)) - 1))
30#define GX_BITSET_TRUNC(field, pos, size, value) \
31 __rlwimi((field), (value), 0, (pos), (pos) + (size) - 1)
38#define GX_BITGET_TRUNC(field, pos, size) \
39 ((field) & (((1 << (size)) - 1) << (32 - (pos) - (size))))
49typedef unsigned char GXBool;
51#define GX_TRUE ((GXBool)TRUE)
52#define GX_FALSE ((GXBool)FALSE)
54#define GX_ENABLE GX_TRUE
55#define GX_DISABLE GX_FALSE
73typedef enum _GXAlphaOp {
82typedef enum _GXAnisotropy {
90typedef enum _GXAttnFn {
133typedef enum _GXAttrType {
140typedef enum _GXBlendFactor {
150 GX_BL_DSTCLR = GX_BL_SRCCLR,
151 GX_BL_INVDSTCLR = GX_BL_INVSRCCLR
154typedef enum _GXBlendMode {
163typedef enum _GXChannelID {
177typedef enum _GXCITexFmt {
183typedef enum _GXClearZ {
185 GX_CLEAR_Z_MAX = (1 << 24) - 1,
188typedef enum _GXClipMode {
194typedef enum _GXColorSrc { GX_SRC_REG, GX_SRC_VTX } GXColorSrc;
196typedef enum _GXCompare {
207typedef enum _GXCompCnt {
222typedef enum _GXCompType {
237typedef enum _GXCopyClamp {
244typedef enum _GXCullMode {
251typedef enum _GXDiffuseFn { GX_DF_NONE, GX_DF_SIGN, GX_DF_CLAMP } GXDiffuseFn;
253typedef enum _GXDirtyFlag {
254 GX_DIRTY_SU_TEX = (1 << 0),
255 GX_DIRTY_BP_MASK = (1 << 1),
256 GX_DIRTY_GEN_MODE = (1 << 2),
257 GX_DIRTY_VCD = (1 << 3),
258 GX_DIRTY_VAT = (1 << 4),
260 GX_DIRTY_AMB_COLOR0 = (1 << 8),
261 GX_DIRTY_AMB_COLOR1 = (1 << 9),
262 GX_DIRTY_MAT_COLOR0 = (1 << 10),
263 GX_DIRTY_MAT_COLOR1 = (1 << 11),
264 GX_DIRTY_CHAN_COLOR0 = (1 << 12),
265 GX_DIRTY_CHAN_COLOR1 = (1 << 13),
266 GX_DIRTY_CHAN_ALPHA0 = (1 << 14),
267 GX_DIRTY_CHAN_ALPHA1 = (1 << 15),
268 GX_DIRTY_TEX0 = (1 << 16),
269 GX_DIRTY_TEX1 = (1 << 17),
270 GX_DIRTY_TEX2 = (1 << 18),
271 GX_DIRTY_TEX3 = (1 << 19),
272 GX_DIRTY_TEX4 = (1 << 20),
273 GX_DIRTY_TEX5 = (1 << 21),
274 GX_DIRTY_TEX6 = (1 << 22),
275 GX_DIRTY_TEX7 = (1 << 23),
276 GX_DIRTY_NUM_COLORS = (1 << 24),
277 GX_DIRTY_NUM_TEX = (1 << 25),
278 GX_DIRTY_MTX_IDX = (1 << 26),
279 GX_DIRTY_PROJECTION = (1 << 27),
280 GX_DIRTY_VIEWPORT = (1 << 28),
282 GX_AMB_MAT_MASK = GX_DIRTY_AMB_COLOR0 | GX_DIRTY_AMB_COLOR1 |
283 GX_DIRTY_MAT_COLOR0 | GX_DIRTY_MAT_COLOR1,
285 GX_LIGHT_CHAN_MASK = GX_DIRTY_CHAN_COLOR0 | GX_DIRTY_CHAN_COLOR1 |
286 GX_DIRTY_CHAN_ALPHA0 | GX_DIRTY_CHAN_ALPHA1 |
289 GX_TEX_GEN_MASK = 0x2FF0000,
292typedef enum _GXDistAttnFn {
299typedef enum _GXFogType {
302 GX_FOG_PERSP_LIN = 2,
303 GX_FOG_PERSP_EXP = 4,
304 GX_FOG_PERSP_EXP2 = 5,
305 GX_FOG_PERSP_REVEXP = 6,
306 GX_FOG_PERSP_REVEXP2 = 7,
309 GX_FOG_ORTHO_LIN = 1 << 3 | GX_FOG_PERSP_LIN,
310 GX_FOG_ORTHO_EXP = 1 << 3 | GX_FOG_PERSP_EXP,
311 GX_FOG_ORTHO_EXP2 = 1 << 3 | GX_FOG_PERSP_EXP2,
312 GX_FOG_ORTHO_REVEXP = 1 << 3 | GX_FOG_PERSP_REVEXP,
313 GX_FOG_ORTHO_REVEXP2 = 1 << 3 | GX_FOG_PERSP_REVEXP2
317#define GX_FOG_GET_PROJ(x) ((x) >> 3 & 1)
318#define GX_FOG_GET_FSEL(x) ((x) & 7)
320typedef enum _GXIndTexAlphaSel {
329typedef enum _GXIndTexBiasSel {
342typedef enum _GXIndTexFormat {
351typedef enum _GXIndTexMtxID {
366typedef enum _GXIndTexScale {
380typedef enum _GXIndTexStageID {
389typedef enum _GXIndTexWrap {
401typedef enum _GXLightID {
402 GX_LIGHT0 = (1 << 0),
403 GX_LIGHT1 = (1 << 1),
404 GX_LIGHT2 = (1 << 2),
405 GX_LIGHT3 = (1 << 3),
406 GX_LIGHT4 = (1 << 4),
407 GX_LIGHT5 = (1 << 5),
408 GX_LIGHT6 = (1 << 6),
409 GX_LIGHT7 = (1 << 7),
411 GX_MAX_LIGHT = (1 << 8),
415typedef enum _GXLogicOp {
434typedef enum _GXMtxType {
439typedef enum _GXPixelFmt {
456typedef enum _GXPosNrmMtx {
469typedef enum _GXPrimitive {
474 GX_TRIANGLESTRIP = 0x98,
475 GX_TRIANGLEFAN = 0xA0,
479typedef enum _GXProjectionType {
484typedef enum _GXSpotFn {
494typedef enum _GXTevAlphaArg {
506typedef enum _GXTevBias {
514typedef enum _GXTevColorArg {
535 GX_CC_QUARTER = GX_CC_KONST
538typedef enum _GXTevColorChan {
545typedef enum _GXTevOp {
549 GX_TEV_COMP_R8_GT = 8,
553 GX_TEV_COMP_BGR24_GT,
554 GX_TEV_COMP_BGR24_EQ,
558 GX_TEV_COMP_A8_GT = GX_TEV_COMP_RGB8_GT,
559 GX_TEV_COMP_A8_EQ = GX_TEV_COMP_RGB8_EQ
562typedef enum _GXTevRegID {
571typedef enum _GXTevScale {
580typedef enum _GXTevStageID {
601typedef enum _GXTevSwapSel {
610typedef enum _GXTevKAlphaSel {
621 GX_TEV_KASEL_3_4 = 2,
622 GX_TEV_KASEL_1_2 = 4,
623 GX_TEV_KASEL_1_4 = 6,
625 GX_TEV_KASEL_K0_R = 16,
643typedef enum _GXTevKColorID {
652typedef enum _GXTevKColorSel {
663 GX_TEV_KCSEL_3_4 = 2,
664 GX_TEV_KCSEL_1_2 = 4,
665 GX_TEV_KCSEL_1_4 = 6,
667 GX_TEV_KCSEL_K0 = 12,
689typedef enum _GXTevMode {
697typedef enum _GXTexCoordID {
708 GX_TEXCOORD_NULL = 255
711typedef enum _GXTexFilter {
720typedef enum _GXTexFmt {
750 GX_TF_A8 = GX_CTF_YUVA8
753typedef enum _GXTexGenSrc {
777typedef enum _GXTexGenType {
791typedef enum _GXTexMapID {
802 GX_TEXMAP_NULL = 255,
806typedef enum _GXTexMtx {
822typedef enum _GXPTTexMtx {
848typedef enum _GXTexWrapMode {
856typedef enum _GXTlut {
880typedef enum _GXTlutFmt {
888typedef enum _GXVtxFmt {
901typedef enum _GXZFmt16 {
909typedef enum _GXZTexOp {