GS: Add a 10:7 pixel ration option

This commit is contained in:
crashGG 2024-09-19 13:21:04 +03:00 committed by Ty
parent 13e0546f56
commit 6c3cf12df6
6 changed files with 27 additions and 1 deletions

View File

@ -104,6 +104,11 @@
<string>Widescreen (16:9)</string>
</property>
</item>
<item>
<property name="text">
<string>Native (10:7)</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
@ -135,6 +140,11 @@
<string>Widescreen (16:9)</string>
</property>
</item>
<item>
<property name="text">
<string>Native (10:7)</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">

View File

@ -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
};

View File

@ -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;
}

View File

@ -277,7 +277,7 @@ float GSRenderer::GetModXYOffset()
static float GetCurrentAspectRatioFloat(bool is_progressive)
{
static constexpr std::array<float, static_cast<size_t>(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<float, static_cast<size_t>(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<u32>(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<float>(src_rect.width()) / static_cast<float>(src_size.x)) /
(static_cast<float>(src_rect.height()) / static_cast<float>(src_size.y));

View File

@ -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[] = {

View File

@ -877,6 +877,9 @@ void VMManager::RequestDisplaySize(float scale /*= 0.0f*/)
case AspectRatioType::R16_9:
x_scale = (16.0f / 9.0f) / (static_cast<float>(iwidth) / static_cast<float>(iheight));
break;
case AspectRatioType::R10_7:
x_scale = (10.0f / 7.0f) / (static_cast<float>(iwidth) / static_cast<float>(iheight));
break;
case AspectRatioType::Stretch:
default:
x_scale = 1.0f;