EmuDeck/tools/binupdate/binupdate.sh
Griffin d5e8a36b40
BigPEmu Jaguar Emulator (#775)
* test proton launch for bigpemu

* continue working on config

* continue with configs

* update proton launch with new proton versions

* update from old CEMU stuff to be specific to BigPEmu

* begin saves and storage config

* testing on deck

* typo

* change proton to 7

only worked for a tester on 7 will figure out updating later.

* add ESDE config

* update SRM from new update

* idk why the rebase didnt delete the file

* add jaguarcd to parser

* add jaguarcd to esde

* update readme

* add to all functions

* typo and remove vblank

* consistency with casing

* typo

* update order in esde

* typo

* update esde config script

* move esde xml script to config file

* unique command letters

* lack of sleep typos

* woooo typos

* fix xml

* typo

* convert bigpemu script to curl

* nyi set folder

* fix after pulling from upstream

* additional spacing fixes

* fix wget and add if statements

* missing a space

* add review changes

* local data

* local data

* BigPEmu Tidying
* Added hotkeys
* Added bigpemu.sh to Applications folder
* Cleaned up emuDeckBigPEmu.sh
* Added icon
* Added BigPEmu to binupdate

* Add missing fi in binupdate

---------

Co-authored-by: Dragoon Dorise <rodrigosedano@me.com>
Co-authored-by: rawdatafeel <108900299+rawdatafeel@users.noreply.github.com>
2024-02-04 23:55:20 +01:00

310 lines
10 KiB
Bash

#!/bin/bash
#while this is in testing, i'm copying in the functions. once we leave the original repo in place and don't delete it, i'd like to use the functions we already made.
# shellcheck source=functions/all.sh
. "$HOME/.config/EmuDeck/backend/functions/all.sh"
if [ "$?" == "1" ]; then
echo "functions could not be loaded."
zenity --error \
--text="EmuDeck Functions could not be loaded. Please re-run Emudeck install." 2>/dev/null
exit
fi
updateCemu() {
local showProgress="$1"
local releasesStr=$(curl -sL https://cemu.info | awk 'BEGIN{
RS="</a>"
IGNORECASE=1
}
{
for(o=1;o<=NF;o++){
if ( $o ~ /href/){
gsub(/.*href=\042/,"",$o)
gsub(/\042.*/,"",$o)
print $(o)
}
}
}' | grep releases | grep -v github)
mapfile -t releases <<<"$releasesStr"
local releaseTable=()
for release in "${releases[@]}"; do
releaseTable+=(false "$release")
echo "release: $release"
done
releaseTable+=(false "https://cemu.info/releases/cemu_1.27.1.zip")
releaseTable+=(false "$(getReleaseURLGH "cemu-project/Cemu" "windows-x64.zip")")
local releaseChoice=""
if [ ${#releaseTable[@]} != 0 ]; then
releaseChoice=$(
zenity --list \
--title="EmuDeck" \
--height=500 \
--width=800 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="Choose your Cemu (windows) version. 2.0 is now recommended" \
--radiolist \
--column="Select" \
--column="Release" \
"${releaseTable[@]}" 2>/dev/null
)
fi
if [ -n "$releaseChoice" ]; then
if safeDownload "cemu" "$releaseChoice" "$romsPath/wiiu/cemu.zip" "$showProgress"; then
mkdir -p "$romsPath/wiiu/tmp"
unzip -o "$romsPath/wiiu/cemu.zip" -d "$romsPath/wiiu/tmp"
mv "$romsPath"/wiiu/tmp/[Cc]emu_*/ "$romsPath/wiiu/tmp/cemu/" #don't quote the *
rsync -avzh "$romsPath/wiiu/tmp/cemu/" "$romsPath/wiiu/"
rm -rf "$romsPath/wiiu/tmp"
rm -f "$romsPath/wiiu/cemu.zip"
return 0
fi
fi
return 1
}
function runBinDownloads {
local binsToDL=$1
progresspct=0
numBins=$(awk -F'|' '{print NF}' <<<"$binsToDL")
pct=$((100 / (numBins + 1)))
echo "User selected: $binsToDL"
if [[ "$binsToDL" == *"esde"* ]]; then
echo "0"
echo "# Updating EmulationStation-DE"
if ESDE_install "true" 2>&1; then
messages+=("EmulationStation-DE Updated Successfully")
else
messages+=("There was a problem updating EmulationStation-DE")
fi
fi
if [[ "$binsToDL" == *"srm"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating SteamRomManager"
if SRM_install "true" 2>&1; then
messages+=("SteamRomManager Updated Successfully")
else
messages+=("There was a problem updating SteamRomManager")
fi
fi
if [[ "$binsToDL" == *"mgba"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating mGBA"
if mGBA_install "true" 2>&1; then
messages+=("mGBA Updated Successfully")
else
messages+=("There was a problem updating mGBA")
fi
fi
if [[ "$binsToDL" == *"yuzu (early access)"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Yuzu Early Access"
if YuzuEA_install "true" 2>&1; then
messages+=("Yuzu Early Access Updated Successfully")
else
messages+=("There was a problem updating Yuzu Early Access")
fi
fi
if [[ "$binsToDL" == *"yuzu (mainline)"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Yuzu"
if Yuzu_install "true" 2>&1; then
messages+=("Yuzu Updated Successfully")
else
messages+=("There was a problem updating Yuzu")
fi
fi
if [[ "$binsToDL" == *"pcsx2-qt"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating PCSX2-QT"
if PCSX2QT_install "true" 2>&1; then
messages+=("PCSX2-QT Updated Successfully")
else
messages+=("There was a problem updating PCSX2-QT")
fi
fi
if [[ "$binsToDL" == *"ryujinx"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Ryujinx"
if Ryujinx_install "true" 2>&1; then
messages+=("Ryujinx Updated Successfully")
else
messages+=("There was a problem updating Ryujinx")
fi
fi
if [[ "$binsToDL" == *"cemu (win/proton)"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Cemu (win/proton)"
if updateCemu "true" 2>&1; then
messages+=("Cemu (win/proton) Updated Successfully")
else
messages+=("There was a problem updating Cemu (win/proton")
fi
fi
if [[ "$binsToDL" == *"cemu (native)"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Cemu (Native)"
if CemuNative_install "true" 2>&1; then
messages+=("Cemu (Native) Updated Successfully")
else
messages+=("There was a problem updating Cemu (Native)")
fi
fi
if [[ "$binsToDL" == *"vita3k"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Vita3K"
if Vita3K_install "true" 2>&1; then
messages+=("Vita3K Updated Successfully")
else
messages+=("There was a problem updating Vita3K")
fi
fi
if [[ "$binsToDL" == *"xenia"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Xenia-Canary"
if Xenia_install "canary" "true" 2>&1; then
messages+=("Xenia Updated Successfully")
else
messages+=("There was a problem updating Xenia")
fi
fi
if [[ "$binsToDL" == *"rpcs3"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating RPCS3"
if RPCS3_install "true" 2>&1; then
messages+=("RPCS3 Updated Successfully")
else
messages+=("There was a problem updating RPCS3")
fi
fi
if [[ "$binsToDL" == *"BigPEmu (Proton)"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating BigPEmu (Proton)"
if BigPEmu_install "true" 2>&1; then
messages+=("BigPEmu (Proton) Updated Successfully")
else
messages+=("There was a problem updating BigPEmu (Proton)")
fi
fi
echo "100"
echo "# Complete!"
}
#begin script
#source the all.sh, these should be pulled correctly!
scriptPath="${toolsPath}/binupdate"
#initialize log
TIMESTAMP=$(date "+%Y%m%d_%H%M%S")
LOGFILE="${scriptPath}/binupdate-$TIMESTAMP.log"
exec > >(tee "${LOGFILE}") 2>&1
binTable=()
if [ "$(ESDE_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "EmulationStation-DE" "esde")
fi
if [ "$(SRM_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Steam ROM Manager" "srm")
fi
if [ "$(mGBA_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "GameBoy / Color / Advance Emu" "mgba")
fi
if [ "$(Yuzu_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Nintendo Switch Emu" "yuzu (mainline)")
fi
if [ "$(YuzuEA_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ] && [ -e "$YuzuEA_tokenFile" ]; then
binTable+=(TRUE "Nintendo Switch Emu" "yuzu (early access)")
fi
if [ "$(Ryujinx_IsInstalled ""$emuDeckEmuTypeBinary"")" == "true" ]; then
binTable+=(TRUE "Nintendo Switch Emu" "ryujinx")
fi
if [ "$(PCSX2QT_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Sony PlayStation 2 Emu" "pcsx2-qt")
fi
if [ "$(Cemu_IsInstalled ""$emuDeckEmuTypeWindows"")" == "true" ]; then
binTable+=(TRUE "Nintendo WiiU Emu (Proton)" "cemu (win/proton)")
fi
if [ "$(CemuNative_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Nintendo WiiU Emu (Native)" "cemu (native)")
fi
if [ "$(Vita3K_IsInstalled ""$emuDeckEmuTypeBinary"")" == "true" ]; then
binTable+=(TRUE "Sony PlayStation Vita Emu" "vita3k")
fi
if [ "$(Xenia_IsInstalled ""$emuDeckEmuTypeWindows"")" == "true" ]; then
binTable+=(TRUE "Xbox 360 Emu" "xenia")
fi
if [ "$(RPCS3_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "PlayStation 3 Emu" "rpcs3")
fi
if [ "$(BigPEmu_IsInstalled ""$emuDeckEmuTypeWindows"")" == "true" ]; then
binTable+=(TRUE "Atari Jaguar Emu" "BigPEmu (Proton)")
fi
if [ "${#binTable[@]}" -gt 0 ]; then
#Binary selector
text="$(printf "What tools do you want to get the latest version of?\n This tool will simply overwrite what you have with the newest available.")"
binsToDL=$(
zenity --list \
--title="EmuDeck" \
--height=500 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--checklist \
--column="Select" \
--column="System" \
--column="Name" \
--print-column=3 \
"${binTable[@]}" 2>/dev/null
)
ans=$?
messages=()
if [ $ans -eq 0 ]; then
if [ -n "$binsToDL" ]; then
runBinDownloads "$binsToDL" | zenity --progress --pulsate --title="Updating!" --width=600 --height=250 2>/dev/null
if [ "$?" = -1 ]; then
zenity --error \
--text="Update canceled." 2>/dev/null
fi
if [[ ${#messages[@]} -gt 0 ]]; then
zenity --list \
--title="Update Status" \
--text="" \
--width=400 \
--height=500 \
--column="Messages" \
"${messages[@]}" 2>/dev/null
fi
fi
fi
else
zenity --error \
--text="Nothing available to be updated." 2>/dev/null
fi