Rice GLES2 (from mupen64plus-ae) plugin. Compile but doesn't works well on the OpenPa...
[mupen64plus-pandora.git] / source / gles2rice / src / UcodeDefs.h
1 /*
2 Copyright (C) 2003 Rice1964
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17
18 */
19
20 #ifndef _UCODE_DEFS_H_
21 #define _UCODE_DEFS_H_
22
23 typedef struct {
24     union {
25         unsigned int w0;
26         struct {
27             unsigned int arg0:24;
28             unsigned int cmd:8;
29         };
30     };
31     unsigned int w1;
32 } Gwords;
33
34 typedef struct {
35     unsigned int w0;
36     unsigned int v2:8;
37     unsigned int v1:8;
38     unsigned int v0:8;
39     unsigned int flag:8;
40 } GGBI0_Tri1;
41
42 typedef struct {
43     unsigned int v0:8;
44     unsigned int v1:8;
45     unsigned int v2:8;
46     unsigned int cmd:8;
47     unsigned int pad:24;
48     unsigned int flag:8;
49 } GGBI2_Tri1;
50
51 typedef struct {
52     unsigned int :1;
53     unsigned int v3:7;
54     unsigned int :1;
55     unsigned int v4:7;
56     unsigned int :1;
57     unsigned int v5:7;
58     unsigned int cmd:8;
59     unsigned int :1;
60     unsigned int v0:7;
61     unsigned int :1;
62     unsigned int v1:7;
63     unsigned int :1;
64     unsigned int v2:7;
65     unsigned int flag:8;
66 } GGBI2_Tri2;
67
68 typedef struct {
69     unsigned int w0;
70     unsigned int v2:8;
71     unsigned int v1:8;
72     unsigned int v0:8;
73     unsigned int v3:8;
74 } GGBI0_Ln3DTri2;
75
76 typedef struct {
77     unsigned int v5:8;
78     unsigned int v4:8;
79     unsigned int v3:8;
80     unsigned int cmd:8;
81
82     unsigned int v2:8;
83     unsigned int v1:8;
84     unsigned int v0:8;
85     unsigned int flag:8;
86 } GGBI1_Tri2;
87
88 typedef struct {
89     unsigned int v3:8;
90     unsigned int v4:8;
91     unsigned int v5:8;
92     unsigned int cmd:8;
93
94     unsigned int v0:8;
95     unsigned int v1:8;
96     unsigned int v2:8;
97     unsigned int flag:8;
98 } GGBI2_Line3D;
99
100 typedef struct {
101     unsigned int len:16;
102     unsigned int v0:4;
103     unsigned int n:4;
104     unsigned int cmd:8;
105     unsigned int addr;
106 } GGBI0_Vtx;
107
108 typedef struct {
109     unsigned int len:10;
110     unsigned int n:6;
111     unsigned int :1;
112     unsigned int v0:7;
113     unsigned int cmd:8;
114     unsigned int addr;
115 } GGBI1_Vtx;
116
117 typedef struct {
118     unsigned int vend:8;
119     unsigned int :4;
120     unsigned int n:8;
121     unsigned int :4;
122     unsigned int cmd:8;
123     unsigned int addr;
124 } GGBI2_Vtx;
125
126 typedef struct {
127     unsigned int    width:12;
128     unsigned int    :7;
129     unsigned int    siz:2;
130     unsigned int    fmt:3;
131     unsigned int    cmd:8;
132     unsigned int    addr;
133 } GSetImg;
134
135 typedef struct {
136     unsigned int    prim_level:8;
137     unsigned int    prim_min_level:8;
138     unsigned int    pad:8;
139     unsigned int    cmd:8;
140
141     union {
142         unsigned int    color;
143         struct {
144             unsigned int fillcolor:16;
145             unsigned int fillcolor2:16;
146         };
147         struct {
148             unsigned int a:8;
149             unsigned int b:8;
150             unsigned int g:8;
151             unsigned int r:8;
152         };
153     };
154 } GSetColor;
155
156 typedef struct {
157     unsigned int    :16;
158     unsigned int    param:8;
159     unsigned int    cmd:8;
160     unsigned int    addr;
161 } GGBI0_Dlist;
162
163 typedef struct {
164     unsigned int    len:16;
165     unsigned int    projection:1;
166     unsigned int    load:1;
167     unsigned int    push:1;
168     unsigned int    :5;
169     unsigned int    cmd:8;
170     unsigned int    addr;
171 } GGBI0_Matrix;
172
173 typedef struct {
174     unsigned int    :24;
175     unsigned int    cmd:8;
176     unsigned int    projection:1;
177     unsigned int    :31;
178 } GGBI0_PopMatrix;
179
180 typedef struct {
181     union {
182         struct {
183             unsigned int    param:8;
184             unsigned int    len:16;
185             unsigned int    cmd:8;
186         };
187         struct {
188             unsigned int    nopush:1;
189             unsigned int    load:1;
190             unsigned int    projection:1;
191             unsigned int    :5;
192             unsigned int    len2:16;
193             unsigned int    cmd2:8;
194         };
195     };
196     unsigned int    addr;
197 } GGBI2_Matrix;
198
199 typedef struct {
200     unsigned int    type:8;
201     unsigned int    offset:16;
202     unsigned int    cmd:8;
203     unsigned int    value;
204 } GGBI0_MoveWord;
205
206 typedef struct {
207     unsigned int    offset:16;
208     unsigned int    type:8;
209     unsigned int    cmd:8;
210     unsigned int    value;
211 } GGBI2_MoveWord;
212
213 typedef struct {
214     unsigned int    enable_gbi0:1;
215     unsigned int    enable_gbi2:1;
216     unsigned int    :6;
217     unsigned int    tile:3;
218     unsigned int    level:3;
219     unsigned int    :10;
220     unsigned int    cmd:8;
221     unsigned int    scaleT:16;
222     unsigned int    scaleS:16;
223 } GTexture;
224
225 typedef struct {
226     unsigned int    tl:12;
227     unsigned int    sl:12;
228     unsigned int    cmd:8;
229
230     unsigned int    th:12;
231     unsigned int    sh:12;
232     unsigned int    tile:3;
233     unsigned int    pad:5;
234 } Gloadtile;
235
236 typedef struct {
237     unsigned int    tmem:9;
238     unsigned int    line:9;
239     unsigned int    pad0:1;
240     unsigned int    siz:2;
241     unsigned int    fmt:3;
242     unsigned int    cmd:8;
243
244     unsigned int    shifts:4;
245     unsigned int    masks:4;
246     unsigned int    ms:1;
247     unsigned int    cs:1;
248     unsigned int    shiftt:4;
249     unsigned int    maskt:4;
250     unsigned int    mt:1;
251     unsigned int    ct:1;
252     unsigned int    palette:4;
253     unsigned int    tile:3;
254     unsigned int    pad1:5;
255 } Gsettile;
256
257 typedef union {
258     Gwords          words;
259     GGBI0_Tri1      tri1;
260     GGBI0_Ln3DTri2  ln3dtri2;
261     GGBI1_Tri2      gbi1tri2;
262     GGBI2_Tri1      gbi2tri1;
263     GGBI2_Tri2      gbi2tri2;
264     GGBI2_Line3D    gbi2line3d;
265     GGBI0_Vtx       gbi0vtx;
266     GGBI1_Vtx       gbi1vtx;
267     GGBI2_Vtx       gbi2vtx;
268     GSetImg         setimg;
269     GSetColor       setcolor;
270     GGBI0_Dlist     gbi0dlist;
271     GGBI0_Matrix    gbi0matrix;
272     GGBI0_PopMatrix gbi0popmatrix;
273     GGBI2_Matrix    gbi2matrix;
274     GGBI0_MoveWord  gbi0moveword;
275     GGBI2_MoveWord  gbi2moveword;
276     GTexture        texture;
277     Gloadtile       loadtile;
278     Gsettile        settile;
279     /*
280     Gdma        dma;
281     Gsegment    segment;
282     GsetothermodeH  setothermodeH;
283     GsetothermodeL  setothermodeL;
284     Gtexture    texture;
285     Gperspnorm  perspnorm;
286     Gsetcombine setcombine;
287     Gfillrect   fillrect;
288     Gsettile    settile;
289     Gloadtile   loadtile;
290     Gsettilesize    settilesize;
291     Gloadtlut   loadtlut;
292     */
293     long long int   force_structure_alignment;
294 } Gfx;
295
296 typedef union {
297     struct {
298         unsigned int    w0;
299         unsigned int    w1;
300         unsigned int    w2;
301         unsigned int    w3;
302     };
303     struct {
304         unsigned int    yl:12;  /* Y coordinate of upper left   */
305         unsigned int    xl:12;  /* X coordinate of upper left   */
306         unsigned int    cmd:8;  /* command          */
307
308         unsigned int    yh:12;  /* Y coordinate of lower right  */
309         unsigned int    xh:12;  /* X coordinate of lower right  */
310         unsigned int    tile:3; /* Tile descriptor index    */
311         unsigned int    pad1:5; /* Padding          */
312
313         unsigned int    t:16;   /* T texture coord at top left  */
314         unsigned int    s:16;   /* S texture coord at top left  */
315
316         unsigned int    dtdy:16;/* Change in T per change in Y  */
317         unsigned int    dsdx:16;/* Change in S per change in X  */
318     };
319 } Gtexrect;
320
321 #endif
322