--- /dev/null
+/***************************************************************************\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