summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: bb0ae710a396cadf4fce52304045c52dbcf24174 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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(())
}