summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-04-14 14:54:21 +0200
committerBad Diode <bd@badd10de.dev>2021-04-14 14:54:21 +0200
commite8b456ee7c9c45600b1e18727cb494137f062cbd (patch)
treedb1d0b8e0822bf522d5f0bebb3af21c25520e2b4
parent40c0489920021195877529ab7bfdf597b9468774 (diff)
downloadgba-experiments-e8b456ee7c9c45600b1e18727cb494137f062cbd.tar.gz
gba-experiments-e8b456ee7c9c45600b1e18727cb494137f062cbd.zip
Add function perform vsync
-rw-r--r--src/main.c13
1 files changed, 13 insertions, 0 deletions
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 @@
20// Display modes. 20// Display modes.
21// 21//
22 22
23// Display registers.
24#define DISP_CONTROL *((vu32*)(MEM_IO + 0x0000))
25#define DISP_STATUS *((vu32*)(MEM_IO + 0x0004))
26#define DISP_VCOUNT *((vu32*)(MEM_IO + 0x0006))
27
23// Display modes. 28// Display modes.
24#define DISP_MODE_0 0x0000 29#define DISP_MODE_0 0x0000
25#define DISP_MODE_1 0x0001 30#define DISP_MODE_1 0x0001
@@ -55,6 +60,7 @@ typedef u16 Color;
55// 60//
56typedef Color Scanline[SCREEN_WIDTH]; 61typedef Color Scanline[SCREEN_WIDTH];
57#define FRAMEBUFFER ((Scanline*)MEM_VRAM) 62#define FRAMEBUFFER ((Scanline*)MEM_VRAM)
63#define SCREEN_BUFFER ((vu16*) MEM_VRAM)
58 64
59// 65//
60// Colors. 66// Colors.
@@ -86,6 +92,12 @@ put_line(int x, int y, Color clr, char *msg) {
86 } 92 }
87} 93}
88 94
95static inline void
96wait_vsync() {
97 while(DISP_VCOUNT >= 160);
98 while(DISP_VCOUNT < 160);
99}
100
89// 101//
90// Main functions. 102// Main functions.
91// 103//
@@ -94,6 +106,7 @@ int main(void) {
94 set_display_mode(DISP_MODE_3 | DISP_BG2); 106 set_display_mode(DISP_MODE_3 | DISP_BG2);
95 107
96 while(true) { 108 while(true) {
109 wait_vsync();
97 put_line(16, 20 + 16, rgb15(28, 0, 0), "Hello world from the GBA!"); 110 put_line(16, 20 + 16, rgb15(28, 0, 0), "Hello world from the GBA!");
98 put_line(16, 20 + 32, rgb15(0, 28, 28), "Using my little 8x8 bd-font"); 111 put_line(16, 20 + 32, rgb15(0, 28, 28), "Using my little 8x8 bd-font");
99 put_line(16, 20 + 64, rgb15(16, 0, 28), "Isn't that neat? :D"); 112 put_line(16, 20 + 64, rgb15(16, 0, 28), "Isn't that neat? :D");