From 91f51c2833707ece1acfe0ff05776b47179d170d Mon Sep 17 00:00:00 2001 From: Albert Liu <45282415+ggrtk@users.noreply.github.com> Date: Sun, 12 Jul 2020 17:07:01 -0700 Subject: [PATCH] Settings: Add 1:1 pixel aspect ratio --- src/core/host_display.cpp | 3 +++ src/core/settings.cpp | 8 ++++---- src/core/types.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/host_display.cpp b/src/core/host_display.cpp index fd22ebfac..a6b8cc241 100644 --- a/src/core/host_display.cpp +++ b/src/core/host_display.cpp @@ -61,6 +61,7 @@ void HostDisplay::CalculateDrawRect(s32 window_width, s32 window_height, s32* ou s32* out_height, s32* out_left_padding, s32* out_top_padding, float* out_scale, float* out_y_scale, bool apply_aspect_ratio) const { + apply_aspect_ratio = (m_display_aspect_ratio > 0) ? apply_aspect_ratio : false; const float y_scale = apply_aspect_ratio ? ((static_cast(m_display_width) / static_cast(m_display_height)) / m_display_aspect_ratio) : @@ -263,6 +264,8 @@ bool HostDisplay::WriteDisplayTextureToFile(const char* filename, bool full_reso if (!m_display_texture_handle) return false; + apply_aspect_ratio = (m_display_aspect_ratio > 0) ? apply_aspect_ratio : false; + s32 resize_width = 0; s32 resize_height = 0; if (apply_aspect_ratio && full_resolution) diff --git a/src/core/settings.cpp b/src/core/settings.cpp index de5b01567..c646d691b 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -437,10 +437,10 @@ const char* Settings::GetDisplayCropModeDisplayName(DisplayCropMode crop_mode) return s_display_crop_mode_display_names[static_cast(crop_mode)]; } -static std::array s_display_aspect_ratio_names = - {{"4:3", "16:9", "8:7", "2:1 (VRAM 1:1)", "1:1"}}; -static constexpr std::array s_display_aspect_ratio_values = - {{4.0f / 3.0f, 16.0f / 9.0f, 8.0f / 7.0f, 2.0f / 1.0f, 1.0f}}; +static std::array s_display_aspect_ratio_names = + {{"4:3", "16:9", "8:7", "2:1 (VRAM 1:1)", "1:1", "PAR 1:1"}}; +static constexpr std::array s_display_aspect_ratio_values = + {{4.0f / 3.0f, 16.0f / 9.0f, 8.0f / 7.0f, 2.0f / 1.0f, 1.0f, -1.0f}}; std::optional Settings::ParseDisplayAspectRatio(const char* str) { diff --git a/src/core/types.h b/src/core/types.h index c1e314f23..3c234cd90 100644 --- a/src/core/types.h +++ b/src/core/types.h @@ -74,6 +74,7 @@ enum class DisplayAspectRatio : u8 R8_7, R2_1, R1_1, + PAR1_1, Count };