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
42 #pragma softfp_linkage
\r
44 #include <gles/gl.h> // for opengl es types
\r
46 #pragma no_softfp_linkage
\r
51 #ifdef MAEMO_CHANGES
\r
52 #include "../psxCommon.h"
\r
54 #include "psxCommon.h"
\r
58 #define glTexParameteri(x,y,z) glTexParameterf(x,y,z)
\r
59 #define glAlphaFuncx(x,y) glAlphaFunc(x,y)
\r
63 extern void ( APIENTRY * glPixelStorei )(GLenum pname, GLint param);
\r
67 #define MIRROR_TEST 1
\r
69 /////////////////////////////////////////////////////////////////////////////
\r
71 #define SCISSOR_TEST 1
\r
73 /////////////////////////////////////////////////////////////////////////////
\r
75 // for own sow/tow scaling
\r
78 /////////////////////////////////////////////////////////////////////////////
\r
80 #define CLUTUSED 0x80000000
\r
81 //glColor4ubv(x.c.col)
\r
82 #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
83 //#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
86 #define INFO_DRAWSTART 1
\r
87 #define INFO_DRAWEND 2
\r
88 #define INFO_DRAWOFF 3
\r
90 #define SIGNSHIFT 21
\r
91 #define CHKMAX_X 1024
\r
92 #define CHKMAX_Y 512
\r
94 /////////////////////////////////////////////////////////////////////////////
\r
96 // GPU STATUS REGISTER bit values (c) Lewpy
\r
99 #define DR_VRAMTRANSFER 1
\r
101 #define GPUSTATUS_ODDLINES 0x80000000
\r
102 #define GPUSTATUS_DMABITS 0x60000000 // Two bits
\r
103 #define GPUSTATUS_READYFORCOMMANDS 0x10000000
\r
104 #define GPUSTATUS_READYFORVRAM 0x08000000
\r
105 #define GPUSTATUS_IDLE 0x04000000
\r
106 #define GPUSTATUS_DISPLAYDISABLED 0x00800000
\r
107 #define GPUSTATUS_INTERLACED 0x00400000
\r
108 #define GPUSTATUS_RGB24 0x00200000
\r
109 #define GPUSTATUS_PAL 0x00100000
\r
110 #define GPUSTATUS_DOUBLEHEIGHT 0x00080000
\r
111 #define GPUSTATUS_WIDTHBITS 0x00070000 // Three bits
\r
112 #define GPUSTATUS_MASKENABLED 0x00001000
\r
113 #define GPUSTATUS_MASKDRAWN 0x00000800
\r
114 #define GPUSTATUS_DRAWINGALLOWED 0x00000400
\r
115 #define GPUSTATUS_DITHER 0x00000200
\r
117 #define STATUSREG lGPUstatusRet
\r
119 #define GPUIsBusy (STATUSREG &= ~GPUSTATUS_IDLE)
\r
120 #define GPUIsIdle (STATUSREG |= GPUSTATUS_IDLE)
\r
122 #define GPUIsNotReadyForCommands (STATUSREG &= ~GPUSTATUS_READYFORCOMMANDS)
\r
123 #define GPUIsReadyForCommands (STATUSREG |= GPUSTATUS_READYFORCOMMANDS)
\r
125 /////////////////////////////////////////////////////////////////////////////
\r
127 #define KEY_RESETTEXSTORE 1
\r
128 #define KEY_SHOWFPS 2
\r
129 #define KEY_RESETOPAQUE 4
\r
130 #define KEY_RESETDITHER 8
\r
131 #define KEY_RESETFILTER 16
\r
132 #define KEY_RESETADVBLEND 32
\r
133 #define KEY_BLACKWHITE 64
\r
134 #define KEY_TOGGLEFBTEXTURE 128
\r
135 #define KEY_STEPDOWN 256
\r
136 #define KEY_TOGGLEFBREAD 512
\r
138 /////////////////////////////////////////////////////////////////////////////
\r
139 // Linux is missing some stuff, eh? ;)
\r
149 #define BOOL unsigned short
\r
152 #define bool unsigned short
\r
154 #define LOWORD(l) ((unsigned short)(l))
\r
155 #define HIWORD(l) ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))
\r
156 #define max(a,b) (((a) > (b)) ? (a) : (b))
\r
157 #define min(a,b) (((a) < (b)) ? (a) : (b))
\r
158 #define DWORD unsigned long
\r
160 typedef struct RECTTAG
\r
170 /////////////////////////////////////////////////////////////////////////////
\r
172 typedef struct VRAMLOADTAG
\r
178 short RowsRemaining;
\r
179 short ColsRemaining;
\r
180 unsigned short *ImagePtr;
\r
183 typedef struct PSXPOINTTAG
\r
189 typedef struct PSXSPOINTTAG
\r
195 typedef struct PSXRECTTAG
\r
203 /////////////////////////////////////////////////////////////////////////////
\r
205 typedef struct TWINTAG
\r
207 PSXRect_t Position;
\r
208 PSXRect_t OPosition;
\r
209 PSXPoint_t TextureSize;
\r
210 float UScaleFactor;
\r
211 float VScaleFactor;
\r
214 /////////////////////////////////////////////////////////////////////////////
\r
216 typedef struct PSXDISPLAYTAG
\r
218 PSXPoint_t DisplayModeNew;
\r
219 PSXPoint_t DisplayMode;
\r
220 PSXPoint_t DisplayPosition;
\r
221 PSXPoint_t DisplayEnd;
\r
226 long InterlacedNew;
\r
228 long InterlacedTest;
\r
231 PSXSPoint_t DrawOffset;
\r
232 PSXRect_t DrawArea;
\r
233 PSXPoint_t GDrawOffset;
\r
234 PSXPoint_t CumulOffset;
\r
239 /////////////////////////////////////////////////////////////////////////////
\r
241 typedef struct OGLVertexTag
\r
254 unsigned long lcol;
\r
259 typedef union EXShortTag
\r
265 typedef union EXLongTag
\r
273 /////////////////////////////////////////////////////////////////////////////
\r
277 extern HINSTANCE hInst;
\r
281 //-----------------------------------------------------//
\r
287 extern BOOL bKeepRatio;
\r
288 extern RECT rRatioRect;
\r
289 extern BOOL bOpaquePass;
\r
290 extern BOOL bAdvancedBlend;
\r
292 //extern PFNGLBLENDEQU glBlendEquationEXTEx;
\r
293 //extern PFNGLCOLORTABLEEXT glColorTableEXTEx;
\r
295 extern u8 gl_ux[8];
\r
296 extern u8 gl_vy[8];
\r
297 extern OGLVertex vertex[4];
\r
298 extern short sprtY,sprtX,sprtH,sprtW;
\r
300 extern HWND hWWindow;
\r
302 extern BOOL bIsFirstFrame;
\r
303 extern int iWinSize;
\r
304 extern int iZBufferDepth;
\r
305 extern GLbitfield uiBufferBits;
\r
306 extern int iUseMask;
\r
307 extern int iSetMask;
\r
308 extern int iDepthFunc;
\r
309 extern BOOL bCheckMask;
\r
310 extern unsigned short sSetMask;
\r
311 extern unsigned long lSetMask;
\r
312 extern BOOL bSetClip;
\r
313 extern GLuint gTexScanName;
\r
317 //-----------------------------------------------------//
\r
321 extern long GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
\r
322 extern long GlobalTextREST,GlobalTextABR,GlobalTextPAGE;
\r
323 extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;
\r
327 extern short DrawSemiTrans;
\r
331 //-----------------------------------------------------//
\r
333 #ifndef _IN_PRIMDRAW
\r
335 extern BOOL bNeedUploadTest;
\r
336 extern BOOL bNeedUploadAfter;
\r
337 extern BOOL bTexEnabled;
\r
338 extern BOOL bBlendEnable;
\r
339 extern BOOL bDrawDither;
\r
340 extern int iFilterType;
\r
341 extern BOOL bFullVRam;
\r
342 extern BOOL bUseMultiPass;
\r
343 extern int iOffscreenDrawing;
\r
344 extern BOOL bOldSmoothShaded;
\r
345 extern BOOL bUsingTWin;
\r
346 extern BOOL bUsingMovie;
\r
347 extern PSXRect_t xrMovieArea;
\r
348 extern PSXRect_t xrUploadArea;
\r
349 extern PSXRect_t xrUploadAreaIL;
\r
350 extern PSXRect_t xrUploadAreaRGB24;
\r
351 extern GLuint gTexName;
\r
352 extern BOOL bDrawNonShaded;
\r
353 extern BOOL bDrawMultiPass;
\r
354 extern GLubyte ubGloColAlpha;
\r
355 extern GLubyte ubGloAlpha;
\r
356 extern short sSprite_ux2;
\r
357 extern short sSprite_vy2;
\r
358 extern BOOL bRenderFrontBuffer;
\r
359 extern unsigned long ulOLDCOL;
\r
360 extern unsigned long ulClutID;
\r
361 extern void (*primTableJ[256])(u8 *);
\r
362 extern void (*primTableSkip[256])(u8 *);
\r
363 extern unsigned short usMirror;
\r
364 extern unsigned long dwCfgFixes;
\r
365 extern unsigned long dwActFixes;
\r
366 extern unsigned long dwEmuFixes;
\r
367 extern BOOL bUseFixes;
\r
368 extern int iSpriteTex;
\r
369 extern int iDrawnSomething;
\r
375 extern short sxmin;
\r
376 extern short sxmax;
\r
377 extern short symin;
\r
378 extern short symax;
\r
382 //-----------------------------------------------------//
\r
384 #ifndef _IN_TEXTURE
\r
386 extern u8 ubOpaqueDraw;
\r
387 extern GLint giWantedRGBA;
\r
388 extern GLint giWantedFMT;
\r
389 extern GLint giWantedTYPE;
\r
390 extern void (*LoadSubTexFn) (int,int,short,short);
\r
391 extern long GlobalTexturePage;
\r
392 extern unsigned long (*TCF[]) (unsigned long);
\r
393 extern unsigned short (*PTCF[]) (unsigned short);
\r
394 extern unsigned long (*PalTexturedColourFn) (unsigned long);
\r
395 extern BOOL bUseFastMdec;
\r
396 extern BOOL bUse15bitMdec;
\r
397 extern int iFrameTexType;
\r
398 extern int iFrameReadType;
\r
399 extern int iClampType;
\r
400 extern int iSortTexCnt;
\r
401 extern BOOL bFakeFrontBuffer;
\r
402 extern GLuint gTexFrameName;
\r
403 extern GLuint gTexBlurName;
\r
404 extern int iVRamSize;
\r
405 extern int iTexGarbageCollection;
\r
408 extern BOOL bIgnoreNextTile;
\r
413 //-----------------------------------------------------//
\r
417 extern VRAMLoad_t VRAMWrite;
\r
418 extern VRAMLoad_t VRAMRead;
\r
419 extern int iDataWriteMode;
\r
420 extern int iDataReadMode;
\r
421 extern int iColDepth;
\r
422 extern BOOL bChangeRes;
\r
423 extern BOOL bWindowMode;
\r
424 extern s8 szDispBuf[];
\r
425 extern s8 szGPUKeys[];
\r
426 extern PSXDisplay_t PSXDisplay;
\r
427 extern PSXDisplay_t PreviousPSXDisplay;
\r
428 //extern unsigned long ulKeybits;
\r
429 extern TWin_t TWin;
\r
430 extern BOOL bDisplayNotSet;
\r
431 extern long lGPUstatusRet;
\r
432 extern short imageX0,imageX1;
\r
433 extern short imageY0,imageY1;
\r
434 extern long lClearOnSwap,lClearOnSwapColor;
\r
435 extern u8 * psxVub;
\r
436 extern s8 * psxVsb;
\r
437 extern unsigned short * psxVuw;
\r
438 extern signed short * psxVsw;
\r
439 extern unsigned long * psxVul;
\r
440 extern signed long * psxVsl;
\r
441 extern GLfloat gl_z;
\r
442 extern BOOL bNeedRGB24Update;
\r
443 extern BOOL bChangeWinMode;
\r
444 extern GLuint uiScanLine;
\r
445 extern int iUseScanLines;
\r
446 extern long lSelectedSlot;
\r
447 extern int iScanBlend;
\r
448 extern BOOL bInitCap;
\r
449 extern int iBlurBuffer;
\r
450 extern int iLastRGB24;
\r
451 extern int iRenderFVR;
\r
452 extern int iNoScreenSaver;
\r
453 extern unsigned long ulGPUInfoVals[];
\r
454 extern BOOL bNeedInterlaceUpdate;
\r
455 extern BOOL bNeedWriteUpload;
\r
456 extern BOOL bSkipNextFrame;
\r
460 extern int bFullScreen;
\r
465 //-----------------------------------------------------//
\r
469 //extern unsigned long dwCoreFlags;
\r
470 extern GLuint gTexPicName;
\r
471 //extern PSXPoint_t ptCursorPoint[];
\r
472 //extern unsigned short usCursorActive;
\r
476 //-----------------------------------------------------//
\r
481 extern s8 * pConfigFile;
\r
486 //-----------------------------------------------------//
\r
490 extern BOOL bUseFrameLimit;
\r
491 extern BOOL bUseFrameSkip;
\r
492 extern float fFrameRate;
\r
493 extern float fFrameRateHz;
\r
494 extern int iFrameLimit;
\r
495 extern float fps_skip;
\r
496 extern float fps_cur;
\r
500 //-----------------------------------------------------//
\r
547 //extern unsigned long ulKeybits;
\r
551 //-----------------------------------------------------//
\r
555 extern unsigned long dwGPUVersion;
\r
556 extern int iGPUHeight;
\r
557 extern int iGPUHeightMask;
\r
558 extern int GlobalTextIL;
\r
559 extern int iTileCheat;
\r
570 //-----------------------------------------------------//
\r