diff --git a/pcsx2-qt/Settings/GraphicsSettingsWidget.ui b/pcsx2-qt/Settings/GraphicsSettingsWidget.ui
index 6bd11fcb30..e097717193 100644
--- a/pcsx2-qt/Settings/GraphicsSettingsWidget.ui
+++ b/pcsx2-qt/Settings/GraphicsSettingsWidget.ui
@@ -104,6 +104,11 @@
Widescreen (16:9)
+ -
+
+ Native (10:7)
+
+
-
@@ -135,6 +140,11 @@
Widescreen (16:9)
+ -
+
+ Native (10:7)
+
+
-
diff --git a/pcsx2/Config.h b/pcsx2/Config.h
index 8d6daaabe7..6f4b995747 100644
--- a/pcsx2/Config.h
+++ b/pcsx2/Config.h
@@ -196,6 +196,7 @@ enum class AspectRatioType : u8
RAuto4_3_3_2,
R4_3,
R16_9,
+ R10_7,
MaxCount
};
@@ -205,6 +206,7 @@ enum class FMVAspectRatioSwitchType : u8
RAuto4_3_3_2,
R4_3,
R16_9,
+ R10_7,
MaxCount
};
diff --git a/pcsx2/Counters.cpp b/pcsx2/Counters.cpp
index 3dab071191..7b12f3acd1 100644
--- a/pcsx2/Counters.cpp
+++ b/pcsx2/Counters.cpp
@@ -469,6 +469,9 @@ static __fi void DoFMVSwitch()
case FMVAspectRatioSwitchType::R16_9:
EmuConfig.CurrentAspectRatio = new_fmv_state ? AspectRatioType::R16_9 : EmuConfig.GS.AspectRatio;
break;
+ case FMVAspectRatioSwitchType::R10_7:
+ EmuConfig.CurrentAspectRatio = new_fmv_state ? AspectRatioType::R10_7 : EmuConfig.GS.AspectRatio;
+ break;
default:
break;
}
diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp
index 2ac36da07b..e564e0e6d2 100644
--- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp
+++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp
@@ -277,7 +277,7 @@ float GSRenderer::GetModXYOffset()
static float GetCurrentAspectRatioFloat(bool is_progressive)
{
- static constexpr std::array(AspectRatioType::MaxCount) + 1> ars = {{4.0f / 3.0f, 4.0f / 3.0f, 4.0f / 3.0f, 16.0f / 9.0f, 3.0f / 2.0f}};
+ static constexpr std::array(AspectRatioType::MaxCount) + 1> ars = {{4.0f / 3.0f, 4.0f / 3.0f, 4.0f / 3.0f, 16.0f / 9.0f, 10.0f / 7.0f, 3.0f / 2.0f}};
return ars[static_cast(GSConfig.AspectRatio) + (3u * (is_progressive && GSConfig.AspectRatio == AspectRatioType::RAuto4_3_3_2))];
}
@@ -300,7 +300,13 @@ static GSVector4 CalculateDrawDstRect(s32 window_width, s32 window_height, const
targetAr = 4.0f / 3.0f;
}
else if (EmuConfig.CurrentAspectRatio == AspectRatioType::R16_9)
+ {
targetAr = 16.0f / 9.0f;
+ }
+ else if (EmuConfig.CurrentAspectRatio == AspectRatioType::R10_7)
+ {
+ targetAr = 10.0f / 7.0f;
+ }
const float crop_adjust = (static_cast(src_rect.width()) / static_cast(src_size.x)) /
(static_cast(src_rect.height()) / static_cast(src_size.y));
diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp
index 3e112c93c8..c78c8dfe1e 100644
--- a/pcsx2/Pcsx2Config.cpp
+++ b/pcsx2/Pcsx2Config.cpp
@@ -553,6 +553,7 @@ const char* Pcsx2Config::GSOptions::AspectRatioNames[] = {
"Auto 4:3/3:2",
"4:3",
"16:9",
+ "10:7",
nullptr};
const char* Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames[] = {
@@ -560,6 +561,7 @@ const char* Pcsx2Config::GSOptions::FMVAspectRatioSwitchNames[] = {
"Auto 4:3/3:2",
"4:3",
"16:9",
+ "10:7",
nullptr};
const char* Pcsx2Config::GSOptions::BlendingLevelNames[] = {
diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp
index 5f80dce94e..a9811a56bf 100644
--- a/pcsx2/VMManager.cpp
+++ b/pcsx2/VMManager.cpp
@@ -877,6 +877,9 @@ void VMManager::RequestDisplaySize(float scale /*= 0.0f*/)
case AspectRatioType::R16_9:
x_scale = (16.0f / 9.0f) / (static_cast(iwidth) / static_cast(iheight));
break;
+ case AspectRatioType::R10_7:
+ x_scale = (10.0f / 7.0f) / (static_cast(iwidth) / static_cast(iheight));
+ break;
case AspectRatioType::Stretch:
default:
x_scale = 1.0f;