summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 22:10:36 +0100
committerSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 22:10:36 +0100
commitb387586aaecf8970af93840d1441facf02a650ad (patch)
tree2f5430c538f3c8183d1d2e51e4950acdece43afa /src/main.rs
parentdca34690935f600413cefdb9f09880b767b201ac (diff)
add some basic pacing
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs16
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")