diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-01-18 00:05:53 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-01-18 00:05:53 +0100 |
| commit | d5a52cc491a222f1b7d33fa6789bed617ec6638b (patch) | |
| tree | a1c849e94620eb2c132fbd1a61898ef51ce167ba /src/nes/nes.cc | |
| parent | 9d80b5b8a61bd8c2336f5032de8b84fea15d685f (diff) | |
cpu: bugfixes
Diffstat (limited to 'src/nes/nes.cc')
| -rw-r--r-- | src/nes/nes.cc | 16 |
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 |
