From 051133787e77a154c83fcf54c7acc83b76fe7d81 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 7 Feb 2026 11:03:11 +0100 Subject: [PATCH] Android: Add Triforce Baseboard This lets users select Triforce Baseboard for SI and SP1. Limitations: * The test, service and coin buttons can be bound to gamepads and other physical inputs, but aren't available in the touch input overlay. * The IP redirections are exposed to the user as a raw string rather than a table like in DolphinQt. --- .../features/settings/model/StringSetting.kt | 6 ++++++ .../settings/ui/SettingsFragmentPresenter.kt | 14 ++++++++++++-- .../dolphinemu/dolphinemu/overlay/InputOverlay.kt | 8 ++++++-- Source/Android/app/src/main/res/values/arrays.xml | 4 ++++ Source/Android/app/src/main/res/values/strings.xml | 3 +++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt index 29640aa92f..c4f1107bcd 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt @@ -69,6 +69,12 @@ enum class StringSetting( "" ), MAIN_WFS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WFSPath", ""), + MAIN_TRIFORCE_IP_REDIRECTIONS( + Settings.FILE_DOLPHIN, + Settings.SECTION_INI_CORE, + "TriforceIPRedirections", + "0.0.0.0/0=127.0.0.1" + ), GFX_ENHANCE_POST_SHADER( Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index 714ec84f9f..1f68bbbd1a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -1276,7 +1276,17 @@ class SettingsFragmentPresenter( } private fun addSerialPortSubSettings(sl: ArrayList, serialPort1Type: Int) { - if (serialPort1Type == 10) { + if (serialPort1Type == 6) { + // Triforce Baseboard + sl.add( + InputStringSetting( + context, + StringSetting.MAIN_TRIFORCE_IP_REDIRECTIONS, + R.string.triforce_ip_redirections, + 0 + ) + ) + } else if (serialPort1Type == 10) { // Broadband Adapter (XLink Kai) sl.add(HyperLinkHeaderSetting(context, R.string.xlink_kai_guide_header, 0)) sl.add( @@ -2352,7 +2362,7 @@ class SettingsFragmentPresenter( private fun addGcPadSubSettings(sl: ArrayList, gcPadNumber: Int, gcPadType: Int) { when (gcPadType) { - 6, 8, 9, 10 -> { + 6, 8, 9, 10, 11 -> { // Emulated val gcPad = EmulatedController.getGcPad(gcPadNumber) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt index 7964cc1ebc..3d991fed1e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.kt @@ -2285,6 +2285,7 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex const val OVERLAY_NONE = 5 private const val DISABLED_GAMECUBE_CONTROLLER = 0 private const val EMULATED_GAMECUBE_CONTROLLER = 6 + private const val EMULATED_AM_BASEBOARD = 11 private const val GAMECUBE_ADAPTER = 12 // Buttons that have special positions in Wiimote only @@ -2337,8 +2338,11 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex if (controllerIndex in 0 until 4) { // GameCube controller - if (getSettingForSIDevice(controllerIndex).int == 6) - return OVERLAY_GAMECUBE + when (getSettingForSIDevice(controllerIndex).int) { + EMULATED_GAMECUBE_CONTROLLER, EMULATED_AM_BASEBOARD -> { + return OVERLAY_GAMECUBE + } + } } else if (controllerIndex in 4 until 8) { // Wii Remote val wiimoteIndex = controllerIndex - 4 diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 8892f7f218..d919edb1d2 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -105,6 +105,7 @@ @string/broadband_adapter_hle @string/broadband_adapter_tapserver @string/modem_adapter_tapserver + @string/sp1_am_baseboard 255 @@ -113,6 +114,7 @@ 12 11 13 + 6 @@ -375,6 +377,7 @@ @string/gcpad_steering_wheel @string/gcpad_dance_mat @string/gcpad_taru_konga + @string/gcpad_am_baseboard @string/gcpad_gc_adapter @@ -384,6 +387,7 @@ 8 9 10 + 11 12 diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index b1630def81..855cb56ab8 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -142,6 +142,7 @@ Enter the socket path or netloc (address:port) of the tapserver instance DNS Server Use 8.8.8.8 for normal DNS, else enter your custom one + IP Redirections Interface @@ -707,6 +708,7 @@ It can efficiently compress both junk data and encrypted Wii data. Broadband Adapter (HLE) Broadband Adapter (tapserver) Modem Adapter (tapserver) + Triforce Baseboard Mono @@ -811,6 +813,7 @@ It can efficiently compress both junk data and encrypted Wii data. Steering Wheel Dance Mat DK Bongos + Triforce Baseboard GameCube Adapter