blob: c33036528afb2c362cf76b1942329e83bf2bcf11 (
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
31
|
#pragma once
#include "nes/sys/types/button-mask.hh"
#include "nes/common/types.hh"
namespace nes::sys
{
class controller
{
button_mask pressed_;
u32 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() -> u8;
auto write(u8) -> void;
};
} // namespace nes::sys
|