diff options
| author | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 22:10:36 +0100 |
|---|---|---|
| committer | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 22:10:36 +0100 |
| commit | b387586aaecf8970af93840d1441facf02a650ad (patch) | |
| tree | 2f5430c538f3c8183d1d2e51e4950acdece43afa /src/main.rs | |
| parent | dca34690935f600413cefdb9f09880b767b201ac (diff) | |
add some basic pacing
Diffstat (limited to 'src/main.rs')
| -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") |
