chore: remove Cycle struct and begin scheduler design

This commit is contained in:
2021-09-12 04:55:14 -03:00
parent 10ac579c40
commit 6087e3b20b
8 changed files with 226 additions and 305 deletions

View File

@@ -1,14 +1,14 @@
use crate::cpu::Cpu as SM83;
use crate::instruction::cycle::Cycle;
use crate::joypad;
use crate::ppu::Ppu;
use crate::Cycle;
use anyhow::Result;
use gilrs::Gilrs;
use std::time::Duration;
use winit_input_helper::WinitInputHelper;
pub const SM83_CYCLE_TIME: Duration = Duration::from_nanos(1_000_000_000 / SM83_CLOCK_SPEED);
pub const CYCLES_IN_FRAME: Cycle = Cycle::new(456 * 154); // 456 Cycles times 154 scanlines
pub const CYCLES_IN_FRAME: Cycle = 456 * 154; // 456 Cycles times 154 scanlines
pub(crate) const SM83_CLOCK_SPEED: u64 = 0x40_0000; // Hz which is 4.194304Mhz
const DEFAULT_TITLE: &str = "DMG-01 Emulator";
@@ -34,7 +34,7 @@ pub fn run(
input: &WinitInputHelper,
target: Cycle,
) -> Cycle {
let mut elapsed = Cycle::new(0);
let mut elapsed = 0;
if let Some(event) = gamepad.next_event() {
joypad::handle_gamepad_input(game_boy.joypad_mut(), event);
@@ -49,7 +49,7 @@ pub fn run(
}
pub fn run_frame(game_boy: &mut SM83, gamepad: &mut Gilrs, input: &WinitInputHelper) -> Cycle {
let mut elapsed = Cycle::new(0);
let mut elapsed = 0;
if let Some(event) = gamepad.next_event() {
joypad::handle_gamepad_input(game_boy.joypad_mut(), event);