summaryrefslogtreecommitdiff
path: root/lib/nes/controller.hh
blob: eb87545347f64b70d49924d83072a615e7abecd0 (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/util/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