diff options
| -rw-r--r-- | src/main.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index bfcb63a..bb0ae71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,12 @@ -use std::{fs::File, io::BufReader}; +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) { @@ -9,8 +17,12 @@ fn main() -> std::io::Result<()> { chip8.load_rom(buf_reader)?; } loop { - chip8.cycle(); + let start = Instant::now(); + for _ in 0..8 { + chip8.cycle(); + } chip8.display()?; + std::thread::sleep(FRAME_DURATION - start.elapsed()); } } else { println!("usage: chip8 rompath") |
