gpu-gles: remove short types
[pcsx_rearmed.git] / plugins / gpu-gles / gpuExternals.h
CommitLineData
ce879073 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//*************************************************************************// \r
20// History of changes:\r
21//\r
22// 2009/03/08 - Pete \r
23// - generic cleanup for the Peops release\r
24//\r
25//*************************************************************************// \r
26\r
27/////////////////////////////////////////////////////////////////////////////\r
28\r
29#ifndef __GPU_EX__\r
30#define __GPU_EX__\r
31\r
32#ifdef __cplusplus\r
33extern "C" {\r
34#endif\r
7eadbf88 35\r
ce879073 36#ifndef _WINDOWS\r
37#ifdef __NANOGL__\r
38#include <gl/gl.h>\r
39#include <gl/egl.h>\r
40#else\r
41#ifdef SOFT_LINKAGE\r
42#pragma softfp_linkage\r
43#endif\r
7eadbf88 44#include <GLES/gl.h> // for opengl es types\r
ce879073 45#ifdef SOFT_LINKAGE\r
46#pragma no_softfp_linkage\r
47#endif\r
48#endif\r
49#endif\r
50\r
ce879073 51#ifdef __NANOGL__\r
52#define glTexParameteri(x,y,z) glTexParameterf(x,y,z) \r
53#define glAlphaFuncx(x,y) glAlphaFunc(x,y) \r
54#ifndef APIENTRY\r
55#define APIENTRY\r
56#endif\r
57extern void ( APIENTRY * glPixelStorei )(GLenum pname, GLint param);\r
58#endif\r
59\r
60\r
61#define MIRROR_TEST 1\r
62\r
63/////////////////////////////////////////////////////////////////////////////\r
64\r
65#define SCISSOR_TEST 1\r
66 \r
67/////////////////////////////////////////////////////////////////////////////\r
68\r
69// for own sow/tow scaling\r
70#define OWNSCALE 1\r
71\r
72/////////////////////////////////////////////////////////////////////////////\r
73\r
74#define CLUTUSED 0x80000000\r
75//glColor4ubv(x.c.col)\r
76#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
77//#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
78\r
79#define INFO_TW 0\r
80#define INFO_DRAWSTART 1\r
81#define INFO_DRAWEND 2\r
82#define INFO_DRAWOFF 3\r
83\r
84#define SIGNSHIFT 21\r
85#define CHKMAX_X 1024\r
86#define CHKMAX_Y 512\r
87\r
88/////////////////////////////////////////////////////////////////////////////\r
89\r
90// GPU STATUS REGISTER bit values (c) Lewpy\r
91\r
92#define DR_NORMAL 0\r
93#define DR_VRAMTRANSFER 1\r
94\r
95#define GPUSTATUS_ODDLINES 0x80000000\r
96#define GPUSTATUS_DMABITS 0x60000000 // Two bits\r
97#define GPUSTATUS_READYFORCOMMANDS 0x10000000\r
98#define GPUSTATUS_READYFORVRAM 0x08000000\r
99#define GPUSTATUS_IDLE 0x04000000\r
100#define GPUSTATUS_DISPLAYDISABLED 0x00800000\r
101#define GPUSTATUS_INTERLACED 0x00400000\r
102#define GPUSTATUS_RGB24 0x00200000\r
103#define GPUSTATUS_PAL 0x00100000\r
104#define GPUSTATUS_DOUBLEHEIGHT 0x00080000\r
105#define GPUSTATUS_WIDTHBITS 0x00070000 // Three bits\r
106#define GPUSTATUS_MASKENABLED 0x00001000\r
107#define GPUSTATUS_MASKDRAWN 0x00000800\r
108#define GPUSTATUS_DRAWINGALLOWED 0x00000400\r
109#define GPUSTATUS_DITHER 0x00000200\r
110\r
111#define STATUSREG lGPUstatusRet\r
112\r
113#define GPUIsBusy (STATUSREG &= ~GPUSTATUS_IDLE)\r
114#define GPUIsIdle (STATUSREG |= GPUSTATUS_IDLE)\r
115\r
116#define GPUIsNotReadyForCommands (STATUSREG &= ~GPUSTATUS_READYFORCOMMANDS)\r
117#define GPUIsReadyForCommands (STATUSREG |= GPUSTATUS_READYFORCOMMANDS)\r
118\r
119/////////////////////////////////////////////////////////////////////////////\r
120\r
121#define KEY_RESETTEXSTORE 1\r
122#define KEY_SHOWFPS 2\r
123#define KEY_RESETOPAQUE 4\r
124#define KEY_RESETDITHER 8\r
125#define KEY_RESETFILTER 16\r
126#define KEY_RESETADVBLEND 32\r
127#define KEY_BLACKWHITE 64\r
128#define KEY_TOGGLEFBTEXTURE 128\r
129#define KEY_STEPDOWN 256\r
130#define KEY_TOGGLEFBREAD 512\r
131\r
132/////////////////////////////////////////////////////////////////////////////\r
133// Linux is missing some stuff, eh? ;)\r
134\r
135#ifndef _WINDOWS\r
136#ifndef FALSE\r
137#define FALSE 0\r
138#endif\r
139#ifndef TRUE\r
140#define TRUE 1\r
141#endif\r
142#ifndef BOOL\r
143#define BOOL unsigned short\r
144#endif\r
145#ifndef bool\r
146#define bool unsigned short\r
147#endif\r
148#define LOWORD(l) ((unsigned short)(l))\r
149#define HIWORD(l) ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))\r
150#define max(a,b) (((a) > (b)) ? (a) : (b))\r
151#define min(a,b) (((a) < (b)) ? (a) : (b))\r
152#define DWORD unsigned long\r
153\r
154typedef struct RECTTAG\r
155{\r
156 int left;\r
157 int top;\r
158 int right;\r
159 int bottom;\r
160}RECT;\r
161\r
162#endif\r
163\r
164/////////////////////////////////////////////////////////////////////////////\r
165\r
166typedef struct VRAMLOADTAG\r
167{\r
168 short x;\r
169 short y;\r
170 short Width;\r
171 short Height;\r
172 short RowsRemaining;\r
173 short ColsRemaining;\r
174 unsigned short *ImagePtr;\r
175} VRAMLoad_t;\r
176\r
177typedef struct PSXPOINTTAG\r
178{\r
179 long x;\r
180 long y;\r
181} PSXPoint_t;\r
182\r
183typedef struct PSXSPOINTTAG\r
184{\r
185 short x;\r
186 short y;\r
187} PSXSPoint_t;\r
188\r
189typedef struct PSXRECTTAG\r
190{\r
191 short x0;\r
192 short x1;\r
193 short y0;\r
194 short y1;\r
195} PSXRect_t;\r
196\r
197/////////////////////////////////////////////////////////////////////////////\r
198\r
199typedef struct TWINTAG\r
200{\r
201 PSXRect_t Position;\r
202 PSXRect_t OPosition;\r
203 PSXPoint_t TextureSize;\r
204 float UScaleFactor;\r
205 float VScaleFactor;\r
206} TWin_t;\r
207\r
208/////////////////////////////////////////////////////////////////////////////\r
209\r
210typedef struct PSXDISPLAYTAG\r
211{\r
212 PSXPoint_t DisplayModeNew;\r
213 PSXPoint_t DisplayMode;\r
214 PSXPoint_t DisplayPosition;\r
215 PSXPoint_t DisplayEnd;\r
216 \r
217 long Double;\r
218 long Height;\r
219 long PAL;\r
220 long InterlacedNew;\r
221 long Interlaced;\r
222 long InterlacedTest;\r
223 long RGB24New;\r
224 long RGB24;\r
225 PSXSPoint_t DrawOffset;\r
226 PSXRect_t DrawArea;\r
227 PSXPoint_t GDrawOffset;\r
228 PSXPoint_t CumulOffset;\r
229 long Disabled;\r
230 PSXRect_t Range;\r
231} PSXDisplay_t;\r
232\r
233/////////////////////////////////////////////////////////////////////////////\r
234\r
235typedef struct OGLVertexTag \r
236{\r
237 GLfloat x;\r
238 GLfloat y;\r
239 GLfloat z;\r
240\r
241 GLfloat sow;\r
242 GLfloat tow;\r
243\r
244 union\r
245COLTAG\r
246 {\r
677ea103 247 unsigned char col[4];\r
ce879073 248 unsigned long lcol;\r
249 } c;\r
250\r
251} OGLVertex;\r
252\r
253typedef union EXShortTag\r
254{\r
677ea103 255 unsigned char c[2];\r
ce879073 256 unsigned short s;\r
257} EXShort;\r
258\r
259typedef union EXLongTag\r
260{\r
677ea103 261 unsigned char c[4];\r
ce879073 262 unsigned long l;\r
263 EXShort s[2];\r
264} EXLong;\r
265\r
266\r
267/////////////////////////////////////////////////////////////////////////////\r
268\r
269#ifdef _WINDOWS\r
270\r
271extern HINSTANCE hInst;\r
272\r
273#endif\r
274 \r
275//-----------------------------------------------------//\r
276\r
277#ifndef _IN_DRAW\r
278\r
279extern int iResX;\r
280extern int iResY;\r
281extern BOOL bKeepRatio;\r
282extern RECT rRatioRect;\r
283extern BOOL bOpaquePass;\r
284extern BOOL bAdvancedBlend;\r
285\r
286//extern PFNGLBLENDEQU glBlendEquationEXTEx;\r
287//extern PFNGLCOLORTABLEEXT glColorTableEXTEx;\r
288\r
677ea103 289extern unsigned char gl_ux[8];\r
290extern unsigned char gl_vy[8];\r
ce879073 291extern OGLVertex vertex[4];\r
292extern short sprtY,sprtX,sprtH,sprtW;\r
293#ifdef _WINDOWS\r
294extern HWND hWWindow;\r
295#endif\r
296extern BOOL bIsFirstFrame;\r
297extern int iWinSize;\r
298extern int iZBufferDepth;\r
299extern GLbitfield uiBufferBits;\r
300extern int iUseMask;\r
301extern int iSetMask;\r
302extern int iDepthFunc;\r
303extern BOOL bCheckMask;\r
304extern unsigned short sSetMask;\r
305extern unsigned long lSetMask;\r
306extern BOOL bSetClip;\r
307extern GLuint gTexScanName;\r
308\r
309#endif\r
310\r
311//-----------------------------------------------------//\r
312\r
313#ifndef _IN_SOFT\r
314\r
315extern long GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;\r
316extern long GlobalTextREST,GlobalTextABR,GlobalTextPAGE;\r
317extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;\r
318extern short g_m1;\r
319extern short g_m2;\r
320extern short g_m3;\r
321extern short DrawSemiTrans;\r
322\r
323#endif\r
324\r
325//-----------------------------------------------------//\r
326\r
327#ifndef _IN_PRIMDRAW\r
328\r
329extern BOOL bNeedUploadTest;\r
330extern BOOL bNeedUploadAfter;\r
331extern BOOL bTexEnabled;\r
332extern BOOL bBlendEnable;\r
333extern BOOL bDrawDither;\r
334extern int iFilterType; \r
335extern BOOL bFullVRam;\r
336extern BOOL bUseMultiPass;\r
337extern int iOffscreenDrawing;\r
338extern BOOL bOldSmoothShaded;\r
339extern BOOL bUsingTWin;\r
340extern BOOL bUsingMovie;\r
341extern PSXRect_t xrMovieArea;\r
342extern PSXRect_t xrUploadArea;\r
343extern PSXRect_t xrUploadAreaIL;\r
344extern PSXRect_t xrUploadAreaRGB24;\r
345extern GLuint gTexName;\r
346extern BOOL bDrawNonShaded;\r
347extern BOOL bDrawMultiPass;\r
348extern GLubyte ubGloColAlpha;\r
349extern GLubyte ubGloAlpha;\r
350extern short sSprite_ux2;\r
351extern short sSprite_vy2;\r
352extern BOOL bRenderFrontBuffer;\r
353extern unsigned long ulOLDCOL;\r
354extern unsigned long ulClutID;\r
677ea103 355extern void (*primTableJ[256])(unsigned char *);\r
356extern void (*primTableSkip[256])(unsigned char *);\r
ce879073 357extern unsigned short usMirror;\r
358extern unsigned long dwCfgFixes;\r
359extern unsigned long dwActFixes;\r
360extern unsigned long dwEmuFixes;\r
361extern BOOL bUseFixes;\r
362extern int iSpriteTex;\r
363extern int iDrawnSomething;\r
364\r
365extern long drawX;\r
366extern long drawY;\r
367extern long drawW;\r
368extern long drawH;\r
369extern short sxmin;\r
370extern short sxmax;\r
371extern short symin;\r
372extern short symax;\r
373\r
374#endif\r
375\r
376//-----------------------------------------------------//\r
377\r
378#ifndef _IN_TEXTURE\r
379\r
677ea103 380extern unsigned char ubOpaqueDraw;\r
ce879073 381extern GLint giWantedRGBA;\r
382extern GLint giWantedFMT;\r
383extern GLint giWantedTYPE;\r
384extern void (*LoadSubTexFn) (int,int,short,short);\r
385extern long GlobalTexturePage;\r
386extern unsigned long (*TCF[]) (unsigned long);\r
387extern unsigned short (*PTCF[]) (unsigned short);\r
388extern unsigned long (*PalTexturedColourFn) (unsigned long);\r
389extern BOOL bUseFastMdec;\r
390extern BOOL bUse15bitMdec;\r
391extern int iFrameTexType;\r
392extern int iFrameReadType;\r
393extern int iClampType;\r
394extern int iSortTexCnt;\r
395extern BOOL bFakeFrontBuffer; \r
396extern GLuint gTexFrameName;\r
397extern GLuint gTexBlurName;\r
398extern int iVRamSize;\r
399extern int iTexGarbageCollection;\r
400extern int iFTexA;\r
401extern int iFTexB;\r
402extern BOOL bIgnoreNextTile;\r
403\r
404\r
405#endif\r
406\r
407//-----------------------------------------------------//\r
408\r
409#ifndef _IN_GPU\r
410\r
411extern VRAMLoad_t VRAMWrite;\r
412extern VRAMLoad_t VRAMRead;\r
413extern int iDataWriteMode;\r
414extern int iDataReadMode;\r
415extern int iColDepth;\r
416extern BOOL bChangeRes;\r
417extern BOOL bWindowMode;\r
677ea103 418extern char szDispBuf[];\r
419extern char szGPUKeys[];\r
ce879073 420extern PSXDisplay_t PSXDisplay;\r
421extern PSXDisplay_t PreviousPSXDisplay;\r
422//extern unsigned long ulKeybits;\r
423extern TWin_t TWin;\r
424extern BOOL bDisplayNotSet;\r
425extern long lGPUstatusRet;\r
426extern short imageX0,imageX1;\r
427extern short imageY0,imageY1;\r
428extern long lClearOnSwap,lClearOnSwapColor;\r
677ea103 429extern unsigned char * psxVub;\r
430extern char * psxVsb;\r
ce879073 431extern unsigned short * psxVuw;\r
432extern signed short * psxVsw;\r
433extern unsigned long * psxVul;\r
434extern signed long * psxVsl;\r
435extern GLfloat gl_z;\r
436extern BOOL bNeedRGB24Update;\r
437extern BOOL bChangeWinMode;\r
438extern GLuint uiScanLine;\r
439extern int iUseScanLines;\r
440extern long lSelectedSlot;\r
441extern int iScanBlend;\r
442extern BOOL bInitCap;\r
443extern int iBlurBuffer;\r
444extern int iLastRGB24;\r
445extern int iRenderFVR;\r
446extern int iNoScreenSaver;\r
447extern unsigned long ulGPUInfoVals[];\r
448extern BOOL bNeedInterlaceUpdate;\r
449extern BOOL bNeedWriteUpload;\r
450extern BOOL bSkipNextFrame;\r
451\r
452\r
453#ifndef _WINDOWS\r
454extern int bFullScreen;\r
455#endif\r
456\r
457#endif\r
458\r
459//-----------------------------------------------------//\r
460\r
461#ifndef _IN_MENU\r
462\r
463//extern unsigned long dwCoreFlags;\r
464extern GLuint gTexPicName;\r
465//extern PSXPoint_t ptCursorPoint[];\r
466//extern unsigned short usCursorActive;\r
467\r
468#endif\r
469\r
470//-----------------------------------------------------//\r
471\r
472#ifndef _IN_CFG\r
473\r
474#ifndef _WINDOWS\r
677ea103 475extern char * pConfigFile;\r
ce879073 476#endif\r
477\r
478#endif\r
479\r
480//-----------------------------------------------------//\r
481\r
482#ifndef _IN_FPS\r
483\r
484extern BOOL bUseFrameLimit;\r
485extern BOOL bUseFrameSkip;\r
486extern float fFrameRate;\r
487extern float fFrameRateHz;\r
488extern int iFrameLimit;\r
489extern float fps_skip;\r
490extern float fps_cur;\r
491\r
492#endif\r
493\r
494//-----------------------------------------------------//\r
495\r
496typedef struct {\r
677ea103 497unsigned char r;\r
498unsigned char g;\r
499unsigned char b;\r
500unsigned char a;\r
ce879073 501} Vec4f;\r
502\r
503/**/\r
504typedef struct {\r
505float x;\r
506float y;\r
507float z;\r
508} Vec3f;\r
509\r
510typedef struct {\r
511float x;\r
512float y;\r
513} Vec2f;\r
514\r
515/*\r
516typedef struct {\r
517int x;\r
518int y;\r
519int z;\r
520} Vec3f;\r
521\r
522typedef struct {\r
523int x;\r
524int y;\r
525} Vec2f;\r
7eadbf88 526*/\r
ce879073 527\r
528typedef struct {\r
529 Vec3f xyz;\r
530 Vec2f st;\r
531} Vertex;\r
532\r
533typedef struct {\r
534 Vec3f xyz;\r
535 Vec2f st;\r
536 Vec4f rgba;\r
537} Vertex2;\r
538\r
539#ifndef _IN_KEY\r
540\r
541//extern unsigned long ulKeybits;\r
542\r
543#endif\r
544\r
545//-----------------------------------------------------//\r
546\r
547#ifndef _IN_ZN\r
548\r
549extern unsigned long dwGPUVersion;\r
550extern int iGPUHeight;\r
551extern int iGPUHeightMask;\r
552extern int GlobalTextIL;\r
553extern int iTileCheat;\r
554\r
555#endif\r
556\r
557#ifdef __cplusplus\r
558}\r
559#endif\r
560\r
561\r
562#endif\r
563\r
564//-----------------------------------------------------//\r