From ebd4ac832a30b97a267514ec83b00651041c54f4 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 28 Sep 2019 16:25:41 -0400 Subject: add input --- ui_sdl.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file 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; -- cgit v1.2.3-101-g0448