blob: 441e23609bbfc76f5b07e1c6e2f05555f0765b8e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#pragma once
#include "nes/sys/types/button-mask.hh"
namespace nes
{
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 ref_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
|