brokem implementation on main.rs - no regression
This commit is contained in:
+22
-4
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user