diff options
| author | 2019-09-28 16:25:41 -0400 | |
|---|---|---|
| committer | 2019-09-28 16:25:41 -0400 | |
| commit | ebd4ac832a30b97a267514ec83b00651041c54f4 (patch) | |
| tree | f70805e017b6673b9bd84bea2e9ec2f1f01a4e75 | |
| parent | 8da00c33383818955cf3166304756e927797f2c9 (diff) | |
| download | chip8-ebd4ac832a30b97a267514ec83b00651041c54f4.tar.gz chip8-ebd4ac832a30b97a267514ec83b00651041c54f4.tar.bz2 chip8-ebd4ac832a30b97a267514ec83b00651041c54f4.zip | |
add input
| -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; |