From 05f536694ab49cae61f86c844712b9db10bb2468 Mon Sep 17 00:00:00 2001 From: crueter Date: Sun, 6 Jul 2025 18:20:30 +0000 Subject: [PATCH] [android] Fix 1.5x and warn at resolutions >= 2x (#21) Co-authored-by: Aleksandr Popovich Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/21 --- .../settings/model/view/SettingsItem.kt | 4 +++- .../settings/model/view/SingleChoiceSetting.kt | 4 +++- .../settings/ui/SettingsDialogFragment.kt | 12 +++++++++++- .../app/src/main/res/values-ar/strings.xml | 1 + .../app/src/main/res/values-ckb/strings.xml | 1 + .../app/src/main/res/values-cs/strings.xml | 1 + .../app/src/main/res/values-de/strings.xml | 1 + .../app/src/main/res/values-es/strings.xml | 1 + .../app/src/main/res/values-fa/strings.xml | 1 + .../app/src/main/res/values-fr/strings.xml | 1 + .../app/src/main/res/values-he/strings.xml | 1 + .../app/src/main/res/values-hu/strings.xml | 1 + .../app/src/main/res/values-id/strings.xml | 1 + .../app/src/main/res/values-it/strings.xml | 1 + .../app/src/main/res/values-ja/strings.xml | 1 + .../app/src/main/res/values-ko/strings.xml | 1 + .../app/src/main/res/values-nb/strings.xml | 1 + .../app/src/main/res/values-pl/strings.xml | 1 + .../app/src/main/res/values-pt-rBR/strings.xml | 1 + .../app/src/main/res/values-pt-rPT/strings.xml | 1 + .../app/src/main/res/values-ru/strings.xml | 1 + .../app/src/main/res/values-sr/strings.xml | 18 +++++++++++------- .../app/src/main/res/values-uk/strings.xml | 1 + .../app/src/main/res/values-vi/strings.xml | 1 + .../app/src/main/res/values-zh-rCN/strings.xml | 1 + .../app/src/main/res/values-zh-rTW/strings.xml | 1 + src/android/app/src/main/res/values/arrays.xml | 2 ++ .../app/src/main/res/values/strings.xml | 4 ++++ 28 files changed, 56 insertions(+), 10 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 6ec678717b..f225d8d8b7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -378,7 +378,9 @@ abstract class SettingsItem( IntSetting.RENDERER_RESOLUTION, titleId = R.string.renderer_resolution, choicesId = R.array.rendererResolutionNames, - valuesId = R.array.rendererResolutionValues + valuesId = R.array.rendererResolutionValues, + warnChoices = (5..7).toList(), + warningMessage = R.string.warning_resolution ) ) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt index ea5e099ede..624bc2445c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt @@ -15,7 +15,9 @@ class SingleChoiceSetting( @StringRes descriptionId: Int = 0, descriptionString: String = "", @ArrayRes val choicesId: Int, - @ArrayRes val valuesId: Int + @ArrayRes val valuesId: Int, + val warnChoices: List = ArrayList(), + @StringRes val warningMessage: Int = 0, ) : SettingsItem(setting, titleId, titleString, descriptionId, descriptionString) { override val type = TYPE_SINGLE_CHOICE diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt index 1485d9a6cc..b54958c110 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt @@ -14,7 +14,6 @@ import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.EditText import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels @@ -113,6 +112,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener SettingsItem.TYPE_SINGLE_CHOICE -> { val item = settingsViewModel.clickedItem as SingleChoiceSetting val value = getSelectionForSingleChoiceValue(item) + MaterialAlertDialogBuilder(requireContext()) .setTitle(item.title) .setSingleChoiceItems(item.choicesId, value, this) @@ -125,6 +125,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener settingsViewModel.setSliderTextValue(item.getSelectedValue().toFloat(), item.units) sliderBinding.slider.apply { + stepSize = 1.0f valueFrom = item.min.toFloat() valueTo = item.max.toFloat() value = settingsViewModel.sliderProgress.value.toFloat() @@ -244,6 +245,15 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener is SingleChoiceSetting -> { val scSetting = settingsViewModel.clickedItem as SingleChoiceSetting val value = getValueForSingleChoiceSelection(scSetting, which) + + if (value in scSetting.warnChoices) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.warning) + .setMessage(scSetting.warningMessage) + .setPositiveButton(R.string.ok, null) + .create() + .show() + } scSetting.setSelectedValue(value) } diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index fba704d516..a71ef92fe8 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -678,6 +678,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (بطيء) 3X (2160p/3240p) (بطيء) 4X (2880p/4320p) (بطيء) diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 014e6f724a..c9a1c57f3f 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -636,6 +636,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (خاو) 3X (2160p/3240p) (خاو) 4X (2880p/4320p) (خاو) diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index 27e2bd5c6b..d18c56755b 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -577,6 +577,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Pomalé) 3X (2160p/3240p) (Pomalé) 4X (2880p/4320p) (Pomalé) diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 2349c70c89..e030369d8f 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -721,6 +721,7 @@ Wirklich fortfahren? 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Langsam) 3X (2160p/3240p) (Langsam) 4X (2880p/4320p) (Langsam) diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index 27bbb35cae..6a1ccbff26 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -786,6 +786,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) x1 (720p/1080p) + x1 (1080p/1620p) 2X (1440p/2160p) (Lento) 3X (2160p/3240p) (Lento) 4X (2880p/4320p) (Lento) diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index da78876baf..f445d28356 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -785,6 +785,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (کند) 3X (2160p/3240p) (کند) 4X (2880p/4320p) (کند) diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 452f43bd6d..d3bec19dd9 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -834,6 +834,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Lent) 3X (2160p/3240p) (Lent) 4X (2880p/4320p) (Lent) diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 09952ae0b1..3be619cac8 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -698,6 +698,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (איטי) 3X (2160p/3240p) (איטי) 4X (2880p/4320p) (איטי) diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 121edfdced..65ed9248c8 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -822,6 +822,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Lassú) 3X (2160p/3240p) (Lassú) 4X (2880p/4320p) (Lassú) diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 83ae800e94..71f974a767 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -778,6 +778,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Lambat) 3X (2160p/3240p) (Lambat) 4X (2880p/4320p) (Lambat) diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index bc0f7996b1..a81e41adf0 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -736,6 +736,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Slow) 3X (2160p/3240p) (Slow) 4X (2880p/4320p) (Slow) diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 1fc162a600..b5d28599a8 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -686,6 +686,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (低速) 3X (2160p/3240p) (低速) 4X (2880p/4320p) (低速) diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index d99bc5e92f..7843a9200b 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -777,6 +777,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (느림) 3X (2160p/3240p) (느림) 4X (2880p/4320p) (느림) diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index b66d7e3a9f..93ebb5013b 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -645,6 +645,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Slow) 3X (2160p/3240p) (Slow) 4X (2880p/4320p) (Slow) diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index da5f3c6874..f87d1a411e 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -643,6 +643,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Wolno) 3X (2160p/3240p) (Wolno) 4X (2880p/4320p) (Wolno) diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 99fd14463a..d602afb92a 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -835,6 +835,7 @@ uma tentativa de mapeamento automático 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Lento) 3X (2160p/3240p) (Lento) 4X (2880p/4320p) (Lento) diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 11f331ac15..dc46c1b68e 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -835,6 +835,7 @@ uma tentativa de mapeamento automático 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Lento) 3X (2160p/3240p) (Lento) 4X (2880p/4320p) (Lento) diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index e8ddf96d17..02ceb48943 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -836,6 +836,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Медленно) 3X (2160p/3240p) (Медленно) 4X (2880p/4320p) (Медленно) diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index 5065b7d171..814466a707 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -279,6 +279,7 @@ О томе Изградите верзију, кредите и још много тога Помоћи + упозорење Прескочити Отказати Инсталирајте Амиибо Кеис @@ -465,6 +466,8 @@ Анисотропни филтрирање Побољшава квалитет текстура када се посматра у косим угловима + Познато је да скалирање резолуције изнад 2x изазива проблеме и може довести до значајног успоравања вашег уређаја. + ЦПУ ЦПУ уклањање погрешака @@ -852,13 +855,14 @@ Агресиван - 0,25к (180п / 270п) - 0,5к (360п / 540п) - 0,75к (540п / 810п) - 1к (720п / 1080п) - 2к (1440п / 2160п) (споро) - 3к (2160п / 3240п) (споро) - 4к (2880п / 4320п) (споро) + 0.25X (180p/270p) + 0.5X (360p/540p) + 0.75X (540p/810p) + 1X (720p/1080p) + 1.5X (1080p/1620p) + 2X (1440p/2160p) (споро) + 3X (2160p/3240p) (споро) + 4X (2880p/4320p) (споро) Непосредан (искључен) diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 55d767b384..3a1366e975 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -625,6 +625,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Повільно) 3X (2160p/3240p) (Повільно) 4X (2880p/4320p) (Повільно) diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index dbe74f18f4..8f6ea3ffa5 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -648,6 +648,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Chậm) 3X (2160p/3240p) (Chậm) 4X (2880p/4320p) (Chậm) diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 2105a95e1e..8f25344789 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -829,6 +829,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (慢速) 3X (2160p/3240p) (慢速) 4X (2880p/4320p) (慢速) diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 0226ae0804..5e4ed21c35 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -835,6 +835,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (慢) 3X (2160p/3240p) (慢) 4X (2880p/4320p) (慢) diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 8a8b89d44f..23514a0a23 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -180,6 +180,7 @@ @string/resolution_half @string/resolution_three_quarter @string/resolution_one + @string/resolution_three_half @string/resolution_two @string/resolution_three @string/resolution_four @@ -200,6 +201,7 @@ 4 5 6 + 7 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 01d4d83e27..454e633cc3 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -290,6 +290,7 @@ About Build version, credits, and more Help + Warning Skip Cancel Install Amiibo keys @@ -491,6 +492,8 @@ Anisotropic filtering Improves the quality of textures when viewed at oblique angles + Resolution scaling above 2x is known to cause issues, and may result in significant slowdowns of your device. + CPU CPU Debugging @@ -884,6 +887,7 @@ 0.5X (360p/540p) 0.75X (540p/810p) 1X (720p/1080p) + 1.5X (1080p/1620p) 2X (1440p/2160p) (Slow) 3X (2160p/3240p) (Slow) 4X (2880p/4320p) (Slow)