use std::{ fs::File, io::BufReader, time::{Duration, Instant}, }; const SECOND: u64 = 1_000_000_000; const REFRESH_RATE: u64 = 60; const FRAME_DURATION: Duration = Duration::from_nanos(SECOND / REFRESH_RATE); fn main() -> std::io::Result<()> { if let Some(arg) = std::env::args().nth(1) { let mut chip8 = chip8::Chip8::new(); { let file = File::open(arg)?; let buf_reader = BufReader::new(file); chip8.load_rom(buf_reader)?; } loop { let start = Instant::now(); for _ in 0..8 { chip8.cycle(); } chip8.display()?; std::thread::sleep(FRAME_DURATION - start.elapsed()); } } else { println!("usage: chip8 rompath") } Ok(()) }