diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-06-01 22:36:51 +0100 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-06-01 22:36:51 +0100 |
commit | e5ba9cb62c62a4a9cb9012dfd45870bc5b988def (patch) | |
tree | 403f8fec75c23480be95dd34d27a28bcfc5c8ec1 | |
parent | 64c046ab4b00ffeab223364b70b75588bac31978 (diff) | |
download | gold-mine-run-e5ba9cb62c62a4a9cb9012dfd45870bc5b988def.tar.gz gold-mine-run-e5ba9cb62c62a4a9cb9012dfd45870bc5b988def.zip |
Add function to wait for VGA's vsync
-rw-r--r-- | TODO.md | 2 | ||||
-rw-r--r-- | src/main.c | 1 | ||||
-rw-r--r-- | src/vga.c | 6 | ||||
-rw-r--r-- | src/vga.h | 1 |
4 files changed, 8 insertions, 2 deletions
@@ -3,7 +3,6 @@ - drawing - sw blitter - time - - vga vsync - tick counter - input - keyboard @@ -16,7 +15,6 @@ - MOD player? - ADLIB music? - data (embedded in EXE) - - image data: PNG - map data: JSON - screens - menu @@ -24,6 +24,7 @@ int main(int argc, char *argv[]) for (int i = 0; i < 16; i++) { + wait_vsync(); memset(screen, i, 320 * 200); getch(); } @@ -24,6 +24,12 @@ void set_mode(uint8_t mode) __dpmi_int(0x10, ®s); } +void wait_vsync() +{ + while (inportb(0x3da) & 8); + while (!(inportb(0x3da) & 8)); +} + void set_palette(const uint8_t *palette) { outportb(0x3c8, 0); @@ -5,6 +5,7 @@ uint8_t *open_framebuffer(); void close_framebuffer(); void set_mode(uint8_t mode); +void wait_vsync(); /* the palette is expected to be 8 bit per color, and will be converted to VGA's 6 bit per color */ void set_palette(const uint8_t *palette); |