diff --git a/snes-core/src/cpu/bus.rs b/snes-core/src/cpu/bus.rs index 7bc1c01..32b3cfb 100644 --- a/snes-core/src/cpu/bus.rs +++ b/snes-core/src/cpu/bus.rs @@ -35,6 +35,12 @@ impl Bus { } } + pub fn hard_reset(&mut self) { + self.wram = [0; 0x10000]; + self.internal_registers = InternalRegisters::new(); + self.dma = DMA::new(); + } + fn read_wram(&self, address: u32) -> u8 { self.wram[(address & 0xFFFF) as usize] } diff --git a/snes-core/src/emulator.rs b/snes-core/src/emulator.rs index 3f7709d..3369ce9 100644 --- a/snes-core/src/emulator.rs +++ b/snes-core/src/emulator.rs @@ -40,7 +40,8 @@ impl Emulator { pub fn hard_reset(&mut self) { self.cpu = CPU::new(); - self.bus = Bus::new(); + self.bus.hard_reset(); + self.reset_vector(); } } diff --git a/snes-frontend/Cargo.toml b/snes-frontend/Cargo.toml index 87d9c75..db574b2 100644 --- a/snes-frontend/Cargo.toml +++ b/snes-frontend/Cargo.toml @@ -9,11 +9,11 @@ edition = "2021" snes-core = { path = "../snes-core" } # Frontend stuff -eframe = "0.26.0" +eframe = "0.29.1" env_logger = "0.10.1" rfd = "0.12.1" regex = "1.10.2" -wgpu = "0.19.0" +wgpu = "23.0.0" [features] wgpu = ["eframe/wgpu"] diff --git a/snes-frontend/src/emu_ui/menu.rs b/snes-frontend/src/emu_ui/menu.rs index 99dd335..07ea3b6 100644 --- a/snes-frontend/src/emu_ui/menu.rs +++ b/snes-frontend/src/emu_ui/menu.rs @@ -15,7 +15,6 @@ pub fn build_menu_bar(emulator: &mut Emulator, ui: &mut egui::Ui, state: &mut Ap emulator.hard_reset(); state.emulation_state.is_paused = false; state.emulation_state.one_tick_per_frame = false; - emulator.reset_vector(); println!("Loaded ROM"); }, Err(err) => println!("Error loading the ROM: {}", err), diff --git a/snes-frontend/src/main.rs b/snes-frontend/src/main.rs index 2155e39..5d70ef1 100644 --- a/snes-frontend/src/main.rs +++ b/snes-frontend/src/main.rs @@ -53,6 +53,6 @@ fn main() -> eframe::Result<()> { eframe::run_native( "SNES Emulator", native_options, - Box::new(|cc| Box::new(SnesEmulatorApp::new(cc))), + Box::new(|cc| Ok(Box::new(SnesEmulatorApp::new(cc)))), ) }