summaryrefslogtreecommitdiff
path: root/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui.c')
-rw-r--r--ui.c40
1 files changed, 34 insertions, 6 deletions
diff --git a/ui.c b/ui.c
index d48f3e1..2691674 100644
--- a/ui.c
+++ b/ui.c
@@ -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);
}
}