pcsxr-1.9.92
[pcsx_rearmed.git] / plugins / dfxvideo / externals.h
1 /***************************************************************************
2                         externals.h -  description
3                              -------------------
4     begin                : Sun Oct 28 2001
5     copyright            : (C) 2001 by Pete Bernert
6     email                : BlackDove@addcom.de
7  ***************************************************************************/
8 /***************************************************************************
9  *                                                                         *
10  *   This program is free software; you can redistribute it and/or modify  *
11  *   it under the terms of the GNU General Public License as published by  *
12  *   the Free Software Foundation; either version 2 of the License, or     *
13  *   (at your option) any later version. See also the license.txt file for *
14  *   additional informations.                                              *
15  *                                                                         *
16  ***************************************************************************/
17
18 #define INFO_TW        0
19 #define INFO_DRAWSTART 1
20 #define INFO_DRAWEND   2
21 #define INFO_DRAWOFF   3
22
23 #define SHADETEXBIT(x) ((x>>24) & 0x1)
24 #define SEMITRANSBIT(x) ((x>>25) & 0x1)
25 #define PSXRGB(r,g,b) ((g<<10)|(b<<5)|r)
26
27 #define DATAREGISTERMODES unsigned short
28
29 #define DR_NORMAL        0
30 #define DR_VRAMTRANSFER  1
31
32
33 #define GPUSTATUS_ODDLINES            0x80000000
34 #define GPUSTATUS_DMABITS             0x60000000 // Two bits
35 #define GPUSTATUS_READYFORCOMMANDS    0x10000000
36 #define GPUSTATUS_READYFORVRAM        0x08000000
37 #define GPUSTATUS_IDLE                0x04000000
38 #define GPUSTATUS_DISPLAYDISABLED     0x00800000
39 #define GPUSTATUS_INTERLACED          0x00400000
40 #define GPUSTATUS_RGB24               0x00200000
41 #define GPUSTATUS_PAL                 0x00100000
42 #define GPUSTATUS_DOUBLEHEIGHT        0x00080000
43 #define GPUSTATUS_WIDTHBITS           0x00070000 // Three bits
44 #define GPUSTATUS_MASKENABLED         0x00001000
45 #define GPUSTATUS_MASKDRAWN           0x00000800
46 #define GPUSTATUS_DRAWINGALLOWED      0x00000400
47 #define GPUSTATUS_DITHER              0x00000200
48
49 #define GPUIsBusy (lGPUstatusRet &= ~GPUSTATUS_IDLE)
50 #define GPUIsIdle (lGPUstatusRet |= GPUSTATUS_IDLE)
51
52 #define GPUIsNotReadyForCommands (lGPUstatusRet &= ~GPUSTATUS_READYFORCOMMANDS)
53 #define GPUIsReadyForCommands (lGPUstatusRet |= GPUSTATUS_READYFORCOMMANDS)
54
55 #define __X11_C_
56 //X11 render
57 #define __inline inline
58 #define CALLBACK
59
60 #include <stdio.h>
61 #include <stdlib.h>
62 #include <string.h>
63 #include <sys/time.h>
64 #ifndef _MACGL
65 #include <X11/Xlib.h>
66 #include <X11/Xutil.h>
67 #endif
68 #include <math.h>
69 #include <X11/cursorfont.h>
70 #include <stdint.h>
71
72 /////////////////////////////////////////////////////////////////////////////
73
74 typedef struct VRAMLOADTTAG
75 {
76  short x;
77  short y;
78  short Width;
79  short Height;
80  short RowsRemaining;
81  short ColsRemaining;
82  unsigned short *ImagePtr;
83 } VRAMLoad_t;
84
85 /////////////////////////////////////////////////////////////////////////////
86
87 typedef struct PSXPOINTTAG
88 {
89  int32_t x;
90  int32_t y;
91 } PSXPoint_t;
92
93 typedef struct PSXSPOINTTAG
94 {
95  short x;
96  short y;
97 } PSXSPoint_t;
98
99 typedef struct PSXRECTTAG
100 {
101  short x0;
102  short x1;
103  short y0;
104  short y1;
105 } PSXRect_t;
106
107 // linux defines for some windows stuff
108
109 #define FALSE 0
110 #define TRUE 1
111 #define BOOL unsigned short
112 #define LOWORD(l)           ((unsigned short)(l))
113 #define HIWORD(l)           ((unsigned short)(((uint32_t)(l) >> 16) & 0xFFFF))
114 #define max(a,b)            (((a) > (b)) ? (a) : (b))
115 #define min(a,b)            (((a) < (b)) ? (a) : (b))
116 #define DWORD uint32_t
117 #define __int64 long long int 
118
119 typedef struct RECTTAG
120 {
121  int left;
122  int top;
123  int right;
124  int bottom;
125 }RECT;
126
127
128
129 /////////////////////////////////////////////////////////////////////////////
130
131 typedef struct TWINTAG
132 {
133  PSXRect_t  Position;
134 } TWin_t;
135
136 /////////////////////////////////////////////////////////////////////////////
137
138 typedef struct PSXDISPLAYTAG
139 {
140  PSXPoint_t  DisplayModeNew;
141  PSXPoint_t  DisplayMode;
142  PSXPoint_t  DisplayPosition;
143  PSXPoint_t  DisplayEnd;
144  
145  int32_t        Double;
146  int32_t        Height;
147  int32_t        PAL;
148  int32_t        InterlacedNew;
149  int32_t        Interlaced;
150  int32_t        RGB24New;
151  int32_t        RGB24;
152  PSXSPoint_t DrawOffset;
153  int32_t        Disabled;
154  PSXRect_t   Range;
155
156 } PSXDisplay_t;
157
158 /////////////////////////////////////////////////////////////////////////////
159
160 // draw.c
161
162 #ifndef _IN_DRAW
163
164 extern char *         pCaptionText;
165
166 extern int            iResX;
167 extern int            iResY;
168 extern int32_t           GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
169 extern int32_t           GlobalTextREST,GlobalTextABR,GlobalTextPAGE;
170 extern short          ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;
171 extern long           lLowerpart;
172 extern BOOL           bIsFirstFrame;
173 extern int            iWinSize;
174 extern BOOL           bCheckMask;
175 extern unsigned short sSetMask;
176 extern unsigned long  lSetMask;
177 extern BOOL           bDeviceOK;
178 extern short          g_m1;
179 extern short          g_m2;
180 extern short          g_m3;
181 extern short          DrawSemiTrans;
182 extern int            iUseGammaVal;
183 extern int            iMaintainAspect;
184 extern int            iDesktopCol;
185 extern int            iUseNoStretchBlt;
186 extern int            iShowFPS;
187 extern int            iFastFwd;
188 extern int            iDebugMode;
189 extern int            iFVDisplay;
190 extern PSXPoint_t     ptCursorPoint[];
191 extern unsigned short usCursorActive;
192
193
194 #endif
195
196 // prim.c
197
198 #ifndef _IN_PRIMDRAW
199
200 extern BOOL           bUsingTWin;
201 extern TWin_t         TWin;
202 //extern unsigned long  clutid;
203 extern void (*primTableJ[256])(unsigned char *);
204 extern void (*primTableSkip[256])(unsigned char *);
205 extern unsigned short  usMirror;
206 extern int            iDither;
207 extern uint32_t  dwCfgFixes;
208 extern uint32_t  dwActFixes;
209 extern uint32_t  dwEmuFixes;
210 extern int            iUseFixes;
211 extern int            iUseDither;
212 extern BOOL           bDoVSyncUpdate;
213 extern int32_t           drawX;
214 extern int32_t           drawY;
215 extern int32_t           drawW;
216 extern int32_t           drawH;
217
218 #endif
219
220 // gpu.c
221
222 #ifndef _IN_GPU
223
224 extern VRAMLoad_t     VRAMWrite;
225 extern VRAMLoad_t     VRAMRead;
226 extern DATAREGISTERMODES DataWriteMode;
227 extern DATAREGISTERMODES DataReadMode;
228 extern int            iColDepth;
229 extern int            iWindowMode;
230 extern char           szDispBuf[];
231 extern char           szMenuBuf[];
232 extern char           szDebugText[];
233 extern short          sDispWidths[];
234 extern BOOL           bDebugText;
235 //extern unsigned int   iMaxDMACommandCounter;
236 //extern unsigned long  dwDMAChainStop;
237 extern PSXDisplay_t   PSXDisplay;
238 extern PSXDisplay_t   PreviousPSXDisplay;
239 extern BOOL           bSkipNextFrame;
240 extern long           lGPUstatusRet;
241 //extern long           drawingLines;
242 extern unsigned char  * psxVSecure;
243 extern unsigned char  * psxVub;
244 extern signed char    * psxVsb;
245 extern unsigned short * psxVuw;
246 extern signed short   * psxVsw;
247 extern uint32_t  * psxVul;
248 extern int32_t    * psxVsl;
249 extern unsigned short * psxVuw_eom;
250 extern BOOL           bChangeWinMode;
251 extern long           lSelectedSlot;
252 extern BOOL           bInitCap;
253 extern DWORD          dwLaceCnt;
254 extern uint32_t  lGPUInfoVals[];
255 extern uint32_t  ulStatusControl[];
256
257 #endif
258
259 // menu.c
260
261 #ifndef _IN_MENU
262
263 extern uint32_t dwCoreFlags;
264
265 #endif
266
267 // key.c
268
269 #ifndef _IN_KEY
270
271 extern unsigned long  ulKeybits;
272
273 #endif
274
275 // fps.c
276
277 #ifndef _IN_FPS
278
279 extern int            UseFrameLimit;
280 extern int            UseFrameSkip;
281 extern float          fFrameRate;
282 extern int            iFrameLimit;
283 extern float          fFrameRateHz;
284 extern float          fps_skip;
285 extern float          fps_cur;
286
287 #endif
288
289 // key.c
290
291 #ifndef _IN_KEY
292
293 #endif
294
295 // cfg.c
296
297 #ifndef _IN_CFG
298
299 extern char * pConfigFile;
300
301 #endif
302
303 // zn.c
304
305 #ifndef _IN_ZN
306
307 extern uint32_t dwGPUVersion;
308 extern int           iGPUHeight;
309 extern int           iGPUHeightMask;
310 extern int           GlobalTextIL;
311 extern int           iTileCheat;
312
313 #endif
314
315