summaryrefslogtreecommitdiff
path: root/include/Gfx.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/Gfx.h')
-rw-r--r--include/Gfx.h133
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 */