Update from Early Early + RPCS3 + Citra PR

This commit is contained in:
Rodrigo 2023-11-02 19:43:11 +01:00
parent a640ad77a7
commit 9395fce8a9
47 changed files with 893 additions and 364 deletions

View file

@ -1,98 +1,21 @@
# EmuDeck
[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/from-referrer/)
<img src="https://www.emudeck.com/img/hero.png">
EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam ROM Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org)
EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck or any other Linux Distro, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam Rom Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org)
** If you are a dev please read till the bottom **
# How to use EmuDeck?
There are two ways of using EmuDeck:
We recomend you take a look at our extensive Wiki, you'll find guides, videos and all sorts of content about the project:
## Using Steam ROM Manager
<img src="https://www.emudeck.com/img/ss1.png">
This option gives you all your games presented with their box arts as if they were a regular Steam Game.
EmuDeck has preloaded configurations for Steam ROM Manager for the following systems:
https://emudeck.github.io/emulators/steamos/supported-emulators/
## Using EmulationStation DE
<img src="https://es-de.org/____impro/1/onewebmedia/ES-DE_logo.png?etag=%226071-6041244a%22&sourceContentType=image%2Fpng&ignoreAspectRatio&resize=240%2B168">
EmuDeck configures EmulationStation DE to use the same rom folders that EmuDeck creates for you and it even downloads all the emulators and cores the ES-DE needs, all configurations that EmuDeck installs are carried over when using EmulationStation DE. For a comprehensive list of all the systems that ESDE supports go to [ES-DE](https://es-de.org)
# Hotkeys
We try to use the same hotkeys for every emulator but some of them have their own different hotkeys, shown here:
https://emudeck.github.io/controls-and-hotkeys/windows/hotkeys/?h=hotkeys
Note that Nintendo-oriented emulators refer to "A" in the emulated sense (physical Steam Deck "B")
[EmuDeck Wiki](https://emudeck.github.io/how-to-install-emudeck/steamos/)
# Developers, developers, developers.
If you wanna help us improve EmuDeck we are open to accept your PR! Just keep in mind this simple guide:
- Think EmuDeck is for everybody, tech savvy and regular users, so everything has to be properly explained, use Easy mode for unattended automatic stuff.
- User input is non recommended, everything should be done with no mouse or keyboard input. If input is a must then you have to code your feature only on expert mode.
- Think that EmuDeck is for everybody, tech savvy and is specially directed to regular users that are new to Emulation, so everything has to be properly explained.
- Things using sudo are a big no no, there are exceptions but always try to find a way of prevent using sudo.
- Every Emulator added has to be included on this readme file, have a SRM profile and follow the AmberElec hotkey mapping ( just check the previous table)
- Every Emulator needs to have a SRM profile and follow the AmberElec hotkey mapping.
- Always do your PR to the dev branch.
## Submitting a PR Request for a Steam ROM Manager Parser
If you would like to submit a PR request for a Steam ROM Manager parser, use the following format:
### The Basics
* Spell out console names - no acronyms
* For example, `PSP` should be spelled out as `PlayStation Portable`
* Respect original capitalization and spacing
* A few examples:
* `RetroArch` uses a capital `R` and capital `A`
* The `Nintendo Game Boy` uses a capital `N`, `G`, and `B` with spaces between each word
* The `PlayStation Portable` uses a capital `P` and `S` in `PlayStation` as do the other `PlayStation` handhelds and consoles
### Parser Structure
* `configTitle`:
* `COMPANYNAME SYSTEMNAME - EMULATORNAME RETROARCHCORENAME`
* If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME`
* A few examples:
* Config Title: `"configTitle": "Amiga - RetroArch PUAE",`
* Config Title: `"configTitle": "Nintendo Game Boy Color - mGBA (Standalone)",`
* Config Title: `"configTitle": "Sony PlayStation 2 - PCSX2",`
* `steamCategory`:
* **Note:** Non-Default Parsers refer to when a system has multiple emulation choices (through alternative emulators or RetroArch cores). Only one of these parsers is enabled by default and any alternative choices are disabled by default.
* Default Parsers:
* `COMPANYNAME CONSOLENAME`
* Non-Default Parsers:
* Standalone: `COMPANYNAME CONSOLENAME - EMULATORNAME`
* RetroArch Core: `COMPANYNAME CONSOLENAME - RETROARCHCORENAME`
* If the RetroArch core's name is identical to the Standalone emulator name, add `RetroArch` in front of the `RETROARCHCORENAME`
* If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME`
* A few examples:
* Default Parsers:
* Mupen64Plus Next (RetroArch core for Nintendo 64)
* Steam Category Name: `"steamCategory": ""${Nintendo 64}",`
* DuckStation (PSX Emulator)
* Steam Category Name: `"steamCategory": "${Sony PlayStation}",`
* Non-Default Parsers:
* Rosalie's Mupen GUI (N64 Emulator)
* Steam Category Name: `"steamCategory": "${Nintendo 64 - Rosalie's Mupen GUI}",`
* Beetle PSX HW (RetroArch core for PSX)
* Steam Category Name: `"steamCategory": "${Sony PlayStation - Beetle PSX HW}",`
### Parser Filename
`companyname_systemname-emulatorname-retroarchcore.json`
If it is a RetroArch core, replace `emulatorname` with `ra`.
* A few examples:
* `nintendo_wii-dolphin.json`
* `nintendo_64-rmg.json`
* `nintendo_gba-ra-mgba.json`
* `sega_saturn-ra-mednafen.json`

129
cloudSyncHealth.sh Normal file
View file

@ -0,0 +1,129 @@
#!/bin/bash
clear
source "$HOME/.config/EmuDeck/backend/functions/all.sh"
NONE='\033[00m'
RED='\033[01;31m'
GREEN='\033[01;32m'
YELLOW='\033[01;33m'
PURPLE='\033[01;35m'
CYAN='\033[01;36m'
WHITE='\033[01;37m'
BOLD='\033[1m'
UNDERLINE='\033[4m'
BLINK='\x1b[5m'
cloud_sync_upload_test(){
local emuName=$1
if [ ! -d $savesPath/$emuName ];then
return 2
fi
echo "test" > "$savesPath/$emuName/.temp"
filePath="$savesPath/$emuName/.temp"
"$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$filePath" "$cloud_sync_provider":Emudeck/saves/$emuName/.temp && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1
}
cloud_sync_dowload_test(){
local emuName=$1
if [ ! -d $savesPath/$emuName ];then
return 2
fi
echo "test" > "$savesPath/$emuName/.temp"
filePath="$savesPath/$emuName/.temp"
"$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.temp "$filePath" && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1
}
echo -e "${CYAN}CloudSync Status Report${NONE}"
echo ""
miArray=("Cemu" "citra" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" )
upload="true"
download="true"
launchers="true"
echo -e "${YELLOW}Checking launchers${NONE}"
for entry in "$toolsPath/launchers/"*.sh
do
if [ -f "$entry" ]; then
if grep -q "cloud_sync_startService" $entry; then
echo -e "$entry: ${GREEN}Success${NONE}"
else
echo -e "$entry: ${RED}Failure${NONE}"
launchers="false"
fi
fi
done
if grep -q "cloud_sync_startService" "$toolsPath/launchers/esde/emulationstationde.sh"; then
echo -e "$toolsPath/launchers/esde/emulationstationde.sh: ${GREEN}Success${NONE}"
else
echo -e "$toolsPath/launchers/esde/emulationstationde.sh: ${RED}Failure${NONE}"
fi
echo -e "${YELLOW}Checking for Windows old .lnk files${NONE}"
find "$savesPath" -type f -name "*.lnk" | while read -r entry
do
rm -rf $entry
echo "found and deleted: $entry"
done
found_files="false"
for entry in "$savesPath"/**/*.lnk
do
if [ -f "$entry" ]; then
rm -rf $entry
echo "found and deleted: $entry"
found_files="true"
fi
done
if [ "$found_files" = "false" ]; then
echo "No files with the '.lnk' extension found."
fi
echo -e ""
echo -e "${YELLOW}Testing uploading${NONE}"
# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento
for elemento in "${miArray[@]}"; do
echo -ne "Testing $elemento upload..."
if cloud_sync_upload_test $elemento;then
echo -e "${GREEN}Success${NONE}"
elif [ $? = 2 ]; then
echo -e "${YELLOW}Save folder not found${NONE}"
else
echo -e "${RED}Failure${NONE}"
upload="false"
fi
done
echo ""
echo -e "${YELLOW}Testing downloading${NONE}"
# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento
for elemento in "${miArray[@]}"; do
echo -ne "Testing $elemento download..."
if cloud_sync_dowload_test $elemento;then
echo -e "${GREEN}Success${NONE}"
elif [ $? = 2 ]; then
echo -e "${YELLOW}Save folder not found${NONE}"
else
echo -e "${RED}Failure${NONE}"
download="false"
fi
done
echo -e ""
echo -e "${CYAN}Recommendations${NONE}"
if [ $download = "true" ] && [ $upload = "true" ] && [ $launchers = "true" ]; then
echo -e "${YELLOW}Everything seems to be in proper order, at least on Linux${NONE}"
else
echo -e "${YELLOW}Open EmuDeck, go to Manage Emulators and reset SteamRomManager Configuration. Then test some games and if it keeps failing open Steam Rom Manager and parse all your games again to get the proper launchers${NONE}"
fi
sleep 100000

View file

@ -125,7 +125,7 @@ RecentROM_8=
RecentROM_9=
SaveFilePath=/run/media/mmcblk0p1/Emulation/saves/melonDS/saves
SavestatePath=/run/media/mmcblk0p1/Emulation/saves/melonDS/states
CheatFilePath=
CheatFilePath=/run/media/mmcblk0p1/Emulation/storage/melonDS/cheats
EnableCheats=0
MouseHide=1
MouseHideSeconds=5

View file

@ -21,7 +21,7 @@
"specifiedAccounts": ""
},
"parserInputs": {
"glob": "**/${title}@(.sh)"
"glob": "${title}@(.sh)"
},
"titleFromVariable": {
"limitToGroups": "",

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -16,6 +16,7 @@
"defaultHeroImage": "",
"defaultLogoImage": "",
"defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png",
"disabled": false,
"localImages": "",
"localTallImages": "",
"localHeroImages": "",

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -22,6 +22,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,

View file

@ -8,12 +8,12 @@ CemuNative_functions () {
declare -A CemuNative=(
[emuName]="CemuNative"
[emuType]="AppImage"
[emuPath]="${HOME}/Applications/Cemu.AppImage"
[emuPath]="${HOME}/Applications/CemuNative.AppImage"
[configDir]="${HOME}/.config/Cemu"
[configFile]="${HOME}/.config/Cemu/settings.xml"
[shareDir]="${HOME}/.local/share/Cemu"
)
# Cleanup older things
cleanup () {
echo "NYI"
@ -136,7 +136,7 @@ CemuNative_functions () {
bezelOn () {
echo "NYI"
}
# Bezels OFF
bezelOff () {
echo "NYI"

View file

@ -1,10 +1,10 @@
#!/bin/bash
#variables
Citra_emuName="Citra"
Citra_emuType="FlatPak"
Citra_emuPath="org.citra_emu.citra"
Citra_emuType="AppImage"
Citra_emuPath="citra_emu"
Citra_releaseURL=""
Citra_configFile="$HOME/.var/app/org.citra_emu.citra/config/citra-emu/qt-config.ini"
Citra_configFile="$HOME/.config/citra-emu/qt-config.ini"
#cleanupOlderThings
Citra_finalize(){
@ -15,7 +15,8 @@ Citra_finalize(){
Citra_install(){
setMSG "Installing $Citra_emuName"
installEmuFP "${Citra_emuName}" "${Citra_emuPath}"
flatpak override "${Citra_emuPath}" --filesystem=host --user
curl -L https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-linux > citra-setup-linux && chmod +x citra-setup-linux && ./citra-setup-linux --accept-licenses --confirm-command install
rm citra-setup-linux
}
#ApplyInitialSettings
@ -31,7 +32,7 @@ Citra_init(){
#update
Citra_update(){
setMSG "Updating $Citra_emuName settings."
configEmuFP "${Citra_emuName}" "${Citra_emuPath}"
cd $HOME/.citra && ./maintenancetool update
Citra_setupStorage
Citra_setEmulationFolder
Citra_setupSaves
@ -48,35 +49,35 @@ Citra_setEmulationFolder(){
#Setup symlink for AES keys
mkdir -p "${biosPath}/citra/"
mkdir -p "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sysdata"
ln -sn "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sysdata" "${biosPath}/citra/keys"
mkdir -p "$HOME/.local/share/citra-emu/sysdata"
ln -sn "$HOME/.local/share/citra-emu/sysdata" "${biosPath}/citra/keys"
}
#SetupSaves
Citra_setupSaves(){
linkToSaveFolder citra saves "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc"
linkToSaveFolder citra states "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/states"
linkToSaveFolder citra saves "$HOME/.local/share/citra-emu/sdmc"
linkToSaveFolder citra states "$HOME/.local/share/citra-emu/states"
}
#SetupStorage
Citra_setupStorage(){
if [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" ]; then
if [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.local/share/citra-emu/nand/" ]; then
echo "citra nand does not exist in storagepath."
echo -e ""
setMSG "Moving Citra nand to the Emulation/storage folder"
echo -e ""
mv "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/" $storagePath/citra/nand/
mv "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/" $storagePath/citra/sdmc/
mv "$HOME/.local/share/citra-emu/nand/" $storagePath/citra/nand/
mv "$HOME/.local/share/citra-emu/sdmc/" $storagePath/citra/sdmc/
unlink "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/"
unlink "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/"
unlink "$HOME/.local/share/citra-emu/nand/"
unlink "$HOME/.local/share/citra-emu/sdmc/"
ln -ns "${storagePath}/citra/nand/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/"
ln -ns "${storagePath}/citra/sdmc/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/"
ln -ns "${storagePath}/citra/nand/" "$HOME/.local/share/citra-emu/nand/"
ln -ns "${storagePath}/citra/sdmc/" "$HOME/.local/share/citra-emu/sdmc/"
fi
}
@ -85,14 +86,14 @@ Citra_setupStorage(){
#WipeSettings
Citra_wipe(){
setMSG "Wiping $Citra_emuName config directory. (factory reset)"
rm -rf "$HOME/.var/app/$Citra_emuPath"
rm -rf "$HOME/.config/citra-emu"
}
#Uninstall
Citra_uninstall(){
setMSG "Uninstalling $Citra_emuName."
flatpak uninstall "$Citra_emuPath" --user -y
cd $HOME/.citra && ./maintenancetool purge
}
#setABXYstyle
@ -102,7 +103,31 @@ Citra_setABXYstyle(){
#Migrate
Citra_migrate(){
echo "NYI"
echo "Begin Citra Migration"
emu="Citra"
migrationFlag="$HOME/.config/EmuDeck/.${emu}MigrationCompleted"
#check if we have a nomigrateflag for $emu
if [ ! -f "$migrationFlag" ]; then
#citra flatpak to appimage
#From -- > to
migrationTable=()
migrationTable+=("$HOME/.var/app/org.citra_emu.citra/data/citra-emu" "$HOME/.local/share/citra-emu")
migrationTable+=("$HOME/.var/app/org.citra_emu.citra/config/citra-emu" "$HOME/.config/citra-emu")
# migrateAndLinkConfig "$emu" "$migrationTable"
fi
#move data from hidden folders out to these folders in case the user already put stuff here.
origPath="$HOME/.var/app/org.citra_emu.citra/data/citra_emu/"
citra_setupStorage
rsync -av "${origPath}citra/dump" "${storagePath}/citra/" && rm -rf "${origPath}citra/dump"
rsync -av "${origPath}citra/load" "${storagePath}/citra/" && rm -rf "${origPath}citra/load"
rsync -av "${origPath}citra/sdmc" "${storagePath}/citra/" && rm -rf "${origPath}citra/sdmc"
rsync -av "${origPath}citra/nand" "${storagePath}/citra/" && rm -rf "${origPath}citra/nand"
rsync -av "${origPath}citra/screenshots" "${storagePath}/citra/" && rm -rf "${origPath}citra/screenshots"
rsync -av "${origPath}citra/tas" "${storagePath}/citra/" && rm -rf "${origPath}citra/tas"
}
#WideScreenOn
@ -141,4 +166,4 @@ Citra_resetConfig(){
Citra_addSteamInputProfile(){
addSteamInputCustomIcons
rsync -r "$EMUDECKGIT/configs/steam-input/citra_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
}
}

View file

@ -1,10 +1,11 @@
#!/bin/bash
#variables
RPCS3_remuName="RPCS3"
RPCS3_emuType="FlatPak"
RPCS3_emuPath="net.rpcs3.RPCS3"
RPCS3_releaseURL=""
RPCS3_VFSConf="$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/vfs.yml"
RPCS3_emuName="RPCS3"
RPCS3_emuType="AppImage"
RPCS3_releaseURL="https://rpcs3.net/latest-appimage"
RPCS3_emuPath="$HOME/Applications/rpcs3.AppImage"
RPCS3_flatpakPath="$HOME/.var/app/net.rpcs3.RPCS3"
RPCS3_VFSConf="$HOME/.config/rpcs3/vfs.yml"
#cleanupOlderThings
RPCS3_cleanup(){
@ -13,13 +14,40 @@ RPCS3_cleanup(){
#Install
RPCS3_install(){
installEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}"
flatpak override "${RPCS3_emuPath}" --filesystem=host --user
setMSG "Installing RPCS3"
# RPCS3 does not have a "latest" tag on their GitHub repo. Open issue said to use the below URL instead. Modified from ES-DE script
RPCS3_releaseMD5="$(curl -sL https://rpcs3.net/latest-appimage | md5sum | cut -d ' ' -f 1)"
local showProgress="$1"
if [[ $RPCS3_releaseURL = "https://rpcs3.net/latest-appimage"* ]]; then
if safeDownload "$RPCS3_remuName" "$RPCS3_releaseURL" "$RPCS3_emuPath" "$showProgress"; then
RPCS3_md5sum=($(md5sum $RPCS3_emuPath)) # get first element
if [ "$RPCS3_md5sum" == "$RPCS3_releaseMD5" ]; then
echo "RPCS3 PASSED HASH CHECK."
chmod +x "$RPCS3_emuPath"
else
echo "RPCS3 FAILED HASH CHECK. Expected $RPCS3_releaseMD5, got $RPCS3_md5sum"
fi
else
return 1
fi
else
setMSG "$RPCS3_remuName not found"
return 1
fi
# Preserve flatpak permissions for old RPCS3 Install
flatpak override net.rpcs3.RPCS3 --filesystem=host --user
}
#ApplyInitialSettings
RPCS3_init(){
configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}" "true"
RPCS3_migrate
configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3" "true"
RPCS3_setupStorage
RPCS3_setEmulationFolder
RPCS3_setupSaves
@ -27,7 +55,8 @@ RPCS3_init(){
#update
RPCS3_update(){
configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}"
RPCS3_migrate
configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3"
RPCS3_setupStorage
RPCS3_setEmulationFolder
RPCS3_setupSaves
@ -35,13 +64,14 @@ RPCS3_update(){
#ConfigurePaths
RPCS3_setEmulationFolder(){
iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": "
}
#SetupSaves
RPCS3_setupSaves(){
linkToSaveFolder rpcs3 saves "${storagePath}/rpcs3/dev_hdd0/home/00000001/savedata"
linkToSaveFolder rpcs3 trophy "${storagePath}/rpcs3/dev_hdd0/home/00000001/trophy"
}
@ -50,11 +80,11 @@ RPCS3_setupStorage(){
mkdir -p "$storagePath/rpcs3/"
if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/${RPCS3_emuPath}/" ];then
echo "rpcs3 hdd does not exist in storagepath."
if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/" -o -d "$HOME/.config/rpcs3/" ]; then
echo "RPCS3 HDD does not exist in storage path"
echo -e ""
setMSG "Moving rpcs3 HDD to the Emulation/storage folder"
setMSG "Moving RPCS3 HDD to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/rpcs3"
@ -62,24 +92,39 @@ RPCS3_setupStorage(){
if [ -d "$savesPath/rpcs3/dev_hdd0" ]; then
mv -f "$savesPath"/rpcs3/dev_hdd0 "$storagePath"/rpcs3/
elif [ -d "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0"
elif [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0"
elif [ -d "$HOME/.config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.config/rpcs3/dev_hdd0"
fi
fi
}
#WipeSettings
RPCS3_wipe(){
rm -rf "$HOME/.var/app/$RPCS3_emuPath"
# prob not cause roms are here
setMSG "Wiping $RPCS3_emuName settings."
rm -rf "$HOME/.config/rpcs3"
rm -rf "$HOME/.cache/rpcs3"
}
# Create desktop shortcut
RPCS3_createDesktopShortcut(){
createDesktopShortcut "$HOME/.local/share/applications/$RPCS3_remuName.desktop" \
"$RPCS3_emuName AppImage" \
"${toolsPath}/launchers/rpcs3.sh" \
"false"
}
#Uninstall
RPCS3_uninstall(){
flatpak uninstall "$RPCS3_emuPath" --user -y
setMSG "Uninstalling $RPCS3_emuName."
rm -rf "$RPCS3_emuPath"
RPCS3_wipe
}
#setABXYstyle
@ -89,7 +134,22 @@ RPCS3_setABXYstyle(){
#Migrate
RPCS3_migrate(){
echo "NYI"
echo "Begin RPCS3 Migration"
# Migration
migrationFlag="$HOME/.config/EmuDeck/.${RPCS3_emuName}MigrationCompleted"
#check if we have a nomigrateflag for $emu
if [ ! -f "$migrationFlag" ]; then
#RPCS3 flatpak to appimage
#From -- > to
migrationTable=()
migrationTable+=("$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3" "$HOME/.config/rpcs3")
migrateAndLinkConfig "$RPCS3_emuName" "$migrationTable"
fi
echo "true"
}
#WideScreenOn
@ -118,9 +178,13 @@ RPCS3_finalize(){
}
RPCS3_IsInstalled(){
isFpInstalled "$RPCS3_emuPath"
if [ -e "$RPCS3_emuPath" ] || [ -e "$RPCS3_flatpakPath" ]; then
echo "true"
else
echo "false"
fi
}
RPCS3_resetConfig(){
RPCS3_init &>/dev/null && echo "true" || echo "false"
}
}

View file

@ -47,13 +47,17 @@ RetroArch_init(){
mkdir -p "$biosPath/mame/bios"
mkdir -p "$biosPath/dc"
mkdir -p "$biosPath/neocd"
echo "Put your Mame bios here" > "$biosPath/mame/bios/readme.txt"
echo "Put your Dreamcast bios here" > "biosPath/dc/readme.txt"
echo "Put your RetroArch, DuckStation, RPCSX2 bios here in this directory, don't create subfolders!" > "$biosPath/mame/bios/readme.txt"
echo "Put your MAME bios here" > "$biosPath/mame/bios/readme.txt"
echo "Put your Dreamcast bios here" > "$biosPath/dc/readme.txt"
echo "Put your Neo Geo CD bios here" > "$biosPath/neocd/readme.txt"
echo "Put your RetroArch, DuckStation, PCSX2 bios here in this directory, don't create subfolders!" > "$biosPath/readme.txt"
}
RetroArch_setCustomizations(){
# User customizations
RetroArch_setShadersCRT
@ -186,7 +190,7 @@ RetroArch_setupSaves(){
linkToSaveFolder retroarch saves "$RetroArch_path/saves"
RetroArch_setConfigOverride 'savestate_directory' "$savesPath/retroarch/states" "$RetroArch_configFile"
RetroArch_setConfigOverride 'savefile_directory' "$savesPath/retroarch/states" "$RetroArch_configFile"
RetroArch_setConfigOverride 'savefile_directory' "$savesPath/retroarch/saves" "$RetroArch_configFile"
}

View file

@ -10,15 +10,15 @@ YuzuEA_emuPath="$HOME/Applications/yuzu-ea.AppImage"
Yuzu_cleanup() {
echo "Begin Yuzu Cleanup"
#Fixes repeated Symlink for older installations
if [ -f "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys" ]; then
unlink "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys"
fi
if [ -f "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/keys/keys" ]; then
unlink "$HOME/.var/app/org.yuzu_emu.yuzu/data/yuzu/nand/system/Contents/registered/registered"
fi
}
#Install
@ -234,9 +234,9 @@ YuzuEA_install() {
local showProgress="$2"
local user
local auth
read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" || echo "invalid"
#echo "get bearer token"
BEARERTOKEN=$(curl -X POST ${jwtHost} -H "X-Username: ${user}" -H "X-Token: ${auth}" -H "User-Agent: EmuDeck")
@ -256,12 +256,12 @@ YuzuEA_install() {
}
YuzuEA_addToken(){
YuzuEA_addToken(){
local tokenValue=$1
local user=""
local auth=""
read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" && YuzuEA_install $tokenValue || echo "invalid"
read -r user auth <<<"$(echo "$tokenValue"==== | fold -w 4 | sed '$ d' | tr -d '\n' | base64 --decode| awk -F":" '{print $1" "$2}')" && YuzuEA_install "$tokenValue" || echo "invalid"
}

View file

@ -64,6 +64,15 @@ cloud_sync_config(){
}
createCloudFile() {
local folder=$1
local cloudFilePath="${folder}/.cloud"
if [ ! -f "$cloudFilePath" ]; then
echo "" > "$cloudFilePath"
fi
}
cloud_sync_setup_providers(){
startLog ${FUNCNAME[0]}
if [ "$cloud_sync_provider" == "Emudeck-NextCloud" ]; then
@ -109,13 +118,16 @@ cloud_sync_setup_providers(){
username="$(echo "$NCInput" | awk -F "," '{print $2}')"
password="$(echo "$NCInput" | awk -F "," '{print $3}')"
port="$(echo "$NCInput" | awk -F "," '{print $4}')"
"$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)"
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
else
echo "Cancel SFTP Login"
fi
elif [ "$cloud_sync_provider" == "Emudeck-OneDrive" ]; then
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
elif [ "$cloud_sync_provider" == "Emudeck-SMB" ]; then
NCInput=$(zenity --forms \
@ -132,8 +144,10 @@ cloud_sync_setup_providers(){
host="$(echo "$NCInput" | awk -F "," '{print $1}')"
username="$(echo "$NCInput" | awk -F "," '{print $2}')"
password="$(echo "$NCInput" | awk -F "," '{print $3}')"
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)"
else
echo "Cancel SMB Login"
fi
@ -289,16 +303,17 @@ cloud_sync_download(){
cloud_sync_check_lock
if [ "$emuName" == "all" ]; then
#We check the hashes
cloud_sync_save_hash "$savesPath/$emuName"
local filePath="$savesPath/.hash"
local hash=$(cat "$savesPath/.hash")
"$cloud_sync_bin" --progress copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/.hash "$filePath"
"$cloud_sync_bin" --progress copyto -L --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/.hash "$filePath"
hashCloud=$(cat "$savesPath/.hash")
if [ -f "$savesPath/.hash" ] && [ "$hash" != "$hashCloud" ]; then
("$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/ "$savesPath" && (
"$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/ "$savesPath" && (
local baseFolder="$savesPath/"
for folder in $baseFolder*/
do
@ -307,23 +322,25 @@ cloud_sync_download(){
echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download
fi
done
)) | zenity --progress --title="Downloading saves - All systems" --text="Syncing saves..." --auto-close --width 300 --height 100 --pulsate
)
else
echo "up to date"
fi
#Single Emu
else
#We check the hashes
cloud_sync_save_hash "$emuName"
local filePath="$savesPath/$emuName/.hash"
local hash=$(cat "$savesPath/$emuName/.hash")
"$cloud_sync_bin" --progress copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.hash "$filePath"
"$cloud_sync_bin" --progress copyto -L --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.hash "$filePath"
hashCloud=$(cat "$savesPath/$emuName/.hash")
if [ -f "$savesPath/$emuName/.hash" ] && [ "$hash" != "$hashCloud" ];then
("$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/$emuName/ "$savesPath"/$emuName/ && echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download) | zenity --progress --title="Downloading saves $emuName" --text="Syncing saves..." --auto-close --width 300 --height 100 --pulsate
"$cloud_sync_bin" copy --fast-list --checkers=50 -P -L --exclude=/.fail_upload --exclude=/.fail_download --exclude=/.pending_upload --exclude=/.last_upload "$cloud_sync_provider":Emudeck/saves/$emuName/ "$savesPath"/$emuName/ && echo $timestamp > "$savesPath"/$emuName/.last_download && rm -rf $savesPath/$emuName/.fail_download
else
echo "up to date"
fi
@ -332,15 +349,17 @@ cloud_sync_download(){
}
cloud_sync_createBackup(){
cloud_sync_createBackup (){
startLog ${FUNCNAME[0]}
local $emuName=$1
local emuName=$1
local date=$(date +"%D");
cp -r "$savesPath/$emuName" "$toolsPath/save-backups/$emuName/"
#We delete backups older than one month
find $toolsPath/save-backups -maxdepth 1 -type d -mtime +30 -delete
mkdir -p "$emulationPath/save-backups/$emuName/"
find "$emulationPath/save-backups/$emuName/" -maxdepth 1 -type d -mtime +30 -delete
cp -Lr "$savesPath/$emuName" "$emulationPath/save-backups/"
}
cloud_sync_uploadEmu(){
startLog ${FUNCNAME[0]}
local emuName=$1
@ -519,7 +538,7 @@ cloud_sync_downloadEmuAll(){
}
cloud_sync_cloud_sync_uploadEmuAll(){
cloud_sync_uploadEmuAll(){
cloud_sync_upload 'all'
}
@ -619,7 +638,7 @@ cloud_decky_check_status(){
echo "disabled"
fi
else
echo "noInternet"
echo "disabled"
fi
}

View file

@ -32,20 +32,36 @@ ESDE_migration(){
if [ -f "${toolsPath}/EmulationStation-DE-x64_SteamDeck.AppImage" ]; then
mv "${toolsPath}/EmulationStation-DE-x64_SteamDeck.AppImage" "${toolsPath}/EmulationStation-DE.AppImage"
sed -i "s|EmulationStation-DE-x64_SteamDeck.AppImage|EmulationStation-DE.AppImage|g" "$toolsPath/launchers/esde/emulationstationde.sh"
ESDE_createDesktopShortcut
fi
}
ESDE_createDesktopShortcut(){
mkdir -p "$toolsPath/launchers/esde"
cp "$EMUDECKGIT/tools/launchers/esde/emulationstationde.sh" "$toolsPath/launchers/esde/emulationstationde.sh"
rm -rf $HOME/.local/share/applications/EmulationStation-DE.desktop
createDesktopShortcut "$HOME/.local/share/applications/EmulationStation-DE.desktop" \
"EmulationStation-DE AppImage" \
"${toolsPath}/launchers/esde/emulationstationde.sh" \
"false"
}
ESDE_uninstall(){
rm -rf "${toolsPath}/EmulationStation-DE.AppImage"
rm -rf $HOME/.local/share/applications/EmulationStationDE.desktop
}
#Install
ESDE_install(){
ESDE_SetAppImageURLS
setMSG "Installing $ESDE_toolName"
local showProgress="$1"
local filename="$ESDE_toolName.$ESDE_toolType"
if [[ $ESDE_releaseURL = "https://gitlab.com/es-de/emulationstation-de/-/package_files/"* ]]; then
if installToolAI "$ESDE_toolName" "$ESDE_releaseURL" "" "$showProgress"; then
:
ESDE_createDesktopShortcut
else
return 1
fi
@ -56,11 +72,6 @@ ESDE_install(){
fi
}
ESDE_uninstall(){
rm -rf "${toolsPath}/EmulationStation-DE.AppImage"
rm -rf $HOME/.local/share/applications/EmulationStationDE.desktop
}
# ESDE20_install(){
# ESDE_SetAppImageURLS
# setMSG "Installing $ESDE_toolName PreRelease"
@ -104,13 +115,25 @@ ESDE_init(){
ESDE_addCustomSystems
ESDE_setEmulationFolder
ESDE_setDefaultEmulators
ESDE_applyTheme "$esdeTheme"
ESDE_applyTheme "$esdeThemeUrl" "$esdeThemeName"
ESDE_migrateDownloadedMedia
ESDE_addSteamInputProfile
ESDE_symlinkGamelists
ESDE_finalize
ESDE_migrateEpicNoir
if [ "$system" == "chimeraos" ] || [ "$system" == "ChimeraOS" ]; then
ESDE_chimeraOS
fi
}
ESDE_chimeraOS(){
if [ ! -f $es_rulesFile ]; then
rsync -avhp --mkpath "$EMUDECKGIT/chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml" "$(dirname "$es_rulesFile")" --backup --suffix=.bak
else
xmlstarlet ed -d '//entry[contains(., "~/Applications/RetroArch-Linux*.AppImage") or contains(., "~/.local/share/applications/RetroArch-Linux*.AppImage") or contains(., "~/.local/bin/RetroArch-Linux*.AppImage") or contains(., "~/bin/RetroArch-Linux*.AppImage")]' $es_rulesFile > rules_temp.xml && mv rules_temp.xml $es_rulesFile
fi
}
@ -134,7 +157,7 @@ ESDE_update(){
ESDE_addCustomSystems
ESDE_setEmulationFolder
ESDE_setDefaultEmulators
ESDE_applyTheme "$esdeTheme"
ESDE_applyTheme "$esdeThemeUrl" "$esdeThemeName"
ESDE_migrateDownloadedMedia
ESDE_addSteamInputProfile
ESDE_symlinkGamelists
@ -168,30 +191,21 @@ ESDE_addCustomSystems(){
#update
ESDE_applyTheme(){
defaultTheme="https://github.com/anthonycaccese/epic-noir-revisited-es-de.git"
local theme=$1
local themeName=$(basename "$(echo $theme | rev | cut -d'/' -f1 | rev)")
themeName="${themeName/.git/""}"
local themeUrl=$1
local themeName=$2
if [[ "${theme}" == "" ]]; then
echo "ESDE: applyTheme parameter not set."
theme="$defaultTheme"
fi
echo "ESDE: applyTheme $theme"
echo "ESDE: applyTheme $themeName"
mkdir -p "$HOME/.emulationstation/themes/"
if [ -d "$HOME/.emulationstation/themes/$themeName" ]; then
cd "$HOME/.emulationstation/themes/$themeName" && git pull
else
git clone $themeUrl "$HOME/.emulationstation/themes/"
fi
sed -i "s/<string name=\"ThemeSet\" value=\"[^\"]*\"/<string name=\"ThemeSet\" value=\"$themeName\"/" "$es_settingsFile"
#old epic noir themes
rm -rf "$HOME/.emulationstation/themes/epic-noir-revisited" #remove old themes
rm -rf "$HOME/.emulationstation/themes/es-epicnoir" #remove old themes
git clone --no-single-branch --depth=1 "$theme" "$HOME/.emulationstation/themes/$themeName/"
cd "$HOME/.emulationstation/themes/$themeName/" && git reset --hard HEAD && git clean -f -d && git pull && echo "$themeName up to date!" || echo "problem pulling $themeName theme"
changeLine '<string name="ThemeSet"' "<string name=\"ThemeSet\" value=\"$themeName\" />" "$es_settingsFile"
}
#ConfigurePaths
ESDE_setEmulationFolder(){
#update cemu custom system launcher to correct path by just replacing the line, if it exists.

View file

@ -11,8 +11,8 @@ SRM_install(){
setMSG "Installing Steam ROM Manager"
local showProgress="$1"
if installToolAI "$SRM_toolName" "$(getReleaseURLGH "SteamGridDB/steam-rom-manager" "AppImage")" "" "$showProgress"; then
:
if installToolAI "$SRM_toolName" "$(getReleaseURLGH "dragoonDorise/steam-rom-manager" "AppImage")" "" "$showProgress"; then
SRM_createDesktopShortcut
else
return 1
fi
@ -26,40 +26,20 @@ SRM_uninstall(){
}
SRM_createDesktopShortcut(){
local SRM_Shortcutlocation=$1
mkdir -p "$HOME/.local/share/applications/"
mkdir -p "$HOME/.local/share/icons/emudeck/"
cp -v "$EMUDECKGIT/icons/srm.png" "$HOME/.local/share/icons/emudeck/"
if [[ "$SRM_Shortcutlocation" == "" ]]; then
SRM_Shortcutlocation="$HOME/.local/share/applications/SRM.desktop"
fi
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Steam ROM Manager AppImage
Exec=zenity --question --width 450 --title \"Close Steam/Steam Input?\" --text \"Exit Steam to launch Steam ROM Manager? Desktop controls will temporarily revert to touch/trackpad/L2/R2 until you open Steam again.\" && (kill -15 \$(pidof steam) & $SRM_toolPath)
Icon=$HOME/.local/share/icons/emudeck/srm.png
Terminal=false
Type=Application
Categories=Game;
StartupNotify=false" > "$SRM_Shortcutlocation"
chmod +x "$SRM_Shortcutlocation"
mkdir -p "$toolsPath/launchers/srm"
cp "$EMUDECKGIT/tools/launchers/srm/steamrommanager.sh" "$toolsPath/launchers/srm/steamrommanager.sh"
rm -rf $HOME/.local/share/applications/SRM.desktop
createDesktopShortcut "$HOME/.local/share/applications/Steam ROM Manager.desktop" \
"Steam ROM Manager AppImage" \
"${toolsPath}/launchers/srm/steamrommanager.sh" \
"false"
}
SRM_migration(){
if [ -d "${toolsPath}/srm" ]; then
cp "${toolsPath}"/srm/*.AppImage "${toolsPath}"
mv "${toolsPath}/Steam-ROM-Manager.AppImage" "${toolsPath}/Steam ROM Manager.AppImage" && rm -rf "${toolsPath}"/srm/
rm -rf $HOME/.local/share/applications/SRM.desktop
createDesktopShortcut "$HOME/.local/share/applications/Steam ROM Manager.desktop" \
"Steam ROM Manager AppImage" \
"${toolsPath}/launchers/srm/steamrommanager.sh" \
"false"
SRM_createDesktopShortcut
fi
}
@ -80,93 +60,153 @@ SRM_init(){
exclusionList=""
#Multiemulator?
if [ "$emuMULTI" != "both" ]; then
if [ "$emuMULTI" = "ra" ]; then
exclusionList=$exclusionList"ares/\n"
else
exclusionList=$exclusionList"atari_2600-ra-stella.json\n";
exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n";
exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n";
exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n";
exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n";
exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n";
fi
if [ "$emuMULTI" = "undefined" ]; then
exclusionList=$exclusionList"ares/\n"
exclusionList=$exclusionList"amiga_600-ra-puae.json\n";
exclusionList=$exclusionList"amiga_1200-ra-puae.json\n";
exclusionList=$exclusionList"amiga_cd-ra-puae.json\n";
exclusionList=$exclusionList"amiga-ra-puae.json\n";
exclusionList=$exclusionList"amstrad_cpc-ra-cap32.json\n";
exclusionList=$exclusionList"arcade_naomi-ra-flycast.json\n";
exclusionList=$exclusionList"arcade-ra-fbneo.json\n";
exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n";
exclusionList=$exclusionList"arcade-ra-mame_2010.json\n";
exclusionList=$exclusionList"arcade-ra-mame.json\n";
exclusionList=$exclusionList"atari_2600-ra-stella.json\n";
exclusionList=$exclusionList"atari_jaguar-ra-virtualjaguar.json\n";
exclusionList=$exclusionList"atari_lynx-ra-mednafen.json\n";
exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"commodore_16-ra-vice_xplus4.json\n";
exclusionList=$exclusionList"commodore_64-ra-vice_x64.json\n";
exclusionList=$exclusionList"commodore_vic_20-ra-vice_xvic.json\n";
exclusionList=$exclusionList"doom-ra-prboom.json\n";
exclusionList=$exclusionList"dos-ra-dosbox_pure.json\n";
exclusionList=$exclusionList"nec_pc_98-ra-np2kai.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nintendo_3ds-citra.json\n";
exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n";
exclusionList=$exclusionList"nintendo_ds-melonds.json\n";
exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n";
exclusionList=$exclusionList"nintendo_sgb-ra-mesen-s.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n";
exclusionList=$exclusionList"panasonic_3do-ra-opera.json\n";
exclusionList=$exclusionList"philips_cd_i-ra-same_cdi.json\n";
exclusionList=$exclusionList"pico_8-ra-retro8.json\n";
exclusionList=$exclusionList"rpg_maker-ra-easyrpg.json\n";
exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n";
exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n";
exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n";
exclusionList=$exclusionList"sega_saturn-ra-mednafen.json\n";
exclusionList=$exclusionList"sega_saturn-ra-yabause.json\n";
exclusionList=$exclusionList"sharp-x68000-ra-px68k.json\n";
exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n";
exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n";
exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n";
exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n";
exclusionList=$exclusionList"tic-80-ra-tic80.json\n";
elif [ "$emuMULTI" = "ra" ]; then
exclusionList=$exclusionList"ares/\n"
else
exclusionList=$exclusionList"atari_2600-ra-stella.json\n";
exclusionList=$exclusionList"bandai_wonderswan_color-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"bandai_wonderswan-ra-mednafen_swan.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nec_pc_engine_turbografx_16-ra-beetle_pce.json\n";
exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gb-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-gambatte.json\n";
exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n";
exclusionList=$exclusionList"nintendo_nes-ra-mesen.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-bsnes_hd.json\n";
exclusionList=$exclusionList"nintendo_snes-ra-snes9x.json\n";
exclusionList=$exclusionList"sega_32X-ra-picodrive.json\n";
exclusionList=$exclusionList"sega_CD_Mega_CD-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_dreamcast-ra-flycast.json\n";
exclusionList=$exclusionList"sega_game_gear-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx_wide.json\n";
exclusionList=$exclusionList"sega_genesis-ra-genesis_plus_gx.json\n";
exclusionList=$exclusionList"sega_mastersystem-ra-genesis-plus-gx.json\n";
exclusionList=$exclusionList"sinclair_zx-spectrum-ra-fuse.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket_color-ra-beetle_neopop.json\n";
exclusionList=$exclusionList"snk_neo_geo_pocket-ra-beetle_neopop.json\n";
fi
fi
#N64?
if [ "$emuN64" != "both" ]; then
if [ "$emuN64" = "rgm" ]; then
exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n"
exclusionList=$exclusionList"nintendo_64-ares.json\n"
exclusionList=$exclusionList"nintendo_64dd-ares.json\n"
else
exclusionList=$exclusionList"nintendo_64-rmg.json\n"
fi
if [ "$emuN64" = "rgm" ]; then
exclusionList=$exclusionList"nintendo_64-ra-mupen64plus_next.json\n"
exclusionList=$exclusionList"nintendo_64-ares.json\n"
exclusionList=$exclusionList"nintendo_64dd-ares.json\n"
else
exclusionList=$exclusionList"nintendo_64-rmg.json\n"
fi
fi
#PSX?
if [ "$emuPSX" != "both" ]; then
if [ "$emuPSX" = "duckstation" ]; then
exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n"
exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n"
exclusionList=$exclusionList"nintendo_64dd-ares.json\n"
else
exclusionList=$exclusionList"sony_psx-duckstation.json\n"
fi
if [ "$emuPSX" = "duckstation" ]; then
exclusionList=$exclusionList"sony_psx-ra-beetle_psx_hw.json\n"
exclusionList=$exclusionList"sony_psx-ra-swanstation.json\n"
exclusionList=$exclusionList"nintendo_64dd-ares.json\n"
else
exclusionList=$exclusionList"sony_psx-duckstation.json\n"
fi
fi
#gba?
if [ "$emuGBA" != "both" ]; then
if [ "$emuGBA" = "mgba" ]; then
exclusionList=$exclusionList"nintendo_gameboy-advance-ares.json\n"
exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n"
else
exclusionList=$exclusionList"nintendo_gba-mgba.json\n"
fi
if [ "$emuGBA" = "mgba" ]; then
exclusionList=$exclusionList"nintendo_gameboy-advance-ares.json\n"
exclusionList=$exclusionList"nintendo_gba-ra-mgba.json\n"
else
exclusionList=$exclusionList"nintendo_gba-mgba.json\n"
fi
fi
#psp
if [ "$emuPSP" != "both" ]; then
if [ "$emuPSP" = "ppsspp" ]; then
exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n"
else
exclusionList=$exclusionList"sony_psp-ppsspp.json\n"
fi
if [ "$emuPSP" = "ppsspp" ]; then
exclusionList=$exclusionList"sony_psp-ra-ppsspp.json\n"
else
exclusionList=$exclusionList"sony_psp-ppsspp.json\n"
fi
fi
#melonDS
if [ "$emuNDS" != "both" ]; then
if [ "$emuNDS" = "melonds" ]; then
exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n"
else
exclusionList=$exclusionList"nintendo_ds-melonds.json\n"
fi
if [ "$emuNDS" = "melonds" ]; then
exclusionList=$exclusionList"nintendo_ds-ra-melonds.json\n"
else
exclusionList=$exclusionList"nintendo_ds-melonds.json\n"
fi
fi
#mame
if [ "$emuMAME" != "both" ]; then
if [ "$emuMAME" = "mame" ]; then
exclusionList=$exclusionList"arcade-ra-mame_2010.json\n"
exclusionList=$exclusionList"arcade-ra-mame.json\n"
exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n"
else
exclusionList=$exclusionList"arcade-mame.json\n"
exclusionList=$exclusionList"tiger_electronics_gamecom-mame.json\n"
exclusionList=$exclusionList"vtech_vsmile-mame.json\n"
exclusionList=$exclusionList"snk_neo_geo_cd-mame.json\n"
exclusionList=$exclusionList"philips_cd_i-mame.json\n"
fi
if [ "$emuMAME" = "mame" ]; then
exclusionList=$exclusionList"arcade-ra-mame_2010.json\n"
exclusionList=$exclusionList"arcade-ra-mame.json\n"
exclusionList=$exclusionList"arcade-ra-mame_2003_plus.json\n"
else
exclusionList=$exclusionList"arcade-mame.json\n"
exclusionList=$exclusionList"tiger_electronics_gamecom-mame.json\n"
exclusionList=$exclusionList"vtech_vsmile-mame.json\n"
exclusionList=$exclusionList"snk_neo_geo_cd-mame.json\n"
exclusionList=$exclusionList"philips_cd_i-mame.json\n"
fi
fi
#Optional parsers
exclusionList=$exclusionList"nintendo_gbc-ra-sameboy.json\n"
@ -176,6 +216,71 @@ SRM_init(){
exclusionList=$exclusionList"nintendo_gbc-mgba.json\n"
exclusionList=$exclusionList"nintendo_gb-mGBA.json\n"
#Exclusion based on install status.
if [ $doInstallPrimeHack != "true" ]; then
exclusionList=$exclusionList"nintendo_primehack.json\n"
fi
if [ $doInstallRPCS3 != "true" ]; then
exclusionList=$exclusionList"sony_ps3-rpcs3-extracted_iso_psn.json\n"
exclusionList=$exclusionList"sony_ps3-rpcs3-pkg.json\n"
fi
if [ $doInstallCitra != "true" ]; then
exclusionList=$exclusionList"nintendo_3ds-citra-mGBA.json\n"
fi
if [ $doInstallDolphin != "true" ]; then
exclusionList=$exclusionList"nintendo_gc-dolphin.json\n"
exclusionList=$exclusionList"nintendo_wii-dolphin.json\n"
fi
if [ $doInstallDuck != "true" ]; then
exclusionList=$exclusionList"sony_psx-duckstation.json\n"
fi
if [ $doInstallPPSSPP != "true" ]; then
exclusionList=$exclusionList"sony_psp-ppsspp.json\n"
fi
if [ $doInstallXemu != "true" ]; then
exclusionList=$exclusionList"microsoft_xbox-xemu.json\n"
fi
if [ $doInstallXenia != "true" ]; then
exclusionList=$exclusionList"microsoft_xbox_360-xenia-xbla.json\n"
exclusionList=$exclusionList"microsoft_xbox_360-xenia.json\n"
fi
if [ $doInstallScummVM != "true" ]; then
exclusionList=$exclusionList"scumm_scummvm.json\n"
fi
if [ $doInstallRMG != "true" ]; then
exclusionList=$exclusionList"nintendo_64-rmg.json\n"
fi
if [ $doInstallmelonDS != "true" ]; then
exclusionList=$exclusionList"nintendo_ds-melonds.json\n"
fi
if [ $doInstallVita3K != "true" ]; then
exclusionList=$exclusionList"sony_psvita-vita3k-pkg.json\n"
fi
if [ $doInstallMGBA != "true" ]; then
exclusionList=$exclusionList"nintendo_gb-mGBA.json\n"
exclusionList=$exclusionList"nintendo_gba-mgba.json\n"
exclusionList=$exclusionList"nintendo_gbc-mgba.json\n"
fi
if [ $doInstallMAME != "true" ]; then
exclusionList=$exclusionList"arcade-mame.json\n"
fi
if [ $doInstallYuzu != "true" ]; then
exclusionList=$exclusionList"nintendo_switch-yuzu.json\n"
fi
if [ $doInstallRyujinx != "true" ]; then
exclusionList=$exclusionList"nintendo_switch-ryujinx.json\n"
fi
if [ "$doInstallPCSX2QT" != "true" ]; then
exclusionList=$exclusionList"sony_ps2-pcsx2.json\n"
fi
echo -e $exclusionList > "$HOME/exclude.txt"
rm -rf "$SRM_userData_configDir/parsers/emudeck/"
@ -192,7 +297,8 @@ SRM_init(){
rm -rf "$HOME/temp_parser"
ln -s "$json_directory" "$HOME/temp_parser"
files=$(find "$HOME/temp_parser/emudeck" -name "*.json" | sort)
jq -s '.' $files > "$output_file"
customfiles=$(find "$SRM_userData_configDir/parsers/custom/" -name "*.json" | sort)
jq -s '.' $files $customfiles > "$output_file"
rm -rf "$HOME/temp_parser"
sleep 1
@ -207,7 +313,6 @@ SRM_init(){
sed -i "s|/run/media/mmcblk0p1/Emulation/roms|${romsPath}|g" "$SRM_userData_configDir/userSettings.json"
sed -i "s|/run/media/mmcblk0p1/Emulation/tools|${toolsPath}|g" "$SRM_userData_configDir/userSettings.json"
echo -e "true"
}
@ -233,15 +338,15 @@ SRM_resetConfig(){
SRM_IsInstalled(){
if [ -f "$SRM_toolPath" ]; then
echo "true"
echo "true"
else
echo "false"
echo "false"
fi
}
SRM_resetLaunchers(){
rsync -av --existing $HOME/.config/EmuDeck/backend/tools/launchers/ $toolsPath/launchers/
for entry in $toolsPath/launchers/*.sh
do
chmod +x "$entry"
chmod +x "$entry"
done
}

View file

@ -59,7 +59,7 @@ source "$EMUDECKGIT"/functions/EmuScripts/emuDeckCemuNative.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckPCSX2.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRPCS3.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckCitra.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckDolphin.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckDolphin.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckPrimehack.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRetroArch.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRyujinx.sh
@ -88,9 +88,5 @@ source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayGreenlight.sh
#source "$EMUDECKGIT"/EmuScripts/emuDeckMAMEProton.sh
# Darwin ovewrites
if [ $system == "darwin" ]; then
source "$EMUDECKGIT/darwin/functions/helperFunctions.sh"
source "$EMUDECKGIT/darwin/functions/overrides.sh"
fi
source "$EMUDECKGIT/darwin/functions/helperFunctions.sh"
source "$EMUDECKGIT/darwin/functions/overrides.sh"

View file

@ -1,4 +1,8 @@
#!/bin/bash
appleChip=$(uname -m)
if [ appleChip != "Linux" ]; then
PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
fi
if [[ "$EMUDECKGIT" == "" ]]; then
EMUDECKGIT="$HOME/.config/EmuDeck/backend"
@ -40,6 +44,7 @@ source "$EMUDECKGIT"/functions/updateEmuFP.sh
source "$EMUDECKGIT"/functions/createFolders.sh
source "$EMUDECKGIT"/functions/runSRM.sh
source "$EMUDECKGIT"/functions/appImageInit.sh
source "$EMUDECKGIT"/functions/autofix.sh
#toolScripts
source "$EMUDECKGIT"/functions/ToolScripts/emuDeckESDE.sh
@ -87,6 +92,8 @@ source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayChiaki.sh
source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayParsec.sh
source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayMoonlight.sh
source "$EMUDECKGIT"/functions/RemotePlayClientScripts/remotePlayGreenlight.sh
source "$EMUDECKGIT"/functions/cloudSyncHealth.sh
#Soon
#source "$EMUDECKGIT"/EmuScripts/emuDeckRedream.sh

View file

@ -1,6 +1,28 @@
#!/bin/bash
appImageInit() {
mkdir -p "$HOME/emudeck/logs"
if [ "$system" == "chimeraos" ]; then
ESDE_chimeraOS
mkdir -p $HOME/Applications
downloads_dir="$HOME/Downloads"
destination_dir="$HOME/Applications"
file_name="EmuDeck"
find "$downloads_dir" -type f -name "*$file_name*.AppImage" -exec mv {} "$destination_dir/$file_name.AppImage" \;
fi
#Autofixes, put here functions that make under the hood fixes.
autofix_duplicateESDE
#autofix_raSavesFolders
autofix_lnk
SRM_migration
ESDE_migration
SRM_createDesktopShortcut
ESDE_createDesktopShortcut
# Init functions
mkdir -p "$HOME/emudeck/logs"
}

64
functions/autofix.sh Normal file
View file

@ -0,0 +1,64 @@
#!/bin/bash
zenityInfo(){
local title=$1
local text=$2
text="`printf " <b>$title</b>\n\n$text"`"
zenity --info \
--title="EmuDeck AutoFix" \
--width="450" \
--text="${text}" 2>/dev/null
}
autofix_duplicateESDE(){
if [ -f "$toolsPath/launchers/esde/emulationstation-de.sh" ]; then
rm -rf "$toolsPath/launchers/esde/emulationstation-de.sh"
zenityInfo "EmulationStation DE duplicated launcher fixed" "We found you had an old EmulationStation DE launcher, we've deleted it so it wont appear as a duplicate on Steam Rom Manager. Delete both EmulationStation DE entries from Steam and parse back EmulationStation DE"
fi
}
autofix_lnk(){
found_files="false"
find "$savesPath" -type f -name "*.lnk" | while read -r entry
do
rm -rf "$entry"
echo "found and deleted: $entry"
found_files="true"
done
if [ $found_files = "true" ]; then
zenityInfo ".lnk files found in your Emulation/saves subfolders" "We've deleted those files, please do the same in your cloud provider to avoid getting downloaded again"
fi
}
function autofix_raSavesFolders() {
cloud_sync_createBackup "retroarch"
sourceFolder="$savesPath/retroarch/states"
subfolders=$(find -L "$sourceFolder" -mindepth 1 -type d)
if [[ $(echo "$subfolders" | wc -l) -gt 0 ]]; then
zenityInfo "Old RetroArch saves folders found" "EmuDeck will create a backup of them in Emulation/saves-backup just in case, after that it will reorganize and delete the old subfolder. Please manually delete all subfolders you might have in your cloud provider (EmuDeck/saves/retroarch/saves/* and EmuDeck/saves/retroarch/states/*)"
for subfolder in $subfolders; do
rsync --progress -r -u "$subfolder"/* "$sourceFolder"
rm -rf "$subfolder"
done
fi
sourceFolder="$savesPath/retroarch/saves"
subfolders=$(find -L "$sourceFolder" -mindepth 1 -type d)
if [[ $(echo "$subfolders" | wc -l) -gt 0 ]]; then
for subfolder in $subfolders; do
echo $subfolder
rsync --progress -r -u "$subfolder"/* "$sourceFolder"
rm -rf "$subfolder"
done
fi
RetroArch_setConfigOverride "sort_savefiles_by_content_enable = " "false" "$RetroArch_configFile"
RetroArch_setConfigOverride "sort_savefiles_enable" "false = " "$RetroArch_configFile"
RetroArch_setConfigOverride "sort_savestates_by_content_enable = " "false" "$RetroArch_configFile"
RetroArch_setConfigOverride "sort_savestates_enable = " "false" "$RetroArch_configFile"
RetroArch_setConfigOverride "sort_screenshots_by_content_enable =" "false" "$RetroArch_configFile"
}

View file

@ -0,0 +1,112 @@
#!/bin/bash
NONE='\033[00m'
RED='\033[01;31m'
GREEN='\033[01;32m'
YELLOW='\033[01;33m'
CYAN='\033[01;36m'
cloud_sync_upload_test(){
local emuName=$1
if [ ! -d $savesPath/$emuName ];then
return 2
fi
echo "test" > "$savesPath/$emuName/.temp"
filePath="$savesPath/$emuName/.temp"
"$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$filePath" "$cloud_sync_provider":Emudeck/saves/$emuName/.temp && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1
}
cloud_sync_dowload_test(){
local emuName=$1
if [ ! -d $savesPath/$emuName ];then
return 2
fi
echo "test" > "$savesPath/$emuName/.temp"
filePath="$savesPath/$emuName/.temp"
"$cloud_sync_bin" -q copyto --fast-list --checkers=50 --transfers=50 --low-level-retries 1 --retries 1 "$cloud_sync_provider":Emudeck/saves/$emuName/.temp "$filePath" && rm -rf "$savesPath/$emuName/.temp" && return 0 || return 1
}
cloudSyncHealth(){
echo -e "<span class=\"cyan\">CloudSync Status Report</span>"
echo ""
miArray=("Cemu" "citra" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" )
upload="true"
download="true"
launchers="true"
echo -e "<span class=\"yellow\">Checking launchers</span>"
for entry in "$toolsPath/launchers/"*.sh
do
if [ -f "$entry" ]; then
if grep -q "cloud_sync_startService" $entry; then
echo -e "$entry: <span class=\"green\">Success</span>"
else
echo -e "$entry: <span class=\"red\">Failure</span>"
launchers="false"
fi
fi
done
if grep -q "cloud_sync_startService" "$toolsPath/launchers/esde/emulationstationde.sh"; then
echo -e "$toolsPath/launchers/esde/emulationstationde.sh: <span class=\"green\">Success</span>"
else
echo -e "$toolsPath/launchers/esde/emulationstationde.sh: <span class=\"red\">Failure</span>"
fi
found_files="false"
echo -e "<span class=\"yellow\">Checking for Windows old .lnk files</span>"
find "$savesPath" -type f -name "*.lnk" | while read -r entry
do
rm -rf $entry
echo "found and deleted: $entry"
found_files="true"
done
if [ "$found_files" = "false" ]; then
echo "No files with the '.lnk' extension found."
fi
echo -e ""
echo -e "<span class=\"yellow\">Testing uploading</span>"
# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento
for elemento in "${miArray[@]}"; do
echo -ne "Testing $elemento upload..."
if cloud_sync_upload_test $elemento;then
echo -e "<span class=\"green\">Success</span>"
elif [ $? = 2 ]; then
echo -e "<span class=\"yellow\">Save folder not found</span>"
else
echo -e "<span class=\"red\">Failure</span>"
upload="false"
fi
done
echo ""
echo -e "<span class=\"yellow\">Testing downloading</span>"
# Recorrer el array y ejecutar la función cloud_sync_upload_test para cada elemento
for elemento in "${miArray[@]}"; do
echo -ne "Testing $elemento download..."
if cloud_sync_dowload_test $elemento;then
echo -e "<span class=\"green\">Success</span>"
elif [ $? = 2 ]; then
echo -e "<span class=\"yellow\">Save folder not found</span>"
else
echo -e "<span class=\"red\">Failure</span>"
download="false"
fi
done
echo -e ""
echo -e "<span class=\"cyan\">Recommendations</span>"
if [ $download = "true" ] && [ $upload = "true" ] && [ $launchers = "true" ]; then
echo -e "<span class=\"yellow\">Everything seems to be in proper order, at least on Linux</span>"
else
echo -e "<span class=\"yellow\">Open EmuDeck, go to Manage Emulators and reset SteamRomManager Configuration. Then test some games and if it keeps failing open Steam Rom Manager and parse all your games again to get the proper launchers</span>"
fi
}

View file

@ -718,3 +718,18 @@ isFpInstalled(){
check_internet_connection(){
ping -q -c 1 -W 1 8.8.8.8 > /dev/null 2>&1 && echo true || echo false
}
zipLogs() {
logsFolder="$HOME/emudeck/logs"
settingsFile="$HOME/emudeck/settings.sh"
zipOutput="$HOME/Desktop/emudeck_logs.zip"
# Comprime los archivos en un archivo zip
zip -rj "$zipOutput" "$logsFolder" "$settingsFile"
if [ $? -eq 0 ]; then
echo "true"
else
echo "false"
fi
}

View file

@ -29,37 +29,34 @@ installToolAI(){
return 1
fi
shName=$(echo "$name" | awk '{print tolower($0)}')
if [ $shName = 'emulationstation-de' ]; then
shName='emulationstationde'
rm -rf "$toolsPath/launchers/esde"
fi
# shName=$(echo "$name" | awk '{print tolower($0)}')
find "${toolsPath}/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \
while read -r f
do
echo "deleting $f"
rm -f "$f"
done
find "${EMUDECKGIT}/tools/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \
while read -r l
do
echo "deploying $l"
launcherFileName=$(basename "$l")
folderName=$(dirname "$l" | sed 's!.*/!!')
if [ $folderName == "launchers" ]; then
folderName=""
fi
chmod +x "$l"
mkdir -p "${toolsPath}/launchers/$folderName"
cp -v -r "$l" "${toolsPath}/launchers/$folderName/$launcherFileName"
chmod +x "${toolsPath}/launchers/$folderName/$launcherFileName"
name=${name//-/}
name=${name// /}
createDesktopShortcut "$HOME/.local/share/applications/$name.desktop" \
"$name" \
"${toolsPath}/launchers/$folderName/$launcherFileName" \
"false"
done
# TODO: Restore this funcionality
# find "${toolsPath}/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \
# while read -r f
# do
# echo "deleting $f"
# rm -f "$f"
# done
#
# find "${EMUDECKGIT}/tools/launchers/" -maxdepth 2 -type f -iname "$shName.sh" -o -type f -iname "$shName-emu.sh" | \
# while read -r l
# do
# echo "deploying $l"
# launcherFileName=$(basename "$l")
# folderName=$(dirname "$l" | sed 's!.*/!!')
# if [ $folderName == "launchers" ]; then
# folderName=""
# fi
# chmod +x "$l"
# mkdir -p "${toolsPath}/launchers/$folderName"
# cp -v -r "$l" "${toolsPath}/launchers/$folderName/$launcherFileName"
# chmod +x "${toolsPath}/launchers/$folderName/$launcherFileName"
# name=${name//-/}
# name=${name// /}
# createDesktopShortcut "$HOME/.local/share/applications/$name.desktop" \
# "$name" \
# "${toolsPath}/launchers/$folderName/$launcherFileName" \
# "false"
# done
}

View file

@ -1,12 +1,17 @@
#!/bin/bash
setMSG(){
setMSG() {
if [ -z $progressBar ]; then
progressBar=0
fi
progressBar=$((progressBar + 5))
#We prevent the zenity to close if we have too much MSG, the classic eternal 99%
if [ $progressBar == 95 ]; then
# We prevent the zenity to close if we have too much MSG, the classic eternal 99%
if [ $progressBar -eq 95 ]; then
progressBar=90
fi
echo "$progressBar" > $HOME/.config/EmuDeck/msg.log
fi
echo "$progressBar" > $HOME/.config/EmuDeck/msg.log
echo "# $1" >> $HOME/.config/EmuDeck/msg.log
echo "$1"
sleep 0.5
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -40,7 +40,7 @@ function setSetting() {
}
setDefaults(){
setSetting expert false
setSetting system SteamOS
setSetting doSetupRA true
@ -133,12 +133,12 @@ setDefaults(){
setSetting emuGBA multiemulator
setSetting emuMAME multiemulator
setSetting xeniaResolution 720P
setSetting emuNDS melonDS
setSetting emuNDS melonds
setSetting emuN64 ra
setSetting emuMULTI ra
setSetting emuPSP ppsspp
setSetting emuPSX duckstation
setSetting emuSCUMMVM scummvm
setSetting emuSCUMMVM scummvm
}
@ -165,7 +165,7 @@ setDefaults
# Welcome, Quick or custom?
source "$EMUDECKGIT"/whiptail/WelcomePage.sh
if [ $expert == 'false' ]; then
if [ $expert == 'false' ]; then
cp "$EMUDECKGIT/settings.sh" "$emuDecksettingsFile"
fi
@ -178,45 +178,45 @@ source "$EMUDECKGIT"/whiptail/RomStoragePage.sh
## Custom mode Questions
#
if [ $expert == 'true' ]; then
# Emulators
if [ $expert == 'true' ]; then
# Emulators
source $EMUDECKGIT/whiptail/EmulatorSelectorPage.sh
# if [ $second == true ]; then
# # Overwrite configuration?
# # Overwrite configuration?
# source "$EMUDECKGIT"/whiptail/EmulatorConfigurationPage.sh
# fi
# Retroachievements
#source "$EMUDECKGIT"/whiptail/RAAchievementsPage.sh
# Bezels
source "$EMUDECKGIT"/whiptail/RABezelsPage.sh
# if [ $deviceAR != 43 ]; then
# if [ $deviceAR != 43 ]; then
# # AR Sega Classic
source "$EMUDECKGIT"/whiptail/AspectRatioSegaPage.sh
#
#
# # AR SNES + NES
source "$EMUDECKGIT"/whiptail/AspectRatioSNESPage.sh
#
#
# # AR 3D Classics
# source "$EMUDECKGIT"/whiptail/AspectRatio3DPage.sh
#
#
# # AR Gamecube
# source "$EMUDECKGIT"/whiptail/AspectRatioDolphinPage.sh
# fi
# fi
# LCD Shader Handhelds
#source "$EMUDECKGIT"/whiptail/ShadersHandheldsPage.sh
# CRT Shader Handhelds
#source "$EMUDECKGIT"/whiptail/Shaders2DPage.sh
# Frontend
source "$EMUDECKGIT"/whiptail/PegasusInstallPage.sh
# Pegasus Theme
if [ $doInstallPegasus == true ]; then
source "$EMUDECKGIT"/whiptail/PegasusThemePage.sh

View file

@ -432,6 +432,16 @@ if [ "$doSetupRA" == "true" ]; then
fi
fi
if [ "$system" == "chimeraos" ]; then
mkdir -p $HOME/Applications
downloads_dir="$HOME/Downloads"
destination_dir="$HOME/Applications"
file_name="EmuDeck"
find "$downloads_dir" -type f -name "*$file_name*.AppImage" -exec mv {} "$destination_dir/$file_name.AppImage" \;
fi
createDesktopIcons

View file

@ -293,4 +293,4 @@ else
zenity --error \
--text="Nothing available to be updated." 2>/dev/null
fi
fi

View file

@ -1,5 +1,5 @@
#!/bin/bash
source $HOME/.config/EmuDeck/backend/functions/all.sh
cloud_sync_downloadEmuAll && cloud_sync_startService
$toolsPath/EmulationStation-DE.AppImage "${@}"
"$toolsPath/EmulationStation-DE.AppImage" "${@}"
rm -rf "$savesPath/.gaming"

View file

@ -1,6 +1,6 @@
#!/bin/sh
source $HOME/.config/EmuDeck/backend/functions/all.sh
cloud_sync_downloadEmu pcsx2
cloud_sync_downloadEmu pcsx2 && cloud_sync_startService
emuName="pcsx2-Qt" #parameterize me
emufolder="$HOME/Applications" # has to be applications for ES-DE to find it

View file

@ -5,4 +5,4 @@ SRM_toolPath="${toolsPath}/Steam ROM Manager.AppImage"
zenity --question \
--width 450 \
--title "Close Steam/Steam Input?" \
--text "Exit Steam to launch Steam ROM Manager? Desktop controls will revert to Lizard Mode until Steam is reopened. Use L2/R2 to click and the trackpad to move the cursor." && (kill -15 $(pidof steam) & $SRM_toolPath)
--text "Exit Steam to launch Steam ROM Manager? Desktop controls will revert to Lizard Mode until Steam is reopened. Use L2/R2 to click and the trackpad to move the cursor." && (kill -15 $(pidof steam) & "$SRM_toolPath")

View file

@ -1,5 +1,5 @@
{
"ra": { "id": "ra", "code": "RetroArch", "version": 1 },
"ra": { "id": "ra", "code": "RetroArch", "version": 2 },
"dolphin": { "id": "dolphin", "code": "Dolphin", "version": 1 },
"primehack": { "id": "primehack", "code": "Primehack", "version": 0 },
"ppsspp": { "id": "ppsspp", "code": "PPSSPP", "version": 0 },
@ -12,7 +12,7 @@
"ryujinx": { "id": "ryujinx", "code": "Ryujinx", "version": 2 },
"xemu": { "id": "xemu", "code": "Xemu", "version": 0 },
"cemu": { "id": "cemu", "code": "Cemu", "version": 0 },
"srm": { "id": "srm", "code": "SRM", "version": 5 },
"srm": { "id": "srm", "code": "SRM", "version": 6 },
"rmg": { "id": "rmg", "code": "RMG", "version": 0 },
"esde": { "id": "esde", "code": "ESDE", "version": 1 },
"mame": { "id": "mame", "code": "MAME", "version": 0 },