2025-03-21 19:04:52 +00:00
# Launching External System
2025-03-21 12:34:42 +00:00
2025-03-21 19:04:52 +00:00
This experiment was initiated by the user **TopHatCat** and later expanded upon by the RetroDECK Team. **TopHatCat's** goal was to explore the possibility of launching games against external systems like Emulators from within RetroDECK (limited to the systems ES-DE supports).
2025-03-21 15:00:42 +00:00
2025-03-21 19:04:52 +00:00
**However, doing this defeats the entire purpose of RetroDECK**
2025-03-21 15:00:42 +00:00
2025-03-21 16:12:24 +00:00
You will not get any of the RetroDECK features for these systems, such as:
2025-03-21 15:28:26 +00:00
2025-03-21 16:12:24 +00:00
- Hotkeys
- Working Inputs
- Configurator
- Unified Folders
- Backups
2025-03-21 19:04:52 +00:00
- and everything else!
2025-03-21 16:12:24 +00:00
Essentially, you are creating an Anti-RetroDECK / Bizzaro-RetroDECK inside of RetroDECK.
>! Absolute Heresy!
Your system will be cluttered, and you will be bound by each emulator's defaults, which you will need to change to your liking.
2025-03-21 19:04:52 +00:00
**There is no good reason to launch external emulators via RetroDECK**
2025-03-21 16:12:24 +00:00
You can simply install ES-DE from their website and install the emulators as normal, running just ES-DE.
2025-03-21 15:28:26 +00:00
2025-03-21 19:04:52 +00:00
The files `es_find_rules.xml` `es_systems.xml` you are editing will also be overwritten when RetroDECK updates, so you will need to update them over the updates with your changes.
2025-03-21 12:34:42 +00:00
### Disclaimer on Experiments
These experiments are created by the RetroDECK Team and/or Community. The guides are intended for people with technical knowledge and a passion for tinkering. Using these guides *might* put RetroDECK and your data at risk. The RetroDECK Team can't provide any support for these experiments or fix any issues they might cause on your system or RetroDECK installation.
## Prerequisites
### Flatpak Spawn Permission
**Information:**
This experiment requires the `flatpak-spawn` permission, which breaks the sandbox environment that RetroDECK operates in. Therefore, we do not recommend attempting this unless you are confident in your understanding of the process and its implications.
You can enable it by running this command in the terminal.
```
flatpak override --user --talk-name=org.freedesktop.Flatpak net.retrodeck.retrodeck
```
### Add RetroDECK to Steam
2025-03-21 19:04:52 +00:00
We also recommend that you add RetroDECK to Steam to utilize Steam Input if you need to rebind the system hotkeys manually.
2025-03-21 12:34:42 +00:00
2025-03-21 15:00:42 +00:00
## Folder Structure
2025-03-21 12:34:42 +00:00
2025-03-21 15:00:42 +00:00
Depending how you installed RetroDECK the Flatpak paths are different.
2025-03-21 12:51:33 +00:00
2025-03-21 15:00:42 +00:00
You can either install it as a system or user application.
2025-03-21 12:51:33 +00:00
2025-03-21 19:04:52 +00:00
**Note:** If you have installed RetroDECK as a system application you will need increased privileges to edit the files.
2025-03-21 15:00:42 +00:00
| Type | Folder | Comment |
| :---: | :---: | :---: |
| **User Application:** ES-DE Linux Folder |`~/.local/share/flatpak/app/net.retrodeck.retrodeck/current/active/files/share/es-de/resources/systems/linux/` | `es_find_rules.xml` `es_systems.xml` |
| **System Application:** ES-DE Linux Folder |`/var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files/share/es-de/resources/systems/linux/` | `es_find_rules.xml` `es_systems.xml` |
2025-03-21 12:51:33 +00:00
2025-03-21 19:04:52 +00:00
## Requirement: Add the FLATPAKSPAWN System
2025-03-21 12:51:33 +00:00
2025-03-21 19:04:52 +00:00
**Edit the es_find_rules.xml**
2025-03-21 12:51:33 +00:00
2025-03-21 15:00:42 +00:00
1. Go to the ES-DE Linux Folder via the path above (depending how you installed RetroDECK).
2025-03-21 20:50:57 +00:00
2025-03-21 19:04:52 +00:00
2. Find and open `es_find_rules.xml` .
2025-03-21 20:50:57 +00:00
2025-03-21 19:04:52 +00:00
3. Edit `es_find_rules.xml` :
2025-03-21 15:26:09 +00:00
2025-03-21 19:04:52 +00:00
At the end of file but before </ ruleList > end add a new emulator `FLATPAKSPAWN` :
2025-03-21 15:26:09 +00:00
2025-03-21 19:04:52 +00:00
Copy & paste:
2025-03-21 12:51:33 +00:00
```
2025-03-21 15:26:09 +00:00
< emulator name = "FLATPAKSPAWN" >
2025-03-21 15:00:42 +00:00
< rule type = "systempath" >
< entry > flatpak-spawn< / entry >
< / rule >
2025-03-21 12:51:33 +00:00
< / emulator >
```
2025-03-21 19:04:52 +00:00
4. Save and close the file.
2025-03-21 20:18:07 +00:00
## How-to: Edit es_systems.xml file
2025-03-21 19:04:52 +00:00
2025-03-21 20:57:19 +00:00
### Step One: Open es_systems.xml
2025-03-21 19:04:52 +00:00
1. Go to the ES-DE Linux Folder via the path above (depending how you installed RetroDECK).
2025-03-21 20:50:57 +00:00
2025-03-21 19:04:52 +00:00
2. Find and open `es_systems.xml` .
2025-03-21 20:50:57 +00:00
2025-03-21 19:04:52 +00:00
3. Search for and find the system entry you want to add and external system to.
2025-03-21 20:18:07 +00:00
**Example:** GameCube
2025-03-21 12:51:33 +00:00
2025-03-21 15:26:09 +00:00
```
2025-03-21 20:18:07 +00:00
< system >
< name > gc< / name >
< fullname > Nintendo GameCube< / fullname >
< path > %ROMPATH%/gc< / path >
< extension > .ciso .CISO .dff .DFF .dol .DOL .elf .ELF .gcm .GCM .gcz .GCZ .iso .ISO .json .JSON .m3u .M3U .rvz .RVZ .tgc .TGC .wad .WAD .wbfs .WBFS .wia .WIA .7z .7Z .zip .ZIP< / extension >
< command label = "Dolphin (Standalone)" > %INJECT%=%BASENAME%.esprefix %EMULATOR_DOLPHIN% -b -e %ROM%< / command >
< command label = "Dolphin" > %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dolphin_libretro.so %ROM%< / command >
< command label = "PrimeHack (Standalone)" > %INJECT%=%BASENAME%.esprefix %EMULATOR_PRIMEHACK% -b -e %ROM%< / command >
<!-- <command label="Triforce (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_TRIFORCE% - b - e %ROM%</command> -->
< platform > gc< / platform >
< theme > gc< / theme >
< / system >
2025-03-21 15:26:09 +00:00
```
2025-03-21 12:51:33 +00:00
2025-03-21 20:57:19 +00:00
### Step Two: Modify es_systems.xml
1. Copy and paste one of < command label = > entries and add one or more additional entries .
2025-03-21 12:51:33 +00:00
2025-03-21 20:57:19 +00:00
2. **Modify the command labels values:**
2025-03-21 12:51:33 +00:00
2025-03-21 20:18:07 +00:00
- Point it towards the `%EMULATOR_FLATPAKSPAWN% --host` system.
2025-03-21 20:57:19 +00:00
- Add the real path of the external emulator (check the .desktop files on your system to see where they are pointing).
2025-03-21 20:18:07 +00:00
- Change the label="" so it ends with (External) or any other name you want.
2025-03-21 20:57:19 +00:00
**Examples and results:**
2025-03-21 20:18:07 +00:00
2025-03-21 20:57:19 +00:00
#### Dolphin (Native Application)
2025-03-21 20:18:07 +00:00
2025-03-21 20:36:15 +00:00
`<command label="Dolphin (External Native)"> %EMULATOR_HOST% --host /usr/bin/dolphin-emu -b -e %ROM% </command>`
2025-03-21 20:18:07 +00:00
2025-03-21 20:57:19 +00:00
#### Dolphin (Flatpak Application)
2025-03-21 20:18:07 +00:00
2025-03-21 20:36:15 +00:00
`<command label="Dolphin (External Flatpak)"> %EMULATOR_HOST% --host flatpak run --branch=stable --arch=x86_64 --command=/app/bin/dolphin-emu-wrapper org.DolphinEmu.dolphin-emu -b -e %ROM% </command>`
2025-03-21 20:18:07 +00:00
2025-03-21 20:57:19 +00:00
#### Combined Results
2025-03-21 12:51:33 +00:00
2025-03-21 15:26:09 +00:00
```
< system >
2025-03-21 20:18:07 +00:00
< name > gc< / name >
< fullname > Nintendo GameCube< / fullname >
< path > %ROMPATH%/gc< / path >
< extension > .ciso .CISO .dff .DFF .dol .DOL .elf .ELF .gcm .GCM .gcz .GCZ .iso .ISO .json .JSON .m3u .M3U .rvz .RVZ .tgc .TGC .wad .WAD .wbfs .WBFS .wia .WIA .7z .7Z .zip .ZIP< / extension >
< command label = "Dolphin (Standalone)" > %INJECT%=%BASENAME%.esprefix %EMULATOR_DOLPHIN% -b -e %ROM%< / command >
< command label = "Dolphin" > %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dolphin_libretro.so %ROM%< / command >
< command label = "PrimeHack (Standalone)" > %INJECT%=%BASENAME%.esprefix %EMULATOR_PRIMEHACK% -b -e %ROM%< / command >
< command label = "Dolphin (External Flatpak)" > %EMULATOR_HOST% --host flatpak run --branch=stable --arch=x86_64 --command=/app/bin/dolphin-emu-wrapper org.DolphinEmu.dolphin-emu -b -e %ROM% < / command >
< command label = "Dolphin (External Native)" > %EMULATOR_HOST% --host /usr/bin/dolphin-emu -b -e %ROM% < / command >
<!-- <command label="Triforce (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_TRIFORCE% - b - e %ROM%</command> -->
< platform > gc< / platform >
< theme > gc< / theme >
2025-03-21 15:26:09 +00:00
< / system >
```
2025-03-21 20:57:19 +00:00
### Step Three: Save and Launch
2025-03-21 20:50:57 +00:00
2025-03-21 20:57:19 +00:00
**Note:** If you make an error, close RetroDECK before editing the `es_find_rules.xml` or `es_systems.xml` files. Save the files and relaunch RetroDECK, as the files are loaded when the application starts.
2025-03-21 20:21:25 +00:00
2025-03-21 20:57:19 +00:00
1. Save the file and launch RetroDECK.
2025-03-21 20:50:57 +00:00
2025-03-21 20:57:19 +00:00
2. Set the alternative emulators to one of your new entries. They should appear in the Alternative Emulators Menu for each game or system.
3. If everything is correct, the game should launch with the External System.
2025-03-21 20:21:25 +00:00