diff options
| author | unknown <sahyno1996@gmail.com> | 2025-10-12 17:03:14 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2025-10-12 17:03:14 +0200 |
| commit | a3ef2cc1838a007a2f424e88212aa6f1eb93eab3 (patch) | |
| tree | 6ab37fe23b6d30a33a352deb631866720d012ecb /src/audio_core/renderer/command/command_buffer.cpp | |
| parent | 1e1b8ad33face3f3409aec50818d2b4fda8e6a0d (diff) | |
[audio_core/hid] Audio REV12+15 support + HID fixes (#2719)
This fixes newer updates / games.
Implements partial audio rev15, rev13, rev12 and HID issues on SDK20+ games.
Credits to LotP (Ryubing) and Zephyron (Citron) for their research and implementation.
Co-authored-by: Zephyron <zephyron@citron-emu.org>
Co-authored-by: Shinmegumi <shinmegumi@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2719
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: unknown <sahyno1996@gmail.com>
Co-committed-by: unknown <sahyno1996@gmail.com>
Diffstat (limited to 'src/audio_core/renderer/command/command_buffer.cpp')
| -rw-r--r-- | src/audio_core/renderer/command/command_buffer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/audio_core/renderer/command/command_buffer.cpp b/src/audio_core/renderer/command/command_buffer.cpp index d680e0c74b..a0a574fc64 100644 --- a/src/audio_core/renderer/command/command_buffer.cpp +++ b/src/audio_core/renderer/command/command_buffer.cpp @@ -237,6 +237,13 @@ void CommandBuffer::GenerateBiquadFilterCommand(const s32 node_id, VoiceInfo& vo cmd.biquad = voice_info.biquads[biquad_index]; + if (voice_info.use_float_biquads) { + cmd.biquad_float = voice_info.biquads_float[biquad_index]; + cmd.use_float_coefficients = true; + } else { + cmd.use_float_coefficients = false; + } + cmd.state = memory_pool->Translate(CpuAddr(voice_state.biquad_states[biquad_index].data()), MaxBiquadFilters * sizeof(VoiceState::BiquadFilterState)); @@ -263,6 +270,9 @@ void CommandBuffer::GenerateBiquadFilterCommand(const s32 node_id, EffectInfoBas cmd.biquad.b = parameter.b; cmd.biquad.a = parameter.a; + // Effects use legacy fixed-point format + cmd.use_float_coefficients = false; + cmd.state = memory_pool->Translate(CpuAddr(state), MaxBiquadFilters * sizeof(VoiceState::BiquadFilterState)); @@ -658,6 +668,13 @@ void CommandBuffer::GenerateMultitapBiquadFilterCommand(const s32 node_id, Voice cmd.output = buffer_count + channel; cmd.biquads = voice_info.biquads; + if (voice_info.use_float_biquads) { + cmd.biquads_float = voice_info.biquads_float; + cmd.use_float_coefficients = true; + } else { + cmd.use_float_coefficients = false; + } + cmd.states[0] = memory_pool->Translate(CpuAddr(voice_state.biquad_states[0].data()), MaxBiquadFilters * sizeof(VoiceState::BiquadFilterState)); |
