From 1b41c78afc11d716087e65e3834f49cd2d7993b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fausto=20N=C3=BA=C3=B1ez=20Alberro?= Date: Sat, 7 Mar 2026 16:44:27 +0100 Subject: [PATCH] libretro: expose large_screen_proportion as a core option (#1833) Adds the large_screen_proportion setting to libretro core options, allowing users to adjust the ratio between the large and small screens in the "Large Screen, Small Screen" layout. This is useful on devices like the Steam Deck where the default 4x ratio makes the small screen too tiny to be practical. Values range from 1.00x to 6.00x in 0.25 increments. Closes #1832 --- src/citra_libretro/core_settings.cpp | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/citra_libretro/core_settings.cpp b/src/citra_libretro/core_settings.cpp index 88ae0f204..7c0a028b9 100644 --- a/src/citra_libretro/core_settings.cpp +++ b/src/citra_libretro/core_settings.cpp @@ -70,6 +70,8 @@ namespace layout { static constexpr const char* layout_option = citra_setting(BaseKeys::layout_option); static constexpr const char* swap_screen = citra_setting(BaseKeys::swap_screen); static constexpr const char* swap_screen_mode = citra_setting(BaseKeys::swap_screen_mode); +static constexpr const char* large_screen_proportion = + citra_setting(BaseKeys::large_screen_proportion); } // namespace layout namespace storage { @@ -483,6 +485,40 @@ static constexpr retro_core_option_v2_definition option_definitions[] = { }, "Toggle" }, + { + config::layout::large_screen_proportion, + "Large Screen Proportion", + "Large Screen Proportion", + "How many times larger the main screen is compared to the small screen " + "in the Large Screen layout.", + nullptr, + config::category::layout, + { + { "1.00", "1.00x (Equal Size)" }, + { "1.25", "1.25x" }, + { "1.50", "1.50x" }, + { "1.75", "1.75x" }, + { "2.00", "2.00x" }, + { "2.25", "2.25x" }, + { "2.50", "2.50x" }, + { "2.75", "2.75x" }, + { "3.00", "3.00x" }, + { "3.25", "3.25x" }, + { "3.50", "3.50x" }, + { "3.75", "3.75x" }, + { "4.00", "4.00x (Default)" }, + { "4.25", "4.25x" }, + { "4.50", "4.50x" }, + { "4.75", "4.75x" }, + { "5.00", "5.00x" }, + { "5.25", "5.25x" }, + { "5.50", "5.50x" }, + { "5.75", "5.75x" }, + { "6.00", "6.00x" }, + { nullptr, nullptr } + }, + "4.00" + }, // Storage Category { @@ -920,6 +956,10 @@ static void ParseLayoutOptions(void) { LibRetro::settings.swap_screen_mode = LibRetro::FetchVariable(config::layout::swap_screen_mode, "Toggle"); + + auto large_screen_proportion = + LibRetro::FetchVariable(config::layout::large_screen_proportion, "4.00"); + Settings::values.large_screen_proportion = std::stof(large_screen_proportion); } static void ParseStorageOptions(void) {