diff options
| -rw-r--r-- | ui_sdl.c | 50 |
1 files changed, 46 insertions, 4 deletions
@@ -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; |