From 6496288c4eff74a9af03b390db4a3e15faf3f896 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Tue, 12 May 2026 10:11:46 +0200 Subject: [PATCH] don't reallocate rdram during load state (#877) * don't reallocate rdram during load state * more --- src/savestates.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/savestates.rs b/src/savestates.rs index 75ec56d..2d5b409 100644 --- a/src/savestates.rs +++ b/src/savestates.rs @@ -126,6 +126,7 @@ pub fn load_savestate(device: &mut device::Device) { && let Ok(ra_state) = ui::storage::decompress_file(savestate, "ra_state") && let Ok(state) = postcard::from_bytes::(&device_bytes) && let Ok(saves) = postcard::from_bytes(&save_bytes) + && device.rdram.size == state.rdram.size { device.ui.storage.saves = saves; @@ -139,7 +140,10 @@ pub fn load_savestate(device: &mut device::Device) { device.memory = state.memory; device.rsp = state.rsp; device.rdp = state.rdp; - device.rdram = state.rdram; + + device.rdram.mem.clone_from(&state.rdram.mem); + device.rdram.regs = state.rdram.regs; + device.mi = state.mi; device.pi = state.pi; device.vi = state.vi; @@ -217,6 +221,7 @@ pub fn load_savestate(device: &mut device::Device) { ui::audio::init_game_audio(device); ui::video::load_state(device, rdp_state.as_ptr()); + retroachievements::set_dmem(device.rdram.mem.as_ptr(), device.rdram.size as usize); if !ra_state.is_empty() { retroachievements::load_state(ra_state.as_ptr(), ra_state.len()); } else {