8ce2b9148e36d13207df0caa06079f0aa71beaa6
[pcsx_rearmed.git] / plugins / peopsxgl / externals.h
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