From 48a95da874d519297486402ef597da6f782f349c Mon Sep 17 00:00:00 2001 From: xbzk Date: Sun, 30 Aug 2026 08:17:54 +0200 Subject: [debug] debug knobs adjustments (#4317) - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- minor changes to debug knobs: -changed its category to System so it becomes per-game-able (believe me, it's useful) -fixed kotlin field type to UShort -changed get to Get for proper standard -added spacings and more info to docs Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4317 Reviewed-by: Lizzie and Samuel Reviewed-by: crueter --- .../main/java/org/yuzu/yuzu_emu/NativeLibrary.kt | 2 +- .../yuzu_emu/features/settings/model/Settings.kt | 4 ++-- .../features/settings/model/ShortSetting.kt | 5 ++-- .../features/settings/model/UShortSetting.kt | 27 ++++++++++++++++++++++ .../features/settings/model/view/SettingsItem.kt | 3 ++- .../settings/ui/SettingsFragmentPresenter.kt | 3 ++- .../java/org/yuzu/yuzu_emu/utils/NativeConfig.kt | 6 +++++ src/android/app/src/main/jni/native.cpp | 4 ++-- src/android/app/src/main/jni/native_config.cpp | 19 +++++++++++++++ 9 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/UShortSetting.kt (limited to 'src/android') diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index 4610574f21..4b46dd76a2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt @@ -220,7 +220,7 @@ object NativeLibrary { external fun refreshThreadPolicies() - external fun getDebugKnobAt(index: Int): Boolean + external fun GetDebugKnobAt(index: Int): Boolean /** * Set the current speed limit to the configured turbo speed. 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 2b449beaff..fc4df4952d 100644 --- 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 @@ -35,8 +35,8 @@ object Settings { fun getPlayerString(player: Int): String = YuzuApplication.appContext.getString(R.string.preferences_player, player) - fun getDebugKnobAt(index: Int): Boolean { - return org.yuzu.yuzu_emu.NativeLibrary.getDebugKnobAt(index) + fun GetDebugKnobAt(index: Int): Boolean { + return org.yuzu.yuzu_emu.NativeLibrary.GetDebugKnobAt(index) } const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch" diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt index 88c3615bdb..5f1dbe6372 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt @@ -11,8 +11,7 @@ import org.yuzu.yuzu_emu.utils.NativeConfig enum class ShortSetting(override val key: String) : AbstractShortSetting { RENDERER_SPEED_LIMIT("speed_limit"), RENDERER_TURBO_SPEED_LIMIT("turbo_speed_limit"), - RENDERER_SLOW_SPEED_LIMIT("slow_speed_limit"), - DEBUG_KNOBS("debug_knobs") + RENDERER_SLOW_SPEED_LIMIT("slow_speed_limit") ; override fun getShort(needsGlobal: Boolean): Short = NativeConfig.getShort(key, needsGlobal) @@ -29,4 +28,4 @@ enum class ShortSetting(override val key: String) : AbstractShortSetting { override fun getValueAsString(needsGlobal: Boolean): String = getShort(needsGlobal).toString() override fun reset() = NativeConfig.setShort(key, defaultValue) -} \ No newline at end of file +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/UShortSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/UShortSetting.kt new file mode 100644 index 0000000000..b55b4dd019 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/UShortSetting.kt @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model + +import org.yuzu.yuzu_emu.utils.NativeConfig + +enum class UShortSetting(override val key: String) : AbstractIntSetting { + DEBUG_KNOBS("debug_knobs") + ; + + override fun getInt(needsGlobal: Boolean): Int = + NativeConfig.getUnsignedShort(key, needsGlobal) + + override fun setInt(value: Int) { + if (NativeConfig.isPerGameConfigLoaded()) { + global = false + } + NativeConfig.setUnsignedShort(key, value) + } + + override val defaultValue: Int by lazy { NativeConfig.getDefaultToString(key).toInt() } + + override fun getValueAsString(needsGlobal: Boolean): String = getInt(needsGlobal).toString() + + override fun reset() = NativeConfig.setUnsignedShort(key, defaultValue) +} 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 c05539c306..6d46b50051 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 @@ -20,6 +20,7 @@ import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.yuzu.yuzu_emu.features.settings.model.LongSetting import org.yuzu.yuzu_emu.features.settings.model.ShortSetting import org.yuzu.yuzu_emu.features.settings.model.StringSetting +import org.yuzu.yuzu_emu.features.settings.model.UShortSetting import org.yuzu.yuzu_emu.network.NetDataValidators import org.yuzu.yuzu_emu.utils.LosslessScalingHelper import org.yuzu.yuzu_emu.utils.NativeConfig @@ -1034,7 +1035,7 @@ abstract class SettingsItem( ) put( SpinBoxSetting( - ShortSetting.DEBUG_KNOBS, + UShortSetting.DEBUG_KNOBS, titleId = R.string.debug_knobs, descriptionId = R.string.debug_knobs_description, valueHint = R.string.debug_knobs_hint, 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 108861491a..8e4984efe1 100644 --- 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 @@ -25,6 +25,7 @@ import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.features.settings.model.Settings.MenuTag import org.yuzu.yuzu_emu.features.settings.model.ShortSetting import org.yuzu.yuzu_emu.features.settings.model.StringSetting +import org.yuzu.yuzu_emu.features.settings.model.UShortSetting import org.yuzu.yuzu_emu.features.settings.model.view.* import org.yuzu.yuzu_emu.utils.InputHandler import org.yuzu.yuzu_emu.utils.LosslessScalingHelper @@ -1326,7 +1327,7 @@ class SettingsFragmentPresenter( add(HeaderSetting(R.string.general)) - add(ShortSetting.DEBUG_KNOBS.key) + add(UShortSetting.DEBUG_KNOBS.key) add(StringSetting.PROGRAM_ARGS.key) if (!NativeConfig.isPerGameConfigLoaded()) { diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt index d1b5b1373d..10c8998d5c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt @@ -80,6 +80,12 @@ object NativeConfig { @Synchronized external fun setShort(key: String, value: Short) + @Synchronized + external fun getUnsignedShort(key: String, needsGlobal: Boolean): Int + + @Synchronized + external fun setUnsignedShort(key: String, value: Int) + @Synchronized external fun getInt(key: String, needsGlobal: Boolean): Int diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index e8e9f0a14b..9fc550985a 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -1300,8 +1300,8 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_refreshThreadPolicies(JNIEnv* env, jo Common::RefreshThreadPolicies(); } -jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_getDebugKnobAt(JNIEnv* env, jobject jobj, jint index) { - return static_cast(Settings::getDebugKnobAt(static_cast(index))); +jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_GetDebugKnobAt(JNIEnv* env, jobject jobj, jint index) { + return static_cast(Settings::GetDebugKnobAt(static_cast(index))); } void Java_org_yuzu_yuzu_1emu_NativeLibrary_setTurboSpeedLimit(JNIEnv *env, jobject jobj, jboolean enabled) { diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 647fdbb997..09a79ce4d7 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -130,6 +130,25 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject ob setting->SetValue(value); } +jint Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getUnsignedShort(JNIEnv* env, jobject obj, + jstring jkey, + jboolean needGlobal) { + auto setting = getSetting(env, jkey); + if (setting == nullptr) { + return -1; + } + return static_cast(setting->GetValue(static_cast(needGlobal))); +} + +void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setUnsignedShort(JNIEnv* env, jobject obj, + jstring jkey, jint value) { + auto setting = getSetting(env, jkey); + if (setting == nullptr) { + return; + } + setting->SetValue(static_cast(value)); +} + jint Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); -- cgit v1.2.3