This commit is contained in:
Dragoon Dorise 2025-03-20 14:05:42 +01:00
parent 13f9caf7a3
commit 86a6dd5624
32 changed files with 431 additions and 985 deletions

View File

@ -4,7 +4,7 @@
android_doSetupRA=true android_doSetupRA=true
android_doSetupDolphin=true android_doSetupDolphin=true
android_doSetupYuzu=true android_doSetupYuzu=true
android_doSetupCitra=true android_doSetupCitra=false
android_doSetupPPSSPP=true android_doSetupPPSSPP=true
android_doSetupAetherSX2=true android_doSetupAetherSX2=true
@ -12,7 +12,7 @@ android_doSetupAetherSX2=true
android_doInstallRA=true android_doInstallRA=true
android_doInstallDolphin=true android_doInstallDolphin=true
android_doInstallYuzu=true android_doInstallYuzu=true
android_doInstallCitra=true android_doInstallCitra=false
android_doInstallPPSSPP=true android_doInstallPPSSPP=true
android_doInstallAetherSX2=true android_doInstallAetherSX2=true

View File

@ -0,0 +1,25 @@
#!/bin/bash
function Android_Azahar_install(){
setMSG "Installing Azahar"
temp_url="$(getLatestReleaseURLGH "azahar-emu/azahar" ".apk")"
temp_emu="azahar"
Android_ADB_dl_installAPK $temp_emu $temp_url
}
function Android_Azahar_init(){
setMSG "Setting up Azahar"
rsync -ra "$emudeckBackend/android/configs/azahar-emu/" "$Android_temp_internal/azahar-emu/"
}
function Android_Azahar_setup(){
adb shell pm grant io.github.lime3ds.android android.permission.WRITE_EXTERNAL_STORAGE
adb shell am start -n io.github.lime3ds.android/.ui.MainActivity
sleep 1
adb shell am force-stop io.github.lime3ds.android
}
function Android_Azahar_IsInstalled(){
package=" io.github.lime3ds.android"
Android_ADB_appInstalled $package
}

View File

@ -1,25 +0,0 @@
#!/bin/bash
function Android_Lime3DS_install(){
setMSG "Installing Citra"
temp_url="$(getLatestReleaseURLGH "Lime3DS/lime3ds-archive" ".apk")"
temp_emu="citra"
Android_ADB_dl_installAPK $temp_emu $temp_url
}
function Android_Lime3DS_init(){
setMSG "Setting up Citra"
rsync -ra "$emudeckBackend/android/configs/citra-emu/" "$Android_temp_internal/citra-emu/"
}
function Android_Lime3DS_setup(){
adb shell pm grant org.citra.emu android.permission.WRITE_EXTERNAL_STORAGE
adb shell am start -n org.citra.emu/.ui.MainActivity
sleep 1
adb shell am force-stop org.citra.emu
}
function Android_Lime3DS_IsInstalled(){
package="org.citra.emu"
Android_ADB_appInstalled $package
}

View File

@ -13,7 +13,7 @@ source "$emudeckBackend/android/vars.sh"
source "$emudeckBackend"/android/functions/EmuScripts/Android_Yuzu.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_Yuzu.sh
source "$emudeckBackend"/android/functions/EmuScripts/Android_NetherSX2.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_NetherSX2.sh
source "$emudeckBackend"/android/functions/EmuScripts/Android_Lime3DS.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_Azahar.sh
source "$emudeckBackend"/android/functions/EmuScripts/Android_Dolphin.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_Dolphin.sh
source "$emudeckBackend"/android/functions/EmuScripts/Android_RetroArch.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_RetroArch.sh
source "$emudeckBackend"/android/functions/EmuScripts/Android_PPSSPP.sh source "$emudeckBackend"/android/functions/EmuScripts/Android_PPSSPP.sh

View File

@ -1,4 +1,4 @@
collection: Nintendo 3DS collection: Nintendo 3DS
shortname: 3ds shortname: 3ds
extensions: 3ds, 3dsx, app, axf, cci, cxi, elf extensions: app, axf, cci, cxi, elf
launch: am start -n org.citra.emu/.ui.EmulationActivity -a android.intent.action.VIEW -e GamePath {file.path} launch: am start -n io.github.lime3ds.android/.ui.EmulationActivity -a android.intent.action.VIEW -e GamePath {file.path}

View File

@ -133,9 +133,9 @@ if [ $androidInstallPegasus == "true" ]; then
Android_Pegasus_init Android_Pegasus_init
fi fi
if [ $androidInstallLime3DS == "true" ]; then if [ $androidInstallAzahar == "true" ]; then
Android_Lime3DS_install Android_Azahar_install
Android_Lime3DS_init Android_Azahar_init
fi fi
if [ $androidInstallDolphin == "true" ]; then if [ $androidInstallDolphin == "true" ]; then
Android_Dolphin_install Android_Dolphin_install
@ -183,8 +183,8 @@ done
if [ "$success" = "false" ]; then if [ "$success" = "false" ]; then
echo "500 #ANDROID" echo "500 #ANDROID"
else else
if [ "$androidInstallCitraMMJ" = "true" ]; then if [ "$androidInstallAzahar" = "true" ]; then
Android_Citra_setup Android_Azahar_setup
fi fi
if [ "$androidInstallPegasus" = "true" ]; then if [ "$androidInstallPegasus" = "true" ]; then
Android_Pegasus_setup Android_Pegasus_setup

View File

@ -62,6 +62,15 @@
<entry>~/.local/share/flatpak/exports/bin/org.yuzu_emu.yuzu</entry> <entry>~/.local/share/flatpak/exports/bin/org.yuzu_emu.yuzu</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="AZAHAR">
<!-- Nintendo 3DS -->
<rule type="systempath">
<entry>azahar</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/azahar*.AppImage</entry>
</rule>
</emulator>
<emulator name="CITRON"> <emulator name="CITRON">
<!-- Nintendo Switch emulator Citron --> <!-- Nintendo Switch emulator Citron -->
<rule type="staticpath"> <rule type="staticpath">

View File

@ -40,7 +40,7 @@ cloud_sync_dowload_test(){
echo -e "${CYAN}CloudSync Status Report${NONE}" echo -e "${CYAN}CloudSync Status Report${NONE}"
echo "" echo ""
miArray=("Cemu" "citra" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" ) miArray=("Cemu" "azahar" "dolphin" "duckstation" "MAME" "melonds" "mgba" "pcsx2" "ppsspp" "primehack" "retroarch" "rpcs3" "scummvm" "Vita3K" "yuzu" "ryujinx" )
upload="true" upload="true"
download="true" download="true"

View File

@ -33,11 +33,6 @@
<entry>/run/media/mmcblk0p1/Emulation/tools/launchers/cemu.sh</entry> <entry>/run/media/mmcblk0p1/Emulation/tools/launchers/cemu.sh</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="CITRA">
<rule type="staticpath">
<entry>/run/media/mmcblk0p1/Emulation/tools/launchers/citra.sh</entry>
</rule>
</emulator>
<emulator name="DOLPHIN"> <emulator name="DOLPHIN">
<rule type="staticpath"> <rule type="staticpath">
<entry>/run/media/mmcblk0p1/Emulation/tools/launchers/dolphin.sh</entry> <entry>/run/media/mmcblk0p1/Emulation/tools/launchers/dolphin.sh</entry>
@ -53,9 +48,9 @@
<entry>/run/media/mmcblk0p1/Emulation/tools/launchers/flycast.sh</entry> <entry>/run/media/mmcblk0p1/Emulation/tools/launchers/flycast.sh</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="LIME3DS"> <emulator name="AZAHAR">
<rule type="staticpath"> <rule type="staticpath">
<entry>/run/media/mmcblk0p1/Emulation/tools/launchers/lime3ds.sh</entry> <entry>/run/media/mmcblk0p1/Emulation/tools/launchers/azahar.sh</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="MAME"> <emulator name="MAME">

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<alternativeEmulator> <alternativeEmulator>
<label>Citra (Standalone)</label> <label>Azahar (Standalone)</label>
</alternativeEmulator> </alternativeEmulator>
<gameList /> <gameList />

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<alternativeEmulator> <alternativeEmulator>
<label>Citra (Standalone)</label> <label>Azahar (Standalone)</label>
</alternativeEmulator> </alternativeEmulator>
<gameList /> <gameList />

View File

@ -174,9 +174,9 @@ use_cpu_jit=true
use_cpu_jit\default=true use_cpu_jit\default=true
[Data%20Storage] [Data%20Storage]
nand_directory=/home/deck/.local/share/lime3ds-emu/nand/ nand_directory=/home/deck/.local/share/azahar-emu/nand/
nand_directory\default=false nand_directory\default=false
sdmc_directory=/home/deck/.local/share/lime3ds-emu/sdmc/ sdmc_directory=/home/deck/.local/share/azahar-emu/sdmc/
sdmc_directory\default=false sdmc_directory\default=false
use_custom_storage=true use_custom_storage=true
use_custom_storage\default=false use_custom_storage\default=false
@ -459,7 +459,7 @@ Paths\moviePlaybackPath=
Paths\movieRecordPath= Paths\movieRecordPath=
Paths\recentFiles= Paths\recentFiles=
Paths\romsPath= Paths\romsPath=
Paths\screenshotPath=/home/deck/.local/share/lime3ds-emu/screenshots/ Paths\screenshotPath=/home/deck/.local/share/azahar-emu/screenshots/
Paths\screenshotPath\default=false Paths\screenshotPath\default=false
Paths\symbolsPath= Paths\symbolsPath=
Paths\videoDumpingPath= Paths\videoDumpingPath=
@ -495,10 +495,10 @@ Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context=2
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context\default=true Shortcuts\Main%20Window\Decrease%20Speed%20Limit\Context\default=true
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq=- Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq=-
Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq\default=true Shortcuts\Main%20Window\Decrease%20Speed%20Limit\KeySeq\default=true
Shortcuts\Main%20Window\Exit%20Lime3DS\Context=1 Shortcuts\Main%20Window\Exit%20Azahar\Context=1
Shortcuts\Main%20Window\Exit%20Lime3DS\Context\default=true Shortcuts\Main%20Window\Exit%20Azahar\Context\default=true
Shortcuts\Main%20Window\Exit%20Lime3DS\KeySeq=Alt+F4 Shortcuts\Main%20Window\Exit%20Azahar\KeySeq=Alt+F4
Shortcuts\Main%20Window\Exit%20Lime3DS\KeySeq\default=false Shortcuts\Main%20Window\Exit%20Azahar\KeySeq\default=false
Shortcuts\Main%20Window\Exit%20Fullscreen\Context=1 Shortcuts\Main%20Window\Exit%20Fullscreen\Context=1
Shortcuts\Main%20Window\Exit%20Fullscreen\Context\default=true Shortcuts\Main%20Window\Exit%20Fullscreen\Context\default=true
Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq=PgDown Shortcuts\Main%20Window\Exit%20Fullscreen\KeySeq=PgDown

View File

@ -1,10 +1,10 @@
{ {
"parserType": "Glob", "parserType": "Glob",
"configTitle": "Nintendo 3DS - Lime3DS", "configTitle": "Nintendo 3DS - Azahar",
"steamDirectory": "${steamdirglobal}", "steamDirectory": "${steamdirglobal}",
"romDirectory": "${romsdirglobal}/n3ds", "romDirectory": "${romsdirglobal}/n3ds",
"steamCategories": [ "steamCategories": [
"Nintendo 3DS - Lime3DS (Standalone)" "Nintendo 3DS - Azahar (Standalone)"
], ],
"executableArgs": " \"${filePath}\"", "executableArgs": " \"${filePath}\"",
"executableModifier": "\"${exePath}\"", "executableModifier": "\"${exePath}\"",
@ -26,7 +26,7 @@
] ]
}, },
"executable": { "executable": {
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/lime3ds.sh", "path": "/run/media/mmcblk0p1/Emulation/tools/launchers/azahar.sh",
"shortcutPassthrough": false, "shortcutPassthrough": false,
"appendArgsToExecutable": true "appendArgsToExecutable": true
}, },

View File

@ -0,0 +1,296 @@
#!/bin/bash
#variables
Azahar_emuName="Azahar"
Azahar_emuType="$emuDeckEmuTypeAppImage"
Azahar_emuPath="$emusFolder/azahar-gui.AppImage"
Azahar_releaseURL=""
Azahar_configFile="$HOME/.config/azahar-emu/qt-config.ini"
Azahar_configPath="$HOME/.config/azahar-emu"
Azahar_texturesPath="$HOME/.config/azahar-emu/load/textures"
#Install
Azahar_install(){
echo "Begin $Azahar_emuName Install"
local showProgress="$1"
if installEmuAI "$Azahar_emuName" "" "$(getReleaseURLGH "Azahar/azahar-archive" "tar.gz" "")" "azahar" "tar.gz" "emulator" "$showProgress"; then #azahar-gui.AppImage
mkdir "$emusFolder/azahar-temp"
tar -xvzf "$emusFolder/azahar.tar.gz" -C "$emusFolder/azahar-temp" --strip-components 1
if [ -f "$emusFolder/azahar-temp/azahar-gui.AppImage" ]; then
mv "$emusFolder/azahar-temp/azahar-gui.AppImage" "$Azahar_emuPath"
elif [ -f "$emusFolder/azahar-temp/azahar.AppImage" ]; then
mv "$emusFolder/azahar-temp/azahar.AppImage" "$Azahar_emuPath"
else
rm -rf "$emusFolder/azahar-temp"
rm -rf "$emusFolder/azahar.tar.gz"
return 1
fi
chmod +x "$emusFolder/azahar-gui.AppImage"
rm -rf "$emusFolder/azahar-temp"
rm -rf "$emusFolder/azahar.tar.gz"
else
return 1
fi
}
#ApplyInitialSettings
Azahar_init(){
setMSG "Initializing $Azahar_emuName settings."
configEmuAI "$Azahar_emuName" "azahar-emu" "$Azahar_configPath" "$emudeckBackend/configs/azahar" "true"
Azahar_setEmulationFolder
Azahar_setupStorage
Azahar_setupSaves
Azahar_addSteamInputProfile
Azahar_flushEmulatorLauncher
Azahar_setupTextures
Azahar_addParser
}
#update
Azahar_update(){
setMSG "Updating $Azahar_emuName settings."
configEmuAI "$Azahar_emuName" "azahar-emu" "$Azahar_configPath" "$emudeckBackend/configs/azahar"
Azahar_setupStorage
Azahar_setEmulationFolder
Azahar_setupSaves
Azahar_addSteamInputProfile
Azahar_flushEmulatorLauncher
Azahar_setupTextures
}
Azahar_setupStorage(){
mkdir -p "$storagePath/azahar/"
if [ ! -d "$storagePath/azahar/sdmc" ] && [ ! -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/sdmc" -o ! -d "$HOME/.local/share/azahar-emu" ] && [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" -o -d "$HOME/.local/share/citra-emu/sdmc" -o -d "$storagePath/citra/sdmc" ]; then
echo "Azahar SDMC does not exist in storage path and does not exist in the original Flatpak or AppImage paths. Citra SDMC folder found, copying Citra SDMC folder."
echo -e ""
setMSG "Copying Citra SDMC to the Azahar SDMC folder"
echo -e ""
mkdir -p "$storagePath/azahar"
if [ -d "$storagePath/citra/sdmc" ]; then
rsync -av --ignore-existing "$storagePath/citra/sdmc" "$storagePath"/azahar
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" "$storagePath"/azahar
elif [ -d "$HOME/.local/share/citra-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.local/share/citra-emu/sdmc" "$storagePath"/azahar
else
mkdir -p "$storagePath/citra/sdmc"
fi
fi
if [ ! -d "$storagePath/azahar/sdmc" ] && [ -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/sdmc" -o -d "$HOME/.local/share/azahar-emu/sdmc" ]; then
echo "Azahar SDMC does not exist in storage path. Found Azahar SDMC in original path, copying to storage folder."
echo -e ""
setMSG "Copying Azahar SDMC to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/azahar"
if [ -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/sdmc" "$storagePath"/azahar/ && rm -rf "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/sdmc"
elif [ -d "$HOME/.local/share/azahar-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.local/share/azahar-emu/sdmc" "$storagePath"/azahar/ && rm -rf "$HOME/.local/share/azahar-emu/sdmc"
else
mkdir -p "$storagePath/azahar/sdmc"
fi
else
echo "Azahar SDMC does not exist anywhere. Creating SDMC folder."
mkdir -p "$storagePath/azahar/sdmc"
fi
if [ ! -d "$storagePath/azahar/nand" ] && [ ! -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/nand" -o ! -d "$HOME/.local/share/azahar-emu" ] && [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" -o -d "$HOME/.local/share/citra-emu/nand" -o -d "$storagePath/citra/nand" ]; then
echo "Azahar NAND does not exist in storage path and does not exist in the original Flatpak or AppImage paths. Citra NAND folder found, copying Citra NAND folder."
echo -e ""
setMSG "Copying Citra NAND to the Azahar folder"
echo -e ""
mkdir -p "$storagePath/azahar"
if [ -d "$storagePath/citra/nand" ]; then
rsync -av --ignore-existing "$storagePath/citra/nand" "$storagePath"/azahar
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" "$storagePath"/azahar
elif [ -d "$HOME/.local/share/citra-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.local/share/citra-emu/nand" "$storagePath"/azahar
else
mkdir -p "$storagePath/citra/nand"
fi
fi
if [ ! -d "$storagePath/azahar/nand" ] && [ -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/nand" -o -d "$HOME/.local/share/azahar-emu/nand" ]; then
echo "Azahar NAND does not exist in storage path. Found Azahar NAND in original path, copying to storage folder."
echo -e ""
setMSG "Copying Citra NAND to the Azahar NAND folder"
echo -e ""
mkdir -p "$storagePath/azahar"
if [ -d "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/nand" "$storagePath"/azahar/ && rm -rf "$HOME/.var/app/io.github.azahar.Azahar/data/azahar-emu/nand"
elif [ -d "$HOME/.local/share/azahar-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.local/share/azahar-emu/nand" "$storagePath"/azahar/ && rm -rf "$HOME/.local/share/azahar-emu/nand"
else
mkdir -p "$storagePath/azahar/nand"
fi
else
echo "Azahar NAND does not exist anywhere. Creating NAND folder."
mkdir -p "$storagePath/azahar/nand"
fi
# Cheats and Texture Packs
# Cheats
mkdir -p "$HOME/.local/share/azahar-emu/cheats"
linkToStorageFolder azahar cheats "$HOME/.local/share/azahar-emu/cheats"
# Texture Pack
mkdir -p "$HOME/.local/share/azahar-emu/load/textures"
linkToStorageFolder azahar textures "$HOME/.local/share/azahar-emu/load/textures"
}
#ConfigurePaths
Azahar_setEmulationFolder(){
setMSG "Setting $Azahar_emuName Emulation Folder"
mkdir -p "$Azahar_configPath"
gameDirOpt='Paths\\gamedirs\\3\\path='
newGameDirOpt='Paths\\gamedirs\\3\\path='"${romsPath}/n3ds"
sed -i "/${gameDirOpt}/c\\${newGameDirOpt}" "$Azahar_configFile"
nandDirOpt='nand_directory='
newnandDirOpt='nand_directory='"$storagePath/azahar/nand/"
sed -i "/${nandDirOpt}/c\\${newnandDirOpt}" "$Azahar_configFile"
sdmcDirOpt='sdmc_directory='
newsdmcDirOpt='sdmc_directory='"$storagePath/azahar/sdmc/"
sed -i "/${sdmcDirOpt}/c\\${newsdmcDirOpt}" "$Azahar_configFile"
mkdir -p "$storagePath/azahar/screenshots/"
screenshotsDirOpt='Paths\\screenshotPath='
newscreenshotDirOpt='Paths\\screenshotPath='"$storagePath/azahar/screenshots/"
sed -i "/${screenshotsDirOpt}/c\\${newscreenshotDirOpt}" "$Azahar_configFile"
# True/False configs
sed -i 's/nand_directory\\default=true/nand_directory\\default=false/' "$Azahar_configFile"
sed -i 's/sdmc_directory\\default=true/sdmc_directory\\default=false/' "$Azahar_configFile"
sed -i 's/use_custom_storage=false/use_custom_storage=true/' "$Azahar_configFile"
sed -i 's/use_custom_storage\\default=true/use_custom_storage\\default=false/' "$Azahar_configFile"
# Vulkan Graphics
sed -E 's/layout_option=[0-9]+/layout_option=5/g' "$Azahar_configFile"
sed -i 's/layout_option\\default=true/layout_option\\default=false/' "$Azahar_configFile"
#Setup symlink for AES keys
mkdir -p "${biosPath}/azahar/"
mkdir -p "$HOME/.local/share/azahar-emu/sysdata"
ln -sn "$HOME/.local/share/azahar-emu/sysdata" "${biosPath}/azahar/keys"
}
#SetupSaves
Azahar_setupSaves(){
mkdir -p "$HOME/.local/share/azahar-emu/states"
linkToSaveFolder azahar saves "$storagePath/azahar/sdmc"
linkToSaveFolder azahar states "$HOME/.local/share/azahar-emu/states"
}
#Set up textures
Azahar_setupTextures(){
mkdir -p "$HOME/.local/share/azahar-emu/load/textures"
linkToTexturesFolder azahar textures "$HOME/.local/share/azahar-emu/load/textures"
}
#WipeSettings
Azahar_wipe(){
setMSG "Wiping $Azahar_emuName config directory. (factory reset)"
rm -rf "$HOME/.config/azahar-emu"
}
#Uninstall
Azahar_uninstall(){
setMSG "Uninstalling $Azahar_emuName."
removeParser "nintendo_3ds_azahar.json"
uninstallEmuAI $Azahar_emuName "azahar-gui" "" "emulator"
}
#setABXYstyle
Azahar_setABXYstyle(){
sed -i '/button_a/s/button:1/button:0/' "$Azahar_configFile"
sed -i '/button_b/s/button:0/button:1/' "$Azahar_configFile"
sed -i '/button_x/s/button:3/button:2/' "$Azahar_configFile"
sed -i '/button_y/s/button:2/button:3/' "$Azahar_configFile"
}
Azahar_setBAYXstyle(){
sed -i '/button_a/s/button:0/button:1/' "$Azahar_configFile"
sed -i '/button_b/s/button:1/button:0/' "$Azahar_configFile"
sed -i '/button_x/s/button:2/button:3/' "$Azahar_configFile"
sed -i '/button_y/s/button:3/button:2/' "$Azahar_configFile"
}
#finalExec - Extra stuff
Azahar_finalize(){
echo "NYI"
}
Azahar_IsInstalled(){
if [ -e "$Azahar_emuPath" ]; then
echo "true"
else
echo "false"
fi
}
Azahar_resetConfig(){
Azahar_init &>/dev/null && echo "true" || echo "false"
}
Azahar_addSteamInputProfile(){
addSteamInputCustomIcons
setMSG "Adding $Azahar_emuName Steam Input Profile."
#rsync -r "$emudeckBackend/configs/steam-input/Azahar_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
rsync -r --exclude='*/' "$emudeckBackend/configs/steam-input/" "$HOME/.steam/steam/controller_base/templates/"
}
Azahar_setResolution(){
case $azaharResolution in
"720P") multiplier=3;;
"1080P") multiplier=5;;
"1440P") multiplier=6;;
"4K") multiplier=9;;
*) echo "Error"; return 1;;
esac
setConfig "resolution_factor" $multiplier "$Azahar_configFile"
}
Azahar_flushEmulatorLauncher(){
flushEmulatorLaunchers "azahar"
}
Azahar_addParser(){
addParser "nintendo_3ds_azahar.json"
}

View File

@ -1,368 +0,0 @@
#!/bin/bash
#variables
Citra_emuName="Citra"
Citra_emuType="$emuDeckEmuTypeAppImage"
Citra_emuPath="$emusFolder/citra-qt.AppImage"
Citra_releaseURL=""
Citra_configFile="$HOME/.config/citra-emu/qt-config.ini"
Citra_configPath="$HOME/.config/citra-emu"
Citra_texturesPath="$HOME/.config/citra-emu/load/textures"
#Install
Citra_install(){
echo "Begin $Citra_emuName Install"
local showProgress="$1"
if installEmuAI "$Citra_emuName" "" "https://github.com/PabloMK7/citra/releases/download/r608383e/citra-linux-appimage-20240927-608383e.tar.gz" "citra" "tar.gz" "emulator" "$showProgress"; then #citra-qt.AppImage
#if installEmuAI "$Citra_emuName" "" "https://github.com/PabloMK7/citra/releases/download/r518f723/citra-linux-appimage-20240717-518f723.tar.gz" "citra" "tar.gz" "emulator" "$showProgress"; then #citra-qt.AppImage
mkdir "$emusFolder/citra-temp"
tar -xvzf "$emusFolder/citra.tar.gz" -C "$emusFolder/citra-temp" --strip-components 1
mv "$emusFolder/citra-temp/citra-qt.AppImage" "$emusFolder"
rm -rf "$emusFolder/citra-temp"
rm -rf "$emusFolder/citra.tar.gz"
chmod +x "$emusFolder/citra-qt.AppImage"
else
return 1
fi
}
#ApplyInitialSettings
Citra_init(){
setMSG "Initializing $Citra_emuName settings."
configEmuAI "$Citra_emuName" "citra-emu" "$HOME/.config/citra-emu" "$emudeckBackend/configs/citra-emu" "true"
Citra_setEmulationFolder
Citra_setupStorage
Citra_setupSaves
Citra_addSteamInputProfile
Citra_flushEmulatorLauncher
Citra_flushSymlinks
Citra_setupTextures
}
#update
Citra_update(){
setMSG "Updating $Citra_emuName settings."
configEmuAI "$Citra_emuName" "citra-emu" "$HOME/.config/citra-emu" "$emudeckBackend/configs/citra-emu"
Citra_setupStorage
Citra_setEmulationFolder
Citra_setupSaves
Citra_addSteamInputProfile
Citra_flushEmulatorLauncher
Citra_flushSymlinks
Citra_setupTextures
}
Citra_setupStorage(){
mkdir -p "$storagePath/citra/"
# SDMC and NAND
if [ ! -d "$storagePath/citra/sdmc" ] && [ -d "$HOME/.var/app/org.citra_emu.citra" -o -d "$HOME/.local/share/citra-emu" ]; then
echo "Citra SDMC does not exist in storage path"
echo -e ""
setMSG "Moving Citra SDMC to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/citra"
if [ -d "$savesPath/citra/sdmc" ]; then
mv -f "$savesPath"/citra/sdmc "$storagePath"/citra/
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" ]; then
rsync -av "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" "$storagePath"/citra/ && rm -rf "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc"
elif [ -d "$HOME/.local/share/citra-emu/sdmc" ]; then
rsync -av "$HOME/.local/share/citra-emu/sdmc" "$storagePath"/citra/ && rm -rf "$HOME/.local/share/citra-emu/sdmc"
else
mkdir -p "$storagePath/citra/sdmc"
fi
else
mkdir -p "$storagePath/citra/sdmc"
fi
if [ ! -d "$storagePath/citra/nand" ] && [ -d "$HOME/.var/app/org.citra_emu.citra" -o -d "$HOME/.local/share/citra-emu" ]; then
echo "Citra NAND does not exist in storage path"
echo -e ""
setMSG "Moving Citra NAND to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/citra"
if [ -d "$savesPath/citra/nand" ]; then
mv -f "$savesPath"/citra/nand "$storagePath"/citra/
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" ]; then
rsync -av "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" "$storagePath"/citra/ && rm -rf "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand"
elif [ -d "$HOME/.local/share/citra-emu/nand" ]; then
rsync -av "$HOME/.local/share/citra-emu/nand" "$storagePath"/citra/ && rm -rf "$HOME/.local/share/citra-emu/nand"
else
mkdir -p "$storagePath/citra/nand"
fi
else
mkdir -p "$storagePath/citra/nand"
fi
# Cheats and Texture Packs
# Cheats
mkdir -p "$HOME/.local/share/citra-emu/cheats"
linkToStorageFolder citra cheats "$HOME/.local/share/citra-emu/cheats"
# Texture Pack
mkdir -p "$HOME/.local/share/citra-emu/load/textures"
linkToStorageFolder citra textures "$HOME/.local/share/citra-emu/load/textures"
}
#ConfigurePaths
Citra_setEmulationFolder(){
setMSG "Setting $Citra_emuName Emulation Folder"
mkdir -p "$Citra_configPath"
gameDirOpt='Paths\\gamedirs\\3\\path='
newGameDirOpt='Paths\\gamedirs\\3\\path='"${romsPath}/n3ds"
sed -i "/${gameDirOpt}/c\\${newGameDirOpt}" "$Citra_configFile"
nandDirOpt='nand_directory='
newnandDirOpt='nand_directory='"$storagePath/citra/nand/"
sed -i "/${nandDirOpt}/c\\${newnandDirOpt}" "$Citra_configFile"
sdmcDirOpt='sdmc_directory='
newsdmcDirOpt='sdmc_directory='"$storagePath/citra/sdmc/"
sed -i "/${sdmcDirOpt}/c\\${newsdmcDirOpt}" "$Citra_configFile"
mkdir -p "$storagePath/citra/screenshots/"
screenshotsDirOpt='Paths\\screenshotPath='
newscreenshotDirOpt='Paths\\screenshotPath='"$storagePath/citra/screenshots/"
sed -i "/${screenshotsDirOpt}/c\\${newscreenshotDirOpt}" "$Citra_configFile"
# True/False configs
sed -i 's/nand_directory\\default=true/nand_directory\\default=false/' "$Citra_configFile"
sed -i 's/sdmc_directory\\default=true/sdmc_directory\\default=false/' "$Citra_configFile"
sed -i 's/use_custom_storage=false/use_custom_storage=true/' "$Citra_configFile"
sed -i 's/use_custom_storage\\default=true/use_custom_storage\\default=false/' "$Citra_configFile"
# Vulkan Graphics
sed -E 's/layout_option=[0-9]+/layout_option=5/g' "$Citra_configFile"
sed -i 's/layout_option\\default=true/layout_option\\default=false/' "$Citra_configFile"
#Setup symlink for AES keys
mkdir -p "${biosPath}/citra/"
mkdir -p "$HOME/.local/share/citra-emu/sysdata"
ln -sn "$HOME/.local/share/citra-emu/sysdata" "${biosPath}/citra/keys"
}
#SetupSaves
Citra_setupSaves(){
mkdir -p "$HOME/.local/share/citra-emu/states"
linkToSaveFolder citra saves "$storagePath/citra/sdmc"
linkToSaveFolder citra states "$HOME/.local/share/citra-emu/states"
}
#Set up textures
Citra_setupTextures(){
mkdir -p "$HOME/.local/share/citra-emu/load/textures"
linkToTexturesFolder citra textures "$HOME/.local/share/citra-emu/load/textures"
}
#WipeSettings
Citra_wipe(){
setMSG "Wiping $Citra_emuName config directory. (factory reset)"
rm -rf "$HOME/.config/citra-emu"
}
#Uninstall
Citra_uninstall(){
setMSG "Uninstalling $Citra_emuName."
uninstallEmuAI $Citra_emuName "citra-qt" "" "emulator"
}
#setABXYstyle
Citra_setABXYstyle(){
sed -i '/button_a/s/button:1/button:0/' "$Citra_configFile"
sed -i '/button_b/s/button:0/button:1/' "$Citra_configFile"
sed -i '/button_x/s/button:3/button:2/' "$Citra_configFile"
sed -i '/button_y/s/button:2/button:3/' "$Citra_configFile"
}
Citra_setBAYXstyle(){
sed -i '/button_a/s/button:0/button:1/' "$Citra_configFile"
sed -i '/button_b/s/button:1/button:0/' "$Citra_configFile"
sed -i '/button_x/s/button:2/button:3/' "$Citra_configFile"
sed -i '/button_y/s/button:3/button:2/' "$Citra_configFile"
}
#finalExec - Extra stuff
Citra_finalize(){
echo "NYI"
}
Citra_IsInstalled(){
if [ -e "$Citra_emuPath" ]; then
echo "true"
else
echo "false"
fi
}
Citra_resetConfig(){
Citra_init &>/dev/null && echo "true" || echo "false"
}
Citra_addSteamInputProfile(){
addSteamInputCustomIcons
setMSG "Adding $Citra_emuName Steam Input Profile."
#rsync -r "$emudeckBackend/configs/steam-input/citra_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
rsync -r --exclude='*/' "$emudeckBackend/configs/steam-input/" "$HOME/.steam/steam/controller_base/templates/"
}
Citra_setResolution(){
case $citraResolution in
"720P") multiplier=3;;
"1080P") multiplier=5;;
"1440P") multiplier=6;;
"4K") multiplier=9;;
*) echo "Error"; return 1;;
esac
setConfig "resolution_factor" $multiplier "$Citra_configFile"
}
Citra_flushEmulatorLauncher(){
flushEmulatorLaunchers "citra"
}
Citra_flushSymlinks(){
if [ -d "${HOME}/.local/share/Steam" ]; then
STEAMPATH="${HOME}/.local/share/Steam"
elif [ -d "${HOME}/.steam/steam" ]; then
STEAMPATH="${HOME}/.steam/steam"
else
echo "Steam install not found"
fi
if [ ! -f "$emudeckFolder/.citralegacysymlinks" ] && [ -f "$emudeckFolder/.citrasymlinks" ]; then
mkdir -p "$romsPath/n3ds"
# Temporary deletion to check if there are any additional contents in the n3ds folder.
rm -rf "$romsPath/n3ds/media" &> /dev/null
rm -rf "$romsPath/n3ds/metadata.txt" &> /dev/null
rm -rf "$romsPath/n3ds/systeminfo.txt" &> /dev/null
# The Pegasus install was accidentally overwriting the pre-existing n3ds symlink.
# This checks if the n3ds folder is empty (post-removing the contents above) and if the original 3ds folder is still a folder and not a symlink (for those who have already migrated).
# If all of this is true, the n3ds folder is deleted and the old symlink is temporarily recreated to proceed with the migration.
if [[ ! "$( ls -A "$romsPath/n3ds")" ]] && [ -d "$romsPath/3ds" ] && [ ! -L "$romsPath/3ds" ]; then
rm -rf "$romsPath/n3ds"
ln -sfn "$romsPath/3ds" "$romsPath/n3ds"
# Temporarily restores old directory structure.
fi
if [[ -L "$romsPath/n3ds" && ! $(readlink -f "$romsPath/n3ds") =~ ^"$romsPath" ]] || [[ -L "$romsPath/3ds" && ! $(readlink -f "$romsPath/3ds") =~ ^"$romsPath" ]]; then
echo "User has symlinks that don't match expected paths located under $romsPath. Aborting symlink update."
else
if [[ ! -e "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
mkdir -p "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
elif [[ -d "$romsPath/3ds" && -L "$romsPath/n3ds" ]]; then
echo "Converting n3ds symlink to a regular directory..."
unlink "$romsPath/n3ds"
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
echo "Creating n3ds directory and updating 3ds symlink..."
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/n3ds" && ! -e "$romsPath/3ds" ]]; then
echo "3ds symlink not found, creating..."
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink created"
fi
fi
rsync -avh "$emudeckBackend/roms/n3ds/." "$romsPath/n3ds/." --ignore-existing
if [ -d "$toolsPath/downloaded_media/n3ds" ] && [ ! -d "$romsPath/n3ds/media" ]; then
ln -s "$toolsPath/downloaded_media/n3ds" "$romsPath/n3ds/media"
fi
find "$STEAMPATH/userdata" -name "shortcuts.vdf" -exec sed -i "s|${romsPath}/3ds|${romsPath}/n3ds|g" {} +
touch "$emudeckFolder/.citralegacysymlinks"
echo "Citra symlink cleanup completed."
else
echo "Citra symlinks already cleaned."
fi
if [ ! -f "$emudeckFolder/.citrasymlinks" ]; then
mkdir -p "$romsPath/n3ds"
# Temporary deletion to check if there are any additional contents in the n3ds folder.
rm -rf "$romsPath/n3ds/media" &> /dev/null
rm -rf "$romsPath/n3ds/metadata.txt" &> /dev/null
rm -rf "$romsPath/n3ds/systeminfo.txt" &> /dev/null
# The Pegasus install was accidentally overwriting the pre-existing n3ds symlink.
# This checks if the n3ds folder is empty (post-removing the contents above) and if the original 3ds folder is still a folder and not a symlink (for those who have already migrated).
# If all of this is true, the n3ds folder is deleted and the old symlink is temporarily recreated to proceed with the migration.
if [[ ! "$( ls -A "$romsPath/n3ds")" ]] && [ -d "$romsPath/3ds" ] && [ ! -L "$romsPath/3ds" ]; then
rm -rf "$romsPath/n3ds"
ln -sfn "$romsPath/3ds" "$romsPath/n3ds"
# Temporarily restores old directory structure.
fi
if [[ -L "$romsPath/n3ds" && ! $(readlink -f "$romsPath/n3ds") =~ ^"$romsPath" ]] || [[ -L "$romsPath/3ds" && ! $(readlink -f "$romsPath/3ds") =~ ^"$romsPath" ]]; then
echo "User has symlinks that don't match expected paths located under $romsPath. Aborting symlink update."
else
if [[ ! -e "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
mkdir -p "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
elif [[ -d "$romsPath/3ds" && -L "$romsPath/n3ds" ]]; then
echo "Converting n3ds symlink to a regular directory..."
unlink "$romsPath/n3ds"
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
echo "Creating n3ds directory and updating 3ds symlink..."
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/n3ds" && ! -e "$romsPath/3ds" ]]; then
echo "3ds symlink not found, creating..."
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink created"
fi
fi
rsync -avh "$emudeckBackend/roms/n3ds/." "$romsPath/n3ds/." --ignore-existing
if [ -d "$toolsPath/downloaded_media/n3ds" ] && [ ! -d "$romsPath/n3ds/media" ]; then
ln -s "$toolsPath/downloaded_media/n3ds" "$romsPath/n3ds/media"
fi
find "$STEAMPATH/userdata" -name "shortcuts.vdf" -exec sed -i "s|${romsPath}/3ds|${romsPath}/n3ds|g" {} +
touch "$emudeckFolder/.citrasymlinks"
echo "Citra symlink cleanup completed."
else
echo "Citra symlinks already cleaned."
fi
}

View File

@ -1,198 +0,0 @@
#!/bin/bash
#variables
Citra_emuName="Citra"
Citra_emuType="FlatPak"
Citra_emuPath="org.citra_emu.citra"
Citra_releaseURL=""
Citra_configFile="$HOME/.var/app/org.citra_emu.citra/config/citra-emu/qt-config.ini"
Citra_texturesPath="$HOME/.var/app/$Citra_emuPath/data/citra-emu/load/textures"
#cleanupOlderThings
Citra_finalize(){
echo "NYI"
}
#Install
Citra_install(){
setMSG "Installing $Citra_emuName"
installEmuFP "${Citra_emuName}" "${Citra_emuPath}"
}
#ApplyInitialSettings
Citra_init(){
setMSG "Initializing $Citra_emuName settings."
configEmuFP "${Citra_emuName}" "${Citra_emuPath}" "true"
Citra_setupStorage
Citra_setEmulationFolder
Citra_setupSaves
#SRM_createParsers
#Citra_addSteamInputProfile
}
#update
Citra_update(){
setMSG "Updating $Citra_emuName settings."
configEmuFP "${Citra_emuName}" "${Citra_emuPath}"
Citra_setupStorage
Citra_setEmulationFolder
Citra_setupSaves
#Citra_addSteamInputProfile
}
#ConfigurePaths
Citra_setEmulationFolder(){
setMSG "Setting $Citra_emuName Emulation Folder"
gameDirOpt='Paths\\gamedirs\\3\\path='
newGameDirOpt='Paths\\gamedirs\\3\\path='"${romsPath}/3ds"
sed -i "/${gameDirOpt}/c\\${newGameDirOpt}" "$Citra_configFile"
#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"
}
#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"
}
#SetupStorage
Citra_setupStorage(){
if [ -d "${HOME}/.local/share/Steam" ]; then
STEAMPATH="${HOME}/.local/share/Steam"
elif [ -d "${HOME}/.steam/steam" ]; then
STEAMPATH="${HOME}/.steam/steam"
else
echo "Steam install not found"
fi
if [[ -L "$romsPath/n3ds" && ! $(readlink -f "$romsPath/n3ds") =~ ^"$romsPath" ]] || [[ -L "$romsPath/3ds" && ! $(readlink -f "$romsPath/3ds") =~ ^"$romsPath" ]]; then
echo "User has symlinks that don't match expected paths located under $romsPath. Aborting symlink update."
else
if [[ ! -e "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
mkdir -p "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
elif [[ -d "$romsPath/3ds" && -L "$romsPath/n3ds" ]]; then
echo "Converting n3ds symlink to a regular directory..."
unlink "$romsPath/n3ds"
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/3ds" && ! -e "$romsPath/n3ds" ]]; then
echo "Creating n3ds directory and updating 3ds symlink..."
mv "$romsPath/3ds" "$romsPath/n3ds"
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink updated to point to n3ds"
elif [[ -d "$romsPath/n3ds" && ! -e "$romsPath/3ds" ]]; then
echo "3ds symlink not found, creating..."
ln -sfn "$romsPath/n3ds" "$romsPath/3ds"
echo "3ds symlink created"
fi
fi
find "$STEAMPATH/userdata" -name "shortcuts.vdf" -exec sed -i "s|${romsPath}/n3ds|${romsPath}/3ds|g" {} +
local textureLink="$(readlink -f "$Citra_texturesPath")"
if [[ "$textureLink" != "$emulationPath/hdpacks/3ds" ]]; then
rm -rf "$Citra_texturesPath"
ln -s "$Citra_texturesPath" "$emulationPath/hdpacks/3ds"
fi
if [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.var/app/org.ctira_emu.citra/data/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/
unlink "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/"
unlink "$HOME/.var/app/org.ctira_emu.citra/data/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/"
fi
}
#WipeSettings
Citra_wipe(){
setMSG "Wiping $Citra_emuName config directory. (factory reset)"
rm -rf "$HOME/.var/app/$Citra_emuPath"
}
#Uninstall
Citra_uninstall(){
setMSG "Uninstalling $Citra_emuName."
flatpak uninstall "$Citra_emuPath" --user -y
}
#setABXYstyle
Citra_setABXYstyle(){
echo "NYI"
}
#Migrate
Citra_migrate(){
echo "NYI"
}
#WideScreenOn
Citra_wideScreenOn(){
echo "NYI"
}
#WideScreenOff
Citra_wideScreenOff(){
echo "NYI"
}
#BezelOn
Citra_bezelOn(){
echo "NYI"
}
#BezelOff
Citra_bezelOff(){
echo "NYI"
}
#finalExec - Extra stuff
Citra_finalize(){
echo "NYI"
}
Citra_IsInstalled(){
isFpInstalled "$Citra_emuPath"
}
Citra_resetConfig(){
Citra_init &>/dev/null && echo "true" || echo "false"
}
Citra_addSteamInputProfile(){
addSteamInputCustomIcons
rsync -r "$emudeckBackend/configs/steam-input/citra_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
}
Citra_setResolution(){
case $citraResolution in
"720P") multiplier=3;;
"1080P") multiplier=5;;
"1440P") multiplier=6;;
"4K") multiplier=9;;
*) echo "Error"; return 1;;
esac
setConfig "resolution_factor" $multiplier "$Citra_configFile"
}

View File

@ -1,296 +0,0 @@
#!/bin/bash
#variables
Lime3DS_emuName="Lime3DS"
Lime3DS_emuType="$emuDeckEmuTypeAppImage"
Lime3DS_emuPath="$emusFolder/lime3ds-gui.AppImage"
Lime3DS_releaseURL=""
Lime3DS_configFile="$HOME/.config/lime3ds-emu/qt-config.ini"
Lime3DS_configPath="$HOME/.config/lime3ds-emu"
Lime3DS_texturesPath="$HOME/.config/lime3ds-emu/load/textures"
#Install
Lime3DS_install(){
echo "Begin $Lime3DS_emuName Install"
local showProgress="$1"
if installEmuAI "$Lime3DS_emuName" "" "$(getReleaseURLGH "Lime3DS/lime3ds-archive" "tar.gz" "")" "lime3ds" "tar.gz" "emulator" "$showProgress"; then #lime3ds-gui.AppImage
mkdir "$emusFolder/lime3ds-temp"
tar -xvzf "$emusFolder/lime3ds.tar.gz" -C "$emusFolder/lime3ds-temp" --strip-components 1
if [ -f "$emusFolder/lime3ds-temp/lime3ds-gui.AppImage" ]; then
mv "$emusFolder/lime3ds-temp/lime3ds-gui.AppImage" "$Lime3DS_emuPath"
elif [ -f "$emusFolder/lime3ds-temp/lime3ds.AppImage" ]; then
mv "$emusFolder/lime3ds-temp/lime3ds.AppImage" "$Lime3DS_emuPath"
else
rm -rf "$emusFolder/lime3ds-temp"
rm -rf "$emusFolder/lime3ds.tar.gz"
return 1
fi
chmod +x "$emusFolder/lime3ds-gui.AppImage"
rm -rf "$emusFolder/lime3ds-temp"
rm -rf "$emusFolder/lime3ds.tar.gz"
else
return 1
fi
}
#ApplyInitialSettings
Lime3DS_init(){
setMSG "Initializing $Lime3DS_emuName settings."
configEmuAI "$Lime3DS_emuName" "lime3ds-emu" "$Lime3DS_configPath" "$emudeckBackend/configs/lime3ds" "true"
Lime3DS_setEmulationFolder
Lime3DS_setupStorage
Lime3DS_setupSaves
Lime3DS_addSteamInputProfile
Lime3DS_flushEmulatorLauncher
Lime3DS_setupTextures
Lime3DS_addParser
}
#update
Lime3DS_update(){
setMSG "Updating $Lime3DS_emuName settings."
configEmuAI "$Lime3DS_emuName" "lime3ds-emu" "$Lime3DS_configPath" "$emudeckBackend/configs/lime3ds"
Lime3DS_setupStorage
Lime3DS_setEmulationFolder
Lime3DS_setupSaves
Lime3DS_addSteamInputProfile
Lime3DS_flushEmulatorLauncher
Lime3DS_setupTextures
}
Lime3DS_setupStorage(){
mkdir -p "$storagePath/lime3ds/"
if [ ! -d "$storagePath/lime3ds/sdmc" ] && [ ! -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/sdmc" -o ! -d "$HOME/.local/share/lime3ds-emu" ] && [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" -o -d "$HOME/.local/share/citra-emu/sdmc" -o -d "$storagePath/citra/sdmc" ]; then
echo "Lime3DS SDMC does not exist in storage path and does not exist in the original Flatpak or AppImage paths. Citra SDMC folder found, copying Citra SDMC folder."
echo -e ""
setMSG "Copying Citra SDMC to the Lime3DS SDMC folder"
echo -e ""
mkdir -p "$storagePath/lime3ds"
if [ -d "$storagePath/citra/sdmc" ]; then
rsync -av --ignore-existing "$storagePath/citra/sdmc" "$storagePath"/lime3ds
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/sdmc" "$storagePath"/lime3ds
elif [ -d "$HOME/.local/share/citra-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.local/share/citra-emu/sdmc" "$storagePath"/lime3ds
else
mkdir -p "$storagePath/citra/sdmc"
fi
fi
if [ ! -d "$storagePath/lime3ds/sdmc" ] && [ -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/sdmc" -o -d "$HOME/.local/share/lime3ds-emu/sdmc" ]; then
echo "Lime3DS SDMC does not exist in storage path. Found Lime3DS SDMC in original path, copying to storage folder."
echo -e ""
setMSG "Copying Lime3DS SDMC to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/lime3ds"
if [ -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/sdmc" "$storagePath"/lime3ds/ && rm -rf "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/sdmc"
elif [ -d "$HOME/.local/share/lime3ds-emu/sdmc" ]; then
rsync -av --ignore-existing "$HOME/.local/share/lime3ds-emu/sdmc" "$storagePath"/lime3ds/ && rm -rf "$HOME/.local/share/lime3ds-emu/sdmc"
else
mkdir -p "$storagePath/lime3ds/sdmc"
fi
else
echo "Lime3DS SDMC does not exist anywhere. Creating SDMC folder."
mkdir -p "$storagePath/lime3ds/sdmc"
fi
if [ ! -d "$storagePath/lime3ds/nand" ] && [ ! -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/nand" -o ! -d "$HOME/.local/share/lime3ds-emu" ] && [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" -o -d "$HOME/.local/share/citra-emu/nand" -o -d "$storagePath/citra/nand" ]; then
echo "Lime3DS NAND does not exist in storage path and does not exist in the original Flatpak or AppImage paths. Citra NAND folder found, copying Citra NAND folder."
echo -e ""
setMSG "Copying Citra NAND to the Lime3DS folder"
echo -e ""
mkdir -p "$storagePath/lime3ds"
if [ -d "$storagePath/citra/nand" ]; then
rsync -av --ignore-existing "$storagePath/citra/nand" "$storagePath"/lime3ds
elif [ -d "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.var/app/org.citra_emu.citra/data/citra-emu/nand" "$storagePath"/lime3ds
elif [ -d "$HOME/.local/share/citra-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.local/share/citra-emu/nand" "$storagePath"/lime3ds
else
mkdir -p "$storagePath/citra/nand"
fi
fi
if [ ! -d "$storagePath/lime3ds/nand" ] && [ -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/nand" -o -d "$HOME/.local/share/lime3ds-emu/nand" ]; then
echo "Lime3DS NAND does not exist in storage path. Found Lime3DS NAND in original path, copying to storage folder."
echo -e ""
setMSG "Copying Citra NAND to the Lime3DS NAND folder"
echo -e ""
mkdir -p "$storagePath/lime3ds"
if [ -d "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/nand" "$storagePath"/lime3ds/ && rm -rf "$HOME/.var/app/io.github.lime3ds.Lime3DS/data/lime3ds-emu/nand"
elif [ -d "$HOME/.local/share/lime3ds-emu/nand" ]; then
rsync -av --ignore-existing "$HOME/.local/share/lime3ds-emu/nand" "$storagePath"/lime3ds/ && rm -rf "$HOME/.local/share/lime3ds-emu/nand"
else
mkdir -p "$storagePath/lime3ds/nand"
fi
else
echo "Lime3DS NAND does not exist anywhere. Creating NAND folder."
mkdir -p "$storagePath/lime3ds/nand"
fi
# Cheats and Texture Packs
# Cheats
mkdir -p "$HOME/.local/share/lime3ds-emu/cheats"
linkToStorageFolder lime3ds cheats "$HOME/.local/share/lime3ds-emu/cheats"
# Texture Pack
mkdir -p "$HOME/.local/share/lime3ds-emu/load/textures"
linkToStorageFolder lime3ds textures "$HOME/.local/share/lime3ds-emu/load/textures"
}
#ConfigurePaths
Lime3DS_setEmulationFolder(){
setMSG "Setting $Lime3DS_emuName Emulation Folder"
mkdir -p "$Lime3DS_configPath"
gameDirOpt='Paths\\gamedirs\\3\\path='
newGameDirOpt='Paths\\gamedirs\\3\\path='"${romsPath}/n3ds"
sed -i "/${gameDirOpt}/c\\${newGameDirOpt}" "$Lime3DS_configFile"
nandDirOpt='nand_directory='
newnandDirOpt='nand_directory='"$storagePath/lime3ds/nand/"
sed -i "/${nandDirOpt}/c\\${newnandDirOpt}" "$Lime3DS_configFile"
sdmcDirOpt='sdmc_directory='
newsdmcDirOpt='sdmc_directory='"$storagePath/lime3ds/sdmc/"
sed -i "/${sdmcDirOpt}/c\\${newsdmcDirOpt}" "$Lime3DS_configFile"
mkdir -p "$storagePath/lime3ds/screenshots/"
screenshotsDirOpt='Paths\\screenshotPath='
newscreenshotDirOpt='Paths\\screenshotPath='"$storagePath/lime3ds/screenshots/"
sed -i "/${screenshotsDirOpt}/c\\${newscreenshotDirOpt}" "$Lime3DS_configFile"
# True/False configs
sed -i 's/nand_directory\\default=true/nand_directory\\default=false/' "$Lime3DS_configFile"
sed -i 's/sdmc_directory\\default=true/sdmc_directory\\default=false/' "$Lime3DS_configFile"
sed -i 's/use_custom_storage=false/use_custom_storage=true/' "$Lime3DS_configFile"
sed -i 's/use_custom_storage\\default=true/use_custom_storage\\default=false/' "$Lime3DS_configFile"
# Vulkan Graphics
sed -E 's/layout_option=[0-9]+/layout_option=5/g' "$Lime3DS_configFile"
sed -i 's/layout_option\\default=true/layout_option\\default=false/' "$Lime3DS_configFile"
#Setup symlink for AES keys
mkdir -p "${biosPath}/lime3ds/"
mkdir -p "$HOME/.local/share/lime3ds-emu/sysdata"
ln -sn "$HOME/.local/share/lime3ds-emu/sysdata" "${biosPath}/lime3ds/keys"
}
#SetupSaves
Lime3DS_setupSaves(){
mkdir -p "$HOME/.local/share/lime3ds-emu/states"
linkToSaveFolder lime3ds saves "$storagePath/lime3ds/sdmc"
linkToSaveFolder lime3ds states "$HOME/.local/share/lime3ds-emu/states"
}
#Set up textures
Lime3DS_setupTextures(){
mkdir -p "$HOME/.local/share/lime3ds-emu/load/textures"
linkToTexturesFolder lime3ds textures "$HOME/.local/share/lime3ds-emu/load/textures"
}
#WipeSettings
Lime3DS_wipe(){
setMSG "Wiping $Lime3DS_emuName config directory. (factory reset)"
rm -rf "$HOME/.config/lime3ds-emu"
}
#Uninstall
Lime3DS_uninstall(){
setMSG "Uninstalling $Lime3DS_emuName."
removeParser "nintendo_3ds_lime3ds.json"
uninstallEmuAI $Lime3DS_emuName "lime3ds-gui" "" "emulator"
}
#setABXYstyle
Lime3DS_setABXYstyle(){
sed -i '/button_a/s/button:1/button:0/' "$Lime3DS_configFile"
sed -i '/button_b/s/button:0/button:1/' "$Lime3DS_configFile"
sed -i '/button_x/s/button:3/button:2/' "$Lime3DS_configFile"
sed -i '/button_y/s/button:2/button:3/' "$Lime3DS_configFile"
}
Lime3DS_setBAYXstyle(){
sed -i '/button_a/s/button:0/button:1/' "$Lime3DS_configFile"
sed -i '/button_b/s/button:1/button:0/' "$Lime3DS_configFile"
sed -i '/button_x/s/button:2/button:3/' "$Lime3DS_configFile"
sed -i '/button_y/s/button:3/button:2/' "$Lime3DS_configFile"
}
#finalExec - Extra stuff
Lime3DS_finalize(){
echo "NYI"
}
Lime3DS_IsInstalled(){
if [ -e "$Lime3DS_emuPath" ]; then
echo "true"
else
echo "false"
fi
}
Lime3DS_resetConfig(){
Lime3DS_init &>/dev/null && echo "true" || echo "false"
}
Lime3DS_addSteamInputProfile(){
addSteamInputCustomIcons
setMSG "Adding $Lime3DS_emuName Steam Input Profile."
#rsync -r "$emudeckBackend/configs/steam-input/Lime3DS_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
rsync -r --exclude='*/' "$emudeckBackend/configs/steam-input/" "$HOME/.steam/steam/controller_base/templates/"
}
Lime3DS_setResolution(){
case $lime3dsResolution in
"720P") multiplier=3;;
"1080P") multiplier=5;;
"1440P") multiplier=6;;
"4K") multiplier=9;;
*) echo "Error"; return 1;;
esac
setConfig "resolution_factor" $multiplier "$Lime3DS_configFile"
}
Lime3DS_flushEmulatorLauncher(){
flushEmulatorLaunchers "lime3ds"
}
Lime3DS_addParser(){
addParser "nintendo_3ds_lime3ds.json"
}

View File

@ -59,7 +59,7 @@ Migration_updatePaths(){
#Emu configs #Emu configs
#Cemu #Cemu
sed -i "s|${origin}|${destination}|g" "$Lime3DS_configFile" sed -i "s|${origin}|${destination}|g" "$Azahar_configFile"
#Citra #Citra
sed -i "s|${origin}|${destination}|g" "$Citra_configFile" sed -i "s|${origin}|${destination}|g" "$Citra_configFile"
#Citra #Citra

View File

@ -52,7 +52,7 @@ pegasus_setPaths(){
cp "$emudeckBackend/roms_alt_emus/gba/metadata.txt" "$romsPath/gba/metadata.txt" cp "$emudeckBackend/roms_alt_emus/gba/metadata.txt" "$romsPath/gba/metadata.txt"
fi fi
if [ "$(Lime3DS_IsInstalled)" == "true" ]; then if [ "$(Azahar_IsInstalled)" == "true" ]; then
cp "$emudeckBackend/roms_alt_emus/n3ds/metadata.txt" "$romsPath/n3ds/metadata.txt" cp "$emudeckBackend/roms_alt_emus/n3ds/metadata.txt" "$romsPath/n3ds/metadata.txt"
fi fi

View File

@ -232,7 +232,7 @@ SRM_addExtraParsers(){
for install_command in \ for install_command in \
"BigPEmu_IsInstalled BigPEmu_addParser" \ "BigPEmu_IsInstalled BigPEmu_addParser" \
"Flycast_IsInstalled Flycast_addParser" \ "Flycast_IsInstalled Flycast_addParser" \
"Lime3DS_IsInstalled Lime3DS_addParser" \ "Azahar_IsInstalled Azahar_addParser" \
"MAME_IsInstalled MAME_addParser" \ "MAME_IsInstalled MAME_addParser" \
"mGBA_IsInstalled mGBA_addParser" \ "mGBA_IsInstalled mGBA_addParser" \
"melonDS_IsInstalled melonDS_addParser" \ "melonDS_IsInstalled melonDS_addParser" \

View File

@ -85,8 +85,7 @@ source "$emudeckBackend"/functions/EmuScripts/emuDeckYuzu.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckCemu.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckCemu.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckCemuProton.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckCemuProton.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckRPCS3.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckRPCS3.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckCitra.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckAzahar.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckLime3DS.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckDolphin.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckDolphin.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckPrimehack.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckPrimehack.sh
source "$emudeckBackend"/functions/EmuScripts/emuDeckRetroArch.sh source "$emudeckBackend"/functions/EmuScripts/emuDeckRetroArch.sh

View File

@ -276,7 +276,6 @@ function createUpdateSettingsFile(){
#defaultSettingsList+=("doSetupPCSX2=true") #defaultSettingsList+=("doSetupPCSX2=true")
defaultSettingsList+=("doSetupRPCS3=true") defaultSettingsList+=("doSetupRPCS3=true")
defaultSettingsList+=("doSetupYuzu=true") defaultSettingsList+=("doSetupYuzu=true")
defaultSettingsList+=("doSetupCitra=true")
defaultSettingsList+=("doSetupDuck=true") defaultSettingsList+=("doSetupDuck=true")
defaultSettingsList+=("doSetupCemu=true") defaultSettingsList+=("doSetupCemu=true")
defaultSettingsList+=("doSetupXenia=false") defaultSettingsList+=("doSetupXenia=false")
@ -307,7 +306,6 @@ function createUpdateSettingsFile(){
defaultSettingsList+=("doInstallRyujinx=true") defaultSettingsList+=("doInstallRyujinx=true")
defaultSettingsList+=("doInstallRPCS3=true") defaultSettingsList+=("doInstallRPCS3=true")
defaultSettingsList+=("doInstallYuzu=true") defaultSettingsList+=("doInstallYuzu=true")
defaultSettingsList+=("doInstallCitra=true")
defaultSettingsList+=("doInstallDuck=true") defaultSettingsList+=("doInstallDuck=true")
defaultSettingsList+=("doInstallCemu=true") defaultSettingsList+=("doInstallCemu=true")
defaultSettingsList+=("doInstallXenia=true") defaultSettingsList+=("doInstallXenia=true")
@ -866,7 +864,7 @@ zipLogs() {
setResolutions(){ setResolutions(){
Cemu_setResolution Cemu_setResolution
Citra_setResolution Azahar_setResolution
Dolphin_setResolution Dolphin_setResolution
DuckStation_setResolution DuckStation_setResolution
Flycast_setResolution Flycast_setResolution
@ -906,7 +904,7 @@ scriptConfigFileGetVar() {
getEmuRepo() { getEmuRepo() {
case "$1" in case "$1" in
"cemu") repo="cemu-project/Cemu" ;; "cemu") repo="cemu-project/Cemu" ;;
"citra") repo="citra-emu/citra-nightly" ;; "azahar") repo="azahar-emu/azahar" ;;
"dolphin") repo="shiiion/dolphin" ;; "dolphin") repo="shiiion/dolphin" ;;
"duckstation") repo="stenzek/duckstation" ;; "duckstation") repo="stenzek/duckstation" ;;
"flycast") repo="flyinghead/flycast" ;; "flycast") repo="flyinghead/flycast" ;;
@ -1109,8 +1107,7 @@ function storePatreonToken(){
function controllerLayout_ABXY(){ function controllerLayout_ABXY(){
Cemu_setABXYstyle Cemu_setABXYstyle
Citra_setABXYstyle Azahar_setABXYstyle
Lime3DS_setABXYstyle
Dolphin_setABXYstyle Dolphin_setABXYstyle
melonDS_setABXYstyle melonDS_setABXYstyle
RetroArch_setABXYstyle RetroArch_setABXYstyle
@ -1120,9 +1117,8 @@ function controllerLayout_ABXY(){
function controllerLayout_BAYX(){ function controllerLayout_BAYX(){
Cemu_setBAYXstyle Cemu_setBAYXstyle
Citra_setBAYXstyle
Dolphin_setBAYXstyle Dolphin_setBAYXstyle
Lime3DS_setBAYXstyle Azahar_setBAYXstyle
melonDS_setBAYXstyle melonDS_setBAYXstyle
RetroArch_setBAYXstyle RetroArch_setBAYXstyle
RMG_setBAYXstyle RMG_setBAYXstyle
@ -1202,8 +1198,7 @@ function flushAllLaunchers(){
"$doSetupDolphin Dolphin_flushEmulatorLauncher" \ "$doSetupDolphin Dolphin_flushEmulatorLauncher" \
"$doSetupPCSX2QT PCSX2QT_flushEmulatorLauncher" \ "$doSetupPCSX2QT PCSX2QT_flushEmulatorLauncher" \
"$doSetupRPCS3 RPCS3_flushEmulatorLauncher" \ "$doSetupRPCS3 RPCS3_flushEmulatorLauncher" \
"$doSetupCitra Citra_flushEmulatorLauncher" \ "$doSetupAzahar Azahar_flushEmulatorLauncher" \
"$doSetupLime3DS Lime3DS_flushEmulatorLauncher" \
"$doSetupDuck DuckStation_flushEmulatorLauncher" \ "$doSetupDuck DuckStation_flushEmulatorLauncher" \
"$doSetupYuzu Yuzu_flushEmulatorLauncher" \ "$doSetupYuzu Yuzu_flushEmulatorLauncher" \
"$doSetupRyujinx Ryujinx_flushEmulatorLauncher" \ "$doSetupRyujinx Ryujinx_flushEmulatorLauncher" \

View File

@ -10,8 +10,7 @@ function jsonToBashVars(){
setSetting doInstallRPCS3 "$(jq .installEmus.rpcs3.status $json)" setSetting doInstallRPCS3 "$(jq .installEmus.rpcs3.status $json)"
setSetting doInstallYuzu "$(jq .installEmus.yuzu.status $json)" setSetting doInstallYuzu "$(jq .installEmus.yuzu.status $json)"
setSetting doInstallSuyu "$(jq .installEmus.suyu.status $json)" setSetting doInstallSuyu "$(jq .installEmus.suyu.status $json)"
setSetting doInstallCitra "$(jq .installEmus.citra.status $json)" setSetting doInstallAzahar "$(jq .installEmus.azahar.status $json)"
setSetting doInstallLime3DS "$(jq .installEmus.lime3ds.status $json)"
setSetting doInstallDuck "$(jq .installEmus.duckstation.status $json)" setSetting doInstallDuck "$(jq .installEmus.duckstation.status $json)"
setSetting doInstallCemu "$(jq .installEmus.cemu.status $json)" setSetting doInstallCemu "$(jq .installEmus.cemu.status $json)"
setSetting doInstallXenia "$(jq .installEmus.xenia.status $json)" setSetting doInstallXenia "$(jq .installEmus.xenia.status $json)"
@ -42,8 +41,7 @@ function jsonToBashVars(){
setSetting doSetupRPCS3 "$(jq .overwriteConfigEmus.rpcs3.status $json)" setSetting doSetupRPCS3 "$(jq .overwriteConfigEmus.rpcs3.status $json)"
setSetting doSetupYuzu "$(jq .overwriteConfigEmus.yuzu.status $json)" setSetting doSetupYuzu "$(jq .overwriteConfigEmus.yuzu.status $json)"
setSetting doSetupSuyu "$(jq .overwriteConfigEmus.suyu.status $json)" setSetting doSetupSuyu "$(jq .overwriteConfigEmus.suyu.status $json)"
setSetting doSetupCitra "$(jq .overwriteConfigEmus.citra.status $json)" setSetting doSetupAzahar "$(jq .overwriteConfigEmus.azahar.status $json)"
setSetting doSetupLime3DS "$(jq .overwriteConfigEmus.lime3ds.status $json)"
setSetting doSetupDuck "$(jq .overwriteConfigEmus.duckstation.status $json)" setSetting doSetupDuck "$(jq .overwriteConfigEmus.duckstation.status $json)"
setSetting doSetupCemu "$(jq .overwriteConfigEmus.cemu.status $json)" setSetting doSetupCemu "$(jq .overwriteConfigEmus.cemu.status $json)"
setSetting doSetupXenia "$(jq .overwriteConfigEmus.xenia.status $json)" setSetting doSetupXenia "$(jq .overwriteConfigEmus.xenia.status $json)"
@ -143,16 +141,14 @@ function jsonToBashVars(){
setSetting androidInstallRA "$(jq .android.installEmus.ra.status $json)" setSetting androidInstallRA "$(jq .android.installEmus.ra.status $json)"
setSetting androidInstallDolphin "$(jq .android.installEmus.dolphin.status $json)" setSetting androidInstallDolphin "$(jq .android.installEmus.dolphin.status $json)"
setSetting androidInstallPPSSPP "$(jq .android.installEmus.ppsspp.status $json)" setSetting androidInstallPPSSPP "$(jq .android.installEmus.ppsspp.status $json)"
setSetting androidInstallCitraMMJ "$(jq .android.installEmus.citrammj.status $json)" setSetting androidInstallAzahar "$(jq .android.installEmus.azahar.status $json)"
setSetting androidInstallLime3DS "$(jq .android.installEmus.lime3ds.status $json)"
setSetting androidInstallNetherSX2 "$(jq .android.installEmus.nethersx2.status $json)" setSetting androidInstallNetherSX2 "$(jq .android.installEmus.nethersx2.status $json)"
setSetting androidInstallScummVM "$(jq .android.installEmus.scummvm.status $json)" setSetting androidInstallScummVM "$(jq .android.installEmus.scummvm.status $json)"
setSetting androidSetupRA "$(jq .android.overwriteConfigEmus.ra.status $json)" setSetting androidSetupRA "$(jq .android.overwriteConfigEmus.ra.status $json)"
setSetting androidSetupDolphin "$(jq .android.overwriteConfigEmus.dolphin.status $json)" setSetting androidSetupDolphin "$(jq .android.overwriteConfigEmus.dolphin.status $json)"
setSetting androidSetupPPSSPP "$(jq .android.overwriteConfigEmus.ppsspp.status $json)" setSetting androidSetupPPSSPP "$(jq .android.overwriteConfigEmus.ppsspp.status $json)"
setSetting androidSetupCitraMMJ "$(jq .android.overwriteConfigEmus.citrammj.status $json)" setSetting androidSetupAzahar "$(jq .android.overwriteConfigEmus.azahar.status $json)"
setSetting androidSetupLime3DS "$(jq .android.overwriteConfigEmus.lime3ds.status $json)"
setSetting androidSetupNetherSX2 "$(jq .android.overwriteConfigEmus.nethersx2.status $json)" setSetting androidSetupNetherSX2 "$(jq .android.overwriteConfigEmus.nethersx2.status $json)"
setSetting androidSetupScummVM "$(jq .android.overwriteConfigEmus.scummvm.status $json)" setSetting androidSetupScummVM "$(jq .android.overwriteConfigEmus.scummvm.status $json)"

View File

@ -1,4 +1,4 @@
collection: Nintendo 3DS collection: Nintendo 3DS
shortname: n3ds shortname: n3ds
extensions: 3ds, 3DS, 3dsx, 3DSX, app, APP, axf, AXF, cii, CII, cxi, CXI, elf, ELF, cci, CCI extensions: 3dsx, 3DSX, app, APP, axf, AXF, cii, CII, cxi, CXI, elf, ELF, cci, CCI
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/citra.sh {file.path} launch: /run/media/mmcblk0p1/Emulation/tools/launchers/azahar.sh {file.path}

View File

@ -5,7 +5,7 @@ Full system name:
Nintendo 3DS Nintendo 3DS
Supported file extensions: Supported file extensions:
.3ds .3DS .3dsx .3DSX .app .APP .axf .AXF .cci .CCI .cxi .CXI .elf .ELF .7z .7Z .zip .ZIP .3dsx .3DSX .app .APP .axf .AXF .cci .CCI .cxi .CXI .elf .ELF .7z .7Z .zip .ZIP
Launch command: Launch command:
%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/citra_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/citra_libretro.so %ROM%

View File

@ -1,4 +1,4 @@
collection: Nintendo 3DS (Lime3DS) collection: Nintendo 3DS (Azahar)
shortname: n3ds shortname: n3ds
extensions: 3ds, 3DS, 3dsx, 3DSX, app, APP, axf, AXF, cii, CII, cxi, CXI, elf, ELF, cci, CCI extensions: 3ds, 3DS, 3dsx, 3DSX, app, APP, axf, AXF, cii, CII, cxi, CXI, elf, ELF, cci, CCI
launch: /run/media/mmcblk0p1/Emulation/tools/launchers/lime3ds.sh {file.path} launch: /run/media/mmcblk0p1/Emulation/tools/launchers/azahar.sh {file.path}

View File

@ -169,8 +169,7 @@ for install_command in \
"$doInstallPCSX2QT PCSX2QT_install" \ "$doInstallPCSX2QT PCSX2QT_install" \
"$doInstallPrimeHack Primehack_install" \ "$doInstallPrimeHack Primehack_install" \
"$doInstallRPCS3 RPCS3_install" \ "$doInstallRPCS3 RPCS3_install" \
"$doInstallCitra Citra_install" \ "$doInstallAzahar Azahar_install" \
"$doInstallLime3DS Lime3DS_install" \
"$doInstallDolphin Dolphin_install" \ "$doInstallDolphin Dolphin_install" \
"$doInstallDuck DuckStation_install" \ "$doInstallDuck DuckStation_install" \
"$doInstallRA RetroArch_install" \ "$doInstallRA RetroArch_install" \
@ -226,8 +225,7 @@ for setup_command in \
"$doSetupDolphin Dolphin_init" \ "$doSetupDolphin Dolphin_init" \
"$doSetupPCSX2QT PCSX2QT_init" \ "$doSetupPCSX2QT PCSX2QT_init" \
"$doSetupRPCS3 RPCS3_init" \ "$doSetupRPCS3 RPCS3_init" \
"$doSetupCitra Citra_init" \ "$doSetupAzahar Azahar_init" \
"$doSetupLime3DS Lime3DS_init" \
"$doSetupDuck DuckStation_init" \ "$doSetupDuck DuckStation_init" \
"$doSetupYuzu Yuzu_init" \ "$doSetupYuzu Yuzu_init" \
"$doSetupCitron Citron_init" \ "$doSetupCitron Citron_init" \

View File

@ -109,16 +109,6 @@ function runBinDownloads {
messages+=("There was a problem updating Cemu (Native)") messages+=("There was a problem updating Cemu (Native)")
fi fi
fi fi
if [[ "$binsToDL" == *"Citra"* ]]; then
((progresspct += pct)) || true
echo "$progresspct"
echo "# Updating Citra"
if Citra_install "true" 2>&1; then
messages+=("Citra Updated Successfully")
else
messages+=("There was a problem updating Citra")
fi
fi
if [[ "$binsToDL" == *"ES-DE"* ]]; then if [[ "$binsToDL" == *"ES-DE"* ]]; then
echo "0" echo "0"
echo "# Updating ES-DE" echo "# Updating ES-DE"
@ -128,14 +118,14 @@ function runBinDownloads {
messages+=("There was a problem updating ES-DE") messages+=("There was a problem updating ES-DE")
fi fi
fi fi
if [[ "$binsToDL" == *"Lime3DS"* ]]; then if [[ "$binsToDL" == *"Azahar"* ]]; then
((progresspct += pct)) || true ((progresspct += pct)) || true
echo "$progresspct" echo "$progresspct"
echo "# Updating Lime3DS" echo "# Updating Azahar"
if Lime3DS_install "true" 2>&1; then if Azahar_install "true" 2>&1; then
messages+=("Lime3DS Updated Successfully") messages+=("Azahar Updated Successfully")
else else
messages+=("There was a problem updating Lime3DS") messages+=("There was a problem updating Azahar")
fi fi
fi fi
if [[ "$binsToDL" == *"mGBA"* ]]; then if [[ "$binsToDL" == *"mGBA"* ]]; then
@ -250,20 +240,15 @@ if [ "$(Cemu_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
else else
binTable+=(FALSE "Cemu (Native)" "Nintendo Wii U") binTable+=(FALSE "Cemu (Native)" "Nintendo Wii U")
fi fi
if [ "$(Citra_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Citra" "Nintendo 3DS")
else
binTable+=(FALSE "Citra" "Nintendo 3DS")
fi
if [ "$(ESDE_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then if [ "$(ESDE_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "ES-DE" "Emulator Front-End") binTable+=(TRUE "ES-DE" "Emulator Front-End")
else else
binTable+=(FALSE "ES-DE" "Emulator Front-End") binTable+=(FALSE "ES-DE" "Emulator Front-End")
fi fi
if [ "$(Lime3DS_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then if [ "$(Azahar_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "Lime3DS" "Nintendo 3DS") binTable+=(TRUE "Azahar" "Nintendo 3DS")
else else
binTable+=(FALSE "Lime3DS" "Nintendo 3DS") binTable+=(FALSE "Azahar" "Nintendo 3DS")
fi fi
if [ "$(mGBA_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then if [ "$(mGBA_IsInstalled ""$emuDeckEmuTypeAppImage"")" == "true" ]; then
binTable+=(TRUE "mGBA" "Nintendo Game Boy Family") binTable+=(TRUE "mGBA" "Nintendo Game Boy Family")

36
tools/launchers/azahar.sh Executable file
View File

@ -0,0 +1,36 @@
#!/bin/bash
. "$HOME/.config/EmuDeck/backend/functions/all.sh"
emulatorInit "azahar"
emuName="azahar" #parameterize me
emufolder="$emusFolder" # has to be applications for ES-DE to find it
#initialize execute array
exe=()
#find full path to emu executable
exe_path=$(find "$emufolder" -iname "${emuName}*.AppImage" | sort -n | cut -d' ' -f 2- | tail -n 1 2>/dev/null)
#make sure that file is executable
chmod +x "$exe_path"
#fill execute array
exe=("$exe_path")
#run the executable with the params.
launch_args=()
for rom in "${@}"; do
# Parsers previously had single quotes ("'/path/to/rom'" ), this allows those shortcuts to continue working.
removedLegacySingleQuotes=$(echo "$rom" | sed "s/^'//; s/'$//")
launch_args+=("$removedLegacySingleQuotes")
done
echo "Launching: ${exe[*]} ${launch_args[*]}"
if [[ -z "${*}" ]]; then
echo "ROM not found. Launching $emuName directly"
"${exe[@]}"
else
echo "ROM found, launching game"
"${exe[@]}" "${launch_args[@]}"
fi
rm -rf "$savesPath/.gaming"

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
. "$HOME/.config/EmuDeck/backend/functions/all.sh" . "$HOME/.config/EmuDeck/backend/functions/all.sh"
emulatorInit "lime3ds" emulatorInit "azahar"
emuName="lime3ds-gui" #parameterize me emuName="azahar-gui" #parameterize me
emufolder="$emusFolder" # has to be applications for ES-DE to find it emufolder="$emusFolder" # has to be applications for ES-DE to find it
#initialize execute array #initialize execute array

View File

@ -11,7 +11,7 @@ doUninstallDolphin=true
doUninstallDuck=true doUninstallDuck=true
doUninstallESDE=true doUninstallESDE=true
doUninstallFlycast=true doUninstallFlycast=true
doUninstallLime3DS=true doUninstallAzahar=true
doUninstallMame=true doUninstallMame=true
doUninstallmelonDS=true doUninstallmelonDS=true
doUninstallMGBA=true doUninstallMGBA=true
@ -296,7 +296,7 @@ fi
6 "Dolphin" \ 6 "Dolphin" \
7 "Duckstation" \ 7 "Duckstation" \
8 "Flycast" \ 8 "Flycast" \
9 "Lime3DS" \ 9 "Azahar" \
10 "Mame" \ 10 "Mame" \
11 "melonDS" \ 11 "melonDS" \
12 "mGBA" \ 12 "mGBA" \
@ -344,8 +344,8 @@ fi
if [[ "$emusToUninstall" == *"Flycast"* ]]; then if [[ "$emusToUninstall" == *"Flycast"* ]]; then
doUninstallFlycast=false doUninstallFlycast=false
fi fi
if [[ "$emusToUninstall" == *"Lime3DS"* ]]; then if [[ "$emusToUninstall" == *"Azahar"* ]]; then
doUninstallLime3DS=false doUninstallAzahar=false
fi fi
if [[ "$emusToUninstall" == *"Mame"* ]]; then if [[ "$emusToUninstall" == *"Mame"* ]]; then
doUninstallMame=false doUninstallMame=false
@ -452,11 +452,11 @@ fi
flatpak uninstall org.flycast.Flycast -y flatpak uninstall org.flycast.Flycast -y
rm -rf $HOME/.var/app/org.flycast.Flycast &> /dev/null rm -rf $HOME/.var/app/org.flycast.Flycast &> /dev/null
fi fi
if [[ "$doUninstallLime3DS" == true ]]; then if [[ "$doUninstallAzahar" == true ]]; then
rm -rf $HOME/.config/lime3ds-emu/ &> /dev/null rm -rf $HOME/.config/azahar-emu/ &> /dev/null
rm -rf $HOME/.local/share/lime3ds-emu &> /dev/null rm -rf $HOME/.local/share/azahar-emu &> /dev/null
rm -rf $HOME/.local/share/applications/Lime3DS.desktop &> /dev/null rm -rf $HOME/.local/share/applications/Azahar.desktop &> /dev/null
rm -rf $emusFolder/lime3ds-gui*.AppImage &> /dev/null rm -rf $emusFolder/azahar-gui*.AppImage &> /dev/null
fi fi
if [[ "$doUninstallMame" == true ]]; then if [[ "$doUninstallMame" == true ]]; then
flatpak uninstall org.mamedev.MAME -y flatpak uninstall org.mamedev.MAME -y

View File

@ -5,8 +5,7 @@
"ppsspp": { "id": "ppsspp", "code": "PPSSPP", "version": 0 }, "ppsspp": { "id": "ppsspp", "code": "PPSSPP", "version": 0 },
"duckstation": { "id": "duckstation", "code": "Duckstation", "version": 0 }, "duckstation": { "id": "duckstation", "code": "Duckstation", "version": 0 },
"melonds": { "id": "melonds", "code": "melonDS", "version": 0 }, "melonds": { "id": "melonds", "code": "melonDS", "version": 0 },
"citra": { "id": "citra", "code": "Citra", "version": 0 }, "azahar": { "id": "azahar", "code": "Azahar", "version": 0 },
"lime3ds": { "id": "lime3ds", "code": "Lime3DS", "version": 0 },
"pcsx2": { "id": "pcsx2", "code": "PCSX2QT", "version": 1 }, "pcsx2": { "id": "pcsx2", "code": "PCSX2QT", "version": 1 },
"rpcs3": { "id": "rpcs3", "code": "RPCS3", "version": 0 }, "rpcs3": { "id": "rpcs3", "code": "RPCS3", "version": 0 },
"yuzu": { "id": "yuzu", "code": "Yuzu", "version": 1 }, "yuzu": { "id": "yuzu", "code": "Yuzu", "version": 1 },