mirror of
https://github.com/gopher64/gopher64.git
synced 2026-07-11 01:25:20 +02:00
add load state func for audio (#983)
* add load state func for audio * more * more
This commit is contained in:
+1
-2
@@ -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
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user