gpu-gles from psx4m
[pcsx_rearmed.git] / plugins / gpu-gles / gpuExternals.h
diff --git a/plugins/gpu-gles/gpuExternals.h b/plugins/gpu-gles/gpuExternals.h
new file mode 100644 (file)
index 0000000..f24c31a
--- /dev/null
@@ -0,0 +1,570 @@
+/***************************************************************************\r
+                          external.h  -  description\r
+                             -------------------\r
+    begin                : Sun Mar 08 2009\r
+    copyright            : (C) 1999-2009 by Pete Bernert\r
+    web                  : www.pbernert.com   \r
+ ***************************************************************************/\r
+\r
+/***************************************************************************\r
+ *                                                                         *\r
+ *   This program is free software; you can redistribute it and/or modify  *\r
+ *   it under the terms of the GNU General Public License as published by  *\r
+ *   the Free Software Foundation; either version 2 of the License, or     *\r
+ *   (at your option) any later version. See also the license.txt file for *\r
+ *   additional informations.                                              *\r
+ *                                                                         *\r
+ ***************************************************************************/\r
+\r
+//*************************************************************************// \r
+// History of changes:\r
+//\r
+// 2009/03/08 - Pete  \r
+// - generic cleanup for the Peops release\r
+//\r
+//*************************************************************************// \r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+#ifndef __GPU_EX__\r
+#define __GPU_EX__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+#define _GPU_API_\r
+#ifndef _WINDOWS\r
+#ifdef __NANOGL__\r
+#include <gl/gl.h>\r
+#include <gl/egl.h>\r
+#else\r
+#ifdef SOFT_LINKAGE\r
+#pragma softfp_linkage\r
+#endif\r
+#include <gles/gl.h> // for opengl es types \r
+#ifdef SOFT_LINKAGE\r
+#pragma no_softfp_linkage\r
+#endif\r
+#endif\r
+#endif\r
+\r
+#ifdef MAEMO_CHANGES\r
+       #include "../psxCommon.h"\r
+#else\r
+       #include "psxCommon.h"\r
+#endif\r
+\r
+#ifdef __NANOGL__\r
+#define glTexParameteri(x,y,z) glTexParameterf(x,y,z) \r
+#define glAlphaFuncx(x,y) glAlphaFunc(x,y) \r
+#ifndef APIENTRY\r
+#define APIENTRY\r
+#endif\r
+extern  void ( APIENTRY * glPixelStorei )(GLenum pname, GLint param);\r
+#endif\r
+\r
+\r
+#define MIRROR_TEST 1\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+#define SCISSOR_TEST 1\r
+         \r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+// for own sow/tow scaling\r
+#define OWNSCALE 1\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+#define CLUTUSED     0x80000000\r
+//glColor4ubv(x.c.col)\r
+#define SETCOL(x)  if(x.c.lcol!=ulOLDCOL) {ulOLDCOL=x.c.lcol;glColor4ub(x.c.col[0],x.c.col[1],x.c.col[2],x.c.col[3]);} \r
+//#define SETPCOL(x)  if(x->c.lcol!=ulOLDCOL) {ulOLDCOL=x->c.lcol;glColor4ub(x->c.col[0],x->c.col[1],x->c.col[2],x->c.col[3]);}\r
+\r
+#define INFO_TW        0\r
+#define INFO_DRAWSTART 1\r
+#define INFO_DRAWEND   2\r
+#define INFO_DRAWOFF   3\r
+\r
+#define SIGNSHIFT 21\r
+#define CHKMAX_X 1024\r
+#define CHKMAX_Y 512\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+// GPU STATUS REGISTER bit values (c) Lewpy\r
+\r
+#define DR_NORMAL 0\r
+#define DR_VRAMTRANSFER 1\r
+\r
+#define GPUSTATUS_ODDLINES            0x80000000\r
+#define GPUSTATUS_DMABITS             0x60000000 // Two bits\r
+#define GPUSTATUS_READYFORCOMMANDS    0x10000000\r
+#define GPUSTATUS_READYFORVRAM        0x08000000\r
+#define GPUSTATUS_IDLE                0x04000000\r
+#define GPUSTATUS_DISPLAYDISABLED     0x00800000\r
+#define GPUSTATUS_INTERLACED          0x00400000\r
+#define GPUSTATUS_RGB24               0x00200000\r
+#define GPUSTATUS_PAL                 0x00100000\r
+#define GPUSTATUS_DOUBLEHEIGHT        0x00080000\r
+#define GPUSTATUS_WIDTHBITS           0x00070000 // Three bits\r
+#define GPUSTATUS_MASKENABLED         0x00001000\r
+#define GPUSTATUS_MASKDRAWN           0x00000800\r
+#define GPUSTATUS_DRAWINGALLOWED      0x00000400\r
+#define GPUSTATUS_DITHER              0x00000200\r
+\r
+#define STATUSREG lGPUstatusRet\r
+\r
+#define GPUIsBusy (STATUSREG &= ~GPUSTATUS_IDLE)\r
+#define GPUIsIdle (STATUSREG |= GPUSTATUS_IDLE)\r
+\r
+#define GPUIsNotReadyForCommands (STATUSREG &= ~GPUSTATUS_READYFORCOMMANDS)\r
+#define GPUIsReadyForCommands (STATUSREG |= GPUSTATUS_READYFORCOMMANDS)\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+#define KEY_RESETTEXSTORE   1\r
+#define KEY_SHOWFPS         2\r
+#define KEY_RESETOPAQUE     4\r
+#define KEY_RESETDITHER     8\r
+#define KEY_RESETFILTER     16\r
+#define KEY_RESETADVBLEND   32\r
+#define KEY_BLACKWHITE      64\r
+#define KEY_TOGGLEFBTEXTURE 128\r
+#define KEY_STEPDOWN        256\r
+#define KEY_TOGGLEFBREAD    512\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// Linux is missing some stuff, eh? ;)\r
+\r
+#ifndef _WINDOWS\r
+#ifndef FALSE\r
+#define FALSE 0\r
+#endif\r
+#ifndef TRUE\r
+#define TRUE  1\r
+#endif\r
+#ifndef BOOL\r
+#define BOOL unsigned short\r
+#endif\r
+#ifndef bool\r
+#define bool unsigned short\r
+#endif\r
+#define LOWORD(l)           ((unsigned short)(l))\r
+#define HIWORD(l)           ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))\r
+#define max(a,b)            (((a) > (b)) ? (a) : (b))\r
+#define min(a,b)            (((a) < (b)) ? (a) : (b))\r
+#define DWORD unsigned long\r
+\r
+typedef struct RECTTAG\r
+{\r
+ int left;\r
+ int top;\r
+ int right;\r
+ int bottom;\r
+}RECT;\r
+\r
+#endif\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef struct VRAMLOADTAG\r
+{\r
+ short x;\r
+ short y;\r
+ short Width;\r
+ short Height;\r
+ short RowsRemaining;\r
+ short ColsRemaining;\r
+ unsigned short *ImagePtr;\r
+} VRAMLoad_t;\r
+\r
+typedef struct PSXPOINTTAG\r
+{\r
+ long x;\r
+ long y;\r
+} PSXPoint_t;\r
+\r
+typedef struct PSXSPOINTTAG\r
+{\r
+ short x;\r
+ short y;\r
+} PSXSPoint_t;\r
+\r
+typedef struct PSXRECTTAG\r
+{\r
+ short x0;\r
+ short x1;\r
+ short y0;\r
+ short y1;\r
+} PSXRect_t;\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef struct TWINTAG\r
+{\r
+ PSXRect_t  Position;\r
+ PSXRect_t  OPosition;\r
+ PSXPoint_t TextureSize;\r
+ float      UScaleFactor;\r
+ float      VScaleFactor;\r
+} TWin_t;\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef struct PSXDISPLAYTAG\r
+{\r
+ PSXPoint_t  DisplayModeNew;\r
+ PSXPoint_t  DisplayMode;\r
+ PSXPoint_t  DisplayPosition;\r
+ PSXPoint_t  DisplayEnd;\r
\r
+ long        Double;\r
+ long        Height;\r
+ long        PAL;\r
+ long        InterlacedNew;\r
+ long        Interlaced;\r
+ long        InterlacedTest;\r
+ long        RGB24New;\r
+ long        RGB24;\r
+ PSXSPoint_t DrawOffset;\r
+ PSXRect_t   DrawArea;\r
+ PSXPoint_t  GDrawOffset;\r
+ PSXPoint_t  CumulOffset;\r
+ long        Disabled;\r
+ PSXRect_t   Range;\r
+} PSXDisplay_t;\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+typedef struct OGLVertexTag \r
+{\r
+ GLfloat x;\r
+ GLfloat y;\r
+ GLfloat z;\r
+\r
+ GLfloat sow;\r
+ GLfloat tow;\r
+\r
+ union\r
+COLTAG\r
+  {\r
+   u8 col[4];\r
+   unsigned long lcol;\r
+  } c;\r
+\r
+} OGLVertex;\r
+\r
+typedef union EXShortTag\r
+{\r
+ u8  c[2];\r
+ unsigned short s;\r
+} EXShort;\r
+\r
+typedef union EXLongTag\r
+{\r
+ u8 c[4];\r
+ unsigned long l;\r
+ EXShort       s[2];\r
+} EXLong;\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+#ifdef _WINDOWS\r
+\r
+extern HINSTANCE hInst;\r
+\r
+#endif\r
+                                                      \r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_DRAW\r
+\r
+extern int            iResX;\r
+extern int            iResY;\r
+extern BOOL           bKeepRatio;\r
+extern RECT           rRatioRect;\r
+extern BOOL           bOpaquePass;\r
+extern BOOL           bAdvancedBlend;\r
+\r
+//extern PFNGLBLENDEQU      glBlendEquationEXTEx;\r
+//extern PFNGLCOLORTABLEEXT glColorTableEXTEx;\r
+\r
+extern u8  gl_ux[8];\r
+extern u8  gl_vy[8];\r
+extern OGLVertex      vertex[4];\r
+extern short          sprtY,sprtX,sprtH,sprtW;\r
+#ifdef _WINDOWS\r
+extern HWND           hWWindow;\r
+#endif\r
+extern BOOL           bIsFirstFrame;\r
+extern int            iWinSize;\r
+extern int            iZBufferDepth;\r
+extern GLbitfield     uiBufferBits;\r
+extern int            iUseMask;\r
+extern int            iSetMask;\r
+extern int            iDepthFunc;\r
+extern BOOL           bCheckMask;\r
+extern unsigned short sSetMask;\r
+extern unsigned long  lSetMask;\r
+extern BOOL           bSetClip;\r
+extern GLuint         gTexScanName;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_SOFT\r
+\r
+extern long           GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;\r
+extern long           GlobalTextREST,GlobalTextABR,GlobalTextPAGE;\r
+extern short          ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;\r
+extern short          g_m1;\r
+extern short          g_m2;\r
+extern short          g_m3;\r
+extern short          DrawSemiTrans;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_PRIMDRAW\r
+\r
+extern BOOL          bNeedUploadTest;\r
+extern BOOL          bNeedUploadAfter;\r
+extern BOOL          bTexEnabled;\r
+extern BOOL          bBlendEnable;\r
+extern BOOL          bDrawDither;\r
+extern int           iFilterType; \r
+extern BOOL          bFullVRam;\r
+extern BOOL          bUseMultiPass;\r
+extern int           iOffscreenDrawing;\r
+extern BOOL          bOldSmoothShaded;\r
+extern BOOL          bUsingTWin;\r
+extern BOOL          bUsingMovie;\r
+extern PSXRect_t     xrMovieArea;\r
+extern PSXRect_t     xrUploadArea;\r
+extern PSXRect_t     xrUploadAreaIL;\r
+extern PSXRect_t     xrUploadAreaRGB24;\r
+extern GLuint        gTexName;\r
+extern BOOL          bDrawNonShaded;\r
+extern BOOL          bDrawMultiPass;\r
+extern GLubyte       ubGloColAlpha;\r
+extern GLubyte       ubGloAlpha;\r
+extern short         sSprite_ux2;\r
+extern short         sSprite_vy2;\r
+extern BOOL          bRenderFrontBuffer;\r
+extern unsigned long ulOLDCOL;\r
+extern unsigned long ulClutID;\r
+extern void (*primTableJ[256])(u8 *);\r
+extern void (*primTableSkip[256])(u8 *);\r
+extern unsigned short  usMirror;\r
+extern unsigned long dwCfgFixes;\r
+extern unsigned long dwActFixes;\r
+extern unsigned long dwEmuFixes;\r
+extern BOOL          bUseFixes;\r
+extern int           iSpriteTex;\r
+extern int           iDrawnSomething;\r
+\r
+extern long drawX;\r
+extern long drawY;\r
+extern long drawW;\r
+extern long drawH;\r
+extern short sxmin;\r
+extern short sxmax;\r
+extern short symin;\r
+extern short symax;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_TEXTURE\r
+\r
+extern u8  ubOpaqueDraw;\r
+extern GLint          giWantedRGBA;\r
+extern GLint          giWantedFMT;\r
+extern GLint          giWantedTYPE;\r
+extern void           (*LoadSubTexFn) (int,int,short,short);\r
+extern long           GlobalTexturePage;\r
+extern unsigned long  (*TCF[]) (unsigned long);\r
+extern unsigned short (*PTCF[]) (unsigned short);\r
+extern unsigned long  (*PalTexturedColourFn) (unsigned long);\r
+extern BOOL           bUseFastMdec;\r
+extern BOOL           bUse15bitMdec;\r
+extern int            iFrameTexType;\r
+extern int            iFrameReadType;\r
+extern int            iClampType;\r
+extern int            iSortTexCnt;\r
+extern BOOL           bFakeFrontBuffer; \r
+extern GLuint         gTexFrameName;\r
+extern GLuint         gTexBlurName;\r
+extern int            iVRamSize;\r
+extern int            iTexGarbageCollection;\r
+extern int            iFTexA;\r
+extern int            iFTexB;\r
+extern BOOL           bIgnoreNextTile;\r
+\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_GPU\r
+\r
+extern VRAMLoad_t     VRAMWrite;\r
+extern VRAMLoad_t     VRAMRead;\r
+extern int            iDataWriteMode;\r
+extern int            iDataReadMode;\r
+extern int            iColDepth;\r
+extern BOOL           bChangeRes;\r
+extern BOOL           bWindowMode;\r
+extern s8           szDispBuf[];\r
+extern s8           szGPUKeys[];\r
+extern PSXDisplay_t   PSXDisplay;\r
+extern PSXDisplay_t   PreviousPSXDisplay;\r
+//extern unsigned long  ulKeybits;\r
+extern TWin_t         TWin;\r
+extern BOOL           bDisplayNotSet;\r
+extern long           lGPUstatusRet;\r
+extern short          imageX0,imageX1;\r
+extern short          imageY0,imageY1;\r
+extern long           lClearOnSwap,lClearOnSwapColor;\r
+extern u8  * psxVub;\r
+extern s8    * psxVsb;\r
+extern unsigned short * psxVuw;\r
+extern signed short   * psxVsw;\r
+extern unsigned long  * psxVul;\r
+extern signed long    * psxVsl;\r
+extern GLfloat        gl_z;\r
+extern BOOL           bNeedRGB24Update;\r
+extern BOOL           bChangeWinMode;\r
+extern GLuint         uiScanLine;\r
+extern int            iUseScanLines;\r
+extern long           lSelectedSlot;\r
+extern int            iScanBlend;\r
+extern BOOL           bInitCap;\r
+extern int            iBlurBuffer;\r
+extern int            iLastRGB24;\r
+extern int            iRenderFVR;\r
+extern int            iNoScreenSaver;\r
+extern unsigned long  ulGPUInfoVals[];\r
+extern BOOL           bNeedInterlaceUpdate;\r
+extern BOOL           bNeedWriteUpload;\r
+extern BOOL           bSkipNextFrame;\r
+\r
+\r
+#ifndef _WINDOWS\r
+extern int bFullScreen;\r
+#endif\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_MENU\r
+\r
+//extern unsigned long  dwCoreFlags;\r
+extern GLuint         gTexPicName;\r
+//extern PSXPoint_t     ptCursorPoint[];\r
+//extern unsigned short usCursorActive;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_CFG\r
+\r
+#ifndef _WINDOWS\r
+extern s8 * pConfigFile;\r
+#endif\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_FPS\r
+\r
+extern BOOL           bUseFrameLimit;\r
+extern BOOL           bUseFrameSkip;\r
+extern float          fFrameRate;\r
+extern float          fFrameRateHz;\r
+extern int            iFrameLimit;\r
+extern float          fps_skip;\r
+extern float          fps_cur;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+typedef struct {\r
+u8 r;\r
+u8 g;\r
+u8 b;\r
+u8 a;\r
+} Vec4f;\r
+\r
+/**/\r
+typedef struct {\r
+float x;\r
+float y;\r
+float z;\r
+} Vec3f;\r
+\r
+typedef struct {\r
+float x;\r
+float y;\r
+} Vec2f;\r
+\r
+/*\r
+typedef struct {\r
+int x;\r
+int y;\r
+int z;\r
+} Vec3f;\r
+\r
+typedef struct {\r
+int x;\r
+int y;\r
+} Vec2f;\r
+/**/\r
+\r
+typedef struct {\r
+  Vec3f xyz;\r
+  Vec2f st;\r
+} Vertex;\r
+\r
+typedef struct {\r
+  Vec3f xyz;\r
+  Vec2f st;\r
+  Vec4f rgba;\r
+} Vertex2;\r
+\r
+#ifndef _IN_KEY\r
+\r
+//extern unsigned long  ulKeybits;\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r
+\r
+#ifndef _IN_ZN\r
+\r
+extern unsigned long dwGPUVersion;\r
+extern int           iGPUHeight;\r
+extern int           iGPUHeightMask;\r
+extern int           GlobalTextIL;\r
+extern int           iTileCheat;\r
+\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+\r
+#endif\r
+\r
+//-----------------------------------------------------//\r