Revert "Merge branch 'dev' into early"

This reverts commit 4088a7b841, reversing
changes made to 2bc2dfe9c6.
This commit is contained in:
Rodrigo 2023-11-03 17:31:21 +01:00
parent 4088a7b841
commit 7ab5d07eeb
15 changed files with 1252 additions and 192 deletions

View file

@ -1,16 +0,0 @@
# PR Description
Please write a small description of what this PR is trying to accomplish, a new feature to EmuDeck, solving a bug, etc.
## Usage:
EmuDeck is a free open source project, but we have an Early Access tier on Patreon where people can get timely exclusive to some features.
Do you allow us to merge this PR to the Early Access branch, or do you only want your work to be available when the next public build is released?
- [x] Early Access, Public Beta and Public
- [ ] Public and Beta only
## Checklist:
- [ ] I am using the dev branch as the target for this PR.
- [ ] I've tested and verified that the PR works in at least one device.
- [ ] I've checked that my PR doesn't do anything wild like deleting user saved games :)
- [ ] If I'm using a third party binary or tool from other developer I'm allowed to use it.

View file

@ -1,21 +1,98 @@
# EmuDeck
[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/from-referrer/)
<img src="https://www.emudeck.com/img/hero.png">
EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck or any other Linux Distro, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam Rom Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org)
EmuDeck is a collection of scripts that allows you to autoconfigure your Steam Deck, it creates your roms directory structure and downloads all of the needed Emulators for you along with the best configurations for each of them. EmuDeck works great with [Steam ROM Manager](https://github.com/SteamGridDB/steam-rom-manager) or with [EmulationStation DE](https://es-de.org)
# How to use EmuDeck?
** If you are a dev please read till the bottom **
We recomend you take a look at our extensive Wiki, you'll find guides, videos and all sorts of content about the project:
There are two ways of using EmuDeck:
[EmuDeck Wiki](https://emudeck.github.io/how-to-install-emudeck/steamos/)
## Using Steam ROM Manager
<img src="https://www.emudeck.com/img/ss1.png">
This option gives you all your games presented with their box arts as if they were a regular Steam Game.
EmuDeck has preloaded configurations for Steam ROM Manager for the following systems:
https://emudeck.github.io/emulators/steamos/supported-emulators/
## Using EmulationStation DE
<img src="https://es-de.org/____impro/1/onewebmedia/ES-DE_logo.png?etag=%226071-6041244a%22&sourceContentType=image%2Fpng&ignoreAspectRatio&resize=240%2B168">
EmuDeck configures EmulationStation DE to use the same rom folders that EmuDeck creates for you and it even downloads all the emulators and cores the ES-DE needs, all configurations that EmuDeck installs are carried over when using EmulationStation DE. For a comprehensive list of all the systems that ESDE supports go to [ES-DE](https://es-de.org)
# Hotkeys
We try to use the same hotkeys for every emulator but some of them have their own different hotkeys, shown here:
https://emudeck.github.io/controls-and-hotkeys/windows/hotkeys/?h=hotkeys
Note that Nintendo-oriented emulators refer to "A" in the emulated sense (physical Steam Deck "B")
# Developers, developers, developers.
If you wanna help us improve EmuDeck we are open to accept your PR! Just keep in mind this simple guide:
- Think that EmuDeck is for everybody, tech savvy and is specially directed to regular users that are new to Emulation, so everything has to be properly explained.
- Think EmuDeck is for everybody, tech savvy and regular users, so everything has to be properly explained, use Easy mode for unattended automatic stuff.
- User input is non recommended, everything should be done with no mouse or keyboard input. If input is a must then you have to code your feature only on expert mode.
- Things using sudo are a big no no, there are exceptions but always try to find a way of prevent using sudo.
- Every Emulator needs to have a SRM profile and follow the AmberElec hotkey mapping.
- Every Emulator added has to be included on this readme file, have a SRM profile and follow the AmberElec hotkey mapping ( just check the previous table)
- Always do your PR to the dev branch.
## Submitting a PR Request for a Steam ROM Manager Parser
If you would like to submit a PR request for a Steam ROM Manager parser, use the following format:
### The Basics
* Spell out console names - no acronyms
* For example, `PSP` should be spelled out as `PlayStation Portable`
* Respect original capitalization and spacing
* A few examples:
* `RetroArch` uses a capital `R` and capital `A`
* The `Nintendo Game Boy` uses a capital `N`, `G`, and `B` with spaces between each word
* The `PlayStation Portable` uses a capital `P` and `S` in `PlayStation` as do the other `PlayStation` handhelds and consoles
### Parser Structure
* `configTitle`:
* `COMPANYNAME SYSTEMNAME - EMULATORNAME RETROARCHCORENAME`
* If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME`
* A few examples:
* Config Title: `"configTitle": "Amiga - RetroArch PUAE",`
* Config Title: `"configTitle": "Nintendo Game Boy Color - mGBA (Standalone)",`
* Config Title: `"configTitle": "Sony PlayStation 2 - PCSX2",`
* `steamCategory`:
* **Note:** Non-Default Parsers refer to when a system has multiple emulation choices (through alternative emulators or RetroArch cores). Only one of these parsers is enabled by default and any alternative choices are disabled by default.
* Default Parsers:
* `COMPANYNAME CONSOLENAME`
* Non-Default Parsers:
* Standalone: `COMPANYNAME CONSOLENAME - EMULATORNAME`
* RetroArch Core: `COMPANYNAME CONSOLENAME - RETROARCHCORENAME`
* If the RetroArch core's name is identical to the Standalone emulator name, add `RetroArch` in front of the `RETROARCHCORENAME`
* If the standalone emulator name is identical to the RetroArch core name, add `(Standalone)` behind the `EMULATORNAME`
* A few examples:
* Default Parsers:
* Mupen64Plus Next (RetroArch core for Nintendo 64)
* Steam Category Name: `"steamCategory": ""${Nintendo 64}",`
* DuckStation (PSX Emulator)
* Steam Category Name: `"steamCategory": "${Sony PlayStation}",`
* Non-Default Parsers:
* Rosalie's Mupen GUI (N64 Emulator)
* Steam Category Name: `"steamCategory": "${Nintendo 64 - Rosalie's Mupen GUI}",`
* Beetle PSX HW (RetroArch core for PSX)
* Steam Category Name: `"steamCategory": "${Sony PlayStation - Beetle PSX HW}",`
### Parser Filename
`companyname_systemname-emulatorname-retroarchcore.json`
If it is a RetroArch core, replace `emulatorname` with `ra`.
* A few examples:
* `nintendo_wii-dolphin.json`
* `nintendo_64-rmg.json`
* `nintendo_gba-ra-mgba.json`
* `sega_saturn-ra-mednafen.json`

331
changelog.md Normal file
View file

@ -0,0 +1,331 @@
0.1 > 0.4
- Several fixes
0.5
- RetroArch Core downloader
- MAME 2003 Plus
- Genesis
0.5.1
- Dreamcast 16:9 hacks
0.5.2
- Fixes Genesis (SRM) & Gamecube(folder name)
0.5.3
- Fullscreen Citra + Steam Input for Citra Roms
steam://controllerconfig/3151590086/2784099045
0.6
- Added Yuzu and NDS support
0.6.1
- Added FBNeo support
0.6.2
- Fix BIOS folder RA
0.6.3
- Cemu Experimental
0.6.4
- Ryujinx controls
- Fix RA Toggle Menu L3+R3
- Nunchuk fix
0.7
- PrimeHacks support
- Fix .md on genesis folders
0.8
- Automatic Steam Input for Citra and Cemu
0.8.1
- CEMU Steam Input fix
0.9
- Added EmulationStation rom path configuration, folders and cores
0.10
- Fixed Yuzu's controls on Steam UI
- Added standalone PPSSPP
- Added PS2 optimized configuration
0.11
- Automatic Emulator Installation
- No need to launch the emulators before playing for the first time
- Yuzu paths for Firmware and Keys are symlinked in Emulation/bios
0.12
- Fixes several Bugs
- Adds cores for EmulationStation DE
- Installs EmulationStation DE
- Creates EmulationStation DE icon on SteamUI
- Removes readme.md files to prevent problems with Sega Systems
- Added Cemu icon to SteamUI
- Vulkan for CEMU
- ES Fix
0.13
- RA Fix
- Cemu autoinstallation
- Log file
- RPCS3 Controls
- SRM autoinstallation
- ES Fix
0.14
- RPCS3 is working from SteamUI thanks to Flatseal
0.15
- Complete revamp of the interface
- Now you can customize some RetroArch Options: Bezels
- Emulators can now be skipped so you can mantain your custom configuration
0.15.1
- Added support for .rpx Wii U Games
0.15.2
- Fixed Gamecube and Wii controls
- Dolphin FPS meter disabled by default
0.15.3
- Fixed RA bios path on internal storage
- RA changed fast forward mode from hold to toggle
- Added MAME folders for 2010, 2003 and current.
- Fixed some EmuDeck customize menus that weren't appearing
- Fixed Citra buttons to original hardware button positions A<->B
0.15.4
- Fixes a bug on 0.15.3 that prevented the script to finish
- Amber Elec Hotkeys configured for almost all emulators
- Hotkeys and Emulators cheatsheet available on github: https://github.com/dragoonDorise/EmuDeck
0.15.5
- More PS1 formats supported. Thanks to https://github.com/Godsbane
- SRM always up to date. Thanks to https://github.com/Nikki1993
- Fixed Atary Linx
- Fixed symlinks repeating itselfs inside folders
- Fixes RA save configuration file issue
- Removes symlinks for MegaDrive y MegaCD
- Fixed recursive symlinks on yuzu folders
- Added 3DO support
- Fixed issues with bios paths when using internal storage
- Better BIOS detection for PS1 and PS2
- Fixes autoload / autosave option on RetroArch
0.16
- Fixes Nes Bezels when using Mesen Core
- Fixes RA warning "Controller not configured, using fallback"
- Showing latest changelog when updating EmuDeck
- New Easy mode - 100% Plug and play for non tech savvy users.
- New Expert mode - Power users can now customize EmuDeck installations:
- Choose what Emulators to install
- Choose if you want to keep your configuration or if you want EmuDeck to overwrite it.
- RA configuration: Bezels ON/OFF Autosave ON/OFF
- Allows users to be able to save its own RA configuration ( Bezels needs to be turned OFF, it's a RA Bug)
- This mode will allow a lot more in the future: Use non EXT4 SD Cards, use experimental emulators, choose different frontends, etc.
0.16.2
- Cemu installation fixes
0.17
- Added Beta and Dev release channels
- ESDE Downloaded data moved to SD Card if the user chose SD card on install
- Uninstall icon for those that want to uninstall EmuDeck
- Updated Icon with current version installed
- Fixes Bezels and Autosave configuration
- Added Xemu emulator support - Godsbane
- Enabled rumble motor on Dolphin
- Improved SD Card detection - Godsbane
- Added .wua support for upcoming Cemu 1.27 - v-tron
0.17.1
- New Emulation/saves folder so you can sync your saved games and states using Dropbox or similar
- Snes Aspect Ratio selection (4:3 or 8:7)
- Widescreen Hacks selection (Flycast RA, Dolphin, DuckStation)
- CHD Conversion script
- Support for PowerTools on Expert Mode - Improves Yuzu and Dolphin performance
- Added support for DualShock 4 and DualSense controllers for player 2 and 3
- Wii U Rom folder creation fix
- Fixed PrimeHack SRM config - Godsbane
- Fixed PS1 SRM parsers to avoid duplicated titles - Godsbane
- Fixed PrimeHack controller config
- Fixes for people with custom flathubs repos - Godsbane
- New SD Card detection method ( BTRFS Support is back ) - popsUlfr + Godsbane
- Added Emulators parser on SRM
0.17.2
- Added RetroAchievments for RA
- Added Amiga support on SRM
- Set default emulators on ESDE
- Uninstaller fixes
- Fixed Widescreen toggle for Dolphin
- RA video driver changed to Vulkan except for Dolphin - AngelofWoe
- Xbox Parser turned on by default on SRM - Godsbane
- Added PS1 Beetle PSX RA Core on SRM (disabled by default) - Godsbane
- Added DOSBOX to SRM - AngelofWoe
- FIX 3DS parser on SRM, Remove CIA / Add CCI - Godsbane
- Updated Xemu toml config file - Godsbane
- RPCS3 Installed games moved to /Emulation/saves/rpcs3 - Godsbane
- Added PS3 PKG games on SRM - Godsbane
- Fixed Emulators flatpak permission to access their roms folder when not using SRM or ESDE - Godsbane
- Fixed Emulator launchers, only created for the ones the user chooses to install - Godsbane
- Get ESDE latest version from Dynamic url - Godsbane
- CHD script improvements - Godsbane
- Fix PCSX2 Save/Load state mappings - LBRapid
0.17.3
- New ESDE Epic Noir Theme set as default & Theme Selector
- Ability to launch WiiU Games from ESDE
- Cemu Script added to installers. Adding WiiU games to SRM no longer requires proton to be set, it just works TM!
- Widescreen Hacks for PS2 Games - Only US
- Widescreen for 70 Wii and GC games - SkyHighBrownie
- Added log files for Community Dolphin ini hacks. Send us your own!
- Added new ExpertMode feature - SteamGyroDSU. (requires sudo)
- Added logging to CHDman script so you can check what it did after the run.
- Added paths to Yuzu for roms directory.
- Added paths to Citra for roms directory.
- Added paths to Primehack for roms directory.
- Added permissions for PCSX2 to do netplay.
- Added permissions for Xemu to write to its hdd if it's internal.
- Added default paths for Cemu to mlc01
- Added default paths for Cemu to roms folder. When you launch cemu with proton, you may need to refresh the games list manually for them to show up.
- Set new default emulators for ES-DE to be more in line with the ones we set for SRM and set preparations for future ESDE updates
- New emulation station defaults:
'Genesis Plus GX' gamegear
'Gambatte' gb
'Gambatte' gbc
'Dolphin (Standalone)' gc
'PPSSPP (Standalone)' psp
'Dolphin (Standalone)' wii
'Mesen' nes
'DOSBox-Pure' dos
'PCSX2 (Standalone)' ps2
'melonDS' nds
- Update RPCS3 config with new version, as its config had changed
- Update PowerTools to version 4.1 ( Expert mode ). SMT Toggle is in. Be aware that this may crash MangoHud(stats) if enabled, but it won't hurt anything. MangoHud will come back on reboot.
- Fixed SRM Parser for Installed PS3 games for internal users.
- Expert mode will ask about Bezels and Autosave again
- Dolphin set as 16:9 by default on easy mode
- Fix Sega Genesis missing extension and adds Commodore 64
- Add support for holoISO
0.17.4
- New user interface on install both on Easy and Expert modes
- Rom folder creation will respect user's custom symlinks
- When you first install EmuDeck an you Launch SteamRomManager we will get you back to GamingMode when closing SteamRomManager
- SRM is now located on Emulation/tools and will close Steam automatically for you.
- Fixed RPCS3 Controller not working on new install
- Updated Mupen64Plus-Next defaults for N64. Should be much better now. more accurate, faster, and look better.
- New tool added - proton-launch.sh (for all your non-steam windows app shenanigans, courtesy of Angel)
- Citra left trackpad used now as mouse instead of D-pad on our SteamInput template
- Fix Citra non exiting while pressing R5
- PPSSPP Audio Fix when the Deck goes into Sleep Mode
- Fixed 3ds bad symlink for older installations
- PrimeHack Controller tweaks and performance gain
- Fix PCSX2 Turbo Mode
- Wii nkit.gcz support
- FBNeo fixes on SteamRomManager
- SD card is only available if one is inserted, writable, and supports symlinks
- Expert mode - Fixes RA Autosave selection
- Expert mode - Changed Cemu default controller to gamepad with gyro (gyro requires SteamDeckGyroDSU installation. See Expert mode for more details)
- Expert mode - You can now chose a custom install location. It will be tested for the ability to both write and link, and rejected if either fail.
0.17.5
- EmuDeck internal fixes and modularity.. setting it up for great things on the future...
- New - Steam Input Template for DuckStation with left trackpad Touch Menu (Thanks Moskeeto)
- New - Yuzu AppImage ( Seemingly better performance than the one in discover store, also right click to open menus work! )
It is VERY important you let Emudeck run the updates on Yuzu so the
data migration can happen seamlessly. You will be notified if we find data in the default appimage location
and can choose to keep and migrate the old Flatpak data, or you can use the existing AppImage data you have.
The chosen data will be migrated to the AppImage location, and linked back to the flatpak data location.
Steam ROM Manager users will need to re-parse for Yuzu games to use the new AppImage.
The Flatpak installation is NOT removed, but must be for EmulationStation-DE to use the AppImage instead.
- New - Storage folder to keep Xemu, Yuzu, and RPCS3 data in the Emulation folder. Migration will happen at the start.
You may need to re-parse for rpcs3 installed files.
- New - Binary Updater tool added. Ths new tool can update EmulationStation-DE, SteamRomManager, Cemu, Yuzu, or Xenia
to their latest versions without going through the EmuDeck install process.
- New - CHD Script now handles wii / gc iso --> rvz conversion
- New - Citra now has the microphone mapped for games that need it.
- New - Citra now has the gyro mapped for those that need it. (requires SteamDeckGyroDSU)
- New - Citra has load textures and precache on by default. (for users who want custom texture packs)
- New - Added a few properly labeled WiiMote profiles for dolphin
- New - Wiimote 2,3,4 are mapped to steaminput devices 2,3,4 - but not connected by default to avoid phantom cursors
- New - Auto download xbox hdd from xemu site on xemu install if it doesn't exist. User only needs to provide files in bios after this.
- New - Dolphin load textures and precache is now on by default. (for users who want custom texture packs)
- New - Dolphin Auto Change disc is now on by default.
- New - Dolphin cursor is now hidden by default.
- New - PCSX2 vsync is now on by default
- New - DuckStation rom path added. New hotkeys added to coincide with Steam Input Template. Changed quickMenu to Esc. (Steam + Dpad Left)
- Fix - Citra Steam Input. R5 only closes Citra after a long a press
- Fix - Cemu is now at 100% volume instead of 50% volume by default for new installs
- Fix - Dolphin pointer is now right trackpad and the joystick and works more smoothly.
If you have SteamGyro setup, there is are extra Wiimote profiles included that can use it.
_You may need to set the controller to Default Gamepad With Mouse Trackpad if steam decided to use Touchpad as Joystick instead._
- Fix - Widescreen Hacks are now off by default for all emulators. They can be enabled by running in Expert Mode and choosing to customize Widescreen.
- Fix - PCSX2 Steam Input profile updated so it wont pause on RT. (Thanks Wintermute)
- Fix - Updates won't wipe out EmulationStation-DE custom systems and EmulationStation-DE metadata info anymore.
- Fix - Updates won't wipe out Cemu graphics pack settings anymore.
- Fix - EmulationStation-DE's hidden downloaded_media wouldn't get moved
to the Emulation/tools directory if the setting existed but was blank.
- Fix - Expert Mode: Widescreen Hacks Selection.
- Fix - Expert Mode: Emulator install Selection.
- Fix - Expert Mode: Emulator reconfiguration selection.
- Fix - Expert Mode: Entering a password wrong in the pop up will make it re-pop.
You have 2 chances and then it will disable the Expert mode settings that require a password.
- Fix - Citra is now 2x instead of 3x res by default for performance reasons
- Fix - Dolphin hotkey for Fast Forward has been updated from just Select to Select + R2 to match the other hotkeys
0.17.6
- Added 16:9 bezel support for holoISO and Anbernic Win600 (or other 16:9 devices)
- Icon renamed to Update EmuDeck to avoid confusion
- Fixed Atari Bezels. Added bezels to Dreamcast, N64 and Saturn
- Fixed Dolphin and Primehack from sending button presses as part of hotkeys as in-game button presses
- Added Naomi (flycast) parser for Steam ROM Manager. Uses roms/naomi folder
- Fixed retroachievements not working for users with certain special characters in their passwords.
- Added easyRPG core to RA. Required additional files are not yet downloaded. You can add them manually.
- Added PCSX2-Qt AppImage and Steam ROM Manager Parser. This can live side by side with your existing pcsx2, but it should be removed.
- Migrate pcsx2 saves files to the Emulation folder. This is no longer a link.
- Both versions of Pcsx2 use the same saves location in their config so no matter which, you can save / load state.
- Expert mode settings are remembered.
If you run expert mode, and change a setting it will be retained and used on the next run of easy mode. (except install / reconfigure)
- RetroArch settings will be backed up before update. Settings files for this are no longer replaced. The options are updated or appended.
- Installing PluginLoader (powertools) now activates dev mode and installs the new version of the loader and plugin. Reboot may be required
- CHD script Renamed to Emudeck Compression Tool. New support for Wii games to convert them to rvz format
- ... too much more to fit here!

View file

@ -215,7 +215,7 @@ input_disk_prev = "nul"
input_disk_prev_axis = "nul"
input_disk_prev_btn = "nul"
input_disk_prev_mbtn = "nul"
input_driver = "sdl"
input_driver = "x"
input_duty_cycle = "3"
input_enable_hotkey = "nul"
input_enable_hotkey_axis = "nul"

View file

@ -1,10 +1,10 @@
#!/bin/bash
#variables
Citra_emuName="Citra"
Citra_emuType="AppImage"
Citra_emuPath="citra_emu"
Citra_emuType="FlatPak"
Citra_emuPath="org.citra_emu.citra"
Citra_releaseURL=""
Citra_configFile="$HOME/.config/citra-emu/qt-config.ini"
Citra_configFile="$HOME/.var/app/org.citra_emu.citra/config/citra-emu/qt-config.ini"
#cleanupOlderThings
Citra_finalize(){
@ -15,8 +15,7 @@ Citra_finalize(){
Citra_install(){
setMSG "Installing $Citra_emuName"
installEmuFP "${Citra_emuName}" "${Citra_emuPath}"
curl -L https://github.com/citra-emu/citra-web/releases/download/2.0/citra-setup-linux > citra-setup-linux && chmod +x citra-setup-linux && ./citra-setup-linux --accept-licenses --confirm-command install
rm citra-setup-linux
flatpak override "${Citra_emuPath}" --filesystem=host --user
}
#ApplyInitialSettings
@ -32,7 +31,7 @@ Citra_init(){
#update
Citra_update(){
setMSG "Updating $Citra_emuName settings."
cd $HOME/.citra && ./maintenancetool update
configEmuFP "${Citra_emuName}" "${Citra_emuPath}"
Citra_setupStorage
Citra_setEmulationFolder
Citra_setupSaves
@ -49,35 +48,35 @@ Citra_setEmulationFolder(){
#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"
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/.local/share/citra-emu/sdmc"
linkToSaveFolder citra states "$HOME/.local/share/citra-emu/states"
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 [ ! -f "$storagePath/citra/nand" ] && [ -d "$HOME/.local/share/citra-emu/nand/" ]; then
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/.local/share/citra-emu/nand/" $storagePath/citra/nand/
mv "$HOME/.local/share/citra-emu/sdmc/" $storagePath/citra/sdmc/
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/.local/share/citra-emu/nand/"
unlink "$HOME/.local/share/citra-emu/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/.local/share/citra-emu/nand/"
ln -ns "${storagePath}/citra/sdmc/" "$HOME/.local/share/citra-emu/sdmc/"
ln -ns "${storagePath}/citra/nand/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/nand/"
ln -ns "${storagePath}/citra/sdmc/" "$HOME/.var/app/org.ctira_emu.citra/data/citra-emu/sdmc/"
fi
}
@ -86,14 +85,14 @@ Citra_setupStorage(){
#WipeSettings
Citra_wipe(){
setMSG "Wiping $Citra_emuName config directory. (factory reset)"
rm -rf "$HOME/.config/citra-emu"
rm -rf "$HOME/.var/app/$Citra_emuPath"
}
#Uninstall
Citra_uninstall(){
setMSG "Uninstalling $Citra_emuName."
cd $HOME/.citra && ./maintenancetool purge
flatpak uninstall "$Citra_emuPath" --user -y
}
#setABXYstyle
@ -103,31 +102,7 @@ Citra_setABXYstyle(){
#Migrate
Citra_migrate(){
echo "Begin Citra Migration"
emu="Citra"
migrationFlag="$HOME/.config/EmuDeck/.${emu}MigrationCompleted"
#check if we have a nomigrateflag for $emu
if [ ! -f "$migrationFlag" ]; then
#citra flatpak to appimage
#From -- > to
migrationTable=()
migrationTable+=("$HOME/.var/app/org.citra_emu.citra/data/citra-emu" "$HOME/.local/share/citra-emu")
migrationTable+=("$HOME/.var/app/org.citra_emu.citra/config/citra-emu" "$HOME/.config/citra-emu")
# migrateAndLinkConfig "$emu" "$migrationTable"
fi
#move data from hidden folders out to these folders in case the user already put stuff here.
origPath="$HOME/.var/app/org.citra_emu.citra/data/citra_emu/"
citra_setupStorage
rsync -av "${origPath}citra/dump" "${storagePath}/citra/" && rm -rf "${origPath}citra/dump"
rsync -av "${origPath}citra/load" "${storagePath}/citra/" && rm -rf "${origPath}citra/load"
rsync -av "${origPath}citra/sdmc" "${storagePath}/citra/" && rm -rf "${origPath}citra/sdmc"
rsync -av "${origPath}citra/nand" "${storagePath}/citra/" && rm -rf "${origPath}citra/nand"
rsync -av "${origPath}citra/screenshots" "${storagePath}/citra/" && rm -rf "${origPath}citra/screenshots"
rsync -av "${origPath}citra/tas" "${storagePath}/citra/" && rm -rf "${origPath}citra/tas"
echo "NYI"
}
#WideScreenOn
@ -166,4 +141,4 @@ Citra_resetConfig(){
Citra_addSteamInputProfile(){
addSteamInputCustomIcons
rsync -r "$EMUDECKGIT/configs/steam-input/citra_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
}
}

View file

@ -1,11 +1,10 @@
#!/bin/bash
#variables
RPCS3_emuName="RPCS3"
RPCS3_emuType="AppImage"
RPCS3_releaseURL="https://rpcs3.net/latest-appimage"
RPCS3_emuPath="$HOME/Applications/rpcs3.AppImage"
RPCS3_flatpakPath="$HOME/.var/app/net.rpcs3.RPCS3"
RPCS3_VFSConf="$HOME/.config/rpcs3/vfs.yml"
RPCS3_remuName="RPCS3"
RPCS3_emuType="FlatPak"
RPCS3_emuPath="net.rpcs3.RPCS3"
RPCS3_releaseURL=""
RPCS3_VFSConf="$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/vfs.yml"
#cleanupOlderThings
RPCS3_cleanup(){
@ -14,40 +13,13 @@ RPCS3_cleanup(){
#Install
RPCS3_install(){
setMSG "Installing RPCS3"
# RPCS3 does not have a "latest" tag on their GitHub repo. Open issue said to use the below URL instead. Modified from ES-DE script
RPCS3_releaseMD5="$(curl -sL https://rpcs3.net/latest-appimage | md5sum | cut -d ' ' -f 1)"
local showProgress="$1"
if [[ $RPCS3_releaseURL = "https://rpcs3.net/latest-appimage"* ]]; then
if safeDownload "$RPCS3_remuName" "$RPCS3_releaseURL" "$RPCS3_emuPath" "$showProgress"; then
RPCS3_md5sum=($(md5sum $RPCS3_emuPath)) # get first element
if [ "$RPCS3_md5sum" == "$RPCS3_releaseMD5" ]; then
echo "RPCS3 PASSED HASH CHECK."
chmod +x "$RPCS3_emuPath"
else
echo "RPCS3 FAILED HASH CHECK. Expected $RPCS3_releaseMD5, got $RPCS3_md5sum"
fi
else
return 1
fi
else
setMSG "$RPCS3_remuName not found"
return 1
fi
# Preserve flatpak permissions for old RPCS3 Install
flatpak override net.rpcs3.RPCS3 --filesystem=host --user
installEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}"
flatpak override "${RPCS3_emuPath}" --filesystem=host --user
}
#ApplyInitialSettings
RPCS3_init(){
RPCS3_migrate
configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3" "true"
configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}" "true"
RPCS3_setupStorage
RPCS3_setEmulationFolder
RPCS3_setupSaves
@ -55,8 +27,7 @@ RPCS3_init(){
#update
RPCS3_update(){
RPCS3_migrate
configEmuAI "$RPCS3_emuName" "config" "$HOME/.config/rpcs3" "$EMUDECKGIT/configs/rpcs3"
configEmuFP "${RPCS3_remuName}" "${RPCS3_emuPath}"
RPCS3_setupStorage
RPCS3_setEmulationFolder
RPCS3_setupSaves
@ -64,14 +35,13 @@ RPCS3_update(){
#ConfigurePaths
RPCS3_setEmulationFolder(){
iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/dev_hdd0/" "$storagePath/rpcs3/dev_hdd0/" ": "
iniFieldUpdate "$RPCS3_VFSConf" "" "/games/" "$romsPath/ps3/" ": "
}
#SetupSaves
RPCS3_setupSaves(){
linkToSaveFolder rpcs3 saves "${storagePath}/rpcs3/dev_hdd0/home/00000001/savedata"
linkToSaveFolder rpcs3 trophy "${storagePath}/rpcs3/dev_hdd0/home/00000001/trophy"
}
@ -80,11 +50,11 @@ RPCS3_setupStorage(){
mkdir -p "$storagePath/rpcs3/"
if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/" -o -d "$HOME/.config/rpcs3/" ]; then
echo "RPCS3 HDD does not exist in storage path"
if [ ! -d "$storagePath"/rpcs3/dev_hdd0 ] && [ -d "$HOME/.var/app/${RPCS3_emuPath}/" ];then
echo "rpcs3 hdd does not exist in storagepath."
echo -e ""
setMSG "Moving RPCS3 HDD to the Emulation/storage folder"
setMSG "Moving rpcs3 HDD to the Emulation/storage folder"
echo -e ""
mkdir -p "$storagePath/rpcs3"
@ -92,39 +62,24 @@ RPCS3_setupStorage(){
if [ -d "$savesPath/rpcs3/dev_hdd0" ]; then
mv -f "$savesPath"/rpcs3/dev_hdd0 "$storagePath"/rpcs3/
elif [ -d "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0"
elif [ -d "$HOME/.config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.config/rpcs3/dev_hdd0"
elif [ -d "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" ]; then
rsync -av "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0" "$storagePath"/rpcs3/ && rm -rf "$HOME/.var/app/${RPCS3_emuPath}/config/rpcs3/dev_hdd0"
fi
fi
}
#WipeSettings
RPCS3_wipe(){
setMSG "Wiping $RPCS3_emuName settings."
rm -rf "$HOME/.config/rpcs3"
rm -rf "$HOME/.cache/rpcs3"
rm -rf "$HOME/.var/app/$RPCS3_emuPath"
# prob not cause roms are here
}
# Create desktop shortcut
RPCS3_createDesktopShortcut(){
createDesktopShortcut "$HOME/.local/share/applications/$RPCS3_remuName.desktop" \
"$RPCS3_emuName AppImage" \
"${toolsPath}/launchers/rpcs3.sh" \
"false"
}
#Uninstall
RPCS3_uninstall(){
setMSG "Uninstalling $RPCS3_emuName."
rm -rf "$RPCS3_emuPath"
RPCS3_wipe
flatpak uninstall "$RPCS3_emuPath" --user -y
}
#setABXYstyle
@ -134,22 +89,7 @@ RPCS3_setABXYstyle(){
#Migrate
RPCS3_migrate(){
echo "Begin RPCS3 Migration"
# Migration
migrationFlag="$HOME/.config/EmuDeck/.${RPCS3_emuName}MigrationCompleted"
#check if we have a nomigrateflag for $emu
if [ ! -f "$migrationFlag" ]; then
#RPCS3 flatpak to appimage
#From -- > to
migrationTable=()
migrationTable+=("$HOME/.var/app/net.rpcs3.RPCS3/config/rpcs3" "$HOME/.config/rpcs3")
migrateAndLinkConfig "$RPCS3_emuName" "$migrationTable"
fi
echo "true"
echo "NYI"
}
#WideScreenOn
@ -178,13 +118,9 @@ RPCS3_finalize(){
}
RPCS3_IsInstalled(){
if [ -e "$RPCS3_emuPath" ] || [ -e "$RPCS3_flatpakPath" ]; then
echo "true"
else
echo "false"
fi
isFpInstalled "$RPCS3_emuPath"
}
RPCS3_resetConfig(){
RPCS3_init &>/dev/null && echo "true" || echo "false"
}
}

View file

@ -64,15 +64,6 @@ cloud_sync_config(){
}
createCloudFile() {
local folder=$1
local cloudFilePath="${folder}/.cloud"
if [ ! -f "$cloudFilePath" ]; then
echo "" > "$cloudFilePath"
fi
}
cloud_sync_setup_providers(){
startLog ${FUNCNAME[0]}
if [ "$cloud_sync_provider" == "Emudeck-NextCloud" ]; then
@ -118,16 +109,13 @@ cloud_sync_setup_providers(){
username="$(echo "$NCInput" | awk -F "," '{print $2}')"
password="$(echo "$NCInput" | awk -F "," '{print $3}')"
port="$(echo "$NCInput" | awk -F "," '{print $4}')"
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host="$host" user="$username" port="$port" pass="$("$cloud_sync_bin" obscure $password)"
else
echo "Cancel SFTP Login"
fi
elif [ "$cloud_sync_provider" == "Emudeck-OneDrive" ]; then
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
elif [ "$cloud_sync_provider" == "Emudeck-SMB" ]; then
NCInput=$(zenity --forms \
@ -144,10 +132,8 @@ cloud_sync_setup_providers(){
host="$(echo "$NCInput" | awk -F "," '{print $1}')"
username="$(echo "$NCInput" | awk -F "," '{print $2}')"
password="$(echo "$NCInput" | awk -F "," '{print $3}')"
find "$savesPath" -type d -exec bash -c 'createCloudFile "$0"' {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)" && "$cloud_sync_bin" mkdir "$cloud_sync_provider:Emudeck\saves" && "$cloud_sync_bin" copy "$savesPath" "$cloud_sync_provider:Emudeck\saves" --include "*.cloud" echo "true"
find "$savesPath" -type f -name "*.cloud" -exec rm {} \;
"$cloud_sync_bin" config update "$cloud_sync_provider" host=$host user=$username pass="$("$cloud_sync_bin" obscure $password)"
else
echo "Cancel SMB Login"
fi

View file

@ -297,8 +297,7 @@ SRM_init(){
rm -rf "$HOME/temp_parser"
ln -s "$json_directory" "$HOME/temp_parser"
files=$(find "$HOME/temp_parser/emudeck" -name "*.json" | sort)
customfiles=$(find "$SRM_userData_configDir/parsers/custom/" -name "*.json" | sort)
jq -s '.' $files $customfiles > "$output_file"
jq -s '.' $files > "$output_file"
rm -rf "$HOME/temp_parser"
sleep 1

View file

@ -1,18 +1,6 @@
#!/bin/bash
appImageInit() {
if [ "$system" == "chimeraos" ]; then
ESDE_chimeraOS
mkdir -p $HOME/Applications
downloads_dir="$HOME/Downloads"
destination_dir="$HOME/Applications"
file_name="EmuDeck"
find "$downloads_dir" -type f -name "*$file_name*.AppImage" -exec mv {} "$destination_dir/$file_name.AppImage" \;
fi
#Autofixes, put here functions that make under the hood fixes.
autofix_duplicateESDE
#autofix_raSavesFolders

21
latest.md Normal file
View file

@ -0,0 +1,21 @@
0.17.6
- Added 16:9 bezel support for holoISO and Anbernic Win600 (or other 16:9 devices)
- Left Analog stick mirrors the d-pad controls for older systems
- Recursive SRM parsers. Now you can organize your games in folders
- Icon renamed to Update EmuDeck to avoid confusion
- Fixed Atari Bezels. Added bezels to Dreamcast, N64 and Saturn
- Fixed Dolphin and Primehack from sending button presses as part of hotkeys as in-game button presses
- Added Naomi (flycast) parser for Steam ROM Manager. Uses roms/naomi folder
- Fixed retroachievements not working for users with certain special characters in their passwords.
- Added easyRPG core to RA. Required additional files are not yet downloaded. You can add them manually.
- Added PCSX2-Qt AppImage and Steam ROM Manager Parser. This can live side by side with your existing pcsx2, but it should be removed.
- Migrate pcsx2 saves files to the Emulation folder. This is no longer a link.
- Both versions of Pcsx2 use the same saves location in their config so no matter which, you can save / load state.
- Expert mode settings are remembered.
If you run expert mode, and change a setting it will be retained and used on the next run of easy mode. (except install / reconfigure)
- RetroArch settings will be backed up before update. Settings files for this are no longer replaced. The options are updated or appended.
- Installing PluginLoader (powertools) now activates dev mode and installs the new version of the loader and plugin. Reboot may be required
- CHD script Renamed to Emudeck Compression Tool. New support for Wii games to convert them to rvz format
- Preserve custom Artwork on Steam ROM Manager on second scans
- Support for Mesen HD Packs
- ... too much more to fit here!

48
system-setup.sh Executable file
View file

@ -0,0 +1,48 @@
#!/bin/bash
set -e
SCRIPT_DIR=$( cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
function log_err {
echo "$@" >&2
}
function script_failure {
log_err "An error occurred:$([ -z "$1" ] && " on line $1" || "(unknown)")."
log_err "Installation failed!"
}
trap 'script_failure $LINENO' ERR
echo "Installing EmuDeck prerequisites..."
echo
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
if command -v apt-get >/dev/null; then
echo "Installing packages with apt..."
DEBIAN_DEPS="steam jq zenity flatpak unzip bash"
sudo apt-get -y update
sudo apt-get -y install $DEBIAN_DEPS
elif command -v pacman >/dev/null; then
echo "Installing packages with pacman..."
ARCH_DEPS="steam jq zenity flatpak unzip bash"
sudo pacman -Syu
sudo pacman -S $ARCH_DEPS
elif command -v dnf >/dev/null; then
echo "Installing packages with dnf..."
FEDORA_DEPS="steam jq zenity flatpak unzip bash"
sudo dnf install -y $FEDORA_DEPS
else
log_err "Your Linux distro '$(lsb_release -s -d)' is not supported by this script. We invite to open an issue or help us with adding your distro to this script. https://github.com/dragoonDorise/EmuDeck/issues"
exit 1
fi
else
log_err "Your operating system '$(OSTYPE)' is not supported by this script. We invite to open an issue or help us with adding your OS to this script. https://github.com/dragoonDorise/EmuDeck/issues"
exit 1
fi
# this could be replaced to immediately start the EmuDeck setup script
echo "All prerequisite packages have been installed. You're free to install EmuDeck!"

View file

@ -293,4 +293,4 @@ else
zenity --error \
--text="Nothing available to be updated." 2>/dev/null
fi
fi

View file

@ -1,7 +1,7 @@
#!/bin/sh
source $HOME/.config/EmuDeck/backend/functions/all.sh
cloud_sync_downloadEmu "rpcs3" && cloud_sync_startService
emuName="rpcs3"
emuName="rpcs3" #parameterize me
emufolder="$HOME/Applications" # has to be applications for ES-DE to find it
#find full path to emu executable
@ -10,7 +10,7 @@ exe=$(find $emufolder -iname "${emuName}*.AppImage" | sort -n | cut -d' ' -f 2-
#if appimage doesn't exist fall back to flatpak.
if [[ $exe == '' ]]; then
#flatpak
flatpakApp=$(flatpak list --app --columns=application | grep $RPCS3_emuName)
flatpakApp=$(flatpak list --app --columns=application | grep $emuName)
exe="/usr/bin/flatpak run "$flatpakApp
else
#make sure that file is executable

1
version.md Normal file
View file

@ -0,0 +1 @@
0.17.6

714
zenity-setup.sh Normal file
View file

@ -0,0 +1,714 @@
#!/bin/bash
# Seeting up the progress Bar for the rest of the installation
finished=false
MSG=$HOME/.config/EmuDeck/msg.log
echo "0" > "$MSG"
echo "# Installing EmuDeck" >> "$MSG"
(
while [ $finished == false ]
do
cat "$MSG"
if grep -q "100" "$MSG"; then
finished=true
break
fi
# sleep 10
done
) | zenity --progress \
--title="Installing EmuDeck" \
--text="Installing EmuDeck..." \
--percentage=0 \
--no-cancel \
--pulsate \
--auto-close \
--width=300 2>/dev/null &
if [ "$?" == -1 ] ; then
zenity --error \
--text="Update canceled." 2>/dev/null
fi
#
## Splash screen
#
latest=$(cat "$EMUDECKGIT/latest.md")
if [ -f "$SECONDTIME" ]; then
text="$(printf "<b>Hi, this is the changelog of the new features added in this version</b>\n\n${latest}")"
width=1000
else
text="$(printf "<b>Welcome to EmuDeck!</b>")"
width=300
fi
zenity --info \
--title="EmuDeck" \
--width="${width}" \
--text="${text}" 2>/dev/null
#
# Initialize locations
#
locationTable=()
locationTable+=(TRUE "Internal" "$HOME") #always valid
#built in SD Card reader
sdCardFull=$(getSDPath)
sdValid=$(testLocationValid "SD" "$sdCardFull")
echo "$sdCardFull $sdValid"
if [[ ! $sdValid =~ "Invalid" ]]; then
locationTable+=(FALSE "SD Card" "$sdCardFull")
fi
#
# Installation mode selection
#
text="$(printf "<b>Hi!</b>\nDo you want to run EmuDeck on Easy or Expert mode?\n\n<b>Easy Mode</b> takes care of everything for you, it is an unattended installation.\n\n<b>Expert mode</b> gives you a bit more of control on how EmuDeck configures your system like giving you the option to install PowerTools or keep your custom configurations per Emulator")"
zenity --question \
--title="EmuDeck" \
--width=250 \
--ok-label="Expert Mode" \
--cancel-label="Easy Mode" \
--text="${text}" 2>/dev/null
ans=$?
if [ $ans -eq 0 ]; then
setSetting expert true
echo "Mode selected: Expert"
locationTable+=(FALSE "Custom" "CUSTOM") #in expert mode we'll allow the user to pick an arbitrary place.
else
setSetting expert false
echo "Mode selected: Easy"
fi
#
#Storage Selection
#
if [[ ${#locationTable[@]} -gt 3 ]]; then # -gt 3 because there's 3 entries per row.
destination=$(zenity --list \
--title="Where would you like Emudeck to be installed?" \
--radiolist \
--width=400 --height=225 \
--column="" --column="Install Location" --column="value" \
--hide-column=3 --print-column=3 \
"${locationTable[@]}" 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "Storage: ${destination}"
else
echo "No storage choice made"
exit
fi
else
destination="$HOME"
fi
if [[ $destination == "CUSTOM" ]]; then
destination=$(customLocation)
customValid=$(testLocationValid "Custom" "${destination}")
echo "$customValid"
if [[ $customValid =~ "Invalid" ]]; then
echo "User chose invalid location. Exiting."
#zenity pop up explaining why
exit
fi
fi
#New paths based on where the user picked.
setSetting emulationPath "${destination}/Emulation"
setSetting romsPath "${destination}/Emulation/roms"
setSetting toolsPath "${destination}/Emulation/tools"
setSetting biosPath "${destination}/Emulation/bios"
setSetting savesPath "${destination}/Emulation/saves"
setSetting storagePath "${destination}/Emulation/storage"
setSetting ESDEscrapData "${destination}/Emulation/tools/downloaded_media/"
#createFolders I think we dont need this anymore in here
#
# Start of Expert mode configuration
# The idea is that Easy mode is unatended, so everything that's out
# out of the ordinary has to had its flag enabled/disabled on Expert mode
#
if [ "$expert" == "true" ]; then
echo "Expert mode begin"
#one entry per expert mode feature
table=()
#table+=(TRUE "CHDScript" "Install the latest version of our CHD conversion script?")
table+=(TRUE "PowerTools" "Install Power Tools for CPU control? (password required)")
table+=(TRUE "SteamGyro" "Setup the SteamDeckGyroDSU for gyro control (password required)")
table+=(TRUE "updateSRM" "Install/Update Steam ROM Manager? Customizations will not be reset.")
table+=(TRUE "updateESDE" "Install/Update Emulation Station DE? Customizations and scrapes will not be reset.")
table+=(TRUE "selectEmulators" "Select the emulators to install.")
table+=(TRUE "selectEmulatorConfig" "Customize the emulator configuration reset. (note: Fixes will be skipped if boxes are unchecked)")
table+=(TRUE "selectRABezels" "Turn on Bezels for Retroarch?")
table+=(TRUE "selectRAAutoSave" "Turn on Retroarch AutoSave/Restore state?")
table+=(TRUE "arSnes" "SNES 8:7 Aspect Ratio? (unchecked is 4:3)")
table+=(TRUE "selectWideScreen" "Customize Emulator Widescreen Selection?")
table+=(TRUE "setRAEnabled" "Enable Retroachievments in Retroarch?")
table+=(TRUE "setRASignIn" "Change RetroAchievements Sign in?")
table+=(TRUE "doESDEThemePicker" "Choose your EmulationStation-DE Theme?")
#table+=(TRUE "doXboxButtons" "Should facebutton letters match between Nintendo and Steamdeck? (default is matched location)")
if [[ ! $branch == "main" ]]; then
table+=(TRUE "SaveSync" "Setup Save Synchronization for Emudeck to a cloud provider")
fi
declare -i height=(${#table[@]}*40)
expertModeFeatureList=$(zenity --list --checklist --width=1000 --height="${height}" \
--column="Select?" \
--column="Features" \
--column="Description" \
--hide-column=2 \
"${table[@]}" 2>/dev/null)
echo "user selected: $expertModeFeatureList"
#set flags to true for selected expert mode features
#if [[ "$expertModeFeatureList" == *"CHDScript"* ]]; then
# setSetting doInstallCHD true
#fi
if [[ "$expertModeFeatureList" == *"PowerTools"* ]]; then
setSetting doInstallPowertools true
else
setSetting doInstallPowertools false
fi
if [[ "$expertModeFeatureList" == *"SteamGyro"* ]]; then
setSetting doInstallGyro true
else
setSetting doInstallGyro false
fi
if [[ "$expertModeFeatureList" == *"SaveSync"* ]]; then
setSetting doSetupSaveSync true
else
setSetting doSetupSaveSync false
fi
if [[ "$expertModeFeatureList" == *"updateSRM"* ]]; then
setSetting doSetupSRM true
else
setSetting doSetupSRM false
fi
if [[ "$expertModeFeatureList" == *"updateESDE"* ]]; then
setSetting doInstallESDE true
else
setSetting doInstallESDE false
fi
if [[ "$expertModeFeatureList" == *"selectEmulators"* ]]; then
setSetting doSelectEmulators true
else
setSetting doSelectEmulators false
fi
if [[ "$expertModeFeatureList" == *"selectEmulatorConfig"* ]]; then
setSetting doResetEmulators true
else
setSetting doResetEmulators false
fi
if [[ "$expertModeFeatureList" == *"selectRABezels"* ]]; then
setSetting RABezels true
else
setSetting RABezels false
fi
if [[ "$expertModeFeatureList" == *"selectRAAutoSave"* ]]; then
setSetting RAautoSave true
else
setSetting RAautoSave false
fi
if [[ "$expertModeFeatureList" == *"arSnes"* ]]; then
setSetting arSnes 43
else
setSetting arSnes 87
fi
if [[ "$expertModeFeatureList" == *"selectWideScreen"* ]]; then
setSetting doSelectWideScreen true
else
setSetting doSelectWideScreen false
fi
if [[ "$expertModeFeatureList" == *"setRASignIn"* ]]; then
setSetting doRASignIn true
else
setSetting doRASignIn false
fi
if [[ "$expertModeFeatureList" == *"setRAEnable"* ]]; then
setSetting doRAEnable true
else
setSetting doRAEnable false
fi
if [[ "$expertModeFeatureList" == *"doESDEThemePicker"* ]]; then
setSetting doESDEThemePicker true
else
setSetting doESDEThemePicker false
fi
if [[ $doInstallPowertools == "true" || $doInstallGyro == "true" || $isRealDeck == "false" ]]; then
hasPass=$(passwd -S "$USER" | awk -F " " '{print $2}')
if [[ ! $hasPass == "P" ]]; then
text="$(printf "<b>Password not set.</b>\n Please set one now in the terminal.\nYou will not see text entry in the terminal for your password. This is normal.\nOnce set, you will be prompted to enter it in a new window.")"
zenity --error \
--title="EmuDeck" \
--width=400 \
--text="${text}" 2>/dev/null
sleep 1
clear
echo "Enter a new password for the local Deck account here. You will have to enter it twice. No visual indication of typing will occur."
echo "Please remember it."
passwd
ans=$?
if [[ $ans == 1 ]]; then
echo "Setting password failed."
fi
fi
PASSWD="$(zenity --password --title="Password Entry" --text="Enter Deck User Password (not Steam account!)" 2>/dev/null)"
echo "$PASSWD" | sudo -v -S
ans=$?
if [[ $ans == 1 ]]; then
#incorrect password
PASSWD="$(zenity --password --title="Password Entry" --text="Password was incorrect. Try again. (Did you remember to set a password for linux before running this?)" 2>/dev/null)"
echo "$PASSWD" | sudo -v -S
ans=$?
if [[ $ans == 1 ]]; then
text="$(printf "<b>Password not accepted.</b>\n Expert mode tools which require a password will not work. Disabling them.")"
zenity --error \
--title="EmuDeck" \
--width=400 \
--text="${text}" 2>/dev/null
setSetting doInstallPowertools false
setSetting doInstallGyro false
fi
fi
fi
if [[ $doESDEThemePicker == true ]]; then
text="Which theme do you want to set for EmulationStation-DE?"
esdeTheme=$(zenity --list \
--title="EmuDeck" \
--height=250 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--radiolist \
--column="" \
--column="Theme" \
1 "EPICNOIR" \
2 "MODERN-DE" \
3 "RBSIMPLE-DE" 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "Theme selected: $esdeTheme"
setSetting esdeTheme $esdeTheme
fi
fi
if [[ $doSelectEmulators == "true" ]]; then
emuTable=()
emuTable+=(TRUE "Multiple" "RetroArch")
emuTable+=(TRUE "Arcade" "MAME")
emuTable+=(TRUE "Dreamcast" "Flycast")
emuTable+=(TRUE "Metroid Prime" "PrimeHack")
emuTable+=(TRUE "PS2" "PCSX2-Legacy")
emuTable+=(TRUE "PS2" "PCSX2-QT")
emuTable+=(TRUE "PS3" "RPCS3")
emuTable+=(TRUE "3DS" "Citra")
emuTable+=(TRUE "GC/Wii" "Dolphin")
emuTable+=(TRUE "PSX" "Duckstation")
emuTable+=(TRUE "PSP" "PPSSPP")
emuTable+=(TRUE "Switch" "Yuzu")
emuTable+=(TRUE "Switch" "Ryujinx")
emuTable+=(TRUE "WiiU" "Cemu")
emuTable+=(TRUE "XBox" "Xemu")
emuTable+=(TRUE "N64" "RMG")
emuTable+=(TRUE "Multi-Systems Emulator" "ares")
emuTable+=(FALSE "GameBoy / Color / Advance" "mGBA")
#if we are in beta / dev install, allow Xenia. Still false by default though. Will only work on expert mode, and explicitly turned on.
if [[ $branch == "beta" || $branch == "dev" ]]; then
emuTable+=(FALSE "Xbox360" "Xenia")
fi
#Emulator selector
text="$(printf "What emulators do you want to install?")"
emusToInstall=$(zenity --list \
--title="EmuDeck" \
--height=500 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--checklist \
--column="Select" \
--column="System" \
--column="Emulator" \
--print-column=3 \
"${emuTable[@]}" 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "Emu Install selected: $emusToInstall"
if [[ "$emusToInstall" == *"RetroArch"* ]]; then
setSetting doInstallRA true
else
setSetting doInstallRA false
fi
if [[ "$emusToInstall" == *"Flycast"* ]]; then
setSetting doInstallFlycast true
else
setSetting doInstallFlycast false
fi
if [[ "$emusToInstall" == *"PrimeHack"* ]]; then
setSetting doInstallPrimeHack true
else
setSetting doInstallPrimeHack false
fi
if [[ "$emusToInstall" == *"PCSX2-Legacy"* ]]; then
setSetting doInstallPCSX2 true
else
setSetting doInstallPCSX2 false
fi
if [[ "$emusToInstall" == *"PCSX2-QT"* ]]; then
setSetting doInstallPCSX2QT true
else
setSetting doInstallPCSX2QT false
fi
if [[ "$emusToInstall" == *"RPCS3"* ]]; then
setSetting doInstallRPCS3 true
else
setSetting doInstallRPCS3 false
fi
if [[ "$emusToInstall" == *"Citra"* ]]; then
setSetting doInstallCitra true
else
setSetting doInstallCitra false
fi
if [[ "$emusToInstall" == *"Dolphin"* ]]; then
setSetting doInstallDolphin true
else
setSetting doInstallDolphin false
fi
if [[ "$emusToInstall" == *"Duckstation"* ]]; then
setSetting doInstallDuck true
else
setSetting doInstallDuck false
fi
if [[ "$emusToInstall" == *"PPSSPP"* ]]; then
setSetting doInstallPPSSPP true
else
setSetting doInstallPPSSPP false
fi
if [[ "$emusToInstall" == *"mGBA"* ]]; then
setSetting doInstallMGBA true
else
setSetting doInstallMGBA false
fi
if [[ "$emusToInstall" == *"Yuzu"* ]]; then
setSetting doInstallYuzu true
else
setSetting doInstallYuzu false
fi
if [[ "$emusToInstall" == *"Ryujinx"* ]]; then
setSetting doInstallRyujinx true
else
setSetting doInstallRyujinx false
fi
if [[ "$emusToInstall" == *"Cemu"* ]]; then
setSetting doInstallCemu true
else
setSetting doInstallCemu false
fi
if [[ "$emusToInstall" == *"Xemu"* ]]; then
setSetting doInstallXemu true
else
setSetting doInstallXemu false
fi
if [[ "$emusToInstall" == *"Xenia"* ]]; then
setSetting doInstallXenia true
else
setSetting doInstallXenia false
fi
#if [[ "$emusToInstall" == *"MelonDS"* ]]; then
# doInstallMelon=true
#fi
if [[ "$emusToInstall" == *"RMG"* ]]; then
setSetting doInstallRMG true
else
setSetting doInstallRMG false
fi
if [[ "$emusToInstall" == *"ares"* ]]; then
setSetting doInstallares true
else
setSetting doInstallares false
fi
else
exit
fi
fi
if [[ $doSelectWideScreen == "true" ]]; then
#Emulators screenHacks
emuTable=()
emuTable+=(TRUE "Dolphin")
emuTable+=(TRUE "Duckstation")
emuTable+=(TRUE "Flycast")
emuTable+=(TRUE "PCSX2-QT")
emuTable+=(TRUE "RA-BeetlePSX")
emuTable+=(TRUE "RA-Flycast")
emuTable+=(TRUE "Xemu")
text="$(printf "Selected Emulators will use WideScreen Hacks")"
wideToInstall=$(zenity --list \
--title="EmuDeck" \
--height=500 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--checklist \
--column="Widescreen?" \
--column="Emulator" \
"${emuTable[@]}" 2>/dev/null)
ans=$?
if [ $ans -eq 0 ]; then
echo "Widescreen choices: $wideToInstall"
if [[ "$wideToInstall" == *"Duckstation"* ]]; then
setSetting duckWide true
else
setSetting duckWide false
fi
if [[ "$wideToInstall" == *"Dolphin"* ]]; then
setSetting DolphinWide true
else
setSetting DolphinWide false
fi
if [[ "$wideToInstall" == *"RA-Flycast"* ]]; then
setSetting DreamcastWide true
else
setSetting DreamcastWide false
fi
if [[ "$wideToInstall" == *"Flycast"* ]]; then
setSetting DreamcastWide true
else
setSetting DreamcastWide false
fi
if [[ "$wideToInstall" == *"BeetlePSX"* ]]; then
setSetting BeetleWide true
else
setSetting BeetleWide false
fi
if [[ "$wideToInstall" == *"Xemu"* ]]; then
setSetting XemuWide true
else
setSetting XemuWide false
fi
if [[ "$wideToInstall" == *"PCSX2-QT"* ]]; then
setSetting PCSX2QTWide true
else
setSetting PCSX2QTWide false
fi
else
exit
fi
fi
if [[ $doResetEmulators == "true" ]]; then
# Configuration that only appplies to previous users
if [ -f "$SECONDTIME" ]; then
emuTable=()
emuTable+=(TRUE "RetroArch")
emuTable+=(TRUE "MAME")
emuTable+=(TRUE "PrimeHack")
emuTable+=(TRUE "PCSX2-Legacy")
emuTable+=(TRUE "PCSX2-QT")
emuTable+=(TRUE "RPCS3")
emuTable+=(TRUE "Citra")
emuTable+=(TRUE "Dolphin")
emuTable+=(TRUE "Duckstation")
emuTable+=(TRUE "PPSSPP")
emuTable+=(TRUE "Yuzu")
emuTable+=(TRUE "Ryujinx")
emuTable+=(TRUE "Cemu")
emuTable+=(TRUE "Xemu")
emuTable+=(TRUE "Steam ROM Manager")
emuTable+=(TRUE "EmulationStation DE")
emuTable+=(TRUE "RMG")
emuTable+=(TRUE "ares")
text="$(printf "<b>EmuDeck will reset the following Emulator's configurations by default.</b>\nWhich systems do you want <b>reset</b> to the newest version of the defaults?\nWe recommend you keep all of them checked so everything gets updated and known issues are fixed.\nIf you want to mantain any custom configuration on an emulator unselect its name from this list.")"
emusToReset=$(zenity --list \
--title="EmuDeck" \
--height=500 \
--width=250 \
--ok-label="OK" \
--cancel-label="Exit" \
--text="${text}" \
--checklist \
--column="Reset?" \
--column="Emulator" \
"${emuTable[@]}" 2>/dev/null)
ans=$?
#Nova fix'
cat "$EMUDECKGIT/logo.ans"
echo -e "EmuDeck ${version}"
if [ $ans -eq 0 ]; then
echo "Emulators to reinstall selected: $emusToReset"
if [[ "$emusToReset" == *"RetroArch"* ]]; then
setSetting doSetupRA true
else
setSetting doSetupRA false
fi
if [[ "$emusToReset" == *"PrimeHack"* ]]; then
setSetting doSetupPrimehack true
else
setSetting doSetupPrimehack false
fi
if [[ "$emusToReset" == *"PCSX2-Legacy"* ]]; then
setSetting doSetupPCSX2 true
else
setSetting doSetupPCSX2 false
fi
if [[ "$emusToReset" == *"PCSX2-QT"* ]]; then
setSetting doSetupPCSX2QT true
else
setSetting doSetupPCSX2QT false
fi
if [[ "$emusToReset" == *"RPCS3"* ]]; then
setSetting doSetupRPCS3 true
else
setSetting doSetupRPCS3 false
fi
if [[ "$emusToReset" == *"Citra"* ]]; then
setSetting doSetupCitra true
else
setSetting doSetupCitra false
fi
if [[ "$emusToReset" == *"Dolphin"* ]]; then
setSetting doSetupDolphin true
else
setSetting doSetupDolphin false
fi
if [[ "$emusToReset" == *"Duckstation"* ]]; then
setSetting doSetupDuck true
else
setSetting doSetupDuck false
fi
if [[ "$emusToReset" == *"PPSSPP"* ]]; then
setSetting doSetupPPSSPP true
else
setSetting doSetupPPSSPP false
fi
if [[ "$emusToReset" == *"mGBA"* ]]; then
setSetting doSetupMGBA true
else
setSetting doSetupMGBA false
fi
if [[ "$emusToReset" == *"Yuzu"* ]]; then
setSetting doSetupYuzu true
else
setSetting doSetupYuzu false
fi
if [[ "$emusToReset" == *"Ryujinx"* ]]; then
setSetting doSetupRyujinx true
else
setSetting doSetupRyujinx false
fi
if [[ "$emusToReset" == *"Cemu"* ]]; then
setSetting doSetupCemu true
else
setSetting doSetupCemu false
fi
if [[ "$emusToReset" == *"Xemu"* ]]; then
setSetting doSetupXemu true
else
setSetting doSetupXemu false
fi
if [[ "$emusToReset" == *"Xenia"* ]]; then
setSetting doSetupXenia true #false until we add above
else
setSetting doSetupXenia false
fi
#if [[ "$emusToReset" == *"MelonDS"* ]]; then
# setSetting doSetupMelonDS true
#else
# setSetting doSetupRA false
#fi
if [[ "$emusToReset" == *"Steam ROM Manager"* ]]; then
setSetting doSetupSRM true
else
setSetting doSetupSRM false
fi
if [[ "$emusToReset" == *"EmulationStation DE"* ]]; then
setSetting doSetupESDE true
else
setSetting doSetupESDE false
fi
else
echo ""
fi
fi
fi
else
echo "Applying Easy mode Settings"
#easy mode settings
setSetting doInstallRA true
setSetting doInstallDolphin true
setSetting doInstallPCSX2 false
setSetting doInstallPCSX2QT true
setSetting doInstallRPCS3 true
setSetting doInstallYuzu true
setSetting doInstallRyujinx false
setSetting doInstallCitra true
setSetting doInstallDuck true
setSetting doInstallCemu true
setSetting doInstallPrimeHack true
setSetting doInstallPPSSPP true
setSetting doInstallXemu true
setSetting doInstallMAME true
setSetting doInstallXenia false
setSetting doInstallMGBA false
setSetting doInstallRMG true
setSetting doInstallares true
setSetting doInstallFlycast true
#doInstallMelon=true
setSetting doSetupRA true
setSetting doSetupPrimehack true
setSetting doSetupDolphin true
setSetting doSetupPCSX2 false
setSetting doSetupPCSX2QT true
setSetting doSetupRPCS3 true
setSetting doSetupCitra true
setSetting doSetupDuck true
setSetting doSetupYuzu true
setSetting doSetupRyujinx false
setSetting doSetupPPSSPP true
setSetting doSetupXemu true
setSetting doSetupMAME true
setSetting doSetupCemu true
setSetting doSetupXenia false
setSetting doSetupMGBA false
setSetting doSetupRMG true
setSetting doSetupares true
setSetting doSetupFlycast true
#widescreen off by default
setSetting duckWide false
setSetting DolphinWide false
setSetting DreamcastWide false
setSetting FlycastWide false
setSetting BeetleWide false
setSetting XemuWide false
setSetting PCSX2QTWide false
fi # end Expert if