#ifndef GXENUM_H #define GXENUM_H #include "dolphin/types.h" typedef enum _GXPrimitive { /* 0x80 */ GX_QUADS = 0x80, /* 0x90 */ GX_TRIANGLES = 0x90, /* 0x98 */ GX_TRIANGLESTRIP = 0x98, /* 0xA0 */ GX_TRIANGLEFAN = 0xA0, /* 0xA8 */ GX_LINES = 0xA8, /* 0xB0 */ GX_LINESTRIP = 0xB0, /* 0xB8 */ GX_POINTS = 0xB8, } GXPrimitive; typedef enum _GXCullMode { /* 0x0 */ GX_CULL_NONE, /* 0x1 */ GX_CULL_FRONT, /* 0x2 */ GX_CULL_BACK, /* 0x3 */ GX_CULL_ALL } GXCullMode; typedef u8 GXBool; #define GX_TRUE ((GXBool)1) #define GX_FALSE ((GXBool)0) #define GX_ENABLE ((GXBool)1) #define GX_DISABLE ((GXBool)0) typedef enum _GXTexMapID { /* 0x000 */ GX_TEXMAP0, /* 0x001 */ GX_TEXMAP1, /* 0x002 */ GX_TEXMAP2, /* 0x003 */ GX_TEXMAP3, /* 0x004 */ GX_TEXMAP4, /* 0x005 */ GX_TEXMAP5, /* 0x006 */ GX_TEXMAP6, /* 0x007 */ GX_TEXMAP7, /* 0x008 */ GX_MAX_TEXMAP, /* 0x0FF */ GX_TEXMAP_NULL = 255, /* 0x100 */ GX_TEXMAP_DISABLE, } GXTexMapID; typedef enum _GXTevStageID { /* 0x00 */ GX_TEVSTAGE0, /* 0x01 */ GX_TEVSTAGE1, /* 0x02 */ GX_TEVSTAGE2, /* 0x03 */ GX_TEVSTAGE3, /* 0x04 */ GX_TEVSTAGE4, /* 0x05 */ GX_TEVSTAGE5, /* 0x06 */ GX_TEVSTAGE6, /* 0x07 */ GX_TEVSTAGE7, /* 0x08 */ GX_TEVSTAGE8, /* 0x09 */ GX_TEVSTAGE9, /* 0x0A */ GX_TEVSTAGE10, /* 0x0B */ GX_TEVSTAGE11, /* 0x0C */ GX_TEVSTAGE12, /* 0x0D */ GX_TEVSTAGE13, /* 0x0E */ GX_TEVSTAGE14, /* 0x0F */ GX_TEVSTAGE15, /* 0x10 */ GX_MAX_TEVSTAGE, } GXTevStageID; typedef enum _GXTexCoordID { /* 0x00 */ GX_TEXCOORD0, /* 0x01 */ GX_TEXCOORD1, /* 0x02 */ GX_TEXCOORD2, /* 0x03 */ GX_TEXCOORD3, /* 0x04 */ GX_TEXCOORD4, /* 0x05 */ GX_TEXCOORD5, /* 0x06 */ GX_TEXCOORD6, /* 0x07 */ GX_TEXCOORD7, /* 0x08 */ GX_MAXCOORD, /* 0xFF */ GX_TEXCOORD_NULL = 255, } GXTexCoordID; typedef enum _GXChannelID { /* 0x00 */ GX_COLOR0, /* 0x01 */ GX_COLOR1, /* 0x02 */ GX_ALPHA0, /* 0x03 */ GX_ALPHA1, /* 0x04 */ GX_COLOR0A0, /* 0x05 */ GX_COLOR1A1, /* 0x06 */ GX_COLOR_ZERO, /* 0x07 */ GX_ALPHA_BUMP, /* 0x08 */ GX_ALPHA_BUMPN, /* 0xFF */ GX_COLOR_NULL = 255, } GXChannelID; typedef enum _GXColorSrc { /* 0x0 */ GX_SRC_REG, /* 0x1 */ GX_SRC_VTX, } GXColorSrc; typedef enum _GXLightID { /* 0x000 */ GX_LIGHT_NULL = 0, /* 0x001 */ GX_LIGHT0 = 1 << 0, /* 0x002 */ GX_LIGHT1 = 1 << 1, /* 0x004 */ GX_LIGHT2 = 1 << 2, /* 0x008 */ GX_LIGHT3 = 1 << 3, /* 0x010 */ GX_LIGHT4 = 1 << 4, /* 0x020 */ GX_LIGHT5 = 1 << 5, /* 0x040 */ GX_LIGHT6 = 1 << 6, /* 0x080 */ GX_LIGHT7 = 1 << 7, /* 0x100 */ GX_MAX_LIGHT = 1 << 8, } GXLightID; typedef enum _GXDiffuseFn { /* 0x0 */ GX_DF_NONE, /* 0x1 */ GX_DF_SIGN, /* 0x2 */ GX_DF_CLAMP, } GXDiffuseFn; typedef enum _GXAttnFn { /* 0x0 */ GX_AF_SPEC, /* 0x1 */ GX_AF_SPOT, /* 0x2 */ GX_AF_NONE, } GXAttnFn; typedef enum _GXDistAttnFn { /* 0x0 */ GX_DA_OFF, /* 0x1 */ GX_DA_GENTLE, /* 0x2 */ GX_DA_MEDIUM, /* 0x3 */ GX_DA_STEEP } GXDistAttnFn; typedef enum _GXSpotFn { /* 0x0 */ GX_SP_OFF, /* 0x1 */ GX_SP_FLAT, /* 0x2 */ GX_SP_COS, /* 0x3 */ GX_SP_COS2, /* 0x4 */ GX_SP_SHARP, /* 0x5 */ GX_SP_RING1, /* 0x6 */ GX_SP_RING2 } GXSpotFn; typedef enum _GXTevMode { /* 0x0 */ GX_MODULATE, /* 0x1 */ GX_DECAL, /* 0x2 */ GX_BLEND, /* 0x3 */ GX_REPLACE, /* 0x4 */ GX_PASSCLR, } GXTevMode; typedef enum _GXBlendMode { /* 0x0 */ GX_BM_NONE, /* 0x1 */ GX_BM_BLEND, /* 0x2 */ GX_BM_LOGIC, /* 0x3 */ GX_BM_SUBTRACT, /* 0x4 */ GX_MAX_BLENDMODE, } GXBlendMode; typedef enum _GXBlendFactor { /* 0x0 */ GX_BL_ZERO, /* 0x1 */ GX_BL_ONE, /* 0x2 */ GX_BL_SRC_COLOR, /* 0x2 */ GX_BL_DST_COLOR = 2, /* 0x3 */ GX_BL_INV_SRC_COLOR, /* 0x3 */ GX_BL_INV_DST_COLOR = 3, /* 0x4 */ GX_BL_SRC_ALPHA, /* 0x5 */ GX_BL_INV_SRC_ALPHA, /* 0x6 */ GX_BL_DST_ALPHA, /* 0x7 */ GX_BL_INV_DST_ALPHA, } GXBlendFactor; typedef enum _GXLogicOp { /* 0x0 */ GX_LO_CLEAR, /* 0x1 */ GX_LO_AND, /* 0x2 */ GX_LO_REV_AND, /* 0x3 */ GX_LO_COPY, /* 0x4 */ GX_LO_INV_AND, /* 0x5 */ GX_LO_NOOP, /* 0x6 */ GX_LO_XOR, /* 0x7 */ GX_LO_OR, /* 0x8 */ GX_LO_NOR, /* 0x9 */ GX_LO_EQUIV, /* 0xA */ GX_LO_INV, /* 0xB */ GX_LO_REV_OR, /* 0xC */ GX_LO_INV_COPY, /* 0xD */ GX_LO_INV_OR, /* 0xE */ GX_LO_NAND, /* 0xF */ GX_LO_SET, } GXLogicOp; typedef enum _GXVtxFmt { /* 0x0 */ GX_VTXFMT0, /* 0x1 */ GX_VTXFMT1, /* 0x2 */ GX_VTXFMT2, /* 0x3 */ GX_VTXFMT3, /* 0x4 */ GX_VTXFMT4, /* 0x5 */ GX_VTXFMT5, /* 0x6 */ GX_VTXFMT6, /* 0x7 */ GX_VTXFMT7, /* 0x8 */ GX_MAX_VTXFMT, } GXVtxFmt; typedef enum _GXAttr { /* 0x00 */ GX_VA_PNMTXIDX, /* 0x01 */ GX_VA_TEX0MTXIDX, /* 0x02 */ GX_VA_TEX1MTXIDX, /* 0x03 */ GX_VA_TEX2MTXIDX, /* 0x04 */ GX_VA_TEX3MTXIDX, /* 0x05 */ GX_VA_TEX4MTXIDX, /* 0x06 */ GX_VA_TEX5MTXIDX, /* 0x07 */ GX_VA_TEX6MTXIDX, /* 0x08 */ GX_VA_TEX7MTXIDX, /* 0x09 */ GX_VA_POS, /* 0x0A */ GX_VA_NRM, /* 0x0B */ GX_VA_CLR0, /* 0x0C */ GX_VA_CLR1, /* 0x0D */ GX_VA_TEX0, /* 0x0E */ GX_VA_TEX1, /* 0x0F */ GX_VA_TEX2, /* 0x10 */ GX_VA_TEX3, /* 0x11 */ GX_VA_TEX4, /* 0x12 */ GX_VA_TEX5, /* 0x13 */ GX_VA_TEX6, /* 0x14 */ GX_VA_TEX7, /* 0x15 */ GX_POS_MTX_ARRAY, /* 0x16 */ GX_NRM_MTX_ARRAY, /* 0x17 */ GX_TEX_MTX_ARRAY, /* 0x18 */ GX_LIGHT_ARRAY, /* 0x19 */ GX_VA_NBT, /* 0x1A */ GX_VA_MAX_ATTR, /* 0xFF */ GX_VA_NULL = 255, } GXAttr; typedef enum _GXCompCnt { GX_POS_XY = 0, // Position X, Y (two components). GX_POS_XYZ = 1, // Position X, Y, Z (three components). GX_NRM_XYZ = 0, // Normal X, Y, Z (three components). GX_NRM_NBT = 1, // Normal, binormal, tangent (three components). GX_NRM_NBT3 = 2, // Normal, binormal, tangent (three components). Use when NBT // normal is indexed independently. GX_CLR_RGB = 0, // RGB (three components). GX_CLR_RGBA = 1, // RGBA (four components). GX_TEX_S = 0, // Texture coordinate S (one component). GX_TEX_ST = 1, // Texture coordinates S, T (two components). GX_COMPCNT_NULL = 0, // Null count. } GXCompCnt; typedef enum _GXCompType { GX_U8 = 0, // Unsigned 8-bit. GX_S8 = 1, // Signed 8-bit. GX_U16 = 2, // Unsigned 16-bit. GX_S16 = 3, // Signed 16-bit. GX_F32 = 4, // Floating-point 32-bit. GX_RGB565 = 0, // RGB565 16-bit. GX_RGB8 = 1, // RGB888 24-bit. GX_RGBX8 = 2, // RGB888x 32-bit. GX_RGBA4 = 3, // RGBA4444 16-bit. GX_RGBA6 = 4, // RGBA6666 24-bit. GX_RGBA8 = 5, // RGBA8888 32-bit. GX_COMP_NULL = 0, // Null type. } GXCompType; typedef enum _GXAttrType { /* 0x0 */ GX_NONE, /* 0x1 */ GX_DIRECT, /* 0x2 */ GX_INDEX8, /* 0x3 */ GX_INDEX16, } GXAttrType; typedef enum _GXTevOp { /* 0x0 */ GX_TEV_ADD, /* 0x1 */ GX_TEV_SUB, /* 0x8 */ GX_TEV_COMP_R8_GT = 8, /* 0x9 */ GX_TEV_COMP_R8_EQ, /* 0xA */ GX_TEV_COMP_GR16_GT, /* 0xB */ GX_TEV_COMP_GR16_EQ, /* 0xC */ GX_TEV_COMP_BGR24_GT, /* 0xD */ GX_TEV_COMP_BGR24_EQ, /* 0xE */ GX_TEV_COMP_A8_GT, /* 0xE */ GX_TEV_COMP_RGB8_GT = 14, /* 0xF */ GX_TEV_COMP_RGB8_EQ, /* 0xF */ GX_TEV_COMP_A8_EQ = 15, } GXTevOp; typedef enum _GXTevBias { /* 0x0 */ GX_TB_ZERO, /* 0x1 */ GX_TB_ADDHALF, /* 0x2 */ GX_TB_SUBHALF, /* 0x3 */ GX_MAX_TEVBIAS, } GXTevBias; typedef enum _GXTevColorArg { /* 0x0 */ GX_CC_CPREV, /* 0x1 */ GX_CC_APREV, /* 0x2 */ GX_CC_C0, /* 0x3 */ GX_CC_A0, /* 0x4 */ GX_CC_C1, /* 0x5 */ GX_CC_A1, /* 0x6 */ GX_CC_C2, /* 0x7 */ GX_CC_A2, /* 0x8 */ GX_CC_TEXC, /* 0x9 */ GX_CC_TEXA, /* 0xA */ GX_CC_RASC, /* 0xB */ GX_CC_RASA, /* 0xC */ GX_CC_ONE, /* 0xD */ GX_CC_HALF, /* 0xE */ GX_CC_KONST, /* 0xF */ GX_CC_ZERO, } GXTevColorArg; typedef enum _GXTevColor { /* 0x0 */ GX_CH_RED, /* 0x1 */ GX_CH_GREEN, /* 0x2 */ GX_CH_BLUE, /* 0x3 */ GX_CH_ALPHA, } GXTevColor; typedef enum _GXTevScale { /* 0x0 */ GX_CS_SCALE_1, /* 0x1 */ GX_CS_SCALE_2, /* 0x2 */ GX_CS_SCALE_4, /* 0x3 */ GX_CS_DIVIDE_2, /* 0x4 */ GX_MAX_TEVSCALE } GXTevScale; typedef enum _GXTevRegID { /* 0x0 */ GX_TEVPREV, /* 0x1 */ GX_TEVREG0, /* 0x2 */ GX_TEVREG1, /* 0x3 */ GX_TEVREG2, /* 0x4 */ GX_MAX_TEVREG } GXTevRegID; typedef enum _GXTevAlphaArg { /* 0x0 */ GX_CA_APREV, /* 0x1 */ GX_CA_A0, /* 0x2 */ GX_CA_A1, /* 0x3 */ GX_CA_A2, /* 0x4 */ GX_CA_TEXA, /* 0x5 */ GX_CA_RASA, /* 0x6 */ GX_CA_KONST, /* 0x7 */ GX_CA_ZERO, } GXTevAlphaArg; /** * RGB, RGBA, Intensity, Intensity/Alpha, Compressed, and Z texture format * types. See GXCITexFmt for information on color index formats. The CTF format * is used only by the GXSetTexCopyDst function to specify how data is copied * out of the EFB into a texture in main memory. In order to actually use that * texture, you must specify a non-copy format of matching size. For example, if * copying using GX_CTF_RG8, you would apply the resulting texture using * GX_TF_IA8. */ typedef enum _GXTexFmt { // Intensities (I) and RGB/RGBA. GX_TF_I4 = 0x0, // 4-bit I GX_TF_I8 = 0x1, // 8-bit I GX_TF_IA4 = 0x2, // 8-bit I + alpha (4+4). GX_TF_IA8 = 0x3, // 16-bit I + alpha (8+8). GX_TF_RGB565 = 0x4, // 16-bit RGB. GX_TF_RGB5A3 = 0x5, // MSB=1, RGB555 (opaque). MSB=0, RGBA4443 (transparent). GX_TF_RGBA8 = 0x6, // 32-bit RGB. GX_TF_CI14 = 0x9, GX_TF_CMPR = 0xE, // Compressed 4-bit texel. // Z-texture format. GX_TF_Z8 = 0x11, // Unsigned 8-bit Z. For texture copies, specify the upper 8 bits of Z. GX_TF_Z16 = 0x13, // Unsigned 16-bit Z. For texture copies, specify the upper 16 bits of Z. GX_TF_Z24X8 = 0x16, // Unsigned 24-bit (32-bit texture) Z. For texture copies, copy the 24-bit // Z and 0xff. // Copy-texture format. GX_CTF_R4 = 0x20, // 4-bit red. For copying 4 bits from red. GX_CTF_RA4 = 0x22, // 4-bit red + 4-bit alpha. For copying 4 bits from red, 4 bits from alpha. GX_CTF_RA8 = 0x23, // 8-bit red + 8-bit alpha. For copying 8 bits from red, 8 bits from alpha. GX_CTF_YUVA8 = 0x26, // 8-bit YUV + alpha. For copying 8 bits from YUV, 8 bits from alpha. GX_CTF_A8 = 0x26, // 8-bit alpha. For copying 8 bits from alpha. GX_CTF_R8 = 0x27, // 8-bit red. For copying 8 bits from red. GX_CTF_G8 = 0x28, // 8-bit green. For copying 8 bits from green. GX_CTF_B8 = 0x29, // 8-bit blue. For copying 8 bits from blue. GX_CTF_RG8 = 0x2A, // 8-bit red +8-bit green. For copying 8 bits from red, 8 bits from green. GX_CTF_GB8 = 0x2B, // 8-bit green +8-bit blue. For copying 8 bits from green, 8 bits from blue. // Copy-Z-texture format. GX_CTF_Z4 = 0x30, // 4-bit Z. For copying the 4 upper bits from Z. GX_CTF_Z8M = 0x39, // 8-bit Z (median byte). For copying the middle 8 bits of Z. GX_CTF_Z8L = 0x3A, // 8-bit Z (lower byte). For copying the lower 8 bits of Z. GX_CTF_Z16L = 0x3C, // 16-bit Z (lower portion). For copying the lower 16 bits of Z. } GXTexFmt; typedef enum _GXGamma { /* 0x0 */ GX_GM_1_0, /* 0x0 */ GX_GM_1_7, /* 0x0 */ GX_GM_2_2, } GXGamma; typedef enum _GXTlutFmt { /* 0x0 */ GX_TL_IA8, /* 0x1 */ GX_TL_RGB565, /* 0x2 */ GX_TL_RGB5A3, } GXTlutFmt; typedef enum _GXTlut { /* 0x00 */ GX_TLUT0, /* 0x01 */ GX_TLUT1, /* 0x02 */ GX_TLUT2, /* 0x03 */ GX_TLUT3, /* 0x04 */ GX_TLUT4, /* 0x05 */ GX_TLUT5, /* 0x06 */ GX_TLUT6, /* 0x07 */ GX_TLUT7, /* 0x08 */ GX_TLUT8, /* 0x09 */ GX_TLUT9, /* 0x0A */ GX_TLUT10, /* 0x0B */ GX_TLUT11, /* 0x0C */ GX_TLUT12, /* 0x0D */ GX_TLUT13, /* 0x0E */ GX_TLUT14, /* 0x0F */ GX_TLUT15, /* 0x10 */ GX_MAX_TLUT, /* 0x10 */ GX_BIGTLUT0 = 0x10, /* 0x11 */ GX_BIGTLUT1, /* 0x12 */ GX_BIGTLUT2, /* 0x13 */ GX_BIGTLUT3, /* 0x13 */ GX_MAX_BIGTLUT = 4, GX_MAX_TLUT_ALL = GX_MAX_TLUT + GX_MAX_BIGTLUT, } GXTlut; typedef enum _GXTexWrapMode { /* 0x0 */ GX_CLAMP, /* 0x1 */ GX_REPEAT, /* 0x2 */ GX_MIRROR, /* 0x3 */ GX_MAX_TEXWRAP_MODE, } GXTexWrapMode; typedef enum _GXTexFilter { /* 0x0 */ GX_NEAR, /* 0x1 */ GX_LINEAR, /* 0x2 */ GX_NEAR_MIP_NEAR, /* 0x3 */ GX_LIN_MIP_NEAR, /* 0x4 */ GX_NEAR_MIP_LIN, /* 0x5 */ GX_LIN_MIP_LIN, } GXTexFilter; typedef enum _GXAnisotropy { /* 0x0 */ GX_ANISO_1, /* 0x1 */ GX_ANISO_2, /* 0x2 */ GX_ANISO_4, /* 0x3 */ GX_MAX_ANISOTROPY, } GXAnisotropy; typedef enum _GXCITexFmt { /* 0x8 */ GX_TF_C4 = 8, /* 0x8 */ GX_TF_C8, /* 0xA */ GX_TF_C14X2 } GXCITexFmt; typedef enum _GXTexMtxType { /* 0x0 */ GX_MTX3x4, /* 0x1 */ GX_MTX2x4 } GXTexMtxType; typedef enum _GXCompare { /* 0x0 */ GX_NEVER, /* 0x1 */ GX_LESS, /* 0x2 */ GX_EQUAL, /* 0x3 */ GX_LEQUAL, /* 0x4 */ GX_GREATER, /* 0x5 */ GX_NEQUAL, /* 0x6 */ GX_GEQUAL, /* 0x7 */ GX_ALWAYS, } GXCompare; typedef enum _GXAlphaOp { /* 0x0 */ GX_AOP_AND, /* 0x1 */ GX_AOP_OR, /* 0x2 */ GX_AOP_XOR, /* 0x3 */ GX_AOP_XNOR, /* 0x4 */ GX_MAX_ALPHAOP } GXAlphaOp; typedef enum _GXFogType { /* 0x0 */ GX_FOG_NONE, /* 0x2 */ GX_FOG_LIN = 2, /* 0x2 */ GX_FOG_PERSP_LIN = 2, /* 0x4 */ GX_FOG_EXP = 4, /* 0x4 */ GX_FOG_PERSP_EXP = 4, /* 0x5 */ GX_FOG_EXP2, /* 0x5 */ GX_FOG_PERSP_EXP2 = 5, /* 0x6 */ GX_FOG_REVEXP, /* 0x6 */ GX_FOG_PERSP_REVEXP = 6, /* 0x7 */ GX_FOG_REVEXP2, /* 0x7 */ GX_FOG_PERSP_REVEXP2 = 7, /* 0xA */ GX_FOG_ORTHO_LIN = 10, /* 0xC */ GX_FOG_ORTHO_EXP = 12, /* 0xD */ GX_FOG_ORTHO_EXP2, /* 0xE */ GX_FOG_ORTHO_REVEXP, /* 0xF */ GX_FOG_ORTHO_REVEXP2, } GXFogType; typedef enum _GXProjectionType { /* 0x0 */ GX_PERSPECTIVE, /* 0x1 */ GX_ORTHOGRAPHIC } GXProjectionType; typedef enum _GXTevKAlphaSel { /* 0x00 */ GX_TEV_KASEL_1, /* 0x01 */ GX_TEV_KASEL_7_8, /* 0x02 */ GX_TEV_KASEL_3_4, /* 0x03 */ GX_TEV_KASEL_5_8, /* 0x04 */ GX_TEV_KASEL_1_2, /* 0x05 */ GX_TEV_KASEL_3_8, /* 0x06 */ GX_TEV_KASEL_1_4, /* 0x07 */ GX_TEV_KASEL_1_8, /* 0x10 */ GX_TEV_KASEL_K0_R = 0x10, /* 0x11 */ GX_TEV_KASEL_K1_R, /* 0x12 */ GX_TEV_KASEL_K2_R, /* 0x13 */ GX_TEV_KASEL_K3_R, /* 0x14 */ GX_TEV_KASEL_K0_G, /* 0x15 */ GX_TEV_KASEL_K1_G, /* 0x16 */ GX_TEV_KASEL_K2_G, /* 0x17 */ GX_TEV_KASEL_K3_G, /* 0x18 */ GX_TEV_KASEL_K0_B, /* 0x19 */ GX_TEV_KASEL_K1_B, /* 0x1A */ GX_TEV_KASEL_K2_B, /* 0x1B */ GX_TEV_KASEL_K3_B, /* 0x1C */ GX_TEV_KASEL_K0_A, /* 0x1D */ GX_TEV_KASEL_K1_A, /* 0x1E */ GX_TEV_KASEL_K2_A, /* 0x1F */ GX_TEV_KASEL_K3_A, } GXTevKAlphaSel; typedef enum _GXTevKColorSel { /* 0x00 */ GX_TEV_KCSEL_1, /* 0x01 */ GX_TEV_KCSEL_7_8, /* 0x02 */ GX_TEV_KCSEL_3_4, /* 0x03 */ GX_TEV_KCSEL_5_8, /* 0x04 */ GX_TEV_KCSEL_1_2, /* 0x05 */ GX_TEV_KCSEL_3_8, /* 0x06 */ GX_TEV_KCSEL_1_4, /* 0x07 */ GX_TEV_KCSEL_1_8, /* 0x0C */ GX_TEV_KCSEL_K0 = 0xC, /* 0x0D */ GX_TEV_KCSEL_K1, /* 0x0E */ GX_TEV_KCSEL_K2, /* 0x0F */ GX_TEV_KCSEL_K3, /* 0x10 */ GX_TEV_KCSEL_K0_R, /* 0x11 */ GX_TEV_KCSEL_K1_R, /* 0x12 */ GX_TEV_KCSEL_K2_R, /* 0x13 */ GX_TEV_KCSEL_K3_R, /* 0x14 */ GX_TEV_KCSEL_K0_G, /* 0x15 */ GX_TEV_KCSEL_K1_G, /* 0x16 */ GX_TEV_KCSEL_K2_G, /* 0x17 */ GX_TEV_KCSEL_K3_G, /* 0x18 */ GX_TEV_KCSEL_K0_B, /* 0x19 */ GX_TEV_KCSEL_K1_B, /* 0x1A */ GX_TEV_KCSEL_K2_B, /* 0x1B */ GX_TEV_KCSEL_K3_B, /* 0x1C */ GX_TEV_KCSEL_K0_A, /* 0x1D */ GX_TEV_KCSEL_K1_A, /* 0x1E */ GX_TEV_KCSEL_K2_A, /* 0x1F */ GX_TEV_KCSEL_K3_A, } GXTevKColorSel; typedef enum _GXTevSwapSel { /* 0x0 */ GX_TEV_SWAP0, /* 0x1 */ GX_TEV_SWAP1, /* 0x2 */ GX_TEV_SWAP2, /* 0x3 */ GX_TEV_SWAP3, /* 0x4 */ GX_MAX_TEVSWAP, } GXTevSwapSel; typedef enum _GXTexGenType { /* 0x0 */ GX_TG_MTX3x4, /* 0x1 */ GX_TG_MTX2x4, /* 0x2 */ GX_TG_BUMP0, /* 0x3 */ GX_TG_BUMP1, /* 0x4 */ GX_TG_BUMP2, /* 0x5 */ GX_TG_BUMP3, /* 0x6 */ GX_TG_BUMP4, /* 0x7 */ GX_TG_BUMP5, /* 0x8 */ GX_TG_BUMP6, /* 0x9 */ GX_TG_BUMP7, /* 0xA */ GX_TG_SRTG, } GXTexGenType; typedef enum _GXTexGenSrc { /* 0x00 */ GX_TG_POS, /* 0x01 */ GX_TG_NRM, /* 0x02 */ GX_TG_BINRM, /* 0x03 */ GX_TG_TANGENT, /* 0x04 */ GX_TG_TEX0, /* 0x05 */ GX_TG_TEX1, /* 0x06 */ GX_TG_TEX2, /* 0x07 */ GX_TG_TEX3, /* 0x08 */ GX_TG_TEX4, /* 0x09 */ GX_TG_TEX5, /* 0x0A */ GX_TG_TEX6, /* 0x0B */ GX_TG_TEX7, /* 0x0C */ GX_TG_TEXCOORD0, /* 0x0D */ GX_TG_TEXCOORD1, /* 0x0E */ GX_TG_TEXCOORD2, /* 0x0F */ GX_TG_TEXCOORD3, /* 0x10 */ GX_TG_TEXCOORD4, /* 0x11 */ GX_TG_TEXCOORD5, /* 0x12 */ GX_TG_TEXCOORD6, /* 0x13 */ GX_TG_COLOR0, /* 0x14 */ GX_TG_COLOR1, } GXTexGenSrc; typedef enum _GXZTexOp { /* 0x0 */ GX_ZT_DISABLE, /* 0x1 */ GX_ZT_ADD, /* 0x2 */ GX_ZT_REPLACE, /* 0x3 */ GX_MAX_ZTEXOP, } GXZTexOp; typedef enum _GXIndTexStageID { /* 0x0 */ GX_INDTEXSTAGE0, /* 0x1 */ GX_INDTEXSTAGE1, /* 0x2 */ GX_INDTEXSTAGE2, /* 0x3 */ GX_INDTEXSTAGE3, /* 0x4 */ GX_MAX_INDTEXSTAGE, } GXIndTexStageID; typedef enum _GXIndTexScale { /* 0x0 */ GX_ITS_1, /* 0x1 */ GX_ITS_2, /* 0x2 */ GX_ITS_4, /* 0x3 */ GX_ITS_8, /* 0x4 */ GX_ITS_16, /* 0x5 */ GX_ITS_32, /* 0x6 */ GX_ITS_64, /* 0x7 */ GX_ITS_128, /* 0x8 */ GX_ITS_256, /* 0x9 */ GX_MAX_ITSCALE, } GXIndTexScale; typedef enum _GXIndTexMtxID { /* 0x0 */ GX_ITM_OFF, /* 0x1 */ GX_ITM_0, /* 0x2 */ GX_ITM_1, /* 0x3 */ GX_ITM_2, /* 0x4 */ GX_ITM_3, /* 0x5 */ GX_ITM_S0 = 5, /* 0x6 */ GX_ITM_S1, /* 0x7 */ GX_ITM_S2, /* 0x8 */ GX_ITM_S3, /* 0x9 */ GX_ITM_T0 = 9, /* 0xA */ GX_ITM_T1, /* 0xB */ GX_ITM_T2, } GXIndTexMtxID; typedef enum _GXIndTexFormat { /* 0x0 */ GX_ITF_8, /* 0x1 */ GX_ITF_5, /* 0x2 */ GX_ITF_4, /* 0x3 */ GX_ITF_3, } GXIndTexFormat; typedef enum _GXIndTexBiasSel { /* 0x0 */ GX_ITB_NONE, /* 0x1 */ GX_ITB_S, /* 0x2 */ GX_ITB_T, /* 0x3 */ GX_ITB_ST, /* 0x4 */ GX_ITB_U, /* 0x5 */ GX_ITB_SU, /* 0x6 */ GX_ITB_TU, /* 0x7 */ GX_ITB_STU, } GXIndTexBiasSel; typedef enum _GXIndTexAlphaSel { /* 0x0 */ GX_ITBA_OFF, /* 0x1 */ GX_ITBA_S, /* 0x2 */ GX_ITBA_T, /* 0x3 */ GX_ITBA_U, } GXIndTexAlphaSel; typedef enum _GXIndTexWrap { /* 0x0 */ GX_ITW_OFF, /* 0x1 */ GX_ITW_256, /* 0x2 */ GX_ITW_128, /* 0x3 */ GX_ITW_64, /* 0x4 */ GX_ITW_32, /* 0x5 */ GX_ITW_16, /* 0x6 */ GX_ITW_0, } GXIndTexWrap; typedef enum _GXTexOffset { /* 0x0 */ GX_TO_ZERO, /* 0x1 */ GX_TO_SIXTEENTH, /* 0x2 */ GX_TO_EIGHTH, /* 0x3 */ GX_TO_FOURTH, /* 0x4 */ GX_TO_HALF, /* 0x5 */ GX_TO_ONE, /* 0x6 */ GX_MAX_TEXOFFSET, } GXTexOffset; typedef enum _GXTevKColorID { /* 0x0 */ GX_KCOLOR0, /* 0x1 */ GX_KCOLOR1, /* 0x2 */ GX_KCOLOR2, /* 0x3 */ GX_KCOLOR3, } GXTevKColorID; typedef enum _GXTexCacheSize { /* 0x0 */ GX_TEXCACHE_32K, /* 0x1 */ GX_TEXCACHE_128K, /* 0x2 */ GX_TEXCACHE_512K, /* 0x3 */ GX_TEXCACHE_NONE, } GXTexCacheSize; typedef enum _GXPosNrmMtx { GX_PNMTX0 = 3 * 0, GX_PNMTX1 = 3 * 1, GX_PNMTX2 = 3 * 2, GX_PNMTX3 = 3 * 3, GX_PNMTX4 = 3 * 4, GX_PNMTX5 = 3 * 5, GX_PNMTX6 = 3 * 6, GX_PNMTX7 = 3 * 7, GX_PNMTX8 = 3 * 8, GX_PNMTX9 = 3 * 9, } GXPosNrmMtx; typedef enum _GXTexMtx { GX_TEXMTX0 = 30 + 0 * 3, GX_TEXMTX1 = 30 + 1 * 3, GX_TEXMTX2 = 30 + 2 * 3, GX_TEXMTX3 = 30 + 3 * 3, GX_TEXMTX4 = 30 + 4 * 3, GX_TEXMTX5 = 30 + 5 * 3, GX_TEXMTX6 = 30 + 6 * 3, GX_TEXMTX7 = 30 + 7 * 3, GX_TEXMTX8 = 30 + 8 * 3, GX_TEXMTX9 = 30 + 9 * 3, GX_IDENTITY = 60, } GXTexMtx; typedef enum _GXPTTexMtx { GX_PTTEXMTX0 = 64 + 0 * 3, GX_PTTEXMTX1 = 64 + 1 * 3, GX_PTTEXMTX2 = 64 + 2 * 3, GX_PTTEXMTX3 = 64 + 3 * 3, GX_PTTEXMTX4 = 64 + 4 * 3, GX_PTTEXMTX5 = 64 + 5 * 3, GX_PTTEXMTX6 = 64 + 6 * 3, GX_PTTEXMTX7 = 64 + 7 * 3, GX_PTTEXMTX8 = 64 + 8 * 3, GX_PTTEXMTX9 = 64 + 9 * 3, GX_PTTEXMTX10 = 64 + 10 * 3, GX_PTTEXMTX11 = 64 + 11 * 3, GX_PTTEXMTX12 = 64 + 12 * 3, GX_PTTEXMTX13 = 64 + 13 * 3, GX_PTTEXMTX14 = 64 + 14 * 3, GX_PTTEXMTX15 = 64 + 15 * 3, GX_PTTEXMTX16 = 64 + 16 * 3, GX_PTTEXMTX17 = 64 + 17 * 3, GX_PTTEXMTX18 = 64 + 18 * 3, GX_PTTEXMTX19 = 64 + 19 * 3, GX_PTIDENTITY = 125, } GXPTTexMtx; typedef enum _GXFBClamp { /* 0x0 */ GX_CLAMP_NONE, /* 0x1 */ GX_CLAMP_TOP, /* 0x2 */ GX_CLAMP_BOTTOM, GX_CLAMP_BOTH = GX_CLAMP_TOP | GX_CLAMP_BOTTOM, } GXFBClamp; typedef enum _GXPixelFmt { /* 0x0 */ GX_PF_RGB8_Z24, /* 0x1 */ GX_PF_RGBA6_Z24, /* 0x2 */ GX_PF_RGB565_Z16, /* 0x3 */ GX_PF_Z24, /* 0x4 */ GX_PF_Y8, /* 0x5 */ GX_PF_U8, /* 0x6 */ GX_PF_V8, /* 0x7 */ GX_PF_YUV420, /* 0x8 */ GX_PF_MAX, } GXPixelFmt; typedef enum _GXZFmt16 { /* 0x0 */ GX_ZC_LINEAR, /* 0x1 */ GX_ZC_NEAR, /* 0x2 */ GX_ZC_MID, /* 0x3 */ GX_ZC_FAR, } GXZFmt16; typedef enum _GXCommand { GX_CMD_LOAD_INDX_A = 0x20, GX_CMD_LOAD_INDX_B = 0x28, GX_CMD_LOAD_INDX_C = 0x30, GX_CMD_LOAD_INDX_D = 0x38, GX_CMD_LOAD_CP_REG = 0x08, GX_CMD_LOAD_XF_REG = 0x10, } GXCommand; typedef enum _GXClipMode { /* 0x0 */ GX_CLIP_ENABLE, /* 0x1 */ GX_CLIP_DISABLE, } GXClipMode; typedef enum _GXCopyMode { /* 0x0 */ GX_COPY_PROGRESSIVE, /* 0x1 */ GX_COPY_INTLC_EVEN, /* 0x2 */ GX_COPY_INTLC_ODD, } GXCopyMode; typedef enum _GXAlphaReadMode { /* 0x0 */ GX_READ_00, /* 0x1 */ GX_READ_FF, /* 0x2 */ GX_READ_NONE, } GXAlphaReadMode; typedef enum _GXTlutSize { /* 0x001 */ GX_TLUT_16 = 1, /* 0x002 */ GX_TLUT_32 = 2, /* 0x004 */ GX_TLUT_64 = 4, /* 0x008 */ GX_TLUT_128 = 8, /* 0x010 */ GX_TLUT_256 = 16, /* 0x020 */ GX_TLUT_512 = 32, /* 0x040 */ GX_TLUT_1K = 64, /* 0x080 */ GX_TLUT_2K = 128, /* 0x100 */ GX_TLUT_4K = 256, /* 0x200 */ GX_TLUT_8K = 512, /* 0x400 */ GX_TLUT_16K = 1024, } GXTlutSize; typedef enum _GXDirtyFlag { GX_DIRTY_SU_TEX = (1 << 0), GX_DIRTY_BP_MASK = (1 << 1), GX_DIRTY_GEN_MODE = (1 << 2), GX_DIRTY_VCD = (1 << 3), GX_DIRTY_VAT = (1 << 4), GX_DIRTY_AMB_COLOR0 = (1 << 8), GX_DIRTY_AMB_COLOR1 = (1 << 9), GX_DIRTY_MAT_COLOR0 = (1 << 10), GX_DIRTY_MAT_COLOR1 = (1 << 11), GX_DIRTY_MTX_IDX = (1 << 26), GX_DIRTY_PROJECTION = (1 << 27), GX_DIRTY_VIEWPORT = (1 << 28), GX_DIRTY_VLIM = GX_DIRTY_VCD | GX_DIRTY_VAT, GX_AMB_MAT_MASK = GX_DIRTY_AMB_COLOR0 | GX_DIRTY_AMB_COLOR1 | GX_DIRTY_MAT_COLOR0 | GX_DIRTY_MAT_COLOR1, GX_LIGHT_CHAN_MASK = 0x100F000, GX_TEX_GEN_MASK = 0x2FF0000, } GXDirtyFlag; // CP locator for vertex descriptor (lo). typedef enum _GXCPVCDLo { // Position matrix idx [31] GX_CP_VCD_LO_POSMTXIDX_ST = 31, GX_CP_VCD_LO_POSMTXIDX_END = 31, // Tex 0 matrix idx [30] GX_CP_VCD_LO_TEX0MTXIDX_ST = 30, GX_CP_VCD_LO_TEX0MTXIDX_END = 30, // Tex 1 matrix idx [29] GX_CP_VCD_LO_TEX1MTXIDX_ST = 29, GX_CP_VCD_LO_TEX1MTXIDX_END = 29, // Tex 2 matrix idx [28] GX_CP_VCD_LO_TEX2MTXIDX_ST = 28, GX_CP_VCD_LO_TEX2MTXIDX_END = 28, // Tex 3 matrix idx [27] GX_CP_VCD_LO_TEX3MTXIDX_ST = 27, GX_CP_VCD_LO_TEX3MTXIDX_END = 27, // Tex 4 matrix idx [26] GX_CP_VCD_LO_TEX4MTXIDX_ST = 26, GX_CP_VCD_LO_TEX4MTXIDX_END = 26, // Tex 5 matrix idx [25] GX_CP_VCD_LO_TEX5MTXIDX_ST = 25, GX_CP_VCD_LO_TEX5MTXIDX_END = 25, // Tex 6 matrix idx [24] GX_CP_VCD_LO_TEX6MTXIDX_ST = 24, GX_CP_VCD_LO_TEX6MTXIDX_END = 24, // Tex 7 matrix idx [23] GX_CP_VCD_LO_TEX7MTXIDX_ST = 23, GX_CP_VCD_LO_TEX7MTXIDX_END = 23, // Position [21-22] GX_CP_VCD_LO_POS_ST = 21, GX_CP_VCD_LO_POS_END = 22, // Normal [19-20] GX_CP_VCD_LO_NRM_ST = 19, GX_CP_VCD_LO_NRM_END = 20, // Color diffused [17-18] GX_CP_VCD_LO_CLRDIF_ST = 17, GX_CP_VCD_LO_CLRDIF_END = 18, // Color specular [15-16] GX_CP_VCD_LO_CLRSPEC_ST = 15, GX_CP_VCD_LO_CLRSPEC_END = 16, } GXCPVCDLo; // CP locators for vertex descriptor (hi). typedef enum _GXCPVCDHi { // Tex0 coordinates [30-31] GX_CP_VCD_HI_TEX0COORD_ST = 30, GX_CP_VCD_HI_TEX0COORD_END = 31, // Tex1 coordinates [28-29] GX_CP_VCD_HI_TEX1COORD_ST = 28, GX_CP_VCD_HI_TEX1COORD_END = 29, // Tex2 coordinates [26-27] GX_CP_VCD_HI_TEX2COORD_ST = 26, GX_CP_VCD_HI_TEX2COORD_END = 27, // Tex3 coordinates [24-25] GX_CP_VCD_HI_TEX3COORD_ST = 24, GX_CP_VCD_HI_TEX3COORD_END = 25, // Tex4 coordinates [22-23] GX_CP_VCD_HI_TEX4COORD_ST = 22, GX_CP_VCD_HI_TEX4COORD_END = 23, // Tex5 coordinates [20-21] GX_CP_VCD_HI_TEX5COORD_ST = 20, GX_CP_VCD_HI_TEX5COORD_END = 21, // Tex6 coordinates [18-19] GX_CP_VCD_HI_TEX6COORD_ST = 18, GX_CP_VCD_HI_TEX6COORD_END = 19, // Tex7 coordinates [16-17] GX_CP_VCD_HI_TEX7COORD_ST = 16, GX_CP_VCD_HI_TEX7COORD_END = 17, } GXCPVCDHi; // Command processor registers. typedef enum _GXCPRegs { GX_CP_REG_MTXIDXA = 0x30, // Matrix index A GX_CP_REG_MTXIDXB = 0x40, // Matrix index B GX_CP_REG_VCD_LO = 0x50, // Vertex descriptor (lo) GX_CP_REG_VCD_HI = 0x60, // Vertex descriptor (hi) GX_CP_REG_VAT_GRP0 = 0x70, // Vertex attribute table (group 0) GX_CP_REG_VAT_GRP1 = 0x80, // Vertex attribute table (group 1) GX_CP_REG_VAT_GRP2 = 0x90, // Vertex attribute table (group 2) GX_CP_REG_ARRAYBASE = 0xA0, // Vertex array start/base GX_CP_REG_ARRAYSTRIDE = 0xB0, // Vertex array stride } GXCPRegs; // Transform unit registers. typedef enum _GXXFRegs { GX_XF_REG_ERROR = 0x1000, GX_XF_REG_DIAGNOSTICS = 0x1001, GX_XF_REG_STATE0 = 0x1002, GX_XF_REG_STATE1 = 0x1003, GX_XF_REG_CLOCK = 0x1004, GX_XF_REG_CLIPDISABLE = 0x1005, GX_XF_REG_PERF0 = 0x1006, GX_XF_REG_PERF1 = 0x1007, GX_XF_REG_INVERTEXSPEC = 0x1008, GX_XF_REG_NUMCOLORS = 0x1009, GX_XF_REG_AMBIENT0 = 0x100A, GX_XF_REG_AMBIENT1 = 0x100B, GX_XF_REG_MATERIAL0 = 0x100C, GX_XF_REG_MATERIAL1 = 0x100D, GX_XF_REG_COLOR0CNTRL = 0x100E, GX_XF_REG_COLOR1CNTRL = 0x100F, GX_XF_REG_ALPHA0CNTRL = 0x1010, GX_XF_REG_ALPHA1CNTRL = 0x1011, GX_XF_REG_DUALTEXTRAN = 0x1012, GX_XF_REG_MATRIXINDEX0 = 0x1018, GX_XF_REG_MATRIXINDEX1 = 0x1019, GX_XF_REG_SCALEX = 0x101A, GX_XF_REG_SCALEY = 0x101B, GX_XF_REG_SCALEZ = 0x101C, GX_XF_REG_OFFSETX = 0x101D, GX_XF_REG_OFFSETY = 0x101E, GX_XF_REG_OFFSETZ = 0x101F, GX_XF_REG_PROJECTIONA = 0x1020, GX_XF_REG_PROJECTIONB = 0x1021, GX_XF_REG_PROJECTIONC = 0x1022, GX_XF_REG_PROJECTIOND = 0x1023, GX_XF_REG_PROJECTIONE = 0x1024, GX_XF_REG_PROJECTIONF = 0x1025, GX_XF_REG_PROJECTORTHO = 0x1026, GX_XF_REG_NUMTEX = 0x103F, GX_XF_REG_TEX0 = 0x1040, GX_XF_REG_TEX1 = 0x1041, GX_XF_REG_TEX2 = 0x1042, GX_XF_REG_TEX3 = 0x1043, GX_XF_REG_TEX4 = 0x1044, GX_XF_REG_TEX5 = 0x1045, GX_XF_REG_TEX6 = 0x1046, GX_XF_REG_TEX7 = 0x1047, GX_XF_REG_DUALTEX0 = 0x1050, GX_XF_REG_DUALTEX1 = 0x1051, GX_XF_REG_DUALTEX2 = 0x1052, GX_XF_REG_DUALTEX3 = 0x1053, GX_XF_REG_DUALTEX4 = 0x1054, GX_XF_REG_DUALTEX5 = 0x1055, GX_XF_REG_DUALTEX6 = 0x1056, GX_XF_REG_DUALTEX7 = 0x1057, } GXXFRegs; // Commands for interacting with the GXFifo pipe. typedef enum _GXFifoCmd { GX_FIFO_CMD_NOOP = 0x00, // no operation GX_FIFO_CMD_LOAD_BP_REG = 0x61, // load blitting processor reg GX_FIFO_CMD_LOAD_CP_REG = 0x08, // load command processor reg GX_FIFO_CMD_LOAD_XF_REG = 0x10, // load transform unit reg GX_FIFO_CMD_LOAD_INDX_A = 0x20, // load index A GX_FIFO_CMD_LOAD_INDX_B = 0x28, // load index B GX_FIFO_CMD_LOAD_INDX_C = 0x30, // load index C GX_FIFO_CMD_LOAD_INDX_D = 0x38, // load index D GX_FIFO_CMD_CALL_DL = 0x40, // call displaylist GX_FIFO_CMD_INVAL_VTX = 0x48, // invalid vertex } GXFifoCmd; // CP locator for vertex attribute table (group 0). typedef enum _GXCPVATGrp0 { // Position count [31-31] GX_CP_VAT_GRP0_POS_CNT_ST = 31, GX_CP_VAT_GRP0_POS_CNT_END = 31, // Position type [28-30] GX_CP_VAT_GRP0_POS_TYPE_ST = 28, GX_CP_VAT_GRP0_POS_TYPE_END = 30, // Position shift [23-27] GX_CP_VAT_GRP0_POS_SHIFT_ST = 23, GX_CP_VAT_GRP0_POS_SHIFT_END = 27, // Normal count [22-22] GX_CP_VAT_GRP0_NRM_CNT_ST = 22, GX_CP_VAT_GRP0_NRM_CNT_END = 22, // Normal type [19-21] GX_CP_VAT_GRP0_NRM_TYPE_ST = 19, GX_CP_VAT_GRP0_NRM_TYPE_END = 21, // Color diffused count [18-18] GX_CP_VAT_GRP0_CLRDIFF_CNT_ST = 18, GX_CP_VAT_GRP0_CLRDIFF_CNT_END = 18, // Color diffused type [15-17] GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST = 15, GX_CP_VAT_GRP0_CLRDIFF_TYPE_END = 17, // Color specular count [14-14] GX_CP_VAT_GRP0_CLRSPEC_CNT_ST = 14, GX_CP_VAT_GRP0_CLRSPEC_CNT_END = 14, // Color specular type [11-13] GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST = 11, GX_CP_VAT_GRP0_CLRSPEC_TYPE_END = 13, // Tex0 coord count [10-10] GX_CP_VAT_GRP0_TXC0_CNT_ST = 10, GX_CP_VAT_GRP0_TXC0_CNT_END = 10, // Tex0 coord type [7-9] GX_CP_VAT_GRP0_TXC0_TYPE_ST = 7, GX_CP_VAT_GRP0_TXC0_TYPE_END = 9, // Tex0 coord shift [2-6] GX_CP_VAT_GRP0_TXC0_SHIFT_ST = 2, GX_CP_VAT_GRP0_TXC0_SHIFT_END = 6, // Byte dequantised [1-1] GX_CP_VAT_GRP0_BYTEDEQ_ST = 1, GX_CP_VAT_GRP0_BYTEDEQ_END = 1, // Normal index 3 [0-0] (Input will be treated as three staggered indices (one per triple biased // by component size) into normal table)) GX_CP_VAT_GRP0_NRMIDX3_ST = 0, GX_CP_VAT_GRP0_NRMIDX3_END = 0, } GXCPVATGrp0; // CP locators for vertex attribute table (group 1). typedef enum _GXCPVATGrp1 { // Tex1 coord count [31-31] GX_CP_VAT_GRP1_TXC1_CNT_ST = 31, GX_CP_VAT_GRP1_TXC1_CNT_END = 31, // Tex1 coord type [28-30] GX_CP_VAT_GRP1_TXC1_TYPE_ST = 28, GX_CP_VAT_GRP1_TXC1_TYPE_END = 30, // Tex1 coord shift [23-27] GX_CP_VAT_GRP1_TXC1_SHIFT_ST = 23, GX_CP_VAT_GRP1_TXC1_SHIFT_END = 27, // Tex2 coord count [22-22] GX_CP_VAT_GRP1_TXC2_CNT_ST = 22, GX_CP_VAT_GRP1_TXC2_CNT_END = 22, // Tex2 coord type [19-21] GX_CP_VAT_GRP1_TXC2_TYPE_ST = 19, GX_CP_VAT_GRP1_TXC2_TYPE_END = 21, // Tex2 coord shift [14-18] GX_CP_VAT_GRP1_TXC2_SHIFT_ST = 14, GX_CP_VAT_GRP1_TXC2_SHIFT_END = 18, // Tex3 coord count [13-13] GX_CP_VAT_GRP1_TXC3_CNT_ST = 13, GX_CP_VAT_GRP1_TXC3_CNT_END = 13, // Tex3 coord type [10-12] GX_CP_VAT_GRP1_TXC3_TYPE_ST = 10, GX_CP_VAT_GRP1_TXC3_TYPE_END = 12, // Tex3 coord shift [5-9] GX_CP_VAT_GRP1_TXC3_SHIFT_ST = 5, GX_CP_VAT_GRP1_TXC3_SHIFT_END = 9, // Tex4 coord count [4-4] GX_CP_VAT_GRP1_TXC4_CNT_ST = 4, GX_CP_VAT_GRP1_TXC4_CNT_END = 4, // Tex4 coord type [1-3] GX_CP_VAT_GRP1_TXC4_TYPE_ST = 1, GX_CP_VAT_GRP1_TXC4_TYPE_END = 3, } GXCPVATGrp1; // CP locators for vertex attribute table (group 2). typedef enum _GXCPVATGrp2 { // Tex4 coord shift [27-31] GX_CP_VAT_GRP2_TXC4_SHIFT_ST = 27, GX_CP_VAT_GRP2_TXC4_SHIFT_END = 31, // Tex5 coord count [26-26] GX_CP_VAT_GRP2_TXC5_CNT_ST = 26, GX_CP_VAT_GRP2_TXC5_CNT_END = 26, // Tex5 coord type [23-25] GX_CP_VAT_GRP2_TXC5_TYPE_ST = 23, GX_CP_VAT_GRP2_TXC5_TYPE_END = 25, // Tex5 coord shift [18-22] GX_CP_VAT_GRP2_TXC5_SHIFT_ST = 18, GX_CP_VAT_GRP2_TXC5_SHIFT_END = 22, // Tex6 coord count [17-17] GX_CP_VAT_GRP2_TXC6_CNT_ST = 17, GX_CP_VAT_GRP2_TXC6_CNT_END = 17, // Tex6 coord type [14-16] GX_CP_VAT_GRP2_TXC6_TYPE_ST = 14, GX_CP_VAT_GRP2_TXC6_TYPE_END = 16, // Tex6 coord shift [9-13] GX_CP_VAT_GRP2_TXC6_SHIFT_ST = 9, GX_CP_VAT_GRP2_TXC6_SHIFT_END = 13, // Tex7 coord count [8-8] GX_CP_VAT_GRP2_TXC7_CNT_ST = 8, GX_CP_VAT_GRP2_TXC7_CNT_END = 8, // Tex7 coord type [5-7] GX_CP_VAT_GRP2_TXC7_TYPE_ST = 5, GX_CP_VAT_GRP2_TXC7_TYPE_END = 7, // Tex7 coord shift [0-4] GX_CP_VAT_GRP2_TXC7_SHIFT_ST = 0, GX_CP_VAT_GRP2_TXC7_SHIFT_END = 4, } GXCPVATGrp2; // BP GenMode locators. typedef enum _GXBPGenMode { // Active texture counts [28-31] GX_BP_GENMODE_NUMTEX_ST = 28, GX_BP_GENMODE_NUMTEX_END = 31, // Color/channel counts [25-27] GX_BP_GENMODE_NUMCOLORS_ST = 25, GX_BP_GENMODE_NUMCOLORS_END = 27, // Multisample mode [22-22] GX_BP_GENMODE_MULTISAMPLE_ST = 22, GX_BP_GENMODE_MULTISAMPLE_END = 22, // Cull mode [16-17] GX_BP_GENMODE_CULLMODE_ST = 16, GX_BP_GENMODE_CULLMODE_END = 17, // Indirect stage counts [13-15] GX_BP_GENMODE_NUMINDSTAGES_ST = 13, GX_BP_GENMODE_NUMINDSTAGES_END = 15, // Toggle co-planar/Z-freeze [12-12] GX_BP_GENMODE_COPLANAR_ST = 12, GX_BP_GENMODE_COPLANAR_END = 12, } GXBPGenMode; // Texture register fields for XF (transform) unit. typedef enum _GXXfTexReg { GX_XF_TEX_PROJ_ST = 0, // (s,t) (2x4) GX_XF_TEX_PROJ_STQ = 1, // (s,t,q) (3x4) GX_XF_TEX_FORM_AB11 = 0, // (A, B, 1.0f, 1.0f), used for regular tex src GX_XF_TEX_FORM_ABC1 = 1, // (A, B, C, 1.0f), used for geometry/normal src } GXXfTexReg; // XF locators for textures. typedef enum _GXXFTex { // Projection type [30-30] GX_XF_TEX_PROJTYPE_ST = 30, GX_XF_TEX_PROJTYPE_END = 30, // Input format [29-29] GX_XF_TEX_INPUTFORM_ST = 29, GX_XF_TEX_INPUTFORM_END = 29, // Texture gen type [25-27] GX_XF_TEX_TEXGENTYPE_ST = 25, GX_XF_TEX_TEXGENTYPE_END = 27, // Source row [20-24] GX_XF_TEX_SRCROW_ST = 20, GX_XF_TEX_SRCROW_END = 24, // Bump source texture [17-19] GX_XF_TEX_BUMPSRCTEX_ST = 17, GX_XF_TEX_BUMPSRCTEX_END = 19, // Bump source light [14-16] GX_XF_TEX_BUMPSRCLIGHT_ST = 14, GX_XF_TEX_BUMPSRCLIGHT_END = 16, } GXXFTex; // XF locators for dual textures. typedef enum _GXXFDualTex { // Base row of the transform matrix [26-31] GX_XF_DUALTEX_BASEROW_ST = 26, GX_XF_DUALTEX_BASEROW_END = 31, // Normalise texcoord before sending transform [23-23] GX_XF_DUALTEX_NORMALISE_ST = 23, GX_XF_DUALTEX_NORMALISE_END = 23, } GXXFDualTex; // General texture commands. typedef enum _GXXfTexGen { GX_XF_TG_REGULAR = 0, // Regular; transform incoming data. GX_XF_TG_BUMP = 1, // Texgen bump mapping. GX_XF_TG_CLR0 = 2, // Color texgen for color 0 (s,t) = (r, g:b) GX_XF_TG_CLR1 = 3, // Color texgen for color 1 (s,t) = (r, g:b) } GXXfTexGen; // XF locators for matrix index 0. typedef enum _GXXFMtxIdx0 { // Geometry [26-31] GX_XF_MTXIDX0_GEOM_ST = 26, GX_XF_MTXIDX0_GEOM_END = 31, // Tex 0 [20-25] GX_XF_MTXIDX0_TEX0_ST = 20, GX_XF_MTXIDX0_TEX0_END = 25, // Tex 1 [14-19] GX_XF_MTXIDX0_TEX1_ST = 14, GX_XF_MTXIDX0_TEX1_END = 19, // Tex 2 [8-13] GX_XF_MTXIDX0_TEX2_ST = 8, GX_XF_MTXIDX0_TEX2_END = 13, // Tex 3 [2-7] GX_XF_MTXIDX0_TEX3_ST = 2, GX_XF_MTXIDX0_TEX3_END = 7, } GXXFMtxIdx0; // XF locators for matrix index 1. typedef enum _GXXFMtxIdx1 { // Tex 4 [26-31] GX_XF_MTXIDX1_TEX4_ST = 26, GX_XF_MTXIDX1_TEX4_END = 31, // Tex 5 [20-25] GX_XF_MTXIDX1_TEX5_ST = 20, GX_XF_MTXIDX1_TEX5_END = 25, // Tex 6 [14-19] GX_XF_MTXIDX1_TEX6_ST = 14, GX_XF_MTXIDX1_TEX6_END = 19, // Tex 7 [8-13] GX_XF_MTXIDX1_TEX7_ST = 8, GX_XF_MTXIDX1_TEX7_END = 13, } GXXFMtxIdx1; // Blitting processor registers. typedef enum _GXBPRegs { // gen mode GX_BP_REG_GENMODE = 0x0, // gen mode // display copy filters GX_BP_REG_DISPCOPYFILTER0 = 0x1, // display copy filter 0 GX_BP_REG_DISPCOPYFILTER1 = 0x2, // display copy filter 1 GX_BP_REG_DISPCOPYFILTER2 = 0x3, // display copy filter 2 GX_BP_REG_DISPCOPYFILTER3 = 0x4, // display copy filter 3 // indirect matrices GX_BP_REG_INDMTX0A = 0x6, // indirect matrix 0A GX_BP_REG_INDMTX0B = 0x7, // indirect matrix 0B GX_BP_REG_INDMTX0C = 0x8, // indirect matrix 0C GX_BP_REG_INDMTX1A = 0x9, // indirect matrix 1A GX_BP_REG_INDMTX1B = 0xA, // indirect matrix 1B GX_BP_REG_INDMTX1C = 0xB, // indirect matrix 1C GX_BP_REG_INDMTX2A = 0xC, // indirect matrix 2A GX_BP_REG_INDMTX2B = 0xD, // indirect matrix 2B GX_BP_REG_INDMTX2C = 0xE, // indirect matrix 2C GX_BP_REG_INDIMASK = 0xF, // indirect mask // indirect TEV stages GX_BP_REG_INDTEVSTAGE0 = 0x10, // indirect TEV stage 0 GX_BP_REG_INDTEVSTAGE1 = 0x11, // indirect TEV stage 1 GX_BP_REG_INDTEVSTAGE2 = 0x12, // indirect TEV stage 2 GX_BP_REG_INDTEVSTAGE3 = 0x13, // indirect TEV stage 3 GX_BP_REG_INDTEVSTAGE4 = 0x14, // indirect TEV stage 4 GX_BP_REG_INDTEVSTAGE5 = 0x15, // indirect TEV stage 5 GX_BP_REG_INDTEVSTAGE6 = 0x16, // indirect TEV stage 6 GX_BP_REG_INDTEVSTAGE7 = 0x17, // indirect TEV stage 7 GX_BP_REG_INDTEVSTAGE8 = 0x18, // indirect TEV stage 8 GX_BP_REG_INDTEVSTAGE9 = 0x19, // indirect TEV stage 9 GX_BP_REG_INDTEVSTAGE10 = 0x1A, // indirect TEV stage 10 GX_BP_REG_INDTEVSTAGE11 = 0x1B, // indirect TEV stage 11 GX_BP_REG_INDTEVSTAGE12 = 0x1C, // indirect TEV stage 12 GX_BP_REG_INDTEVSTAGE13 = 0x1D, // indirect TEV stage 13 GX_BP_REG_INDTEVSTAGE14 = 0x1E, // indirect TEV stage 14 GX_BP_REG_INDTEVSTAGE15 = 0x1F, // indirect TEV stage 15 // performance manips GX_BP_REG_SCISSORTL = 0x20, // scissor top left GX_BP_REG_SCISSORBR = 0x21, // scissor bottom right GX_BP_REG_LINEPTWIDTH = 0x22, // line point width GX_BP_REG_PERF0TRI = 0x23, // performance 0 (triangle) GX_BP_REG_PERF0QUAD = 0x24, // performance 0 (quad) // rasters GX_BP_REG_RAS1_SS0 = 0x25, GX_BP_REG_RAS1_SS1 = 0x26, GX_BP_REG_RAS1_IREF = 0x27, GX_BP_REG_RAS1_TREF0 = 0x28, GX_BP_REG_RAS1_TREF1 = 0x29, GX_BP_REG_RAS1_TREF2 = 0x2A, GX_BP_REG_RAS1_TREF3 = 0x2B, GX_BP_REG_RAS1_TREF4 = 0x2C, GX_BP_REG_RAS1_TREF5 = 0x2D, GX_BP_REG_RAS1_TREF6 = 0x2E, GX_BP_REG_RAS1_TREF7 = 0x2F, // setup sizes GX_BP_REG_SU_SSIZE0 = 0x30, GX_BP_REG_SU_TSIZE0 = 0x31, GX_BP_REG_SU_SSIZE1 = 0x32, GX_BP_REG_SU_TSIZE1 = 0x33, GX_BP_REG_SU_SSIZE2 = 0x34, GX_BP_REG_SU_TSIZE2 = 0x35, GX_BP_REG_SU_SSIZE3 = 0x36, GX_BP_REG_SU_TSIZE3 = 0x37, GX_BP_REG_SU_SSIZE4 = 0x38, GX_BP_REG_SU_TSIZE4 = 0x39, GX_BP_REG_SU_SSIZE5 = 0x3A, GX_BP_REG_SU_TSIZE5 = 0x3B, GX_BP_REG_SU_SSIZE6 = 0x3C, GX_BP_REG_SU_TSIZE6 = 0x3D, GX_BP_REG_SU_SSIZE7 = 0x3E, GX_BP_REG_SU_TSIZE7 = 0x3F, // Z and blend controls GX_BP_REG_ZMODE = 0x40, GX_BP_REG_BLENDMODE = 0x41, GX_BP_REG_DSTALPHA = 0x42, GX_BP_REG_ZCONTROL = 0x43, GX_BP_REG_FIELDMASK = 0x44, GX_BP_REG_DRAWDONE = 0x45, GX_BP_REG_PETOKEN = 0x47, GX_BP_REG_PETOKENINT = 0x48, // copying GX_BP_REG_TEXCOPYSRCXY = 0x49, GX_BP_REG_TEXCOPYSRCWH = 0x4A, GX_BP_REG_TEXCOPYDST = 0x4B, GX_BP_REG_DISPCOPYSTRIDE = 0x4D, GX_BP_REG_DISPCOPYSCALEY = 0x4E, GX_BP_REG_COPYCLEARAR = 0x4F, GX_BP_REG_COPYCLEARGB = 0x50, GX_BP_REG_COPYCLEARZ = 0x51, GX_BP_REG_COPYFILTER0 = 0x53, GX_BP_REG_COPYFILTER1 = 0x54, // GX_BP_REG_BOUNDINGBOX0 = 0x55, GX_BP_REG_BOUNDINGBOX1 = 0x56, GX_BP_REG_SCISSOROFFSET = 0x59, // texture memory GX_BP_REG_TMEMPRELOADADDR = 0x60, GX_BP_REG_TMEMPRELOADEVEN = 0x61, GX_BP_REG_TMEMPRELOADODD = 0x62, GX_BP_REG_TMEMPRELOADMODE = 0x63, GX_BP_REG_TMEMTLUTSRC = 0x64, GX_BP_REG_TMEMTLUTDST = 0x65, GX_BP_REG_TMEMTEXINVALIDATE = 0x66, // performance 1 GX_BP_REG_PERF1 = 0x67, GX_BP_REG_FIELDMODE = 0x68, // set modes GX_BP_REG_SETMODE0_TEX0 = 0x80, GX_BP_REG_SETMODE0_TEX1 = 0x81, GX_BP_REG_SETMODE0_TEX2 = 0x82, GX_BP_REG_SETMODE0_TEX3 = 0x83, GX_BP_REG_SETMODE1_TEX0 = 0x84, GX_BP_REG_SETMODE1_TEX1 = 0x85, GX_BP_REG_SETMODE1_TEX2 = 0x86, GX_BP_REG_SETMODE1_TEX3 = 0x87, // set images GX_BP_REG_SETIMAGE0_TEX0 = 0x88, GX_BP_REG_SETIMAGE0_TEX1 = 0x89, GX_BP_REG_SETIMAGE0_TEX2 = 0x8A, GX_BP_REG_SETIMAGE0_TEX3 = 0x8B, GX_BP_REG_SETIMAGE1_TEX0 = 0x8C, GX_BP_REG_SETIMAGE1_TEX1 = 0x8D, GX_BP_REG_SETIMAGE1_TEX2 = 0x8E, GX_BP_REG_SETIMAGE1_TEX3 = 0x8F, GX_BP_REG_SETIMAGE2_TEX0 = 0x90, GX_BP_REG_SETIMAGE2_TEX1 = 0x91, GX_BP_REG_SETIMAGE2_TEX2 = 0x92, GX_BP_REG_SETIMAGE2_TEX3 = 0x93, GX_BP_REG_SETIMAGE3_TEX0 = 0x94, GX_BP_REG_SETIMAGE3_TEX1 = 0x95, GX_BP_REG_SETIMAGE3_TEX2 = 0x96, GX_BP_REG_SETIMAGE3_TEX3 = 0x97, // set texture lookups GX_BP_REG_SETTLUT_TEX0 = 0x98, GX_BP_REG_SETTLUT_TEX1 = 0x99, GX_BP_REG_SETTLUT_TEX2 = 0x9A, GX_BP_REG_SETTLUT_TEX3 = 0x9B, // set modes continued GX_BP_REG_SETMODE0_TEX4 = 0xA0, GX_BP_REG_SETMODE0_TEX5 = 0xA1, GX_BP_REG_SETMODE0_TEX6 = 0xA2, GX_BP_REG_SETMODE0_TEX7 = 0xA3, GX_BP_REG_SETMODE1_TEX4 = 0xA4, GX_BP_REG_SETMODE1_TEX5 = 0xA5, GX_BP_REG_SETMODE1_TEX6 = 0xA6, GX_BP_REG_SETMODE1_TEX7 = 0xA7, // set images continued GX_BP_REG_SETIMAGE0_TEX4 = 0xA8, GX_BP_REG_SETIMAGE0_TEX5 = 0xA9, GX_BP_REG_SETIMAGE0_TEX6 = 0xAA, GX_BP_REG_SETIMAGE0_TEX7 = 0xAB, GX_BP_REG_SETIMAGE1_TEX4 = 0xAC, GX_BP_REG_SETIMAGE1_TEX5 = 0xAD, GX_BP_REG_SETIMAGE1_TEX6 = 0xAE, GX_BP_REG_SETIMAGE1_TEX7 = 0xAF, GX_BP_REG_SETIMAGE2_TEX4 = 0xB0, GX_BP_REG_SETIMAGE2_TEX5 = 0xB1, GX_BP_REG_SETIMAGE2_TEX6 = 0xB2, GX_BP_REG_SETIMAGE2_TEX7 = 0xB3, GX_BP_REG_SETIMAGE3_TEX4 = 0xB4, GX_BP_REG_SETIMAGE3_TEX5 = 0xB5, GX_BP_REG_SETIMAGE3_TEX6 = 0xB6, GX_BP_REG_SETIMAGE3_TEX7 = 0xB7, // set texture lookups continued GX_BP_REG_SETTLUT_TEX4 = 0xB8, GX_BP_REG_SETTLUT_TEX5 = 0xB9, GX_BP_REG_SETTLUT_TEX6 = 0xBA, GX_BP_REG_SETTLUT_TEX7 = 0xBB, // TEV color manips GX_BP_REG_TEVCOLORCOMBINER0 = 0xC0, GX_BP_REG_TEVALPHACOMBINER0 = 0xC1, GX_BP_REG_TEVCOLORCOMBINER1 = 0xC2, GX_BP_REG_TEVALPHACOMBINER1 = 0xC3, GX_BP_REG_TEVCOLORCOMBINER2 = 0xC4, GX_BP_REG_TEVALPHACOMBINER2 = 0xC5, GX_BP_REG_TEVCOLORCOMBINER3 = 0xC6, GX_BP_REG_TEVALPHACOMBINER3 = 0xC7, GX_BP_REG_TEVCOLORCOMBINER4 = 0xC8, GX_BP_REG_TEVALPHACOMBINER4 = 0xC9, GX_BP_REG_TEVCOLORCOMBINER5 = 0xCA, GX_BP_REG_TEVALPHACOMBINER5 = 0xCB, GX_BP_REG_TEVCOLORCOMBINER6 = 0xCC, GX_BP_REG_TEVALPHACOMBINER6 = 0xCD, GX_BP_REG_TEVCOLORCOMBINER7 = 0xCE, GX_BP_REG_TEVALPHACOMBINER7 = 0xCF, GX_BP_REG_TEVCOLORCOMBINER8 = 0xD0, GX_BP_REG_TEVALPHACOMBINER8 = 0xD1, GX_BP_REG_TEVCOLORCOMBINER9 = 0xD2, GX_BP_REG_TEVALPHACOMBINER9 = 0xD3, GX_BP_REG_TEVCOLORCOMBINER10 = 0xD4, GX_BP_REG_TEVALPHACOMBINER10 = 0xD5, GX_BP_REG_TEVCOLORCOMBINER11 = 0xD6, GX_BP_REG_TEVALPHACOMBINER11 = 0xD7, GX_BP_REG_TEVCOLORCOMBINER12 = 0xD8, GX_BP_REG_TEVALPHACOMBINER12 = 0xD9, GX_BP_REG_TEVCOLORCOMBINER13 = 0xDA, GX_BP_REG_TEVALPHACOMBINER13 = 0xDB, GX_BP_REG_TEVCOLORCOMBINER14 = 0xDC, GX_BP_REG_TEVALPHACOMBINER14 = 0xDD, GX_BP_REG_TEVCOLORCOMBINER15 = 0xDE, GX_BP_REG_TEVALPHACOMBINER15 = 0xDF, // TEV registers GX_BP_REG_TEVREG0LO = 0xE0, GX_BP_REG_TEVREG0HI = 0xE1, GX_BP_REG_TEVREG1LO = 0xE2, GX_BP_REG_TEVREG1HI = 0xE3, GX_BP_REG_TEVREG2LO = 0xE4, GX_BP_REG_TEVREG2HI = 0xE5, GX_BP_REG_TEVREG3LO = 0xE6, GX_BP_REG_TEVREG3HI = 0xE7, // fog registers GX_BP_REG_FOGRANGE = 0xE8, GX_BP_REG_FOGRANGEK0 = 0xE9, GX_BP_REG_FOGRANGEK1 = 0xEA, GX_BP_REG_FOGRANGEK2 = 0xEB, GX_BP_REG_FOGRANGEK3 = 0xEC, GX_BP_REG_FOGRANGEK4 = 0xED, GX_BP_REG_FOGPARAM0 = 0xEE, GX_BP_REG_FOGPARAM1 = 0xEF, GX_BP_REG_FOGPARAM2 = 0xF0, GX_BP_REG_FOGPARAM3 = 0xF1, GX_BP_REG_FOGCOLOR = 0xF2, // performance manip registers GX_BP_REG_ALPHACOMPARE = 0xF3, GX_BP_REG_ZTEXTURE0 = 0xF4, GX_BP_REG_ZTEXTURE1 = 0xF5, // TEV K selectors GX_BP_REG_TEVKSEL0 = 0xF6, GX_BP_REG_TEVKSEL1 = 0xF7, GX_BP_REG_TEVKSEL2 = 0xF8, GX_BP_REG_TEVKSEL3 = 0xF9, GX_BP_REG_TEVKSEL4 = 0xFA, GX_BP_REG_TEVKSEL5 = 0xFB, GX_BP_REG_TEVKSEL6 = 0xFC, GX_BP_REG_TEVKSEL7 = 0xFD, // SS mask GX_BP_REG_SSMASK = 0xFE, } GXBPRegs; // BP locators for fog parameter 0. typedef enum _GXBPFogParam0 { // A mantissa [21-31] GX_BP_FOGPARAM0_A_MANT_ST = 21, GX_BP_FOGPARAM0_A_MANT_END = 31, // A exponent [13-20] GX_BP_FOGPARAM0_A_EXP_ST = 13, GX_BP_FOGPARAM0_A_EXP_END = 20, // A sign [12-12] GX_BP_FOGPARAM0_A_SIGN_ST = 12, GX_BP_FOGPARAM0_A_SIGN_END = 12, } GXBPFogParam0; // BP locators for fog parameter 1. typedef enum _GXBPFogParam1 { // B magnitude [8-31] GX_BP_FOGPARAM1_B_MAG_ST = 8, GX_BP_FOGPARAM1_B_MAG_END = 31, } GXBPFogParam1; // BP locators for fog parameter 2. typedef enum _GXBPFogParam2 { // B shift [27-31] GX_BP_FOGPARAM2_B_SHIFT_ST = 27, GX_BP_FOGPARAM2_B_SHIFT_END = 31, } GXBPFogParam2; // BP locators for fog parameter 3. typedef enum _GXBPFogParam3 { // C mantissa [21-31] GX_BP_FOGPARAM3_C_MANT_ST = 21, GX_BP_FOGPARAM3_C_MANT_END = 31, // C exponent [13-20] GX_BP_FOGPARAM3_C_EXP_ST = 13, GX_BP_FOGPARAM3_C_EXP_END = 20, // C sign [12-12] GX_BP_FOGPARAM3_C_SIGN_ST = 12, GX_BP_FOGPARAM3_C_SIGN_END = 12, // Projection [11] GX_BP_FOGPARAM3_PROJ_ST = 11, GX_BP_FOGPARAM3_PROJ_END = 11, // F select [8-10] GX_BP_FOGPARAM3_FSEL_ST = 8, GX_BP_FOGPARAM3_FSEL_END = 10, } GXBPFogParam3; // BP locators for fog color. typedef enum _GXBPFogColor { // RGB components of color [8-31] GX_BP_FOGCOLOR_RGB_ST = 8, GX_BP_FOGCOLOR_RGB_END = 31, } GXBPFogColor; // BP locators for fog range. typedef enum _GXBPFogRange { // Center [22-31] GX_BP_FOGRANGE_CENTER_ST = 22, GX_BP_FOGRANGE_CENTER_END = 31, // Enabled [21-21] GX_BP_FOGRANGE_ENABLED_ST = 21, GX_BP_FOGRANGE_ENABLED_END = 21, } GXBPFogRange; // BP locators for fog range K. typedef enum _GXBPFogRangeK { // Hi [20-31] GX_BP_FOGRANGEK_HI_ST = 20, GX_BP_FOGRANGEK_HI_END = 31, // Lo [8-19] GX_BP_FOGRANGEK_LO_ST = 8, GX_BP_FOGRANGEK_LO_END = 19, } GXBPFogRangeK; // BP locators for blend mode. typedef enum _GXBPBlendMode { // Blend enable [31-31] GX_BP_BLENDMODE_ENABLE_ST = 31, GX_BP_BLENDMODE_ENABLE_END = 31, // Logic operation enable [30-30] GX_BP_BLENDMODE_LOGIC_OP_ST = 30, GX_BP_BLENDMODE_LOGIC_OP_END = 30, // Dither [29-29] GX_BP_BLENDMODE_DITHER_ST = 29, GX_BP_BLENDMODE_DITHER_END = 29, // Color update [28-28] GX_BP_BLENDMODE_COLOR_UPDATE_ST = 28, GX_BP_BLENDMODE_COLOR_UPDATE_END = 28, // Alpha update [27-27] GX_BP_BLENDMODE_ALPHA_UPDATE_ST = 27, GX_BP_BLENDMODE_ALPHA_UPDATE_END = 27, // Destination factor [24-26] GX_BP_BLENDMODE_DSTFACTOR_ST = 24, GX_BP_BLENDMODE_DSTFACTOR_END = 26, // Source factor [21-23] GX_BP_BLENDMODE_SRCFACTOR_ST = 21, GX_BP_BLENDMODE_SRCFACTOR_END = 23, // Subtract [20-20] GX_BP_BLENDMODE_SUBTRACT_ST = 20, GX_BP_BLENDMODE_SUBTRACT_END = 20, // Logic mode [16-19] GX_BP_BLENDMODE_LOGICMODE_ST = 16, GX_BP_BLENDMODE_LOGICMODE_END = 19, } GXBPBlendMode; // BP locators for Z mode. typedef enum _GXBPZMode { // Test enable [31-31] GX_BP_ZMODE_TEST_ENABLE_ST = 31, GX_BP_ZMODE_TEST_ENABLE_END = 31, // Compare [28-30] GX_BP_ZMODE_COMPARE_ST = 28, GX_BP_ZMODE_COMPARE_END = 30, // Update enable [27-27] GX_BP_ZMODE_UPDATE_ENABLE_ST = 27, GX_BP_ZMODE_UPDATE_ENABLE_END = 27, } GXBPZMode; // BP locators for Z control. typedef enum _GXBPZControl { // Pixel format [29-31] GX_BP_ZCONTROL_PIXEL_FMT_ST = 29, GX_BP_ZCONTROL_PIXEL_FMT_END = 31, // Z format [26-28] GX_BP_ZCONTROL_Z_FMT_ST = 26, GX_BP_ZCONTROL_Z_FMT_END = 28, // Whether to do Z-buffering before or after texturing [25-25] GX_BP_ZCONTROL_BEFORE_TEX_ST = 25, GX_BP_ZCONTROL_BEFORE_TEX_END = 25, } GXBPZControl; // BP locators for destination alpha. typedef enum _GXBPDstAlpha { // Alpha [24-31] GX_BP_DSTALPHA_ALPHA_ST = 24, GX_BP_DSTALPHA_ALPHA_END = 31, // Enable [23-23] GX_BP_DSTALPHA_ENABLE_ST = 23, GX_BP_DSTALPHA_ENABLE_END = 23, // YUV format [21-22] GX_BP_DSTALPHA_YUV_FMT_ST = 21, GX_BP_DSTALPHA_YUV_FMT_END = 22, } GXBPDstAlpha; // BP locators for field mask. typedef enum _GXBPFieldMask { // Whether to write odd fields to the EFB [31-31] GX_BP_FIELDMASK_ODD_ST = 31, GX_BP_FIELDMASK_ODD_END = 31, // Whether to write even fields to the EFB [30-30] GX_BP_FIELDMASK_EVEN_ST = 30, GX_BP_FIELDMASK_EVEN_END = 30, } GXBPFieldMask; // BP locators for line and point settings. typedef enum _GXBPLinePtWidth { // Line size/width [24-31] GX_BP_LINEPTWIDTH_LINESZ_ST = 24, GX_BP_LINEPTWIDTH_LINESZ_END = 31, // Point size [16-23] GX_BP_LINEPTWIDTH_POINTSZ_ST = 16, GX_BP_LINEPTWIDTH_POINTSZ_END = 23, // Line offset [13-15] GX_BP_LINEPTWIDTH_LINEOFS_ST = 13, GX_BP_LINEPTWIDTH_LINEOFS_END = 15, // Point offset [10-12] GX_BP_LINEPTWIDTH_POINTOFS_ST = 10, GX_BP_LINEPTWIDTH_POINTOFS_END = 12, // Interlacing adjustment for aspect ratio [9-9] GX_BP_LINEPTWIDTH_ADJUST_ST = 9, GX_BP_LINEPTWIDTH_ADJUST_END = 9, } GXBPLinePtWidth; // Miscellaneous token types. typedef enum _GXMiscToken { GX_MT_NULL = 0, GX_MT_XF_FLUSH = 1, GX_MT_DL_SAVE_CONTEXT = 2, GX_MT_ABORT_WAIT_COPYOUT = 3, } GXMiscToken; // Transform memory types. typedef enum _GXXfMem { GX_XF_MEM_POSMTX = 0x000, // position coord matrix GX_XF_MEM_NRMMTX = 0x400, // normal coord matrix GX_XF_MEM_DUALTEXMTX = 0x500, // dual texture matrix GX_XF_MEM_LIGHTOBJ = 0x600, // light object } GXXfMem; // BP locators for top-left scissor. typedef enum _GXBPScissorTL { // Top component [21-31] GX_BP_SCISSORTL_TOP_ST = 21, GX_BP_SCISSORTL_TOP_END = 31, // Left component [9-19] GX_BP_SCISSORTL_LEFT_ST = 9, GX_BP_SCISSORTL_LEFT_END = 19, } GXBPScissorTL; // BP locators for bottom-right scissor. typedef enum _GXBPScissorBR { // Bottom component [21-31] GX_BP_SCISSORBR_BOT_ST = 21, GX_BP_SCISSORBR_BOT_END = 31, // Right component [9-19] GX_BP_SCISSORBR_RIGHT_ST = 9, GX_BP_SCISSORBR_RIGHT_END = 19, } GXBPScissorBR; // BP locators for scissor offset. typedef enum _GXBPScissorOffset { // X offset [22-31] GX_BP_SCISSOROFS_OX_ST = 22, GX_BP_SCISSOROFS_OX_END = 31, // Y offset [12-21] GX_BP_SCISSOROFS_OY_ST = 12, GX_BP_SCISSOROFS_OY_END = 21, } GXBPScissorOffset; // Perf-0 types. typedef enum _GXPerf0 { GX_PERF0_VERTICES = 0, GX_PERF0_CLIP_VTX = 1, GX_PERF0_CLIP_CLKS = 2, GX_PERF0_XF_WAIT_IN = 3, GX_PERF0_XF_WAIT_OUT = 4, GX_PERF0_XF_XFRM_CLKS = 5, GX_PERF0_XF_LIT_CLKS = 6, GX_PERF0_XF_BOT_CLKS = 7, GX_PERF0_XF_REGLD_CLKS = 8, GX_PERF0_XF_REGRD_CLKS = 9, GX_PERF0_CLIP_RATIO = 10, GX_PERF0_TRIANGLES = 11, GX_PERF0_TRIANGLES_CULLED = 12, GX_PERF0_TRIANGLES_PASSED = 13, GX_PERF0_TRIANGLES_SCISSORED = 14, GX_PERF0_TRIANGLES_0TEX = 15, GX_PERF0_TRIANGLES_1TEX = 16, GX_PERF0_TRIANGLES_2TEX = 17, GX_PERF0_TRIANGLES_3TEX = 18, GX_PERF0_TRIANGLES_4TEX = 19, GX_PERF0_TRIANGLES_5TEX = 20, GX_PERF0_TRIANGLES_6TEX = 21, GX_PERF0_TRIANGLES_7TEX = 22, GX_PERF0_TRIANGLES_8TEX = 23, GX_PERF0_TRIANGLES_0CLR = 24, GX_PERF0_TRIANGLES_1CLR = 25, GX_PERF0_TRIANGLES_2CLR = 26, GX_PERF0_QUAD_0CVG = 27, GX_PERF0_QUAD_NON0CVG = 28, GX_PERF0_QUAD_1CVG = 29, GX_PERF0_QUAD_2CVG = 30, GX_PERF0_QUAD_3CVG = 31, GX_PERF0_QUAD_4CVG = 32, GX_PERF0_AVG_QUAD_CNT = 33, GX_PERF0_CLOCKS = 34, GX_PERF0_NONE = 35, } GXPerf0; // Perf-1 types. typedef enum _GXPerf1 { GX_PERF1_TEXELS = 0, GX_PERF1_TX_IDLE = 1, GX_PERF1_TX_REGS = 2, GX_PERF1_TX_MEMSTALL = 3, GX_PERF1_TC_CHECK1_2 = 4, GX_PERF1_TC_CHECK3_4 = 5, GX_PERF1_TC_CHECK5_6 = 6, GX_PERF1_TC_CHECK7_8 = 7, GX_PERF1_TC_MISS = 8, GX_PERF1_VC_ELEMQ_FULL = 9, GX_PERF1_VC_MISSQ_FULL = 10, GX_PERF1_VC_MEMREQ_FULL = 11, GX_PERF1_VC_STATUS7 = 12, GX_PERF1_VC_MISSREP_FULL = 13, GX_PERF1_VC_STREAMBUF_LOW = 14, GX_PERF1_VC_ALL_STALLS = 15, GX_PERF1_VERTICES = 16, GX_PERF1_FIFO_REQ = 17, GX_PERF1_CALL_REQ = 18, GX_PERF1_VC_MISS_REQ = 19, GX_PERF1_CP_ALL_REQ = 20, GX_PERF1_CLOCKS = 21, GX_PERF1_NONE = 22, } GXPerf1; // Vertex cache perf types. typedef enum _GXVCachePerf { GX_VC_POS = 0, GX_VC_NRM = 1, GX_VC_CLR0 = 2, GX_VC_CLR1 = 3, GX_VC_TEX0 = 4, GX_VC_TEX1 = 5, GX_VC_TEX2 = 6, GX_VC_TEX3 = 7, GX_VC_TEX4 = 8, GX_VC_TEX5 = 9, GX_VC_TEX6 = 10, GX_VC_TEX7 = 11, GX_VC_ALL = 15 } GXVCachePerf; // XF locators for Color 0 control. typedef enum _GXXFClr0Ctrl { // Matrix source [31-31] GX_XF_CLR0CTRL_MTXSRC_ST = 31, GX_XF_CLR0CTRL_MTXSRC_END = 31, // Light [30-30] GX_XF_CLR0CTRL_LIGHT_ST = 30, GX_XF_CLR0CTRL_LIGHT_END = 30, // Light mask (hi) [26-29] GX_XF_CLR0CTRL_LMASKHI_ST = 26, GX_XF_CLR0CTRL_LMASKHI_END = 29, // Ambient source [25-25] GX_XF_CLR0CTRL_AMBSRC_ST = 25, GX_XF_CLR0CTRL_AMBSRC_END = 25, // Diffuse attenuation [23-24] GX_XF_CLR0CTRL_DIFATTN_ST = 23, GX_XF_CLR0CTRL_DIFATTN_END = 24, // Enable attentuation [22-22] GX_XF_CLR0CTRL_ATTNENABLE_ST = 22, GX_XF_CLR0CTRL_ATTNENABLE_END = 22, // Select attentuation [21-21] GX_XF_CLR0CTRL_ATTNSEL_ST = 21, GX_XF_CLR0CTRL_ATTNSEL_END = 21, // Light mask (lo) [17-20] GX_XF_CLR0CTRL_LMASKLO_ST = 17, GX_XF_CLR0CTRL_LMASKLO_END = 20, } GXXFClr0Ctrl; #endif /* GXENUM_H */