diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..f81927b1 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: RetroDECK # Replace with a single Patreon username +#open_collective: # Replace with a single Open Collective username +#ko_fi: # Replace with a single Ko-fi username +#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +#liberapay: # Replace with a single Liberapay username +#issuehunt: # Replace with a single IssueHunt username +#otechie: # Replace with a single Otechie username +#lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: ['https://retrodeck.readthedocs.io/en/latest/wiki_about/donations-licenses/'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.gitignore b/.gitignore index fb057393..d2569309 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ backup .old tmp .godot +rd-submodules/es-de/patches-tmp* .local/ buildid *.bak @@ -30,4 +31,4 @@ __pycache__ rd-submodules/retroarch* rd-submodules/ryujinx* rd-submodules/shared-modules* -rd-submodules/es-de/patches-tmp* \ No newline at end of file +rd-submodules/es-de/patches-tmp* diff --git a/README.md b/README.md index 671a783d..88b3f7cb 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ # RetroDECK on your device! +

-screenshot -screenshot
screenshot screenshot

-
+ +Instead of having several different emulators, engines and frontends on your Linux/SteamOS system you only need one: RetroDECK. ![Flathub](https://img.shields.io/flathub/downloads/net.retrodeck.retrodeck) ![Flathub](https://img.shields.io/flathub/v/net.retrodeck.retrodeck) @@ -18,43 +18,21 @@ ![GitHub](https://img.shields.io/github/license/XargonWan/RetroDECK) [![Documentation Status](https://readthedocs.org/projects/retrodeck/badge/?version=latest)](https://retrodeck.readthedocs.io/en/latest/?badge=latest) -# What is RetroDECK? -Instead of having several different software on your system for a variety of emulators and frontends you only need to have one: RetroDECK. +**The RetroDECK Wiki & FAQ** -RetroDECK is a [EmulationStation Desktop Edition](https://es-de.org) (ES-DE) powered flatpak application that builds in a variety of emulators and other software that allows you to play your favorite retro (and even not-so-retro) games in one complete package. +Please check out the these links for even more information: -It's inspired by embedded emulation systems like: - -- AmberELEC -- EmuELEC -- CoreELEC -- Lakka -- Batocera - -The RetroDECK team consists of several veterans from some of the projects mentioned above as well as a bunch of other talented individuals. - -RetroDECK also adds the `RetroDECK Framework` and the `RetroDECK Configurator` on top of the emulators and ES-DE frontend that allows deeper integrations between emulators and easier exposure to a variety of features that you otherwise need to set per emulator basis to create a uniformity between them. - -For our long term vision you can check out the following wiki page: - -[RetroDECK: Visions and Goals](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Visions-and-Goals) - -### The RetroDECK community: - -[Website](https://retrodeck.net)
-[Wiki](https://github.com/XargonWan/RetroDECK/wiki)
-[Discord](https://discord.gg/Dz3szYsP8g)
-[Lemmy](https://lemmy.zip/c/retrodeck)
-[Subreddit](https://www.reddit.com/r/retrodeck) +- [RetroDECK Wiki](https://retrodeck.readthedocs.io/en/latest/) +- [RetroDECK FAQ](https://retrodeck.readthedocs.io/en/latest/wiki_general/faq/) # How do I start using RetroDECK? +Basically just download it from Flathub, put your roms/games and needed bioses and just play. -We have an in depth How To on how to get started over here: +Read our getting started guide here: -[How to: Start using RetroDECK](https://github.com/XargonWan/RetroDECK/wiki/How-to%3A-Start-using-RetroDECK) +[How to: Start using RetroDECK](https://retrodeck.readthedocs.io/en/latest/wiki_general/retrodeck-start/) ## What devices/systems does RetroDECK support: - RetroDECK currently supports: - Steam Deck @@ -62,21 +40,58 @@ RetroDECK currently supports: For more information read up here: -[Supported Systems](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Supported-Systems) +[Supported Systems](https://retrodeck.readthedocs.io/en/latest/wiki_general/supported-devices/) + +## What is RetroDECK? +RetroDECK is a [EmulationStation Desktop Edition](https://es-de.org) (ES-DE) powered Linux [Flatpak application](https://flathub.org/apps/net.retrodeck.retrodeck) that thanks to its `RetroDECK Framework` it builds-in and manage a variety of emulators and other software that allows you to play your favorite retro (and even not-so-retro) games in one complete package. + +### So what does that mean? +It means that RetroDECK provides all the emulators, systems and a frontend. RetroDECK configures them for you and put them into one application you can download from Flathub. + +By being one application RetroDECK can put all important files in one location for all the emulators, instead of having them spread out over your entire system and even add features on top to orchestrate them seamlessly. -## Is RetroDECK in Beta? +### The RetroDECK Framework +As previously mentioned, RetroDECK also adds the `RetroDECK Framework` on top of the emulators and ES-DE interface that allows deeper integrations between emulators and easier exposure to a variety of features that you otherwise need to set per emulator basis to create a uniformity between them. + +The `RetroDECK Configurator` is a `Utility` that some parts of exposes the `RetroDECK Framework` to the RetroDECK users. + +**What can the RetroDECK Framework and by extent the RetroDECK Configurator do?** + +It can help with: + +- Compressing games +- Easier `Texture Pack` and `Mod` management +- File management +- Tools for troubleshooting (BIOS Checker, Multi-File Structure Checker, Partial or full reset of functions) +- Auto installing some free BIOSes +- Install prebuilt Steam Input profiles for devices like the Steam Deck and external controllers +- Easier management of `mods`, `roms`, `texture_packs`, `scraped media`, `screenshots`, `saves / states` `gamelists` and more +- Give access to global presets that can be acitivated to configure things over many emulators in one go like: `RetroAchievements` + `Borders` `Widescreen Mode` `Swaping A/B X/Y for Nintendo Games` + +For our long term vision you can check out the following wiki page: +[RetroDECK: Visions and Goals](https://retrodeck.readthedocs.io/en/latest/wiki_about/visions-and-goals/) + +### How to get support? +Use the supports channels on [Discord](https://discord.gg/Dz3szYsP8g) `🤝-community-support` and `🆘-support`. +### The RetroDECK community: +[Website](https://retrodeck.net)
+[Wiki](https://github.com/XargonWan/RetroDECK/wiki)
+[Discord](https://discord.gg/Dz3szYsP8g)
+[Lemmy](https://lemmy.zip/c/retrodeck)
+[Subreddit](https://www.reddit.com/r/retrodeck) + +### Is RetroDECK in Beta? Yes, here you can read more about the beta period: -[RetroDECK: Beta period](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Beta-period) - - -## Can I contribute to the project? +[RetroDECK: Beta period](https://retrodeck.readthedocs.io/en/latest/wiki_general/beta-period/) +### Can I contribute to the project? Yes, off course!
Read up here on how to help out, there is something for everyone: -[How to: Contribute to RetroDECK](https://github.com/XargonWan/RetroDECK/wiki/How-to%3A-Contribute-to-RetroDECK) +[How to: Contribute to RetroDECK](https://retrodeck.readthedocs.io/en/latest/wiki_community/contibute-rd/) ## Our repositories: | Name | Description | diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index e4cc6261..8f33f8cb 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -2,4 +2,5 @@ # This scritp is installing the required dependencies to correctly run the pipeline and buold the flatpak sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl -flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo \ No newline at end of file +flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo \ No newline at end of file diff --git a/docs/wiki/steamdeck/layout/graphics/DS - Menu.png b/docs/wiki/steamdeck/layout/graphics/DS - Menu.png deleted file mode 100644 index 2d54213a..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/DS - Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Disp_Graph_Menu.png b/docs/wiki/steamdeck/layout/graphics/Disp_Graph_Menu.png deleted file mode 100644 index 73684ea6..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Disp_Graph_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Emu_Spec_Menu.png b/docs/wiki/steamdeck/layout/graphics/Emu_Spec_Menu.png deleted file mode 100644 index 9015a072..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Emu_Spec_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/GC_Wii_Menu.png b/docs/wiki/steamdeck/layout/graphics/GC_Wii_Menu.png deleted file mode 100644 index 1d1598af..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/GC_Wii_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/General_Menu.png b/docs/wiki/steamdeck/layout/graphics/General_Menu.png deleted file mode 100644 index 6ea53822..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/General_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/MAME_Menu.png b/docs/wiki/steamdeck/layout/graphics/MAME_Menu.png deleted file mode 100644 index 93287a4f..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/MAME_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Main_Menu.png b/docs/wiki/steamdeck/layout/graphics/Main_Menu.png deleted file mode 100644 index bbf43d03..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Main_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Quick_Menu.png b/docs/wiki/steamdeck/layout/graphics/Quick_Menu.png deleted file mode 100644 index fb09918e..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Quick_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/RetroArch_ Menu.png b/docs/wiki/steamdeck/layout/graphics/RetroArch_ Menu.png deleted file mode 100644 index 3d5ec715..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/RetroArch_ Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Speed_Menu.png b/docs/wiki/steamdeck/layout/graphics/Speed_Menu.png deleted file mode 100644 index e86c48e2..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Speed_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/State_Menu.png b/docs/wiki/steamdeck/layout/graphics/State_Menu.png deleted file mode 100644 index 1e363ac8..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/State_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/SteamDeck_Menu.png b/docs/wiki/steamdeck/layout/graphics/SteamDeck_Menu.png deleted file mode 100644 index 49026c9c..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/SteamDeck_Menu.png and /dev/null differ diff --git a/docs/wiki/steamdeck/layout/graphics/Switch_Menu.png b/docs/wiki/steamdeck/layout/graphics/Switch_Menu.png deleted file mode 100644 index 1e2acd0f..00000000 Binary files a/docs/wiki/steamdeck/layout/graphics/Switch_Menu.png and /dev/null differ diff --git a/functions/dialogs.sh b/functions/dialogs.sh index db5298fd..af005e63 100644 --- a/functions/dialogs.sh +++ b/functions/dialogs.sh @@ -118,9 +118,9 @@ configurator_move_folder_dialog() { if [[ -d "$dest_root/$rd_dir_path" ]]; then # If the move succeeded declare -g "$rd_dir_name=$dest_root/$rd_dir_path" # Set the new path for that folder variable in retrodeck.cfg if [[ "$rd_dir_name" == "rdhome" ]]; then # If the whole retrodeck folder was moved... - prepare_emulator "postmove" "retrodeck" + prepare_component "postmove" "retrodeck" fi - prepare_emulator "postmove" "all" # Update all the appropriate emulator path settings + prepare_component "postmove" "all" # Update all the appropriate emulator path settings conf_write # Write the settings to retrodeck.cfg if [[ -z $(ls -1 "$source_root/retrodeck") ]]; then # Cleanup empty old_path/retrodeck folder if it was left behind rmdir "$source_root/retrodeck" @@ -150,7 +150,7 @@ configurator_move_folder_dialog() { configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The $(basename $dir_to_move) folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the folder." dir_to_move=$(directory_browse "RetroDECK $(basename $dir_to_move) directory location") declare -g "$rd_dir_name=$dir_to_move" - prepare_emulator "postmove" "all" + prepare_component "postmove" "all" conf_write configurator_generic_dialog "RetroDECK Configurator - Move Folder" "RetroDECK $(basename $dir_to_move) folder now configured at\n$dir_to_move." configurator_move_folder_dialog "$rd_dir_name" diff --git a/functions/functions.sh b/functions/functions.sh index 8178fad0..98768855 100644 --- a/functions/functions.sh +++ b/functions/functions.sh @@ -435,7 +435,7 @@ finit() { esac - prepare_emulator "reset" "retrodeck" # Parse the [paths] section of retrodeck.cfg and set the value of / create all needed folders + prepare_component "reset" "retrodeck" # Parse the [paths] section of retrodeck.cfg and set the value of / create all needed folders conf_write # Write the new values to retrodeck.cfg @@ -451,7 +451,7 @@ finit() { --text="RetroDECK will now install the needed files, which can take up to one minute.\nRetroDECK will start once the process is completed.\n\nPress OK to continue." ( - prepare_emulator "reset" "all" + prepare_component "reset" "all" build_retrodeck_current_presets deploy_helper_files @@ -498,7 +498,8 @@ install_retrodeck_controller_profile() { # USAGE: install_retrodeck_controller_profile if [[ -d "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" && -d "$HOME/.steam/steam/controller_base/templates/" ]]; then rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" - cp -f "$emuconfigs/defaults/retrodeck/controller_configs/*.vdf" "$HOME/.steam/steam/controller_base/templates" + rsync -rlD --mkpath "$emuconfigs/defaults/retrodeck/controller_configs/" "$HOME/.steam/steam/controller_base/templates/" + # TODO: delete older files Issue#672 else configurator_generic_dialog "RetroDECK Controller Profile Install" "The target directories for the controller profile do not exist.\n\nThis may happen if you do not have Steam installed or the location is does not have permission to be read." fi diff --git a/functions/global.sh b/functions/global.sh index 954acdda..5c61ecd3 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -10,7 +10,7 @@ source /app/libexec/functions.sh source /app/libexec/multi_user.sh source /app/libexec/patching.sh source /app/libexec/post_update.sh -source /app/libexec/prepare_emulator.sh +source /app/libexec/prepare_component.sh source /app/libexec/presets.sh # Static variables @@ -177,8 +177,8 @@ else new_home_path=$(directory_browse "RetroDECK folder location") set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths" conf_read - prepare_emulator "retrodeck" "postmove" - prepare_emulator "all" "postmove" + prepare_component "retrodeck" "postmove" + prepare_component "all" "postmove" conf_write fi diff --git a/functions/multi_user.sh b/functions/multi_user.sh index 08d9bf4d..6a744814 100644 --- a/functions/multi_user.sh +++ b/functions/multi_user.sh @@ -208,7 +208,7 @@ multi_user_setup_new_user() { do if [[ ! -z $(grep "^$emu_conf$" "$multi_user_emulator_config_dirs") ]]; then unlink "/var/config/$emu_conf" - prepare_emulator "reset" "$emu_conf" + prepare_component "reset" "$emu_conf" fi done for emu_conf in $(find "/var/config" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') # For all the currently non-linked config folders, like from a newly-added emulator @@ -238,7 +238,7 @@ multi_user_link_current_user_files() { if [[ -d "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" ]]; then # If the current user already has a config folder for this emulator ln -sfT "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "retrodeck/config/$emu_conf" else # If the current user doesn't have a config folder for this emulator, init it and then link it - prepare_emulator "reset" "$emu_conf" + prepare_component "reset" "$emu_conf" dir_prep "$multi_user_data_folder/$SteamAppUser/config/$emu_conf" "/var/config/$emu_conf" fi fi diff --git a/functions/post_update.sh b/functions/post_update.sh index 99b23dac..8f118b76 100644 --- a/functions/post_update.sh +++ b/functions/post_update.sh @@ -21,7 +21,7 @@ post_update() { # - Fix PICO-8 folder structure. ROM and save folders are now sane and binary files will go into ~/retrodeck/bios/pico-8/ rm -rf /var/config/primehack # Purge old Primehack config files. Saves are safe as they are linked into /var/data/primehack. - prepare_emulator "reset" "primehack" + prepare_component "reset" "primehack" dir_prep "$rdhome/saves/duckstation" "/var/data/duckstation/memcards" dir_prep "$rdhome/states/duckstation" "/var/data/duckstation/savestates" @@ -212,14 +212,14 @@ post_update() { set_setting_value "$ppssppconf" "AutoLoadSaveState" "0" "ppsspp" "General" - prepare_emulator "reset" "cemu" + prepare_component "reset" "cemu" - prepare_emulator "reset" "pico8" + prepare_component "reset" "pico8" configurator_generic_dialog "RetroDECK 0.7.0b Upgrade" "Would you like to install the official controller profile?\n(this will reset your custom emulator settings)\n\nAfter installation you can enable it from from Controller Settings -> Templates." if [[ $(configurator_generic_question_dialog "RetroDECK Official Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then install_retrodeck_controller_profile - prepare_emulator "reset" "all" + prepare_component "reset" "all" fi fi if [[ $prev_version -le "071" ]]; then @@ -276,9 +276,9 @@ post_update() { if [[ $prev_version -le "075" ]]; then # In version 0.7.5b, the following changes were made: - prepare_emulator "reset" "vita3k" - prepare_emulator "reset" "mame" - prepare_emulator "reset" "boilr" + prepare_component "reset" "vita3k" + prepare_component "reset" "mame" + prepare_component "reset" "boilr" if [ -d "$rdhome/.logs" ]; then mv "$rdhome/.logs" "$logs_folder" log i "Logs folder renamed successfully" diff --git a/functions/prepare_emulator.sh b/functions/prepare_component.sh similarity index 95% rename from functions/prepare_emulator.sh rename to functions/prepare_component.sh index 733a5116..510f2985 100644 --- a/functions/prepare_emulator.sh +++ b/functions/prepare_component.sh @@ -1,19 +1,19 @@ #!/bin/bash -prepare_emulator() { - # This function will perform one of several actions on one or more emulators +prepare_component() { + # This function will perform one of several actions on one or more components # The actions currently include "reset" and "postmove" - # The "reset" action will initialize the emulator - # The "postmove" action will update the emulator settings after one or more RetroDECK folders were moved - # An emulator can be called by name, by parent folder name in the /var/config root or use the option "all" to perform the action on all emulators equally + # The "reset" action will initialize the component + # The "postmove" action will update the component settings after one or more RetroDECK folders were moved + # An component can be called by name, by parent folder name in the /var/config root or use the option "all" to perform the action on all components equally # The function will also behave differently depending on if the initial request was from the Configurator, the CLI interface or a normal function call if needed - # USAGE: prepare_emulator "$action" "$emulator" "$call_source(optional)" + # USAGE: prepare_component "$action" "$component" "$call_source(optional)" action="$1" - emulator="$2" + component="$2" call_source="$3" - if [[ "$emulator" == "retrodeck" ]]; then + if [[ "$component" == "retrodeck" ]]; then if [[ "$action" == "reset" ]]; then # Update the paths of all folders in retrodeck.cfg and create them while read -r config_line; do local current_setting_name=$(get_setting_name "$config_line" "retrodeck") @@ -37,7 +37,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(emulationstation|all)$ ]]; then # For use after ESDE-related folders are moved or a reset + if [[ "$component" =~ ^(es-de|ES-DE|all)$ ]]; then # For use after ESDE-related folders are moved or a reset if [[ "$action" == "reset" ]]; then rm -rf /var/config/emulationstation/ mkdir -p /var/config/emulationstation/.emulationstation/ @@ -57,7 +57,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(retroarch|RetroArch|all)$ ]]; then + if [[ "$component" =~ ^(retroarch|RetroArch|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands if [[ $multi_user_mode == "true" ]]; then # Multi-user actions rm -rf "$multi_user_data_folder/$SteamAppUser/config/retroarch" @@ -154,7 +154,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(cemu|Cemu|all)$ ]]; then + if [[ "$component" =~ ^(cemu|Cemu|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing CEMU" @@ -183,7 +183,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(citra|citra-emu|Citra|all)$ ]]; then + if [[ "$component" =~ ^(citra|citra-emu|Citra|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing CITRA" @@ -230,7 +230,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(dolphin|dolphin-emu|Dolphin|all)$ ]]; then + if [[ "$component" =~ ^(dolphin|dolphin-emu|Dolphin|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing DOLPHIN" @@ -285,7 +285,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(duckstation|Duckstation|all)$ ]]; then + if [[ "$component" =~ ^(duckstation|Duckstation|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing DUCKSTATION" @@ -332,7 +332,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(melonds|melonDS|MelonDS|all)$ ]]; then + if [[ "$component" =~ ^(melonds|melonDS|MelonDS|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing MELONDS" @@ -372,7 +372,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(pcsx2|PCSX2|all)$ ]]; then + if [[ "$component" =~ ^(pcsx2|PCSX2|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing PCSX2" @@ -418,7 +418,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(pico8|pico-8|all)$ ]]; then + if [[ "$component" =~ ^(pico8|pico-8|all)$ ]]; then if [[ ("$action" == "reset") || ("$action" == "postmove") ]]; then dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway) @@ -428,7 +428,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(ppsspp|PPSSPP|all)$ ]]; then + if [[ "$component" =~ ^(ppsspp|PPSSPP|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing PPSSPPSDL" @@ -458,7 +458,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(primehack|Primehack|all)$ ]]; then + if [[ "$component" =~ ^(primehack|Primehack|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing Primehack" @@ -502,7 +502,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(rpcs3|RPCS3|all)$ ]]; then + if [[ "$component" =~ ^(rpcs3|RPCS3|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing RPCS3" @@ -540,7 +540,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(ryujunx|Ryujinx|all)$ ]]; then + if [[ "$component" =~ ^(ryujunx|Ryujinx|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing RYUJINX" @@ -567,7 +567,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(xemu|XEMU|all)$ ]]; then + if [[ "$component" =~ ^(xemu|XEMU|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "------------------------" echo "Initializing XEMU" @@ -583,12 +583,12 @@ prepare_emulator() { set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "flashrom_path" "'$bios_folder/Complex.bin'" "xemu" "sys.files" set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "eeprom_path" "'$saves_folder/xbox/xemu/xbox-eeprom.bin'" "xemu" "sys.files" set_setting_value "$multi_user_data_folder/$SteamAppUser/config/xemu/xemu.toml" "hdd_path" "'$bios_folder/xbox_hdd.qcow2'" "xemu" "sys.files" - dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/config/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where emulator will look + dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/config/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look dir_prep "$multi_user_data_folder/$SteamAppUser/config/xemu" "/var/data/xemu/xemu" else # Single-user actions rm -rf /var/config/xemu rm -rf /var/data/xemu - dir_prep "/var/config/xemu" "/var/data/xemu/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where emulator will look + dir_prep "/var/config/xemu" "/var/data/xemu/xemu" # Creating config folder in /var/config for consistentcy and linking back to original location where component will look cp -fv $emuconfigs/xemu/xemu.toml "$xemuconf" set_setting_value "$xemuconf" "screenshot_dir" "'$screenshots_folder'" "xemu" "General" set_setting_value "$xemuconf" "bootrom_path" "'$bios_folder/mcpx_1.0.bin'" "xemu" "sys.files" @@ -612,7 +612,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(yuzu|Yuzu|all)$ ]]; then + if [[ "$component" =~ ^(yuzu|Yuzu|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing YUZU" @@ -668,7 +668,7 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(vita3k|Vita3K|all)$ ]]; then + if [[ "$component" =~ ^(vita3k|Vita3K|all)$ ]]; then if [[ "$action" == "reset" ]]; then # Run reset-only commands echo "----------------------" echo "Initializing Vita3K" @@ -676,13 +676,13 @@ prepare_emulator() { if [[ $multi_user_mode == "true" ]]; then # Multi-user actions echo "Figure out what Vita3k needs for multi-user" else # Single-user actions - # NOTE: the emulator is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K + # NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K rm -rf "/var/data/Vita3K" mkdir -p "/var/data/Vita3K" unzip "/app/retrodeck/vita3k.zip" -d "/var/data/Vita3K" chmod +x "/var/data/Vita3K/Vita3K" rm -f "/var/data/Vita3K/update-vita3k.sh" - cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # Emulator config + cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k" fi @@ -702,9 +702,9 @@ prepare_emulator() { fi fi - if [[ "$emulator" =~ ^(mame|MAME|all)$ ]]; then + if [[ "$component" =~ ^(mame|MAME|all)$ ]]; then # TODO: do a proper script - # This is just a placeholder script to test the emulator's flow + # This is just a placeholder script to test the component's flow echo "----------------------" echo "Initializing MAME" echo "----------------------" @@ -719,9 +719,9 @@ prepare_emulator() { fi - if [[ "$emulator" =~ ^(gzdoom|GZDOOM|all)$ ]]; then + if [[ "$component" =~ ^(gzdoom|GZDOOM|all)$ ]]; then # TODO: do a proper script - # This is just a placeholder script to test the emulator's flow + # This is just a placeholder script to test the component's flow echo "----------------------" echo "Initializing GZDOOM" echo "----------------------" @@ -735,7 +735,7 @@ prepare_emulator() { sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON fi - if [[ "$emulator" =~ ^(boilr|BOILR|all)$ ]]; then + if [[ "$component" =~ ^(boilr|BOILR|all)$ ]]; then echo "----------------------" echo "Initializing BOILR" echo "----------------------" @@ -745,8 +745,8 @@ prepare_emulator() { fi - # Update presets for all emulators after any reset or move - if [[ ! "$emulator" == "retrodeck" ]]; then + # Update presets for all components after any reset or move + if [[ ! "$component" == "retrodeck" ]]; then build_retrodeck_current_presets fi } diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index 019c41ba..6c301ece 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -68,6 +68,10 @@ https://github.com/XargonWan/RetroDECK/releases/tag/0.8.0b +

CRITICAL:

+

Changes:

Fixes:

+ + https://github.com/XargonWan/RetroDECK/releases/tag/0.7.6b + +

Changes:

+ +

Known issues:

+ +
+
https://github.com/XargonWan/RetroDECK/releases/tag/0.7.5b @@ -751,4 +774,4 @@ - \ No newline at end of file + diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 9c5f3da0..031d7f28 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -19,14 +19,15 @@ finish-args: - --filesystem=home - --filesystem=/run/media - --filesystem=/media + - --filesystem=/mnt - --filesystem=home/.var/app/com.valvesoftware.Steam - --allow=multiarch - --talk-name=org.freedesktop.ScreenSaver - --talk-name=org.freedesktop.PowerManagement.Inhibit - --talk-name=org.freedesktop.login1.Manager - - --talk-name=org.freedesktop.portal.Flatpak.UpdateMonitor - --filesystem=xdg-run/app/com.discordapp.Discord:create - --filesystem=xdg-config/gtk-3.0:ro + - --env=QT_QPA_PLATFORM=wayland-egl;wayland;xcb # Dolphin - --allow=bluetooth # PPSSPP @@ -408,7 +409,7 @@ modules: # When updating this module remember to check those: # https://gitlab.com/es-de/emulationstation-de/-/blob/[VERSION]/resources/systems/unix/es_find_rules.xml # But we don't include them 1:1 as RetroDECK got some specific configs in some cases - - name: emulationstation-de + - name: ES-DE buildsystem: cmake-ninja config-opts: - -DRETRODECK=on diff --git a/rd-submodules/retroarch b/rd-submodules/retroarch index a9682176..51d4821a 160000 --- a/rd-submodules/retroarch +++ b/rd-submodules/retroarch @@ -1 +1 @@ -Subproject commit a96821769848a711db1ed0b71883f91383e2b4ab +Subproject commit 51d4821a45ac5fe13b2baa69aaaea864ead407ce diff --git a/rd-submodules/ryujinx b/rd-submodules/ryujinx index f9e0cd83..ebcd7d1c 160000 --- a/rd-submodules/ryujinx +++ b/rd-submodules/ryujinx @@ -1 +1 @@ -Subproject commit f9e0cd83f366025c15de7de46621963cab793ea9 +Subproject commit ebcd7d1c9bbb2d4857555238727a81e89f6600f1 diff --git a/rd-submodules/shared-modules b/rd-submodules/shared-modules index 55a8e460..6ba63f38 160000 --- a/rd-submodules/shared-modules +++ b/rd-submodules/shared-modules @@ -1 +1 @@ -Subproject commit 55a8e460c6343229597a13e973ba4855c27a1c4c +Subproject commit 6ba63f383ad54e7ebe2b0cda64c15602cf9a9153 diff --git a/res/splash.svg b/res/splash.svg index 0ce56577..e4b76a32 100644 --- a/res/splash.svg +++ b/res/splash.svg @@ -1,24 +1,26 @@ - - - - - - - + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - \ No newline at end of file + + diff --git a/retrodeck.sh b/retrodeck.sh index daeb3cc8..edb0241a 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -13,15 +13,15 @@ for i in "$@"; do flatpak run [FLATPAK-RUN-OPTION] net.retrodeck-retrodeck [ARGUMENTS] Arguments: - -h, --help Print this help - -v, --version Print RetroDECK version - --info-msg Print paths and config informations - --configurator Starts the RetroDECK Configurator - --compress-one Compresses target file to a compatible format - --compress-all Compresses all supported games into compatible format. Available formats are \"chd\", \"zip\", \"rvz\" and \"all\". - --reset-emulator Reset one or more emulator configs to the default values - --reset-emulationstation Reset EmulationStation DE to default settings - --reset-retrodeck Starts the initial RetroDECK installer (backup your data first!) + -h, --help Print this help + -v, --version Print RetroDECK version + --info-msg Print paths and config informations + --configurator Starts the RetroDECK Configurator + --compress-one Compresses target file to a compatible format + --compress-all Compresses all supported games into compatible format. Available formats are \"chd\", \"zip\", \"rvz\" and \"all\". + --reset-component Reset one or more component or emulator configs to the default values + --reset-es-de Reset EmulationStation DE to default settings + --reset-retrodeck Starts the initial RetroDECK installer (backup your data first!) For flatpak run specific options please run: flatpak run -h @@ -55,14 +55,14 @@ https://retrodeck.net shift fi ;; - --reset-emulator*) - echo "You are about to reset one or more RetroDECK emulators." - echo "Available options are: retroarch cemu citra dolphin duckstation melonds pcsx2 ppsspp primehack rpcs3 xemu yuzu all-emulators" - read -p "Please enter the emulator you would like to reset: " emulator - if [[ "$emulator" =~ ^(retroarch|cemu|citra|dolphin|duckstation|melonds|pcsx2|ppsspp|primehack|rpcs3|xemu|yuzu|all-emulators)$ ]]; then - read -p "You are about to reset $emulator to default settings. Enter 'y' to continue, 'n' to stop: " response + --reset-component*) + echo "You are about to reset one or more RetroDECK components or emulators." + echo "Available options are: es-de, retroarch, cemu, citra, dolphin, duckstation, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, xemu, yuzu, vita3k, mame, gzdoom, boilr, all" + read -p "Please enter the component you would like to reset: " component + if [[ "$component" =~ ^(es-de | retroarch | cemu | citra | dolphin | duckstation | melonds | pcsx3 | pico8 | ppsspp | primehack | rpcs3 | xemu | yuzu | vita3k | mame | gzdoom | boilr | all)$ ]]; then + read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response if [[ $response == [yY] ]]; then - prepare_emulator "reset" "$emulator" "cli" + prepare_component "reset" "$component" "cli" read -p "The process has been completed, press Enter key to start RetroDECK." shift # Continue launch after previous command is finished else @@ -70,15 +70,15 @@ https://retrodeck.net exit fi else - echo "$emulator is not a valid selection, exiting..." + echo "$component is not a valid selection, exiting..." exit fi ;; - --reset-emulationstation*) - echo "You are about to reset EmulationStation DE to default settings. Your scraped media, downloaded themes and gamelists will remain untouched." + --reset-es-de*) + echo "You are about to reset ES-DE to default settings. Your scraped media, downloaded themes and gamelists will remain untouched." read -p "Enter 'y' to continue, 'n' to stop: " response if [[ $response == [yY] ]]; then - prepare_emulator "reset" "emulationstation" "cli" + prepare_component "reset" "ES-DE" "cli" read -p "The process has been completed, press Enter key to start RetroDECK." shift # Continue launch after previous command is finished else @@ -189,6 +189,12 @@ if [[ $update_check == "true" ]]; then fi fi +# THIS IS A ONE-OFF FORCED REFRESH OF RETRODECK CONTROLLER PROFILES IN A 0.7.6b VERSION REFRESH - REMOVE BEFORE NEXT VERSION RELEASE +if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf" ]]; then # If RetroDECK controller profile has been previously installed + install_retrodeck_controller_profile +fi +# REMOVE BEFORE NEXT VERSION RELEASE + # Normal Startup start_retrodeck diff --git a/tools/configurator.sh b/tools/configurator.sh index e781711d..196befb2 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -984,18 +984,18 @@ configurator_reset_dialog() { choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Reset" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --column="Choice" --column="Action" \ - "Reset Specific Emulator" "Reset only one specific emulator to default settings" \ - "Reset All Emulators" "Reset all emulators to default settings" \ - "Reset EmulationStation DE" "Reset the ES-DE frontend" \ + "Reset Specific Emulator" "Reset only one specific emulator or engine to default settings" \ + "Reset RetroDECK Component" "Reset a single component, components are parts of RetroDECK that are not emulators" \ + "Reset All Emulators and Components" "Reset all emulators and components to default settings" \ "Reset RetroDECK" "Reset RetroDECK to default settings" ) case $choice in "Reset Specific Emulator" ) - emulator_to_reset=$(zenity --list \ + component_to_reset=$(zenity --list \ --title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ - --text="Which emulator do you want to reset to default?" \ + --text="Which emulator or engine do you want to reset to default?" \ --column="Emulator" --column="Action" \ "RetroArch" "Reset the multi-emulator frontend RetroArch to default settings" \ "Cemu" "Reset the Wii U emulator Cemu to default settings" \ @@ -1009,18 +1009,19 @@ configurator_reset_dialog() { "PPSSPP" "Reset the PSP emulator PPSSPP to default settings" \ "Primehack" "Reset the Metroid Prime emulator Primehack to default settings" \ "RPCS3" "Reset the PS3 emulator RPCS3 to default settings" \ - "Ryujinx" "Reset the Switch emulator Ryujinx to default settings" \ "Vita3k" "Reset the PS Vita emulator Vita3k to default settings" \ "XEMU" "Reset the XBOX emulator XEMU to default settings" \ "Yuzu" "Reset the Switch emulator Yuzu to default settings" ) - case $emulator_to_reset in + # "Ryujinx" "Reset the Switch emulator Ryujinx to default settings" \ + + case $component_to_reset in "RetroArch" | "Vita3k" | "XEMU" ) # Emulators that require network access if [[ $(check_network_connectivity) == "true" ]]; then - if [[ $(configurator_reset_confirmation_dialog "$emulator_to_reset" "Are you sure you want to reset the $emulator_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then - prepare_emulator "reset" "$emulator_to_reset" "configurator" - configurator_process_complete_dialog "resetting $emulator_to_reset" + if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset the $component_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then + prepare_component "reset" "$component_to_reset" "configurator" + configurator_process_complete_dialog "resetting $component_to_reset" else configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled." configurator_reset_dialog @@ -1032,9 +1033,38 @@ configurator_reset_dialog() { ;; "Cemu" | "Citra" | "Dolphin" | "Duckstation" | "MelonDS" | "PCSX2" | "PPSSPP" | "Primehack" | "RPCS3" | "Ryujinx" | "Yuzu" ) - if [[ $(configurator_reset_confirmation_dialog "$emulator_to_reset" "Are you sure you want to reset the $emulator_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then - prepare_emulator "reset" "$emulator_to_reset" "configurator" - configurator_process_complete_dialog "resetting $emulator_to_reset" + if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset the $component_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then + prepare_component "reset" "$component_to_reset" "configurator" + configurator_process_complete_dialog "resetting $component_to_reset" + else + configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled." + configurator_reset_dialog + fi + ;; + + "" ) # No selection made or Back button clicked + configurator_reset_dialog + ;; + + esac + ;; + + "Reset RetroDECK Component" ) + component_to_reset=$(zenity --list \ + --title "RetroDECK Configurator Utility - Reset Specific RetroDECK Component" --cancel-label="Back" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ + --text="Which component do you want to reset to default?" \ + --column="Component" --column="Action" \ + "BoilR" "Reset BoilR that manages the sync and scraping toward Steam library" \ + "ES-DE" "Reset the ES-DE frontend" \ ) + # TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU" + + case $component_to_reset in + + "BoilR" | "ES-DE" ) # TODO: GyroDSU + if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset $component_to_reset to default settings?\n\nThis process cannot be undone.") == "true" ]]; then + prepare_component "reset" "$component_to_reset" "configurator" + configurator_process_complete_dialog "resetting $component_to_reset" else configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled." configurator_reset_dialog @@ -1052,7 +1082,7 @@ configurator_reset_dialog() { if [[ $(check_network_connectivity) == "true" ]]; then if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then ( - prepare_emulator "reset" "all" + prepare_component "reset" "all" ) | zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ @@ -1069,20 +1099,6 @@ configurator_reset_dialog() { fi ;; -"Reset EmulationStation DE" ) - if [[ $(configurator_reset_confirmation_dialog "EmulationStation DE" "Are you sure you want to reset EmulationStation DE to default settings?\n\nYour scraped media, downloaded themes and gamelists will not be touched.\n\nThis process cannot be undone.") == "true" ]]; then - zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ - --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Configurator Utility - Reset EmulationStation DE" \ - --text="You are resetting EmulationStation DE to its default settings.\n\nAfter the process is complete you will need to exit RetroDECK and run it again." - prepare_emulator "reset" "emulationstation" "configurator" - configurator_process_complete_dialog "resetting EmulationStation DE" - else - configurator_generic_dialog "RetroDeck Configurator - EmulationStation DE: Reset" "Reset process cancelled." - configurator_reset_dialog - fi -;; - "Reset RetroDECK" ) if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \