mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-24 05:49:58 +00:00
481 lines
10 KiB
C
481 lines
10 KiB
C
// Copyright (c) 2012- PPSSPP Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0 or later versions.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official git repository and contact information can be found at
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
#ifndef _GE_CONSTANTS_H
|
|
#define _GE_CONSTANTS_H
|
|
|
|
enum GECommand
|
|
{
|
|
GE_CMD_NOP = 0,
|
|
GE_CMD_VADDR=0x1,
|
|
GE_CMD_IADDR=0x2,
|
|
GE_CMD_PRIM=0x4,
|
|
GE_CMD_BEZIER=0x5,
|
|
GE_CMD_SPLINE=0x6,
|
|
GE_CMD_BOUNDINGBOX=0x7,
|
|
GE_CMD_JUMP=0x8,
|
|
GE_CMD_BJUMP=0x9,
|
|
GE_CMD_CALL=0xA,
|
|
GE_CMD_RET=0xB,
|
|
GE_CMD_END=0xC,
|
|
GE_CMD_SIGNAL=0xE,
|
|
GE_CMD_FINISH=0xF,
|
|
GE_CMD_BASE=0x10,
|
|
GE_CMD_VERTEXTYPE=0x12,
|
|
GE_CMD_OFFSETADDR=0x13,
|
|
GE_CMD_ORIGIN=0x14,
|
|
GE_CMD_REGION1=0x15,
|
|
GE_CMD_REGION2=0x16,
|
|
GE_CMD_LIGHTINGENABLE=0x17,
|
|
GE_CMD_LIGHTENABLE0=0x18,
|
|
GE_CMD_LIGHTENABLE1=0x19,
|
|
GE_CMD_LIGHTENABLE2=0x1a,
|
|
GE_CMD_LIGHTENABLE3=0x1b,
|
|
GE_CMD_CLIPENABLE=0x1c,
|
|
GE_CMD_CULLFACEENABLE,
|
|
GE_CMD_TEXTUREMAPENABLE,
|
|
GE_CMD_FOGENABLE,
|
|
GE_CMD_DITHERENABLE,
|
|
GE_CMD_ALPHABLENDENABLE=0x21,
|
|
GE_CMD_ALPHATESTENABLE=0x22,
|
|
GE_CMD_ZTESTENABLE=0x23,
|
|
GE_CMD_STENCILTESTENABLE=0x24,
|
|
GE_CMD_ANTIALIASENABLE=0x25,
|
|
GE_CMD_PATCHCULLENABLE=0x26,
|
|
GE_CMD_COLORTESTENABLE=0x27,
|
|
GE_CMD_LOGICOPENABLE=0x28,
|
|
GE_CMD_BONEMATRIXNUMBER=0x2A,
|
|
GE_CMD_BONEMATRIXDATA=0x2B,
|
|
GE_CMD_MORPHWEIGHT0=0x2C,
|
|
GE_CMD_MORPHWEIGHT1=0x2D,
|
|
GE_CMD_MORPHWEIGHT2=0x2E,
|
|
GE_CMD_MORPHWEIGHT3=0x2F,
|
|
GE_CMD_MORPHWEIGHT4=0x30,
|
|
GE_CMD_MORPHWEIGHT5=0x31,
|
|
GE_CMD_MORPHWEIGHT6=0x32,
|
|
GE_CMD_MORPHWEIGHT7=0x33,
|
|
GE_CMD_PATCHDIVISION=0x36,
|
|
GE_CMD_PATCHPRIMITIVE=0x37,
|
|
GE_CMD_PATCHFACING=0x38,
|
|
GE_CMD_WORLDMATRIXNUMBER=0x3A,
|
|
GE_CMD_WORLDMATRIXDATA,
|
|
GE_CMD_VIEWMATRIXNUMBER,
|
|
GE_CMD_VIEWMATRIXDATA,
|
|
GE_CMD_PROJMATRIXNUMBER,
|
|
GE_CMD_PROJMATRIXDATA,
|
|
GE_CMD_TGENMATRIXNUMBER=0x40,
|
|
GE_CMD_TGENMATRIXDATA=0x41,
|
|
GE_CMD_VIEWPORTX1,
|
|
GE_CMD_VIEWPORTY1,
|
|
GE_CMD_VIEWPORTZ1,
|
|
GE_CMD_VIEWPORTX2,
|
|
GE_CMD_VIEWPORTY2,
|
|
GE_CMD_VIEWPORTZ2,
|
|
GE_CMD_TEXSCALEU=0x48,
|
|
GE_CMD_TEXSCALEV=0x49,
|
|
GE_CMD_TEXOFFSETU=0x4A,
|
|
GE_CMD_TEXOFFSETV=0x4B,
|
|
GE_CMD_OFFSETX=0x4C,
|
|
GE_CMD_OFFSETY=0x4D,
|
|
GE_CMD_SHADEMODE=0x50, // flat or gouraud
|
|
GE_CMD_REVERSENORMAL=0x51,
|
|
GE_CMD_MATERIALUPDATE=0x53,
|
|
GE_CMD_MATERIALEMISSIVE, //not sure about these but this makes sense
|
|
GE_CMD_MATERIALAMBIENT, //gotta try enabling lighting and check :)
|
|
GE_CMD_MATERIALDIFFUSE=0x56,
|
|
GE_CMD_MATERIALSPECULAR=0x57,
|
|
GE_CMD_MATERIALALPHA=0x58,
|
|
GE_CMD_MATERIALSPECULARCOEF=0x5B,
|
|
GE_CMD_AMBIENTCOLOR,
|
|
GE_CMD_AMBIENTALPHA,
|
|
GE_CMD_LIGHTMODE=0x5E,
|
|
GE_CMD_LIGHTTYPE0=0x5F,
|
|
GE_CMD_LIGHTTYPE1=0x60,
|
|
GE_CMD_LIGHTTYPE2=0x61,
|
|
GE_CMD_LIGHTTYPE3=0x62,
|
|
GE_CMD_LX0=0x63,
|
|
GE_CMD_LY0,
|
|
GE_CMD_LZ0,
|
|
GE_CMD_LX1,
|
|
GE_CMD_LY1,
|
|
GE_CMD_LZ1,
|
|
GE_CMD_LX2,
|
|
GE_CMD_LY2,
|
|
GE_CMD_LZ2,
|
|
GE_CMD_LX3,
|
|
GE_CMD_LY3,
|
|
GE_CMD_LZ3,
|
|
GE_CMD_LDX0=0x6F,
|
|
GE_CMD_LDY0,
|
|
GE_CMD_LDZ0,
|
|
GE_CMD_LDX1,
|
|
GE_CMD_LDY1,
|
|
GE_CMD_LDZ1,
|
|
GE_CMD_LDX2,
|
|
GE_CMD_LDY2,
|
|
GE_CMD_LDZ2,
|
|
GE_CMD_LDX3,
|
|
GE_CMD_LDY3,
|
|
GE_CMD_LDZ3,
|
|
GE_CMD_LKA0=0x7B,
|
|
GE_CMD_LKB0,
|
|
GE_CMD_LKC0,
|
|
GE_CMD_LKA1,
|
|
GE_CMD_LKB1,
|
|
GE_CMD_LKC1,
|
|
GE_CMD_LKA2,
|
|
GE_CMD_LKB2,
|
|
GE_CMD_LKC2,
|
|
GE_CMD_LKA3,
|
|
GE_CMD_LKB3,
|
|
GE_CMD_LKC3,
|
|
GE_CMD_LKS0=0x87,
|
|
GE_CMD_LKS1,
|
|
GE_CMD_LKS2,
|
|
GE_CMD_LKS3,
|
|
GE_CMD_LKO0=0x8b,
|
|
GE_CMD_LKO1,
|
|
GE_CMD_LKO2,
|
|
GE_CMD_LKO3,
|
|
GE_CMD_LAC0=0x8F,
|
|
GE_CMD_LDC0,
|
|
GE_CMD_LSC0,
|
|
GE_CMD_LAC1,
|
|
GE_CMD_LDC1,
|
|
GE_CMD_LSC1,
|
|
GE_CMD_LAC2,
|
|
GE_CMD_LDC2,
|
|
GE_CMD_LSC2,
|
|
GE_CMD_LAC3,
|
|
GE_CMD_LDC3,
|
|
GE_CMD_LSC3,
|
|
GE_CMD_CULL=0x9B,
|
|
GE_CMD_FRAMEBUFPTR=0x9C,
|
|
GE_CMD_FRAMEBUFWIDTH=0x9D,
|
|
GE_CMD_ZBUFPTR=0x9E,
|
|
GE_CMD_ZBUFWIDTH=0x9F,
|
|
GE_CMD_TEXADDR0=0xA0,
|
|
GE_CMD_TEXADDR1,
|
|
GE_CMD_TEXADDR2,
|
|
GE_CMD_TEXADDR3,
|
|
GE_CMD_TEXADDR4,
|
|
GE_CMD_TEXADDR5,
|
|
GE_CMD_TEXADDR6,
|
|
GE_CMD_TEXADDR7,
|
|
GE_CMD_TEXBUFWIDTH0=0xA8,
|
|
GE_CMD_TEXBUFWIDTH1,
|
|
GE_CMD_TEXBUFWIDTH2,
|
|
GE_CMD_TEXBUFWIDTH3,
|
|
GE_CMD_TEXBUFWIDTH4,
|
|
GE_CMD_TEXBUFWIDTH5,
|
|
GE_CMD_TEXBUFWIDTH6,
|
|
GE_CMD_TEXBUFWIDTH7,
|
|
GE_CMD_CLUTADDR=0xB0,
|
|
GE_CMD_CLUTADDRUPPER,
|
|
GE_CMD_TRANSFERSRC,
|
|
GE_CMD_TRANSFERSRCW,
|
|
GE_CMD_TRANSFERDST,
|
|
GE_CMD_TRANSFERDSTW,
|
|
GE_CMD_TEXSIZE0=0xB8,
|
|
GE_CMD_TEXSIZE1,
|
|
GE_CMD_TEXSIZE2,
|
|
GE_CMD_TEXSIZE3,
|
|
GE_CMD_TEXSIZE4,
|
|
GE_CMD_TEXSIZE5,
|
|
GE_CMD_TEXSIZE6,
|
|
GE_CMD_TEXSIZE7,
|
|
GE_CMD_TEXMAPMODE=0xC0,
|
|
GE_CMD_TEXSHADELS=0xC1,
|
|
GE_CMD_TEXMODE=0xC2,
|
|
GE_CMD_TEXFORMAT=0xC3,
|
|
GE_CMD_LOADCLUT=0xC4,
|
|
GE_CMD_CLUTFORMAT=0xC5,
|
|
GE_CMD_TEXFILTER=0xC6,
|
|
GE_CMD_TEXWRAP=0xC7,
|
|
GE_CMD_TEXLEVEL=0xC8,
|
|
GE_CMD_TEXFUNC=0xC9,
|
|
GE_CMD_TEXENVCOLOR=0xCA,
|
|
GE_CMD_TEXFLUSH=0xCB,
|
|
GE_CMD_TEXSYNC=0xCC,
|
|
GE_CMD_FOG1=0xCD,
|
|
GE_CMD_FOG2=0xCE,
|
|
GE_CMD_FOGCOLOR=0xCF,
|
|
GE_CMD_TEXLODSLOPE=0xD0,
|
|
GE_CMD_FRAMEBUFPIXFORMAT=0xD2,
|
|
GE_CMD_CLEARMODE=0xD3,
|
|
GE_CMD_SCISSOR1=0xD4,
|
|
GE_CMD_SCISSOR2=0xD5,
|
|
GE_CMD_MINZ=0xD6,
|
|
GE_CMD_MAXZ=0xD7,
|
|
GE_CMD_COLORTEST=0xD8,
|
|
GE_CMD_COLORREF=0xD9,
|
|
GE_CMD_COLORTESTMASK=0xDA,
|
|
GE_CMD_ALPHATEST=0xDB,
|
|
GE_CMD_STENCILTEST=0xDC,
|
|
GE_CMD_STENCILOP=0xDD,
|
|
GE_CMD_ZTEST=0xDE,
|
|
GE_CMD_BLENDMODE=0xDF,
|
|
GE_CMD_BLENDFIXEDA=0xE0,
|
|
GE_CMD_BLENDFIXEDB=0xE1,
|
|
GE_CMD_DITH0=0xE2,
|
|
GE_CMD_DITH1,
|
|
GE_CMD_DITH2,
|
|
GE_CMD_DITH3,
|
|
GE_CMD_LOGICOP=0xE6,
|
|
GE_CMD_ZWRITEDISABLE=0xE7,
|
|
GE_CMD_MASKRGB=0xE8,
|
|
GE_CMD_MASKALPHA=0xE9,
|
|
GE_CMD_TRANSFERSTART=0xEA,
|
|
GE_CMD_TRANSFERSRCPOS=0xEB,
|
|
GE_CMD_TRANSFERDSTPOS=0xEC,
|
|
GE_CMD_TRANSFERSIZE=0xEE,
|
|
};
|
|
|
|
enum GEBufferFormat
|
|
{
|
|
GE_FORMAT_565=0,
|
|
GE_FORMAT_5551=1,
|
|
GE_FORMAT_4444=2,
|
|
GE_FORMAT_8888=3,
|
|
};
|
|
|
|
#define GE_VTYPE_TRANSFORM (0<<23)
|
|
#define GE_VTYPE_THROUGH (1<<23)
|
|
#define GE_VTYPE_THROUGH_MASK (1<<23)
|
|
|
|
#define GE_VTYPE_TC_NONE (0<<0)
|
|
#define GE_VTYPE_TC_8BIT (1<<0)
|
|
#define GE_VTYPE_TC_16BIT (2<<0)
|
|
#define GE_VTYPE_TC_FLOAT (3<<0)
|
|
#define GE_VTYPE_TC_MASK (3<<0)
|
|
#define GE_VTYPE_TC_SHIFT 0
|
|
|
|
#define GE_VTYPE_COL_NONE (0<<2)
|
|
#define GE_VTYPE_COL_565 (4<<2)
|
|
#define GE_VTYPE_COL_5551 (5<<2)
|
|
#define GE_VTYPE_COL_4444 (6<<2)
|
|
#define GE_VTYPE_COL_8888 (7<<2)
|
|
#define GE_VTYPE_COL_MASK (7<<2)
|
|
#define GE_VTYPE_COL_SHIFT 2
|
|
|
|
#define GE_VTYPE_NRM_NONE (0<<5)
|
|
#define GE_VTYPE_NRM_8BIT (1<<5)
|
|
#define GE_VTYPE_NRM_16BIT (2<<5)
|
|
#define GE_VTYPE_NRM_FLOAT (3<<5)
|
|
#define GE_VTYPE_NRM_MASK (3<<5)
|
|
#define GE_VTYPE_NRM_SHIFT 5
|
|
|
|
//#define GE_VTYPE_POSITION_NONE (0<<5)
|
|
#define GE_VTYPE_POS_8BIT (1<<7)
|
|
#define GE_VTYPE_POS_16BIT (2<<7)
|
|
#define GE_VTYPE_POS_FLOAT (3<<7)
|
|
#define GE_VTYPE_POS_MASK (3<<7)
|
|
#define GE_VTYPE_POS_SHIFT 7
|
|
|
|
#define GE_VTYPE_WEIGHT_NONE (0<<9)
|
|
#define GE_VTYPE_WEIGHT_8BIT (1<<9)
|
|
#define GE_VTYPE_WEIGHT_16BIT (2<<9)
|
|
#define GE_VTYPE_WEIGHT_FLOAT (3<<9)
|
|
#define GE_VTYPE_WEIGHT_MASK (3<<9)
|
|
#define GE_VTYPE_WEIGHT_SHIFT 9
|
|
|
|
#define GE_VTYPE_WEIGHTCOUNT_MASK (7<<14)
|
|
#define GE_VTYPE_WEIGHTCOUNT_SHIFT 14
|
|
|
|
#define GE_VTYPE_MORPHCOUNT_MASK (7<<18)
|
|
#define GE_VTYPE_MORPHCOUNT_SHIFT 18
|
|
|
|
#define GE_VTYPE_IDX_NONE (0<<11)
|
|
#define GE_VTYPE_IDX_8BIT (1<<11)
|
|
#define GE_VTYPE_IDX_16BIT (2<<11)
|
|
#define GE_VTYPE_IDX_MASK (3<<11)
|
|
#define GE_VTYPE_IDX_SHIFT 11
|
|
|
|
|
|
#define GE_CLEARMODE_COLOR (1<<8)
|
|
#define GE_CLEARMODE_ALPHA (1<<9) //or stencil?
|
|
#define GE_CLEARMODE_Z (1<<10)
|
|
#define GE_CLEARMODE_ALL (GE_CLEARMODE_COLOR|GE_CLEARMODE_ALPHA|GE_CLEARMODE_Z)
|
|
|
|
enum GEMatrixType {
|
|
GE_MTX_BONE0 = 0,
|
|
GE_MTX_BONE1,
|
|
GE_MTX_BONE2,
|
|
GE_MTX_BONE3,
|
|
GE_MTX_BONE4,
|
|
GE_MTX_BONE5,
|
|
GE_MTX_BONE6,
|
|
GE_MTX_BONE7,
|
|
GE_MTX_WORLD,
|
|
GE_MTX_VIEW,
|
|
GE_MTX_PROJECTION,
|
|
GE_MTX_TEXGEN,
|
|
};
|
|
|
|
enum GEComparison
|
|
{
|
|
GE_COMP_NEVER=0,
|
|
GE_COMP_ALWAYS,
|
|
GE_COMP_EQUAL,
|
|
GE_COMP_NOTEQUAL,
|
|
GE_COMP_LESS,
|
|
GE_COMP_LEQUAL,
|
|
GE_COMP_GREATER,
|
|
GE_COMP_GEQUAL
|
|
};
|
|
|
|
enum GELightType
|
|
{
|
|
GE_LIGHTTYPE_DIRECTIONAL=0,
|
|
GE_LIGHTTYPE_POINT = 1,
|
|
GE_LIGHTTYPE_SPOT = 2
|
|
};
|
|
|
|
enum GELightColorSetting
|
|
{
|
|
GE_LIGHTCOLOR_AMBIENT = 0,
|
|
GE_LIGHTCOLOR_DIFFUSE = 1,
|
|
GE_LIGHTCOLOR_SPECULAR = 2
|
|
};
|
|
|
|
enum GELightComputation
|
|
{
|
|
GE_LIGHTCOMP_ONLYDIFFUSE=0,
|
|
GE_LIGHTCOMP_BOTH=1,
|
|
GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE=2,
|
|
};
|
|
enum GETextureFormat
|
|
{
|
|
GE_TFMT_5650=0,
|
|
GE_TFMT_5551=1,
|
|
GE_TFMT_4444=2,
|
|
GE_TFMT_8888=3,
|
|
GE_TFMT_CLUT4=4,
|
|
GE_TFMT_CLUT8=5,
|
|
GE_TFMT_CLUT16=6,
|
|
GE_TFMT_CLUT32=7,
|
|
GE_TFMT_DXT1=8,
|
|
GE_TFMT_DXT3=9,
|
|
GE_TFMT_DXT5=10
|
|
};
|
|
|
|
enum GEMaterialColorSetting
|
|
{
|
|
GE_MATERIALCOLOR_EMISSIVE = 0,
|
|
GE_MATERIALCOLOR_AMBIENT = 1,
|
|
GE_MATERIALCOLOR_DIFFUSE = 2,
|
|
GE_MATERIALCOLOR_SPECULAR = 3,
|
|
};
|
|
|
|
enum GEBlendMode
|
|
{
|
|
GE_BLENDMODE_MUL_AND_ADD=0,
|
|
GE_BLENDMODE_MUL_AND_SUBTRACT=1,
|
|
GE_BLENDMODE_MUL_AND_SUBTRACT_REVERSE=2,
|
|
GE_BLENDMODE_MIN=3,
|
|
GE_BLENDMODE_MAX=4,
|
|
GE_BLENDMODE_ABSDIFF=5
|
|
};
|
|
|
|
enum GEBlendSrcFactor
|
|
{
|
|
GE_SRCBLEND_DSTCOLOR,
|
|
GE_SRCBLEND_INVDSTCOLOR,
|
|
GE_SRCBLEND_SRCALPHA,
|
|
GE_SRCBLEND_INVSRCALPHA,
|
|
GE_SRCBLEND_DSTALPHA,
|
|
GE_SRCBLEND_INVDSTALPHA,
|
|
GE_SRCBLEND_DOUBLESRCALPHA,
|
|
GE_SRCBLEND_DOUBLEINVSRCALPHA,
|
|
GE_SRCBLEND_DOUBLEDSTALPHA,
|
|
GE_SRCBLEND_DOUBLEINVDSTALPHA,
|
|
GE_SRCBLEND_FIXA,
|
|
};
|
|
|
|
enum GEBlendDstFactor
|
|
{
|
|
GE_DSTBLEND_SRCCOLOR,
|
|
GE_DSTBLEND_INVSRCCOLOR,
|
|
GE_DSTBLEND_SRCALPHA,
|
|
GE_DSTBLEND_INVSRCALPHA,
|
|
GE_DSTBLEND_DSTALPHA,
|
|
GE_DSTBLEND_INVDSTALPHA,
|
|
GE_DSTBLEND_DOUBLESRCALPHA,
|
|
GE_DSTBLEND_DOUBLEINVSRCALPHA,
|
|
GE_DSTBLEND_DOUBLEDSTALPHA,
|
|
GE_DSTBLEND_DOUBLEINVDSTALPHA,
|
|
GE_DSTBLEND_FIXB,
|
|
};
|
|
|
|
enum GETexFunc
|
|
{
|
|
GE_TEXFUNC_MODULATE=0,
|
|
GE_TEXFUNC_DECAL=1,
|
|
GE_TEXFUNC_BLEND=2,
|
|
GE_TEXFUNC_REPLACE=3,
|
|
GE_TEXFUNC_ADD=4,
|
|
};
|
|
|
|
enum GEStencilOp
|
|
{
|
|
GE_STENCILOP_KEEP=0,
|
|
GE_STENCILOP_ZERO=0,
|
|
GE_STENCILOP_REPLACE=0,
|
|
GE_STENCILOP_INVERT=0,
|
|
GE_STENCILOP_INCR=0,
|
|
GE_STENCILOP_DECR=0,
|
|
};
|
|
|
|
|
|
// And more i haven't checked yet
|
|
|
|
#define GE_TFILT_NEAREST 0
|
|
#define GE_TFILT_LINEAR 1
|
|
#define GE_TFILT_NEAREST_MIPMAP_NEAREST 4
|
|
#define GE_TFILT_LINEAR_MIPMAP_NEAREST 5
|
|
#define GE_TFILT_NEAREST_MIPMAP_LINEAR 6
|
|
#define GE_TFILT_LINEAR_MIPMAP_LINEAR 7
|
|
|
|
enum GEPrimitiveType
|
|
{
|
|
GE_PRIM_POINTS=0,
|
|
GE_PRIM_LINES=1,
|
|
GE_PRIM_LINE_STRIP=2,
|
|
GE_PRIM_TRIANGLES=3,
|
|
GE_PRIM_TRIANGLE_STRIP=4,
|
|
GE_PRIM_TRIANGLE_FAN=5,
|
|
GE_PRIM_RECTANGLES=6,
|
|
};
|
|
|
|
enum GELogicOp
|
|
{
|
|
GE_LOGIC_AND = 1,
|
|
GE_LOGIC_XOR = 6,
|
|
GE_LOGIC_INVERT = 10,
|
|
GE_LOGIC_DRAWINVERTED = 12,
|
|
};
|
|
|
|
enum GEPaletteFormat
|
|
{
|
|
GE_CMODE_16BIT_BGR5650,
|
|
GE_CMODE_16BIT_ABGR5551,
|
|
GE_CMODE_16BIT_ABGR4444,
|
|
GE_CMODE_32BIT_ABGR8888
|
|
};
|
|
|
|
#endif
|