psxsdk/libpsx/include/psxgte.h

197 lines
4.3 KiB
C

#ifndef _PSXGTE_H
#define _PSXGTE_H
/** GTE operations */
enum gte_operations
{
/** Perspective transformation */
GTE_OP_RTPS = 0x0180001,
/** Perspective Transformation on 3 points */
GTE_OP_RTPT = 0x0280030,
/** Multiply vector by matrix and vector addition */
GTE_OP_MVMVA = 0x0400012,
/** Depth Cue Color light */
GTE_OP_DCPL = 0x0680029,
/** Depth Cueing */
GTE_OP_DPCS = 0x0780010,
/** Interpolation of a vector and far color vector */
GTE_OP_INTPL = 0x0980011,
/** Square vector */
GTE_OP_SQR = 0x0A00428,
/** Normal color single vector */
GTE_OP_NCS = 0x0C8041E,
/** Normal color three vectors */
GTE_OP_NCT = 0x0D80420,
/** Normal color depth cue single vector */
GTE_OP_NCDS = 0x0E80413,
/** Normal color depth cue three vectors */
GTE_OP_NCDT = 0x0F80416,
/** Depth Cueing */
GTE_OP_DPCT = 0x0F8002A,
/** Normal Color Color single vector */
GTE_OP_NCCS = 0x108041B,
/** Normal Color Color three vectors */
GTE_OP_NCCT = 0x118043F,
/** Color Depth Cue */
GTE_OP_CDP = 0x1280414,
/** Color Color */
GTE_OP_CC = 0x138041C,
/** Normal clipping */
GTE_OP_NCLIP = 0x1400006,
/** Average of three Z values */
GTE_OP_AVSZ3 = 0x158002D,
/** Average of four Z values */
GTE_OP_AVSZ4 = 0x168002E,
/** Outer product of 2 vectors */
GTE_OP_OP = 0x170000C,
/** General purpose interpolation */
GTE_OP_GPF = 0x190003D,
/** General purpose interpolation */
GTE_OP_GPL = 0x1A0003E
};
/** GTE error flags, grab from cop2 register 63 */
enum gte_error_flags
{
GTE_FLAG_MAC1_OVF_POS = 0x40000000,
GTE_FLAG_MAC2_OVF_POS = 0x20000000,
GTE_FLAG_MAC3_OVF_POS = 0x10000000,
GTE_FLAG_MAC1_OVF_NEG = 0x08000000,
GTE_FLAG_MAC2_OVF_NEG = 0x04000000,
GTE_FLAG_MAC3_OVF_NEG = 0x02000000,
GTE_FLAG_IR1_SATURATED = 0x01000000,
GTE_FLAG_IR2_SATURATED = 0x00800000,
GTE_FLAG_IR3_SATURATED = 0x00400000,
GTE_FLAG_COL_FIFO_R_SATURATED = 0x00200000,
GTE_FLAG_COL_FIFO_G_SATURATED = 0x00100000,
GTE_FLAG_COL_FIFO_B_SATURATED = 0x00080000,
GTE_FLAG_SZ3_OTZ_SATURATED = 0x00040000,
GTE_FLAG_DIV_OVF_SATURATED = 0x00020000,
GTE_FLAG_MAC0_OVF_POS = 0x00010000,
GTE_FLAG_MAC0_OVF_NEG = 0x00008000,
GTE_FLAG_SX2_SATURATED = 0x00004000,
GTE_FLAG_SY2_SATURATED = 0x00002000,
GTE_FLAG_IR0_SATURATED = 0x00001000
};
/** GTE data registers */
enum gte_data_registers
{
/** Vector 0 X and Y */
GTE_R_VXY0 = 0,
/** Vector 0 Z */
GTE_R_VZ0 = 1,
/** Vector 1 X and Y */
GTE_R_VXY1 = 2,
/** Vector 1 Z */
GTE_R_VZ1 = 3,
/** Vector 2 X and Y */
GTE_R_VXY2 = 4,
/** Vector 2 Z */
GTE_R_VZ2 = 5,
/** RGB value */
GTE_R_RGB = 6,
/** Z Average value */
GTE_R_OTZ = 7,
/** Intermediate value 0 */
GTE_R_IR0 = 8,
/** Intermediate value 1 */
GTE_R_IR1 = 9,
/** Intermediate value 2 */
GTE_R_IR2 = 10,
/** Intermediate value 3 */
GTE_R_IR3 = 11,
/** Screen XY coordinates 0 FIFO */
GTE_R_SXY0 = 12,
/** Screen XY coordinates 1 FIFO */
GTE_R_SXY1 = 13,
/** Screen XY coordinates 2 FIFO */
GTE_R_SXY2 = 14,
/** Screen XY coordinates P FIFO */
GTE_R_SXYP = 15,
/** Screen Z 0 FIFO */
GTE_R_SZ0 = 16,
/** Screen Z 1 FIFO */
GTE_R_SZ1 = 17,
/** Screen Z 2 FIFO */
GTE_R_SZ2 = 18,
/** Screen Z 3 FIFO */
GTE_R_SZ3 = 19,
/** Characteristic color 0 FIFO */
GTE_R_RGB0 = 20,
/** Characteristic color 1 FIFO */
GTE_R_RGB1 = 21,
/** Characteristic color 2 FIFO */
GTE_R_RGB2 = 22,
/** Sum of products value 0 */
GTE_R_MAC0 = 24,
/** Sum of products value 1 */
GTE_R_MAC1 = 25,
/** Sum of products value 2 */
GTE_R_MAC2 = 26,
/** Sum of products value 3 */
GTE_R_MAC3 = 27,
/** IRGB ?? */
GTE_R_IRGB = 28,
/** ORGB ?? */
GTE_R_ORGB = 29,
/** Leading zero count source data. */
GTE_R_LZCS = 30,
/** Leading zero count result */
GTE_R_LZCR = 31
};
/** GTE control registers */
enum gte_control_registers
{
GTE_R_R11R12 = 0,
GTE_R_R13R21 = 1,
GTE_R_R22R23 = 2,
GTE_R_R31R32 = 3,
GTE_R_R33 = 4,
GTE_R_TRX = 5,
GTE_R_TRY = 6,
GTE_R_TRZ = 7,
GTE_R_L11L12 = 8,
GTE_R_L13L21 = 9,
GTE_R_L22L23 = 10,
GTE_R_L31L32 = 11,
GTE_R_L33 = 12,
GTE_R_RBK = 13,
GTE_R_GBK = 14,
GTE_R_BBK = 15,
GTE_R_LR1LR2 = 16,
GTE_R_LR3LG1 = 17,
GTE_R_LG2LG3 = 18,
GTE_R_LB1LB2 = 19,
GTE_R_LB3 = 20,
GTE_R_RFC = 21,
GTE_R_GFC = 22,
GTE_R_BFC = 23,
GTE_R_OFX = 24,
GTE_R_OFY = 25,
GTE_R_H = 26,
GTE_R_DQA = 27,
GTE_R_DQB = 28,
GTE_R_ZSF3 = 29,
GTE_R_ZSF4 = 30,
GTE_R_FLAG = 31
};
#endif