broken PPU imp

This commit is contained in:
2026-08-09 19:46:07 -05:00
parent 2964e6fad2
commit d758fae787
5 changed files with 245 additions and 24 deletions
+10 -7
View File
@@ -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();
}
}