Hotkeys: Rearrange categories for some shortcuts and improve naming

This commit is contained in:
Stenzek 2025-04-06 21:05:20 +10:00
parent e62f3bd4a8
commit 5034fb943c
No known key found for this signature in database
4 changed files with 318 additions and 262 deletions

View File

@ -155,134 +155,100 @@ static bool CanPause()
return false;
}
#define DEFINE_NON_ANDROID_HOTKEY(name, category, display_name, handler) \
DEFINE_HOTKEY(name, category, display_name, handler)
#else
#define DEFINE_NON_ANDROID_HOTKEY(name, category, display_name, handler)
#endif
BEGIN_HOTKEY_LIST(g_common_hotkeys)
DEFINE_HOTKEY("FastForward", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Fast Forward"),
DEFINE_NON_ANDROID_HOTKEY("OpenPauseMenu", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Open Pause Menu"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenPauseMenu();
})
DEFINE_NON_ANDROID_HOTKEY("OpenCheatsMenu", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Open Cheat Settings"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenCheatsMenu();
})
DEFINE_NON_ANDROID_HOTKEY("OpenAchievements", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Open Achievement List"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenAchievementsWindow();
})
DEFINE_NON_ANDROID_HOTKEY("OpenLeaderboards", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Open Leaderboard List"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenLeaderboardsWindow();
})
DEFINE_NON_ANDROID_HOTKEY("Screenshot", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Save Screenshot"), [](s32 pressed) {
if (!pressed)
System::SaveScreenshot();
})
DEFINE_NON_ANDROID_HOTKEY("TogglePause", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Toggle Pause"), [](s32 pressed) {
if (!pressed && CanPause())
System::PauseSystem(!System::IsPaused());
})
DEFINE_NON_ANDROID_HOTKEY("ToggleFullscreen", TRANSLATE_NOOP("Hotkeys", "Interface"),
TRANSLATE_NOOP("Hotkeys", "Toggle Fullscreen"), [](s32 pressed) {
if (!pressed)
Host::SetFullscreen(!Host::IsFullscreen());
})
DEFINE_HOTKEY("FastForward", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Fast Forward (Hold)"),
[](s32 pressed) {
if (pressed < 0)
return;
System::SetFastForwardEnabled(pressed > 0);
})
DEFINE_HOTKEY("ToggleFastForward", TRANSLATE_NOOP("Hotkeys", "General"),
TRANSLATE_NOOP("Hotkeys", "Toggle Fast Forward"), [](s32 pressed) {
DEFINE_HOTKEY("ToggleFastForward", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Fast Forward (Toggle)"), [](s32 pressed) {
if (!pressed)
System::SetFastForwardEnabled(!System::IsFastForwardEnabled());
})
DEFINE_HOTKEY("Turbo", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Turbo"), [](s32 pressed) {
DEFINE_HOTKEY("Turbo", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Turbo (Hold)"), [](s32 pressed) {
if (pressed < 0)
return;
System::SetTurboEnabled(pressed > 0);
})
DEFINE_HOTKEY("ToggleTurbo", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Toggle Turbo"),
DEFINE_HOTKEY("ToggleTurbo", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Turbo (Toggle)"),
[](s32 pressed) {
if (!pressed)
System::SetTurboEnabled(!System::IsTurboEnabled());
})
#ifndef __ANDROID__
DEFINE_HOTKEY("ToggleFullscreen", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Toggle Fullscreen"),
[](s32 pressed) {
if (!pressed)
Host::SetFullscreen(!Host::IsFullscreen());
})
DEFINE_HOTKEY("TogglePause", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Toggle Pause"),
[](s32 pressed) {
if (!pressed && CanPause())
System::PauseSystem(!System::IsPaused());
})
DEFINE_HOTKEY("PowerOff", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Power Off System"),
[](s32 pressed) {
if (!pressed && CanPause())
Host::RequestSystemShutdown(true, g_settings.save_state_on_exit, true);
})
DEFINE_HOTKEY("OpenPauseMenu", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Open Pause Menu"),
[](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenPauseMenu();
})
DEFINE_HOTKEY("OpenCheatsMenu", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Open Cheat Settings"),
[](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenCheatsMenu();
})
DEFINE_HOTKEY("ChangeDisc", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Change Disc"),
[](s32 pressed) {
if (!pressed)
FullscreenUI::OpenDiscChangeMenu();
})
DEFINE_HOTKEY("Screenshot", TRANSLATE_NOOP("Hotkeys", "General"), TRANSLATE_NOOP("Hotkeys", "Save Screenshot"),
[](s32 pressed) {
if (!pressed)
System::SaveScreenshot();
})
DEFINE_HOTKEY("ToggleMediaCapture", TRANSLATE_NOOP("Hotkeys", "General"),
TRANSLATE_NOOP("Hotkeys", "Toggle Media Capture"), [](s32 pressed) {
if (!pressed)
{
if (System::GetMediaCapture())
System::StopMediaCapture();
else
System::StartMediaCapture();
}
})
DEFINE_HOTKEY("OpenAchievements", TRANSLATE_NOOP("Hotkeys", "General"),
TRANSLATE_NOOP("Hotkeys", "Open Achievement List"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenAchievementsWindow();
})
DEFINE_HOTKEY("OpenLeaderboards", TRANSLATE_NOOP("Hotkeys", "General"),
TRANSLATE_NOOP("Hotkeys", "Open Leaderboard List"), [](s32 pressed) {
if (!pressed && CanPause())
FullscreenUI::OpenLeaderboardsWindow();
})
#endif
DEFINE_HOTKEY("RecordSingleFrameGPUDump", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Record Single Frame GPU Trace"), [](s32 pressed) {
if (!pressed)
System::StartRecordingGPUDump(nullptr, 1);
})
DEFINE_HOTKEY("RecordMultiFrameGPUDump", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Record Multi-Frame GPU Trace"), [](s32 pressed) {
if (pressed > 0)
System::StartRecordingGPUDump(nullptr, 0);
else
System::StopRecordingGPUDump();
})
DEFINE_NON_ANDROID_HOTKEY("PowerOff", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Power Off System"), [](s32 pressed) {
if (!pressed && CanPause())
Host::RequestSystemShutdown(true, g_settings.save_state_on_exit, true);
})
DEFINE_HOTKEY("Reset", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Reset System"), [](s32 pressed) {
if (!pressed)
Host::RunOnCPUThread(System::ResetSystem);
})
DEFINE_HOTKEY("SwapMemoryCards", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Swap Memory Card Slots"), [](s32 pressed) {
if (!pressed)
System::SwapMemoryCards();
})
#ifndef __ANDROID__
DEFINE_HOTKEY("FrameStep", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Frame Step"),
[](s32 pressed) {
if (!pressed)
System::DoFrameStep();
})
#endif
DEFINE_NON_ANDROID_HOTKEY("ChangeDisc", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Change Disc"),
[](s32 pressed) {
if (!pressed)
FullscreenUI::OpenDiscChangeMenu();
})
DEFINE_HOTKEY("Rewind", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Rewind"), [](s32 pressed) {
if (pressed < 0)
@ -290,9 +256,32 @@ DEFINE_HOTKEY("Rewind", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hot
System::SetRewindState(pressed > 0);
})
DEFINE_NON_ANDROID_HOTKEY("FrameStep", TRANSLATE_NOOP("Hotkeys", "System"), TRANSLATE_NOOP("Hotkeys", "Frame Step"),
[](s32 pressed) {
if (!pressed)
System::DoFrameStep();
})
DEFINE_HOTKEY("SwapMemoryCards", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Swap Memory Card Slots"), [](s32 pressed) {
if (!pressed)
System::SwapMemoryCards();
})
DEFINE_NON_ANDROID_HOTKEY("ToggleMediaCapture", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Toggle Media Capture"), [](s32 pressed) {
if (!pressed)
{
if (System::GetMediaCapture())
System::StopMediaCapture();
else
System::StartMediaCapture();
}
})
DEFINE_HOTKEY("ToggleOverclocking", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Toggle Clock Speed Control (Overclocking)"), [](s32 pressed) {
if (!pressed && System::IsValid())
if (!pressed && System::IsValid() && !Achievements::IsHardcoreModeActive())
{
g_settings.cpu_overclock_enable = !g_settings.cpu_overclock_enable;
g_settings.UpdateOverclockActive();
@ -338,7 +327,8 @@ DEFINE_HOTKEY("DecreaseEmulationSpeed", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Decrease Emulation Speed"), [](s32 pressed) {
if (!pressed && System::IsValid())
{
g_settings.emulation_speed = std::max(g_settings.emulation_speed - 0.1f, 0.1f);
g_settings.emulation_speed =
std::max(g_settings.emulation_speed - 0.1f, Achievements::IsHardcoreModeActive() ? 1.0f : 0.1f);
System::UpdateSpeedLimiterState();
Host::AddIconOSDMessage(
"EmulationSpeedChange", ICON_FA_TACHOMETER_ALT,
@ -352,7 +342,8 @@ DEFINE_HOTKEY("ResetEmulationSpeed", TRANSLATE_NOOP("Hotkeys", "System"),
TRANSLATE_NOOP("Hotkeys", "Reset Emulation Speed"), [](s32 pressed) {
if (!pressed && System::IsValid())
{
g_settings.emulation_speed = Host::GetFloatSettingValue("Main", "EmulationSpeed", 1.0f);
g_settings.emulation_speed = std::max(Host::GetFloatSettingValue("Main", "EmulationSpeed", 1.0f),
Achievements::IsHardcoreModeActive() ? 1.0f : 0.1f);
System::UpdateSpeedLimiterState();
Host::AddIconOSDMessage(
"EmulationSpeedChange", ICON_FA_TACHOMETER_ALT,
@ -362,131 +353,6 @@ DEFINE_HOTKEY("ResetEmulationSpeed", TRANSLATE_NOOP("Hotkeys", "System"),
}
})
DEFINE_HOTKEY("ToggleSoftwareRendering", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle Software Rendering"), [](s32 pressed) {
if (!pressed && System::IsValid())
System::ToggleSoftwareRendering();
})
DEFINE_HOTKEY("TogglePGXP", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle PGXP"),
[](s32 pressed) {
if (!pressed && System::IsValid())
{
System::ClearMemorySaveStates(true, true);
g_settings.gpu_pgxp_enable = !g_settings.gpu_pgxp_enable;
GPUThread::UpdateSettings(true, false, false);
Host::AddKeyedOSDMessage("TogglePGXP",
g_settings.gpu_pgxp_enable ?
TRANSLATE_STR("OSDMessage", "PGXP is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP is now disabled."),
5.0f);
if (g_settings.gpu_pgxp_enable)
CPU::PGXP::Initialize();
else
CPU::PGXP::Shutdown();
// we need to recompile all blocks if pgxp is toggled on/off
CPU::CodeCache::Reset();
// need to swap interpreters
System::InterruptExecution();
}
})
DEFINE_HOTKEY("IncreaseResolutionScale", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Increase Resolution Scale"), [](s32 pressed) {
if (!pressed && System::IsValid())
HotkeyModifyResolutionScale(1);
})
DEFINE_HOTKEY("DecreaseResolutionScale", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Decrease Resolution Scale"), [](s32 pressed) {
if (!pressed && System::IsValid())
HotkeyModifyResolutionScale(-1);
})
DEFINE_HOTKEY("TogglePostProcessing", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle Post-Processing"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUPresenter::TogglePostProcessing();
})
DEFINE_HOTKEY("ReloadPostProcessingShaders", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Reload Post Processing Shaders"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUPresenter::ReloadPostProcessingSettings(true, true, true);
})
DEFINE_HOTKEY("ReloadTextureReplacements", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Reload Texture Replacements"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUThread::RunOnThread([]() { GPUTextureCache::ReloadTextureReplacements(true); });
})
DEFINE_HOTKEY("ToggleWidescreen", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle Widescreen"),
[](s32 pressed) {
if (!pressed)
System::ToggleWidescreen();
})
DEFINE_HOTKEY("TogglePGXPDepth", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle PGXP Depth Buffer"), [](s32 pressed) {
if (!pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable)
return;
System::ClearMemorySaveStates(true, true);
g_settings.gpu_pgxp_depth_buffer = !g_settings.gpu_pgxp_depth_buffer;
GPUThread::UpdateSettings(true, false, false);
Host::AddKeyedOSDMessage("TogglePGXPDepth",
g_settings.gpu_pgxp_depth_buffer ?
TRANSLATE_STR("OSDMessage", "PGXP Depth Buffer is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP Depth Buffer is now disabled."),
5.0f);
}
})
DEFINE_HOTKEY("TogglePGXPCPU", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle PGXP CPU Mode"),
[](s32 pressed) {
if (pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable)
return;
System::ClearMemorySaveStates(true, true);
// GPU thread is unchanged
g_settings.gpu_pgxp_cpu = !g_settings.gpu_pgxp_cpu;
Host::AddKeyedOSDMessage("TogglePGXPCPU",
g_settings.gpu_pgxp_cpu ?
TRANSLATE_STR("OSDMessage", "PGXP CPU mode is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP CPU mode is now disabled."),
5.0f);
CPU::PGXP::Shutdown();
CPU::PGXP::Initialize();
// we need to recompile all blocks if pgxp is toggled on/off
CPU::CodeCache::Reset();
// need to swap interpreters
System::InterruptExecution();
}
})
DEFINE_HOTKEY("ToggleOSD", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle On-Screen Display"),
[](s32 pressed) {
if (!pressed)
HotkeyToggleOSD();
})
DEFINE_HOTKEY("RotateClockwise", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Rotate Display Clockwise"), [](s32 pressed) {
if (!pressed)
@ -508,97 +374,216 @@ DEFINE_HOTKEY("RotateCounterclockwise", TRANSLATE_NOOP("Hotkeys", "Graphics"),
}
})
DEFINE_HOTKEY("ToggleOSD", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle On-Screen Display"),
[](s32 pressed) {
if (!pressed)
HotkeyToggleOSD();
})
DEFINE_HOTKEY("ToggleSoftwareRendering", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle Software Rendering"), [](s32 pressed) {
if (!pressed && System::IsValid())
System::ToggleSoftwareRendering();
})
DEFINE_HOTKEY("TogglePGXP", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle PGXP"),
[](s32 pressed) {
if (!pressed && System::IsValid())
{
System::ClearMemorySaveStates(true, true);
// This is pretty yikes, if PGXP was off we'll have already disabled all the dependent settings.
g_settings.gpu_pgxp_enable = !g_settings.gpu_pgxp_enable;
{
const auto lock = Host::GetSettingsLock();
const SettingsInterface& si = *Host::GetSettingsInterface();
if (g_settings.gpu_pgxp_enable)
g_settings.LoadPGXPSettings(si);
g_settings.FixIncompatibleSettings(si, false);
}
GPUThread::UpdateSettings(true, false, false);
Host::AddKeyedOSDMessage("TogglePGXP",
g_settings.gpu_pgxp_enable ?
TRANSLATE_STR("OSDMessage", "PGXP is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP is now disabled."),
Host::OSD_QUICK_DURATION);
if (g_settings.gpu_pgxp_enable)
CPU::PGXP::Initialize();
else
CPU::PGXP::Shutdown();
// we need to recompile all blocks if pgxp is toggled on/off
CPU::CodeCache::Reset();
// need to swap interpreters
System::InterruptExecution();
}
})
DEFINE_HOTKEY("TogglePGXPDepth", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle PGXP Depth Buffer"), [](s32 pressed) {
if (!pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable)
return;
System::ClearMemorySaveStates(true, true);
g_settings.gpu_pgxp_depth_buffer = !g_settings.gpu_pgxp_depth_buffer;
GPUThread::UpdateSettings(true, false, false);
Host::AddIconOSDMessage("TogglePGXPDepth", ICON_FA_SITEMAP,
g_settings.gpu_pgxp_depth_buffer ?
TRANSLATE_STR("OSDMessage", "PGXP Depth Buffer is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP Depth Buffer is now disabled."),
Host::OSD_QUICK_DURATION);
}
})
DEFINE_HOTKEY("ToggleWidescreen", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Toggle Widescreen"),
[](s32 pressed) {
if (!pressed)
System::ToggleWidescreen();
})
DEFINE_HOTKEY("TogglePostProcessing", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Toggle Post-Processing"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUPresenter::TogglePostProcessing();
})
DEFINE_HOTKEY("ReloadPostProcessingShaders", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Reload Post Processing Shaders"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUPresenter::ReloadPostProcessingSettings(true, true, true);
})
DEFINE_HOTKEY("ReloadTextureReplacements", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Reload Texture Replacements"), [](s32 pressed) {
if (!pressed && System::IsValid())
GPUThread::RunOnThread([]() { GPUTextureCache::ReloadTextureReplacements(true); });
})
DEFINE_HOTKEY("IncreaseResolutionScale", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Increase Resolution Scale"), [](s32 pressed) {
if (!pressed && System::IsValid())
HotkeyModifyResolutionScale(1);
})
DEFINE_HOTKEY("DecreaseResolutionScale", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Decrease Resolution Scale"), [](s32 pressed) {
if (!pressed && System::IsValid())
HotkeyModifyResolutionScale(-1);
})
DEFINE_HOTKEY("RecordSingleFrameGPUDump", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Record Single Frame GPU Trace"), [](s32 pressed) {
if (!pressed)
System::StartRecordingGPUDump(nullptr, 1);
})
DEFINE_HOTKEY("RecordMultiFrameGPUDump", TRANSLATE_NOOP("Hotkeys", "Graphics"),
TRANSLATE_NOOP("Hotkeys", "Record Multi-Frame GPU Trace"), [](s32 pressed) {
if (pressed > 0)
System::StartRecordingGPUDump(nullptr, 0);
else
System::StopRecordingGPUDump();
})
// See gte.cpp.
#ifndef __ANDROID__
DEFINE_HOTKEY("FreecamToggle", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Toggle"),
DEFINE_HOTKEY("FreecamToggle", TRANSLATE_NOOP("Hotkeys", "Free Camera"), TRANSLATE_NOOP("Hotkeys", "Freecam Toggle"),
[](s32 pressed) {
if (!pressed && !Achievements::IsHardcoreModeActive())
GTE::SetFreecamEnabled(!GTE::IsFreecamEnabled());
})
DEFINE_HOTKEY("FreecamReset", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Reset"),
DEFINE_HOTKEY("FreecamReset", TRANSLATE_NOOP("Hotkeys", "Free Camera"), TRANSLATE_NOOP("Hotkeys", "Freecam Reset"),
[](s32 pressed) {
if (!pressed && !Achievements::IsHardcoreModeActive())
GTE::ResetFreecam();
})
DEFINE_HOTKEY("FreecamMoveLeft", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Move Left"),
[](s32 pressed) {
DEFINE_HOTKEY("FreecamMoveLeft", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Move Left"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(0, std::max(static_cast<float>(pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamMoveRight", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamMoveRight", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Move Right"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(0, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamMoveUp", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Move Up"),
DEFINE_HOTKEY("FreecamMoveUp", TRANSLATE_NOOP("Hotkeys", "Free Camera"), TRANSLATE_NOOP("Hotkeys", "Freecam Move Up"),
[](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(1, std::max(static_cast<float>(pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamMoveDown", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Move Down"),
[](s32 pressed) {
DEFINE_HOTKEY("FreecamMoveDown", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Move Down"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(1, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamMoveForward", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamMoveForward", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Move Forward"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(2, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamMoveBackward", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamMoveBackward", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Move Backward"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamMoveAxis(2, std::max(static_cast<float>(pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRotateLeft", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamRotateLeft", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Rotate Left"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamRotateAxis(1, std::max(static_cast<float>(pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRotateRight", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamRotateRight", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Rotate Right"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamRotateAxis(1, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRotateForward", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamRotateForward", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Rotate Forward"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamRotateAxis(0, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRotateBackward", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamRotateBackward", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Rotate Backward"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamRotateAxis(0, std::max(static_cast<float>(pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRollLeft", TRANSLATE_NOOP("Hotkeys", "Graphics"), TRANSLATE_NOOP("Hotkeys", "Freecam Roll Left"),
[](s32 pressed) {
DEFINE_HOTKEY("FreecamRollLeft", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Roll Left"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
GTE::SetFreecamRotateAxis(2, std::min(static_cast<float>(-pressed), 0.0f));
})
DEFINE_HOTKEY("FreecamRollRight", TRANSLATE_NOOP("Hotkeys", "Graphics"),
DEFINE_HOTKEY("FreecamRollRight", TRANSLATE_NOOP("Hotkeys", "Free Camera"),
TRANSLATE_NOOP("Hotkeys", "Freecam Roll Right"), [](s32 pressed) {
if (Achievements::IsHardcoreModeActive())
return;
@ -768,4 +753,68 @@ MAKE_SAVE_STATE_HOTKEY(true, 10, TRANSLATE_NOOP("Hotkeys", "Save Global State 10
#undef MAKE_SAVE_STATE_HOTKEY
#undef MAKE_LOAD_STATE_HOTKEY
DEFINE_HOTKEY("TogglePGXPCPU", TRANSLATE_NOOP("Hotkeys", "Debugging"),
TRANSLATE_NOOP("Hotkeys", "Toggle PGXP CPU Mode"), [](s32 pressed) {
if (pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable)
return;
System::ClearMemorySaveStates(true, true);
// GPU thread is unchanged
g_settings.gpu_pgxp_cpu = !g_settings.gpu_pgxp_cpu;
Host::AddIconOSDMessage("TogglePGXPCPU", ICON_FA_BEZIER_CURVE,
g_settings.gpu_pgxp_cpu ?
TRANSLATE_STR("OSDMessage", "PGXP CPU mode is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP CPU mode is now disabled."),
Host::OSD_QUICK_DURATION);
CPU::PGXP::Shutdown();
CPU::PGXP::Initialize();
// we need to recompile all blocks if pgxp is toggled on/off
CPU::CodeCache::Reset();
// need to swap interpreters
System::InterruptExecution();
}
})
DEFINE_HOTKEY("TogglePGXPPreserveProjPrecision", TRANSLATE_NOOP("Hotkeys", "Debugging"),
TRANSLATE_NOOP("Hotkeys", "Toggle PGXP Preserve Projection Precision"), [](s32 pressed) {
if (pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable)
return;
// GPU thread is unchanged
g_settings.gpu_pgxp_preserve_proj_fp = !g_settings.gpu_pgxp_preserve_proj_fp;
Host::AddIconOSDMessage(
"TogglePGXPPreserveProjPrecision", ICON_FA_DRAW_POLYGON,
g_settings.gpu_pgxp_preserve_proj_fp ?
TRANSLATE_STR("OSDMessage", "PGXP Preserve Projection Precision is now enabled.") :
TRANSLATE_STR("OSDMessage", "PGXP Preserve Projection Precision is now disabled."),
Host::OSD_QUICK_DURATION);
}
})
DEFINE_HOTKEY("ToggleVRAMView", TRANSLATE_NOOP("Hotkeys", "Debugging"), TRANSLATE_NOOP("Hotkeys", "Toggle VRAM View"),
[](s32 pressed) {
if (pressed && System::IsValid())
{
if (!g_settings.gpu_pgxp_enable || Achievements::IsHardcoreModeActive())
return;
g_settings.gpu_show_vram = !g_settings.gpu_show_vram;
GPUThread::UpdateSettings(true, false, false);
Host::AddIconOSDMessage("ToggleVRAMView", ICON_FA_FILE_ALT,
g_settings.gpu_show_vram ?
TRANSLATE_STR("OSDMessage", "Now showing VRAM.") :
TRANSLATE_STR("OSDMessage", "Now showing display."),
Host::OSD_QUICK_DURATION);
}
})
END_HOTKEY_LIST()

View File

@ -265,17 +265,7 @@ void Settings::Load(const SettingsInterface& si, const SettingsInterface& contro
gpu_texture_cache = si.GetBoolValue("GPU", "EnableTextureCache", false);
display_24bit_chroma_smoothing = si.GetBoolValue("GPU", "ChromaSmoothing24Bit", false);
gpu_pgxp_enable = si.GetBoolValue("GPU", "PGXPEnable", false);
gpu_pgxp_culling = si.GetBoolValue("GPU", "PGXPCulling", true);
gpu_pgxp_texture_correction = si.GetBoolValue("GPU", "PGXPTextureCorrection", true);
gpu_pgxp_color_correction = si.GetBoolValue("GPU", "PGXPColorCorrection", false);
gpu_pgxp_vertex_cache = si.GetBoolValue("GPU", "PGXPVertexCache", false);
gpu_pgxp_cpu = si.GetBoolValue("GPU", "PGXPCPU", false);
gpu_pgxp_preserve_proj_fp = si.GetBoolValue("GPU", "PGXPPreserveProjFP", false);
gpu_pgxp_tolerance = si.GetFloatValue("GPU", "PGXPTolerance", -1.0f);
gpu_pgxp_depth_buffer = si.GetBoolValue("GPU", "PGXPDepthBuffer", false);
gpu_pgxp_disable_2d = si.GetBoolValue("GPU", "PGXPDisableOn2DPolygons", false);
gpu_pgxp_transparent_depth = si.GetBoolValue("GPU", "PGXPTransparentDepthTest", false);
SetPGXPDepthClearThreshold(si.GetFloatValue("GPU", "PGXPDepthThreshold", DEFAULT_GPU_PGXP_DEPTH_THRESHOLD));
LoadPGXPSettings(si);
gpu_show_vram = si.GetBoolValue("Debug", "ShowVRAM");
gpu_dump_cpu_to_vram_copies = si.GetBoolValue("Debug", "DumpCPUToVRAMCopies");
gpu_dump_vram_to_cpu_copies = si.GetBoolValue("Debug", "DumpVRAMToCPUCopies");
@ -531,6 +521,21 @@ void Settings::Load(const SettingsInterface& si, const SettingsInterface& contro
#endif
}
void Settings::LoadPGXPSettings(const SettingsInterface& si)
{
gpu_pgxp_culling = si.GetBoolValue("GPU", "PGXPCulling", true);
gpu_pgxp_texture_correction = si.GetBoolValue("GPU", "PGXPTextureCorrection", true);
gpu_pgxp_color_correction = si.GetBoolValue("GPU", "PGXPColorCorrection", false);
gpu_pgxp_vertex_cache = si.GetBoolValue("GPU", "PGXPVertexCache", false);
gpu_pgxp_cpu = si.GetBoolValue("GPU", "PGXPCPU", false);
gpu_pgxp_preserve_proj_fp = si.GetBoolValue("GPU", "PGXPPreserveProjFP", false);
gpu_pgxp_tolerance = si.GetFloatValue("GPU", "PGXPTolerance", -1.0f);
gpu_pgxp_depth_buffer = si.GetBoolValue("GPU", "PGXPDepthBuffer", false);
gpu_pgxp_disable_2d = si.GetBoolValue("GPU", "PGXPDisableOn2DPolygons", false);
gpu_pgxp_transparent_depth = si.GetBoolValue("GPU", "PGXPTransparentDepthTest", false);
SetPGXPDepthClearThreshold(si.GetFloatValue("GPU", "PGXPDepthThreshold", DEFAULT_GPU_PGXP_DEPTH_THRESHOLD));
}
void Settings::Save(SettingsInterface& si, bool ignore_base) const
{
si.SetStringValue("Console", "Region", GetConsoleRegionName(region));

View File

@ -441,6 +441,7 @@ struct Settings : public GPUSettings
};
void Load(const SettingsInterface& si, const SettingsInterface& controller_si);
void LoadPGXPSettings(const SettingsInterface& si);
void Save(SettingsInterface& si, bool ignore_base) const;
static void Clear(SettingsInterface& si);

View File

@ -5755,18 +5755,19 @@ void System::ToggleWidescreen()
if (g_settings.gpu_widescreen_hack)
{
Host::AddKeyedOSDMessage(
"WidescreenHack",
fmt::format(TRANSLATE_FS("OSDMessage", "Widescreen hack is now enabled, and aspect ratio is set to {}."),
Host::AddIconOSDMessage(
"ToggleWidescreen", ICON_FA_SHAPES,
fmt::format(TRANSLATE_FS("OSDMessage", "Widescreen rendering is now enabled, and aspect ratio is set to {}."),
Settings::GetDisplayAspectRatioDisplayName(g_settings.display_aspect_ratio)),
5.0f);
Host::OSD_QUICK_DURATION);
}
else
{
Host::AddKeyedOSDMessage(
"WidescreenHack",
fmt::format(TRANSLATE_FS("OSDMessage", "Widescreen hack is now disabled, and aspect ratio is set to {}."),
Settings::GetDisplayAspectRatioDisplayName(g_settings.display_aspect_ratio), 5.0f));
Host::AddIconOSDMessage(
"ToggleWidescreen", ICON_FA_SHAPES,
fmt::format(TRANSLATE_FS("OSDMessage", "Widescreen rendering is now disabled, and aspect ratio is set to {}."),
Settings::GetDisplayAspectRatioDisplayName(g_settings.display_aspect_ratio),
Host::OSD_QUICK_DURATION));
}
UpdateGTEAspectRatio();