summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui_sdl.c50
1 files changed, 46 insertions, 4 deletions
diff --git a/ui_sdl.c b/ui_sdl.c
index 250947c..894e45c 100644
--- a/ui_sdl.c
+++ b/ui_sdl.c
@@ -27,7 +27,7 @@ void draw() {
int bit = byte & 0x07;
if ((vm.screen[byte>>3] & (1 << bit)) != 0) {
box.x = x * 10; box.y = y * 10;
- //SDL_RenderFillRect(r, &box);
+ SDL_RenderFillRect(r, &box);
SDL_RenderDrawRect(r, &box);
}
}
@@ -42,6 +42,7 @@ int main(void) {
init_vm();
int last_60hz = SDL_GetTicks();
+ int last_45hz = SDL_GetTicks();
SDL_Event e;
while (1) {
@@ -49,10 +50,48 @@ int main(void) {
switch (e.type) {
case SDL_KEYDOWN:
switch (e.key.keysym.sym) {
- case 'q':
+ case SDLK_ESCAPE:
SDL_Quit();
exit(0);
+ break;
+ case '1': vm.keyboard[0x0] = 1; break;
+ case '2': vm.keyboard[0x1] = 1; break;
+ case '3': vm.keyboard[0x2] = 1; break;
+ case '4': vm.keyboard[0x3] = 1; break;
+ case 'q': vm.keyboard[0x4] = 1; break;
+ case 'w': vm.keyboard[0x5] = 1; break;
+ case 'e': vm.keyboard[0x6] = 1; break;
+ case 'r': vm.keyboard[0x7] = 1; break;
+ case 'a': vm.keyboard[0x8] = 1; break;
+ case 's': vm.keyboard[0x9] = 1; break;
+ case 'd': vm.keyboard[0xA] = 1; break;
+ case 'f': vm.keyboard[0xB] = 1; break;
+ case 'z': vm.keyboard[0xC] = 1; break;
+ case 'x': vm.keyboard[0xD] = 1; break;
+ case 'c': vm.keyboard[0xE] = 1; break;
+ case 'v': vm.keyboard[0xF] = 1; break;
}
+ break;
+ case SDL_KEYUP:
+ switch (e.key.keysym.sym) {
+ case '1': vm.keyboard[0x0] = 0; break;
+ case '2': vm.keyboard[0x1] = 0; break;
+ case '3': vm.keyboard[0x2] = 0; break;
+ case '4': vm.keyboard[0x3] = 0; break;
+ case 'q': vm.keyboard[0x4] = 0; break;
+ case 'w': vm.keyboard[0x5] = 0; break;
+ case 'e': vm.keyboard[0x6] = 0; break;
+ case 'r': vm.keyboard[0x7] = 0; break;
+ case 'a': vm.keyboard[0x8] = 0; break;
+ case 's': vm.keyboard[0x9] = 0; break;
+ case 'd': vm.keyboard[0xA] = 0; break;
+ case 'f': vm.keyboard[0xB] = 0; break;
+ case 'z': vm.keyboard[0xC] = 0; break;
+ case 'x': vm.keyboard[0xD] = 0; break;
+ case 'c': vm.keyboard[0xE] = 0; break;
+ case 'v': vm.keyboard[0xF] = 0; break;
+ }
+ break;
}
int cur = SDL_GetTicks();
@@ -65,11 +104,14 @@ int main(void) {
vm.ST--;
}
- draw();
last_60hz = cur;
}
- //SDL_Delay(1);
+ if (cur - last_45hz >= (1000/45)) {
+ draw();
+ last_45hz = cur;
+ }
+
vm_step();
}
return 0;