diff options
Diffstat (limited to 'ui.c')
| -rw-r--r-- | ui.c | 40 |
1 files changed, 34 insertions, 6 deletions
@@ -5,6 +5,7 @@ #include <stdlib.h> #include "chip8.h" +#include "util.h" void init_curses() { initscr(); @@ -14,6 +15,38 @@ void init_curses() { clear(); } +void draw() { + for (int x = 0; x < 64; x++) { + for (int y = 0; y < 32; y++) { + if (vm.screen[x][y]) { + mvaddstr(x * 2, y, "[]"); + } + } + } + + char buf[25]; + for (int i = 0; i < 7; i++) { + sprintf(buf, "V%x: 0x%x", i, vm.Vx[i]); + mvaddstr(34, 9 * i, buf); + } + for (int i = 7; i < 15; i++) { + sprintf(buf, "V%x: 0x%x", i, vm.Vx[i]); + mvaddstr(35, 9 * (i - 8), buf); + } + sprintf(buf, "Vf: 0x%x", vm.Vx[15]); + mvaddstr(36, 0, buf); + sprintf(buf, "SP: 0x%x", vm.SP); + mvaddstr(36, 9, buf); + sprintf(buf, "DT: 0x%x", vm.DT); + mvaddstr(36, 18, buf); + sprintf(buf, "ST: 0x%x", vm.ST); + mvaddstr(36, 27, buf); + sprintf(buf, "PC: 0x%x", vm.PC); + mvaddstr(36, 36, buf); + sprintf(buf, "I: 0x%x", vm.I); + mvaddstr(36, 46, buf); +} + void curses_thread(void* v) { char c; while(1) { @@ -22,12 +55,7 @@ void curses_thread(void* v) { endwin(); exit(1); } - mvaddstr(0, 0, "V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 VA VB VC VD VE VF"); - char buf[5]; - for (int i = 0; i < 16; i++) { - sprintf(buf, "%i", vm.Vx[i]); - mvaddstr(1, i * 4, buf); - } + draw(); usleep(100); } } |