From 2669d0d8af0e944961723788e3762c0b043c475f Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 18 Aug 2024 13:54:53 +0100 Subject: [PATCH] AX: add analytics quirks for wiimote filters I'm fairly sure the implementation is correct but I've not been able to find a game that actually makes use of these filters. --- Source/Core/Core/DolphinAnalytics.cpp | 4 +++- Source/Core/Core/DolphinAnalytics.h | 2 ++ Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/DolphinAnalytics.cpp b/Source/Core/Core/DolphinAnalytics.cpp index cc74b4d8af..5f54420013 100644 --- a/Source/Core/Core/DolphinAnalytics.cpp +++ b/Source/Core/Core/DolphinAnalytics.cpp @@ -137,7 +137,7 @@ void DolphinAnalytics::ReportGameStart() } // Keep in sync with enum class GameQuirk definition. -constexpr std::array GAME_QUIRKS_NAMES{ +constexpr std::array GAME_QUIRKS_NAMES{ "directly-reads-wiimote-input", "uses-DVDLowStopLaser", "uses-DVDLowOffset", @@ -158,6 +158,8 @@ constexpr std::array GAME_QUIRKS_NAMES{ "uses-cp-perf-command", "uses-unimplemented-ax-command", "uses-ax-initial-time-delay", + "uses-ax-wiimote-lowpass", + "uses-ax-wiimote-biquad", "sets-xf-clipdisable-bit-0", "sets-xf-clipdisable-bit-1", "sets-xf-clipdisable-bit-2", diff --git a/Source/Core/Core/DolphinAnalytics.h b/Source/Core/Core/DolphinAnalytics.h index b200bf8ea4..83a5a45822 100644 --- a/Source/Core/Core/DolphinAnalytics.h +++ b/Source/Core/Core/DolphinAnalytics.h @@ -72,6 +72,8 @@ enum class GameQuirk // We don't implement all AX features yet. USES_UNIMPLEMENTED_AX_COMMAND, USES_AX_INITIAL_TIME_DELAY, + USES_AX_WIIMOTE_LOWPASS, + USES_AX_WIIMOTE_BIQUAD, // We don't implement XFMEM_CLIPDISABLE yet. SETS_XF_CLIPDISABLE_BIT_0, diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h index 59813ac229..ad491196e2 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h @@ -567,10 +567,12 @@ void ProcessVoice(HLEAccelerator* accelerator, PB_TYPE& pb, const AXBuffers& buf // Only one filter at most for Wiimotes. if (pb.remote_iir.on == 2) { + DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::USES_AX_WIIMOTE_BIQUAD); BiquadFilter(samples, count, pb.remote_iir.biquad); } else { + DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::USES_AX_WIIMOTE_LOWPASS); LowPassFilter(samples, count, pb.remote_iir.lpf); } }