blob: 437075f355df2cfc07a822bced269a87bf18e8e3 (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#pragma once
#include "nes/util/cycle-count.hh"
#include "nes/cartridge.hh"
#include "nes/controller.hh"
#include "nes/cpu.hh"
#include "nes/ppu.hh"
#include "nes/mapper.hh"
namespace nes
{
class display;
struct snapshot;
/// The main console abstraction.
class nes
{
cartridge cartridge_;
display& display_;
controller controller_1_;
controller controller_2_;
mapper mapper_;
ppu ppu_;
cpu cpu_;
cycle_count current_cycles_;
public:
explicit nes(cartridge, display&);
nes(nes const&) = delete;
nes(nes&&) = delete;
auto operator=(nes const&) -> nes& = delete;
auto operator=(nes&&) -> nes& = delete;
auto get_controller_1() const -> controller const& { return controller_1_; }
auto ref_controller_1() -> controller& { return controller_1_; }
auto get_controller_2() const -> controller const& { return controller_2_; }
auto ref_controller_2() -> controller& { return controller_2_; }
auto step() -> void;
auto step(std::chrono::microseconds delta) -> void;
auto step(cycle_count delta) -> void;
auto step_to_nmi() -> void;
auto get_snapshot() -> snapshot;
};
} // namespace nes
|