mirror of
https://github.com/dragoonDorise/EmuDeck.git
synced 2024-05-10 00:44:06 -04:00
Update from Early Early + RPCS3 + Citra PR
This commit is contained in:
parent
a640ad77a7
commit
9395fce8a9
91
README.md
91
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/)
|
||||
<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
129
cloudSyncHealth.sh
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"specifiedAccounts": ""
|
||||
},
|
||||
"parserInputs": {
|
||||
"glob": "**/${title}@(.sh)"
|
||||
"glob": "${title}@(.sh)"
|
||||
},
|
||||
"titleFromVariable": {
|
||||
"limitToGroups": "",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -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": "",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"localHeroImages": "",
|
||||
"localLogoImages": "",
|
||||
"localIcons": "",
|
||||
"disabled": false,
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": "",
|
||||
"skipWithMissingDataDir": true,
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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/"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
64
functions/autofix.sh
Normal 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"
|
||||
}
|
112
functions/cloudSyncHealth.sh
Normal file
112
functions/cloudSyncHealth.sh
Normal 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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
BIN
icons/EmulationStationDE.png
Normal file
BIN
icons/EmulationStationDE.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -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
|
||||
|
|
10
setup.sh
10
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
|
||||
|
||||
|
|
|
@ -293,4 +293,4 @@ else
|
|||
|
||||
zenity --error \
|
||||
--text="Nothing available to be updated." 2>/dev/null
|
||||
fi
|
||||
fi
|
|
@ -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"
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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 },
|
||||
|
|
Loading…
Reference in a new issue