Implement keypad simulation
diff --git a/verilog/sim/main.cpp b/verilog/sim/main.cpp
index a7d33bd..b98ede5 100644
--- a/verilog/sim/main.cpp
+++ b/verilog/sim/main.cpp
@@ -296,6 +296,43 @@
// Break out of the loop on quit
running = false;
}
+ else if ((event.type == SDL_KEYDOWN) || (event.type == SDL_KEYUP)) {
+ uint8_t keycode = 0;
+ switch (event.key.keysym.sym){
+ case SDLK_DOWN:
+ keycode = 0x80;
+ break;
+ case SDLK_UP:
+ keycode = 0x40;
+ break;
+ case SDLK_LEFT:
+ keycode = 0x20;
+ break;
+ case SDLK_RIGHT:
+ keycode = 0x10;
+ break;
+ case SDLK_z:
+ keycode = 0x08;
+ break;
+ case SDLK_x:
+ keycode = 0x04;
+ break;
+ case SDLK_a:
+ keycode = 0x02;
+ break;
+ case SDLK_s:
+ keycode = 0x01;
+ break;
+ default:
+ break;
+ }
+ if (event.type == SDL_KEYDOWN) {
+ core->key |= keycode;
+ }
+ else {
+ core->key &= ~keycode;
+ }
+ }
}
uint32_t ms_delta = SDL_GetTicks() - ms_tick;
int sim_freq = sim_tick / ms_delta;