diff --git a/src/duckstation-qt/displaysettingswidget.cpp b/src/duckstation-qt/displaysettingswidget.cpp
index 9d3dc5961..7db660ed9 100644
--- a/src/duckstation-qt/displaysettingswidget.cpp
+++ b/src/duckstation-qt/displaysettingswidget.cpp
@@ -36,6 +36,9 @@ DisplaySettingsWidget::DisplaySettingsWidget(SettingsDialog* dialog, QWidget* pa
SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.displayCropMode, "Display", "CropMode",
&Settings::ParseDisplayCropMode, &Settings::GetDisplayCropModeName,
Settings::DEFAULT_DISPLAY_CROP_MODE);
+ SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.displayAlignment, "Display", "Alignment",
+ &Settings::ParseDisplayAlignment, &Settings::GetDisplayAlignmentName,
+ Settings::DEFAULT_DISPLAY_ALIGNMENT);
SettingWidgetBinder::BindWidgetToEnumSetting(sif, m_ui.gpuDownsampleMode, "GPU", "DownsampleMode",
&Settings::ParseDownsampleModeName, &Settings::GetDownsampleModeName,
Settings::DEFAULT_GPU_DOWNSAMPLE_MODE);
@@ -95,6 +98,10 @@ DisplaySettingsWidget::DisplaySettingsWidget(SettingsDialog* dialog, QWidget* pa
"Some games display content in the overscan area, or use it for screen effects.
May "
"not display correctly with the \"All Borders\" setting. \"Only Overscan\" offers a good "
"compromise between stability and hiding black borders."));
+ dialog->registerWidgetHelp(
+ m_ui.displayAlignment, tr("Position"),
+ qApp->translate("DisplayCropMode", Settings::GetDisplayAlignmentDisplayName(Settings::DEFAULT_DISPLAY_ALIGNMENT)),
+ tr("Determines the position on the screen when black borders must be added."));
dialog->registerWidgetHelp(
m_ui.gpuDownsampleMode, tr("Downsampling"), tr("Disabled"),
tr("Downsamples the rendered image prior to displaying it. Can improve overall image quality in mixed 2D/3D games, "
@@ -177,6 +184,12 @@ void DisplaySettingsWidget::setupAdditionalUi()
qApp->translate("DisplayCropMode", Settings::GetDisplayCropModeDisplayName(static_cast(i))));
}
+ for (u32 i = 0; i < static_cast(DisplayAlignment::Count); i++)
+ {
+ m_ui.displayAlignment->addItem(
+ qApp->translate("DisplayAlignment", Settings::GetDisplayAlignmentDisplayName(static_cast(i))));
+ }
+
for (u32 i = 0; i < static_cast(GPUDownsampleMode::Count); i++)
{
m_ui.gpuDownsampleMode->addItem(
diff --git a/src/duckstation-qt/displaysettingswidget.ui b/src/duckstation-qt/displaysettingswidget.ui
index 35948a5c0..d654cb643 100644
--- a/src/duckstation-qt/displaysettingswidget.ui
+++ b/src/duckstation-qt/displaysettingswidget.ui
@@ -154,17 +154,17 @@
-
- -
+
-
Downsampling:
- -
+
-
- -
+
-
-
@@ -196,6 +196,16 @@
+ -
+
+
+ Position:
+
+
+
+ -
+
+
diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp
index 9bf73a9eb..9a92ffa1a 100644
--- a/src/frontend-common/fullscreen_ui.cpp
+++ b/src/frontend-common/fullscreen_ui.cpp
@@ -3403,6 +3403,11 @@ void FullscreenUI::DrawDisplaySettingsPage()
"CropMode", Settings::DEFAULT_DISPLAY_CROP_MODE, &Settings::ParseDisplayCropMode,
&Settings::GetDisplayCropModeName, &Settings::GetDisplayCropModeDisplayName, DisplayCropMode::Count);
+ DrawEnumSetting(bsi, "Position", "Determines the position on the screen when black borders must be added.", "Display",
+ "Alignment", Settings::DEFAULT_DISPLAY_ALIGNMENT, &Settings::ParseDisplayAlignment,
+ &Settings::GetDisplayAlignmentDisplayName, &Settings::GetDisplayAlignmentDisplayName,
+ DisplayAlignment::Count);
+
DrawEnumSetting(bsi, "Downsampling",
"Downsamples the rendered image prior to displaying it. Can improve "
"overall image quality in mixed 2D/3D games.",
@@ -5038,9 +5043,9 @@ void FullscreenUI::DrawCoverDownloaderWindow()
bool is_open = true;
if (ImGui::BeginPopupModal("Download Covers", &is_open, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize))
{
- ImGui::TextWrapped(
- "DuckStation can automatically download covers for games which do not currently have a cover set. We do not host any "
- "cover images, the user must provide their own source for images.");
+ ImGui::TextWrapped("DuckStation can automatically download covers for games which do not currently have a cover "
+ "set. We do not host any "
+ "cover images, the user must provide their own source for images.");
ImGui::NewLine();
ImGui::TextWrapped(
"In the form below, specify the URLs to download covers from, with one template URL per line. The following "