Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #11817 from Pokechu22/solitaire-and-mahjong-boundi…
…ng-box

GameINI: Enable bounding box for "Solitaire & Mahjong"
  • Loading branch information
AdmiralCurtiss committed May 7, 2023
2 parents 99d7fe3 + 749c519 commit 2e9b7f1
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
17 changes: 17 additions & 0 deletions Data/Sys/GameSettings/RSO.ini
@@ -0,0 +1,17 @@
# RSOE4Z, RSOP4Z - Solitaire & Mahjong

[Core]
# Values set here will override the main Dolphin settings.

[OnLoad]
# Add memory patches to be loaded once on boot here.

[OnFrame]
# Add memory patches to be applied every frame here.

[ActionReplay]
# Add action replay cheats here.

[Video_Hacks]
BBoxEnable = True
ImmediateXFBEnable = False
3 changes: 2 additions & 1 deletion Source/Core/Core/DolphinAnalytics.cpp
Expand Up @@ -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",
Expand Down Expand Up @@ -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.");
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/Core/DolphinAnalytics.h
Expand Up @@ -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,
};

Expand Down
3 changes: 3 additions & 0 deletions Source/Core/VideoCommon/VideoBackendBase.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 2e9b7f1

Please sign in to comment.