fix(main): tie emulation to 60Hz on host machine

This commit is contained in:
2021-08-03 14:09:16 -05:00
parent 832e1b7633
commit 33be2e0e83
2 changed files with 44 additions and 29 deletions

View File

@@ -33,26 +33,39 @@ pub fn run(
game_boy: &mut SM83,
gamepad: &mut Gilrs,
input: &WinitInputHelper,
pending: Cycle,
target: Cycle,
) -> Cycle {
let mut elapsed = Cycle::new(0);
while elapsed < pending {
elapsed += run_unsynced(game_boy, gamepad, input);
while elapsed < target {
if GAMEPAD_ENABLED {
if let Some(event) = gamepad.next_event() {
joypad::handle_gamepad_input(game_boy.joypad_mut(), event);
}
}
joypad::handle_keyboard_input(game_boy.joypad_mut(), input);
elapsed += game_boy.step();
}
elapsed
}
pub fn run_unsynced(game_boy: &mut SM83, gamepad: &mut Gilrs, input: &WinitInputHelper) -> Cycle {
if GAMEPAD_ENABLED {
if let Some(event) = gamepad.next_event() {
joypad::handle_gamepad_input(game_boy.joypad_mut(), event);
pub fn run_frame(game_boy: &mut SM83, gamepad: &mut Gilrs, input: &WinitInputHelper) -> Cycle {
let mut elapsed = Cycle::new(0);
while elapsed < CYCLES_IN_FRAME {
if GAMEPAD_ENABLED {
if let Some(event) = gamepad.next_event() {
joypad::handle_gamepad_input(game_boy.joypad_mut(), event);
}
}
joypad::handle_keyboard_input(game_boy.joypad_mut(), input);
elapsed += game_boy.step();
}
joypad::handle_keyboard_input(game_boy.joypad_mut(), input);
game_boy.step()
elapsed
}
pub fn draw(ppu: &Ppu, frame: &mut [u8]) {