add load state func for audio (#983)

* add load state func for audio

* more

* more
This commit is contained in:
Logan McNaughton
2026-05-29 10:06:46 +02:00
committed by GitHub
parent d36ce10ab3
commit 7379484932
3 changed files with 23 additions and 4 deletions
+1 -2
View File
@@ -147,8 +147,7 @@ pub fn write_regs(device: &mut device::Device, address: u64, value: u32, mask: u
AI_DACRATE_REG => {
if device.ai.regs[reg as usize] != value & mask {
device.ai.freq = device.vi.clock / (1 + (value & mask)) as u64;
ui::audio::close_game_audio(&mut device.ui);
ui::audio::init_game_audio(device)
ui::audio::update_freq(device);
}
device::memory::masked_write_32(&mut device.ai.regs[reg as usize], value, mask)
}
+1 -2
View File
@@ -217,8 +217,7 @@ pub fn load_savestate(device: &mut device::Device) {
}
}
ui::audio::close_game_audio(&mut device.ui);
ui::audio::init_game_audio(device);
ui::audio::update_freq(device);
ui::video::load_state(device, rdp_state.as_ptr());
retroachievements::set_rdram(device.rdram.mem.as_ptr(), device.rdram.size as usize);
+21
View File
@@ -27,6 +27,27 @@ unsafe extern "C" fn audio_callback(
}
}
pub fn update_freq(device: &mut device::Device) {
let game_audio_spec = sdl3_sys::audio::SDL_AudioSpec {
format: sdl3_sys::audio::SDL_AUDIO_S16LE,
freq: device.ai.freq as i32,
channels: 2,
};
unsafe {
sdl3_sys::audio::SDL_SetAudioStreamFormat(
device.ui.audio.audio_stream,
&game_audio_spec,
std::ptr::null(),
);
}
if device.ai.regs[device::ai::AI_STATUS_REG] & device::ai::AI_STATUS_BUSY != 0 {
resume_game_audio(&mut device.ui);
} else {
pause_game_audio(&mut device.ui);
}
}
pub fn init_game_audio(device: &mut device::Device) {
let game_audio_spec = sdl3_sys::audio::SDL_AudioSpec {
format: sdl3_sys::audio::SDL_AUDIO_S16LE,