3rdparty: Update FontAwesome to 6.7.2

Co-Authored-By: KamFretoZ <14798312+kamfretoz@users.noreply.github.com>
This commit is contained in:
TheLastRar 2025-07-04 13:46:37 +01:00 committed by TellowKrinkle
parent fe9794ba53
commit 888e024d0c
28 changed files with 1640 additions and 1227 deletions

File diff suppressed because it is too large Load Diff

1416
3rdparty/include/IconsFontAwesome6.h vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1879,7 +1879,7 @@ void Achievements::ConfirmHardcoreModeDisableAsync(const char* trigger, std::fun
"want to disable hardcore mode? {0} will be cancelled if you select No."), "want to disable hardcore mode? {0} will be cancelled if you select No."),
trigger), trigger),
std::move(real_callback), fmt::format(ICON_FA_CHECK " {}", TRANSLATE_SV("Achievements", "Yes")), std::move(real_callback), fmt::format(ICON_FA_CHECK " {}", TRANSLATE_SV("Achievements", "Yes")),
fmt::format(ICON_FA_TIMES " {}", TRANSLATE_SV("Achievements", "No"))); fmt::format(ICON_FA_XMARK " {}", TRANSLATE_SV("Achievements", "No")));
}); });
} }
@ -2208,7 +2208,7 @@ void Achievements::DrawAchievementsWindow()
SmallString text; SmallString text;
ImVec2 text_size; ImVec2 text_size;
if (ImGuiFullscreen::FloatingButton(ICON_FA_WINDOW_CLOSE, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) || if (ImGuiFullscreen::FloatingButton(ICON_FA_SQUARE_XMARK, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) ||
ImGuiFullscreen::WantsToCloseMenu()) ImGuiFullscreen::WantsToCloseMenu())
{ {
FullscreenUI::ReturnToPreviousWindow(); FullscreenUI::ReturnToPreviousWindow();
@ -2569,7 +2569,7 @@ void Achievements::DrawLeaderboardsWindow()
if (!is_leaderboard_open) if (!is_leaderboard_open)
{ {
if (ImGuiFullscreen::FloatingButton(ICON_FA_WINDOW_CLOSE, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) || if (ImGuiFullscreen::FloatingButton(ICON_FA_SQUARE_XMARK, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) ||
ImGuiFullscreen::WantsToCloseMenu()) ImGuiFullscreen::WantsToCloseMenu())
{ {
FullscreenUI::ReturnToPreviousWindow(); FullscreenUI::ReturnToPreviousWindow();
@ -2578,7 +2578,7 @@ void Achievements::DrawLeaderboardsWindow()
else else
{ {
if (ImGuiFullscreen::FloatingButton( if (ImGuiFullscreen::FloatingButton(
ICON_FA_CARET_SQUARE_LEFT, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) || ICON_FA_SQUARE_CARET_LEFT, 10.0f, 10.0f, -1.0f, -1.0f, 1.0f, 0.0f, true, g_large_font) ||
ImGuiFullscreen::WantsToCloseMenu()) ImGuiFullscreen::WantsToCloseMenu())
{ {
close_leaderboard_on_exit = true; close_leaderboard_on_exit = true;

View File

@ -6,7 +6,7 @@
#include "CDVD/IsoFileFormats.h" #include "CDVD/IsoFileFormats.h"
#include "Config.h" #include "Config.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "common/Assertions.h" #include "common/Assertions.h"
#include "common/Console.h" #include "common/Console.h"
@ -283,7 +283,7 @@ void CDVDsys_SetFile(CDVD_SourceType srctype, std::string newfile)
const auto driveType = GetDriveType(StringUtil::UTF8StringToWideString(root).c_str()); const auto driveType = GetDriveType(StringUtil::UTF8StringToWideString(root).c_str());
if (driveType == DRIVE_REMOVABLE) if (driveType == DRIVE_REMOVABLE)
{ {
Host::AddIconOSDMessage("RemovableDriveWarning", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("RemovableDriveWarning", ICON_FA_TRIANGLE_EXCLAMATION,
TRANSLATE_SV("CDVD", "Game disc location is on a removable drive, performance issues such as jittering " TRANSLATE_SV("CDVD", "Game disc location is on a removable drive, performance issues such as jittering "
"and freezing may occur."), "and freezing may occur."),
Host::OSD_WARNING_DURATION); Host::OSD_WARNING_DURATION);

View File

@ -48,7 +48,7 @@
#include "common/SmallString.h" #include "common/SmallString.h"
#include "common/StringUtil.h" #include "common/StringUtil.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "fmt/format.h" #include "fmt/format.h"
@ -190,7 +190,7 @@ static void GSClampUpscaleMultiplier(Pcsx2Config::GSOptions& config)
return; return;
} }
Host::AddIconOSDMessage("GSUpscaleMultiplierInvalid", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("GSUpscaleMultiplierInvalid", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("GS", "Configured upscale multiplier {}x is above your GPU's supported multiplier of {}x."), fmt::format(TRANSLATE_FS("GS", "Configured upscale multiplier {}x is above your GPU's supported multiplier of {}x."),
config.UpscaleMultiplier, max_upscale_multiplier), config.UpscaleMultiplier, max_upscale_multiplier),
Host::OSD_WARNING_DURATION); Host::OSD_WARNING_DURATION);

View File

@ -10,7 +10,7 @@
#include "SPU2/spu2.h" #include "SPU2/spu2.h"
#include "Host.h" #include "Host.h"
#include "Host/AudioStream.h" #include "Host/AudioStream.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "common/Assertions.h" #include "common/Assertions.h"
#include "common/Console.h" #include "common/Console.h"
#include "common/BitUtils.h" #include "common/BitUtils.h"

View File

@ -22,7 +22,7 @@
#include "common/Timer.h" #include "common/Timer.h"
#include "fmt/format.h" #include "fmt/format.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include <algorithm> #include <algorithm>
#include <array> #include <array>
@ -550,7 +550,7 @@ bool GSRenderer::BeginPresentFrame(bool frame_skip)
} }
// First frame after reopening is definitely going to be trash, so skip it. // First frame after reopening is definitely going to be trash, so skip it.
Host::AddIconOSDMessage("GSDeviceLost", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("GSDeviceLost", ICON_FA_TRIANGLE_EXCLAMATION,
TRANSLATE_SV("GS", "Host GPU device encountered an error and was recovered. This may have broken rendering."), TRANSLATE_SV("GS", "Host GPU device encountered an error and was recovered. This may have broken rendering."),
Host::OSD_CRITICAL_ERROR_DURATION); Host::OSD_CRITICAL_ERROR_DURATION);
return false; return false;
@ -654,7 +654,7 @@ void GSRenderer::VSync(u32 field, bool registers_written, bool idle_frame)
} }
else if (!cas_log_once) else if (!cas_log_once)
{ {
Host::AddIconOSDMessage("CASUnsupported", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("CASUnsupported", ICON_FA_TRIANGLE_EXCLAMATION,
TRANSLATE_SV("GS", "CAS is not available, your graphics driver does not support the required functionality."), TRANSLATE_SV("GS", "CAS is not available, your graphics driver does not support the required functionality."),
10.0f); 10.0f);
cas_log_once = true; cas_log_once = true;

View File

@ -15,7 +15,7 @@
#include "common/StringUtil.h" #include "common/StringUtil.h"
#include "common/Path.h" #include "common/Path.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include <appmodel.h> #include <appmodel.h>
#include <array> #include <array>

View File

@ -15,7 +15,7 @@
#include "common/StringUtil.h" #include "common/StringUtil.h"
#include "imgui.h" #include "imgui.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include <bit> #include <bit>
#include <fstream> #include <fstream>
@ -510,7 +510,7 @@ bool GSDevice11::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
if (m_feature_level < D3D_FEATURE_LEVEL_11_0) if (m_feature_level < D3D_FEATURE_LEVEL_11_0)
{ {
Host::AddIconOSDMessage("d3d11_feature_level_warning", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("d3d11_feature_level_warning", ICON_FA_TRIANGLE_EXCLAMATION,
TRANSLATE_SV("GS", "The Direct3D11 renderer is running at feature level 10.0. This is an UNSUPPORTED configuration.\n" TRANSLATE_SV("GS", "The Direct3D11 renderer is running at feature level 10.0. This is an UNSUPPORTED configuration.\n"
"Do not request support, please upgrade your hardware/drivers first."), "Do not request support, please upgrade your hardware/drivers first."),
Host::OSD_WARNING_DURATION); Host::OSD_WARNING_DURATION);

View File

@ -12,7 +12,7 @@
#include "Config.h" #include "Config.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "GS/GSExtra.h" #include "GS/GSExtra.h"
#include "GS/GSLocalMemory.h" #include "GS/GSLocalMemory.h"
#include "GS/Renderers/HW/GSTextureReplacements.h" #include "GS/Renderers/HW/GSTextureReplacements.h"
@ -736,7 +736,7 @@ GSTexture* GSTextureReplacements::CreateReplacementTexture(const ReplacementText
if (!log_once) if (!log_once)
{ {
Console.Warning("Disabling autogenerated mipmaps on one or more compressed replacement textures."); Console.Warning("Disabling autogenerated mipmaps on one or more compressed replacement textures.");
Host::AddIconOSDMessage("DisablingReplacementAutoGeneratedMipmap", ICON_FA_EXCLAMATION_CIRCLE, Host::AddIconOSDMessage("DisablingReplacementAutoGeneratedMipmap", ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("GS", "Disabling autogenerated mipmaps on one or more compressed replacement textures. " TRANSLATE_SV("GS", "Disabling autogenerated mipmaps on one or more compressed replacement textures. "
"Please generate mipmaps when compressing your textures."), "Please generate mipmaps when compressing your textures."),
Host::OSD_WARNING_DURATION); Host::OSD_WARNING_DURATION);

View File

@ -15,7 +15,7 @@
#include "common/StringUtil.h" #include "common/StringUtil.h"
#include "imgui.h" #include "imgui.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include <cinttypes> #include <cinttypes>
#include <fstream> #include <fstream>

View File

@ -4,7 +4,7 @@
#include "GameDatabase.h" #include "GameDatabase.h"
#include "GS/GS.h" #include "GS/GS.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "vtlb.h" #include "vtlb.h"
#include "common/Console.h" #include "common/Console.h"
@ -890,7 +890,7 @@ void GameDatabaseSchema::GameEntry::applyGSHardwareFixes(Pcsx2Config::GSOptions&
"Recommended Blending Accuracy for this game is {2}.\n" "Recommended Blending Accuracy for this game is {2}.\n"
"You can adjust the blending level in Game Properties to improve\n" "You can adjust the blending level in Game Properties to improve\n"
"graphical quality, but this will increase system requirements."), "graphical quality, but this will increase system requirements."),
ICON_FA_PAINT_BRUSH, ICON_FA_PAINTBRUSH,
Pcsx2Config::GSOptions::BlendingLevelNames[static_cast<int>( Pcsx2Config::GSOptions::BlendingLevelNames[static_cast<int>(
EmuConfig.GS.AccurateBlendingUnit)], EmuConfig.GS.AccurateBlendingUnit)],
Pcsx2Config::GSOptions::BlendingLevelNames[value]), Pcsx2Config::GSOptions::BlendingLevelNames[value]),
@ -928,7 +928,7 @@ void GameDatabaseSchema::GameEntry::applyGSHardwareFixes(Pcsx2Config::GSOptions&
if (!is_sw_renderer && !disabled_fixes.empty()) if (!is_sw_renderer && !disabled_fixes.empty())
{ {
Host::AddKeyedOSDMessage("HWFixesWarning", Host::AddKeyedOSDMessage("HWFixesWarning",
fmt::format(ICON_FA_MAGIC " {}\n{}", fmt::format(ICON_FA_WAND_MAGIC_SPARKLES " {}\n{}",
TRANSLATE_SV("GameDatabase", "Manual GS hardware renderer fixes are enabled, automatic fixes were not applied:"), TRANSLATE_SV("GameDatabase", "Manual GS hardware renderer fixes are enabled, automatic fixes were not applied:"),
disabled_fixes), disabled_fixes),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);

View File

@ -13,7 +13,7 @@
#include "cubeb/cubeb.h" #include "cubeb/cubeb.h"
#include "fmt/format.h" #include "fmt/format.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#ifdef _WIN32 #ifdef _WIN32
#include "common/RedtapeWindows.h" #include "common/RedtapeWindows.h"
@ -207,7 +207,7 @@ bool CubebAudioStream::Initialize(const char* driver_name, const char* device_na
if (!selected_device) if (!selected_device)
{ {
Host::AddIconOSDMessage("AudioDeviceUnavailable", ICON_FA_VOLUME_UP, Host::AddIconOSDMessage("AudioDeviceUnavailable", ICON_FA_VOLUME_HIGH,
fmt::format("Requested audio output device '{}' not found, using default.", device_name), fmt::format("Requested audio output device '{}' not found, using default.", device_name),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
} }

View File

@ -4,7 +4,7 @@
#include "Achievements.h" #include "Achievements.h"
#include "GS.h" #include "GS.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "ImGui/FullscreenUI.h" #include "ImGui/FullscreenUI.h"
#include "ImGui/ImGuiOverlays.h" #include "ImGui/ImGuiOverlays.h"
#include "Input/InputManager.h" #include "Input/InputManager.h"
@ -52,11 +52,11 @@ static void HotkeyAdjustVolume(s32 fixed, s32 delta)
if (new_volume == 0) if (new_volume == 0)
{ {
Host::AddIconOSDMessage("VolumeChanged", ICON_FA_VOLUME_MUTE, TRANSLATE_STR("Hotkeys", "Volume: Muted")); Host::AddIconOSDMessage("VolumeChanged", ICON_FA_VOLUME_XMARK, TRANSLATE_STR("Hotkeys", "Volume: Muted"));
} }
else else
{ {
Host::AddIconOSDMessage("VolumeChanged", (current_vol < new_volume) ? ICON_FA_VOLUME_UP : ICON_FA_VOLUME_DOWN, Host::AddIconOSDMessage("VolumeChanged", (current_vol < new_volume) ? ICON_FA_VOLUME_HIGH : ICON_FA_VOLUME_LOW,
fmt::format(TRANSLATE_FS("Hotkeys", "Volume: {}%"), new_volume)); fmt::format(TRANSLATE_FS("Hotkeys", "Volume: {}%"), new_volume));
} }
} }
@ -67,7 +67,7 @@ static void HotkeyLoadStateSlot(s32 slot)
Host::RunOnCPUThread([slot]() { Host::RunOnCPUThread([slot]() {
if (!VMManager::HasSaveStateInSlot(VMManager::GetDiscSerial().c_str(), VMManager::GetDiscCRC(), slot)) if (!VMManager::HasSaveStateInSlot(VMManager::GetDiscSerial().c_str(), VMManager::GetDiscCRC(), slot))
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("Hotkeys", "No save state found in slot {}."), slot), Host::OSD_INFO_DURATION); fmt::format(TRANSLATE_FS("Hotkeys", "No save state found in slot {}."), slot), Host::OSD_INFO_DURATION);
return; return;
} }

View File

@ -39,7 +39,7 @@
#include "SIO/Pad/Pad.h" #include "SIO/Pad/Pad.h"
#include "SIO/Sio.h" #include "SIO/Sio.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "IconsPromptFont.h" #include "IconsPromptFont.h"
#include "imgui.h" #include "imgui.h"
#include "imgui_internal.h" #include "imgui_internal.h"
@ -1763,7 +1763,7 @@ void FullscreenUI::DrawInputBindingButton(
switch (type) switch (type)
{ {
case InputBindingInfo::Type::Button: case InputBindingInfo::Type::Button:
title.format(ICON_FA_DOT_CIRCLE " {}", display_name); title.format(ICON_FA_CIRCLE_DOT " {}", display_name);
break; break;
case InputBindingInfo::Type::Axis: case InputBindingInfo::Type::Axis:
case InputBindingInfo::Type::HalfAxis: case InputBindingInfo::Type::HalfAxis:
@ -2913,7 +2913,7 @@ void FullscreenUI::DrawSettingInfoSetting(SettingsInterface* bsi, const char* se
const char* translation_ctx) const char* translation_ctx)
{ {
SmallString title; SmallString title;
title.format(ICON_FA_COG " {}", Host::TranslateToStringView(translation_ctx, si.display_name)); title.format(ICON_FA_GEAR " {}", Host::TranslateToStringView(translation_ctx, si.display_name));
switch (si.type) switch (si.type)
{ {
case SettingInfo::Type::Boolean: case SettingInfo::Type::Boolean:
@ -3097,17 +3097,17 @@ void FullscreenUI::DrawSettingsWindow()
ICON_FA_TROPHY, ICON_FA_TROPHY,
ICON_PF_GAMEPAD_ALT, ICON_PF_GAMEPAD_ALT,
ICON_PF_KEYBOARD_ALT, ICON_PF_KEYBOARD_ALT,
ICON_FA_EXCLAMATION_TRIANGLE, ICON_FA_TRIANGLE_EXCLAMATION,
}; };
static constexpr const char* per_game_icons[] = { static constexpr const char* per_game_icons[] = {
ICON_FA_INFO, ICON_FA_INFO,
ICON_PF_GEARS_OPTIONS_SETTINGS, ICON_PF_GEARS_OPTIONS_SETTINGS,
ICON_FA_BAND_AID, ICON_FA_BANDAGE,
ICON_PF_INFINITY, ICON_PF_INFINITY,
ICON_PF_PICTURE, ICON_PF_PICTURE,
ICON_PF_SOUND, ICON_PF_SOUND,
ICON_PF_MEMORY_CARD, ICON_PF_MEMORY_CARD,
ICON_FA_EXCLAMATION_TRIANGLE, ICON_FA_TRIANGLE_EXCLAMATION,
}; };
static constexpr SettingsPage global_pages[] = { static constexpr SettingsPage global_pages[] = {
SettingsPage::Interface, SettingsPage::Interface,
@ -3479,12 +3479,12 @@ void FullscreenUI::DrawInterfaceSettingsPage()
BeginMenuButtons(); BeginMenuButtons();
MenuHeading(FSUI_CSTR("Appearance")); MenuHeading(FSUI_CSTR("Appearance"));
DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_PAINT_BRUSH, "Theme"), DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_PAINTBRUSH, "Theme"),
FSUI_CSTR("Selects the color style to be used for Big Picture Mode."), FSUI_CSTR("Selects the color style to be used for Big Picture Mode."),
"UI", "FullscreenUITheme", "Dark", s_theme_name, s_theme_value, std::size(s_theme_name), true); "UI", "FullscreenUITheme", "Dark", s_theme_name, s_theme_value, std::size(s_theme_name), true);
DrawToggleSetting( DrawToggleSetting(
bsi, FSUI_ICONSTR(ICON_FA_LIST, "Default To Game List"), FSUI_CSTR("When Big Picture mode is started, the game list will be displayed instead of the main menu."), "UI", "FullscreenUIDefaultToGameList", false); bsi, FSUI_ICONSTR(ICON_FA_LIST, "Default To Game List"), FSUI_CSTR("When Big Picture mode is started, the game list will be displayed instead of the main menu."), "UI", "FullscreenUIDefaultToGameList", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_INFO_CIRCLE, "Use Save State Selector"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_CIRCLE_INFO, "Use Save State Selector"),
FSUI_CSTR("Show a save state selector UI when switching slots instead of showing a notification bubble."), FSUI_CSTR("Show a save state selector UI when switching slots instead of showing a notification bubble."),
"EmuCore", "UseSavestateSelector", true); "EmuCore", "UseSavestateSelector", true);
@ -3499,16 +3499,16 @@ void FullscreenUI::DrawInterfaceSettingsPage()
"UI", "PauseOnFocusLoss", false); "UI", "PauseOnFocusLoss", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GAMEPAD, "Pause On Controller Disconnection"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GAMEPAD, "Pause On Controller Disconnection"),
FSUI_CSTR("Pauses the emulator when a controller with bindings is disconnected."), "UI", "PauseOnControllerDisconnection", false); FSUI_CSTR("Pauses the emulator when a controller with bindings is disconnected."), "UI", "PauseOnControllerDisconnection", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LIST_ALT, "Pause On Menu"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_RECTANGLE_LIST, "Pause On Menu"),
FSUI_CSTR("Pauses the emulator when you open the quick menu, and unpauses when you close it."), "UI", "PauseOnMenu", true); FSUI_CSTR("Pauses the emulator when you open the quick menu, and unpauses when you close it."), "UI", "PauseOnMenu", true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_POWER_OFF, "Confirm Shutdown"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_POWER_OFF, "Confirm Shutdown"),
FSUI_CSTR("Determines whether a prompt will be displayed to confirm shutting down the emulator/game when the hotkey is pressed."), FSUI_CSTR("Determines whether a prompt will be displayed to confirm shutting down the emulator/game when the hotkey is pressed."),
"UI", "ConfirmShutdown", true); "UI", "ConfirmShutdown", true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SAVE, "Save State On Shutdown"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Save State On Shutdown"),
FSUI_CSTR("Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left " FSUI_CSTR("Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left "
"off next time."), "off next time."),
"EmuCore", "SaveStateOnShutdown", false); "EmuCore", "SaveStateOnShutdown", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ARCHIVE, "Create Save State Backups"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_BOX_ARCHIVE, "Create Save State Backups"),
FSUI_CSTR("Creates a backup copy of a save state if it already exists when the save is created. The backup copy has a .backup suffix"), FSUI_CSTR("Creates a backup copy of a save state if it already exists when the save is created. The backup copy has a .backup suffix"),
"EmuCore", "BackupSavestate", true); "EmuCore", "BackupSavestate", true);
// DrawStringListSetting dosn't have a callback for applying settings // DrawStringListSetting dosn't have a callback for applying settings
@ -3591,20 +3591,20 @@ void FullscreenUI::DrawInterfaceSettingsPage()
} }
MenuHeading(FSUI_CSTR("Integration")); MenuHeading(FSUI_CSTR("Integration"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_USER_CIRCLE, "Enable Discord Presence"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_CIRCLE_USER, "Enable Discord Presence"),
FSUI_CSTR("Shows the game you are currently playing as part of your profile on Discord."), "EmuCore", "EnableDiscordPresence", false); FSUI_CSTR("Shows the game you are currently playing as part of your profile on Discord."), "EmuCore", "EnableDiscordPresence", false);
MenuHeading(FSUI_CSTR("Game Display")); MenuHeading(FSUI_CSTR("Game Display"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "Start Fullscreen"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "Start Fullscreen"),
FSUI_CSTR("Automatically switches to fullscreen mode when a game is started."), "UI", "StartFullscreen", false); FSUI_CSTR("Automatically switches to fullscreen mode when a game is started."), "UI", "StartFullscreen", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MOUSE, "Double-Click Toggles Fullscreen"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPUTER_MOUSE, "Double-Click Toggles Fullscreen"),
FSUI_CSTR("Switches between full screen and windowed when the window is double-clicked."), "UI", "DoubleClickTogglesFullscreen", FSUI_CSTR("Switches between full screen and windowed when the window is double-clicked."), "UI", "DoubleClickTogglesFullscreen",
true); true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MOUSE_POINTER, "Hide Cursor In Fullscreen"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROW_POINTER, "Hide Cursor In Fullscreen"),
FSUI_CSTR("Hides the mouse pointer/cursor when the emulator is in fullscreen mode."), "UI", "HideMouseCursor", false); FSUI_CSTR("Hides the mouse pointer/cursor when the emulator is in fullscreen mode."), "UI", "HideMouseCursor", false);
MenuHeading(FSUI_CSTR("On-Screen Display")); MenuHeading(FSUI_CSTR("On-Screen Display"));
DrawIntSpinBoxSetting(bsi, FSUI_ICONSTR(ICON_FA_SEARCH, "OSD Scale"), DrawIntSpinBoxSetting(bsi, FSUI_ICONSTR(ICON_FA_MAGNIFYING_GLASS, "OSD Scale"),
FSUI_CSTR("Determines how large the on-screen messages and monitor are."), "EmuCore/GS", "OsdScale", 100, 25, 500, 1, FSUI_CSTR("%d%%")); FSUI_CSTR("Determines how large the on-screen messages and monitor are."), "EmuCore/GS", "OsdScale", 100, 25, 500, 1, FSUI_CSTR("%d%%"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LIST, "Show Messages"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LIST, "Show Messages"),
FSUI_CSTR( FSUI_CSTR(
@ -3613,7 +3613,7 @@ void FullscreenUI::DrawInterfaceSettingsPage()
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_INFO, "Show PCSX2 Version"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_INFO, "Show PCSX2 Version"),
FSUI_CSTR("Shows the current PCSX2 version on the top-right corner of the display."), "EmuCore/GS", FSUI_CSTR("Shows the current PCSX2 version on the top-right corner of the display."), "EmuCore/GS",
"OsdShowVersion", false); "OsdShowVersion", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TACHOMETER_ALT, "Show Speed"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GAUGE_SIMPLE_HIGH, "Show Speed"),
FSUI_CSTR("Shows the current emulation speed of the system in the top-right corner of the display as a percentage."), "EmuCore/GS", FSUI_CSTR("Shows the current emulation speed of the system in the top-right corner of the display as a percentage."), "EmuCore/GS",
"OsdShowSpeed", false); "OsdShowSpeed", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Show FPS"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Show FPS"),
@ -3627,7 +3627,7 @@ void FullscreenUI::DrawInterfaceSettingsPage()
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_MONITOR_CODE, "Show Resolution"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_MONITOR_CODE, "Show Resolution"),
FSUI_CSTR("Shows the resolution of the game in the top-right corner of the display."), "EmuCore/GS", FSUI_CSTR("Shows the resolution of the game in the top-right corner of the display."), "EmuCore/GS",
"OsdShowResolution", false); "OsdShowResolution", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_HEARTBEAT, "Show GS Statistics"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_HEART_PULSE, "Show GS Statistics"),
FSUI_CSTR("Shows statistics about GS (primitives, draw calls) in the top-right corner of the display."), "EmuCore/GS", FSUI_CSTR("Shows statistics about GS (primitives, draw calls) in the top-right corner of the display."), "EmuCore/GS",
"OsdShowGSStats", false); "OsdShowGSStats", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_PLAY, "Show Status Indicators"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_PLAY, "Show Status Indicators"),
@ -3639,7 +3639,7 @@ void FullscreenUI::DrawInterfaceSettingsPage()
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "Show Video Capture Status"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "Show Video Capture Status"),
FSUI_CSTR("Shows the currently active video capture status."), "EmuCore/GS", FSUI_CSTR("Shows the currently active video capture status."), "EmuCore/GS",
"OsdShowVideoCapture", true); "OsdShowVideoCapture", true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SLIDERS_H, "Show Settings"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SLIDERS, "Show Settings"),
FSUI_CSTR("Shows the current configuration in the bottom-right corner of the display."), "EmuCore/GS", "OsdShowSettings", false); FSUI_CSTR("Shows the current configuration in the bottom-right corner of the display."), "EmuCore/GS", "OsdShowSettings", false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_GAMEPAD_ALT, "Show Inputs"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_GAMEPAD_ALT, "Show Inputs"),
FSUI_CSTR("Shows the current controller state of the system in the bottom-left corner of the display."), "EmuCore/GS", FSUI_CSTR("Shows the current controller state of the system in the bottom-left corner of the display."), "EmuCore/GS",
@ -3650,7 +3650,7 @@ void FullscreenUI::DrawInterfaceSettingsPage()
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_MONITOR_CODE, "Show Hardware Info"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_MONITOR_CODE, "Show Hardware Info"),
FSUI_CSTR("Shows the current system hardware information on the OSD."), "EmuCore/GS", "OsdShowHardwareInfo", FSUI_CSTR("Shows the current system hardware information on the OSD."), "EmuCore/GS", "OsdShowHardwareInfo",
false); false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_EXCLAMATION, "Warn About Unsafe Settings"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TRIANGLE_EXCLAMATION, "Warn About Unsafe Settings"),
FSUI_CSTR("Displays warnings when settings are enabled which may break games."), "EmuCore", "WarnAboutUnsafeSettings", true); FSUI_CSTR("Displays warnings when settings are enabled which may break games."), "EmuCore", "WarnAboutUnsafeSettings", true);
MenuHeading(FSUI_CSTR("Operations")); MenuHeading(FSUI_CSTR("Operations"));
@ -3713,7 +3713,7 @@ void FullscreenUI::DrawBIOSSettingsPage()
} }
MenuHeading(FSUI_CSTR("Options and Patches")); MenuHeading(FSUI_CSTR("Options and Patches"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_FAST_FORWARD, "Fast Boot"), FSUI_CSTR("Skips the intro screen, and bypasses region checks."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_FORWARD_FAST, "Fast Boot"), FSUI_CSTR("Skips the intro screen, and bypasses region checks."),
"EmuCore", "EnableFastBoot", true); "EmuCore", "EnableFastBoot", true);
EndMenuButtons(); EndMenuButtons();
@ -3789,45 +3789,45 @@ void FullscreenUI::DrawEmulationSettingsPage()
DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_FA_PLAY, "Normal Speed"), FSUI_CSTR("Sets the speed when running without fast forwarding."), "Framerate", DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_FA_PLAY, "Normal Speed"), FSUI_CSTR("Sets the speed when running without fast forwarding."), "Framerate",
"NominalScalar", 1.00f, speed_entries, speed_values, std::size(speed_entries), true); "NominalScalar", 1.00f, speed_entries, speed_values, std::size(speed_entries), true);
DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_FA_FAST_FORWARD, "Fast Forward Speed"), FSUI_CSTR("Sets the speed when using the fast forward hotkey."), "Framerate", DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_FA_FORWARD_FAST, "Fast Forward Speed"), FSUI_CSTR("Sets the speed when using the fast forward hotkey."), "Framerate",
"TurboScalar", 2.00f, speed_entries, speed_values, std::size(speed_entries), true); "TurboScalar", 2.00f, speed_entries, speed_values, std::size(speed_entries), true);
DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_PF_SLOW_MOTION, "Slow Motion Speed"), FSUI_CSTR("Sets the speed when using the slow motion hotkey."), "Framerate", DrawFloatListSetting(bsi, FSUI_ICONSTR(ICON_PF_SLOW_MOTION, "Slow Motion Speed"), FSUI_CSTR("Sets the speed when using the slow motion hotkey."), "Framerate",
"SlomoScalar", 0.50f, speed_entries, speed_values, std::size(speed_entries), true); "SlomoScalar", 0.50f, speed_entries, speed_values, std::size(speed_entries), true);
MenuHeading(FSUI_CSTR("System Settings")); MenuHeading(FSUI_CSTR("System Settings"));
DrawIntListSetting(bsi, FSUI_CSTR("EE Cycle Rate"), FSUI_CSTR("Underclocks or overclocks the emulated Emotion Engine CPU."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_GAUGE_HIGH, "EE Cycle Rate"), FSUI_CSTR("Underclocks or overclocks the emulated Emotion Engine CPU."),
"EmuCore/Speedhacks", "EECycleRate", 0, ee_cycle_rate_settings, std::size(ee_cycle_rate_settings), true, -3); "EmuCore/Speedhacks", "EECycleRate", 0, ee_cycle_rate_settings, std::size(ee_cycle_rate_settings), true, -3);
DrawIntListSetting(bsi, FSUI_CSTR("EE Cycle Skipping"), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROW_TREND_DOWN, "EE Cycle Skipping"),
FSUI_CSTR("Makes the emulated Emotion Engine skip cycles. Helps a small subset of games like SOTC. Most of the time it's harmful to performance."), "EmuCore/Speedhacks", "EECycleSkip", 0, FSUI_CSTR("Makes the emulated Emotion Engine skip cycles. Helps a small subset of games like SOTC. Most of the time it's harmful to performance."), "EmuCore/Speedhacks", "EECycleSkip", 0,
ee_cycle_skip_settings, std::size(ee_cycle_skip_settings), true); ee_cycle_skip_settings, std::size(ee_cycle_skip_settings), true);
DrawToggleSetting(bsi, FSUI_CSTR("Enable MTVU (Multi-Threaded VU1)"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_USERS, "Enable MTVU (Multi-Threaded VU1)"),
FSUI_CSTR("Generally a speedup on CPUs with 4 or more cores. Safe for most games, but a few are incompatible and may hang."), "EmuCore/Speedhacks", "vuThread", false); FSUI_CSTR("Generally a speedup on CPUs with 4 or more cores. Safe for most games, but a few are incompatible and may hang."), "EmuCore/Speedhacks", "vuThread", false);
DrawToggleSetting(bsi, FSUI_CSTR("Thread Pinning"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_LOCATION_PIN_LOCK, "Thread Pinning"),
FSUI_CSTR("Pins emulation threads to CPU cores to potentially improve performance/frame time variance."), "EmuCore", FSUI_CSTR("Pins emulation threads to CPU cores to potentially improve performance/frame time variance."), "EmuCore",
"EnableThreadPinning", false); "EnableThreadPinning", false);
DrawToggleSetting( DrawToggleSetting(
bsi, FSUI_CSTR("Enable Cheats"), FSUI_CSTR("Enables loading cheats from pnach files."), "EmuCore", "EnableCheats", false); bsi, FSUI_ICONSTR(ICON_FA_FACE_ROLLING_EYES, "Enable Cheats"), FSUI_CSTR("Enables loading cheats from pnach files."), "EmuCore", "EnableCheats", false);
DrawToggleSetting(bsi, FSUI_CSTR("Enable Host Filesystem"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_HARD_DRIVE, "Enable Host Filesystem"),
FSUI_CSTR("Enables access to files from the host: namespace in the virtual machine."), "EmuCore", "HostFs", false); FSUI_CSTR("Enables access to files from the host: namespace in the virtual machine."), "EmuCore", "HostFs", false);
if (IsEditingGameSettings(bsi)) if (IsEditingGameSettings(bsi))
{ {
DrawToggleSetting(bsi, FSUI_CSTR("Enable Fast CDVD"), FSUI_CSTR("Fast disc access, less loading times. Not recommended."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPACT_DISC, "Enable Fast CDVD"), FSUI_CSTR("Fast disc access, less loading times. Not recommended."),
"EmuCore/Speedhacks", "fastCDVD", false); "EmuCore/Speedhacks", "fastCDVD", false);
} }
DrawToggleSetting(bsi, FSUI_CSTR("Enable CDVD Precaching"), FSUI_CSTR("Loads the disc image into RAM before starting the virtual machine."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPACT_DISC, "Enable CDVD Precaching"), FSUI_CSTR("Loads the disc image into RAM before starting the virtual machine."),
"EmuCore", "CdvdPrecache", false); "EmuCore", "CdvdPrecache", false);
MenuHeading(FSUI_CSTR("Frame Pacing/Latency Control")); MenuHeading(FSUI_CSTR("Frame Pacing/Latency Control"));
bool optimal_frame_pacing = (bsi->GetIntValue("EmuCore/GS", "VsyncQueueSize", DEFAULT_FRAME_LATENCY) == 0); bool optimal_frame_pacing = (bsi->GetIntValue("EmuCore/GS", "VsyncQueueSize", DEFAULT_FRAME_LATENCY) == 0);
DrawIntListSetting(bsi, FSUI_CSTR("Maximum Frame Latency"), FSUI_CSTR("Sets the number of frames which can be queued."), "EmuCore/GS", DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_CLOCK_ROTATE_LEFT, "Maximum Frame Latency"), FSUI_CSTR("Sets the number of frames which can be queued."), "EmuCore/GS",
"VsyncQueueSize", DEFAULT_FRAME_LATENCY, queue_entries, std::size(queue_entries), true, 0, !optimal_frame_pacing); "VsyncQueueSize", DEFAULT_FRAME_LATENCY, queue_entries, std::size(queue_entries), true, 0, !optimal_frame_pacing);
if (ToggleButton(FSUI_CSTR("Optimal Frame Pacing"), if (ToggleButton(FSUI_ICONSTR(ICON_PF_HEARTBEAT_ALT, "Optimal Frame Pacing"),
FSUI_CSTR("Synchronize EE and GS threads after each frame. Lowest input latency, but increases system requirements."), FSUI_CSTR("Synchronize EE and GS threads after each frame. Lowest input latency, but increases system requirements."),
&optimal_frame_pacing)) &optimal_frame_pacing))
{ {
@ -3835,13 +3835,13 @@ void FullscreenUI::DrawEmulationSettingsPage()
SetSettingsChanged(bsi); SetSettingsChanged(bsi);
} }
DrawToggleSetting(bsi, FSUI_CSTR("Vertical Sync (VSync)"), FSUI_CSTR("Synchronizes frame presentation with host refresh."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROWS_SPIN, "Vertical Sync (VSync)"), FSUI_CSTR("Synchronizes frame presentation with host refresh."),
"EmuCore/GS", "VsyncEnable", false); "EmuCore/GS", "VsyncEnable", false);
DrawToggleSetting(bsi, FSUI_CSTR("Sync to Host Refresh Rate"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_MONITOR_CODE, "Sync to Host Refresh Rate"),
FSUI_CSTR("Speeds up emulation so that the guest refresh rate matches the host."), "EmuCore/GS", "SyncToHostRefreshRate", false); FSUI_CSTR("Speeds up emulation so that the guest refresh rate matches the host."), "EmuCore/GS", "SyncToHostRefreshRate", false);
DrawToggleSetting(bsi, FSUI_CSTR("Use Host VSync Timing"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_PF_HEARTBEAT_CIRCLE, "Use Host VSync Timing"),
FSUI_CSTR("Disables PCSX2's internal frame timing, and uses host vsync instead."), "EmuCore/GS", "UseVSyncForTiming", false, FSUI_CSTR("Disables PCSX2's internal frame timing, and uses host vsync instead."), "EmuCore/GS", "UseVSyncForTiming", false,
GetEffectiveBoolSetting(bsi, "EmuCore/GS", "VsyncEnable", false) && GetEffectiveBoolSetting(bsi, "EmuCore/GS", "SyncToHostRefreshRate", false)); GetEffectiveBoolSetting(bsi, "EmuCore/GS", "VsyncEnable", false) && GetEffectiveBoolSetting(bsi, "EmuCore/GS", "SyncToHostRefreshRate", false));
@ -4093,97 +4093,97 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
BeginMenuButtons(); BeginMenuButtons();
MenuHeading(FSUI_CSTR("Renderer")); MenuHeading(FSUI_CSTR("Renderer"));
DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_PAINT_BRUSH, "Renderer"), FSUI_CSTR("Selects the API used to render the emulated GS."), "EmuCore/GS", DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_PAINTBRUSH, "Renderer"), FSUI_CSTR("Selects the API used to render the emulated GS."), "EmuCore/GS",
"Renderer", "-1", s_renderer_names, s_renderer_values, std::size(s_renderer_names), true); "Renderer", "-1", s_renderer_names, s_renderer_values, std::size(s_renderer_names), true);
MenuHeading(FSUI_CSTR("Display")); MenuHeading(FSUI_CSTR("Display"));
DrawStringListSetting(bsi, FSUI_CSTR("Aspect Ratio"), FSUI_CSTR("Selects the aspect ratio to display the game content at."), DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPRESS, "Aspect Ratio"), FSUI_CSTR("Selects the aspect ratio to display the game content at."),
"EmuCore/GS", "AspectRatio", "Auto 4:3/3:2", Pcsx2Config::GSOptions::AspectRatioNames, Pcsx2Config::GSOptions::AspectRatioNames, 0, "EmuCore/GS", "AspectRatio", "Auto 4:3/3:2", Pcsx2Config::GSOptions::AspectRatioNames, Pcsx2Config::GSOptions::AspectRatioNames, 0,
false); false);
DrawStringListSetting(bsi, FSUI_CSTR("FMV Aspect Ratio Override"), DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "FMV Aspect Ratio Override"),
FSUI_CSTR("Selects the aspect ratio for display when a FMV is detected as playing."), "EmuCore/GS", "FMVAspectRatioSwitch", FSUI_CSTR("Selects the aspect ratio for display when a FMV is detected as playing."), "EmuCore/GS", "FMVAspectRatioSwitch",
"Auto 4:3/3:2", Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames, Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames, 0, false); "Auto 4:3/3:2", Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames, Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames, 0, false);
DrawIntListSetting(bsi, FSUI_CSTR("Deinterlacing"), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "Deinterlacing"),
FSUI_CSTR("Selects the algorithm used to convert the PS2's interlaced output to progressive for display."), "EmuCore/GS", FSUI_CSTR("Selects the algorithm used to convert the PS2's interlaced output to progressive for display."), "EmuCore/GS",
"deinterlace_mode", static_cast<int>(GSInterlaceMode::Automatic), s_deinterlacing_options, std::size(s_deinterlacing_options), "deinterlace_mode", static_cast<int>(GSInterlaceMode::Automatic), s_deinterlacing_options, std::size(s_deinterlacing_options),
true); true);
DrawIntListSetting(bsi, FSUI_CSTR("Screenshot Size"), FSUI_CSTR("Determines the resolution at which screenshots will be saved."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROWS_UP_DOWN_LEFT_RIGHT, "Screenshot Size"), FSUI_CSTR("Determines the resolution at which screenshots will be saved."),
"EmuCore/GS", "ScreenshotSize", static_cast<int>(GSScreenshotSize::WindowResolution), s_screenshot_sizes, "EmuCore/GS", "ScreenshotSize", static_cast<int>(GSScreenshotSize::WindowResolution), s_screenshot_sizes,
std::size(s_screenshot_sizes), true); std::size(s_screenshot_sizes), true);
DrawIntListSetting(bsi, FSUI_CSTR("Screenshot Format"), FSUI_CSTR("Selects the format which will be used to save screenshots."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_PHOTO_FILM, "Screenshot Format"), FSUI_CSTR("Selects the format which will be used to save screenshots."),
"EmuCore/GS", "ScreenshotFormat", static_cast<int>(GSScreenshotFormat::PNG), s_screenshot_formats, std::size(s_screenshot_formats), "EmuCore/GS", "ScreenshotFormat", static_cast<int>(GSScreenshotFormat::PNG), s_screenshot_formats, std::size(s_screenshot_formats),
true); true);
DrawIntRangeSetting(bsi, FSUI_CSTR("Screenshot Quality"), FSUI_CSTR("Selects the quality at which screenshots will be compressed."), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_GAUGE, "Screenshot Quality"), FSUI_CSTR("Selects the quality at which screenshots will be compressed."),
"EmuCore/GS", "ScreenshotQuality", 90, 1, 100, FSUI_CSTR("%d%%")); "EmuCore/GS", "ScreenshotQuality", 90, 1, 100, FSUI_CSTR("%d%%"));
DrawIntRangeSetting(bsi, FSUI_CSTR("Vertical Stretch"), FSUI_CSTR("Increases or decreases the virtual picture size vertically."), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROW_RIGHT_ARROW_LEFT, "Vertical Stretch"), FSUI_CSTR("Increases or decreases the virtual picture size vertically."),
"EmuCore/GS", "StretchY", 100, 10, 300, FSUI_CSTR("%d%%")); "EmuCore/GS", "StretchY", 100, 10, 300, FSUI_CSTR("%d%%"));
DrawIntRectSetting(bsi, FSUI_CSTR("Crop"), FSUI_CSTR("Crops the image, while respecting aspect ratio."), "EmuCore/GS", "CropLeft", 0, DrawIntRectSetting(bsi, FSUI_ICONSTR(ICON_FA_CROP, "Crop"), FSUI_CSTR("Crops the image, while respecting aspect ratio."), "EmuCore/GS", "CropLeft", 0,
"CropTop", 0, "CropRight", 0, "CropBottom", 0, 0, 720, 1, FSUI_CSTR("%dpx")); "CropTop", 0, "CropRight", 0, "CropBottom", 0, 0, 720, 1, FSUI_CSTR("%dpx"));
if (!IsEditingGameSettings(bsi)) if (!IsEditingGameSettings(bsi))
{ {
DrawToggleSetting(bsi, FSUI_CSTR("Enable Widescreen Patches"), FSUI_CSTR("Enables loading widescreen patches from pnach files."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "Enable Widescreen Patches"), FSUI_CSTR("Enables loading widescreen patches from pnach files."),
"EmuCore", "EnableWideScreenPatches", false); "EmuCore", "EnableWideScreenPatches", false);
DrawToggleSetting(bsi, FSUI_CSTR("Enable No-Interlacing Patches"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "Enable No-Interlacing Patches"),
FSUI_CSTR("Enables loading no-interlacing patches from pnach files."), "EmuCore", "EnableNoInterlacingPatches", false); FSUI_CSTR("Enables loading no-interlacing patches from pnach files."), "EmuCore", "EnableNoInterlacingPatches", false);
} }
DrawIntListSetting(bsi, FSUI_CSTR("Bilinear Upscaling"), FSUI_CSTR("Smooths out the image when upscaling the console to the screen."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_TABLE_CELLS, "Bilinear Upscaling"), FSUI_CSTR("Smooths out the image when upscaling the console to the screen."),
"EmuCore/GS", "linear_present_mode", static_cast<int>(GSPostBilinearMode::BilinearSharp), s_bilinear_present_options, "EmuCore/GS", "linear_present_mode", static_cast<int>(GSPostBilinearMode::BilinearSharp), s_bilinear_present_options,
std::size(s_bilinear_present_options), true); std::size(s_bilinear_present_options), true);
DrawToggleSetting(bsi, FSUI_CSTR("Integer Upscaling"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SQUARE_ARROW_UP_RIGHT, "Integer Upscaling"),
FSUI_CSTR("Adds padding to the display area to ensure that the ratio between pixels on the host to pixels in the console is an " FSUI_CSTR("Adds padding to the display area to ensure that the ratio between pixels on the host to pixels in the console is an "
"integer number. May result in a sharper image in some 2D games."), "integer number. May result in a sharper image in some 2D games."),
"EmuCore/GS", "IntegerScaling", false); "EmuCore/GS", "IntegerScaling", false);
DrawToggleSetting(bsi, FSUI_CSTR("Screen Offsets"), FSUI_CSTR("Enables PCRTC Offsets which position the screen as the game requests."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SQUARE_UP_RIGHT, "Screen Offsets"), FSUI_CSTR("Enables PCRTC Offsets which position the screen as the game requests."),
"EmuCore/GS", "pcrtc_offsets", false); "EmuCore/GS", "pcrtc_offsets", false);
DrawToggleSetting(bsi, FSUI_CSTR("Show Overscan"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MAXIMIZE, "Show Overscan"),
FSUI_CSTR("Enables the option to show the overscan area on games which draw more than the safe area of the screen."), "EmuCore/GS", FSUI_CSTR("Enables the option to show the overscan area on games which draw more than the safe area of the screen."), "EmuCore/GS",
"pcrtc_overscan", false); "pcrtc_overscan", false);
DrawToggleSetting(bsi, FSUI_CSTR("Anti-Blur"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GLASSES, "Anti-Blur"),
FSUI_CSTR("Enables internal Anti-Blur hacks. Less accurate to PS2 rendering but will make a lot of games look less blurry."), FSUI_CSTR("Enables internal Anti-Blur hacks. Less accurate to PS2 rendering but will make a lot of games look less blurry."),
"EmuCore/GS", "pcrtc_antiblur", true); "EmuCore/GS", "pcrtc_antiblur", true);
MenuHeading(FSUI_CSTR("Rendering")); MenuHeading(FSUI_CSTR("Rendering"));
if (is_hardware) if (is_hardware)
{ {
DrawStringListSetting(bsi, FSUI_CSTR("Internal Resolution"), DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROW_UP_RIGHT_FROM_SQUARE, "Internal Resolution"),
FSUI_CSTR("Multiplies the render resolution by the specified factor (upscaling)."), "EmuCore/GS", "upscale_multiplier", FSUI_CSTR("Multiplies the render resolution by the specified factor (upscaling)."), "EmuCore/GS", "upscale_multiplier",
"1.000000", s_resolution_options, s_resolution_values, std::size(s_resolution_options), true); "1.000000", s_resolution_options, s_resolution_values, std::size(s_resolution_options), true);
DrawIntListSetting(bsi, FSUI_CSTR("Bilinear Filtering"), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_TABLE_CELLS_LARGE, "Bilinear Filtering"),
FSUI_CSTR("Selects where bilinear filtering is utilized when rendering textures."), "EmuCore/GS", "filter", FSUI_CSTR("Selects where bilinear filtering is utilized when rendering textures."), "EmuCore/GS", "filter",
static_cast<int>(BiFiltering::PS2), s_bilinear_options, std::size(s_bilinear_options), true); static_cast<int>(BiFiltering::PS2), s_bilinear_options, std::size(s_bilinear_options), true);
DrawIntListSetting(bsi, FSUI_CSTR("Trilinear Filtering"), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_TABLE_CELLS_LARGE, "Trilinear Filtering"),
FSUI_CSTR("Selects where trilinear filtering is utilized when rendering textures."), "EmuCore/GS", "TriFilter", FSUI_CSTR("Selects where trilinear filtering is utilized when rendering textures."), "EmuCore/GS", "TriFilter",
static_cast<int>(TriFiltering::Automatic), s_trilinear_options, std::size(s_trilinear_options), true, -1); static_cast<int>(TriFiltering::Automatic), s_trilinear_options, std::size(s_trilinear_options), true, -1);
DrawStringListSetting(bsi, FSUI_CSTR("Anisotropic Filtering"), DrawStringListSetting(bsi, FSUI_ICONSTR(ICON_FA_EYE_LOW_VISION, "Anisotropic Filtering"),
FSUI_CSTR("Selects where anisotropic filtering is utilized when rendering textures."), "EmuCore/GS", "MaxAnisotropy", "0", FSUI_CSTR("Selects where anisotropic filtering is utilized when rendering textures."), "EmuCore/GS", "MaxAnisotropy", "0",
s_anisotropic_filtering_entries, s_anisotropic_filtering_values, std::size(s_anisotropic_filtering_entries), true); s_anisotropic_filtering_entries, s_anisotropic_filtering_values, std::size(s_anisotropic_filtering_entries), true);
DrawIntListSetting(bsi, FSUI_CSTR("Dithering"), FSUI_CSTR("Selects the type of dithering applies when the game requests it."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_DROPLET_SLASH, "Dithering"), FSUI_CSTR("Selects the type of dithering applies when the game requests it."),
"EmuCore/GS", "dithering_ps2", 2, s_dithering_options, std::size(s_dithering_options), true); "EmuCore/GS", "dithering_ps2", 2, s_dithering_options, std::size(s_dithering_options), true);
DrawIntListSetting(bsi, FSUI_CSTR("Blending Accuracy"), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_SPLOTCH, "Blending Accuracy"),
FSUI_CSTR("Determines the level of accuracy when emulating blend modes not supported by the host graphics API."), "EmuCore/GS", FSUI_CSTR("Determines the level of accuracy when emulating blend modes not supported by the host graphics API."), "EmuCore/GS",
"accurate_blending_unit", static_cast<int>(AccBlendLevel::Basic), s_blending_options, std::size(s_blending_options), true); "accurate_blending_unit", static_cast<int>(AccBlendLevel::Basic), s_blending_options, std::size(s_blending_options), true);
DrawToggleSetting( DrawToggleSetting(
bsi, FSUI_CSTR("Mipmapping"), FSUI_CSTR("Enables emulation of the GS's texture mipmapping."), "EmuCore/GS", "hw_mipmap", true); bsi, FSUI_ICONSTR(ICON_FA_BULLSEYE, "Mipmapping"), FSUI_CSTR("Enables emulation of the GS's texture mipmapping."), "EmuCore/GS", "hw_mipmap", true);
} }
else else
{ {
DrawIntRangeSetting(bsi, FSUI_CSTR("Software Rendering Threads"), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_USERS, "Software Rendering Threads"),
FSUI_CSTR("Number of threads to use in addition to the main GS thread for rasterization."), "EmuCore/GS", "extrathreads", 2, 0, FSUI_CSTR("Number of threads to use in addition to the main GS thread for rasterization."), "EmuCore/GS", "extrathreads", 2, 0,
10); 10);
DrawToggleSetting(bsi, FSUI_CSTR("Auto Flush (Software)"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TOILET, "Auto Flush (Software)"),
FSUI_CSTR("Force a primitive flush when a framebuffer is also an input texture."), "EmuCore/GS", "autoflush_sw", true); FSUI_CSTR("Force a primitive flush when a framebuffer is also an input texture."), "EmuCore/GS", "autoflush_sw", true);
DrawToggleSetting(bsi, FSUI_CSTR("Edge AA (AA1)"), FSUI_CSTR("Enables emulation of the GS's edge anti-aliasing (AA1)."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_EYE_DROPPER, "Edge AA (AA1)"), FSUI_CSTR("Enables emulation of the GS's edge anti-aliasing (AA1)."),
"EmuCore/GS", "aa1", true); "EmuCore/GS", "aa1", true);
DrawToggleSetting( DrawToggleSetting(
bsi, FSUI_CSTR("Mipmapping"), FSUI_CSTR("Enables emulation of the GS's texture mipmapping."), "EmuCore/GS", "mipmap", true); bsi, FSUI_ICONSTR(ICON_FA_BULLSEYE, "Mipmapping"), FSUI_CSTR("Enables emulation of the GS's texture mipmapping."), "EmuCore/GS", "mipmap", true);
} }
if (hw_fixes_visible) if (hw_fixes_visible)
{ {
MenuHeading(FSUI_CSTR("Hardware Fixes")); MenuHeading(FSUI_CSTR("Hardware Fixes"));
DrawToggleSetting(bsi, FSUI_CSTR("Manual Hardware Fixes"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_TOOLBOX, "Manual Hardware Fixes"),
FSUI_CSTR("Disables automatic hardware fixes, allowing you to set fixes manually."), "EmuCore/GS", "UserHacks", false); FSUI_CSTR("Disables automatic hardware fixes, allowing you to set fixes manually."), "EmuCore/GS", "UserHacks", false);
const bool manual_hw_fixes = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "UserHacks", false); const bool manual_hw_fixes = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "UserHacks", false);
@ -4336,26 +4336,26 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
const bool replacement_active = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "LoadTextureReplacements", false); const bool replacement_active = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "LoadTextureReplacements", false);
MenuHeading(FSUI_CSTR("Texture Replacement")); MenuHeading(FSUI_CSTR("Texture Replacement"));
DrawToggleSetting(bsi, FSUI_CSTR("Load Textures"), FSUI_CSTR("Loads replacement textures where available and user-provided."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Load Textures"), FSUI_CSTR("Loads replacement textures where available and user-provided."),
"EmuCore/GS", "LoadTextureReplacements", false); "EmuCore/GS", "LoadTextureReplacements", false);
DrawToggleSetting(bsi, FSUI_CSTR("Asynchronous Texture Loading"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SPINNER, "Asynchronous Texture Loading"),
FSUI_CSTR("Loads replacement textures on a worker thread, reducing microstutter when replacements are enabled."), "EmuCore/GS", FSUI_CSTR("Loads replacement textures on a worker thread, reducing microstutter when replacements are enabled."), "EmuCore/GS",
"LoadTextureReplacementsAsync", true, replacement_active); "LoadTextureReplacementsAsync", true, replacement_active);
DrawToggleSetting(bsi, FSUI_CSTR("Precache Replacements"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_DATABASE, "Precache Replacements"),
FSUI_CSTR("Preloads all replacement textures to memory. Not necessary with asynchronous loading."), "EmuCore/GS", FSUI_CSTR("Preloads all replacement textures to memory. Not necessary with asynchronous loading."), "EmuCore/GS",
"PrecacheTextureReplacements", false, replacement_active); "PrecacheTextureReplacements", false, replacement_active);
if (!IsEditingGameSettings(bsi)) if (!IsEditingGameSettings(bsi))
{ {
DrawFolderSetting(bsi, FSUI_CSTR("Replacements Directory"), FSUI_CSTR("Folders"), "Textures", EmuFolders::Textures); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Replacements Directory"), FSUI_CSTR("Folders"), "Textures", EmuFolders::Textures);
} }
MenuHeading(FSUI_CSTR("Texture Dumping")); MenuHeading(FSUI_CSTR("Texture Dumping"));
DrawToggleSetting(bsi, FSUI_CSTR("Dump Textures"), FSUI_CSTR("Dumps replaceable textures to disk. Will reduce performance."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_DOWNLOAD, "Dump Textures"), FSUI_CSTR("Dumps replaceable textures to disk. Will reduce performance."),
"EmuCore/GS", "DumpReplaceableTextures", false); "EmuCore/GS", "DumpReplaceableTextures", false);
DrawToggleSetting(bsi, FSUI_CSTR("Dump Mipmaps"), FSUI_CSTR("Includes mipmaps when dumping textures."), "EmuCore/GS", DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Dump Mipmaps"), FSUI_CSTR("Includes mipmaps when dumping textures."), "EmuCore/GS",
"DumpReplaceableMipmaps", false, dumping_active); "DumpReplaceableMipmaps", false, dumping_active);
DrawToggleSetting(bsi, FSUI_CSTR("Dump FMV Textures"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "Dump FMV Textures"),
FSUI_CSTR("Allows texture dumping when FMVs are active. You should not enable this."), "EmuCore/GS", FSUI_CSTR("Allows texture dumping when FMVs are active. You should not enable this."), "EmuCore/GS",
"DumpTexturesWithFMVActive", false, dumping_active); "DumpTexturesWithFMVActive", false, dumping_active);
} }
@ -4369,10 +4369,10 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
}; };
const bool cas_active = (GetEffectiveIntSetting(bsi, "EmuCore/GS", "CASMode", 0) != static_cast<int>(GSCASMode::Disabled)); const bool cas_active = (GetEffectiveIntSetting(bsi, "EmuCore/GS", "CASMode", 0) != static_cast<int>(GSCASMode::Disabled));
DrawToggleSetting(bsi, FSUI_CSTR("FXAA"), FSUI_CSTR("Enables FXAA post-processing shader."), "EmuCore/GS", "fxaa", false); DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_EYE, "FXAA"), FSUI_CSTR("Enables FXAA post-processing shader."), "EmuCore/GS", "fxaa", false);
DrawIntListSetting(bsi, FSUI_CSTR("Contrast Adaptive Sharpening"), FSUI_CSTR("Enables FidelityFX Contrast Adaptive Sharpening."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_SUN, "Contrast Adaptive Sharpening"), FSUI_CSTR("Enables FidelityFX Contrast Adaptive Sharpening."),
"EmuCore/GS", "CASMode", static_cast<int>(GSCASMode::Disabled), s_cas_options, std::size(s_cas_options), true); "EmuCore/GS", "CASMode", static_cast<int>(GSCASMode::Disabled), s_cas_options, std::size(s_cas_options), true);
DrawIntSpinBoxSetting(bsi, FSUI_CSTR("CAS Sharpness"), DrawIntSpinBoxSetting(bsi, FSUI_ICONSTR(ICON_FA_PENCIL, "CAS Sharpness"),
FSUI_CSTR("Determines the intensity the sharpening effect in CAS post-processing."), "EmuCore/GS", "CASSharpness", 50, 0, 100, FSUI_CSTR("Determines the intensity the sharpening effect in CAS post-processing."), "EmuCore/GS", "CASSharpness", 50, 0, 100,
1, FSUI_CSTR("%d%%"), cas_active); 1, FSUI_CSTR("%d%%"), cas_active);
} }
@ -4381,13 +4381,13 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
{ {
const bool shadeboost_active = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "ShadeBoost", false); const bool shadeboost_active = GetEffectiveBoolSetting(bsi, "EmuCore/GS", "ShadeBoost", false);
DrawToggleSetting(bsi, FSUI_CSTR("Shade Boost"), FSUI_CSTR("Enables brightness/contrast/saturation adjustment."), "EmuCore/GS", DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GEM, "Shade Boost"), FSUI_CSTR("Enables brightness/contrast/saturation adjustment."), "EmuCore/GS",
"ShadeBoost", false); "ShadeBoost", false);
DrawIntRangeSetting(bsi, FSUI_CSTR("Shade Boost Brightness"), FSUI_CSTR("Adjusts brightness. 50 is normal."), "EmuCore/GS", DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_SUN, "Shade Boost Brightness"), FSUI_CSTR("Adjusts brightness. 50 is normal."), "EmuCore/GS",
"ShadeBoost_Brightness", 50, 1, 100, "%d", shadeboost_active); "ShadeBoost_Brightness", 50, 1, 100, "%d", shadeboost_active);
DrawIntRangeSetting(bsi, FSUI_CSTR("Shade Boost Contrast"), FSUI_CSTR("Adjusts contrast. 50 is normal."), "EmuCore/GS", DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_LIGHTBULB, "Shade Boost Contrast"), FSUI_CSTR("Adjusts contrast. 50 is normal."), "EmuCore/GS",
"ShadeBoost_Contrast", 50, 1, 100, "%d", shadeboost_active); "ShadeBoost_Contrast", 50, 1, 100, "%d", shadeboost_active);
DrawIntRangeSetting(bsi, FSUI_CSTR("Shade Boost Saturation"), FSUI_CSTR("Adjusts saturation. 50 is normal."), "EmuCore/GS", DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_DROPLET, "Shade Boost Saturation"), FSUI_CSTR("Adjusts saturation. 50 is normal."), "EmuCore/GS",
"ShadeBoost_Saturation", 50, 1, 100, "%d", shadeboost_active); "ShadeBoost_Saturation", 50, 1, 100, "%d", shadeboost_active);
static constexpr const char* s_tv_shaders[] = { static constexpr const char* s_tv_shaders[] = {
@ -4400,7 +4400,7 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
FSUI_NSTR("4xRGSS"), FSUI_NSTR("4xRGSS"),
FSUI_NSTR("NxAGSS"), FSUI_NSTR("NxAGSS"),
}; };
DrawIntListSetting(bsi, FSUI_CSTR("TV Shaders"), FSUI_CSTR("Applies a shader which replicates the visual effects of different styles of television set."), "EmuCore/GS", "TVShader", 0, DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_TV, "TV Shaders"), FSUI_CSTR("Applies a shader which replicates the visual effects of different styles of television set."), "EmuCore/GS", "TVShader", 0,
s_tv_shaders, std::size(s_tv_shaders), true); s_tv_shaders, std::size(s_tv_shaders), true);
} }
@ -4464,13 +4464,13 @@ void FullscreenUI::DrawAudioSettingsPage()
MenuHeading(FSUI_CSTR("Audio Control")); MenuHeading(FSUI_CSTR("Audio Control"));
DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_VOLUME_UP, "Output Volume"), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_VOLUME_HIGH, "Output Volume"),
FSUI_CSTR("Controls the volume of the audio played on the host."), "SPU2/Output", "OutputVolume", 100, FSUI_CSTR("Controls the volume of the audio played on the host."), "SPU2/Output", "OutputVolume", 100,
0, 100, "%d%%"); 0, 100, "%d%%");
DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_FAST_FORWARD, "Fast Forward Volume"), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_FORWARD_FAST, "Fast Forward Volume"),
FSUI_CSTR("Controls the volume of the audio played on the host when fast forwarding."), "SPU2/Output", FSUI_CSTR("Controls the volume of the audio played on the host when fast forwarding."), "SPU2/Output",
"FastForwardVolume", 100, 0, 100, "%d%%"); "FastForwardVolume", 100, 0, 100, "%d%%");
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_VOLUME_MUTE, "Mute All Sound"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_VOLUME_XMARK, "Mute All Sound"),
FSUI_CSTR("Prevents the emulator from producing any audible sound."), "SPU2/Output", "OutputMuted", FSUI_CSTR("Prevents the emulator from producing any audible sound."), "SPU2/Output", "OutputMuted",
false); false);
@ -4486,12 +4486,12 @@ void FullscreenUI::DrawAudioSettingsPage()
"ExpansionMode", AudioStreamParameters::DEFAULT_EXPANSION_MODE, &AudioStream::ParseExpansionMode, "ExpansionMode", AudioStreamParameters::DEFAULT_EXPANSION_MODE, &AudioStream::ParseExpansionMode,
&AudioStream::GetExpansionModeName, &AudioStream::GetExpansionModeDisplayName, &AudioStream::GetExpansionModeName, &AudioStream::GetExpansionModeDisplayName,
AudioExpansionMode::Count); AudioExpansionMode::Count);
DrawEnumSetting(bsi, FSUI_ICONSTR(ICON_FA_SYNC, "Synchronization"), DrawEnumSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROWS_SPIN, "Synchronization"),
FSUI_CSTR("Changes when SPU samples are generated relative to system emulation."), FSUI_CSTR("Changes when SPU samples are generated relative to system emulation."),
"SPU2/Output", "SyncMode", Pcsx2Config::SPU2Options::DEFAULT_SYNC_MODE, "SPU2/Output", "SyncMode", Pcsx2Config::SPU2Options::DEFAULT_SYNC_MODE,
&Pcsx2Config::SPU2Options::ParseSyncMode, &Pcsx2Config::SPU2Options::GetSyncModeName, &Pcsx2Config::SPU2Options::ParseSyncMode, &Pcsx2Config::SPU2Options::GetSyncModeName,
&Pcsx2Config::SPU2Options::GetSyncModeDisplayName, Pcsx2Config::SPU2Options::SPU2SyncMode::Count); &Pcsx2Config::SPU2Options::GetSyncModeDisplayName, Pcsx2Config::SPU2Options::SPU2SyncMode::Count);
DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_RULER, "Buffer Size"), DrawIntRangeSetting(bsi, FSUI_ICONSTR(ICON_FA_BUCKET, "Buffer Size"),
FSUI_CSTR("Determines the amount of audio buffered before being pulled by the host API."), FSUI_CSTR("Determines the amount of audio buffered before being pulled by the host API."),
"SPU2/Output", "BufferMS", AudioStreamParameters::DEFAULT_BUFFER_MS, 10, 500, FSUI_CSTR("%d ms")); "SPU2/Output", "BufferMS", AudioStreamParameters::DEFAULT_BUFFER_MS, 10, 500, FSUI_CSTR("%d ms"));
if (!GetEffectiveBoolSetting(bsi, "Audio", "OutputLatencyMinimal", AudioStreamParameters::DEFAULT_OUTPUT_LATENCY_MINIMAL)) if (!GetEffectiveBoolSetting(bsi, "Audio", "OutputLatencyMinimal", AudioStreamParameters::DEFAULT_OUTPUT_LATENCY_MINIMAL))
@ -4516,11 +4516,11 @@ void FullscreenUI::DrawMemoryCardSettingsPage()
SettingsInterface* bsi = GetEditingSettingsInterface(); SettingsInterface* bsi = GetEditingSettingsInterface();
MenuHeading(FSUI_CSTR("Settings and Operations")); MenuHeading(FSUI_CSTR("Settings and Operations"));
if (MenuButton(FSUI_ICONSTR(ICON_FA_PLUS, "Create Memory Card"), FSUI_CSTR("Creates a new memory card file or folder."))) if (MenuButton(FSUI_ICONSTR(ICON_FA_FILE_CIRCLE_PLUS, "Create Memory Card"), FSUI_CSTR("Creates a new memory card file or folder.")))
Host::OnCreateMemoryCardOpenRequested(); Host::OnCreateMemoryCardOpenRequested();
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Memory Card Directory"), "Folders", "MemoryCards", EmuFolders::MemoryCards); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Memory Card Directory"), "Folders", "MemoryCards", EmuFolders::MemoryCards);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SEARCH, "Folder Memory Card Filter"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MAGNIFYING_GLASS, "Folder Memory Card Filter"),
FSUI_CSTR("Simulates a larger memory card by filtering saves only to the current game."), "EmuCore", "McdFolderAutoManage", true); FSUI_CSTR("Simulates a larger memory card by filtering saves only to the current game."), "EmuCore", "McdFolderAutoManage", true);
for (u32 port = 0; port < NUM_MEMORY_CARD_PORTS; port++) for (u32 port = 0; port < NUM_MEMORY_CARD_PORTS; port++)
@ -4681,7 +4681,7 @@ void FullscreenUI::DoSaveInputProfile()
for (std::string& name : profiles) for (std::string& name : profiles)
coptions.emplace_back(std::move(name), false); coptions.emplace_back(std::move(name), false);
OpenChoiceDialog( OpenChoiceDialog(
FSUI_ICONSTR(ICON_FA_SAVE, "Save Profile"), false, std::move(coptions), [](s32 index, const std::string& title, bool checked) { FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Save Profile"), false, std::move(coptions), [](s32 index, const std::string& title, bool checked) {
if (index < 0) if (index < 0)
return; return;
@ -4694,7 +4694,7 @@ void FullscreenUI::DoSaveInputProfile()
CloseChoiceDialog(); CloseChoiceDialog();
OpenInputStringDialog(FSUI_ICONSTR(ICON_FA_SAVE, "Save Profile"), OpenInputStringDialog(FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Save Profile"),
FSUI_STR("Enter the name of the input profile you wish to create."), std::string(), FSUI_STR("Enter the name of the input profile you wish to create."), std::string(),
FSUI_ICONSTR(ICON_FA_CHECK, "Create"), [](std::string title) { FSUI_ICONSTR(ICON_FA_CHECK, "Create"), [](std::string title) {
if (!title.empty()) if (!title.empty())
@ -4723,25 +4723,25 @@ void FullscreenUI::DrawControllerSettingsPage()
MenuHeading(FSUI_CSTR("Configuration")); MenuHeading(FSUI_CSTR("Configuration"));
if (MenuButton(
FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Load Profile"), FSUI_CSTR("Replaces these settings with a previously saved input profile.")))
{
DoLoadInputProfile();
}
if (MenuButton(FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Save Profile"), FSUI_CSTR("Stores the current settings to an input profile.")))
{
DoSaveInputProfile();
}
if (MenuButton(FSUI_ICONSTR(ICON_FA_DUMPSTER_FIRE, "Reset Settings"), if (MenuButton(FSUI_ICONSTR(ICON_FA_DUMPSTER_FIRE, "Reset Settings"),
FSUI_CSTR("Resets all configuration to defaults (including bindings)."))) FSUI_CSTR("Resets all configuration to defaults (including bindings).")))
{ {
ResetControllerSettings(); ResetControllerSettings();
} }
if (MenuButton(
FSUI_ICONSTR(ICON_FA_FOLDER_OPEN, "Load Profile"), FSUI_CSTR("Replaces these settings with a previously saved input profile.")))
{
DoLoadInputProfile();
}
if (MenuButton(FSUI_ICONSTR(ICON_FA_SAVE, "Save Profile"), FSUI_CSTR("Stores the current settings to an input profile.")))
{
DoSaveInputProfile();
}
MenuHeading(FSUI_CSTR("Input Sources")); MenuHeading(FSUI_CSTR("Input Sources"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COG, "Enable SDL Input Source"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GEAR, "Enable SDL Input Source"),
FSUI_CSTR("The SDL input source supports most controllers."), "InputSources", "SDL", true, true, false); FSUI_CSTR("The SDL input source supports most controllers."), "InputSources", "SDL", true, true, false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_WIFI, "SDL DualShock 4 / DualSense Enhanced Mode"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_WIFI, "SDL DualShock 4 / DualSense Enhanced Mode"),
FSUI_CSTR("Provides vibration and LED control support over Bluetooth."), "InputSources", "SDLControllerEnhancedMode", true, FSUI_CSTR("Provides vibration and LED control support over Bluetooth."), "InputSources", "SDLControllerEnhancedMode", true,
@ -4750,17 +4750,17 @@ void FullscreenUI::DrawControllerSettingsPage()
FSUI_CSTR("Enable/Disable the Player LED on DualSense controllers."), "InputSources", "SDLPS5PlayerLED", true, FSUI_CSTR("Enable/Disable the Player LED on DualSense controllers."), "InputSources", "SDLPS5PlayerLED", true,
bsi->GetBoolValue("InputSources", "SDLControllerEnhancedMode", true), true); bsi->GetBoolValue("InputSources", "SDLControllerEnhancedMode", true), true);
#ifdef _WIN32 #ifdef _WIN32
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COG, "SDL Raw Input"), FSUI_CSTR("Allow SDL to use raw access to input devices."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GEAR, "SDL Raw Input"), FSUI_CSTR("Allow SDL to use raw access to input devices."),
"InputSources", "SDLRawInput", false, bsi->GetBoolValue("InputSources", "SDL", true), false); "InputSources", "SDLRawInput", false, bsi->GetBoolValue("InputSources", "SDL", true), false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_COG, "Enable XInput Input Source"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_GEAR, "Enable XInput Input Source"),
FSUI_CSTR("The XInput source provides support for XBox 360/XBox One/XBox Series controllers."), "InputSources", "XInput", false, FSUI_CSTR("The XInput source provides support for XBox 360/XBox One/XBox Series controllers."), "InputSources", "XInput", false,
true, false); true, false);
#endif #endif
MenuHeading(FSUI_CSTR("Multitap")); MenuHeading(FSUI_CSTR("Multitap"));
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_PLUS_SQUARE, "Enable Console Port 1 Multitap"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SQUARE_PLUS, "Enable Console Port 1 Multitap"),
FSUI_CSTR("Enables an additional three controller slots. Not supported in all games."), "Pad", "MultitapPort1", false, true, false); FSUI_CSTR("Enables an additional three controller slots. Not supported in all games."), "Pad", "MultitapPort1", false, true, false);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_PLUS_SQUARE, "Enable Console Port 2 Multitap"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SQUARE_PLUS, "Enable Console Port 2 Multitap"),
FSUI_CSTR("Enables an additional three controller slots. Not supported in all games."), "Pad", "MultitapPort2", false, true, false); FSUI_CSTR("Enables an additional three controller slots. Not supported in all games."), "Pad", "MultitapPort2", false, true, false);
const std::array<bool, 2> mtap_enabled = { const std::array<bool, 2> mtap_enabled = {
@ -4821,7 +4821,7 @@ void FullscreenUI::DrawControllerSettingsPage()
} }
if (MenuButton( if (MenuButton(
FSUI_ICONSTR(ICON_FA_MAGIC, "Automatic Mapping"), FSUI_CSTR("Attempts to map the selected port to a chosen controller."))) FSUI_ICONSTR(ICON_FA_WAND_MAGIC_SPARKLES, "Automatic Mapping"), FSUI_CSTR("Attempts to map the selected port to a chosen controller.")))
StartAutomaticBinding(global_slot); StartAutomaticBinding(global_slot);
for (const InputBindingInfo& bi : ci->bindings) for (const InputBindingInfo& bi : ci->bindings)
@ -5000,13 +5000,13 @@ void FullscreenUI::DrawControllerSettingsPage()
{ {
if (mtap_enabled[mtap_port]) if (mtap_enabled[mtap_port])
{ {
MenuHeading(SmallString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS_H, "Controller Port {}{} Settings")), MenuHeading(SmallString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS, "Controller Port {}{} Settings")),
mtap_port + 1, mtap_slot_names[mtap_slot])); mtap_port + 1, mtap_slot_names[mtap_slot]));
} }
else else
{ {
MenuHeading( MenuHeading(
SmallString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS_H, "Controller Port {} Settings")), mtap_port + 1)); SmallString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS, "Controller Port {} Settings")), mtap_port + 1));
} }
for (const SettingInfo& si : ci->settings) for (const SettingInfo& si : ci->settings)
@ -5056,7 +5056,7 @@ void FullscreenUI::DrawControllerSettingsPage()
if (!subtypes.empty()) if (!subtypes.empty())
{ {
const char* subtype_name = USB::GetDeviceSubtypeName(type, subtype); const char* subtype_name = USB::GetDeviceSubtypeName(type, subtype);
if (MenuButton(FSUI_ICONSTR(ICON_FA_COG, "Device Subtype"), subtype_name)) if (MenuButton(FSUI_ICONSTR(ICON_FA_GEAR, "Device Subtype"), subtype_name))
{ {
ImGuiFullscreen::ChoiceDialogOptions options; ImGuiFullscreen::ChoiceDialogOptions options;
options.reserve(subtypes.size()); options.reserve(subtypes.size());
@ -5099,7 +5099,7 @@ void FullscreenUI::DrawControllerSettingsPage()
const std::span<const SettingInfo> settings(USB::GetDeviceSettings(type, subtype)); const std::span<const SettingInfo> settings(USB::GetDeviceSettings(type, subtype));
if (!settings.empty()) if (!settings.empty())
{ {
MenuHeading(TinyString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS_H, "{} Settings")), USB::GetDeviceName(type))); MenuHeading(TinyString::from_format(fmt::runtime(FSUI_ICONSTR(ICON_FA_SLIDERS, "{} Settings")), USB::GetDeviceName(type)));
const std::string section(USB::GetConfigSection(port)); const std::string section(USB::GetConfigSection(port));
for (const SettingInfo& si : settings) for (const SettingInfo& si : settings)
@ -5144,12 +5144,12 @@ void FullscreenUI::DrawFoldersSettingsPage()
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_CUBES, "Cache Directory"), "Folders", "Cache", EmuFolders::Cache); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_CUBES, "Cache Directory"), "Folders", "Cache", EmuFolders::Cache);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Covers Directory"), "Folders", "Covers", EmuFolders::Covers); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_IMAGES, "Covers Directory"), "Folders", "Covers", EmuFolders::Covers);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_CAMERA, "Snapshots Directory"), "Folders", "Snapshots", EmuFolders::Snapshots); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_CAMERA, "Snapshots Directory"), "Folders", "Snapshots", EmuFolders::Snapshots);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_SAVE, "Save States Directory"), "Folders", "Savestates", EmuFolders::Savestates); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Save States Directory"), "Folders", "Savestates", EmuFolders::Savestates);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_WRENCH, "Game Settings Directory"), "Folders", "GameSettings", EmuFolders::GameSettings); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_WRENCH, "Game Settings Directory"), "Folders", "GameSettings", EmuFolders::GameSettings);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_PF_GAMEPAD_ALT, "Input Profile Directory"), "Folders", "InputProfiles", EmuFolders::InputProfiles); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_PF_GAMEPAD_ALT, "Input Profile Directory"), "Folders", "InputProfiles", EmuFolders::InputProfiles);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_PF_INFINITY, "Cheats Directory"), "Folders", "Cheats", EmuFolders::Cheats); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_PF_INFINITY, "Cheats Directory"), "Folders", "Cheats", EmuFolders::Cheats);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_BAND_AID, "Patches Directory"), "Folders", "Patches", EmuFolders::Patches); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_BANDAGE, "Patches Directory"), "Folders", "Patches", EmuFolders::Patches);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_TSHIRT, "Texture Replacements Directory"), "Folders", "Textures", EmuFolders::Textures); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_SHIRT, "Texture Replacements Directory"), "Folders", "Textures", EmuFolders::Textures);
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "Video Dumping Directory"), "Folders", "Videos", EmuFolders::Videos); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_VIDEO, "Video Dumping Directory"), "Folders", "Videos", EmuFolders::Videos);
EndMenuButtons(); EndMenuButtons();
@ -5190,7 +5190,7 @@ void FullscreenUI::DrawAdvancedSettingsPage()
if (show_advanced_settings) if (show_advanced_settings)
{ {
DrawToggleSetting( DrawToggleSetting(
bsi, FSUI_ICONSTR(ICON_FA_STOPWATCH, "Log Timestamps"), FSUI_CSTR("Writes timestamps alongside log messages."), "Logging", "EnableTimestamps", true); bsi, FSUI_ICONSTR(ICON_FA_CLOCK, "Log Timestamps"), FSUI_CSTR("Writes timestamps alongside log messages."), "Logging", "EnableTimestamps", true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MICROCHIP, "EE Console"), FSUI_CSTR("Writes debug messages from the game's EE code to the console."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MICROCHIP, "EE Console"), FSUI_CSTR("Writes debug messages from the game's EE code to the console."),
"Logging", "EnableEEConsole", true); "Logging", "EnableEEConsole", true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MICROCHIP, "IOP Console"), FSUI_CSTR("Writes debug messages from the game's IOP code to the console."), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_MICROCHIP, "IOP Console"), FSUI_CSTR("Writes debug messages from the game's IOP code to the console."),
@ -5272,13 +5272,13 @@ void FullscreenUI::DrawAdvancedSettingsPage()
"EnableIOP", true); "EnableIOP", true);
MenuHeading(FSUI_CSTR("Savestate")); MenuHeading(FSUI_CSTR("Savestate"));
DrawIntListSetting(bsi, FSUI_CSTR("Compression Method"), FSUI_CSTR("Sets the compression algorithm for savestate."), "EmuCore", DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_BOX_OPEN, "Compression Method"), FSUI_CSTR("Sets the compression algorithm for savestate."), "EmuCore",
"SavestateCompressionType", static_cast<int>(SavestateCompressionMethod::Zstandard), s_savestate_compression_type, std::size(s_savestate_compression_type), true); "SavestateCompressionType", static_cast<int>(SavestateCompressionMethod::Zstandard), s_savestate_compression_type, std::size(s_savestate_compression_type), true);
DrawIntListSetting(bsi, FSUI_CSTR("Compression Level"), FSUI_CSTR("Sets the compression level for savestate."), "EmuCore", DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPRESS, "Compression Level"), FSUI_CSTR("Sets the compression level for savestate."), "EmuCore",
"SavestateCompressionRatio", static_cast<int>(SavestateCompressionLevel::Medium), s_savestate_compression_ratio, std::size(s_savestate_compression_ratio), true); "SavestateCompressionRatio", static_cast<int>(SavestateCompressionLevel::Medium), s_savestate_compression_ratio, std::size(s_savestate_compression_ratio), true);
MenuHeading(FSUI_CSTR("Graphics")); MenuHeading(FSUI_CSTR("Graphics"));
DrawToggleSetting(bsi, FSUI_CSTR("Use Debug Device"), FSUI_CSTR("Enables API-level validation of graphics commands."), "EmuCore/GS", DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_BUG, "Use Debug Device"), FSUI_CSTR("Enables API-level validation of graphics commands."), "EmuCore/GS",
"UseDebugDevice", false); "UseDebugDevice", false);
} }
@ -5574,13 +5574,13 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type)
if (ActiveButton(FSUI_ICONSTR(ICON_FA_PLAY, "Resume Game"), false) || WantsToCloseMenu()) if (ActiveButton(FSUI_ICONSTR(ICON_FA_PLAY, "Resume Game"), false) || WantsToCloseMenu())
ClosePauseMenu(); ClosePauseMenu();
if (ActiveButton(FSUI_ICONSTR(ICON_FA_FAST_FORWARD, "Toggle Frame Limit"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_FORWARD_FAST, "Toggle Frame Limit"), false))
{ {
ClosePauseMenu(); ClosePauseMenu();
DoToggleFrameLimit(); DoToggleFrameLimit();
} }
if (ActiveButton(FSUI_ICONSTR(ICON_FA_UNDO, "Load State"), false, can_load_or_save_state)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_ARROW_ROTATE_LEFT, "Load State"), false, can_load_or_save_state))
{ {
if (OpenSaveStateSelector(true)) if (OpenSaveStateSelector(true))
s_current_main_window = MainWindowType::None; s_current_main_window = MainWindowType::None;
@ -5612,8 +5612,8 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type)
ClosePauseMenu(); ClosePauseMenu();
} }
if (ActiveButton(GSIsHardwareRenderer() ? (FSUI_ICONSTR(ICON_FA_PAINT_BRUSH, "Switch To Software Renderer")) : if (ActiveButton(GSIsHardwareRenderer() ? (FSUI_ICONSTR(ICON_FA_PAINTBRUSH, "Switch To Software Renderer")) :
(FSUI_ICONSTR(ICON_FA_PAINT_BRUSH, "Switch To Hardware Renderer")), (FSUI_ICONSTR(ICON_FA_PAINTBRUSH, "Switch To Hardware Renderer")),
false)) false))
{ {
ClosePauseMenu(); ClosePauseMenu();
@ -5626,7 +5626,7 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type)
RequestChangeDisc(); RequestChangeDisc();
} }
if (ActiveButton(FSUI_ICONSTR(ICON_FA_SLIDERS_H, "Settings"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_SLIDERS, "Settings"), false))
SwitchToSettings(); SwitchToSettings();
if (ActiveButton(FSUI_ICONSTR(ICON_FA_POWER_OFF, "Close Game"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_POWER_OFF, "Close Game"), false))
@ -5650,12 +5650,12 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type)
if (ActiveButton(FSUI_ICONSTR(ICON_PF_BACKWARD, "Back To Pause Menu"), false) || WantsToCloseMenu()) if (ActiveButton(FSUI_ICONSTR(ICON_PF_BACKWARD, "Back To Pause Menu"), false) || WantsToCloseMenu())
OpenPauseSubMenu(PauseSubMenu::None); OpenPauseSubMenu(PauseSubMenu::None);
if (ActiveButton(FSUI_ICONSTR(ICON_FA_SYNC, "Reset System"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_ARROWS_SPIN, "Reset System"), false))
{ {
RequestReset(); RequestReset();
} }
if (ActiveButton(FSUI_ICONSTR(ICON_FA_SAVE, "Exit And Save State"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_FLOPPY_DISK, "Exit And Save State"), false))
RequestShutdown(true); RequestShutdown(true);
if (ActiveButton(FSUI_ICONSTR(ICON_FA_POWER_OFF, "Exit Without Saving"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_POWER_OFF, "Exit Without Saving"), false))
@ -6004,7 +6004,7 @@ void FullscreenUI::DrawSaveStateSelector(bool is_loading)
} }
} }
if (ActiveButton(FSUI_ICONSTR(ICON_FA_WINDOW_CLOSE, "Close Menu"), false, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_SQUARE_XMARK, "Close Menu"), false, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
{ {
is_open = false; is_open = false;
} }
@ -6228,7 +6228,7 @@ void FullscreenUI::DrawResumeStateSelector()
} }
} }
if (ActiveButton(FSUI_ICONSTR(ICON_FA_WINDOW_CLOSE, "Cancel"), false) || WantsToCloseMenu()) if (ActiveButton(FSUI_ICONSTR(ICON_FA_SQUARE_XMARK, "Cancel"), false) || WantsToCloseMenu())
{ {
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
is_open = false; is_open = false;
@ -6270,7 +6270,7 @@ void FullscreenUI::DoLoadState(std::string path)
Host::RunOnCPUThread([error_desc = error.GetDescription()]() Host::RunOnCPUThread([error_desc = error.GetDescription()]()
{ {
ImGuiFullscreen::OpenInfoMessageDialog( ImGuiFullscreen::OpenInfoMessageDialog(
FSUI_ICONSTR(ICON_FA_EXCLAMATION_TRIANGLE, "Incompatible Save State"), FSUI_ICONSTR(ICON_FA_TRIANGLE_EXCLAMATION, "Incompatible Save State"),
FSUI_STR(error_desc)); FSUI_STR(error_desc));
}); });
} }
@ -6801,12 +6801,12 @@ void FullscreenUI::HandleGameListOptions(const GameList::Entry* entry)
ImGuiFullscreen::ChoiceDialogOptions options = { ImGuiFullscreen::ChoiceDialogOptions options = {
{FSUI_ICONSTR(ICON_FA_WRENCH, "Game Properties"), false}, {FSUI_ICONSTR(ICON_FA_WRENCH, "Game Properties"), false},
{FSUI_ICONSTR(ICON_FA_PLAY, "Resume Game"), false}, {FSUI_ICONSTR(ICON_FA_PLAY, "Resume Game"), false},
{FSUI_ICONSTR(ICON_FA_UNDO, "Load State"), false}, {FSUI_ICONSTR(ICON_FA_ARROW_ROTATE_LEFT, "Load State"), false},
{FSUI_ICONSTR(ICON_PF_STAR, "Default Boot"), false}, {FSUI_ICONSTR(ICON_PF_STAR, "Default Boot"), false},
{FSUI_ICONSTR(ICON_FA_FAST_FORWARD, "Fast Boot"), false}, {FSUI_ICONSTR(ICON_FA_FORWARD_FAST, "Fast Boot"), false},
{FSUI_ICONSTR(ICON_FA_COMPACT_DISC, "Full Boot"), false}, {FSUI_ICONSTR(ICON_FA_COMPACT_DISC, "Full Boot"), false},
{FSUI_ICONSTR(ICON_FA_STOPWATCH, "Reset Play Time"), false}, {FSUI_ICONSTR(ICON_FA_STOPWATCH, "Reset Play Time"), false},
{FSUI_ICONSTR(ICON_FA_WINDOW_CLOSE, "Close Menu"), false}, {FSUI_ICONSTR(ICON_FA_SQUARE_XMARK, "Close Menu"), false},
}; };
const bool has_resume_state = VMManager::HasSaveStateInSlot(entry->serial.c_str(), entry->crc, -1); const bool has_resume_state = VMManager::HasSaveStateInSlot(entry->serial.c_str(), entry->crc, -1);
@ -6918,7 +6918,7 @@ void FullscreenUI::DrawGameListSettingsWindow()
(FSUI_ICONSTR(ICON_FA_FOLDER_PLUS, "Enable Subdirectory Scanning")), (FSUI_ICONSTR(ICON_FA_FOLDER_PLUS, "Enable Subdirectory Scanning")),
false}, false},
{FSUI_ICONSTR(ICON_FA_TRASH, "Remove From List"), false}, {FSUI_ICONSTR(ICON_FA_TRASH, "Remove From List"), false},
{FSUI_ICONSTR(ICON_FA_WINDOW_CLOSE, "Close Menu"), false}, {FSUI_ICONSTR(ICON_FA_SQUARE_XMARK, "Close Menu"), false},
}; };
OpenChoiceDialog(SmallString::from_format(ICON_FA_FOLDER " {}", it.first).c_str(), false, std::move(options), OpenChoiceDialog(SmallString::from_format(ICON_FA_FOLDER " {}", it.first).c_str(), false, std::move(options),
@ -6992,7 +6992,7 @@ void FullscreenUI::DrawGameListSettingsWindow()
"UI", "DefaultFullscreenUIGameView", 0, view_types, std::size(view_types), true); "UI", "DefaultFullscreenUIGameView", 0, view_types, std::size(view_types), true);
DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_SORT, "Sort By"), FSUI_CSTR("Determines which field the game list will be sorted by."), DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_SORT, "Sort By"), FSUI_CSTR("Determines which field the game list will be sorted by."),
"UI", "FullscreenUIGameSort", 0, sort_types, std::size(sort_types), true); "UI", "FullscreenUIGameSort", 0, sort_types, std::size(sort_types), true);
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_SORT_ALPHA_DOWN, "Sort Reversed"), DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_ARROW_DOWN_A_Z, "Sort Reversed"),
FSUI_CSTR("Reverses the game list sort order from the default (usually ascending to descending)."), "UI", FSUI_CSTR("Reverses the game list sort order from the default (usually ascending to descending)."), "UI",
"FullscreenUIGameSortReverse", false); "FullscreenUIGameSortReverse", false);
} }
@ -7001,7 +7001,7 @@ void FullscreenUI::DrawGameListSettingsWindow()
{ {
DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FOLDER, "Covers Directory"), "Folders", "Covers", EmuFolders::Covers); DrawFolderSetting(bsi, FSUI_ICONSTR(ICON_FA_FOLDER, "Covers Directory"), "Folders", "Covers", EmuFolders::Covers);
if (MenuButton( if (MenuButton(
FSUI_ICONSTR(ICON_FA_FILE_DOWNLOAD, "Download Covers"), FSUI_CSTR("Downloads covers from a user-specified URL template."))) FSUI_ICONSTR(ICON_FA_DOWNLOAD, "Download Covers"), FSUI_CSTR("Downloads covers from a user-specified URL template.")))
{ {
Host::OnCoverDownloaderOpenRequested(); Host::OnCoverDownloaderOpenRequested();
} }
@ -7010,11 +7010,11 @@ void FullscreenUI::DrawGameListSettingsWindow()
MenuHeading(FSUI_CSTR("Operations")); MenuHeading(FSUI_CSTR("Operations"));
{ {
if (MenuButton( if (MenuButton(
FSUI_ICONSTR(ICON_FA_SEARCH, "Scan For New Games"), FSUI_CSTR("Identifies any new files added to the game directories."))) FSUI_ICONSTR(ICON_FA_MAGNIFYING_GLASS, "Scan For New Games"), FSUI_CSTR("Identifies any new files added to the game directories.")))
{ {
Host::RefreshGameListAsync(false); Host::RefreshGameListAsync(false);
} }
if (MenuButton(FSUI_ICONSTR(ICON_FA_SEARCH_PLUS, "Rescan All Games"), if (MenuButton(FSUI_ICONSTR(ICON_FA_ARROW_ROTATE_RIGHT, "Rescan All Games"),
FSUI_CSTR("Forces a full rescan of all games previously identified."))) FSUI_CSTR("Forces a full rescan of all games previously identified.")))
{ {
Host::RefreshGameListAsync(true); Host::RefreshGameListAsync(true);
@ -7224,7 +7224,7 @@ void FullscreenUI::DrawAboutWindow()
if (ActiveButton(FSUI_ICONSTR(ICON_FA_NEWSPAPER, "License"), false)) if (ActiveButton(FSUI_ICONSTR(ICON_FA_NEWSPAPER, "License"), false))
ExitFullscreenAndOpenURL(PCSX2_LICENSE_URL); ExitFullscreenAndOpenURL(PCSX2_LICENSE_URL);
if (ActiveButton(FSUI_ICONSTR(ICON_FA_WINDOW_CLOSE, "Close"), false) || WantsToCloseMenu()) if (ActiveButton(FSUI_ICONSTR(ICON_FA_SQUARE_XMARK, "Close"), false) || WantsToCloseMenu())
{ {
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
s_about_window_open = false; s_about_window_open = false;

View File

@ -22,7 +22,7 @@
#include "common/Threading.h" #include "common/Threading.h"
#include "common/Timer.h" #include "common/Timer.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "imgui_internal.h" #include "imgui_internal.h"
#include "imgui_stdlib.h" #include "imgui_stdlib.h"
@ -2368,7 +2368,7 @@ void ImGuiFullscreen::DrawChoiceDialog()
auto& option = s_choice_dialog_options[i]; auto& option = s_choice_dialog_options[i];
const SmallString title = const SmallString title =
SmallString::from_format("{0} {1}", option.second ? ICON_FA_CHECK_SQUARE : ICON_FA_SQUARE, option.first); SmallString::from_format("{0} {1}", option.second ? ICON_FA_SQUARE_CHECK : ICON_FA_SQUARE, option.first);
if (MenuButton(title.c_str(), nullptr, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY)) if (MenuButton(title.c_str(), nullptr, true, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY))
{ {
choice = i; choice = i;
@ -2501,7 +2501,7 @@ void ImGuiFullscreen::DrawInputDialog()
cb(std::move(text)); cb(std::move(text));
} }
if (ActiveButton(ICON_FA_TIMES " Cancel", false)) if (ActiveButton(ICON_FA_XMARK " Cancel", false))
{ {
CloseInputDialog(); CloseInputDialog();

View File

@ -5,7 +5,7 @@
#include "common/Pcsx2Defs.h" #include "common/Pcsx2Defs.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "imgui.h" #include "imgui.h"
#include "imgui_internal.h" #include "imgui_internal.h"
@ -263,9 +263,9 @@ namespace ImGuiFullscreen
using MessageDialogCallback = std::function<void(s32)>; using MessageDialogCallback = std::function<void(s32)>;
bool IsMessageBoxDialogOpen(); bool IsMessageBoxDialogOpen();
void OpenConfirmMessageDialog(std::string title, std::string message, ConfirmMessageDialogCallback callback, void OpenConfirmMessageDialog(std::string title, std::string message, ConfirmMessageDialogCallback callback,
std::string yes_button_text = ICON_FA_CHECK " Yes", std::string no_button_text = ICON_FA_TIMES " No"); std::string yes_button_text = ICON_FA_CHECK " Yes", std::string no_button_text = ICON_FA_XMARK " No");
void OpenInfoMessageDialog(std::string title, std::string message, InfoMessageDialogCallback callback = {}, void OpenInfoMessageDialog(std::string title, std::string message, InfoMessageDialogCallback callback = {},
std::string button_text = ICON_FA_WINDOW_CLOSE " Close"); std::string button_text = ICON_FA_SQUARE_XMARK " Close");
void OpenMessageDialog(std::string title, std::string message, MessageDialogCallback callback, std::string first_button_text, void OpenMessageDialog(std::string title, std::string message, MessageDialogCallback callback, std::string first_button_text,
std::string second_button_text, std::string third_button_text); std::string second_button_text, std::string third_button_text);
void CloseMessageDialog(); void CloseMessageDialog();

View File

@ -6,7 +6,7 @@
#include "Counters.h" #include "Counters.h"
#include "GS/GS.h" #include "GS/GS.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "ImGui/FullscreenUI.h" #include "ImGui/FullscreenUI.h"
#include "ImGui/ImGuiFullscreen.h" #include "ImGui/ImGuiFullscreen.h"
#include "ImGui/ImGuiManager.h" #include "ImGui/ImGuiManager.h"
@ -493,8 +493,8 @@ ImFont* ImGuiManager::AddFixedFont(float size)
bool ImGuiManager::AddIconFonts(float size) bool ImGuiManager::AddIconFonts(float size)
{ {
// clang-format off // clang-format off
static constexpr ImWchar range_fa[] = { 0xe06f,0xe06f,0xf001,0xf002,0xf005,0xf005,0xf007,0xf007,0xf00c,0xf00e,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf021,0xf023,0xf025,0xf028,0xf02b,0xf02b,0xf02e,0xf02e,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03e,0xf04b,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf05a,0xf05a,0xf05e,0xf05e,0xf063,0xf063,0xf067,0xf067,0xf06a,0xf06a,0xf06e,0xf06e,0xf071,0xf071,0xf077,0xf078,0xf07b,0xf07c,0xf084,0xf084,0xf091,0xf091,0xf0ac,0xf0ad,0xf0b0,0xf0b0,0xf0c5,0xf0c5,0xf0c7,0xf0c8,0xf0cb,0xf0cb,0xf0d0,0xf0d0,0xf0dc,0xf0dc,0xf0e2,0xf0e2,0xf0eb,0xf0eb,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf11b,0xf11c,0xf120,0xf121,0xf129,0xf12a,0xf140,0xf140,0xf14a,0xf14a,0xf15b,0xf15b,0xf15d,0xf15d,0xf187,0xf188,0xf191,0xf192,0xf1b3,0xf1b3,0xf1de,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fc,0xf1fc,0xf21e,0xf21e,0xf245,0xf245,0xf26c,0xf26c,0xf279,0xf279,0xf2bd,0xf2bd,0xf2db,0xf2db,0xf2f2,0xf2f2,0xf302,0xf302,0xf3c1,0xf3c1,0xf3fd,0xf3fd,0xf410,0xf410,0xf462,0xf462,0xf466,0xf466,0xf4e2,0xf4e2,0xf51f,0xf51f,0xf545,0xf545,0xf54c,0xf54c,0xf553,0xf553,0xf56d,0xf56d,0xf5a2,0xf5a2,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf70e,0xf70e,0xf756,0xf756,0xf780,0xf780,0xf794,0xf794,0xf815,0xf815,0xf84c,0xf84c,0xf8cc,0xf8cc,0x0,0x0 }; static constexpr ImWchar range_fa[] = { 0xe06f,0xe06f,0xe097,0xe097,0xe2ca,0xe2ca,0xe494,0xe494,0xe4bb,0xe4bb,0xe4cf,0xe4cf,0xe51f,0xe51f,0xf001,0xf002,0xf005,0xf005,0xf007,0xf007,0xf009,0xf00a,0xf00c,0xf00d,0xf011,0xf011,0xf013,0xf013,0xf017,0xf017,0xf019,0xf019,0xf01e,0xf01e,0xf022,0xf023,0xf025,0xf028,0xf02b,0xf02b,0xf02e,0xf02e,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03e,0xf043,0xf043,0xf047,0xf047,0xf04b,0xf04c,0xf04e,0xf04e,0xf050,0xf050,0xf052,0xf052,0xf05a,0xf05a,0xf05e,0xf05e,0xf063,0xf063,0xf066,0xf066,0xf06a,0xf06a,0xf06e,0xf06e,0xf071,0xf071,0xf077,0xf078,0xf07b,0xf07c,0xf084,0xf084,0xf08e,0xf08e,0xf091,0xf091,0xf0a0,0xf0a0,0xf0ac,0xf0ad,0xf0b0,0xf0b0,0xf0c0,0xf0c0,0xf0c5,0xf0c5,0xf0c7,0xf0c8,0xf0cb,0xf0cb,0xf0dc,0xf0dc,0xf0e2,0xf0e2,0xf0eb,0xf0ec,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf120,0xf121,0xf125,0xf125,0xf129,0xf129,0xf140,0xf140,0xf14a,0xf14a,0xf14c,0xf14c,0xf15b,0xf15b,0xf15d,0xf15d,0xf185,0xf185,0xf187,0xf188,0xf191,0xf192,0xf1b3,0xf1b3,0xf1c0,0xf1c0,0xf1da,0xf1da,0xf1de,0xf1de,0xf1e6,0xf1e6,0xf1ea,0xf1eb,0xf1f8,0xf1f8,0xf1fb,0xf1fc,0xf21e,0xf21e,0xf245,0xf245,0xf26c,0xf26c,0xf279,0xf279,0xf2a8,0xf2a8,0xf2bd,0xf2bd,0xf2d3,0xf2d3,0xf2db,0xf2db,0xf2f2,0xf2f2,0xf302,0xf303,0xf31e,0xf31e,0xf360,0xf360,0xf3a5,0xf3a5,0xf3c1,0xf3c1,0xf462,0xf462,0xf466,0xf466,0xf49e,0xf49e,0xf4e2,0xf4e2,0xf51f,0xf51f,0xf530,0xf530,0xf54c,0xf54c,0xf552,0xf553,0xf5a2,0xf5a2,0xf5a5,0xf5a5,0xf5bc,0xf5bc,0xf5c7,0xf5c7,0xf624,0xf625,0xf62a,0xf62a,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf70e,0xf70e,0xf756,0xf756,0xf780,0xf780,0xf794,0xf794,0xf7d8,0xf7d8,0xf815,0xf815,0xf84c,0xf84c,0xf87c,0xf87c,0xf8cc,0xf8cc,0x0,0x0 };
static constexpr ImWchar range_pf[] = { 0x2198,0x2199,0x219e,0x21a7,0x21b0,0x21b3,0x21ba,0x21c3,0x21ce,0x21ce,0x21d0,0x21d4,0x21dc,0x21dd,0x21e0,0x21e3,0x21e6,0x21e8,0x21f3,0x21f3,0x21f7,0x21f8,0x21fa,0x21fb,0x2206,0x2208,0x221a,0x221a,0x227a,0x227d,0x22bf,0x22c8,0x2349,0x2349,0x235a,0x235e,0x2360,0x2361,0x2364,0x2367,0x237a,0x237b,0x237d,0x237d,0x237f,0x237f,0x23b2,0x23b5,0x23cc,0x23cc,0x23f4,0x23f7,0x2427,0x243a,0x243d,0x243d,0x2443,0x2443,0x2460,0x246b,0x248f,0x248f,0x24f5,0x24fd,0x24ff,0x24ff,0x2605,0x2605,0x2699,0x2699,0x278a,0x278e,0xe000,0xe001,0xff21,0xff3a,0x0,0x0 }; static constexpr ImWchar range_pf[] = { 0x2198,0x2199,0x219e,0x21a7,0x21b0,0x21b3,0x21ba,0x21c3,0x21ce,0x21ce,0x21d0,0x21d4,0x21dc,0x21dd,0x21e0,0x21e3,0x21e6,0x21e8,0x21f3,0x21f3,0x21f7,0x21f8,0x21fa,0x21fb,0x2206,0x2208,0x221a,0x221a,0x227a,0x227d,0x22bf,0x22c8,0x2349,0x2349,0x235a,0x235e,0x2360,0x2361,0x2364,0x2367,0x237a,0x237d,0x237f,0x237f,0x23b2,0x23b5,0x23cc,0x23cc,0x23f4,0x23f7,0x2427,0x243a,0x243d,0x243d,0x2443,0x2443,0x2460,0x246b,0x248f,0x248f,0x24f5,0x24fd,0x24ff,0x24ff,0x2605,0x2605,0x2699,0x2699,0x278a,0x278e,0xe000,0xe001,0xff21,0xff3a,0x0,0x0 };
// clang-format on // clang-format on
{ {

View File

@ -10,7 +10,7 @@
#include "GS/GSVector.h" #include "GS/GSVector.h"
#include "GS/Renderers/Common/GSDevice.h" #include "GS/Renderers/Common/GSDevice.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "IconsPromptFont.h" #include "IconsPromptFont.h"
#include "ImGui/FullscreenUI.h" #include "ImGui/FullscreenUI.h"
#include "ImGui/ImGuiAnimated.h" #include "ImGui/ImGuiAnimated.h"
@ -289,7 +289,7 @@ __ri void ImGuiManager::DrawPerformanceOverlay(float& position_y, float scale, f
if (target_speed == EmuConfig.EmulationSpeed.SlomoScalar) // Slow-Motion if (target_speed == EmuConfig.EmulationSpeed.SlomoScalar) // Slow-Motion
DRAW_LINE(standard_font, ICON_PF_SLOW_MOTION, IM_COL32(255, 255, 255, 255)); DRAW_LINE(standard_font, ICON_PF_SLOW_MOTION, IM_COL32(255, 255, 255, 255));
else if (target_speed == EmuConfig.EmulationSpeed.TurboScalar) // Turbo else if (target_speed == EmuConfig.EmulationSpeed.TurboScalar) // Turbo
DRAW_LINE(standard_font, ICON_FA_FAST_FORWARD, IM_COL32(255, 255, 255, 255)); DRAW_LINE(standard_font, ICON_FA_FORWARD_FAST, IM_COL32(255, 255, 255, 255));
else // Unlimited else // Unlimited
DRAW_LINE(standard_font, ICON_FA_FORWARD, IM_COL32(255, 255, 255, 255)); DRAW_LINE(standard_font, ICON_FA_FORWARD, IM_COL32(255, 255, 255, 255));
} }
@ -1138,7 +1138,7 @@ void SaveStateSelectorUI::ShowSlotOSDMessage()
else else
date = TRANSLATE_STR("ImGuiOverlays", "no save yet"); date = TRANSLATE_STR("ImGuiOverlays", "no save yet");
Host::AddIconOSDMessage("ShowSlotOSDMessage", ICON_FA_SEARCH, Host::AddIconOSDMessage("ShowSlotOSDMessage", ICON_FA_MAGNIFYING_GLASS,
fmt::format(TRANSLATE_FS("Hotkeys", "Save slot {0} selected ({1})."), slot, date), fmt::format(TRANSLATE_FS("Hotkeys", "Save slot {0} selected ({1})."), slot, date),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
} }

View File

@ -6,7 +6,7 @@
#include "MTGS.h" #include "MTGS.h"
#include "MTVU.h" #include "MTVU.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "VMManager.h" #include "VMManager.h"
#include "common/FPControl.h" #include "common/FPControl.h"
@ -993,7 +993,7 @@ void MTGS::SetSoftwareRendering(bool software, GSInterlaceMode interlace, bool d
if (display_message) if (display_message)
{ {
Host::AddIconOSDMessage("SwitchRenderer", ICON_FA_MAGIC, software ? Host::AddIconOSDMessage("SwitchRenderer", ICON_FA_WAND_MAGIC_SPARKLES, software ?
TRANSLATE_STR("GS", "Switching to Software Renderer...") : TRANSLATE_STR("GS", "Switching to Hardware Renderer..."), TRANSLATE_STR("GS", "Switching to Software Renderer...") : TRANSLATE_STR("GS", "Switching to Hardware Renderer..."),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
} }

View File

@ -19,7 +19,7 @@
#include "Memory.h" #include "Memory.h"
#include "Patch.h" #include "Patch.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "fmt/format.h" #include "fmt/format.h"
#include <algorithm> #include <algorithm>
@ -348,7 +348,7 @@ bool Patch::OpenPatchesZip()
static bool warning_shown = false; static bool warning_shown = false;
if (!warning_shown) if (!warning_shown)
{ {
Host::AddIconOSDMessage("PatchesZipOpenWarning", ICON_FA_BAND_AID, Host::AddIconOSDMessage("PatchesZipOpenWarning", ICON_FA_BANDAGE,
fmt::format(TRANSLATE_FS("Patch", "Failed to open {}. Built-in game patches are not available."), fmt::format(TRANSLATE_FS("Patch", "Failed to open {}. Built-in game patches are not available."),
PATCHES_ZIP_NAME), PATCHES_ZIP_NAME),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
@ -783,11 +783,11 @@ void Patch::UpdateActivePatches(bool reload_enabled_list, bool verbose, bool ver
{ {
if (!message.empty()) if (!message.empty())
{ {
Host::AddIconOSDMessage("LoadPatches", ICON_FA_BAND_AID, message, Host::OSD_INFO_DURATION); Host::AddIconOSDMessage("LoadPatches", ICON_FA_BANDAGE, message, Host::OSD_INFO_DURATION);
} }
else else
{ {
Host::AddIconOSDMessage("LoadPatches", ICON_FA_BAND_AID, Host::AddIconOSDMessage("LoadPatches", ICON_FA_BANDAGE,
TRANSLATE_SV( TRANSLATE_SV(
"Patch", "No cheats or patches (widescreen, compatibility or others) are found / enabled."), "Patch", "No cheats or patches (widescreen, compatibility or others) are found / enabled."),
Host::OSD_INFO_DURATION); Host::OSD_INFO_DURATION);

View File

@ -6,7 +6,7 @@
#include "DebugTools/Debug.h" #include "DebugTools/Debug.h"
#include "common/Console.h" #include "common/Console.h"
#include "IconsPromptFont.h" #include "IconsPromptFont.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "GS.h" #include "GS.h"
#include "Host.h" #include "Host.h"

View File

@ -14,7 +14,7 @@
#include "Input/SDLInputSource.h" #include "Input/SDLInputSource.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "VMManager.h" #include "VMManager.h"
#include "common/Assertions.h" #include "common/Assertions.h"

View File

@ -5,7 +5,7 @@
#include "common/Console.h" #include "common/Console.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "IconsPromptFont.h" #include "IconsPromptFont.h"
#include "Input/InputManager.h" #include "Input/InputManager.h"
#include "StateWrapper.h" #include "StateWrapper.h"

View File

@ -13,7 +13,7 @@
#include "fmt/format.h" #include "fmt/format.h"
#include "StateWrapper.h" #include "StateWrapper.h"
#include "Host.h" #include "Host.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
namespace usb_printer namespace usb_printer
{ {
@ -88,13 +88,13 @@ namespace usb_printer
s->print_file = FileSystem::OpenCFile(s->print_filename.c_str(), "wb"); s->print_file = FileSystem::OpenCFile(s->print_filename.c_str(), "wb");
if (!s->print_file) if (!s->print_file)
{ {
Host::AddIconOSDMessage("USBPrinterOpen", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("USBPrinterOpen", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("USB", "Failed to open '{}' for printing."), s->print_filename), fmt::format(TRANSLATE_FS("USB", "Failed to open '{}' for printing."), s->print_filename),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
return; return;
} }
Host::AddIconOSDMessage("USBPrinterOpen", ICON_FA_SAVE, Host::AddIconOSDMessage("USBPrinterOpen", ICON_FA_FLOPPY_DISK,
fmt::format(TRANSLATE_FS("USB", "Printer saving to '{}'..."), Path::GetFileName(s->print_filename)), fmt::format(TRANSLATE_FS("USB", "Printer saving to '{}'..."), Path::GetFileName(s->print_filename)),
Host::OSD_INFO_DURATION); Host::OSD_INFO_DURATION);

View File

@ -53,7 +53,7 @@
#include "common/Threading.h" #include "common/Threading.h"
#include "common/Timer.h" #include "common/Timer.h"
#include "IconsFontAwesome5.h" #include "IconsFontAwesome6.h"
#include "IconsPromptFont.h" #include "IconsPromptFont.h"
#include "cpuinfo.h" #include "cpuinfo.h"
#include "discord_rpc.h" #include "discord_rpc.h"
@ -1254,7 +1254,7 @@ void VMManager::PrecacheCDVDFile()
} }
else else
{ {
Host::AddIconOSDMessage("PrecacheCDVDFile", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("PrecacheCDVDFile", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "CDVD precaching failed: {}"), error.GetDescription()), fmt::format(TRANSLATE_FS("VMManager", "CDVD precaching failed: {}"), error.GetDescription()),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
} }
@ -1841,7 +1841,7 @@ bool VMManager::DoSaveState(const char* filename, s32 slot_for_message, bool zip
std::unique_ptr<ArchiveEntryList> elist = SaveState_DownloadState(&error); std::unique_ptr<ArchiveEntryList> elist = SaveState_DownloadState(&error);
if (!elist) if (!elist)
{ {
Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to save state: {}."), error.GetDescription()), fmt::format(TRANSLATE_FS("VMManager", "Failed to save state: {}."), error.GetDescription()),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
return false; return false;
@ -1855,7 +1855,7 @@ bool VMManager::DoSaveState(const char* filename, s32 slot_for_message, bool zip
Console.WriteLn(fmt::format("Creating save state backup {}...", backup_filename)); Console.WriteLn(fmt::format("Creating save state backup {}...", backup_filename));
if (!FileSystem::RenamePath(filename, backup_filename.c_str())) if (!FileSystem::RenamePath(filename, backup_filename.c_str()))
{ {
Host::AddIconOSDMessage(osd_key, ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage(osd_key, ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format( fmt::format(
TRANSLATE_FS("VMManager", "Failed to back up old save state {}."), Path::GetFileName(filename)), TRANSLATE_FS("VMManager", "Failed to back up old save state {}."), Path::GetFileName(filename)),
Host::OSD_ERROR_DURATION); Host::OSD_ERROR_DURATION);
@ -1889,14 +1889,14 @@ void VMManager::ZipSaveState(std::unique_ptr<ArchiveEntryList> elist,
{ {
if (slot_for_message >= 0 && VMManager::HasValidVM()) if (slot_for_message >= 0 && VMManager::HasValidVM())
{ {
Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_SAVE, Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_FLOPPY_DISK,
fmt::format(TRANSLATE_FS("VMManager", "State saved to slot {}."), slot_for_message), fmt::format(TRANSLATE_FS("VMManager", "State saved to slot {}."), slot_for_message),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
} }
} }
else else
{ {
Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage(std::move(osd_key), ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to save state to slot {}."), slot_for_message, fmt::format(TRANSLATE_FS("VMManager", "Failed to save state to slot {}."), slot_for_message,
Host::OSD_ERROR_DURATION)); Host::OSD_ERROR_DURATION));
} }
@ -1975,7 +1975,7 @@ bool VMManager::LoadState(const char* filename)
if (MemcardBusy::IsBusy()) if (MemcardBusy::IsBusy())
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to load state (Memory card is busy)")), fmt::format(TRANSLATE_FS("VMManager", "Failed to load state (Memory card is busy)")),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
return false; return false;
@ -1994,7 +1994,7 @@ bool VMManager::LoadStateFromSlot(s32 slot, bool backup)
const std::string filename = GetCurrentSaveStateFileName(slot, backup); const std::string filename = GetCurrentSaveStateFileName(slot, backup);
if (filename.empty() || !FileSystem::FileExists(filename.c_str())) if (filename.empty() || !FileSystem::FileExists(filename.c_str()))
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "There is no saved {} in slot {}."), backup ? TRANSLATE("VMManager", "backup state") : "state", slot), fmt::format(TRANSLATE_FS("VMManager", "There is no saved {} in slot {}."), backup ? TRANSLATE("VMManager", "backup state") : "state", slot),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
return false; return false;
@ -2012,7 +2012,7 @@ bool VMManager::LoadStateFromSlot(s32 slot, bool backup)
if (MemcardBusy::IsBusy()) if (MemcardBusy::IsBusy())
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to load {} from slot {} (Memory card is busy)"), backup ? TRANSLATE("VMManager", "backup state") : TRANSLATE("VMManager", "state"), slot), fmt::format(TRANSLATE_FS("VMManager", "Failed to load {} from slot {} (Memory card is busy)"), backup ? TRANSLATE("VMManager", "backup state") : TRANSLATE("VMManager", "state"), slot),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
return false; return false;
@ -2027,7 +2027,7 @@ bool VMManager::SaveState(const char* filename, bool zip_on_thread, bool backup_
{ {
if (MemcardBusy::IsBusy()) if (MemcardBusy::IsBusy())
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to save state (Memory card is busy)")), fmt::format(TRANSLATE_FS("VMManager", "Failed to save state (Memory card is busy)")),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
return false; return false;
@ -2044,14 +2044,14 @@ bool VMManager::SaveStateToSlot(s32 slot, bool zip_on_thread)
if (MemcardBusy::IsBusy()) if (MemcardBusy::IsBusy())
{ {
Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_EXCLAMATION_TRIANGLE, Host::AddIconOSDMessage("LoadStateFromSlot", ICON_FA_TRIANGLE_EXCLAMATION,
fmt::format(TRANSLATE_FS("VMManager", "Failed to save state to slot {} (Memory card is busy)"), slot), fmt::format(TRANSLATE_FS("VMManager", "Failed to save state to slot {} (Memory card is busy)"), slot),
Host::OSD_QUICK_DURATION); Host::OSD_QUICK_DURATION);
return false; return false;
} }
// if it takes more than a minute.. well.. wtf. // if it takes more than a minute.. well.. wtf.
Host::AddIconOSDMessage(fmt::format("SaveStateSlot{}", slot), ICON_FA_SAVE, Host::AddIconOSDMessage(fmt::format("SaveStateSlot{}", slot), ICON_FA_FLOPPY_DISK,
fmt::format(TRANSLATE_FS("VMManager", "Saving state to slot {}..."), slot), 60.0f); fmt::format(TRANSLATE_FS("VMManager", "Saving state to slot {}..."), slot), 60.0f);
return DoSaveState(filename.c_str(), slot, zip_on_thread, EmuConfig.BackupSavestate); return DoSaveState(filename.c_str(), slot, zip_on_thread, EmuConfig.BackupSavestate);
} }
@ -3128,7 +3128,7 @@ void VMManager::WarnAboutUnsafeSettings()
append(ICON_FA_COMPACT_DISC, TRANSLATE_SV("VMManager", "Fast CDVD is enabled, this may break games.")); append(ICON_FA_COMPACT_DISC, TRANSLATE_SV("VMManager", "Fast CDVD is enabled, this may break games."));
if (EmuConfig.Speedhacks.EECycleRate != 0 || EmuConfig.Speedhacks.EECycleSkip != 0) if (EmuConfig.Speedhacks.EECycleRate != 0 || EmuConfig.Speedhacks.EECycleSkip != 0)
{ {
append(ICON_FA_TACHOMETER_ALT, append(ICON_FA_GAUGE_SIMPLE_HIGH,
TRANSLATE_SV("VMManager", "Cycle rate/skip is not at default, this may crash or make games run too slow.")); TRANSLATE_SV("VMManager", "Cycle rate/skip is not at default, this may crash or make games run too slow."));
} }
@ -3148,7 +3148,7 @@ void VMManager::WarnAboutUnsafeSettings()
} }
if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum) if (EmuConfig.GS.AccurateBlendingUnit <= AccBlendLevel::Minimum)
{ {
append(ICON_FA_PAINT_BRUSH, append(ICON_FA_PAINTBRUSH,
TRANSLATE_SV("VMManager", "Blending Accuracy is below Basic, this may break effects in some games.")); TRANSLATE_SV("VMManager", "Blending Accuracy is below Basic, this may break effects in some games."));
} }
if (EmuConfig.GS.HWDownloadMode != GSHardwareDownloadMode::Enabled) if (EmuConfig.GS.HWDownloadMode != GSHardwareDownloadMode::Enabled)
@ -3158,22 +3158,22 @@ void VMManager::WarnAboutUnsafeSettings()
} }
if (EmuConfig.GS.GPUPaletteConversion) if (EmuConfig.GS.GPUPaletteConversion)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "GPU Palette Conversion is enabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "GPU Palette Conversion is enabled, this may reduce performance."));
} }
if (EmuConfig.GS.TexturePreloading != TexturePreloadingLevel::Full) if (EmuConfig.GS.TexturePreloading != TexturePreloadingLevel::Full)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "Texture Preloading is not Full, this may reduce performance.")); TRANSLATE_SV("VMManager", "Texture Preloading is not Full, this may reduce performance."));
} }
if (EmuConfig.GS.UserHacks_EstimateTextureRegion) if (EmuConfig.GS.UserHacks_EstimateTextureRegion)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "Estimate texture region is enabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "Estimate texture region is enabled, this may reduce performance."));
} }
if (EmuConfig.GS.DumpReplaceableTextures) if (EmuConfig.GS.DumpReplaceableTextures)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "Texture dumping is enabled, this will continually dump textures to disk.")); TRANSLATE_SV("VMManager", "Texture dumping is enabled, this will continually dump textures to disk."));
} }
if (!EmuConfig.GS.HWMipmap) if (!EmuConfig.GS.HWMipmap)
@ -3192,7 +3192,7 @@ void VMManager::WarnAboutUnsafeSettings()
// show messagesbox // show messagesbox
render_change_warn = true; render_change_warn = true;
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "Renderer is not set to Automatic. This may cause performance problems and graphical issues.")); TRANSLATE_SV("VMManager", "Renderer is not set to Automatic. This may cause performance problems and graphical issues."));
} }
} }
@ -3267,49 +3267,49 @@ void VMManager::WarnAboutUnsafeSettings()
messages.clear(); messages.clear();
if (!EmuConfig.Cpu.Recompiler.EnableEE) if (!EmuConfig.Cpu.Recompiler.EnableEE)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "EE Recompiler is not enabled, this will significantly reduce performance.")); TRANSLATE_SV("VMManager", "EE Recompiler is not enabled, this will significantly reduce performance."));
} }
if (!EmuConfig.Cpu.Recompiler.EnableVU0) if (!EmuConfig.Cpu.Recompiler.EnableVU0)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "VU0 Recompiler is not enabled, this will significantly reduce performance.")); TRANSLATE_SV("VMManager", "VU0 Recompiler is not enabled, this will significantly reduce performance."));
} }
if (!EmuConfig.Cpu.Recompiler.EnableVU1) if (!EmuConfig.Cpu.Recompiler.EnableVU1)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "VU1 Recompiler is not enabled, this will significantly reduce performance.")); TRANSLATE_SV("VMManager", "VU1 Recompiler is not enabled, this will significantly reduce performance."));
} }
if (!EmuConfig.Cpu.Recompiler.EnableIOP) if (!EmuConfig.Cpu.Recompiler.EnableIOP)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "IOP Recompiler is not enabled, this will significantly reduce performance.")); TRANSLATE_SV("VMManager", "IOP Recompiler is not enabled, this will significantly reduce performance."));
} }
if (EmuConfig.Cpu.Recompiler.EnableEECache) if (EmuConfig.Cpu.Recompiler.EnableEECache)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "EE Cache is enabled, this will significantly reduce performance.")); TRANSLATE_SV("VMManager", "EE Cache is enabled, this will significantly reduce performance."));
} }
if (!EmuConfig.Speedhacks.WaitLoop) if (!EmuConfig.Speedhacks.WaitLoop)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "EE Wait Loop Detection is not enabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "EE Wait Loop Detection is not enabled, this may reduce performance."));
} }
if (!EmuConfig.Speedhacks.IntcStat) if (!EmuConfig.Speedhacks.IntcStat)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "INTC Spin Detection is not enabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "INTC Spin Detection is not enabled, this may reduce performance."));
} }
if (!EmuConfig.Cpu.Recompiler.EnableFastmem) if (!EmuConfig.Cpu.Recompiler.EnableFastmem)
append(ICON_FA_EXCLAMATION_CIRCLE, TRANSLATE_SV("VMManager", "Fastmem is not enabled, this will reduce performance.")); append(ICON_FA_CIRCLE_EXCLAMATION, TRANSLATE_SV("VMManager", "Fastmem is not enabled, this will reduce performance."));
if (!EmuConfig.Speedhacks.vu1Instant) if (!EmuConfig.Speedhacks.vu1Instant)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "Instant VU1 is disabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "Instant VU1 is disabled, this may reduce performance."));
} }
if (!EmuConfig.Speedhacks.vuFlagHack) if (!EmuConfig.Speedhacks.vuFlagHack)
{ {
append(ICON_FA_EXCLAMATION_CIRCLE, append(ICON_FA_CIRCLE_EXCLAMATION,
TRANSLATE_SV("VMManager", "mVU Flag Hack is not enabled, this may reduce performance.")); TRANSLATE_SV("VMManager", "mVU Flag Hack is not enabled, this may reduce performance."));
} }

15
tools/generate_update_fa_glyph_ranges.py Executable file → Normal file
View File

@ -23,7 +23,7 @@ import functools
# pylint: disable=bare-except, disable=missing-function-docstring # pylint: disable=bare-except, disable=missing-function-docstring
src_dirs = [os.path.join(os.path.dirname(__file__), "..", "pcsx2"), os.path.join(os.path.dirname(__file__), "..", "pcsx2-qt")] src_dirs = [os.path.join(os.path.dirname(__file__), "..", "pcsx2"), os.path.join(os.path.dirname(__file__), "..", "pcsx2-qt")]
fa_file = os.path.join(os.path.dirname(__file__), "..", "3rdparty", "include", "IconsFontAwesome5.h") fa_file = os.path.join(os.path.dirname(__file__), "..", "3rdparty", "include", "IconsFontAwesome6.h")
pf_file = os.path.join(os.path.dirname(__file__), "..", "3rdparty", "include", "IconsPromptFont.h") pf_file = os.path.join(os.path.dirname(__file__), "..", "3rdparty", "include", "IconsPromptFont.h")
dst_file = os.path.join(os.path.dirname(__file__), "..", "pcsx2", "ImGui", "ImGuiManager.cpp") dst_file = os.path.join(os.path.dirname(__file__), "..", "pcsx2", "ImGui", "ImGuiManager.cpp")
@ -49,19 +49,28 @@ print("{}/{} tokens found.".format(len(tokens), len(pf_tokens)))
if len(tokens) == 0 and len(pf_tokens) == 0: if len(tokens) == 0 and len(pf_tokens) == 0:
sys.exit(0) sys.exit(0)
def decode_encoding(value):
if value.startswith("\\x"):
return bytes.fromhex(value.replace("\\x", ""))
if len(value) > 1:
raise ValueError("Unhandled encoding value {}".format(value))
return bytes(value, 'utf-8')
u8_encodings = {} u8_encodings = {}
with open(fa_file, "r") as f: with open(fa_file, "r") as f:
for line in f.readlines(): for line in f.readlines():
match = re.match("#define (ICON_FA_[^ ]+) \"([^\"]+)\"", line) match = re.match("#define (ICON_FA_[^ ]+) \"([^\"]+)\"", line)
if match is None: if match is None:
continue continue
u8_encodings[match[1]] = bytes.fromhex(match[2].replace("\\x", "")) u8_encodings[match[1]] = decode_encoding(match[2])
with open(pf_file, "r") as f: with open(pf_file, "r") as f:
for line in f.readlines(): for line in f.readlines():
match = re.match("#define (ICON_PF_[^ ]+) \"([^\"]+)\"", line) match = re.match("#define (ICON_PF_[^ ]+) \"([^\"]+)\"", line)
if match is None: if match is None:
continue continue
u8_encodings[match[1]] = bytes.fromhex(match[2].replace("\\x", "")) u8_encodings[match[1]] = decode_encoding(match[2])
out_pattern = "(static constexpr ImWchar range_fa\[\] = \{)[0-9A-Z_a-z, \n]+(\};)" out_pattern = "(static constexpr ImWchar range_fa\[\] = \{)[0-9A-Z_a-z, \n]+(\};)"
out_pf_pattern = "(static constexpr ImWchar range_pf\[\] = \{)[0-9A-Z_a-z, \n]+(\};)" out_pf_pattern = "(static constexpr ImWchar range_pf\[\] = \{)[0-9A-Z_a-z, \n]+(\};)"