diff options
Diffstat (limited to 'include/Gfx.h')
| -rw-r--r-- | include/Gfx.h | 133 |
1 files changed, 41 insertions, 92 deletions
diff --git a/include/Gfx.h b/include/Gfx.h index b2b8295..9f1ec03 100644 --- a/include/Gfx.h +++ b/include/Gfx.h @@ -1,109 +1,58 @@ -#ifndef __GFX_HEADER__ -#define __GFX_HEADER__ +#ifndef GFX_H +#define GFX_H -/* ************************************* - * Includes - * *************************************/ +#include <psxgpu.h> +#include <stdbool.h> -#include "Global_Inc.h" -#include "System.h" +#ifdef __cplusplus +extern "C" +{ +#endif +#define SPRITE_INDEX_INVALID (size_t)(0xFFFFFFFF) +#define MAX_SIZE_FOR_GSSPRITE ((short)256) +enum +{ + GFX_TPAGE_WIDTH = 64, + GFX_TPAGE_WIDTH_BITSHIFT = __builtin_ctz(GFX_TPAGE_WIDTH) +}; /* ************************************* - * Defines + * Public types definition * *************************************/ -#define X_SCREEN_RESOLUTION 384 -#define Y_SCREEN_RESOLUTION 240 -#define VRAM_W 1024 -#define VRAM_H 512 -#define MAX_SIZE_FOR_GSSPRITE 256 -#define GFX_TPAGE_WIDTH 64 -#define GFX_TPAGE_HEIGHT 256 -#define GFX_1HZ_FLASH (1<<7) -#define GFX_2HZ_FLASH (1<<8) -#define FULL_LUMINANCE 0xFF +enum +{ + X_SCREEN_RESOLUTION = 368, + Y_SCREEN_RESOLUTION = 240 +}; /* ************************************* - * Global prototypes + * Public variables declaration * *************************************/ -void GfxInitDrawEnv(void); -void GfxInitDispEnv(void); -void GfxSetPrimitiveList(void); - -// Renders new scene. Use this function unless you know what you are doing! -void GfxDrawScene(void); - -// Blocking version. Calls GfxDrawScene() and then adds a while(GfxIsBusy() ) -// after it. -void GfxDrawScene_Slow(void); - -void GfxDrawScene_NoSwap(void); - -void GfxSwapBuffers(void); - -// Only renders screen and does not update any pad data or timer data. -// To be used in ISR! -void GfxDrawScene_Fast(void); - -// Repotedly, tells is GPU is ready for a DMA transfer. -bool GfxReadyForDMATransfer(void); - -// Fills a GsSprite structure with information from a TIM file. -bool GfxSpriteFromFile(char* fname, GsSprite * spr); - -// Reportedly, loads CLUT data from a TIM image (image data is discarded) -bool GfxCLUTFromFile(char* fname); +/* ************************************* + * Public functions declaration + * *************************************/ -// Returns true if current object is within screen limits, false otherwise. +void GfxInit(void); +bool GfxSpriteFromFile(const char* path, GsSprite *spr); +void GfxSortSprite(GsSprite *spr); bool GfxIsInsideScreenArea(short x, short y, short w, short h); +bool GfxIsSpriteInsideScreenArea(const GsSprite *spr); +void GfxDrawScene(void); +void GfxClear(void); +int GfxToDegrees(int rotate); +int GfxFromDegrees(int degrees); +bool GfxIsBusy(void); +void GfxDrawRectangle(GsRectangle *rect); +void GfxSaveDisplayData(GsSprite *const spr); -// Function overload for GsSprite structures. -bool GfxIsSpriteInsideScreenArea(GsSprite * spr); - -// Used to know whether GPU operation can be done. -bool GfxIsGPUBusy(void); - -// Draws a sprite on screen. First, it checks whether sprite is inside -// screen limits. -void GfxSortSprite(GsSprite * spr); - -uint8_t GfxGetGlobalLuminance(void); - -void GfxSetGlobalLuminance(uint8_t value); - -void GfxIncreaseGlobalLuminance(int8_t step); - -void GfxButtonSetFlags(uint8_t flags); - -void GfxButtonRemoveFlags(uint8_t flags); - -int GfxRotateFromDegrees(int deg); - -void GfxDrawButton(short x, short y, unsigned short btn); - -// Sends current display data on a specific VRAM section and fills -// sprite structure pointed to by "spr". -void GfxSaveDisplayData(GsSprite *spr); - -// Fills GsSprite structure pointed to by "spr" with texture page and U/V -// offset data given a position in VRAM. -bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y); - -void GfxSetSplitScreen(uint8_t playerIndex); - -void GfxDisableSplitScreen(void); - -void GfxDrawScene_NoSwap(void); - -void GfxDevMenuEnable(void); - -/* ************************************* - * Global variables - * *************************************/ +/** \} */ -extern GsSprite PSXButtons; +#ifdef __cplusplus +} +#endif -#endif //__GFX_HEADER__ +#endif /* GFX_H */ |
