From e8b456ee7c9c45600b1e18727cb494137f062cbd Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 14 Apr 2021 14:54:21 +0200 Subject: Add function perform vsync --- src/main.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main.c b/src/main.c index c49ce51..ea43821 100644 --- a/src/main.c +++ b/src/main.c @@ -20,6 +20,11 @@ // Display modes. // +// Display registers. +#define DISP_CONTROL *((vu32*)(MEM_IO + 0x0000)) +#define DISP_STATUS *((vu32*)(MEM_IO + 0x0004)) +#define DISP_VCOUNT *((vu32*)(MEM_IO + 0x0006)) + // Display modes. #define DISP_MODE_0 0x0000 #define DISP_MODE_1 0x0001 @@ -55,6 +60,7 @@ typedef u16 Color; // typedef Color Scanline[SCREEN_WIDTH]; #define FRAMEBUFFER ((Scanline*)MEM_VRAM) +#define SCREEN_BUFFER ((vu16*) MEM_VRAM) // // Colors. @@ -86,6 +92,12 @@ put_line(int x, int y, Color clr, char *msg) { } } +static inline void +wait_vsync() { + while(DISP_VCOUNT >= 160); + while(DISP_VCOUNT < 160); +} + // // Main functions. // @@ -94,6 +106,7 @@ int main(void) { set_display_mode(DISP_MODE_3 | DISP_BG2); while(true) { + wait_vsync(); put_line(16, 20 + 16, rgb15(28, 0, 0), "Hello world from the GBA!"); put_line(16, 20 + 32, rgb15(0, 28, 28), "Using my little 8x8 bd-font"); put_line(16, 20 + 64, rgb15(16, 0, 28), "Isn't that neat? :D"); -- cgit v1.2.1