From 7164a2187c66fce3598cc1022c0e94c5ef5286e8 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 18 Apr 2024 15:34:17 +0900 Subject: [PATCH 01/72] SRM: adding Steam ROM Manager --- net.retrodeck.retrodeck.yml | 45 ++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 3ae6508c..079b7487 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -4,7 +4,7 @@ runtime-version: "6.5" sdk: org.kde.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.llvm16 # Needed for RPCS3 (llvm17 actually) - - org.freedesktop.Sdk.Extension.rust-stable # Needed for BoilR + - org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager command: retrodeck.sh finish-args: @@ -49,6 +49,7 @@ cleanup: - /bin/zstd* - /lib/pkg-config - /share/doc + - /share/gtk-doc # Steam ROM Manager - /share/man - /src - '*.a' @@ -449,6 +450,48 @@ modules: # External manifests start + # Steam ROM Manager - START + + - name: zypak + sources: + - type: git + url: https://github.com/refi64/zypak + tag: v2022.03 + commit: 8424c6bcf909ca2031ebc6537d324bb64772266e + + - name: steam-rom-manager + buildsystem: simple + env: + IN_FLATPAK: 1 + build-commands: + - install -D run.sh ${FLATPAK_DEST}/bin/steam-rom-manager + - cp /usr/bin/ar ${FLATPAK_DEST}/bin + - ar x srm.deb + - tar xf data.tar.xz + - mv "opt/Steam ROM Manager" "${FLATPAK_DEST}/srm" + - rm -rf "usr/share/icons/hicolor/1024x1024" + - cd usr; find share/icons/hicolor -type f -exec install -Dm644 "{}" + "${FLATPAK_DEST}/{}" \; + - rm -r srm.deb control.tar.* data.tar.xz debian-binary usr opt + sources: + - type: script + dest-filename: run.sh + commands: + - ${FLATPAK_DEST}/bin/zypak-wrapper.sh ${FLATPAK_DEST}/srm/steam-rom-manager + - type: file + dest-filename: srm.deb + url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.4.19/steam-rom-manager_2.4.19_amd64.deb + sha256: aa4f121d50612801c30b9365e05cb92a3b4a9c402974fee2b88652de8d731b0e + x-checker-data: + type: json + url: https://api.github.com/repos/SteamGridDB/steam-rom-manager/releases/latest + url-query: >- + .assets[] | select(.name=="steam-rom-manager_" + $version + + "_amd64.deb") | .browser_download_url + version-query: .tag_name | sub("^v"; "") + + # Steam ROM Manager - END + # RetroArch - START # https://github.com/flathub/org.libretro.RetroArch From c1b9fc3813842a7b045fb59e53ba4e699dfed459 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 18 Apr 2024 15:40:22 +0900 Subject: [PATCH 02/72] SRM: adding electron base --- net.retrodeck.retrodeck.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 079b7487..e54de2b3 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -2,9 +2,10 @@ app-id: net.retrodeck.retrodeck runtime: org.kde.Platform runtime-version: "6.5" sdk: org.kde.Sdk +base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager +base-version: "22.08" sdk-extensions: - org.freedesktop.Sdk.Extension.llvm16 # Needed for RPCS3 (llvm17 actually) - - org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager command: retrodeck.sh finish-args: From 74158eb8a3ba581d4cd50f8fa9fbf293867b528b Mon Sep 17 00:00:00 2001 From: Lx32 Date: Thu, 18 Apr 2024 17:55:16 +0200 Subject: [PATCH 03/72] Fixed SRM Fixed launching script of SRM --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index e54de2b3..780b0ee2 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -478,7 +478,7 @@ modules: - type: script dest-filename: run.sh commands: - - ${FLATPAK_DEST}/bin/zypak-wrapper.sh ${FLATPAK_DEST}/srm/steam-rom-manager + - /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager - type: file dest-filename: srm.deb url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.4.19/steam-rom-manager_2.4.19_amd64.deb From 34d337201d8ef208d9e46050f7125ae8d6482efa Mon Sep 17 00:00:00 2001 From: Lx32 Date: Fri, 19 Apr 2024 18:41:57 +0200 Subject: [PATCH 04/72] Updated for srm --- functions/steam-sync/steam-sync.py | 82 +++++++----------------------- 1 file changed, 19 insertions(+), 63 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 11b078b2..1ba3410a 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -272,8 +272,7 @@ exit_file="/tmp/retrodeck_steam_sync_exit" rdhome="" roms_folder="" -def create_shortcut_new(games): - changes=0 +def create_shortcut_new_new(games): old_games=os.listdir(rdhome+"/.sync/") for game in games: @@ -282,34 +281,11 @@ def create_shortcut_new(games): old_games[i]=0 except ValueError: print(game[0]+" is a new game!") - changes=1 - path=rdhome+"/.sync/"+game[0] + path=rdhome+"/.sync/"+game[0]+".sh" print("Go to path: "+path) - if not os.path.exists(path): - os.makedirs(path) - fl=open(path+"/goggame-0.info","w") - fl.write('{\n') - fl.write(' "buildId": "",\n') - fl.write(' "clientId": "",\n') - fl.write(' "gameId": "",\n') - fl.write(' "name": "'+game[0]+'",\n') - fl.write(' "playTasks": [\n') - fl.write(' {\n') - fl.write(' "category": "launcher",\n') - fl.write(' "isPrimary": true,\n') - fl.write(' "languages": [\n') - fl.write(' "en-US"\n') - fl.write(' ],\n') - fl.write(' "name": "'+game[0]+'",\n') - fl.write(' "path": "launch.sh",\n') - fl.write(' "type": "FileTask"\n') - fl.write(' }\n') - fl.write(' ]\n') - fl.write('}\n') - fl.close() - fl=open(path+"/launch.sh","w") + fl=open(path,"w") fl.write("#!/bin/bash\n\n") fl.write('if test "$(whereis flatpak)" = "flatpak:"\n') fl.write("then\n") @@ -319,18 +295,16 @@ def create_shortcut_new(games): fl.write("fi\n") fl.close() - st=os.stat(path+"/launch.sh") - os.chmod(path+"/launch.sh", st.st_mode | 0o0111) + st=os.stat(path) + os.chmod(path, st.st_mode | 0o0111) print("Start removing") print(old_games) for game in old_games: if game: - shutil.rmtree(rdhome+"/.sync/"+game) - changes=1 + os.remove(rdhome+"/.sync/"+game) - if changes: - os.system("boilr --no-ui") + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager add") def addToSteam(systems): games=[] @@ -382,7 +356,7 @@ def addToSteam(systems): games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"]) print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'") if not games==[]: - create_shortcut_new(games) + create_shortcut_new_new(games) def start_config(): global rdhome @@ -410,47 +384,29 @@ def start_config(): if not os.path.exists(rdhome+"/.sync/"): os.makedirs(rdhome+"/.sync/") - boilr_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/boilr/config.toml") - if os.path.isfile(boilr_path): - with open(boilr_path,"r") as f: + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") + srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") + if os.path.isfile(srm_path): + with open(srm_path,"r") as f: data=f.read() - data=re.sub("\"games_folder.*","games_folder = "+rdhome+"/.sync/\"",data) - with open(boilr_path,"w") as f: + data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) + data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) + with open(srm_path,"w") as f: f.write(data) else: - print("Error! BoilR config not initialized.") + print("Error! Steam Rom Manager config not initialized.") + exit(1) if __name__=="__main__": start_config() - - new_hash={} - for system in os.listdir(rdhome+"/gamelists/"): - new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() + exit(1) running=True while running: - time.sleep(30) - systems=[] - - for system in os.listdir(rdhome+"/gamelists/"): - if not system in systems: - if system in new_hash.keys(): - old_hash=new_hash[system] - new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() - if not new_hash[system] == old_hash: - print("System {} changed!".format(system)) - systems.append(system) - else: - print("System {} not changed!".format(system)) - else: - new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() - print("System {} added!".format(system)) - systems.append(system) - if os.path.isfile(exit_file): running=False os.remove(exit_file) - addToSteam(systems) + addToSteam(os.listdir(rdhome+"/gamelists/")) print("Finish!") From cd7da1294d070542f5f607ebe6f9714324c9e6dd Mon Sep 17 00:00:00 2001 From: Lx32 Date: Fri, 19 Apr 2024 18:42:53 +0200 Subject: [PATCH 05/72] Standard config for srm --- functions/steam-sync/userConfigurations.json | 81 ++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 functions/steam-sync/userConfigurations.json diff --git a/functions/steam-sync/userConfigurations.json b/functions/steam-sync/userConfigurations.json new file mode 100644 index 00000000..2315846d --- /dev/null +++ b/functions/steam-sync/userConfigurations.json @@ -0,0 +1,81 @@ +[ + { + "parserType": "Glob", + "configTitle": "Shortcuts", + "steamDirectory": "", + "steamCategory": "${RetroDECK}", + "romDirectory": "", + "executableArgs": "", + "executableModifier": "\"${exePath}\"", + "startInDirectory": "", + "titleModifier": "${fuzzyTitle}", + "fetchControllerTemplatesButton": null, + "removeControllersButton": null, + "imageProviders": [ + "SteamGridDB" + ], + "onlineImageQueries": "${${fuzzyTitle}}", + "imagePool": "${fuzzyTitle}", + "userAccounts": { + "specifiedAccounts": "" + }, + "executable": { + "path": "", + "shortcutPassthrough": false, + "appendArgsToExecutable": true + }, + "parserInputs": { + "glob": "${title}@(.sh)" + }, + "titleFromVariable": { + "limitToGroups": "", + "caseInsensitiveVariables": false, + "skipFileIfVariableWasNotFound": false, + "tryToMatchTitle": false + }, + "fuzzyMatch": { + "replaceDiacritics": true, + "removeCharacters": true, + "removeBrackets": true + }, + "controllers": { + "ps4": null, + "ps5": null, + "xbox360": null, + "xboxone": null, + "switch_joycon_left": null, + "switch_joycon_right": null, + "switch_pro": null, + "neptune": null + }, + "imageProviderAPIs": { + "SteamGridDB": { + "nsfw": false, + "humor": false, + "styles": [], + "stylesHero": [], + "stylesLogo": [], + "stylesIcon": [], + "imageMotionTypes": [ + "static" + ] + } + }, + "defaultImage": { + "tall": "", + "long": "", + "hero": "", + "logo": "", + "icon": "" + }, + "localImages": { + "tall": "", + "long": "", + "hero": "", + "logo": "", + "icon": "" + }, + "parserId": "171345715969886866", + "version": 15 + } +] From 2c59cc18cdde723563759a9b3c1a6598e11768c8 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Fri, 19 Apr 2024 19:04:42 +0200 Subject: [PATCH 06/72] Update with srm in place of boilr --- functions/prepare_component.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index a47e5fd2..3f9ce804 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -821,16 +821,17 @@ prepare_component() { sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON fi - if [[ "$component" =~ ^(boilr|BOILR|all)$ ]]; then + if [[ "$component" =~ ^(steam rom manager|STEAM ROM MANAGER|all)$ ]]; then log i "----------------------" - log i "Prepearing BOILR" + log i "Prepearing STEAM ROM MANAGER" log i "----------------------" - create_dir "/var/config/boilr" - cp -fvr "/app/libexec/steam-sync/config.toml" "/var/config/boilr" + create_dir "/var/config/steam-rom-manager" + create_dir "/var/config/steam-rom-manager/userData" + cp -fvr "/app/libexec/steam-sync/userConfigurations.json" "/var/config/steam-rom-manager/userData" fi - if [[ ! "$component" =~ ^(retrodeck|es-de|ES-DE|retroarch|RetroArch|citra|citra-emu|Citra|cemu|Cemu|dolphin|dolphin-emu|Dolphin|duckstation|Duckstation|melonds|melonDS|MelonDS|pcsx2|PCSX2|pico8|pico-8|ppsspp|PPSSPP|primehack|Primehack|rpcs3|RPCS3|ryujinx|Ryujinx|yuzu|Yuzu|xemu|XEMU|vita3k|Vita3K|mame|MAME|gzdoom|GZDOOM|boilr|BOILR|)$ ]]; then + if [[ ! "$component" =~ ^(retrodeck|es-de|ES-DE|retroarch|RetroArch|citra|citra-emu|Citra|cemu|Cemu|dolphin|dolphin-emu|Dolphin|duckstation|Duckstation|melonds|melonDS|MelonDS|pcsx2|PCSX2|pico8|pico-8|ppsspp|PPSSPP|primehack|Primehack|rpcs3|RPCS3|ryujinx|Ryujinx|yuzu|Yuzu|xemu|XEMU|vita3k|Vita3K|mame|MAME|gzdoom|GZDOOM|steam rom manager|STEAM ROM MANAGER|)$ ]]; then log e "Supplied component $component not found, not resetting" fi From 884a16b06f2d24ab0ffd58c5d08f3ec0a44540bd Mon Sep 17 00:00:00 2001 From: Lx32 Date: Fri, 19 Apr 2024 19:05:54 +0200 Subject: [PATCH 07/72] Update with srm in place of boilr --- tools/configurator.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/configurator.sh b/tools/configurator.sh index e00747f5..ea63de25 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -1194,13 +1194,13 @@ configurator_reset_dialog() { --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --text="Which component do you want to reset to default?" \ --column="Component" --column="Action" \ - "BoilR" "Reset BoilR that manages the sync and scraping toward Steam library" \ + "Steam Rom Manager" "Reset SRM that manages the sync and scraping toward Steam library" \ "ES-DE" "Reset the ES-DE frontend" \ ) # TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU" case $component_to_reset in - "BoilR" | "ES-DE" ) # TODO: GyroDSU + "Steam Rom Manager" | "ES-DE" ) # TODO: GyroDSU if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset $component_to_reset to default settings?\n\nThis process cannot be undone.") == "true" ]]; then prepare_component "reset" "$component_to_reset" "configurator" configurator_process_complete_dialog "resetting $component_to_reset" From 52845b9b4477b2af02aed8f1311d97e9e0a5637c Mon Sep 17 00:00:00 2001 From: Lx32 Date: Fri, 19 Apr 2024 19:06:58 +0200 Subject: [PATCH 08/72] Added steam-sync option --- emu-configs/defaults/retrodeck/retrodeck.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/emu-configs/defaults/retrodeck/retrodeck.cfg b/emu-configs/defaults/retrodeck/retrodeck.cfg index 4056cc07..b7fa8bc4 100644 --- a/emu-configs/defaults/retrodeck/retrodeck.cfg +++ b/emu-configs/defaults/retrodeck/retrodeck.cfg @@ -30,6 +30,7 @@ default_user= developer_options=false kiroi_ponzu=false akai_ponzu=false +steam_sync=false [cheevos] duckstation=false From fb1fcbc81b4e213e1bf3be1b16a1a0117b294af4 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 20 Apr 2024 21:27:40 +0900 Subject: [PATCH 09/72] PREPARE_COMPONENTS: removing spaces from steam rom manager --- functions/prepare_component.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index abf00ecb..6214f9c3 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -822,7 +822,7 @@ prepare_component() { sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON fi - if [[ "$component" =~ ^(steam rom manager|all)$ ]]; then + if [[ "$component" =~ ^(steam_rom_manager|all)$ ]]; then log i "----------------------" log i "Prepearing STEAM ROM MANAGER" log i "----------------------" @@ -832,7 +832,7 @@ prepare_component() { cp -fvr "/app/libexec/steam-sync/userConfigurations.json" "/var/config/steam-rom-manager/userData" fi - if [[ ! "$component" =~ ^(retrodeck|es-de|retroarch|citra|citra-emu|cemu|dolphin|dolphin-emu|duckstation|melonds|melonDS|pcsx2|pico8|pico-8|ppsspp|primehack|rpcs3|ryujinx|yuzu|xemu|vita3k|mame|gzdoom|steam rom manager|)$ ]]; then + if [[ ! "$component" =~ ^(retrodeck|es-de|retroarch|citra|citra-emu|cemu|dolphin|dolphin-emu|duckstation|melonds|melonDS|pcsx2|pico8|pico-8|ppsspp|primehack|rpcs3|ryujinx|yuzu|xemu|vita3k|mame|gzdoom|steam_rom_manager|)$ ]]; then log e "Supplied component $component not found, not resetting" fi From 2843e69038e223a980f8bb2f23a213d73edf44ed Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 20 Apr 2024 21:39:53 +0900 Subject: [PATCH 10/72] SRM: adding it ot reset cli, boilr cleanup --- net.retrodeck.retrodeck.yml | 2 +- retrodeck.sh | 4 ++-- tools/configurator.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 9fd44b22..bbe250db 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -31,7 +31,7 @@ finish-args: - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.retrodeck # XEMU - Fixes issues with openSUSE systems, QEMU_AUDIO_DRV is defined as "pa" causing xemu to not launch - --unset-env=QEMU_AUDIO_DRV - # BoilR + # Steam Rom Manager - --filesystem=xdg-data/Steam:rw #Steam (flatpak) - --filesystem=~/.steam:rw # Steam (Non-flatpak) - --filesystem=~/.var/app/com.valvesoftware.Steam:rw # Steam (Flatpak) diff --git a/retrodeck.sh b/retrodeck.sh index 03974e92..dc16dcdc 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -56,10 +56,10 @@ https://retrodeck.net ;; --reset-component*) echo "You are about to reset one or more RetroDECK components or emulators." - echo "Available options are: es-de, retroarch, cemu, dolphin, duckstation, gzdoom, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, ryujinx, xemu, vita3k, mame, boilr, all" + echo "Available options are: es-de, retroarch, cemu, dolphin, duckstation, gzdoom, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, ryujinx, steam_rom_manager, xemu, vita3k, mame, all" read -p "Please enter the component you would like to reset: " component component=$(echo "$component" | tr '[:upper:]' '[:lower:]') - if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|xemu|all)$ ]]; then + if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|steam_rom_manager|rpcs3|xemu|all)$ ]]; then read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response if [[ $response == [yY] ]]; then prepare_component "reset" "$component" "cli" diff --git a/tools/configurator.sh b/tools/configurator.sh index ea63de25..c5f3c07e 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -1310,7 +1310,7 @@ configurator_add_steam() { zenity --question \ --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ - --text="Steam syncronization is current disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam thanks to BoilR.\nRemember to restart Steam each time to see the changes.\n" + --text="Steam syncronization is current disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam Rom Manager.\nRemember to restart Steam each time to see the changes.\n" if [ $? == 0 ] then From ecd6cb15b3b9556b51becb882dbf81b99816d7ce Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 20 Apr 2024 21:44:10 +0900 Subject: [PATCH 11/72] SRM: boilr cleanup [skip ci] --- functions/steam-sync/config.toml | 61 -------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 functions/steam-sync/config.toml diff --git a/functions/steam-sync/config.toml b/functions/steam-sync/config.toml deleted file mode 100644 index 0bdd0e25..00000000 --- a/functions/steam-sync/config.toml +++ /dev/null @@ -1,61 +0,0 @@ -debug = false -config_version = 1 -blacklisted_games = [] -boilr_tag = "retrodeck" - -[steamgrid_db] -enabled = true -prefer_animated = false -banned_images = [] -only_download_boilr_images = false -allow_nsfw = false - -[steam] -create_collections = false -optimize_for_big_picture = false -stop_steam = false -start_steam = false - -[bottles] -enabled = false - -[epic_games] -enabled = false -safe_launch = [] - -[flatpak] -enabled = false - -[gog] -enabled = false -create_symlinks = true - -[heroic] -enabled = false -launch_games_through_heroic = [] -default_launch_through_heroic = true - -[itch] -enabled = false -create_symlinks = true - -[legendary] -enabled = false - -[lutris] -enabled = false -executable = "lutris" -flatpak = true -flatpak_image = "net.lutris.Lutris" -installed = true - -[origin] -enabled = false - -[uplay] -enabled = false - -[minigalaxy] -enabled = true -create_symlinks = false -games_folder = "/var/config/boilr/sync/" From 8bc061f91cdcc2629772c2b0ef6389c0f8ace169 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Sun, 21 Apr 2024 15:22:44 +0200 Subject: [PATCH 12/72] Update and fixed script --- functions/steam-sync/steam-sync.py | 31 +++++++++++------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 1ba3410a..b2ebf90c 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -273,7 +273,7 @@ rdhome="" roms_folder="" def create_shortcut_new_new(games): - old_games=os.listdir(rdhome+"/.sync/") + old_games=os.listdir(rdhome+"/.sync/").copy() for game in games: try: @@ -386,27 +386,18 @@ def start_config(): os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") - if os.path.isfile(srm_path): - with open(srm_path,"r") as f: - data=f.read() - data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) - data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) - with open(srm_path,"w") as f: - f.write(data) - else: - print("Error! Steam Rom Manager config not initialized.") - exit(1) + if not os.path.isfile(srm_path): + print("Steam Rom Manager configuration not initialized! Initializing now.") + shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) + + with open(srm_path,"r") as f: + data=f.read() + data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) + data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) + with open(srm_path,"w") as f: + f.write(data) if __name__=="__main__": start_config() - exit(1) - - running=True - - while running: - if os.path.isfile(exit_file): - running=False - os.remove(exit_file) - addToSteam(os.listdir(rdhome+"/gamelists/")) print("Finish!") From c38233aecb38bd2f736dc55c424782cf2386107a Mon Sep 17 00:00:00 2001 From: Lx32 Date: Sun, 21 Apr 2024 15:23:37 +0200 Subject: [PATCH 13/72] Modified steam sync works --- retrodeck.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/retrodeck.sh b/retrodeck.sh index dc16dcdc..15881a0d 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -191,12 +191,8 @@ fi # Normal Startup -if [[ $steam_sync == "true" ]]; then - python3 /app/libexec/steam-sync/steam-sync.py & -fi - start_retrodeck if [[ $steam_sync == "true" ]]; then - touch /tmp/retrodeck_steam_sync_exit + python3 /app/libexec/steam-sync/steam-sync.py fi From c910621cff334263d580bc50bf18183d05d95647 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Sun, 21 Apr 2024 15:32:22 +0200 Subject: [PATCH 14/72] Update configurator.sh --- tools/configurator.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/configurator.sh b/tools/configurator.sh index c5f3c07e..67a99440 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -1326,13 +1326,12 @@ enable_steam_sync() { zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ - --text="Steam syncronization enabled, restart RetroDECK to get effect." + --text="Steam syncronization enabled." configurator_welcome_dialog } disable_steam_sync() { set_setting_value $rd_conf "steam_sync" "false" retrodeck "options" - touch /tmp/retrodeck_steam_sync_exit configurator_welcome_dialog } From dd132dd945ef4eb4e5cc147825c6d8eb0c6d65bb Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 22 Apr 2024 13:40:16 +0900 Subject: [PATCH 15/72] STEAM_SYNC: fixing gameslist location --- functions/steam-sync/steam-sync.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index b2ebf90c..3c49619c 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -311,7 +311,7 @@ def addToSteam(systems): for system in systems: print("Start parsing system: {}".format(system)) - f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r") + f=open(rdhome+"/ES-DE/gamelists/"+system+"/gamelist.xml","r") f.readline() parser=ET.XMLParser() parser.feed(b'') From 0a810e4f8e24ce2bb5ad45db54f3b5933fbf39c6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Mon, 22 Apr 2024 22:42:37 +0900 Subject: [PATCH 16/72] SRM: fixed path, whoops --- functions/steam-sync/steam-sync.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 3c49619c..7f74243c 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -399,5 +399,5 @@ def start_config(): if __name__=="__main__": start_config() - addToSteam(os.listdir(rdhome+"/gamelists/")) - print("Finish!") + addToSteam(os.listdir(rdhome+"/ES-DE/gamelists/")) + print("Finished!") From 46668df052901f61017d47b5b4005e5e1a6fe3f6 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 8 May 2024 23:25:00 +0200 Subject: [PATCH 17/72] Added file for resetting the configuration --- functions/steam-sync/resetsync.py | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 functions/steam-sync/resetsync.py diff --git a/functions/steam-sync/resetsync.py b/functions/steam-sync/resetsync.py new file mode 100644 index 00000000..6e9eecd6 --- /dev/null +++ b/functions/steam-sync/resetsync.py @@ -0,0 +1,34 @@ +import os +import shutil +import re + +def resetfun(rdhome): + if not os.path.exists(rdhome+"/.sync/"): + os.makedirs(rdhome+"/.sync/") + + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") + srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") + if not os.path.isfile(srm_path): + print("Steam Rom Manager configuration not initialized! Initializing now.") + shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) + + with open(srm_path,"r") as f: + data=f.read() + data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) + data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) + with open(srm_path,"w") as f: + f.write(data) + +if __name__=="__main__": + rdhome="" + + print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) + + fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") + lines=fl.readlines() + for line in lines: + if "rdhome" in line: + rdhome=line[7:-1] + fl.close() + + resetfun(rdhome) From 4b93767cae8c057f4db18f58aab0c8f03f003bc9 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 8 May 2024 23:26:12 +0200 Subject: [PATCH 18/72] Modified with external reset function --- functions/steam-sync/steam-sync.py | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 7f74243c..98dd6198 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -11,6 +11,8 @@ import hashlib import xml.etree.ElementTree as ET +from resetsync import resetfun + command_list_default={ "3do": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so", "amiga": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", @@ -364,9 +366,6 @@ def start_config(): global command_list_default global alt_command_list - if os.path.isfile(exit_file): - os.remove(exit_file) - print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") @@ -381,21 +380,10 @@ def start_config(): command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8") alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8") - if not os.path.exists(rdhome+"/.sync/"): - os.makedirs(rdhome+"/.sync/") - - os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") if not os.path.isfile(srm_path): print("Steam Rom Manager configuration not initialized! Initializing now.") - shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) - - with open(srm_path,"r") as f: - data=f.read() - data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) - data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) - with open(srm_path,"w") as f: - f.write(data) + resetfun(rdhome) if __name__=="__main__": start_config() From f23d07ddea7ddfbcc62398a23f1694d9304df2fd Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 8 May 2024 23:27:05 +0200 Subject: [PATCH 19/72] Modified with external reset function --- functions/prepare_component.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 6214f9c3..78d5cee3 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -826,10 +826,8 @@ prepare_component() { log i "----------------------" log i "Prepearing STEAM ROM MANAGER" log i "----------------------" - - create_dir "/var/config/steam-rom-manager" - create_dir "/var/config/steam-rom-manager/userData" - cp -fvr "/app/libexec/steam-sync/userConfigurations.json" "/var/config/steam-rom-manager/userData" + + python3 /app/libexec/steam-sync/resetsync.py fi if [[ ! "$component" =~ ^(retrodeck|es-de|retroarch|citra|citra-emu|cemu|dolphin|dolphin-emu|duckstation|melonds|melonDS|pcsx2|pico8|pico-8|ppsspp|primehack|rpcs3|ryujinx|yuzu|xemu|vita3k|mame|gzdoom|steam_rom_manager|)$ ]]; then From 49ad2c71c31beeb8ace6b7b2c8399e45903ad812 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 8 May 2024 23:27:45 +0200 Subject: [PATCH 20/72] Added msgbox during fav sync --- retrodeck.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/retrodeck.sh b/retrodeck.sh index e1b00938..8a8e8e6d 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -194,5 +194,16 @@ fi start_retrodeck if [[ $steam_sync == "true" ]]; then + ( python3 /app/libexec/steam-sync/steam-sync.py + ) | + zenity --progress \ + --title="Synching with Steam" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --text="Synching favorite game with Steam, please wait." \ + --percentage=25 \ + --pulsate \ + --auto-close \ + --auto-kill + fi From 74c681fbe7d2764609de81600b908e698ddb4e63 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 12 May 2024 08:12:25 +0200 Subject: [PATCH 21/72] STEAM_SYNC: fixed some texts --- retrodeck.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/retrodeck.sh b/retrodeck.sh index 407035c5..92ccd025 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -192,9 +192,9 @@ if [[ $steam_sync == "true" ]]; then python3 /app/libexec/steam-sync/steam-sync.py ) | zenity --progress \ - --title="Synching with Steam" \ + --title="Syncing with Steam" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --text="Synching favorite game with Steam, please wait." \ + --text="Syncing favorite games with Steam, please wait." \ --percentage=25 \ --pulsate \ --auto-close \ From 864afe504074b8d09c7cfcdfcda797e52aa19e5c Mon Sep 17 00:00:00 2001 From: Lx32 Date: Mon, 29 Jul 2024 22:03:29 +0200 Subject: [PATCH 22/72] Modified if for remove everything if no favorite games --- functions/steam-sync/steam-sync.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 98dd6198..84e89a88 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -357,8 +357,7 @@ def addToSteam(systems): else: games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"]) print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'") - if not games==[]: - create_shortcut_new_new(games) + create_shortcut_new_new(games) def start_config(): global rdhome From 91bf85d7d54baac88cc6df4ffea60056770868ab Mon Sep 17 00:00:00 2001 From: Lx32 Date: Tue, 27 Aug 2024 21:54:26 +0200 Subject: [PATCH 23/72] Fixed removing the games when no favs --- functions/steam-sync/steam-sync.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 84e89a88..e7fd8a88 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -275,11 +275,12 @@ rdhome="" roms_folder="" def create_shortcut_new_new(games): + ignore_game=rdhome+"/.sync/IGNORE.sh" old_games=os.listdir(rdhome+"/.sync/").copy() for game in games: try: - i=old_games.index(game[0]) + i=old_games.index(game[0]+".sh") old_games[i]=0 except ValueError: print(game[0]+" is a new game!") @@ -306,7 +307,16 @@ def create_shortcut_new_new(games): if game: os.remove(rdhome+"/.sync/"+game) - os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager add") + dir=os.listdir(rdhome+"/.sync/") + if len(dir)==0: + print("No game found, removing all") + fl=open(ignore_game,"w") + fl.close() + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager remove") + os.remove(ignore_game) + else: + print("Adding the games") + os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager add") def addToSteam(systems): games=[] From 648fae3968bcb2538ff158fcd49ba4b35bda26c5 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 28 Aug 2024 13:38:05 +0900 Subject: [PATCH 24/72] STEAM_ROM_MANAGER: added to features.json --- config/retrodeck/reference_lists/features.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 576fc38c..e1ba9f10 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1105,6 +1105,11 @@ "description": "ES-DE Emulation Frontend", "name": "ES-DE", "launch": "es-de" + }, + "steam_rom_manager": { + "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", + "name": "Steam ROM Manager", + "launch": "steam-rom-manager" } } } From 555068ff95866043498c74dd1809c121e8483d94 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 28 Aug 2024 13:38:37 +0900 Subject: [PATCH 25/72] STEAM_ROM_MANAGER: casing names descriptions --- functions/prepare_component.sh | 2 +- functions/steam-sync/resetsync.py | 2 +- functions/steam-sync/steam-sync.py | 2 +- net.retrodeck.retrodeck.yml | 2 +- tools/configurator.sh | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 576e979c..31f63eb7 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -83,7 +83,7 @@ prepare_component() { if [[ "$component" =~ ^(steam_rom_manager|all)$ ]]; then component_found="true" log i "----------------------" - log i "Prepearing STEAM ROM MANAGER" + log i "Prepearing Steam ROM Manager" log i "----------------------" python3 /app/libexec/steam-sync/resetsync.py diff --git a/functions/steam-sync/resetsync.py b/functions/steam-sync/resetsync.py index 6e9eecd6..632d846d 100644 --- a/functions/steam-sync/resetsync.py +++ b/functions/steam-sync/resetsync.py @@ -9,7 +9,7 @@ def resetfun(rdhome): os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") if not os.path.isfile(srm_path): - print("Steam Rom Manager configuration not initialized! Initializing now.") + print("Steam ROM Manager configuration not initialized! Initializing now.") shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) with open(srm_path,"r") as f: diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index e7fd8a88..1e5b45e8 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -391,7 +391,7 @@ def start_config(): srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") if not os.path.isfile(srm_path): - print("Steam Rom Manager configuration not initialized! Initializing now.") + print("Steam ROM Manager configuration not initialized! Initializing now.") resetfun(rdhome) if __name__=="__main__": diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 02f0515b..a8fb4ec6 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -31,7 +31,7 @@ finish-args: - --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.retrodeck # XEMU - Fixes issues with openSUSE systems, QEMU_AUDIO_DRV is defined as "pa" causing xemu to not launch - --unset-env=QEMU_AUDIO_DRV - # Steam Rom Manager + # Steam ROM Manager - --filesystem=xdg-data/Steam:rw #Steam (flatpak) - --filesystem=~/.steam:rw # Steam (Non-flatpak) - --filesystem=~/.var/app/com.valvesoftware.Steam:rw # Steam (Flatpak) diff --git a/tools/configurator.sh b/tools/configurator.sh index 6656aa1c..a4775360 100755 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -1152,13 +1152,13 @@ configurator_reset_dialog() { --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --text="Which component do you want to reset to default settings?" \ --column="Component" --column="Action" \ - "Steam Rom Manager" "Reset SRM that manages the sync and scraping toward Steam library" \ + "Steam ROM Manager" "Reset SRM that manages the sync and scraping toward Steam library" \ "ES-DE" "Reset the ES-DE frontend" \ ) # TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU" case $component_to_reset in - "Steam Rom Manager" | "ES-DE" ) # TODO: GyroDSU + "Steam ROM Manager" | "ES-DE" ) # TODO: GyroDSU if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset $component_to_reset to default settings?\n\nThis process cannot be undone.") == "true" ]]; then prepare_component "reset" "$component_to_reset" "configurator" configurator_process_complete_dialog "resetting $component_to_reset" @@ -1268,7 +1268,7 @@ configurator_add_steam() { zenity --question \ --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ - --text="Steam syncronization is currently disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam Rom Manager.\nRemember to restart Steam each time to see the changes.\n" + --text="Steam syncronization is currently disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam ROM Manager.\nRemember to restart Steam each time to see the changes.\n" if [ $? == 0 ] then From bf2fa76c27c3c9c3ca3613ff95ca9c29b3826436 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 28 Aug 2024 17:59:43 +0200 Subject: [PATCH 26/72] Fixed some error --- functions/steam-sync/steam-sync.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 1e5b45e8..4ce79e4c 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -49,6 +49,7 @@ command_list_default={ "dreamcast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", "easyrpg": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so", "famicom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"flash": "TODO: I have to catch how it works", #TODO "fba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", "fbneo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", "fds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", @@ -394,6 +395,9 @@ def start_config(): print("Steam ROM Manager configuration not initialized! Initializing now.") resetfun(rdhome) + if not os.path.exists(rdhome+"/.sync/"): + os.makedirs(rdhome+"/.sync/") + if __name__=="__main__": start_config() addToSteam(os.listdir(rdhome+"/ES-DE/gamelists/")) From 04919fdf7f95ef33176d2da727d9286dd470709a Mon Sep 17 00:00:00 2001 From: Lx32 Date: Wed, 28 Aug 2024 18:00:08 +0200 Subject: [PATCH 27/72] Moved away the creation of .sync folder --- functions/steam-sync/resetsync.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/functions/steam-sync/resetsync.py b/functions/steam-sync/resetsync.py index 632d846d..91055517 100644 --- a/functions/steam-sync/resetsync.py +++ b/functions/steam-sync/resetsync.py @@ -3,9 +3,6 @@ import shutil import re def resetfun(rdhome): - if not os.path.exists(rdhome+"/.sync/"): - os.makedirs(rdhome+"/.sync/") - os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") if not os.path.isfile(srm_path): From d355e56e65348a153d89944c83c56d9f5704b77d Mon Sep 17 00:00:00 2001 From: Lx32 Date: Tue, 3 Sep 2024 22:15:21 +0200 Subject: [PATCH 28/72] Uploaded standard exception --- functions/steam-sync/userExceptions.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 functions/steam-sync/userExceptions.json diff --git a/functions/steam-sync/userExceptions.json b/functions/steam-sync/userExceptions.json new file mode 100644 index 00000000..221f012b --- /dev/null +++ b/functions/steam-sync/userExceptions.json @@ -0,0 +1,12 @@ +{ + "exceptionsVersion": 1, + "titles": { + "IGNORE": { + "newTitle": "", + "searchTitle": "", + "commandLineArguments": "", + "exclude": true, + "excludeArtwork": false + } + } +} From 78fe802e4e21a762c003be9c22a043a5ba484481 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Tue, 3 Sep 2024 22:16:07 +0200 Subject: [PATCH 29/72] Added reset userExceptions --- functions/steam-sync/resetsync.py | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/steam-sync/resetsync.py b/functions/steam-sync/resetsync.py index 91055517..80e01acc 100644 --- a/functions/steam-sync/resetsync.py +++ b/functions/steam-sync/resetsync.py @@ -8,6 +8,7 @@ def resetfun(rdhome): if not os.path.isfile(srm_path): print("Steam ROM Manager configuration not initialized! Initializing now.") shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) + shutil.copyfile("/app/libexec/steam-sync/userExceptions.json", srm_path) with open(srm_path,"r") as f: data=f.read() From 939bac2bf472bc9acfc55419790a496b0df4c2d3 Mon Sep 17 00:00:00 2001 From: Lx32 Date: Tue, 3 Sep 2024 22:19:24 +0200 Subject: [PATCH 30/72] Revert missing entrypoint --- tools/configurator.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/configurator.sh b/tools/configurator.sh index a4775360..d0762fb2 100755 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -156,6 +156,10 @@ configurator_welcome_dialog() { configurator_about_retrodeck_dialog ;; + "Sync with Steam" ) + configurator_add_steam + ;; + "Developer Options" ) log i "Configurator: opening \"$choice\" menu" configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!" From 87564fb7b56c5b8eb16100319b788bee2a7c297c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 11:44:54 +0900 Subject: [PATCH 31/72] STEAM_SYNC_SH: checkpoint, addToSteam is working --- functions/other_functions.sh | 6 +- functions/steam-sync/steam-sync.sh | 417 +++++++++++++++++++++++++++++ 2 files changed, 422 insertions(+), 1 deletion(-) create mode 100644 functions/steam-sync/steam-sync.sh diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 281b40ec..461da3c5 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -892,7 +892,11 @@ start_retrodeck() { # if steam sync is on do the magic if [[ $steam_sync == "true" ]]; then ( - python3 /app/libexec/steam-sync/steam-sync.py + #python3 /app/libexec/steam-sync/steam-sync.py #TODO: clean me + source /app/libexec/steam-sync/steam-sync.sh + start_config + addToSteam "$(ls "$rdhome/ES-DE/gamelists/")" + log "i" "Finished syncing with Steam" ) | zenity --progress \ --title="Syncing with Steam" \ diff --git a/functions/steam-sync/steam-sync.sh b/functions/steam-sync/steam-sync.sh new file mode 100644 index 00000000..cfa7d17b --- /dev/null +++ b/functions/steam-sync/steam-sync.sh @@ -0,0 +1,417 @@ +#!/bin/bash + +# Associative arrays for command lists +# TODO: make them dynamic by readin es_config and features.json +declare -A command_list_default=( +"[3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so", +"[amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"[arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so", +"[astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", +"[atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", +"[atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so", +"[atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"[atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", +"[atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", +"[atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", +"[atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so", +"[atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"[atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"[c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", +"[cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so", +"[cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", +"[cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so", +"[channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so", +"[colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", +"[dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", +"[dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"[easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so", +"[famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"[flash": "TODO: I have to catch how it works", #TODO +"[fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", +"[fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"[fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"[gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", +"[gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"[gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"[gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"[genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"[intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so", +"[j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so", +"[lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", +"[lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so", +"[mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so", +"[mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so", +"[model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", +"[msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", +"[n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", +"[n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", +"[naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"[naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"[nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", +"[neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"[neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"[neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"[nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"[ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"[ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"[odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", +"[palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so", +"[pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so", +"[pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", +"[pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"[pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"[pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so", +"[pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so", +"[psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", +"[quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", +"[satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"[saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"[scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so", +"[sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"[sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"[sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"[segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", +"[snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", +"[supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so", +"[tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"[tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"[tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so", +"[to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", +"[uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so", +"[vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so", +"[vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so", +"[videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", +"[virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so", +"[wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so", +"[wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", +"[wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", +"[x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so", +"[x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so", +"[zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so", +"[zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so", +"[switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g", +"[n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck", +"[ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", +"[wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g", +"[gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"[wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"[xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path", +"[ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", +"[psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", +"[pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +) + +declare -A alt_command_list=( +"[PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", +"[Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", +"[MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", +"[a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", +"[Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"[Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", +"[VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", +"[SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", +"[blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", +"[MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", +"[PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", +"[DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", +"[Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", +"[Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", +"[Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", +"[mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"[ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", +"[DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", +"[NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", +"[Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", +"[Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", +"[Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", +"[Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", +"[TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", +"[Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", +"[Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", +"[Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", +"[Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g", +"[Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck", +"[PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", +"[Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", +"[RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", +"[PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", +"[PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run", +"[PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so", +"[CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", +"[CPCemu (Standalone)": "NYI", #NYI +"[MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so", +"[MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so", +"[MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so", +"[MAME (Standalone)": "NYI", #NYI +"[FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", +"[FinalBurn Neo (Standalone)": "NYI", #NYI +"[FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", +"[Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", +"[Flycast (Standalone)": "NYI", #NYI +"[Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so", +"[Supermodel (Standalone)": "NYI", #NYI +"[Supermodel [Fullscreen] (Standalone)": "NYI", #NYI +"[Shortcut or script": "TODO: I have to catch how it works", #TODO +"[Atari800 (Standalone)": "NYI", #NYI +"[Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so", +"[Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", +"[Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so", +"[VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so", +"[VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so", +"[VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so", +"[Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so", +"[CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so", +"[Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so", +"[FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so", +"[FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so", +"[FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so", +"[Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so", +"[Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so", +"[DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so", +"[DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so", +"[Keep ES-DE running": "TODO: I have to catch how it works", #TODO +"[AppImage (Suspend ES-DE)": "TODO: I have to catch how it works", #TODO +"[AppImage (Keep ES-DE running)": "TODO: I have to catch how it works", #TODO +"[Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so", +"[FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so", +"[QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so", +"[Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so", +"[Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", +"[SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so", +"[SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so", +"[Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so", +"[TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so", +"[Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", +"[VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so", +"[bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so", +"[mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", +"[VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so", +"[gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so", +"[Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so", +"[PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e", +"[PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", +"[BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so", +"[CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", +"[fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so", +"[Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so", +"[Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so", +"[Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", +"[DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so", +"[melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so", +"[melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck", +"[FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so", +"[RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so", +"[Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so", +"[Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so", +"[PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore", +"[AppImage": "TODO: I have to catch how it works", #TODO +"[LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", +"[PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", +"[RPCS3 Shortcut (Standalone)": "TODO: I have to catch how it works", #TODO +"[PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so", +"[Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so", +"[Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so", +"[PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so", +"[DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch", +"[vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so", +"[vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so", +"[vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so", +"[vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so", +"[vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so", +"[YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so", +"[Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so", +"[Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so", +"[bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so", +"[bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so", +"[Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so", +"[Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +) + +exit_file="/tmp/retrodeck_steam_sync_exit" +rdhome="" +roms_folder="" + +# Create shortcut function +create_shortcut() { + log "d" "Entering the function create_shortcut" + + local games=("$@") + local ignore_game="$rdhome/.sync/IGNORE.sh" + + if [ ! -d "$rdhome/.sync/" ]; then + mkdir -p "$rdhome/.sync/" + log "d" ".sync directory created" + fi + + local old_games=($(ls "$rdhome/.sync/")) + + for game in "${games[@]}"; do + # Extract the game name (first field) and command (rest of the fields) + local game_name=$(echo "$game" | awk '{print $1}') + local game_command=$(echo "$game" | sed "s/$game_name //") + + # Sanitize the game name by removing only problematic characters for filenames (preserve most characters) + local sanitized_name=$(echo "$game_name" | sed 's/[^a-zA-Z0-9._-]/_/g') + local path="$rdhome/.sync/${sanitized_name}.sh" + log "d" "Creating shortcut at path: $path" + + # Properly format the game command without extra backslashes + local clean_command=$(echo "$game_command" | sed 's/\\//g') + + # Populate the .sync script with the correct command + echo "#!/bin/bash" > "$path" + echo "" >> "$path" + echo 'if test "$(whereis flatpak)" = "flatpak:"' >> "$path" + echo "then" >> "$path" + echo " flatpak-spawn --host $clean_command" >> "$path" + echo "else" >> "$path" + echo " $clean_command" >> "$path" + echo "fi" >> "$path" + + chmod +x "$path" + done + + log "i" "Start removing old games" + for old_game in "${old_games[@]}"; do + log "d" "Removing old game shortcut: $old_game" + rm "$rdhome/.sync/$old_game" + done + + if [ -z "$(ls -A $rdhome/.sync/)" ]; then + log "e" "No games found in .sync directory, removing all" + touch "$ignore_game" + /app/bin/zypak-wrapper /app/srm/steam-rom-manager remove + rm "$ignore_game" + else + log "i" "Adding games to Steam via Steam ROM Manager" + /app/bin/zypak-wrapper /app/srm/steam-rom-manager add + fi +} + +# Add games to Steam function +addToSteam() { + log "i" "Starting Steam Sync" + + # Build the systems array from space-separated systems + local systems_string="arcade doom dos dreamcast flash gb gba gbc Library mame n3ds n64 nds nes portmaster ps2 psp psvita psx scummvm switch wii wiiu" + IFS=' ' read -r -a systems <<< "$systems_string" + + local games=() + + for system in "${systems[@]}"; do + log "d" "Steam Sync: parsing system: $system" + + local gamelist="$rdhome/ES-DE/gamelists/$system/gamelist.xml" + if [ ! -f "$gamelist" ]; then + log "w" "Steam Sync: game list not found for system: $system, skipping" + continue + fi + + # Extract all elements that are marked as favorite="true" + game_blocks=$(xmllint --recover --xpath '//game[favorite="true"]' "$gamelist" 2>/dev/null) + log "d" "Extracted favorite game blocks:\n\n$game_blocks\n\n" + + if [ -z "$game_blocks" ]; then + log "w" "No favorite games found in $gamelist" + continue + fi + + # Split the game_blocks into an array, where each element is a full block + IFS=$'\n' read -r -d '' -a game_array <<< "$(echo "$game_blocks" | xmllint --recover --format - | sed -n '//,/<\/game>/p' | tr '\n' ' ')" + + # Iterate over each full block in the array + for game_block in "${game_array[@]}"; do + log "d" "Processing game block:\n$game_block" + + # Extract the game's name and path from the full game block + local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null) + local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null) + + # Escape the name and path to handle special characters + local escaped_name=$(printf '%q' "$name") + local escaped_path=$(printf '%q' "$path") + + # Log the extracted values + log "d" "Escaped name: $escaped_name" + log "d" "Escaped path: $escaped_path" + + # Ensure the extracted name and path are valid + if [ -n "$escaped_name" ] && [ -n "$escaped_path" ]; then + # Check for an alternative emulator if it exists + local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) + if [ -z "$emulator" ]; then + games+=("$escaped_name ${command_list_default[$system]} '$roms_folder/$system/$escaped_path'") + else + games+=("$escaped_name ${alt_command_list[$emulator]} '$roms_folder/$system/$escaped_path'") + fi + log "d" "Steam Sync: found favorite game: $escaped_name" + else + log "w" "Steam Sync: failed to find valid name or path for favorite game" + fi + done + done + + create_shortcut "${games[@]}" +} + +# Start configuration function +start_config() { + log "i" "Initializing Steam Sync" + + if [ ! -f "$rd_conf" ]; then + log "e" "Config file not found" + exit 1 + fi + + while IFS= read -r line; do + if [[ $line == rdhome=* ]]; then + rdhome="${line#rdhome=}" + elif [[ $line == roms_folder=* ]]; then + roms_folder="${line#roms_folder=}" + fi + done < "$rd_conf" + + local srm_path="$HOME/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json" + if [ ! -f "$srm_path" ]; then + log "e" "Steam ROM Manager configuration not initialized! Initializing now." + resetfun "$rdhome" + fi + + if [ ! -d "$rdhome/.sync/" ]; then + mkdir -p "$rdhome/.sync/" + log "d" ".sync directory created" + fi +} \ No newline at end of file From 2bc6d89d48e371310e2de2b70c2a88abe5a3634f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 12:05:28 +0900 Subject: [PATCH 32/72] STEAM_SYNC_SH: fixed bad launcher filename generation --- functions/steam-sync/steam-sync.sh | 87 +++++++++++++++++------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/functions/steam-sync/steam-sync.sh b/functions/steam-sync/steam-sync.sh index cfa7d17b..f1c20182 100644 --- a/functions/steam-sync/steam-sync.sh +++ b/functions/steam-sync/steam-sync.sh @@ -278,38 +278,55 @@ create_shortcut() { local old_games=($(ls "$rdhome/.sync/")) - for game in "${games[@]}"; do - # Extract the game name (first field) and command (rest of the fields) - local game_name=$(echo "$game" | awk '{print $1}') - local game_command=$(echo "$game" | sed "s/$game_name //") - - # Sanitize the game name by removing only problematic characters for filenames (preserve most characters) - local sanitized_name=$(echo "$game_name" | sed 's/[^a-zA-Z0-9._-]/_/g') - local path="$rdhome/.sync/${sanitized_name}.sh" - log "d" "Creating shortcut at path: $path" - - # Properly format the game command without extra backslashes - local clean_command=$(echo "$game_command" | sed 's/\\//g') - - # Populate the .sync script with the correct command - echo "#!/bin/bash" > "$path" - echo "" >> "$path" - echo 'if test "$(whereis flatpak)" = "flatpak:"' >> "$path" - echo "then" >> "$path" - echo " flatpak-spawn --host $clean_command" >> "$path" - echo "else" >> "$path" - echo " $clean_command" >> "$path" - echo "fi" >> "$path" - - chmod +x "$path" - done - log "i" "Start removing old games" for old_game in "${old_games[@]}"; do log "d" "Removing old game shortcut: $old_game" rm "$rdhome/.sync/$old_game" done + for game in "${games[@]}"; do + + log d "Extracted: $game" + + # Extract the game name (everything before the first path part, i.e., excluding paths and other arguments) + local game_name=$(echo "$game" | sed -n "s/^\([^']*\)'\([^']*\)'$/\1/p" | xargs) + + # Extract the command part (everything after the game name) + local file_path=$(echo "$game" | sed -n "s/^\([^']*\)'\(.*\)'/\2/p") + + # Sanitize the game name for the filename: replace special characters with underscores + local sanitized_name=$(echo "$game_name" | sed -e 's/[^A-Za-z0-9._\[\]()-]/_/g') + + log d "File Path: $file_path" + log d "Game Name: $game_name" + log d "Sanitized Name: $sanitized_name" + + # If the filename is too long, shorten it + if [ ${#sanitized_name} -gt 100 ]; then + sanitized_name=$(echo "$sanitized_name" | cut -c 1-100) + fi + + #TODO: FIXME, this part is wrong, I need to fix it + + local launcher="$rdhome/.sync/${sanitized_name}.sh" + log "d" "Creating shortcut at path: $launcher" + + # Escape the command properly by removing unnecessary backslashes + local clean_command=$(echo "$game_command" | sed 's/\\//g') + + # Populate the .sync script with the correct command + echo "#!/bin/bash" > "$launcher" + echo "" >> "$launcher" + echo 'if test "$(whereis flatpak)" = "flatpak:"' >> "$launcher" + echo "then" >> "$launcher" + echo " flatpak-spawn --host $clean_command" >> "$launcher" + echo "else" >> "$launcher" + echo " $clean_command" >> "$launcher" + echo "fi" >> "$launcher" + + chmod +x "$launcher" + done + if [ -z "$(ls -A $rdhome/.sync/)" ]; then log "e" "No games found in .sync directory, removing all" touch "$ignore_game" @@ -321,6 +338,7 @@ create_shortcut() { fi } +# TODO: FIXME the path is returned with an unwanted ./ ---> '/home/jay/retrodeck/roms/wii/./Tales of Symphonia - Dawn of the New World [RT4PAF].wbfs' # Add games to Steam function addToSteam() { log "i" "Starting Steam Sync" @@ -360,24 +378,19 @@ addToSteam() { local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null) local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null) - # Escape the name and path to handle special characters - local escaped_name=$(printf '%q' "$name") - local escaped_path=$(printf '%q' "$path") - - # Log the extracted values - log "d" "Escaped name: $escaped_name" - log "d" "Escaped path: $escaped_path" + log "d" "Game name: $name" + log "d" "Game path: $launcher" # Ensure the extracted name and path are valid - if [ -n "$escaped_name" ] && [ -n "$escaped_path" ]; then + if [ -n "$name" ] && [ -n "$launcher" ]; then # Check for an alternative emulator if it exists local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) if [ -z "$emulator" ]; then - games+=("$escaped_name ${command_list_default[$system]} '$roms_folder/$system/$escaped_path'") + games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$launcher'") else - games+=("$escaped_name ${alt_command_list[$emulator]} '$roms_folder/$system/$escaped_path'") + games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$launcher'") fi - log "d" "Steam Sync: found favorite game: $escaped_name" + log "d" "Steam Sync: found favorite game: $name" else log "w" "Steam Sync: failed to find valid name or path for favorite game" fi From 9a24f04546b736f96232d678ae40e40f5776fbe7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 14:54:21 +0900 Subject: [PATCH 33/72] STEAM_SYNC_SH: fixed game names, unified in a single function, code cleanup --- functions/steam-sync/steam-sync.sh | 202 +++++++++-------------------- 1 file changed, 62 insertions(+), 140 deletions(-) diff --git a/functions/steam-sync/steam-sync.sh b/functions/steam-sync/steam-sync.sh index f1c20182..4707443b 100644 --- a/functions/steam-sync/steam-sync.sh +++ b/functions/steam-sync/steam-sync.sh @@ -260,171 +260,93 @@ declare -A alt_command_list=( "[Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" ) -exit_file="/tmp/retrodeck_steam_sync_exit" -rdhome="" -roms_folder="" - -# Create shortcut function -create_shortcut() { - log "d" "Entering the function create_shortcut" - - local games=("$@") - local ignore_game="$rdhome/.sync/IGNORE.sh" - - if [ ! -d "$rdhome/.sync/" ]; then - mkdir -p "$rdhome/.sync/" - log "d" ".sync directory created" - fi - - local old_games=($(ls "$rdhome/.sync/")) - - log "i" "Start removing old games" - for old_game in "${old_games[@]}"; do - log "d" "Removing old game shortcut: $old_game" - rm "$rdhome/.sync/$old_game" - done - - for game in "${games[@]}"; do - - log d "Extracted: $game" - - # Extract the game name (everything before the first path part, i.e., excluding paths and other arguments) - local game_name=$(echo "$game" | sed -n "s/^\([^']*\)'\([^']*\)'$/\1/p" | xargs) - - # Extract the command part (everything after the game name) - local file_path=$(echo "$game" | sed -n "s/^\([^']*\)'\(.*\)'/\2/p") - - # Sanitize the game name for the filename: replace special characters with underscores - local sanitized_name=$(echo "$game_name" | sed -e 's/[^A-Za-z0-9._\[\]()-]/_/g') - - log d "File Path: $file_path" - log d "Game Name: $game_name" - log d "Sanitized Name: $sanitized_name" - - # If the filename is too long, shorten it - if [ ${#sanitized_name} -gt 100 ]; then - sanitized_name=$(echo "$sanitized_name" | cut -c 1-100) - fi - - #TODO: FIXME, this part is wrong, I need to fix it - - local launcher="$rdhome/.sync/${sanitized_name}.sh" - log "d" "Creating shortcut at path: $launcher" - - # Escape the command properly by removing unnecessary backslashes - local clean_command=$(echo "$game_command" | sed 's/\\//g') - - # Populate the .sync script with the correct command - echo "#!/bin/bash" > "$launcher" - echo "" >> "$launcher" - echo 'if test "$(whereis flatpak)" = "flatpak:"' >> "$launcher" - echo "then" >> "$launcher" - echo " flatpak-spawn --host $clean_command" >> "$launcher" - echo "else" >> "$launcher" - echo " $clean_command" >> "$launcher" - echo "fi" >> "$launcher" - - chmod +x "$launcher" - done - - if [ -z "$(ls -A $rdhome/.sync/)" ]; then - log "e" "No games found in .sync directory, removing all" - touch "$ignore_game" - /app/bin/zypak-wrapper /app/srm/steam-rom-manager remove - rm "$ignore_game" - else - log "i" "Adding games to Steam via Steam ROM Manager" - /app/bin/zypak-wrapper /app/srm/steam-rom-manager add - fi -} - -# TODO: FIXME the path is returned with an unwanted ./ ---> '/home/jay/retrodeck/roms/wii/./Tales of Symphonia - Dawn of the New World [RT4PAF].wbfs' # Add games to Steam function addToSteam() { log "i" "Starting Steam Sync" + local srm_path="/var/config/steam-rom-manager/userData/userConfigurations.json" + if [ ! -f "$srm_path" ]; then + log "e" "Steam ROM Manager configuration not initialized! Initializing now." + # TODO: do a prepare_component here + resetfun "$rdhome" + fi + # Build the systems array from space-separated systems - local systems_string="arcade doom dos dreamcast flash gb gba gbc Library mame n3ds n64 nds nes portmaster ps2 psp psvita psx scummvm switch wii wiiu" + local systems_string=$(jq -r '.system | keys[]' "$features" | paste -sd' ') IFS=' ' read -r -a systems <<< "$systems_string" local games=() for system in "${systems[@]}"; do - log "d" "Steam Sync: parsing system: $system" local gamelist="$rdhome/ES-DE/gamelists/$system/gamelist.xml" - if [ ! -f "$gamelist" ]; then - log "w" "Steam Sync: game list not found for system: $system, skipping" - continue - fi + + if [ -f "$gamelist" ]; then # Extract all elements that are marked as favorite="true" game_blocks=$(xmllint --recover --xpath '//game[favorite="true"]' "$gamelist" 2>/dev/null) - log "d" "Extracted favorite game blocks:\n\n$game_blocks\n\n" - - if [ -z "$game_blocks" ]; then - log "w" "No favorite games found in $gamelist" - continue - fi + log d "Extracted favorite game blocks:\n\n$game_blocks\n\n" # Split the game_blocks into an array, where each element is a full block IFS=$'\n' read -r -d '' -a game_array <<< "$(echo "$game_blocks" | xmllint --recover --format - | sed -n '//,/<\/game>/p' | tr '\n' ' ')" # Iterate over each full block in the array for game_block in "${game_array[@]}"; do - log "d" "Processing game block:\n$game_block" + log "d" "Processing game block:\n$game_block" - # Extract the game's name and path from the full game block - local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null) - local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null) + # Extract the game's name and path from the full game block + local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null) + local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null | sed 's|^\./||') # removing the ./ - log "d" "Game name: $name" - log "d" "Game path: $launcher" + log "d" "Game name: $name" + log "d" "Game path: $path" - # Ensure the extracted name and path are valid - if [ -n "$name" ] && [ -n "$launcher" ]; then - # Check for an alternative emulator if it exists - local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) - if [ -z "$emulator" ]; then - games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$launcher'") - else - games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$launcher'") - fi - log "d" "Steam Sync: found favorite game: $name" - else - log "w" "Steam Sync: failed to find valid name or path for favorite game" - fi + # Ensure the extracted name and path are valid + if [ -n "$name" ] && [ -n "$path" ]; then + # Check for an alternative emulator if it exists + local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) + if [ -z "$emulator" ]; then + games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$path'") + else + games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$path'") + fi + log "d" "Steam Sync: found favorite game: $name" + else + log "w" "Steam Sync: failed to find valid name or path for favorite game" + fi + + # Sanitize the game name for the filename: replace special characters with underscores + local sanitized_name=$(echo "$name" | sed -e 's/^A-Za-z0-9._-/ /g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/-/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / - /g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / /g') + log d "File Path: $path" + log d "Game Name: $name" + + # If the filename is too long, shorten it + if [ ${#sanitized_name} -gt 100 ]; then + sanitized_name=$(echo "$sanitized_name" | cut -c 1-100) + fi + + log d "Sanitized Name: $sanitized_name" + + #TODO: FIXME, this part is wrong, I need to fix it + + local launcher="$rdhome/.sync/${sanitized_name}.sh" + log "d" "Creating shortcut at path: $launcher" + + # TODO: game_command is empty at the moment + # Escape the command properly by removing unnecessary backslashes + local clean_command=$(echo "$game_command" | sed 's/\\//g') + + # Populate the .sync script with the correct command + echo -e '#!/bin/bash\n' > "$launcher" + echo "flatpak run --command=$clean_command" >> "$launcher" + + chmod +x "$launcher" done - done - - create_shortcut "${games[@]}" -} - -# Start configuration function -start_config() { - log "i" "Initializing Steam Sync" - - if [ ! -f "$rd_conf" ]; then - log "e" "Config file not found" - exit 1 fi + done - while IFS= read -r line; do - if [[ $line == rdhome=* ]]; then - rdhome="${line#rdhome=}" - elif [[ $line == roms_folder=* ]]; then - roms_folder="${line#roms_folder=}" - fi - done < "$rd_conf" - - local srm_path="$HOME/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json" - if [ ! -f "$srm_path" ]; then - log "e" "Steam ROM Manager configuration not initialized! Initializing now." - resetfun "$rdhome" - fi - - if [ ! -d "$rdhome/.sync/" ]; then - mkdir -p "$rdhome/.sync/" - log "d" ".sync directory created" - fi + log i "Steam Sync: completed" } \ No newline at end of file From 6bd82c4b7e07c3a1c597306628decbc836fabf38 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 15:05:00 +0900 Subject: [PATCH 34/72] STEAM_SYNC_SH: removed deprecated commands [skip ci] --- functions/other_functions.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 461da3c5..7eb800f8 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -894,9 +894,7 @@ start_retrodeck() { ( #python3 /app/libexec/steam-sync/steam-sync.py #TODO: clean me source /app/libexec/steam-sync/steam-sync.sh - start_config addToSteam "$(ls "$rdhome/ES-DE/gamelists/")" - log "i" "Finished syncing with Steam" ) | zenity --progress \ --title="Syncing with Steam" \ From 61ecec25fc205f4eb2a0da5655b64bed8f3f527c Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 16:53:42 +0900 Subject: [PATCH 35/72] STEAM_SYNC_SH: fixed launcher with correct command [skip ci] --- functions/steam-sync/steam-sync.sh | 517 +++++++++++++++-------------- 1 file changed, 260 insertions(+), 257 deletions(-) diff --git a/functions/steam-sync/steam-sync.sh b/functions/steam-sync/steam-sync.sh index 4707443b..b8a68968 100644 --- a/functions/steam-sync/steam-sync.sh +++ b/functions/steam-sync/steam-sync.sh @@ -3,261 +3,261 @@ # Associative arrays for command lists # TODO: make them dynamic by readin es_config and features.json declare -A command_list_default=( -"[3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so", -"[amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", -"[arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so", -"[astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", -"[atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", -"[atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so", -"[atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", -"[atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", -"[atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so", -"[atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", -"[atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so", -"[atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", -"[atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", -"[c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", -"[cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so", -"[cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", -"[cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so", -"[channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so", -"[colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", -"[dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", -"[dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", -"[easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so", -"[famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", -"[flash": "TODO: I have to catch how it works", #TODO -"[fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", -"[fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", -"[fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", -"[gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", -"[gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", -"[gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", -"[gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", -"[genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", -"[intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so", -"[j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so", -"[lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so", -"[lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so", -"[mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so", -"[mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so", -"[model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", -"[msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", -"[n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", -"[n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", -"[naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", -"[naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", -"[nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", -"[neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", -"[neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", -"[neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", -"[nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", -"[ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", -"[ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", -"[odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", -"[palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so", -"[pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so", -"[pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", -"[pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", -"[pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", -"[pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so", -"[pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so", -"[psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", -"[quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", -"[satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", -"[saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", -"[scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so", -"[sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", -"[sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", -"[sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", -"[segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", -"[snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", -"[supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so", -"[tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", -"[tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", -"[tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so", -"[to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so", -"[uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so", -"[vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so", -"[vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so", -"[videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so", -"[virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so", -"[wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so", -"[wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", -"[wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so", -"[x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so", -"[x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so", -"[zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so", -"[zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so", -"[switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g", -"[n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck", -"[ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", -"[wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g", -"[gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", -"[wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", -"[xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path", -"[ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", -"[psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", -"[pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +["3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so" +["amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +["arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so" +["astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" +["atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" +["atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so" +["atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +["atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" +["atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" +["atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" +["atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so" +["atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +["atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +["c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" +["cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so" +["cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" +["cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so" +["channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so" +["colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" +["dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" +["dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +["easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so" +["famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +["flash"]="TODO: I have to catch how it works", #TOD +["fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" +["fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +["fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +["gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" +["gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +["gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +["gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +["genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +["intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so" +["j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so" +["lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" +["lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so" +["mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so" +["mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so" +["model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" +["msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" +["n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" +["n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" +["naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +["naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +["nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" +["neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +["neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +["neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +["nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +["ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +["ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +["odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" +["palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so" +["pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so" +["pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" +["pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so" +["pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so" +["psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" +["quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" +["satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +["saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +["scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so" +["sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +["sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +["sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +["segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" +["snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" +["supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so" +["tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so" +["to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" +["uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so" +["vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so" +["vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so" +["videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" +["virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so" +["wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so" +["wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" +["wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" +["x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so" +["x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so" +["zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so" +["zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so" +["switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g" +["n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck" +["ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" +["wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g" +["gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +["wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +["xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path" +["ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" +["psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" +["pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" ) declare -A alt_command_list=( -"[PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so", -"[Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so", -"[MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so", -"[a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so", -"[Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", -"[Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so", -"[VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so", -"[SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so", -"[blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so", -"[MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so", -"[PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so", -"[DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so", -"[Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so", -"[Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so", -"[Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so", -"[mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", -"[ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so", -"[DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so", -"[NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so", -"[Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so", -"[Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so", -"[Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so", -"[Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so", -"[TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so", -"[Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so", -"[Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so", -"[Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so", -"[Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g", -"[Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck", -"[PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch", -"[Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e", -"[RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui", -"[PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck", -"[PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run", -"[PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so", -"[CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", -"[CPCemu (Standalone)": "NYI", #NYI -"[MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so", -"[MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so", -"[MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so", -"[MAME (Standalone)": "NYI", #NYI -"[FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so", -"[FinalBurn Neo (Standalone)": "NYI", #NYI -"[FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so", -"[Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so", -"[Flycast (Standalone)": "NYI", #NYI -"[Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so", -"[Supermodel (Standalone)": "NYI", #NYI -"[Supermodel [Fullscreen] (Standalone)": "NYI", #NYI -"[Shortcut or script": "TODO: I have to catch how it works", #TODO -"[Atari800 (Standalone)": "NYI", #NYI -"[Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so", -"[Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so", -"[Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so", -"[VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so", -"[VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so", -"[VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so", -"[Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so", -"[CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so", -"[Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so", -"[FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so", -"[FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so", -"[FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so", -"[Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so", -"[Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so", -"[DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so", -"[DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so", -"[Keep ES-DE running": "TODO: I have to catch how it works", #TODO -"[AppImage (Suspend ES-DE)": "TODO: I have to catch how it works", #TODO -"[AppImage (Keep ES-DE running)": "TODO: I have to catch how it works", #TODO -"[Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so", -"[FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so", -"[QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so", -"[Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so", -"[Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so", -"[SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so", -"[SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so", -"[Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so", -"[TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so", -"[Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so", -"[VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so", -"[bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so", -"[mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so", -"[VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so", -"[gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so", -"[Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so", -"[PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e", -"[PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so", -"[BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so", -"[CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so", -"[fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so", -"[Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so", -"[Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so", -"[Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so", -"[DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so", -"[melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so", -"[melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck", -"[FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so", -"[RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so", -"[Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so", -"[Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so", -"[PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore", -"[AppImage": "TODO: I have to catch how it works", #TODO -"[LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", -"[PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so", -"[RPCS3 Shortcut (Standalone)": "TODO: I have to catch how it works", #TODO -"[PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so", -"[Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so", -"[Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so", -"[PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so", -"[DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch", -"[vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so", -"[vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so", -"[vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so", -"[vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so", -"[vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so", -"[YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so", -"[Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so", -"[Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so", -"[bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so", -"[bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so", -"[Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so", -"[Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +["Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" +["a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" +["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +["Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" +["VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" +["SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" +["blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +["PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" +["DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" +["Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +["Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +["Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +["ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" +["DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" +["NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +["Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +["Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" +["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +["Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" +["TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" +["Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +["Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +["Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" +["Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g" +["Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck" +["PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" +["Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +["RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" +["PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" +["PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +["PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so" +["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" +["CPCemu (Standalone)"]= "NYI", #NYI +["MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so" +["MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so" +["MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so" +["MAME (Standalone)"]= "NYI", #NYI +["FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +["FinalBurn Neo (Standalone)"]= "NYI", #NYI +["FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" +["Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +["Flycast (Standalone)"]= "NYI", #NYI +["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" +["Supermodel (Standalone)"]= "NYI", #NYI +["Supermodel [Fullscreen] (Standalone)"]= "NYI", #NYI +["Shortcut or script"]= "TODO: I have to catch how it works", #TODO +["Atari800 (Standalone)"]= "NYI", #NYI +["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" +["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +["Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so" +["VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so" +["VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so" +["VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so" +["Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so" +["CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so" +["Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so" +["FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so" +["FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so" +["FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so" +["Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so" +["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" +["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" +["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" +["Keep ES-DE running"]= "TODO: I have to catch how it works", #TODO +["AppImage (Suspend ES-DE)"]= "TODO: I have to catch how it works", #TODO +["AppImage (Keep ES-DE running)"]= "TODO: I have to catch how it works", #TODO +["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" +["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" +["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" +["Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so" +["Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" +["SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so" +["SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so" +["Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so" +["TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so" +["Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" +["VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so" +["bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so" +["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +["VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so" +["gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so" +["Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so" +["PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e" +["PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +["BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so" +["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" +["fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so" +["Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so" +["Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so" +["Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" +["DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so" +["melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so" +["melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck" +["FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so" +["RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so" +["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" +["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" +["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" +["AppImage"]= "TODO: I have to catch how it works", #TODO +["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" +["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" +["RPCS3 Shortcut (Standalone)"]= "TODO: I have to catch how it works", #TODO +["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" +["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" +["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" +["PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so" +["DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch" +["vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so" +["vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so" +["vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so" +["vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so" +["vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so" +["YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so" +["Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so" +["Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so" +["bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so" +["bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so" +["Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so" +["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" ) # Add games to Steam function @@ -333,15 +333,18 @@ addToSteam() { #TODO: FIXME, this part is wrong, I need to fix it local launcher="$rdhome/.sync/${sanitized_name}.sh" - log "d" "Creating shortcut at path: $launcher" + log d "Creating shortcut at path: $launcher" - # TODO: game_command is empty at the moment - # Escape the command properly by removing unnecessary backslashes - local clean_command=$(echo "$game_command" | sed 's/\\//g') + if [[ -v command_list_default[$system] ]]; then + command="${command_list_default[$system]}" + else + log e "$system is not included in the commands array." + continue + fi # Populate the .sync script with the correct command echo -e '#!/bin/bash\n' > "$launcher" - echo "flatpak run --command=$clean_command" >> "$launcher" + echo "$command \"$path\"" >> "$launcher" chmod +x "$launcher" done From ff4205632d0d848cb992a58b203dd39f22e01662 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 21:03:33 +0900 Subject: [PATCH 36/72] STEAM_SYNC_SH: added prepare_component [skip ci] --- .../steam-rom-manager}/userConfigurations.json | 0 .../steam-rom-manager}/userExceptions.json | 0 functions/prepare_component.sh | 10 +++++++++- 3 files changed, 9 insertions(+), 1 deletion(-) rename {functions/steam-sync => config/steam-rom-manager}/userConfigurations.json (100%) rename {functions/steam-sync => config/steam-rom-manager}/userExceptions.json (100%) diff --git a/functions/steam-sync/userConfigurations.json b/config/steam-rom-manager/userConfigurations.json similarity index 100% rename from functions/steam-sync/userConfigurations.json rename to config/steam-rom-manager/userConfigurations.json diff --git a/functions/steam-sync/userExceptions.json b/config/steam-rom-manager/userExceptions.json similarity index 100% rename from functions/steam-sync/userExceptions.json rename to config/steam-rom-manager/userExceptions.json diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 31f63eb7..ab590bd5 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -86,7 +86,15 @@ prepare_component() { log i "Prepearing Steam ROM Manager" log i "----------------------" - python3 /app/libexec/steam-sync/resetsync.py + local srm_path="/var/config/steam-rom-manager/userData" + create_dir -d $srm_path + cp -fv "$config/steam-rom-manager/"*.json $srm_path + steam-rom-manager list + + log i "Updating steamDirectory and romDirectory lines in $srm_path/userConfigurations.json" + jq --arg steamDir "$HOME/.steam/steam" --arg romDir "$rdhome/.sync" \ + '.[0].steamDirectory = $steamDir | .[0].romDirectory = $romDir' \ + "$srm_path/userConfigurations.json" > tmpfile && mv tmpfile "$srm_path/userConfigurations.json" fi if [[ "$component" =~ ^(retroarch|all)$ ]]; then From 8809e338f760aa18b6c7985f23d7b3bcf15e5d76 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 21:07:47 +0900 Subject: [PATCH 37/72] STEAM_SYNC_SH: code cleanup [skip ci] --- functions/post_update.sh | 1 + functions/prepare_component.sh | 2 +- functions/{steam-sync => }/steam-sync.sh | 6 +++++ functions/steam-sync/resetsync.py | 32 ------------------------ 4 files changed, 8 insertions(+), 33 deletions(-) rename functions/{steam-sync => }/steam-sync.sh (99%) delete mode 100644 functions/steam-sync/resetsync.py diff --git a/functions/post_update.sh b/functions/post_update.sh index d7176aec..edb7ba3e 100644 --- a/functions/post_update.sh +++ b/functions/post_update.sh @@ -434,6 +434,7 @@ post_update() { set_setting_value "$raconf" "libretro_info_path" "/var/config/retroarch/cores" "retroarch" prepare_component "reset" "ruffle" + prepare_component "reset" "steam-rom-manager" update_rd_conf # TODO: check this diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index ab590bd5..7ccf42c1 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -89,7 +89,7 @@ prepare_component() { local srm_path="/var/config/steam-rom-manager/userData" create_dir -d $srm_path cp -fv "$config/steam-rom-manager/"*.json $srm_path - steam-rom-manager list + #steam-rom-manager list #TODO: what is this for? log i "Updating steamDirectory and romDirectory lines in $srm_path/userConfigurations.json" jq --arg steamDir "$HOME/.steam/steam" --arg romDir "$rdhome/.sync" \ diff --git a/functions/steam-sync/steam-sync.sh b/functions/steam-sync.sh similarity index 99% rename from functions/steam-sync/steam-sync.sh rename to functions/steam-sync.sh index b8a68968..d0235349 100644 --- a/functions/steam-sync/steam-sync.sh +++ b/functions/steam-sync.sh @@ -347,9 +347,15 @@ addToSteam() { echo "$command \"$path\"" >> "$launcher" chmod +x "$launcher" + + zypak-wrapper steam-rom-manager add "$launcher" done fi done log i "Steam Sync: completed" +} + +remove_from_steam { + echo "TBD" } \ No newline at end of file diff --git a/functions/steam-sync/resetsync.py b/functions/steam-sync/resetsync.py deleted file mode 100644 index 80e01acc..00000000 --- a/functions/steam-sync/resetsync.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -import shutil -import re - -def resetfun(rdhome): - os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager list") - srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json") - if not os.path.isfile(srm_path): - print("Steam ROM Manager configuration not initialized! Initializing now.") - shutil.copyfile("/app/libexec/steam-sync/userConfigurations.json", srm_path) - shutil.copyfile("/app/libexec/steam-sync/userExceptions.json", srm_path) - - with open(srm_path,"r") as f: - data=f.read() - data=re.sub("\"steamDirectory.*","\"steamDirectory\" : \""+os.path.expanduser("~/.steam/steam")+"\",",data) - data=re.sub("\"romDirectory.*","\"romDirectory\" : \""+rdhome+"/.sync/\",",data) - with open(srm_path,"w") as f: - f.write(data) - -if __name__=="__main__": - rdhome="" - - print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) - - fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") - lines=fl.readlines() - for line in lines: - if "rdhome" in line: - rdhome=line[7:-1] - fl.close() - - resetfun(rdhome) From 4993dbf93b9018f59ba7beb6078c3478235c9c38 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 21:11:12 +0900 Subject: [PATCH 38/72] STEAM_SYNC_SH: moved it on retrodeck quit instead of retrodeck start [skip ci] --- functions/other_functions.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 7eb800f8..887ffb9d 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -882,17 +882,10 @@ quit_retrodeck() { pkill -f "es-de" log i "Shutting down RetroDECK's framework" pkill -f "retrodeck" - log i "See you next time" -} -start_retrodeck() { - splash_screen # Check if today has a surprise splashscreen and load it if so - ponzu - - # if steam sync is on do the magic + # if steam sync is on do the magic if [[ $steam_sync == "true" ]]; then ( - #python3 /app/libexec/steam-sync/steam-sync.py #TODO: clean me source /app/libexec/steam-sync/steam-sync.sh addToSteam "$(ls "$rdhome/ES-DE/gamelists/")" ) | @@ -905,7 +898,13 @@ start_retrodeck() { --auto-close \ --auto-kill fi + + log i "See you next time" +} +start_retrodeck() { + splash_screen # Check if today has a surprise splashscreen and load it if so + ponzu log i "Starting RetroDECK v$version" es-de } From 27e5b237bf35eb3a496cdb148365476b0f2d7f37 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 21:45:48 +0900 Subject: [PATCH 39/72] STEAM_SYNC_SH: updated userConfigurations.json [skip ci] --- .../steam-rom-manager/userConfigurations.json | 76 +++++++++++++------ 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/config/steam-rom-manager/userConfigurations.json b/config/steam-rom-manager/userConfigurations.json index 2315846d..150a5b8a 100644 --- a/config/steam-rom-manager/userConfigurations.json +++ b/config/steam-rom-manager/userConfigurations.json @@ -1,9 +1,9 @@ [ { "parserType": "Glob", - "configTitle": "Shortcuts", + "configTitle": "RetroDECK", "steamDirectory": "", - "steamCategory": "${RetroDECK}", + "steamCategory": "RetroDECK", "romDirectory": "", "executableArgs": "", "executableModifier": "\"${exePath}\"", @@ -17,7 +17,7 @@ "onlineImageQueries": "${${fuzzyTitle}}", "imagePool": "${fuzzyTitle}", "userAccounts": { - "specifiedAccounts": "" + "specifiedAccounts": null }, "executable": { "path": "", @@ -39,14 +39,46 @@ "removeBrackets": true }, "controllers": { - "ps4": null, - "ps5": null, - "xbox360": null, - "xboxone": null, - "switch_joycon_left": null, - "switch_joycon_right": null, - "switch_pro": null, - "neptune": null + "ps4": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_ps4.vdf", + "profileType": "template" + }, + "ps5": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_ps5.vdf", + "profileType": "template" + }, + "xbox360": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_xbox360_simple.vdf", + "profileType": "template" + }, + "xboxone": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_xboxone_simple.vdf", + "profileType": "template" + }, + "switch_joycon_left": { + "title": "Controller", + "mappingId": "controller_switch_joycon_left_gamepad_joystick.vdf", + "profileType": "template" + }, + "switch_joycon_right": { + "title": "Controller", + "mappingId": "controller_switch_joycon_right_gamepad_joystick.vdf", + "profileType": "template" + }, + "switch_pro": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_switchpro.vdf", + "profileType": "template" + }, + "neptune": { + "title": "RetroDECK Controller", + "mappingId": "RetroDECK_controller_steamdeck_neptune_full.vdf", + "profileType": "template" + } }, "imageProviderAPIs": { "SteamGridDB": { @@ -62,20 +94,20 @@ } }, "defaultImage": { - "tall": "", - "long": "", - "hero": "", - "logo": "", - "icon": "" + "tall": null, + "long": null, + "hero": null, + "logo": null, + "icon": null }, "localImages": { - "tall": "", - "long": "", - "hero": "", - "logo": "", - "icon": "" + "tall": null, + "long": null, + "hero": null, + "logo": null, + "icon": null }, - "parserId": "171345715969886866", + "parserId": "1725539138664815", "version": 15 } ] From 8bdd08cd7464aa7778005a6219255fdcdc6c4ba2 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 5 Sep 2024 22:28:10 +0900 Subject: [PATCH 40/72] STEAM_SYNC_SH: code cleanup --- config/retrodeck/reference_lists/features.json | 2 +- functions/prepare_component.sh | 3 +-- functions/steam-sync.sh | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index e1ba9f10..90c9fabc 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1106,7 +1106,7 @@ "name": "ES-DE", "launch": "es-de" }, - "steam_rom_manager": { + "steam-rom-manager": { "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", "name": "Steam ROM Manager", "launch": "steam-rom-manager" diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 7ccf42c1..05c127bb 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -80,7 +80,7 @@ prepare_component() { fi fi - if [[ "$component" =~ ^(steam_rom_manager|all)$ ]]; then + if [[ "$component" =~ ^(steam-rom-manager|all)$ ]]; then component_found="true" log i "----------------------" log i "Prepearing Steam ROM Manager" @@ -89,7 +89,6 @@ prepare_component() { local srm_path="/var/config/steam-rom-manager/userData" create_dir -d $srm_path cp -fv "$config/steam-rom-manager/"*.json $srm_path - #steam-rom-manager list #TODO: what is this for? log i "Updating steamDirectory and romDirectory lines in $srm_path/userConfigurations.json" jq --arg steamDir "$HOME/.steam/steam" --arg romDir "$rdhome/.sync" \ diff --git a/functions/steam-sync.sh b/functions/steam-sync.sh index d0235349..e7dbdad7 100644 --- a/functions/steam-sync.sh +++ b/functions/steam-sync.sh @@ -348,7 +348,7 @@ addToSteam() { chmod +x "$launcher" - zypak-wrapper steam-rom-manager add "$launcher" + /app/bin/zypak-wrapper.sh steam-rom-manager add "$launcher" done fi done From 27eea88560b6e5496692cb2a2c30c4d700b8c47d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 08:42:56 +0900 Subject: [PATCH 41/72] Triggering build From 0d4e8e02c71ec2d6a5984fcd4e27aecc30143c42 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 08:56:59 +0900 Subject: [PATCH 42/72] STEAM_SYNC: globalized steamsync_folder variable --- functions/global.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/global.sh b/functions/global.sh index b0a62c0f..e89a4934 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -52,6 +52,7 @@ git_organization_name="RetroDECK" cooker_repository_name="Cooker" # The name of the cooker repository under RetroDECK organization main_repository_name="RetroDECK" # The name of the main repository under RetroDECK organization features="$config/retrodeck/reference_lists/features.json" # A file where all the RetroDECK and component capabilities are kept for querying +steamsync_folder="$rdhome/.sync" # The folder where the favorite launchers are saved in order to be synced to Steam # Godot data transfer temp files From f64a64953df9c303d16f915ad0f94d6ec23994c0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 08:57:36 +0900 Subject: [PATCH 43/72] STEAM_SYNC: standardized script name --- functions/other_functions.sh | 2 +- functions/{steam-sync.sh => steam_sync.sh} | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) rename functions/{steam-sync.sh => steam_sync.sh} (99%) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 887ffb9d..d32f8322 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -886,7 +886,7 @@ quit_retrodeck() { # if steam sync is on do the magic if [[ $steam_sync == "true" ]]; then ( - source /app/libexec/steam-sync/steam-sync.sh + source /app/libexec/steam_sync.sh addToSteam "$(ls "$rdhome/ES-DE/gamelists/")" ) | zenity --progress \ diff --git a/functions/steam-sync.sh b/functions/steam_sync.sh similarity index 99% rename from functions/steam-sync.sh rename to functions/steam_sync.sh index e7dbdad7..fb327a34 100644 --- a/functions/steam-sync.sh +++ b/functions/steam_sync.sh @@ -328,11 +328,9 @@ addToSteam() { sanitized_name=$(echo "$sanitized_name" | cut -c 1-100) fi - log d "Sanitized Name: $sanitized_name" + log d "Sanitized Name: $sanitized_name" - #TODO: FIXME, this part is wrong, I need to fix it - - local launcher="$rdhome/.sync/${sanitized_name}.sh" + local launcher="$steamsync_folder/${sanitized_name}.sh" log d "Creating shortcut at path: $launcher" if [[ -v command_list_default[$system] ]]; then @@ -356,6 +354,6 @@ addToSteam() { log i "Steam Sync: completed" } -remove_from_steam { +remove_from_steam() { echo "TBD" } \ No newline at end of file From 6ef17a93fcaa21c5c16ec3fe79b3a17db7fd7a19 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 09:01:58 +0900 Subject: [PATCH 44/72] STEAM_SYNC: fixing array --- functions/steam_sync.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index fb327a34..c6b952de 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -38,7 +38,7 @@ declare -A command_list_default=( ["dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" ["easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so" ["famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -["flash"]="TODO: I have to catch how it works", #TOD +["flash"]="TODO: I have to catch how it works" #TODO ["fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" ["fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" ["fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" @@ -171,21 +171,21 @@ declare -A alt_command_list=( ["PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" ["PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so" ["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" -["CPCemu (Standalone)"]= "NYI", #NYI +["CPCemu (Standalone)"]="NYI" #NYI ["MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so" ["MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so" ["MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so" -["MAME (Standalone)"]= "NYI", #NYI +["MAME (Standalone)"]="NYI" #NYI ["FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -["FinalBurn Neo (Standalone)"]= "NYI", #NYI +["FinalBurn Neo (Standalone)"]="NYI" #NYI ["FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" ["Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["Flycast (Standalone)"]= "NYI", #NYI +["Flycast (Standalone)"]="NYI" #NYI ["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" -["Supermodel (Standalone)"]= "NYI", #NYI -["Supermodel [Fullscreen] (Standalone)"]= "NYI", #NYI -["Shortcut or script"]= "TODO: I have to catch how it works", #TODO -["Atari800 (Standalone)"]= "NYI", #NYI +["Supermodel (Standalone)"]="NYI" #NYI +["Supermodel [Fullscreen] (Standalone)"]="NYI" #NYI +["Shortcut or script"]= "TODO: I have to catch how it works" #TODO +["Atari800 (Standalone)"]="NYI" #NYI ["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" ["Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so" @@ -202,9 +202,9 @@ declare -A alt_command_list=( ["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" ["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" ["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" -["Keep ES-DE running"]= "TODO: I have to catch how it works", #TODO -["AppImage (Suspend ES-DE)"]= "TODO: I have to catch how it works", #TODO -["AppImage (Keep ES-DE running)"]= "TODO: I have to catch how it works", #TODO +["Keep ES-DE running"]= "TODO: I have to catch how it works" #TODO +["AppImage (Suspend ES-DE)"]= "TODO: I have to catch how it works" #TODO +["AppImage (Keep ES-DE running)"]= "TODO: I have to catch how it works" #TODO ["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" ["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" ["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" @@ -237,10 +237,10 @@ declare -A alt_command_list=( ["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" ["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" ["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" -["AppImage"]= "TODO: I have to catch how it works", #TODO +["AppImage"]= "TODO: I have to catch how it works" #TODO ["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" ["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -["RPCS3 Shortcut (Standalone)"]= "TODO: I have to catch how it works", #TODO +["RPCS3 Shortcut (Standalone)"]= "TODO: I have to catch how it works" #TODO ["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" ["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" ["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" From ed49e718cf6d6420480a895b07c9d118f6936ef7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 09:05:12 +0900 Subject: [PATCH 45/72] STEAM_SYNC: fixing array -part2 --- functions/steam_sync.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index c6b952de..dd381383 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -184,7 +184,7 @@ declare -A alt_command_list=( ["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" ["Supermodel (Standalone)"]="NYI" #NYI ["Supermodel [Fullscreen] (Standalone)"]="NYI" #NYI -["Shortcut or script"]= "TODO: I have to catch how it works" #TODO +["Shortcut or script"]="TODO: I have to catch how it works" #TODO ["Atari800 (Standalone)"]="NYI" #NYI ["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" @@ -202,9 +202,9 @@ declare -A alt_command_list=( ["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" ["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" ["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" -["Keep ES-DE running"]= "TODO: I have to catch how it works" #TODO -["AppImage (Suspend ES-DE)"]= "TODO: I have to catch how it works" #TODO -["AppImage (Keep ES-DE running)"]= "TODO: I have to catch how it works" #TODO +["Keep ES-DE running"]="TODO: I have to catch how it works" #TODO +["AppImage (Suspend ES-DE)"]="TODO: I have to catch how it works" #TODO +["AppImage (Keep ES-DE running)"]="TODO: I have to catch how it works" #TODO ["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" ["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" ["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" @@ -237,10 +237,10 @@ declare -A alt_command_list=( ["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" ["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" ["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" -["AppImage"]= "TODO: I have to catch how it works" #TODO +["AppImage"]="TODO: I have to catch how it works" #TODO ["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" ["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -["RPCS3 Shortcut (Standalone)"]= "TODO: I have to catch how it works" #TODO +["RPCS3 Shortcut (Standalone)"]="TODO: I have to catch how it works" #TODO ["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" ["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" ["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" From d8072c9e853b104ca9a16d13df9b023a4397e89f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 09:11:00 +0900 Subject: [PATCH 46/72] POST_UPDATE: enhanced for steam_rom_manager --- functions/post_update.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/post_update.sh b/functions/post_update.sh index edb7ba3e..a9f6249b 100644 --- a/functions/post_update.sh +++ b/functions/post_update.sh @@ -434,8 +434,10 @@ post_update() { set_setting_value "$raconf" "libretro_info_path" "/var/config/retroarch/cores" "retroarch" prepare_component "reset" "ruffle" - prepare_component "reset" "steam-rom-manager" + + log d "Steam Rom Manager was added, we need to prepare it" update_rd_conf + prepare_component "reset" "steam-rom-manager" # TODO: check this # rm /var/config/emulationstation/.emulationstation # remving the old symlink to .emulationstation as it might be not needed anymore From 8395b2c2000291594384094e037c47456ec026ef Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 10:30:35 +0900 Subject: [PATCH 47/72] STEAM_SYNC: this variable is not correct here --- functions/global.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/functions/global.sh b/functions/global.sh index e89a4934..b0a62c0f 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -52,7 +52,6 @@ git_organization_name="RetroDECK" cooker_repository_name="Cooker" # The name of the cooker repository under RetroDECK organization main_repository_name="RetroDECK" # The name of the main repository under RetroDECK organization features="$config/retrodeck/reference_lists/features.json" # A file where all the RetroDECK and component capabilities are kept for querying -steamsync_folder="$rdhome/.sync" # The folder where the favorite launchers are saved in order to be synced to Steam # Godot data transfer temp files From f10306411111abf1b4747f5ce1e32c59068f473d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 10:31:16 +0900 Subject: [PATCH 48/72] STEAM_SYNC: fixing configuration --- .../steam-rom-manager/userConfigurations.json | 10 +++---- config/steam-rom-manager/userSettings.json | 30 +++++++++++++++++++ functions/prepare_component.sh | 7 ++--- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 config/steam-rom-manager/userSettings.json diff --git a/config/steam-rom-manager/userConfigurations.json b/config/steam-rom-manager/userConfigurations.json index 150a5b8a..94243acf 100644 --- a/config/steam-rom-manager/userConfigurations.json +++ b/config/steam-rom-manager/userConfigurations.json @@ -2,22 +2,20 @@ { "parserType": "Glob", "configTitle": "RetroDECK", - "steamDirectory": "", + "steamDirectory": "${steamdirglobal}", "steamCategory": "RetroDECK", - "romDirectory": "", + "romDirectory": "${romsdirglobal}", "executableArgs": "", "executableModifier": "\"${exePath}\"", "startInDirectory": "", "titleModifier": "${fuzzyTitle}", - "fetchControllerTemplatesButton": null, - "removeControllersButton": null, "imageProviders": [ "SteamGridDB" ], "onlineImageQueries": "${${fuzzyTitle}}", "imagePool": "${fuzzyTitle}", "userAccounts": { - "specifiedAccounts": null + "specifiedAccounts": "" }, "executable": { "path": "", @@ -25,7 +23,7 @@ "appendArgsToExecutable": true }, "parserInputs": { - "glob": "${title}@(.sh)" + "glob": "${title}.sh" }, "titleFromVariable": { "limitToGroups": "", diff --git a/config/steam-rom-manager/userSettings.json b/config/steam-rom-manager/userSettings.json new file mode 100644 index 00000000..0eeebea6 --- /dev/null +++ b/config/steam-rom-manager/userSettings.json @@ -0,0 +1,30 @@ +{ + "fuzzyMatcher": { + "verbose": false, + "filterProviders": true + }, + "environmentVariables": { + "steamDirectory": "", + "userAccounts": "${steamlogin}", + "romsDirectory": "", + "retroarchPath": "", + "raCoresDirectory": "", + "localImagesDirectory": "" + }, + "previewSettings": { + "retrieveCurrentSteamImages": true, + "deleteDisabledShortcuts": false, + "imageZoomPercentage": 30, + "preload": false + }, + "enabledProviders": [ + "SteamGridDB" + ], + "batchDownloadSize": 50, + "language": "en-US", + "theme": "Deck", + "offlineMode": false, + "navigationWidth": 0, + "clearLogOnTest": false, + "version": 6 +} diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 05c127bb..d2cec976 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -90,10 +90,9 @@ prepare_component() { create_dir -d $srm_path cp -fv "$config/steam-rom-manager/"*.json $srm_path - log i "Updating steamDirectory and romDirectory lines in $srm_path/userConfigurations.json" - jq --arg steamDir "$HOME/.steam/steam" --arg romDir "$rdhome/.sync" \ - '.[0].steamDirectory = $steamDir | .[0].romDirectory = $romDir' \ - "$srm_path/userConfigurations.json" > tmpfile && mv tmpfile "$srm_path/userConfigurations.json" + log i "Updating steamDirectory and romDirectory lines in $srm_path/userSettings.json" + jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' $srm_path/userSettings.json" > tmp.json && mv tmp.json $srm_path/userSettings.json" + jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' $srm_path/userSettings.json > tmp.json && mv tmp.json $srm_path/userSettings.json fi if [[ "$component" =~ ^(retroarch|all)$ ]]; then From 31dbca315d8fe28d54c15477c658496d74277c0e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 10:31:52 +0900 Subject: [PATCH 49/72] STEAM_SYNC: adding more sanitized games cases --- functions/steam_sync.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index dd381383..ab0b0cef 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -261,9 +261,12 @@ declare -A alt_command_list=( ) # Add games to Steam function -addToSteam() { +add_to_steam() { log "i" "Starting Steam Sync" + steamsync_folder="$rdhome/.sync" + create_dir $steamsync_folder + local srm_path="/var/config/steam-rom-manager/userData/userConfigurations.json" if [ ! -f "$srm_path" ]; then log "e" "Steam ROM Manager configuration not initialized! Initializing now." @@ -317,7 +320,8 @@ addToSteam() { # Sanitize the game name for the filename: replace special characters with underscores local sanitized_name=$(echo "$name" | sed -e 's/^A-Za-z0-9._-/ /g') - local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/-/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/ -/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's/&/and/g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / - /g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / /g') log d "File Path: $path" @@ -345,12 +349,10 @@ addToSteam() { echo "$command \"$path\"" >> "$launcher" chmod +x "$launcher" - - /app/bin/zypak-wrapper.sh steam-rom-manager add "$launcher" done fi done - + steam-rom-manager add log i "Steam Sync: completed" } From ef58758101b88bb10771746620b96be3c1b2e012 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 10:32:33 +0900 Subject: [PATCH 50/72] STEAM_SYNC: fix framwork was shutting down before steam_sync --- functions/other_functions.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index d32f8322..99b6f05d 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -880,14 +880,12 @@ release_selector() { quit_retrodeck() { log i "Quitting ES-DE" pkill -f "es-de" - log i "Shutting down RetroDECK's framework" - pkill -f "retrodeck" - # if steam sync is on do the magic + # if steam sync is on do the magic if [[ $steam_sync == "true" ]]; then ( source /app/libexec/steam_sync.sh - addToSteam "$(ls "$rdhome/ES-DE/gamelists/")" + add_to_steam "$(ls "$rdhome/ES-DE/gamelists/")" ) | zenity --progress \ --title="Syncing with Steam" \ @@ -898,6 +896,8 @@ quit_retrodeck() { --auto-close \ --auto-kill fi + log i "Shutting down RetroDECK's framework" + pkill -f "retrodeck" log i "See you next time" } From a27ccd800b9a229343d4f257285e9d0e57f2ec07 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 11:16:56 +0900 Subject: [PATCH 51/72] MANIFEST: fixed SRM wrapper to accept args --- net.retrodeck.retrodeck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index a8fb4ec6..1cca3504 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -176,7 +176,7 @@ modules: - type: script dest-filename: run.sh commands: - - /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager + - /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager "${@}" - type: file dest-filename: srm.deb url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.4.19/steam-rom-manager_2.4.19_amd64.deb From 56b775421caf0abf9c13c056c6585cc5e8b2f068 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 11:17:24 +0900 Subject: [PATCH 52/72] STEAM_SYNC: fixing SRM preparation --- functions/prepare_component.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index d2cec976..ba7d0242 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -86,13 +86,14 @@ prepare_component() { log i "Prepearing Steam ROM Manager" log i "----------------------" - local srm_path="/var/config/steam-rom-manager/userData" - create_dir -d $srm_path - cp -fv "$config/steam-rom-manager/"*.json $srm_path + local srm_userdata="/var/config/steam-rom-manager/userData" + create_dir -d "/var/config/steam-rom-manager" + create_dir -d "$srm_userdata" + cp -fv "$config/steam-rom-manager/"*.json $srm_userdata - log i "Updating steamDirectory and romDirectory lines in $srm_path/userSettings.json" - jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' $srm_path/userSettings.json" > tmp.json && mv tmp.json $srm_path/userSettings.json" - jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' $srm_path/userSettings.json > tmp.json && mv tmp.json $srm_path/userSettings.json + log i "Updating steamDirectory and romDirectory lines in $srm_userdata/userSettings.json" + jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json" + jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json" fi if [[ "$component" =~ ^(retroarch|all)$ ]]; then From 9fef51fb654af62d06c624aa221fbd33dd553c76 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 12:33:08 +0900 Subject: [PATCH 53/72] STEAM_SYNC: using run_game to build the launchers --- functions/steam_sync.sh | 538 ++++++++++++++++++++-------------------- 1 file changed, 269 insertions(+), 269 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index ab0b0cef..990fb037 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -2,263 +2,263 @@ # Associative arrays for command lists # TODO: make them dynamic by readin es_config and features.json -declare -A command_list_default=( -["3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so" -["amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -["arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so" -["astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" -["atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" -["atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so" -["atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -["atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" -["atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" -["atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" -["atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so" -["atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -["atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" -["cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so" -["cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" -["cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so" -["channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so" -["colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" -["dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" -["dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so" -["famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -["flash"]="TODO: I have to catch how it works" #TODO -["fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" -["fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -["fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -["gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" -["gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -["gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -["gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -["genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -["intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so" -["j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so" -["lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" -["lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so" -["mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so" -["mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so" -["model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" -["msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" -["n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" -["n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" -["naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" -["neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -["neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -["neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -["nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -["ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -["ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -["odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" -["palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so" -["pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so" -["pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" -["pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -["pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -["pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so" -["pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so" -["psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" -["quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" -["satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -["saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -["scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so" -["sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -["sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -["sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -["segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" -["snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" -["supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so" -["tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -["tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -["tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so" -["to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" -["uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so" -["vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so" -["vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so" -["videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" -["virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so" -["wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so" -["wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" -["wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" -["x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so" -["x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so" -["zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so" -["zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so" -["switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g" -["n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck" -["ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" -["wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g" -["gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -["wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -["xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path" -["ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" -["psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" -["pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" -) +# declare -A command_list_default=( +# ["3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so" +# ["amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +# ["arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so" +# ["astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" +# ["atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" +# ["atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so" +# ["atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +# ["atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" +# ["atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" +# ["atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" +# ["atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so" +# ["atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +# ["atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +# ["c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" +# ["cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so" +# ["cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" +# ["cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so" +# ["channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so" +# ["colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" +# ["dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" +# ["dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +# ["easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so" +# ["famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +# ["flash"]="TODO: I have to catch how it works" #TODO +# ["fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" +# ["fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +# ["fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +# ["gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" +# ["gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +# ["gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +# ["gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +# ["genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +# ["intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so" +# ["j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so" +# ["lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" +# ["lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so" +# ["mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so" +# ["mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so" +# ["model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" +# ["msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" +# ["n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" +# ["n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" +# ["naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +# ["naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +# ["nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" +# ["neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +# ["neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +# ["neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +# ["nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +# ["ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +# ["ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +# ["odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" +# ["palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so" +# ["pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so" +# ["pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" +# ["pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ["pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ["pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so" +# ["pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so" +# ["psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" +# ["quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" +# ["satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +# ["saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +# ["scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so" +# ["sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +# ["sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +# ["sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +# ["segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" +# ["snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" +# ["supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so" +# ["tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ["tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ["tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so" +# ["to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" +# ["uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so" +# ["vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so" +# ["vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so" +# ["videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" +# ["virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so" +# ["wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so" +# ["wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" +# ["wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" +# ["x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so" +# ["x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so" +# ["zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so" +# ["zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so" +# ["switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g" +# ["n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck" +# ["ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" +# ["wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g" +# ["gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +# ["wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +# ["xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path" +# ["ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" +# ["psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" +# ["pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +# ) -declare -A alt_command_list=( -["PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -["Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" -["a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" -["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -["Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" -["VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" -["SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" -["blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -["PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" -["DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" -["Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -["Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -["Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -["ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" -["DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" -["NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -["Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -["Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" -["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -["Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" -["TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" -["Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -["Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -["Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" -["Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g" -["Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck" -["PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" -["Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -["RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" -["PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" -["PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" -["PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so" -["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" -["CPCemu (Standalone)"]="NYI" #NYI -["MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so" -["MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so" -["MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so" -["MAME (Standalone)"]="NYI" #NYI -["FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -["FinalBurn Neo (Standalone)"]="NYI" #NYI -["FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" -["Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -["Flycast (Standalone)"]="NYI" #NYI -["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" -["Supermodel (Standalone)"]="NYI" #NYI -["Supermodel [Fullscreen] (Standalone)"]="NYI" #NYI -["Shortcut or script"]="TODO: I have to catch how it works" #TODO -["Atari800 (Standalone)"]="NYI" #NYI -["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" -["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -["Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so" -["VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so" -["VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so" -["VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so" -["Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so" -["CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so" -["Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so" -["FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so" -["FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so" -["FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so" -["Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so" -["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" -["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" -["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" -["Keep ES-DE running"]="TODO: I have to catch how it works" #TODO -["AppImage (Suspend ES-DE)"]="TODO: I have to catch how it works" #TODO -["AppImage (Keep ES-DE running)"]="TODO: I have to catch how it works" #TODO -["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" -["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" -["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" -["Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so" -["Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" -["SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so" -["SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so" -["Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so" -["TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so" -["Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" -["VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so" -["bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so" -["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -["VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so" -["gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so" -["Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so" -["PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e" -["PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -["BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so" -["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" -["fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so" -["Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so" -["Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so" -["Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" -["DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so" -["melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so" -["melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck" -["FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so" -["RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so" -["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" -["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" -["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" -["AppImage"]="TODO: I have to catch how it works" #TODO -["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -["RPCS3 Shortcut (Standalone)"]="TODO: I have to catch how it works" #TODO -["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" -["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" -["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" -["PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so" -["DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch" -["vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so" -["vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so" -["vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so" -["vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so" -["vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so" -["YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so" -["Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so" -["Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so" -["bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so" -["bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so" -["Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so" -["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -) +# declare -A alt_command_list=( +# ["PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" +# ["Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" +# ["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" +# ["a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" +# ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +# ["Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" +# ["VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" +# ["SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" +# ["blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" +# ["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" +# ["PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" +# ["DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" +# ["Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" +# ["Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" +# ["Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" +# ["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +# ["ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" +# ["DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" +# ["NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" +# ["Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" +# ["Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" +# ["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ["Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" +# ["TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" +# ["Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" +# ["Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" +# ["Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" +# ["Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g" +# ["Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck" +# ["PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" +# ["Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" +# ["RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" +# ["PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" +# ["PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" +# ["PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so" +# ["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" +# ["CPCemu (Standalone)"]="NYI" #NYI +# ["MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so" +# ["MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so" +# ["MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so" +# ["MAME (Standalone)"]="NYI" #NYI +# ["FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" +# ["FinalBurn Neo (Standalone)"]="NYI" #NYI +# ["FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" +# ["Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" +# ["Flycast (Standalone)"]="NYI" #NYI +# ["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" +# ["Supermodel (Standalone)"]="NYI" #NYI +# ["Supermodel [Fullscreen] (Standalone)"]="NYI" #NYI +# ["Shortcut or script"]="TODO: I have to catch how it works" #TODO +# ["Atari800 (Standalone)"]="NYI" #NYI +# ["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" +# ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" +# ["Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so" +# ["VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so" +# ["VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so" +# ["VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so" +# ["Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so" +# ["CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so" +# ["Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so" +# ["FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so" +# ["FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so" +# ["FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so" +# ["Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so" +# ["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" +# ["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" +# ["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" +# ["Keep ES-DE running"]="TODO: I have to catch how it works" #TODO +# ["AppImage (Suspend ES-DE)"]="TODO: I have to catch how it works" #TODO +# ["AppImage (Keep ES-DE running)"]="TODO: I have to catch how it works" #TODO +# ["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" +# ["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" +# ["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" +# ["Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so" +# ["Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" +# ["SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so" +# ["SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so" +# ["Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so" +# ["TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so" +# ["Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" +# ["VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so" +# ["bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so" +# ["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" +# ["VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so" +# ["gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so" +# ["Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so" +# ["PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e" +# ["PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" +# ["BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so" +# ["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" +# ["fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so" +# ["Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so" +# ["Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so" +# ["Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" +# ["DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so" +# ["melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so" +# ["melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck" +# ["FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so" +# ["RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so" +# ["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" +# ["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" +# ["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" +# ["AppImage"]="TODO: I have to catch how it works" #TODO +# ["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" +# ["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" +# ["RPCS3 Shortcut (Standalone)"]="TODO: I have to catch how it works" #TODO +# ["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" +# ["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" +# ["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" +# ["PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so" +# ["DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch" +# ["vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so" +# ["vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so" +# ["vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so" +# ["vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so" +# ["vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so" +# ["YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so" +# ["Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so" +# ["Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so" +# ["bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so" +# ["bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so" +# ["Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so" +# ["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" +# ) # Add games to Steam function add_to_steam() { @@ -307,12 +307,12 @@ add_to_steam() { # Ensure the extracted name and path are valid if [ -n "$name" ] && [ -n "$path" ]; then # Check for an alternative emulator if it exists - local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) - if [ -z "$emulator" ]; then - games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$path'") - else - games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$path'") - fi + # local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null) + # if [ -z "$emulator" ]; then + # games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$path'") + # else + # games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$path'") + # fi log "d" "Steam Sync: found favorite game: $name" else log "w" "Steam Sync: failed to find valid name or path for favorite game" @@ -337,16 +337,16 @@ add_to_steam() { local launcher="$steamsync_folder/${sanitized_name}.sh" log d "Creating shortcut at path: $launcher" - if [[ -v command_list_default[$system] ]]; then - command="${command_list_default[$system]}" - else - log e "$system is not included in the commands array." - continue - fi + # if [[ -v command_list_default[$system] ]]; then + # command="${command_list_default[$system]}" + # else + # log e "$system is not included in the commands array." + # continue + # fi # Populate the .sync script with the correct command echo -e '#!/bin/bash\n' > "$launcher" - echo "$command \"$path\"" >> "$launcher" + echo "flatpak run net.retrodeck.retrodeck --run \"$path\"" >> "$launcher" chmod +x "$launcher" done From ac103fe9f02fcf7745d0997516003198a396b72e Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 13:31:50 +0900 Subject: [PATCH 54/72] STEAM_SYNC: added system to run_game be sure --- functions/steam_sync.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index 990fb037..8835e0fb 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -346,7 +346,7 @@ add_to_steam() { # Populate the .sync script with the correct command echo -e '#!/bin/bash\n' > "$launcher" - echo "flatpak run net.retrodeck.retrodeck --run \"$path\"" >> "$launcher" + echo "flatpak run net.retrodeck.retrodeck --run \"$roms_folder/$system/$path\" $system" >> "$launcher" chmod +x "$launcher" done From 2508d31e4fe6e2c98272abe2988fc114607a2304 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 20:50:31 +0900 Subject: [PATCH 55/72] STEAM_SYNC_SH: removed unused config file --- config/steam-rom-manager/userExceptions.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 config/steam-rom-manager/userExceptions.json diff --git a/config/steam-rom-manager/userExceptions.json b/config/steam-rom-manager/userExceptions.json deleted file mode 100644 index 221f012b..00000000 --- a/config/steam-rom-manager/userExceptions.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "exceptionsVersion": 1, - "titles": { - "IGNORE": { - "newTitle": "", - "searchTitle": "", - "commandLineArguments": "", - "exclude": true, - "excludeArtwork": false - } - } -} From 78483667e934786f4abec7851f64395da064a0b1 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 20:50:57 +0900 Subject: [PATCH 56/72] FEATURES: indentation fix --- config/retrodeck/reference_lists/features.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 31da7e43..a02df957 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1134,10 +1134,10 @@ "launch": "es-de" }, "steam-rom-manager": { - "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", - "name": "Steam ROM Manager", - "launch": "steam-rom-manager" - } + "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", + "name": "Steam ROM Manager", + "launch": "steam-rom-manager" + } } } \ No newline at end of file From 583f647efb3ded37256489deb3d284b2697bf23a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 20:51:53 +0900 Subject: [PATCH 57/72] PREPARE_COMPONENT: comments --- functions/prepare_component.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index ba7d0242..f8164ed3 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -82,9 +82,9 @@ prepare_component() { if [[ "$component" =~ ^(steam-rom-manager|all)$ ]]; then component_found="true" - log i "----------------------" + log i "-----------------------------" log i "Prepearing Steam ROM Manager" - log i "----------------------" + log i "-----------------------------" local srm_userdata="/var/config/steam-rom-manager/userData" create_dir -d "/var/config/steam-rom-manager" From fe83dfc9480d4d9fb864f919d22d6152ed02cf19 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 20:53:43 +0900 Subject: [PATCH 58/72] STEAM_SYNC_SH: general optimization and bugfixes --- functions/steam_sync.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index 8835e0fb..4d11e8cd 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -269,14 +269,13 @@ add_to_steam() { local srm_path="/var/config/steam-rom-manager/userData/userConfigurations.json" if [ ! -f "$srm_path" ]; then - log "e" "Steam ROM Manager configuration not initialized! Initializing now." - # TODO: do a prepare_component here - resetfun "$rdhome" + log "e" "Steam ROM Manager configuration not initialized! Initializing now." + prepare_component "reset" "steam-rom-manager" fi # Build the systems array from space-separated systems local systems_string=$(jq -r '.system | keys[]' "$features" | paste -sd' ') - IFS=' ' read -r -a systems <<< "$systems_string" + IFS=' ' read -r -a systems <<< "$systems_string" # TODO: do we need this line? local games=() @@ -322,6 +321,7 @@ add_to_steam() { local sanitized_name=$(echo "$name" | sed -e 's/^A-Za-z0-9._-/ /g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/ -/g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/&/and/g') + local sanitized_name=$(echo "$sanitized_name" | sed -e 's%/%and%g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / - /g') local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / /g') log d "File Path: $path" @@ -345,8 +345,13 @@ add_to_steam() { # fi # Populate the .sync script with the correct command + local command="flatpak run net.retrodeck.retrodeck --run \"$roms_folder/$system/$path\" $system" echo -e '#!/bin/bash\n' > "$launcher" - echo "flatpak run net.retrodeck.retrodeck --run \"$roms_folder/$system/$path\" $system" >> "$launcher" + echo -e "if [ test \"$(whereis flatpak)\" = \"flatpak:\" ]; then" >> "$launcher" + echo -e "\tflatpak-spawn --host $command" >> "$launcher" + echo -e "else" >> "$launcher" + echo -e "\t$command" >> "$launcher" + echo -e "fi" >> "$launcher" chmod +x "$launcher" done From a79eec2b79debbae28a2b6ea733c7d2412342f04 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sun, 8 Sep 2024 22:47:24 +0900 Subject: [PATCH 59/72] STEAM_SYNC_SH: migrated launcher to the new run_game --- functions/steam_sync.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index 4d11e8cd..17af3174 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -345,7 +345,9 @@ add_to_steam() { # fi # Populate the .sync script with the correct command - local command="flatpak run net.retrodeck.retrodeck --run \"$roms_folder/$system/$path\" $system" + # TODO: we need to implement the emulator parameter: + # TODO: if there is any emulator defined in the xml we use that, else... how we can know which is the default one? + local command="flatpak run net.retrodeck.retrodeck --run -s $system \"$roms_folder/$system/$path\"" echo -e '#!/bin/bash\n' > "$launcher" echo -e "if [ test \"$(whereis flatpak)\" = \"flatpak:\" ]; then" >> "$launcher" echo -e "\tflatpak-spawn --host $command" >> "$launcher" From e13a13e3aad92efd766354109c093752681d0e95 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 10:41:41 +0900 Subject: [PATCH 60/72] FEATURES: rebased from cooker --- .../retrodeck/reference_lists/features.json | 2273 ++++++++--------- 1 file changed, 1136 insertions(+), 1137 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 1c8a93f6..7cfe45ae 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1,1144 +1,1143 @@ { - "about_links": { - "rd_changelog": { - "description": "Opens the RetroDECK change log in your default browser", - "name": "Changelog", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_contactus": { - "description": "Opens the RetroDECK contact us section in your default browser", - "name": "Contact us", - "url": "https://github.com/XargonWan/RetroDECK", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_credits": { - "description": "Opens the RetroDECK Credits in your default browser", - "name": "Credits", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_donate": { - "description": "Opens Donations page in your default browser", - "name": "Donate", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_licenses": { - "description": "Opens the RetroDECK licenses in your default browser", - "name": "Licences", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_web": { - "description": "Opens the RetroDECK Website in your default browser", - "name": "Website", - "url": "https://retrodeck.net/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_wiki": { - "description": "Opens the RetroDECK Wiki in your default browser", - "name": "Wiki", - "url": "https://retrodeck.readthedocs.io/en/latest/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - } - }, - "finit_default_options": { - "rd_controller_profile": { - "name": "RetroDECK Steam Controller Profiles Install", - "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", - "enabled": true - }, - "rpcs3_firmware": { - "name": "RPCS3 Firmware Install", - "description": "Install firmware needed for PS3 emulation", - "enabled": false - }, - "vita3k_firmware": { - "name": "Vita3K Firmware Install", - "description": "Install firmware needed for Vita3K emulation", - "enabled": false - } - }, - "splash_screens": { - "xmas": { - "start_date": "1201", - "end_date": "1231", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-xmas-splash.svg" - }, - "lunar_dragon": { - "start_date": "0209", - "end_date": "0212", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-lunar-dragon-splash.svg" - }, - "valentines_day": { - "start_date": "0214", - "end_date": "0214", - "start_time": "0001", - "end_time": "2359", - "filename": "rd-valentines-splash.svg" - }, - "retrodeck_birthday": { - "start_date": "0304", - "end_date": "0304", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-gm-bday-splash.svg" - }, - "st_patricks_day": { - "start_date": "0317", - "end_date": "0317", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-stpatricks-splash.svg" - }, - "kodomo_golden_week": { - "start_date": "0429", - "end_date": "0505", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-kodomo-golden.svg" - }, - "tanabata": { - "start_date": "0707", - "end_date": "0707", - "start_time": "0000", - "end_time": "2359", - "filename": "tanabata.svg" - }, - "mountain_day": { - "start_date": "0811", - "end_date": "0811", - "start_time": "0000", - "end_time": "2359", - "filename": "placeholder.svg" - }, - "obon": { - "start_date": "0813", - "end_date": "0816", - "start_time": "0000", - "end_time": "2359", - "filename": "placeholder.svg" - } - }, - "incompatible_presets": { - "borders": "widescreen" - }, - "helper_files": { - "dolphin_mods": { - "filename": "how-to-install-dolphin-mods.txt", - "location": "$mods_folder/Dolphin" - }, - "primehack_mods": { - "filename": "how-to-install-primehack-mods.txt", - "location": "$mods_folder/Primehack" - }, - "mesen_textures": { - "filename": "how-to-install-Mesen-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mesen" - }, - "ppsspp_textures": { - "filename": "how-to-install-PPSSPP-textures.txt", - "location": "$texture_packs_folder/PPSSPP" - }, - "pcsx2_textures": { - "filename": "how-to-install-PCSX2-textures.txt", - "location": "$texture_packs_folder/PCSX2" - }, - "mupen64plus_cache_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" - }, - "mupen64plus_hires_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" - }, - "duckstation_textures": { - "filename": "how-to-install-Duckstation-textures.txt", - "location": "$texture_packs_folder/Duckstation" - }, - "psvita_games": { - "filename": "how-to-install-psvita-games.txt", - "location": "$roms_folder/psvita" - }, - "ryujinx_firmware": { - "filename": "Install-firmware-through-Ryujinx.txt", - "location": "$bios_folder/switch/firmware" - } - }, - "compression_targets": { - "chd": [ - "3do", - "amigacd32", - "dreamcast", - "megacd", - "neogeocd", - "pcenginecd", - "pcfx", - "psp", - "psx", - "ps2", - "saturn", - "saturnjp", - "segacd", - "tg-cd" - ], - "rvz": [ - "gc", - "wii" - ], - "zip": [ - "atari2600", - "atari5200", - "atari7800", - "atari800", - "atarijaguar", - "atarilynx", - "atarist", - "gamegear", - "gb", - "gba", - "gbc", - "genesis", - "mastersystem", - "n64", - "nds", - "nes", - "ngp", - "ngpc", - "sega32x", - "sega32xjp", - "sega32xna", - "snes", - "snesna", - "tg16" - ] - }, - "zip_compressable_extensions": [ - ".32x", - ".68k", - ".NDS", - ".a26", - ".a52", - ".a78", - ".abs", - ".agb", - ".atr", - ".atx", - ".bin", - ".bml", - ".bms", - ".bs", - ".bsx", - ".cas", - ".cdm", - ".cgb", - ".cof", - ".col", - ".dim", - ".dmg", - ".dx2", - ".fds", - ".fig", - ".gb", - ".gba", - ".gbc", - ".gd3", - ".gd7", - ".gen", - ".gg", - ".ipf", - ".j64", - ".jag", - ".lnx", - ".md", - ".mdx", - ".mgd", - ".msa", - ".nds", - ".nes", - ".ngc", - ".o", - ".pce", - ".prg", - ".rom", - ".sfc", - ".sg", - ".sgb", - ".sgd", - ".smc", - ".smd", - ".sms", - ".st", - ".st", - ".stx", - ".swc", - ".unf", - ".unif", - ".xex", - ".xfd", - ".z64" - ], - "system": { - "3do": { - "name": "3DO Interactive Multiplayer" - }, - "adam": { - "name": "Coleco Adam" - }, - "amiga": { - "name": "Commodore Amiga" - }, - "amiga1200": { - "name": "Commodore Amiga 1200" - }, - "amiga600": { - "name": "Commodore Amiga 600" - }, - "amigacd32": { - "name": "Commodore Amiga CD32" - }, - "amstradcpc": { - "name": "Amstrad CPC" - }, - "apple2": { - "name": "Apple II" - }, - "apple2gs": { - "name": "Apple IIGS" - }, - "arcade": { - "name": "Arcade" - }, - "arcadia": { - "name": "Emerson Arcadia 2001" - }, - "archimedes": { - "name": "Acorn Archimedes" - }, - "arduboy": { - "name": "Arduboy Miniature Game System" - }, - "astrocde": { - "name": "Bally Astrocade" - }, - "atari2600": { - "name": "Atari 2600" - }, - "atari5200": { - "name": "Atari 5200" - }, - "atari7800": { - "name": "Atari 7800 ProSystem" - }, - "atari800": { - "name": "Atari 800" - }, - "atarijaguar": { - "name": "Atari Jaguar" - }, - "atarilynx": { - "name": "Atari Lynx" - }, - "atarist": { - "name": "Atari ST" - }, - "atarixe": { - "name": "Atari XE" - }, - "atomiswave": { - "name": "Sammy Corporation Atomiswave" - }, - "bbcmicro": { - "name": "Acorn Computers BBC Micro" - }, - "c64": { - "name": "Commodore 64" - }, - "cdimono1": { - "name": "Philips CD-i" - }, - "cdtv": { - "name": "Commodore CDTV" - }, - "chailove": { - "name": "ChaiLove Game Engine" - }, - "channelf": { - "name": "Fairchild Channel F" - }, - "colecovision": { - "name": "Coleco ColecoVision" - }, - "consolearcade": { - "name": "Console Arcade Systems" - }, - "cps": { - "name": "Capcom Play System" - }, - "cps1": { - "name": "Capcom Play System I" - }, - "cps2": { - "name": "Capcom Play System II" - }, - "cps3": { - "name": "Capcom Play System III" - }, - "crvision": { - "name": "VTech CreatiVision" - }, - "daphne": { - "name": "Daphne Arcade LaserDisc Emulator" - }, - "desktop": { - "name": "Desktop Applications" - }, - "doom": { - "name": "Doom" - }, - "dos": { - "name": "DOS (PC)" - }, - "dreamcast": { - "name": "Sega Dreamcast" - }, - "dc": { - "name": "Sega Dreamcast" - }, - "easyrpg": { - "name": "EasyRPG Game Engine" - }, - "electron": { - "name": "Acorn Electron" - }, - "emulators": { - "name": "Emulators" - }, - "famicom": { - "name": "Nintendo Family Computer" - }, - "fba": { - "name": "FinalBurn Alpha" - }, - "fbneo": { - "name": "FinalBurn Neo" - }, - "fds": { - "name": "Nintendo Famicom Disk System" - }, - "fm7": { - "name": "Fujitsu FM-7" - }, - "fmtowns": { - "name": "Fujitsu FM Towns" - }, - "gamate": { - "name": "Bit Corporation Gamate" - }, - "gameandwatch": { - "name": "Nintendo Game and Watch" - }, - "gamecom": { - "name": "Tiger Electronics Game.com" - }, - "gamegear": { - "name": "Sega Game Gear" - }, - "gg": { - "name": "Sega Game Gear" - }, - "gb": { - "name": "Nintendo Game Boy" - }, - "gba": { - "name": "Nintendo Game Boy Advance" - }, - "gbc": { - "name": "Nintendo Game Boy Color" - }, - "gc": { - "name": "Nintendo GameCube" - }, - "genesis": { - "name": "Sega Genesis" - }, - "gmaster": { - "name": "Hartung Game Master" - }, - "gx4000": { - "name": "Amstrad GX4000" - }, - "intellivision": { - "name": "Mattel Electronics Intellivision" - }, - "j2me": { - "name": "Java 2 Micro Edition (J2ME)" - }, - "laserdisc": { - "name": "LaserDisc Games" - }, - "lcdgames": { - "name": "LCD Handheld Games" - }, - "lowresnx": { - "name": "LowRes NX Fantasy Console" - }, - "lutris": { - "name": "Lutris Open Gaming Platform" - }, - "lutro": { - "name": "Lutro Game Engine" - }, - "macintosh": { - "name": "Apple Macintosh" - }, - "mame": { - "name": "Multiple Arcade Machine Emulator" - }, - "mastersystem": { - "name": "Sega Master System" - }, - "megacd": { - "name": "Sega Mega-CD" - }, - "megacdjp": { - "name": "Sega Mega-CD (Japan)" - }, - "megadrive": { - "name": "Sega Mega Drive" - }, - "megaduck": { - "name": "Creatronic Mega Duck" - }, - "mess": { - "name": "Multi Emulator Super System" - }, - "model2": { - "name": "Sega Model 2" - }, - "moto": { - "name": "Thomson MO/TO Series" - }, - "msx": { - "name": "MSX" - }, - "msx1": { - "name": "MSX1" - }, - "msx2": { - "name": "MSX2" - }, - "msxturbor": { - "name": "MSX Turbo R" - }, - "mugen": { - "name": "M.U.G.E.N Game Engine" - }, - "multivision": { - "name": "Othello Multivision" - }, - "n3ds": { - "name": "Nintendo 3DS" - }, - "n64": { - "name": "Nintendo 64" - }, - "n64dd": { - "name": "Nintendo 64DD" - }, - "naomi": { - "name": "Sega NAOMI" - }, - "naomi2": { - "name": "Sega NAOMI 2" - }, - "naomigd": { - "name": "Sega NAOMI GD-ROM" - }, - "nds": { - "name": "Nintendo DS" - }, - "neogeo": { - "name": "SNK Neo Geo" - }, - "neogeocd": { - "name": "SNK Neo Geo CD" - }, - "neogeocdjp": { - "name": "SNK Neo Geo CD (Japan)" - }, - "nes": { - "name": "Nintendo Entertainment System" - }, - "ngp": { - "name": "SNK Neo Geo Pocket" - }, - "ngpc": { - "name": "SNK Neo Geo Pocket Color" - }, - "odyssey2": { - "name": "Magnavox Odyssey 2" - }, - "openbor": { - "name": "OpenBOR Game Engine" - }, - "palm": { - "name": "Palm OS" - }, - "pc": { - "name": "IBM PC" - }, - "pc88": { - "name": "NEC PC-8800 Series" - }, - "pc98": { - "name": "NEC PC-9800 Series" - }, - "pcarcade": { - "name": "PC Arcade Systems" - }, - "pcengine": { - "name": "NEC PC Engine" - }, - "pcenginecd": { - "name": "NEC PC Engine CD" - }, - "pcfx": { - "name": "NEC PC-FX" - }, - "pico8": { - "name": "PICO-8 Fantasy Console" - }, - "plus4": { - "name": "Commodore Plus/4" - }, - "pokemini": { - "name": "Nintendo Pokémon Mini" - }, - "ports": { - "name": "Ports" - }, - "ps2": { - "name": "Sony PlayStation 2" - }, - "ps3": { - "name": "Sony PlayStation 3" - }, - "psp": { - "name": "Sony PlayStation Portable" - }, - "psvita": { - "name": "Sony PlayStation Vita" - }, - "psx": { - "name": "Sony PlayStation" - }, - "pv1000": { - "name": "Casio PV-1000" - }, - "quake": { - "name": "Quake" - }, - "satellaview": { - "name": "Nintendo Satellaview" - }, - "saturn": { - "name": "Sega Saturn" - }, - "saturnjp": { - "name": "Sega Saturn (Japan)" - }, - "scummvm": { - "name": "ScummVM Game Engine" - }, - "scv": { - "name": "Epoch Super Cassette Vision" - }, - "sega32x": { - "name": "Sega Mega Drive 32X" - }, - "sega32xjp": { - "name": "Sega Super 32X (Japan)" - }, - "sega32xna": { - "name": "Sega Genesis 32X" - }, - "segacd": { - "name": "Sega CD" - }, - "sfc": { - "name": "Nintendo SFC (Super Famicom)" - }, - "sg-1000": { - "name": "Sega SG-1000" - }, - "sgb": { - "name": "Nintendo Super Game Boy" - }, - "snes": { - "name": "Nintendo SNES (Super Nintendo)" - }, - "snesna": { - "name": "Nintendo SNES (Super Nintendo)" - }, - "solarus": { - "name": "Solarus Game Engine" - }, - "spectravideo": { - "name": "Spectravideo" - }, - "stv": { - "name": "Sega Titan Video Game System" - }, - "sufami": { - "name": "Bandai SuFami Turbo" - }, - "supergrafx": { - "name": "NEC SuperGrafx" - }, - "supervision": { - "name": "Watara Supervision" - }, - "supracan": { - "name": "Funtech Super A'Can" - }, - "switch": { - "name": "Nintendo Switch" - }, - "tg-cd": { - "name": "NEC TurboGrafx-CD" - }, - "tg16": { - "name": "NEC TurboGrafx-16" - }, - "ti99": { - "name": "Texas Instruments TI-99" - }, - "tic80": { - "name": "TIC-80 Fantasy Computer" - }, - "to8": { - "name": "Thomson TO8" - }, - "uzebox": { - "name": "Uzebox Open Source Console" - }, - "vectrex": { - "name": "GCE Vectrex" - }, - "vic20": { - "name": "Commodore VIC-20" - }, - "videopac": { - "name": "Philips Videopac G7000" - }, - "virtualboy": { - "name": "Nintendo Virtual Boy" - }, - "vsmile": { - "name": "VTech V.Smile" - }, - "wasm4": { - "name": "WASM-4 Fantasy Console" - }, - "wii": { - "name": "Nintendo Wii" - }, - "wiiu": { - "name": "Nintendo Wii U" - }, - "windows": { - "name": "Microsoft Windows" - }, - "windows3x": { - "name": "Microsoft Windows 3.x" - }, - "windows9x": { - "name": "Microsoft Windows 9x" - }, - "wonderswan": { - "name": "Bandai WonderSwan" - }, - "wonderswancolor": { - "name": "Bandai WonderSwan Color" - }, - "x1": { - "name": "Sharp X1" - }, - "x68000": { - "name": "Sharp X68000" - }, - "xbox": { - "name": "Microsoft Xbox" - }, - "zx81": { - "name": "Sinclair ZX81" - }, - "zxspectrum": { - "name": "Sinclair ZX Spectrum" - } - }, - "emulator": { - "retroarch": { - "description": "RetroArch (Multi-emulator Frontend)", - "name": "RetroArch", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/retroarch/retroarch-guide/", - "launch": "retroarch", - "system": "retroarch", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true, - "quick_resume": true - } - ], - "cores": { - "citra_libretro": { - "description": "Nintendo 3DS Libretro Core", - "name": "Citra", - "system": "n3ds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "mame_libretro": { - "description": "MAME: Multiple Arcade Machine Libretro Core", - "name": "MAME", - "system": "arcade", - "properties": [ - { - "tate_mode": true - } - ] - }, - "desmume_libretro": { - "description": "DeSmuME Nintendo DS Libretro Core", - "name": "desmume", - "system": "nds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "melonds_libretro": { - "description": "MelonDS Nintendo DS Libretro Core", - "name": "melonds", - "system": "nds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "swanstation_libretro": { - "name": "SwanStation", - "description": "Swanstation Libretro Core", - "system": "psx", - "properties": [ - { - "widescreen": true, - "borders": true - } - ] - }, - "picodrive_libretro": { - "name": "PicoDrive", - "description": "SEGA MS/MD/CD/32X Libretro Core", - "system": [ - "ms", - "md", - "cd", - "32x" - ], - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgx_libretro": { - "name": "Genesis Plus GX", - "description": "SEGA MS/GG/MD/CD Libretro Core", - "system": [ - "ms", - "gg", - "mc", - "cd" - ], - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgxwide_libretro": { - "name": "Genesis Plus GX Wide", - "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", - "system": [ - "ms", - "gg", - "mc", - "cd" - ], - "properties": [ - { - "widescreen": true, - "rewind": true - } - ] - }, - "mupen64plus-next_libretro": { - "name": "Mupen64Plus-Next", - "description": "Nintendo 64 Libretro Core", - "system": "n64", - "properties": [ - { - "widescreen": true, - "borders": true, - "abxy_button": true - } - ] - }, - "snes9x-current_libretro": { - "name": "Snes9x - Current", - "description": "Super Nintendo Libretro Core", - "system": "snes", - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "gambatte_libretro": { - "name": "Gambatte", - "description": "Game Boy/Color Libretro Core", - "system": [ - "gb", - "gbc" - ], - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "mgba_libretro": { - "name": "mGBA", - "description": "Game Boy Advance Libretro Core", - "system": "gba", - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - } - } - }, - "mame": { - "description": "MAME: Multiple Arcade Machine Emulator", - "name": "MAME", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/mame/mame-guide/", - "system": [ - "arcade" - ], - "launch": "mame", - "launch-args": "-inipath /var/config/mame/ini -rompath $(dirname \"$game\") $game" - }, - "citra": { - "description": "Citra Nintendo 3DS Emulator (via Ponzu)", - "name": "Citra (via Ponzu)", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", - "system": "n3ds", - "ponzu": true, - "launch": "citra-qt", - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true - } - ] - }, - "ruffle": { - "description": "Flash Games emulator", - "name" : "Ruffle", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", - "system" : "flash", - "launch": "ruffle-rd-wrapper.sh" - }, - "melonds": { - "description": "MelonDS Nintendo DS Emulator", - "name": "melonds", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/melonds/melonds-guide/", - "system": "nds", - "launch": "melonDS" - }, - "pcsx2": { - "name": "pcsx2", - "description": "PCSX2 Play Station 2 Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/pcsx2/pcsx2-guide/", - "system": "ps2", - "launch": "pcsx2-qt", - "launch-args": "-batch $game", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - }, - "duckstation": { - "name": "Duckstation", - "description": "PlayStation Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/duckstation/duckstation-guide/", - "launch": "duckstation-qt", - "launch-args": "-batch $game", - "system": "psx", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - }, - "ppsspp": { - "name": "PPSSPP", - "description": "PPSSPP: PlayStation Portable Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ppsspp/ppsspp-guide/", - "launch": "PPSSPPSDL", - "system": "psp", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true - } - ] - }, - "vita3k": { - "name": "Vita3k", - "description": "Vita3K PSVita Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/", - "system": "psvita", - "launch": "Vita3K", - "launch-args": "-r $game.psvita" - }, - "rpcs3": { - "name": "RPCS3", - "description": "RPCS3 PlayStation 3 Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/rpcs3/rpcs3-guide/", - "system": "ps3", - "launch": "rpcs3", - "launch-override": "cd $(dirname $game) && rpcs3 $game", - "properties": [ - { - "ask_to_exit": true - } - ] - }, - "ryujinx": { - "name": "Ryujinx", - "description": "Ryujinx Nintendo Switch Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ryujinx/ryujinx-guide/", - "system": "switch", - "launch": "Ryujinx.sh" - }, - "yuzu": { - "name": "Yuzu (via Ponzu)", - "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", - "launch": "Yuzu", - "system": "switch", - "launch-args": "-f -g $game", - "ponzu": true, - "abxy_button": true - }, - "dolphin": { - "name": "Dolphin", - "description": "Dolphin Wii and GameCube Emulator", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", - "launch": "dolphin-emu-wrapper", - "launch-args": "-e $game", - "system": [ - "gc", - "wii" - ], - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true, - "cheevos": true, - "cheevos_hardcore": true, - "universal_dyn_input": true - } - ] - }, - "primehack": { - "name": "PrimeHack", - "description": "A fork of Dolphiin to enhance Metroid Prime experience", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", - "launch": "primehack-wrapper", - "launch-args": "-e $game", - "system": [ - "wii" - ], - "properties": [ - { - "ask_to_exit": true, - "universal_dyn_input": true - } - ] - }, - "cemu": { - "description": "Wii U emulator", - "name": "Cemu", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/cemu/cemu-guide/", - "system": "wiiu", - "launch": "Cemu-wrapper", - "launch-args": "-g $game", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir": "Cemu" - } - ] - }, - "xemu": { - "description": "xemu Xbox Emulator", - "name": "xemu", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/xemu/xemu-guide/", - "system": "xbox", - "launch": "xemu", - "launch-args": "-dvd_path $game" - }, - "es-de": { - "description": "ES-DE Emulation Frontend", - "name": "ES-DE", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/.", - "launch": "es-de" + "about_links": { + "rd_changelog": { + "description": "Opens the RetroDECK change log in your default browser", + "name": "Changelog", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_contactus": { + "description": "Opens the RetroDECK contact us section in your default browser", + "name": "Contact us", + "url": "https://github.com/XargonWan/RetroDECK", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_credits": { + "description": "Opens the RetroDECK Credits in your default browser", + "name": "Credits", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_donate": { + "description": "Opens Donations page in your default browser", + "name": "Donate", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_licenses": { + "description": "Opens the RetroDECK licenses in your default browser", + "name": "Licences", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_web": { + "description": "Opens the RetroDECK Website in your default browser", + "name": "Website", + "url": "https://retrodeck.net/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_wiki": { + "description": "Opens the RetroDECK Wiki in your default browser", + "name": "Wiki", + "url": "https://retrodeck.readthedocs.io/en/latest/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + } + }, + "finit_default_options": { + "rd_controller_profile": { + "name": "RetroDECK Steam Controller Profiles Install", + "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", + "enabled": true + }, + "rpcs3_firmware": { + "name": "RPCS3 Firmware Install", + "description": "Install firmware needed for PS3 emulation", + "enabled": false + }, + "vita3k_firmware": { + "name": "Vita3K Firmware Install", + "description": "Install firmware needed for Vita3K emulation", + "enabled": false + } + }, + "splash_screens": { + "xmas": { + "start_date": "1201", + "end_date": "1231", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-xmas-splash.svg" + }, + "lunar_dragon": { + "start_date": "0209", + "end_date": "0212", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-lunar-dragon-splash.svg" + }, + "valentines_day": { + "start_date": "0214", + "end_date": "0214", + "start_time": "0001", + "end_time": "2359", + "filename": "rd-valentines-splash.svg" + }, + "retrodeck_birthday": { + "start_date": "0304", + "end_date": "0304", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-gm-bday-splash.svg" + }, + "st_patricks_day": { + "start_date": "0317", + "end_date": "0317", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-stpatricks-splash.svg" + }, + "kodomo_golden_week": { + "start_date": "0429", + "end_date": "0505", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-kodomo-golden.svg" + }, + "tanabata": { + "start_date": "0707", + "end_date": "0707", + "start_time": "0000", + "end_time": "2359", + "filename": "tanabata.svg" + }, + "mountain_day": { + "start_date": "0811", + "end_date": "0811", + "start_time": "0000", + "end_time": "2359", + "filename": "placeholder.svg" + }, + "obon": { + "start_date": "0813", + "end_date": "0816", + "start_time": "0000", + "end_time": "2359", + "filename": "placeholder.svg" + } + }, + "incompatible_presets": { + "borders": "widescreen" + }, + "helper_files": { + "dolphin_mods": { + "filename": "how-to-install-dolphin-mods.txt", + "location": "$mods_folder/Dolphin" + }, + "primehack_mods": { + "filename": "how-to-install-primehack-mods.txt", + "location": "$mods_folder/Primehack" + }, + "mesen_textures": { + "filename": "how-to-install-Mesen-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mesen" + }, + "ppsspp_textures": { + "filename": "how-to-install-PPSSPP-textures.txt", + "location": "$texture_packs_folder/PPSSPP" + }, + "pcsx2_textures": { + "filename": "how-to-install-PCSX2-textures.txt", + "location": "$texture_packs_folder/PCSX2" + }, + "mupen64plus_cache_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" + }, + "mupen64plus_hires_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" + }, + "duckstation_textures": { + "filename": "how-to-install-Duckstation-textures.txt", + "location": "$texture_packs_folder/Duckstation" + }, + "psvita_games": { + "filename": "how-to-install-psvita-games.txt", + "location": "$roms_folder/psvita" + }, + "ryujinx_firmware": { + "filename": "Install-firmware-through-Ryujinx.txt", + "location": "$bios_folder/switch/firmware" + } + }, + "compression_targets": { + "chd": [ + "3do", + "amigacd32", + "dreamcast", + "megacd", + "neogeocd", + "pcenginecd", + "pcfx", + "psp", + "psx", + "ps2", + "saturn", + "saturnjp", + "segacd", + "tg-cd" + ], + "rvz": [ + "gc", + "wii" + ], + "zip": [ + "atari2600", + "atari5200", + "atari7800", + "atari800", + "atarijaguar", + "atarilynx", + "atarist", + "gamegear", + "gb", + "gba", + "gbc", + "genesis", + "mastersystem", + "n64", + "nds", + "nes", + "ngp", + "ngpc", + "sega32x", + "sega32xjp", + "sega32xna", + "snes", + "snesna", + "tg16" + ] + }, + "zip_compressable_extensions": [ + ".32x", + ".68k", + ".NDS", + ".a26", + ".a52", + ".a78", + ".abs", + ".agb", + ".atr", + ".atx", + ".bin", + ".bml", + ".bms", + ".bs", + ".bsx", + ".cas", + ".cdm", + ".cgb", + ".cof", + ".col", + ".dim", + ".dmg", + ".dx2", + ".fds", + ".fig", + ".gb", + ".gba", + ".gbc", + ".gd3", + ".gd7", + ".gen", + ".gg", + ".ipf", + ".j64", + ".jag", + ".lnx", + ".md", + ".mdx", + ".mgd", + ".msa", + ".nds", + ".nes", + ".ngc", + ".o", + ".pce", + ".prg", + ".rom", + ".sfc", + ".sg", + ".sgb", + ".sgd", + ".smc", + ".smd", + ".sms", + ".st", + ".st", + ".stx", + ".swc", + ".unf", + ".unif", + ".xex", + ".xfd", + ".z64" + ], + "system": { + "3do": { + "name": "3DO Interactive Multiplayer" + }, + "adam": { + "name": "Coleco Adam" + }, + "amiga": { + "name": "Commodore Amiga" + }, + "amiga1200": { + "name": "Commodore Amiga 1200" + }, + "amiga600": { + "name": "Commodore Amiga 600" + }, + "amigacd32": { + "name": "Commodore Amiga CD32" + }, + "amstradcpc": { + "name": "Amstrad CPC" + }, + "apple2": { + "name": "Apple II" + }, + "apple2gs": { + "name": "Apple IIGS" + }, + "arcade": { + "name": "Arcade" + }, + "arcadia": { + "name": "Emerson Arcadia 2001" + }, + "archimedes": { + "name": "Acorn Archimedes" + }, + "arduboy": { + "name": "Arduboy Miniature Game System" + }, + "astrocde": { + "name": "Bally Astrocade" + }, + "atari2600": { + "name": "Atari 2600" + }, + "atari5200": { + "name": "Atari 5200" + }, + "atari7800": { + "name": "Atari 7800 ProSystem" + }, + "atari800": { + "name": "Atari 800" + }, + "atarijaguar": { + "name": "Atari Jaguar" + }, + "atarilynx": { + "name": "Atari Lynx" + }, + "atarist": { + "name": "Atari ST" + }, + "atarixe": { + "name": "Atari XE" + }, + "atomiswave": { + "name": "Sammy Corporation Atomiswave" + }, + "bbcmicro": { + "name": "Acorn Computers BBC Micro" + }, + "c64": { + "name": "Commodore 64" + }, + "cdimono1": { + "name": "Philips CD-i" + }, + "cdtv": { + "name": "Commodore CDTV" + }, + "chailove": { + "name": "ChaiLove Game Engine" + }, + "channelf": { + "name": "Fairchild Channel F" + }, + "colecovision": { + "name": "Coleco ColecoVision" + }, + "consolearcade": { + "name": "Console Arcade Systems" + }, + "cps": { + "name": "Capcom Play System" + }, + "cps1": { + "name": "Capcom Play System I" + }, + "cps2": { + "name": "Capcom Play System II" + }, + "cps3": { + "name": "Capcom Play System III" + }, + "crvision": { + "name": "VTech CreatiVision" + }, + "daphne": { + "name": "Daphne Arcade LaserDisc Emulator" + }, + "desktop": { + "name": "Desktop Applications" + }, + "doom": { + "name": "Doom" + }, + "dos": { + "name": "DOS (PC)" + }, + "dreamcast": { + "name": "Sega Dreamcast" + }, + "dc": { + "name": "Sega Dreamcast" + }, + "easyrpg": { + "name": "EasyRPG Game Engine" + }, + "electron": { + "name": "Acorn Electron" + }, + "emulators": { + "name": "Emulators" + }, + "famicom": { + "name": "Nintendo Family Computer" + }, + "fba": { + "name": "FinalBurn Alpha" + }, + "fbneo": { + "name": "FinalBurn Neo" + }, + "fds": { + "name": "Nintendo Famicom Disk System" + }, + "fm7": { + "name": "Fujitsu FM-7" + }, + "fmtowns": { + "name": "Fujitsu FM Towns" + }, + "gamate": { + "name": "Bit Corporation Gamate" + }, + "gameandwatch": { + "name": "Nintendo Game and Watch" + }, + "gamecom": { + "name": "Tiger Electronics Game.com" + }, + "gamegear": { + "name": "Sega Game Gear" + }, + "gg": { + "name": "Sega Game Gear" + }, + "gb": { + "name": "Nintendo Game Boy" + }, + "gba": { + "name": "Nintendo Game Boy Advance" + }, + "gbc": { + "name": "Nintendo Game Boy Color" + }, + "gc": { + "name": "Nintendo GameCube" + }, + "genesis": { + "name": "Sega Genesis" + }, + "gmaster": { + "name": "Hartung Game Master" + }, + "gx4000": { + "name": "Amstrad GX4000" + }, + "intellivision": { + "name": "Mattel Electronics Intellivision" + }, + "j2me": { + "name": "Java 2 Micro Edition (J2ME)" + }, + "laserdisc": { + "name": "LaserDisc Games" + }, + "lcdgames": { + "name": "LCD Handheld Games" + }, + "lowresnx": { + "name": "LowRes NX Fantasy Console" + }, + "lutris": { + "name": "Lutris Open Gaming Platform" + }, + "lutro": { + "name": "Lutro Game Engine" + }, + "macintosh": { + "name": "Apple Macintosh" + }, + "mame": { + "name": "Multiple Arcade Machine Emulator" + }, + "mastersystem": { + "name": "Sega Master System" + }, + "megacd": { + "name": "Sega Mega-CD" + }, + "megacdjp": { + "name": "Sega Mega-CD (Japan)" + }, + "megadrive": { + "name": "Sega Mega Drive" + }, + "megaduck": { + "name": "Creatronic Mega Duck" + }, + "mess": { + "name": "Multi Emulator Super System" + }, + "model2": { + "name": "Sega Model 2" + }, + "moto": { + "name": "Thomson MO/TO Series" + }, + "msx": { + "name": "MSX" + }, + "msx1": { + "name": "MSX1" + }, + "msx2": { + "name": "MSX2" + }, + "msxturbor": { + "name": "MSX Turbo R" + }, + "mugen": { + "name": "M.U.G.E.N Game Engine" + }, + "multivision": { + "name": "Othello Multivision" + }, + "n3ds": { + "name": "Nintendo 3DS" + }, + "n64": { + "name": "Nintendo 64" + }, + "n64dd": { + "name": "Nintendo 64DD" + }, + "naomi": { + "name": "Sega NAOMI" + }, + "naomi2": { + "name": "Sega NAOMI 2" + }, + "naomigd": { + "name": "Sega NAOMI GD-ROM" + }, + "nds": { + "name": "Nintendo DS" + }, + "neogeo": { + "name": "SNK Neo Geo" + }, + "neogeocd": { + "name": "SNK Neo Geo CD" + }, + "neogeocdjp": { + "name": "SNK Neo Geo CD (Japan)" + }, + "nes": { + "name": "Nintendo Entertainment System" + }, + "ngp": { + "name": "SNK Neo Geo Pocket" + }, + "ngpc": { + "name": "SNK Neo Geo Pocket Color" + }, + "odyssey2": { + "name": "Magnavox Odyssey 2" + }, + "openbor": { + "name": "OpenBOR Game Engine" + }, + "palm": { + "name": "Palm OS" + }, + "pc": { + "name": "IBM PC" + }, + "pc88": { + "name": "NEC PC-8800 Series" + }, + "pc98": { + "name": "NEC PC-9800 Series" + }, + "pcarcade": { + "name": "PC Arcade Systems" + }, + "pcengine": { + "name": "NEC PC Engine" + }, + "pcenginecd": { + "name": "NEC PC Engine CD" + }, + "pcfx": { + "name": "NEC PC-FX" + }, + "pico8": { + "name": "PICO-8 Fantasy Console" + }, + "plus4": { + "name": "Commodore Plus/4" + }, + "pokemini": { + "name": "Nintendo Pokémon Mini" + }, + "ports": { + "name": "Ports" + }, + "ps2": { + "name": "Sony PlayStation 2" + }, + "ps3": { + "name": "Sony PlayStation 3" + }, + "psp": { + "name": "Sony PlayStation Portable" + }, + "psvita": { + "name": "Sony PlayStation Vita" + }, + "psx": { + "name": "Sony PlayStation" + }, + "pv1000": { + "name": "Casio PV-1000" + }, + "quake": { + "name": "Quake" + }, + "satellaview": { + "name": "Nintendo Satellaview" + }, + "saturn": { + "name": "Sega Saturn" + }, + "saturnjp": { + "name": "Sega Saturn (Japan)" + }, + "scummvm": { + "name": "ScummVM Game Engine" + }, + "scv": { + "name": "Epoch Super Cassette Vision" + }, + "sega32x": { + "name": "Sega Mega Drive 32X" + }, + "sega32xjp": { + "name": "Sega Super 32X (Japan)" + }, + "sega32xna": { + "name": "Sega Genesis 32X" + }, + "segacd": { + "name": "Sega CD" + }, + "sfc": { + "name": "Nintendo SFC (Super Famicom)" + }, + "sg-1000": { + "name": "Sega SG-1000" + }, + "sgb": { + "name": "Nintendo Super Game Boy" + }, + "snes": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "snesna": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "solarus": { + "name": "Solarus Game Engine" + }, + "spectravideo": { + "name": "Spectravideo" + }, + "stv": { + "name": "Sega Titan Video Game System" + }, + "sufami": { + "name": "Bandai SuFami Turbo" + }, + "supergrafx": { + "name": "NEC SuperGrafx" + }, + "supervision": { + "name": "Watara Supervision" + }, + "supracan": { + "name": "Funtech Super A'Can" + }, + "switch": { + "name": "Nintendo Switch" + }, + "tg-cd": { + "name": "NEC TurboGrafx-CD" + }, + "tg16": { + "name": "NEC TurboGrafx-16" + }, + "ti99": { + "name": "Texas Instruments TI-99" + }, + "tic80": { + "name": "TIC-80 Fantasy Computer" + }, + "to8": { + "name": "Thomson TO8" + }, + "uzebox": { + "name": "Uzebox Open Source Console" + }, + "vectrex": { + "name": "GCE Vectrex" + }, + "vic20": { + "name": "Commodore VIC-20" + }, + "videopac": { + "name": "Philips Videopac G7000" + }, + "virtualboy": { + "name": "Nintendo Virtual Boy" + }, + "vsmile": { + "name": "VTech V.Smile" + }, + "wasm4": { + "name": "WASM-4 Fantasy Console" + }, + "wii": { + "name": "Nintendo Wii" + }, + "wiiu": { + "name": "Nintendo Wii U" + }, + "windows": { + "name": "Microsoft Windows" + }, + "windows3x": { + "name": "Microsoft Windows 3.x" + }, + "windows9x": { + "name": "Microsoft Windows 9x" + }, + "wonderswan": { + "name": "Bandai WonderSwan" + }, + "wonderswancolor": { + "name": "Bandai WonderSwan Color" + }, + "x1": { + "name": "Sharp X1" + }, + "x68000": { + "name": "Sharp X68000" + }, + "xbox": { + "name": "Microsoft Xbox" + }, + "zx81": { + "name": "Sinclair ZX81" + }, + "zxspectrum": { + "name": "Sinclair ZX Spectrum" + } + }, + "emulator": { + "retroarch": { + "description": "RetroArch (Multi-emulator Frontend)", + "name": "RetroArch", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/retroarch/retroarch-guide/", + "launch": "retroarch", + "system": "retroarch", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true, + "quick_resume": true + } + ], + "cores": { + "citra_libretro": { + "description": "Nintendo 3DS Libretro Core", + "name": "Citra", + "system": "n3ds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "mame_libretro": { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "system": "arcade", + "properties": [ + { + "tate_mode": true + } + ] + }, + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation Libretro Core", + "system": "psx", + "properties": [ + { + "widescreen": true, + "borders": true + } + ] + }, + "picodrive_libretro": { + "name": "PicoDrive", + "description": "SEGA MS/MD/CD/32X Libretro Core", + "system": [ + "ms", + "md", + "cd", + "32x" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgx_libretro": { + "name": "Genesis Plus GX", + "description": "SEGA MS/GG/MD/CD Libretro Core", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgxwide_libretro": { + "name": "Genesis Plus GX Wide", + "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "rewind": true + } + ] + }, + "mupen64plus-next_libretro": { + "name": "Mupen64Plus-Next", + "description": "Nintendo 64 Libretro Core", + "system": "n64", + "properties": [ + { + "widescreen": true, + "borders": true, + "abxy_button": true + } + ] + }, + "snes9x-current_libretro": { + "name": "Snes9x - Current", + "description": "Super Nintendo Libretro Core", + "system": "snes", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "gambatte_libretro": { + "name": "Gambatte", + "description": "Game Boy/Color Libretro Core", + "system": [ + "gb", + "gbc" + ], + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "mgba_libretro": { + "name": "mGBA", + "description": "Game Boy Advance Libretro Core", + "system": "gba", + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + } + } + }, + "mame": { + "description": "MAME: Multiple Arcade Machine Emulator", + "name": "MAME", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/mame/mame-guide/", + "system": [ + "arcade" + ], + "launch": "mame", + "launch-args": "-inipath /var/config/mame/ini -rompath $(dirname \"$game\") $game" + }, + "citra": { + "description": "Citra Nintendo 3DS Emulator (via Ponzu)", + "name": "Citra (via Ponzu)", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "system": "n3ds", + "ponzu": true, + "launch": "citra-qt", + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true + } + ] + }, + "ruffle": { + "description": "Flash Games emulator", + "name": "Ruffle", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "system": "flash", + "launch": "ruffle-rd-wrapper.sh" + }, + "melonds": { + "description": "MelonDS Nintendo DS Emulator", + "name": "melonds", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/melonds/melonds-guide/", + "system": "nds", + "launch": "melonDS" + }, + "pcsx2": { + "name": "pcsx2", + "description": "PCSX2 Play Station 2 Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/pcsx2/pcsx2-guide/", + "system": "ps2", + "launch": "pcsx2-qt", + "launch-args": "-batch $game", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "duckstation": { + "name": "Duckstation", + "description": "PlayStation Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/duckstation/duckstation-guide/", + "launch": "duckstation-qt", + "launch-args": "-batch $game", + "system": "psx", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "ppsspp": { + "name": "PPSSPP", + "description": "PPSSPP: PlayStation Portable Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ppsspp/ppsspp-guide/", + "launch": "PPSSPPSDL", + "system": "psp", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true + } + ] + }, + "vita3k": { + "name": "Vita3k", + "description": "Vita3K PSVita Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/", + "system": "psvita", + "launch": "Vita3K", + "launch-args": "-r $game.psvita" + }, + "rpcs3": { + "name": "RPCS3", + "description": "RPCS3 PlayStation 3 Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/rpcs3/rpcs3-guide/", + "system": "ps3", + "launch": "rpcs3", + "launch-override": "cd $(dirname $game) && rpcs3 $game", + "properties": [ + { + "ask_to_exit": true + } + ] + }, + "ryujinx": { + "name": "Ryujinx", + "description": "Ryujinx Nintendo Switch Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ryujinx/ryujinx-guide/", + "system": "switch", + "launch": "Ryujinx.sh" + }, + "yuzu": { + "name": "Yuzu (via Ponzu)", + "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "launch": "Yuzu", + "system": "switch", + "launch-args": "-f -g $game", + "ponzu": true, + "abxy_button": true + }, + "dolphin": { + "name": "Dolphin", + "description": "Dolphin Wii and GameCube Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", + "launch": "dolphin-emu-wrapper", + "launch-args": "-e $game", + "system": [ + "gc", + "wii" + ], + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true, + "cheevos": true, + "cheevos_hardcore": true, + "universal_dyn_input": true + } + ] + }, + "primehack": { + "name": "PrimeHack", + "description": "A fork of Dolphiin to enhance Metroid Prime experience", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", + "launch": "primehack-wrapper", + "launch-args": "-e $game", + "system": [ + "wii" + ], + "properties": [ + { + "ask_to_exit": true, + "universal_dyn_input": true + } + ] + }, + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/cemu/cemu-guide/", + "system": "wiiu", + "launch": "Cemu-wrapper", + "launch-args": "-g $game", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir": "Cemu" + } + ] + }, + "xemu": { + "description": "xemu Xbox Emulator", + "name": "xemu", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/xemu/xemu-guide/", + "system": "xbox", + "launch": "xemu", + "launch-args": "-dvd_path $game" + }, + "es-de": { + "description": "ES-DE Emulation Frontend", + "name": "ES-DE", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/.", + "launch": "es-de" }, "steam-rom-manager": { "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", "name": "Steam ROM Manager", "launch": "steam-rom-manager" - } - } + } } - \ No newline at end of file +} From bbec492569f51df8871f693cf28cc01240c00c3a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 10:42:54 +0900 Subject: [PATCH 61/72] FEATURES: fmt [skip ci] --- config/retrodeck/reference_lists/features.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 7cfe45ae..1612bfb1 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1133,11 +1133,11 @@ "name": "ES-DE", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/.", "launch": "es-de" - }, - "steam-rom-manager": { - "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", - "name": "Steam ROM Manager", - "launch": "steam-rom-manager" + }, + "steam-rom-manager": { + "description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)", + "name": "Steam ROM Manager", + "launch": "steam-rom-manager" } } } From e2ef2e8823b9eee29025e51de6b428860936b71b Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 18:41:40 +0900 Subject: [PATCH 62/72] RUN_GAME: now it's scraping the commands from es_systems and es_find_rules --- functions/other_functions.sh | 201 ++++++++++++++++++++++------------- 1 file changed, 128 insertions(+), 73 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 53ebf2d4..7b6fe033 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -892,12 +892,56 @@ start_retrodeck() { es-de } +find_emulator() { + local emulator_name=$1 + local found_path="" + + # Search the es_find_rules.xml file for the emulator + emulator_section=$(xmllint --xpath "//emulator[@name='$emulator_name']" "/app/share/es-de/resources/systems/linux/es_find_rules.xml" 2>/dev/null) + + if [ -z "$emulator_section" ]; then + echo "Emulator not found: $emulator_name" + return 1 + fi + + # Search systempath entries + while IFS= read -r line; do + command_path=$(echo "$line" | sed -n 's/.*\(.*\)<\/entry>.*/\1/p') + if [ -x "$(command -v $command_path)" ]; then + found_path=$command_path + break + fi + done <<< "$(echo "$emulator_section" | xmllint --xpath "//rule[@type='systempath']/entry" - 2>/dev/null)" + + # If not found, search staticpath entries + if [ -z "$found_path" ]; then + while IFS= read -r line; do + command_path=$(eval echo "$line" | sed -n 's/.*\(.*\)<\/entry>.*/\1/p') + if [ -x "$command_path" ]; then + found_path=$command_path + break + fi + done <<< "$(echo "$emulator_section" | xmllint --xpath "//rule[@type='staticpath']/entry" - 2>/dev/null)" + fi + + if [ -z "$found_path" ]; then + echo "No valid path found for emulator: $emulator_name" + return 1 + else + echo "$found_path" + return 0 + fi +} + run_game() { # Initialize variables emulator="" system="" + # Percorso al file XML es_systems.xml + xml_file="/app/share/es-de/resources/systems/linux/es_systems.xml" + # Parse options while getopts ":e:s:" opt; do case ${opt} in @@ -929,87 +973,98 @@ run_game() { system=$(echo "$game" | grep -oP '(?<=roms/)[^/]+') fi - log d "Emulator: $emulator" - log d "System: $system" - log d "Game: $game" + # Funzione per sostituire i placeholder + substitute_placeholders() { + local cmd="$1" + local rom_path="$game" + local rom_dir=$(dirname "$rom_path") + local base_name=$(basename "$rom_path" .ext) + local file_name=$(basename "$rom_path") + local rom_raw="$rom_path" + local rom_dir_raw="$rom_dir" + local es_path="/path/dell/emulatore" + local emulator_path="/path/dell/emulatore/bin" - # Query the features JSON for emulators that support the system - local emulators=$(jq -r --arg system "$system" ' - .emulator | to_entries[] | - select( - (.value.system == $system) or - (.value.system[]? == $system) - ) | .key' "$features") + # Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator + replace_emulator_placeholder() { + local placeholder=$1 + local emulator_name=${placeholder//"%EMULATOR_"/} # Extract emulator name from placeholder + emulator_name=${emulator_name//"%"/} # Remove the ending "%" + local emulator_exec=$(find_emulator "$emulator_name") + + if [[ -z "$emulator_exec" ]]; then + echo "Error: Emulator '$emulator_name' not found." + exit 1 + fi - # Check if the system is handled by RetroArch cores - local retroarch_cores=$(jq -r --arg system "$system" ' - .emulator.retroarch.cores | to_entries[] | - select( - .value.system == $system or - (.value.system[]? == $system) - ) | .key' "$features") + echo "$emulator_exec" + } - # if the emulator is given and it's a retroarch core just execute it - if [[ "$emulator" == *"_libretro" ]]; then - local core_path="/var/config/retroarch/cores/$emulator.so" - log d "Running RetroArch core: $core_path" - log d "Command: retroarch -L $core_path \"$game\"" - eval "retroarch -L $core_path \"$game\"" - return 1 - fi + # Use sed to find %EMULATOR_*% and replace with actual emulator executable by calling find_emulator + cmd=$(echo "$cmd" | sed -r 's/%EMULATOR_[A-Z0-9_]+%/$(replace_emulator_placeholder "&")/g') - # If the system is handled by RetroArch cores, add them to the list of emulators - if [[ -n "$retroarch_cores" ]]; then - emulators=$(echo -e "$emulators\n$retroarch_cores") - fi + # Sourcing the emulator command to ensure immediate execution of placeholders + cmd=$(eval echo "$cmd") - local pretty_system=$(jq -r --arg system "$system" '.system[$system].name' "$features") + # Ensure that paths with spaces are properly quoted + cmd="${cmd//"%ROM%"/"\"$rom_path\""}" + cmd="${cmd//"%BASENAME%"/"\"$base_name\""}" + cmd="${cmd//"%FILENAME%"/"\"$file_name\""}" + cmd="${cmd//"%ROMRAW%"/"\"$rom_raw\""}" + cmd="${cmd//"%ROMPATH%"/"\"$rom_dir\""}" + cmd="${cmd//"%ESPATH%"/"\"$es_path\""}" + cmd="${cmd//"%EMUDIR%"/"\"$emulator_path\""}" + cmd="${cmd//"%GAMEDIR%"/"\"$rom_dir\""}" + cmd="${cmd//"%GAMEDIRRAW%"/"\"$rom_dir_raw\""}" + cmd="${cmd//"%CORE_RETROARCH%"/"\"/var/config/retroarch/cores\""}" - # Check if multiple emulators are found and prompt the user to select one with zenity - if [[ $(echo "$emulators" | wc -l) -gt 1 ]]; then - emulator=$(echo "$emulators" | zenity --list --title="Select Emulator" --text="Multiple emulators found for $pretty_system. Select one to run." --column="Emulator") - else - emulator="$emulators" - fi + echo "$cmd" +} - # If no emulator was selected, exit - if [[ -z "$emulator" ]]; then - log e "No emulator selected. Exiting." - return 1 - fi - log d "Run game: selected emulator $emulator" - - # Handle RetroArch core separately - if [[ "$emulator" == *"_libretro" ]]; then - local core_path="/var/config/retroarch/cores/$emulator.so" - log d "Running RetroArch core: $core_path" - log d "Command: retroarch -L $core_path \"$game\"" - eval "retroarch -L $core_path \"$game\"" - else - # Check if launch-override exists - local launch_override=$(jq -r ".emulator.$emulator.\"launch-override\"" "$features") - if [[ "$launch_override" != "null" ]]; then - # Use launch-override - launch_override=${launch_override//\$game/\"$game\"} - log d "Using launch-override: $launch_override" - eval "$launch_override" - else - # Use standard launch and launch-args - local launch_command=$(jq -r ".emulator.$emulator.launch" "$features") - local launch_args=$(jq -r ".emulator.$emulator.\"launch-args\"" "$features") - log d "launch args: $launch_args" - - # Only add launch_args if they are not null - if [[ "$launch_args" != "null" ]]; then - # Replace $game in launch_args with the actual game path, quoting it to handle spaces - launch_args=${launch_args//\$game/\"$game\"} - log d "Command: \"$launch_command $launch_args\"" - eval "$launch_command $launch_args" - else - log d "Command: \"$launch_command\"" - eval "$launch_command \"$game\"" - fi + # Estrazione dei comandi da es_systems.xml per il sistema selezionato +find_system_commands() { + local system_name=$system + # Use xmllint to extract the system commands from the XML + system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) + + if [ -z "$system_section" ]; then + echo "System not found: $system_name" + exit 1 fi + + # Extract commands and labels + commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) + + # Prepare Zenity command list + command_list=() + while IFS= read -r line; do + label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') + command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') + + # Substitute placeholders in the command + command=$(substitute_placeholders "$command") + + # Add label and command to Zenity list (label first, command second) + command_list+=("$label" "$command") + done <<< "$commands" + + # Show the list with Zenity and return the **command** (second column) selected + selected_command=$(zenity --list --title="Select an emulator for $system_name" --column="Emulator" --column="Command" "${command_list[@]}" --width=800 --height=400 --print-column=2) + + echo "$selected_command" +} + + # Se l'emulatore non è specificato, chiedi all'utente di selezionarlo o prendilo dal file XML + if [[ -z "$emulator" ]]; then + emulator=$(find_system_commands) + fi + + if [[ -n "$emulator" ]]; then + log d "Running selected emulator: $emulator" + eval "$emulator" + else + log e "No emulator found or selected. Exiting." + return 1 fi } \ No newline at end of file From 21984292c0c7e024b07e5718dfd5468ae7f9f6d0 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 20:41:54 +0900 Subject: [PATCH 63/72] RUN_GAME: hiding full commands in zenity list --- functions/other_functions.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 7b6fe033..8543f5bd 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -933,6 +933,10 @@ find_emulator() { fi } + +# TODO: %INJECT% is not yet working (Dolphin, rpcs3, vita3k) +# TODO: add the logic of alt emulator and default emulator + run_game() { # Initialize variables @@ -1050,7 +1054,10 @@ find_system_commands() { done <<< "$commands" # Show the list with Zenity and return the **command** (second column) selected - selected_command=$(zenity --list --title="Select an emulator for $system_name" --column="Emulator" --column="Command" "${command_list[@]}" --width=800 --height=400 --print-column=2) + selected_command=$(zenity --list \ + --title="Select an emulator for $system_name" \ + --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ + --width=800 --height=400 --print-column=2 --hide-column=2) echo "$selected_command" } From c4a80119af93afc101c756c6fe2104f3a582d8b7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 21:36:28 +0900 Subject: [PATCH 64/72] RUN_GAME: adding %INJECT% logic --- functions/other_functions.sh | 152 ++++++++++++++++++++--------------- 1 file changed, 89 insertions(+), 63 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 8543f5bd..6dc58a4c 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -900,7 +900,7 @@ find_emulator() { emulator_section=$(xmllint --xpath "//emulator[@name='$emulator_name']" "/app/share/es-de/resources/systems/linux/es_find_rules.xml" 2>/dev/null) if [ -z "$emulator_section" ]; then - echo "Emulator not found: $emulator_name" + log e "Emulator not found: $emulator_name" return 1 fi @@ -925,16 +925,16 @@ find_emulator() { fi if [ -z "$found_path" ]; then - echo "No valid path found for emulator: $emulator_name" + log e "No valid path found for emulator: $emulator_name" return 1 else + log d "Found emulator: \"$found_path\"" echo "$found_path" return 0 fi } -# TODO: %INJECT% is not yet working (Dolphin, rpcs3, vita3k) # TODO: add the logic of alt emulator and default emulator run_game() { @@ -943,7 +943,7 @@ run_game() { emulator="" system="" - # Percorso al file XML es_systems.xml + # Path to the es_systems.xml file xml_file="/app/share/es-de/resources/systems/linux/es_systems.xml" # Parse options @@ -977,42 +977,68 @@ run_game() { system=$(echo "$game" | grep -oP '(?<=roms/)[^/]+') fi - # Funzione per sostituire i placeholder + log d "Game: \"$game\"" + log d "System: \"$system\"" + + # Function to handle the %INJECT% placeholder + handle_inject_placeholder() { + local cmd="$1" + + # Check if .esprefix file exists + local inject_file="${game}.esprefix" + + log d "Checking if \"${game}.esprefix\" exists" + + if [[ ! -f "$inject_file" ]]; then + # If the inject file does not exist, strip all forms of %INJECT% from the command + + log d "\"${game}.esprefix\" not existing" + + # This handles cases where %INJECT% might be in different forms: + # Strip %INJECT%="value", %INJECT%="", or just %INJECT%= + cmd="${cmd//%INJECT%=\"*\"/}" + cmd="${cmd//%INJECT%=/}" + cmd="${cmd//%INJECT%/}" + + cmd="${cmd//%BASENAME%.esprefix=\"*\"/}" + cmd="${cmd//%BASENAME%.esprefix=/}" + cmd="${cmd//%BASENAME%.esprefix/}" + + log d "Returning the following command:$cmd" + + echo "$cmd" + return + fi + + # If the .esprefix file exists, process its content + inject_content=$(head -c 4096 "$inject_file") + log i ".esprefix file found, injecting \"$inject_content\"" + cmd="${cmd//%INJECT%=\"$inject_file\"/$inject_content}" + echo "$cmd" + } + + + # Function to substitute the placeholders substitute_placeholders() { local cmd="$1" local rom_path="$game" local rom_dir=$(dirname "$rom_path") - local base_name=$(basename "$rom_path" .ext) + local base_name=$(basename "$rom_path" .psvita) # Ensure the .psvita extension is stripped local file_name=$(basename "$rom_path") local rom_raw="$rom_path" local rom_dir_raw="$rom_dir" - local es_path="/path/dell/emulatore" - local emulator_path="/path/dell/emulatore/bin" + local es_path="" + local emulator_path="" - # Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator - replace_emulator_placeholder() { - local placeholder=$1 - local emulator_name=${placeholder//"%EMULATOR_"/} # Extract emulator name from placeholder - emulator_name=${emulator_name//"%"/} # Remove the ending "%" - local emulator_exec=$(find_emulator "$emulator_name") - - if [[ -z "$emulator_exec" ]]; then - echo "Error: Emulator '$emulator_name' not found." - exit 1 - fi + # Handle %INJECT% placeholder if present + cmd=$(handle_inject_placeholder "$cmd") - echo "$emulator_exec" - } - - # Use sed to find %EMULATOR_*% and replace with actual emulator executable by calling find_emulator + # Substitute emulator path cmd=$(echo "$cmd" | sed -r 's/%EMULATOR_[A-Z0-9_]+%/$(replace_emulator_placeholder "&")/g') - # Sourcing the emulator command to ensure immediate execution of placeholders - cmd=$(eval echo "$cmd") - - # Ensure that paths with spaces are properly quoted + # Ensure that paths with spaces are properly quoted and substitute other placeholders cmd="${cmd//"%ROM%"/"\"$rom_path\""}" - cmd="${cmd//"%BASENAME%"/"\"$base_name\""}" + cmd="${cmd//"%BASENAME%"/"\"$base_name\""}" # Proper base name without extra .psvita cmd="${cmd//"%FILENAME%"/"\"$file_name\""}" cmd="${cmd//"%ROMRAW%"/"\"$rom_raw\""}" cmd="${cmd//"%ROMPATH%"/"\"$rom_dir\""}" @@ -1020,55 +1046,55 @@ run_game() { cmd="${cmd//"%EMUDIR%"/"\"$emulator_path\""}" cmd="${cmd//"%GAMEDIR%"/"\"$rom_dir\""}" cmd="${cmd//"%GAMEDIRRAW%"/"\"$rom_dir_raw\""}" - cmd="${cmd//"%CORE_RETROARCH%"/"\"/var/config/retroarch/cores\""}" + cmd="${cmd//"%CORE_RETROARCH%"/"/var/config/retroarch/cores"}" + log d "Final command: $cmd" # Log the final command for debugging echo "$cmd" } + # Extracting the commands from es_systems.xml for the selected system + find_system_commands() { + local system_name=$system + # Use xmllint to extract the system commands from the XML + system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) + + if [ -z "$system_section" ]; then + log e "System not found: $system_name" + exit 1 + fi - # Estrazione dei comandi da es_systems.xml per il sistema selezionato -find_system_commands() { - local system_name=$system - # Use xmllint to extract the system commands from the XML - system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) - - if [ -z "$system_section" ]; then - echo "System not found: $system_name" - exit 1 - fi + # Extract commands and labels + commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) - # Extract commands and labels - commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) + # Prepare Zenity command list + command_list=() + while IFS= read -r line; do + label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') + command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') + + # Substitute placeholders in the command + command=$(substitute_placeholders "$command") + + # Add label and command to Zenity list (label first, command second) + command_list+=("$label" "$command") + done <<< "$commands" - # Prepare Zenity command list - command_list=() - while IFS= read -r line; do - label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') - command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') - - # Substitute placeholders in the command - command=$(substitute_placeholders "$command") - - # Add label and command to Zenity list (label first, command second) - command_list+=("$label" "$command") - done <<< "$commands" + # Show the list with Zenity and return the **command** (second column) selected + selected_command=$(zenity --list \ + --title="Select an emulator for $system_name" \ + --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ + --width=800 --height=400 --print-column=2 --hide-column=2) - # Show the list with Zenity and return the **command** (second column) selected - selected_command=$(zenity --list \ - --title="Select an emulator for $system_name" \ - --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ - --width=800 --height=400 --print-column=2 --hide-column=2) + echo "$selected_command" + } - echo "$selected_command" -} - - # Se l'emulatore non è specificato, chiedi all'utente di selezionarlo o prendilo dal file XML + # If the emulator is not specified, ask the user to select it or get it from the XML file if [[ -z "$emulator" ]]; then emulator=$(find_system_commands) fi if [[ -n "$emulator" ]]; then - log d "Running selected emulator: $emulator" + log d "Running: $emulator" eval "$emulator" else log e "No emulator found or selected. Exiting." From 38806dabc1d1d5ec52bfe344aeaa225ead54588a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 22:13:26 +0900 Subject: [PATCH 65/72] RUN_GAME: working but looping --- functions/other_functions.sh | 183 +++++++++++++++++++---------------- 1 file changed, 102 insertions(+), 81 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 6dc58a4c..2330dcb5 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -936,6 +936,7 @@ find_emulator() { # TODO: add the logic of alt emulator and default emulator +# TODO: if the emulator is only one just skip the zenity and run it run_game() { @@ -983,109 +984,129 @@ run_game() { # Function to handle the %INJECT% placeholder handle_inject_placeholder() { local cmd="$1" - - # Check if .esprefix file exists - local inject_file="${game}.esprefix" - log d "Checking if \"${game}.esprefix\" exists" - - if [[ ! -f "$inject_file" ]]; then - # If the inject file does not exist, strip all forms of %INJECT% from the command - - log d "\"${game}.esprefix\" not existing" + # Find all occurrences of %INJECT%=something + while [[ "$cmd" =~ %INJECT%=(.*) ]]; do + inject_file="${BASH_REMATCH[1]}" # Extract the file name - # This handles cases where %INJECT% might be in different forms: - # Strip %INJECT%="value", %INJECT%="", or just %INJECT%= - cmd="${cmd//%INJECT%=\"*\"/}" - cmd="${cmd//%INJECT%=/}" - cmd="${cmd//%INJECT%/}" + # Prepend the directory path to ensure we have the full path to the file + inject_file_full_path="$rom_dir/$inject_file" - cmd="${cmd//%BASENAME%.esprefix=\"*\"/}" - cmd="${cmd//%BASENAME%.esprefix=/}" - cmd="${cmd//%BASENAME%.esprefix/}" + log d "Found %INJECT% pointing to file \"$inject_file_full_path\"" - log d "Returning the following command:$cmd" - - echo "$cmd" - return - fi + # Check if the file exists + if [[ -f "$inject_file_full_path" ]]; then + # Read the content of the file + inject_content=$(cat "$inject_file_full_path") + log i "File \"$inject_file_full_path\" found, injecting content \"$inject_content\"" + + # Replace the %INJECT% placeholder with the content of the file + cmd="${cmd//%INJECT%=$inject_file/$inject_content}" + else + log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." + # If the file does not exist, just remove the placeholder + cmd="${cmd//%INJECT%=$inject_file/}" + fi + done - # If the .esprefix file exists, process its content - inject_content=$(head -c 4096 "$inject_file") - log i ".esprefix file found, injecting \"$inject_content\"" - cmd="${cmd//%INJECT%=\"$inject_file\"/$inject_content}" + log d "Returning the command with injected content: $cmd" echo "$cmd" } +# Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator +replace_emulator_placeholder() { + local placeholder=$1 + # Extract emulator name from placeholder without changing case + local emulator_name="${placeholder//"%EMULATOR_"/}" # Extract emulator name after %EMULATOR_ + emulator_name="${emulator_name//"%"/}" # Remove the trailing % + + # Use the find_emulator function to get the emulator path using the correct casing + local emulator_exec=$(find_emulator "$emulator_name") + + if [[ -z "$emulator_exec" ]]; then + log e "Emulator '$emulator_name' not found." + exit 1 + fi + echo "$emulator_exec" +} # Function to substitute the placeholders substitute_placeholders() { - local cmd="$1" - local rom_path="$game" - local rom_dir=$(dirname "$rom_path") - local base_name=$(basename "$rom_path" .psvita) # Ensure the .psvita extension is stripped - local file_name=$(basename "$rom_path") - local rom_raw="$rom_path" - local rom_dir_raw="$rom_dir" - local es_path="" - local emulator_path="" + local cmd="$1" + local rom_path="$game" + local rom_dir=$(dirname "$rom_path") + + # Strip all file extensions from the base name + local base_name=$(basename "$rom_path") + base_name="${base_name%%.*}" - # Handle %INJECT% placeholder if present - cmd=$(handle_inject_placeholder "$cmd") + local file_name=$(basename "$rom_path") + local rom_raw="$rom_path" + local rom_dir_raw="$rom_dir" + local es_path="" + local emulator_path="" - # Substitute emulator path - cmd=$(echo "$cmd" | sed -r 's/%EMULATOR_[A-Z0-9_]+%/$(replace_emulator_placeholder "&")/g') + # Manually replace %EMULATOR_*% placeholders + while [[ "$cmd" =~ (%EMULATOR_[A-Z0-9_]+%) ]]; do + placeholder="${BASH_REMATCH[1]}" + emulator_path=$(replace_emulator_placeholder "$placeholder") + cmd="${cmd//$placeholder/$emulator_path}" + done - # Ensure that paths with spaces are properly quoted and substitute other placeholders - cmd="${cmd//"%ROM%"/"\"$rom_path\""}" - cmd="${cmd//"%BASENAME%"/"\"$base_name\""}" # Proper base name without extra .psvita - cmd="${cmd//"%FILENAME%"/"\"$file_name\""}" - cmd="${cmd//"%ROMRAW%"/"\"$rom_raw\""}" - cmd="${cmd//"%ROMPATH%"/"\"$rom_dir\""}" - cmd="${cmd//"%ESPATH%"/"\"$es_path\""}" - cmd="${cmd//"%EMUDIR%"/"\"$emulator_path\""}" - cmd="${cmd//"%GAMEDIR%"/"\"$rom_dir\""}" - cmd="${cmd//"%GAMEDIRRAW%"/"\"$rom_dir_raw\""}" - cmd="${cmd//"%CORE_RETROARCH%"/"/var/config/retroarch/cores"}" + # Substitute %BASENAME% and other placeholders + cmd="${cmd//"%BASENAME%"/"$base_name"}" + cmd="${cmd//"%FILENAME%"/"$file_name"}" + cmd="${cmd//"%ROMRAW%"/"$rom_raw"}" + cmd="${cmd//"%ROMPATH%"/"$rom_dir"}" + + # Ensure paths are quoted correctly + cmd="${cmd//"%ROM%"/"\"$rom_path\""}" + cmd="${cmd//"%GAMEDIR%"/"\"$rom_dir\""}" + cmd="${cmd//"%GAMEDIRRAW%"/"\"$rom_dir_raw\""}" + cmd="${cmd//"%CORE_RETROARCH%"/"/var/config/retroarch/cores"}" - log d "Final command: $cmd" # Log the final command for debugging - echo "$cmd" -} + log d "Command after %BASENAME% and other substitutions: $cmd" + + # Now handle %INJECT% after %BASENAME% has been substituted + cmd=$(handle_inject_placeholder "$cmd") + + echo "$cmd" + } # Extracting the commands from es_systems.xml for the selected system find_system_commands() { - local system_name=$system - # Use xmllint to extract the system commands from the XML - system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) - - if [ -z "$system_section" ]; then - log e "System not found: $system_name" - exit 1 - fi + local system_name=$system + # Use xmllint to extract the system commands from the XML + system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) + + if [ -z "$system_section" ]; then + log e "System not found: $system_name" + exit 1 + fi - # Extract commands and labels - commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) + # Extract commands and labels + commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) - # Prepare Zenity command list - command_list=() - while IFS= read -r line; do - label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') - command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') - - # Substitute placeholders in the command - command=$(substitute_placeholders "$command") - - # Add label and command to Zenity list (label first, command second) - command_list+=("$label" "$command") - done <<< "$commands" + # Prepare Zenity command list + command_list=() + while IFS= read -r line; do + label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') + command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') + + # Substitute placeholders in the command + command=$(substitute_placeholders "$command") + + # Add label and command to Zenity list (label first, command second) + command_list+=("$label" "$command") + done <<< "$commands" - # Show the list with Zenity and return the **command** (second column) selected - selected_command=$(zenity --list \ - --title="Select an emulator for $system_name" \ - --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ - --width=800 --height=400 --print-column=2 --hide-column=2) + # Show the list with Zenity and return the **command** (second column) selected + selected_command=$(zenity --list \ + --title="Select an emulator for $system_name" \ + --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ + --width=800 --height=400 --print-column=2 --hide-column=2) - echo "$selected_command" + echo "$selected_command" } # If the emulator is not specified, ask the user to select it or get it from the XML file From d0644c82e600722aab5cc7ca724516ddef1b8579 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Tue, 10 Sep 2024 22:22:30 +0900 Subject: [PATCH 66/72] RUN_GAME: working but looping - fix --- functions/other_functions.sh | 57 ++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 2330dcb5..9826868a 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -981,37 +981,42 @@ run_game() { log d "Game: \"$game\"" log d "System: \"$system\"" - # Function to handle the %INJECT% placeholder - handle_inject_placeholder() { - local cmd="$1" +# Function to handle the %INJECT% placeholder +handle_inject_placeholder() { + local cmd="$1" + local rom_dir=$(dirname "$game") # Define rom_dir based on the game path - # Find all occurrences of %INJECT%=something - while [[ "$cmd" =~ %INJECT%=(.*) ]]; do - inject_file="${BASH_REMATCH[1]}" # Extract the file name + # Find all occurrences of %INJECT%=something + while [[ "$cmd" =~ %INJECT%=(.*) ]]; do + inject_file="${BASH_REMATCH[1]}" # Extract the file name + + # Prepend the directory path to ensure we have the full path to the file + inject_file_full_path="$rom_dir/$inject_file" + + log d "Found %INJECT% pointing to file \"$inject_file_full_path\"" + + # Check if the file exists (no escaping needed, just quotes) + if [[ -f "$inject_file_full_path" ]]; then + # Read the content of the file + inject_content=$(cat "$inject_file_full_path") + log i "File \"$inject_file_full_path\" found, injecting content \"$inject_content\"" + + # Replace the %INJECT% placeholder with the content of the file + cmd="${cmd//%INJECT%=$inject_file/$inject_content}" + else + log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." + # If the file does not exist, just remove the placeholder + cmd="${cmd//%INJECT%=$inject_file/}" + fi + done + + log d "Returning the command with injected content: $cmd" + echo "$cmd" +} - # Prepend the directory path to ensure we have the full path to the file - inject_file_full_path="$rom_dir/$inject_file" - log d "Found %INJECT% pointing to file \"$inject_file_full_path\"" - # Check if the file exists - if [[ -f "$inject_file_full_path" ]]; then - # Read the content of the file - inject_content=$(cat "$inject_file_full_path") - log i "File \"$inject_file_full_path\" found, injecting content \"$inject_content\"" - - # Replace the %INJECT% placeholder with the content of the file - cmd="${cmd//%INJECT%=$inject_file/$inject_content}" - else - log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." - # If the file does not exist, just remove the placeholder - cmd="${cmd//%INJECT%=$inject_file/}" - fi - done - log d "Returning the command with injected content: $cmd" - echo "$cmd" - } # Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator replace_emulator_placeholder() { From 6496e1f051ad222df7987cd6d805000c86cfd816 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 10:18:03 +0900 Subject: [PATCH 67/72] RUN_GAME: fixed %INJECT% placeholder in both of the cases --- functions/other_functions.sh | 59 +++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 9826868a..42fe9701 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -984,29 +984,37 @@ run_game() { # Function to handle the %INJECT% placeholder handle_inject_placeholder() { local cmd="$1" - local rom_dir=$(dirname "$game") # Define rom_dir based on the game path + local rom_dir=$(dirname "$game") # Get the ROM directory based on the game path - # Find all occurrences of %INJECT%=something - while [[ "$cmd" =~ %INJECT%=(.*) ]]; do - inject_file="${BASH_REMATCH[1]}" # Extract the file name + # Find and process all occurrences of %INJECT%='something'.extension + while [[ "$cmd" =~ (%INJECT%=\'([^\']+)\')(.[^ ]+)? ]]; do + inject_file="${BASH_REMATCH[2]}" # Extract the quoted file name + extension="${BASH_REMATCH[3]}" # Extract the extension (if any) + inject_file_full_path="$rom_dir/$inject_file$extension" # Form the full path - # Prepend the directory path to ensure we have the full path to the file - inject_file_full_path="$rom_dir/$inject_file" + log d "Found inject part: %INJECT%='$inject_file'$extension" - log d "Found %INJECT% pointing to file \"$inject_file_full_path\"" - - # Check if the file exists (no escaping needed, just quotes) + # Check if the file exists if [[ -f "$inject_file_full_path" ]]; then - # Read the content of the file - inject_content=$(cat "$inject_file_full_path") - log i "File \"$inject_file_full_path\" found, injecting content \"$inject_content\"" - - # Replace the %INJECT% placeholder with the content of the file - cmd="${cmd//%INJECT%=$inject_file/$inject_content}" + # Read the content of the file and replace newlines with spaces + inject_content=$(cat "$inject_file_full_path" | tr '\n' ' ') + log i "File \"$inject_file_full_path\" found. Replacing %INJECT% with content." + + # Escape special characters in the inject part for the replacement + escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') + + # Replace the entire %INJECT%=...'something'.extension part with the file content + cmd=$(echo "$cmd" | sed "s|$escaped_inject_part|$inject_content|g") + + log d "Replaced cmd: $cmd" else log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." - # If the file does not exist, just remove the placeholder - cmd="${cmd//%INJECT%=$inject_file/}" + + # Use sed to remove the entire %INJECT%=...'something'.extension + escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') + cmd=$(echo "$cmd" | sed "s|$escaped_inject_part||g") + + log d "sedded cmd: $cmd" fi done @@ -1015,9 +1023,6 @@ handle_inject_placeholder() { } - - - # Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator replace_emulator_placeholder() { local placeholder=$1 @@ -1059,15 +1064,15 @@ replace_emulator_placeholder() { done # Substitute %BASENAME% and other placeholders - cmd="${cmd//"%BASENAME%"/"$base_name"}" - cmd="${cmd//"%FILENAME%"/"$file_name"}" - cmd="${cmd//"%ROMRAW%"/"$rom_raw"}" - cmd="${cmd//"%ROMPATH%"/"$rom_dir"}" + cmd="${cmd//"%BASENAME%"/"'$base_name'"}" + cmd="${cmd//"%FILENAME%"/"'$file_name'"}" + cmd="${cmd//"%ROMRAW%"/"'$rom_raw'"}" + cmd="${cmd//"%ROMPATH%"/"'$rom_dir'"}" # Ensure paths are quoted correctly - cmd="${cmd//"%ROM%"/"\"$rom_path\""}" - cmd="${cmd//"%GAMEDIR%"/"\"$rom_dir\""}" - cmd="${cmd//"%GAMEDIRRAW%"/"\"$rom_dir_raw\""}" + cmd="${cmd//"%ROM%"/"'$rom_path'"}" + cmd="${cmd//"%GAMEDIR%"/"'$rom_dir'"}" + cmd="${cmd//"%GAMEDIRRAW%"/"'$rom_dir_raw'"}" cmd="${cmd//"%CORE_RETROARCH%"/"/var/config/retroarch/cores"}" log d "Command after %BASENAME% and other substitutions: $cmd" From e80c30a1d9bdab49e3a78db686ab79f54b32f687 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 10:20:28 +0900 Subject: [PATCH 68/72] RUN_GAME: if the emulator is only one just skip the zenity and run it --- functions/other_functions.sh | 63 +++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 42fe9701..760b81ad 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -936,7 +936,6 @@ find_emulator() { # TODO: add the logic of alt emulator and default emulator -# TODO: if the emulator is only one just skip the zenity and run it run_game() { @@ -1085,38 +1084,44 @@ replace_emulator_placeholder() { # Extracting the commands from es_systems.xml for the selected system find_system_commands() { - local system_name=$system - # Use xmllint to extract the system commands from the XML - system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) - - if [ -z "$system_section" ]; then - log e "System not found: $system_name" - exit 1 - fi + local system_name=$system + # Use xmllint to extract the system commands from the XML + system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) + + if [ -z "$system_section" ]; then + log e "System not found: $system_name" + exit 1 + fi - # Extract commands and labels - commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) + # Extract commands and labels + commands=$(echo "$system_section" | xmllint --xpath "//command" - 2>/dev/null) - # Prepare Zenity command list - command_list=() - while IFS= read -r line; do - label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') - command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') - - # Substitute placeholders in the command - command=$(substitute_placeholders "$command") - - # Add label and command to Zenity list (label first, command second) - command_list+=("$label" "$command") - done <<< "$commands" + # Prepare Zenity command list + command_list=() + while IFS= read -r line; do + label=$(echo "$line" | sed -n 's/.*label="\([^"]*\)".*/\1/p') + command=$(echo "$line" | sed -n 's/.*]*>\(.*\)<\/command>.*/\1/p') + + # Substitute placeholders in the command + command=$(substitute_placeholders "$command") + + # Add label and command to Zenity list (label first, command second) + command_list+=("$label" "$command") + done <<< "$commands" - # Show the list with Zenity and return the **command** (second column) selected - selected_command=$(zenity --list \ - --title="Select an emulator for $system_name" \ - --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ - --width=800 --height=400 --print-column=2 --hide-column=2) + # Check if there's only one command + if [ ${#command_list[@]} -eq 2 ]; then + log d "Only one command found for $system_name, running it directly: ${command_list[1]}" + selected_command="${command_list[1]}" + else + # Show the list with Zenity and return the **command** (second column) selected + selected_command=$(zenity --list \ + --title="Select an emulator for $system_name" \ + --column="Emulator" --column="Hidden Command" "${command_list[@]}" \ + --width=800 --height=400 --print-column=2 --hide-column=2) + fi - echo "$selected_command" + echo "$selected_command" } # If the emulator is not specified, ask the user to select it or get it from the XML file From 32c6a2009bffbc86fbb71de360150807acf40281 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 13:35:45 +0900 Subject: [PATCH 69/72] FEATURES: removed launch-args as they are no more useful for the scope of RUN_GAME --- config/retrodeck/reference_lists/features.json | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index f9cd535e..977383b3 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -960,8 +960,7 @@ "system": [ "arcade" ], - "launch": "mame", - "launch-args": "-inipath /var/config/mame/ini -rompath $(dirname \"$game\") $game" + "launch": "mame" }, "citra": { "description": "Citra Nintendo 3DS Emulator (via Ponzu)", @@ -997,7 +996,6 @@ "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/pcsx2/pcsx2-guide/", "system": "ps2", "launch": "pcsx2-qt", - "launch-args": "-batch $game", "properties": [ { "ask_to_exit": true, @@ -1010,7 +1008,6 @@ "description": "PlayStation Emulator", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/duckstation/duckstation-guide/", "launch": "duckstation-qt", - "launch-args": "-batch $game", "system": "psx", "properties": [ { @@ -1037,8 +1034,7 @@ "description": "Vita3K PSVita Emulator", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/", "system": "psvita", - "launch": "Vita3K", - "launch-args": "-r $game.psvita" + "launch": "Vita3K" }, "rpcs3": { "name": "RPCS3", @@ -1066,7 +1062,6 @@ "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", "launch": "Yuzu", "system": "switch", - "launch-args": "-f -g $game", "ponzu": true, "abxy_button": true }, @@ -1075,7 +1070,6 @@ "description": "Dolphin Wii and GameCube Emulator", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", "launch": "dolphin-emu-wrapper", - "launch-args": "-e $game", "system": [ "gc", "wii" @@ -1095,7 +1089,6 @@ "description": "A fork of Dolphiin to enhance Metroid Prime experience", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", "launch": "primehack-wrapper", - "launch-args": "-e $game", "system": [ "wii" ], @@ -1112,7 +1105,6 @@ "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/cemu/cemu-guide/", "system": "wiiu", "launch": "Cemu-wrapper", - "launch-args": "-g $game", "properties": [ { "abxy_button": true, @@ -1125,8 +1117,7 @@ "name": "xemu", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/xemu/xemu-guide/", "system": "xbox", - "launch": "xemu", - "launch-args": "-dvd_path $game" + "launch": "xemu" }, "es-de": { "description": "ES-DE Emulation Frontend", From 24b35b7175cd319aee8053a1016fafa87d9f60c7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 13:38:32 +0900 Subject: [PATCH 70/72] RUN_GAME: replaced --run with "start" --- retrodeck.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/retrodeck.sh b/retrodeck.sh index e76f8df0..94be9b78 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -32,7 +32,7 @@ Arguments: --reset-component \t Reset one or more component or emulator configs to the default values --reset-retrodeck \t Starts the initial RetroDECK installer (backup your data first!) - --run [-s ] [-e ] \t Run a game from cli, if no system is defined it will deducted from the path.\n\t\t\t\t\t\t For example --run ~/retrodeck/roms/system/game.ext will be run with the system "system".\n\t\t\t\t\t\t Optionally -e (emulator) and -s (system) can be passed as arguments. + start [-s ] [-e ] \t Start a game from cli, if no system is defined it will deducted from the path.\n\t\t\t\t\t\t For example flatpak run net.retrodeck.retrodeck start ~/retrodeck/roms/system/game.ext will be run with the system "system".\n\t\t\t\t\t\t Optionally -e (emulator) and -s (system) can be passed as arguments. For flatpak run specific options please run: flatpak run -h @@ -44,8 +44,8 @@ https://retrodeck.net echo "RetroDECK v$version" exit ;; - --run*) - shift # Remove --run + start*) + shift # Remove "start" run_game "$@" exit ;; From 51485497ae14116cc321eec4016493d7c866bea6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 13:55:04 +0900 Subject: [PATCH 71/72] RUN_GAME: code prettyfication --- functions/other_functions.sh | 111 ++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 53 deletions(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 760b81ad..b9c7f74a 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -895,9 +895,10 @@ start_retrodeck() { find_emulator() { local emulator_name=$1 local found_path="" + local es_find_rules="/app/share/es-de/resources/systems/linux/es_find_rules.xml" # Search the es_find_rules.xml file for the emulator - emulator_section=$(xmllint --xpath "//emulator[@name='$emulator_name']" "/app/share/es-de/resources/systems/linux/es_find_rules.xml" 2>/dev/null) + emulator_section=$(xmllint --xpath "//emulator[@name='$emulator_name']" "$es_find_rules" 2>/dev/null) if [ -z "$emulator_section" ]; then log e "Emulator not found: $emulator_name" @@ -938,13 +939,15 @@ find_emulator() { # TODO: add the logic of alt emulator and default emulator run_game() { + # call me with (-e emulator) (-s system) game/path, examples: + # run_game -e gambatte_libretro ~/retrodeck/roms/gb/Capumon.gb + # run_game ~/retrodeck/roms/gb/Capumon.gb + # run_game -s gbc ~/retrodeck/roms/gb/Capumon.gb # Initialize variables emulator="" system="" - - # Path to the es_systems.xml file - xml_file="/app/share/es-de/resources/systems/linux/es_systems.xml" + es_systems="/app/share/es-de/resources/systems/linux/es_systems.xml" # Parse options while getopts ":e:s:" opt; do @@ -965,8 +968,8 @@ run_game() { # Check for game argument if [[ -z "$1" ]]; then - echo "Error: Game file is required." - echo "Usage: $0 --run [-e emulator] [-s system] game" + log e "Game path is required." + log i "Usage: $0 start [-e emulator] [-s system] game" exit 1 fi @@ -980,64 +983,66 @@ run_game() { log d "Game: \"$game\"" log d "System: \"$system\"" -# Function to handle the %INJECT% placeholder -handle_inject_placeholder() { - local cmd="$1" - local rom_dir=$(dirname "$game") # Get the ROM directory based on the game path + # Function to handle the %INJECT% placeholder + # When %INJECT%=filename is found in the game command it will check for the existence of the file + # If the file is found the "%INJECT%=file" will be replaced with the contents of the found file + handle_inject_placeholder() { + local cmd="$1" + local rom_dir=$(dirname "$game") # Get the ROM directory based on the game path - # Find and process all occurrences of %INJECT%='something'.extension - while [[ "$cmd" =~ (%INJECT%=\'([^\']+)\')(.[^ ]+)? ]]; do - inject_file="${BASH_REMATCH[2]}" # Extract the quoted file name - extension="${BASH_REMATCH[3]}" # Extract the extension (if any) - inject_file_full_path="$rom_dir/$inject_file$extension" # Form the full path + # Find and process all occurrences of %INJECT%='something'.extension + while [[ "$cmd" =~ (%INJECT%=\'([^\']+)\')(.[^ ]+)? ]]; do + inject_file="${BASH_REMATCH[2]}" # Extract the quoted file name + extension="${BASH_REMATCH[3]}" # Extract the extension (if any) + inject_file_full_path="$rom_dir/$inject_file$extension" # Form the full path - log d "Found inject part: %INJECT%='$inject_file'$extension" + log d "Found inject part: %INJECT%='$inject_file'$extension" - # Check if the file exists - if [[ -f "$inject_file_full_path" ]]; then - # Read the content of the file and replace newlines with spaces - inject_content=$(cat "$inject_file_full_path" | tr '\n' ' ') - log i "File \"$inject_file_full_path\" found. Replacing %INJECT% with content." + # Check if the file exists + if [[ -f "$inject_file_full_path" ]]; then + # Read the content of the file and replace newlines with spaces + inject_content=$(cat "$inject_file_full_path" | tr '\n' ' ') + log i "File \"$inject_file_full_path\" found. Replacing %INJECT% with content." - # Escape special characters in the inject part for the replacement - escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') + # Escape special characters in the inject part for the replacement + escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') - # Replace the entire %INJECT%=...'something'.extension part with the file content - cmd=$(echo "$cmd" | sed "s|$escaped_inject_part|$inject_content|g") + # Replace the entire %INJECT%=...'something'.extension part with the file content + cmd=$(echo "$cmd" | sed "s|$escaped_inject_part|$inject_content|g") - log d "Replaced cmd: $cmd" - else - log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." + log d "Replaced cmd: $cmd" + else + log e "File \"$inject_file_full_path\" not found. Removing %INJECT% placeholder." - # Use sed to remove the entire %INJECT%=...'something'.extension - escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') - cmd=$(echo "$cmd" | sed "s|$escaped_inject_part||g") + # Use sed to remove the entire %INJECT%=...'something'.extension + escaped_inject_part=$(printf '%s' "%INJECT%='$inject_file'$extension" | sed 's/[]\/$*.^[]/\\&/g') + cmd=$(echo "$cmd" | sed "s|$escaped_inject_part||g") - log d "sedded cmd: $cmd" - fi - done + log d "sedded cmd: $cmd" + fi + done - log d "Returning the command with injected content: $cmd" - echo "$cmd" -} + log d "Returning the command with injected content: $cmd" + echo "$cmd" + } -# Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator -replace_emulator_placeholder() { - local placeholder=$1 - # Extract emulator name from placeholder without changing case - local emulator_name="${placeholder//"%EMULATOR_"/}" # Extract emulator name after %EMULATOR_ - emulator_name="${emulator_name//"%"/}" # Remove the trailing % + # Function to replace %EMULATOR_SOMETHING% with the actual path of the emulator + replace_emulator_placeholder() { + local placeholder=$1 + # Extract emulator name from placeholder without changing case + local emulator_name="${placeholder//"%EMULATOR_"/}" # Extract emulator name after %EMULATOR_ + emulator_name="${emulator_name//"%"/}" # Remove the trailing % - # Use the find_emulator function to get the emulator path using the correct casing - local emulator_exec=$(find_emulator "$emulator_name") - - if [[ -z "$emulator_exec" ]]; then - log e "Emulator '$emulator_name' not found." - exit 1 - fi - echo "$emulator_exec" -} + # Use the find_emulator function to get the emulator path using the correct casing + local emulator_exec=$(find_emulator "$emulator_name") + + if [[ -z "$emulator_exec" ]]; then + log e "Emulator '$emulator_name' not found." + exit 1 + fi + echo "$emulator_exec" + } # Function to substitute the placeholders substitute_placeholders() { @@ -1086,7 +1091,7 @@ replace_emulator_placeholder() { find_system_commands() { local system_name=$system # Use xmllint to extract the system commands from the XML - system_section=$(xmllint --xpath "//system[name='$system_name']" "$xml_file" 2>/dev/null) + system_section=$(xmllint --xpath "//system[name='$system_name']" "$es_systems" 2>/dev/null) if [ -z "$system_section" ]; then log e "System not found: $system_name" From aadd5b3b7bc10a0f3c58ac3a806b5f37fa0b4325 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 11 Sep 2024 15:39:55 +0900 Subject: [PATCH 72/72] STEAM_SYNC: using new start command + cleanup --- functions/steam_sync.sh | 262 +--------------------------------------- 1 file changed, 1 insertion(+), 261 deletions(-) diff --git a/functions/steam_sync.sh b/functions/steam_sync.sh index 17af3174..6318fae0 100644 --- a/functions/steam_sync.sh +++ b/functions/steam_sync.sh @@ -1,264 +1,5 @@ #!/bin/bash -# Associative arrays for command lists -# TODO: make them dynamic by readin es_config and features.json -# declare -A command_list_default=( -# ["3do"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so" -# ["amiga"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["amiga1200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["amiga600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["amigacd32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["amstradcpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -# ["arcade"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["arduboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so" -# ["astrocde"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["atari2600"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" -# ["atari5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" -# ["atari7800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so" -# ["atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -# ["atarijaguar"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" -# ["atarijaguarcd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so" -# ["atarilynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" -# ["atarist"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so" -# ["atarixe"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -# ["atomiswave"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -# ["c64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" -# ["cavestory"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so" -# ["cdimono1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" -# ["cdtv"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["chailove"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so" -# ["channelf"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so" -# ["colecovision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["cps"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["cps1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["cps2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["cps3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["doom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" -# ["dos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" -# ["dreamcast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -# ["easyrpg"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so" -# ["famicom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -# ["flash"]="TODO: I have to catch how it works" #TODO -# ["fba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" -# ["fbneo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -# ["fds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -# ["gameandwatch"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" -# ["gamegear"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["gb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -# ["gba"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -# ["gbc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -# ["genesis"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["gx4000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -# ["intellivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so" -# ["j2me"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so" -# ["lcdgames"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so" -# ["lutro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so" -# ["mame"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["mastersystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["megacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["megacdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["megadrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["megaduck"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so" -# ["mess"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so" -# ["model2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["moto"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" -# ["msx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["msx1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["msx2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["msxturbor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["multivision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" -# ["n64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" -# ["n64dd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" -# ["naomi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -# ["naomigd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -# ["nds"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" -# ["neogeo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -# ["neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -# ["neogeocdjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -# ["nes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -# ["ngp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -# ["ngpc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -# ["odyssey2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" -# ["palm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so" -# ["pc88"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so" -# ["pc98"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" -# ["pcengine"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ["pcenginecd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ["pcfx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so" -# ["pokemini"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so" -# ["psx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" -# ["quake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" -# ["satellaview"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -# ["saturnjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -# ["scummvm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so" -# ["sega32x"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -# ["sega32xjp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -# ["sega32xna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -# ["segacd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["sfc"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["sg-1000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["sgb"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" -# ["snes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["snesna"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["spectravideo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["sufami"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["supergrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" -# ["supervision"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so" -# ["tg16"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ["tg-cd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ["tic80"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so" -# ["to8"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so" -# ["uzebox"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so" -# ["vectrex"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so" -# ["vic20"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so" -# ["videopac"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so" -# ["virtualboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so" -# ["wasm4"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so" -# ["wonderswan"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" -# ["wonderswancolor"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so" -# ["x1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so" -# ["x68000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so" -# ["zx81"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so" -# ["zxspectrum"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so" -# ["switch"]="flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g" -# ["n3ds"]="flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck" -# ["ps2"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" -# ["wiiu"]="flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g" -# ["gc"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -# ["wii"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -# ["xbox"]="flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path" -# ["ps3"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" -# ["psp"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" -# ["pico8"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" -# ) - -# declare -A alt_command_list=( -# ["PUAE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so" -# ["Caprice32"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so" -# ["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["Stella"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so" -# ["a5200"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so" -# ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -# ["Handy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so" -# ["VICE x64sc Accurate"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so" -# ["SAME CDi"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so" -# ["blueMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so" -# ["MAME - CURRENT"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so" -# ["PrBoom"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so" -# ["DOSBox-Pure"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so" -# ["Mesen"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so" -# ["Genesis Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so" -# ["Gamebatte"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so" -# ["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -# ["ParaLLEI N64"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so" -# ["DeSmuME"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so" -# ["NeoCD"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so" -# ["Beetle NeoPop"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so" -# ["Neko Project II Kai"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so" -# ["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ["Swanstation"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so" -# ["TyrQuake"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so" -# ["Beetle Saturn"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so" -# ["Snes 9x - Current"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so" -# ["Beetle SuperGrafx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so" -# ["Yuzu (Standalone)"]="flatpak run --command=yuzu net.retrodeck.retrodeck -f -g" -# ["Citra (Standalone)"]="flatpak run --command=citra net.retrodeck.retrodeck" -# ["PCSX2 (Standalone)"]="flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch" -# ["Dolphin (Standalone)"]="flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e" -# ["RPCS3 Directory (Standalone)"]="flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui" -# ["PPSSPP (Standalone)"]="flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck" -# ["PICO-8 (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run" -# ["PUAE 2021"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so" -# ["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" -# ["CPCemu (Standalone)"]="NYI" #NYI -# ["MAME 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so" -# ["MAME 2003-Plus"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so" -# ["MAME 2000"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so" -# ["MAME (Standalone)"]="NYI" #NYI -# ["FinalBurn Neo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so" -# ["FinalBurn Neo (Standalone)"]="NYI" #NYI -# ["FB Alpha 2012"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so" -# ["Flycast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so" -# ["Flycast (Standalone)"]="NYI" #NYI -# ["Kronos"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so" -# ["Supermodel (Standalone)"]="NYI" #NYI -# ["Supermodel [Fullscreen] (Standalone)"]="NYI" #NYI -# ["Shortcut or script"]="TODO: I have to catch how it works" #TODO -# ["Atari800 (Standalone)"]="NYI" #NYI -# ["Stella 2014"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so" -# ["Atari800"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so" -# ["Beetle Lynx"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so" -# ["VICE x64 Fast"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so" -# ["VICE x64 SuperCPU"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so" -# ["VICE x128"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so" -# ["Frodo"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so" -# ["CDi 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so" -# ["Gearcoleco"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so" -# ["FB Alpha 2012 CPS-1"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so" -# ["FB Alpha 2012 CPS-2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so" -# ["FB Alpha 2012 CPS-3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so" -# ["Boom 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so" -# ["Boom 3 xp"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so" -# ["DOSBox-Core"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so" -# ["DOSBox-SVN"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so" -# ["Keep ES-DE running"]="TODO: I have to catch how it works" #TODO -# ["AppImage (Suspend ES-DE)"]="TODO: I have to catch how it works" #TODO -# ["AppImage (Keep ES-DE running)"]="TODO: I have to catch how it works" #TODO -# ["Nestopia UE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so" -# ["FCEUmm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so" -# ["QuickNES"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so" -# ["Genesis Plus GX Wide"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so" -# ["Gearsystem"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so" -# ["SMS Plus GX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so" -# ["SameBoy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so" -# ["Gearboy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so" -# ["TGB Dual"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so" -# ["Mesen-S"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so" -# ["VBA-M"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so" -# ["bsnes"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so" -# ["mGBA"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so" -# ["VBA Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so" -# ["gpSP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so" -# ["Dolphin"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so" -# ["PrimeHack (Standalone)"]="flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e" -# ["PicoDrive"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so" -# ["BlastEm"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so" -# ["CrocoDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so" -# ["fMSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so" -# ["Citra"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so" -# ["Citra 2018"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so" -# ["Mupen64Plus-Next"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so" -# ["DeSmuME 2015"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so" -# ["melonDS"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so" -# ["melonDS (Standalone)"]="flatpak run --command=melonDS net.retrodeck.retrodeck" -# ["FinalBurn Neo neogeocd"]="flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so" -# ["RACE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so" -# ["Neko Project II"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so" -# ["Beetle PCE FAST"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so" -# ["PICO-8 Splore (Standalone)"]="flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore" -# ["AppImage"]="TODO: I have to catch how it works" #TODO -# ["LRPS2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -# ["PCSX2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so" -# ["RPCS3 Shortcut (Standalone)"]="TODO: I have to catch how it works" #TODO -# ["PPSSPP"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so" -# ["Beetle PSX"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so" -# ["Beetle PSX HW"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so" -# ["PCSX ReARMed"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so" -# ["DuckStation (Standalone)"]="flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch" -# ["vitaQuake 2"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so" -# ["vitaQuake 2 [Rogue]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so" -# ["vitaQuake 2 [Xatrix]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so" -# ["vitaQuake 2 [Zaero]"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so" -# ["vitaQuake 3"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so" -# ["YabaSanshiro"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so" -# ["Yabause"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so" -# ["Snes9x 2010"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so" -# ["bsnes-hd"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so" -# ["bsnes-mercury Accuracy"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so" -# ["Beetle Supafaust"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so" -# ["Beetle PCE"]="flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" -# ) # Add games to Steam function add_to_steam() { @@ -345,9 +86,8 @@ add_to_steam() { # fi # Populate the .sync script with the correct command - # TODO: we need to implement the emulator parameter: # TODO: if there is any emulator defined in the xml we use that, else... how we can know which is the default one? - local command="flatpak run net.retrodeck.retrodeck --run -s $system \"$roms_folder/$system/$path\"" + local command="flatpak run net.retrodeck.retrodeck start -s $system \"$roms_folder/$system/$path\"" echo -e '#!/bin/bash\n' > "$launcher" echo -e "if [ test \"$(whereis flatpak)\" = \"flatpak:\" ]; then" >> "$launcher" echo -e "\tflatpak-spawn --host $command" >> "$launcher"