mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-26 07:18:47 -04:00
8b4808da8a
* TRK full match * remove trk asm * ar done * cleanup some dolphin headers * more dolphin cleanup * cleanup / GD fully matched * almost all of GX fully matched * GX / Mtx full matched * most of OS done * pad done * most of VI * remove asm * forgot couple vec funcs * couple JUtility matches
1943 lines
53 KiB
C
1943 lines
53 KiB
C
#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 */ |