diff options
| author | xbzk <xbzk@eden-emu.dev> | 2026-06-15 03:02:33 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-06-15 03:02:33 +0200 |
| commit | 78a1cd0533fd4b6d5be77f9f6f2a87ca6b509d03 (patch) | |
| tree | 7348a5cf91e5bc98e7ab138feb877418d0dcba4f /src/android | |
| parent | 026974211ead69fd9304a7eadb00874e6f167028 (diff) | |
[hle] support passing arguments to homebrew applications (#4013)
Homebrew (.NRO) program args support
Adds a 'program_args' setting and delivers it to NRO homebrews via libnx's homebrew ABI. NROs previously had no way to receive CLI flags (e.g. NZ:P's -noglsl).
Setting: program_args, Category::System, startup-only.
Surfaced in Qt + Android Debug sections.
NRO loader: builds a 4-entry 'ConfigEntry' table + argv at the data segment tail; prepends 'homebrew ' so user args land at argv[1]; scans for 'svc #7' to use as LR. Drops the stale NSO-style argdata append.
KProcess: stores loader-provided guest addresses; 'Run' switches to the homebrew entry (x0=config_ptr, x1=-1, lr=svc7) and patches the real MainThreadHandle into the ConfigEntry slot. Legacy NSO path unchanged.
Tested on NZP — args reach 'argv' correctly.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4013
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Diffstat (limited to 'src/android')
4 files changed, 13 insertions, 1 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt index 55ddd5950c..2215afb663 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -11,6 +11,7 @@ import org.yuzu.yuzu_emu.utils.NativeConfig enum class StringSetting(override val key: String) : AbstractStringSetting { DRIVER_PATH("driver_path"), DEVICE_NAME("device_name"), + PROGRAM_ARGS("program_args"), WEB_TOKEN("eden_token"), WEB_USERNAME("eden_username") 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 f95c53720f..e3cd458a39 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 @@ -126,6 +126,13 @@ abstract class SettingsItem( val settingsItems = HashMap<String, SettingsItem>().apply { put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name)) put( + StringInputSetting( + StringSetting.PROGRAM_ARGS, + titleId = R.string.program_args, + descriptionId = R.string.program_args_description + ) + ) + put( SwitchSetting( BooleanSetting.RENDERER_USE_SPEED_LIMIT, titleId = R.string.frame_limit_enable, 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 161579927c..e2d70f1670 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 @@ -1286,6 +1286,7 @@ class SettingsFragmentPresenter( add(HeaderSetting(R.string.general)) add(ShortSetting.DEBUG_KNOBS.key) + add(StringSetting.PROGRAM_ARGS.key) add(HeaderSetting(R.string.gpu_logging_header)) add(BooleanSetting.GPU_LOGGING_ENABLED.key) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 77be250537..a425ce36ef 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -434,6 +434,9 @@ <string name="cpu_accuracy">CPU accuracy</string> <string name="value_with_units">%1$s%2$s</string> + <string name="program_args">Homebrew Args</string> + <string name="program_args_description">Command-line arguments passed to homebrew at launch (e.g. -noglsl).</string> + <!-- System settings strings --> <string name="device_name">Device name</string> <string name="use_docked_mode">Docked Mode</string> |
