brokem implementation on main.rs - no regression

This commit is contained in:
2026-08-09 18:28:42 -05:00
parent d29dea2d25
commit 2964e6fad2
5 changed files with 181 additions and 18 deletions
+22 -4
View File
@@ -12,11 +12,29 @@ use crate::cpu::Cpu;
fn main() {
let args: Vec<String> = std::env::args().collect();
match args.len() {
1 => run_nestest(),
3 if args[1] == "blargg" => run_blargg(&args[2]),
2 => run_cart(&args[1]),
_ => eprintln!("usage: rnes [<rom> | blargg <rom>]"),
}
}
if args.len() > 1 {
run_blargg(&args[1]);
} else {
run_nestest();
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
let mut renderer = PpmRenderer::new();
for _ in 0..frames { // a few frames to settle the title screen
while !bus.ppu.frame_done() {
let cycles = cpu.step(&mut bus);
bus.ppu.tick(&mut bus.cart, cycles as u64); // 3 PPU dots per CPU cycle
}
if bus.ppu.take_nmi() { cpu.set_nmi(); } // loop bridges NMI
renderer.present(bus.ppu.framebuffer(), 256, 240);
bus.ppu.begin_frame();
}
}