2023-05-12 20:26:09 +00:00
#!/bin/bash
2024-01-16 08:14:27 +00:00
prepare_component( ) {
# This function will perform one of several actions on one or more components
2023-05-12 20:26:09 +00:00
# The actions currently include "reset" and "postmove"
2024-01-16 08:14:27 +00:00
# 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
2023-05-12 20:26:09 +00:00
# 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
2024-01-16 08:14:27 +00:00
# USAGE: prepare_component "$action" "$component" "$call_source(optional)"
2023-05-12 21:04:20 +00:00
2023-05-12 20:26:09 +00:00
action = " $1 "
2024-04-19 02:17:16 +00:00
component = $( echo " $2 " | tr '[:upper:]' '[:lower:]' )
2023-05-12 20:26:09 +00:00
call_source = " $3 "
2024-05-30 17:32:36 +00:00
component_found = "false"
2023-05-12 20:26:09 +00:00
2024-02-29 19:55:16 +00:00
log d " Preparing component: \" $component \", action: \" $action \" "
2024-01-16 08:14:27 +00:00
if [ [ " $component " = = "retrodeck" ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Update the paths of all folders in retrodeck.cfg and create them
2023-09-05 18:04:16 +00:00
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" )
2024-06-22 12:00:07 +00:00
declare -g " $current_setting_name = $rdhome / ${ current_setting_value #*retrodeck/ } " #removes everything until "retrodeck" and adds the actual retrodeck folder
log d " Setting: $current_setting_name = $current_setting_value "
2024-03-28 18:49:21 +00:00
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.
2024-03-28 18:06:40 +00:00
create_dir " $rdhome / $( basename $current_setting_value ) "
2024-03-28 18:49:21 +00:00
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 "
2024-03-28 18:06:40 +00:00
fi
2023-09-05 18:04:16 +00:00
fi
done < <( grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f' )
2024-06-22 12:00:07 +00:00
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?
2023-05-12 20:26:09 +00:00
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 / $( basename $current_setting_value ) " ] ] ; then # If the folder exists at the new ~/retrodeck location
2023-11-27 15:42:56 +00:00
declare -g " $current_setting_name = $rdhome / $( basename $current_setting_value ) "
2023-05-12 20:26:09 +00:00
fi
fi
done < <( grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f' )
2024-03-22 21:10:26 +00:00
dir_prep " $logs_folder " " $rd_logs_folder "
2023-05-12 20:26:09 +00:00
fi
fi
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( es-de| all) $ ] ] ; then # For use after ESDE-related folders are moved or a reset
2024-05-30 17:32:36 +00:00
component_found = "true"
log i "--------------------------------"
log i "Prepearing ES-DE"
log i "--------------------------------"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then
2024-02-24 07:50:32 +00:00
rm -rf /var/config/ES-DE
2024-02-28 14:55:44 +00:00
create_dir /var/config/ES-DE/settings
2024-02-29 19:55:16 +00:00
log d "Prepearing es_settings.xml"
2024-02-21 20:39:44 +00:00
cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml
2023-05-12 20:26:09 +00:00
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"
2024-04-19 02:48:36 +00:00
dir_prep " $rdhome /ES-DE/gamelists " "/var/config/ES-DE/gamelists"
dir_prep " $rdhome /ES-DE/collections " "/var/config/ES-DE/collections"
2024-09-26 12:08:31 +00:00
dir_prep " $rdhome /ES-DE/custom_systems " "/var/config/ES-DE/custom_systems"
2024-03-22 21:10:26 +00:00
dir_prep " $rd_logs_folder /ES-DE " " $es_source_logs "
2024-02-29 19:48:27 +00:00
log d "Generating roms system folders"
2024-03-17 10:34:15 +00:00
#es-de --home /var/config/ES-DE --create-system-dirs
es-de --create-system-dirs
2023-05-12 20:26:09 +00:00
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"
2024-02-21 13:26:23 +00:00
dir_prep " $rdhome /gamelists " "/var/config/ES-DE/gamelists"
2023-05-12 20:26:09 +00:00
fi
fi
2024-09-05 13:28:10 +00:00
if [ [ " $component " = ~ ^( steam-rom-manager| all) $ ] ] ; then
2024-08-28 04:34:06 +00:00
component_found = "true"
2024-09-08 11:51:53 +00:00
log i "-----------------------------"
2024-08-28 04:38:37 +00:00
log i "Prepearing Steam ROM Manager"
2024-09-08 11:51:53 +00:00
log i "-----------------------------"
2024-08-28 04:34:06 +00:00
2024-09-08 02:17:24 +00:00
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
2024-09-05 12:03:33 +00:00
2024-09-08 02:17:24 +00:00
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 "
2024-08-28 04:34:06 +00:00
fi
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( retroarch| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
log i "--------------------------------"
log i "Prepearing RetroArch"
log i "--------------------------------"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2023-05-18 14:23:05 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/retroarch "
2024-08-05 01:45:21 +00:00
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/ "
2023-05-18 14:23:05 +00:00
else # Single-user actions
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/retroarch
2023-05-17 13:53:59 +00:00
dir_prep " $bios_folder " "/var/config/retroarch/system"
2024-05-05 19:44:56 +00:00
dir_prep " $rdhome /logs/retroarch " "/var/config/retroarch/logs"
2024-02-28 14:55:44 +00:00
create_dir /var/config/retroarch/shaders/
2023-05-17 13:53:59 +00:00
cp -rf /app/share/libretro/shaders /var/config/retroarch/
dir_prep " $rdhome /shaders/retroarch " "/var/config/retroarch/shaders"
2023-06-15 14:50:09 +00:00
rsync -rlD --mkpath "/app/share/libretro/cores/" "/var/config/retroarch/cores/"
2024-08-05 01:45:21 +00:00
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/"
2023-05-17 13:53:59 +00:00
dir_prep " $borders_folder " "/var/config/retroarch/overlays/borders"
2024-08-05 01:45:21 +00:00
rsync -rlD --mkpath "/app/retrodeck/config/retroarch/borders/" "/var/config/retroarch/overlays/borders/"
2023-05-17 13:53:59 +00:00
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"
2024-03-07 14:04:12 +00:00
set_setting_value " $raconf " "rgui_browser_directory" " $roms_folder " "retroarch"
2023-05-17 13:53:59 +00:00
fi
2023-05-18 14:23:05 +00:00
# Shared actions
2023-05-17 13:53:59 +00:00
2024-03-26 10:25:21 +00:00
create_dir " $bios_folder /np2kai "
create_dir " $bios_folder /dc "
create_dir " $bios_folder /Mupen64plus "
create_dir " $bios_folder /quasi88 "
# FBNEO
log i "--------------------------------"
log i "Prepearing FBNEO_LIBRETRO"
log i "--------------------------------"
create_dir " $bios_folder /fbneo/samples "
create_dir " $bios_folder /fbneo/cheats "
create_dir " $bios_folder /fbneo/blend "
dir_prep " $mods_folder /FBNeo " " $bios_folder /fbneo/patched "
2024-06-22 01:14:18 +00:00
2023-05-17 13:53:59 +00:00
# PPSSPP
2024-01-04 16:34:02 +00:00
log i "--------------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing PPSSPP_LIBRETRO"
2024-01-04 16:34:02 +00:00
log i "--------------------------------"
2023-05-17 13:53:59 +00:00
if [ -d $bios_folder /PPSSPP/flash0/font ]
then
mv -fv $bios_folder /PPSSPP/flash0/font $bios_folder /PPSSPP/flash0/font.bak
2023-05-12 20:26:09 +00:00
fi
2023-05-17 13:53:59 +00:00
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
2024-01-04 16:34:02 +00:00
log i "-----------------------------------------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing MSX / SVI / ColecoVision / SG-1000 LIBRETRO"
2024-01-04 16:34:02 +00:00
log i "-----------------------------------------------------------"
2024-03-17 10:34:15 +00:00
log i " Copying \"/app/retrodeck/extras/MSX/Databases\" in \" $bios_folder /Databases\" "
2023-05-17 13:53:59 +00:00
cp -rf "/app/retrodeck/extras/MSX/Databases" " $bios_folder /Databases "
2024-03-17 10:34:15 +00:00
log i " Copying \"/app/retrodeck/extras/MSX/Machines\" in \" $bios_folder /Machines\" "
2023-05-17 13:53:59 +00:00
cp -rf "/app/retrodeck/extras/MSX/Machines" " $bios_folder /Machines "
2023-06-02 14:12:33 +00:00
# AMIGA
2024-01-04 16:34:02 +00:00
log i "-----------------------------------------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing AMIGA LIBRETRO"
2024-01-04 16:34:02 +00:00
log i "-----------------------------------------------------------"
2024-03-17 10:34:15 +00:00
log i " Copying \"/app/retrodeck/extras/Amiga/capsimg.so\" in \" $bios_folder /capsimg.so\" "
2023-06-02 14:12:33 +00:00
cp -f "/app/retrodeck/extras/Amiga/capsimg.so" " $bios_folder /capsimg.so "
2024-05-07 19:44:12 +00:00
# ScummVM
log i "-----------------------------------------------------------"
log i "Prepearing ScummVM LIBRETRO"
log i "-----------------------------------------------------------"
2024-08-05 01:45:21 +00:00
cp -fv " $config /retroarch/scummvm.ini " " $ra_scummvm_conf "
2024-05-07 19:44:12 +00:00
create_dir " $mods_folder /RetroArch/ScummVM/icons "
log i "Installing ScummVM assets"
2024-08-05 01:45:21 +00:00
unzip -o " $config /retroarch/ScummVM.zip " 'scummvm/extra/*' -d /tmp
unzip -o " $config /retroarch/ScummVM.zip " 'scummvm/theme/*' -d /tmp
2024-05-07 19:44:12 +00:00
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"
2024-06-22 01:14:18 +00:00
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /RetroArch-Mesen " "/var/config/retroarch/system/HdPacks"
2023-05-23 19:24:54 +00:00
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"
2024-06-22 01:14:18 +00:00
2023-09-08 21:00:28 +00:00
# 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"
2024-01-29 15:46:27 +00:00
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"
2023-09-08 21:00:28 +00:00
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"
2023-05-12 20:26:09 +00:00
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"
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /RetroArch-Mesen " "/var/config/retroarch/system/HdPacks"
2023-05-23 19:24:54 +00:00
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"
2023-05-12 20:26:09 +00:00
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"
2023-05-15 15:56:01 +00:00
set_setting_value " $raconf " "log_dir" " $logs_folder " "retroarch"
2023-05-12 20:26:09 +00:00
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( citra| citra-emu| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2024-03-08 17:21:43 +00:00
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 "
2024-08-05 01:45:21 +00:00
cp -fv $config /citra/qt-config.ini " $multi_user_data_folder / $SteamAppUser /config/citra-emu/qt-config.ini "
2024-03-08 17:21:43 +00:00
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/
2024-08-05 01:45:21 +00:00
cp -f $config /citra/qt-config.ini /var/config/citra-emu/qt-config.ini
2024-03-08 17:21:43 +00:00
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
2024-06-22 12:40:22 +00:00
dir_prep " $bios_folder /citra/sysdata " "/var/data/citra-emu/sysdata"
2024-03-08 17:21:43 +00:00
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
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( cemu| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing CEMU"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-05-16 16:29:36 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/Cemu "
2024-08-05 01:45:21 +00:00
cp -fr " $config /cemu/ " * " $multi_user_data_folder / $SteamAppUser /config/Cemu/ "
2023-05-16 16:29:36 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/Cemu/
2024-08-05 01:45:21 +00:00
cp -fr " $config /cemu/ " * /var/config/Cemu/
2023-05-17 13:53:59 +00:00
set_setting_value " $cemuconf " "mlc_path" " $bios_folder /cemu " "cemu"
set_setting_value " $cemuconf " "Entry" " $roms_folder /wiiu " "cemu" "GamePaths"
2023-05-16 16:29:36 +00:00
fi
# Shared actions
dir_prep " $saves_folder /wiiu/cemu " " $bios_folder /cemu/usr/save "
2023-05-12 20:26:09 +00:00
fi
2023-05-16 16:29:36 +00:00
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 "
2023-05-12 20:26:09 +00:00
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( dolphin| dolphin-emu| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing DOLPHIN"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/dolphin-emu "
2024-08-05 01:45:21 +00:00
cp -fvr " $config /dolphin/ " * " $multi_user_data_folder / $SteamAppUser /config/dolphin-emu/ "
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/dolphin-emu/
2024-08-05 01:45:21 +00:00
cp -fvr " $config /dolphin/ " * /var/config/dolphin-emu/
2023-05-12 20:26:09 +00:00
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"
2023-05-18 14:23:05 +00:00
fi
# Shared actions
2023-05-12 20:26:09 +00:00
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"
2023-09-08 21:00:28 +00:00
# Reset default preset settings
set_setting_value " $rd_conf " "dolphin" " $( get_setting_value " $rd_defaults " "dolphin" "retrodeck" "ask_to_exit" ) " "retrodeck" "ask_to_exit"
2023-05-12 20:26:09 +00:00
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
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( duckstation| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing DUCKSTATION"
2024-01-04 16:34:02 +00:00
log i "------------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /data/duckstation/ "
2024-08-05 01:45:21 +00:00
cp -fv " $config /duckstation/ " * " $multi_user_data_folder / $SteamAppUser /data/duckstation "
2023-05-12 20:26:09 +00:00
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"
2023-05-15 14:36:24 +00:00
set_setting_value " $multi_user_data_folder / $SteamAppUser /data/duckstation/settings.ini " "RecursivePaths" " $roms_folder /psx " "duckstation" "GameList"
2023-05-12 20:26:09 +00:00
dir_prep " $multi_user_data_folder / $SteamAppUser /config/duckstation " "/var/config/duckstation"
else # Single-user actions
2024-02-28 14:55:44 +00:00
create_dir -d "/var/config/duckstation/"
create_dir " $saves_folder /psx/duckstation/memcards "
2024-08-05 01:45:21 +00:00
cp -fv " $config /duckstation/ " * /var/config/duckstation
2023-05-12 20:26:09 +00:00
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"
2023-05-15 14:36:24 +00:00
set_setting_value " $duckstationconf " "RecursivePaths" " $roms_folder /psx " "duckstation" "GameList"
2023-05-12 20:26:09 +00:00
fi
2023-05-18 14:23:05 +00:00
# Shared actions
2023-05-13 16:05:50 +00:00
dir_prep " $states_folder /psx/duckstation " "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /Duckstation " "/var/config/duckstation/textures"
2023-09-08 21:00:28 +00:00
# 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"
2023-05-12 20:26:09 +00:00
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"
2023-05-15 14:36:24 +00:00
set_setting_value " $duckstationconf " "RecursivePaths" " $roms_folder /psx " "duckstation" "GameList"
2023-05-13 16:05:50 +00:00
dir_prep " $states_folder /psx/duckstation " "/var/config/duckstation/savestates" # This is hard-coded in Duckstation, always needed
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /Duckstation " "/var/config/duckstation/textures"
2023-05-12 20:26:09 +00:00
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( melonds| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing MELONDS"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/melonDS/ "
2024-08-05 01:45:21 +00:00
cp -fvr $config /melonds/melonDS.ini " $multi_user_data_folder / $SteamAppUser /config/melonDS/ "
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/melonDS/
2024-08-05 01:45:21 +00:00
cp -fvr $config /melonds/melonDS.ini /var/config/melonDS/
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir " $saves_folder /nds/melonds "
create_dir " $states_folder /nds/melonds "
2023-05-12 20:26:09 +00:00
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
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( pcsx2| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing PCSX2"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/PCSX2/inis "
2024-08-05 01:45:21 +00:00
cp -fvr " $config /PCSX2/ " * " $multi_user_data_folder / $SteamAppUser /config/PCSX2/inis/ "
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d "/var/config/PCSX2/inis"
2024-08-05 01:45:21 +00:00
cp -fvr " $config /PCSX2/ " * /var/config/PCSX2/inis/
2023-05-12 20:26:09 +00:00
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"
fi
# Shared actions
2024-02-28 14:55:44 +00:00
create_dir " $saves_folder /ps2/pcsx2/memcards "
create_dir " $states_folder /ps2/pcsx2 "
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /PCSX2 " "/var/config/PCSX2/textures"
2023-09-08 21:00:28 +00:00
# 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"
2023-05-12 20:26:09 +00:00
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"
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /PCSX2 " "/var/config/PCSX2/textures"
2023-05-12 20:26:09 +00:00
fi
fi
2024-01-16 08:14:27 +00:00
if [ [ " $component " = ~ ^( pico8| pico-8| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
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
2024-08-05 01:45:21 +00:00
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 "
2023-05-12 20:26:09 +00:00
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( ppsspp| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing PPSSPPSDL"
2024-01-04 16:34:02 +00:00
log i "------------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/ppsspp/PSP/SYSTEM/ "
2024-08-05 01:45:21 +00:00
cp -fv " $config /ppssppsdl/ " * " $multi_user_data_folder / $SteamAppUser /config/ppsspp/PSP/SYSTEM/ "
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/ppsspp/PSP/SYSTEM/
2024-08-05 01:45:21 +00:00
cp -fv " $config /ppssppsdl/ " * /var/config/ppsspp/PSP/SYSTEM/
2023-05-12 20:26:09 +00:00
set_setting_value " $ppssppconf " "CurrentDirectory" " $roms_folder /psp " "ppsspp" "General"
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"
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /PPSSPP " "/var/config/ppsspp/PSP/TEXTURES"
2023-05-12 20:26:09 +00:00
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"
2023-05-18 14:23:05 +00:00
dir_prep " $texture_packs_folder /PPSSPP " "/var/config/ppsspp/PSP/TEXTURES"
2023-05-12 20:26:09 +00:00
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( primehack| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing Primehack"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/primehack "
2024-08-05 01:45:21 +00:00
cp -fvr " $config /primehack/config/ " * " $multi_user_data_folder / $SteamAppUser /config/primehack/ "
2023-05-12 20:26:09 +00:00
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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/primehack/
2024-08-05 01:45:21 +00:00
cp -fvr " $config /primehack/config/ " * /var/config/primehack/
2023-05-12 20:26:09 +00:00
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"
2024-02-28 14:55:44 +00:00
create_dir /var/data/primehack/Wii/
2023-05-12 20:26:09 +00:00
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"
2024-08-05 01:45:21 +00:00
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"
2023-09-08 21:00:28 +00:00
# Reset default preset settings
set_setting_value " $rd_conf " "primehack" " $( get_setting_value " $rd_defaults " "primehack" "retrodeck" "ask_to_exit" ) " "retrodeck" "ask_to_exit"
2023-05-12 20:26:09 +00:00
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
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( rpcs3| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing RPCS3"
2024-01-04 16:34:02 +00:00
log i "------------------------"
2023-05-12 20:26:09 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/rpcs3/ "
2024-08-05 01:45:21 +00:00
cp -fr " $config /rpcs3/ " * " $multi_user_data_folder / $SteamAppUser /config/rpcs3/ "
2023-05-12 20:26:09 +00:00
# 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
2024-02-28 14:55:44 +00:00
create_dir -d /var/config/rpcs3/
2024-08-05 01:45:21 +00:00
cp -fr " $config /rpcs3/ " * /var/config/rpcs3/
2023-05-12 20:26:09 +00:00
# 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"
2024-01-08 13:34:32 +00:00
dir_prep " $saves_folder /ps3/rpcs3 " " $bios_folder /rpcs3/dev_hdd0/home/00000001/savedata "
2023-05-12 20:26:09 +00:00
fi
# Shared actions
2024-02-28 14:55:44 +00:00
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 "
2023-05-12 20:26:09 +00:00
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
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( ryujinx| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2024-02-25 14:52:04 +00:00
# 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.
2023-09-27 07:36:36 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing RYUJINX"
2024-01-04 16:34:02 +00:00
log i "------------------------"
2023-09-27 07:36:36 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then
rm -rf " $multi_user_data_folder / $SteamAppUser /config/Ryujinx "
2024-02-28 14:55:44 +00:00
#create_dir "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
2024-02-25 14:52:04 +00:00
# TODO: add /var/config/Ryujinx/system system folder management
2024-08-05 01:45:21 +00:00
cp -fv $config /ryujinx/* " $multi_user_data_folder / $SteamAppUser /config/Ryujinx "
2024-02-14 09:47:39 +00:00
sed -i 's#RETRODECKHOMEDIR#' $rdhome '#g' " $multi_user_data_folder / $SteamAppUser /config/Ryujinx/Config.json "
2023-09-27 07:36:36 +00:00
dir_prep " $multi_user_data_folder / $SteamAppUser /config/Ryujinx " "/var/config/Ryujinx"
2024-02-25 14:52:04 +00:00
# TODO: add nand (saves) folder management
2024-02-26 13:52:55 +00:00
# TODO: add nand (saves) folder management
2024-02-25 14:52:04 +00:00
# TODO: add "registered" folder management
2023-09-27 07:36:36 +00:00
else
# removing config directory to wipe legacy files
2024-02-29 19:55:16 +00:00
log d "Removing \"/var/config/Ryujinx\""
2023-09-27 07:36:36 +00:00
rm -rf /var/config/Ryujinx
2024-02-28 14:55:44 +00:00
create_dir /var/config/Ryujinx/system
2024-08-05 01:45:21 +00:00
cp -fv $config /ryujinx/Config.json $ryujinxconf
cp -fvr $config /ryujinx/profiles /var/config/Ryujinx/
2024-02-29 19:55:16 +00:00
log d " Replacing placeholders in \" $ryujinxconf \" "
2024-02-14 09:47:39 +00:00
sed -i 's#RETRODECKHOMEDIR#' $rdhome '#g' " $ryujinxconf "
2024-02-29 19:55:16 +00:00
log i "Linking switch nand/saves folder"
log d "Removing \"/var/config/Ryujinx/bis\", it will become a symlink"
2024-02-25 14:52:04 +00:00
rm -rf /var/config/Ryujinx/bis
2024-02-26 13:52:55 +00:00
dir_prep " $saves_folder /switch/ryujinx/nand " "/var/config/Ryujinx/bis"
dir_prep " $saves_folder /switch/ryujinx/sdcard " "/var/config/Ryujinx/sdcard"
2024-03-02 10:45:41 +00:00
dir_prep " $bios_folder /switch/firmware " "/var/config/Ryujinx/bis/system/Contents/registered"
2024-04-08 01:59:51 +00:00
dir_prep " $bios_folder /switch/keys " "/var/config/Ryujinx/system"
2024-07-12 11:47:05 +00:00
# TODO: delete these two lines after Ryujinx is back to a proper build
log i "Since in this version we moved to a PR build of Ryujinx we need to symlink it." # TODO: deleteme later
ln -sv $ryujinxconf " $( dirname $ryujinxconf ) /PRConfig.json " # TODO: deleteme later
2023-09-27 07:36:36 +00:00
fi
fi
2024-02-15 13:45:55 +00:00
# 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
2023-09-27 07:36:36 +00:00
if [ [ " $action " = = "postmove" ] ] ; then # Run only post-move commands
2024-02-29 19:55:16 +00:00
log d " Replacing placeholders in \" $ryujinxconf \" "
2023-09-27 07:36:36 +00:00
sed -i 's#RETRODECKHOMEDIR#' $rdhome '#g' " $ryujinxconf " # This is an unfortunate one-off because set_setting_value does not currently support JSON
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( yuzu| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2024-03-08 17:21:43 +00:00
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 "
2024-08-05 01:45:21 +00:00
cp -fvr " $config /yuzu/ " * " $multi_user_data_folder / $SteamAppUser /config/yuzu/ "
2024-03-08 17:21:43 +00:00
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/
2024-08-05 01:45:21 +00:00
cp -fvr " $config /yuzu/ " * /var/config/yuzu/
2024-03-08 17:21:43 +00:00
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
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( xemu| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-05-12 20:26:09 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "------------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing XEMU"
2024-01-04 16:34:02 +00:00
log i "------------------------"
2023-05-17 13:53:59 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
rm -rf /var/config/xemu
rm -rf /var/data/xemu
2024-02-28 14:55:44 +00:00
create_dir -d " $multi_user_data_folder / $SteamAppUser /config/xemu/ "
2024-08-05 01:45:21 +00:00
cp -fv $config /xemu/xemu.toml " $multi_user_data_folder / $SteamAppUser /config/xemu/xemu.toml "
2023-05-17 13:53:59 +00:00
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"
2023-06-08 12:58:55 +00:00
set_setting_value " $multi_user_data_folder / $SteamAppUser /config/xemu/xemu.toml " "eeprom_path" " ' $saves_folder /xbox/xemu/xbox-eeprom.bin' " "xemu" "sys.files"
2023-05-17 13:53:59 +00:00
set_setting_value " $multi_user_data_folder / $SteamAppUser /config/xemu/xemu.toml " "hdd_path" " ' $bios_folder /xbox_hdd.qcow2' " "xemu" "sys.files"
2024-01-16 08:14:27 +00:00
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
2023-05-18 13:28:07 +00:00
dir_prep " $multi_user_data_folder / $SteamAppUser /config/xemu " "/var/data/xemu/xemu"
2023-05-17 13:53:59 +00:00
else # Single-user actions
rm -rf /var/config/xemu
rm -rf /var/data/xemu
2024-01-16 08:14:27 +00:00
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
2024-08-05 01:45:21 +00:00
cp -fv $config /xemu/xemu.toml " $xemuconf "
2023-05-17 13:53:59 +00:00
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"
2023-06-08 12:59:53 +00:00
set_setting_value " $xemuconf " "eeprom_path" " ' $saves_folder /xbox/xemu/xbox-eeprom.bin' " "xemu" "sys.files"
2023-05-17 13:53:59 +00:00
set_setting_value " $xemuconf " "hdd_path" " ' $bios_folder /xbox_hdd.qcow2' " "xemu" "sys.files"
fi # Shared actions
2024-02-28 14:55:44 +00:00
create_dir $saves_folder /xbox/xemu/
2023-05-17 13:53:59 +00:00
# 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 "
2023-05-12 20:26:09 +00:00
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"
2023-06-08 12:59:53 +00:00
set_setting_value " $xemuconf " "eeprom_path" " ' $saves_folder /xbox/xemu/xbox-eeprom.bin' " "xemu" "sys.files"
2023-05-12 20:26:09 +00:00
set_setting_value " $xemuconf " "hdd_path" " ' $bios_folder /xbox_hdd.qcow2' " "xemu" "sys.files"
fi
fi
2023-05-12 21:04:20 +00:00
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( vita3k| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-12-11 15:30:35 +00:00
if [ [ " $action " = = "reset" ] ] ; then # Run reset-only commands
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing Vita3K"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-12-15 21:12:48 +00:00
if [ [ $multi_user_mode = = "true" ] ] ; then # Multi-user actions
2024-01-04 16:34:02 +00:00
log d "Figure out what Vita3k needs for multi-user"
2023-12-15 21:12:48 +00:00
else # Single-user actions
2024-01-16 08:14:27 +00:00
# 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
2024-06-22 12:40:22 +00:00
rm -rf "/var/config/Vita3K"
create_dir "/var/config/Vita3K"
2024-08-05 01:45:21 +00:00
cp -fvr " $config /vita3k/config.yml " " $vita3kconf " # component config
cp -fvr " $config /vita3k/ux0 " " $bios_folder /Vita3K/ " # User config
2024-06-22 12:40:22 +00:00
set_setting_value " $vita3kconf " "pref-path" " $bios_folder /Vita3K/ " "vita3k"
2023-12-15 21:12:48 +00:00
fi
# Shared actions
2024-06-22 12:40:22 +00:00
dir_prep " $saves_folder /psvita/vita3k " " $bios_folder /Vita3K/ux0/user/00/savedata " # Multi-user safe?
2023-12-15 21:12:48 +00:00
fi
2023-12-11 15:30:35 +00:00
if [ [ " $action " = = "postmove" ] ] ; then # Run only post-move commands
2024-06-22 12:40:22 +00:00
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"
2023-12-11 15:30:35 +00:00
fi
2023-10-09 16:19:17 +00:00
fi
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( mame| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-10-13 08:21:24 +00:00
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing MAME"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-10-13 08:21:24 +00:00
2024-02-26 12:47:40 +00:00
# TODO: probably some of these needs to be put elsewhere
2024-02-28 14:55:44 +00:00
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"
2024-05-05 07:39:30 +00:00
create_dir " $bios_folder /mame-sa/samples "
2024-02-28 14:55:44 +00:00
create_dir "/var/data/mame/assets/artwork"
create_dir "/var/data/mame/assets/fonts"
create_dir "/var/data/mame/cheat"
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"
2024-02-26 12:47:40 +00:00
2024-01-02 16:21:55 +00:00
dir_prep " $saves_folder /mame-sa/hiscore " "/var/config/mame/hiscore"
2024-08-05 01:45:21 +00:00
cp -fvr " $config /mame/mame.ini " " $mameconf "
cp -fvr " $config /mame/ui.ini " " $mameuiconf "
cp -fvr " $config /mame/default.cfg " " $mamedefconf "
2024-02-27 09:13:42 +00:00
2024-02-27 15:44:52 +00:00
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"
2024-05-05 07:39:30 +00:00
set_setting_value " $mameconf " "samplepath" " $bios_folder /mame-sa/samples " "mame"
2023-11-23 15:11:55 +00:00
2024-05-05 19:52:38 +00:00
log i "Placing cheats in \"/var/data/mame/cheat\""
2024-08-05 01:45:21 +00:00
unzip -j -o " $config /mame/cheat0264.zip " 'cheat.7z' -d "/var/data/mame/cheat"
2023-11-23 15:11:55 +00:00
fi
2024-04-19 02:17:16 +00:00
if [ [ " $component " = ~ ^( gzdoom| all) $ ] ] ; then
2024-05-30 17:32:36 +00:00
component_found = "true"
2023-11-23 15:11:55 +00:00
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
2024-01-04 16:34:02 +00:00
log i "----------------------"
2024-02-29 19:55:16 +00:00
log i "Prepearing GZDOOM"
2024-01-04 16:34:02 +00:00
log i "----------------------"
2023-11-23 15:11:55 +00:00
2024-02-28 14:55:44 +00:00
create_dir "/var/config/gzdoom"
2024-03-13 07:55:21 +00:00
create_dir "/var/data/gzdoom/audio/midi"
2024-03-13 14:19:32 +00:00
create_dir "/var/data/gzdoom/audio/fm_banks"
create_dir "/var/data/gzdoom/audio/soundfonts"
2024-06-22 12:40:22 +00:00
create_dir " $bios_folder /gzdoom "
2024-03-13 07:55:21 +00:00
2024-08-05 01:45:21 +00:00
cp -fvr " $config /gzdoom/gzdoom.ini " "/var/config/gzdoom"
2023-11-24 13:02:50 +00:00
2024-03-21 20:27:08 +00:00
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
2023-11-24 13:02:50 +00:00
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
2023-10-13 08:21:24 +00:00
fi
2024-09-23 12:46:33 +00:00
if [ [ " $component " = ~ ^( shadps4| all) $ ] ] ; then
2024-08-23 14:34:04 +00:00
component_found = "true"
# This is just a placeholder script to test the emulator's flow
log i "----------------------"
log i "Prepearing SHADPS4"
log i "----------------------"
# TODO: plceholder
2024-08-24 13:10:01 +00:00
fi
2024-09-15 00:56:05 +00:00
2024-08-22 04:58:19 +00:00
if [ [ " $component " = ~ ^( portmaster| all) $ ] ] ; then
component_found = "true"
# TODO: MultiUser
log i "----------------------"
log i "Prepearing PortMaster"
log i "----------------------"
rm -rf "/var/data/PortMaster"
2024-08-24 12:46:20 +00:00
unzip "/app/retrodeck/PortMaster.zip" -d "/var/data/"
2024-09-17 05:15:18 +00:00
cp -f "/var/data/PortMaster/retrodeck/PortMaster.txt" "/var/data/PortMaster/PortMaster.sh"
2024-08-24 12:46:20 +00:00
chmod +x "/var/data/PortMaster/PortMaster.sh"
2024-09-17 05:15:18 +00:00
rm -f " $roms_folder /portmaster/PortMaster.sh "
install -Dm755 "/var/data/PortMaster/PortMaster.sh" " $roms_folder /portmaster/PortMaster.sh "
2024-08-22 04:58:19 +00:00
fi
2024-08-24 13:10:01 +00:00
2024-08-23 14:28:49 +00:00
if [ [ " $component " = ~ ^( ruffle| all) $ ] ] ; then
2024-07-30 06:56:19 +00:00
component_found = "true"
2024-02-17 08:23:42 +00:00
log i "----------------------"
2024-08-23 14:28:49 +00:00
log i "Prepearing Ruffle"
2024-02-17 08:23:42 +00:00
log i "----------------------"
2024-08-23 14:28:49 +00:00
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
dir_prep " $saves_folder /flash " " /var/data/ruffle/SharedObjects/localhost/ $roms_folder /flash "
fi
2024-08-23 14:34:04 +00:00
fi
2024-05-08 21:27:05 +00:00
2024-08-23 14:34:04 +00:00
if [ [ " $component " = ~ ^( gzdoom| all) $ ] ] ; then
component_found = "true"
# This is just a placeholder script to test the emulator's flow
log i "----------------------"
log i "Prepearing SHADPS4"
log i "----------------------"
# TODO: plceholder
2024-04-11 13:09:38 +00:00
fi
2024-09-19 05:39:21 +00:00
if [ [ " $component " = ~ ^( xenia| all) $ ] ] ; then
component_found = "true"
log i "----------------------"
log i "Prepearing Xenia"
log i "----------------------"
2024-09-23 06:56:55 +00:00
local xenia_prefix = "/var/data/xenia-canary-pfx"
create_dir -d " $xenia_prefix "
# sandboxing prefix to avoid writing on real user home folder
2024-09-23 07:01:56 +00:00
# TODO: multi user needs to care about this as we're using the linux username
2024-09-23 06:56:55 +00:00
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Desktop " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Desktop "
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Documents " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Documents "
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Downloads " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Downloads "
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Music " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Music "
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Pictures " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Pictures "
2024-09-23 07:01:56 +00:00
unlink " $xenia_prefix /drive_c/users/ $( whoami) /Videos " && create_dir " $xenia_prefix /drive_c/users/ $( whoami) /Videos "
2024-09-23 06:56:55 +00:00
2024-09-19 05:39:21 +00:00
# TODO: fill this
fi
2024-06-22 01:14:18 +00:00
if [ [ $component_found = = "false" ] ] ; then
2024-04-11 13:09:38 +00:00
log e " Supplied component $component not found, not resetting "
2024-01-14 10:14:21 +00:00
fi
2024-01-16 08:14:27 +00:00
# Update presets for all components after any reset or move
if [ [ ! " $component " = = "retrodeck" ] ] ; then
2023-09-07 13:28:07 +00:00
build_retrodeck_current_presets
fi
2023-05-12 20:26:09 +00:00
}