summaryrefslogtreecommitdiff
path: root/src/nes/nes.cc
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-01-18 00:05:53 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-01-18 00:05:53 +0100
commitd5a52cc491a222f1b7d33fa6789bed617ec6638b (patch)
treea1c849e94620eb2c132fbd1a61898ef51ce167ba /src/nes/nes.cc
parent9d80b5b8a61bd8c2336f5032de8b84fea15d685f (diff)
cpu: bugfixes
Diffstat (limited to 'src/nes/nes.cc')
-rw-r--r--src/nes/nes.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/nes/nes.cc b/src/nes/nes.cc
index 0579735..84f3309 100644
--- a/src/nes/nes.cc
+++ b/src/nes/nes.cc
@@ -10,6 +10,7 @@ namespace nes
: cartridge_{ std::move(cartridge) }
, display_{ display }
, mapper_{ mapper::select(cartridge_) }
+ , ppu_{ cpu_, mapper_ }
, cpu_{ ppu_, mapper_, controller_1_, controller_2_ }
{
if (!cartridge_.is_valid())
@@ -24,7 +25,12 @@ namespace nes
auto nes::step(std::chrono::microseconds const delta) -> void
{
- current_cycles_ += cycle_count::from_duration(delta);
+ step(cycle_count::from_duration(delta));
+ }
+
+ auto nes::step(cycle_count const delta) -> void
+ {
+ current_cycles_ += delta;
cpu_.step_to(current_cycles_);
ppu_.step_to(current_cycles_);
@@ -32,4 +38,12 @@ namespace nes
display_.clear(rgb{ animation_progress_, animation_progress_, animation_progress_ });
display_.switch_buffers();
}
+
+ auto nes::snapshot() -> test::status
+ {
+ auto res = test::status{};
+ res.sram = std::vector(cartridge_.get_ram(), cartridge_.get_ram() + cartridge_.get_ram_length());
+ cpu_.snapshot(res);
+ return res;
+ }
} // namespace nes \ No newline at end of file