started work on the CHIP-8 interpreter

This commit is contained in:
2024-11-26 06:52:49 -05:00
parent 3e5da27250
commit 7069e0ae49
7 changed files with 270 additions and 16 deletions

41
Peripherals.hpp Normal file
View File

@@ -0,0 +1,41 @@
#pragma once
#include <array>
#include <bitset>
#include <memory>
namespace chocochip8 {
using Scanline = std::bitset<128>;
using Framebuffer = std::array<Scanline, 64>;
enum class Key {
KEY_0, KEY_1, KEY_2, KEY_3,
KEY_4, KEY_5, KEY_6, KEY_7,
KEY_8, KEY_9, KEY_A, KEY_B,
KEY_C, KEY_D, KEY_E, KEY_F
};
class Display {
public:
friend class Interpreter;
Display(): mpFramebuffer{std::make_unique<Framebuffer>()} {}
virtual ~Display() = default;
protected:
std::unique_ptr<Framebuffer> mpFramebuffer;
};
class Buzzer {
public:
virtual ~Buzzer() = default;
virtual void on() = 0;
virtual void off() = 0;
};
class Keypad {
public:
virtual ~Keypad() = default;
virtual void isKeyPressed(Key key) = 0;
};
}; // namespace chocochip8