Files
choco-chip8/Peripherals.hpp

46 lines
902 B
C++

#pragma once
#include <bitset>
namespace chocochip8 {
constexpr size_t gcWidth = 128;
constexpr size_t gcHeight = 64;
using Scanline = std::bitset<gcWidth>;
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