From 6946f17b8cd4d64ed1dcff9772414f174f36d817 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 15 May 2022 05:48:23 +0100 Subject: [PATCH] AX: enable low-pass/biquad filtering of Wiimote audio --- Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h | 1 + Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h b/Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h index 8d224c6f57..f819c066aa 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h @@ -229,6 +229,7 @@ struct PBBiquadFilter union PBInfImpulseResponseWM { + u16 on; // 0: off, 2: biquad, other: low-pass PBLowPassFilter lpf; PBBiquadFilter biquad; }; diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h index 10d93ad7cc..59813ac229 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h @@ -562,6 +562,19 @@ void ProcessVoice(HLEAccelerator* accelerator, PB_TYPE& pb, const AXBuffers& buf // Wiimote mixing. if (pb.remote) { + if (new_filter && pb.remote_iir.on != 0) + { + // Only one filter at most for Wiimotes. + if (pb.remote_iir.on == 2) + { + BiquadFilter(samples, count, pb.remote_iir.biquad); + } + else + { + LowPassFilter(samples, count, pb.remote_iir.lpf); + } + } + // Old AXWii versions process ms per ms. u16 wm_count = count == 96 ? 18 : 6;