GLES2N64 (from mupen64plus-ae) plugin. Compile and run on the OpenPandora
[mupen64plus-pandora.git] / source / gles2n64 / src / gDP.h
CommitLineData
34cf4058 1#ifndef GDP_H
2#define GDP_H
3
4#include "Types.h"
5
6#define CHANGED_RENDERMODE 0x0001
7#define CHANGED_CYCLETYPE 0x0002
8#define CHANGED_SCISSOR 0x0004
9#define CHANGED_TMEM 0x0008
10#define CHANGED_TILE 0x0010
11#define CHANGED_COMBINE_COLORS 0x0020
12#define CHANGED_COMBINE 0x0040
13#define CHANGED_ALPHACOMPARE 0x0080
14#define CHANGED_FOGCOLOR 0x0100
15#define CHANGED_DEPTHSOURCE 0x0200
16#define CHANGED_PRIMITIVEZ 0x0400
17#define CHANGED_ENV_COLOR 0x0800
18#define CHANGED_PRIM_COLOR 0x1000
19#define CHANGED_BLENDCOLOR 0x2000
20#define CHANGED_CONVERT 0x4000
21
22#define TEXTUREMODE_NORMAL 0
23#define TEXTUREMODE_TEXRECT 1
24#define TEXTUREMODE_BGIMAGE 2
25#define TEXTUREMODE_FRAMEBUFFER 3
26
27#define LOADTYPE_BLOCK 0
28#define LOADTYPE_TILE 1
29
30struct gDPCombine
31{
32 union
33 {
34 struct
35 {
36 // muxs1
37 unsigned aA1 : 3;
38 unsigned sbA1 : 3;
39 unsigned aRGB1 : 3;
40 unsigned aA0 : 3;
41 unsigned sbA0 : 3;
42 unsigned aRGB0 : 3;
43 unsigned mA1 : 3;
44 unsigned saA1 : 3;
45 unsigned sbRGB1 : 4;
46 unsigned sbRGB0 : 4;
47
48 // muxs0
49 unsigned mRGB1 : 5;
50 unsigned saRGB1 : 4;
51 unsigned mA0 : 3;
52 unsigned saA0 : 3;
53 unsigned mRGB0 : 5;
54 unsigned saRGB0 : 4;
55 };
56
57 struct
58 {
59 u32 muxs1, muxs0;
60 };
61
62 u64 mux;
63 };
64};
65
66struct gDPTile
67{
68 u32 format, size, line, tmem, palette;
69
70 union
71 {
72 struct
73 {
74 unsigned mirrort : 1;
75 unsigned clampt : 1;
76 unsigned pad0 : 30;
77
78 unsigned mirrors : 1;
79 unsigned clamps : 1;
80 unsigned pad1 : 30;
81 };
82
83 struct
84 {
85 u32 cmt, cms;
86 };
87 };
88
89 //FrameBuffer *frameBuffer;
90 u32 maskt, masks;
91 u32 shiftt, shifts;
92 f32 fuls, fult, flrs, flrt;
93 u32 uls, ult, lrs, lrt;
94};
95
96struct gDPInfo
97{
98 struct
99 {
100 union
101 {
102 struct
103 {
104 unsigned int alphaCompare : 2;
105 unsigned int depthSource : 1;
106
107// struct
108// {
109 unsigned int AAEnable : 1;
110 unsigned int depthCompare : 1;
111 unsigned int depthUpdate : 1;
112 unsigned int imageRead : 1;
113 unsigned int clearOnCvg : 1;
114
115 unsigned int cvgDest : 2;
116 unsigned int depthMode : 2;
117
118 unsigned int cvgXAlpha : 1;
119 unsigned int alphaCvgSel : 1;
120 unsigned int forceBlender : 1;
121 unsigned int textureEdge : 1;
122// } renderMode;
123
124 //struct
125 //{
126 unsigned int c2_m2b : 2;
127 unsigned int c1_m2b : 2;
128 unsigned int c2_m2a : 2;
129 unsigned int c1_m2a : 2;
130 unsigned int c2_m1b : 2;
131 unsigned int c1_m1b : 2;
132 unsigned int c2_m1a : 2;
133 unsigned int c1_m1a : 2;
134 //} blender;
135
136 unsigned int blendMask : 4;
137 unsigned int alphaDither : 2;
138 unsigned int colorDither : 2;
139
140 unsigned int combineKey : 1;
141 unsigned int textureConvert : 3;
142 unsigned int textureFilter : 2;
143 unsigned int textureLUT : 2;
144
145 unsigned int textureLOD : 1;
146 unsigned int textureDetail : 2;
147 unsigned int texturePersp : 1;
148 unsigned int cycleType : 2;
149 unsigned int unusedColorDither : 1; // unsupported
150 unsigned int pipelineMode : 1;
151
152 unsigned int pad : 8;
153
154 };
155
156 u64 _u64;
157
158 struct
159 {
160 u32 l, h;
161 };
162 };
163 } otherMode;
164
165 gDPCombine combine;
166
167 gDPTile tiles[8], *loadTile;
168
169 struct
170 {
171 f32 r, g, b, a;
172 } fogColor, blendColor, envColor;
173
174 struct
175 {
176 unsigned int i;
177 f32 r, g, b, a;
178 f32 z, dz;
179 } fillColor;
180
181 struct
182 {
183 u32 m;
184 f32 l, r, g, b, a;
185 } primColor;
186
187 struct
188 {
189 f32 z, deltaZ;
190 } primDepth;
191
192 struct
193 {
194 u32 format, size, width, bpl;
195 u32 address;
196 } textureImage;
197
198 struct
199 {
200 u32 format, size, width, height, bpl;
201 u32 address, changed;
202 u32 depthImage;
203 } colorImage;
204
205 u32 depthImageAddress;
206
207 struct
208 {
209 u32 mode;
210 f32 ulx, uly, lrx, lry;
211 } scissor;
212
213 struct
214 {
215 f32 k0, k1, k2, k3, k4, k5;
216 } convert;
217
218 struct
219 {
220 struct
221 {
222 f32 r, g, b, a;
223 } center, scale, width;
224 } key;
225
226 struct
227 {
228 u32 width, height;
229 } texRect;
230
231 u32 changed;
232
233 //u16 palette[256];
234 u32 paletteCRC16[16];
235 u32 paletteCRC256;
236 u32 half_1, half_2;
237 u32 textureMode;
238 u32 loadType;
239};
240
241extern gDPInfo gDP;
242
243void gDPSetOtherMode( u32 mode0, u32 mode1 );
244void gDPSetPrimDepth( u16 z, u16 dz );
245void gDPPipelineMode( u32 mode );
246void gDPSetCycleType( u32 type );
247void gDPSetTexturePersp( u32 enable );
248void gDPSetTextureDetail( u32 type );
249void gDPSetTextureLOD( u32 mode );
250void gDPSetTextureLUT( u32 mode );
251void gDPSetTextureFilter( u32 type );
252void gDPSetTextureConvert( u32 type );
253void gDPSetCombineKey( u32 type );
254void gDPSetColorDither( u32 type );
255void gDPSetAlphaDither( u32 type );
256void gDPSetAlphaCompare( u32 mode );
257void gDPSetDepthSource( u32 source );
258void gDPSetRenderMode( u32 mode1, u32 mode2 );
259void gDPSetCombine( s32 muxs0, s32 muxs1 );
260void gDPSetColorImage( u32 format, u32 size, u32 width, u32 address );
261void gDPSetTextureImage( u32 format, u32 size, u32 width, u32 address );
262void gDPSetDepthImage( u32 address );
263void gDPSetEnvColor( u32 r, u32 g, u32 b, u32 a );
264void gDPSetBlendColor( u32 r, u32 g, u32 b, u32 a );
265void gDPSetFogColor( u32 r, u32 g, u32 b, u32 a );
266void gDPSetFillColor( u32 c );
267void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a );
268void gDPSetTile(u32 format, const u32 size, const u32 line, const u32 tmem, u32 tile,
269 const u32 palette, const u32 cmt, const u32 cms, const u32 maskt, const u32 masks,
270 const u32 shiftt, const u32 shifts );
271void gDPSetTileSize( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
272void gDPLoadTile( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
273void gDPLoadBlock( u32 tile, u32 uls, u32 ult, u32 lrs, u32 dxt );
274void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
275void gDPSetScissor( u32 mode, f32 ulx, f32 uly, f32 lrx, f32 lry );
276void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry );
277void gDPSetConvert( s32 k0, s32 k1, s32 k2, s32 k3, s32 k4, s32 k5 );
278void gDPSetKeyR( u32 cR, u32 sR, u32 wR );
279void gDPSetKeyGB(u32 cG, u32 sG, u32 wG, u32 cB, u32 sB, u32 wB );
280void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy );
281void gDPTextureRectangleFlip( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy );
282void gDPFullSync();
283void gDPTileSync();
284void gDPPipeSync();
285void gDPLoadSync();
286void gDPNoOp();
287
288#endif
289