From 0f24863561b7c609395b59ab73e634509d3111d8 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 23 Jan 2025 22:10:55 +0100 Subject: copy reference implementation --- lib/nes/ref/controller.hh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/nes/ref/controller.hh (limited to 'lib/nes/ref/controller.hh') diff --git a/lib/nes/ref/controller.hh b/lib/nes/ref/controller.hh new file mode 100644 index 0000000..231653c --- /dev/null +++ b/lib/nes/ref/controller.hh @@ -0,0 +1,30 @@ +#pragma once + +#include "nes/util/button-mask.hh" + +namespace nes::ref +{ + class controller + { + button_mask pressed_; + unsigned index_{ 0 }; + bool strobing_{ false }; + + public: + explicit controller() = default; + + controller(controller const&) = delete; + controller(controller&&) = delete; + auto operator=(controller const&) -> controller& = delete; + auto operator=(controller&&) -> controller& = delete; + + auto get_pressed() const -> button_mask { return pressed_;} + auto get_pressed() -> button_mask& { return pressed_; } + auto set_pressed(button_mask const value) -> void { pressed_ = value; } + + // IO register + + auto read() -> std::uint8_t; + auto write(std::uint8_t) -> void; + }; +} // namespace nes::ref \ No newline at end of file -- cgit v1.3.1