aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpineappleEA <pineaea@gmail.com>2024-02-14 03:52:35 +0100
committerpineappleEA <pineaea@gmail.com>2024-02-14 03:52:35 +0100
commit603970064d5714da3c58eac0d9f95516b81d7892 (patch)
tree3194dafd522d1aca7a21368fede626eb354df5d3
parent2113b169c0cb6695c3138d6feabd66648cd42abf (diff)
early-access version 4138EA-4138
-rwxr-xr-xREADME.md2
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt4
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt11
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt19
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt2
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt8
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt45
-rwxr-xr-xsrc/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MessageDialogFragment.kt6
-rwxr-xr-xsrc/android/app/src/main/jni/android_settings.h7
-rwxr-xr-xsrc/android/app/src/main/res/values/arrays.xml11
-rwxr-xr-xsrc/android/app/src/main/res/values/strings.xml8
-rwxr-xr-xsrc/core/hle/service/set/settings_server.cpp2
-rwxr-xr-xsrc/core/hle/service/set/settings_server.h2
13 files changed, 117 insertions, 10 deletions
diff --git a/README.md b/README.md
index 8f78d6c36..4166e0658 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
1yuzu emulator early access 1yuzu emulator early access
2============= 2=============
3 3
4This is the source code for early-access 4137. 4This is the source code for early-access 4138.
5 5
6## Legal Notice 6## Legal Notice
7 7
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
index 71be2d0b2..0165cb2d1 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
@@ -24,7 +24,9 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
24 THEME_MODE("theme_mode"), 24 THEME_MODE("theme_mode"),
25 OVERLAY_SCALE("control_scale"), 25 OVERLAY_SCALE("control_scale"),
26 OVERLAY_OPACITY("control_opacity"), 26 OVERLAY_OPACITY("control_opacity"),
27 LOCK_DRAWER("lock_drawer"); 27 LOCK_DRAWER("lock_drawer"),
28 VERTICAL_ALIGNMENT("vertical_alignment"),
29 FSR_SHARPENING_SLIDER("fsr_sharpening_slider");
28 30
29 override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal) 31 override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal)
30 32
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
index fee80bb21..862c6c483 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
@@ -93,4 +93,15 @@ object Settings {
93 entries.firstOrNull { it.int == int } ?: Unspecified 93 entries.firstOrNull { it.int == int } ?: Unspecified
94 } 94 }
95 } 95 }
96
97 enum class EmulationVerticalAlignment(val int: Int) {
98 Top(1),
99 Center(0),
100 Bottom(2);
101
102 companion object {
103 fun from(int: Int): EmulationVerticalAlignment =
104 entries.firstOrNull { it.int == int } ?: Center
105 }
106 }
96} 107}
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 12f7aa1ab..21ca97bc1 100755
--- 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
@@ -189,6 +189,16 @@ abstract class SettingsItem(
189 ) 189 )
190 ) 190 )
191 put( 191 put(
192 SliderSetting(
193 IntSetting.FSR_SHARPENING_SLIDER,
194 R.string.fsr_sharpness,
195 R.string.fsr_sharpness_description,
196 0,
197 100,
198 "%"
199 )
200 )
201 put(
192 SingleChoiceSetting( 202 SingleChoiceSetting(
193 IntSetting.RENDERER_ANTI_ALIASING, 203 IntSetting.RENDERER_ANTI_ALIASING,
194 R.string.renderer_anti_aliasing, 204 R.string.renderer_anti_aliasing,
@@ -216,6 +226,15 @@ abstract class SettingsItem(
216 ) 226 )
217 ) 227 )
218 put( 228 put(
229 SingleChoiceSetting(
230 IntSetting.VERTICAL_ALIGNMENT,
231 R.string.vertical_alignment,
232 0,
233 R.array.verticalAlignmentEntries,
234 R.array.verticalAlignmentValues
235 )
236 )
237 put(
219 SwitchSetting( 238 SwitchSetting(
220 BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE, 239 BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE,
221 R.string.use_disk_shader_cache, 240 R.string.use_disk_shader_cache,
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index 2ad2f4966..db1a58147 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -143,10 +143,12 @@ class SettingsFragmentPresenter(
143 add(IntSetting.RENDERER_RESOLUTION.key) 143 add(IntSetting.RENDERER_RESOLUTION.key)
144 add(IntSetting.RENDERER_VSYNC.key) 144 add(IntSetting.RENDERER_VSYNC.key)
145 add(IntSetting.RENDERER_SCALING_FILTER.key) 145 add(IntSetting.RENDERER_SCALING_FILTER.key)
146 add(IntSetting.FSR_SHARPENING_SLIDER.key)
146 add(IntSetting.RENDERER_ANTI_ALIASING.key) 147 add(IntSetting.RENDERER_ANTI_ALIASING.key)
147 add(IntSetting.MAX_ANISOTROPY.key) 148 add(IntSetting.MAX_ANISOTROPY.key)
148 add(IntSetting.RENDERER_SCREEN_LAYOUT.key) 149 add(IntSetting.RENDERER_SCREEN_LAYOUT.key)
149 add(IntSetting.RENDERER_ASPECT_RATIO.key) 150 add(IntSetting.RENDERER_ASPECT_RATIO.key)
151 add(IntSetting.VERTICAL_ALIGNMENT.key)
150 add(BooleanSetting.PICTURE_IN_PICTURE.key) 152 add(BooleanSetting.PICTURE_IN_PICTURE.key)
151 add(BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key) 153 add(BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key)
152 add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key) 154 add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
index f5647fa95..872553ac4 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
@@ -104,7 +104,10 @@ class AddonsFragment : Fragment() {
104 requireActivity(), 104 requireActivity(),
105 titleId = R.string.addon_notice, 105 titleId = R.string.addon_notice,
106 descriptionId = R.string.addon_notice_description, 106 descriptionId = R.string.addon_notice_description,
107 positiveAction = { addonViewModel.showModInstallPicker(true) } 107 dismissible = false,
108 positiveAction = { addonViewModel.showModInstallPicker(true) },
109 negativeAction = {},
110 negativeButtonTitleId = R.string.close
108 ).show(parentFragmentManager, MessageDialogFragment.TAG) 111 ).show(parentFragmentManager, MessageDialogFragment.TAG)
109 addonViewModel.showModNoticeDialog(false) 112 addonViewModel.showModNoticeDialog(false)
110 } 113 }
@@ -119,7 +122,8 @@ class AddonsFragment : Fragment() {
119 requireActivity(), 122 requireActivity(),
120 titleId = R.string.confirm_uninstall, 123 titleId = R.string.confirm_uninstall,
121 descriptionId = R.string.confirm_uninstall_description, 124 descriptionId = R.string.confirm_uninstall_description,
122 positiveAction = { addonViewModel.onDeleteAddon(it) } 125 positiveAction = { addonViewModel.onDeleteAddon(it) },
126 negativeAction = {}
123 ).show(parentFragmentManager, MessageDialogFragment.TAG) 127 ).show(parentFragmentManager, MessageDialogFragment.TAG)
124 addonViewModel.setAddonToDelete(null) 128 addonViewModel.setAddonToDelete(null)
125 } 129 }
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
index 44af896da..6b25cc525 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
@@ -15,7 +15,9 @@ import android.os.Handler
15import android.os.Looper 15import android.os.Looper
16import android.os.PowerManager 16import android.os.PowerManager
17import android.os.SystemClock 17import android.os.SystemClock
18import android.util.Rational
18import android.view.* 19import android.view.*
20import android.widget.FrameLayout
19import android.widget.TextView 21import android.widget.TextView
20import android.widget.Toast 22import android.widget.Toast
21import androidx.activity.OnBackPressedCallback 23import androidx.activity.OnBackPressedCallback
@@ -24,6 +26,7 @@ import androidx.core.content.res.ResourcesCompat
24import androidx.core.graphics.Insets 26import androidx.core.graphics.Insets
25import androidx.core.view.ViewCompat 27import androidx.core.view.ViewCompat
26import androidx.core.view.WindowInsetsCompat 28import androidx.core.view.WindowInsetsCompat
29import androidx.core.view.updateLayoutParams
27import androidx.core.view.updatePadding 30import androidx.core.view.updatePadding
28import androidx.drawerlayout.widget.DrawerLayout 31import androidx.drawerlayout.widget.DrawerLayout
29import androidx.drawerlayout.widget.DrawerLayout.DrawerListener 32import androidx.drawerlayout.widget.DrawerLayout.DrawerListener
@@ -52,6 +55,7 @@ import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
52import org.yuzu.yuzu_emu.features.settings.model.IntSetting 55import org.yuzu.yuzu_emu.features.settings.model.IntSetting
53import org.yuzu.yuzu_emu.features.settings.model.Settings 56import org.yuzu.yuzu_emu.features.settings.model.Settings
54import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationOrientation 57import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationOrientation
58import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationVerticalAlignment
55import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile 59import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
56import org.yuzu.yuzu_emu.model.DriverViewModel 60import org.yuzu.yuzu_emu.model.DriverViewModel
57import org.yuzu.yuzu_emu.model.Game 61import org.yuzu.yuzu_emu.model.Game
@@ -617,7 +621,46 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
617 } 621 }
618 622
619 private fun updateScreenLayout() { 623 private fun updateScreenLayout() {
620 binding.surfaceEmulation.setAspectRatio(null) 624 val verticalAlignment =
625 EmulationVerticalAlignment.from(IntSetting.VERTICAL_ALIGNMENT.getInt())
626 val aspectRatio = when (IntSetting.RENDERER_ASPECT_RATIO.getInt()) {
627 0 -> Rational(16, 9)
628 1 -> Rational(4, 3)
629 2 -> Rational(21, 9)
630 3 -> Rational(16, 10)
631 else -> null // Best fit
632 }
633 when (verticalAlignment) {
634 EmulationVerticalAlignment.Top -> {
635 binding.surfaceEmulation.setAspectRatio(aspectRatio)
636 val params = FrameLayout.LayoutParams(
637 ViewGroup.LayoutParams.MATCH_PARENT,
638 ViewGroup.LayoutParams.WRAP_CONTENT
639 )
640 params.gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
641 binding.surfaceEmulation.layoutParams = params
642 }
643
644 EmulationVerticalAlignment.Center -> {
645 binding.surfaceEmulation.setAspectRatio(null)
646 binding.surfaceEmulation.updateLayoutParams {
647 width = ViewGroup.LayoutParams.MATCH_PARENT
648 height = ViewGroup.LayoutParams.MATCH_PARENT
649 }
650 }
651
652 EmulationVerticalAlignment.Bottom -> {
653 binding.surfaceEmulation.setAspectRatio(aspectRatio)
654 val params =
655 FrameLayout.LayoutParams(
656 ViewGroup.LayoutParams.MATCH_PARENT,
657 ViewGroup.LayoutParams.WRAP_CONTENT
658 )
659 params.gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
660 binding.surfaceEmulation.layoutParams = params
661 }
662 }
663 emulationState.updateSurface()
621 emulationActivity?.buildPictureInPictureParams() 664 emulationActivity?.buildPictureInPictureParams()
622 updateOrientation() 665 updateOrientation()
623 } 666 }
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MessageDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MessageDialogFragment.kt
index 685df0d59..c370964e1 100755
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MessageDialogFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MessageDialogFragment.kt
@@ -42,9 +42,9 @@ class MessageDialogFragment : DialogFragment() {
42 } else if (positiveButtonString.isNotEmpty()) { 42 } else if (positiveButtonString.isNotEmpty()) {
43 positiveButtonString 43 positiveButtonString
44 } else if (messageDialogViewModel.positiveAction != null) { 44 } else if (messageDialogViewModel.positiveAction != null) {
45 getString(R.string.close)
46 } else {
47 getString(android.R.string.ok) 45 getString(android.R.string.ok)
46 } else {
47 getString(R.string.close)
48 } 48 }
49 49
50 val negativeButtonId = requireArguments().getInt(NEGATIVE_BUTTON_TITLE_ID) 50 val negativeButtonId = requireArguments().getInt(NEGATIVE_BUTTON_TITLE_ID)
@@ -131,7 +131,7 @@ class MessageDialogFragment : DialogFragment() {
131 * @param positiveButtonTitleId String resource ID that will be used for the positive button. 131 * @param positiveButtonTitleId String resource ID that will be used for the positive button.
132 * [positiveButtonTitleString] used if 0. 132 * [positiveButtonTitleString] used if 0.
133 * @param positiveButtonTitleString String that will be used for the positive button. 133 * @param positiveButtonTitleString String that will be used for the positive button.
134 * android.R.string.ok used if empty. android.R.string.close will be used if [positiveAction] 134 * android.R.string.close used if empty. android.R.string.ok will be used if [positiveAction]
135 * is not null. 135 * is not null.
136 * @param positiveAction Lambda to run when the positive button is clicked. 136 * @param positiveAction Lambda to run when the positive button is clicked.
137 * @param showNegativeButton Normally the negative button isn't shown if there is no 137 * @param showNegativeButton Normally the negative button isn't shown if there is no
diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h
index 4a3bc8e53..00baf86a9 100755
--- a/src/android/app/src/main/jni/android_settings.h
+++ b/src/android/app/src/main/jni/android_settings.h
@@ -38,6 +38,13 @@ struct Values {
38 Settings::Specialization::Default, 38 Settings::Specialization::Default,
39 true, 39 true,
40 true}; 40 true};
41 Settings::Setting<s32> vertical_alignment{linkage,
42 0,
43 "vertical_alignment",
44 Settings::Category::Android,
45 Settings::Specialization::Default,
46 true,
47 true};
41 48
42 Settings::SwitchableSetting<std::string, false> driver_path{linkage, "", "driver_path", 49 Settings::SwitchableSetting<std::string, false> driver_path{linkage, "", "driver_path",
43 Settings::Category::GpuDriver}; 50 Settings::Category::GpuDriver};
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml
index 4701913eb..1bd6455b4 100755
--- a/src/android/app/src/main/res/values/arrays.xml
+++ b/src/android/app/src/main/res/values/arrays.xml
@@ -292,4 +292,15 @@
292 <item>5</item> 292 <item>5</item>
293 </integer-array> 293 </integer-array>
294 294
295 <string-array name="verticalAlignmentEntries">
296 <item>@string/top</item>
297 <item>@string/center</item>
298 <item>@string/bottom</item>
299 </string-array>
300 <integer-array name="verticalAlignmentValues">
301 <item>1</item>
302 <item>0</item>
303 <item>2</item>
304 </integer-array>
305
295</resources> 306</resources>
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 489e00107..78a4c958a 100755
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -226,6 +226,8 @@
226 <string name="renderer_screen_layout">Orientation</string> 226 <string name="renderer_screen_layout">Orientation</string>
227 <string name="renderer_aspect_ratio">Aspect ratio</string> 227 <string name="renderer_aspect_ratio">Aspect ratio</string>
228 <string name="renderer_scaling_filter">Window adapting filter</string> 228 <string name="renderer_scaling_filter">Window adapting filter</string>
229 <string name="fsr_sharpness">FSR sharpness</string>
230 <string name="fsr_sharpness_description">Determines how sharpened the image will look while using FSR\'s dynamic contrast</string>
229 <string name="renderer_anti_aliasing">Anti-aliasing method</string> 231 <string name="renderer_anti_aliasing">Anti-aliasing method</string>
230 <string name="renderer_force_max_clock">Force maximum clocks (Adreno only)</string> 232 <string name="renderer_force_max_clock">Force maximum clocks (Adreno only)</string>
231 <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string> 233 <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string>
@@ -558,6 +560,12 @@
558 <string name="mute">Mute</string> 560 <string name="mute">Mute</string>
559 <string name="unmute">Unmute</string> 561 <string name="unmute">Unmute</string>
560 562
563 <!-- Emulation vertical alignment -->
564 <string name="vertical_alignment">Vertical alignment</string>
565 <string name="top">Top</string>
566 <string name="center">Center</string>
567 <string name="bottom">Bottom</string>
568
561 <!-- Licenses screen strings --> 569 <!-- Licenses screen strings -->
562 <string name="licenses">Licenses</string> 570 <string name="licenses">Licenses</string>
563 <string name="license_fidelityfx_fsr" translatable="false">FidelityFX-FSR</string> 571 <string name="license_fidelityfx_fsr" translatable="false">FidelityFX-FSR</string>
diff --git a/src/core/hle/service/set/settings_server.cpp b/src/core/hle/service/set/settings_server.cpp
index 5cd9d6007..a9321b98d 100755
--- a/src/core/hle/service/set/settings_server.cpp
+++ b/src/core/hle/service/set/settings_server.cpp
@@ -155,7 +155,7 @@ Result ISettingsServer::GetRegionCode(Out<SystemRegionCode> out_region_code) {
155} 155}
156 156
157Result ISettingsServer::GetAvailableLanguageCodes2( 157Result ISettingsServer::GetAvailableLanguageCodes2(
158 Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcPointer> language_codes) { 158 Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcMapAlias> language_codes) {
159 LOG_DEBUG(Service_SET, "called"); 159 LOG_DEBUG(Service_SET, "called");
160 160
161 const std::size_t max_amount = std::min(POST_4_0_0_MAX_ENTRIES, language_codes.size()); 161 const std::size_t max_amount = std::min(POST_4_0_0_MAX_ENTRIES, language_codes.size());
diff --git a/src/core/hle/service/set/settings_server.h b/src/core/hle/service/set/settings_server.h
index ac8aa3fc3..a39971fe9 100755
--- a/src/core/hle/service/set/settings_server.h
+++ b/src/core/hle/service/set/settings_server.h
@@ -34,7 +34,7 @@ private:
34 Result GetRegionCode(Out<SystemRegionCode> out_region_code); 34 Result GetRegionCode(Out<SystemRegionCode> out_region_code);
35 35
36 Result GetAvailableLanguageCodes2( 36 Result GetAvailableLanguageCodes2(
37 Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcPointer> language_codes); 37 Out<s32> out_count, OutArray<LanguageCode, BufferAttr_HipcMapAlias> language_codes);
38 38
39 Result GetAvailableLanguageCodeCount2(Out<s32> out_count); 39 Result GetAvailableLanguageCodeCount2(Out<s32> out_count);
40 40