DolphinAnalytics: Add READS_BOUNDING_BOX game quirk

This commit is contained in:
Pokechu22 2023-05-06 17:18:17 -07:00
parent 2319210d85
commit 810eb70f0e
3 changed files with 10 additions and 1 deletions

View File

@ -136,7 +136,7 @@ void DolphinAnalytics::ReportGameStart()
} }
// Keep in sync with enum class GameQuirk definition. // Keep in sync with enum class GameQuirk definition.
constexpr std::array<const char*, 27> GAME_QUIRKS_NAMES{ constexpr std::array<const char*, 28> GAME_QUIRKS_NAMES{
"directly-reads-wiimote-input", "directly-reads-wiimote-input",
"uses-DVDLowStopLaser", "uses-DVDLowStopLaser",
"uses-DVDLowOffset", "uses-DVDLowOffset",
@ -164,6 +164,7 @@ constexpr std::array<const char*, 27> GAME_QUIRKS_NAMES{
"mismatched-gpu-normals-between-cp-and-xf", "mismatched-gpu-normals-between-cp-and-xf",
"mismatched-gpu-tex-coords-between-cp-and-xf", "mismatched-gpu-tex-coords-between-cp-and-xf",
"mismatched-gpu-matrix-indices-between-cp-and-xf", "mismatched-gpu-matrix-indices-between-cp-and-xf",
"reads-bounding-box",
}; };
static_assert(GAME_QUIRKS_NAMES.size() == static_cast<u32>(GameQuirk::COUNT), static_assert(GAME_QUIRKS_NAMES.size() == static_cast<u32>(GameQuirk::COUNT),
"Game quirks names and enum definition are out of sync."); "Game quirks names and enum definition are out of sync.");

View File

@ -89,6 +89,11 @@ enum class GameQuirk
// but testing is needed to find out which of these is actually used for what. // but testing is needed to find out which of these is actually used for what.
MISMATCHED_GPU_MATRIX_INDICES_BETWEEN_CP_AND_XF, MISMATCHED_GPU_MATRIX_INDICES_BETWEEN_CP_AND_XF,
// Only a few games use the Bounding Box feature. Note that every game initializes the bounding
// box registers (using BPMEM_CLEARBBOX1/BPMEM_CLEARBBOX2) on startup, as part of the SDK, but
// only a few read them (from PE_BBOX_LEFT etc.)
READS_BOUNDING_BOX,
COUNT, COUNT,
}; };

View File

@ -20,6 +20,7 @@
#include "Core/Config/MainSettings.h" #include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/DolphinAnalytics.h"
#include "Core/System.h" #include "Core/System.h"
// TODO: ugly // TODO: ugly
@ -171,6 +172,8 @@ u32 VideoBackendBase::Video_GetQueryResult(PerfQueryType type)
u16 VideoBackendBase::Video_GetBoundingBox(int index) u16 VideoBackendBase::Video_GetBoundingBox(int index)
{ {
DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::READS_BOUNDING_BOX);
if (!g_ActiveConfig.bBBoxEnable) if (!g_ActiveConfig.bBBoxEnable)
{ {
static bool warn_once = true; static bool warn_once = true;