GameSettings: Disable analog mode forcing instead of forcing digital controller
This commit is contained in:
@ -3,6 +3,7 @@
|
||||
#include "common/state_wrapper.h"
|
||||
#include "common/string_util.h"
|
||||
#include "host_interface.h"
|
||||
#include "settings.h"
|
||||
#include "system.h"
|
||||
#include <cmath>
|
||||
Log_SetChannel(AnalogController);
|
||||
@ -31,7 +32,17 @@ void AnalogController::Reset()
|
||||
ResetRumbleConfig();
|
||||
|
||||
if (m_force_analog_on_reset)
|
||||
SetAnalogMode(true);
|
||||
{
|
||||
if (g_settings.controller_disable_analog_mode_forcing)
|
||||
{
|
||||
g_host_interface->AddOSDMessage(
|
||||
g_host_interface->TranslateStdString(
|
||||
"OSDMessage", "Analog mode forcing is disabled by game settings. Controller will start in digital mode."),
|
||||
10.0f);
|
||||
}
|
||||
else
|
||||
SetAnalogMode(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool AnalogController::DoState(StateWrapper& sw)
|
||||
|
||||
@ -218,6 +218,7 @@ void Settings::Load(SettingsInterface& si)
|
||||
ParseControllerTypeName(
|
||||
si.GetStringValue("Controller2", "Type", GetControllerTypeName(DEFAULT_CONTROLLER_2_TYPE)).c_str())
|
||||
.value_or(DEFAULT_CONTROLLER_2_TYPE);
|
||||
controller_disable_analog_mode_forcing = false;
|
||||
|
||||
memory_card_types[0] =
|
||||
ParseMemoryCardTypeName(
|
||||
|
||||
@ -175,6 +175,8 @@ struct Settings
|
||||
bool bios_patch_fast_boot = false;
|
||||
|
||||
std::array<ControllerType, NUM_CONTROLLER_AND_CARD_PORTS> controller_types{};
|
||||
bool controller_disable_analog_mode_forcing = false;
|
||||
|
||||
std::array<MemoryCardType, NUM_CONTROLLER_AND_CARD_PORTS> memory_card_types{};
|
||||
std::array<std::string, NUM_CONTROLLER_AND_CARD_PORTS> memory_card_paths{};
|
||||
bool memory_card_use_playlist_title = true;
|
||||
|
||||
@ -19,7 +19,7 @@ std::unique_ptr<GameSettings::Entry> GetSettingsForGame(const std::string& game_
|
||||
if (game_code == "SLUS-00077")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::DisableUpscaling);
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
@ -138,111 +138,111 @@ std::unique_ptr<GameSettings::Entry> GetSettingsForGame(const std::string& game_
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::DisableUpscaling);
|
||||
gs->AddTrait(GameSettings::Trait::DisablePGXP);
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SCUS-94350")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SCUS-94900")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "PCPX-96085")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00590")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00403")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SCUS-94300")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00214")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00204")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00006")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00213")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SCES-00344")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00355")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::DisableUpscaling);
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00331")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::DisableUpscaling);
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00106")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00005")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-01265")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00601")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
@ -290,19 +290,19 @@ std::unique_ptr<GameSettings::Entry> GetSettingsForGame(const std::string& game_
|
||||
|
||||
if (game_code == "SLPM-86023")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00067")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLES-00524")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
@ -326,7 +326,7 @@ std::unique_ptr<GameSettings::Entry> GetSettingsForGame(const std::string& game_
|
||||
|
||||
if (game_code == "SLPS-02459")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
@ -344,110 +344,110 @@ std::unique_ptr<GameSettings::Entry> GetSettingsForGame(const std::string& game_
|
||||
|
||||
if (game_code == "SLUS-00102")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00152")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00603")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00348")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::DisableUpscaling);
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00042")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00561")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00035")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00057")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00014")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SCUS-94403")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00549")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00240")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00027")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00119")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00224")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00453")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00753")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
if (game_code == "SLUS-00811")
|
||||
{
|
||||
gs->AddTrait(GameSettings::Trait::ForceDigitalController);
|
||||
gs->AddTrait(GameSettings::Trait::DisableAnalogModeForcing);
|
||||
return gs;
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ std::array<std::pair<const char*, const char*>, static_cast<u32>(Trait::Count)>
|
||||
{"DisablePGXPTextureCorrection", TRANSLATABLE("GameSettingsTrait", "Disable PGXP Texture Correction")},
|
||||
{"ForcePGXPVertexCache", TRANSLATABLE("GameSettingsTrait", "Force PGXP Vertex Cache")},
|
||||
{"ForcePGXPCPUMode", TRANSLATABLE("GameSettingsTrait", "Force PGXP CPU Mode")},
|
||||
{"ForceDigitalController", TRANSLATABLE("GameSettingsTrait", "Force Digital Controller")},
|
||||
{"DisableAnalogModeForcing", TRANSLATABLE("GameSettingsTrait", "Disable Forcing Controller Analog Mode on Reset")},
|
||||
{"ForceRecompilerMemoryExceptions", TRANSLATABLE("GameSettingsTrait", "Force Recompiler Memory Exceptions")},
|
||||
{"ForceRecompilerICache", TRANSLATABLE("GameSettingsTrait", "Force Recompiler ICache")},
|
||||
}};
|
||||
@ -709,23 +709,9 @@ void Entry::ApplySettings(bool display_osd_messages) const
|
||||
g_settings.gpu_pgxp_cpu = true;
|
||||
}
|
||||
|
||||
if (HasTrait(Trait::ForceDigitalController))
|
||||
if (HasTrait(Trait::DisableAnalogModeForcing))
|
||||
{
|
||||
for (u32 i = 0; i < NUM_CONTROLLER_AND_CARD_PORTS; i++)
|
||||
{
|
||||
if (g_settings.controller_types[i] == ControllerType::AnalogController)
|
||||
{
|
||||
if (display_osd_messages)
|
||||
{
|
||||
g_host_interface->AddFormattedOSDMessage(
|
||||
osd_duration,
|
||||
g_host_interface->TranslateString("OSDMessage", "Controller %u changed to digital by game settings."),
|
||||
i + 1u);
|
||||
}
|
||||
|
||||
g_settings.controller_types[i] = ControllerType::DigitalController;
|
||||
}
|
||||
}
|
||||
g_settings.controller_disable_analog_mode_forcing = true;
|
||||
}
|
||||
|
||||
if (HasTrait(Trait::ForceRecompilerMemoryExceptions))
|
||||
|
||||
@ -24,7 +24,7 @@ enum class Trait : u32
|
||||
DisablePGXPTextureCorrection,
|
||||
ForcePGXPVertexCache,
|
||||
ForcePGXPCPUMode,
|
||||
ForceDigitalController,
|
||||
DisableAnalogModeForcing,
|
||||
ForceRecompilerMemoryExceptions,
|
||||
ForceRecompilerICache,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user