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>
This commit is contained in:
Griffin 2024-02-04 14:55:20 -08:00 committed by GitHub
parent 921bfddc0f
commit d5e8a36b40
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 2210 additions and 29 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
.DS_Store
.nova/Publishing/Deck.json
*.log

File diff suppressed because it is too large Load diff

View file

@ -10,4 +10,24 @@
<platform>wiiu</platform>
<theme>wiiu</theme>
</system>
<system>
<name>atarijaguar</name>
<fullname>Atari Jaguar</fullname>
<path>%ROMPATH%/atarijaguar</path>
<extension>.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="BigPEmu (Proton)">/usr/bin/bash /run/media/mmcblk0p1/Emulation/tools/launchers/bigpemu.sh %ROM%</command>
<command label="Virtual Jaguar">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/virtualjaguar_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atarijaguar jaguar -cart %ROM%</command>
<platform>atarijaguar</platform>
<theme>atarijaguar</theme>
</system>
<system>
<name>atarijaguarcd</name>
<fullname>Atari Jaguar CD</fullname>
<path>%ROMPATH%/atarijaguarcd</path>
<extension>.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="BigPEmu (Proton)">/usr/bin/bash /run/media/mmcblk0p1/Emulation/tools/launchers/bigpemu.sh %ROM%</command>
<platform>atarijaguarcd</platform>
<theme>atarijaguarcd</theme>
</system>
</systemList>

View file

@ -0,0 +1,63 @@
{
"parserType": "Glob",
"configTitle": "Atari Jaguar/Jaguar CD - BigPEmu Proton",
"steamCategory": "${Atari Jaguar}",
"executableArgs": "%command% \"${filePath}\"",
"executableModifier": "\"${exePath}\"",
"romDirectory": "${romsdirglobal}/",
"steamDirectory": "${steamdirglobal}",
"startInDirectory": "",
"imageProviders": ["SteamGridDB"],
"titleModifier": "${fuzzyTitle}",
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"defaultImage": "",
"defaultTallImage": "",
"defaultHeroImage": "",
"defaultLogoImage": "",
"defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png",
"localImages": "",
"localTallImages": "",
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": false,
"executable": {
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/bigpemu.sh",
"shortcutPassthrough": false,
"appendArgsToExecutable": false
},
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
"useCredentials": true
},
"parserInputs": {
"glob": "@(atarijaguar|atarijaguarcd)/**/${title}@(j64|.J64|.cof|.COF|.rom|.ROM|.jag|.JAG|.abs|.ABS|.zip|.ZIP|.cue|.CUE|.cdi|.CDI)"
},
"titleFromVariable": {
"limitToGroups": "",
"caseInsensitiveVariables": false,
"skipFileIfVariableWasNotFound": false,
"tryToMatchTitle": false
},
"fuzzyMatch": {
"replaceDiacritics": true,
"removeCharacters": true,
"removeBrackets": true
},
"parserId": "164824416518097459",
"version": 1,
"imageProviderAPIs": {
"SteamGridDB": {
"nsfw": false,
"humor": false,
"imageMotionTypes": ["static"],
"styles": [],
"stylesHero": [],
"stylesLogo": [],
"stylesIcon": []
}
}
}

View file

@ -0,0 +1,173 @@
#!/bin/bash
#variables
BigPEmu_emuName="BigPEmu (Proton)"
BigPEmu_emuType="$emuDeckEmuTypeWindows"
BigPEmu_emuPath="$HOME/Applications/BigPEmu/BigPEmu.exe"
BigPEmu_appData="$HOME/Applications/BigPEmu/UserData"
BigPEmu_BigPEmuSettings="$HOME/Applications/BigPEmu/UserData/BigPEmuConfig.bigpcfg"
#cleanupOlderThings
BigPEmu_cleanup(){
echo "NYI"
}
#Install
BigPEmu_install(){
setMSG "Installing $BigPEmu_emuName"
mkdir -p "$HOME/Applications/BigPEmu"
downloadBigPEmu=$(wget -m -nd -A "BigPEmu_*.zip" -O "$HOME/Applications/BigPEmu/BigPEmu.zip" "https://www.richwhitehouse.com/jaguar/index.php?content=download" -R "BigPEmu_*-DEV.zip")
local showProgress="$1"
if $downloadBigPEmu; then
unzip -o "$HOME/Applications/BigPEmu/BigPEmu.zip" -d "$HOME/Applications/BigPEmu"
rm -f "$HOME/Applications/BigPEmu/BigPEmu.zip"
else
return 1
fi
cp "$EMUDECKGIT/tools/launchers/bigpemu.sh" "$toolsPath/launchers/bigpemu.sh"
# So users can still open it from the ~/Applications folder.
cp "$EMUDECKGIT/tools/launchers/bigpemu.sh" "$HOME/Applications/BigPEmu/bigpemu.sh"
chmod +x "${toolsPath}/launchers/bigpemu.sh"
createDesktopShortcut "$HOME/.local/share/applications/BigPEmu (Proton).desktop" \
"BigPEmu (Proton)" \
"${toolsPath}/launchers/bigpemu.sh -w" \
"False"
}
#ApplyInitialSettings
BigPEmu_init(){
setMSG "Initializing $BigPEmu_emuName settings."
rsync -avhp "$EMUDECKGIT/configs/bigpemu/" "$BigPEmu_appData" --backup --suffix=.bak
if [ -e "$BigPEmu_BigPEmuSettings.bak" ]; then
mv -f "$BigPEmu_BigPEmuSettings.bak" "$BigPEmu_BigPEmuSettings" #retain BigPEmuSettings
fi
BigPEmu_addESConfig
BigPEmu_setEmulationFolder
BigPEmu_setupSaves
}
BigPEmu_addESConfig(){
if [[ $(grep -rnw "$es_systemsFile" -e 'atarijaguar') == "" ]]; then
xmlstarlet ed -S --inplace --subnode '/systemList' --type elem --name 'system' \
--var newSystem '$prev' \
--subnode '$newSystem' --type elem --name 'name' -v 'atarijaguar' \
--subnode '$newSystem' --type elem --name 'fullname' -v 'Atari Jaguar' \
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/atarijaguar' \
--subnode '$newSystem' --type elem --name 'extension' -v '.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP' \
--subnode '$newSystem' --type elem --name 'commandB' -v "/usr/bin/bash ${toolsPath}/launchers/bigpemu.sh %ROM%" \
--insert '$newSystem/commandB' --type attr --name 'label' --value "BigPEmu (Proton)" \
--subnode '$newSystem' --type elem --name 'commandV' -v "%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/virtualjaguar_libretro.so %ROM%" \
--insert '$newSystem/commandV' --type attr --name 'label' --value "Virtual Jaguar" \
--subnode '$newSystem' --type elem --name 'commandM' -v "%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atarijaguar jaguar -cart %ROM%" \
--insert '$newSystem/commandM' --type attr --name 'label' --value "MAME (Standalone)" \
--subnode '$newSystem' --type elem --name 'platform' -v 'atarijaguar' \
--subnode '$newSystem' --type elem --name 'theme' -v 'atarijaguar' \
-r 'systemList/system/commandB' -v 'command' \
-r 'systemList/system/commandV' -v 'command' \
-r 'systemList/system/commandM' -v 'command' \
"$es_systemsFile"
xmlstarlet ed -S --inplace --subnode '/systemList' --type elem --name 'system' \
--var newSystem '$prev' \
--subnode '$newSystem' --type elem --name 'name' -v 'atarijaguarcd' \
--subnode '$newSystem' --type elem --name 'fullname' -v 'Atari Jaguar CD' \
--subnode '$newSystem' --type elem --name 'path' -v '%ROMPATH%/atarijaguarcd' \
--subnode '$newSystem' --type elem --name 'extension' -v '.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP' \
--subnode '$newSystem' --type elem --name 'commandB' -v "/usr/bin/bash ${toolsPath}/launchers/bigpemu.sh %ROM%" \
--insert '$newSystem/commandB' --type attr --name 'label' --value "BigPEmu (Proton)" \
--subnode '$newSystem' --type elem --name 'platform' -v 'atarijaguarcd' \
--subnode '$newSystem' --type elem --name 'theme' -v 'atarijaguarcd' \
-r 'systemList/system/commandB' -v 'command' \
"$es_systemsFile"
#format doc to make it look nice
xmlstarlet fo "$es_systemsFile" > "$es_systemsFile".tmp && mv "$es_systemsFile".tmp "$es_systemsFile"
fi
#Custom Systems config end
}
#update
BigPEmu_update(){
setMSG "Updating $BigPEmu_emuName settings."
rsync -avhp "$EMUDECKGIT/configs/bigpemu/" "$BigPEmu_appData" --ignore-existing
BigPEmu_setEmulationFolder
BigPEmu_setupSaves
}
#ConfigurePaths
BigPEmu_setEmulationFolder(){
setMSG "Setting $BigPEmu_emuName Emulation Folder"
echo "NYI"
}
#SetupSaves
BigPEmu_setupSaves(){
if [ -e "${savesPath}/BigPEmu/saves" ]; then
unlink "${savesPath}/BigPEmu/saves"
fi
linkToSaveFolder BigPEmu saves "${BigPEmu_appData}"
if [ -e "${savesPath}/BigPEmu/states" ]; then
unlink "${savesPath}/BigPEmu/states"
fi
linkToSaveFolder BigPEmu states "${BigPEmu_appData}"
}
#SetupStorage
BigPEmu_setupStorage(){
unlink "${storagePath}/BigPEmu/screenshots"
linkToStorageFolder BigPEmu screenshots "${BigPEmu_appData}"
}
#WipeSettings
BigPEmu_wipeSettings(){
rm -rf $BigPEmu_BigPEmuSettings
}
#Uninstall
BigPEmu_uninstall(){
setMSG "Uninstalling $BigPEmu_emuName."
rm -rf "${BigPEmu_emuPath}"
rm -rf "$HOME/.local/share/applications/BigPEmu (Proton).desktop"
BigPEmu_wipeSettings
}
#setABXYstyle
BigPEmu_setABXYstyle(){
echo "NYI"
}
#finalExec - Extra stuff
BigPEmu_finalize(){
BigPEmu_cleanup
}
BigPEmu_IsInstalled(){
if [ -e "$BigPEmu_emuPath" ]; then
echo "true"
else
echo "false"
fi
}
BigPEmu_resetConfig(){
mv "$BigPEmu_BigPEmuSettings" "$BigPEmu_BigPEmuSettings.bak" &>/dev/null
BigPEmu_init &>/dev/null && echo "true" || echo "false"
}
BigPEmu_addSteamInputProfile(){
echo "NYI"
# addSteamInputCustomIcons
# setMSG "Adding $BigPEmu_emuName Steam Input Profile."
# rsync -r "$EMUDECKGIT/configs/steam-input/BigPEmu_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
}

View file

@ -187,7 +187,7 @@ ESDE_addCustomSystems(){
#format doc to make it look nice
xmlstarlet fo "$es_systemsFile" > "$es_systemsFile".tmp && mv "$es_systemsFile".tmp "$es_systemsFile"
fi
#Custom Systems config end
#Custom Systems config end
}
#update

View file

@ -84,6 +84,7 @@ source "$EMUDECKGIT"/functions/EmuScripts/emuDeckVita3K.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckMGBA.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRMG.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckMelonDS.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckBigPEmu.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckares.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckFlycast.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckSupermodel.sh

BIN
icons/BigPEmu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

View file

@ -62,6 +62,7 @@ setDefaults(){
setSetting doSetupScummVM true
setSetting doSetupSupermodel true
setSetting doSetupVita3K true
setSetting doSetupBigPEmu true
setSetting doSetupESDE true
setSetting doInstallRA true
setSetting doSetupMGBA true
@ -82,6 +83,7 @@ setDefaults(){
setSetting doInstallXenia false
setSetting doInstallMAME false
setSetting doInstallScummVM true
setSetting doInstallBigPEmu true
setSetting doInstallSupermodel true
setSetting doInstallGyro false
setSetting doInstallVita3K true

View file

@ -25,6 +25,7 @@ doSetupSRM=true
doSetupPCSX2QT=true
#doSetupMelon=true
doSetupMGBA=true
doSetupBigPEmu=true
doSetupFlycast=true
doSetupSupermodel=true
doSetupModel2=true
@ -51,6 +52,7 @@ doInstallPCSX2QT=false
doInstallMAME=true
#doInstallMelon=false
doInstallMGBA=false
doInstallBigPEmu=false
doInstallFlycast=true
doInstallSupermodel=true
doInstallCHD=false

View file

@ -254,6 +254,10 @@ if [ $doInstallmelonDS == "true" ]; then
echo "melonDS_install"
melonDS_install
fi
if [ $doInstallBigPEmu == "true" ]; then
echo "BigPEmu_install"
BigPEmu_install
fi
if [ $doInstallSupermodel == "true" ]; then
echo "Supermodel_install"
Supermodel_install
@ -386,6 +390,10 @@ if [ "$doSetupCemu" == "true" ]; then
echo "Cemu_init"
Cemu_init
fi
if [ "$doSetupBigPEmu" == "true" ]; then
echo "BigPEmu_init"
BigPEmu_init
fi
if [ "$doSetupXenia" == "true" ]; then
echo "Xenia_init"
Xenia_init

View file

@ -198,6 +198,16 @@ function runBinDownloads {
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!"
}
@ -248,6 +258,9 @@ 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
@ -293,4 +306,4 @@ else
zenity --error \
--text="Nothing available to be updated." 2>/dev/null
fi
fi

51
tools/launchers/bigpemu.sh Executable file
View file

@ -0,0 +1,51 @@
#!/usr/bin/bash
# bigpemu.sh
# Set up cloud save
source "${HOME}/.config/EmuDeck/backend/functions/all.sh"
rclone_downloadEmu bigpemu
# Get SELFPATH
SELFPATH="$( realpath "${BASH_SOURCE[0]}" )"
# Get EXE
EXE="\"/usr/bin/bash\" \"${SELFPATH}\""
echo "EXE: ${EXE}"
# NAME
NAME="BigPEmu"
# AppID.py
APPIDPY="$emulationPath/tools/appID.py"
# Proton Launcher Script
PROTONLAUNCH="$emulationPath/tools/proton-launch.sh"
# BigPEmu location
BIGPEMU="$HOME/Applications/BigPEmu/BigPEmu.exe"
# APPID
APPID=$( /usr/bin/python "${APPIDPY}" "${EXE}" "${NAME}" )
echo "APPID: ${APPID}"
# Proton Version
PROTONVER="8.0"
# Call the Proton launcher script and give the arguments
if [ -z "${@}" ]; then
echo "${PROTONLAUNCH}" -p "${PROTONVER}" -i "${APPID}" -- "${BIGPEMU}" "*" -localdata >> "${LOGFILE}"
"${PROTONLAUNCH}" -p "${PROTONVER}" -i "${APPID}" -- "${BIGPEMU}" "*" -localdata
echo "Launching BigPEmu directly"
else
echo "${PROTONLAUNCH}" -p "${PROTONVER}" -i "${APPID}" -- "${BIGPEMU}" "${@}" -localdata >> "${LOGFILE}"
"${PROTONLAUNCH}" -p "${PROTONVER}" -i "${APPID}" -- "${BIGPEMU}" "${@}" -localdata
echo "ROM found, launching game"
fi
# Cloud Save
rclone_uploadEmu bigpemu

View file

@ -68,6 +68,7 @@ installProton () {
[Hotfix]="2180100"
[EasyAntiCheat Runtime]="1826330"
[BattlEye Runtime]="1161040"
[Next]="2230260"
)
# If Proton Version is known, attempt to prompt the user to install it

View file

@ -3,6 +3,7 @@ source "$HOME/.config/EmuDeck/backend/functions/all.sh"
doUninstall=false
doUninstallares=true
doUninstallBigPEmu=true
doUninstallCemu=true
doUninstallCemuNative=true
doUninstallCitra=true
@ -29,9 +30,6 @@ doUninstallXemu=true
doUninstallXenia=true
doUninstallYuzu=true
LOGFILE="$HOME/Desktop/emudeck-uninstall.log"
echo "${@}" > "${LOGFILE}" #might as well log out the parameters of the run
exec > >(tee "${LOGFILE}") 2>&1
@ -151,36 +149,41 @@ fi
--column="" \
--column="Select which emulators you would like to keep installed" \
1 "ares" \
2 "Cemu" \
3 "Cemu Native" \
4 "Citra" \
5 "Dolphin" \
6 "Duckstation" \
7 "Flycast" \
8 "Mame" \
9 "melonDS" \
10 "mGBA" \
11 "Model2" \
12 "PCSX2" \
13 "PPSSPP" \
14 "PrimeHack" \
15 "RetroArch"\
16 "RMG" \
17 "RPCS3" \
18 "Ryujinx" \
19 "ScummVM" \
20 "Supermodel" \
21 "Vita3K" \
22 "Xemu" \
23 "Xenia" \
24 "Yuzu" )
2 "BigPEmu" \
3 "Cemu" \
4 "Cemu Native" \
5 "Citra" \
6 "Dolphin" \
7 "Duckstation" \
8 "Flycast" \
9 "Mame" \
10 "melonDS" \
11 "mGBA" \
12 "Model2" \
13 "PCSX2" \
14 "PPSSPP" \
15 "PrimeHack" \
16 "RetroArch"\
17 "RMG" \
18 "RPCS3" \
19 "Ryujinx" \
20 "ScummVM" \
21 "Supermodel" \
22 "Vita3K" \
23 "Xemu" \
24 "Xenia" \
25 "Yuzu" )
ans=$?
if [ $ans -eq 0 ]; then
if [[ "$emusToUninstall" == *"ares"* ]]; then
doUninstallares=false
fi
if [[ "$emusToUninstall" == *"BigPEmu"* ]]; then
doUninstallBigPEmu=false
fi
if [[ "$emusToUninstall" == *"Cemu"* ]]; then
doUninstallCemu=false
fi
@ -250,7 +253,6 @@ fi
if [[ "$emusToUninstall" == *"Xenia"* ]]; then
doUninstallXenia=false
fi
else
exit
fi
@ -266,6 +268,10 @@ fi
flatpak uninstall dev.ares.ares -y
rm -rf $HOME/.var/app/dev.ares.ares &> /dev/null
fi
if [[ "$doUninstallBigPEmu" == true ]]; then
rm -rf $HOME/Applications/BigPEmu &>> /dev/null
rm -rf $HOME/.local/share/applications/BigPEmu.desktop &>> /dev/null
fi
if [[ "$doUninstallCemu" == true ]]; then
find ${romsPath}/wiiu -mindepth 1 -name roms -prune -o -exec rm -rf '{}' \;
rm -f "$HOME/.local/share/applications/Cemu (Proton).desktop" &> /dev/null