From 27e19f87c63437db641b736429ac3503160f21ae Mon Sep 17 00:00:00 2001 From: Morph <39850852+Morph1984@users.noreply.github.com> Date: Thu, 13 Feb 2020 22:17:28 -0500 Subject: Add following aspect ratios: 16:9, 21:9, Stretch to Window Available as a drop down within the configure graphics tab. --- src/yuzu/configuration/config.cpp | 2 ++ src/yuzu/configuration/configure_graphics.cpp | 2 ++ src/yuzu/configuration/configure_graphics.ui | 30 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) (limited to 'src/yuzu') diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index cd94693c1..6209fff75 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -630,6 +630,7 @@ void Config::ReadRendererValues() { Settings::values.vulkan_device = ReadSetting(QStringLiteral("vulkan_device"), 0).toInt(); Settings::values.resolution_factor = ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat(); + Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt(); Settings::values.use_frame_limit = ReadSetting(QStringLiteral("use_frame_limit"), true).toBool(); Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt(); @@ -1064,6 +1065,7 @@ void Config::SaveRendererValues() { WriteSetting(QStringLiteral("vulkan_device"), Settings::values.vulkan_device, 0); WriteSetting(QStringLiteral("resolution_factor"), static_cast(Settings::values.resolution_factor), 1.0); + WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0); WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true); WriteSetting(QStringLiteral("frame_limit"), Settings::values.frame_limit, 100); WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache, diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index f57a24e36..ea899c080 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -97,6 +97,7 @@ void ConfigureGraphics::SetConfiguration() { ui->api->setCurrentIndex(static_cast(Settings::values.renderer_backend)); ui->resolution_factor_combobox->setCurrentIndex( static_cast(FromResolutionFactor(Settings::values.resolution_factor))); + ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio); ui->use_disk_shader_cache->setEnabled(runtime_lock); ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); ui->use_accurate_gpu_emulation->setChecked(Settings::values.use_accurate_gpu_emulation); @@ -114,6 +115,7 @@ void ConfigureGraphics::ApplyConfiguration() { Settings::values.vulkan_device = vulkan_device; Settings::values.resolution_factor = ToResolutionFactor(static_cast(ui->resolution_factor_combobox->currentIndex())); + Settings::values.aspect_ratio = ui->aspect_ratio_combobox->currentIndex(); Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); Settings::values.use_accurate_gpu_emulation = ui->use_accurate_gpu_emulation->isChecked(); Settings::values.use_asynchronous_gpu_emulation = diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index e24372204..ca79909d0 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -138,6 +138,36 @@ + + + + + + Aspect Ratio: + + + + + + + + Default (16:9) + + + + + Force 21:9 + + + + + Stretch to Window + + + + + + -- cgit v1.2.3 From c3d0a0d6277c97d6e3c99914358dce15cc26871c Mon Sep 17 00:00:00 2001 From: Morph <39850852+Morph1984@users.noreply.github.com> Date: Fri, 14 Feb 2020 14:39:04 -0500 Subject: Add 4:3 aspect ratio and address feedback --- src/core/frontend/framebuffer_layout.cpp | 14 ++++++++------ src/core/frontend/framebuffer_layout.h | 9 +++++---- src/yuzu/configuration/configure_graphics.ui | 5 +++++ src/yuzu_cmd/default_ini.h | 2 +- src/yuzu_tester/default_ini.h | 2 +- 5 files changed, 20 insertions(+), 12 deletions(-) (limited to 'src/yuzu') diff --git a/src/core/frontend/framebuffer_layout.cpp b/src/core/frontend/framebuffer_layout.cpp index 1b4f0255e..2dc795d56 100644 --- a/src/core/frontend/framebuffer_layout.cpp +++ b/src/core/frontend/framebuffer_layout.cpp @@ -28,8 +28,8 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) { FramebufferLayout res{width, height}; const float window_aspect_ratio = static_cast(height) / width; - float emulation_aspect_ratio = EmulationAspectRatio( - static_cast(Settings::values.aspect_ratio), window_aspect_ratio); + const float emulation_aspect_ratio = EmulationAspectRatio( + static_cast(Settings::values.aspect_ratio), window_aspect_ratio); const Common::Rectangle screen_window_area{0, 0, width, height}; Common::Rectangle screen = MaxRectangle(screen_window_area, emulation_aspect_ratio); @@ -58,13 +58,15 @@ FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale) { return DefaultFrameLayout(width, height); } -float EmulationAspectRatio(Aspect aspect, float window_aspect_ratio) { +float EmulationAspectRatio(AspectRatio aspect, float window_aspect_ratio) { switch (aspect) { - case Aspect::Default: + case AspectRatio::Default: return static_cast(ScreenUndocked::Height) / ScreenUndocked::Width; - case Aspect::Aspect21by9: + case AspectRatio::R4_3: + return 3.0f / 4.0f; + case AspectRatio::R21_9: return 9.0f / 21.0f; - case Aspect::StretchToWindow: + case AspectRatio::StretchToWindow: return window_aspect_ratio; default: return static_cast(ScreenUndocked::Height) / ScreenUndocked::Width; diff --git a/src/core/frontend/framebuffer_layout.h b/src/core/frontend/framebuffer_layout.h index 7f6fbe468..1d39c1faf 100644 --- a/src/core/frontend/framebuffer_layout.h +++ b/src/core/frontend/framebuffer_layout.h @@ -18,9 +18,10 @@ enum ScreenDocked : u32 { HeightDocked = 1080, }; -enum class Aspect { +enum class AspectRatio { Default, - Aspect21by9, + R4_3, + R21_9, StretchToWindow, }; @@ -56,10 +57,10 @@ FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale); /** * Convenience method to determine emulation aspect ratio - * @param aspect Represents the index of aspect ratio in Settings::values.aspect_ratio + * @param aspect Represents the index of aspect ratio stored in Settings::values.aspect_ratio * @param window_aspect_ratio Current window aspect ratio * @return Emulation render window aspect ratio */ -float EmulationAspectRatio(Aspect aspect, float window_aspect_ratio); +float EmulationAspectRatio(AspectRatio aspect, float window_aspect_ratio); } // namespace Layout diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index ca79909d0..db60426ab 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -154,6 +154,11 @@ Default (16:9) + + + Force 4:3 + + Force 21:9 diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index 6522c9652..8a2b658cd 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h @@ -123,7 +123,7 @@ use_shader_jit = resolution_factor = # Aspect ratio -# 0: Default (16:9), 1: Force 21:9, 2: Stretch to Window +# 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window aspect_ratio = # Whether to enable V-Sync (caps the framerate at 60FPS) or not. diff --git a/src/yuzu_tester/default_ini.h b/src/yuzu_tester/default_ini.h index 676592db0..8d93f7b88 100644 --- a/src/yuzu_tester/default_ini.h +++ b/src/yuzu_tester/default_ini.h @@ -27,7 +27,7 @@ use_shader_jit = resolution_factor = # Aspect ratio -# 0: Default (16:9), 1: Force 21:9, 2: Stretch to Window +# 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window aspect_ratio = # Whether to enable V-Sync (caps the framerate at 60FPS) or not. -- cgit v1.2.3