Add delay timer
This commit is contained in:
parent
e251e8fdbd
commit
801cbc64df
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(())
|
||||
|
|
Loading…
Reference in New Issue