summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2023-05-06 17:18:17 -0700
committerPokechu22 <Pokechu022@gmail.com>2023-05-06 17:18:17 -0700
commit810eb70f0ec94bf2d1de5cbff52ddc04551fb227 (patch)
tree1c31d312791d28effe32e505e56d072b9e0452f7 /Source
parent2319210d853899a4d0659c120cfa6162a108daed (diff)
DolphinAnalytics: Add READS_BOUNDING_BOX game quirk
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/DolphinAnalytics.cpp3
-rw-r--r--Source/Core/Core/DolphinAnalytics.h5
-rw-r--r--Source/Core/VideoCommon/VideoBackendBase.cpp3
3 files changed, 10 insertions, 1 deletions
diff --git a/Source/Core/Core/DolphinAnalytics.cpp b/Source/Core/Core/DolphinAnalytics.cpp
index b999b55e2a..4edb936343 100644
--- a/Source/Core/Core/DolphinAnalytics.cpp
+++ b/Source/Core/Core/DolphinAnalytics.cpp
@@ -136,7 +136,7 @@ void DolphinAnalytics::ReportGameStart()
}
// 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",
"uses-DVDLowStopLaser",
"uses-DVDLowOffset",
@@ -164,6 +164,7 @@ constexpr std::array<const char*, 27> GAME_QUIRKS_NAMES{
"mismatched-gpu-normals-between-cp-and-xf",
"mismatched-gpu-tex-coords-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),
"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 98c7d4a973..76e69f49c2 100644
--- a/Source/Core/Core/DolphinAnalytics.h
+++ b/Source/Core/Core/DolphinAnalytics.h
@@ -89,6 +89,11 @@ enum class GameQuirk
// but testing is needed to find out which of these is actually used for what.
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,
};
diff --git a/Source/Core/VideoCommon/VideoBackendBase.cpp b/Source/Core/VideoCommon/VideoBackendBase.cpp
index b6f4fee2f3..9d6ff70664 100644
--- a/Source/Core/VideoCommon/VideoBackendBase.cpp
+++ b/Source/Core/VideoCommon/VideoBackendBase.cpp
@@ -20,6 +20,7 @@
#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
+#include "Core/DolphinAnalytics.h"
#include "Core/System.h"
// TODO: ugly
@@ -171,6 +172,8 @@ u32 VideoBackendBase::Video_GetQueryResult(PerfQueryType type)
u16 VideoBackendBase::Video_GetBoundingBox(int index)
{
+ DolphinAnalytics::Instance().ReportGameQuirk(GameQuirk::READS_BOUNDING_BOX);
+
if (!g_ActiveConfig.bBBoxEnable)
{
static bool warn_once = true;