mirror of
https://github.com/dragoonDorise/EmuDeck.git
synced 2025-05-05 16:02:48 +00:00
* new paths * / * EmuDeck/ * mv * no & * ESDE new location * ESDE new path * no symlink load * bigpemu new path * force move * global vars * oopsie * missing $emudeckBackend * better migration detection * Keep Appimages in Applications * Keep Appimages in Applications
346 lines
13 KiB
Bash
346 lines
13 KiB
Bash
#!/bin/bash
|
|
#variables
|
|
ares_emuName="ares"
|
|
ares_emuType="$emuDeckEmuTypeFlatpak"
|
|
ares_emuPath="dev.ares.ares"
|
|
ares_configFile="$HOME/.var/app/dev.ares.ares/data/ares/settings.bml"
|
|
|
|
#cleanupOlderThings
|
|
ares_cleanup(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#Install
|
|
ares_install() {
|
|
setMSG "Installing $ares_emuName"
|
|
|
|
installEmuFP "${ares_emuName}" "${ares_emuPath}" "emulator" ""
|
|
}
|
|
|
|
#ApplyInitialSettings
|
|
|
|
ares_init() {
|
|
|
|
setMSG "Initializing $ares_emuName settings."
|
|
|
|
configEmuFP "${ares_emuName}" "${ares_emuPath}" "true"
|
|
ares_setupStorage
|
|
ares_setEmulationFolder
|
|
ares_setupSaves
|
|
#ares_addSteamInputProfile
|
|
ares_getDefaultShaders
|
|
ares_getQuarkShaders
|
|
ares_addESConfig
|
|
#SRM_createParsers
|
|
ares_flushEmulatorLauncher
|
|
}
|
|
|
|
#update
|
|
ares_update() {
|
|
setMSG "Installing $ares_emuName"
|
|
|
|
configEmuFP "${ares_emuName}" "${ares_emuPath}"
|
|
updateEmuFP "${ares_emuName}" "${ares_emuPath}" "emulator" ""
|
|
ares_setupStorage
|
|
ares_setEmulationFolder
|
|
ares_setupSaves
|
|
ares_getDefaultShaders
|
|
ares_getQuarkShaders
|
|
ares_addESConfig
|
|
ares_flushEmulatorLauncher
|
|
}
|
|
|
|
#ConfigurePaths
|
|
ares_setEmulationFolder(){
|
|
setMSG "Setting $ares_emuName Emulation Folder"
|
|
|
|
|
|
# ROM Paths
|
|
UserROMsPath='/home/deck/Emulation/roms/'
|
|
sed -i "s|$UserROMsPath|${romsPath}\/|g" "$ares_configFile"
|
|
|
|
# BIOS Paths
|
|
UserBIOSPath='/home/deck/Emulation/bios/'
|
|
sed -i "s|$UserBIOSPath|${biosPath}\/|g" "$ares_configFile"
|
|
|
|
}
|
|
|
|
#SetupSaves
|
|
ares_setupSaves(){
|
|
|
|
# Create saves folder
|
|
mkdir -p "${savesPath}/ares/"
|
|
|
|
# Set saves path
|
|
UserSavesPath='/home/deck/Emulation/saves'
|
|
sed -i "s|$UserSavesPath|${savesPath}|g" "$ares_configFile"
|
|
}
|
|
|
|
|
|
#SetupStorage
|
|
ares_setupStorage(){
|
|
|
|
# Create storage folder
|
|
mkdir -p "${storagePath}/ares/"
|
|
mkdir -p "${storagePath}/ares/screenshots"
|
|
|
|
# Set Storage path
|
|
UserStoragePath='/home/deck/Emulation/storage'
|
|
sed -i "s|$UserStoragePath|${storagePath}|g" "$ares_configFile"
|
|
}
|
|
|
|
ares_addESConfig(){
|
|
|
|
# Bandai SuFami Turbo
|
|
if [[ $(grep -rnw "$es_systemsFile" -e 'sufami') == "" ]]; then
|
|
xmlstarlet ed -S --inplace --subnode '/systemList' --type elem --name 'system' \
|
|
--var newSystem '$prev' \
|
|
--subnode '$newSystem' --type elem --name 'name' -v 'sufami' \
|
|
--subnode '$newSystem' --type elem --name 'fullname' -v 'Bandai SuFami Turbo' \
|
|
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/sufami' \
|
|
--subnode '$newSystem' --type elem --name 'extension' -v '.bml .BML .bs .BS .fig .FIG .sfc .SFC .smc .SMC .st .ST .7z .7Z .zip .ZIP' \
|
|
--subnode '$newSystem' --type elem --name 'commandP' -v "/usr/bin/bash ${toolsPath}/launchers/ares-emu.sh STBIOS.bin --fullscreen --system \"Super Famicom\" %ROM%" \
|
|
--insert '$newSystem/commandP' --type attr --name 'label' --value "ares (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandQ' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandQ' --type attr --name 'label' --value "Snes9x - Current" \
|
|
--subnode '$newSystem' --type elem --name 'commandR' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandR' --type attr --name 'label' --value "Snes9x 2010" \
|
|
--subnode '$newSystem' --type elem --name 'commandS' -v "%EMULATOR_SNES9X% %ROM%" \
|
|
--insert '$newSystem/commandS' --type attr --name 'label' --value "Snes9x (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandT' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandT' --type attr --name 'label' --value "bsnes" \
|
|
--subnode '$newSystem' --type elem --name 'commandU' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_hd_beta_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandU' --type attr --name 'label' --value "bsnes-hd" \
|
|
--subnode '$newSystem' --type elem --name 'commandV' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandV' --type attr --name 'label' --value "bsnes-mercury Accuracy" \
|
|
--subnode '$newSystem' --type elem --name 'commandW' -v "%EMULATOR_BSNES% --fullscreen %ROM%" \
|
|
--insert '$newSystem/commandW' --type attr --name 'label' --value "bsnes (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'platform' -v 'sufami' \
|
|
--subnode '$newSystem' --type elem --name 'theme' -v 'sufami' \
|
|
-r 'systemList/system/commandP' -v 'command' \
|
|
-r 'systemList/system/commandQ' -v 'command' \
|
|
-r 'systemList/system/commandR' -v 'command' \
|
|
-r 'systemList/system/commandS' -v 'command' \
|
|
-r 'systemList/system/commandT' -v 'command' \
|
|
-r 'systemList/system/commandU' -v 'command' \
|
|
-r 'systemList/system/commandV' -v 'command' \
|
|
-r 'systemList/system/commandW' -v 'command' \
|
|
"$es_systemsFile"
|
|
|
|
#format doc to make it look nice
|
|
xmlstarlet fo "$es_systemsFile" > "$es_systemsFile".tmp && mv "$es_systemsFile".tmp "$es_systemsFile"
|
|
fi
|
|
#Custom Systems config end
|
|
|
|
# Satellaview
|
|
if [[ $(grep -rnw "$es_systemsFile" -e 'satellaview') == "" ]]; then
|
|
xmlstarlet ed -S --inplace --subnode '/systemList' --type elem --name 'system' \
|
|
--var newSystem '$prev' \
|
|
--subnode '$newSystem' --type elem --name 'name' -v 'satellaview' \
|
|
--subnode '$newSystem' --type elem --name 'fullname' -v 'Nintendo Satellaview' \
|
|
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/satellaview' \
|
|
--subnode '$newSystem' --type elem --name 'extension' -v '.bml .BML .bs .BS .fig .FIG .sfc .SFC .smc .SMC .swc .SWC .st .ST .7z .7Z .zip .ZIP' \
|
|
--subnode '$newSystem' --type elem --name 'commandP' -v "/usr/bin/bash ${toolsPath}/launchers/ares-emu.sh BS-X.bin --fullscreen --system \"Super Famicom\" %ROM%" \
|
|
--insert '$newSystem/commandP' --type attr --name 'label' --value "ares (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandQ' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandQ' --type attr --name 'label' --value "Snes9x - Current" \
|
|
--subnode '$newSystem' --type elem --name 'commandR' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/snes9x2010_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandR' --type attr --name 'label' --value "Snes9x 2010" \
|
|
--subnode '$newSystem' --type elem --name 'commandS' -v "%EMULATOR_SNES9X% %ROM%" \
|
|
--insert '$newSystem/commandS' --type attr --name 'label' --value "Snes9x (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandT' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandT' --type attr --name 'label' --value "bsnes" \
|
|
--subnode '$newSystem' --type elem --name 'commandU' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_hd_beta_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandU' --type attr --name 'label' --value "bsnes-hd" \
|
|
--subnode '$newSystem' --type elem --name 'commandV' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandV' --type attr --name 'label' --value "bsnes-mercury Accuracy" \
|
|
--subnode '$newSystem' --type elem --name 'commandW' -v "%EMULATOR_BSNES% --fullscreen %ROM%" \
|
|
--insert '$newSystem/commandW' --type attr --name 'label' --value "bsnes (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'platform' -v 'satellaview' \
|
|
--subnode '$newSystem' --type elem --name 'theme' -v 'satellaview' \
|
|
-r 'systemList/system/commandP' -v 'command' \
|
|
-r 'systemList/system/commandQ' -v 'command' \
|
|
-r 'systemList/system/commandR' -v 'command' \
|
|
-r 'systemList/system/commandS' -v 'command' \
|
|
-r 'systemList/system/commandT' -v 'command' \
|
|
-r 'systemList/system/commandU' -v 'command' \
|
|
-r 'systemList/system/commandV' -v 'command' \
|
|
-r 'systemList/system/commandW' -v 'command' \
|
|
"$es_systemsFile"
|
|
|
|
#format doc to make it look nice
|
|
xmlstarlet fo "$es_systemsFile" > "$es_systemsFile".tmp && mv "$es_systemsFile".tmp "$es_systemsFile"
|
|
fi
|
|
#Custom Systems config end
|
|
|
|
# Super Game Boy
|
|
if [[ $(grep -rnw "$es_systemsFile" -e 'sgb') == "" ]]; then
|
|
xmlstarlet ed -S --inplace --subnode '/systemList' --type elem --name 'system' \
|
|
--var newSystem '$prev' \
|
|
--subnode '$newSystem' --type elem --name 'name' -v 'sgb' \
|
|
--subnode '$newSystem' --type elem --name 'fullname' -v 'Nintendo Super Game Boy' \
|
|
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/sgb' \
|
|
--subnode '$newSystem' --type elem --name 'extension' -v '.gb .GB .gbc .GBC .sgb .SGB .7z .7Z .zip .ZIP' \
|
|
--subnode '$newSystem' --type elem --name 'commandP' -v "/usr/bin/bash ${toolsPath}/launchers/ares-emu.sh SGB1.sfc --fullscreen --system \"Super Famicom\" %ROM%" \
|
|
--insert '$newSystem/commandP' --type attr --name 'label' --value "ares (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandQ' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandQ' --type attr --name 'label' --value "Mesen-S" \
|
|
--subnode '$newSystem' --type elem --name 'commandR' -v "%EMULATOR_MESEN% --fullscreen %ROM%" \
|
|
--insert '$newSystem/commandR' --type attr --name 'label' --value "Mesen (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'commandS' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameboy_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandS' --type attr --name 'label' --value "SameBoy" \
|
|
--subnode '$newSystem' --type elem --name 'commandT' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM%" \
|
|
--insert '$newSystem/commandT' --type attr --name 'label' --value "mGBA" \
|
|
--subnode '$newSystem' --type elem --name 'commandU' -v "%EMULATOR_MGBA% -f %ROM%" \
|
|
--insert '$newSystem/commandU' --type attr --name 'label' --value "mGBA (Standalone)" \
|
|
--subnode '$newSystem' --type elem --name 'platform' -v 'sgb' \
|
|
--subnode '$newSystem' --type elem --name 'theme' -v 'sgb' \
|
|
-r 'systemList/system/commandP' -v 'command' \
|
|
-r 'systemList/system/commandQ' -v 'command' \
|
|
-r 'systemList/system/commandR' -v 'command' \
|
|
-r 'systemList/system/commandS' -v 'command' \
|
|
-r 'systemList/system/commandT' -v 'command' \
|
|
-r 'systemList/system/commandU' -v 'command' \
|
|
"$es_systemsFile"
|
|
|
|
#format doc to make it look nice
|
|
xmlstarlet fo "$es_systemsFile" > "$es_systemsFile".tmp && mv "$es_systemsFile".tmp "$es_systemsFile"
|
|
fi
|
|
#Custom Systems config end
|
|
}
|
|
|
|
function ares_getDefaultShaders() {
|
|
local systemShadersFolder="/var/lib/flatpak/app/dev.ares.ares/x86_64/stable/active/files/share/ares/Shaders"
|
|
local userShadersFolder="$HOME/.local/share/flatpak/app/dev.ares.ares/current/active/files/share/ares/Shaders"
|
|
local flatpakShadersFolder="$HOME/.var/app/$ares_emuPath/data/ares/Shaders"
|
|
|
|
if [ ! -d "$flatpakShadersFolder" ]; then
|
|
mkdir -p "$flatpakShadersFolder"
|
|
fi
|
|
|
|
if [ -d $systemShadersFolder ]; then
|
|
cp -r $systemShadersFolder/* $flatpakShadersFolder
|
|
echo "System install found"
|
|
echo "ares shaders copied"
|
|
elif [ -d $userShadersFolder ]; then
|
|
cp -r $userShadersFolder/* $flatpakShadersFolder
|
|
echo "User install found"
|
|
echo "ares shaders copied"
|
|
else
|
|
echo "ares install not found"
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
function ares_getQuarkShaders() {
|
|
local shaderfolders_dir="$HOME/.var/app/$ares_emuPath/data/ares/Shaders"
|
|
local quarkshaders_repo="https://github.com/hizzlekizzle/quark-shaders.git"
|
|
local shaders_branch="master"
|
|
|
|
# Create the patches directory if it doesn't exist
|
|
if [ ! -d "$shaderfolders_dir" ]; then
|
|
mkdir -p "$shaderfolders_dir"
|
|
fi
|
|
|
|
# Initialize a new Git repository in the patches directory
|
|
cd "$shaderfolders_dir" || exit
|
|
if ! git rev-parse --git-dir > /dev/null 2>&1; then
|
|
git init
|
|
fi
|
|
|
|
# Set up a remote origin for the repository
|
|
if ! git remote get-url origin > /dev/null 2>&1; then
|
|
git remote add origin "$quarkshaders_repo"
|
|
fi
|
|
|
|
# Configure Git to perform a sparse checkout of the patches folder
|
|
if ! git config core.sparsecheckout > /dev/null 2>&1; then
|
|
git config core.sparsecheckout true
|
|
fi
|
|
if ! grep -Fxq "/*" .git/info/sparse-checkout; then
|
|
echo "/*" >> .git/info/sparse-checkout
|
|
fi
|
|
|
|
# Pull the latest changes from the remote repository
|
|
git fetch --depth=1 origin "$shaders_branch"
|
|
if git merge FETCH_HEAD > /dev/null 2>&1; then
|
|
echo "Quark Shaders updated successfully"
|
|
else
|
|
# If the merge failed, reset the local changes and try again
|
|
git reset --hard HEAD > /dev/null 2>&1
|
|
git clean -fd > /dev/null 2>&1
|
|
git fetch --depth=1 origin "$shaders_branch"
|
|
if git merge FETCH_HEAD > /dev/null 2>&1; then
|
|
echo "Quark Shaders updated successfully"
|
|
else
|
|
echo "Error: Failed to update Quark Shaders"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#WipeSettings
|
|
ares_wipe(){
|
|
rm -rf "$HOME/.var/app/$ares_emuPath"
|
|
}
|
|
|
|
#Uninstall
|
|
ares_uninstall(){
|
|
uninstallEmuFP "${ares_emuName}" "${ares_emuPath}" "emulator" ""
|
|
}
|
|
|
|
#setABXYstyle
|
|
ares_setABXYstyle(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#Migrate
|
|
ares_migrate(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#WideScreenOn
|
|
ares_wideScreenOn(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#WideScreenOff
|
|
ares_wideScreenOff(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#BezelOn
|
|
ares_bezelOn(){
|
|
echo "NYI"
|
|
}
|
|
|
|
#BezelOff
|
|
ares_bezelOff(){
|
|
echo "NYI"
|
|
}
|
|
|
|
ares_IsInstalled(){
|
|
isFpInstalled "$ares_emuPath"
|
|
}
|
|
|
|
ares_resetConfig(){
|
|
ares_init &>/dev/null && echo "true" || echo "false"
|
|
}
|
|
|
|
ares_addSteamInputProfile(){
|
|
addSteamInputCustomIcons
|
|
#setMSG "Adding $ares_emuName Steam Input Profile."
|
|
#rsync -r "$emudeckBackend/configs/steam-input/ares_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
|
|
}
|
|
|
|
#finalExec - Extra stuff
|
|
ares_finalize(){
|
|
echo "NYI"
|
|
}
|
|
|
|
ares_flushEmulatorLauncher(){
|
|
|
|
|
|
flushEmulatorLaunchers "$ares_emuName"
|
|
|
|
} |