diff --git a/assets/config_menu/general.rml b/assets/config_menu/general.rml index 285a1a1..3d4e96e 100644 --- a/assets/config_menu/general.rml +++ b/assets/config_menu/general.rml @@ -3,25 +3,57 @@
-
-
+
+ +
- + - + +
+
- +
+ +
+

+ First. +

+

+ Second. +

+
diff --git a/assets/config_menu/graphics.rml b/assets/config_menu/graphics.rml index 85ac42a..c7b99b1 100644 --- a/assets/config_menu/graphics.rml +++ b/assets/config_menu/graphics.rml @@ -197,7 +197,7 @@ data-checked="msaa_option" value="None" id="msaa_none" - data-attr-style="rr_option=='Manual' ? 'nav-up: #rr_manual_input; nav-down: #apply_button' : 'nav-up: #rr_original; nav-down: #apply_button'" + data-attr-style="rr_option=='Manual' ? 'nav-up: #rr_manual_input; nav-down: #hr_original' : 'nav-up: #rr_original; nav-down: #hr_original'" /> +
+
+ +
+ + +
+ +
+ +
+ + + + + +
+ +
+

+ First. +

+

+ Second. +

+
diff --git a/src/game/config.cpp b/src/game/config.cpp index cddaf4b..1629fbc 100644 --- a/src/game/config.cpp +++ b/src/game/config.cpp @@ -20,6 +20,7 @@ constexpr std::u8string_view sound_filename = u8"sound.json"; constexpr auto res_default = ultramodern::Resolution::Auto; constexpr auto wm_default = ultramodern::WindowMode::Windowed; +constexpr auto hr_default = ultramodern::HUDRatioMode::Clamp16x9; constexpr auto ar_default = RT64::UserConfiguration::AspectRatio::Expand; constexpr auto msaa_default = RT64::UserConfiguration::Antialiasing::MSAA2X; constexpr auto rr_default = RT64::UserConfiguration::RefreshRate::Display; @@ -56,6 +57,7 @@ namespace ultramodern { j = json{ {"res_option", config.res_option}, {"wm_option", config.wm_option}, + {"hr_option", config.hr_option}, {"ds_option", config.ds_option}, {"ar_option", config.ar_option}, {"msaa_option", config.msaa_option}, @@ -68,6 +70,7 @@ namespace ultramodern { void from_json(const json& j, GraphicsConfig& config) { config.res_option = from_or_default(j, "res_option", res_default); config.wm_option = from_or_default(j, "wm_option", wm_default); + config.hr_option = from_or_default(j, "hr_option", hr_default); config.ds_option = from_or_default(j, "ds_option", ds_default); config.ar_option = from_or_default(j, "ar_option", ar_default); config.msaa_option = from_or_default(j, "msaa_option", msaa_default); @@ -174,6 +177,7 @@ void reset_graphics_options() { ultramodern::GraphicsConfig new_config{}; new_config.res_option = res_default; new_config.wm_option = wm_default; + new_config.hr_option = hr_default; new_config.ds_option = ds_default; new_config.ar_option = ar_default; new_config.msaa_option = msaa_default; diff --git a/src/recomp/rt64_layer.cpp b/src/recomp/rt64_layer.cpp index 03abece..09baf6e 100644 --- a/src/recomp/rt64_layer.cpp +++ b/src/recomp/rt64_layer.cpp @@ -257,6 +257,20 @@ void RT64UpdateConfig(RT64::Application* application, const ultramodern::Graphic break; } + switch (new_config.hr_option) { + default: + case ultramodern::HUDRatioMode::Original: + application->userConfig.extAspectRatio = RT64::UserConfiguration::AspectRatio::Original; + break; + case ultramodern::HUDRatioMode::Clamp16x9: + application->userConfig.extAspectRatio = RT64::UserConfiguration::AspectRatio::Manual; + application->userConfig.extAspectTarget = 16.0/9.0; + break; + case ultramodern::HUDRatioMode::Full: + application->userConfig.extAspectRatio = RT64::UserConfiguration::AspectRatio::Expand; + break; + } + application->userConfig.aspectRatio = new_config.ar_option; application->userConfig.antialiasing = new_config.msaa_option; application->userConfig.refreshRate = new_config.rr_option; diff --git a/src/ui/ui_config.cpp b/src/ui/ui_config.cpp index ab6079f..39c86ec 100644 --- a/src/ui/ui_config.cpp +++ b/src/ui/ui_config.cpp @@ -315,6 +315,7 @@ public: ); bind_option(constructor, "wm_option", &new_options.wm_option); bind_option(constructor, "ar_option", &new_options.ar_option); + bind_option(constructor, "hr_option", &new_options.hr_option); bind_option(constructor, "msaa_option", &new_options.msaa_option); bind_option(constructor, "rr_option", &new_options.rr_option); constructor.BindFunc("rr_manual_value", diff --git a/ultramodern/config.hpp b/ultramodern/config.hpp index 567a7fa..9236944 100644 --- a/ultramodern/config.hpp +++ b/ultramodern/config.hpp @@ -15,10 +15,17 @@ namespace ultramodern { Fullscreen, OptionCount }; + enum class HUDRatioMode { + Original, + Clamp16x9, + Full, + OptionCount + }; struct GraphicsConfig { Resolution res_option; WindowMode wm_option; + HUDRatioMode hr_option; RT64::UserConfiguration::AspectRatio ar_option; RT64::UserConfiguration::Antialiasing msaa_option; RT64::UserConfiguration::RefreshRate rr_option; @@ -42,6 +49,12 @@ namespace ultramodern { {ultramodern::WindowMode::Windowed, "Windowed"}, {ultramodern::WindowMode::Fullscreen, "Fullscreen"} }); + + NLOHMANN_JSON_SERIALIZE_ENUM(ultramodern::HUDRatioMode, { + {ultramodern::HUDRatioMode::Original, "Original"}, + {ultramodern::HUDRatioMode::Clamp16x9, "Clamp16x9"}, + {ultramodern::HUDRatioMode::Full, "Full"}, + }); }; #endif