Rice Video Plugin for GLES1.1
[mupen64plus-pandora.git] / source / rice_gles / src / UcodeDefs.h
diff --git a/source/rice_gles/src/UcodeDefs.h b/source/rice_gles/src/UcodeDefs.h
new file mode 100644 (file)
index 0000000..4ed9c73
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+Copyright (C) 2003 Rice1964
+
+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; either version 2
+of the License, or (at your option) any later version.
+
+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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+*/
+
+#ifndef _UCODE_DEFS_H_
+#define _UCODE_DEFS_H_
+
+typedef struct {
+    union {
+        unsigned int w0;
+        struct {
+            unsigned int arg0:24;
+            unsigned int cmd:8;
+        };
+    };
+    unsigned int w1;
+} Gwords;
+
+typedef struct {
+    unsigned int w0;
+    unsigned int v2:8;
+    unsigned int v1:8;
+    unsigned int v0:8;
+    unsigned int flag:8;
+} GGBI0_Tri1;
+
+typedef struct {
+    unsigned int v0:8;
+    unsigned int v1:8;
+    unsigned int v2:8;
+    unsigned int cmd:8;
+    unsigned int pad:24;
+    unsigned int flag:8;
+} GGBI2_Tri1;
+
+typedef struct {
+    unsigned int :1;
+    unsigned int v3:7;
+    unsigned int :1;
+    unsigned int v4:7;
+    unsigned int :1;
+    unsigned int v5:7;
+    unsigned int cmd:8;
+    unsigned int :1;
+    unsigned int v0:7;
+    unsigned int :1;
+    unsigned int v1:7;
+    unsigned int :1;
+    unsigned int v2:7;
+    unsigned int flag:8;
+} GGBI2_Tri2;
+
+typedef struct {
+    unsigned int w0;
+    unsigned int v2:8;
+    unsigned int v1:8;
+    unsigned int v0:8;
+    unsigned int v3:8;
+} GGBI0_Ln3DTri2;
+
+typedef struct {
+    unsigned int v5:8;
+    unsigned int v4:8;
+    unsigned int v3:8;
+    unsigned int cmd:8;
+
+    unsigned int v2:8;
+    unsigned int v1:8;
+    unsigned int v0:8;
+    unsigned int flag:8;
+} GGBI1_Tri2;
+
+typedef struct {
+    unsigned int v3:8;
+    unsigned int v4:8;
+    unsigned int v5:8;
+    unsigned int cmd:8;
+
+    unsigned int v0:8;
+    unsigned int v1:8;
+    unsigned int v2:8;
+    unsigned int flag:8;
+} GGBI2_Line3D;
+
+typedef struct {
+    unsigned int len:16;
+    unsigned int v0:4;
+    unsigned int n:4;
+    unsigned int cmd:8;
+    unsigned int addr;
+} GGBI0_Vtx;
+
+typedef struct {
+    unsigned int len:10;
+    unsigned int n:6;
+    unsigned int :1;
+    unsigned int v0:7;
+    unsigned int cmd:8;
+    unsigned int addr;
+} GGBI1_Vtx;
+
+typedef struct {
+    unsigned int vend:8;
+    unsigned int :4;
+    unsigned int n:8;
+    unsigned int :4;
+    unsigned int cmd:8;
+    unsigned int addr;
+} GGBI2_Vtx;
+
+typedef struct {
+    unsigned int    width:12;
+    unsigned int    :7;
+    unsigned int    siz:2;
+    unsigned int    fmt:3;
+    unsigned int    cmd:8;
+    unsigned int    addr;
+} GSetImg;
+
+typedef struct {
+    unsigned int    prim_level:8;
+    unsigned int    prim_min_level:8;
+    unsigned int    pad:8;
+    unsigned int    cmd:8;
+
+    union {
+        unsigned int    color;
+        struct {
+            unsigned int fillcolor:16;
+            unsigned int fillcolor2:16;
+        };
+        struct {
+            unsigned int a:8;
+            unsigned int b:8;
+            unsigned int g:8;
+            unsigned int r:8;
+        };
+    };
+} GSetColor;
+
+typedef struct {
+    unsigned int    :16;
+    unsigned int    param:8;
+    unsigned int    cmd:8;
+    unsigned int    addr;
+} GGBI0_Dlist;
+
+typedef struct {
+    unsigned int    len:16;
+    unsigned int    projection:1;
+    unsigned int    load:1;
+    unsigned int    push:1;
+    unsigned int    :5;
+    unsigned int    cmd:8;
+    unsigned int    addr;
+} GGBI0_Matrix;
+
+typedef struct {
+    unsigned int    :24;
+    unsigned int    cmd:8;
+    unsigned int    projection:1;
+    unsigned int    :31;
+} GGBI0_PopMatrix;
+
+typedef struct {
+    union {
+        struct {
+            unsigned int    param:8;
+            unsigned int    len:16;
+            unsigned int    cmd:8;
+        };
+        struct {
+            unsigned int    nopush:1;
+            unsigned int    load:1;
+            unsigned int    projection:1;
+            unsigned int    :5;
+            unsigned int    len2:16;
+            unsigned int    cmd2:8;
+        };
+    };
+    unsigned int    addr;
+} GGBI2_Matrix;
+
+typedef struct {
+    unsigned int    type:8;
+    unsigned int    offset:16;
+    unsigned int    cmd:8;
+    unsigned int    value;
+} GGBI0_MoveWord;
+
+typedef struct {
+    unsigned int    offset:16;
+    unsigned int    type:8;
+    unsigned int    cmd:8;
+    unsigned int    value;
+} GGBI2_MoveWord;
+
+typedef struct {
+    unsigned int    enable_gbi0:1;
+    unsigned int    enable_gbi2:1;
+    unsigned int    :6;
+    unsigned int    tile:3;
+    unsigned int    level:3;
+    unsigned int    :10;
+    unsigned int    cmd:8;
+    unsigned int    scaleT:16;
+    unsigned int    scaleS:16;
+} GTexture;
+
+typedef struct {
+    unsigned int    tl:12;
+    unsigned int    sl:12;
+    unsigned int    cmd:8;
+
+    unsigned int    th:12;
+    unsigned int    sh:12;
+    unsigned int    tile:3;
+    unsigned int    pad:5;
+} Gloadtile;
+
+typedef struct {
+    unsigned int    tmem:9;
+    unsigned int    line:9;
+    unsigned int    pad0:1;
+    unsigned int    siz:2;
+    unsigned int    fmt:3;
+    unsigned int    cmd:8;
+
+    unsigned int    shifts:4;
+    unsigned int    masks:4;
+    unsigned int    ms:1;
+    unsigned int    cs:1;
+    unsigned int    shiftt:4;
+    unsigned int    maskt:4;
+    unsigned int    mt:1;
+    unsigned int    ct:1;
+    unsigned int    palette:4;
+    unsigned int    tile:3;
+    unsigned int    pad1:5;
+} Gsettile;
+
+typedef union {
+    Gwords          words;
+    GGBI0_Tri1      tri1;
+    GGBI0_Ln3DTri2  ln3dtri2;
+    GGBI1_Tri2      gbi1tri2;
+    GGBI2_Tri1      gbi2tri1;
+    GGBI2_Tri2      gbi2tri2;
+    GGBI2_Line3D    gbi2line3d;
+    GGBI0_Vtx       gbi0vtx;
+    GGBI1_Vtx       gbi1vtx;
+    GGBI2_Vtx       gbi2vtx;
+    GSetImg         setimg;
+    GSetColor       setcolor;
+    GGBI0_Dlist     gbi0dlist;
+    GGBI0_Matrix    gbi0matrix;
+    GGBI0_PopMatrix gbi0popmatrix;
+    GGBI2_Matrix    gbi2matrix;
+    GGBI0_MoveWord  gbi0moveword;
+    GGBI2_MoveWord  gbi2moveword;
+    GTexture        texture;
+    Gloadtile       loadtile;
+    Gsettile        settile;
+    /*
+    Gdma        dma;
+    Gsegment    segment;
+    GsetothermodeH  setothermodeH;
+    GsetothermodeL  setothermodeL;
+    Gtexture    texture;
+    Gperspnorm  perspnorm;
+    Gsetcombine setcombine;
+    Gfillrect   fillrect;
+    Gsettile    settile;
+    Gloadtile   loadtile;
+    Gsettilesize    settilesize;
+    Gloadtlut   loadtlut;
+    */
+    long long int   force_structure_alignment;
+} Gfx;
+
+typedef union {
+    struct {
+        unsigned int    w0;
+        unsigned int    w1;
+        unsigned int    w2;
+        unsigned int    w3;
+    };
+    struct {
+        unsigned int    yl:12;  /* Y coordinate of upper left   */
+        unsigned int    xl:12;  /* X coordinate of upper left   */
+        unsigned int    cmd:8;  /* command          */
+
+        unsigned int    yh:12;  /* Y coordinate of lower right  */
+        unsigned int    xh:12;  /* X coordinate of lower right  */
+        unsigned int    tile:3; /* Tile descriptor index    */
+        unsigned int    pad1:5; /* Padding          */
+
+        unsigned int    t:16;   /* T texture coord at top left  */
+        unsigned int    s:16;   /* S texture coord at top left  */
+
+        unsigned int    dtdy:16;/* Change in T per change in Y  */
+        unsigned int    dsdx:16;/* Change in S per change in X  */
+    };
+} Gtexrect;
+
+#endif
+