1 /***************************************************************************
\r
2 external.h - description
\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
9 /***************************************************************************
\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
17 ***************************************************************************/
\r
19 //*************************************************************************//
\r
20 // History of changes:
\r
22 // 2009/03/08 - Pete
\r
23 // - generic cleanup for the Peops release
\r
25 //*************************************************************************//
\r
27 /////////////////////////////////////////////////////////////////////////////
\r
40 #include <GLES/gl.h>
\r
41 #include <GLES/glext.h>
\r
45 #define glTexParameteri(x,y,z) glTexParameterf(x,y,z)
\r
46 #define glAlphaFuncx(x,y) glAlphaFunc(x,y)
\r
50 extern void ( APIENTRY * glPixelStorei )(GLenum pname, GLint param);
\r
54 #define MIRROR_TEST 1
\r
56 /////////////////////////////////////////////////////////////////////////////
\r
58 #define SCISSOR_TEST 1
\r
60 /////////////////////////////////////////////////////////////////////////////
\r
62 // for own sow/tow scaling
\r
65 /////////////////////////////////////////////////////////////////////////////
\r
67 #define CLUTUSED 0x80000000
\r
68 //glColor4ubv(x.c.col)
\r
69 #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
70 //#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
73 #define INFO_DRAWSTART 1
\r
74 #define INFO_DRAWEND 2
\r
75 #define INFO_DRAWOFF 3
\r
77 #define SIGNSHIFT 21
\r
78 #define CHKMAX_X 1024
\r
79 #define CHKMAX_Y 512
\r
81 /////////////////////////////////////////////////////////////////////////////
\r
83 // GPU STATUS REGISTER bit values (c) Lewpy
\r
86 #define DR_VRAMTRANSFER 1
\r
88 #define GPUSTATUS_ODDLINES 0x80000000
\r
89 #define GPUSTATUS_DMABITS 0x60000000 // Two bits
\r
90 #define GPUSTATUS_READYFORCOMMANDS 0x10000000
\r
91 #define GPUSTATUS_READYFORVRAM 0x08000000
\r
92 #define GPUSTATUS_IDLE 0x04000000
\r
93 #define GPUSTATUS_DISPLAYDISABLED 0x00800000
\r
94 #define GPUSTATUS_INTERLACED 0x00400000
\r
95 #define GPUSTATUS_RGB24 0x00200000
\r
96 #define GPUSTATUS_PAL 0x00100000
\r
97 #define GPUSTATUS_DOUBLEHEIGHT 0x00080000
\r
98 #define GPUSTATUS_WIDTHBITS 0x00070000 // Three bits
\r
99 #define GPUSTATUS_MASKENABLED 0x00001000
\r
100 #define GPUSTATUS_MASKDRAWN 0x00000800
\r
101 #define GPUSTATUS_DRAWINGALLOWED 0x00000400
\r
102 #define GPUSTATUS_DITHER 0x00000200
\r
104 #define STATUSREG lGPUstatusRet
\r
106 #define GPUIsBusy (STATUSREG &= ~GPUSTATUS_IDLE)
\r
107 #define GPUIsIdle (STATUSREG |= GPUSTATUS_IDLE)
\r
109 #define GPUIsNotReadyForCommands (STATUSREG &= ~GPUSTATUS_READYFORCOMMANDS)
\r
110 #define GPUIsReadyForCommands (STATUSREG |= GPUSTATUS_READYFORCOMMANDS)
\r
112 /////////////////////////////////////////////////////////////////////////////
\r
114 #define KEY_RESETTEXSTORE 1
\r
115 #define KEY_SHOWFPS 2
\r
116 #define KEY_RESETOPAQUE 4
\r
117 #define KEY_RESETDITHER 8
\r
118 #define KEY_RESETFILTER 16
\r
119 #define KEY_RESETADVBLEND 32
\r
120 #define KEY_BLACKWHITE 64
\r
121 #define KEY_TOGGLEFBTEXTURE 128
\r
122 #define KEY_STEPDOWN 256
\r
123 #define KEY_TOGGLEFBREAD 512
\r
125 /////////////////////////////////////////////////////////////////////////////
\r
126 // Linux is missing some stuff, eh? ;)
\r
136 #define BOOL unsigned short
\r
139 #define bool unsigned short
\r
141 #define LOWORD(l) ((unsigned short)(l))
\r
142 #define HIWORD(l) ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))
\r
143 #define max(a,b) (((a) > (b)) ? (a) : (b))
\r
144 #define min(a,b) (((a) < (b)) ? (a) : (b))
\r
145 #define DWORD unsigned long
\r
147 typedef struct RECTTAG
\r
157 /////////////////////////////////////////////////////////////////////////////
\r
159 typedef struct VRAMLOADTAG
\r
165 short RowsRemaining;
\r
166 short ColsRemaining;
\r
167 unsigned short *ImagePtr;
\r
170 typedef struct PSXPOINTTAG
\r
176 typedef struct PSXSPOINTTAG
\r
182 typedef struct PSXRECTTAG
\r
190 /////////////////////////////////////////////////////////////////////////////
\r
192 typedef struct TWINTAG
\r
194 PSXRect_t Position;
\r
195 PSXRect_t OPosition;
\r
196 PSXPoint_t TextureSize;
\r
197 float UScaleFactor;
\r
198 float VScaleFactor;
\r
201 /////////////////////////////////////////////////////////////////////////////
\r
203 typedef struct PSXDISPLAYTAG
\r
205 PSXPoint_t DisplayModeNew;
\r
206 PSXPoint_t DisplayMode;
\r
207 PSXPoint_t DisplayPosition;
\r
208 PSXPoint_t DisplayEnd;
\r
213 long InterlacedNew;
\r
215 long InterlacedTest;
\r
218 PSXSPoint_t DrawOffset;
\r
219 PSXRect_t DrawArea;
\r
220 PSXPoint_t GDrawOffset;
\r
221 PSXPoint_t CumulOffset;
\r
226 /////////////////////////////////////////////////////////////////////////////
\r
228 typedef struct OGLVertexTag
\r
240 unsigned char col[4];
\r
241 unsigned long lcol;
\r
246 typedef union EXShortTag
\r
248 unsigned char c[2];
\r
252 typedef union EXLongTag
\r
254 unsigned char c[4];
\r
260 /////////////////////////////////////////////////////////////////////////////
\r
264 extern HINSTANCE hInst;
\r
268 //-----------------------------------------------------//
\r
274 extern BOOL bKeepRatio;
\r
275 extern RECT rRatioRect;
\r
276 extern BOOL bOpaquePass;
\r
277 extern BOOL bAdvancedBlend;
\r
279 //extern PFNGLBLENDEQU glBlendEquationEXTEx;
\r
280 //extern PFNGLCOLORTABLEEXT glColorTableEXTEx;
\r
282 extern unsigned char gl_ux[8];
\r
283 extern unsigned char gl_vy[8];
\r
284 extern OGLVertex vertex[4];
\r
285 extern short sprtY,sprtX,sprtH,sprtW;
\r
287 extern HWND hWWindow;
\r
289 extern BOOL bIsFirstFrame;
\r
290 extern int iWinSize;
\r
291 extern int iZBufferDepth;
\r
292 extern GLbitfield uiBufferBits;
\r
293 extern int iUseMask;
\r
294 extern int iSetMask;
\r
295 extern int iDepthFunc;
\r
296 extern BOOL bCheckMask;
\r
297 extern unsigned short sSetMask;
\r
298 extern unsigned long lSetMask;
\r
299 extern BOOL bSetClip;
\r
300 extern GLuint gTexScanName;
\r
304 //-----------------------------------------------------//
\r
308 extern long GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
\r
309 extern long GlobalTextREST,GlobalTextABR,GlobalTextPAGE;
\r
310 extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;
\r
314 extern short DrawSemiTrans;
\r
318 //-----------------------------------------------------//
\r
320 #ifndef _IN_PRIMDRAW
\r
322 extern BOOL bNeedUploadTest;
\r
323 extern BOOL bNeedUploadAfter;
\r
324 extern BOOL bTexEnabled;
\r
325 extern BOOL bBlendEnable;
\r
326 extern BOOL bDrawDither;
\r
327 extern int iFilterType;
\r
328 extern BOOL bFullVRam;
\r
329 extern BOOL bUseMultiPass;
\r
330 extern int iOffscreenDrawing;
\r
331 extern BOOL bOldSmoothShaded;
\r
332 extern BOOL bUsingTWin;
\r
333 extern BOOL bUsingMovie;
\r
334 extern PSXRect_t xrMovieArea;
\r
335 extern PSXRect_t xrUploadArea;
\r
336 extern PSXRect_t xrUploadAreaIL;
\r
337 extern PSXRect_t xrUploadAreaRGB24;
\r
338 extern GLuint gTexName;
\r
339 extern BOOL bDrawNonShaded;
\r
340 extern BOOL bDrawMultiPass;
\r
341 extern GLubyte ubGloColAlpha;
\r
342 extern GLubyte ubGloAlpha;
\r
343 extern short sSprite_ux2;
\r
344 extern short sSprite_vy2;
\r
345 extern BOOL bRenderFrontBuffer;
\r
346 extern unsigned long ulOLDCOL;
\r
347 extern unsigned long ulClutID;
\r
348 extern void (*primTableJ[256])(unsigned char *);
\r
349 extern void (*primTableSkip[256])(unsigned char *);
\r
350 extern unsigned short usMirror;
\r
351 extern unsigned long dwCfgFixes;
\r
352 extern unsigned long dwActFixes;
\r
353 extern unsigned long dwEmuFixes;
\r
354 extern BOOL bUseFixes;
\r
355 extern int iSpriteTex;
\r
356 extern int iDrawnSomething;
\r
362 extern short sxmin;
\r
363 extern short sxmax;
\r
364 extern short symin;
\r
365 extern short symax;
\r
367 extern unsigned int CSVERTEX;
\r
368 extern unsigned int CSCOLOR;
\r
369 extern unsigned int CSTEXTURE;
\r
373 //-----------------------------------------------------//
\r
375 #ifndef _IN_TEXTURE
\r
377 extern unsigned char ubOpaqueDraw;
\r
378 extern GLint giWantedRGBA;
\r
379 extern GLint giWantedFMT;
\r
380 extern GLint giWantedTYPE;
\r
381 extern void (*LoadSubTexFn) (int,int,short,short);
\r
382 extern long GlobalTexturePage;
\r
383 extern unsigned long (*TCF[]) (unsigned long);
\r
384 extern unsigned short (*PTCF[]) (unsigned short);
\r
385 extern unsigned long (*PalTexturedColourFn) (unsigned long);
\r
386 extern BOOL bUseFastMdec;
\r
387 extern BOOL bUse15bitMdec;
\r
388 extern int iFrameTexType;
\r
389 extern int iFrameReadType;
\r
390 extern int iClampType;
\r
391 extern int iSortTexCnt;
\r
392 extern BOOL bFakeFrontBuffer;
\r
393 extern GLuint gTexFrameName;
\r
394 extern GLuint gTexBlurName;
\r
395 extern int iVRamSize;
\r
396 extern int iTexGarbageCollection;
\r
399 extern BOOL bIgnoreNextTile;
\r
404 //-----------------------------------------------------//
\r
408 extern VRAMLoad_t VRAMWrite;
\r
409 extern VRAMLoad_t VRAMRead;
\r
410 extern int iDataWriteMode;
\r
411 extern int iDataReadMode;
\r
412 extern int iColDepth;
\r
413 extern BOOL bChangeRes;
\r
414 extern BOOL bWindowMode;
\r
415 extern char szDispBuf[];
\r
416 extern char szGPUKeys[];
\r
417 extern PSXDisplay_t PSXDisplay;
\r
418 extern PSXDisplay_t PreviousPSXDisplay;
\r
419 //extern unsigned long ulKeybits;
\r
420 extern TWin_t TWin;
\r
421 extern BOOL bDisplayNotSet;
\r
422 extern long lGPUstatusRet;
\r
423 extern short imageX0,imageX1;
\r
424 extern short imageY0,imageY1;
\r
425 extern long lClearOnSwap,lClearOnSwapColor;
\r
426 extern unsigned char * psxVub;
\r
427 extern char * psxVsb;
\r
428 extern unsigned short * psxVuw;
\r
429 extern signed short * psxVsw;
\r
430 extern unsigned long * psxVul;
\r
431 extern signed long * psxVsl;
\r
432 extern GLfloat gl_z;
\r
433 extern BOOL bNeedRGB24Update;
\r
434 extern BOOL bChangeWinMode;
\r
435 extern GLuint uiScanLine;
\r
436 extern int iUseScanLines;
\r
437 extern long lSelectedSlot;
\r
438 extern int iScanBlend;
\r
439 extern BOOL bInitCap;
\r
440 extern int iBlurBuffer;
\r
441 extern int iLastRGB24;
\r
442 extern int iRenderFVR;
\r
443 extern int iNoScreenSaver;
\r
444 extern unsigned long ulGPUInfoVals[];
\r
445 extern BOOL bNeedInterlaceUpdate;
\r
446 extern BOOL bNeedWriteUpload;
\r
447 extern BOOL bSkipNextFrame;
\r
451 extern int bFullScreen;
\r
456 //-----------------------------------------------------//
\r
460 //extern unsigned long dwCoreFlags;
\r
461 extern GLuint gTexPicName;
\r
462 //extern PSXPoint_t ptCursorPoint[];
\r
463 //extern unsigned short usCursorActive;
\r
467 //-----------------------------------------------------//
\r
472 extern char * pConfigFile;
\r
477 //-----------------------------------------------------//
\r
481 extern BOOL bUseFrameLimit;
\r
482 extern BOOL bUseFrameSkip;
\r
483 extern float fFrameRate;
\r
484 extern float fFrameRateHz;
\r
485 extern int iFrameLimit;
\r
486 extern float fps_skip;
\r
487 extern float fps_cur;
\r
491 //-----------------------------------------------------//
\r
538 //extern unsigned long ulKeybits;
\r
542 //-----------------------------------------------------//
\r
546 extern unsigned long dwGPUVersion;
\r
547 extern int iGPUHeight;
\r
548 extern int iGPUHeightMask;
\r
549 extern int GlobalTextIL;
\r
550 extern int iTileCheat;
\r
561 //-----------------------------------------------------//
\r