#pragma once #include namespace chocochip8 { constexpr size_t gcWidth = 128; constexpr size_t gcHeight = 64; using Scanline = std::bitset; 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: virtual ~Display() = default; virtual int blit(const Scanline& spriteScanline, int y) = 0; virtual void clear() = 0; }; class Buzzer { public: virtual ~Buzzer() = default; virtual void on() = 0; virtual void off() = 0; }; class Keypad { public: virtual ~Keypad() = default; virtual bool isKeyPressed(Key key) = 0; }; class CountdownTimer { public: virtual ~CountdownTimer() = default; virtual void set(unsigned value) = 0; virtual unsigned get() const = 0; }; }; // namespace chocochip8