don't reallocate rdram during load state (#877)

* don't reallocate rdram during load state

* more
This commit is contained in:
Logan McNaughton 2026-05-12 10:11:46 +02:00 committed by GitHub
parent 1ab8987f2d
commit 6496288c4e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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::Device>(&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 {