diff --git a/README.md b/README.md
index 8f471e4e..e466599f 100644
--- a/README.md
+++ b/README.md
@@ -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/)
-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
-
-
-
-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
-
-
-
-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`
diff --git a/chimeraOS/configs/emulationstation/es_find_rules.xml b/chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml
similarity index 100%
rename from chimeraOS/configs/emulationstation/es_find_rules.xml
rename to chimeraOS/configs/emulationstation/custom_systems/es_find_rules.xml
diff --git a/cloudSyncHealth.sh b/cloudSyncHealth.sh
new file mode 100644
index 00000000..a4e90afb
--- /dev/null
+++ b/cloudSyncHealth.sh
@@ -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
\ No newline at end of file
diff --git a/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini b/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini
index b825dd67..633a38d3 100644
--- a/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini
+++ b/configs/net.kuribo64.melonDS/config/melonDS/melonDS.ini
@@ -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
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json b/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json
index 54ac725e..1860cbb2 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/1_emulators.json
@@ -21,7 +21,7 @@
"specifiedAccounts": ""
},
"parserInputs": {
- "glob": "**/${title}@(.sh)"
+ "glob": "${title}@(.sh)"
},
"titleFromVariable": {
"limitToGroups": "",
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json b/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json
index cb71af66..58ec1403 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/2_cloud_services.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json b/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json
index 74fa333d..64cd6802 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/3_remote_play_clients.json
@@ -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": "",
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json b/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json
index 56d898d2..584fc1e2 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/amstrad_cpc-ra-cap32.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json
index a1004a5f..2deef661 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/arcade-mame.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json b/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json
index 412b42a7..5f6427a5 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/arcade_naomi-ra-flycast.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json
index a8e9c743..b7c8bd3c 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_16-ra-vice_xplus4.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json
index a4e0a949..40d5261a 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/commodore_64-ra-vice_x64.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json b/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json
index 5bd4efad..87530ea8 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/microsoft_xbox_360-xenia-xbla.json
@@ -22,6 +22,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json
index 395700fa..79938cbd 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16-ra-beetle_pce.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json
index f229ad6c..7106d904 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/nec_pc_engine_turbografx_16_cd-ra-beetle_pce.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json b/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json
index b818d583..182ded3f 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/nintendo_primehack.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json
index 394f54a8..399ca14c 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/philips_cd_i-mame.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json b/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json
index 82918a1c..50d1636c 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/scumm_scummvm.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json
index 950883f7..2067b248 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/snk_neo_geo_cd-mame.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json
index 06070f13..125bb36e 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps2-pcsx2.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json
index 022a72ce..e50ff7b8 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/sony_ps3-rpcs3-pkg.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json
index 383d83e5..7059a6be 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/tiger_electronics_gamecom-mame.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json b/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json
index 1c4e14ef..d860b6bf 100644
--- a/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json
+++ b/configs/steam-rom-manager/userData/parsers/emudeck/vtech_vsmile-mame.json
@@ -21,6 +21,7 @@
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
+ "disabled": false,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
diff --git a/functions/EmuScripts/emuDeckCemuNative.sh b/functions/EmuScripts/emuDeckCemuNative.sh
index 155c1b85..58fb7455 100644
--- a/functions/EmuScripts/emuDeckCemuNative.sh
+++ b/functions/EmuScripts/emuDeckCemuNative.sh
@@ -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"
diff --git a/functions/EmuScripts/emuDeckCitra.sh b/functions/EmuScripts/emuDeckCitra.sh
index f28d3c62..55a227f8 100755
--- a/functions/EmuScripts/emuDeckCitra.sh
+++ b/functions/EmuScripts/emuDeckCitra.sh
@@ -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/"
-}
+}
\ No newline at end of file
diff --git a/functions/EmuScripts/emuDeckRPCS3.sh b/functions/EmuScripts/emuDeckRPCS3.sh
index 5fd70dc3..5b98b558 100644
--- a/functions/EmuScripts/emuDeckRPCS3.sh
+++ b/functions/EmuScripts/emuDeckRPCS3.sh
@@ -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"
-}
+}
\ No newline at end of file
diff --git a/functions/EmuScripts/emuDeckRetroArch.sh b/functions/EmuScripts/emuDeckRetroArch.sh
index 2f76b721..a71fb710 100644
--- a/functions/EmuScripts/emuDeckRetroArch.sh
+++ b/functions/EmuScripts/emuDeckRetroArch.sh
@@ -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"
}
diff --git a/functions/EmuScripts/emuDeckYuzu.sh b/functions/EmuScripts/emuDeckYuzu.sh
index 163cc1b4..078e0df9 100644
--- a/functions/EmuScripts/emuDeckYuzu.sh
+++ b/functions/EmuScripts/emuDeckYuzu.sh
@@ -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"
}
diff --git a/functions/ToolScripts/emuDeckCloudSync.sh b/functions/ToolScripts/emuDeckCloudSync.sh
index c15a83cd..6fd436c6 100644
--- a/functions/ToolScripts/emuDeckCloudSync.sh
+++ b/functions/ToolScripts/emuDeckCloudSync.sh
@@ -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
}
diff --git a/functions/ToolScripts/emuDeckESDE.sh b/functions/ToolScripts/emuDeckESDE.sh
index 06650e24..c0987b1b 100644
--- a/functions/ToolScripts/emuDeckESDE.sh
+++ b/functions/ToolScripts/emuDeckESDE.sh
@@ -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/" "$es_settingsFile"
}
+
#ConfigurePaths
ESDE_setEmulationFolder(){
#update cemu custom system launcher to correct path by just replacing the line, if it exists.
diff --git a/functions/ToolScripts/emuDeckSRM.sh b/functions/ToolScripts/emuDeckSRM.sh
index 43ec4d0a..a186741a 100644
--- a/functions/ToolScripts/emuDeckSRM.sh
+++ b/functions/ToolScripts/emuDeckSRM.sh
@@ -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
}
diff --git a/functions/all-darwin.sh b/functions/all-darwin.sh
index d66a1e97..5098e913 100644
--- a/functions/all-darwin.sh
+++ b/functions/all-darwin.sh
@@ -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
\ No newline at end of file
+source "$EMUDECKGIT/darwin/functions/helperFunctions.sh"
+source "$EMUDECKGIT/darwin/functions/overrides.sh"
diff --git a/functions/all.sh b/functions/all.sh
index 53d525e6..b8f1cce9 100644
--- a/functions/all.sh
+++ b/functions/all.sh
@@ -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
diff --git a/functions/appImageInit.sh b/functions/appImageInit.sh
index 341432fe..bbeddb5f 100644
--- a/functions/appImageInit.sh
+++ b/functions/appImageInit.sh
@@ -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"
+
}
diff --git a/functions/autofix.sh b/functions/autofix.sh
new file mode 100644
index 00000000..eb9f3deb
--- /dev/null
+++ b/functions/autofix.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+zenityInfo(){
+ local title=$1
+ local text=$2
+ text="`printf " $title\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"
+}
\ No newline at end of file
diff --git a/functions/cloudSyncHealth.sh b/functions/cloudSyncHealth.sh
new file mode 100644
index 00000000..b601baad
--- /dev/null
+++ b/functions/cloudSyncHealth.sh
@@ -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 "CloudSync Status Report"
+ 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 "Checking launchers"
+ for entry in "$toolsPath/launchers/"*.sh
+ do
+ if [ -f "$entry" ]; then
+ if grep -q "cloud_sync_startService" $entry; then
+ echo -e "$entry: Success"
+ else
+ echo -e "$entry: Failure"
+ launchers="false"
+ fi
+ fi
+ done
+
+ if grep -q "cloud_sync_startService" "$toolsPath/launchers/esde/emulationstationde.sh"; then
+ echo -e "$toolsPath/launchers/esde/emulationstationde.sh: Success"
+ else
+ echo -e "$toolsPath/launchers/esde/emulationstationde.sh: Failure"
+ fi
+
+ found_files="false"
+ echo -e "Checking for Windows old .lnk files"
+ 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 "Testing uploading"
+ # 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 "Success"
+ elif [ $? = 2 ]; then
+ echo -e "Save folder not found"
+ else
+ echo -e "Failure"
+ upload="false"
+ fi
+ done
+ echo ""
+ echo -e "Testing downloading"
+ # 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 "Success"
+ elif [ $? = 2 ]; then
+ echo -e "Save folder not found"
+ else
+ echo -e "Failure"
+ download="false"
+ fi
+ done
+ echo -e ""
+ echo -e "Recommendations"
+
+
+
+ if [ $download = "true" ] && [ $upload = "true" ] && [ $launchers = "true" ]; then
+ echo -e "Everything seems to be in proper order, at least on Linux"
+ else
+ echo -e "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"
+ fi
+}
\ No newline at end of file
diff --git a/functions/helperFunctions.sh b/functions/helperFunctions.sh
index bce9cc99..6d0e0a46 100644
--- a/functions/helperFunctions.sh
+++ b/functions/helperFunctions.sh
@@ -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
+}
\ No newline at end of file
diff --git a/functions/installToolAI.sh b/functions/installToolAI.sh
index 098424a2..dd0cfd18 100644
--- a/functions/installToolAI.sh
+++ b/functions/installToolAI.sh
@@ -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
}
diff --git a/functions/setMSG.sh b/functions/setMSG.sh
index 252f6fe9..9304b6b8 100644
--- a/functions/setMSG.sh
+++ b/functions/setMSG.sh
@@ -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
-}
\ No newline at end of file
+}
diff --git a/icons/EmulationStationDE.png b/icons/EmulationStationDE.png
new file mode 100644
index 00000000..d82bc51c
Binary files /dev/null and b/icons/EmulationStationDE.png differ
diff --git a/installCLI.sh b/installCLI.sh
index 08f4d8e9..978a5a97 100755
--- a/installCLI.sh
+++ b/installCLI.sh
@@ -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
diff --git a/setup.sh b/setup.sh
index c2174c8d..3e772970 100644
--- a/setup.sh
+++ b/setup.sh
@@ -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
diff --git a/tools/binupdate/binupdate.sh b/tools/binupdate/binupdate.sh
index 6fc03808..1557167e 100644
--- a/tools/binupdate/binupdate.sh
+++ b/tools/binupdate/binupdate.sh
@@ -293,4 +293,4 @@ else
zenity --error \
--text="Nothing available to be updated." 2>/dev/null
-fi
+fi
\ No newline at end of file
diff --git a/tools/launchers/esde/emulationstationde.sh b/tools/launchers/esde/emulationstationde.sh
index fc8641b4..a87898d5 100755
--- a/tools/launchers/esde/emulationstationde.sh
+++ b/tools/launchers/esde/emulationstationde.sh
@@ -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"
\ No newline at end of file
diff --git a/tools/launchers/pcsx2-qt.sh b/tools/launchers/pcsx2-qt.sh
index 55f040c1..3d2ef6ff 100755
--- a/tools/launchers/pcsx2-qt.sh
+++ b/tools/launchers/pcsx2-qt.sh
@@ -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
diff --git a/tools/launchers/srm/steamrommanager.sh b/tools/launchers/srm/steamrommanager.sh
index 521665e1..3c8e094c 100755
--- a/tools/launchers/srm/steamrommanager.sh
+++ b/tools/launchers/srm/steamrommanager.sh
@@ -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")
diff --git a/versions.json b/versions.json
index 843944b3..b53d50b4 100644
--- a/versions.json
+++ b/versions.json
@@ -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 },