#pragma once #include #include #include namespace chocochip8 { constexpr size_t gcWidth = 128; constexpr size_t gcHeight = 64; using Scanline = std::bitset; using Framebuffer = std::array; 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()} {} virtual ~Display() = default; protected: std::unique_ptr 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