aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/psxgpu.h
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
commit7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc (patch)
treee98c627e1da5c764563774b89b0c06d7ac5ad0a4 /libpsn00b/include/psxgpu.h
parentae9e545c3ed33d39ce21ae13ceb8337fa34901b8 (diff)
downloadpsn00bsdk-7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc.tar.gz
LibPSn00b officially v0.10b, added psxsio library, better DrawSync() and VSync(), better reference manual.
Diffstat (limited to 'libpsn00b/include/psxgpu.h')
-rw-r--r--libpsn00b/include/psxgpu.h104
1 files changed, 55 insertions, 49 deletions
diff --git a/libpsn00b/include/psxgpu.h b/libpsn00b/include/psxgpu.h
index 24d023a..40b9159 100644
--- a/libpsn00b/include/psxgpu.h
+++ b/libpsn00b/include/psxgpu.h
@@ -38,8 +38,8 @@
#define setDrawTPage( p, tp, abr, x, y ) \
( (p)->code[0] = getTPage( tp, abr, x, y ), \
setlen( p, 1 ), setcode( p, 0xe1 ) )
-
-/** ORIGINAL FUNCTION **/
+
+/* ORIGINAL */
#define setDrawTPageVal( p, tp ) \
( (p)->code[0] = tp, \
setlen( p, 1 ), setcode( p, 0xe1 ) )
@@ -217,25 +217,24 @@ typedef struct {
unsigned int tag;
unsigned char r0,g0,b0,code;
short x0,y0;
- unsigned char u0,v0;
- unsigned short clut;
short x1,y1;
- unsigned char u1,v1;
- unsigned short tpage;
short x2,y2;
- unsigned char u2,v2;
- unsigned short pad;
-} POLY_FT3;
+ short x3,y3;
+} POLY_F4;
typedef struct {
unsigned int tag;
unsigned char r0,g0,b0,code;
short x0,y0;
- unsigned char r1,g1,b1,pad0;
+ unsigned char u0,v0;
+ unsigned short clut;
short x1,y1;
- unsigned char r2,g2,b2,pad1;
+ unsigned char u1,v1;
+ unsigned short tpage;
short x2,y2;
-} POLY_G3;
+ unsigned char u2,v2;
+ unsigned short pad;
+} POLY_FT3;
typedef struct {
unsigned int tag;
@@ -243,53 +242,54 @@ typedef struct {
short x0,y0;
unsigned char u0,v0;
unsigned short clut;
- unsigned char r1,g1,b1,pad0;
short x1,y1;
unsigned char u1,v1;
unsigned short tpage;
- unsigned char r2,g2,b2,pad1;
short x2,y2;
unsigned char u2,v2;
- unsigned short pad2;
-} POLY_GT3;
+ unsigned short pad0;
+ short x3,y3;
+ unsigned char u3,v3;
+ unsigned short pad1;
+} POLY_FT4;
typedef struct {
unsigned int tag;
unsigned char r0,g0,b0,code;
short x0,y0;
+ unsigned char r1,g1,b1,pad0;
short x1,y1;
+ unsigned char r2,g2,b2,pad1;
short x2,y2;
- short x3,y3;
-} POLY_F4;
+} POLY_G3;
typedef struct {
unsigned int tag;
unsigned char r0,g0,b0,code;
short x0,y0;
- unsigned char u0,v0;
- unsigned short clut;
+ unsigned char r1,g1,b1,pad0;
short x1,y1;
- unsigned char u1,v1;
- unsigned short tpage;
+ unsigned char r2,g2,b2,pad1;
short x2,y2;
- unsigned char u2,v2;
- unsigned short pad0;
+ unsigned char r3,g3,b3,pad2;
short x3,y3;
- unsigned char u3,v3;
- unsigned short pad1;
-} POLY_FT4;
+} POLY_G4;
typedef struct {
unsigned int tag;
unsigned char r0,g0,b0,code;
short x0,y0;
+ unsigned char u0,v0;
+ unsigned short clut;
unsigned char r1,g1,b1,pad0;
short x1,y1;
+ unsigned char u1,v1;
+ unsigned short tpage;
unsigned char r2,g2,b2,pad1;
short x2,y2;
- unsigned char r3,g3,b3,pad2;
- short x3,y3;
-} POLY_G4;
+ unsigned char u2,v2;
+ unsigned short pad2;
+} POLY_GT3;
typedef struct {
unsigned int tag;
@@ -431,21 +431,6 @@ typedef struct {
/*
* VRAM fill and transfer primitive definitions
*/
-typedef struct {
- unsigned int tag;
- unsigned char r0,g0,b0,code;
- unsigned short x0,y0; // Note: coordinates must be in 16 pixel steps
- unsigned short w,h;
-} FILL;
-
-typedef struct {
- unsigned int tag;
- unsigned char p0,p1,p2,code;
- unsigned short x0,y0;
- unsigned short x1,y1;
- unsigned short w,h;
- unsigned int nop[4];
-} VRAM2VRAM;
typedef struct {
unsigned int tag;
@@ -462,11 +447,26 @@ typedef struct {
unsigned int code[1];
} DR_TPAGE;
-typedef struct { /* ORIGINAL CODE */
+typedef struct { /* ORIGINAL */
unsigned int tag;
unsigned int code[1];
} DR_MASK;
+typedef struct { /* ORIGINAL */
+ unsigned int tag;
+ unsigned char r0,g0,b0,code;
+ unsigned short x0,y0; // Note: coordinates must be in 16 pixel steps
+ unsigned short w,h;
+} FILL;
+
+typedef struct { /* ORIGINAL */
+ unsigned int tag;
+ unsigned char p0,p1,p2,code;
+ unsigned short x0,y0;
+ unsigned short x1,y1;
+ unsigned short w,h;
+ unsigned int nop[4];
+} VRAM2VRAM;
// General structs
@@ -528,17 +528,23 @@ void PutDrawEnv(DRAWENV *draw);
void SetDispMask(int mask);
-void VSync();
-void DrawSync();
+int VSync(int m);
+int DrawSync(int m);
void WaitGPUcmd();
void WaitGPUdma();
-void VSyncCallback(void (*func)());
+void *VSyncCallback(void (*func)());
+void *DrawSyncCallback(void (*func)());
+
+void *DMACallback(int dma, void (*func)());
+void *InterruptCallback(int irq, void (*func)());
+void *GetInterruptCallback(int irq); // Original
void LoadImage(RECT *rect, unsigned int *data);
void ClearOTagR(unsigned int* ot, int n);
void DrawOTag(unsigned int* ot);
+void DrawPrim(void *pri);
void AddPrim(unsigned int* ot, void* pri);