Add delay timer

This commit is contained in:
Michael Kohl 2021-04-04 23:16:27 +07:00
parent e251e8fdbd
commit 801cbc64df
2 changed files with 10 additions and 2 deletions

View File

@ -1,7 +1,7 @@
use crate::chip8::display::Screen;
use crate::chip8::keyboard::Keyboard;
use crate::chip8::memory::Memory;
use crate::chip8::registers::Registers;
use crate::chip8::registers::{Register, Registers};
use crate::chip8::stack::Stack;
pub struct Chip8 {
@ -22,4 +22,12 @@ impl Chip8 {
screen: Screen::new(),
}
}
pub fn delay_if_necessary(&mut self) -> () {
let delay_timer = self.registers.get(Register::DT);
if delay_timer > 0 {
::std::thread::sleep(::std::time::Duration::new(0, 1_000_000_000u32 / 60));
self.registers.set(Register::DT, delay_timer - 1);
}
}
}

View File

@ -85,7 +85,7 @@ fn main() -> Result<(), String> {
}
canvas.present();
::std::thread::sleep(::std::time::Duration::new(0, 1_000_000_000u32 / 60));
chip8.delay_if_necessary();
}
Ok(())