aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2023-10-21 23:03:10 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2023-10-21 23:03:10 +0530
commit689fa26e124cebb42518ed7ca14185d80fff20b9 (patch)
tree1862525db9b429f860701cb37207777c0da8d0d1
parent8e05017554078c2b13bf932ae9355d3366852d56 (diff)
use a bitset for keys
-rw-r--r--src/chip8.hpp2
-rw-r--r--src/main.cpp2
-rw-r--r--src/platform.cpp67
-rw-r--r--src/platform.hpp2
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 {};