diff --git a/.github/workflows/cooker-selfhosted-persistent.yml b/.github/workflows/cooker-selfhosted-persistent.yml index dced323f..9cd619d7 100644 --- a/.github/workflows/cooker-selfhosted-persistent.yml +++ b/.github/workflows/cooker-selfhosted-persistent.yml @@ -46,6 +46,33 @@ jobs: - name: Generate cooker build ID run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" + - name: Get branch name + id: branch_name + run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV + + # if it's a feature branch it will not marked as "latest" cooker version + - name: "Set makeLatest (cooker only)" + run: | + if [[ "$BRANCH_NAME" == 'feat/'* || "$BRANCH_NAME" == 'refs/'* ]]; then + echo "MAKE_LATEST=false" >> $GITHUB_ENV + else + echo "MAKE_LATEST=true" >> $GITHUB_ENV + fi + + # if the branch is coming from a PR the tag should be manually built + - name: "Generate version tag" + run: | + if [[ "$BRANCH_NAME" == 'refs/'* ]]; then + pr_number=$(echo ${{env.BRANCH_NAME}} | awk -F'/' '{print $3}') + source_branch=$(curl -s "https://api.github.com/repos/XargonWan/RetroDECK/pulls/$pr_number" | jq -r '.head.ref') + source_branch=${source_branch//\//-} + echo "[DEBUG] source branch is: $source_branch" + echo "TAG=PR-$pr_number-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV + else + echo "TAG=${{env.BRANCH_NAME}}-${{ env.buildid }}" >> $GITHUB_ENV + fi + echo "Version TAG: ${{ env.TAG }}" + # backing up manifest in case download fails and hashes must be recalculated - name: Manifest backup run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" @@ -106,23 +133,10 @@ jobs: id: commits continue-on-error: true - - name: Get branch name - id: branch_name - run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV - - # if it's a feature branch it will not marked as "latest" cooker version - - name: "Set makeLatest (cooker only)" - run: | - if [[ "$BRANCH_NAME" == 'feat/'* ]]; then - echo "MAKE_LATEST=false" >> $GITHUB_ENV - else - echo "MAKE_LATEST=true" >> $GITHUB_ENV - fi - - name: Publish the flatpak in a new cooker release uses: ncipollo/release-action@v1 with: - tag: "${{env.BRANCH_NAME}}-${{ env.buildid }}" + tag: "${{env.TAG}}" body: | # Release Notes (Cooker) This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}. diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh index 8f33f8cb..91503927 100755 --- a/automation_tools/install_dependencies.sh +++ b/automation_tools/install_dependencies.sh @@ -1,6 +1,6 @@ #!/bin/bash # 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 +sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq 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/emu-configs/defaults/retrodeck/presets/gb_presets.cfg b/emu-configs/defaults/retrodeck/presets/gb_presets.cfg index d754c374..5c61c27b 100644 --- a/emu-configs/defaults/retrodeck/presets/gb_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/gb_presets.cfg @@ -10,3 +10,4 @@ change^borders^input_overlay_enable^true^^/var/config/retroarch/config/Gambatte/ change^borders^input_overlay_scale_landscape^1.205000^^/var/config/retroarch/config/Gambatte/gb.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_y_offset_landscape^0.005000^^/var/config/retroarch/config/Gambatte/gb.cfg^$emuconfigs/retroarch/retroarch.cfg enable^abxy_button_swap^/var/config/retroarch/config/remaps/Gambatte/gb.rmp +change^rewind^rewind_enable^true^^/var/config/retroarch/config/Gambatte/gb.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/gba_presets.cfg b/emu-configs/defaults/retrodeck/presets/gba_presets.cfg index b5a4fc03..aff63279 100644 --- a/emu-configs/defaults/retrodeck/presets/gba_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/gba_presets.cfg @@ -10,3 +10,4 @@ change^borders^input_overlay_aspect_adjust_landscape^0.110000^^/var/config/retro change^borders^input_overlay_scale_landscape^1.2150000^^/var/config/retroarch/config/mGBA/gba.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_y_offset_landscape^0.020000^^/var/config/retroarch/config/mGBA/gba.cfg^$emuconfigs/retroarch/retroarch.cfg enable^abxy_button_swap^/var/config/retroarch/config/remaps/Gambatte/gbc.rmp +change^rewind^rewind_enable^true^^/var/config/retroarch/config/mGBA/gba.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/gbc_presets.cfg b/emu-configs/defaults/retrodeck/presets/gbc_presets.cfg index d6b2e107..4580722e 100644 --- a/emu-configs/defaults/retrodeck/presets/gbc_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/gbc_presets.cfg @@ -10,3 +10,4 @@ change^borders^input_overlay_enable^true^^/var/config/retroarch/config/Gambatte/ change^borders^input_overlay_scale_landscape^1.205000^^/var/config/retroarch/config/Gambatte/gbc.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_y_offset_landscape^-0.040000^^/var/config/retroarch/config/Gambatte/gbc.cfg^$emuconfigs/retroarch/retroarch.cfg enable^abxy_button_swap^/var/config/retroarch/config/remaps/Gambatte/gbc.rmp +change^rewind^rewind_enable^true^^/var/config/retroarch/config/Gambatte/gbc.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/genesis_presets.cfg b/emu-configs/defaults/retrodeck/presets/genesis_presets.cfg index c566decf..59fccbf8 100644 --- a/emu-configs/defaults/retrodeck/presets/genesis_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/genesis_presets.cfg @@ -4,3 +4,4 @@ change^borders^input_overlay_aspect_adjust_landscape^0.100000^^/var/config/retro change^borders^input_overlay_enable^true^^/var/config/retroarch/config/Genesis Plus GX/genesis.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_scale_landscape^1.040000^^/var/config/retroarch/config/Genesis Plus GX/genesis.cfg^$emuconfigs/retroarch/retroarch.cfg change^widescreen^aspect_ratio_index^24^^/var/config/retroarch/config/Genesis Plus GX/genesis.cfg^$emuconfigs/retroarch/retroarch.cfg +change^rewind^rewind_enable^true^^/var/config/retroarch/config/Genesis Plus GX/genesis.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/gg_presets.cfg b/emu-configs/defaults/retrodeck/presets/gg_presets.cfg index 2de18ce3..c2b58364 100644 --- a/emu-configs/defaults/retrodeck/presets/gg_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/gg_presets.cfg @@ -9,3 +9,4 @@ change^borders^input_overlay_aspect_adjust_landscape^0.110000^^/var/config/retro change^borders^input_overlay_enable^true^^/var/config/retroarch/config/Genesis Plus GX/gg.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_scale_landscape^1.350000^^/var/config/retroarch/config/Genesis Plus GX/gg.cfg^$emuconfigs/retroarch/retroarch.cfg change^borders^input_overlay_y_offset_landscape^0.020000^^/var/config/retroarch/config/Genesis Plus GX/gg.cfg^$emuconfigs/retroarch/retroarch.cfg +change^rewind^rewind_enable^true^^/var/config/retroarch/config/Genesis Plus GX/gg.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/retroarch_presets.cfg b/emu-configs/defaults/retrodeck/presets/retroarch_presets.cfg index 4d8c268e..2cbc3596 100644 --- a/emu-configs/defaults/retrodeck/presets/retroarch_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/retroarch_presets.cfg @@ -3,5 +3,5 @@ change^cheevos^cheevos_enable^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg change^cheevos^cheevos_token^$cheevos_token^^$raconf^$emuconfigs/retroarch/retroarch.cfg change^cheevos^cheevos_username^$cheevos_username^^$raconf^$emuconfigs/retroarch/retroarch.cfg change^cheevos_hardcore^cheevos_hardcore_mode_enable^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg -change^savestate_auto_load^savestate_auto_load^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg -change^savestate_auto_save^savestate_auto_save^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg +change^quick_resume^savestate_auto_load^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg +change^quick_resume^savestate_auto_save^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/presets/snes_presets.cfg b/emu-configs/defaults/retrodeck/presets/snes_presets.cfg index 06ce7b18..99825095 100644 --- a/emu-configs/defaults/retrodeck/presets/snes_presets.cfg +++ b/emu-configs/defaults/retrodeck/presets/snes_presets.cfg @@ -5,3 +5,4 @@ change^borders^input_overlay_scale_landscape^1.050000^^/var/config/retroarch/con change^borders^input_overlay_enable^true^^/var/config/retroarch/config/Snes9x/snes.cfg^$emuconfigs/retroarch/retroarch.cfg change^widescreen^aspect_ratio_index^24^^/var/config/retroarch/config/Snes9x/snes.cfg^$emuconfigs/retroarch/retroarch.cfg enable^abxy_button_swap^/var/config/retroarch/config/remaps/Snes9x/snes.rmp +change^rewind^rewind_enable^true^^/var/config/retroarch/config/Snes9x/snes.cfg^$emuconfigs/retroarch/retroarch.cfg diff --git a/emu-configs/defaults/retrodeck/reference_lists/compression_targets.cfg b/emu-configs/defaults/retrodeck/reference_lists/compression_targets.cfg index d1d7d923..92898b2d 100644 --- a/emu-configs/defaults/retrodeck/reference_lists/compression_targets.cfg +++ b/emu-configs/defaults/retrodeck/reference_lists/compression_targets.cfg @@ -6,13 +6,14 @@ megacd neogeocd pcenginecd pcfx -psp psx ps2 saturn saturnjp segacd tg-cd +[cso] +psp [rvz] gc wii @@ -40,3 +41,4 @@ sega32xjp sega32xna snes snesna +tg16 diff --git a/emu-configs/defaults/retrodeck/reference_lists/easter_egg_checklist.cfg b/emu-configs/defaults/retrodeck/reference_lists/easter_egg_checklist.cfg index 22198f01..140620f4 100644 --- a/emu-configs/defaults/retrodeck/reference_lists/easter_egg_checklist.cfg +++ b/emu-configs/defaults/retrodeck/reference_lists/easter_egg_checklist.cfg @@ -2,3 +2,4 @@ 0209^0212^0000^2359^rd-lunar-dragon-splash.svg 0214^0214^0001^2359^rd-valentines-splash.svg 0317^0317^0000^2359^rd-stpatricks-splash.svg +0429^0505^0000^2359^rd-kodomo-golden.svg diff --git a/emu-configs/defaults/retrodeck/reference_lists/finit_options_list.cfg b/emu-configs/defaults/retrodeck/reference_lists/finit_options_list.cfg index 0c1eb4f1..949859bf 100644 --- a/emu-configs/defaults/retrodeck/reference_lists/finit_options_list.cfg +++ b/emu-configs/defaults/retrodeck/reference_lists/finit_options_list.cfg @@ -1,2 +1,3 @@ false^RPCS3 Firmware Install^Install firmware needed for PS3 emulation^rpcs3_firmware -false^RetroDECK Controller Profile^Install custom RetroDECK controller profile^rd_controller_profile +false^Vita3K Firmware Install^Install firmware needed for Vita3K emulation^vita3k_firmware +true^Install RetroDECK Controller Profile^Install custom RetroDECK controller profile^rd_controller_profile diff --git a/emu-configs/defaults/retrodeck/reference_lists/zip_compressable_extensions.cfg b/emu-configs/defaults/retrodeck/reference_lists/zip_compressable_extensions.cfg index 585e7584..72966ab7 100644 --- a/emu-configs/defaults/retrodeck/reference_lists/zip_compressable_extensions.cfg +++ b/emu-configs/defaults/retrodeck/reference_lists/zip_compressable_extensions.cfg @@ -40,7 +40,9 @@ .msa .nds .nes +.ngc .o +.pce .prg .rom .sfc @@ -58,3 +60,4 @@ .unif .xex .xfd +.z64 diff --git a/emu-configs/defaults/retrodeck/retrodeck.cfg b/emu-configs/defaults/retrodeck/retrodeck.cfg index da64517f..e07c6967 100644 --- a/emu-configs/defaults/retrodeck/retrodeck.cfg +++ b/emu-configs/defaults/retrodeck/retrodeck.cfg @@ -21,6 +21,7 @@ desktop_mode_warning=true low_space_warning=true update_check=false update_repo=RetroDECK +branch= update_ignore= cloud_saves=false multi_user_mode=false @@ -38,6 +39,14 @@ duckstation=false pcsx2=false retroarch=false +[rewind] +gb=false +gba=false +gbc=false +genesis=false +gg=false +snes=false + [borders] gb=false gba=false @@ -63,13 +72,7 @@ n64=false snes=false yuzu=false -[savestate_auto_load] -ppsspp=true -retroarch=true - -[savestate_auto_save] -duckstation=true -pcsx2=true +[quick_resume] retroarch=true [ask_to_exit] diff --git a/emu-configs/gzdoom/gzdoom.pk3 b/emu-configs/gzdoom/gzdoom.pk3 new file mode 100644 index 00000000..c96467ab Binary files /dev/null and b/emu-configs/gzdoom/gzdoom.pk3 differ diff --git a/emu-configs/mame/cfg/default.cfg b/emu-configs/mame/cfg/default.cfg deleted file mode 100644 index 7fbdab04..00000000 --- a/emu-configs/mame/cfg/default.cfg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - JOYCODE_1_HAT1UP - - - - - JOYCODE_1_SELECT - - - - - KEYCODE_LCONTROL KEYCODE_M - - - - - KEYCODE_LCONTROL KEYCODE_P - - - - - KEYCODE_LCONTROL KEYCODE_MINUSPAD - - - - - KEYCODE_LCONTROL KEYCODE_S - - - - - KEYCODE_LCONTROL KEYCODE_A - - - - - KEYCODE_LCONTROL KEYCODE_PLUSPAD - - - - - KEYCODE_LCONTROL KEYCODE_X - - - - - diff --git a/emu-configs/mame/default.cfg b/emu-configs/mame/default.cfg new file mode 100644 index 00000000..b06d674e --- /dev/null +++ b/emu-configs/mame/default.cfg @@ -0,0 +1,278 @@ + + + + + + + + JOYCODE_1_HAT1UP + + + + + JOYCODE_1_BUTTON8 + + + + + KEYCODE_5 OR JOYCODE_1_BUTTON7 + + + + + NONE + + + + + NONE + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_M + + + + + KEYCODE_LCONTROL KEYCODE_Q + + + + + KEYCODE_DEL + + + + + KEYCODE_PGUP OR JOYCODE_1_ZAXIS_POS_SWITCH + + + + + KEYCODE_PGDN OR JOYCODE_1_RZAXIS_POS_SWITCH + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_P + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_MINUS + + + + + KEYCODE_LCONTROL KEYCODE_S + + + + + KEYCODE_LCONTROL KEYCODE_A + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_R + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_PLUS + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_X + + + + + NONE + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_C + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + NONE + + + + + KEYCODE_TAB OR JOYCODE_1_RZAXIS_POS_SWITCH + + + + + KEYCODE_LSHIFT KEYCODE_TAB OR JOYCODE_1_ZAXIS_POS_SWITCH + + + + + NONE + + + + + JOYCODE_1_BUTTON4 + + + + + NONE + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_ENTER + + + + + NONE + + + + + KEYCODE_LCONTROL KEYCODE_Y + + + + + KEYCODE_LCONTROL KEYCODE_U + + + + + NONE + + + + + diff --git a/emu-configs/mame/mame-rdwrapper.sh b/emu-configs/mame/mame-rdwrapper.sh new file mode 100755 index 00000000..e6c98fcd --- /dev/null +++ b/emu-configs/mame/mame-rdwrapper.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +mame -inipath /var/config/mame \ No newline at end of file diff --git a/emu-configs/mame/mame.ini b/emu-configs/mame/mame.ini index 99812b94..bacecbdb 100644 --- a/emu-configs/mame/mame.ini +++ b/emu-configs/mame/mame.ini @@ -7,31 +7,31 @@ writeconfig 0 # # CORE SEARCH PATH OPTIONS # -homepath /var/config/mame -rompath RETRODECKROMSDIR -hashpath /app/share/mame/hash -samplepath /app/share/mame/samples -artpath RETRODECKHOMEDIR/downloaded_media/arcade/screenshots/ -ctrlrpath /app/share/mame/ctrlr -inipath /var/config/mame -fontpath /app/bin/ -cheatpath /app/share/mame/cheat -crosshairpath /app/share/mame/crosshair -pluginspath /app/share/mame/plugins -languagepath /app/share/mame/language -swpath /app/share/mame/software +homepath /var/data/mame/plugin-data +rompath RETRODECKROMSDIR/adam;RETRODECKROMSDIR/amstradcpc;RETRODECKROMSDIR/apple2;RETRODECKROMSDIR/apple2gs;RETRODECKROMSDIR/arcade;RETRODECKROMSDIR/arcadia;RETRODECKROMSDIR/archimedes;RETRODECKROMSDIR/astrocde;RETRODECKROMSDIR/atari7800;RETRODECKROMSDIR/atarijaguar;RETRODECKROMSDIR/bbcmicro;RETRODECKROMSDIR/cdimono1;RETRODECKROMSDIR/channelf;RETRODECKROMSDIR/consolearcade;RETRODECKROMSDIR/cps;RETRODECKROMSDIR/cps1;RETRODECKROMSDIR/cps2;RETRODECKROMSDIR/cps3;RETRODECKROMSDIR/crvision;RETRODECKROMSDIR/daphne;RETRODECKROMSDIR/electron;RETRODECKROMSDIR/fm7;RETRODECKROMSDIR/fmtowns;RETRODECKROMSDIR/gamate;RETRODECKROMSDIR/gameandwatch;RETRODECKROMSDIR/gamecom;RETRODECKROMSDIR/gmaster;RETRODECKROMSDIR/gx4000;RETRODECKROMSDIR/intellivision;RETRODECKROMSDIR/laserdisc;RETRODECKROMSDIR/lcdgames;RETRODECKROMSDIR/mame;RETRODECKROMSDIR/megaduck;RETRODECKROMSDIR/model2;RETRODECKROMSDIR/neogeo;RETRODECKROMSDIR/neogeocd;RETRODECKROMSDIR/neogeocdjp;RETRODECKROMSDIR/odyssey2;RETRODECKROMSDIR/pv1000;RETRODECKROMSDIR/scv;RETRODECKROMSDIR/stv;RETRODECKROMSDIR/supervision;RETRODECKROMSDIR/supracan;RETRODECKROMSDIR/ti99;RETRODECKROMSDIR/vectrex;RETRODECKROMSDIR/videopac;RETRODECKROMSDIR/vsmile;RETRODECKROMSDIR/x68000 +hashpath /var/data/mame/hash +samplepath /var/data/mame/assets/samples +artpath /var/data/mame/assets/artwork +ctrlrpath /var/config/ctrlr +inipath /var/config/mame/ini +fontpath /var/data/mame/assets/fonts +cheatpath /var/data/mame/cheat +crosshairpath /var/data/mame/assets/crosshair +pluginspath /var/data/mame/plugins +languagepath /var/data/mame/assets/language +swpath /var/data/mame/assets/software # # CORE OUTPUT DIRECTORY OPTIONS # cfg_directory /var/config/mame/cfg -nvram_directory /var/config/mame/nvram +nvram_directory RETRODECKSAVESDIR/mame-sa/nvram input_directory /var/config/mame/inp -state_directory RETRODECKSAVESDIR/mame-sa/states -snapshot_directory RETRODECKHOMEDIR/screenshots -diff_directory /var/config/mame/diff -comment_directory /var/config/mame/comments -share_directory /var/config/mame/share +state_directory RETRODECKSTATESDIR/mame-sa +snapshot_directory RETRODECKHOMEDIR/screenshots/mame-sa +diff_directory RETRODECKSAVESDIR/mame-sa/diff +comment_directory /var/data/mame/assets/comments +share_directory /var/data/mame/assets/share # # CORE STATE/PLAYBACK OPTIONS @@ -234,7 +234,7 @@ output auto keyboardprovider auto mouseprovider auto lightgunprovider auto -joystickprovider auto +joystickprovider sdljoy # # OSD DEBUGGING OPTIONS @@ -353,7 +353,7 @@ networkprovider auto # # BGFX POST-PROCESSING OPTIONS # -bgfx_path bgfx +bgfx_path /app/share/mame/bgfx bgfx_backend auto bgfx_debug 0 bgfx_screen_chains diff --git a/emu-configs/mame/ui.ini b/emu-configs/mame/ui.ini index 5955d68a..d616b1a4 100644 --- a/emu-configs/mame/ui.ini +++ b/emu-configs/mame/ui.ini @@ -1,26 +1,26 @@ # # UI SEARCH PATH OPTIONS # -historypath history;dats;. -categorypath folders -cabinets_directory cabinets;cabdevs -cpanels_directory cpanel -pcbs_directory pcb -flyers_directory flyers -titles_directory titles -ends_directory ends -marquees_directory marquees;RETRODECKHOMEDIR/downloaded_media/arcade/marquees -artwork_preview_directory "artwork preview;artpreview" -bosses_directory bosses -logos_directory logo -scores_directory scores -versus_directory versus -gameover_directory gameover -howto_directory howto -select_directory select -icons_directory icons -covers_directory covers;RETRODECKHOMEDIR/downloaded_media/arcade/covers -ui_path ui +historypath /var/data/mame/dats +categorypath /var/data/mame/folders +cabinets_directory /var/data/mame/assets/cabinets +cpanels_directory /var/data/mame/assets/cpanel +pcbs_directory /var/data/mame/assets/pcb +flyers_directory /var/data/mame/assets/flyers +titles_directory /var/data/mame/assets/titles +ends_directory /var/data/mame/assets/ends +marquees_directory /var/data/mame/assets/marquees +artwork_preview_directory /var/data/mame/assets/artwork-preview +bosses_directory /var/data/mame/assets/bosses +logos_directory /var/data/mame/assets/logo +scores_directory /var/data/mame/assets/scores +versus_directory /var/data/mame/assets/versus +gameover_directory /var/data/mame/assets/gameover +howto_directory /var/data/mame/assets/howto +select_directory /var/data/mame/assets/select +icons_directory /var/data/mame/assets/icons +covers_directory /var/data/mame/assets/covers +ui_path /var/data/mame/assets/ui # # UI MISC OPTIONS @@ -62,7 +62,7 @@ remember_last 0 last_used_filter Available system_right_panel image software_right_panel image -system_right_image cover +system_right_image snap software_right_image snap enlarge_snaps 1 forced4x3 1 diff --git a/emu-configs/ryujinx/Config.json b/emu-configs/ryujinx/Config.json index e58b6ead..630011ad 100644 --- a/emu-configs/ryujinx/Config.json +++ b/emu-configs/ryujinx/Config.json @@ -1,5 +1,5 @@ { - "version": 48, + "version": 49, "enable_file_log": true, "backend_threading": "Auto", "res_scale": 1, @@ -12,7 +12,7 @@ "graphics_shaders_dump_path": "", "logging_enable_debug": false, "logging_enable_stub": false, - "logging_enable_info": true, + "logging_enable_info": false, "logging_enable_warn": true, "logging_enable_error": true, "logging_enable_trace": false, @@ -91,13 +91,13 @@ "enable_keyboard": false, "enable_mouse": false, "hotkeys": { - "toggle_vsync": "F1", - "screenshot": "F8", - "show_ui": "F4", - "pause": "F5", - "toggle_mute": "F2", - "res_scale_up": "Unbound", - "res_scale_down": "Unbound", + "toggle_vsync": "Unknown", + "screenshot": "Unknown", + "show_ui": "F1", + "pause": "F4", + "toggle_mute": "Unknown", + "res_scale_up": "F7", + "res_scale_down": "F8", "volume_up": "Unbound", "volume_down": "Unbound" }, @@ -121,22 +121,27 @@ }, "deadzone_left": 0, "deadzone_right": 0, - "range_left": 1, + "range_left": 1.2, "range_right": 1, - "trigger_threshold": 0.5, + "trigger_threshold": 0, "motion": { - "motion_backend": "GamepadDriver", + "slot": 0, + "alt_slot": 0, + "mirror_input": false, + "dsu_server_host": "127.0.0.1", + "dsu_server_port": 26760, + "motion_backend": "CemuHook", "sensitivity": 100, "gyro_deadzone": 1, "enable_motion": true }, "rumble": { - "strong_rumble": 1, + "strong_rumble": 2.1, "weak_rumble": 1, "enable_rumble": true }, "left_joycon": { - "button_minus": "Minus", + "button_minus": "Back", "button_l": "LeftShoulder", "button_zl": "LeftTrigger", "button_sl": "Unbound", @@ -147,7 +152,7 @@ "dpad_right": "DpadRight" }, "right_joycon": { - "button_plus": "Plus", + "button_plus": "Start", "button_r": "RightShoulder", "button_zr": "RightTrigger", "button_sl": "Unbound", @@ -160,12 +165,190 @@ "version": 1, "backend": "GamepadSDL2", "id": "0-f6790003-28de-0000-ff11-000001000000", - "controller_type": "Handheld", - "player_index": "Handheld" + "controller_type": "ProController", + "player_index": "Player1" + }, + { + "left_joycon_stick": { + "joystick": "Left", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "LeftStick" + }, + "right_joycon_stick": { + "joystick": "Right", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "RightStick" + }, + "deadzone_left": 0, + "deadzone_right": 0, + "range_left": 1.2, + "range_right": 1, + "trigger_threshold": 0, + "motion": { + "motion_backend": "GamepadDriver", + "sensitivity": 100, + "gyro_deadzone": 1, + "enable_motion": false + }, + "rumble": { + "strong_rumble": 1, + "weak_rumble": 1, + "enable_rumble": true + }, + "left_joycon": { + "button_minus": "Back", + "button_l": "LeftShoulder", + "button_zl": "LeftTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "dpad_up": "DpadUp", + "dpad_down": "DpadDown", + "dpad_left": "DpadLeft", + "dpad_right": "DpadRight" + }, + "right_joycon": { + "button_plus": "Start", + "button_r": "RightShoulder", + "button_zr": "RightTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "button_x": "Y", + "button_b": "A", + "button_y": "X", + "button_a": "B" + }, + "version": 1, + "backend": "GamepadSDL2", + "id": "1-00000003-28de-0000-ff11-000001000000", + "controller_type": "ProController", + "player_index": "Player2" + }, + { + "left_joycon_stick": { + "joystick": "Left", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "LeftStick" + }, + "right_joycon_stick": { + "joystick": "Right", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "RightStick" + }, + "deadzone_left": 0, + "deadzone_right": 0, + "range_left": 1.2, + "range_right": 1, + "trigger_threshold": 0, + "motion": { + "motion_backend": "GamepadDriver", + "sensitivity": 100, + "gyro_deadzone": 1, + "enable_motion": false + }, + "rumble": { + "strong_rumble": 1, + "weak_rumble": 1, + "enable_rumble": true + }, + "left_joycon": { + "button_minus": "Back", + "button_l": "LeftShoulder", + "button_zl": "LeftTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "dpad_up": "DpadUp", + "dpad_down": "DpadDown", + "dpad_left": "DpadLeft", + "dpad_right": "DpadRight" + }, + "right_joycon": { + "button_plus": "Start", + "button_r": "RightShoulder", + "button_zr": "RightTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "button_x": "Y", + "button_b": "A", + "button_y": "X", + "button_a": "B" + }, + "version": 1, + "backend": "GamepadSDL2", + "id": "2-00000003-28de-0000-ff11-000001000000", + "controller_type": "ProController", + "player_index": "Player3" + }, + { + "left_joycon_stick": { + "joystick": "Left", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "LeftStick" + }, + "right_joycon_stick": { + "joystick": "Right", + "invert_stick_x": false, + "invert_stick_y": false, + "rotate90_cw": false, + "stick_button": "RightStick" + }, + "deadzone_left": 0, + "deadzone_right": 0, + "range_left": 1.2, + "range_right": 1, + "trigger_threshold": 0, + "motion": { + "motion_backend": "GamepadDriver", + "sensitivity": 100, + "gyro_deadzone": 1, + "enable_motion": false + }, + "rumble": { + "strong_rumble": 1, + "weak_rumble": 1, + "enable_rumble": true + }, + "left_joycon": { + "button_minus": "Back", + "button_l": "LeftShoulder", + "button_zl": "LeftTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "dpad_up": "DpadUp", + "dpad_down": "DpadDown", + "dpad_left": "DpadLeft", + "dpad_right": "DpadRight" + }, + "right_joycon": { + "button_plus": "Start", + "button_r": "RightShoulder", + "button_zr": "RightTrigger", + "button_sl": "Unbound", + "button_sr": "Unbound", + "button_x": "Y", + "button_b": "A", + "button_y": "X", + "button_a": "B" + }, + "version": 1, + "backend": "GamepadSDL2", + "id": "3-00000003-28de-0000-ff11-000001000000", + "controller_type": "ProController", + "player_index": "Player4" } ], "graphics_backend": "Vulkan", "preferred_gpu": "0x1002_0x163F", + "multiplayer_mode": 0, "multiplayer_lan_interface_id": "0", "use_hypervisor": true -} +} \ No newline at end of file diff --git a/emu-configs/yuzu/qt-config.ini b/emu-configs/yuzu/qt-config.ini index a1e63a4d..b4a4feff 100644 --- a/emu-configs/yuzu/qt-config.ini +++ b/emu-configs/yuzu/qt-config.ini @@ -815,9 +815,9 @@ gamecard_path= gamecard_path\default=true load_directory=/var/data/yuzu/load load_directory\default=true -nand_directory=RETRODECKHOMEDIR/saves/switch/yuzu/nand +nand_directory=RETRODECKHOMEDIR/saves/switch/nand nand_directory\default=true -sdmc_directory=RETRODECKHOMEDIR/saves/switch/yuzu/sdmc +sdmc_directory=RETRODECKHOMEDIR/saves/switch/sdmc sdmc_directory\default=true tas_directory=/var/data/yuzu/tas tas_directory\default=true diff --git a/es-configs/es_find_rules.xml b/es-configs/es_find_rules.xml index a7b5f073..165086b4 100644 --- a/es-configs/es_find_rules.xml +++ b/es-configs/es_find_rules.xml @@ -1,5 +1,5 @@ - + @@ -42,10 +42,6 @@ /usr/lib64/libretro /usr/lib/libretro - - /usr/local/lib/libretro - - /usr/pkg/lib/libretro @@ -69,6 +65,18 @@ ~/bin/advancemame/advmame + + + + amiberry + + + ~/Applications/amiberry/amiberry + ~/.local/share/applications/amiberry/amiberry + ~/.local/bin/amiberry/amiberry + ~/bin/amiberry/amiberry + + @@ -318,24 +326,35 @@ org.flycast.Flycast - ~/Applications/flycast*.AppImage - ~/.local/share/applications/flycast*.AppImage - ~/.local/bin/flycast*.AppImage - ~/bin/flycast*.AppImage + ~/Applications/flycast-x86*.AppImage + ~/.local/share/applications/flycast-x86*.AppImage + ~/.local/bin/flycast-x86*.AppImage + ~/bin/flycast-x86*.AppImage /var/lib/flatpak/exports/bin/org.flycast.Flycast ~/.local/share/flatpak/exports/bin/org.flycast.Flycast + + + + flycast-dojo + + + ~/Applications/flycast-dojo*.AppImage + ~/.local/share/applications/flycast-dojo*.AppImage + ~/.local/bin/flycast-dojo*.AppImage + ~/bin/flycast-dojo*.AppImage + + - fs-uae - fsuae.fs-uae - net.fsuae.FS-UAE + fs-uae-launcher + fsuae.launcher - /var/lib/flatpak/exports/bin/net.fsuae.FS-UAE - ~/.local/share/flatpak/exports/bin/net.fsuae.FS-UAE + /var/lib/flatpak/exports/bin/net.fsuae.FS-UAE|flatpak run --command=fs-uae-launcher net.fsuae.FS-UAE + ~/.local/share/flatpak/exports/bin/net.fsuae.FS-UAE|flatpak run --command=fs-uae-launcher net.fsuae.FS-UAE @@ -444,7 +463,7 @@ - mame + mame-rdwrapper.sh org.mamedev.MAME @@ -649,6 +668,8 @@ ~/.local/share/applications/punes/punes ~/.local/bin/punes/punes ~/bin/punes/punes + /var/lib/flatpak/exports/bin/io.github.punesemu.puNES + ~/.local/share/flatpak/exports/bin/io.github.punesemu.puNES @@ -721,16 +742,22 @@ - Ryujinx.sh + Ryujinx.sh + Ryujinx + Ryujinx.Ava org.ryujinx.Ryujinx /var/lib/flatpak/exports/bin/org.ryujinx.Ryujinx ~/.local/share/flatpak/exports/bin/org.ryujinx.Ryujinx - ~/Applications/publish/Ryujinx.sh - ~/.local/share/applications/publish/Ryujinx.sh - ~/.local/bin/publish/Ryujinx.sh - ~/bin/publish/Ryujinx.sh + ~/Applications/publish/Ryujinx + ~/.local/share/applications/publish/Ryujinx + ~/.local/bin/publish/Ryujinx + ~/bin/publish/Ryujinx + ~/Applications/publish/Ryujinx.Ava + ~/.local/share/applications/publish/Ryujinx.Ava + ~/.local/bin/publish/Ryujinx.Ava + ~/bin/publish/Ryujinx.Ava @@ -868,6 +895,19 @@ ~/.local/share/applications/Supermodel/supermodel ~/.local/bin/Supermodel/supermodel ~/bin/Supermodel/supermodel + /var/lib/flatpak/exports/bin/com.supermodel3.Supermodel + ~/.local/share/flatpak/exports/bin/com.supermodel3.Supermodel + + + + + + tic80 + com.tic80.TIC_80 + + + /var/lib/flatpak/exports/bin/com.tic80.TIC_80 + ~/.local/share/flatpak/exports/bin/com.tic80.TIC_80 @@ -950,6 +990,10 @@ Vita3K + ~/Applications/Vita3K*.AppImage + ~/.local/share/applications/Vita3K*.AppImage + ~/.local/bin/Vita3K*.AppImage + ~/bin/Vita3K*.AppImage ~/Applications/Vita3K/Vita3K ~/.local/share/applications/Vita3K/Vita3K ~/.local/bin/Vita3K/Vita3K diff --git a/es-configs/es_settings.xml b/es-configs/es_settings.xml index a88a2ba8..50cd7b18 100644 --- a/es-configs/es_settings.xml +++ b/es-configs/es_settings.xml @@ -2,6 +2,7 @@ + @@ -21,6 +22,7 @@ + @@ -65,6 +67,7 @@ + @@ -145,13 +148,15 @@ - + + + diff --git a/es-configs/es_systems.xml b/es-configs/es_systems.xml index 832d37a9..9baca300 100644 --- a/es-configs/es_systems.xml +++ b/es-configs/es_systems.xml @@ -1,5 +1,5 @@ - + 3do @@ -30,8 +30,8 @@ Adventure Game Studio Game Engine %ROMPATH%/ags .desktop .sh - %STARTDIR%=%GAMEDIR% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% - ags + %STARTDIR%=%GAMEDIR% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + pcwindows ags --> @@ -39,9 +39,11 @@ amiga Commodore Amiga %ROMPATH%/amiga - .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .rp9 .RP9 .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .uae .UAE .7z .7Z .zip .ZIP + .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .uae .UAE .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM% + %EMULATOR_FS-UAE% %ROM% + %STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM% amiga amiga @@ -49,9 +51,11 @@ amiga1200 Commodore Amiga 1200 %ROMPATH%/amiga1200 - .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .rp9 .RP9 .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .uae .UAE .7z .7Z .zip .ZIP + .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .uae .UAE .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM% + %EMULATOR_FS-UAE% %ROM% + %STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM% amiga amiga1200 @@ -59,9 +63,11 @@ amiga600 Commodore Amiga 600 %ROMPATH%/amiga600 - .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .rp9 .RP9 .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .uae .UAE .7z .7Z .zip .ZIP + .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .uae .UAE .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM% + %EMULATOR_FS-UAE% %ROM% + %STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM% amiga amiga600 @@ -69,9 +75,11 @@ amigacd32 Commodore Amiga CD32 %ROMPATH%/amigacd32 - .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .rp9 .RP9 .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .uae .UAE .7z .7Z .zip .ZIP + .adf .ADF .adz .ADZ .ccd .CCD .chd .CHD .cue .CUE .dms .DMS .fdi .FDI .hdf .HDF .hdz .HDZ .ipf .IPF .iso .ISO .lha .LHA .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .uae .UAE .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM% + %EMULATOR_FS-UAE% --config:amiga-model=CD32 %ROM% + %STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --model CD32 --autoload %ROM% amigacd32 amigacd32 @@ -104,6 +112,7 @@ .do .DO .dsk .DSK .nib .NIB .po .PO + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2e -rompath \"%GAMEDIRRAW%;%ROMPATH%/apple2\" -flop1 \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2 apple2e -flop1 %ROM% apple2 apple2 @@ -114,7 +123,7 @@ Apple IIGS %ROMPATH%/apple2gs .2mg .2MG .7z .7z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2gs -rompath %GAMEDIR%\;%ROMPATH%/apple2gs -flop3 \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2gs -rompath \"%GAMEDIRRAW%;%ROMPATH%/apple2gs\" -flop3 \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2gs apple2gs -flop3 %ROM% apple2gs apple2gs @@ -135,9 +144,9 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% %EMULATOR_FLYCAST% %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM% - %STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM% - %STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -fullscreen -force-feedback %INJECT%=%BASENAME%.commands %ROM% + %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% arcade arcade @@ -148,7 +157,7 @@ Emerson Arcadia 2001 %ROMPATH%/arcadia .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "arcadia -rompath %GAMEDIR%\;%ROMPATH%/arcadia -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "arcadia -rompath \"%GAMEDIRRAW%;%ROMPATH%/arcadia\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/arcadia arcadia -cart %ROM% arcadia arcadia @@ -181,7 +190,7 @@ Bally Astrocade %ROMPATH%/astrocde .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "astrocde -rompath \"%GAMEDIRRAW%;%ROMPATH%/astrocde\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/astrocde astrocde -cart %BASENAME% astrocde astrocade @@ -216,6 +225,7 @@ %ROMPATH%/atari7800 .a78 .A78 .bin .BIN .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prosystem_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "a7800 -rompath \"%GAMEDIRRAW%;%ROMPATH%/atari7800\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atari7800 a7800 -cart %ROM% atari7800 atari7800 @@ -289,9 +299,10 @@ atomiswave Sammy Corporation Atomiswave %ROMPATH%/atomiswave - .bin .BIN .cdi .CDI .cue .CUE .dat .DAT .elf .ELF .gdi .GDI .iso .ISO .lst .LST .m3u .M3U .7z .7Z .zip .ZIP + .bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + arcade atomiswave @@ -320,15 +331,6 @@ c64 c64 - - cavestory - Cave Story (NXEngine) - %ROMPATH%/cavestory - .exe .EXE .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nxengine_libretro.so %ROM% - cavestory - cavestory - cdimono1 Philips CD-i @@ -347,6 +349,8 @@ .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM% + + cdtv cdtv @@ -365,6 +369,8 @@ %ROMPATH%/channelf .bin .BIN .chf .CHF .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freechaf_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "channelf -rompath \"%GAMEDIRRAW%;%ROMPATH%/channelf\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/channelf channelf -cart %ROM% channelf channelf @@ -401,6 +407,7 @@ %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/consolearcade %BASENAME% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM% @@ -498,11 +505,12 @@ daphne Daphne Arcade LaserDisc Emulator %ROMPATH%/daphne - .daphne .singe .7z .7Z .zip .ZIP + .daphne .dirksimple .ogv .OGV .singe .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM% %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/daphne %BASENAME% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dirksimple_libretro.so %ROM% daphne, arcade daphne @@ -511,7 +519,7 @@ doom Doom %ROMPATH%/doom - .doom .DOOM .desktop .iwad .IWAD .pk4 .PK4 .pk3 .PK3 .pwad .PWAD .sh .wad .WAD .ipk3 .IPK3 + .doom .DOOM .desktop .ipk3 .IPK3 .iwad .IWAD .pk3 .PK3 .pk4 .PK4 .pwad .PWAD .sh .wad .WAD gzdoom.sh %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prboom_libretro.so %ROM% @@ -550,9 +558,10 @@ dreamcast Sega Dreamcast %ROMPATH%/dreamcast - .chd .CHD .cdi .CDI .iso .ISO .elf .ELF .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP + .cdi .CDI .chd .CHD .cue .CUE .dat .DAT .elf .ELF .gdi .GDI .iso .ISO .lst .LST .m3u .M3U .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + dreamcast dreamcast @@ -609,6 +618,8 @@ + + famicom famicom @@ -683,9 +694,10 @@ fmtowns Fujitsu FM Towns %ROMPATH%/fmtowns - .cue .CUE .iso .ISO .7z .7Z .zip .ZIP + .cdr .CDR .chd .CHD .cue .CUE .gdi .GDI .iso .ISO + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "fmtownshr -rompath \"%GAMEDIRRAW%;%ROMPATH%/fmtowns\" -cdrom \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fmtowns fmtowns %BASENAME% - %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fmtowns fmtowns %BASENAME% fmtowns fmtowns @@ -707,7 +719,7 @@ Bit Corporation Gamate %ROMPATH%/gamate .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamate -rompath %GAMEDIR%\;%ROMPATH%/gamate -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamate -rompath \"%GAMEDIRRAW%;%ROMPATH%/gamate\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamate gamate -cart %ROM% gamate gamate @@ -718,6 +730,7 @@ Nintendo Game and Watch %ROMPATH%/gameandwatch .mgw .MGW .7z .7Z .zip .ZIP + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM% %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gameandwatch %BASENAME% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM% @@ -730,7 +743,7 @@ Tiger Electronics Game.com %ROMPATH%/gamecom .tgc .TGC .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamecom -rompath %GAMEDIR%\;%ROMPATH%/gamecom -cartridge1 \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamecom -rompath \"%GAMEDIRRAW%;%ROMPATH%/gamecom\" -cartridge1 \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamecom gamecom -cartridge1 %ROM% gamecom gamecom @@ -747,6 +760,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.so %ROM% + gamegear gamegear @@ -762,6 +776,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/DoubleCherryGB_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM% @@ -769,6 +784,9 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM% + + + gb gb @@ -783,6 +801,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vba_next_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gpsp_libretro.so %ROM% + gba @@ -799,6 +818,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/DoubleCherryGB_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM% @@ -806,6 +826,9 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM% + + + gbc gbc @@ -842,7 +865,7 @@ Hartung Game Master %ROMPATH%/gmaster .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gmaster -rompath %GAMEDIR%\;%ROMPATH%/gmaster -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gmaster -rompath \"%GAMEDIRRAW%;%ROMPATH%/gmaster\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gmaster gmaster -cart %ROM% gmaster gmaster @@ -863,8 +886,10 @@ intellivision Mattel Electronics Intellivision %ROMPATH%/intellivision - .int .INT .bin .BIN .rom .ROM .7z .7Z .zip .ZIP + .bin .BIN .int .INT .rom .ROM .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freeintv_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "intv -rompath \"%GAMEDIRRAW%;%ROMPATH%/intellivision\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/intellivision intv -cart %ROM% intellivision intellivision @@ -877,22 +902,11 @@ android j2me - laserdisc LaserDisc Games %ROMPATH%/laserdisc - .daphne .singe .7z .7Z .zip .ZIP + .daphne .dirksimple .ogv .OGV .singe .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM% @@ -905,6 +919,7 @@ LCD Handheld Games %ROMPATH%/lcdgames .mgw .MGW .7z .7Z .zip .ZIP + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM% %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/lcdgames %BASENAME% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM% @@ -946,9 +961,9 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM% - %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% arcade mame @@ -975,6 +990,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM% + mastersystem mastersystem @@ -1024,6 +1040,8 @@ %ROMPATH%/megaduck .bin .BIN .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameduck_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "megaduck -rompath \"%GAMEDIRRAW%;%ROMPATH%/megaduck\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/megaduck megaduck -cart %ROM% megaduck megaduck @@ -1056,7 +1074,6 @@ %ROMPATH%/model3 .7z .7Z .zip .ZIP %STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM% - %STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -fullscreen -force-feedback %INJECT%=%BASENAME%.commands %ROM% arcade model3 @@ -1074,7 +1091,7 @@ moto Thomson MO/TO Series %ROMPATH%/moto - .fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP + .fd .FD .k7 .K7 .m5 .M5 .m7 .M7 .rom .ROM .sap .SAP .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM% moto moto @@ -1146,6 +1163,7 @@ %ROMPATH%/multivision .bin .BIN .gg .GG .rom .ROM .sg .SG .sms .SMS .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM% + sg-1000 multivision @@ -1182,6 +1200,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/parallel_n64_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM% + n64 n64dd @@ -1189,9 +1208,10 @@ naomi Sega NAOMI %ROMPATH%/naomi - .cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP + .bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + arcade naomi @@ -1202,6 +1222,7 @@ .bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + arcade naomi2 @@ -1212,6 +1233,7 @@ .bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM% + arcade naomigd @@ -1224,6 +1246,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/desmume2015_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melonds_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melondsds_libretro.so %ROM% %EMULATOR_MELONDS% %ROM% nds @@ -1268,7 +1291,7 @@ nes Nintendo Entertainment System %ROMPATH%/nes - .fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP + .3dsen .3DSEN .fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM% @@ -1300,7 +1323,7 @@ ngp SNK Neo Geo Pocket %ROMPATH%/ngp - .ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP + .ngc .NGC .ngp .NGP .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM% @@ -1312,7 +1335,7 @@ ngpc SNK Neo Geo Pocket Color %ROMPATH%/ngpc - .ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP + .ngc .NGC .ngp .NGP .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM% @@ -1322,10 +1345,12 @@ odyssey2 - Magnavox Odyssey2 + Magnavox Odyssey 2 %ROMPATH%/odyssey2 .bin .BIN .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "odyssey2 -rompath \"%GAMEDIRRAW%;%ROMPATH%/odyssey2\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/odyssey2 odyssey2 -cart %ROM% odyssey2 odyssey2 @@ -1355,7 +1380,7 @@ palm Palm OS %ROMPATH%/palm - .prc .PRC .pqa .PQA .img .IMG .7z .7Z .zip .ZIP + .img .IMG .pqa .PQA .prc .PRC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mu_libretro.so %ROM% palm palm @@ -1374,7 +1399,7 @@ pc98 NEC PC-9800 Series %ROMPATH%/pc98 - .2hd .2HD .88d .88D .98d .98D .d88 .D88 .d98 .D98 .cmd .CMD .dup .DUP .fdd .FDD .fdi .FDI .hdd .HDD .hdi .HDI .hdm .HDM .hdn .HDN .m3u .M3U .nhd .NHD .tfd .TFD .thd .THD . xdf .XDF .7z .7Z .zip .ZIP + .2hd .2HD .88d .88D .98d .98D .d88 .D88 .d98 .D98 .cmd .CMD .dup .DUP .fdd .FDD .fdi .FDI .hdd .HDD .hdi .HDI .hdm .HDM .hdn .HDN .m3u .M3U .nhd .NHD .tfd .TFD .thd .THD .xdf .XDF .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/np2kai_libretro.so %ROM% %STARTDIR%=%GAMEDIR% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nekop2_libretro.so %ROM% pc98 @@ -1388,6 +1413,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM% + pcengine pcengine @@ -1400,6 +1426,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM% + pcenginecd pcenginecd @@ -1421,6 +1448,7 @@ .p8 .P8 .png .PNG %EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -run %ROM% %EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -splore + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/retro8_libretro.so %ROM% pico8 pico8 @@ -1447,9 +1475,13 @@ ports Ports %ROMPATH%/ports - .AppImage .desktop .sh + .AppImage .desktop .exe .EXE .game .GAME .phd .PHD .psx .PSX .sh %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% %EMULATOR_OS-SHELL% -c "%ROM%" + + + + pc, pcwindows ports @@ -1457,7 +1489,7 @@ ps2 Sony PlayStation 2 %ROMPATH%/ps2 - .arcadedef .bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG + .arcadedef .bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG .zso .ZSO %EMULATOR_PCSX2% -batch %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM% @@ -1491,7 +1523,7 @@ psp Sony PlayStation Portable %ROMPATH%/psp - .elf .ELF .iso .ISO .cso .CSO .prx .PRX .pbp .PBP .7z .7Z .zip .ZIP + .chd .CHD .cso .CSO .elf .ELF .iso .ISO .pbp .PBP .prx .PRX .7z .7Z .zip .ZIP %EMULATOR_PPSSPP% %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/ppsspp_libretro.so %ROM% psp @@ -1519,6 +1551,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.so %ROM% %EMULATOR_DUCKSTATION% -batch %ROM% + psx psx @@ -1528,6 +1561,7 @@ Casio PV-1000 %ROMPATH%/pv1000 .bin .BIN .7z .7Z .zip .ZIP + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "pv1000 -rompath \"%GAMEDIRRAW%;%ROMPATH%/pv1000\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/pv1000 pv1000 -cart %ROM% pv1000 pv1000 @@ -1553,7 +1587,7 @@ samcoupe MGT SAM Coupé %ROMPATH%/samcoupe - .dsk .DSK .mgt .MGT .sbt .SBT .sad .SAD .7z .7Z .zip .ZIP + .dsk .DSK .mgt .MGT .sad .SAD .sbt .SBT .7z .7Z .zip .ZIP %EMULATOR_SIMCOUPE% %ROM% samcoupe samcoupe @@ -1581,7 +1615,7 @@ saturn Sega Saturn %ROMPATH%/saturn - .bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .mds .MDS .toc .TOC .m3u .M3U .7z .7Z .zip .ZIP + .bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .toc .TOC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM% @@ -1594,7 +1628,7 @@ saturnjp Sega Saturn %ROMPATH%/saturnjp - .bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .mds .MDS .toc .TOC .m3u .M3U .7z .7Z .zip .ZIP + .bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .toc .TOC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM% @@ -1619,7 +1653,7 @@ Epoch Super Cassette Vision %ROMPATH%/scv .0 .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "scv -rompath %GAMEDIR%\;%ROMPATH%/scv -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "scv -rompath \"%GAMEDIRRAW%;%ROMPATH%/scv\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/scv scv -cart %ROM% scv scv @@ -1629,7 +1663,7 @@ sega32x Sega Mega Drive 32X %ROMPATH%/sega32x - .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP + .32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM% sega32x @@ -1639,7 +1673,7 @@ sega32xjp Sega Super 32X %ROMPATH%/sega32xjp - .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP + .32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM% sega32x @@ -1649,7 +1683,7 @@ sega32xna Sega Genesis 32X %ROMPATH%/sega32xna - .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP + .32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM% sega32x @@ -1681,6 +1715,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% + snes @@ -1695,6 +1730,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM% + sg-1000 sg-1000 @@ -1705,9 +1741,11 @@ %ROMPATH%/sgb .gb .GB .gbc .GBC .sgb .SGB .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% + + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameboy_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM% - gb + sgb sgb @@ -1724,6 +1762,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% + snes @@ -1743,6 +1782,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM% + snes @@ -1763,20 +1803,11 @@ spectravideo Spectravideo %ROMPATH%/spectravideo - .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP + .cas .CAS .col .COL .dsk .DSK .m3u .M3U .mx1 .MX1 .mx2 .MX2 .ri .RI .rom .ROM .sc .SC .sg .SG .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM% spectravideo spectravideo - - stratagus - Stratagus Game Engine - %ROMPATH%/stratagus - .7z .7Z .zip .ZIP - PLACEHOLDER %ROM% - stratagus - stratagus - stv Sega Titan Video Game System @@ -1809,9 +1840,11 @@ supergrafx NEC SuperGrafx %ROMPATH%/supergrafx - .pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP + .ccd .CCD .chd .CHD .cue .CUE .pce .PCE .sgx .SGX .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM% + + supergrafx supergrafx @@ -1822,6 +1855,8 @@ %ROMPATH%/supervision .bin .BIN .sv .SV .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/potator_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "svision -rompath \"%GAMEDIRRAW%;%ROMPATH%/supervision\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supervision svision -cart %ROM% supervision supervision @@ -1831,7 +1866,7 @@ Funtech Super A'Can %ROMPATH%/supracan .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "supracan -rompath %GAMEDIR%\;%ROMPATH%/supracan -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "supracan -rompath \"%GAMEDIRRAW%;%ROMPATH%/supracan\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supracan supracan -cart %ROM% supracan supracan @@ -1879,6 +1914,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM% + pcengine tg16 @@ -1891,6 +1927,7 @@ %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM% + pcenginecd tg-cd @@ -1908,10 +1945,11 @@ tic80 - TIC-80 Game Engine + TIC-80 Fantasy Computer %ROMPATH%/tic80 .tic .TIC %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tic80_libretro.so %ROM% + tic80 tic80 @@ -1919,7 +1957,7 @@ to8 Thomson TO8 %ROMPATH%/to8 - .fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP + .fd .FD .k7 .K7 .m5 .M5 .m7 .M7 .rom .ROM .sap .SAP .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM% moto to8 @@ -1969,10 +2007,12 @@ vectrex - Smith Engineering Vectrex + GCE Vectrex %ROMPATH%/vectrex - .bin .BIN .vec .VEC .gam .GAM .vc .VC .7z .7Z .zip .ZIP + .bin .BIN .gam .GAM .vc .VC .vec .VEC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vecx_libretro.so %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vectrex -rompath \"%GAMEDIRRAW%;%ROMPATH%/vectrex\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vectrex vectrex -cart %ROM% vectrex vectrex @@ -1992,14 +2032,16 @@ %ROMPATH%/videopac .bin .BIN .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM% - videopac + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "videopac -rompath \"%GAMEDIRRAW%;%ROMPATH%/videopac\" -cart \"%ROMRAW%\"" + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/videopac videopac -cart %ROM% + odyssey2 videopac virtualboy Nintendo Virtual Boy %ROMPATH%/virtualboy - .vb .VB .vboy .VBOY .bin .BIN .7z .7Z .zip .ZIP + .bin .BIN .vb .VB .vboy .VBOY .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_vb_libretro.so %ROM% virtualboy @@ -2011,7 +2053,7 @@ Visual Pinball %ROMPATH%/vpinball .vpt .VPT .vpx .VPX - %EMULATOR_VISUAL-PINBALL% -Minimized -Play %ROM% + %EMULATOR_VISUAL-PINBALL% -play %ROM% vpinball vpinball @@ -2022,7 +2064,7 @@ VTech V.Smile %ROMPATH%/vsmile .bin .BIN .7z .7Z .zip .ZIP - %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vsmile -rompath %GAMEDIR%\;%ROMPATH%/vsmile -cart \"%ROMRAW%\"" + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vsmile -rompath \"%GAMEDIRRAW%;%ROMPATH%/vsmile\" -cart \"%ROMRAW%\"" %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vsmile vsmile -cart %ROM% vsmile vsmile @@ -2057,14 +2099,55 @@ wiiu wiiu + + windows + Microsoft Windows + %ROMPATH%/windows + .AppImage .desktop .sh + %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %EMULATOR_OS-SHELL% -c "%ROM%" + %RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%" + pcwindows + windows + + + windows3x + Microsoft Windows 3.x + %ROMPATH%/windows3x + .AppImage .bat .BAT .desktop .dosz .DOSZ .sh .7z .7Z .zip .ZIP + %STARTDIR%=%GAMEDIR% %EMULATOR_DOSBOX-X% -defaultdir %GAMEDIR% %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dosbox_pure_libretro.so %ROM% + %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %EMULATOR_OS-SHELL% -c "%ROM%" + %RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%" + windows3x + windows3x + + + windows9x + Microsoft Windows 9x + %ROMPATH%/windows9x + .AppImage .bat .BAT .desktop .dosz .DOSZ .sh .7z .7Z .zip .ZIP + %STARTDIR%=%GAMEDIR% %EMULATOR_DOSBOX-X% -defaultdir %GAMEDIR% %ROM% + %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dosbox_pure_libretro.so %ROM% + %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% + %EMULATOR_OS-SHELL% -c "%ROM%" + %RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%" + pcwindows + windows9x + wonderswan Bandai WonderSwan %ROMPATH%/wonderswan - .ws .WS .pc2 .PC2 .7z .7Z .zip .ZIP + .pc2 .PC2 .ws .WS .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM% + wonderswan wonderswan @@ -2072,7 +2155,7 @@ wonderswancolor Bandai WonderSwan Color %ROMPATH%/wonderswancolor - .ws .WS .wsc .WSC .pc2 .PC2 .7z .7Z .zip .ZIP + .pc2 .PC2 .ws .WS .wsc .WSC .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM% @@ -2083,7 +2166,7 @@ x1 Sharp X1 %ROMPATH%/x1 - .dx1 .DX1 .2d .2D .2hd .2HD .tfd .TFD .d88 .D88 .88d .88D .hdm .HDM .xdf .XDF .dup .DUP .tap .TAP .cmd .CMD .7z .7Z .zip .ZIP + .2d .2D .2hd .2HD .88d .88D .cmd .CMD .d88 .D88 .dup .DUP .dx1 .DX1 .hdm .HDM .tap .TAP .tfd .TFD .xdf .XDF .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/x1_libretro.so %ROM% x1 x1 @@ -2092,9 +2175,9 @@ x68000 Sharp X68000 %ROMPATH%/x68000 - .dim .DIM .img .IMG .d88 .D88 .88d .88D .hdm .HDM .dup .DUP .2hd .2HD .xdf .XDF .hdf .HDF .cmd .CMD .m3u .M3U .7z .7Z .zip .ZIP + .2hd .2HD .88d .88D .cmd .CMD .d88 .D88 .dim .DIM .dup .DUP .hdf .HDF .hdm .HDM .img .IMG .m3u .M3U .xdf .XDF .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/px68k_libretro.so %ROM% - %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/x68000 x68000 -flop1 %ROM% + %STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/x68000 x68000 -flop1 %ROM% x68000 x68000 @@ -2112,7 +2195,7 @@ xbox360 Microsoft Xbox 360 %ROMPATH%/xbox360 - . .desktop .iso .ISO .sh .xex .XEX + . .desktop .iso .ISO .sh .xex .XEX .zar .ZAR %STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_XENIA-WINDOWS% %ROM% %STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_XENIA-WINDOWS% %ROM% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM% @@ -2135,7 +2218,7 @@ zx81 Sinclair ZX81 %ROMPATH%/zx81 - .tzx .TZX .p .P .7z .7Z .zip .ZIP + .p .P .tzx .TZX .7z .7Z .zip .ZIP %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/81_libretro.so %ROM% zx81 zx81 diff --git a/functions/050_save_migration.sh b/functions/050_save_migration.sh index 7bee84d6..d569403b 100644 --- a/functions/050_save_migration.sh +++ b/functions/050_save_migration.sh @@ -30,12 +30,12 @@ save_migration() { fi # Doing the dir prep as we don't know from which version we came - dir_prep "$media_folder" "/var/config/emulationstation/.emulationstation/downloaded_media" - dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes" + dir_prep "$media_folder" "/var/config/ES-DE/downloaded_media" + dir_prep "$themes_folder" "/var/config/ES-DE/themes" mkdir -pv $rdhome/logs #this was added later, maybe safe to remove in a few versions # Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed - cp -fv /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml + cp -fv /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml # 0.4 -> 0.5 # Perform save and state migration if needed diff --git a/functions/checks.sh b/functions/checks.sh index 3646b907..9f01de7a 100644 --- a/functions/checks.sh +++ b/functions/checks.sh @@ -61,6 +61,7 @@ check_for_version_update() { # configurator_generic_dialog "RetroDECK Online Update" "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." # exit 1 # fi + # TODO: add the logic to check and update the branch from the configuration file choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --title "RetroDECK Update Available" \ diff --git a/functions/compression.sh b/functions/compression.sh index ee440cf7..17120f25 100644 --- a/functions/compression.sh +++ b/functions/compression.sh @@ -4,7 +4,7 @@ source /app/libexec/logger.sh compress_game() { # Function for compressing one or more files to .chd format - # USAGE: compress_game $format $full_path_to_input_file + # USAGE: compress_game $format $full_path_to_input_file $system(optional) local file="$2" local filename_no_path=$(basename "$file") local filename_no_extension="${filename_no_path%.*}" @@ -17,6 +17,8 @@ compress_game() { zip -jq9 "$dest_file".zip "$source_file" elif [[ "$1" == "rvz" ]]; then dolphin-tool convert -f rvz -b 131072 -c zstd -l 5 -i "$source_file" -o "$dest_file.rvz" + elif [[ "$1" == "cso" ]]; then + echo "TODO: maxcso command" fi } @@ -32,6 +34,8 @@ find_compatible_compression_format() { echo "zip" elif echo "$normalized_filename" | grep -qE '\.iso|\.gcm' && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "rvz" ]]; then echo "rvz" + elif echo "$normalized_filename" | grep -qE '\.iso' && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "cso" ]]; then + echo "cso" else # If no compatible format can be found for the input file echo "none" @@ -95,11 +99,11 @@ cli_compress_single_game() { read -p "RetroDECK will now attempt to compress your selected game. Press Enter key to continue..." if [[ ! -z "$file" ]]; then if [[ -f "$file" ]]; then - check_system=$(echo "$file" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") + local system=$(echo "$file" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") local compatible_compression_format=$(find_compatible_compression_format "$file") if [[ ! $compatible_compression_format == "none" ]]; then echo "$(basename "$file") can be compressed to $compatible_compression_format" - compress_game "$compatible_compression_format" "$file" + compress_game "$compatible_compression_format" "$file" "$system" if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested if [[ $(basename "$file") == *".cue" ]]; then local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") @@ -157,7 +161,7 @@ cli_compress_all_games() { local compatible_compression_format=$(find_compatible_compression_format "$file") if [[ ! "$compatible_compression_format" == "none" ]]; then echo "$(basename "$file") can be compressed to $compatible_compression_format" - compress_game "$compatible_compression_format" "$file" + compress_game "$compatible_compression_format" "$file" "$system" if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested if [[ "$file" == *".cue" ]]; then local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") diff --git a/functions/functions.sh b/functions/functions.sh index a0e9238b..c8565051 100644 --- a/functions/functions.sh +++ b/functions/functions.sh @@ -111,34 +111,14 @@ download_file() { # file_dest is the destination the file should be in the filesystem, needs filename included! # file_name is a user-readable file name or description to be put in the Zenity dialog - # Run wget in the background and redirect the progress to a temporary file ( - wget "$1" -O "$2" -q --show-progress --progress=dot 2>&1 | sed -n -e 's/^.* \([0-9]*\)%.*$/\1/p' > "/var/cache/tmp/download_progress" & - wget_pid=$! - - progress="0" - echo "$progress" # Initial progress value. sent to Zenity - while true; do - progress=$(tail -n 2 "/var/cache/tmp/download_progress" | head -1) # Read the second-to-last value written to the pipe, to avoid reading data that is half written - echo "$progress" # Send value to Zenity - if [[ "$(tail -n 1 "/var/cache/tmp/download_progress")" == "100" ]]; then # Read last line every time to check for download completion - echo "100" - break - fi - sleep 0.5 - done - - # Wait for wget process to finish - wait "$wget_pid" + wget "$1" -O "$2" -q ) | zenity --progress \ --title="Downloading File" \ --text="Downloading $3..." \ - --percentage=0 \ + --pulsate \ --auto-close - - # Cleanup temp file - rm -f "/var/cache/tmp/download_progress" } update_rd_conf() { @@ -279,7 +259,7 @@ dir_prep() { if [ -d "$symlink.old" ]; then log d "Moving the data from $symlink.old to $real" #DEBUG - mv -f "$symlink.old"/{.[!.],}* $real + mv -f "$symlink.old"/{.[!.],}* "$real" log d "Removing $symlink.old" #DEBUG rm -rf "$symlink.old" fi @@ -287,6 +267,36 @@ dir_prep() { log i "$symlink is now $real\n" } +check_bios_files() { + # This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called bios_checked_list which can be used elsewhere + # There is a "basic" and "expert" mode which outputs different levels of data + # USAGE: check_bios_files "mode" + + rm -f "$godot_bios_files_checked" # Godot data transfer temp files + touch "$godot_bios_files_checked" + + while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc + do + bios_file_found="No" + bios_hash_matched="No" + if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then + bios_file_found="Yes" + if [[ $bios_hash == "Unknown" ]]; then + bios_hash_matched="Unknown" + elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then + bios_hash_matched="Yes" + fi + fi + if [[ "$1" == "basic" ]]; then + bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc") + echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" >> "$godot_bios_files_checked" # Godot data transfer temp file + else + bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash") + echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" >> "$godot_bios_files_checked" # Godot data transfer temp file + fi + done < $bios_checklist +} + update_rpcs3_firmware() { mkdir -p "$roms_folder/ps3/tmp" chmod 777 "$roms_folder/ps3/tmp" @@ -295,6 +305,13 @@ update_rpcs3_firmware() { rm -rf "$roms_folder/ps3/tmp" } +update_vita3k_firmware() { + download_file "http://dus01.psv.update.playstation.net/update/psv/image/2022_0209/rel_f2c7b12fe85496ec88a0391b514d6e3b/PSVUPDAT.PUP" "/tmp/PSVUPDAT.PUP" "Vita3K Firmware file: PSVUPDAT.PUP" + download_file "http://dus01.psp2.update.playstation.net/update/psp2/image/2019_0924/sd_8b5f60b56c3da8365b973dba570c53a5/PSP2UPDAT.PUP?dest=us" "/tmp/PSP2UPDAT.PUP" "Vita3K Firmware file: PSP2UPDAT.PUP" + Vita3K --firmware /tmp/PSVUPDAT.PUP + Vita3K --firmware /tmp/PSP2UPDAT.PUP +} + backup_retrodeck_userdata() { mkdir -p "$backups_folder" zip -rq9 "$backups_folder/$(date +"%0m%0d")_retrodeck_userdata.zip" "$saves_folder" "$states_folder" "$bios_folder" "$media_folder" "$themes_folder" "$logs_folder" "$screenshots_folder" "$mods_folder" "$texture_packs_folder" "$borders_folder" > $logs_folder/$(date +"%0m%0d")_backup_log.log @@ -304,7 +321,11 @@ make_name_pretty() { # This function will take an internal system name (like "gbc") and return a pretty version for user display ("Nintendo GameBoy Color") # USAGE: make_name_pretty "system name" local system=$(grep "$1^" "$pretty_system_names_reference_list") - IFS='^' read -r internal_name pretty_name < <(echo "$system") + if [[ ! -z "$system" ]]; then + IFS='^' read -r internal_name pretty_name < <(echo "$system") + else + pretty_name="$system" + fi echo "$pretty_name" } @@ -374,9 +395,6 @@ finit() { log i "Executing finit" - # Placing the default retrodeck.cfg - cp -vf $rd_defaults $rd_conf - # Internal or SD Card? local finit_dest_choice=$(configurator_destination_choice_dialog "RetroDECK data" "Welcome to the first configuration of RetroDECK.\nThe setup will be quick but please READ CAREFULLY each message in order to avoid misconfigurations.\n\nWhere do you want your RetroDECK data folder to be located?\n\nThis folder will contain all ROMs, BIOSs and scraped data." ) log i "Choice is $finit_dest_choice" @@ -455,6 +473,10 @@ finit() { configurator_generic_dialog "RPCS3 Firmware Install" "You have chosen to install the RPCS3 firmware during the RetroDECK first setup.\n\nThis process will take several minutes and requires network access.\n\nRPCS3 will be launched automatically at the end of the RetroDECK setup process.\nOnce the firmware is installed, please close the emulator to finish the process." fi + if [[ "$finit_options_choices" =~ (vita3k_firmware|Enable All) ]]; then # Additional information on the firmware install process, as the emulator needs to be manually closed + configurator_generic_dialog "Vita3K Firmware Install" "You have chosen to install the Vita3K firmware during the RetroDECK first setup.\n\nThis process will take several minutes and requires network access.\n\nVita3K will be launched automatically at the end of the RetroDECK setup process.\nOnce the firmware is installed, please close the emulator to finish the process." + fi + zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \ --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." @@ -470,6 +492,11 @@ finit() { update_rpcs3_firmware fi fi + if [[ "$finit_options_choices" =~ (vita3k_firmware|Enable All) ]]; then + if [[ $(check_network_connectivity) == "true" ]]; then + update_vita3k_firmware + fi + fi if [[ "$finit_options_choices" =~ (rd_controller_profile|Enable All) ]]; then install_retrodeck_controller_profile fi @@ -492,9 +519,9 @@ install_retrodeck_starterpack() { ## DOOM section ## cp /app/retrodeck/extras/doom1.wad "$roms_folder/doom/doom1.wad" # No -f in case the user already has it - mkdir -p "/var/config/emulationstation/.emulationstation/gamelists/doom" - if [[ ! -f "/var/config/emulationstation/.emulationstation/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist - cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/emulationstation/.emulationstation/gamelists/doom/gamelist.xml" + mkdir -p "/var/config/ES-DE/gamelists/doom" + if [[ ! -f "/var/config/ES-DE/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist + cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/ES-DE/gamelists/doom/gamelist.xml" fi mkdir -p "$media_folder/doom" unzip -oq "/app/retrodeck/rd_prepacks/doom/doom.zip" -d "$media_folder/doom/" @@ -505,10 +532,15 @@ install_retrodeck_controller_profile() { # NOTE: These files need to be stored in shared locations for Steam, outside of the normal RetroDECK folders and should always be an optional user choice # BIGGER NOTE: As part of this process, all emulators will need to have their configs hard-reset to match the controller mappings of the 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/" - rsync -rlD --mkpath "$emuconfigs/defaults/retrodeck/controller_configs/" "$HOME/.steam/steam/controller_base/templates/" - # TODO: delete older files Issue#672 + if [[ -d "$HOME/.steam/steam/controller_base/templates/" || -d "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" ]]; then + if [[ -d "$HOME/.steam/steam/controller_base/templates/" ]]; then # If a normal binary Steam install exists + rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" + rsync -rlD --mkpath "$emuconfigs/defaults/retrodeck/controller_configs/" "$HOME/.steam/steam/controller_base/templates/" + fi + if [[ -d "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" ]]; then # If a Flatpak Steam install exists + rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" + rsync -rlD --mkpath "$emuconfigs/defaults/retrodeck/controller_configs/" "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" + fi 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 @@ -525,8 +557,9 @@ update_splashscreens() { # This script will purge any existing ES graphics and reload them from RO space into somewhere ES will look for it # USAGE: update_splashscreens - rm -rf /var/config/emulationstation/.emulationstation/resources/graphics - rsync -rlD --mkpath "/app/retrodeck/graphics/" "/var/config/emulationstation/.emulationstation/resources/graphics/" + rm -rf /var/config/ES-DE/resources/graphics + rsync -rlD --mkpath "/app/retrodeck/graphics/" "/var/config/ES-DE/resources/graphics/" + } deploy_helper_files() { @@ -568,14 +601,111 @@ easter_eggs() { cp -f "$new_splash_file" "$current_splash_file" # Deploy assigned splash screen } +manage_ryujinx_keys() { + # This function checks if Switch keys are existing and symlinks them inside the Ryujinx system folder + # If the symlinks are broken it recreates them + + echo "Checking Ryujinx Switch keys." #TODO logging + local ryujinx_system="/var/config/Ryujinx/system" # Set the path to the Ryujinx system folder + # Check if the keys folder exists + if [ -d "$bios_folder/switch/keys" ]; then + # Check if there are files in the keys folder + if [ -n "$(find "$bios_folder/switch/keys" -maxdepth 1 -type f)" ]; then + # Iterate over each file in the keys folder + for file in "$bios_folder/switch/keys"/*; do + local filename=$(basename "$file") + local symlink="$ryujinx_system/$filename" + + # Check if the symlink exists and is valid + if [ -L "$symlink" ] && [ "$(readlink -f "$symlink")" = "$file" ]; then + echo "Found \"$symlink\" and it's a valid symlink." #TODO logging + continue # Skip if the symlink is already valid + fi + + # Remove broken symlink or non-symlink file + echo "Found \"$symlink\" but it's not a valid symlink. Repairing it" #TODO logging + [ -e "$symlink" ] && rm "$symlink" + + # Create symlink + ln -s "$file" "$symlink" + echo "Created symlink: \"$symlink\"" + done + else + echo "No files found in $bios_folder/switch/keys. Continuing" #TODO logging + fi + else + echo "Directory $bios_folder/switch/keys does not exist. Maybe Ryujinx was never run. Continuing" #TODO logging + fi +} + +# TODO: this function is not yet used +branch_selector() { + # Fetch branches from GitHub API excluding "main" + branches=$(curl -s https://api.github.com/repos/XargonWan/RetroDECK/branches | grep '"name":' | awk -F '"' '$4 != "main" {print $4}') + # TODO: logging - Fetching branches from GitHub API + + # Create an array to store branch names + branch_array=() + + # Loop through each branch and add it to the array + while IFS= read -r branch; do + branch_array+=("$branch") + done <<< "$branches" + # TODO: logging - Creating array of branch names + + # Display branches in a Zenity list dialog + selected_branch=$( + zenity --list \ + --icon-name=net.retrodeck.retrodeck \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator Cooker Branch - Select Branch" \ + --column="Branch" --width=1280 --height=800 "${branch_array[@]}" + ) + # TODO: logging - Displaying branches in Zenity list dialog + + # Display warning message + if [ $selected_branch ]; then + zenity --question --icon-name=net.retrodeck.retrodeck --no-wrap \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator Cooker Branch - Switch Branch" \ + --text="Are you sure you want to move to \"$selected_branch\" branch?" + # Output selected branch + echo "Selected branch: $selected_branch" # TODO: logging - Outputting selected branch + set_setting_value "$rd_conf" "branch" "$selected_branch" "retrodeck" "options" + branch="feat/sftp" + # Get the latest release for the specified branch + latest_release=$(curl -s "https://api.github.com/repos/XargonWan/RetroDECK-cooker/releases" | jq ".[] | select(.target_commitish == \"$branch_name\") | .tag_name" | head -n 1) + # TODO: this will fail because the builds coming from the PRs are not published yet, we should fix them + # TODO: form a proper url: $flatpak_file_url + configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version." + ( + local desired_flatpak_file=$(curl --silent $flatpak_file_url | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/') + mkdir -p "$rdhome/RetroDECK_Updates" + wget -P "$rdhome/RetroDECK_Updates" $desired_flatpak_file + flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates + flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak" + rm -rf "$rdhome/RetroDECK_Updates" # Cleanup old bundles to save space + ) | + zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Updater" \ + --text="RetroDECK is updating to the latest \"$selected_branch\" version, please wait." + configurator_generic_dialog "RetroDECK Online Update" "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going." + exit 1 + else + configurator_generic_dialog "No branch selected, exiting." + # TODO: logging + fi +} + quit_retrodeck() { pkill -f retrodeck - pkill -f emulationstation + pkill -f es-de } start_retrodeck() { easter_eggs # Check if today has a surprise splashscreen and load it if so # normal startup log i "Starting RetroDECK v$version" - emulationstation --home /var/config/emulationstation + es-de --home /var/config/ } diff --git a/functions/global.sh b/functions/global.sh index aaacfa92..3ed2218f 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -26,11 +26,11 @@ zip_compressable_extensions="$emuconfigs/defaults/retrodeck/reference_lists/zip_ easter_egg_checklist="$emuconfigs/defaults/retrodeck/reference_lists/easter_egg_checklist.cfg" # A config file listing days and times when special splash screens should show up input_validation="$emuconfigs/defaults/retrodeck/reference_lists/input_validation.cfg" # A config file listing valid CLI inputs finit_options_list="$emuconfigs/defaults/retrodeck/reference_lists/finit_options_list.cfg" # A config file listing available optional installs during finit -splashscreen_dir="/var/config/emulationstation/.emulationstation/resources/graphics/extra_splashes" # The default location of extra splash screens -current_splash_file="/var/config/emulationstation/.emulationstation/resources/graphics/splash.svg" # The active splash file that will be shown on boot -default_splash_file="/var/config/emulationstation/.emulationstation/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen +splashscreen_dir="/var/config/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens +current_splash_file="/var/config/ES-DE/resources/graphics/splash.svg" # The active splash file that will be shown on boot +default_splash_file="/var/config/ES-DE/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen multi_user_emulator_config_dirs="$emuconfigs/defaults/retrodeck/reference_lists/multi_user_emulator_config_dirs.cfg" # A list of emulator config folders that can be safely linked/unlinked entirely in multi-user mode -rd_es_themes="/app/share/emulationstation/themes" # The directory where themes packaged with RetroDECK are stored +rd_es_themes="/app/share/es-de/themes" # The directory where themes packaged with RetroDECK are stored lockfile="/var/config/retrodeck/.lock" # where the lockfile is located default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem) @@ -48,6 +48,10 @@ presets_dir="$emuconfigs/defaults/retrodeck/presets" incompatible_presets_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/incompatible_presets.cfg" # A config file listing all incompatible presets for reference (eg. cannot have borders and widescreen enabled simultaniously) pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color) +# Godot data transfer temp files + +godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp" + # Config files for emulators with single config files citraconf="/var/config/citra-emu/qt-config.ini" @@ -59,7 +63,7 @@ yuzuconf="/var/config/yuzu/qt-config.ini" # ES-DE config files -es_settings="/var/config/emulationstation/.emulationstation/es_settings.xml" +es_settings="/var/config/ES-DE/settings/es_settings.xml" # RetroArch config files @@ -109,9 +113,14 @@ rpcs3vfsconf="/var/config/rpcs3/vfs.yml" vita3kconf="/var/data/Vita3K/config.yml" vita3kusrconfdir="$bios_folder/Vita3K/Vita3K" +# MAME-SA config files + +mameconf="/var/config/mame/mame.ini" +mameuiconf="/var/config/mame/ui.ini" +mamedefconf="/var/config/mame/cfg/default.cfg" + # We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions -if [ -f "$HOME/retrodeck/.lock" ] -then +if [[ -f "$HOME/retrodeck/.lock" ]]; then mv "$HOME/retrodeck/.lock" $lockfile fi @@ -122,10 +131,12 @@ if [[ ! -f "$rd_conf" ]]; then log i "Initializing" # if we are here means that the we are in a new installation, so the version is valorized with the hardcoded one # Initializing the variables - if [ -z $version]; then - if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf - log d "Running version workaround" - version=$(cat $lockfile) + if [[ -z "$version" ]]; then + if [[ -f "$lockfile" ]]; then + if [[ $(cat $lockfile) == *"0.4."* ]] || [[ $(cat $lockfile) == *"0.3."* ]] || [[ $(cat $lockfile) == *"0.2."* ]] || [[ $(cat $lockfile) == *"0.1."* ]]; then # If the previous version is very out of date, pre-rd_conf + log d "Running version workaround" + version=$(cat $lockfile) + fi else version="$hard_version" fi @@ -133,10 +144,10 @@ if [[ ! -f "$rd_conf" ]]; then # Check if SD card path has changed from SteamOS update if [[ ! -d "$default_sd" && "$(ls -A /run/media/deck/)" ]]; then - if [[ $(find media/deck/* -maxdepth 0 -type d -print | wc -l) -eq 1 ]]; then # If there is only one SD card found in the new Steam OS 3.5 location, assign it as the default - default_sd="$(find media/deck/* -maxdepth 0 -type d -print)" + if [[ $(find /run/media/deck/* -maxdepth 0 -type d -print | wc -l) -eq 1 ]]; then # If there is only one SD card found in the new SteamOS 3.5 location, assign it as the default + default_sd="$(find /run/media/deck/* -maxdepth 0 -type d -print)" else # If the default legacy path cannot be found, and there are multiple entries in the new Steam OS 3.5 SD card path, let the user pick which one to use - configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"." + configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the default location, and multiple drives were detected.\nPlease browse to the location of the desired SD card.\n\nIf you are not using an SD card, please click \"Cancel\"." default_sd="$(directory_browse "SD Card Location")" fi fi @@ -173,8 +184,8 @@ else tmplog_merger # Verify rdhome is where it is supposed to be. - if [[ ! -d $rdhome ]]; then - prev_home_path=$rdhome + if [[ ! -d "$rdhome" ]]; then + prev_home_path="$rdhome" configurator_generic_dialog "RetroDECK Setup" "The RetroDECK data folder was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the \"retrodeck\" folder." new_home_path=$(directory_browse "RetroDECK folder location") set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths" diff --git a/functions/patching.sh b/functions/patching.sh index db5dc4b7..e43b9507 100644 --- a/functions/patching.sh +++ b/functions/patching.sh @@ -54,6 +54,15 @@ set_setting_value() { xml ed -L -u "//$current_section_name/$setting_name_to_change" -v "$setting_value_to_change" "$1" fi ;; + + "mame" ) # In this option, $current_section_name is the in the .cfg file. + local mame_current_value=$(get_setting_value "$1" "$setting_name_to_change" "$4" "$current_section_name") + if [[ "$1" =~ (.ini)$ ]]; then # If this is a MAME .ini file + sed -i '\^\^'"$setting_name_to_change"'\s^s^'"$mame_current_value"'^'"$setting_value_to_change"'^' "$1" + elif [[ "$1" =~ (.cfg)$ ]]; then # If this is an XML-based MAME .cfg file + sed -i '\^\^,\^<\/system>^s^'"$mame_current_value"'^'"$setting_value_to_change"'^' "$1" + fi + ;; "es_settings" ) sed -i 's^'"$setting_name_to_change"'" value=".*"^'"$setting_name_to_change"'" value="'"$setting_value_to_change"'"^' "$1" @@ -78,6 +87,10 @@ get_setting_name() { echo "$current_setting_line" | grep -o -P "^\s*?.*?(?=\s?:\s?)" | sed -e 's/^[ \t]*//;s^\\ ^ ^g' ;; + "mame" ) # This only works for mame .ini files, not the .cfg XML files + echo "$current_setting_line" | awk '{print $1}' + ;; + * ) echo "$current_setting_line" | grep -o -P "^\s*?.*?(?=\s?=\s?)" | sed -e 's/^[ \t]*//;s^\\ ^ ^g;s^\\$^^' ;; @@ -134,6 +147,14 @@ get_setting_value() { fi ;; + "mame" ) # In this option, $current_section_name is the in the .cfg file. + if [[ "$1" =~ (.ini)$ ]]; then # If this is a MAME .ini file + echo $(sed -n '\^\^'"$current_setting_name"'\s^p' "$1" | awk '{print $2}') + elif [[ "$1" =~ (.cfg)$ ]]; then # If this is an XML-based MAME .cfg file + echo $(xml sel -t -v "/mameconfig/system[@name='$current_section_name']//*[@type='$current_setting_name']//*" -v "text()" -n "$1") + fi + ;; + "es_settings" ) echo $(grep -o -P "(?<=$current_setting_name\" value=\").*(?=\")" "$1") ;; diff --git a/functions/post_update.sh b/functions/post_update.sh index 75708bf5..26561059 100644 --- a/functions/post_update.sh +++ b/functions/post_update.sh @@ -124,7 +124,7 @@ post_update() { dir_prep "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture" dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" - dir_prep "$rdhome/gamelists" "/var/config/emulationstation/.emulationstation/gamelists" + dir_prep "$rdhome/gamelists" "/var/config/emulationstation/ES-DE/gamelists" dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders" rsync -rlD --mkpath "/app/retrodeck/emu-configs/retroarch/borders/" "/var/config/retroarch/overlays/borders/" @@ -172,7 +172,7 @@ post_update() { dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates" rm -rf /var/config/retrodeck/tools - rm -rf /var/config/emulationstation/.emulationstation/gamelists/tools/ + rm -rf /var/config/emulationstation/ES-DE/gamelists/tools/ mv "$saves_folder/gc/dolphin/EUR" "$saves_folder/gc/dolphin/EU" mv "$saves_folder/gc/dolphin/USA" "$saves_folder/gc/dolphin/US" @@ -195,8 +195,8 @@ post_update() { sed -i '$ a ' "$es_settings" # Add new default line to existing file set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" unlink "/var/config/emulationstation/ROMs" - unlink "/var/config/emulationstation/.emulationstation/downloaded_media" - unlink "/var/config/emulationstation/.emulationstation/themes" + unlink "/var/config/emulationstation/ES-DE/downloaded_media" + unlink "/var/config/emulationstation/ES-DE/themes" set_setting_value "$raconf" "savestate_auto_load" "false" "retroarch" set_setting_value "$raconf" "savestate_auto_save" "false" "retroarch" @@ -236,13 +236,30 @@ post_update() { if [[ $prev_version -le "080" ]]; then # In version 0.8.0b, the following changes were made that required config file updates/reset or other changes to the filesystem: - # - Remove RetroDECK controller profile from existing template location TODO - # - Determine if Steam is installed via normal desktop application / Flatpak / SteamOS TODO - # - Install RetroDECK controller profile in desired location TODO + # - Remove RetroDECK controller profile from existing template location # - Change section name in retrodeck.cfg for ABXY button swap preset + # - Force disable global rewind in RA in prep for preset system + if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf"]]; then # Only remove if file had been previously installed + rm -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf" + fi sed -i 's^nintendo_button_layout^abxy_button_swap^' "$rd_conf" # This is a one-off sed statement as there are no functions for replacing section names + set_setting_value "$raconf" "rewind_enable" "false" "retroarch" + + # in 3.0 .emulationstation was moved into ES-DE + mv -f /var/config/emulationstation /var/config/ES-DE + + prepare_component "reset" "es-de" + prepare_component "reset" "mame" + prepare_component "reset" "vita3k" + prepare_component "reset" "gzdoom" + fi + # if [[ $prev_version -le "090" ]]; then + # # Placeholder for version 0.9.0b + # rm /var/config/emulationstation/.emulationstation # remving the old symlink to .emulationstation as it might be not needed anymore + # fi + # The following commands are run every time. if [[ -d "/var/data/dolphin-emu/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled @@ -252,7 +269,7 @@ post_update() { rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/primehack/Load/DynamicInputTextures/" fi - if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf" ]]; then # If RetroDECK controller profile has been previously installed + if [[ ! -z $(find "$HOME/.steam/steam/controller_base/templates/" -maxdepth 1 -type f -iname "RetroDECK*.vdf") || ! -z $(find "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" -maxdepth 1 -type f -iname "RetroDECK*.vdf") ]]; then # If RetroDECK controller profile has been previously installed install_retrodeck_controller_profile fi diff --git a/functions/prepare_component.sh b/functions/prepare_component.sh index 35cb6d90..7ccc6c16 100644 --- a/functions/prepare_component.sh +++ b/functions/prepare_component.sh @@ -23,6 +23,7 @@ prepare_component() { mkdir -p "$rdhome/$(basename $current_setting_value)" fi done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') + mkdir -p "/var/config/retrodeck/godot" fi if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move while read -r config_line; do @@ -39,21 +40,21 @@ prepare_component() { 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/ - cp -f /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml + rm -rf /var/config/ES-DE + mkdir -p /var/config/ES-DE/settings + cp -f /app/retrodeck/es_settings.xml /var/config/ES-DE/settings/es_settings.xml set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" - dir_prep "$rdhome/gamelists" "/var/config/emulationstation/.emulationstation/gamelists" - emulationstation --home /var/config/emulationstation --create-system-dirs + dir_prep "$rdhome/gamelists" "/var/config/ES-DE/gamelists" + es-de --home /var/config/ES-DE --create-system-dirs update_splashscreens fi if [[ "$action" == "postmove" ]]; then set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" - dir_prep "$rdhome/gamelists" "/var/config/emulationstation/.emulationstation/gamelists" + dir_prep "$rdhome/gamelists" "/var/config/ES-DE/gamelists" fi fi @@ -541,27 +542,38 @@ prepare_component() { fi if [[ "$component" =~ ^(ryujunx|Ryujinx|all)$ ]]; then + # NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there + # When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system. if [[ "$action" == "reset" ]]; then # Run reset-only commands log i "------------------------" log i "Initializing RYUJINX" log i "------------------------" if [[ $multi_user_mode == "true" ]]; then rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" - mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system" + #mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system" + # TODO: add /var/config/Ryujinx/system system folder management cp -fv $emuconfigs/ryujinx/* "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" - sed -i 's#/home/deck/retrodeck#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/Config.json" dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx" + # TODO: add nand (saves) folder management + # TODO: add nand (saves) folder management + # TODO: add "registered" folder management else # removing config directory to wipe legacy files rm -rf /var/config/Ryujinx mkdir -p /var/config/Ryujinx/system cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx - sed -i 's#/home/deck/retrodeck#'$rdhome'#g' "$ryujinxconf" + sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" + # Linking switch nand/saves folder + rm -rf /var/config/Ryujinx/bis + dir_prep "$saves_folder/switch/ryujinx/nand" "/var/config/Ryujinx/bis" + dir_prep "$saves_folder/switch/ryujinx/sdcard" "/var/config/Ryujinx/sdcard" + dir_prep "$bios_folder/switch/ryujinx/registered" "/var/config/Ryujinx/bis/system/Contents/registered" fi fi - if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves - dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system" - fi + # if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves + # dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system" + # fi if [[ "$action" == "postmove" ]]; then # Run only post-move commands sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON fi @@ -678,23 +690,13 @@ prepare_component() { else # Single-user actions # 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" + mkdir -p "/var/data/Vita3K/Vita3K" 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 # Shared actions dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe? - - # Installing firmware - # TODO: at the moment this is here instead of a tool because it seems like it cannot run without Firmware - curl "http://dus01.psv.update.playstation.net/update/psv/image/2022_0209/rel_f2c7b12fe85496ec88a0391b514d6e3b/PSVUPDAT.PUP" -po /tmp/PSVUPDAT.PUP - curl "http://dus01.psp2.update.playstation.net/update/psp2/image/2019_0924/sd_8b5f60b56c3da8365b973dba570c53a5/PSP2UPDAT.PUP?dest=us" -po /tmp/PSP2UPDAT.PUP - Vita3K --firmware /tmp/PSVUPDAT.PUP - Vita3K --firmware /tmp/PSP2UPDAT.PUP fi if [[ "$action" == "postmove" ]]; then # Run only post-move commands dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe? @@ -709,13 +711,61 @@ prepare_component() { log i "Initializing MAME" log i "----------------------" - mkdir -p $saves_folder/mame-sa - mkdir -p "/var/config/mame" + # TODO: probably some of these needs to be put elsewhere + mkdir -p "$saves_folder/mame-sa" + mkdir -p "$saves_folder/mame-sa/nvram" + mkdir -p "$states_folder/mame-sa" + mkdir -p "$rdhome/screenshots/mame-sa" + mkdir -p "$saves_folder/mame-sa/diff" + + mkdir -p "/var/config/ctrlr" + mkdir -p "/var/config/mame/ini" + mkdir -p "/var/config/mame/cfg" + mkdir -p "/var/config/mame/inp" + + mkdir -p "/var/data/mame/plugin-data" + mkdir -p "/var/data/mame/hash" + mkdir -p "/var/data/mame/assets/samples" + mkdir -p "/var/data/mame/assets/artwork" + mkdir -p "/var/data/mame/assets/fonts" + mkdir -p "/var/data/mame/cheat" + mkdir -p "/var/data/mame/assets/crosshair" + mkdir -p "/var/data/mame/plugins" + mkdir -p "/var/data/mame/assets/language" + mkdir -p "/var/data/mame/assets/software" + mkdir -p "/var/data/mame/assets/comments" + mkdir -p "/var/data/mame/assets/share" + mkdir -p "/var/data/mame/dats" + mkdir -p "/var/data/mame/folders" + mkdir -p "/var/data/mame/assets/cabinets" + mkdir -p "/var/data/mame/assets/cpanel" + mkdir -p "/var/data/mame/assets/pcb" + mkdir -p "/var/data/mame/assets/flyers" + mkdir -p "/var/data/mame/assets/titles" + mkdir -p "/var/data/mame/assets/ends" + mkdir -p "/var/data/mame/assets/marquees" + mkdir -p "/var/data/mame/assets/artwork-preview" + mkdir -p "/var/data/mame/assets/bosses" + mkdir -p "/var/data/mame/assets/logo" + mkdir -p "/var/data/mame/assets/scores" + mkdir -p "/var/data/mame/assets/versus" + mkdir -p "/var/data/mame/assets/gameover" + mkdir -p "/var/data/mame/assets/howto" + mkdir -p "/var/data/mame/assets/select" + mkdir -p "/var/data/mame/assets/icons" + mkdir -p "/var/data/mame/assets/covers" + mkdir -p "/var/data/mame/assets/ui" + dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore" - cp -fvr "$emuconfigs/mame/**" "/var/config/mame" - sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/*.ini" - sed -i 's#RETRODECKHOMESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini" - sed -i 's#RETRODECKSAVESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini" + cp -fvr "$emuconfigs/mame/mame.ini" "$mameconf" + cp -fvr "$emuconfigs/mame/ui.ini" "$mameuiconf" + cp -fvr "$emuconfigs/mame/default.cfg" "$mamedefconf" + + sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "$mameconf" # one-off as roms folders are a lot + set_setting_value "$mameconf" "nvram_directory" "$saves_folder/mame-sa/nvram" "mame" + set_setting_value "$mameconf" "state_directory" "$states_folder/mame-sa" "mame" + set_setting_value "$mameconf" "snapshot_directory" "$screenshots_folder/mame-sa" "mame" + set_setting_value "$mameconf" "diff_directory" "$saves_folder/mame-sa/diff" "mame" fi diff --git a/functions/presets.sh b/functions/presets.sh index a086928c..d214461a 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -112,11 +112,11 @@ build_preset_config() { "change" ) if [[ "$read_preset" == "$current_preset" ]]; then if [[ "$target_file" = \$* ]]; then # Read current target file and resolve if it is a variable - declare -g "target_file=$target_file" + eval target_file=$target_file fi local read_target_file="$target_file" if [[ "$defaults_file" = \$* ]]; then #Read current defaults file and resolve if it is a variable - declare -g "defaults_file=$defaults_file" + eval defaults_file=$defaults_file fi local read_defaults_file="$defaults_file" if [[ "$read_system_enabled" == "true" ]]; then diff --git a/functions/steam-sync/config.toml b/functions/steam-sync/config.toml index 6e4acaba..0bdd0e25 100644 --- a/functions/steam-sync/config.toml +++ b/functions/steam-sync/config.toml @@ -1,6 +1,7 @@ debug = false config_version = 1 blacklisted_games = [] +boilr_tag = "retrodeck" [steamgrid_db] enabled = true diff --git a/functions/steam-sync/steam-sync.py b/functions/steam-sync/steam-sync.py index 4d9d3ef6..c4ce90df 100644 --- a/functions/steam-sync/steam-sync.py +++ b/functions/steam-sync/steam-sync.py @@ -6,6 +6,8 @@ import shlex import shutil import glob import sys +import time +import hashlib import xml.etree.ElementTree as ET @@ -266,8 +268,13 @@ alt_command_list={ "Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so" } -def create_shortcut_new(games,rdhome): - old_games=os.listdir(rdhome+"/sync/") +exit_file="/tmp/retrodeck_steam_sync_exit" +rdhome="" +roms_folder="" + +def create_shortcut_new(games): + changes=0 + old_games=os.listdir(rdhome+"/.sync/") for game in games: try: @@ -275,8 +282,9 @@ def create_shortcut_new(games,rdhome): old_games[i]=0 except ValueError: print(game[0]+" is a new game!") - - path=rdhome+"/sync/"+game[0] + changes=1 + + path=rdhome+"/.sync/"+game[0] print("Go to path: "+path) if not os.path.exists(path): os.makedirs(path) @@ -300,7 +308,7 @@ def create_shortcut_new(games,rdhome): fl.write(' ]\n') fl.write('}\n') fl.close() - + fl=open(path+"/launch.sh","w") fl.write("#!/bin/bash\n\n") fl.write('if test "$(whereis flatpak)" = "flatpak:"\n') @@ -310,43 +318,25 @@ def create_shortcut_new(games,rdhome): fl.write(game[1]+"\n") fl.write("fi\n") fl.close() - + st=os.stat(path+"/launch.sh") os.chmod(path+"/launch.sh", st.st_mode | 0o0111) - + print("Start removing") print(old_games) for game in old_games: if game: - shutil.rmtree(rdhome+"/sync/"+game) - - os.system("boilr --no-ui") + shutil.rmtree(rdhome+"/.sync/"+game) + changes=1 -def addToSteam(): - print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) + if changes: + os.system("boilr --no-ui") - fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") - lines=fl.readlines() - for line in lines: - if "rdhome" in line: - rdhome=line[7:-1] - elif "roms_folder" in line: - roms_folder=line[12:-1] - fl.close() +def addToSteam(systems): games=[] - - command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8") - alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8") - - if not os.path.exists(rdhome+"/sync/"): - os.makedirs(rdhome+"/sync/") - - if not os.path.exists(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/boilr/sync")): - os.symlink(rdhome+"/sync",os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/boilr/sync")) - - for system in os.listdir(rdhome+"/gamelists/"): + for system in systems: print("Start parsing system: {}".format(system)) - + f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r") f.readline() parser=ET.XMLParser() @@ -355,7 +345,7 @@ def addToSteam(): parser.feed(b'') root=parser.close() f.close() - + globalAltEmu="" for subroot in root: if subroot.tag=="alternativeEmulator": @@ -367,7 +357,7 @@ def addToSteam(): name="" favorite="" altemulator=globalAltEmu - for tag in game: + for tag in game: if tag.tag=="path": path=tag.text elif tag.tag=="name": @@ -376,7 +366,7 @@ def addToSteam(): favorite=tag.text elif tag.tag=="altemulator": altemulator=tag.text - + if favorite=="true" and altemulator=="": print("Find favorite game: {}".format(name)) games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"]) @@ -391,10 +381,76 @@ def addToSteam(): else: games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"]) print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'") - - create_shortcut_new(games,rdhome) + if not games==[]: + create_shortcut_new(games) + +def start_config(): + global rdhome + global roms_folder + global command_list_default + global alt_command_list + + if os.path.isfile(exit_file): + os.remove(exit_file) + + print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) + + fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") + lines=fl.readlines() + for line in lines: + if "rdhome" in line: + rdhome=line[7:-1] + elif "roms_folder" in line: + roms_folder=line[12:-1] + fl.close() + + command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8") + alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8") + + if not os.path.exists(rdhome+"/.sync/"): + os.makedirs(rdhome+"/.sync/") + + boilr_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/boilr/config.toml") + if os.path.isfile(boilr_path): + with open(boilr_path,"r") as f: + data=f.read() + data=re.sub("\"games_folder.*","games_folder = "+rdhome+"/.sync/\"",data) + with open(boilr_path,"w") as f: + f.write(data) + else: + print("Error! BoilR config not initialized.") if __name__=="__main__": - addToSteam() - + start_config() + + new_hash={} + for system in os.listdir(rdhome+"/gamelists/"): + new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() + + running=True + + while running: + time.sleep(30) + systems=[] + + for system in os.listdir(rdhome+"/gamelists/"): + if not system in systems: + if system in new_hash.keys(): + old_hash=new_hash[system] + new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() + if not new_hash[system] == old_hash: + print("System {} changed!".format(system)) + systems.append(system) + else: + print("System {} not changed!".format(system)) + else: + new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest() + print("System {} added!".format(system)) + systems.append(system) + + if os.path.isfile(exit_file): + running=False + os.remove(exit_file) + + addToSteam(systems) print("Finish!") diff --git a/net.retrodeck.retrodeck.appdata.xml b/net.retrodeck.retrodeck.appdata.xml index 6c301ece..39d98f1d 100644 --- a/net.retrodeck.retrodeck.appdata.xml +++ b/net.retrodeck.retrodeck.appdata.xml @@ -8,7 +8,7 @@ RetroDECK Team https://retrodeck.net https://github.com/XargonWan/RetroDECK/issues - http://discord.gg/Dz3szYsP8g + https://retrodeck.readthedocs.io https://github.com/XargonWan/RetroDECK/wiki/FAQs---Frequently-asked-questions https://www.patreon.com/RetroDECK @@ -65,26 +65,28 @@ GPL-3.0 CC0-1.0 - + https://github.com/XargonWan/RetroDECK/releases/tag/0.8.0b -

CRITICAL:

-
    -
  • DEEP TEST: prepare_emulator function is now called prepare_component, eidted even in the cli and split it into the Configurator, so we need to test if the reset emulator works as supposed, if the cli and the Configurator is consistent.
  • -
+

+ WARNING: + The post update script is initializing es-de 3.0, vita3k, mame-sa and ryujinx when coming from a version ealrier that 0.8.0b. Tp fully test this build you must come from a build 0.7.6b or previous otherwise you will surely encounter issues. Else reset RetroDECK but be aware that will not be a proper testing. +

Changes:

    +
  • ES-DE: updated to 3.0
  • +
  • Added new system: RYUJINX
  • Added new system: SOLARUS
  • Added new engine: GZDOOM
  • -
  • Added new emulator: Vita3K - Reset the emulator to grap the lates changes
  • +
  • Added new emulator: Vita3K
  • Added new emulator: MAME (Standalone)
  • PPSSPP: added hotkeys
  • +
  • MAME: added hotkeys
  • +
  • SCUMMVM: added hotkeys
  • DOLPHIN: improved wiimote pointer emulation for controllers
  • -
  • Added Steam Sync (with BoilR)
  • Quit button after emulators reset should act as an actual full quit button
  • Created a quit_retrodeck function to ease the quit in the scripts.
  • Logs folder is now in retrodeck/logs (previously was .logs)
  • -
  • The post update script is initializing vita3k, mame and boilr when coming from a version ealrier that 0.8.0, this don't work in cokker and must be resetted manually (for boilr reset RetroDECK)
  • RPCS3 is now running via shortcut (.desktop file) by default - WARN THE USERS TO MIGRATE
  • Added controller config for PS4 and PS5
  • Controller config overhaul
  • @@ -93,20 +95,18 @@

    Fixes:

    • Fixed DUCKSTATION memory card folder
    • -
    • Fixed RPCS3 saves folder (wrong symlink) - WRN THE USERS TO BACKUP
    • -
    • Fixed issues that prevents Steam Sync to work correctly
    • +
    • Fixed RPCS3 saves folder (wrong symlink) - WARN THE USERS TO BACKUP

    Issues:

      +
    • Vita3K firmware downloader is failing. Workaround: run the downloader twice
    • GZDOOM: the controller for player 2+ is not correctly configured
    • quit_retrodeck function seems to not working correctly
    • -
    • MAME (Standalone) paths should be fixed

    Missing:

    • GZDOOM: hotkeys
    • SOLARUS: hotkeys
    • -
    • MAME (Standalone): hotkeys
    • A proper reset script for the new emulators, now it's just a draft (only Vita3K is done)
    diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml index 031d7f28..ec4e4964 100644 --- a/net.retrodeck.retrodeck.yml +++ b/net.retrodeck.retrodeck.yml @@ -407,7 +407,7 @@ modules: - '*.la' # When updating this module remember to check those: - # https://gitlab.com/es-de/emulationstation-de/-/blob/[VERSION]/resources/systems/unix/es_find_rules.xml + # https://gitlab.com/es-de/emulationstation-de/-/blob/[VERSION]/resources/systems/linux/es_find_rules.xml # But we don't include them 1:1 as RetroDECK got some specific configs in some cases - name: ES-DE buildsystem: cmake-ninja @@ -419,12 +419,8 @@ modules: sources: - type: git url: https://github.com/XargonWan/RetroDECK-ES-DE - branch: cebbeff3b5f834fd9adaeb1f5dc9e0da6b106599 + branch: update/3.0 - type: shell - commands: - - sed -i 's#"EMULATIONSTATION-DE V" + Utils::String::toUpper(PROGRAM_VERSION_STRING)#"RetroDECK - v'$(cat ${FLATPAK_DEST}/retrodeck/version)', ES-DE v" + Utils::String::toUpper(PROGRAM_VERSION_STRING)#g' - es-app/src/guis/GuiMenu.cpp # ES-DE - END @@ -433,8 +429,8 @@ modules: - name: art-book-next-es-de buildsystem: simple build-commands: - - mkdir -p ${FLATPAK_DEST}/share/emulationstation/themes/art-book-next-es-de/ - - mv -f * ${FLATPAK_DEST}/share/emulationstation/themes/art-book-next-es-de/ + - mkdir -p ${FLATPAK_DEST}/share/es-de/themes/art-book-next-es-de/ + - mv -f * ${FLATPAK_DEST}/share/es-de/themes/art-book-next-es-de/ sources: - type: git url: https://github.com/anthonycaccese/art-book-next-es-de.git @@ -444,24 +440,6 @@ modules: # External manifests start - - name: boilr - buildsystem: simple - build-options: - append-path: /usr/lib/sdk/rust-stable/bin - env: - # To pick up vendored deps - CARGO_HOME: /run/build/boilr/cargo - RUSTFLAGS: "-L /app/lib/" - build-commands: - - cargo --offline fetch --manifest-path Cargo.toml --verbose - - cargo --offline build --release --verbose --features flatpak - - install -Dm755 ./target/release/boilr -t /app/bin/ - sources: - - type: git - url: https://github.com/PhilipK/BoilR - commit: b33d965f227fe971fd590cb022f608521b506ef3 - - rd-submodules/boilr/cargo-lock.json - # RetroArch - START # https://github.com/flathub/org.libretro.RetroArch @@ -1310,6 +1288,23 @@ modules: # MAME - End + # Ryujinx Appimage - START + # https://ryujinx.org/download + + - name: Ryujinx + buildsystem: simple + build-commands: + - | + tar -zxvf *.tar.gz + mv -v publish ${FLATPAK_DEST}/ryujinx + ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx.sh + sources: + - type: file + url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.1192/ryujinx-1.1.1192-linux_x64.tar.gz + sha256: 41716233f5745a7df1e411af6bac9d828f0b6b6feb63b5ef87445b81b01dee54 + + # Ryujinx Appimage - END + # External manifests end - name: retrodeck @@ -1320,16 +1315,16 @@ modules: - mkdir -p ${FLATPAK_DEST}/retrodeck # Prep the ES-DE and RetroArch config files - I will have to SED/XMLSTARLET them soon - - rm -rf /app/share/emulationstation/resources/systems/unix/es_find_rules.xml - - cp es-configs/es_find_rules.xml /app/share/emulationstation/resources/systems/unix/ - - rm -rf /app/share/emulationstation/resources/systems/unix/es_systems.xml - - cp es-configs/es_systems.xml /app/share/emulationstation/resources/systems/unix/ + - rm -rf /app/share/es-de/resources/systems/linux/es_find_rules.xml + - cp es-configs/es_find_rules.xml /app/share/es-de/resources/systems/linux/ + - rm -rf /app/share/es-de/resources/systems/linux/es_systems.xml + - cp es-configs/es_systems.xml /app/share/es-de/resources/systems/linux/ # These must be put in home folder, managed by retrodeck.sh - cp es-configs/es_settings.xml ${FLATPAK_DEST}/retrodeck/es_settings.xml - mv -f -t ${FLATPAK_DEST}/retrodeck es-configs/rd_prepacks # Logo, res, move graphics directory away from default location so splash can be changed after build - - mv -f -t ${FLATPAK_DEST}/retrodeck /app/share/emulationstation/resources/graphics + - mv -f -t ${FLATPAK_DEST}/retrodeck /app/share/es-de/resources/graphics - cp -f res/splash.svg ${FLATPAK_DEST}/retrodeck/graphics/splash.svg - cp -f res/splash.svg ${FLATPAK_DEST}/retrodeck/graphics/splash-orig.svg - cp -rf res/extra_splashes/ ${FLATPAK_DEST}/retrodeck/graphics @@ -1343,7 +1338,7 @@ modules: # Tools - mkdir -p /app/tools - cp -r tools/** /app/tools - - find /app/tools -name '*.py|*.sh' -exec chmod +x {} \; + - find /app/tools -type f \( -name "*.sh" -o -name "*.py" \) -exec chmod +x {} \; # Function libraries - mkdir -p /app/libexec @@ -1376,7 +1371,11 @@ modules: - cp emu-configs/gzdoom/gzdoom.sh ${FLATPAK_DEST}/bin/gzdoom.sh - chmod +x ${FLATPAK_DEST}/bin/gzdoom.sh + # MAME wrapper + - cp emu-configs/mame/mame-rdwrapper.sh ${FLATPAK_DEST}/bin/mame-rdwrapper.sh + - chmod +x ${FLATPAK_DEST}/bin/mame-rdwrapper.sh + sources: - type: git url: https://github.com/XargonWan/RetroDECK.git - branch: THISBRANCH \ No newline at end of file + branch: THISBRANCH diff --git a/old/removed-modules.yml b/old/removed-modules.yml index 43d5cab3..04274441 100644 --- a/old/removed-modules.yml +++ b/old/removed-modules.yml @@ -112,24 +112,7 @@ # Duckstation-DontUpdate - END - # Ryujinx Appimage - START - # https://ryujinx.org/download - - # - name: Ryujinx - # buildsystem: simple - # build-commands: - # - | - # tar -zxvf ryujinx-1.1.685-linux_x64.tar.gz - # mv -v publish ${FLATPAK_DEST}/ryujinx - # ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx - # sources: - # - type: file - # url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.685/ryujinx-1.1.685-linux_x64.tar.gz - # sha256: bc4d7076106d7aa59c3a3ea22b83c553e5fa1a897815831adcf18cc13d729e15 - - # Ryujinx Appimage - END - - # Ryujinx - START + # Ryujinx - START # https://github.com/flathub/org.ryujinx.Ryujinx - name: Ryujinx diff --git a/rd-submodules/es-de/GuiMenu.cpp.patch b/rd-submodules/es-de/GuiMenu.cpp.patch deleted file mode 100644 index b0c035ea..00000000 --- a/rd-submodules/es-de/GuiMenu.cpp.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -au1r emulationstation-de/es-app/src/guis/GuiMenu.cpp emulationstation-de/es-app/src/guis/GuiMenu.cpp ---- emulationstation-de/es-app/src/guis/GuiMenu.cpp 2023-08-23 13:12:15.617292576 +0200 -+++ emulationstation-de/es-app/src/guis/GuiMenu.cpp 2023-08-23 13:44:10.736412006 +0200 -@@ -67,2 +67,4 @@ - -+ addEntry("RETRODECK CONFIGURATOR", mMenuColorPrimary, false, [this] { openRetroDeckConfigurator(); }); -+ - if (!Settings::getInstance()->getBool("ForceKiosk") && -@@ -70,3 +72,3 @@ - #if defined(__APPLE__) -- addEntry("QUIT EMULATIONSTATION", mMenuColorPrimary, false, [this] { openQuitMenu(); }); -+ addEntry("QUIT RETRODECK", mMenuColorPrimary, false, [this] { openQuitMenu(); }); - #else -@@ -75,3 +77,3 @@ - else -- addEntry("QUIT EMULATIONSTATION", mMenuColorPrimary, false, [this] { openQuitMenu(); }); -+ addEntry("QUIT RETRODECK", mMenuColorPrimary, false, [this] { openQuitMenu(); }); - #endif -@@ -1758,3 +1760,3 @@ - auto quitText = std::make_shared( -- "QUIT EMULATIONSTATION", Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary); -+ "QUIT RETRODECK", Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary); - quitText->setSelectable(true); -@@ -1910 +1912,14 @@ - } -+ -+void GuiMenu::openRetroDeckConfigurator() -+{ -+ // Launch the configurator.sh script -+ std::string command; -+ std::string startDirectory; -+ bool runInBackground; -+ command = "bash /app/tools/configurator.sh"; -+ startDirectory = "/app/tools"; -+ runInBackground = false; -+ int result = Utils::Platform::launchGameUnix(command, startDirectory, runInBackground); -+ // You can add any checks for the script's outcome here. -+} diff --git a/rd-submodules/es-de/GuiMenu.h.patch b/rd-submodules/es-de/GuiMenu.h.patch deleted file mode 100644 index 13a6b687..00000000 --- a/rd-submodules/es-de/GuiMenu.h.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -au1r emulationstation-de/es-app/src/guis/GuiMenu.h emulationstation-de/es-app/src/guis/GuiMenu.h ---- emulationstation-de/es-app/src/guis/GuiMenu.h 2023-08-23 13:12:15.617292576 +0200 -+++ emulationstation-de/es-app/src/guis/GuiMenu.h 2023-08-23 13:50:20.978700234 +0200 -@@ -46,2 +46,3 @@ - void openOtherOptions(); -+ void openRetroDeckConfigurator(); - void openQuitMenu(); -@@ -54 +55,2 @@ - #endif // ES_APP_GUIS_GUI_MENU_H -+ diff --git a/rd-submodules/es-de/GuiThemeDownloader.cpp.patch b/rd-submodules/es-de/GuiThemeDownloader.cpp.patch deleted file mode 100644 index 8dd35293..00000000 --- a/rd-submodules/es-de/GuiThemeDownloader.cpp.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -au1r emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp ---- emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp 2023-11-03 16:25:01.115126901 +0100 -+++ emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp 2023-11-03 16:26:18.882607724 +0100 -@@ -602,4 +602,4 @@ - getHelpStyle(), -- "IT SEEMS AS IF YOU'RE NOT RUNNING THE LATEST ES-DE RELEASE, PLEASE UPGRADE BEFORE " -- "PROCEEDING AS THESE THEMES MAY NOT BE COMPATIBLE WITH YOUR VERSION", -+ "ES-DE THEME ENGINE WAS UPDATED UPSTREAM. THESE THEMES MAY NOT BE COMPATIBLE WITH THE CURRENT RETRODECK VERSION." -+ "CHECK IF A NEW RETRODECK UPDATE IS AVAILABLE, ELSE PLEASE WAIT FOR IT OR PROCEED AT YOUR OWN RISK.", - "OK", [] { return; }, "", nullptr, "", nullptr, nullptr, true)); diff --git a/rd-submodules/es-de/ViewController.cpp.patch b/rd-submodules/es-de/ViewController.cpp.patch deleted file mode 100644 index 8d677c37..00000000 --- a/rd-submodules/es-de/ViewController.cpp.patch +++ /dev/null @@ -1,101 +0,0 @@ -diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstation-de/es-app/src/views/ViewController.cpp ---- emulationstation-de/es-app/src/views/ViewController.cpp 2023-11-04 15:09:24.332178777 -0400 -+++ emulationstation-de/es-app/src/views/ViewController.cpp 2023-11-04 15:13:59.015780009 -0400 -@@ -195,91 +195,3 @@ - mNoGamesMessageBox = new GuiMsgBox( -- HelpStyle(), mNoGamesErrorMessage + mRomDirectory, "CHANGE ROM DIRECTORY", -- [this] { -- std::string currentROMDirectory; --#if defined(_WIN64) -- currentROMDirectory = Utils::String::replace(FileData::getROMDirectory(), "/", "\\"); --#else -- currentROMDirectory = FileData::getROMDirectory(); --#endif -- if (Settings::getInstance()->getBool("VirtualKeyboard")) { -- mWindow->pushGui(new GuiTextEditKeyboardPopup( -- HelpStyle(), 0.0f, "ENTER ROM DIRECTORY PATH", currentROMDirectory, -- [this, currentROMDirectory](const std::string& newROMDirectory) { -- if (currentROMDirectory != newROMDirectory) { -- Settings::getInstance()->setString( -- "ROMDirectory", Utils::String::trim(newROMDirectory)); -- Settings::getInstance()->saveFile(); --#if defined(_WIN64) -- mRomDirectory = -- Utils::String::replace(FileData::getROMDirectory(), "/", "\\"); --#else -- mRomDirectory = FileData::getROMDirectory(); --#endif -- mNoGamesMessageBox->changeText(mNoGamesErrorMessage + mRomDirectory); -- mWindow->pushGui(new GuiMsgBox(HelpStyle(), -- "ROM DIRECTORY SETTING SAVED, RESTART\n" -- "THE APPLICATION TO RESCAN THE SYSTEMS", -- "OK", nullptr, "", nullptr, "", nullptr, -- nullptr, true, true)); -- } -- }, -- false, "SAVE", "SAVE CHANGES?", "Currently configured path:", -- currentROMDirectory, "LOAD CURRENTLY CONFIGURED PATH", -- "CLEAR (LEAVE BLANK TO RESET TO DEFAULT PATH)")); -- } -- else { -- mWindow->pushGui(new GuiTextEditPopup( -- HelpStyle(), "ENTER ROM DIRECTORY PATH", currentROMDirectory, -- [this](const std::string& newROMDirectory) { -- Settings::getInstance()->setString("ROMDirectory", -- Utils::String::trim(newROMDirectory)); -- Settings::getInstance()->saveFile(); --#if defined(_WIN64) -- mRomDirectory = -- Utils::String::replace(FileData::getROMDirectory(), "/", "\\"); --#else -- mRomDirectory = FileData::getROMDirectory(); --#endif -- mNoGamesMessageBox->changeText(mNoGamesErrorMessage + mRomDirectory); -- mWindow->pushGui(new GuiMsgBox(HelpStyle(), -- "ROM DIRECTORY SETTING SAVED, RESTART\n" -- "THE APPLICATION TO RESCAN THE SYSTEMS", -- "OK", nullptr, "", nullptr, "", nullptr, -- nullptr, true)); -- }, -- false, "SAVE", "SAVE CHANGES?", "Currently configured path:", -- currentROMDirectory, "LOAD CURRENTLY CONFIGURED PATH", -- "CLEAR (LEAVE BLANK TO RESET TO DEFAULT PATH)")); -- } -- }, -- "CREATE DIRECTORIES", -- [this] { -- mWindow->pushGui(new GuiMsgBox( -- HelpStyle(), -- "THIS WILL CREATE DIRECTORIES FOR ALL THE\n" -- "GAME SYSTEMS DEFINED IN es_systems.xml\n\n" -- "THIS MAY CREATE A LOT OF FOLDERS SO IT'S\n" -- "ADVICED TO REMOVE THE ONES YOU DON'T NEED", -- "PROCEED", -- [this] { -- if (!SystemData::createSystemDirectories()) { -- mWindow->pushGui(new GuiMsgBox(HelpStyle(), -- "THE SYSTEM DIRECTORIES WERE SUCCESSFULLY\n" -- "GENERATED, EXIT THE APPLICATION AND PLACE\n" -- "YOUR GAMES IN THE NEWLY CREATED FOLDERS", -- "OK", nullptr, "", nullptr, "", nullptr, -- nullptr, true)); -- } -- else { -- mWindow->pushGui(new GuiMsgBox(HelpStyle(), -- "ERROR CREATING THE SYSTEM DIRECTORIES,\n" -- "PERMISSION PROBLEMS OR DISK FULL?\n\n" -- "SEE THE LOG FILE FOR MORE DETAILS", -- "OK", nullptr, "", nullptr, "", nullptr, -- nullptr, true)); -- } -- }, -- "CANCEL", nullptr, "", nullptr, nullptr, false)); -- }, -- "QUIT", -+ HelpStyle(), mNoGamesErrorMessage + mRomDirectory, "QUIT", - [] { -@@ -289,3 +201,3 @@ - }, -- nullptr, true, false, -+ "", nullptr, "", nullptr, nullptr, true, true, - (mRenderer->getIsVerticalOrientation() ? diff --git a/rd-submodules/es-de/Window.cpp.patch b/rd-submodules/es-de/Window.cpp.patch deleted file mode 100644 index c099d83b..00000000 --- a/rd-submodules/es-de/Window.cpp.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -au1r emulationstation-de/es-core/src/Window.cpp emulationstation-de/es-core/src/Window.cpp ---- emulationstation-de/es-core/src/Window.cpp 2023-08-29 14:14:17.208301836 +0200 -+++ emulationstation-de/es-core/src/Window.cpp 2023-08-29 14:12:37.307334069 +0200 - -@@ -181,3 +181,3 @@ - progressBarRect.barPosY += borderThickness; -- progressBarRect.color = 0x79010FFF; -+ progressBarRect.color = 0xC858E6FF; - mProgressBarRectangles.emplace_back(progressBarRect); diff --git a/rd-submodules/es-de/patch_helper.sh b/rd-submodules/es-de/patch_helper.sh deleted file mode 100755 index 27923b97..00000000 --- a/rd-submodules/es-de/patch_helper.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -mkdir /tmp - -branch="00a226062fff37209d98e0ab048ac89af50ecacc" -git clone "https://gitlab.com/es-de/emulationstation-de.git" /tmp/emulationstation-de - -pushd . -cd /tmp/emulationstation-de -git checkout $branch -popd - -mkdir patches-tmp - -cp /tmp/emulationstation-de/es-app/src/guis/GuiMenu.cpp ./patches-tmp -cp /tmp/emulationstation-de/es-app/src/guis/GuiMenu.h ./patches-tmp -cp /tmp/emulationstation-de/es-app/src/views/ViewController.cpp ./patches-tmp -cp /tmp/emulationstation-de/es-core/src/Window.cpp ./patches-tmp -cp /tmp/emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp ./patches-tmp - -read -p "Please edit the files in \"patches-tmp\" and press enter to continue." - -diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiMenu.cpp ./patches-tmp/GuiMenu.cpp > GuiMenu.cpp.patch -diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiMenu.h ./patches-tmp/GuiMenu.h > GuiMenu.h.patch -diff -au1r /tmp/emulationstation-de/es-app/src/views/ViewController.cpp ./patches-tmp/ViewController.cpp > ViewController.cpp.patch -diff -au1r /tmp/emulationstation-de/es-core/src/Window.cpp ./patches-tmp/Window.cpp > Window.cpp.patch -diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp ./patches-tmp/GuiThemeDownloader.cpp > GuiThemeDownloader.cpp.patch - -rm -rf patches-tmp - -echo "Done, now please remeber to edit the headers of the patch files with the correct paths." \ No newline at end of file diff --git a/res/binding_icons/rd-pc-call.png b/res/binding_icons/rd-pc-call.png new file mode 100644 index 00000000..66e10697 Binary files /dev/null and b/res/binding_icons/rd-pc-call.png differ diff --git a/res/binding_icons/rd-pc-close.png b/res/binding_icons/rd-pc-close.png new file mode 100644 index 00000000..10582266 Binary files /dev/null and b/res/binding_icons/rd-pc-close.png differ diff --git a/res/binding_icons/rd-pc-fight.png b/res/binding_icons/rd-pc-fight.png new file mode 100644 index 00000000..4b5e5c78 Binary files /dev/null and b/res/binding_icons/rd-pc-fight.png differ diff --git a/res/binding_icons/rd-pc-give.png b/res/binding_icons/rd-pc-give.png new file mode 100644 index 00000000..a9f327c4 Binary files /dev/null and b/res/binding_icons/rd-pc-give.png differ diff --git a/res/binding_icons/rd-pc-look.png b/res/binding_icons/rd-pc-look.png new file mode 100644 index 00000000..fa94baee Binary files /dev/null and b/res/binding_icons/rd-pc-look.png differ diff --git a/res/binding_icons/rd-pc-move.png b/res/binding_icons/rd-pc-move.png new file mode 100644 index 00000000..8a9635b9 Binary files /dev/null and b/res/binding_icons/rd-pc-move.png differ diff --git a/res/binding_icons/rd-pc-open.png b/res/binding_icons/rd-pc-open.png new file mode 100644 index 00000000..c5db7d36 Binary files /dev/null and b/res/binding_icons/rd-pc-open.png differ diff --git a/res/binding_icons/rd-pc-pickup.png b/res/binding_icons/rd-pc-pickup.png new file mode 100644 index 00000000..74192543 Binary files /dev/null and b/res/binding_icons/rd-pc-pickup.png differ diff --git a/res/binding_icons/rd-pc-pull.png b/res/binding_icons/rd-pc-pull.png new file mode 100644 index 00000000..892d0748 Binary files /dev/null and b/res/binding_icons/rd-pc-pull.png differ diff --git a/res/binding_icons/rd-pc-push.png b/res/binding_icons/rd-pc-push.png new file mode 100644 index 00000000..1eec6137 Binary files /dev/null and b/res/binding_icons/rd-pc-push.png differ diff --git a/res/binding_icons/rd-pc-read.png b/res/binding_icons/rd-pc-read.png new file mode 100644 index 00000000..d9880d85 Binary files /dev/null and b/res/binding_icons/rd-pc-read.png differ diff --git a/res/binding_icons/rd-pc-talk.png b/res/binding_icons/rd-pc-talk.png new file mode 100644 index 00000000..7894fc6b Binary files /dev/null and b/res/binding_icons/rd-pc-talk.png differ diff --git a/res/binding_icons/rd-pc-use.png b/res/binding_icons/rd-pc-use.png new file mode 100644 index 00000000..3234426b Binary files /dev/null and b/res/binding_icons/rd-pc-use.png differ diff --git a/res/extra_splashes/rd-kodomo-golden.svg b/res/extra_splashes/rd-kodomo-golden.svg new file mode 100644 index 00000000..e447ee1d --- /dev/null +++ b/res/extra_splashes/rd-kodomo-golden.svg @@ -0,0 +1,1502 @@ + + diff --git a/res/extra_splashes/rd-stpatricks-splash.svg b/res/extra_splashes/rd-stpatricks-splash.svg index 012fac30..45e53198 100644 --- a/res/extra_splashes/rd-stpatricks-splash.svg +++ b/res/extra_splashes/rd-stpatricks-splash.svg @@ -1,30 +1,1108 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/retrodeck.sh b/retrodeck.sh index 967ef35e..eab32dcf 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -57,9 +57,9 @@ https://retrodeck.net ;; --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" + echo "Available options are: es-de, retroarch, cemu, citra, dolphin, duckstation, melonds, pcsx3, pico8, ppsspp, primehack, ryujinx. rpcs3, ryujinx, xemu, yuzu, vita3k, mame, gzdoom, boilr, all" read -p "Please enter the component you would like to reset: " component - if [[ "$emulator" =~ ^(retroarch|cemu|citra|dolphin|duckstation|mame|melonds|pcsx2|ppsspp|primehack|rpcs3|xemu|yuzu|all-emulators)$ ]]; then + if [[ "$component" =~ ^(es-de|retroarch|cemu|citra|dolphin|duckstation|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|xemu|yuzu|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_component "reset" "$component" "cli" @@ -80,8 +80,8 @@ https://retrodeck.net if [[ $response == [yY] ]]; then rm -f "$lockfile" rm -f "$rd_conf" - read -p "The process has been completed, press Enter key to start the initial RetroDECK setup process." - shift # Continue launch after previous command is finished + read -p "The process has been completed, press Enter key to exit. Please run RetroDECK again to start the initial setup process." + exit 1 else read -p "The process has been cancelled, press Enter key to exit." exit @@ -183,6 +183,17 @@ if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_conf fi # REMOVE BEFORE NEXT VERSION RELEASE +# Linking switch keys for Ryujinx +manage_ryujinx_keys + # Normal Startup +if [[ $steam_sync == "true" ]]; then + python3 /app/libexec/steam-sync/steam-sync.py & +fi + start_retrodeck + +if [[ $steam_sync == "true" ]]; then + touch /tmp/retrodeck_steam_sync_exit +fi diff --git a/tools/configurator.sh b/tools/configurator.sh index 2e81badd..bc7d5f2a 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -14,13 +14,14 @@ source /app/libexec/logger.sh # - Global: Presets & Settings # - Widescreen: Enable/Disable # - Ask-To-Exit: Enable/Disable +# - Quick Resume: Enable/Disable # - RetroAchievements: Login # - RetroAchievements: Logout # - RetroAchievements: Hardcore Mode -# - Swap A/B and X/Y Buttons +# - Rewind: Enable/Disable +# - Swap A/B and X/Y Buttons: Enable/Disable # - RetroArch: Presets & Settings # - Borders: Enable/Disable -# - Rewind: Enable/Disable # - Wii & GameCube: Presets & Settings # - Dolphin Textures: Universal Dynamic Input # - Primehack Textures: Universal Dynamic Input @@ -61,10 +62,12 @@ source /app/libexec/logger.sh # - Compress All Games # - Install: RetroDECK SD Controller Profile # - Install: PS3 firmware +# - Install: PS Vita firmware # - RetroDECK: Change Update Setting # - Troubleshooting # - Backup: RetroDECK Userdata # - Check & Verify: BIOS +# - Check & Verify: BIOS - Expert Mode # - Check & Verify: Multi-file structure # - RetroDECK: Reset # - Reset Specific Emulator @@ -211,10 +214,12 @@ configurator_global_presets_and_settings_dialog() { --column="Choice" --column="Action" \ "Widescreen: Enable/Disable" "Enable or disable widescreen in supported systems" \ "Ask-to-Exit: Enable/Disable" "Enable or disable emulators confirming when quitting in supported systems" \ + "Quick Resume: Enable/Disable" "Enable or disable save state auto-save/load in supported systems" \ "RetroAchievements: Login" "Log into the RetroAchievements service in supported systems" \ "RetroAchievements: Logout" "Disable RetroAchievements service in ALL supported systems" \ - "RetroAchievements: Hardcore Mode" "Enable RetroAchievements hardcore mode (no cheats, rewind, save states etc.) in supported emulators" \ - "Swap A/B and X/Y Buttons" "Enable or disable a swapped A/B and X/Y button layout in supported systems" ) + "RetroAchievements: Hardcore Mode" "Enable RetroAchievements hardcore mode (no cheats, rewind, save states etc.) in supported systems" \ + "Rewind: Enable/Disable" "Enable or disable the rewind function in supported systems" \ + "Swap A/B and X/Y Buttons: Enable/Disable" "Enable or disable a swapped A/B and X/Y button layout in supported systems" ) case $choice in @@ -230,6 +235,11 @@ configurator_global_presets_and_settings_dialog() { configurator_global_presets_and_settings_dialog ;; + "Quick Resume: Enable/Disable" ) + change_preset_dialog "quick_resume" + configurator_global_presets_and_settings_dialog + ;; + "RetroAchievements: Login" ) local cheevos_creds=$(get_cheevos_token_dialog) if [[ ! "$cheevos_creds" == "failed" ]]; then @@ -259,8 +269,9 @@ configurator_global_presets_and_settings_dialog() { configurator_global_presets_and_settings_dialog ;; - "Swap A/B and X/Y Buttons" ) + "Swap A/B and X/Y Buttons: Enable/Disable" ) log i "Configurator: opening \"$choice\" menu" + change_preset_dialog "abxy_button_swap" configurator_global_presets_and_settings_dialog ;; @@ -277,8 +288,7 @@ configurator_retroarch_presets_and_settings_dialog() { choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroArch: Presets & Settings" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --column="Choice" --column="Action" \ - "Borders: Enable/Disable" "Enable or disable borders in supported systems" \ - "Rewind: Enable/Disable" "Enable or disable the Rewind function in RetroArch." ) + "Borders: Enable/Disable" "Enable or disable borders in supported systems" ) case $choice in @@ -288,11 +298,6 @@ configurator_retroarch_presets_and_settings_dialog() { configurator_retroarch_presets_and_settings_dialog ;; - "Rewind: Enable/Disable" ) - log i "Configurator: opening \"$choice\" menu" - configurator_retroarch_rewind_dialog - ;; - "" ) # No selection made or Back button clicked log i "Configurator: going back" configurator_presets_and_settings_dialog @@ -301,36 +306,6 @@ configurator_retroarch_presets_and_settings_dialog() { esac } -configurator_retroarch_rewind_dialog() { - if [[ $(get_setting_value "$raconf" rewind_enable retroarch) == "true" ]]; then - zenity --question \ - --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Configurator - RetroArch Rewind" \ - --text="Rewind is currently enabled. Do you want to disable it?." - - if [ $? == 0 ] - then - set_setting_value "$raconf" "rewind_enable" "false" retroarch - configurator_process_complete_dialog "disabling Rewind" - else - configurator_retroarch_presets_and_settings_dialog - fi - else - zenity --question \ - --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ - --title "RetroDECK Configurator - RetroArch Rewind" \ - --text="Rewind is currently disabled, do you want to enable it?\n\nNOTE:\nThis may impact performance on some more demanding systems." - - if [ $? == 0 ] - then - set_setting_value "$raconf" "rewind_enable" "true" retroarch - configurator_process_complete_dialog "enabling Rewind" - else - configurator_retroarch_presets_and_settings_dialog - fi - fi -} - configurator_wii_and_gamecube_presets_and_settings_dialog() { choice=$(zenity --list --title="RetroDECK Configurator Utility - Wii & GameCube: Presets & Settings" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ @@ -506,7 +481,7 @@ configurator_open_emulator_dialog() { "MAME" ) log i "Configurator: \"$emulator\"" - mame + mame-rdwrapper.sh ;; "MelonDS" ) @@ -536,7 +511,7 @@ configurator_open_emulator_dialog() { "Ryujinx" ) log i "Configurator: \"$emulator\"" - ryujinx-wrapper + Ryujinx.sh ;; "Vita3K" ) @@ -572,6 +547,7 @@ configurator_retrodeck_tools_dialog() { "Tool: Compress Games" "Compress games for systems that support it" \ "Install: RetroDECK SD Controller Profile" "Install the custom RetroDECK controller layout for the Steam Deck" \ "Install: PS3 Firmware" "Download and install PS3 firmware for use with the RPCS3 emulator" \ + "Install: PS Vita Firmware" "Download and install PS Vita firmware for use with the Vita3K emulator" \ "RetroDECK: Change Update Setting" "Enable or disable online checks for new versions of RetroDECK" ) case $choice in @@ -616,6 +592,24 @@ configurator_retrodeck_tools_dialog() { fi ;; + "Install: PS Vita Firmware" ) + if [[ $(check_network_connectivity) == "true" ]]; then + configurator_generic_dialog "RetroDECK Configurator - Install: PS Vita firmware" "This tool will download firmware required by Vita3K to emulate PS Vita games.\n\nThe process will take several minutes, and the emulator will launch to finish the installation.\nPlease close Vita3K manually once the installation is complete." + ( + update_vita3k_firmware + ) | + zenity --progress --pulsate \ + --icon-name=net.retrodeck.retrodeck \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title="Downloading PS Vita Firmware" \ + --no-cancel \ + --auto-close + else + configurator_generic_dialog "RetroDECK Configurator - Install: PS Vita Firmware" "You do not appear to currently have Internet access, which is required by this tool. Please try again when network access has been restored." + configurator_retrodeck_tools_dialog + fi + ;; + "RetroDECK: Change Update Setting" ) log i "Configurator: opening \"$choice\" menu" configurator_online_update_setting_dialog @@ -755,33 +749,24 @@ configurator_compression_tool_dialog() { configurator_compress_single_game_dialog() { local file=$(file_browse "Game to compress") if [[ ! -z "$file" ]]; then + local system=$(echo "$file" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") local compatible_compression_format=$(find_compatible_compression_format "$file") if [[ ! $compatible_compression_format == "none" ]]; then local post_compression_cleanup=$(configurator_compression_cleanup_dialog) ( - if [[ $compatible_compression_format == "chd" ]]; then - if [[ $(validate_for_chd "$file") == "true" ]]; then - echo "# Compressing $(basename "$file") to $compatible_compression_format format" - compress_game "chd" "$file" - if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested - if [[ "$file" == *".cue" ]]; then - local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") - local file_path=$(dirname "$(realpath "$file")") - while IFS= read -r line - do - rm -f "$file_path/$line" - done < <(printf '%s\n' "$cue_bin_files") - rm -f "$file" - else - rm -f "$file" - fi - fi - fi - else - echo "# Compressing $(basename "$file") to $compatible_compression_format format" - compress_game "$compatible_compression_format" "$file" - if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested - rm -f "$file" + echo "# Compressing $(basename "$file") to $compatible_compression_format format" + compress_game "$compatible_compression_format" "$file" "$system" + if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested + if [[ "$file" == *".cue" ]]; then + local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") + local file_path=$(dirname "$(realpath "$file")") + while IFS= read -r line + do + rm -f "$file_path/$line" + done < <(printf '%s\n' "$cue_bin_files") + rm -f $(realpath "$file") + else + rm -f "$(realpath "$file")" fi fi ) | @@ -881,12 +866,13 @@ configurator_compress_multiple_games_dialog() { local post_compression_cleanup=$(configurator_compression_cleanup_dialog) ( for file in "${games_to_compress[@]}"; do + local system=$(echo "$file" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") local compression_format=$(find_compatible_compression_format "$file") echo "# Compressing $(basename "$file") into $compression_format format" # Update Zenity dialog text progress=$(( 100 - (( 100 / "$total_games_to_compress" ) * "$games_left_to_compress" ))) echo $progress games_left_to_compress=$((games_left_to_compress-1)) - compress_game "$compression_format" "$file" + compress_game "$compression_format" "$file" "$system" if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested if [[ "$file" == *".cue" ]]; then local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") @@ -959,6 +945,7 @@ configurator_retrodeck_troubleshooting_dialog() { --column="Choice" --column="Action" \ "Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \ "Check & Verify: BIOS Files" "Show information about common BIOS files" \ + "Check & Verify: BIOS Files - Expert Mode" "Show information about common BIOS files, with additional information useful for troubleshooting" \ "Check & Verify: Multi-file structure" "Verify the proper structure of multi-file or multi-disc games" \ "RetroDECK: Reset" "Reset specific parts or all of RetroDECK" ) @@ -987,6 +974,10 @@ configurator_retrodeck_troubleshooting_dialog() { configurator_check_bios_files ;; + "Check & Verify: BIOS Files - Expert Mode" ) + configurator_check_bios_files_expert_mode + ;; + "Check & Verify: Multi-file structure" ) log i "Configurator: opening \"$choice\" menu" configurator_check_multifile_game_structure @@ -1009,20 +1000,7 @@ configurator_check_bios_files() { configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." bios_checked_list=() - while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc - do - bios_file_found="No" - bios_hash_matched="No" - if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then - bios_file_found="Yes" - if [[ $bios_hash == "Unknown" ]]; then - bios_hash_matched="Unknown" - elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then - bios_hash_matched="Yes" - fi - fi - bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc") - done < $bios_checklist + check_bios_files "basic" zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ @@ -1036,6 +1014,26 @@ configurator_check_bios_files() { configurator_retrodeck_troubleshooting_dialog } +configurator_check_bios_files_expert_mode() { + configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files - Expert Mode" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nThere may be additional BIOS files that will function with the emulators that are not checked.\n\nSome more advanced emulators such as Yuzu will have additional methods for verifiying the BIOS files are in working order." + bios_checked_list=() + + check_bios_files "expert" + + zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ + --column "BIOS File Name" \ + --column "System" \ + --column "BIOS File Found" \ + --column "BIOS Hash Match" \ + --column "BIOS File Description" \ + --column "BIOS File Subdirectory" \ + --column "BIOS File Hash" \ + "${bios_checked_list[@]}" + + configurator_retrodeck_troubleshooting_dialog +} + configurator_check_multifile_game_structure() { local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")) if [[ ${#folder_games[@]} -gt 1 ]]; then @@ -1080,6 +1078,7 @@ 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" ) @@ -1126,7 +1125,7 @@ configurator_reset_dialog() { --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" \ + "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" @@ -1226,8 +1225,46 @@ configurator_about_retrodeck_dialog() { } configurator_add_steam() { - python3 /app/libexec/steam-sync/steam-sync.py - configurator_welcome_dialog + if [[ $(get_setting_value $rd_conf "steam_sync" retrodeck "options") == "true" ]]; then + zenity --question \ + --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization is current enabled. Do you want to disable it?\n\nThe already added shortcut will not be removed.\n" + + if [ $? == 0 ] # User clicked "Yes" + then + disable_steam_sync + else # User clicked "Cancel" + configurator_welcome_dialog + fi + else + zenity --question \ + --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization is current disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam thanks to BoilR.\nRemember to restart Steam each time to see the changes.\n" + + if [ $? == 0 ] + then + enable_steam_sync + else + configurator_welcome_dialog + fi + fi +} + +enable_steam_sync() { + set_setting_value $rd_conf "steam_sync" "true" retrodeck "options" + zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ + --title "RetroDECK Configurator - RetroDECK Steam Syncronization" \ + --text="Steam syncronization enabled, restart RetroDECK to get effect." + configurator_welcome_dialog +} + +disable_steam_sync() { + set_setting_value $rd_conf "steam_sync" "false" retrodeck "options" + touch /tmp/retrodeck_steam_sync_exit + configurator_welcome_dialog } configurator_version_history_dialog() { @@ -1394,8 +1431,8 @@ configurator_usb_import_dialog() { "${external_devices[@]}") if [[ ! -z "$choice" ]]; then - emulationstation --home "$choice" --create-system-dirs - rm -rf "$choice/.emulationstation" # Cleanup unnecessary folder + es-de --home "$choice" --create-system-dirs + rm -rf "$choice/ES-DE" # Cleanup unnecessary folder fi else configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found."