From d5a52cc491a222f1b7d33fa6789bed617ec6638b Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Sat, 18 Jan 2025 00:05:53 +0100 Subject: cpu: bugfixes --- src/nes/nes.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/nes/nes.cc') 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 -- cgit v1.3.1