diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2023-10-21 23:03:10 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2023-10-21 23:03:10 +0530 |
commit | 689fa26e124cebb42518ed7ca14185d80fff20b9 (patch) | |
tree | 1862525db9b429f860701cb37207777c0da8d0d1 | |
parent | 8e05017554078c2b13bf932ae9355d3366852d56 (diff) |
use a bitset for keys
-rw-r--r-- | src/chip8.hpp | 2 | ||||
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/platform.cpp | 67 | ||||
-rw-r--r-- | src/platform.hpp | 2 |
4 files changed, 37 insertions, 36 deletions
diff --git a/src/chip8.hpp b/src/chip8.hpp index ac49053..5072c2e 100644 --- a/src/chip8.hpp +++ b/src/chip8.hpp @@ -27,7 +27,7 @@ class Chip8 { uint16_t opcode; public: - uint8_t keypad[16] {}; + std::bitset<16> keypad; std::bitset<2048> video; private: diff --git a/src/main.cpp b/src/main.cpp index 0e60faa..583b4ad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,7 +28,7 @@ int main(int argc, char** argv) { bool quit = false; while (!quit) { - quit = platform.ProcessInput(chip8.keypad); + quit = platform.ProcessInput(&chip8.keypad); usleep(cycleDelay * 1000); diff --git a/src/platform.cpp b/src/platform.cpp index c5fe5bf..4738c66 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -1,4 +1,5 @@ #include <bitset> +#include <iostream> #include "platform.hpp" @@ -36,7 +37,7 @@ void Platform::Update(const std::bitset<2048>& bitset, int videoScale) { SDL_RenderPresent(renderer); } -bool Platform::ProcessInput(uint8_t* keys) { +bool Platform::ProcessInput(std::bitset<16>* keys) { bool quit = false; SDL_Event event; @@ -50,42 +51,42 @@ bool Platform::ProcessInput(uint8_t* keys) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: quit = true; - case SDLK_x: keys[0x0] = 1; break; - case SDLK_1: keys[0x1] = 1; break; - case SDLK_2: keys[0x2] = 1; break; - case SDLK_3: keys[0x3] = 1; break; - case SDLK_q: keys[0x4] = 1; break; - case SDLK_w: keys[0x5] = 1; break; - case SDLK_e: keys[0x6] = 1; break; - case SDLK_a: keys[0x7] = 1; break; - case SDLK_s: keys[0x8] = 1; break; - case SDLK_d: keys[0x9] = 1; break; - case SDLK_z: keys[0xA] = 1; break; - case SDLK_c: keys[0xB] = 1; break; - case SDLK_4: keys[0xC] = 1; break; - case SDLK_r: keys[0xD] = 1; break; - case SDLK_f: keys[0xE] = 1; break; - case SDLK_v: keys[0xF] = 1; break; + case SDLK_x: (*keys)[0x0] = 1; break; + case SDLK_1: (*keys)[0x1] = 1; break; + case SDLK_2: (*keys)[0x2] = 1; break; + case SDLK_3: (*keys)[0x3] = 1; break; + case SDLK_q: (*keys)[0x4] = 1; break; + case SDLK_w: (*keys)[0x5] = 1; break; + case SDLK_e: (*keys)[0x6] = 1; break; + case SDLK_a: (*keys)[0x7] = 1; break; + case SDLK_s: (*keys)[0x8] = 1; break; + case SDLK_d: (*keys)[0x9] = 1; break; + case SDLK_z: (*keys)[0xA] = 1; break; + case SDLK_c: (*keys)[0xB] = 1; break; + case SDLK_4: (*keys)[0xC] = 1; break; + case SDLK_r: (*keys)[0xD] = 1; break; + case SDLK_f: (*keys)[0xE] = 1; break; + case SDLK_v: (*keys)[0xF] = 1; break; } break; case SDL_KEYUP: switch (event.key.keysym.sym) { - case SDLK_x: keys[0x0] = 0; break; - case SDLK_1: keys[0x1] = 0; break; - case SDLK_2: keys[0x2] = 0; break; - case SDLK_3: keys[0x3] = 0; break; - case SDLK_q: keys[0x4] = 0; break; - case SDLK_w: keys[0x5] = 0; break; - case SDLK_e: keys[0x6] = 0; break; - case SDLK_a: keys[0x7] = 0; break; - case SDLK_s: keys[0x8] = 0; break; - case SDLK_d: keys[0x9] = 0; break; - case SDLK_z: keys[0xA] = 0; break; - case SDLK_c: keys[0xB] = 0; break; - case SDLK_4: keys[0xC] = 0; break; - case SDLK_r: keys[0xD] = 0; break; - case SDLK_f: keys[0xE] = 0; break; - case SDLK_v: keys[0xF] = 0; break; + case SDLK_x: (*keys)[0x0] = 0; break; + case SDLK_1: (*keys)[0x1] = 0; break; + case SDLK_2: (*keys)[0x2] = 0; break; + case SDLK_3: (*keys)[0x3] = 0; break; + case SDLK_q: (*keys)[0x4] = 0; break; + case SDLK_w: (*keys)[0x5] = 0; break; + case SDLK_e: (*keys)[0x6] = 0; break; + case SDLK_a: (*keys)[0x7] = 0; break; + case SDLK_s: (*keys)[0x8] = 0; break; + case SDLK_d: (*keys)[0x9] = 0; break; + case SDLK_z: (*keys)[0xA] = 0; break; + case SDLK_c: (*keys)[0xB] = 0; break; + case SDLK_4: (*keys)[0xC] = 0; break; + case SDLK_r: (*keys)[0xD] = 0; break; + case SDLK_f: (*keys)[0xE] = 0; break; + case SDLK_v: (*keys)[0xF] = 0; break; } } } diff --git a/src/platform.hpp b/src/platform.hpp index 9b78818..872f84d 100644 --- a/src/platform.hpp +++ b/src/platform.hpp @@ -15,7 +15,7 @@ class Platform { public: void Update(const std::bitset<2048>& bitset, int videoScale); - bool ProcessInput(uint8_t* keys); + bool ProcessInput(std::bitset<16>* keys); private: SDL_Window* window {}; |