summaryrefslogtreecommitdiff
path: root/src/nes/nes.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nes/nes.cc')
-rw-r--r--src/nes/nes.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/nes/nes.cc b/src/nes/nes.cc
index 2a44ced..0579735 100644
--- a/src/nes/nes.cc
+++ b/src/nes/nes.cc
@@ -1,4 +1,5 @@
#include "nes/nes.hh"
+#include "nes/mapper.hh"
#include "nes/display.hh"
#include "nes/util/rgb.hh"
#include <iostream>
@@ -8,6 +9,8 @@ namespace nes
nes::nes(cartridge cartridge, display& display)
: cartridge_{ std::move(cartridge) }
, display_{ display }
+ , mapper_{ mapper::select(cartridge_) }
+ , cpu_{ ppu_, mapper_, controller_1_, controller_2_ }
{
if (!cartridge_.is_valid())
{
@@ -15,12 +18,18 @@ namespace nes
std::abort();
}
- display.clear(rgb::from_hex(0xFF0000));
- display.switch_buffers();
+ display_.clear(rgb{ animation_progress_, animation_progress_, animation_progress_ });
+ display_.switch_buffers();
}
- auto nes::step(std::uint64_t delta_ms) -> void
+ auto nes::step(std::chrono::microseconds const delta) -> void
{
- std::cout << "Step: " << delta_ms << "ms\n";
+ current_cycles_ += cycle_count::from_duration(delta);
+ cpu_.step_to(current_cycles_);
+ ppu_.step_to(current_cycles_);
+
+ animation_progress_ -= 2;
+ display_.clear(rgb{ animation_progress_, animation_progress_, animation_progress_ });
+ display_.switch_buffers();
}
} // namespace nes \ No newline at end of file