drc: move constmap out of regstat
[pcsx_rearmed.git] / plugins / dfxvideo / gpu.h
index e8730f2..9ee5f3e 100644 (file)
  *                                                                         *
  ***************************************************************************/
 
-#ifndef _GPU_INTERNALS_H
-#define _GPU_INTERNALS_H
+#ifndef _PSX_GPU_
+#define _PSX_GPU_
+
+#define INFO_TW        0
+#define INFO_DRAWSTART 1
+#define INFO_DRAWEND   2
+#define INFO_DRAWOFF   3
+
+#define SHADETEXBIT(x) ((x>>24) & 0x1)
+#define SEMITRANSBIT(x) ((x>>25) & 0x1)
+#define PSXRGB(r,g,b) ((g<<10)|(b<<5)|r)
+
+#define DATAREGISTERMODES unsigned short
+
+#define DR_NORMAL        0
+#define DR_VRAMTRANSFER  1
+
+
+#define GPUSTATUS_ODDLINES            0x80000000
+#define GPUSTATUS_DMABITS             0x60000000 // Two bits
+#define GPUSTATUS_READYFORCOMMANDS    0x10000000
+#define GPUSTATUS_READYFORVRAM        0x08000000
+#define GPUSTATUS_IDLE                0x04000000
+#define GPUSTATUS_DISPLAYDISABLED     0x00800000
+#define GPUSTATUS_INTERLACED          0x00400000
+#define GPUSTATUS_RGB24               0x00200000
+#define GPUSTATUS_PAL                 0x00100000
+#define GPUSTATUS_DOUBLEHEIGHT        0x00080000
+#define GPUSTATUS_WIDTHBITS           0x00070000 // Three bits
+#define GPUSTATUS_MASKENABLED         0x00001000
+#define GPUSTATUS_MASKDRAWN           0x00000800
+#define GPUSTATUS_DRAWINGALLOWED      0x00000400
+#define GPUSTATUS_DITHER              0x00000200
+
+#define GPUIsBusy (lGPUstatusRet &= ~GPUSTATUS_IDLE)
+#define GPUIsIdle (lGPUstatusRet |= GPUSTATUS_IDLE)
+
+#define GPUIsNotReadyForCommands (lGPUstatusRet &= ~GPUSTATUS_READYFORCOMMANDS)
+#define GPUIsReadyForCommands (lGPUstatusRet |= GPUSTATUS_READYFORCOMMANDS)
+
+#define CALLBACK
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <math.h>
+#include <stdint.h>
+#include <unistd.h>
+
+/////////////////////////////////////////////////////////////////////////////
+
+// byteswappings
+
+#define SWAP16(x) ({ uint16_t y=(x); (((y)>>8 & 0xff) | ((y)<<8 & 0xff00)); })
+#define SWAP32(x) ({ uint32_t y=(x); (((y)>>24 & 0xfful) | ((y)>>8 & 0xff00ul) | ((y)<<8 & 0xff0000ul) | ((y)<<24 & 0xff000000ul)); })
+
+#ifdef __BIG_ENDIAN__
+
+// big endian config
+#define HOST2LE32(x) SWAP32(x)
+#define HOST2BE32(x) (x)
+#define LE2HOST32(x) SWAP32(x)
+#define BE2HOST32(x) (x)
+
+#define HOST2LE16(x) SWAP16(x)
+#define HOST2BE16(x) (x)
+#define LE2HOST16(x) SWAP16(x)
+#define BE2HOST16(x) (x)
+
+#else
+
+// little endian config
+#define HOST2LE32(x) (x)
+#define HOST2BE32(x) SWAP32(x)
+#define LE2HOST32(x) (x)
+#define BE2HOST32(x) SWAP32(x)
+
+#define HOST2LE16(x) (x)
+#define HOST2BE16(x) SWAP16(x)
+#define LE2HOST16(x) (x)
+#define BE2HOST16(x) SWAP16(x)
+
+#endif
+
+#define GETLEs16(X) ((int16_t)GETLE16((uint16_t *)X))
+#define GETLEs32(X) ((int16_t)GETLE32((uint16_t *)X))
+
+#define GETLE16(X) LE2HOST16(*(uint16_t *)X)
+#define GETLE32_(X) LE2HOST32(*(uint32_t *)X)
+#define GETLE16D(X) ({uint32_t val = GETLE32(X); (val<<16 | val >> 16);})
+#define PUTLE16(X, Y) do{*((uint16_t *)X)=HOST2LE16((uint16_t)Y);}while(0)
+#define PUTLE32_(X, Y) do{*((uint32_t *)X)=HOST2LE16((uint32_t)Y);}while(0)
+#ifdef __arm__
+#define GETLE32(X) (*(uint16_t *)(X)|(((uint16_t *)(X))[1]<<16))
+#define PUTLE32(X, Y) do{uint16_t *p_=(uint16_t *)(X);uint32_t y_=Y;p_[0]=y_;p_[1]=y_>>16;}while(0)
+#else
+#define GETLE32 GETLE32_
+#define PUTLE32 PUTLE32_
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+typedef struct VRAMLOADTTAG
+{
+ short x;
+ short y;
+ short Width;
+ short Height;
+ short RowsRemaining;
+ short ColsRemaining;
+ unsigned short *ImagePtr;
+} VRAMLoad_t;
+
+/////////////////////////////////////////////////////////////////////////////
+
+typedef struct PSXPOINTTAG
+{
+ int32_t x;
+ int32_t y;
+} PSXPoint_t;
+
+typedef struct PSXSPOINTTAG
+{
+ short x;
+ short y;
+} PSXSPoint_t;
+
+typedef struct PSXRECTTAG
+{
+ short x0;
+ short x1;
+ short y0;
+ short y1;
+} PSXRect_t;
+
+// linux defines for some windows stuff
+
+#define FALSE 0
+#define TRUE 1
+#define BOOL unsigned short
+#define LOWORD(l)           ((unsigned short)(l))
+#define HIWORD(l)           ((unsigned short)(((uint32_t)(l) >> 16) & 0xFFFF))
+#define max(a,b)            (((a) > (b)) ? (a) : (b))
+#define min(a,b)            (((a) < (b)) ? (a) : (b))
+#define DWORD uint32_t
+#ifndef __int64
+#define __int64 long long int 
+#endif
+
+typedef struct RECTTAG
+{
+ int left;
+ int top;
+ int right;
+ int bottom;
+}RECT;
+
+/////////////////////////////////////////////////////////////////////////////
+
+typedef struct TWINTAG
+{
+ PSXRect_t  Position;
+ int xmask, ymask;
+} TWin_t;
+
+/////////////////////////////////////////////////////////////////////////////
+
+typedef struct PSXDISPLAYTAG
+{
+ PSXPoint_t  DisplayModeNew;
+ PSXPoint_t  DisplayMode;
+ PSXPoint_t  DisplayPosition;
+ PSXPoint_t  DisplayEnd;
+ int32_t        Double;
+ int32_t        Height;
+ int32_t        PAL;
+ int32_t        InterlacedNew;
+ int32_t        Interlaced;
+ int32_t        RGB24New;
+ int32_t        RGB24;
+ PSXSPoint_t DrawOffset;
+ int32_t        Disabled;
+ PSXRect_t   Range;
+
+} PSXDisplay_t;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// draw.c
+
+extern int32_t           GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP;
+extern int32_t           GlobalTextABR,GlobalTextPAGE;
+extern short          ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3;
+extern long           lLowerpart;
+extern BOOL           bCheckMask;
+extern unsigned short sSetMask;
+extern unsigned long  lSetMask;
+extern short          g_m1;
+extern short          g_m2;
+extern short          g_m3;
+extern short          DrawSemiTrans;
+
+// prim.c
+
+extern BOOL           bUsingTWin;
+extern TWin_t         TWin;
+extern void (*primTableJ[256])(unsigned char *);
+extern void (*primTableSkip[256])(unsigned char *);
+extern unsigned short  usMirror;
+extern int            iDither;
+extern uint32_t  dwCfgFixes;
+extern uint32_t  dwActFixes;
+extern int            iUseFixes;
+extern int            iUseDither;
+extern BOOL           bDoVSyncUpdate;
+extern int32_t           drawX;
+extern int32_t           drawY;
+extern int32_t           drawW;
+extern int32_t           drawH;
+
+// gpu.h
 
 #define OPAQUEON   10
 #define OPAQUEOFF  11
 #define KEY_RESETDITHER   8
 #define KEY_RESETFILTER   16
 #define KEY_RESETADVBLEND 32
-//#define KEY_BLACKWHITE    64
 #define KEY_BADTEXTURES   128
 #define KEY_CHECKTHISOUT  256
 
 #define COLOR(x) SWAP32(x & 0xffffff)
 #endif
 
-/////////////////////////////////////////////////////////////////////////////
+// gpu.c
 
-void           updateDisplay(void);
-void           SetAutoFrameCap(void);
-void           SetFixes(void);
+extern VRAMLoad_t     VRAMWrite;
+extern VRAMLoad_t     VRAMRead;
+extern DATAREGISTERMODES DataWriteMode;
+extern DATAREGISTERMODES DataReadMode;
+extern short          sDispWidths[];
+extern BOOL           bDebugText;
+extern PSXDisplay_t   PSXDisplay;
+extern PSXDisplay_t   PreviousPSXDisplay;
+extern BOOL           bSkipNextFrame;
+extern long           lGPUstatusRet;
+extern unsigned char  * psxVSecure;
+extern unsigned char  * psxVub;
+extern signed char    * psxVsb;
+extern unsigned short * psxVuw;
+extern signed short   * psxVsw;
+extern uint32_t  * psxVul;
+extern int32_t    * psxVsl;
+extern unsigned short * psxVuw_eom;
+extern BOOL           bChangeWinMode;
+extern long           lSelectedSlot;
+extern BOOL           bInitCap;
+extern DWORD          dwLaceCnt;
+extern uint32_t  lGPUInfoVals[];
+extern uint32_t  ulStatusControl[];
 
-/////////////////////////////////////////////////////////////////////////////
+// fps.c
+
+extern int            UseFrameLimit;
+extern int            UseFrameSkip;
+extern float          fFrameRate;
+extern int            iFrameLimit;
+extern float          fFrameRateHz;
+extern float          fps_skip;
+extern float          fps_cur;
+
+// draw.c
 
-#endif // _GPU_INTERNALS_H
+void          DoBufferSwap(void);
+void          DoClearScreenBuffer(void);
+void          DoClearFrontBuffer(void);
+unsigned long ulInitDisplay(void);
+void          CloseDisplay(void);
+
+struct rearmed_cbs;
+extern const struct rearmed_cbs *rcbs;
+
+#endif