GLES2N64 (from mupen64plus-ae) plugin. Compile and run on the OpenPandora
[mupen64plus-pandora.git] / source / gles2n64 / src / gDP.h
diff --git a/source/gles2n64/src/gDP.h b/source/gles2n64/src/gDP.h
new file mode 100644 (file)
index 0000000..e3d8125
--- /dev/null
@@ -0,0 +1,289 @@
+#ifndef GDP_H
+#define GDP_H
+
+#include "Types.h"
+
+#define CHANGED_RENDERMODE      0x0001
+#define CHANGED_CYCLETYPE       0x0002
+#define CHANGED_SCISSOR         0x0004
+#define CHANGED_TMEM            0x0008
+#define CHANGED_TILE            0x0010
+#define CHANGED_COMBINE_COLORS  0x0020
+#define CHANGED_COMBINE         0x0040
+#define CHANGED_ALPHACOMPARE    0x0080
+#define CHANGED_FOGCOLOR        0x0100
+#define CHANGED_DEPTHSOURCE     0x0200
+#define CHANGED_PRIMITIVEZ      0x0400
+#define CHANGED_ENV_COLOR       0x0800
+#define CHANGED_PRIM_COLOR      0x1000
+#define CHANGED_BLENDCOLOR      0x2000
+#define CHANGED_CONVERT         0x4000
+
+#define TEXTUREMODE_NORMAL      0
+#define TEXTUREMODE_TEXRECT     1
+#define TEXTUREMODE_BGIMAGE     2
+#define TEXTUREMODE_FRAMEBUFFER 3
+
+#define LOADTYPE_BLOCK          0
+#define LOADTYPE_TILE           1
+
+struct gDPCombine
+{
+    union
+    {
+        struct
+        {
+            // muxs1
+            unsigned    aA1     : 3;
+            unsigned    sbA1    : 3;
+            unsigned    aRGB1   : 3;
+            unsigned    aA0     : 3;
+            unsigned    sbA0    : 3;
+            unsigned    aRGB0   : 3;
+            unsigned    mA1     : 3;
+            unsigned    saA1    : 3;
+            unsigned    sbRGB1  : 4;
+            unsigned    sbRGB0  : 4;
+
+            // muxs0
+            unsigned    mRGB1   : 5;
+            unsigned    saRGB1  : 4;
+            unsigned    mA0     : 3;
+            unsigned    saA0    : 3;
+            unsigned    mRGB0   : 5;
+            unsigned    saRGB0  : 4;
+        };
+
+        struct
+        {
+            u32         muxs1, muxs0;
+        };
+
+        u64             mux;
+    };
+};
+
+struct gDPTile
+{
+    u32 format, size, line, tmem, palette;
+
+    union
+    {
+        struct
+        {
+            unsigned    mirrort : 1;
+            unsigned    clampt  : 1;
+            unsigned    pad0    : 30;
+
+            unsigned    mirrors : 1;
+            unsigned    clamps  : 1;
+            unsigned    pad1    : 30;
+        };
+
+        struct
+        {
+            u32 cmt, cms;
+        };
+    };
+
+    //FrameBuffer *frameBuffer;
+    u32 maskt, masks;
+    u32 shiftt, shifts;
+    f32 fuls, fult, flrs, flrt;
+    u32 uls, ult, lrs, lrt;
+};
+
+struct gDPInfo
+{
+    struct
+    {
+        union
+        {
+            struct
+            {
+                unsigned int alphaCompare : 2;
+                unsigned int depthSource : 1;
+
+//              struct
+//              {
+                    unsigned int AAEnable : 1;
+                    unsigned int depthCompare : 1;
+                    unsigned int depthUpdate : 1;
+                    unsigned int imageRead : 1;
+                    unsigned int clearOnCvg : 1;
+
+                    unsigned int cvgDest : 2;
+                    unsigned int depthMode : 2;
+
+                    unsigned int cvgXAlpha : 1;
+                    unsigned int alphaCvgSel : 1;
+                    unsigned int forceBlender : 1;
+                    unsigned int textureEdge : 1;
+//              } renderMode;
+
+                //struct
+                //{
+                    unsigned int c2_m2b : 2;
+                    unsigned int c1_m2b : 2;
+                    unsigned int c2_m2a : 2;
+                    unsigned int c1_m2a : 2;
+                    unsigned int c2_m1b : 2;
+                    unsigned int c1_m1b : 2;
+                    unsigned int c2_m1a : 2;
+                    unsigned int c1_m1a : 2;
+                //} blender;
+
+                unsigned int blendMask : 4;
+                unsigned int alphaDither : 2;
+                unsigned int colorDither : 2;
+
+                unsigned int combineKey : 1;
+                unsigned int textureConvert : 3;
+                unsigned int textureFilter : 2;
+                unsigned int textureLUT : 2;
+
+                unsigned int textureLOD : 1;
+                unsigned int textureDetail : 2;
+                unsigned int texturePersp : 1;
+                unsigned int cycleType : 2;
+                unsigned int unusedColorDither : 1; // unsupported
+                unsigned int pipelineMode : 1;
+
+                unsigned int pad : 8;
+
+            };
+
+            u64         _u64;
+
+            struct
+            {
+                u32         l, h;
+            };
+        };
+    } otherMode;
+
+    gDPCombine combine;
+
+    gDPTile tiles[8], *loadTile;
+
+    struct
+    {
+        f32 r, g, b, a;
+    } fogColor,  blendColor, envColor;
+
+    struct
+    {
+        unsigned int i;
+        f32 r, g, b, a;
+        f32 z, dz;
+    } fillColor;
+
+    struct
+    {
+        u32 m;
+        f32 l, r, g, b, a;
+    } primColor;
+
+    struct
+    {
+        f32 z, deltaZ;
+    } primDepth;
+
+    struct
+    {
+        u32 format, size, width, bpl;
+        u32 address;
+    } textureImage;
+
+    struct
+    {
+        u32 format, size, width, height, bpl;
+        u32 address, changed;
+        u32 depthImage;
+    } colorImage;
+
+    u32 depthImageAddress;
+
+    struct
+    {
+        u32 mode;
+        f32 ulx, uly, lrx, lry;
+    } scissor;
+
+    struct
+    {
+        f32 k0, k1, k2, k3, k4, k5;
+    } convert;
+
+    struct
+    {
+        struct
+        {
+            f32 r, g, b, a;
+        } center, scale, width;
+    } key;
+
+    struct
+    {
+        u32 width, height;
+    } texRect;
+
+    u32 changed;
+
+    //u16 palette[256];
+    u32 paletteCRC16[16];
+    u32 paletteCRC256;
+    u32 half_1, half_2;
+    u32 textureMode;
+    u32 loadType;
+};
+
+extern gDPInfo gDP;
+
+void gDPSetOtherMode( u32 mode0, u32 mode1 );
+void gDPSetPrimDepth( u16 z, u16 dz );
+void gDPPipelineMode( u32 mode );
+void gDPSetCycleType( u32 type );
+void gDPSetTexturePersp( u32 enable );
+void gDPSetTextureDetail( u32 type );
+void gDPSetTextureLOD( u32 mode );
+void gDPSetTextureLUT( u32 mode );
+void gDPSetTextureFilter( u32 type );
+void gDPSetTextureConvert( u32 type );
+void gDPSetCombineKey( u32 type );
+void gDPSetColorDither( u32 type );
+void gDPSetAlphaDither( u32 type );
+void gDPSetAlphaCompare( u32 mode );
+void gDPSetDepthSource( u32 source );
+void gDPSetRenderMode( u32 mode1, u32 mode2 );
+void gDPSetCombine( s32 muxs0, s32 muxs1 );
+void gDPSetColorImage( u32 format, u32 size, u32 width, u32 address );
+void gDPSetTextureImage( u32 format, u32 size, u32 width, u32 address );
+void gDPSetDepthImage( u32 address );
+void gDPSetEnvColor( u32 r, u32 g, u32 b, u32 a );
+void gDPSetBlendColor( u32 r, u32 g, u32 b, u32 a );
+void gDPSetFogColor( u32 r, u32 g, u32 b, u32 a );
+void gDPSetFillColor( u32 c );
+void gDPSetPrimColor( u32 m, u32 l, u32 r, u32 g, u32 b, u32 a );
+void gDPSetTile(u32 format, const u32 size, const u32 line, const u32 tmem, u32 tile,
+               const u32 palette, const u32 cmt, const u32 cms, const u32 maskt, const u32 masks,
+               const u32 shiftt, const u32 shifts );
+void gDPSetTileSize( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
+void gDPLoadTile( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
+void gDPLoadBlock( u32 tile, u32 uls, u32 ult, u32 lrs, u32 dxt );
+void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt );
+void gDPSetScissor( u32 mode, f32 ulx, f32 uly, f32 lrx, f32 lry );
+void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry );
+void gDPSetConvert( s32 k0, s32 k1, s32 k2, s32 k3, s32 k4, s32 k5 );
+void gDPSetKeyR( u32 cR, u32 sR, u32 wR );
+void gDPSetKeyGB(u32 cG, u32 sG, u32 wG, u32 cB, u32 sB, u32 wB );
+void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy );
+void gDPTextureRectangleFlip( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f32 t, f32 dsdx, f32 dtdy );
+void gDPFullSync();
+void gDPTileSync();
+void gDPPipeSync();
+void gDPLoadSync();
+void gDPNoOp();
+
+#endif
+