From 1a5db3ffa667ddc7ec11ea2039542478cc0e3e95 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 7 Feb 2025 15:35:08 +0900 Subject: [PATCH] FRAMEWORK, CONFIGURATOR, CLI: refactored Open Component and Reset Component --- .../retrodeck/reference_lists/features.json | 6 + functions/other_functions.sh | 8 +- functions/prepare_component.sh | 1710 +++++++++-------- net.retrodeck.retrodeck.metainfo.xml | 6 +- retrodeck.sh | 53 +- tools/configurator.sh | 201 +- 6 files changed, 941 insertions(+), 1043 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index cd64ed0d..7fa3f6b6 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -833,6 +833,12 @@ } }, "emulator": { + "retrodeck": { + "description": "RetroDECK Framework", + "name": "RetroDECK", + "url": "https://retrodeck.net/", + "cli-arg": "--version" + }, "retroarch": { "description": "RetroArch (Multi-emulator Frontend)", "name": "RetroArch", diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 092bd56e..e55a9853 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -1025,7 +1025,7 @@ open_component(){ return fi - if [[ "$1" == "--getlist" ]]; then + if [[ "$1" == "--list" ]]; then cmd=$(jq -r '.emulator[] | select(.ponzu != true) | .name' "$features") if [[ $(get_setting_value "$rd_conf" "akai_ponzu" "retrodeck" "options") == "true" ]]; then cmd+="\n$(jq -r '.emulator.citra | .name' "$features")" @@ -1049,6 +1049,12 @@ open_component(){ return fi + launch_exists=$(jq -r --arg name "$1" '.emulator[] | select(.name == $name) | has("launch")' "$features") + if [[ "$launch_exists" != "true" ]]; then + echo "Error: The component '$1' cannot be opened." + return 1 + fi + cmd=$(jq -r --arg name "$1" '.emulator[] | select(.name == $name and .ponzu != true) | .launch' "$features") if [[ -z "$cmd" && $(get_setting_value "$rd_conf" "akai_ponzu" "retrodeck" "options") == "true" && "$1" == "citra" ]]; then cmd=$(jq -r '.emulator.citra | .launch' "$features") diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 8c7cfb8b..f8f2dcb1 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -6,946 +6,978 @@ prepare_component() { # The "reset" action will initialize the component # The "postmove" action will update the component settings after one or more RetroDECK folders were moved # An component can be called by name, by parent folder name in the /var/config root or use the option "all" to perform the action on all components equally - # The function will also behave differently depending on if the initial request was from the Configurator, the CLI interface or a normal function call if needed # USAGE: prepare_component "$action" "$component" "$call_source(optional)" + if [[ "$1" == "--list" ]]; then + # uses jq to extract all the emulators (components) that don't have resettable: false in the features.json and separate them with "|" + resettable_components=$(jq -r ' + [(.emulator | to_entries[]) | + select(.value.core == null and .value.resettable != false and .value.ponzu != true ) | + .key] | sort | join("|") + ' "$features") + + # uses sed to create a list like this + pretty_resettable_components=$(echo "$resettable_components" | sed 's/|/ /g') + + isponzu="" + if [[ $(get_setting_value "$rd_conf" "akai_ponzu" "retrodeck" "options") == "true" ]]; then + isponzu+=" citra" + fi + if [[ $(get_setting_value "$rd_conf" "kiroi_ponzu" "retrodeck" "options") == "true" ]]; then + isponzu+=" yuzu" + fi + + echo "${pretty_resettable_components}${isponzu}" + exit 0 + fi + action="$1" - component=$(echo "$2" | tr '[:upper:]' '[:lower:]') + components=$(echo "${@:2}" | tr '[:upper:]' '[:lower:]' | tr ',' ' ') call_source="$3" component_found="false" - log d "Preparing component: \"$component\", action: \"$action\"" + if [[ -z "$components" ]]; then + echo "No components or action specified. Exiting." + exit 1 + fi + log d "Preparing components: \"$components\", action: \"$action\"" - if [[ "$component" == "retrodeck" ]]; then - log i "--------------------------------" - log i "Prepearing RetroDECK framework" - log i "--------------------------------" - component_found="true" - if [[ "$action" == "reset" ]]; then # Update the paths of all folders in retrodeck.cfg and create them - while read -r config_line; do - local current_setting_name=$(get_setting_name "$config_line" "retrodeck") - if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations - local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths") - log d "Red setting: $current_setting_name=$current_setting_value" - # Extract the part of the setting value after "retrodeck/" - local relative_path="${current_setting_value#*retrodeck/}" - # Construct the new setting value - local new_setting_value="$rdhome/$relative_path" - log d "New setting: $current_setting_name=$new_setting_value" - # Declare the global variable with the new setting value - declare -g "$current_setting_name=$new_setting_value" - log d "Setting: $current_setting_name=$current_setting_value" - if [[ ! $current_setting_name == "logs_folder" ]]; then # Don't create a logs folder normally, we want to maintain the current files exactly to not lose early-install logs. - create_dir "$new_setting_value" - else # Log folder-specific actions - mv "$rd_logs_folder" "$logs_folder" # Move existing logs folder from internal to userland - ln -sf "$logs_folder" "$rd_logs_folder" # Link userland logs folder back to statically-written location - log d "Logs folder moved to $logs_folder and linked back to $rd_logs_folder" + for component in $components; do + if [[ "$component" == "retrodeck" ]]; then + log i "--------------------------------" + log i "Prepearing RetroDECK framework" + log i "--------------------------------" + component_found="true" + if [[ "$action" == "reset" ]]; then # Update the paths of all folders in retrodeck.cfg and create them + while read -r config_line; do + local current_setting_name=$(get_setting_name "$config_line" "retrodeck") + if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations + local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths") + log d "Red setting: $current_setting_name=$current_setting_value" + # Extract the part of the setting value after "retrodeck/" + local relative_path="${current_setting_value#*retrodeck/}" + # Construct the new setting value + local new_setting_value="$rdhome/$relative_path" + log d "New setting: $current_setting_name=$new_setting_value" + # Declare the global variable with the new setting value + declare -g "$current_setting_name=$new_setting_value" + log d "Setting: $current_setting_name=$current_setting_value" + if [[ ! $current_setting_name == "logs_folder" ]]; then # Don't create a logs folder normally, we want to maintain the current files exactly to not lose early-install logs. + create_dir "$new_setting_value" + else # Log folder-specific actions + mv "$rd_logs_folder" "$logs_folder" # Move existing logs folder from internal to userland + ln -sf "$logs_folder" "$rd_logs_folder" # Link userland logs folder back to statically-written location + log d "Logs folder moved to $logs_folder and linked back to $rd_logs_folder" + fi fi - fi - done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') - create_dir "/var/config/retrodeck/godot" # TODO: what is this for? Can we delete it or add it to the retrodeck.cfg so the folder will be created by the above script? + done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') + create_dir "/var/config/retrodeck/godot" # TODO: what is this for? Can we delete it or add it to the retrodeck.cfg so the folder will be created by the above script? + + fi + if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move + while read -r config_line; do + local current_setting_name=$(get_setting_name "$config_line" "retrodeck") + if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations + local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths") + if [[ -d "$rdhome/${current_setting_value#*retrodeck/}" ]]; then # If the folder exists at the new ~/retrodeck location + declare -g "$current_setting_name=$rdhome/${current_setting_value#*retrodeck/}" + fi + fi + done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') + dir_prep "$logs_folder" "$rd_logs_folder" + fi + fi + + if [[ "$component" =~ ^(es-de|all)$ ]]; then # For use after ESDE-related folders are moved or a reset + component_found="true" + log i "--------------------------------" + log i "Prepearing ES-DE" + log i "--------------------------------" + if [[ "$action" == "reset" ]]; then + rm -rf /var/config/ES-DE + create_dir /var/config/ES-DE/settings + log d "Prepearing es_settings.xml" + cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml + set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" + set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" + set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" + dir_prep "$rdhome/ES-DE/gamelists" "/var/config/ES-DE/gamelists" + dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections" + dir_prep "$rdhome/ES-DE/custom_systems" "/var/config/ES-DE/custom_systems" + log d "Generating roms system folders" + es-de --create-system-dirs + update_splashscreens + fi + if [[ "$action" == "postmove" ]]; then + set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" + set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" + set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" + dir_prep "$rdhome/gamelists" "/var/config/ES-DE/gamelists" + fi + fi + + if [[ "$component" =~ ^(steam-rom-manager|steamrommanager|all)$ ]]; then + component_found="true" + log i "-----------------------------" + log i "Prepearing Steam ROM Manager" + log i "-----------------------------" + + 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_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" + + get_steam_user + populate_steamuser_srm fi - if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move - while read -r config_line; do - local current_setting_name=$(get_setting_name "$config_line" "retrodeck") - if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations - local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths") - if [[ -d "$rdhome/${current_setting_value#*retrodeck/}" ]]; then # If the folder exists at the new ~/retrodeck location - declare -g "$current_setting_name=$rdhome/${current_setting_value#*retrodeck/}" - fi - fi - done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') - dir_prep "$logs_folder" "$rd_logs_folder" - fi - fi - if [[ "$component" =~ ^(es-de|all)$ ]]; then # For use after ESDE-related folders are moved or a reset + if [[ "$component" =~ ^(retroarch|all)$ ]]; then component_found="true" - log i "--------------------------------" - log i "Prepearing ES-DE" - log i "--------------------------------" - if [[ "$action" == "reset" ]]; then - rm -rf /var/config/ES-DE - create_dir /var/config/ES-DE/settings - log d "Prepearing es_settings.xml" - cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml - set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" - set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" - set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" - dir_prep "$rdhome/ES-DE/gamelists" "/var/config/ES-DE/gamelists" - dir_prep "$rdhome/ES-DE/collections" "/var/config/ES-DE/collections" - dir_prep "$rdhome/ES-DE/custom_systems" "/var/config/ES-DE/custom_systems" - log d "Generating roms system folders" - es-de --create-system-dirs - update_splashscreens - fi - if [[ "$action" == "postmove" ]]; then - set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" - set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" - set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" - dir_prep "$rdhome/gamelists" "/var/config/ES-DE/gamelists" - fi - fi - - if [[ "$component" =~ ^(steam-rom-manager|steamrommanager|all)$ ]]; then - component_found="true" - log i "-----------------------------" - log i "Prepearing Steam ROM Manager" - log i "-----------------------------" - - 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_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" - - get_steam_user - populate_steamuser_srm - - fi - - if [[ "$component" =~ ^(retroarch|all)$ ]]; then - component_found="true" - log i "--------------------------------" - log i "Prepearing RetroArch" - log i "--------------------------------" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch" - cp -fv $config/retroarch/retroarch.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/" - cp -fv $config/retroarch/retroarch-core-options.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/" - else # Single-user actions - create_dir -d /var/config/retroarch - dir_prep "$bios_folder" "/var/config/retroarch/system" - dir_prep "$rdhome/logs/retroarch" "/var/config/retroarch/logs" - create_dir -d "/var/config/retroarch/shaders/" - if [[ -d "$cheats_folder/retroarch" && "$(ls -A $cheats_folder/retroarch)" ]]; then - backup_file="$backups_folder/cheats/retroarch-$(date +%y%m%d).tar.gz" - create_dir "$(dirname "$backup_file")" - tar -czf "$backup_file" -C "$cheats_folder" retroarch - log i "RetroArch cheats backed up to $backup_file" + log i "--------------------------------" + log i "Prepearing RetroArch" + log i "--------------------------------" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch" + cp -fv $config/retroarch/retroarch.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/" + cp -fv $config/retroarch/retroarch-core-options.cfg "$multi_user_data_folder/$SteamAppUser/config/retroarch/" + else # Single-user actions + create_dir -d /var/config/retroarch + dir_prep "$bios_folder" "/var/config/retroarch/system" + dir_prep "$rdhome/logs/retroarch" "/var/config/retroarch/logs" + create_dir -d "/var/config/retroarch/shaders/" + if [[ -d "$cheats_folder/retroarch" && "$(ls -A $cheats_folder/retroarch)" ]]; then + backup_file="$backups_folder/cheats/retroarch-$(date +%y%m%d).tar.gz" + create_dir "$(dirname "$backup_file")" + tar -czf "$backup_file" -C "$cheats_folder" retroarch + log i "RetroArch cheats backed up to $backup_file" + fi + create_dir -d "$cheats_folder/retroarch" + tar --strip-components=1 -xzf /app/retrodeck/cheats/retroarch.tar.gz -C "$cheats_folder/retroarch" --overwrite + cp -rf /app/share/libretro/shaders /var/config/retroarch/ + dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders" + cp -fv $config/retroarch/retroarch.cfg /var/config/retroarch/ + cp -fv $config/retroarch/retroarch-core-options.cfg /var/config/retroarch/ + rsync -rlD --mkpath "$config/retroarch/core-overrides/" "/var/config/retroarch/config/" + rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "/var/config/retroarch/config/remaps/" + dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders" + set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch" + set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch" + set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch" + set_setting_value "$raconf" "log_dir" "$logs_folder" "retroarch" + set_setting_value "$raconf" "rgui_browser_directory" "$roms_folder" "retroarch" + set_setting_value "$raconf" "cheat_database_path" "$cheats_folder/retroarch" "retroarch" fi - create_dir -d "$cheats_folder/retroarch" - tar --strip-components=1 -xzf /app/retrodeck/cheats/retroarch.tar.gz -C "$cheats_folder/retroarch" --overwrite - cp -rf /app/share/libretro/shaders /var/config/retroarch/ + # Shared actions + + create_dir "$bios_folder/np2kai" + create_dir "$bios_folder/dc" + create_dir "$bios_folder/Mupen64plus" + create_dir "$bios_folder/quasi88" + + retroarch_updater + + # FBNEO + log i "--------------------------------" + log i "Prepearing FBNEO_LIBRETRO" + log i "--------------------------------" + create_dir "$bios_folder/fbneo/samples" + # TODO: cheats support + create_dir "$bios_folder/fbneo/cheats" + create_dir "$bios_folder/fbneo/blend" + dir_prep "$mods_folder/FBNeo" "$bios_folder/fbneo/patched" + + # PPSSPP + log i "--------------------------------" + log i "Prepearing PPSSPP_LIBRETRO" + log i "--------------------------------" + if [ -d $bios_folder/PPSSPP/flash0/font ] + then + mv -fv $bios_folder/PPSSPP/flash0/font $bios_folder/PPSSPP/flash0/font.bak + fi + cp -rf "/app/retrodeck/extras/PPSSPP" "$bios_folder/PPSSPP" + if [ -d $bios_folder/PPSSPP/flash0/font.bak ] + then + mv -f $bios_folder/PPSSPP/flash0/font.bak $bios_folder/PPSSPP/flash0/font + fi + + # MSX / SVI / ColecoVision / SG-1000 + log i "-----------------------------------------------------------" + log i "Prepearing MSX / SVI / ColecoVision / SG-1000 LIBRETRO" + log i "-----------------------------------------------------------" + log i "Copying \"/app/retrodeck/extras/MSX/Databases\" in \"$bios_folder/Databases\"" + cp -rf "/app/retrodeck/extras/MSX/Databases" "$bios_folder/Databases" + log i "Copying \"/app/retrodeck/extras/MSX/Machines\" in \"$bios_folder/Machines\"" + cp -rf "/app/retrodeck/extras/MSX/Machines" "$bios_folder/Machines" + + # AMIGA + log i "-----------------------------------------------------------" + log i "Prepearing AMIGA LIBRETRO" + log i "-----------------------------------------------------------" + log i "Copying \"/app/retrodeck/extras/Amiga/capsimg.so\" in \"$bios_folder/capsimg.so\"" + cp -f "/app/retrodeck/extras/Amiga/capsimg.so" "$bios_folder/capsimg.so" + + # ScummVM + log i "-----------------------------------------------------------" + log i "Prepearing ScummVM LIBRETRO" + log i "-----------------------------------------------------------" + cp -fv "$config/retroarch/scummvm.ini" "$ra_scummvm_conf" + create_dir "$mods_folder/RetroArch/ScummVM/icons" + log i "Installing ScummVM assets" + unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/extra/*' -d /tmp + unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/theme/*' -d /tmp + mv -f /tmp/scummvm/extra "$mods_folder/RetroArch/ScummVM" + mv -f /tmp/scummvm/theme "$mods_folder/RetroArch/ScummVM" + rm -rf /tmp/extra /tmp/theme + set_setting_value "$ra_scummvm_conf" "iconspath" "$mods_folder/RetroArch/ScummVM/icons" "libretro_scummvm" "scummvm" + set_setting_value "$ra_scummvm_conf" "extrapath" "$mods_folder/RetroArch/ScummVM/extra" "libretro_scummvm" "scummvm" + set_setting_value "$ra_scummvm_conf" "themepath" "$mods_folder/RetroArch/ScummVM/theme" "libretro_scummvm" "scummvm" + set_setting_value "$ra_scummvm_conf" "savepath" "$saves_folder/scummvm" "libretro_scummvm" "scummvm" + set_setting_value "$ra_scummvm_conf" "browser_lastpath" "$roms_folder/scummvm" "libretro_scummvm" "scummvm" + + dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks" + dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache" + dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture" + + # Reset default preset settings + set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "cheevos")" "retrodeck" "cheevos" + set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" + set_setting_value "$rd_conf" "gb" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "gba" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "gbc" "$(get_setting_value "$rd_defaults" "gbc" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "genesis" "$(get_setting_value "$rd_defaults" "genesis" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "gg" "$(get_setting_value "$rd_defaults" "gg" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "n64" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "psx_ra" "$(get_setting_value "$rd_defaults" "psx_ra" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "snes" "retrodeck" "borders")" "retrodeck" "borders" + set_setting_value "$rd_conf" "genesis" "$(get_setting_value "$rd_defaults" "genesis" "retrodeck" "widescreen")" "retrodeck" "widescreen" + set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "n64" "retrodeck" "widescreen")" "retrodeck" "widescreen" + set_setting_value "$rd_conf" "psx_ra" "$(get_setting_value "$rd_defaults" "psx_ra" "retrodeck" "widescreen")" "retrodeck" "widescreen" + set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "snes" "retrodeck" "widescreen")" "retrodeck" "widescreen" + set_setting_value "$rd_conf" "gb" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "gba" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "gbc" "$(get_setting_value "$rd_defaults" "gbc" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "savestate_auto_load")" "retrodeck" "savestate_auto_load" + set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$bios_folder" "/var/config/retroarch/system" + dir_prep "$logs_folder/retroarch" "/var/config/retroarch/logs" dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders" - cp -fv $config/retroarch/retroarch.cfg /var/config/retroarch/ - cp -fv $config/retroarch/retroarch-core-options.cfg /var/config/retroarch/ - rsync -rlD --mkpath "$config/retroarch/core-overrides/" "/var/config/retroarch/config/" - rsync -rlD --mkpath "$config/retrodeck/presets/remaps/" "/var/config/retroarch/config/remaps/" - dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders" + dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks" + dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache" + dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture" set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch" set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch" set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch" set_setting_value "$raconf" "log_dir" "$logs_folder" "retroarch" - set_setting_value "$raconf" "rgui_browser_directory" "$roms_folder" "retroarch" - set_setting_value "$raconf" "cheat_database_path" "$cheats_folder/retroarch" "retroarch" fi - # Shared actions + fi - create_dir "$bios_folder/np2kai" - create_dir "$bios_folder/dc" - create_dir "$bios_folder/Mupen64plus" - create_dir "$bios_folder/quasi88" + if [[ $(get_setting_value "$rd_conf" "akai_ponzu" "retrodeck" "options") == "true" ]]; then + if [[ "$component" =~ ^(citra|citra-emu|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing CITRA" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/citra-emu" + cp -fv $config/citra/qt-config.ini "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "/var/config/citra-emu" + else # Single-user actions + create_dir -d /var/config/citra-emu/ + cp -f $config/citra/qt-config.ini /var/config/citra-emu/qt-config.ini + set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" + set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" + set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" + set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" + fi + # Shared actions + create_dir "$saves_folder/n3ds/citra/nand/" + create_dir "$saves_folder/n3ds/citra/sdmc/" + dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata" + dir_prep "$logs_folder/citra" "/var/data/citra-emu/log" + dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods" + dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures" - retroarch_updater - - # FBNEO - log i "--------------------------------" - log i "Prepearing FBNEO_LIBRETRO" - log i "--------------------------------" - create_dir "$bios_folder/fbneo/samples" - # TODO: cheats support - create_dir "$bios_folder/fbneo/cheats" - create_dir "$bios_folder/fbneo/blend" - dir_prep "$mods_folder/FBNeo" "$bios_folder/fbneo/patched" - - # PPSSPP - log i "--------------------------------" - log i "Prepearing PPSSPP_LIBRETRO" - log i "--------------------------------" - if [ -d $bios_folder/PPSSPP/flash0/font ] - then - mv -fv $bios_folder/PPSSPP/flash0/font $bios_folder/PPSSPP/flash0/font.bak + # Reset default preset settings + set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata" + dir_prep "$rdhome/logs/citra" "/var/data/citra-emu/log" + dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods" + dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures" + set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" + set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" + set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" + set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" + fi fi - cp -rf "/app/retrodeck/extras/PPSSPP" "$bios_folder/PPSSPP" - if [ -d $bios_folder/PPSSPP/flash0/font.bak ] - then - mv -f $bios_folder/PPSSPP/flash0/font.bak $bios_folder/PPSSPP/flash0/font + fi + + if [[ "$component" =~ ^(cemu|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing CEMU" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/Cemu" + cp -fr "$config/cemu/"* "$multi_user_data_folder/$SteamAppUser/config/Cemu/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "mlc_path" "$bios_folder/cemu" "cemu" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "/var/config/Cemu" + else + create_dir -d /var/config/Cemu/ + cp -fr "$config/cemu/"* /var/config/Cemu/ + set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu" + set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths" + rm -rf "$XDG_DATA_HOME/Cemu/keys.txt" && ln -s "$bios_folder/cemu/keys.txt" "$XDG_DATA_HOME/Cemu/keys.txt" && log d "Linked $bios_folder/cemu/keys.txt to $XDG_DATA_HOME/Cemu/keys.txt" + fi + # Shared actions + dir_prep "$saves_folder/wiiu/cemu" "$bios_folder/cemu/usr/save" fi - - # MSX / SVI / ColecoVision / SG-1000 - log i "-----------------------------------------------------------" - log i "Prepearing MSX / SVI / ColecoVision / SG-1000 LIBRETRO" - log i "-----------------------------------------------------------" - log i "Copying \"/app/retrodeck/extras/MSX/Databases\" in \"$bios_folder/Databases\"" - cp -rf "/app/retrodeck/extras/MSX/Databases" "$bios_folder/Databases" - log i "Copying \"/app/retrodeck/extras/MSX/Machines\" in \"$bios_folder/Machines\"" - cp -rf "/app/retrodeck/extras/MSX/Machines" "$bios_folder/Machines" - - # AMIGA - log i "-----------------------------------------------------------" - log i "Prepearing AMIGA LIBRETRO" - log i "-----------------------------------------------------------" - log i "Copying \"/app/retrodeck/extras/Amiga/capsimg.so\" in \"$bios_folder/capsimg.so\"" - cp -f "/app/retrodeck/extras/Amiga/capsimg.so" "$bios_folder/capsimg.so" - - # ScummVM - log i "-----------------------------------------------------------" - log i "Prepearing ScummVM LIBRETRO" - log i "-----------------------------------------------------------" - cp -fv "$config/retroarch/scummvm.ini" "$ra_scummvm_conf" - create_dir "$mods_folder/RetroArch/ScummVM/icons" - log i "Installing ScummVM assets" - unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/extra/*' -d /tmp - unzip -o "$config/retroarch/ScummVM.zip" 'scummvm/theme/*' -d /tmp - mv -f /tmp/scummvm/extra "$mods_folder/RetroArch/ScummVM" - mv -f /tmp/scummvm/theme "$mods_folder/RetroArch/ScummVM" - rm -rf /tmp/extra /tmp/theme - set_setting_value "$ra_scummvm_conf" "iconspath" "$mods_folder/RetroArch/ScummVM/icons" "libretro_scummvm" "scummvm" - set_setting_value "$ra_scummvm_conf" "extrapath" "$mods_folder/RetroArch/ScummVM/extra" "libretro_scummvm" "scummvm" - set_setting_value "$ra_scummvm_conf" "themepath" "$mods_folder/RetroArch/ScummVM/theme" "libretro_scummvm" "scummvm" - set_setting_value "$ra_scummvm_conf" "savepath" "$saves_folder/scummvm" "libretro_scummvm" "scummvm" - set_setting_value "$ra_scummvm_conf" "browser_lastpath" "$roms_folder/scummvm" "libretro_scummvm" "scummvm" - - dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks" - dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache" - dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture" - - # Reset default preset settings - set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "cheevos")" "retrodeck" "cheevos" - set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" - set_setting_value "$rd_conf" "gb" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "gba" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "gbc" "$(get_setting_value "$rd_defaults" "gbc" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "genesis" "$(get_setting_value "$rd_defaults" "genesis" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "gg" "$(get_setting_value "$rd_defaults" "gg" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "n64" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "psx_ra" "$(get_setting_value "$rd_defaults" "psx_ra" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "snes" "retrodeck" "borders")" "retrodeck" "borders" - set_setting_value "$rd_conf" "genesis" "$(get_setting_value "$rd_defaults" "genesis" "retrodeck" "widescreen")" "retrodeck" "widescreen" - set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "n64" "retrodeck" "widescreen")" "retrodeck" "widescreen" - set_setting_value "$rd_conf" "psx_ra" "$(get_setting_value "$rd_defaults" "psx_ra" "retrodeck" "widescreen")" "retrodeck" "widescreen" - set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "snes" "retrodeck" "widescreen")" "retrodeck" "widescreen" - set_setting_value "$rd_conf" "gb" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "gba" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "gbc" "$(get_setting_value "$rd_defaults" "gbc" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "n64" "$(get_setting_value "$rd_defaults" "gb" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "snes" "$(get_setting_value "$rd_defaults" "gba" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "savestate_auto_load")" "retrodeck" "savestate_auto_load" - set_setting_value "$rd_conf" "retroarch" "$(get_setting_value "$rd_defaults" "retroarch" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" - fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$bios_folder" "/var/config/retroarch/system" - dir_prep "$logs_folder/retroarch" "/var/config/retroarch/logs" - dir_prep "$rdhome/shaders/retroarch" "/var/config/retroarch/shaders" - dir_prep "$texture_packs_folder/RetroArch-Mesen" "/var/config/retroarch/system/HdPacks" - dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/cache" "/var/config/retroarch/system/Mupen64plus/cache" - dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture" - set_setting_value "$raconf" "savefile_directory" "$saves_folder" "retroarch" - set_setting_value "$raconf" "savestate_directory" "$states_folder" "retroarch" - set_setting_value "$raconf" "screenshot_directory" "$screenshots_folder" "retroarch" - set_setting_value "$raconf" "log_dir" "$logs_folder" "retroarch" - fi - fi - - if [[ "$component" =~ ^(citra|citra-emu|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing CITRA" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/citra-emu" - cp -fv $config/citra/qt-config.ini "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/citra-emu/qt-config.ini" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/citra-emu" "/var/config/citra-emu" - else # Single-user actions - create_dir -d /var/config/citra-emu/ - cp -f $config/citra/qt-config.ini /var/config/citra-emu/qt-config.ini - set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" - set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" - set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" - set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" - fi - # Shared actions - create_dir "$saves_folder/n3ds/citra/nand/" - create_dir "$saves_folder/n3ds/citra/sdmc/" - dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata" - dir_prep "$logs_folder/citra" "/var/data/citra-emu/log" - dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods" - dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures" - - # Reset default preset settings - set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" - fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata" - dir_prep "$rdhome/logs/citra" "/var/data/citra-emu/log" - dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods" - dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures" - set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage" - set_setting_value "$citraconf" "sdmc_directory" "$saves_folder/n3ds/citra/sdmc/" "citra" "Data%20Storage" - set_setting_value "$citraconf" "Paths\gamedirs\3\path" "$roms_folder/n3ds" "citra" "UI" - set_setting_value "$citraconf" "Paths\screenshotPath" "$screenshots_folder" "citra" "UI" - fi - fi - - if [[ "$component" =~ ^(cemu|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing CEMU" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/Cemu" - cp -fr "$config/cemu/"* "$multi_user_data_folder/$SteamAppUser/config/Cemu/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "mlc_path" "$bios_folder/cemu" "cemu" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/Cemu/settings.ini" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/Cemu" "/var/config/Cemu" - else - create_dir -d /var/config/Cemu/ - cp -fr "$config/cemu/"* /var/config/Cemu/ + if [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu" set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths" - rm -rf "$XDG_DATA_HOME/Cemu/keys.txt" && ln -s "$bios_folder/cemu/keys.txt" "$XDG_DATA_HOME/Cemu/keys.txt" && log d "Linked $bios_folder/cemu/keys.txt to $XDG_DATA_HOME/Cemu/keys.txt" + dir_prep "$saves_folder/wiiu/cemu" "$bios_folder/cemu/usr/save" fi - # Shared actions - dir_prep "$saves_folder/wiiu/cemu" "$bios_folder/cemu/usr/save" fi - if [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves - set_setting_value "$cemuconf" "mlc_path" "$bios_folder/cemu" "cemu" - set_setting_value "$cemuconf" "Entry" "$roms_folder/wiiu" "cemu" "GamePaths" - dir_prep "$saves_folder/wiiu/cemu" "$bios_folder/cemu/usr/save" - fi - fi - if [[ "$component" =~ ^(dolphin|dolphin-emu|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing DOLPHIN" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" - cp -fvr "$config/dolphin/"* "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "BIOS" "$bios_folder" "dolphin" "GBA" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath0" "$roms_folder/wii" "dolphin" "General" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath1" "$roms_folder/gc" "dolphin" "General" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "/var/config/dolphin-emu" - else # Single-user actions - create_dir -d /var/config/dolphin-emu/ - cp -fvr "$config/dolphin/"* /var/config/dolphin-emu/ + if [[ "$component" =~ ^(dolphin|dolphin-emu|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing DOLPHIN" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" + cp -fvr "$config/dolphin/"* "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "BIOS" "$bios_folder" "dolphin" "GBA" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath0" "$roms_folder/wii" "dolphin" "General" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "ISOPath1" "$roms_folder/gc" "dolphin" "General" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu/Dolphin.ini" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/dolphin-emu" "/var/config/dolphin-emu" + else # Single-user actions + create_dir -d /var/config/dolphin-emu/ + cp -fvr "$config/dolphin/"* /var/config/dolphin-emu/ + set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA" + set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" + set_setting_value "$dolphinconf" "ISOPath0" "$roms_folder/wii" "dolphin" "General" + set_setting_value "$dolphinconf" "ISOPath1" "$roms_folder/gc" "dolphin" "General" + set_setting_value "$dolphinconf" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General" + fi + # Shared actions + dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR" # TODO: Multi-user one-off + dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA" # TODO: Multi-user one-off + dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP" # TODO: Multi-user one-off + dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots" + dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves" + dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii" + dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods" + dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures" + + # Reset default preset settings + set_setting_value "$rd_conf" "dolphin" "$(get_setting_value "$rd_defaults" "dolphin" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR" + dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA" + dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP" + dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots" + dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves" + dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii" + dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods" + dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures" set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA" set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" set_setting_value "$dolphinconf" "ISOPath0" "$roms_folder/wii" "dolphin" "General" set_setting_value "$dolphinconf" "ISOPath1" "$roms_folder/gc" "dolphin" "General" set_setting_value "$dolphinconf" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General" fi - # Shared actions - dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR" # TODO: Multi-user one-off - dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA" # TODO: Multi-user one-off - dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP" # TODO: Multi-user one-off - dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots" - dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves" - dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii" - dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods" - dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures" - - # Reset default preset settings - set_setting_value "$rd_conf" "dolphin" "$(get_setting_value "$rd_defaults" "dolphin" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$saves_folder/gc/dolphin/EU" "/var/data/dolphin-emu/GC/EUR" - dir_prep "$saves_folder/gc/dolphin/US" "/var/data/dolphin-emu/GC/USA" - dir_prep "$saves_folder/gc/dolphin/JP" "/var/data/dolphin-emu/GC/JAP" - dir_prep "$screenshots_folder" "/var/data/dolphin-emu/ScreenShots" - dir_prep "$states_folder/dolphin" "/var/data/dolphin-emu/StateSaves" - dir_prep "$saves_folder/wii/dolphin" "/var/data/dolphin-emu/Wii" - dir_prep "$mods_folder/Dolphin" "/var/data/dolphin-emu/Load/GraphicMods" - dir_prep "$texture_packs_folder/Dolphin" "/var/data/dolphin-emu/Load/Textures" - set_setting_value "$dolphinconf" "BIOS" "$bios_folder" "dolphin" "GBA" - set_setting_value "$dolphinconf" "SavesPath" "$saves_folder/gba" "dolphin" "GBA" - set_setting_value "$dolphinconf" "ISOPath0" "$roms_folder/wii" "dolphin" "General" - set_setting_value "$dolphinconf" "ISOPath1" "$roms_folder/gc" "dolphin" "General" - set_setting_value "$dolphinconf" "WiiSDCardPath" "$saves_folder/wii/dolphin/sd.raw" "dolphin" "General" - fi - fi - if [[ "$component" =~ ^(duckstation|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing DUCKSTATION" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/data/duckstation/" - cp -fv "$config/duckstation/"* "$multi_user_data_folder/$SteamAppUser/data/duckstation" - set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "SearchDirectory" "$bios_folder" "duckstation" "BIOS" - set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" - set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" - set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards" - set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation" - else # Single-user actions - create_dir -d "/var/config/duckstation/" - create_dir "$saves_folder/psx/duckstation/memcards" - cp -fv "$config/duckstation/"* /var/config/duckstation + if [[ "$component" =~ ^(duckstation|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing DUCKSTATION" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/data/duckstation/" + cp -fv "$config/duckstation/"* "$multi_user_data_folder/$SteamAppUser/data/duckstation" + set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "SearchDirectory" "$bios_folder" "duckstation" "BIOS" + set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" + set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" + set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards" + set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation" + else # Single-user actions + create_dir -d "/var/config/duckstation/" + create_dir "$saves_folder/psx/duckstation/memcards" + cp -fv "$config/duckstation/"* /var/config/duckstation + set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS" + set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" + set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" + set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards" + set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList" + fi + # Shared actions + dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed + dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" + + # Reset default preset settings + set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "cheevos")" "retrodeck" "cheevos" + set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" + set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" + set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS" set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards" set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList" + dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed + dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" fi - # Shared actions - dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed - dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" - - # Reset default preset settings - set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "cheevos")" "retrodeck" "cheevos" - set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" - set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" - set_setting_value "$rd_conf" "duckstation" "$(get_setting_value "$rd_defaults" "duckstation" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS" - set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards" - set_setting_value "$duckstationconf" "Card2Path" "$saves_folder/psx/duckstation/memcards/shared_card_2.mcd" "duckstation" "MemoryCards" - set_setting_value "$duckstationconf" "Directory" "$saves_folder/psx/duckstation/memcards" "duckstation" "MemoryCards" - set_setting_value "$duckstationconf" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList" - dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed - dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" - fi - fi - if [[ "$component" =~ ^(melonds|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing MELONDS" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/melonDS/" - cp -fvr $config/melonds/melonDS.ini "$multi_user_data_folder/$SteamAppUser/config/melonDS/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS9Path" "$bios_folder/bios9.bin" "melonds" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS7Path" "$bios_folder/bios7.bin" "melonds" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "FirmwarePath" "$bios_folder/firmware.bin" "melonds" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SaveFilePath" "$saves_folder/nds/melonds" "melonds" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SavestatePath" "$states_folder/nds/melonds" "melonds" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "/var/config/melonDS" - else # Single-user actions - create_dir -d /var/config/melonDS/ - cp -fvr $config/melonds/melonDS.ini /var/config/melonDS/ + if [[ "$component" =~ ^(melonds|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing MELONDS" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/melonDS/" + cp -fvr $config/melonds/melonDS.ini "$multi_user_data_folder/$SteamAppUser/config/melonDS/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS9Path" "$bios_folder/bios9.bin" "melonds" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "BIOS7Path" "$bios_folder/bios7.bin" "melonds" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "FirmwarePath" "$bios_folder/firmware.bin" "melonds" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SaveFilePath" "$saves_folder/nds/melonds" "melonds" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/melonDS/melonDS.ini" "SavestatePath" "$states_folder/nds/melonds" "melonds" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/melonDS" "/var/config/melonDS" + else # Single-user actions + create_dir -d /var/config/melonDS/ + cp -fvr $config/melonds/melonDS.ini /var/config/melonDS/ + set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds" + set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds" + set_setting_value "$melondsconf" "FirmwarePath" "$bios_folder/firmware.bin" "melonds" + set_setting_value "$melondsconf" "SaveFilePath" "$saves_folder/nds/melonds" "melonds" + set_setting_value "$melondsconf" "SavestatePath" "$states_folder/nds/melonds" "melonds" + fi + # Shared actions + create_dir "$saves_folder/nds/melonds" + create_dir "$states_folder/nds/melonds" + dir_prep "$bios_folder" "/var/config/melonDS/bios" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$bios_folder" "/var/config/melonDS/bios" set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds" set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds" set_setting_value "$melondsconf" "FirmwarePath" "$bios_folder/firmware.bin" "melonds" set_setting_value "$melondsconf" "SaveFilePath" "$saves_folder/nds/melonds" "melonds" set_setting_value "$melondsconf" "SavestatePath" "$states_folder/nds/melonds" "melonds" fi - # Shared actions - create_dir "$saves_folder/nds/melonds" - create_dir "$states_folder/nds/melonds" - dir_prep "$bios_folder" "/var/config/melonDS/bios" fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$bios_folder" "/var/config/melonDS/bios" - set_setting_value "$melondsconf" "BIOS9Path" "$bios_folder/bios9.bin" "melonds" - set_setting_value "$melondsconf" "BIOS7Path" "$bios_folder/bios7.bin" "melonds" - set_setting_value "$melondsconf" "FirmwarePath" "$bios_folder/firmware.bin" "melonds" - set_setting_value "$melondsconf" "SaveFilePath" "$saves_folder/nds/melonds" "melonds" - set_setting_value "$melondsconf" "SavestatePath" "$states_folder/nds/melonds" "melonds" - fi - fi - if [[ "$component" =~ ^(pcsx2|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing PCSX2" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis" - cp -fvr "$config/PCSX2/"* "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Bios" "$bios_folder" "pcsx2" "Folders" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "/var/config/PCSX2" - else # Single-user actions - create_dir -d "/var/config/PCSX2/inis" - cp -fvr "$config/PCSX2/"* /var/config/PCSX2/inis/ + if [[ "$component" =~ ^(pcsx2|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing PCSX2" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis" + cp -fvr "$config/PCSX2/"* "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Bios" "$bios_folder" "pcsx2" "Folders" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/PCSX2/inis/PCSX2.ini" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/PCSX2" "/var/config/PCSX2" + else # Single-user actions + create_dir -d "/var/config/PCSX2/inis" + cp -fvr "$config/PCSX2/"* /var/config/PCSX2/inis/ + set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders" + set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" + set_setting_value "$pcsx2conf" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" + set_setting_value "$pcsx2conf" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders" + set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList" + set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders" + if [[ -d "$cheats_folder/pcsx2" && "$(ls -A $cheats_folder/pcsx2)" ]]; then + backup_file="$backups_folder/cheats/pcsx2-$(date +%y%m%d).tar.gz" + create_dir "$(dirname $backup_file)" + tar -czf "$backup_file" -C "$cheats_folder" pcsx2 + log i "PCSX2 cheats backed up to $backup_file" + fi + create_dir -d "$cheats_folder/pcsx2" + tar --strip-components=1 -xzf /app/retrodeck/cheats/pcsx2.tar.gz -C "$cheats_folder/pcsx2" --overwrite + fi + # Shared actions + create_dir "$saves_folder/ps2/pcsx2/memcards" + create_dir "$states_folder/ps2/pcsx2" + dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures" + + # Reset default preset settings + set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "cheevos")" "retrodeck" "cheevos" + set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" + set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" + set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders" set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" set_setting_value "$pcsx2conf" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" set_setting_value "$pcsx2conf" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders" set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList" set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders" - if [[ -d "$cheats_folder/pcsx2" && "$(ls -A $cheats_folder/pcsx2)" ]]; then - backup_file="$backups_folder/cheats/pcsx2-$(date +%y%m%d).tar.gz" - create_dir "$(dirname $backup_file)" - tar -czf "$backup_file" -C "$cheats_folder" pcsx2 - log i "PCSX2 cheats backed up to $backup_file" + dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures" + fi + fi + + if [[ "$component" =~ ^(pico8|pico-8|all)$ ]]; then + component_found="true" + if [[ ("$action" == "reset") || ("$action" == "postmove") ]]; then + dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed + dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway) + dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder + cp -fv "$config/pico-8/config.txt" "$bios_folder/pico-8/config.txt" + cp -fv "$config/pico-8/sdl_controllers.txt" "$bios_folder/pico-8/sdl_controllers.txt" + fi + fi + + if [[ "$component" =~ ^(ppsspp|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing PPSSPPSDL" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/" + cp -fv "$config/ppssppsdl/"* "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/ppsspp.ini" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp" + else # Single-user actions + create_dir -d /var/config/ppsspp/PSP/SYSTEM/ + cp -fv "$config/ppssppsdl/"* /var/config/ppsspp/PSP/SYSTEM/ + set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" fi - create_dir -d "$cheats_folder/pcsx2" - tar --strip-components=1 -xzf /app/retrodeck/cheats/pcsx2.tar.gz -C "$cheats_folder/pcsx2" --overwrite + # Shared actions + dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA" + dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE" + dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES" + create_dir -d "$cheats_folder/PPSSPP" + dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats" + if [[ -d "$cheats_folder/PPSSPP" && "$(ls -A $cheats_folder/PPSSPP)" ]]; then + backup_file="$backups_folder/cheats/PPSSPP-$(date +%y%m%d).tar.gz" + create_dir "$(dirname "$backup_file")" + tar -czf "$backup_file" -C "$cheats_folder" PPSSPP + log i "PPSSPP cheats backed up to $backup_file" + fi + tar -xzf /app/retrodeck/cheats/ppsspp.tar.gz -C "$cheats_folder/PPSSPP" --overwrite fi - # Shared actions - create_dir "$saves_folder/ps2/pcsx2/memcards" - create_dir "$states_folder/ps2/pcsx2" - dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures" - - # Reset default preset settings - set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "cheevos")" "retrodeck" "cheevos" - set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "cheevos_hardcore")" "retrodeck" "cheevos_hardcore" - set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "savestate_auto_save")" "retrodeck" "savestate_auto_save" - set_setting_value "$rd_conf" "pcsx2" "$(get_setting_value "$rd_defaults" "pcsx2" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" - fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - set_setting_value "$pcsx2conf" "Bios" "$bios_folder" "pcsx2" "Folders" - set_setting_value "$pcsx2conf" "Snapshots" "$screenshots_folder" "pcsx2" "Folders" - set_setting_value "$pcsx2conf" "SaveStates" "$states_folder/ps2/pcsx2" "pcsx2" "Folders" - set_setting_value "$pcsx2conf" "MemoryCards" "$saves_folder/ps2/pcsx2/memcards" "pcsx2" "Folders" - set_setting_value "$pcsx2conf" "RecursivePaths" "$roms_folder/ps2" "pcsx2" "GameList" - set_setting_value "$pcsx2conf" "Cheats" "$cheats_folder/pcsx2" "Folders" - dir_prep "$texture_packs_folder/PCSX2" "/var/config/PCSX2/textures" - fi - fi - - if [[ "$component" =~ ^(pico8|pico-8|all)$ ]]; then - component_found="true" - if [[ ("$action" == "reset") || ("$action" == "postmove") ]]; then - dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed - dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway) - dir_prep "$saves_folder/pico-8" "$bios_folder/pico-8/cdata" # PICO-8 saves folder - cp -fv "$config/pico-8/config.txt" "$bios_folder/pico-8/config.txt" - cp -fv "$config/pico-8/sdl_controllers.txt" "$bios_folder/pico-8/sdl_controllers.txt" - fi - fi - - if [[ "$component" =~ ^(ppsspp|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing PPSSPPSDL" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/" - cp -fv "$config/ppssppsdl/"* "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/ppsspp/PSP/SYSTEM/ppsspp.ini" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/ppsspp" "/var/config/ppsspp" - else # Single-user actions - create_dir -d /var/config/ppsspp/PSP/SYSTEM/ - cp -fv "$config/ppssppsdl/"* /var/config/ppsspp/PSP/SYSTEM/ + if [[ "$action" == "postmove" ]]; then # Run only post-move commands set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" + dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA" + dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE" + dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES" + dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats" fi - # Shared actions - dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA" - dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE" - dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES" - create_dir -d "$cheats_folder/PPSSPP" - dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats" - if [[ -d "$cheats_folder/PPSSPP" && "$(ls -A $cheats_folder/PPSSPP)" ]]; then - backup_file="$backups_folder/cheats/PPSSPP-$(date +%y%m%d).tar.gz" - create_dir "$(dirname "$backup_file")" - tar -czf "$backup_file" -C "$cheats_folder" PPSSPP - log i "PPSSPP cheats backed up to $backup_file" - fi - tar -xzf /app/retrodeck/cheats/ppsspp.tar.gz -C "$cheats_folder/PPSSPP" --overwrite fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - set_setting_value "$ppssppconf" "CurrentDirectory" "$roms_folder/psp" "ppsspp" "General" - dir_prep "$saves_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/SAVEDATA" - dir_prep "$states_folder/PSP/PPSSPP-SA" "/var/config/ppsspp/PSP/PPSSPP_STATE" - dir_prep "$texture_packs_folder/PPSSPP" "/var/config/ppsspp/PSP/TEXTURES" - dir_prep "$cheats_folder/PPSSPP" "/var/config/ppsspp/PSP/Cheats" - fi - fi - if [[ "$component" =~ ^(primehack|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing Primehack" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/primehack" - cp -fvr "$config/primehack/config/"* "$multi_user_data_folder/$SteamAppUser/config/primehack/" - set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath0" "$roms_folder/gc" "primehack" "General" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack" - else # Single-user actions - create_dir -d /var/config/primehack/ - cp -fvr "$config/primehack/config/"* /var/config/primehack/ + if [[ "$component" =~ ^(primehack|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing Primehack" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/primehack" + cp -fvr "$config/primehack/config/"* "$multi_user_data_folder/$SteamAppUser/config/primehack/" + set_setting_value ""$multi_user_data_folder/$SteamAppUser/config/primehack/Dolphin.ini"" "ISOPath0" "$roms_folder/gc" "primehack" "General" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/primehack" "/var/config/primehack" + else # Single-user actions + create_dir -d /var/config/primehack/ + cp -fvr "$config/primehack/config/"* /var/config/primehack/ + set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General" + fi + # Shared actions + dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR" + dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA" + dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP" + dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots" + dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves" + create_dir /var/data/primehack/Wii/ + dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii" + dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods" + dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures" + cp -fvr "$config/primehack/data/"* "$multi_user_data_folder/$SteamAppUser/data/primehack/" # this must be done after the dirs are prepared as it copying some "mods" + + # Reset default preset settings + set_setting_value "$rd_conf" "primehack" "$(get_setting_value "$rd_defaults" "primehack" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR" + dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA" + dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP" + dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots" + dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves" + dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii/" + dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods" + dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures" set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General" fi - # Shared actions - dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR" - dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA" - dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP" - dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots" - dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves" - create_dir /var/data/primehack/Wii/ - dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii" - dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods" - dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures" - cp -fvr "$config/primehack/data/"* "$multi_user_data_folder/$SteamAppUser/data/primehack/" # this must be done after the dirs are prepared as it copying some "mods" - - # Reset default preset settings - set_setting_value "$rd_conf" "primehack" "$(get_setting_value "$rd_defaults" "primehack" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$saves_folder/gc/primehack/EU" "/var/data/primehack/GC/EUR" - dir_prep "$saves_folder/gc/primehack/US" "/var/data/primehack/GC/USA" - dir_prep "$saves_folder/gc/primehack/JP" "/var/data/primehack/GC/JAP" - dir_prep "$screenshots_folder" "/var/data/primehack/ScreenShots" - dir_prep "$states_folder/primehack" "/var/data/primehack/StateSaves" - dir_prep "$saves_folder/wii/primehack" "/var/data/primehack/Wii/" - dir_prep "$mods_folder/Primehack" "/var/data/primehack/Load/GraphicMods" - dir_prep "$texture_packs_folder/Primehack" "/var/data/primehack/Load/Textures" - set_setting_value "$primehackconf" "ISOPath0" "$roms_folder/gc" "primehack" "General" - fi - fi - if [[ "$component" =~ ^(rpcs3|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing RPCS3" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/rpcs3/" - cp -fr "$config/rpcs3/"* "$multi_user_data_folder/$SteamAppUser/config/rpcs3/" - # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. - sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" "/games/" "$roms_folder/ps3/" "rpcs3" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "/var/config/rpcs3" - else # Single-user actions - create_dir -d /var/config/rpcs3/ - cp -fr "$config/rpcs3/"* /var/config/rpcs3/ - # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. - sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf" - set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3" - dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" - dir_prep "$states_folder/ps3/rpcs3" "/var/config/rpcs3/savestates" + if [[ "$component" =~ ^(rpcs3|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing RPCS3" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/rpcs3/" + cp -fr "$config/rpcs3/"* "$multi_user_data_folder/$SteamAppUser/config/rpcs3/" + # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. + sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/rpcs3/vfs.yml" "/games/" "$roms_folder/ps3/" "rpcs3" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/rpcs3" "/var/config/rpcs3" + else # Single-user actions + create_dir -d /var/config/rpcs3/ + cp -fr "$config/rpcs3/"* /var/config/rpcs3/ + # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. + sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf" + set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3" + dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" + dir_prep "$states_folder/ps3/rpcs3" "/var/config/rpcs3/savestates" + fi + # Shared actions + create_dir "$bios_folder/rpcs3/dev_hdd0" + create_dir "$bios_folder/rpcs3/dev_hdd1" + create_dir "$bios_folder/rpcs3/dev_flash" + create_dir "$bios_folder/rpcs3/dev_flash2" + create_dir "$bios_folder/rpcs3/dev_flash3" + create_dir "$bios_folder/rpcs3/dev_bdvd" + create_dir "$bios_folder/rpcs3/dev_usb000" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. + sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3"'^' "$rpcs3vfsconf" + set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3" "rpcs3" fi - # Shared actions - create_dir "$bios_folder/rpcs3/dev_hdd0" - create_dir "$bios_folder/rpcs3/dev_hdd1" - create_dir "$bios_folder/rpcs3/dev_flash" - create_dir "$bios_folder/rpcs3/dev_flash2" - create_dir "$bios_folder/rpcs3/dev_flash3" - create_dir "$bios_folder/rpcs3/dev_bdvd" - create_dir "$bios_folder/rpcs3/dev_usb000" fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - # This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name. - sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3"'^' "$rpcs3vfsconf" - set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3" "rpcs3" - fi - fi - if [[ "$component" =~ ^(ryujinx|all)$ ]]; then - component_found="true" - # NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there - # When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system. - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing RYUJINX" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then - rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" - #create_dir "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system" - cp -fv $config/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" - sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx" - else - # removing config directory to wipe legacy files - log d "Removing \"/var/config/Ryujinx\"" - rm -rf /var/config/Ryujinx - create_dir /var/config/Ryujinx/system - cp -fv $config/ryujinx/Config.json $ryujinxconf - cp -fvr $config/ryujinx/profiles /var/config/Ryujinx/ + if [[ "$component" =~ ^(ryujinx|all)$ ]]; then + component_found="true" + # NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there + # When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system. + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing RYUJINX" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then + rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" + #create_dir "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system" + cp -fv $config/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx" + else + # removing config directory to wipe legacy files + log d "Removing \"/var/config/Ryujinx\"" + rm -rf /var/config/Ryujinx + create_dir /var/config/Ryujinx/system + cp -fv $config/ryujinx/Config.json $ryujinxconf + cp -fvr $config/ryujinx/profiles /var/config/Ryujinx/ + log d "Replacing placeholders in \"$ryujinxconf\"" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" + create_dir "$logs_folder/ryujinx" + create_dir "$mods_folder/ryujinx" + create_dir "$screenshots_folder/ryujinx" + fi + fi + # if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves + # dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system" + # fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands log d "Replacing placeholders in \"$ryujinxconf\"" - sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" - create_dir "$logs_folder/ryujinx" - create_dir "$mods_folder/ryujinx" - create_dir "$screenshots_folder/ryujinx" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON fi fi - # if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves - # dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system" - # fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - log d "Replacing placeholders in \"$ryujinxconf\"" - sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON - fi - fi - if [[ "$component" =~ ^(yuzu|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing YUZU" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/yuzu" - cp -fvr "$config/yuzu/"* "$multi_user_data_folder/$SteamAppUser/config/yuzu/" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "/var/config/yuzu" - else # Single-user actions - create_dir -d /var/config/yuzu/ - cp -fvr "$config/yuzu/"* /var/config/yuzu/ - set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" - set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" - set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" - set_setting_value "$yuzuconf" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" + if [[ $(get_setting_value "$rd_conf" "kiroi_ponzu" "retrodeck" "options") == "true" ]]; then + if [[ "$component" =~ ^(yuzu|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing YUZU" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/yuzu" + cp -fvr "$config/yuzu/"* "$multi_user_data_folder/$SteamAppUser/config/yuzu/" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/yuzu/qt-config.ini" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/yuzu" "/var/config/yuzu" + else # Single-user actions + create_dir -d /var/config/yuzu/ + cp -fvr "$config/yuzu/"* /var/config/yuzu/ + set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" + set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" + set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" + set_setting_value "$yuzuconf" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" + fi + # Shared actions + dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand" + dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc" + dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys" + dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered" + dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log" + dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots" + dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load" + # removing dead symlinks as they were present in a past version + if [ -d $bios_folder/switch ]; then + find $bios_folder/switch -xtype l -exec rm {} \; + fi + + # Reset default preset settings + set_setting_value "$rd_conf" "yuzu" "$(get_setting_value "$rd_defaults" "yuzu" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" + set_setting_value "$rd_conf" "yuzu" "$(get_setting_value "$rd_defaults" "yuzu" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys" + dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered" + dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand" + dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc" + dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log" + dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots" + dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load" + set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" + set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" + set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" + set_setting_value "$yuzuconf" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" + fi fi - # Shared actions - dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand" - dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc" - dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys" - dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered" - dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log" - dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots" - dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load" - # removing dead symlinks as they were present in a past version - if [ -d $bios_folder/switch ]; then - find $bios_folder/switch -xtype l -exec rm {} \; + fi + + if [[ "$component" =~ ^(xemu|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "------------------------" + log i "Prepearing XEMU" + log i "------------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + rm -rf /var/config/xemu + rm -rf /var/data/xemu + create_dir -d "$multi_user_data_folder/$SteamAppUser/config/xemu/" + cp -fv $config/xemu/xemu.toml "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" + set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" + dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/config/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look + dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/data/xemu/xemu" + else # Single-user actions + rm -rf /var/config/xemu + rm -rf /var/data/xemu + dir_prep "/var/config/xemu" "/var/data/xemu/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look + cp -fv $config/xemu/xemu.toml "$xemuconf" + set_setting_value "$xemuconf" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" + set_setting_value "$xemuconf" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" + set_setting_value "$xemuconf" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" + set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" + set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" + fi # Shared actions + create_dir $saves_folder/xbox/xemu/ + # Preparing HD dummy Image if the image is not found + if [ ! -f $bios_folder/xbox_hdd.qcow2 ] + then + cp -f "/app/retrodeck/extras/XEMU/xbox_hdd.qcow2" "$bios_folder/xbox_hdd.qcow2" + fi fi - - # Reset default preset settings - set_setting_value "$rd_conf" "yuzu" "$(get_setting_value "$rd_defaults" "yuzu" "retrodeck" "abxy_button_swap")" "retrodeck" "abxy_button_swap" - set_setting_value "$rd_conf" "yuzu" "$(get_setting_value "$rd_defaults" "yuzu" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit" - fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$bios_folder/switch/keys" "/var/data/yuzu/keys" - dir_prep "$bios_folder/switch/firmware" "/var/data/yuzu/nand/system/Contents/registered" - dir_prep "$saves_folder/switch/yuzu/nand" "/var/data/yuzu/nand" - dir_prep "$saves_folder/switch/yuzu/sdmc" "/var/data/yuzu/sdmc" - dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log" - dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots" - dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load" - set_setting_value "$yuzuconf" "nand_directory" "$saves_folder/switch/yuzu/nand" "yuzu" "Data%20Storage" - set_setting_value "$yuzuconf" "sdmc_directory" "$saves_folder/switch/yuzu/sdmc" "yuzu" "Data%20Storage" - set_setting_value "$yuzuconf" "Paths\gamedirs\4\path" "$roms_folder/switch" "yuzu" "UI" - set_setting_value "$yuzuconf" "Screenshots\screenshot_path" "$screenshots_folder" "yuzu" "UI" - fi - fi - - if [[ "$component" =~ ^(xemu|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "------------------------" - log i "Prepearing XEMU" - log i "------------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - rm -rf /var/config/xemu - rm -rf /var/data/xemu - create_dir -d "$multi_user_data_folder/$SteamAppUser/config/xemu/" - cp -fv $config/xemu/xemu.toml "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" - set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/config/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look - dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/data/xemu/xemu" - else # Single-user actions - rm -rf /var/config/xemu - rm -rf /var/data/xemu - dir_prep "/var/config/xemu" "/var/data/xemu/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look - cp -fv $config/xemu/xemu.toml "$xemuconf" + if [[ "$action" == "postmove" ]]; then # Run only post-move commands set_setting_value "$xemuconf" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" set_setting_value "$xemuconf" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" set_setting_value "$xemuconf" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" - fi # Shared actions - create_dir $saves_folder/xbox/xemu/ - # Preparing HD dummy Image if the image is not found - if [ ! -f $bios_folder/xbox_hdd.qcow2 ] - then - cp -f "/app/retrodeck/extras/XEMU/xbox_hdd.qcow2" "$bios_folder/xbox_hdd.qcow2" fi fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - set_setting_value "$xemuconf" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" - set_setting_value "$xemuconf" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" - set_setting_value "$xemuconf" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" - set_setting_value "$xemuconf" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" - set_setting_value "$xemuconf" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" - fi - fi - if [[ "$component" =~ ^(vita3k|all)$ ]]; then - component_found="true" - if [[ "$action" == "reset" ]]; then # Run reset-only commands - log i "----------------------" - log i "Prepearing Vita3K" - log i "----------------------" - if [[ $multi_user_mode == "true" ]]; then # Multi-user actions - log d "Figure out what Vita3k needs for multi-user" - else # Single-user actions - # NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K - rm -rf "/var/config/Vita3K" - create_dir "/var/config/Vita3K" - cp -fvr "$config/vita3k/config.yml" "$vita3kconf" # component config - cp -fvr "$config/vita3k/ux0" "$bios_folder/Vita3K/" # User config + if [[ "$component" =~ ^(vita3k|all)$ ]]; then + component_found="true" + if [[ "$action" == "reset" ]]; then # Run reset-only commands + log i "----------------------" + log i "Prepearing Vita3K" + log i "----------------------" + if [[ $multi_user_mode == "true" ]]; then # Multi-user actions + log d "Figure out what Vita3k needs for multi-user" + else # Single-user actions + # NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K + rm -rf "/var/config/Vita3K" + create_dir "/var/config/Vita3K" + cp -fvr "$config/vita3k/config.yml" "$vita3kconf" # component config + cp -fvr "$config/vita3k/ux0" "$bios_folder/Vita3K/" # User config + set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k" + fi + # Shared actions + dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe? + fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe? set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k" fi - # Shared actions - dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe? fi - if [[ "$action" == "postmove" ]]; then # Run only post-move commands - dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe? - set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k" + + if [[ "$component" =~ ^(mame|all)$ ]]; then + component_found="true" + # TODO: do a proper script + # This is just a placeholder script to test the emulator's flow + log i "----------------------" + log i "Prepearing MAME" + log i "----------------------" + + # TODO: probably some of these needs to be put elsewhere + create_dir "$saves_folder/mame-sa" + create_dir "$saves_folder/mame-sa/nvram" + create_dir "$states_folder/mame-sa" + create_dir "$rdhome/screenshots/mame-sa" + create_dir "$saves_folder/mame-sa/diff" + + create_dir "/var/config/ctrlr" + create_dir "/var/config/mame/ini" + create_dir "/var/config/mame/cfg" + create_dir "/var/config/mame/inp" + + create_dir "/var/data/mame/plugin-data" + create_dir "/var/data/mame/hash" + create_dir "$bios_folder/mame-sa/samples" + create_dir "/var/data/mame/assets/artwork" + create_dir "/var/data/mame/assets/fonts" + create_dir "/var/data/mame/assets/crosshair" + create_dir "/var/data/mame/plugins" + create_dir "/var/data/mame/assets/language" + create_dir "/var/data/mame/assets/software" + create_dir "/var/data/mame/assets/comments" + create_dir "/var/data/mame/assets/share" + create_dir "/var/data/mame/dats" + create_dir "/var/data/mame/folders" + create_dir "/var/data/mame/assets/cabinets" + create_dir "/var/data/mame/assets/cpanel" + create_dir "/var/data/mame/assets/pcb" + create_dir "/var/data/mame/assets/flyers" + create_dir "/var/data/mame/assets/titles" + create_dir "/var/data/mame/assets/ends" + create_dir "/var/data/mame/assets/marquees" + create_dir "/var/data/mame/assets/artwork-preview" + create_dir "/var/data/mame/assets/bosses" + create_dir "/var/data/mame/assets/logo" + create_dir "/var/data/mame/assets/scores" + create_dir "/var/data/mame/assets/versus" + create_dir "/var/data/mame/assets/gameover" + create_dir "/var/data/mame/assets/howto" + create_dir "/var/data/mame/assets/select" + create_dir "/var/data/mame/assets/icons" + create_dir "/var/data/mame/assets/covers" + create_dir "/var/data/mame/assets/ui" + + dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore" + cp -fvr "$config/mame/mame.ini" "$mameconf" + cp -fvr "$config/mame/ui.ini" "$mameuiconf" + cp -fvr "$config/mame/default.cfg" "$mamedefconf" + + sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "$mameconf" # one-off as roms folders are a lot + set_setting_value "$mameconf" "nvram_directory" "$saves_folder/mame-sa/nvram" "mame" + set_setting_value "$mameconf" "state_directory" "$states_folder/mame-sa" "mame" + set_setting_value "$mameconf" "snapshot_directory" "$screenshots_folder/mame-sa" "mame" + set_setting_value "$mameconf" "diff_directory" "$saves_folder/mame-sa/diff" "mame" + set_setting_value "$mameconf" "samplepath" "$bios_folder/mame-sa/samples" "mame" + set_setting_value "$mameconf" "cheatpath" "$cheats_folder/mame" "mame" + + log i "Placing cheats in \"$cheats_folder/mame\"" + unzip -j -o "$config/mame/cheat0264.zip" 'cheat.7z' -d "$cheats_folder/mame" + fi - fi - if [[ "$component" =~ ^(mame|all)$ ]]; then - component_found="true" - # TODO: do a proper script - # This is just a placeholder script to test the emulator's flow - log i "----------------------" - log i "Prepearing MAME" - log i "----------------------" + if [[ "$component" =~ ^(gzdoom|all)$ ]]; then + component_found="true" + # TODO: do a proper script + # This is just a placeholder script to test the emulator's flow + log i "----------------------" + log i "Prepearing GZDOOM" + log i "----------------------" - # TODO: probably some of these needs to be put elsewhere - create_dir "$saves_folder/mame-sa" - create_dir "$saves_folder/mame-sa/nvram" - create_dir "$states_folder/mame-sa" - create_dir "$rdhome/screenshots/mame-sa" - create_dir "$saves_folder/mame-sa/diff" + create_dir "/var/config/gzdoom" + create_dir "/var/data/gzdoom/audio/midi" + create_dir "/var/data/gzdoom/audio/fm_banks" + create_dir "/var/data/gzdoom/audio/soundfonts" + create_dir "$bios_folder/gzdoom" - create_dir "/var/config/ctrlr" - create_dir "/var/config/mame/ini" - create_dir "/var/config/mame/cfg" - create_dir "/var/config/mame/inp" + cp -fvr "$config/gzdoom/gzdoom.ini" "/var/config/gzdoom" - create_dir "/var/data/mame/plugin-data" - create_dir "/var/data/mame/hash" - create_dir "$bios_folder/mame-sa/samples" - create_dir "/var/data/mame/assets/artwork" - create_dir "/var/data/mame/assets/fonts" - create_dir "/var/data/mame/assets/crosshair" - create_dir "/var/data/mame/plugins" - create_dir "/var/data/mame/assets/language" - create_dir "/var/data/mame/assets/software" - create_dir "/var/data/mame/assets/comments" - create_dir "/var/data/mame/assets/share" - create_dir "/var/data/mame/dats" - create_dir "/var/data/mame/folders" - create_dir "/var/data/mame/assets/cabinets" - create_dir "/var/data/mame/assets/cpanel" - create_dir "/var/data/mame/assets/pcb" - create_dir "/var/data/mame/assets/flyers" - create_dir "/var/data/mame/assets/titles" - create_dir "/var/data/mame/assets/ends" - create_dir "/var/data/mame/assets/marquees" - create_dir "/var/data/mame/assets/artwork-preview" - create_dir "/var/data/mame/assets/bosses" - create_dir "/var/data/mame/assets/logo" - create_dir "/var/data/mame/assets/scores" - create_dir "/var/data/mame/assets/versus" - create_dir "/var/data/mame/assets/gameover" - create_dir "/var/data/mame/assets/howto" - create_dir "/var/data/mame/assets/select" - create_dir "/var/data/mame/assets/icons" - create_dir "/var/data/mame/assets/covers" - create_dir "/var/data/mame/assets/ui" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON + sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON + 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 - dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore" - cp -fvr "$config/mame/mame.ini" "$mameconf" - cp -fvr "$config/mame/ui.ini" "$mameuiconf" - cp -fvr "$config/mame/default.cfg" "$mamedefconf" + if [[ "$component" =~ ^(portmaster|all)$ ]]; then + component_found="true" + # TODO: MultiUser + log i "----------------------" + log i "Prepearing PortMaster" + log i "----------------------" - sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "$mameconf" # one-off as roms folders are a lot - set_setting_value "$mameconf" "nvram_directory" "$saves_folder/mame-sa/nvram" "mame" - set_setting_value "$mameconf" "state_directory" "$states_folder/mame-sa" "mame" - set_setting_value "$mameconf" "snapshot_directory" "$screenshots_folder/mame-sa" "mame" - set_setting_value "$mameconf" "diff_directory" "$saves_folder/mame-sa/diff" "mame" - set_setting_value "$mameconf" "samplepath" "$bios_folder/mame-sa/samples" "mame" - set_setting_value "$mameconf" "cheatpath" "$cheats_folder/mame" "mame" + rm -rf "/var/data/PortMaster" + unzip "/app/retrodeck/PortMaster.zip" -d "/var/data/" + cp -f "/var/data/PortMaster/retrodeck/PortMaster.txt" "/var/data/PortMaster/PortMaster.sh" + chmod +x "/var/data/PortMaster/PortMaster.sh" + rm -f "$roms_folder/portmaster/PortMaster.sh" + install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh" + create_dir "/var/data/PortMaster/config/" + cp "$config/portmaster/config.json" "/var/data/PortMaster/config/config.json" - log i "Placing cheats in \"$cheats_folder/mame\"" - unzip -j -o "$config/mame/cheat0264.zip" 'cheat.7z' -d "$cheats_folder/mame" + fi - fi + if [[ "$component" =~ ^(ruffle|all)$ ]]; then + component_found="true" + log i "----------------------" + log i "Prepearing Ruffle" + log i "----------------------" - if [[ "$component" =~ ^(gzdoom|all)$ ]]; then - component_found="true" - # TODO: do a proper script - # This is just a placeholder script to test the emulator's flow - log i "----------------------" - log i "Prepearing GZDOOM" - log i "----------------------" + rm -rf "/var/config/ruffle" - create_dir "/var/config/gzdoom" - create_dir "/var/data/gzdoom/audio/midi" - create_dir "/var/data/gzdoom/audio/fm_banks" - create_dir "/var/data/gzdoom/audio/soundfonts" - create_dir "$bios_folder/gzdoom" - - cp -fvr "$config/gzdoom/gzdoom.ini" "/var/config/gzdoom" - - sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON - sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON - 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" =~ ^(portmaster|all)$ ]]; then - component_found="true" - # TODO: MultiUser - log i "----------------------" - log i "Prepearing PortMaster" - log i "----------------------" - - rm -rf "/var/data/PortMaster" - unzip "/app/retrodeck/PortMaster.zip" -d "/var/data/" - cp -f "/var/data/PortMaster/retrodeck/PortMaster.txt" "/var/data/PortMaster/PortMaster.sh" - chmod +x "/var/data/PortMaster/PortMaster.sh" - rm -f "$roms_folder/portmaster/PortMaster.sh" - install -Dm755 "/var/data/PortMaster/PortMaster.sh" "$roms_folder/portmaster/PortMaster.sh" - create_dir "/var/data/PortMaster/config/" - cp "$config/portmaster/config.json" "/var/data/PortMaster/config/config.json" - - fi - - if [[ "$component" =~ ^(ruffle|all)$ ]]; then - component_found="true" - log i "----------------------" - log i "Prepearing Ruffle" - log i "----------------------" - - rm -rf "/var/config/ruffle" - - # Ruffle creates a directory with the full rom paths in it, so this is necessary - # TODO: be aware of this when multi user support will be integrated for this component - dir_prep "$saves_folder/flash" "/var/data/ruffle/SharedObjects/localhost/$roms_folder/flash" - - if [[ "$action" == "postmove" ]]; then # Run only post-move commands + # Ruffle creates a directory with the full rom paths in it, so this is necessary + # TODO: be aware of this when multi user support will be integrated for this component dir_prep "$saves_folder/flash" "/var/data/ruffle/SharedObjects/localhost/$roms_folder/flash" - fi - - fi - if [[ $component_found == "false" ]]; then - log e "Supplied component $component not found, not resetting" - fi + if [[ "$action" == "postmove" ]]; then # Run only post-move commands + dir_prep "$saves_folder/flash" "/var/data/ruffle/SharedObjects/localhost/$roms_folder/flash" + fi + + fi + + if [[ $component_found == "false" ]]; then + log e "Supplied component $component not found, not resetting" + fi + done # Update presets for all components after any reset or move if [[ ! "$component" == "retrodeck" ]]; then diff --git a/net.retrodeck.retrodeck.metainfo.xml b/net.retrodeck.retrodeck.metainfo.xml index dbd1d922..b1159ccd 100644 --- a/net.retrodeck.retrodeck.metainfo.xml +++ b/net.retrodeck.retrodeck.metainfo.xml @@ -65,8 +65,11 @@

New Additions:

Bug fixes:

@@ -82,6 +85,7 @@
diff --git a/retrodeck.sh b/retrodeck.sh index a8efd85a..f77a82bf 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -2,17 +2,6 @@ source /app/libexec/global.sh -# uses jq to extract all the emulators (components) that don't have resettable: false in the features.json and separate them with "|" -resettable_components=$(jq -r ' - [(.emulator | to_entries[]) | - select(.value.core == null and .value.resettable != false) | - .key] | sort | join("|") -' "$features") - -# uses sed to create, a, list, like, this -pretty_resettable_components=$(echo "$resettable_components" | sed 's/|/, /g') - - show_cli_help() { echo -e " Usage: @@ -26,11 +15,10 @@ Arguments: --configurator \t Starts the RetroDECK Configurator --compress-one \t Compresses target file to a compatible format --compress-all \t Compresses all supported games into a compatible format.\n\t\t\t\t\t\t Available formats are \"chd\", \"zip\", \"rvz\" and \"all\" - --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!) + --reset \t Reset RetroDECK or one or more component/emulator configurations to default values. WARNING: no confirmation prompt --test-upgrade \t Test upgrading RetroDECK to a specific version, developer use only --set [value] \t Configure or toggle a preset. Examples: --set borders, --set borders all true,\n\t\t\t\t\t\t --set borders gba false. Use --set help for more information - --open \t Open a specific component or emulator\n\t\t\t\t\t\t --open --getlist for a list of available components + --open \t Open a specific component or emulator\n\t\t\t\t\t\t --open --list for a list of available components Game Launch: [] \t Start a game using the default emulator or\n\t\t\t\t\t\t the one defined in ES-DE for game or system @@ -93,42 +81,17 @@ for i in "$@"; do # shift # fi # ;; - --reset-component*) - component="$2" + --reset*) + component="${@:2}" if [ -z "$component" ]; then echo "You are about to reset one or more RetroDECK components or emulators." - echo -e "Available options are:\nall, $pretty_resettable_components" + echo -e "Available options are:\nall, $(prepare_component --list | tr ' ' ',' | sed 's/,/, /g')" read -p "Please enter the component you would like to reset: " component component=$(echo "$component" | tr '[:upper:]' '[:lower:]') fi - - if [[ "$component" =~ ^(all|$resettable_components)$ ]]; 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" - read -p "The process has been completed, press Enter key to start RetroDECK." - shift # Continue launch after previous command is finished - else - read -p "The process has been cancelled, press Enter key to exit." - exit - fi - else - echo "$component is not a valid selection, exiting..." - exit - fi - ;; - --reset-retrodeck*) - echo "You are about to reset RetroDECK completely!" - read -p "Enter 'y' to continue, 'n' to stop: " response - if [[ $response == [yY] ]]; then - rm -f "$lockfile" - rm -f "$rd_conf" - read -p "The process has been completed, press Enter key to exit. Please run RetroDECK again to start the initial setup process." - exit 1 - else - read -p "The process has been cancelled, press Enter key to exit." - exit - fi + log d "Resetting component: $component" + prepare_component "reset" "$component" + exit ;; --test-upgrade*) if [[ "$2" =~ ^.+ ]]; then diff --git a/tools/configurator.sh b/tools/configurator.sh index d2428102..71c72193 100755 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -23,7 +23,7 @@ source /app/libexec/global.sh # - Toggle Universal Dynamic Input for Primehack # - PortMaster # - Open Component (Behind one-time power user warning dialog) -# - Dynamically generated list of emulators from open_component --getlist and --getdesc (features.json) +# - Dynamically generated list of emulators from open_component --list and --getdesc (features.json) # - Reset Component # - Reset Emulator or Engine # - Reset RetroArch @@ -98,7 +98,7 @@ configurator_welcome_dialog() { welcome_menu_options=( "Settings" "Here you will find various presets, tweaks and settings to customize your RetroDECK experience" "Open Component" "Launch and configure each emulator or component's settings (for advanced users)" - "Reset Component" "Reset specific parts or all of RetroDECK" + "Reset Components" "Reset specific parts or all of RetroDECK" "Tools" "Games Compressor, move RetroDECK and install optional features" "Steam Sync" "Sync all favorited games with Steam" "Data Management" "Move RetroDECK folders between internal/SD card or to a custom location" @@ -126,7 +126,7 @@ configurator_welcome_dialog() { configurator_power_user_warning_dialog ;; - "Reset Component" ) + "Reset Components" ) log i "Configurator: opening \"$choice\" menu" configurator_reset_dialog ;; @@ -372,7 +372,7 @@ configurator_power_user_warning_dialog() { configurator_open_emulator_dialog() { # This function displays a dialog to the user for selecting an emulator to open. # It first constructs a list of available emulators and their descriptions by reading - # from the output of `open_component --getlist` and `open_component --getdesc`. + # from the output of `open_component --list` and `open_component --getdesc`. # If certain settings (kiroi_ponzu or akai_ponzu) are enabled, it adds Yuzu and Citra # to the list of emulators. # The function then uses `rd_zenity` to display a graphical list dialog with the @@ -383,8 +383,10 @@ configurator_open_emulator_dialog() { local emulator_list=() while IFS= read -r emulator && IFS= read -r desc; do - emulator_list+=("$emulator" "$desc") - done < <(paste -d '\n' <(open_component --getlist) <(open_component --getdesc)) + if [[ "$emulator" != "RetroDECK" ]]; then + emulator_list+=("$emulator" "$desc") + fi + done < <(paste -d '\n' <(open_component --list) <(open_component --getdesc)) emulator=$(rd_zenity --list \ --title "RetroDECK Configurator Utility - Open Component" --cancel-label="Back" \ @@ -979,163 +981,48 @@ configurator_check_multifile_game_structure() { configurator_reset_dialog() { - local choices=( - "Reset Emulator or Engine" "Reset only one specific emulator or engine to default settings" - "Reset RetroDECK Component" "Reset a single component, components are parts of RetroDECK that are not emulators" - "Reset All Emulators and Components" "Reset all emulators and components to default settings" - "Reset RetroDECK" "Reset RetroDECK to default settings" - ) + # This function displays a dialog to the user for selecting components to reset. + # It first constructs a list of available components and their descriptions by reading + # from the features.json file. + # The function then uses `rd_zenity` to display a graphical checklist dialog with the + # available components and their descriptions. + # If the user selects components, it calls `prepare_component` with the selected components. + # If the user cancels the dialog, it calls `configurator_welcome_dialog` to return to the welcome screen. - choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Reset Component" --cancel-label="Back" \ + local components_list=() + while IFS= read -r emulator; do + # Extract the description and name of the current emulator using jq + desc=$(jq -r --arg emulator "$emulator" '.emulator[$emulator].description' "$features") + name=$(jq -r --arg emulator "$emulator" '.emulator[$emulator].name' "$features") + components_list+=("FALSE" "$emulator" "$name" "$desc") + done < <(prepare_component --list | tr ' ' '\n') + + choice=$(rd_zenity --list \ + --title "RetroDECK Configurator Utility - Reset Components" --cancel-label="Cancel" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ - --column="Choice" --column="Action" \ - "${choices[@]}") + --checklist --ok-label="Reset Selected" --extra-button="Reset All" \ + --print-column=2 \ + --text="Which components do you want to reset?" \ + --column "Reset" \ + --column "Emulator" --hide-column=2 \ + --column "Name" \ + --column "Description" \ + "${components_list[@]}") - local emulator_list=( - "RetroArch" "Reset the multi-emulator frontend RetroArch to default settings" - "Cemu" "Reset the Wii U emulator Cemu to default settings" - "Dolphin" "Reset the Wii/GameCube emulator Dolphin to default settings" - "Duckstation" "Reset the PSX emulator Duckstation to default settings" - "GZDoom" "Reset the GZDoom Doom engine to default settings" - "MAME" "Reset the Multiple Arcade Machine Emulator (MAME) to default settings" - "MelonDS" "Reset the NDS emulator MelonDS to default settings" - "PCSX2" "Reset the PS2 emulator PCSX2 to default settings" - "PPSSPP" "Reset the PSP emulator PPSSPP to default settings" - "PortMaster" "Reset PortMaster to default settings" - "Primehack" "Reset the Metroid Prime emulator Primehack to default settings" - "Ruffle" "Reset the Flash emulator Ruffle to default settings" - "RPCS3" "Reset the PS3 emulator RPCS3 to default settings" - "Ryujinx" "Reset the Switch emulator Ryujinx to default settings" - "Steam ROM Manager" "Reset Steam ROM Manager to default settings" - "Vita3k" "Reset the PS Vita emulator Vita3k to default settings" - "XEMU" "Reset the XBOX emulator XEMU to default settings" - ) - - # Check if any ponzu is true before adding Yuzu or Citra to the list - if [[ $(get_setting_value "$rd_conf" "kiroi_ponzu" "retrodeck" "options") == "true" ]]; then - emulator_list+=("Yuzu" "Reset the Switch emulator Yuzu") - fi - if [[ $(get_setting_value "$rd_conf" "akai_ponzu" "retrodeck" "options") == "true" ]]; then - emulator_list+=("Citra" "Reset the 3DS emulator Citra") - fi - - case $choice in - - "Reset Emulator or Engine" ) - log i "Configurator: opening \"$choice\" menu" - component_to_reset=$(rd_zenity --list \ - --title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \ - --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ - --text="Which emulator or engine do you want to reset to default?" \ - --column="Emulator" --column="Action" \ - "${emulator_list[@]}") - - case $component_to_reset in - - "RetroArch" | "Vita3k" | "XEMU" ) # Emulators that require network access - if [[ $(check_network_connectivity) == "true" ]]; then - if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset the $component_to_reset emulator 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" - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Reset process cancelled." - configurator_reset_dialog - fi - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Resetting this emulator requires active network access.\nPlease try again when you are connected to an Internet-capable network.\n\nReset process cancelled." - configurator_reset_dialog - fi - ;; - - "Cemu" | "Citra" | "Dolphin" | "Duckstation" | "GZDoom" | "Yuzu" | "MelonDS" | "MAME" | "PCSX2" | "PPSSPP" | "PortMaster" | "Primehack" | "Ruffle" | "RPCS3" | "Ryujinx" | "SteamROMManager" ) - if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset the $component_to_reset emulator 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" - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Reset process cancelled." - configurator_reset_dialog - fi - ;; - - "" ) # No selection made or Back button clicked - configurator_reset_dialog - ;; - - esac - ;; - - "Reset RetroDECK Component" ) - component_to_reset=$(rd_zenity --list \ - --title "RetroDECK Configurator Utility - Reset Specific RetroDECK Component" --cancel-label="Back" \ - --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" \ - "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 - 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" - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Reset process cancelled." - configurator_reset_dialog - fi - ;; - - "" ) # No selection made or Back button clicked - configurator_reset_dialog - ;; - - esac - ;; - -"Reset All Emulators and Components" ) - log i "Configurator: opening \"$choice\" menu" - if [[ $(check_network_connectivity) == "true" ]]; then - if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then - ( - prepare_component "reset" "all" - ) | - rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ - --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Finishing Initialization" \ - --text="RetroDECK is finishing the reset process, please wait." - configurator_process_complete_dialog "resetting all emulators" - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Reset process cancelled." - configurator_reset_dialog - fi + if [[ $? == 0 && -n "$choice" ]]; then + choice=$(echo "$choice" | tr '|' ' ') + log d "User selected \"Reset Selected\" and selected: ${choice// / }" + prepare_component "reset" ${choice// / } + configurator_process_complete_dialog "resetting selected emulators" + elif [[ $? == 1 ]]; then + log "User selected \"Reset All\"" + prepare_ccomponent "reset" "all" + configurator_process_complete_dialog "resetting all emulators" else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Resetting all emulators requires active network access.\nPlease try again when you are connected to an Internet-capable network.\n\nReset process cancelled." - configurator_reset_dialog + log d "User selected \"Cancel\"" + configurator_welcome_dialog fi -;; -"Reset RetroDECK" ) - log i "Configurator: opening \"$choice\" menu" - if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then - rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ - --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Configurator Utility - Reset RetroDECK" \ - --text="You are resetting RetroDECK to its default state.\n\nAfter the process is complete you will need to exit RetroDECK and run it again, where you will go through the initial setup process." - rm -f "$lockfile" - rm -f "$rd_conf" - configurator_process_complete_dialog "resetting RetroDECK" - else - configurator_generic_dialog "RetroDeck Configurator - Reset Component" "Reset process cancelled." - configurator_reset_dialog - fi -;; - -"" ) # No selection made or Back button clicked - configurator_welcome_dialog -;; - - esac } configurator_about_retrodeck_dialog() {