From f45bb89e971b578719ce3ef2313680e0ad633ed1 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 1 Aug 2021 03:40:06 +0100 Subject: [PATCH] DSPHLE: report games that use unimplemented AX features Not including GC DPL2 mixing here since it's easy to find games that use it. --- Source/Core/Core/DolphinAnalytics.cpp | 4 +++- Source/Core/Core/DolphinAnalytics.h | 4 ++++ Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp | 2 ++ Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/DolphinAnalytics.cpp b/Source/Core/Core/DolphinAnalytics.cpp index 11071d0678..fe7dfa4ab5 100644 --- a/Source/Core/Core/DolphinAnalytics.cpp +++ b/Source/Core/Core/DolphinAnalytics.cpp @@ -133,7 +133,7 @@ void DolphinAnalytics::ReportGameStart() } // Keep in sync with enum class GameQuirk definition. -constexpr std::array GAME_QUIRKS_NAMES{ +constexpr std::array GAME_QUIRKS_NAMES{ "icache-matters", "directly-reads-wiimote-input", "uses-DVDLowStopLaser", @@ -153,6 +153,8 @@ constexpr std::array GAME_QUIRKS_NAMES{ "uses-unknown-xf-command", "uses-maybe-invalid-cp-command", "uses-cp-perf-command", + "uses-unimplemented-ax-command", + "uses-ax-initial-time-delay", }; static_assert(GAME_QUIRKS_NAMES.size() == static_cast(GameQuirk::COUNT), "Game quirks names and enum definition are out of sync."); diff --git a/Source/Core/Core/DolphinAnalytics.h b/Source/Core/Core/DolphinAnalytics.h index 9d03a51836..9286072c2e 100644 --- a/Source/Core/Core/DolphinAnalytics.h +++ b/Source/Core/Core/DolphinAnalytics.h @@ -72,6 +72,10 @@ enum class GameQuirk // Track them separately. USES_CP_PERF_COMMAND, + // We don't implement all AX features yet. + USES_UNIMPLEMENTED_AX_COMMAND, + USES_AX_INITIAL_TIME_DELAY, + COUNT, }; diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp index 5e33593769..942ded787b 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp @@ -13,6 +13,7 @@ #include "Common/IOFile.h" #include "Common/Logging/Log.h" #include "Common/Swap.h" +#include "Core/DolphinAnalytics.h" #include "Core/HW/DSP.h" #include "Core/HW/DSPHLE/DSPHLE.h" #include "Core/HW/DSPHLE/MailHandler.h" @@ -173,6 +174,7 @@ void AXUCode::HandleCommandList() break; case CMD_UNK_08: + DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::USES_UNIMPLEMENTED_AX_COMMAND); curr_idx += 10; break; // TODO: check diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h index 1a72786fda..d732cc066d 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h @@ -17,6 +17,7 @@ #include "Common/CommonTypes.h" #include "Core/DSP/DSPAccelerator.h" +#include "Core/DolphinAnalytics.h" #include "Core/HW/DSP.h" #include "Core/HW/DSPHLE/UCodes/AX.h" #include "Core/HW/DSPHLE/UCodes/AXStructs.h" @@ -473,6 +474,7 @@ void ProcessVoice(PB_TYPE& pb, const AXBuffers& buffers, u16 count, AXMixControl if (pb.initial_time_delay.on) { // TODO + DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::USES_AX_INITIAL_TIME_DELAY); } #ifdef AX_WII