aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfxvideo/gpu.h
diff options
context:
space:
mode:
authornotaz2011-01-03 17:29:41 +0200
committernotaz2011-01-03 17:29:41 +0200
commita96a5eb2d6a6720cc7bba6a30d1c25473f345a89 (patch)
tree724a206e5de888b61a9d385721a2517432333c63 /plugins/dfxvideo/gpu.h
parent78d78c3b21fbdc32b73b9e4c9e2719a148c32356 (diff)
downloadpcsx_rearmed-a96a5eb2d6a6720cc7bba6a30d1c25473f345a89.tar.gz
pcsx_rearmed-a96a5eb2d6a6720cc7bba6a30d1c25473f345a89.tar.bz2
pcsx_rearmed-a96a5eb2d6a6720cc7bba6a30d1c25473f345a89.zip
dfxvideo: massive cleanup
based on pcsx4all code.
Diffstat (limited to 'plugins/dfxvideo/gpu.h')
-rw-r--r--plugins/dfxvideo/gpu.h267
1 files changed, 258 insertions, 9 deletions
diff --git a/plugins/dfxvideo/gpu.h b/plugins/dfxvideo/gpu.h
index e8730f2..740add5 100644
--- a/plugins/dfxvideo/gpu.h
+++ b/plugins/dfxvideo/gpu.h
@@ -15,8 +15,221 @@
* *
***************************************************************************/
-#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)
+
+/////////////////////////////////////////////////////////////////////////////
+
+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;
+} 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 GlobalTextREST,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
@@ -27,7 +240,6 @@
#define KEY_RESETDITHER 8
#define KEY_RESETFILTER 16
#define KEY_RESETADVBLEND 32
-//#define KEY_BLACKWHITE 64
#define KEY_BADTEXTURES 128
#define KEY_CHECKTHISOUT 256
@@ -49,12 +261,49 @@
#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;
-#endif // _GPU_INTERNALS_H
+// draw.c
+
+void DoBufferSwap(void);
+void DoClearScreenBuffer(void);
+void DoClearFrontBuffer(void);
+unsigned long ulInitDisplay(void);
+void CloseDisplay(void);
+
+#endif