broken PPU imp
This commit is contained in:
+10
-7
@@ -9,6 +9,8 @@ mod ppu;
|
||||
use crate::bus::{Bus, NesBus};
|
||||
use crate::cartridge::Cartridge;
|
||||
use crate::cpu::Cpu;
|
||||
use crate::render::{PpmRenderer, Renderer};
|
||||
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
@@ -24,17 +26,18 @@ fn run_cart(path: &str) {
|
||||
let cart = Cartridge::from_file(path).unwrap();
|
||||
let mut bus = NesBus::new(cart);
|
||||
let mut cpu = Cpu::new();
|
||||
cpu.reset(&mut bus); // boot from $FFFC-$FFFD
|
||||
cpu.reset(&mut bus);
|
||||
let mut renderer = PpmRenderer::new();
|
||||
let frames: u32 = 60;
|
||||
|
||||
for _ in 0..frames { // a few frames to settle the title screen
|
||||
while !bus.ppu.frame_done() {
|
||||
for _ in 0..frames {
|
||||
while !bus.frame_done() {
|
||||
let cycles = cpu.step(&mut bus);
|
||||
bus.ppu.tick(&mut bus.cart, cycles as u64); // 3 PPU dots per CPU cycle
|
||||
bus.tick_ppu(cycles as u64);
|
||||
}
|
||||
if bus.ppu.take_nmi() { cpu.set_nmi(); } // loop bridges NMI
|
||||
renderer.present(bus.ppu.framebuffer(), 256, 240);
|
||||
bus.ppu.begin_frame();
|
||||
if bus.take_nmi() { cpu.set_nmi(); }
|
||||
renderer.present(bus.framebuffer(), 256, 240);
|
||||
bus.begin_frame();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user