1
// Copyright (c) 2012- PPSSPP Project.
3
// This program is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, version 2.0 or later versions.
7
// This program is distributed in the hope that it will be useful,
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
// GNU General Public License 2.0 for more details.
12
// A copy of the GPL 2.0 should have been included with the program.
13
// If not, see http://www.gnu.org/licenses/
15
// Official git repository and contact information can be found at
16
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
28
GE_CMD_BOUNDINGBOX = 0x7,
37
GE_CMD_VERTEXTYPE = 0x12,
38
GE_CMD_OFFSETADDR = 0x13,
40
GE_CMD_REGION1 = 0x15,
41
GE_CMD_REGION2 = 0x16,
42
GE_CMD_LIGHTINGENABLE = 0x17,
43
GE_CMD_LIGHTENABLE0 = 0x18,
44
GE_CMD_LIGHTENABLE1 = 0x19,
45
GE_CMD_LIGHTENABLE2 = 0x1a,
46
GE_CMD_LIGHTENABLE3 = 0x1b,
47
GE_CMD_CLIPENABLE = 0x1c,
48
GE_CMD_CULLFACEENABLE,
49
GE_CMD_TEXTUREMAPENABLE,
52
GE_CMD_ALPHABLENDENABLE = 0x21,
53
GE_CMD_ALPHATESTENABLE = 0x22,
54
GE_CMD_ZTESTENABLE = 0x23,
55
GE_CMD_STENCILTESTENABLE = 0x24,
56
GE_CMD_ANTIALIASENABLE = 0x25,
57
GE_CMD_PATCHCULLENABLE = 0x26,
58
GE_CMD_COLORTESTENABLE = 0x27,
59
GE_CMD_LOGICOPENABLE = 0x28,
60
GE_CMD_BONEMATRIXNUMBER = 0x2A,
61
GE_CMD_BONEMATRIXDATA = 0x2B,
62
GE_CMD_MORPHWEIGHT0 = 0x2C,
63
GE_CMD_MORPHWEIGHT1 = 0x2D,
64
GE_CMD_MORPHWEIGHT2 = 0x2E,
65
GE_CMD_MORPHWEIGHT3 = 0x2F,
66
GE_CMD_MORPHWEIGHT4 = 0x30,
67
GE_CMD_MORPHWEIGHT5 = 0x31,
68
GE_CMD_MORPHWEIGHT6 = 0x32,
69
GE_CMD_MORPHWEIGHT7 = 0x33,
70
GE_CMD_PATCHDIVISION = 0x36,
71
GE_CMD_PATCHPRIMITIVE = 0x37,
72
GE_CMD_PATCHFACING = 0x38,
73
GE_CMD_WORLDMATRIXNUMBER = 0x3A,
74
GE_CMD_WORLDMATRIXDATA,
75
GE_CMD_VIEWMATRIXNUMBER,
76
GE_CMD_VIEWMATRIXDATA,
77
GE_CMD_PROJMATRIXNUMBER,
78
GE_CMD_PROJMATRIXDATA,
79
GE_CMD_TGENMATRIXNUMBER = 0x40,
80
GE_CMD_TGENMATRIXDATA = 0x41,
81
GE_CMD_VIEWPORTXSCALE,
82
GE_CMD_VIEWPORTYSCALE,
83
GE_CMD_VIEWPORTZSCALE,
84
GE_CMD_VIEWPORTXCENTER,
85
GE_CMD_VIEWPORTYCENTER,
86
GE_CMD_VIEWPORTZCENTER,
87
GE_CMD_TEXSCALEU = 0x48,
88
GE_CMD_TEXSCALEV = 0x49,
89
GE_CMD_TEXOFFSETU = 0x4A,
90
GE_CMD_TEXOFFSETV = 0x4B,
91
GE_CMD_OFFSETX = 0x4C,
92
GE_CMD_OFFSETY = 0x4D,
93
GE_CMD_SHADEMODE = 0x50, // flat or gouraud
94
GE_CMD_REVERSENORMAL = 0x51,
95
GE_CMD_MATERIALUPDATE = 0x53,
96
GE_CMD_MATERIALEMISSIVE, //not sure about these but this makes sense
97
GE_CMD_MATERIALAMBIENT, //gotta try enabling lighting and check :)
98
GE_CMD_MATERIALDIFFUSE = 0x56,
99
GE_CMD_MATERIALSPECULAR = 0x57,
100
GE_CMD_MATERIALALPHA = 0x58,
101
GE_CMD_MATERIALSPECULARCOEF = 0x5B,
104
GE_CMD_LIGHTMODE = 0x5E,
105
GE_CMD_LIGHTTYPE0 = 0x5F,
106
GE_CMD_LIGHTTYPE1 = 0x60,
107
GE_CMD_LIGHTTYPE2 = 0x61,
108
GE_CMD_LIGHTTYPE3 = 0x62,
166
GE_CMD_FRAMEBUFPTR = 0x9C,
167
GE_CMD_FRAMEBUFWIDTH = 0x9D,
168
GE_CMD_ZBUFPTR = 0x9E,
169
GE_CMD_ZBUFWIDTH = 0x9F,
170
GE_CMD_TEXADDR0 = 0xA0,
178
GE_CMD_TEXBUFWIDTH0 = 0xA8,
186
GE_CMD_CLUTADDR=0xB0,
187
GE_CMD_CLUTADDRUPPER,
192
GE_CMD_TEXSIZE0=0xB8,
200
GE_CMD_TEXMAPMODE = 0xC0,
201
GE_CMD_TEXSHADELS = 0xC1,
202
GE_CMD_TEXMODE = 0xC2,
203
GE_CMD_TEXFORMAT = 0xC3,
204
GE_CMD_LOADCLUT = 0xC4,
205
GE_CMD_CLUTFORMAT = 0xC5,
206
GE_CMD_TEXFILTER = 0xC6,
207
GE_CMD_TEXWRAP = 0xC7,
208
GE_CMD_TEXLEVEL = 0xC8,
209
GE_CMD_TEXFUNC = 0xC9,
210
GE_CMD_TEXENVCOLOR = 0xCA,
211
GE_CMD_TEXFLUSH = 0xCB,
212
GE_CMD_TEXSYNC = 0xCC,
215
GE_CMD_FOGCOLOR = 0xCF,
216
GE_CMD_TEXLODSLOPE = 0xD0,
217
GE_CMD_FRAMEBUFPIXFORMAT = 0xD2,
218
GE_CMD_CLEARMODE = 0xD3,
219
GE_CMD_SCISSOR1 = 0xD4,
220
GE_CMD_SCISSOR2 = 0xD5,
223
GE_CMD_COLORTEST = 0xD8,
224
GE_CMD_COLORREF = 0xD9,
225
GE_CMD_COLORTESTMASK = 0xDA,
226
GE_CMD_ALPHATEST = 0xDB,
227
GE_CMD_STENCILTEST = 0xDC,
228
GE_CMD_STENCILOP = 0xDD,
230
GE_CMD_BLENDMODE = 0xDF,
231
GE_CMD_BLENDFIXEDA = 0xE0,
232
GE_CMD_BLENDFIXEDB = 0xE1,
237
GE_CMD_LOGICOP = 0xE6,
238
GE_CMD_ZWRITEDISABLE = 0xE7,
239
GE_CMD_MASKRGB = 0xE8,
240
GE_CMD_MASKALPHA = 0xE9,
241
GE_CMD_TRANSFERSTART = 0xEA,
242
GE_CMD_TRANSFERSRCPOS = 0xEB,
243
GE_CMD_TRANSFERDSTPOS = 0xEC,
244
GE_CMD_TRANSFERSIZE = 0xEE,
255
GE_CMD_UNKNOWN_03 = 0x03,
256
GE_CMD_UNKNOWN_0D = 0x0D,
257
GE_CMD_UNKNOWN_11 = 0x11,
258
GE_CMD_UNKNOWN_29 = 0x29,
259
GE_CMD_UNKNOWN_34 = 0x34,
260
GE_CMD_UNKNOWN_35 = 0x35,
261
GE_CMD_UNKNOWN_39 = 0x39,
262
GE_CMD_UNKNOWN_4E = 0x4E,
263
GE_CMD_UNKNOWN_4F = 0x4F,
264
GE_CMD_UNKNOWN_52 = 0x52,
265
GE_CMD_UNKNOWN_59 = 0x59,
266
GE_CMD_UNKNOWN_5A = 0x5A,
267
GE_CMD_UNKNOWN_B6 = 0xB6,
268
GE_CMD_UNKNOWN_B7 = 0xB7,
269
GE_CMD_UNKNOWN_D1 = 0xD1,
270
GE_CMD_UNKNOWN_ED = 0xED,
271
GE_CMD_UNKNOWN_EF = 0xEF,
272
GE_CMD_UNKNOWN_FA = 0xFA,
273
GE_CMD_UNKNOWN_FB = 0xFB,
274
GE_CMD_UNKNOWN_FC = 0xFC,
275
GE_CMD_UNKNOWN_FD = 0xFD,
276
GE_CMD_UNKNOWN_FE = 0xFE,
277
GE_CMD_UNKNOWN_FF = 0xFF,
286
GE_FORMAT_INVALID = 0xFF,
289
#define GE_VTYPE_TRANSFORM (0<<23)
290
#define GE_VTYPE_THROUGH (1<<23)
291
#define GE_VTYPE_THROUGH_MASK (1<<23)
293
#define GE_VTYPE_TC_NONE (0<<0)
294
#define GE_VTYPE_TC_8BIT (1<<0)
295
#define GE_VTYPE_TC_16BIT (2<<0)
296
#define GE_VTYPE_TC_FLOAT (3<<0)
297
#define GE_VTYPE_TC_MASK (3<<0)
298
#define GE_VTYPE_TC_SHIFT 0
300
#define GE_VTYPE_COL_NONE (0<<2)
301
#define GE_VTYPE_COL_565 (4<<2)
302
#define GE_VTYPE_COL_5551 (5<<2)
303
#define GE_VTYPE_COL_4444 (6<<2)
304
#define GE_VTYPE_COL_8888 (7<<2)
305
#define GE_VTYPE_COL_MASK (7<<2)
306
#define GE_VTYPE_COL_SHIFT 2
308
#define GE_VTYPE_NRM_NONE (0<<5)
309
#define GE_VTYPE_NRM_8BIT (1<<5)
310
#define GE_VTYPE_NRM_16BIT (2<<5)
311
#define GE_VTYPE_NRM_FLOAT (3<<5)
312
#define GE_VTYPE_NRM_MASK (3<<5)
313
#define GE_VTYPE_NRM_SHIFT 5
315
//#define GE_VTYPE_POSITION_NONE (0<<5)
316
#define GE_VTYPE_POS_8BIT (1<<7)
317
#define GE_VTYPE_POS_16BIT (2<<7)
318
#define GE_VTYPE_POS_FLOAT (3<<7)
319
#define GE_VTYPE_POS_MASK (3<<7)
320
#define GE_VTYPE_POS_SHIFT 7
322
#define GE_VTYPE_WEIGHT_NONE (0<<9)
323
#define GE_VTYPE_WEIGHT_8BIT (1<<9)
324
#define GE_VTYPE_WEIGHT_16BIT (2<<9)
325
#define GE_VTYPE_WEIGHT_FLOAT (3<<9)
326
#define GE_VTYPE_WEIGHT_MASK (3<<9)
327
#define GE_VTYPE_WEIGHT_SHIFT 9
329
#define GE_VTYPE_WEIGHTCOUNT_MASK (7<<14)
330
#define GE_VTYPE_WEIGHTCOUNT_SHIFT 14
332
#define GE_VTYPE_MORPHCOUNT_MASK (7<<18)
333
#define GE_VTYPE_MORPHCOUNT_SHIFT 18
335
#define GE_VTYPE_IDX_NONE (0<<11)
336
#define GE_VTYPE_IDX_8BIT (1<<11)
337
#define GE_VTYPE_IDX_16BIT (2<<11)
338
#define GE_VTYPE_IDX_32BIT (3<<11)
339
#define GE_VTYPE_IDX_MASK (3<<11)
340
#define GE_VTYPE_IDX_SHIFT 11
342
#define GE_CLEARMODE_COLOR (1<<8)
343
#define GE_CLEARMODE_ALPHA (1<<9) //or stencil?
344
#define GE_CLEARMODE_Z (1<<10)
345
#define GE_CLEARMODE_ALL (GE_CLEARMODE_COLOR|GE_CLEARMODE_ALPHA|GE_CLEARMODE_Z)
367
GE_COMP_NOTEQUAL = 3,
377
GE_SHADE_GOURAUD = 1,
382
GE_LIGHTTYPE_DIRECTIONAL = 0,
383
GE_LIGHTTYPE_POINT = 1,
384
GE_LIGHTTYPE_SPOT = 2,
385
GE_LIGHTTYPE_UNKNOWN = 3,
388
enum GELightColorSetting
390
GE_LIGHTCOLOR_AMBIENT = 0,
391
GE_LIGHTCOLOR_DIFFUSE = 1,
392
GE_LIGHTCOLOR_SPECULAR = 2,
395
enum GELightComputation
397
GE_LIGHTCOMP_ONLYDIFFUSE = 0,
398
GE_LIGHTCOMP_BOTH = 1,
399
GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE = 2,
417
enum GETexLevelMode {
418
GE_TEXLEVEL_MODE_AUTO = 0,
419
GE_TEXLEVEL_MODE_CONST = 1,
420
GE_TEXLEVEL_MODE_SLOPE = 2,
423
enum GEMaterialColorSetting
425
GE_MATERIALCOLOR_EMISSIVE = 0,
426
GE_MATERIALCOLOR_AMBIENT = 1,
427
GE_MATERIALCOLOR_DIFFUSE = 2,
428
GE_MATERIALCOLOR_SPECULAR = 3,
433
GE_BLENDMODE_MUL_AND_ADD = 0,
434
GE_BLENDMODE_MUL_AND_SUBTRACT = 1,
435
GE_BLENDMODE_MUL_AND_SUBTRACT_REVERSE = 2,
436
GE_BLENDMODE_MIN = 3,
437
GE_BLENDMODE_MAX = 4,
438
GE_BLENDMODE_ABSDIFF = 5,
441
enum GEBlendSrcFactor
443
GE_SRCBLEND_DSTCOLOR,
444
GE_SRCBLEND_INVDSTCOLOR,
445
GE_SRCBLEND_SRCALPHA,
446
GE_SRCBLEND_INVSRCALPHA,
447
GE_SRCBLEND_DSTALPHA,
448
GE_SRCBLEND_INVDSTALPHA,
449
GE_SRCBLEND_DOUBLESRCALPHA,
450
GE_SRCBLEND_DOUBLEINVSRCALPHA,
451
GE_SRCBLEND_DOUBLEDSTALPHA,
452
GE_SRCBLEND_DOUBLEINVDSTALPHA,
456
enum GEBlendDstFactor
458
GE_DSTBLEND_SRCCOLOR,
459
GE_DSTBLEND_INVSRCCOLOR,
460
GE_DSTBLEND_SRCALPHA,
461
GE_DSTBLEND_INVSRCALPHA,
462
GE_DSTBLEND_DSTALPHA,
463
GE_DSTBLEND_INVDSTALPHA,
464
GE_DSTBLEND_DOUBLESRCALPHA,
465
GE_DSTBLEND_DOUBLEINVSRCALPHA,
466
GE_DSTBLEND_DOUBLEDSTALPHA,
467
GE_DSTBLEND_DOUBLEINVDSTALPHA,
473
GE_TEXFUNC_MODULATE = 0,
474
GE_TEXFUNC_DECAL = 1,
475
GE_TEXFUNC_BLEND = 2,
476
GE_TEXFUNC_REPLACE = 3,
478
GE_TEXFUNC_UNKNOWN1 = 5,
479
GE_TEXFUNC_UNKNOWN2 = 6,
480
GE_TEXFUNC_UNKNOWN3 = 7,
485
GE_STENCILOP_KEEP = 0,
486
GE_STENCILOP_ZERO = 1,
487
GE_STENCILOP_REPLACE = 2,
488
GE_STENCILOP_INVERT = 3,
489
GE_STENCILOP_INCR = 4,
490
GE_STENCILOP_DECR = 5,
493
enum GETextureFiltering
495
GE_TFILT_NEAREST = 0,
497
GE_TFILT_NEAREST_MIPMAP_NEAREST = 4,
498
GE_TFILT_LINEAR_MIPMAP_NEAREST = 5,
499
GE_TFILT_NEAREST_MIPMAP_LINEAR = 6,
500
GE_TFILT_LINEAR_MIPMAP_LINEAR = 7,
505
GE_TEXMAP_TEXTURE_COORDS = 0,
506
GE_TEXMAP_TEXTURE_MATRIX = 1,
507
GE_TEXMAP_ENVIRONMENT_MAP = 2,
508
GE_TEXMAP_UNKNOWN = 3,
511
enum GETexProjMapMode
513
GE_PROJMAP_POSITION = 0,
515
GE_PROJMAP_NORMALIZED_NORMAL = 2,
516
GE_PROJMAP_NORMAL = 3,
523
GE_PRIM_LINE_STRIP = 2,
524
GE_PRIM_TRIANGLES = 3,
525
GE_PRIM_TRIANGLE_STRIP = 4,
526
GE_PRIM_TRIANGLE_FAN = 5,
527
GE_PRIM_RECTANGLES = 6,
528
GE_PRIM_KEEP_PREVIOUS = 7,
529
GE_PRIM_INVALID = -1,
536
GE_LOGIC_AND_REVERSE = 2,
538
GE_LOGIC_AND_INVERTED = 4,
544
GE_LOGIC_INVERTED = 10,
545
GE_LOGIC_OR_REVERSE = 11,
546
GE_LOGIC_COPY_INVERTED = 12,
547
GE_LOGIC_OR_INVERTED = 13,
554
GE_PATCHPRIM_TRIANGLES = 0,
555
GE_PATCHPRIM_LINES = 1,
556
GE_PATCHPRIM_POINTS = 2,
557
// Treated as points.
558
GE_PATCHPRIM_UNKNOWN = 3,
563
GE_CMODE_16BIT_BGR5650,
564
GE_CMODE_16BIT_ABGR5551,
565
GE_CMODE_16BIT_ABGR4444,
566
GE_CMODE_32BIT_ABGR8888,