diff --git a/src/core/fullscreen_ui.cpp b/src/core/fullscreen_ui.cpp index 563017809..36b6a4833 100644 --- a/src/core/fullscreen_ui.cpp +++ b/src/core/fullscreen_ui.cpp @@ -4271,11 +4271,11 @@ void FullscreenUI::DrawDisplaySettingsPage() "Display", "Scaling", Settings::DEFAULT_DISPLAY_SCALING, &Settings::ParseDisplayScaling, &Settings::GetDisplayScalingName, &Settings::GetDisplayScalingDisplayName, DisplayScalingMode::Count); - DrawEnumSetting( - bsi, FSUI_CSTR("Force Frame Timings"), - FSUI_CSTR("Utilizes the chosen frame timing regardless of the active region."), - "GPU", "ForceFrameTimings", Settings::DEFAULT_FORCE_FRAME_TIMINGS_MODE, &Settings::ParseForceFrameTimings, - &Settings::GetForceFrameTimingsName, &Settings::GetForceFrameTimingsDisplayName, ForceFrameTimingsMode::Count); + DrawEnumSetting(bsi, FSUI_CSTR("Force Video Timing"), + FSUI_CSTR("Utilizes the chosen video timing regardless of the game's setting."), "GPU", + "ForceVideoTiming", Settings::DEFAULT_FORCE_VIDEO_TIMING_MODE, &Settings::ParseForceVideoTimingName, + &Settings::GetForceVideoTimingName, &Settings::GetForceVideoTimingDisplayName, + ForceVideoTimingMode::Count); if (is_hardware) { @@ -5689,7 +5689,6 @@ void FullscreenUI::DrawSaveStateSelector(bool is_loading) if (IsFocusResetFromWindowChange()) ImGui::SetNextWindowScroll(ImVec2(0.0f, 0.0f)); - if (ImGui::BeginChild("state_list", ImVec2(io.DisplaySize.x, io.DisplaySize.y - LayoutScale(LAYOUT_FOOTER_HEIGHT) - heading_size.y), false, ImGuiWindowFlags_NavFlattened)) @@ -7422,8 +7421,7 @@ TRANSLATE_NOOP("FullscreenUI", "File Size"); TRANSLATE_NOOP("FullscreenUI", "File Size: %.2f MB"); TRANSLATE_NOOP("FullscreenUI", "File Title"); TRANSLATE_NOOP("FullscreenUI", "Force 4:3 For FMVs"); -TRANSLATE_NOOP("FullscreenUI", "Force NTSC Timings"); -TRANSLATE_NOOP("FullscreenUI", "Forces PAL games to run at NTSC timings, i.e. 60hz. Some PAL games will run at their \"normal\" speeds, while others will break."); +TRANSLATE_NOOP("FullscreenUI", "Force Video Timing"); TRANSLATE_NOOP("FullscreenUI", "Forces a full rescan of all games previously identified."); TRANSLATE_NOOP("FullscreenUI", "Forces blending to be done in the shader at 16-bit precision, when not using true color. Non-trivial performance impact, and unnecessary for most games."); TRANSLATE_NOOP("FullscreenUI", "Forces the use of FIFO over Mailbox presentation, i.e. double buffering instead of triple buffering. Usually results in worse frame pacing."); @@ -7796,6 +7794,7 @@ TRANSLATE_NOOP("FullscreenUI", "Uses native resolution coordinates for 2D polygo TRANSLATE_NOOP("FullscreenUI", "Uses perspective-correct interpolation for colors, which can improve visuals in some games."); TRANSLATE_NOOP("FullscreenUI", "Uses perspective-correct interpolation for texture coordinates, straightening out warped textures."); TRANSLATE_NOOP("FullscreenUI", "Uses screen positions to resolve PGXP data. May improve visuals in some games."); +TRANSLATE_NOOP("FullscreenUI", "Utilizes the chosen video timing regardless of the game's setting."); TRANSLATE_NOOP("FullscreenUI", "Value: {} | Default: {} | Minimum: {} | Maximum: {}"); TRANSLATE_NOOP("FullscreenUI", "Version: %s"); TRANSLATE_NOOP("FullscreenUI", "Vertex Cache"); diff --git a/src/core/game_database.cpp b/src/core/game_database.cpp index e7198a8b7..4fd64e7cc 100644 --- a/src/core/game_database.cpp +++ b/src/core/game_database.cpp @@ -38,7 +38,7 @@ namespace GameDatabase { enum : u32 { GAME_DATABASE_CACHE_SIGNATURE = 0x45434C48, - GAME_DATABASE_CACHE_VERSION = 14, + GAME_DATABASE_CACHE_VERSION = 15, }; static Entry* GetMutableEntry(std::string_view serial); @@ -76,7 +76,6 @@ static constexpr const std::array(GameDatabase::Tr "DisableTextureFiltering", "DisableSpriteTextureFiltering", "DisableScaledDithering", - "DisableForceFrameTimings", "DisableWidescreen", "DisablePGXP", "DisablePGXPCulling", @@ -106,7 +105,6 @@ static constexpr const std::array(GameDatabase::Tr TRANSLATE_NOOP("GameDatabase", "Disable Texture Filtering"), TRANSLATE_NOOP("GameDatabase", "Disable Sprite Texture Filtering"), TRANSLATE_NOOP("GameDatabase", "Disable Scaled Dithering"), - TRANSLATE_NOOP("GameDatabase", "Disable Force Frame Timings"), TRANSLATE_NOOP("GameDatabase", "Disable Widescreen"), TRANSLATE_NOOP("GameDatabase", "Disable PGXP"), TRANSLATE_NOOP("GameDatabase", "Disable PGXP Culling"), @@ -591,14 +589,6 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes settings.gpu_widescreen_hack = false; } - if (HasTrait(Trait::DisableForceFrameTimings)) - { - if (display_osd_messages && settings.gpu_force_frame_timings != ForceFrameTimingsMode::Disabled) - APPEND_MESSAGE(TRANSLATE_SV("GameDatabase", "Force frame timings disabled.")); - - settings.gpu_force_frame_timings = ForceFrameTimingsMode::Disabled; - } - if (HasTrait(Trait::DisablePGXP)) { if (display_osd_messages && settings.gpu_pgxp_enable) diff --git a/src/core/game_database.h b/src/core/game_database.h index 266f1466b..f46232fc8 100644 --- a/src/core/game_database.h +++ b/src/core/game_database.h @@ -40,7 +40,6 @@ enum class Trait : u32 DisableTextureFiltering, DisableSpriteTextureFiltering, DisableScaledDithering, - DisableForceFrameTimings, DisableWidescreen, DisablePGXP, DisablePGXPCulling, diff --git a/src/core/gpu.cpp b/src/core/gpu.cpp index 95ca87071..d9e5f751c 100644 --- a/src/core/gpu.cpp +++ b/src/core/gpu.cpp @@ -88,7 +88,7 @@ GPU::~GPU() bool GPU::Initialize() { m_force_progressive_scan = g_settings.gpu_disable_interlacing; - m_force_frame_timings = g_settings.gpu_force_frame_timings; + m_force_frame_timings = g_settings.gpu_force_video_timing; s_crtc_tick_event.Activate(); m_fifo_size = g_settings.gpu_fifo_size; m_max_run_ahead = g_settings.gpu_max_run_ahead; @@ -119,9 +119,9 @@ void GPU::UpdateSettings(const Settings& old_settings) m_fifo_size = g_settings.gpu_fifo_size; m_max_run_ahead = g_settings.gpu_max_run_ahead; - if (m_force_frame_timings != g_settings.gpu_force_frame_timings) + if (m_force_frame_timings != g_settings.gpu_force_video_timing) { - m_force_frame_timings = g_settings.gpu_force_frame_timings; + m_force_frame_timings = g_settings.gpu_force_video_timing; m_console_is_pal = System::IsPALRegion(); UpdateCRTCConfig(); } @@ -637,7 +637,7 @@ void GPU::UpdateCRTCConfig() cs.vertical_display_start = std::min(cs.regs.Y1, cs.vertical_total); cs.vertical_display_end = std::min(cs.regs.Y2, cs.vertical_total); - if (m_GPUSTAT.pal_mode && m_force_frame_timings == ForceFrameTimingsMode::NTSC) + if (m_GPUSTAT.pal_mode && m_force_frame_timings == ForceVideoTimingMode::NTSC) { // scale to NTSC parameters cs.horizontal_display_start = @@ -655,7 +655,7 @@ void GPU::UpdateCRTCConfig() cs.horizontal_total = NTSC_TICKS_PER_LINE; cs.current_tick_in_scanline %= NTSC_TICKS_PER_LINE; } - else if (!m_GPUSTAT.pal_mode && m_force_frame_timings == ForceFrameTimingsMode::PAL) + else if (!m_GPUSTAT.pal_mode && m_force_frame_timings == ForceVideoTimingMode::PAL) { // scale to PAL parameters cs.horizontal_display_start = diff --git a/src/core/gpu.h b/src/core/gpu.h index cf4dd5dc7..b8b6fd5cd 100644 --- a/src/core/gpu.h +++ b/src/core/gpu.h @@ -505,7 +505,7 @@ protected: bool m_set_texture_disable_mask = false; bool m_drawing_area_changed = false; bool m_force_progressive_scan = false; - ForceFrameTimingsMode m_force_frame_timings = ForceFrameTimingsMode::Disabled; + ForceVideoTimingMode m_force_frame_timings = ForceVideoTimingMode::Disabled; struct CRTCState { diff --git a/src/core/imgui_overlays.cpp b/src/core/imgui_overlays.cpp index 6e8979ff8..8a219c994 100644 --- a/src/core/imgui_overlays.cpp +++ b/src/core/imgui_overlays.cpp @@ -435,9 +435,9 @@ void ImGuiManager::DrawEnhancementsOverlay() text.append(" TrueCol"); if (g_settings.gpu_disable_interlacing) text.append(" ForceProg"); - if (g_settings.gpu_force_frame_timings == ForceFrameTimingsMode::NTSC && System::GetRegion() == ConsoleRegion::PAL) + if (g_settings.gpu_force_video_timing == ForceVideoTimingMode::NTSC && System::GetRegion() == ConsoleRegion::PAL) text.append(" PAL60"); - if (g_settings.gpu_force_frame_timings == ForceFrameTimingsMode::PAL && System::GetRegion() != ConsoleRegion::PAL) + if (g_settings.gpu_force_video_timing == ForceVideoTimingMode::PAL && System::GetRegion() != ConsoleRegion::PAL) text.append(" NTSC50"); if (g_settings.gpu_texture_filter != GPUTextureFilter::Nearest) { diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 2eb1899ce..f922f6d59 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -230,10 +230,10 @@ void Settings::Load(SettingsInterface& si, SettingsInterface& controller_si) si.GetStringValue("GPU", "WireframeMode", GetGPUWireframeModeName(DEFAULT_GPU_WIREFRAME_MODE)).c_str()) .value_or(DEFAULT_GPU_WIREFRAME_MODE); gpu_disable_interlacing = si.GetBoolValue("GPU", "DisableInterlacing", true); - gpu_force_frame_timings = - ParseForceFrameTimings( - si.GetStringValue("GPU", "ForceFrameTimings", GetForceFrameTimingsName(DEFAULT_FORCE_FRAME_TIMINGS_MODE)).c_str()) - .value_or(DEFAULT_FORCE_FRAME_TIMINGS_MODE); + gpu_force_video_timing = + ParseForceVideoTimingName( + si.GetStringValue("GPU", "ForceVideoTiming", GetForceVideoTimingName(DEFAULT_FORCE_VIDEO_TIMING_MODE)).c_str()) + .value_or(DEFAULT_FORCE_VIDEO_TIMING_MODE); gpu_widescreen_hack = si.GetBoolValue("GPU", "WidescreenHack", false); display_24bit_chroma_smoothing = si.GetBoolValue("GPU", "ChromaSmoothing24Bit", false); gpu_pgxp_enable = si.GetBoolValue("GPU", "PGXPEnable", false); @@ -538,7 +538,7 @@ void Settings::Save(SettingsInterface& si, bool ignore_base) const si.SetUIntValue("GPU", "DownsampleScale", gpu_downsample_scale); si.SetStringValue("GPU", "WireframeMode", GetGPUWireframeModeName(gpu_wireframe_mode)); si.SetBoolValue("GPU", "DisableInterlacing", gpu_disable_interlacing); - si.SetStringValue("GPU", "ForceFrameTimings", GetForceFrameTimingsName(gpu_force_frame_timings)); + si.SetStringValue("GPU", "ForceVideoTiming", GetForceVideoTimingName(gpu_force_video_timing)); si.SetBoolValue("GPU", "WidescreenHack", gpu_widescreen_hack); si.SetBoolValue("GPU", "ChromaSmoothing24Bit", display_24bit_chroma_smoothing); si.SetBoolValue("GPU", "PGXPEnable", gpu_pgxp_enable); @@ -746,7 +746,7 @@ void Settings::FixIncompatibleSettings(bool display_osd_messages) g_settings.gpu_sprite_texture_filter = GPUTextureFilter::Nearest; g_settings.gpu_line_detect_mode = GPULineDetectMode::Disabled; g_settings.gpu_disable_interlacing = false; - g_settings.gpu_force_frame_timings = ForceFrameTimingsMode::Disabled; + g_settings.gpu_force_video_timing = ForceVideoTimingMode::Disabled; g_settings.gpu_widescreen_hack = false; g_settings.gpu_pgxp_enable = false; g_settings.display_24bit_chroma_smoothing = false; @@ -930,12 +930,12 @@ std::optional Settings::ParseLogLevelName(const char* str) const char* Settings::GetLogLevelName(LOGLEVEL level) { - return s_log_level_names[static_cast(level)]; + return s_log_level_names[static_cast(level)]; } const char* Settings::GetLogLevelDisplayName(LOGLEVEL level) { - return Host::TranslateToCString("LogLevel", s_log_level_display_names[static_cast(level)]); + return Host::TranslateToCString("LogLevel", s_log_level_display_names[static_cast(level)]); } static constexpr const std::array s_console_region_names = {"Auto", "NTSC-J", "NTSC-U", "PAL"}; @@ -959,12 +959,12 @@ std::optional Settings::ParseConsoleRegionName(const char* str) const char* Settings::GetConsoleRegionName(ConsoleRegion region) { - return s_console_region_names[static_cast(region)]; + return s_console_region_names[static_cast(region)]; } const char* Settings::GetConsoleRegionDisplayName(ConsoleRegion region) { - return Host::TranslateToCString("ConsoleRegion", s_console_region_display_names[static_cast(region)]); + return Host::TranslateToCString("ConsoleRegion", s_console_region_display_names[static_cast(region)]); } static constexpr const std::array s_disc_region_names = {"NTSC-J", "NTSC-U", "PAL", "Other", "Non-PS1"}; @@ -989,12 +989,12 @@ std::optional Settings::ParseDiscRegionName(const char* str) const char* Settings::GetDiscRegionName(DiscRegion region) { - return s_disc_region_names[static_cast(region)]; + return s_disc_region_names[static_cast(region)]; } const char* Settings::GetDiscRegionDisplayName(DiscRegion region) { - return Host::TranslateToCString("DiscRegion", s_disc_region_display_names[static_cast(region)]); + return Host::TranslateToCString("DiscRegion", s_disc_region_display_names[static_cast(region)]); } static constexpr const std::array s_cpu_execution_mode_names = {"Interpreter", "CachedInterpreter", "Recompiler", @@ -1108,12 +1108,12 @@ std::optional Settings::ParseRendererName(const char* str) const char* Settings::GetRendererName(GPURenderer renderer) { - return s_gpu_renderer_names[static_cast(renderer)]; + return s_gpu_renderer_names[static_cast(renderer)]; } const char* Settings::GetRendererDisplayName(GPURenderer renderer) { - return Host::TranslateToCString("GPURenderer", s_gpu_renderer_display_names[static_cast(renderer)]); + return Host::TranslateToCString("GPURenderer", s_gpu_renderer_display_names[static_cast(renderer)]); } RenderAPI Settings::GetRenderAPIForRenderer(GPURenderer renderer) @@ -1216,7 +1216,7 @@ const char* Settings::GetTextureFilterName(GPUTextureFilter filter) const char* Settings::GetTextureFilterDisplayName(GPUTextureFilter filter) { - return Host::TranslateToCString("GPUTextureFilter", s_texture_filter_display_names[static_cast(filter)]); + return Host::TranslateToCString("GPUTextureFilter", s_texture_filter_display_names[static_cast(filter)]); } static constexpr const std::array s_line_detect_mode_names = { @@ -1278,12 +1278,12 @@ std::optional Settings::ParseDownsampleModeName(const char* s const char* Settings::GetDownsampleModeName(GPUDownsampleMode mode) { - return s_downsample_mode_names[static_cast(mode)]; + return s_downsample_mode_names[static_cast(mode)]; } const char* Settings::GetDownsampleModeDisplayName(GPUDownsampleMode mode) { - return Host::TranslateToCString("GPUDownsampleMode", s_downsample_mode_display_names[static_cast(mode)]); + return Host::TranslateToCString("GPUDownsampleMode", s_downsample_mode_display_names[static_cast(mode)]); } static constexpr const std::array s_wireframe_mode_names = {"Disabled", "OverlayWireframe", "OnlyWireframe"}; @@ -1307,12 +1307,12 @@ std::optional Settings::ParseGPUWireframeMode(const char* str) const char* Settings::GetGPUWireframeModeName(GPUWireframeMode mode) { - return s_wireframe_mode_names[static_cast(mode)]; + return s_wireframe_mode_names[static_cast(mode)]; } const char* Settings::GetGPUWireframeModeDisplayName(GPUWireframeMode mode) { - return Host::TranslateToCString("GPUWireframeMode", s_wireframe_mode_display_names[static_cast(mode)]); + return Host::TranslateToCString("GPUWireframeMode", s_wireframe_mode_display_names[static_cast(mode)]); } static constexpr const std::array s_display_deinterlacing_mode_names = { @@ -1344,13 +1344,13 @@ std::optional Settings::ParseDisplayDeinterlacingMode( const char* Settings::GetDisplayDeinterlacingModeName(DisplayDeinterlacingMode mode) { - return s_display_deinterlacing_mode_names[static_cast(mode)]; + return s_display_deinterlacing_mode_names[static_cast(mode)]; } const char* Settings::GetDisplayDeinterlacingModeDisplayName(DisplayDeinterlacingMode mode) { return Host::TranslateToCString("DisplayDeinterlacingMode", - s_display_deinterlacing_mode_display_names[static_cast(mode)]); + s_display_deinterlacing_mode_display_names[static_cast(mode)]); } static constexpr const std::array s_display_crop_mode_names = {"None", "Overscan", "Borders"}; @@ -1374,12 +1374,12 @@ std::optional Settings::ParseDisplayCropMode(const char* str) const char* Settings::GetDisplayCropModeName(DisplayCropMode crop_mode) { - return s_display_crop_mode_names[static_cast(crop_mode)]; + return s_display_crop_mode_names[static_cast(crop_mode)]; } const char* Settings::GetDisplayCropModeDisplayName(DisplayCropMode crop_mode) { - return Host::TranslateToCString("DisplayCropMode", s_display_crop_mode_display_names[static_cast(crop_mode)]); + return Host::TranslateToCString("DisplayCropMode", s_display_crop_mode_display_names[static_cast(crop_mode)]); } static constexpr const std::array s_display_aspect_ratio_names = { @@ -1416,12 +1416,12 @@ std::optional Settings::ParseDisplayAspectRatio(const char* const char* Settings::GetDisplayAspectRatioName(DisplayAspectRatio ar) { - return s_display_aspect_ratio_names[static_cast(ar)]; + return s_display_aspect_ratio_names[static_cast(ar)]; } const char* Settings::GetDisplayAspectRatioDisplayName(DisplayAspectRatio ar) { - return Host::TranslateToCString("DisplayAspectRatio", s_display_aspect_ratio_names[static_cast(ar)]); + return Host::TranslateToCString("DisplayAspectRatio", s_display_aspect_ratio_names[static_cast(ar)]); } float Settings::GetDisplayAspectRatioValue() const @@ -1431,7 +1431,7 @@ float Settings::GetDisplayAspectRatioValue() const case DisplayAspectRatio::MatchWindow: { if (!g_gpu_device) - return s_display_aspect_ratio_values[static_cast(DEFAULT_DISPLAY_ASPECT_RATIO)]; + return s_display_aspect_ratio_values[static_cast(DEFAULT_DISPLAY_ASPECT_RATIO)]; return static_cast(g_gpu_device->GetWindowWidth()) / static_cast(g_gpu_device->GetWindowHeight()); } @@ -1444,7 +1444,7 @@ float Settings::GetDisplayAspectRatioValue() const default: { - return s_display_aspect_ratio_values[static_cast(display_aspect_ratio)]; + return s_display_aspect_ratio_values[static_cast(display_aspect_ratio)]; } } } @@ -1470,12 +1470,13 @@ std::optional Settings::ParseDisplayAlignment(const char* str) const char* Settings::GetDisplayAlignmentName(DisplayAlignment alignment) { - return s_display_alignment_names[static_cast(alignment)]; + return s_display_alignment_names[static_cast(alignment)]; } const char* Settings::GetDisplayAlignmentDisplayName(DisplayAlignment alignment) { - return Host::TranslateToCString("DisplayAlignment", s_display_alignment_display_names[static_cast(alignment)]); + return Host::TranslateToCString("DisplayAlignment", + s_display_alignment_display_names[static_cast(alignment)]); } static constexpr const std::array s_display_rotation_names = {"Normal", "Rotate90", "Rotate180", "Rotate270"}; @@ -1502,29 +1503,44 @@ std::optional Settings::ParseDisplayRotation(const char* str) const char* Settings::GetDisplayRotationName(DisplayRotation rotation) { - return s_display_rotation_names[static_cast(rotation)]; + return s_display_rotation_names[static_cast(rotation)]; } const char* Settings::GetDisplayRotationDisplayName(DisplayRotation rotation) { return Host::TranslateToCString("Settings", s_display_rotation_display_names[static_cast(rotation)]); } -static constexpr const std::array s_display_force_frame_timings_names = { - "Disabled", "NTSC", "PAL" + +static constexpr const std::array s_display_force_video_timings_names = { + TRANSLATE_NOOP("Settings", "Disabled"), + "NTSC", + "PAL", }; -std::optional Settings::ParseForceFrameTimings(const char* str) + +std::optional Settings::ParseForceVideoTimingName(const char* str) { int index = 0; - for (const char* name : s_display_force_frame_timings_names) + for (const char* name : s_display_force_video_timings_names) { if (StringUtil::Strcasecmp(name, str) == 0) - return static_cast(index); + return static_cast(index); index++; } return std::nullopt; } + +const char* Settings::GetForceVideoTimingName(ForceVideoTimingMode mode) +{ + return s_display_force_video_timings_names[static_cast(mode)]; +} + +const char* Settings::GetForceVideoTimingDisplayName(ForceVideoTimingMode mode) +{ + return Host::TranslateToCString("Settings", s_display_force_video_timings_names[static_cast(mode)]); +} + static constexpr const std::array s_display_scaling_names = { "Nearest", "NearestInteger", "BilinearSmooth", "BilinearSharp", "BilinearInteger", }; @@ -1552,22 +1568,12 @@ std::optional Settings::ParseDisplayScaling(const char* str) const char* Settings::GetDisplayScalingName(DisplayScalingMode mode) { - return s_display_scaling_names[static_cast(mode)]; + return s_display_scaling_names[static_cast(mode)]; } const char* Settings::GetDisplayScalingDisplayName(DisplayScalingMode mode) { - return Host::TranslateToCString("DisplayScalingMode", s_display_scaling_display_names[static_cast(mode)]); -} - -const char* Settings::GetForceFrameTimingsName(ForceFrameTimingsMode mode) -{ - return s_display_force_frame_timings_names[static_cast(mode)]; -} - -const char* Settings::GetForceFrameTimingsDisplayName(ForceFrameTimingsMode mode) -{ - return Host::TranslateToCString("ForceFrameTimingsMode", s_display_force_frame_timings_names[static_cast(mode)]); + return Host::TranslateToCString("DisplayScalingMode", s_display_scaling_display_names[static_cast(mode)]); } static constexpr const std::array s_display_exclusive_fullscreen_mode_names = { @@ -1597,13 +1603,13 @@ std::optional Settings::ParseDisplayExclusive const char* Settings::GetDisplayExclusiveFullscreenControlName(DisplayExclusiveFullscreenControl mode) { - return s_display_exclusive_fullscreen_mode_names[static_cast(mode)]; + return s_display_exclusive_fullscreen_mode_names[static_cast(mode)]; } const char* Settings::GetDisplayExclusiveFullscreenControlDisplayName(DisplayExclusiveFullscreenControl mode) { return Host::TranslateToCString("Settings", - s_display_exclusive_fullscreen_mode_display_names[static_cast(mode)]); + s_display_exclusive_fullscreen_mode_display_names[static_cast(mode)]); } static constexpr const std::array s_display_screenshot_mode_names = { @@ -1712,12 +1718,12 @@ std::optional Settings::ParseMemoryCardTypeName(const char* str) const char* Settings::GetMemoryCardTypeName(MemoryCardType type) { - return s_memory_card_type_names[static_cast(type)]; + return s_memory_card_type_names[static_cast(type)]; } const char* Settings::GetMemoryCardTypeDisplayName(MemoryCardType type) { - return Host::TranslateToCString("MemoryCardType", s_memory_card_type_display_names[static_cast(type)]); + return Host::TranslateToCString("MemoryCardType", s_memory_card_type_display_names[static_cast(type)]); } std::string Settings::GetDefaultSharedMemoryCardName(u32 slot) diff --git a/src/core/settings.h b/src/core/settings.h index 8f2c21d16..656e0ee0c 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -131,7 +131,7 @@ struct Settings bool gpu_pgxp_preserve_proj_fp : 1 = false; bool gpu_pgxp_depth_buffer : 1 = false; bool gpu_pgxp_disable_2d : 1 = false; - ForceFrameTimingsMode gpu_force_frame_timings = DEFAULT_FORCE_FRAME_TIMINGS_MODE; + ForceVideoTimingMode gpu_force_video_timing = DEFAULT_FORCE_VIDEO_TIMING_MODE; GPUTextureFilter gpu_texture_filter = DEFAULT_GPU_TEXTURE_FILTER; GPUTextureFilter gpu_sprite_texture_filter = DEFAULT_GPU_TEXTURE_FILTER; GPULineDetectMode gpu_line_detect_mode = DEFAULT_GPU_LINE_DETECT_MODE; @@ -433,9 +433,9 @@ struct Settings static const char* GetDisplayScalingName(DisplayScalingMode mode); static const char* GetDisplayScalingDisplayName(DisplayScalingMode mode); - static std::optional ParseForceFrameTimings(const char* str); - static const char* GetForceFrameTimingsName(ForceFrameTimingsMode mode); - static const char* GetForceFrameTimingsDisplayName(ForceFrameTimingsMode mode); + static std::optional ParseForceVideoTimingName(const char* str); + static const char* GetForceVideoTimingName(ForceVideoTimingMode mode); + static const char* GetForceVideoTimingDisplayName(ForceVideoTimingMode mode); static std::optional ParseDisplayExclusiveFullscreenControl(const char* str); static const char* GetDisplayExclusiveFullscreenControlName(DisplayExclusiveFullscreenControl mode); @@ -495,7 +495,7 @@ struct Settings static constexpr DisplayAlignment DEFAULT_DISPLAY_ALIGNMENT = DisplayAlignment::Center; static constexpr DisplayRotation DEFAULT_DISPLAY_ROTATION = DisplayRotation::Normal; static constexpr DisplayScalingMode DEFAULT_DISPLAY_SCALING = DisplayScalingMode::BilinearSmooth; - static constexpr ForceFrameTimingsMode DEFAULT_FORCE_FRAME_TIMINGS_MODE = ForceFrameTimingsMode::Disabled; + static constexpr ForceVideoTimingMode DEFAULT_FORCE_VIDEO_TIMING_MODE = ForceVideoTimingMode::Disabled; static constexpr DisplayExclusiveFullscreenControl DEFAULT_DISPLAY_EXCLUSIVE_FULLSCREEN_CONTROL = DisplayExclusiveFullscreenControl::Automatic; static constexpr DisplayScreenshotMode DEFAULT_DISPLAY_SCREENSHOT_MODE = DisplayScreenshotMode::ScreenResolution; diff --git a/src/core/system.cpp b/src/core/system.cpp index ba66ae721..eb18a4331 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -4303,7 +4303,7 @@ void System::CheckForSettingsChanges(const Settings& old_settings) g_settings.gpu_sprite_texture_filter != old_settings.gpu_sprite_texture_filter || g_settings.gpu_line_detect_mode != old_settings.gpu_line_detect_mode || g_settings.gpu_disable_interlacing != old_settings.gpu_disable_interlacing || - g_settings.gpu_force_frame_timings != old_settings.gpu_force_frame_timings || + g_settings.gpu_force_video_timing != old_settings.gpu_force_video_timing || g_settings.gpu_downsample_mode != old_settings.gpu_downsample_mode || g_settings.gpu_downsample_scale != old_settings.gpu_downsample_scale || g_settings.gpu_wireframe_mode != old_settings.gpu_wireframe_mode || @@ -4530,7 +4530,7 @@ void System::WarnAboutUnsafeSettings() TinyString(TRANSLATE_SV("System", "Instant")) : TinyString::from_format("{}x", g_settings.cdrom_seek_speedup))); } - if (g_settings.gpu_force_frame_timings != ForceFrameTimingsMode::Disabled) + if (g_settings.gpu_force_video_timing != ForceVideoTimingMode::Disabled) { append(ICON_FA_TV, TRANSLATE_SV("System", "Force frame timings is enabled. Games may run at incorrect speeds.")); } diff --git a/src/core/types.h b/src/core/types.h index 4b5003469..598e074f0 100644 --- a/src/core/types.h +++ b/src/core/types.h @@ -276,7 +276,7 @@ enum class SaveStateCompressionMode : u8 Count, }; -enum class ForceFrameTimingsMode : u8 +enum class ForceVideoTimingMode : u8 { Disabled, NTSC, diff --git a/src/duckstation-qt/graphicssettingswidget.cpp b/src/duckstation-qt/graphicssettingswidget.cpp index 37893cf00..0f03426d0 100644 --- a/src/duckstation-qt/graphicssettingswidget.cpp +++ b/src/duckstation-qt/graphicssettingswidget.cpp @@ -74,9 +74,9 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget* SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.displayScaling, "Display", "Scaling", &Settings::ParseDisplayScaling, &Settings::GetDisplayScalingName, Settings::DEFAULT_DISPLAY_SCALING); - SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.forceFrameTimings, "GPU", "ForceFrameTimings", - &Settings::ParseForceFrameTimings, &Settings::GetForceFrameTimingsName, - Settings::DEFAULT_FORCE_FRAME_TIMINGS_MODE); + SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.forceVideoTiming, "GPU", "ForceVideoTiming", + &Settings::ParseForceVideoTimingName, &Settings::GetForceVideoTimingName, + Settings::DEFAULT_FORCE_VIDEO_TIMING_MODE); SettingWidgetBinder::BindWidgetToIntSetting(sif, m_ui.gpuDownsampleScale, "GPU", "DownsampleScale", 1); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.trueColor, "GPU", "TrueColor", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableInterlacing, "GPU", "DisableInterlacing", true); @@ -84,7 +84,7 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget* SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.pgxpDepthBuffer, "GPU", "PGXPDepthBuffer", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.force43For24Bit, "Display", "Force4_3For24Bit", false); SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.chromaSmoothingFor24Bit, "GPU", "ChromaSmoothing24Bit", false); - + connect(m_ui.renderer, QOverload::of(&QComboBox::currentIndexChanged), this, &GraphicsSettingsWidget::updateRendererDependentOptions); connect(m_ui.textureFiltering, QOverload::of(&QComboBox::currentIndexChanged), this, @@ -108,8 +108,6 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget* !m_dialog->hasGameTrait(GameDatabase::Trait::ForceInterlacing)); SettingWidgetBinder::SetAvailability(m_ui.widescreenHack, !m_dialog->hasGameTrait(GameDatabase::Trait::DisableWidescreen)); - SettingWidgetBinder::SetAvailability(m_ui.forceFrameTimings, - !m_dialog->hasGameTrait(GameDatabase::Trait::DisableForceFrameTimings)); // Advanced Tab @@ -337,11 +335,11 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget* m_ui.displayScaling, tr("Scaling"), tr("Bilinear (Smooth)"), tr("Determines how the emulated console's output is upscaled or downscaled to your monitor's resolution.")); dialog->registerWidgetHelp( - m_ui.forceFrameTimings, tr("Force Frame Timings"), tr("Disabled"), - tr("Utilizes the chosen frame timing regardless of the active region. " - "This feature can be used to force PAL games to run at 60Hz and NTSC games to run at 50Hz. " - "For most games which have a speed tied to the framerate, this will result in the game running approximately 17% faster or slower. " - "For variable frame rate games, it may not affect the speed.")); + m_ui.forceVideoTiming, tr("Force Video Timing"), tr("Disabled"), + tr("Utilizes the chosen frame timing regardless of the active region. This feature can be used to force PAL games " + "to run at 60Hz and NTSC games to run at 50Hz. For most games which have a speed tied to the framerate, this " + "will result in the game running approximately 17% faster or slower. For variable frame rate games, it may not " + "affect the speed.")); dialog->registerWidgetHelp( m_ui.trueColor, tr("True Color Rendering"), tr("Checked"), tr("Forces the precision of colours output to the console's framebuffer to use the full 8 bits of precision per " @@ -648,13 +646,12 @@ void GraphicsSettingsWidget::setupAdditionalUi() QString::fromUtf8(Settings::GetDisplayScalingDisplayName(static_cast(i)))); } - for (u32 i = 0; i < static_cast(ForceFrameTimingsMode::Count); i++) + for (u32 i = 0; i < static_cast(ForceVideoTimingMode::Count); i++) { - m_ui.forceFrameTimings->addItem( - QString::fromUtf8(Settings::GetForceFrameTimingsName(static_cast(i)))); + m_ui.forceVideoTiming->addItem( + QString::fromUtf8(Settings::GetForceVideoTimingName(static_cast(i)))); } - // Advanced Tab for (u32 i = 0; i < static_cast(DisplayExclusiveFullscreenControl::Count); i++) diff --git a/src/duckstation-qt/graphicssettingswidget.ui b/src/duckstation-qt/graphicssettingswidget.ui index 7ed44eb2d..6c9812f4e 100644 --- a/src/duckstation-qt/graphicssettingswidget.ui +++ b/src/duckstation-qt/graphicssettingswidget.ui @@ -268,14 +268,14 @@ - + - Force Frame Timings: + Force Video Timing: - +