Added missing include on psxgpu.h

This commit is contained in:
Xavi Del Campo 2020-01-31 10:42:47 +01:00
parent ecb1cbbd68
commit 98d6e71da7
1 changed files with 70 additions and 68 deletions

View File

@ -4,7 +4,7 @@
#define GPU_DATA_PORT_ADDR 0x1f801810
#define GPU_CONTROL_PORT_ADDR 0x1f801814
#define GPU_DATA_PORT *((volatile unsigned int*)GPU_DATA_PORT_ADDR)
#define GPU_CONTROL_PORT *((volatile unsigned int*)GPU_CONTROL_PORT_ADDR)
#define GPU_CONTROL_PORT *((volatile unsigned int*)GPU_CONTROL_PORT_ADDR)
#define DPCR *((volatile unsigned int*)0x1f8010f0)
#define D2_MADR *((volatile unsigned int*)0x1f8010a0)
@ -13,13 +13,15 @@
#define get_clutid(cx, cy) (((cx&0x3ff)>>4)|((cy&0x1ff)<<6))
#include <stdarg.h>
/**
* Initializes the GPU. Same as GsInitEx(0)
*
* The display is left disabled.
* You can enable it with GsEnableDisplay() or more preferably with GsSetVideoMode()
*/
void GsInit(void);
/**
@ -27,15 +29,15 @@ void GsInit(void);
*
* The display is left disabled.
* You can enable it with GsEnableDisplay() or more preferably with GsSetVideoMode()
* @param flags Flag bitmask
* @param flags Flag bitmask
*/
void GsInitEx(unsigned int flags);
/**
* Resets the GPU
*/
void GsReset(void);
/**
@ -45,7 +47,7 @@ void GsReset(void);
* the display is enabled automatically by GsSetVideoMode().
* @param enable If TRUE (>=1) the display will be enabled, if FALSE (== 0) it will be disabled
*/
void GsEnableDisplay(int enable);
/**
@ -54,8 +56,8 @@ void GsEnableDisplay(int enable);
* @param width Width
+ 640, 384, 320 and 256 are supported by the PlayStation hardware.
* @param height Height
+ 480 and 240 are supported by the PlayStation hardware.
* You probably want to use GsSetVideoModeEx() if you set
+ 480 and 240 are supported by the PlayStation hardware.
* You probably want to use GsSetVideoModeEx() if you set
* 480 here, because this function doesn't enable interlacing.
* @param video_mode Video mode
+ VMODE_NTSC for NTSC, VMODE_PAL for PAL
@ -70,7 +72,7 @@ int GsSetVideoMode(int width, int height, int video_mode);
* @param width Width
+ 640, 384, 320 and 256 are supported by the PlayStation hardware.
* @param height Height
+ 480 and 240 are supported by the PlayStation hardware.
+ 480 and 240 are supported by the PlayStation hardware.
* @param video_mode Video mode
+ VMODE_NTSC for NTSC, VMODE_PAL for PAL
* @param rgb24 24-bit RGB mode
@ -104,7 +106,7 @@ void GsSetList(unsigned int *listptr);
* @param listptr Pointer to primitive list
* @param listpos List position
*/
void GsSetListEx(unsigned int *listptr, unsigned int listpos);
/**
@ -112,22 +114,22 @@ void GsSetListEx(unsigned int *listptr, unsigned int listpos);
*
* This also has the effect of resetting the current drawing list position.
*/
void GsDrawList(void);
/**
* Draws the primitive list using port I/O access.
*
*
* GsDrawList() uses DMA to transfer the primitive data in the linked list to the GPU.
*
* This function which is of main interest to low-level programmers, uses GPU port I/O access instead,
* This function which is of main interest to low-level programmers, uses GPU port I/O access instead,
* and it is slower (as reads and writes must be done by the main CPU), but works in all situations,
* even when you can't get DMA working.
*
* This function due to its nature is blocking, and always waits for completion.
*/
void GsDrawListPIO(void);
void GsDrawListPIO(void);
/**
* Makes non-blocking gpu functions like GsDrawList()
@ -141,13 +143,13 @@ void GsSetAutoWait(void);
typedef struct
{
/** Red color component (0-255) */
unsigned char r;
unsigned char r;
/** Green color component (0-255) */
unsigned char g;
/** Blue color component (0-255) */
unsigned char b;
unsigned char b;
/** X Coordinates for vertexes */
short x[3];
short x[3];
/** Y Coordinates for vertexes */
short y[3];
/** Attribute bitmask */
@ -159,12 +161,12 @@ typedef struct
typedef struct
{
/** Red color component (0-255) */
unsigned char r;
unsigned char r;
/** Green color component (0-255) */
unsigned char g;
/** Blue color component (0-255) */
unsigned char b;
/** X Coordinates for vertexes */
unsigned char b;
/** X Coordinates for vertexes */
short x[4];
/** Y Coordinates for vertexes */
short y[4];
@ -177,7 +179,7 @@ typedef struct
typedef struct
{
/** Red color component (0-255) */
unsigned char r;
unsigned char r;
/** Green color component (0-255) */
unsigned char g;
/** Blue color component (0-255) */
@ -385,28 +387,28 @@ typedef struct
unsigned char r, g, b; /* Luminosity of color components - 128 is normal luminosity */
unsigned char tpage; /* Texture page */
unsigned int attribute; /* Attribute */
/* Scaling? These are only candidates...
scalex:
Denotes horizontal scaling
0 = true size (unmodified)
1 = true size (*1)
2 = double size (*2)
3 = triple size (*3)
...
-1 = true size (/1)
-2 = half size (/2)
-3 = one-third size (/3)
...
scaley:
Denotes vertical scaling
*** The behaviour below was introduced in PSXSDK 0.5
If scalex > 8,
resulting width will be (original_width * scalex) / 4096
scalex = 4096 (SCALE_ONE) (original width), scalex = 2048 (half width), etc.
@ -424,7 +426,7 @@ typedef struct
typedef struct
{
short x, y;
short w, h;
unsigned char r, g, b;
@ -479,14 +481,14 @@ typedef struct
// unsigned char r, g, b; /* Luminosity of color components - 128 is normal luminosity */
// unsigned char tpage; /* Texture page */
// unsigned int attribute; /* Attribute */
//
//
// unsigned short tmw, tmh; /* Map texture width and height */
// unsigned char tw, th; /* Map tile width and height */
//
//
// unsigned char tsize; /* Size of tile in map (1 = 8-bit, 2 = 16-bit, 4 = 32-bit) */
//
// unsigned int tmask; /* Inverted mask for tile number */
//
//
// void *data; /* Pointer to beginning of map data */
//}GsMap;
@ -495,16 +497,16 @@ typedef struct
enum psx_gpu_texmodes
{
/** 4-bit color mode */
COLORMODE_4BPP,
COLORMODE_4BPP,
/** 8-bit color mode */
COLORMODE_8BPP,
COLORMODE_8BPP,
/** 16-bit color mode */
COLORMODE_16BPP,
COLORMODE_16BPP,
/** 24-bit color mode */
COLORMODE_24BPP
};
/**
/**
* This is the luminance factor with which images
* are drawn as they are stored. (i.e. without applying lighting)
*
@ -552,7 +554,7 @@ enum psx_gpu_texmodes
#define TRANS_MODE(x) ((x&3)<<2)
/**
* Enable semi-transparency processing for the primitive.
*/
*/
#define ENABLE_TRANS (1<<4)
/**
* Enable horizontal flipping for the primitive.
@ -581,7 +583,7 @@ typedef struct
* Usually you enable this flag when you do not want to use double buffering.
*/
unsigned char draw_on_display;
/**
* Drawing area X start coordinate in framebuffer
*/
@ -603,17 +605,17 @@ typedef struct
* Drawing offset
*/
//short off_x, off_y;
/**
* Masking settings (can also be set with GsSetMasking())
*/
/**
* Do not draw over pixels which have their mask bit set
* Do not draw over pixels which have their mask bit set
*/
unsigned char ignore_mask;
/**
* If this is set, every pixel drawn will have the mask bit set
* If this is set, every pixel drawn will have the mask bit set
*/
unsigned char set_mask;
}GsDrawEnv;
@ -633,14 +635,14 @@ typedef struct
}GsDispEnv;
/**
* Image
* Image
* @brief This structure describes a TIM image
*/
typedef struct
{
/** Pixel (color) mode. 0 = 4bpp, 1 = 8bpp, 2 = 16bpp, 3 = 24bpp */
int pmode;
/** Reports whether this image has a Color Look Up Table. 1 if there's a CLUT, 0 otherwise. */
@ -656,7 +658,7 @@ typedef struct
/** X coordinate of image in framebuffer */
int x;
/** Y coordinate of image in framebuffer */
int y;
int y;
/** Width of image in framebuffer */
int w;
/** Height of image in framebuffer */
@ -685,7 +687,7 @@ void GsSortPoly4(GsPoly4 *poly4);
* Adds a textured 3 point polygon to the packet list
* @param tpoly3 Pointer to structure for textured 3 point polygon
*/
void GsSortTPoly3(GsTPoly3 *tpoly3);
/**
@ -713,7 +715,7 @@ void GsSortGPoly4(GsGPoly4 *poly4);
* Adds a gradated textured 3 point polygon to the packet list
* @param tpoly3 Pointer to structure for textured 3 point polygon
*/
void GsSortGTPoly3(GsGTPoly3 *tpoly3);
/**
@ -727,21 +729,21 @@ void GsSortGTPoly4(GsGTPoly4 *tpoly4);
* Adds a monochrome line to the packet list
* @param line Pointer to structure for monochrome line
*/
void GsSortLine(GsLine *line);
/**
* Adds a gradated line to the packet list
* @param line Pointer to structure for gradated line
*/
void GsSortGLine(GsGLine *line);
/**
* Adds a dot (pixel) to the packet list
* @param dot Pointer to structure for dot
*/
void GsSortDot(GsDot *dot);
/**
@ -762,14 +764,14 @@ void GsSortSprite(GsSprite *sprite);
*
* @param sprite Pointer to structure for sprite
*/
void GsSortSimpleSprite(GsSprite *sprite);
/**
* Adds a rectangle to the packet list
* @param rectangle Pointer to structure for rectangle
*/
void GsSortRectangle(GsRectangle *rectangle);
/**
@ -807,7 +809,7 @@ void LoadImage(void *img, int x, int y, int w, int h);
* @param g Green (0 - 255)
* @param b Blue (0 - 255)
*/
void DrawFBRect(int x, int y, int w, int h, int r, int g, int b);
/**
@ -827,28 +829,28 @@ void GsSetDispEnv(GsDispEnv *dispenv);
/* If this flag is set, pixels drawn have MSB set */
#define MASK_SET 1
#define MASK_SET 1
/* If this flag is set, pixels aren't drawn over pixels with MSB set */
#define MASK_IGNORE 2
/**
* Sets masking settings
* @param flag Bitwise flags
*/
void GsSetMasking(unsigned char flag);
/**
* Return pointer position in linked list
* @return Pointer position in linked list
*/
unsigned int GsListPos(void);
/**
* Three functions which send data to the control port and to the data port
*/
void gpu_ctrl(unsigned int command, unsigned int param);
void gpu_data(unsigned int data);
void gpu_data_ctrl(unsigned int command, unsigned int param);
@ -870,7 +872,7 @@ void GsUploadImage(GsImage *image);
* by a GsImage structure, then optionally uploads data to video memory.
* Sprite coordinates are set to 0.
*/
int GsSpriteFromImage(GsSprite *sprite, GsImage *image, int do_upload);
/**
@ -890,14 +892,14 @@ int GsIsWorking(void); // Alias of GsIsDrawing()
/**
* Clear Video RAM
*/
void GsClearMem(void);
/**
* Loads the built-in 8x8 font in Video RAM at the specified coordinates
*
*
* Specifying cx and cy as -1 will not load the black&white CLUT to
* Specifying cx and cy as -1 will not load the black&white CLUT to
* video memory. Use GsSetFont() to specify clut x and clut y in that case.
*
* The font occupies a space of 16x128 pixels in 16-bit mode,
@ -907,7 +909,7 @@ void GsClearMem(void);
* @param cx X coordinate of black/white CLUT in framebuffer
* @param cy Y coordinate of black/white CLUT in framebuffer
*/
void GsLoadFont(int fb_x, int fb_y, int cx, int cy);
/**
@ -936,7 +938,7 @@ unsigned int GsVPrintFont(int x, int y, const char *fmt, va_list ap);
/**
* Change font coordinates without reloading it
*/
void GsSetFont(int fb_x, int fb_y, int cx, int cy);
/**
@ -955,7 +957,7 @@ void GsSetFont(int fb_x, int fb_y, int cx, int cy);
* PRFONT_WRAP can't coexist with PRFONT_CENTER or PRFONT_RIGHT
* PRFONT_CENTER and PRFONT_RIGHT are justifying attributes and as such
* they are mutually exclusive - they cannot coexist with each other.
* Specifying both will give priority to PRFONT_CENTER.
* Specifying both will give priority to PRFONT_CENTER.
*
* Attribute list:
*
@ -1000,7 +1002,7 @@ void GsSetDispEnvSimple(int x, int y);
enum psx_gpu_vmodes
{
/** NTSC video mode, 60Hz */
VMODE_NTSC,
VMODE_NTSC,
/** PAL video mode, 50Hz */
VMODE_PAL
};
@ -1062,13 +1064,13 @@ void GsSortCls(int r, int g, int b);
/**
@attention Macros by their definition do not like being passed invalid values.
*/
*/
/**
* Macro to get a texture page number from a coordinate in VRAM
* @param x X coordinate (0-1023)
* @param y Y coordinate (0-511)
*/
*/
#define gs_get_tpage_num(x,y) ((x/64)+((y/256)*16))