blob: db4385492efbd47ea79255a4c021ac2aa01796c7 (
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
|
#include "nes/app/application.hh"
#include "nes/app/input/input-device-keyboard.hh"
#include "nes/app/input/input-device-controller.hh"
#include <iostream>
namespace nes
{
namespace
{
constexpr auto file = std::string_view{ "/Users/hannes/Documents/temp/supermario.nes" };
} // namespace
application::application(display& display, input_device_keyboard& keyboard)
: display_{ display }
, input_manager_{ keyboard }
, console_{ cartridge::from_file(file), display_ }
{
if (console_.get_status() != status::success)
{
std::cerr << "Unable to load cartridge: " << to_string(console_.get_status()) << std::endl;
std::abort();
}
}
auto application::frame(std::chrono::microseconds const elapsed_time) -> void
{
console_.ref_controller_1().set_pressed(input_manager_.get_input_1().read_mask());
console_.ref_controller_2().set_pressed(input_manager_.get_input_2().read_mask());
console_.step(elapsed_time);
if (console_.get_status() != status::success)
{
std::cerr << "Invalid state: " << to_string(console_.get_status()) << std::endl;
std::abort();
}
}
} // namespace nes
|