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 |
33 | extern "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 |
57 | extern 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 |
154 | typedef 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 |
166 | typedef 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 |
177 | typedef struct PSXPOINTTAG\r |
178 | {\r |
179 | long x;\r |
180 | long y;\r |
181 | } PSXPoint_t;\r |
182 | \r |
183 | typedef struct PSXSPOINTTAG\r |
184 | {\r |
185 | short x;\r |
186 | short y;\r |
187 | } PSXSPoint_t;\r |
188 | \r |
189 | typedef 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 |
199 | typedef 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 |
210 | typedef 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 |
235 | typedef 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 |
245 | COLTAG\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 |
253 | typedef union EXShortTag\r |
254 | {\r |
677ea103 |
255 | unsigned char c[2];\r |
ce879073 |
256 | unsigned short s;\r |
257 | } EXShort;\r |
258 | \r |
259 | typedef 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 |
271 | extern HINSTANCE hInst;\r |
272 | \r |
273 | #endif\r |
274 | \r |
275 | //-----------------------------------------------------//\r |
276 | \r |
277 | #ifndef _IN_DRAW\r |
278 | \r |
279 | extern int iResX;\r |
280 | extern int iResY;\r |
281 | extern BOOL bKeepRatio;\r |
282 | extern RECT rRatioRect;\r |
283 | extern BOOL bOpaquePass;\r |
284 | extern BOOL bAdvancedBlend;\r |
285 | \r |
286 | //extern PFNGLBLENDEQU glBlendEquationEXTEx;\r |
287 | //extern PFNGLCOLORTABLEEXT glColorTableEXTEx;\r |
288 | \r |
677ea103 |
289 | extern unsigned char gl_ux[8];\r |
290 | extern unsigned char gl_vy[8];\r |
ce879073 |
291 | extern OGLVertex vertex[4];\r |
292 | extern short sprtY,sprtX,sprtH,sprtW;\r |
293 | #ifdef _WINDOWS\r |
294 | extern HWND hWWindow;\r |
295 | #endif\r |
296 | extern BOOL bIsFirstFrame;\r |
297 | extern int iWinSize;\r |
298 | extern int iZBufferDepth;\r |
299 | extern GLbitfield uiBufferBits;\r |
300 | extern int iUseMask;\r |
301 | extern int iSetMask;\r |
302 | extern int iDepthFunc;\r |
303 | extern BOOL bCheckMask;\r |
304 | extern unsigned short sSetMask;\r |
305 | extern unsigned long lSetMask;\r |
306 | extern BOOL bSetClip;\r |
307 | extern GLuint gTexScanName;\r |
308 | \r |
309 | #endif\r |
310 | \r |
311 | //-----------------------------------------------------//\r |
312 | \r |
313 | #ifndef _IN_SOFT\r |
314 | \r |
315 | extern long GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;\r |
316 | extern long GlobalTextREST,GlobalTextABR,GlobalTextPAGE;\r |
317 | extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;\r |
318 | extern short g_m1;\r |
319 | extern short g_m2;\r |
320 | extern short g_m3;\r |
321 | extern short DrawSemiTrans;\r |
322 | \r |
323 | #endif\r |
324 | \r |
325 | //-----------------------------------------------------//\r |
326 | \r |
327 | #ifndef _IN_PRIMDRAW\r |
328 | \r |
329 | extern BOOL bNeedUploadTest;\r |
330 | extern BOOL bNeedUploadAfter;\r |
331 | extern BOOL bTexEnabled;\r |
332 | extern BOOL bBlendEnable;\r |
333 | extern BOOL bDrawDither;\r |
334 | extern int iFilterType; \r |
335 | extern BOOL bFullVRam;\r |
336 | extern BOOL bUseMultiPass;\r |
337 | extern int iOffscreenDrawing;\r |
338 | extern BOOL bOldSmoothShaded;\r |
339 | extern BOOL bUsingTWin;\r |
340 | extern BOOL bUsingMovie;\r |
341 | extern PSXRect_t xrMovieArea;\r |
342 | extern PSXRect_t xrUploadArea;\r |
343 | extern PSXRect_t xrUploadAreaIL;\r |
344 | extern PSXRect_t xrUploadAreaRGB24;\r |
345 | extern GLuint gTexName;\r |
346 | extern BOOL bDrawNonShaded;\r |
347 | extern BOOL bDrawMultiPass;\r |
348 | extern GLubyte ubGloColAlpha;\r |
349 | extern GLubyte ubGloAlpha;\r |
350 | extern short sSprite_ux2;\r |
351 | extern short sSprite_vy2;\r |
352 | extern BOOL bRenderFrontBuffer;\r |
353 | extern unsigned long ulOLDCOL;\r |
354 | extern unsigned long ulClutID;\r |
677ea103 |
355 | extern void (*primTableJ[256])(unsigned char *);\r |
356 | extern void (*primTableSkip[256])(unsigned char *);\r |
ce879073 |
357 | extern unsigned short usMirror;\r |
358 | extern unsigned long dwCfgFixes;\r |
359 | extern unsigned long dwActFixes;\r |
360 | extern unsigned long dwEmuFixes;\r |
361 | extern BOOL bUseFixes;\r |
362 | extern int iSpriteTex;\r |
363 | extern int iDrawnSomething;\r |
364 | \r |
365 | extern long drawX;\r |
366 | extern long drawY;\r |
367 | extern long drawW;\r |
368 | extern long drawH;\r |
369 | extern short sxmin;\r |
370 | extern short sxmax;\r |
371 | extern short symin;\r |
372 | extern short symax;\r |
373 | \r |
374 | #endif\r |
375 | \r |
376 | //-----------------------------------------------------//\r |
377 | \r |
378 | #ifndef _IN_TEXTURE\r |
379 | \r |
677ea103 |
380 | extern unsigned char ubOpaqueDraw;\r |
ce879073 |
381 | extern GLint giWantedRGBA;\r |
382 | extern GLint giWantedFMT;\r |
383 | extern GLint giWantedTYPE;\r |
384 | extern void (*LoadSubTexFn) (int,int,short,short);\r |
385 | extern long GlobalTexturePage;\r |
386 | extern unsigned long (*TCF[]) (unsigned long);\r |
387 | extern unsigned short (*PTCF[]) (unsigned short);\r |
388 | extern unsigned long (*PalTexturedColourFn) (unsigned long);\r |
389 | extern BOOL bUseFastMdec;\r |
390 | extern BOOL bUse15bitMdec;\r |
391 | extern int iFrameTexType;\r |
392 | extern int iFrameReadType;\r |
393 | extern int iClampType;\r |
394 | extern int iSortTexCnt;\r |
395 | extern BOOL bFakeFrontBuffer; \r |
396 | extern GLuint gTexFrameName;\r |
397 | extern GLuint gTexBlurName;\r |
398 | extern int iVRamSize;\r |
399 | extern int iTexGarbageCollection;\r |
400 | extern int iFTexA;\r |
401 | extern int iFTexB;\r |
402 | extern BOOL bIgnoreNextTile;\r |
403 | \r |
404 | \r |
405 | #endif\r |
406 | \r |
407 | //-----------------------------------------------------//\r |
408 | \r |
409 | #ifndef _IN_GPU\r |
410 | \r |
411 | extern VRAMLoad_t VRAMWrite;\r |
412 | extern VRAMLoad_t VRAMRead;\r |
413 | extern int iDataWriteMode;\r |
414 | extern int iDataReadMode;\r |
415 | extern int iColDepth;\r |
416 | extern BOOL bChangeRes;\r |
417 | extern BOOL bWindowMode;\r |
677ea103 |
418 | extern char szDispBuf[];\r |
419 | extern char szGPUKeys[];\r |
ce879073 |
420 | extern PSXDisplay_t PSXDisplay;\r |
421 | extern PSXDisplay_t PreviousPSXDisplay;\r |
422 | //extern unsigned long ulKeybits;\r |
423 | extern TWin_t TWin;\r |
424 | extern BOOL bDisplayNotSet;\r |
425 | extern long lGPUstatusRet;\r |
426 | extern short imageX0,imageX1;\r |
427 | extern short imageY0,imageY1;\r |
428 | extern long lClearOnSwap,lClearOnSwapColor;\r |
677ea103 |
429 | extern unsigned char * psxVub;\r |
430 | extern char * psxVsb;\r |
ce879073 |
431 | extern unsigned short * psxVuw;\r |
432 | extern signed short * psxVsw;\r |
433 | extern unsigned long * psxVul;\r |
434 | extern signed long * psxVsl;\r |
435 | extern GLfloat gl_z;\r |
436 | extern BOOL bNeedRGB24Update;\r |
437 | extern BOOL bChangeWinMode;\r |
438 | extern GLuint uiScanLine;\r |
439 | extern int iUseScanLines;\r |
440 | extern long lSelectedSlot;\r |
441 | extern int iScanBlend;\r |
442 | extern BOOL bInitCap;\r |
443 | extern int iBlurBuffer;\r |
444 | extern int iLastRGB24;\r |
445 | extern int iRenderFVR;\r |
446 | extern int iNoScreenSaver;\r |
447 | extern unsigned long ulGPUInfoVals[];\r |
448 | extern BOOL bNeedInterlaceUpdate;\r |
449 | extern BOOL bNeedWriteUpload;\r |
450 | extern BOOL bSkipNextFrame;\r |
451 | \r |
452 | \r |
453 | #ifndef _WINDOWS\r |
454 | extern 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 |
464 | extern 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 |
475 | extern 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 |
484 | extern BOOL bUseFrameLimit;\r |
485 | extern BOOL bUseFrameSkip;\r |
486 | extern float fFrameRate;\r |
487 | extern float fFrameRateHz;\r |
488 | extern int iFrameLimit;\r |
489 | extern float fps_skip;\r |
490 | extern float fps_cur;\r |
491 | \r |
492 | #endif\r |
493 | \r |
494 | //-----------------------------------------------------//\r |
495 | \r |
496 | typedef struct {\r |
677ea103 |
497 | unsigned char r;\r |
498 | unsigned char g;\r |
499 | unsigned char b;\r |
500 | unsigned char a;\r |
ce879073 |
501 | } Vec4f;\r |
502 | \r |
503 | /**/\r |
504 | typedef struct {\r |
505 | float x;\r |
506 | float y;\r |
507 | float z;\r |
508 | } Vec3f;\r |
509 | \r |
510 | typedef struct {\r |
511 | float x;\r |
512 | float y;\r |
513 | } Vec2f;\r |
514 | \r |
515 | /*\r |
516 | typedef struct {\r |
517 | int x;\r |
518 | int y;\r |
519 | int z;\r |
520 | } Vec3f;\r |
521 | \r |
522 | typedef struct {\r |
523 | int x;\r |
524 | int y;\r |
525 | } Vec2f;\r |
7eadbf88 |
526 | */\r |
ce879073 |
527 | \r |
528 | typedef struct {\r |
529 | Vec3f xyz;\r |
530 | Vec2f st;\r |
531 | } Vertex;\r |
532 | \r |
533 | typedef 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 |
549 | extern unsigned long dwGPUVersion;\r |
550 | extern int iGPUHeight;\r |
551 | extern int iGPUHeightMask;\r |
552 | extern int GlobalTextIL;\r |
553 | extern 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 |