| 1 | /***************************************************************************\r |
| 2 | external.h - description\r |
| 3 | -------------------\r |
| 4 | begin : Sun Mar 08 2009\r |
| 5 | copyright : (C) 1999-2009 by Pete Bernert\r |
| 6 | web : www.pbernert.com \r |
| 7 | ***************************************************************************/\r |
| 8 | \r |
| 9 | /***************************************************************************\r |
| 10 | * *\r |
| 11 | * This program is free software; you can redistribute it and/or modify *\r |
| 12 | * it under the terms of the GNU General Public License as published by *\r |
| 13 | * the Free Software Foundation; either version 2 of the License, or *\r |
| 14 | * (at your option) any later version. See also the license.txt file for *\r |
| 15 | * additional informations. *\r |
| 16 | * *\r |
| 17 | ***************************************************************************/\r |
| 18 | \r |
| 19 | #define MIRROR_TEST 1\r |
| 20 | #define SCISSOR_TEST 1\r |
| 21 | \r |
| 22 | // for own sow/tow scaling\r |
| 23 | #define OWNSCALE 1\r |
| 24 | \r |
| 25 | #define CLUTUSED 0x80000000\r |
| 26 | \r |
| 27 | #define SETCOL(x) if(x.c.lcol!=ulOLDCOL) {ulOLDCOL=x.c.lcol;glColor4ubv(x.c.col);} \r |
| 28 | #define SETPCOL(x) if(x->c.lcol!=ulOLDCOL) {ulOLDCOL=x->c.lcol;glColor4ubv(x->c.col);}\r |
| 29 | \r |
| 30 | #define GL_TO_EDGE_CLAMP 0x812F\r |
| 31 | \r |
| 32 | #define INFO_TW 0\r |
| 33 | #define INFO_DRAWSTART 1\r |
| 34 | #define INFO_DRAWEND 2\r |
| 35 | #define INFO_DRAWOFF 3\r |
| 36 | \r |
| 37 | #define SIGNSHIFT 21\r |
| 38 | #define CHKMAX_X 1024\r |
| 39 | #define CHKMAX_Y 512\r |
| 40 | \r |
| 41 | // GPU STATUS REGISTER bit values (c) Lewpy\r |
| 42 | \r |
| 43 | #define DR_NORMAL 0\r |
| 44 | #define DR_VRAMTRANSFER 1\r |
| 45 | \r |
| 46 | #define GPUSTATUS_ODDLINES 0x80000000\r |
| 47 | #define GPUSTATUS_DMABITS 0x60000000 // Two bits\r |
| 48 | #define GPUSTATUS_READYFORCOMMANDS 0x10000000\r |
| 49 | #define GPUSTATUS_READYFORVRAM 0x08000000\r |
| 50 | #define GPUSTATUS_IDLE 0x04000000\r |
| 51 | #define GPUSTATUS_DISPLAYDISABLED 0x00800000\r |
| 52 | #define GPUSTATUS_INTERLACED 0x00400000\r |
| 53 | #define GPUSTATUS_RGB24 0x00200000\r |
| 54 | #define GPUSTATUS_PAL 0x00100000\r |
| 55 | #define GPUSTATUS_DOUBLEHEIGHT 0x00080000\r |
| 56 | #define GPUSTATUS_WIDTHBITS 0x00070000 // Three bits\r |
| 57 | #define GPUSTATUS_MASKENABLED 0x00001000\r |
| 58 | #define GPUSTATUS_MASKDRAWN 0x00000800\r |
| 59 | #define GPUSTATUS_DRAWINGALLOWED 0x00000400\r |
| 60 | #define GPUSTATUS_DITHER 0x00000200\r |
| 61 | \r |
| 62 | #define STATUSREG lGPUstatusRet\r |
| 63 | \r |
| 64 | #define GPUIsBusy (STATUSREG &= ~GPUSTATUS_IDLE)\r |
| 65 | #define GPUIsIdle (STATUSREG |= GPUSTATUS_IDLE)\r |
| 66 | \r |
| 67 | #define GPUIsNotReadyForCommands (STATUSREG &= ~GPUSTATUS_READYFORCOMMANDS)\r |
| 68 | #define GPUIsReadyForCommands (STATUSREG |= GPUSTATUS_READYFORCOMMANDS)\r |
| 69 | \r |
| 70 | #define KEY_RESETTEXSTORE 1\r |
| 71 | #define KEY_SHOWFPS 2\r |
| 72 | #define KEY_RESETOPAQUE 4\r |
| 73 | #define KEY_RESETDITHER 8\r |
| 74 | #define KEY_RESETFILTER 16\r |
| 75 | #define KEY_RESETADVBLEND 32\r |
| 76 | #define KEY_BLACKWHITE 64\r |
| 77 | #define KEY_TOGGLEFBTEXTURE 128\r |
| 78 | #define KEY_STEPDOWN 256\r |
| 79 | #define KEY_TOGGLEFBREAD 512\r |
| 80 | \r |
| 81 | #define FALSE 0\r |
| 82 | #define TRUE 1\r |
| 83 | #define BOOL unsigned short\r |
| 84 | #define bool unsigned short\r |
| 85 | #define LOWORD(l) ((unsigned short)(l))\r |
| 86 | #define HIWORD(l) ((unsigned short)(((uint32_t)(l) >> 16) & 0xFFFF))\r |
| 87 | #define max(a,b) (((a) > (b)) ? (a) : (b))\r |
| 88 | #define min(a,b) (((a) < (b)) ? (a) : (b))\r |
| 89 | #define DWORD uint32_t\r |
| 90 | \r |
| 91 | typedef struct RECTTAG\r |
| 92 | {\r |
| 93 | int left;\r |
| 94 | int top;\r |
| 95 | int right;\r |
| 96 | int bottom;\r |
| 97 | }RECT;\r |
| 98 | \r |
| 99 | typedef struct VRAMLOADTAG\r |
| 100 | {\r |
| 101 | short x;\r |
| 102 | short y;\r |
| 103 | short Width;\r |
| 104 | short Height;\r |
| 105 | short RowsRemaining;\r |
| 106 | short ColsRemaining;\r |
| 107 | unsigned short *ImagePtr;\r |
| 108 | } VRAMLoad_t;\r |
| 109 | \r |
| 110 | typedef struct PSXPOINTTAG\r |
| 111 | {\r |
| 112 | int x;\r |
| 113 | int y;\r |
| 114 | } PSXPoint_t;\r |
| 115 | \r |
| 116 | typedef struct PSXSPOINTTAG\r |
| 117 | {\r |
| 118 | short x;\r |
| 119 | short y;\r |
| 120 | } PSXSPoint_t;\r |
| 121 | \r |
| 122 | typedef struct PSXRECTTAG\r |
| 123 | {\r |
| 124 | short x0;\r |
| 125 | short x1;\r |
| 126 | short y0;\r |
| 127 | short y1;\r |
| 128 | } PSXRect_t;\r |
| 129 | \r |
| 130 | typedef struct TWINTAG\r |
| 131 | {\r |
| 132 | PSXRect_t Position;\r |
| 133 | PSXRect_t OPosition;\r |
| 134 | PSXPoint_t TextureSize;\r |
| 135 | float UScaleFactor;\r |
| 136 | float VScaleFactor;\r |
| 137 | } TWin_t;\r |
| 138 | \r |
| 139 | typedef struct PSXDISPLAYTAG\r |
| 140 | {\r |
| 141 | PSXPoint_t DisplayModeNew;\r |
| 142 | PSXPoint_t DisplayMode;\r |
| 143 | PSXPoint_t DisplayPosition;\r |
| 144 | PSXPoint_t DisplayEnd;\r |
| 145 | \r |
| 146 | int Double;\r |
| 147 | int Height;\r |
| 148 | int PAL;\r |
| 149 | int InterlacedNew;\r |
| 150 | int Interlaced;\r |
| 151 | int InterlacedTest;\r |
| 152 | int RGB24New;\r |
| 153 | int RGB24;\r |
| 154 | PSXSPoint_t DrawOffset;\r |
| 155 | PSXRect_t DrawArea;\r |
| 156 | PSXPoint_t GDrawOffset;\r |
| 157 | PSXPoint_t CumulOffset;\r |
| 158 | int Disabled;\r |
| 159 | PSXRect_t Range;\r |
| 160 | } PSXDisplay_t;\r |
| 161 | \r |
| 162 | typedef struct OGLVertexTag \r |
| 163 | {\r |
| 164 | GLfloat x;\r |
| 165 | GLfloat y;\r |
| 166 | GLfloat z;\r |
| 167 | \r |
| 168 | GLfloat sow;\r |
| 169 | GLfloat tow;\r |
| 170 | \r |
| 171 | union COLTAG\r |
| 172 | {\r |
| 173 | unsigned char col[4];\r |
| 174 | unsigned int lcol;\r |
| 175 | } c;\r |
| 176 | } OGLVertex;\r |
| 177 | \r |
| 178 | typedef union EXShortTag\r |
| 179 | {\r |
| 180 | unsigned char c[2];\r |
| 181 | unsigned short s;\r |
| 182 | } EXShort;\r |
| 183 | \r |
| 184 | typedef union EXLongTag\r |
| 185 | {\r |
| 186 | unsigned char c[4];\r |
| 187 | unsigned int l;\r |
| 188 | EXShort s[2];\r |
| 189 | } EXLong;\r |
| 190 | \r |
| 191 | #ifndef _IN_CFG\r |
| 192 | \r |
| 193 | extern char *pConfigFile;\r |
| 194 | \r |
| 195 | #endif\r |
| 196 | \r |
| 197 | #ifndef _IN_DRAW\r |
| 198 | \r |
| 199 | extern int iResX;\r |
| 200 | extern int iResY;\r |
| 201 | extern BOOL bKeepRatio;\r |
| 202 | extern RECT rRatioRect;\r |
| 203 | extern BOOL bSnapShot;\r |
| 204 | extern BOOL bSmallAlpha;\r |
| 205 | extern BOOL bOpaquePass;\r |
| 206 | extern BOOL bAdvancedBlend;\r |
| 207 | extern BOOL bUseLines;\r |
| 208 | extern int iTexQuality;\r |
| 209 | extern BOOL bUseAntiAlias;\r |
| 210 | extern BOOL bGLExt;\r |
| 211 | extern BOOL bGLFastMovie;\r |
| 212 | extern BOOL bGLSoft;\r |
| 213 | extern BOOL bGLBlend;\r |
| 214 | \r |
| 215 | extern PFNGLBLENDEQU glBlendEquationEXTEx;\r |
| 216 | extern PFNGLCOLORTABLEEXT glColorTableEXTEx;\r |
| 217 | \r |
| 218 | extern unsigned char gl_ux[8];\r |
| 219 | extern unsigned char gl_vy[8];\r |
| 220 | extern OGLVertex vertex[4];\r |
| 221 | extern short sprtY,sprtX,sprtH,sprtW;\r |
| 222 | extern BOOL bIsFirstFrame;\r |
| 223 | extern int iWinSize;\r |
| 224 | extern int iZBufferDepth;\r |
| 225 | extern GLbitfield uiBufferBits;\r |
| 226 | extern int iUseMask;\r |
| 227 | extern int iSetMask;\r |
| 228 | extern int iDepthFunc;\r |
| 229 | extern BOOL bCheckMask;\r |
| 230 | extern unsigned short sSetMask;\r |
| 231 | extern uint32_t lSetMask;\r |
| 232 | extern int iShowFPS;\r |
| 233 | extern BOOL bSetClip;\r |
| 234 | extern int iForceVSync;\r |
| 235 | extern int iUseExts;\r |
| 236 | extern int iUsePalTextures;\r |
| 237 | extern GLuint gTexScanName;\r |
| 238 | \r |
| 239 | #endif\r |
| 240 | \r |
| 241 | #ifndef _IN_SOFT\r |
| 242 | \r |
| 243 | extern int GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;\r |
| 244 | extern int GlobalTextREST,GlobalTextABR,GlobalTextPAGE;\r |
| 245 | extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;\r |
| 246 | extern short g_m1;\r |
| 247 | extern short g_m2;\r |
| 248 | extern short g_m3;\r |
| 249 | extern short DrawSemiTrans;\r |
| 250 | \r |
| 251 | #endif\r |
| 252 | \r |
| 253 | #ifndef _IN_PRIMDRAW\r |
| 254 | \r |
| 255 | extern BOOL bNeedUploadTest;\r |
| 256 | extern BOOL bNeedUploadAfter;\r |
| 257 | extern BOOL bTexEnabled;\r |
| 258 | extern BOOL bBlendEnable;\r |
| 259 | extern BOOL bDrawDither;\r |
| 260 | extern int iFilterType; \r |
| 261 | extern BOOL bFullVRam;\r |
| 262 | extern BOOL bUseMultiPass;\r |
| 263 | extern int iOffscreenDrawing;\r |
| 264 | extern BOOL bOldSmoothShaded;\r |
| 265 | extern BOOL bUsingTWin;\r |
| 266 | extern BOOL bUsingMovie;\r |
| 267 | extern PSXRect_t xrMovieArea;\r |
| 268 | extern PSXRect_t xrUploadArea;\r |
| 269 | extern PSXRect_t xrUploadAreaIL;\r |
| 270 | extern PSXRect_t xrUploadAreaRGB24;\r |
| 271 | extern GLuint gTexName;\r |
| 272 | extern BOOL bDrawNonShaded;\r |
| 273 | extern BOOL bDrawMultiPass;\r |
| 274 | extern GLubyte ubGloColAlpha;\r |
| 275 | extern GLubyte ubGloAlpha;\r |
| 276 | extern short sSprite_ux2;\r |
| 277 | extern short sSprite_vy2;\r |
| 278 | extern BOOL bRenderFrontBuffer;\r |
| 279 | extern uint32_t ulOLDCOL;\r |
| 280 | extern uint32_t ulClutID;\r |
| 281 | extern void (*primTableJ[256])(unsigned char *);\r |
| 282 | extern void (*primTableSkip[256])(unsigned char *);\r |
| 283 | extern unsigned short usMirror;\r |
| 284 | extern uint32_t dwCfgFixes;\r |
| 285 | extern uint32_t dwActFixes;\r |
| 286 | extern uint32_t dwEmuFixes;\r |
| 287 | extern BOOL bUseFixes;\r |
| 288 | extern int iSpriteTex;\r |
| 289 | extern int iDrawnSomething;\r |
| 290 | \r |
| 291 | extern int drawX;\r |
| 292 | extern int drawY;\r |
| 293 | extern int drawW;\r |
| 294 | extern int drawH;\r |
| 295 | extern short sxmin;\r |
| 296 | extern short sxmax;\r |
| 297 | extern short symin;\r |
| 298 | extern short symax;\r |
| 299 | \r |
| 300 | #endif\r |
| 301 | \r |
| 302 | #ifndef _IN_TEXTURE\r |
| 303 | \r |
| 304 | extern unsigned char ubOpaqueDraw;\r |
| 305 | extern GLint giWantedRGBA;\r |
| 306 | extern GLint giWantedFMT;\r |
| 307 | extern GLint giWantedTYPE;\r |
| 308 | extern void (*LoadSubTexFn) (int,int,short,short);\r |
| 309 | extern int GlobalTexturePage;\r |
| 310 | extern uint32_t (*TCF[]) (uint32_t);\r |
| 311 | extern unsigned short (*PTCF[]) (unsigned short);\r |
| 312 | extern uint32_t (*PalTexturedColourFn) (uint32_t);\r |
| 313 | extern BOOL bUseFastMdec;\r |
| 314 | extern BOOL bUse15bitMdec;\r |
| 315 | extern int iFrameTexType;\r |
| 316 | extern int iFrameReadType;\r |
| 317 | extern int iClampType;\r |
| 318 | extern int iSortTexCnt;\r |
| 319 | extern BOOL bFakeFrontBuffer; \r |
| 320 | extern GLuint gTexFrameName;\r |
| 321 | extern GLuint gTexBlurName;\r |
| 322 | extern int iVRamSize;\r |
| 323 | extern int iTexGarbageCollection;\r |
| 324 | extern int iFTexA;\r |
| 325 | extern int iFTexB;\r |
| 326 | extern int iHiResTextures;\r |
| 327 | extern BOOL bIgnoreNextTile;\r |
| 328 | \r |
| 329 | #endif\r |
| 330 | \r |
| 331 | #ifndef _IN_GPU\r |
| 332 | \r |
| 333 | extern VRAMLoad_t VRAMWrite;\r |
| 334 | extern VRAMLoad_t VRAMRead;\r |
| 335 | extern int iDataWriteMode;\r |
| 336 | extern int iDataReadMode;\r |
| 337 | extern int iColDepth;\r |
| 338 | extern BOOL bChangeRes;\r |
| 339 | extern BOOL bWindowMode;\r |
| 340 | extern char szDispBuf[];\r |
| 341 | extern char szGPUKeys[];\r |
| 342 | extern PSXDisplay_t PSXDisplay;\r |
| 343 | extern PSXDisplay_t PreviousPSXDisplay;\r |
| 344 | extern uint32_t ulKeybits;\r |
| 345 | extern TWin_t TWin;\r |
| 346 | extern BOOL bDisplayNotSet;\r |
| 347 | extern int lGPUstatusRet;\r |
| 348 | extern short imageX0,imageX1;\r |
| 349 | extern short imageY0,imageY1;\r |
| 350 | extern int lClearOnSwap,lClearOnSwapColor;\r |
| 351 | extern unsigned char *psxVub;\r |
| 352 | extern signed char *psxVsb;\r |
| 353 | extern unsigned short *psxVuw;\r |
| 354 | extern signed short *psxVsw;\r |
| 355 | extern uint32_t *psxVul;\r |
| 356 | extern signed int *psxVsl;\r |
| 357 | extern GLfloat gl_z;\r |
| 358 | extern BOOL bNeedRGB24Update;\r |
| 359 | extern BOOL bChangeWinMode;\r |
| 360 | extern GLuint uiScanLine;\r |
| 361 | extern int iUseScanLines;\r |
| 362 | extern int lSelectedSlot;\r |
| 363 | extern int iScanBlend;\r |
| 364 | extern BOOL bInitCap;\r |
| 365 | extern int iBlurBuffer;\r |
| 366 | extern int iLastRGB24;\r |
| 367 | extern int iRenderFVR;\r |
| 368 | extern int iNoScreenSaver;\r |
| 369 | extern uint32_t ulGPUInfoVals[];\r |
| 370 | extern BOOL bNeedInterlaceUpdate;\r |
| 371 | extern BOOL bNeedWriteUpload;\r |
| 372 | extern BOOL bSkipNextFrame;\r |
| 373 | \r |
| 374 | extern int bFullScreen;\r |
| 375 | \r |
| 376 | #endif\r |
| 377 | \r |
| 378 | #ifndef _IN_MENU\r |
| 379 | \r |
| 380 | extern uint32_t dwCoreFlags;\r |
| 381 | extern GLuint gTexPicName;\r |
| 382 | extern PSXPoint_t ptCursorPoint[];\r |
| 383 | extern unsigned short usCursorActive;\r |
| 384 | \r |
| 385 | #endif\r |
| 386 | \r |
| 387 | #ifndef _IN_FPS\r |
| 388 | \r |
| 389 | extern BOOL bUseFrameLimit;\r |
| 390 | extern BOOL bUseFrameSkip;\r |
| 391 | extern float fFrameRate;\r |
| 392 | extern float fFrameRateHz;\r |
| 393 | extern int iFrameLimit;\r |
| 394 | extern float fps_skip;\r |
| 395 | extern float fps_cur;\r |
| 396 | \r |
| 397 | #endif\r |
| 398 | \r |
| 399 | #ifndef _IN_KEY\r |
| 400 | \r |
| 401 | extern uint32_t ulKeybits;\r |
| 402 | \r |
| 403 | #endif\r |
| 404 | \r |
| 405 | #ifndef _IN_ZN\r |
| 406 | \r |
| 407 | extern uint32_t dwGPUVersion;\r |
| 408 | extern int iGPUHeight;\r |
| 409 | extern int iGPUHeightMask;\r |
| 410 | extern int GlobalTextIL;\r |
| 411 | extern int iTileCheat;\r |
| 412 | \r |
| 413 | #endif\r |