Merge branch 'cooker-0.8.0b' into feat/logging

This commit is contained in:
XargonWan 2024-02-28 15:24:39 +01:00
commit 7d2e476b4d
62 changed files with 4051 additions and 776 deletions

View file

@ -46,6 +46,33 @@ jobs:
- name: Generate cooker build ID - name: Generate cooker build ID
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh" 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 # backing up manifest in case download fails and hashes must be recalculated
- name: Manifest backup - name: Manifest backup
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
@ -106,23 +133,10 @@ jobs:
id: commits id: commits
continue-on-error: true 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 - name: Publish the flatpak in a new cooker release
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
tag: "${{env.BRANCH_NAME}}-${{ env.buildid }}" tag: "${{env.TAG}}"
body: | body: |
# Release Notes (Cooker) # Release Notes (Cooker)
This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}. This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# This scritp is installing the required dependencies to correctly run the pipeline and buold the flatpak # 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 https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo

View file

@ -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_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 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 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

View file

@ -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_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 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 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

View file

@ -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_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 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 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

View file

@ -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_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^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^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

View file

@ -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_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_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^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

View file

@ -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_token^$cheevos_token^^$raconf^$emuconfigs/retroarch/retroarch.cfg
change^cheevos^cheevos_username^$cheevos_username^^$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^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^quick_resume^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_save^true^^$raconf^$emuconfigs/retroarch/retroarch.cfg

View file

@ -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^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 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 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

View file

@ -6,13 +6,14 @@ megacd
neogeocd neogeocd
pcenginecd pcenginecd
pcfx pcfx
psp
psx psx
ps2 ps2
saturn saturn
saturnjp saturnjp
segacd segacd
tg-cd tg-cd
[cso]
psp
[rvz] [rvz]
gc gc
wii wii
@ -40,3 +41,4 @@ sega32xjp
sega32xna sega32xna
snes snes
snesna snesna
tg16

View file

@ -2,3 +2,4 @@
0209^0212^0000^2359^rd-lunar-dragon-splash.svg 0209^0212^0000^2359^rd-lunar-dragon-splash.svg
0214^0214^0001^2359^rd-valentines-splash.svg 0214^0214^0001^2359^rd-valentines-splash.svg
0317^0317^0000^2359^rd-stpatricks-splash.svg 0317^0317^0000^2359^rd-stpatricks-splash.svg
0429^0505^0000^2359^rd-kodomo-golden.svg

View file

@ -1,2 +1,3 @@
false^RPCS3 Firmware Install^Install firmware needed for PS3 emulation^rpcs3_firmware 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

View file

@ -40,7 +40,9 @@
.msa .msa
.nds .nds
.nes .nes
.ngc
.o .o
.pce
.prg .prg
.rom .rom
.sfc .sfc
@ -58,3 +60,4 @@
.unif .unif
.xex .xex
.xfd .xfd
.z64

View file

@ -21,6 +21,7 @@ desktop_mode_warning=true
low_space_warning=true low_space_warning=true
update_check=false update_check=false
update_repo=RetroDECK update_repo=RetroDECK
branch=
update_ignore= update_ignore=
cloud_saves=false cloud_saves=false
multi_user_mode=false multi_user_mode=false
@ -38,6 +39,14 @@ duckstation=false
pcsx2=false pcsx2=false
retroarch=false retroarch=false
[rewind]
gb=false
gba=false
gbc=false
genesis=false
gg=false
snes=false
[borders] [borders]
gb=false gb=false
gba=false gba=false
@ -63,13 +72,7 @@ n64=false
snes=false snes=false
yuzu=false yuzu=false
[savestate_auto_load] [quick_resume]
ppsspp=true
retroarch=true
[savestate_auto_save]
duckstation=true
pcsx2=true
retroarch=true retroarch=true
[ask_to_exit] [ask_to_exit]

Binary file not shown.

View file

@ -1,53 +0,0 @@
<?xml version="1.0"?>
<!-- This file is autogenerated; comments and unknown tags will be stripped -->
<mameconfig version="10">
<system name="default">
<input>
<port type="P1_JOYSTICK_UP">
<newseq type="standard">
JOYCODE_1_HAT1UP
</newseq>
</port>
<port type="P1_SELECT">
<newseq type="standard">
JOYCODE_1_SELECT
</newseq>
</port>
<port type="UI_MENU">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_M
</newseq>
</port>
<port type="UI_PAUSE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_P
</newseq>
</port>
<port type="UI_REWIND_SINGLE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_MINUSPAD
</newseq>
</port>
<port type="UI_SAVE_STATE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_S
</newseq>
</port>
<port type="UI_LOAD_STATE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_A
</newseq>
</port>
<port type="UI_FAST_FORWARD">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_PLUSPAD
</newseq>
</port>
<port type="UI_SNAPSHOT">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_X
</newseq>
</port>
</input>
</system>
</mameconfig>

View file

@ -0,0 +1,278 @@
<?xml version="1.0"?>
<!-- This file is autogenerated; comments and unknown tags will be stripped -->
<mameconfig version="10">
<system name="default">
<input>
<port type="P1_JOYSTICK_UP">
<newseq type="standard">
JOYCODE_1_HAT1UP
</newseq>
</port>
<port type="P1_START">
<newseq type="standard">
JOYCODE_1_BUTTON8
</newseq>
</port>
<port type="P1_SELECT">
<newseq type="standard">
KEYCODE_5 OR JOYCODE_1_BUTTON7
</newseq>
</port>
<port type="MEMORY_RESET">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="VOLUME_DOWN">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="VOLUME_UP">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_MENU">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_M
</newseq>
</port>
<port type="UI_CANCEL">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_Q
</newseq>
</port>
<port type="UI_CLEAR">
<newseq type="standard">
KEYCODE_DEL
</newseq>
</port>
<port type="UI_PAGE_UP">
<newseq type="standard">
KEYCODE_PGUP OR JOYCODE_1_ZAXIS_POS_SWITCH
</newseq>
</port>
<port type="UI_PAGE_DOWN">
<newseq type="standard">
KEYCODE_PGDN OR JOYCODE_1_RZAXIS_POS_SWITCH
</newseq>
</port>
<port type="UI_PREV_GROUP">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_NEXT_GROUP">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_ON_SCREEN_DISPLAY">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_TOGGLE_UI">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_DEBUG_BREAK">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_PAUSE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_P
</newseq>
</port>
<port type="UI_PAUSE_SINGLE">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_REWIND_SINGLE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_MINUS
</newseq>
</port>
<port type="UI_SAVE_STATE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_S
</newseq>
</port>
<port type="UI_LOAD_STATE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_A
</newseq>
</port>
<port type="UI_RESET_MACHINE">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_SOFT_RESET">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_R
</newseq>
</port>
<port type="UI_SHOW_GFX">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_FRAMESKIP_DEC">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_FRAMESKIP_INC">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_THROTTLE">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_FAST_FORWARD">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_PLUS
</newseq>
</port>
<port type="UI_SHOW_FPS">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_SNAPSHOT">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_X
</newseq>
</port>
<port type="UI_RECORD_MNG">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_RECORD_AVI">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_TOGGLE_CHEAT">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_C
</newseq>
</port>
<port type="UI_DISPLAY_COMMENT">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_ZOOM_IN">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_ZOOM_OUT">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_ZOOM_DEFAULT">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_ROTATE">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_SHOW_PROFILER">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_RELEASE_POINTER">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_PASTE">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_TAPE_START">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_TAPE_STOP">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_FOCUS_NEXT">
<newseq type="standard">
KEYCODE_TAB OR JOYCODE_1_RZAXIS_POS_SWITCH
</newseq>
</port>
<port type="UI_FOCUS_PREV">
<newseq type="standard">
KEYCODE_LSHIFT KEYCODE_TAB OR JOYCODE_1_ZAXIS_POS_SWITCH
</newseq>
</port>
<port type="UI_DATS">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_FAVORITES">
<newseq type="standard">
JOYCODE_1_BUTTON4
</newseq>
</port>
<port type="UI_EXPORT">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="UI_AUDIT">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="TOGGLE_FULLSCREEN">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_ENTER
</newseq>
</port>
<port type="TOGGLE_FILTER">
<newseq type="standard">
NONE
</newseq>
</port>
<port type="DECREASE_PRESCALE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_Y
</newseq>
</port>
<port type="INCREASE_PRESCALE">
<newseq type="standard">
KEYCODE_LCONTROL KEYCODE_U
</newseq>
</port>
<port type="RENDER_AVI">
<newseq type="standard">
NONE
</newseq>
</port>
</input>
</system>
</mameconfig>

View file

@ -0,0 +1,3 @@
#!/bin/bash
mame -inipath /var/config/mame

View file

@ -7,31 +7,31 @@ writeconfig 0
# #
# CORE SEARCH PATH OPTIONS # CORE SEARCH PATH OPTIONS
# #
homepath /var/config/mame homepath /var/data/mame/plugin-data
rompath RETRODECKROMSDIR 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 /app/share/mame/hash hashpath /var/data/mame/hash
samplepath /app/share/mame/samples samplepath /var/data/mame/assets/samples
artpath RETRODECKHOMEDIR/downloaded_media/arcade/screenshots/ artpath /var/data/mame/assets/artwork
ctrlrpath /app/share/mame/ctrlr ctrlrpath /var/config/ctrlr
inipath /var/config/mame inipath /var/config/mame/ini
fontpath /app/bin/ fontpath /var/data/mame/assets/fonts
cheatpath /app/share/mame/cheat cheatpath /var/data/mame/cheat
crosshairpath /app/share/mame/crosshair crosshairpath /var/data/mame/assets/crosshair
pluginspath /app/share/mame/plugins pluginspath /var/data/mame/plugins
languagepath /app/share/mame/language languagepath /var/data/mame/assets/language
swpath /app/share/mame/software swpath /var/data/mame/assets/software
# #
# CORE OUTPUT DIRECTORY OPTIONS # CORE OUTPUT DIRECTORY OPTIONS
# #
cfg_directory /var/config/mame/cfg cfg_directory /var/config/mame/cfg
nvram_directory /var/config/mame/nvram nvram_directory RETRODECKSAVESDIR/mame-sa/nvram
input_directory /var/config/mame/inp input_directory /var/config/mame/inp
state_directory RETRODECKSAVESDIR/mame-sa/states state_directory RETRODECKSTATESDIR/mame-sa
snapshot_directory RETRODECKHOMEDIR/screenshots snapshot_directory RETRODECKHOMEDIR/screenshots/mame-sa
diff_directory /var/config/mame/diff diff_directory RETRODECKSAVESDIR/mame-sa/diff
comment_directory /var/config/mame/comments comment_directory /var/data/mame/assets/comments
share_directory /var/config/mame/share share_directory /var/data/mame/assets/share
# #
# CORE STATE/PLAYBACK OPTIONS # CORE STATE/PLAYBACK OPTIONS
@ -234,7 +234,7 @@ output auto
keyboardprovider auto keyboardprovider auto
mouseprovider auto mouseprovider auto
lightgunprovider auto lightgunprovider auto
joystickprovider auto joystickprovider sdljoy
# #
# OSD DEBUGGING OPTIONS # OSD DEBUGGING OPTIONS
@ -353,7 +353,7 @@ networkprovider auto
# #
# BGFX POST-PROCESSING OPTIONS # BGFX POST-PROCESSING OPTIONS
# #
bgfx_path bgfx bgfx_path /app/share/mame/bgfx
bgfx_backend auto bgfx_backend auto
bgfx_debug 0 bgfx_debug 0
bgfx_screen_chains bgfx_screen_chains

View file

@ -1,26 +1,26 @@
# #
# UI SEARCH PATH OPTIONS # UI SEARCH PATH OPTIONS
# #
historypath history;dats;. historypath /var/data/mame/dats
categorypath folders categorypath /var/data/mame/folders
cabinets_directory cabinets;cabdevs cabinets_directory /var/data/mame/assets/cabinets
cpanels_directory cpanel cpanels_directory /var/data/mame/assets/cpanel
pcbs_directory pcb pcbs_directory /var/data/mame/assets/pcb
flyers_directory flyers flyers_directory /var/data/mame/assets/flyers
titles_directory titles titles_directory /var/data/mame/assets/titles
ends_directory ends ends_directory /var/data/mame/assets/ends
marquees_directory marquees;RETRODECKHOMEDIR/downloaded_media/arcade/marquees marquees_directory /var/data/mame/assets/marquees
artwork_preview_directory "artwork preview;artpreview" artwork_preview_directory /var/data/mame/assets/artwork-preview
bosses_directory bosses bosses_directory /var/data/mame/assets/bosses
logos_directory logo logos_directory /var/data/mame/assets/logo
scores_directory scores scores_directory /var/data/mame/assets/scores
versus_directory versus versus_directory /var/data/mame/assets/versus
gameover_directory gameover gameover_directory /var/data/mame/assets/gameover
howto_directory howto howto_directory /var/data/mame/assets/howto
select_directory select select_directory /var/data/mame/assets/select
icons_directory icons icons_directory /var/data/mame/assets/icons
covers_directory covers;RETRODECKHOMEDIR/downloaded_media/arcade/covers covers_directory /var/data/mame/assets/covers
ui_path ui ui_path /var/data/mame/assets/ui
# #
# UI MISC OPTIONS # UI MISC OPTIONS
@ -62,7 +62,7 @@ remember_last 0
last_used_filter Available last_used_filter Available
system_right_panel image system_right_panel image
software_right_panel image software_right_panel image
system_right_image cover system_right_image snap
software_right_image snap software_right_image snap
enlarge_snaps 1 enlarge_snaps 1
forced4x3 1 forced4x3 1

View file

@ -1,5 +1,5 @@
{ {
"version": 48, "version": 49,
"enable_file_log": true, "enable_file_log": true,
"backend_threading": "Auto", "backend_threading": "Auto",
"res_scale": 1, "res_scale": 1,
@ -12,7 +12,7 @@
"graphics_shaders_dump_path": "", "graphics_shaders_dump_path": "",
"logging_enable_debug": false, "logging_enable_debug": false,
"logging_enable_stub": false, "logging_enable_stub": false,
"logging_enable_info": true, "logging_enable_info": false,
"logging_enable_warn": true, "logging_enable_warn": true,
"logging_enable_error": true, "logging_enable_error": true,
"logging_enable_trace": false, "logging_enable_trace": false,
@ -91,13 +91,13 @@
"enable_keyboard": false, "enable_keyboard": false,
"enable_mouse": false, "enable_mouse": false,
"hotkeys": { "hotkeys": {
"toggle_vsync": "F1", "toggle_vsync": "Unknown",
"screenshot": "F8", "screenshot": "Unknown",
"show_ui": "F4", "show_ui": "F1",
"pause": "F5", "pause": "F4",
"toggle_mute": "F2", "toggle_mute": "Unknown",
"res_scale_up": "Unbound", "res_scale_up": "F7",
"res_scale_down": "Unbound", "res_scale_down": "F8",
"volume_up": "Unbound", "volume_up": "Unbound",
"volume_down": "Unbound" "volume_down": "Unbound"
}, },
@ -121,22 +121,27 @@
}, },
"deadzone_left": 0, "deadzone_left": 0,
"deadzone_right": 0, "deadzone_right": 0,
"range_left": 1, "range_left": 1.2,
"range_right": 1, "range_right": 1,
"trigger_threshold": 0.5, "trigger_threshold": 0,
"motion": { "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, "sensitivity": 100,
"gyro_deadzone": 1, "gyro_deadzone": 1,
"enable_motion": true "enable_motion": true
}, },
"rumble": { "rumble": {
"strong_rumble": 1, "strong_rumble": 2.1,
"weak_rumble": 1, "weak_rumble": 1,
"enable_rumble": true "enable_rumble": true
}, },
"left_joycon": { "left_joycon": {
"button_minus": "Minus", "button_minus": "Back",
"button_l": "LeftShoulder", "button_l": "LeftShoulder",
"button_zl": "LeftTrigger", "button_zl": "LeftTrigger",
"button_sl": "Unbound", "button_sl": "Unbound",
@ -147,7 +152,7 @@
"dpad_right": "DpadRight" "dpad_right": "DpadRight"
}, },
"right_joycon": { "right_joycon": {
"button_plus": "Plus", "button_plus": "Start",
"button_r": "RightShoulder", "button_r": "RightShoulder",
"button_zr": "RightTrigger", "button_zr": "RightTrigger",
"button_sl": "Unbound", "button_sl": "Unbound",
@ -160,12 +165,190 @@
"version": 1, "version": 1,
"backend": "GamepadSDL2", "backend": "GamepadSDL2",
"id": "0-f6790003-28de-0000-ff11-000001000000", "id": "0-f6790003-28de-0000-ff11-000001000000",
"controller_type": "Handheld", "controller_type": "ProController",
"player_index": "Handheld" "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", "graphics_backend": "Vulkan",
"preferred_gpu": "0x1002_0x163F", "preferred_gpu": "0x1002_0x163F",
"multiplayer_mode": 0,
"multiplayer_lan_interface_id": "0", "multiplayer_lan_interface_id": "0",
"use_hypervisor": true "use_hypervisor": true
} }

View file

@ -815,9 +815,9 @@ gamecard_path=
gamecard_path\default=true gamecard_path\default=true
load_directory=/var/data/yuzu/load load_directory=/var/data/yuzu/load
load_directory\default=true load_directory\default=true
nand_directory=RETRODECKHOMEDIR/saves/switch/yuzu/nand nand_directory=RETRODECKHOMEDIR/saves/switch/nand
nand_directory\default=true nand_directory\default=true
sdmc_directory=RETRODECKHOMEDIR/saves/switch/yuzu/sdmc sdmc_directory=RETRODECKHOMEDIR/saves/switch/sdmc
sdmc_directory\default=true sdmc_directory\default=true
tas_directory=/var/data/yuzu/tas tas_directory=/var/data/yuzu/tas
tas_directory\default=true tas_directory\default=true

View file

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- This is the ES-DE find rules configuration file for Unix --> <!-- This is the ES-DE find rules configuration file for Linux -->
<ruleList> <ruleList>
<emulator name="OS-SHELL"> <emulator name="OS-SHELL">
<!-- Operating system shell --> <!-- Operating system shell -->
@ -42,10 +42,6 @@
<entry>/usr/lib64/libretro</entry> <entry>/usr/lib64/libretro</entry>
<!-- Manjaro repository --> <!-- Manjaro repository -->
<entry>/usr/lib/libretro</entry> <entry>/usr/lib/libretro</entry>
<!-- FreeBSD and OpenBSD repository -->
<entry>/usr/local/lib/libretro</entry>
<!-- NetBSD repository -->
<entry>/usr/pkg/lib/libretro</entry>
</rule> </rule>
</core> </core>
<emulator name="3DSEN-WINDOWS"> <emulator name="3DSEN-WINDOWS">
@ -69,6 +65,18 @@
<entry>~/bin/advancemame/advmame</entry> <entry>~/bin/advancemame/advmame</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="AMIBERRY">
<!-- Commodore Amiga emulator Amiberry -->
<rule type="systempath">
<entry>amiberry</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/amiberry/amiberry</entry>
<entry>~/.local/share/applications/amiberry/amiberry</entry>
<entry>~/.local/bin/amiberry/amiberry</entry>
<entry>~/bin/amiberry/amiberry</entry>
</rule>
</emulator>
<emulator name="ARES"> <emulator name="ARES">
<!-- Multi-system emulator ares --> <!-- Multi-system emulator ares -->
<rule type="systempath"> <rule type="systempath">
@ -318,24 +326,35 @@
<entry>org.flycast.Flycast</entry> <entry>org.flycast.Flycast</entry>
</rule> </rule>
<rule type="staticpath"> <rule type="staticpath">
<entry>~/Applications/flycast*.AppImage</entry> <entry>~/Applications/flycast-x86*.AppImage</entry>
<entry>~/.local/share/applications/flycast*.AppImage</entry> <entry>~/.local/share/applications/flycast-x86*.AppImage</entry>
<entry>~/.local/bin/flycast*.AppImage</entry> <entry>~/.local/bin/flycast-x86*.AppImage</entry>
<entry>~/bin/flycast*.AppImage</entry> <entry>~/bin/flycast-x86*.AppImage</entry>
<entry>/var/lib/flatpak/exports/bin/org.flycast.Flycast</entry> <entry>/var/lib/flatpak/exports/bin/org.flycast.Flycast</entry>
<entry>~/.local/share/flatpak/exports/bin/org.flycast.Flycast</entry> <entry>~/.local/share/flatpak/exports/bin/org.flycast.Flycast</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="FLYCAST-DOJO">
<!-- Sega Dreamcast emulator Flycast Dojo -->
<rule type="systempath">
<entry>flycast-dojo</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/flycast-dojo*.AppImage</entry>
<entry>~/.local/share/applications/flycast-dojo*.AppImage</entry>
<entry>~/.local/bin/flycast-dojo*.AppImage</entry>
<entry>~/bin/flycast-dojo*.AppImage</entry>
</rule>
</emulator>
<emulator name="FS-UAE"> <emulator name="FS-UAE">
<!-- Commodore Amiga emulator FS-UAE --> <!-- Commodore Amiga emulator FS-UAE -->
<rule type="systempath"> <rule type="systempath">
<entry>fs-uae</entry> <entry>fs-uae-launcher</entry>
<entry>fsuae.fs-uae</entry> <entry>fsuae.launcher</entry>
<entry>net.fsuae.FS-UAE</entry>
</rule> </rule>
<rule type="staticpath"> <rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/net.fsuae.FS-UAE</entry> <entry>/var/lib/flatpak/exports/bin/net.fsuae.FS-UAE|flatpak run --command=fs-uae-launcher net.fsuae.FS-UAE</entry>
<entry>~/.local/share/flatpak/exports/bin/net.fsuae.FS-UAE</entry> <entry>~/.local/share/flatpak/exports/bin/net.fsuae.FS-UAE|flatpak run --command=fs-uae-launcher net.fsuae.FS-UAE</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="FUSE"> <emulator name="FUSE">
@ -444,7 +463,7 @@
<emulator name="MAME"> <emulator name="MAME">
<!-- Arcade emulator MAME --> <!-- Arcade emulator MAME -->
<rule type="systempath"> <rule type="systempath">
<entry>mame</entry> <entry>mame-rdwrapper.sh</entry>
<entry>org.mamedev.MAME</entry> <entry>org.mamedev.MAME</entry>
</rule> </rule>
<rule type="staticpath"> <rule type="staticpath">
@ -649,6 +668,8 @@
<entry>~/.local/share/applications/punes/punes</entry> <entry>~/.local/share/applications/punes/punes</entry>
<entry>~/.local/bin/punes/punes</entry> <entry>~/.local/bin/punes/punes</entry>
<entry>~/bin/punes/punes</entry> <entry>~/bin/punes/punes</entry>
<entry>/var/lib/flatpak/exports/bin/io.github.punesemu.puNES</entry>
<entry>~/.local/share/flatpak/exports/bin/io.github.punesemu.puNES</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="QUASI88"> <emulator name="QUASI88">
@ -721,16 +742,22 @@
<emulator name="RYUJINX"> <emulator name="RYUJINX">
<!-- Nintendo Switch emulator Ryujinx --> <!-- Nintendo Switch emulator Ryujinx -->
<rule type="systempath"> <rule type="systempath">
<entry>Ryujinx.sh</entry> <entry>Ryujinx.sh</entry> <!-- RetroDECK -->
<entry>Ryujinx</entry>
<entry>Ryujinx.Ava</entry>
<entry>org.ryujinx.Ryujinx</entry> <entry>org.ryujinx.Ryujinx</entry>
</rule> </rule>
<rule type="staticpath"> <rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.ryujinx.Ryujinx</entry> <entry>/var/lib/flatpak/exports/bin/org.ryujinx.Ryujinx</entry>
<entry>~/.local/share/flatpak/exports/bin/org.ryujinx.Ryujinx</entry> <entry>~/.local/share/flatpak/exports/bin/org.ryujinx.Ryujinx</entry>
<entry>~/Applications/publish/Ryujinx.sh</entry> <entry>~/Applications/publish/Ryujinx</entry>
<entry>~/.local/share/applications/publish/Ryujinx.sh</entry> <entry>~/.local/share/applications/publish/Ryujinx</entry>
<entry>~/.local/bin/publish/Ryujinx.sh</entry> <entry>~/.local/bin/publish/Ryujinx</entry>
<entry>~/bin/publish/Ryujinx.sh</entry> <entry>~/bin/publish/Ryujinx</entry>
<entry>~/Applications/publish/Ryujinx.Ava</entry>
<entry>~/.local/share/applications/publish/Ryujinx.Ava</entry>
<entry>~/.local/bin/publish/Ryujinx.Ava</entry>
<entry>~/bin/publish/Ryujinx.Ava</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="SAMEBOY"> <emulator name="SAMEBOY">
@ -868,6 +895,19 @@
<entry>~/.local/share/applications/Supermodel/supermodel</entry> <entry>~/.local/share/applications/Supermodel/supermodel</entry>
<entry>~/.local/bin/Supermodel/supermodel</entry> <entry>~/.local/bin/Supermodel/supermodel</entry>
<entry>~/bin/Supermodel/supermodel</entry> <entry>~/bin/Supermodel/supermodel</entry>
<entry>/var/lib/flatpak/exports/bin/com.supermodel3.Supermodel</entry>
<entry>~/.local/share/flatpak/exports/bin/com.supermodel3.Supermodel</entry>
</rule>
</emulator>
<emulator name="TIC-80">
<!-- TIC-80 Fantasy Computer (game engine) -->
<rule type="systempath">
<entry>tic80</entry>
<entry>com.tic80.TIC_80</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/com.tic80.TIC_80</entry>
<entry>~/.local/share/flatpak/exports/bin/com.tic80.TIC_80</entry>
</rule> </rule>
</emulator> </emulator>
<emulator name="TRIFORCE"> <emulator name="TRIFORCE">
@ -950,6 +990,10 @@
<entry>Vita3K</entry> <entry>Vita3K</entry>
</rule> </rule>
<rule type="staticpath"> <rule type="staticpath">
<entry>~/Applications/Vita3K*.AppImage</entry>
<entry>~/.local/share/applications/Vita3K*.AppImage</entry>
<entry>~/.local/bin/Vita3K*.AppImage</entry>
<entry>~/bin/Vita3K*.AppImage</entry>
<entry>~/Applications/Vita3K/Vita3K</entry> <entry>~/Applications/Vita3K/Vita3K</entry>
<entry>~/.local/share/applications/Vita3K/Vita3K</entry> <entry>~/.local/share/applications/Vita3K/Vita3K</entry>
<entry>~/.local/bin/Vita3K/Vita3K</entry> <entry>~/.local/bin/Vita3K/Vita3K</entry>

View file

@ -2,6 +2,7 @@
<bool name="AlternativeEmulatorPerGame" value="true" /> <bool name="AlternativeEmulatorPerGame" value="true" />
<bool name="ApplicationUpdaterPrereleases" value="false" /> <bool name="ApplicationUpdaterPrereleases" value="false" />
<bool name="CollectionShowSystemInfo" value="true" /> <bool name="CollectionShowSystemInfo" value="true" />
<bool name="CreatePlaceholderSystemDirectories" value="false" />
<bool name="CustomEventScripts" value="false" /> <bool name="CustomEventScripts" value="false" />
<bool name="DebugMode" value="false" /> <bool name="DebugMode" value="false" />
<bool name="DebugSkipInputLogging" value="false" /> <bool name="DebugSkipInputLogging" value="false" />
@ -21,6 +22,7 @@
<bool name="GamelistVideoScanlines" value="false" /> <bool name="GamelistVideoScanlines" value="false" />
<bool name="InputIgnoreKeyboard" value="false" /> <bool name="InputIgnoreKeyboard" value="false" />
<bool name="InputOnlyFirstController" value="false" /> <bool name="InputOnlyFirstController" value="false" />
<bool name="InputSwapButtons" value="false" />
<bool name="LegacyGamelistFileLocation" value="false" /> <bool name="LegacyGamelistFileLocation" value="false" />
<bool name="ListScrollOverlay" value="false" /> <bool name="ListScrollOverlay" value="false" />
<bool name="MAMENameStripExtraInfo" value="true" /> <bool name="MAMENameStripExtraInfo" value="true" />
@ -65,6 +67,7 @@
<bool name="ScraperConvertUnderscores" value="true" /> <bool name="ScraperConvertUnderscores" value="true" />
<bool name="ScraperExcludeRecursively" value="true" /> <bool name="ScraperExcludeRecursively" value="true" />
<bool name="ScraperHaltOnInvalidMedia" value="false" /> <bool name="ScraperHaltOnInvalidMedia" value="false" />
<bool name="ScraperIgnoreHTTP404Errors" value="true" />
<bool name="ScraperIncludeFolders" value="true" /> <bool name="ScraperIncludeFolders" value="true" />
<bool name="ScraperInteractive" value="false" /> <bool name="ScraperInteractive" value="false" />
<bool name="ScraperOverwriteData" value="false" /> <bool name="ScraperOverwriteData" value="false" />
@ -145,13 +148,15 @@
<string name="ScraperPasswordScreenScraper" value="" /> <string name="ScraperPasswordScreenScraper" value="" />
<string name="ScraperRegion" value="eu" /> <string name="ScraperRegion" value="eu" />
<string name="ScraperUsernameScreenScraper" value="" /> <string name="ScraperUsernameScreenScraper" value="" />
<string name="ScreensaverSlideshowImageDir" value="~/.emulationstation/slideshow/custom_images" /> <string name="ScreensaverSlideshowCustomDir" value="" />
<string name="ScreensaverSlideshowImageDir" value="/var/config/ES-DE/slideshow/custom_images" />
<string name="ScreensaverType" value="video" /> <string name="ScreensaverType" value="video" />
<string name="StartupSystem" value="" /> <string name="StartupSystem" value="" />
<string name="SystemsSorting" value="default" /> <string name="SystemsSorting" value="default" />
<string name="Theme" value="art-book-next-es-de" /> <string name="Theme" value="art-book-next-es-de" />
<string name="ThemeAspectRatio" value="automatic" /> <string name="ThemeAspectRatio" value="automatic" />
<string name="ThemeColorScheme" value="art-book-next" /> <string name="ThemeColorScheme" value="art-book-next" />
<string name="ThemeFontSize" value="" />
<string name="ThemeSet" value="art-book-next-es-de" /> <string name="ThemeSet" value="art-book-next-es-de" />
<string name="ThemeTransitions" value="automatic" /> <string name="ThemeTransitions" value="automatic" />
<string name="ThemeVariant" value="system-multi-gamelist-list-immersive" /> <string name="ThemeVariant" value="system-multi-gamelist-list-immersive" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- This is the ES-DE game systems configuration file for Unix --> <!-- This is the ES-DE game systems configuration file for Linux -->
<systemList> <systemList>
<system> <system>
<name>3do</name> <name>3do</name>
@ -30,8 +30,8 @@
<fullname>Adventure Game Studio Game Engine</fullname> <fullname>Adventure Game Studio Game Engine</fullname>
<path>%ROMPATH%/ags</path> <path>%ROMPATH%/ags</path>
<extension>.desktop .sh</extension> <extension>.desktop .sh</extension>
<command label="Native binary">%STARTDIR%=%GAMEDIR% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command> <command label="Shortcut or script">%STARTDIR%=%GAMEDIR% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>ags</platform> <platform>pcwindows</platform>
<theme>ags</theme> <theme>ags</theme>
</system> </system>
--> -->
@ -39,9 +39,11 @@
<name>amiga</name> <name>amiga</name>
<fullname>Commodore Amiga</fullname> <fullname>Commodore Amiga</fullname>
<path>%ROMPATH%/amiga</path> <path>%ROMPATH%/amiga</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command> <command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command>
<command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command> <command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command>
<command label="FS-UAE (Standalone)">%EMULATOR_FS-UAE% %ROM%</command>
<command label="Amiberry (Standalone)">%STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM%</command>
<platform>amiga</platform> <platform>amiga</platform>
<theme>amiga</theme> <theme>amiga</theme>
</system> </system>
@ -49,9 +51,11 @@
<name>amiga1200</name> <name>amiga1200</name>
<fullname>Commodore Amiga 1200</fullname> <fullname>Commodore Amiga 1200</fullname>
<path>%ROMPATH%/amiga1200</path> <path>%ROMPATH%/amiga1200</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command> <command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command>
<command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command> <command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command>
<command label="FS-UAE (Standalone)">%EMULATOR_FS-UAE% %ROM%</command>
<command label="Amiberry (Standalone)">%STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM%</command>
<platform>amiga</platform> <platform>amiga</platform>
<theme>amiga1200</theme> <theme>amiga1200</theme>
</system> </system>
@ -59,9 +63,11 @@
<name>amiga600</name> <name>amiga600</name>
<fullname>Commodore Amiga 600</fullname> <fullname>Commodore Amiga 600</fullname>
<path>%ROMPATH%/amiga600</path> <path>%ROMPATH%/amiga600</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command> <command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command>
<command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command> <command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command>
<command label="FS-UAE (Standalone)">%EMULATOR_FS-UAE% %ROM%</command>
<command label="Amiberry (Standalone)">%STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --autoload %ROM%</command>
<platform>amiga</platform> <platform>amiga</platform>
<theme>amiga600</theme> <theme>amiga600</theme>
</system> </system>
@ -69,9 +75,11 @@
<name>amigacd32</name> <name>amigacd32</name>
<fullname>Commodore Amiga CD32</fullname> <fullname>Commodore Amiga CD32</fullname>
<path>%ROMPATH%/amigacd32</path> <path>%ROMPATH%/amigacd32</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command> <command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command>
<command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command> <command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command>
<command label="FS-UAE (Standalone)">%EMULATOR_FS-UAE% --config:amiga-model=CD32 %ROM%</command>
<command label="Amiberry (Standalone)">%STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% --model CD32 --autoload %ROM%</command>
<platform>amigacd32</platform> <platform>amigacd32</platform>
<theme>amigacd32</theme> <theme>amigacd32</theme>
</system> </system>
@ -104,6 +112,7 @@
<extension>.do .DO .dsk .DSK .nib .NIB .po .PO</extension> <extension>.do .DO .dsk .DSK .nib .NIB .po .PO</extension>
<!-- <command label="LinApple (Standalone)">%EMULATOR_LINAPPLE% -f -b &ndash;&ndash;d1 %ROM%</command> --> <!-- <command label="LinApple (Standalone)">%EMULATOR_LINAPPLE% -f -b &ndash;&ndash;d1 %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module apple2 %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module apple2 %ROM%</command> -->
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2e -rompath \"%GAMEDIRRAW%;%ROMPATH%/apple2\" -flop1 \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2 apple2e -flop1 %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2 apple2e -flop1 %ROM%</command>
<platform>apple2</platform> <platform>apple2</platform>
<theme>apple2</theme> <theme>apple2</theme>
@ -114,7 +123,7 @@
<fullname>Apple IIGS</fullname> <fullname>Apple IIGS</fullname>
<path>%ROMPATH%/apple2gs</path> <path>%ROMPATH%/apple2gs</path>
<extension>.2mg .2MG .7z .7z .zip .ZIP</extension> <extension>.2mg .2MG .7z .7z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2gs -rompath %GAMEDIR%\;%ROMPATH%/apple2gs -flop3 \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2gs -rompath \"%GAMEDIRRAW%;%ROMPATH%/apple2gs\" -flop3 \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2gs apple2gs -flop3 %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2gs apple2gs -flop3 %ROM%</command>
<platform>apple2gs</platform> <platform>apple2gs</platform>
<theme>apple2gs</theme> <theme>apple2gs</theme>
@ -135,9 +144,9 @@
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command> <command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>
<!--<command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command>-->
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command> <command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command> <!--<command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log %INJECT%=%BASENAME%.commands %ROM%</command>-->
<command label="Supermodel [Fullscreen] (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -fullscreen -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command> <command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>arcade</platform> <platform>arcade</platform>
<theme>arcade</theme> <theme>arcade</theme>
@ -148,7 +157,7 @@
<fullname>Emerson Arcadia 2001</fullname> <fullname>Emerson Arcadia 2001</fullname>
<path>%ROMPATH%/arcadia</path> <path>%ROMPATH%/arcadia</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "arcadia -rompath %GAMEDIR%\;%ROMPATH%/arcadia -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "arcadia -rompath \"%GAMEDIRRAW%;%ROMPATH%/arcadia\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/arcadia arcadia -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/arcadia arcadia -cart %ROM%</command>
<platform>arcadia</platform> <platform>arcadia</platform>
<theme>arcadia</theme> <theme>arcadia</theme>
@ -181,7 +190,7 @@
<fullname>Bally Astrocade</fullname> <fullname>Bally Astrocade</fullname>
<path>%ROMPATH%/astrocde</path> <path>%ROMPATH%/astrocde</path>
<extension>.7z .7Z .zip .ZIP</extension> <extension>.7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "astrocde -rompath \"%GAMEDIRRAW%;%ROMPATH%/astrocde\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/astrocde astrocde -cart %BASENAME%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/astrocde astrocde -cart %BASENAME%</command>
<platform>astrocde</platform> <platform>astrocde</platform>
<theme>astrocade</theme> <theme>astrocade</theme>
@ -216,6 +225,7 @@
<path>%ROMPATH%/atari7800</path> <path>%ROMPATH%/atari7800</path>
<extension>.a78 .A78 .bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.a78 .A78 .bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="ProSystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prosystem_libretro.so %ROM%</command> <command label="ProSystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prosystem_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "a7800 -rompath \"%GAMEDIRRAW%;%ROMPATH%/atari7800\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atari7800 a7800 -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atari7800 a7800 -cart %ROM%</command>
<platform>atari7800</platform> <platform>atari7800</platform>
<theme>atari7800</theme> <theme>atari7800</theme>
@ -289,9 +299,10 @@
<name>atomiswave</name> <name>atomiswave</name>
<fullname>Sammy Corporation Atomiswave</fullname> <fullname>Sammy Corporation Atomiswave</fullname>
<path>%ROMPATH%/atomiswave</path> <path>%ROMPATH%/atomiswave</path>
<extension>.bin .BIN .cdi .CDI .cue .CUE .dat .DAT .elf .ELF .gdi .GDI .iso .ISO .lst .LST .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> --> <!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<!-- <command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command> -->
<platform>arcade</platform> <platform>arcade</platform>
<theme>atomiswave</theme> <theme>atomiswave</theme>
</system> </system>
@ -320,15 +331,6 @@
<platform>c64</platform> <platform>c64</platform>
<theme>c64</theme> <theme>c64</theme>
</system> </system>
<system>
<name>cavestory</name>
<fullname>Cave Story (NXEngine)</fullname>
<path>%ROMPATH%/cavestory</path>
<extension>.exe .EXE .7z .7Z .zip .ZIP</extension>
<command label="NXEngine">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nxengine_libretro.so %ROM%</command>
<platform>cavestory</platform>
<theme>cavestory</theme>
</system>
<system> <system>
<name>cdimono1</name> <name>cdimono1</name>
<fullname>Philips CD-i</fullname> <fullname>Philips CD-i</fullname>
@ -347,6 +349,8 @@
<extension>.ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .7z .7Z .zip .ZIP</extension> <extension>.ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .nrg .NRG .rp9 .RP9 .7z .7Z .zip .ZIP</extension>
<command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command> <command label="PUAE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae_libretro.so %ROM%</command>
<command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command> <command label="PUAE 2021">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/puae2021_libretro.so %ROM%</command>
<!-- <command label="FS-UAE (Standalone)">%EMULATOR_FS-UAE% &ndash;&ndashconfig:amiga-model=CDTV %ROM%</command> -->
<!-- <command label="Amiberry (Standalone)">%STARTDIR%=%EMUDIR% %EMULATOR_AMIBERRY% &ndash;&ndashmodel CDTV &ndash;&ndash;autoload %ROM%</command> -->
<platform>cdtv</platform> <platform>cdtv</platform>
<theme>cdtv</theme> <theme>cdtv</theme>
</system> </system>
@ -365,6 +369,8 @@
<path>%ROMPATH%/channelf</path> <path>%ROMPATH%/channelf</path>
<extension>.bin .BIN .chf .CHF .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .chf .CHF .7z .7Z .zip .ZIP</extension>
<command label="FreeChaF">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freechaf_libretro.so %ROM%</command> <command label="FreeChaF">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freechaf_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "channelf -rompath \"%GAMEDIRRAW%;%ROMPATH%/channelf\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/channelf channelf -cart %ROM%</command>
<platform>channelf</platform> <platform>channelf</platform>
<theme>channelf</theme> <theme>channelf</theme>
</system> </system>
@ -401,6 +407,7 @@
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/consolearcade %BASENAME%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/consolearcade %BASENAME%</command>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>--> <!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>-->
<!--<command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command>-->
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command> <command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<!--<command label="Mednafen [Sega Saturn] (Standalone)">%EMULATOR_MEDNAFEN% -force_module ss %ROM%</command>--> <!--<command label="Mednafen [Sega Saturn] (Standalone)">%EMULATOR_MEDNAFEN% -force_module ss %ROM%</command>-->
<!--<command label="Play! (Standalone)">%EMULATOR_PLAY!% &ndash;&ndash;disc %ROM%</command>--> <!--<command label="Play! (Standalone)">%EMULATOR_PLAY!% &ndash;&ndash;disc %ROM%</command>-->
@ -498,11 +505,12 @@
<name>daphne</name> <name>daphne</name>
<fullname>Daphne Arcade LaserDisc Emulator</fullname> <fullname>Daphne Arcade LaserDisc Emulator</fullname>
<path>%ROMPATH%/daphne</path> <path>%ROMPATH%/daphne</path>
<extension>.daphne .singe .7z .7Z .zip .ZIP</extension> <extension>.daphne .dirksimple .ogv .OGV .singe .7z .7Z .zip .ZIP</extension>
<!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>--> <!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>-->
<!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>--> <!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>-->
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/daphne %BASENAME%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/daphne %BASENAME%</command>
<command label="DirkSimple">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dirksimple_libretro.so %ROM%</command>
<platform>daphne, arcade</platform> <platform>daphne, arcade</platform>
<theme>daphne</theme> <theme>daphne</theme>
</system> </system>
@ -511,7 +519,7 @@
<name>doom</name> <name>doom</name>
<fullname>Doom</fullname> <fullname>Doom</fullname>
<path>%ROMPATH%/doom</path> <path>%ROMPATH%/doom</path>
<extension>.doom .DOOM .desktop .iwad .IWAD .pk4 .PK4 .pk3 .PK3 .pwad .PWAD .sh .wad .WAD .ipk3 .IPK3</extension> <extension>.doom .DOOM .desktop .ipk3 .IPK3 .iwad .IWAD .pk3 .PK3 .pk4 .PK4 .pwad .PWAD .sh .wad .WAD</extension>
<command label="GZDoom (Standalone)">gzdoom.sh %ROM%</command> <command label="GZDoom (Standalone)">gzdoom.sh %ROM%</command>
<command label="PrBoom">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prboom_libretro.so %ROM%</command> <command label="PrBoom">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prboom_libretro.so %ROM%</command>
<!-- <command label="PrBoom+ (Standalone)">%EMULATOR_PRBOOM-PLUS% -iwad %ROM%</command> --> <!-- <command label="PrBoom+ (Standalone)">%EMULATOR_PRBOOM-PLUS% -iwad %ROM%</command> -->
@ -550,9 +558,10 @@
<name>dreamcast</name> <name>dreamcast</name>
<fullname>Sega Dreamcast</fullname> <fullname>Sega Dreamcast</fullname>
<path>%ROMPATH%/dreamcast</path> <path>%ROMPATH%/dreamcast</path>
<extension>.chd .CHD .cdi .CDI .iso .ISO .elf .ELF .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.cdi .CDI .chd .CHD .cue .CUE .dat .DAT .elf .ELF .gdi .GDI .iso .ISO .lst .LST .m3u .M3U .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> --> <!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<!-- <command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command> -->
<!-- <command label="Redream (Standalone)">%EMULATOR_REDREAM% %ROM%</command> --> <!-- <command label="Redream (Standalone)">%EMULATOR_REDREAM% %ROM%</command> -->
<platform>dreamcast</platform> <platform>dreamcast</platform>
<theme>dreamcast</theme> <theme>dreamcast</theme>
@ -609,6 +618,8 @@
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module nes %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module nes %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Famicom" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Famicom" %ROM%</command> -->
<!-- <command label="ares FDS (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Famicom Disk System" %ROM%</command> --> <!-- <command label="ares FDS (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Famicom Disk System" %ROM%</command> -->
<!-- <command label="3dSen (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_3DSEN-WINDOWS% -id=%INJECT%=%BASENAME%.3dsen</command> -->
<!-- <command label="3dSen (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_3DSEN-WINDOWS% -id=%INJECT%=%BASENAME%.3dsen</command> -->
<platform>famicom</platform> <platform>famicom</platform>
<theme>famicom</theme> <theme>famicom</theme>
</system> </system>
@ -683,9 +694,10 @@
<name>fmtowns</name> <name>fmtowns</name>
<fullname>Fujitsu FM Towns</fullname> <fullname>Fujitsu FM Towns</fullname>
<path>%ROMPATH%/fmtowns</path> <path>%ROMPATH%/fmtowns</path>
<extension>.cue .CUE .iso .ISO .7z .7Z .zip .ZIP</extension> <extension>.cdr .CDR .chd .CHD .cue .CUE .gdi .GDI .iso .ISO</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "fmtownshr -rompath \"%GAMEDIRRAW%;%ROMPATH%/fmtowns\" -cdrom \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fmtowns fmtowns %BASENAME%</command>
<!--<command label="Tsugaru (Standalone)">%EMULATOR_TSUGARU% %EMUDIR%/roms -HOSTSHORTCUT ESC 0 0 FORCEQUIT -FULLSCREEN -CD %ROM% %INJECT%=%BASENAME%.cfg</command>--> <!--<command label="Tsugaru (Standalone)">%EMULATOR_TSUGARU% %EMUDIR%/roms -HOSTSHORTCUT ESC 0 0 FORCEQUIT -FULLSCREEN -CD %ROM% %INJECT%=%BASENAME%.cfg</command>-->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fmtowns fmtowns %BASENAME%</command>
<platform>fmtowns</platform> <platform>fmtowns</platform>
<theme>fmtowns</theme> <theme>fmtowns</theme>
</system> </system>
@ -707,7 +719,7 @@
<fullname>Bit Corporation Gamate</fullname> <fullname>Bit Corporation Gamate</fullname>
<path>%ROMPATH%/gamate</path> <path>%ROMPATH%/gamate</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamate -rompath %GAMEDIR%\;%ROMPATH%/gamate -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamate -rompath \"%GAMEDIRRAW%;%ROMPATH%/gamate\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamate gamate -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamate gamate -cart %ROM%</command>
<platform>gamate</platform> <platform>gamate</platform>
<theme>gamate</theme> <theme>gamate</theme>
@ -718,6 +730,7 @@
<fullname>Nintendo Game and Watch</fullname> <fullname>Nintendo Game and Watch</fullname>
<path>%ROMPATH%/gameandwatch</path> <path>%ROMPATH%/gameandwatch</path>
<extension>.mgw .MGW .7z .7Z .zip .ZIP</extension> <extension>.mgw .MGW .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<!-- <command label="MAME Local Artwork (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -artpath %ROMPATH%/gameandwatch/artwork -rompath %GAMEDIR%\;%ROMPATH%/gameandwatch %BASENAME%</command> --> <!-- <command label="MAME Local Artwork (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -artpath %ROMPATH%/gameandwatch/artwork -rompath %GAMEDIR%\;%ROMPATH%/gameandwatch %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gameandwatch %BASENAME%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gameandwatch %BASENAME%</command>
<command label="Handheld Electronic (GW)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM%</command> <command label="Handheld Electronic (GW)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM%</command>
@ -730,7 +743,7 @@
<fullname>Tiger Electronics Game.com</fullname> <fullname>Tiger Electronics Game.com</fullname>
<path>%ROMPATH%/gamecom</path> <path>%ROMPATH%/gamecom</path>
<extension>.tgc .TGC .7z .7Z .zip .ZIP</extension> <extension>.tgc .TGC .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamecom -rompath %GAMEDIR%\;%ROMPATH%/gamecom -cartridge1 \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamecom -rompath \"%GAMEDIRRAW%;%ROMPATH%/gamecom\" -cartridge1 \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamecom gamecom -cartridge1 %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamecom gamecom -cartridge1 %ROM%</command>
<platform>gamecom</platform> <platform>gamecom</platform>
<theme>gamecom</theme> <theme>gamecom</theme>
@ -747,6 +760,7 @@
<command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.so %ROM%</command> <command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.so %ROM%</command>
<!--<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> --> <!--<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> -->
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gg %ROM%</command> --> <!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gg %ROM%</command> -->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Gear" %ROM%</command>--> <!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Gear" %ROM%</command>-->
<platform>gamegear</platform> <platform>gamegear</platform>
<theme>gamegear</theme> <theme>gamegear</theme>
@ -762,6 +776,7 @@
<command label="Gearboy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM%</command> <command label="Gearboy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM%</command>
<!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> --> <!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> -->
<command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command> <command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command>
<command label="DoubleCherryGB">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/DoubleCherryGB_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>--> <!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command> <command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
@ -769,6 +784,9 @@
<!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> --> <!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> -->
<command label="VBA-M">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM%</command> <command label="VBA-M">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM%</command>
<!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> --> <!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gb %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Boy" %ROM%</command> -->
<!-- <command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command> -->
<platform>gb</platform> <platform>gb</platform>
<theme>gb</theme> <theme>gb</theme>
</system> </system>
@ -783,6 +801,7 @@
<!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> --> <!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> -->
<command label="VBA Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vba_next_libretro.so %ROM%</command> <command label="VBA Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vba_next_libretro.so %ROM%</command>
<command label="gpSP">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gpsp_libretro.so %ROM%</command> <command label="gpSP">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gpsp_libretro.so %ROM%</command>
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gba %ROM%</command> -->
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Boy Advance" %ROM%</command>--> <!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Boy Advance" %ROM%</command>-->
<!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>--> <!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>-->
<platform>gba</platform> <platform>gba</platform>
@ -799,6 +818,7 @@
<command label="Gearboy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM%</command> <command label="Gearboy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearboy_libretro.so %ROM%</command>
<!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> --> <!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> -->
<command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command> <command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command>
<command label="DoubleCherryGB">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/DoubleCherryGB_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>--> <!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command> <command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
@ -806,6 +826,9 @@
<!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> --> <!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> -->
<command label="VBA-M">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM%</command> <command label="VBA-M">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vbam_libretro.so %ROM%</command>
<!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> --> <!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gb %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Boy Color" %ROM%</command>-->
<!-- <command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>-->
<platform>gbc</platform> <platform>gbc</platform>
<theme>gbc</theme> <theme>gbc</theme>
</system> </system>
@ -842,7 +865,7 @@
<fullname>Hartung Game Master</fullname> <fullname>Hartung Game Master</fullname>
<path>%ROMPATH%/gmaster</path> <path>%ROMPATH%/gmaster</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gmaster -rompath %GAMEDIR%\;%ROMPATH%/gmaster -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gmaster -rompath \"%GAMEDIRRAW%;%ROMPATH%/gmaster\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gmaster gmaster -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gmaster gmaster -cart %ROM%</command>
<platform>gmaster</platform> <platform>gmaster</platform>
<theme>gmaster</theme> <theme>gmaster</theme>
@ -863,8 +886,10 @@
<name>intellivision</name> <name>intellivision</name>
<fullname>Mattel Electronics Intellivision</fullname> <fullname>Mattel Electronics Intellivision</fullname>
<path>%ROMPATH%/intellivision</path> <path>%ROMPATH%/intellivision</path>
<extension>.int .INT .bin .BIN .rom .ROM .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .int .INT .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="FreeIntv">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freeintv_libretro.so %ROM%</command> <command label="FreeIntv">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/freeintv_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "intv -rompath \"%GAMEDIRRAW%;%ROMPATH%/intellivision\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/intellivision intv -cart %ROM%</command>
<platform>intellivision</platform> <platform>intellivision</platform>
<theme>intellivision</theme> <theme>intellivision</theme>
</system> </system>
@ -877,22 +902,11 @@
<platform>android</platform> <platform>android</platform>
<theme>j2me</theme> <theme>j2me</theme>
</system> </system>
<!--
<system>
<name>kodi</name>
<fullname>Kodi Home Theatre Software</fullname>
<path>%ROMPATH%/kodi</path>
<extension>.desktop .sh</extension>
<command label="Kodi (Standalone)">%RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>pc</platform>
<theme>kodi</theme>
</system>
-->
<system> <system>
<name>laserdisc</name> <name>laserdisc</name>
<fullname>LaserDisc Games</fullname> <fullname>LaserDisc Games</fullname>
<path>%ROMPATH%/laserdisc</path> <path>%ROMPATH%/laserdisc</path>
<extension>.daphne .singe .7z .7Z .zip .ZIP</extension> <extension>.daphne .dirksimple .ogv .OGV .singe .7z .7Z .zip .ZIP</extension>
<!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>--> <!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>-->
<!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>--> <!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>-->
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
@ -905,6 +919,7 @@
<fullname>LCD Handheld Games</fullname> <fullname>LCD Handheld Games</fullname>
<path>%ROMPATH%/lcdgames</path> <path>%ROMPATH%/lcdgames</path>
<extension>.mgw .MGW .7z .7Z .zip .ZIP</extension> <extension>.mgw .MGW .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<!-- <command label="MAME Local Artwork (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -artpath %ROMPATH%/lcdgames/artwork -rompath %GAMEDIR%\;%ROMPATH%/lcdgames %BASENAME%</command> --> <!-- <command label="MAME Local Artwork (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -artpath %ROMPATH%/lcdgames/artwork -rompath %GAMEDIR%\;%ROMPATH%/lcdgames %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/lcdgames %BASENAME%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/lcdgames %BASENAME%</command>
<command label="Handheld Electronic (GW)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM%</command> <command label="Handheld Electronic (GW)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gw_libretro.so %ROM%</command>
@ -946,9 +961,9 @@
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command> <command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> --> <!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<!-- <command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command> -->
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command> <command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<!-- <command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command> --> <!-- <command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command> -->
<!-- <command label="Supermodel [Fullscreen] (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -fullscreen -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command> -->
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command> <command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>arcade</platform> <platform>arcade</platform>
<theme>mame</theme> <theme>mame</theme>
@ -975,6 +990,7 @@
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command> <command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command>
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> <command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module sms %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module sms %ROM%</command> -->
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Master System" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Master System" %ROM%</command> -->
<platform>mastersystem</platform> <platform>mastersystem</platform>
<theme>mastersystem</theme> <theme>mastersystem</theme>
@ -1024,6 +1040,8 @@
<path>%ROMPATH%/megaduck</path> <path>%ROMPATH%/megaduck</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="SameDuck">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameduck_libretro.so %ROM%</command> <command label="SameDuck">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameduck_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "megaduck -rompath \"%GAMEDIRRAW%;%ROMPATH%/megaduck\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/megaduck megaduck -cart %ROM%</command>
<platform>megaduck</platform> <platform>megaduck</platform>
<theme>megaduck</theme> <theme>megaduck</theme>
</system> </system>
@ -1056,7 +1074,6 @@
<path>%ROMPATH%/model3</path> <path>%ROMPATH%/model3</path>
<extension>.7z .7Z .zip .ZIP</extension> <extension>.7z .7Z .zip .ZIP</extension>
<command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command> <command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command>
<command label="Supermodel [Fullscreen] (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -fullscreen -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command>
<platform>arcade</platform> <platform>arcade</platform>
<theme>model3</theme> <theme>model3</theme>
</system> </system>
@ -1074,7 +1091,7 @@
<name>moto</name> <name>moto</name>
<fullname>Thomson MO/TO Series</fullname> <fullname>Thomson MO/TO Series</fullname>
<path>%ROMPATH%/moto</path> <path>%ROMPATH%/moto</path>
<extension>.fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP</extension> <extension>.fd .FD .k7 .K7 .m5 .M5 .m7 .M7 .rom .ROM .sap .SAP .7z .7Z .zip .ZIP</extension>
<command label="Theodore">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM%</command> <command label="Theodore">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM%</command>
<platform>moto</platform> <platform>moto</platform>
<theme>moto</theme> <theme>moto</theme>
@ -1146,6 +1163,7 @@
<path>%ROMPATH%/multivision</path> <path>%ROMPATH%/multivision</path>
<extension>.bin .BIN .gg .GG .rom .ROM .sg .SG .sms .SMS .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .gg .GG .rom .ROM .sg .SG .sms .SMS .7z .7Z .zip .ZIP</extension>
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command> <command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<platform>sg-1000</platform> <platform>sg-1000</platform>
<theme>multivision</theme> <theme>multivision</theme>
</system> </system>
@ -1182,6 +1200,7 @@
<command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/parallel_n64_libretro.so %ROM%</command> <command label="ParaLLEl N64">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/parallel_n64_libretro.so %ROM%</command>
<command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%</command> <command label="Mupen64Plus-Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mupen64plus_next_libretro.so %ROM%</command>
<!-- <command label="Rosalie's Mupen GUI (Standalone)">%EMULATOR_ROSALIES-MUPEN-GUI% &ndash;&ndash;nogui -q %ROM%</command> --> <!-- <command label="Rosalie's Mupen GUI (Standalone)">%EMULATOR_ROSALIES-MUPEN-GUI% &ndash;&ndash;nogui -q %ROM%</command> -->
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Nintendo 64DD" %ROM%</command>-->
<platform>n64</platform> <platform>n64</platform>
<theme>n64dd</theme> <theme>n64dd</theme>
</system> </system>
@ -1189,9 +1208,10 @@
<name>naomi</name> <name>naomi</name>
<fullname>Sega NAOMI</fullname> <fullname>Sega NAOMI</fullname>
<path>%ROMPATH%/naomi</path> <path>%ROMPATH%/naomi</path>
<extension>.cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> --> <!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<!--<command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command>-->
<platform>arcade</platform> <platform>arcade</platform>
<theme>naomi</theme> <theme>naomi</theme>
</system> </system>
@ -1202,6 +1222,7 @@
<extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>--> <!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>-->
<!--<command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command>-->
<platform>arcade</platform> <platform>arcade</platform>
<theme>naomi2</theme> <theme>naomi2</theme>
</system> </system>
@ -1212,6 +1233,7 @@
<extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command> <command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> --> <!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<!--<command label="Flycast Dojo (Standalone)">%EMULATOR_FLYCAST-DOJO% %ROM%</command>-->
<platform>arcade</platform> <platform>arcade</platform>
<theme>naomigd</theme> <theme>naomigd</theme>
</system> </system>
@ -1224,6 +1246,7 @@
<command label="DeSmuME 2015">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/desmume2015_libretro.so %ROM%</command> <command label="DeSmuME 2015">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/desmume2015_libretro.so %ROM%</command>
<!-- <command label="DeSmuME (Standalone)">%EMULATOR_DESMUME% %ROM%</command> --> <!-- <command label="DeSmuME (Standalone)">%EMULATOR_DESMUME% %ROM%</command> -->
<command label="melonDS">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melonds_libretro.so %ROM%</command> <command label="melonDS">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melonds_libretro.so %ROM%</command>
<command label="melonDS DS">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melondsds_libretro.so %ROM%</command>
<command label="melonDS (Standalone)">%EMULATOR_MELONDS% %ROM%</command> <command label="melonDS (Standalone)">%EMULATOR_MELONDS% %ROM%</command>
<!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>--> <!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>-->
<platform>nds</platform> <platform>nds</platform>
@ -1268,7 +1291,7 @@
<name>nes</name> <name>nes</name>
<fullname>Nintendo Entertainment System</fullname> <fullname>Nintendo Entertainment System</fullname>
<path>%ROMPATH%/nes</path> <path>%ROMPATH%/nes</path>
<extension>.fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP</extension> <extension>.3dsen .3DSEN .fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP</extension>
<command label="Mesen">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM%</command> <command label="Mesen">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>--> <!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="Nestopia UE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM%</command> <command label="Nestopia UE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM%</command>
@ -1300,7 +1323,7 @@
<name>ngp</name> <name>ngp</name>
<fullname>SNK Neo Geo Pocket</fullname> <fullname>SNK Neo Geo Pocket</fullname>
<path>%ROMPATH%/ngp</path> <path>%ROMPATH%/ngp</path>
<extension>.ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP</extension> <extension>.ngc .NGC .ngp .NGP .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP</extension>
<command label="Beetle NeoPop">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM%</command> <command label="Beetle NeoPop">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM%</command>
<command label="RACE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM%</command> <command label="RACE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module ngp %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module ngp %ROM%</command> -->
@ -1312,7 +1335,7 @@
<name>ngpc</name> <name>ngpc</name>
<fullname>SNK Neo Geo Pocket Color</fullname> <fullname>SNK Neo Geo Pocket Color</fullname>
<path>%ROMPATH%/ngpc</path> <path>%ROMPATH%/ngpc</path>
<extension>.ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP</extension> <extension>.ngc .NGC .ngp .NGP .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP</extension>
<command label="Beetle NeoPop">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM%</command> <command label="Beetle NeoPop">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_ngp_libretro.so %ROM%</command>
<command label="RACE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM%</command> <command label="RACE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/race_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module ngp %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module ngp %ROM%</command> -->
@ -1322,10 +1345,12 @@
</system> </system>
<system> <system>
<name>odyssey2</name> <name>odyssey2</name>
<fullname>Magnavox Odyssey2</fullname> <fullname>Magnavox Odyssey 2</fullname>
<path>%ROMPATH%/odyssey2</path> <path>%ROMPATH%/odyssey2</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="O2EM">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM%</command> <command label="O2EM">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "odyssey2 -rompath \"%GAMEDIRRAW%;%ROMPATH%/odyssey2\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/odyssey2 odyssey2 -cart %ROM%</command>
<platform>odyssey2</platform> <platform>odyssey2</platform>
<theme>odyssey2</theme> <theme>odyssey2</theme>
</system> </system>
@ -1355,7 +1380,7 @@
<name>palm</name> <name>palm</name>
<fullname>Palm OS</fullname> <fullname>Palm OS</fullname>
<path>%ROMPATH%/palm</path> <path>%ROMPATH%/palm</path>
<extension>.prc .PRC .pqa .PQA .img .IMG .7z .7Z .zip .ZIP</extension> <extension>.img .IMG .pqa .PQA .prc .PRC .7z .7Z .zip .ZIP</extension>
<command label="Mu">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mu_libretro.so %ROM%</command> <command label="Mu">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mu_libretro.so %ROM%</command>
<platform>palm</platform> <platform>palm</platform>
<theme>palm</theme> <theme>palm</theme>
@ -1374,7 +1399,7 @@
<name>pc98</name> <name>pc98</name>
<fullname>NEC PC-9800 Series</fullname> <fullname>NEC PC-9800 Series</fullname>
<path>%ROMPATH%/pc98</path> <path>%ROMPATH%/pc98</path>
<extension>.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</extension> <extension>.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</extension>
<command label="Neko Project II Kai">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/np2kai_libretro.so %ROM%</command> <command label="Neko Project II Kai">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/np2kai_libretro.so %ROM%</command>
<command label="Neko Project II">%STARTDIR%=%GAMEDIR% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nekop2_libretro.so %ROM%</command> <command label="Neko Project II">%STARTDIR%=%GAMEDIR% %EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nekop2_libretro.so %ROM%</command>
<platform>pc98</platform> <platform>pc98</platform>
@ -1388,6 +1413,7 @@
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command> <command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command> <command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> -->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine" %ROM%</command> -->
<platform>pcengine</platform> <platform>pcengine</platform>
<theme>pcengine</theme> <theme>pcengine</theme>
@ -1400,6 +1426,7 @@
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command> <command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command> <command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> -->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine CD" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine CD" %ROM%</command> -->
<platform>pcenginecd</platform> <platform>pcenginecd</platform>
<theme>pcenginecd</theme> <theme>pcenginecd</theme>
@ -1421,6 +1448,7 @@
<extension>.p8 .P8 .png .PNG</extension> <extension>.p8 .P8 .png .PNG</extension>
<command label="PICO-8 (Standalone)">%EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -run %ROM%</command> <command label="PICO-8 (Standalone)">%EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -run %ROM%</command>
<command label="PICO-8 Splore (Standalone)">%EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -splore</command> <command label="PICO-8 Splore (Standalone)">%EMULATOR_PICO-8% -desktop_path ~/retrodeck/screenshots -root_path %GAMEDIR% -splore</command>
<command label="Retro8">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/retro8_libretro.so %ROM%</command>
<platform>pico8</platform> <platform>pico8</platform>
<theme>pico8</theme> <theme>pico8</theme>
</system> </system>
@ -1447,9 +1475,13 @@
<name>ports</name> <name>ports</name>
<fullname>Ports</fullname> <fullname>Ports</fullname>
<path>%ROMPATH%/ports</path> <path>%ROMPATH%/ports</path>
<extension>.AppImage .desktop .sh</extension> <extension>.AppImage .desktop .exe .EXE .game .GAME .phd .PHD .psx .PSX .sh</extension>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command> <command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="AppImage">%EMULATOR_OS-SHELL% -c "%ROM%"</command> <command label="AppImage">%EMULATOR_OS-SHELL% -c "%ROM%"</command>
<!--<command label="ECWolf (Wolfenstein 3D)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/ecwolf_libretro.so %ROM%</command>-->
<!--<command label="NXEngine (Cave Story)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nxengine_libretro.so %ROM%</command>-->
<!--<command label="OpenLara (Tomb Raider)">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/openlara_libretro.so %ROM%</command>-->
<!--<command label="Super Bros War">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/superbroswar_libretro.so %ROM%</command>-->
<platform>pc, pcwindows</platform> <platform>pc, pcwindows</platform>
<theme>ports</theme> <theme>ports</theme>
</system> </system>
@ -1457,7 +1489,7 @@
<name>ps2</name> <name>ps2</name>
<fullname>Sony PlayStation 2</fullname> <fullname>Sony PlayStation 2</fullname>
<path>%ROMPATH%/ps2</path> <path>%ROMPATH%/ps2</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command> <command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
<command label="LRPS2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command> <command label="LRPS2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
<command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command> <command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
@ -1491,7 +1523,7 @@
<name>psp</name> <name>psp</name>
<fullname>Sony PlayStation Portable</fullname> <fullname>Sony PlayStation Portable</fullname>
<path>%ROMPATH%/psp</path> <path>%ROMPATH%/psp</path>
<extension>.elf .ELF .iso .ISO .cso .CSO .prx .PRX .pbp .PBP .7z .7Z .zip .ZIP</extension> <extension>.chd .CHD .cso .CSO .elf .ELF .iso .ISO .pbp .PBP .prx .PRX .7z .7Z .zip .ZIP</extension>
<command label="PPSSPP (Standalone)">%EMULATOR_PPSSPP% %ROM%</command> <command label="PPSSPP (Standalone)">%EMULATOR_PPSSPP% %ROM%</command>
<command label="PPSSPP">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/ppsspp_libretro.so %ROM%</command> <command label="PPSSPP">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/ppsspp_libretro.so %ROM%</command>
<platform>psp</platform> <platform>psp</platform>
@ -1519,6 +1551,7 @@
<command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.so %ROM%</command> <command label="PCSX ReARMed">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx_rearmed_libretro.so %ROM%</command>
<command label="DuckStation (Standalone)">%EMULATOR_DUCKSTATION% -batch %ROM%</command> <command label="DuckStation (Standalone)">%EMULATOR_DUCKSTATION% -batch %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module psx %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module psx %ROM%</command> -->
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module psx %ROM%</command>-->
<platform>psx</platform> <platform>psx</platform>
<theme>psx</theme> <theme>psx</theme>
</system> </system>
@ -1528,6 +1561,7 @@
<fullname>Casio PV-1000</fullname> <fullname>Casio PV-1000</fullname>
<path>%ROMPATH%/pv1000</path> <path>%ROMPATH%/pv1000</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "pv1000 -rompath \"%GAMEDIRRAW%;%ROMPATH%/pv1000\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/pv1000 pv1000 -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/pv1000 pv1000 -cart %ROM%</command>
<platform>pv1000</platform> <platform>pv1000</platform>
<theme>pv1000</theme> <theme>pv1000</theme>
@ -1553,7 +1587,7 @@
<name>samcoupe</name> <name>samcoupe</name>
<fullname>MGT SAM Coupé</fullname> <fullname>MGT SAM Coupé</fullname>
<path>%ROMPATH%/samcoupe</path> <path>%ROMPATH%/samcoupe</path>
<extension>.dsk .DSK .mgt .MGT .sbt .SBT .sad .SAD .7z .7Z .zip .ZIP</extension> <extension>.dsk .DSK .mgt .MGT .sad .SAD .sbt .SBT .7z .7Z .zip .ZIP</extension>
<command label="SimCoupé (Standalone)">%EMULATOR_SIMCOUPE% %ROM%</command> <command label="SimCoupé (Standalone)">%EMULATOR_SIMCOUPE% %ROM%</command>
<platform>samcoupe</platform> <platform>samcoupe</platform>
<theme>samcoupe</theme> <theme>samcoupe</theme>
@ -1581,7 +1615,7 @@
<name>saturn</name> <name>saturn</name>
<fullname>Sega Saturn</fullname> <fullname>Sega Saturn</fullname>
<path>%ROMPATH%/saturn</path> <path>%ROMPATH%/saturn</path>
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .mds .MDS .toc .TOC .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .toc .TOC .7z .7Z .zip .ZIP</extension>
<command label="Beetle Saturn">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM%</command> <command label="Beetle Saturn">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM%</command>
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command> <command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<command label="YabaSanshiro">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM%</command> <command label="YabaSanshiro">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM%</command>
@ -1594,7 +1628,7 @@
<name>saturnjp</name> <name>saturnjp</name>
<fullname>Sega Saturn</fullname> <fullname>Sega Saturn</fullname>
<path>%ROMPATH%/saturnjp</path> <path>%ROMPATH%/saturnjp</path>
<extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .mds .MDS .toc .TOC .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .m3u .M3U .mds .MDS .toc .TOC .7z .7Z .zip .ZIP</extension>
<command label="Beetle Saturn">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM%</command> <command label="Beetle Saturn">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_saturn_libretro.so %ROM%</command>
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command> <command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<command label="YabaSanshiro">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM%</command> <command label="YabaSanshiro">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/yabasanshiro_libretro.so %ROM%</command>
@ -1619,7 +1653,7 @@
<fullname>Epoch Super Cassette Vision</fullname> <fullname>Epoch Super Cassette Vision</fullname>
<path>%ROMPATH%/scv</path> <path>%ROMPATH%/scv</path>
<extension>.0 .bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.0 .bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "scv -rompath %GAMEDIR%\;%ROMPATH%/scv -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "scv -rompath \"%GAMEDIRRAW%;%ROMPATH%/scv\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/scv scv -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/scv scv -cart %ROM%</command>
<platform>scv</platform> <platform>scv</platform>
<theme>scv</theme> <theme>scv</theme>
@ -1629,7 +1663,7 @@
<name>sega32x</name> <name>sega32x</name>
<fullname>Sega Mega Drive 32X</fullname> <fullname>Sega Mega Drive 32X</fullname>
<path>%ROMPATH%/sega32x</path> <path>%ROMPATH%/sega32x</path>
<extension>.bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP</extension> <extension>.32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> <command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> -->
<platform>sega32x</platform> <platform>sega32x</platform>
@ -1639,7 +1673,7 @@
<name>sega32xjp</name> <name>sega32xjp</name>
<fullname>Sega Super 32X</fullname> <fullname>Sega Super 32X</fullname>
<path>%ROMPATH%/sega32xjp</path> <path>%ROMPATH%/sega32xjp</path>
<extension>.bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP</extension> <extension>.32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> <command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> -->
<platform>sega32x</platform> <platform>sega32x</platform>
@ -1649,7 +1683,7 @@
<name>sega32xna</name> <name>sega32xna</name>
<fullname>Sega Genesis 32X</fullname> <fullname>Sega Genesis 32X</fullname>
<path>%ROMPATH%/sega32xna</path> <path>%ROMPATH%/sega32xna</path>
<extension>.bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP</extension> <extension>.32x .32X .68k .68K .bin .BIN .cue .CUE .gen .GEN .iso .ISO .md .MD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP</extension>
<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> <command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command>
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Mega 32X" %ROM%</command> -->
<platform>sega32x</platform> <platform>sega32x</platform>
@ -1681,6 +1715,7 @@
<!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> --> <!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command> <command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> -->
<platform>snes</platform> <platform>snes</platform>
@ -1695,6 +1730,7 @@
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command> <command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command>
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command> <command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command>
<command label="blueMSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM%</command> <command label="blueMSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM%</command>
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "SG-1000" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "SG-1000" %ROM%</command> -->
<platform>sg-1000</platform> <platform>sg-1000</platform>
<theme>sg-1000</theme> <theme>sg-1000</theme>
@ -1705,9 +1741,11 @@
<path>%ROMPATH%/sgb</path> <path>%ROMPATH%/sgb</path>
<extension>.gb .GB .gbc .GBC .sgb .SGB .7z .7Z .zip .ZIP</extension> <extension>.gb .GB .gbc .GBC .sgb .SGB .7z .7Z .zip .ZIP</extension>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="SameBoy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/sameboy_libretro.so %ROM%</command>
<command label="mGBA">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM%</command> <command label="mGBA">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM%</command>
<!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> --> <!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> -->
<platform>gb</platform> <platform>sgb</platform>
<theme>sgb</theme> <theme>sgb</theme>
</system> </system>
<system> <system>
@ -1724,6 +1762,7 @@
<!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> --> <!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command> <command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> -->
<platform>snes</platform> <platform>snes</platform>
@ -1743,6 +1782,7 @@
<!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> --> <!-- <command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command> <command label="Beetle Supafaust">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supafaust_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command> <command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!-- <command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module snes %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command> -->
<platform>snes</platform> <platform>snes</platform>
@ -1763,20 +1803,11 @@
<name>spectravideo</name> <name>spectravideo</name>
<fullname>Spectravideo</fullname> <fullname>Spectravideo</fullname>
<path>%ROMPATH%/spectravideo</path> <path>%ROMPATH%/spectravideo</path>
<extension>.rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP</extension> <extension>.cas .CAS .col .COL .dsk .DSK .m3u .M3U .mx1 .MX1 .mx2 .MX2 .ri .RI .rom .ROM .sc .SC .sg .SG .7z .7Z .zip .ZIP</extension>
<command label="blueMSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM%</command> <command label="blueMSX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bluemsx_libretro.so %ROM%</command>
<platform>spectravideo</platform> <platform>spectravideo</platform>
<theme>spectravideo</theme> <theme>spectravideo</theme>
</system> </system>
<system>
<name>stratagus</name>
<fullname>Stratagus Game Engine</fullname>
<path>%ROMPATH%/stratagus</path>
<extension>.7z .7Z .zip .ZIP</extension>
<command>PLACEHOLDER %ROM%</command>
<platform>stratagus</platform>
<theme>stratagus</theme>
</system>
<system> <system>
<name>stv</name> <name>stv</name>
<fullname>Sega Titan Video Game System</fullname> <fullname>Sega Titan Video Game System</fullname>
@ -1809,9 +1840,11 @@
<name>supergrafx</name> <name>supergrafx</name>
<fullname>NEC SuperGrafx</fullname> <fullname>NEC SuperGrafx</fullname>
<path>%ROMPATH%/supergrafx</path> <path>%ROMPATH%/supergrafx</path>
<extension>.pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP</extension> <extension>.ccd .CCD .chd .CHD .cue .CUE .pce .PCE .sgx .SGX .7z .7Z .zip .ZIP</extension>
<command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.so %ROM%</command> <command label="Beetle SuperGrafx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_supergrafx_libretro.so %ROM%</command>
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command> <command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command>-->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "SuperGrafx" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "SuperGrafx" %ROM%</command> -->
<platform>supergrafx</platform> <platform>supergrafx</platform>
<theme>supergrafx</theme> <theme>supergrafx</theme>
@ -1822,6 +1855,8 @@
<path>%ROMPATH%/supervision</path> <path>%ROMPATH%/supervision</path>
<extension>.bin .BIN .sv .SV .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .sv .SV .7z .7Z .zip .ZIP</extension>
<command label="Potator">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/potator_libretro.so %ROM%</command> <command label="Potator">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/potator_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "svision -rompath \"%GAMEDIRRAW%;%ROMPATH%/supervision\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supervision svision -cart %ROM%</command>
<platform>supervision</platform> <platform>supervision</platform>
<theme>supervision</theme> <theme>supervision</theme>
</system> </system>
@ -1831,7 +1866,7 @@
<fullname>Funtech Super A'Can</fullname> <fullname>Funtech Super A'Can</fullname>
<path>%ROMPATH%/supracan</path> <path>%ROMPATH%/supracan</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "supracan -rompath %GAMEDIR%\;%ROMPATH%/supracan -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "supracan -rompath \"%GAMEDIRRAW%;%ROMPATH%/supracan\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supracan supracan -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supracan supracan -cart %ROM%</command>
<platform>supracan</platform> <platform>supracan</platform>
<theme>supracan</theme> <theme>supracan</theme>
@ -1879,6 +1914,7 @@
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command> <command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command> <command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> -->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine" %ROM%</command> -->
<platform>pcengine</platform> <platform>pcengine</platform>
<theme>tg16</theme> <theme>tg16</theme>
@ -1891,6 +1927,7 @@
<command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command> <command label="Beetle PCE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_libretro.so %ROM%</command>
<command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command> <command label="Beetle PCE FAST">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_pce_fast_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module pce %ROM%</command> -->
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine CD" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "PC Engine CD" %ROM%</command> -->
<platform>pcenginecd</platform> <platform>pcenginecd</platform>
<theme>tg-cd</theme> <theme>tg-cd</theme>
@ -1908,10 +1945,11 @@
<system> <system>
<name>tic80</name> <name>tic80</name>
<fullname>TIC-80 Game Engine</fullname> <fullname>TIC-80 Fantasy Computer</fullname>
<path>%ROMPATH%/tic80</path> <path>%ROMPATH%/tic80</path>
<extension>.tic .TIC</extension> <extension>.tic .TIC</extension>
<command label="TIC-80">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tic80_libretro.so %ROM%</command> <command label="TIC-80">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tic80_libretro.so %ROM%</command>
<!--<command label="TIC-80 (Standalone)">%EMULATOR_TIC-80% %ROM% &ndash;&ndash;fullscreen</command>-->
<platform>tic80</platform> <platform>tic80</platform>
<theme>tic80</theme> <theme>tic80</theme>
</system> </system>
@ -1919,7 +1957,7 @@
<name>to8</name> <name>to8</name>
<fullname>Thomson TO8</fullname> <fullname>Thomson TO8</fullname>
<path>%ROMPATH%/to8</path> <path>%ROMPATH%/to8</path>
<extension>.fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP</extension> <extension>.fd .FD .k7 .K7 .m5 .M5 .m7 .M7 .rom .ROM .sap .SAP .7z .7Z .zip .ZIP</extension>
<command label="Theodore">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM%</command> <command label="Theodore">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/theodore_libretro.so %ROM%</command>
<platform>moto</platform> <platform>moto</platform>
<theme>to8</theme> <theme>to8</theme>
@ -1969,10 +2007,12 @@
</system> </system>
<system> <system>
<name>vectrex</name> <name>vectrex</name>
<fullname>Smith Engineering Vectrex</fullname> <fullname>GCE Vectrex</fullname>
<path>%ROMPATH%/vectrex</path> <path>%ROMPATH%/vectrex</path>
<extension>.bin .BIN .vec .VEC .gam .GAM .vc .VC .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .gam .GAM .vc .VC .vec .VEC .7z .7Z .zip .ZIP</extension>
<command label="vecx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vecx_libretro.so %ROM%</command> <command label="vecx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vecx_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vectrex -rompath \"%GAMEDIRRAW%;%ROMPATH%/vectrex\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vectrex vectrex -cart %ROM%</command>
<platform>vectrex</platform> <platform>vectrex</platform>
<theme>vectrex</theme> <theme>vectrex</theme>
</system> </system>
@ -1992,14 +2032,16 @@
<path>%ROMPATH%/videopac</path> <path>%ROMPATH%/videopac</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="O2EM">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM%</command> <command label="O2EM">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/o2em_libretro.so %ROM%</command>
<platform>videopac</platform> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "videopac -rompath \"%GAMEDIRRAW%;%ROMPATH%/videopac\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/videopac videopac -cart %ROM%</command>
<platform>odyssey2</platform>
<theme>videopac</theme> <theme>videopac</theme>
</system> </system>
<system> <system>
<name>virtualboy</name> <name>virtualboy</name>
<fullname>Nintendo Virtual Boy</fullname> <fullname>Nintendo Virtual Boy</fullname>
<path>%ROMPATH%/virtualboy</path> <path>%ROMPATH%/virtualboy</path>
<extension>.vb .VB .vboy .VBOY .bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .vb .VB .vboy .VBOY .7z .7Z .zip .ZIP</extension>
<command label="Beetle VB">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_vb_libretro.so %ROM%</command> <command label="Beetle VB">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_vb_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module vb %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module vb %ROM%</command> -->
<platform>virtualboy</platform> <platform>virtualboy</platform>
@ -2011,7 +2053,7 @@
<fullname>Visual Pinball</fullname> <fullname>Visual Pinball</fullname>
<path>%ROMPATH%/vpinball</path> <path>%ROMPATH%/vpinball</path>
<extension>.vpt .VPT .vpx .VPX</extension> <extension>.vpt .VPT .vpx .VPX</extension>
<command label="Visual Pinball (Standalone)">%EMULATOR_VISUAL-PINBALL% -Minimized -Play %ROM%</command> <command label="Visual Pinball (Standalone)">%EMULATOR_VISUAL-PINBALL% -play %ROM%</command>
<platform>vpinball</platform> <platform>vpinball</platform>
<theme>vpinball</theme> <theme>vpinball</theme>
</system> </system>
@ -2022,7 +2064,7 @@
<fullname>VTech V.Smile</fullname> <fullname>VTech V.Smile</fullname>
<path>%ROMPATH%/vsmile</path> <path>%ROMPATH%/vsmile</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension> <extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vsmile -rompath %GAMEDIR%\;%ROMPATH%/vsmile -cart \"%ROMRAW%\""</command> <command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vsmile -rompath \"%GAMEDIRRAW%;%ROMPATH%/vsmile\" -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vsmile vsmile -cart %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vsmile vsmile -cart %ROM%</command>
<platform>vsmile</platform> <platform>vsmile</platform>
<theme>vsmile</theme> <theme>vsmile</theme>
@ -2057,14 +2099,55 @@
<platform>wiiu</platform> <platform>wiiu</platform>
<theme>wiiu</theme> <theme>wiiu</theme>
</system> </system>
<system>
<name>windows</name>
<fullname>Microsoft Windows</fullname>
<path>%ROMPATH%/windows</path>
<extension>.AppImage .desktop .sh</extension>
<command label="Suspend ES-DE">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="Keep ES-DE running">%RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="AppImage (Suspend ES-DE)">%EMULATOR_OS-SHELL% -c "%ROM%"</command>
<command label="AppImage (Keep ES-DE running)">%RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%"</command>
<platform>pcwindows</platform>
<theme>windows</theme>
</system>
<system>
<name>windows3x</name>
<fullname>Microsoft Windows 3.x</fullname>
<path>%ROMPATH%/windows3x</path>
<extension>.AppImage .bat .BAT .desktop .dosz .DOSZ .sh .7z .7Z .zip .ZIP</extension>
<command label="DOSBox-X (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_DOSBOX-X% -defaultdir %GAMEDIR% %ROM%</command>
<command label="DOSBox-Pure">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dosbox_pure_libretro.so %ROM%</command>
<command label="Shortcut or script (Suspend ES-DE)">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="Shortcut or script (Keep ES-DE running)">%RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="AppImage (Suspend ES-DE)">%EMULATOR_OS-SHELL% -c "%ROM%"</command>
<command label="AppImage (Keep ES-DE running)">%RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%"</command>
<platform>windows3x</platform>
<theme>windows3x</theme>
</system>
<system>
<name>windows9x</name>
<fullname>Microsoft Windows 9x</fullname>
<path>%ROMPATH%/windows9x</path>
<extension>.AppImage .bat .BAT .desktop .dosz .DOSZ .sh .7z .7Z .zip .ZIP</extension>
<command label="DOSBox-X (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_DOSBOX-X% -defaultdir %GAMEDIR% %ROM%</command>
<command label="DOSBox-Pure">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/dosbox_pure_libretro.so %ROM%</command>
<command label="Shortcut or script (Suspend ES-DE)">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="Shortcut or script (Keep ES-DE running)">%RUNINBACKGROUND% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<command label="AppImage (Suspend ES-DE)">%EMULATOR_OS-SHELL% -c "%ROM%"</command>
<command label="AppImage (Keep ES-DE running)">%RUNINBACKGROUND% %EMULATOR_OS-SHELL% -c "%ROM%"</command>
<platform>pcwindows</platform>
<theme>windows9x</theme>
</system>
<system> <system>
<name>wonderswan</name> <name>wonderswan</name>
<fullname>Bandai WonderSwan</fullname> <fullname>Bandai WonderSwan</fullname>
<path>%ROMPATH%/wonderswan</path> <path>%ROMPATH%/wonderswan</path>
<extension>.ws .WS .pc2 .PC2 .7z .7Z .zip .ZIP</extension> <extension>.pc2 .PC2 .ws .WS .7z .7Z .zip .ZIP</extension>
<command label="Beetle Cygne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM%</command> <command label="Beetle Cygne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module wswan %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module wswan %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "WonderSwan" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "WonderSwan" %ROM%</command> -->
<!--<command label="ares [Benesse Pocket Challenge V2] (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Pocket Challenge V2" %ROM%</command>-->
<platform>wonderswan</platform> <platform>wonderswan</platform>
<theme>wonderswan</theme> <theme>wonderswan</theme>
</system> </system>
@ -2072,7 +2155,7 @@
<name>wonderswancolor</name> <name>wonderswancolor</name>
<fullname>Bandai WonderSwan Color</fullname> <fullname>Bandai WonderSwan Color</fullname>
<path>%ROMPATH%/wonderswancolor</path> <path>%ROMPATH%/wonderswancolor</path>
<extension>.ws .WS .wsc .WSC .pc2 .PC2 .7z .7Z .zip .ZIP</extension> <extension>.pc2 .PC2 .ws .WS .wsc .WSC .7z .7Z .zip .ZIP</extension>
<command label="Beetle Cygne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM%</command> <command label="Beetle Cygne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_wswan_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module wswan %ROM%</command> --> <!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module wswan %ROM%</command> -->
<!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "WonderSwan Color" %ROM%</command> --> <!-- <command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "WonderSwan Color" %ROM%</command> -->
@ -2083,7 +2166,7 @@
<name>x1</name> <name>x1</name>
<fullname>Sharp X1</fullname> <fullname>Sharp X1</fullname>
<path>%ROMPATH%/x1</path> <path>%ROMPATH%/x1</path>
<extension>.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</extension> <extension>.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</extension>
<command label="x1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/x1_libretro.so %ROM%</command> <command label="x1">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/x1_libretro.so %ROM%</command>
<platform>x1</platform> <platform>x1</platform>
<theme>x1</theme> <theme>x1</theme>
@ -2092,9 +2175,9 @@
<name>x68000</name> <name>x68000</name>
<fullname>Sharp X68000</fullname> <fullname>Sharp X68000</fullname>
<path>%ROMPATH%/x68000</path> <path>%ROMPATH%/x68000</path>
<extension>.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</extension> <extension>.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</extension>
<command label="PX68k">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/px68k_libretro.so %ROM%</command> <command label="PX68k">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/px68k_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/x68000 x68000 -flop1 %ROM%</command> <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/x68000 x68000 -flop1 %ROM%</command>
<platform>x68000</platform> <platform>x68000</platform>
<theme>x68000</theme> <theme>x68000</theme>
</system> </system>
@ -2112,7 +2195,7 @@
<name>xbox360</name> <name>xbox360</name>
<fullname>Microsoft Xbox 360</fullname> <fullname>Microsoft Xbox 360</fullname>
<path>%ROMPATH%/xbox360</path> <path>%ROMPATH%/xbox360</path>
<extension>. .desktop .iso .ISO .sh .xex .XEX</extension> <extension>. .desktop .iso .ISO .sh .xex .XEX .zar .ZAR</extension>
<command label="xenia (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_XENIA-WINDOWS% %ROM%</command> <command label="xenia (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_XENIA-WINDOWS% %ROM%</command>
<command label="xenia (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_XENIA-WINDOWS% %ROM%</command> <command label="xenia (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_XENIA-WINDOWS% %ROM%</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command> <command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
@ -2135,7 +2218,7 @@
<name>zx81</name> <name>zx81</name>
<fullname>Sinclair ZX81</fullname> <fullname>Sinclair ZX81</fullname>
<path>%ROMPATH%/zx81</path> <path>%ROMPATH%/zx81</path>
<extension>.tzx .TZX .p .P .7z .7Z .zip .ZIP</extension> <extension>.p .P .tzx .TZX .7z .7Z .zip .ZIP</extension>
<command label="EightyOne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/81_libretro.so %ROM%</command> <command label="EightyOne">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/81_libretro.so %ROM%</command>
<platform>zx81</platform> <platform>zx81</platform>
<theme>zx81</theme> <theme>zx81</theme>

View file

@ -30,12 +30,12 @@ save_migration() {
fi fi
# Doing the dir prep as we don't know from which version we came # 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 "$media_folder" "/var/config/ES-DE/downloaded_media"
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes" 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 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 # 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 # 0.4 -> 0.5
# Perform save and state migration if needed # Perform save and state migration if needed

View file

@ -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." # configurator_generic_dialog "RetroDECK Online Update" "The update process is now complete!\n\nPlease restart RetroDECK to keep the fun going."
# exit 1 # exit 1
# fi # 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" \ 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" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Update Available" \ --title "RetroDECK Update Available" \

View file

@ -4,7 +4,7 @@ source /app/libexec/logger.sh
compress_game() { compress_game() {
# Function for compressing one or more files to .chd format # 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 file="$2"
local filename_no_path=$(basename "$file") local filename_no_path=$(basename "$file")
local filename_no_extension="${filename_no_path%.*}" local filename_no_extension="${filename_no_path%.*}"
@ -17,6 +17,8 @@ compress_game() {
zip -jq9 "$dest_file".zip "$source_file" zip -jq9 "$dest_file".zip "$source_file"
elif [[ "$1" == "rvz" ]]; then elif [[ "$1" == "rvz" ]]; then
dolphin-tool convert -f rvz -b 131072 -c zstd -l 5 -i "$source_file" -o "$dest_file.rvz" 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 fi
} }
@ -32,6 +34,8 @@ find_compatible_compression_format() {
echo "zip" 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 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" 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 else
# If no compatible format can be found for the input file # If no compatible format can be found for the input file
echo "none" 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..." read -p "RetroDECK will now attempt to compress your selected game. Press Enter key to continue..."
if [[ ! -z "$file" ]]; then if [[ ! -z "$file" ]]; then
if [[ -f "$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") local compatible_compression_format=$(find_compatible_compression_format "$file")
if [[ ! $compatible_compression_format == "none" ]]; then if [[ ! $compatible_compression_format == "none" ]]; then
echo "$(basename "$file") can be compressed to $compatible_compression_format" 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 [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
if [[ $(basename "$file") == *".cue" ]]; then if [[ $(basename "$file") == *".cue" ]]; then
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") 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") local compatible_compression_format=$(find_compatible_compression_format "$file")
if [[ ! "$compatible_compression_format" == "none" ]]; then if [[ ! "$compatible_compression_format" == "none" ]]; then
echo "$(basename "$file") can be compressed to $compatible_compression_format" 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 [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
if [[ "$file" == *".cue" ]]; then if [[ "$file" == *".cue" ]]; then
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")

View file

@ -111,34 +111,14 @@ download_file() {
# file_dest is the destination the file should be in the filesystem, needs filename included! # 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 # 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 "$1" -O "$2" -q
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"
) | ) |
zenity --progress \ zenity --progress \
--title="Downloading File" \ --title="Downloading File" \
--text="Downloading $3..." \ --text="Downloading $3..." \
--percentage=0 \ --pulsate \
--auto-close --auto-close
# Cleanup temp file
rm -f "/var/cache/tmp/download_progress"
} }
update_rd_conf() { update_rd_conf() {
@ -279,7 +259,7 @@ dir_prep() {
if [ -d "$symlink.old" ]; if [ -d "$symlink.old" ];
then then
log d "Moving the data from $symlink.old to $real" #DEBUG 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 log d "Removing $symlink.old" #DEBUG
rm -rf "$symlink.old" rm -rf "$symlink.old"
fi fi
@ -287,6 +267,36 @@ dir_prep() {
log i "$symlink is now $real\n" 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() { update_rpcs3_firmware() {
mkdir -p "$roms_folder/ps3/tmp" mkdir -p "$roms_folder/ps3/tmp"
chmod 777 "$roms_folder/ps3/tmp" chmod 777 "$roms_folder/ps3/tmp"
@ -295,6 +305,13 @@ update_rpcs3_firmware() {
rm -rf "$roms_folder/ps3/tmp" 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() { backup_retrodeck_userdata() {
mkdir -p "$backups_folder" 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 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") # 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" # USAGE: make_name_pretty "system name"
local system=$(grep "$1^" "$pretty_system_names_reference_list") 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" echo "$pretty_name"
} }
@ -374,9 +395,6 @@ finit() {
log i "Executing finit" log i "Executing finit"
# Placing the default retrodeck.cfg
cp -vf $rd_defaults $rd_conf
# Internal or SD Card? # 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." ) 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" 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." 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 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 \ zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \ --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." --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 update_rpcs3_firmware
fi fi
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 if [[ "$finit_options_choices" =~ (rd_controller_profile|Enable All) ]]; then
install_retrodeck_controller_profile install_retrodeck_controller_profile
fi fi
@ -492,9 +519,9 @@ install_retrodeck_starterpack() {
## DOOM section ## ## DOOM section ##
cp /app/retrodeck/extras/doom1.wad "$roms_folder/doom/doom1.wad" # No -f in case the user already has it 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" mkdir -p "/var/config/ES-DE/gamelists/doom"
if [[ ! -f "/var/config/emulationstation/.emulationstation/gamelists/doom/gamelist.xml" ]]; then # Don't overwrite an existing gamelist 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/emulationstation/.emulationstation/gamelists/doom/gamelist.xml" cp "/app/retrodeck/rd_prepacks/doom/gamelist.xml" "/var/config/ES-DE/gamelists/doom/gamelist.xml"
fi fi
mkdir -p "$media_folder/doom" mkdir -p "$media_folder/doom"
unzip -oq "/app/retrodeck/rd_prepacks/doom/doom.zip" -d "$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 # 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 # 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 # 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 if [[ -d "$HOME/.steam/steam/controller_base/templates/" || -d "$HOME/.var/app/com.valvesoftware.Steam/.steam/steam/controller_base/templates/" ]]; then
rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" if [[ -d "$HOME/.steam/steam/controller_base/templates/" ]]; then # If a normal binary Steam install exists
rsync -rlD --mkpath "$emuconfigs/defaults/retrodeck/controller_configs/" "$HOME/.steam/steam/controller_base/templates/" rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/"
# TODO: delete older files Issue#672 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 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." 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 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 # This script will purge any existing ES graphics and reload them from RO space into somewhere ES will look for it
# USAGE: update_splashscreens # USAGE: update_splashscreens
rm -rf /var/config/emulationstation/.emulationstation/resources/graphics rm -rf /var/config/ES-DE/resources/graphics
rsync -rlD --mkpath "/app/retrodeck/graphics/" "/var/config/emulationstation/.emulationstation/resources/graphics/" rsync -rlD --mkpath "/app/retrodeck/graphics/" "/var/config/ES-DE/resources/graphics/"
} }
deploy_helper_files() { deploy_helper_files() {
@ -568,14 +601,111 @@ easter_eggs() {
cp -f "$new_splash_file" "$current_splash_file" # Deploy assigned splash screen 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() { quit_retrodeck() {
pkill -f retrodeck pkill -f retrodeck
pkill -f emulationstation pkill -f es-de
} }
start_retrodeck() { start_retrodeck() {
easter_eggs # Check if today has a surprise splashscreen and load it if so easter_eggs # Check if today has a surprise splashscreen and load it if so
# normal startup # normal startup
log i "Starting RetroDECK v$version" log i "Starting RetroDECK v$version"
emulationstation --home /var/config/emulationstation es-de --home /var/config/
} }

View file

@ -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 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 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 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 splashscreen_dir="/var/config/ES-DE/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 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/emulationstation/.emulationstation/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen 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 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 lockfile="/var/config/retrodeck/.lock" # where the lockfile is located
default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path
hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem) 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) 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) 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 # Config files for emulators with single config files
citraconf="/var/config/citra-emu/qt-config.ini" citraconf="/var/config/citra-emu/qt-config.ini"
@ -59,7 +63,7 @@ yuzuconf="/var/config/yuzu/qt-config.ini"
# ES-DE config files # 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 # RetroArch config files
@ -109,9 +113,14 @@ rpcs3vfsconf="/var/config/rpcs3/vfs.yml"
vita3kconf="/var/data/Vita3K/config.yml" vita3kconf="/var/data/Vita3K/config.yml"
vita3kusrconfdir="$bios_folder/Vita3K/Vita3K" 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 # We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
if [ -f "$HOME/retrodeck/.lock" ] if [[ -f "$HOME/retrodeck/.lock" ]]; then
then
mv "$HOME/retrodeck/.lock" $lockfile mv "$HOME/retrodeck/.lock" $lockfile
fi fi
@ -122,10 +131,12 @@ if [[ ! -f "$rd_conf" ]]; then
log i "Initializing" 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 # 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 # Initializing the variables
if [ -z $version]; then 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 if [[ -f "$lockfile" ]]; then
log d "Running version workaround" 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
version=$(cat $lockfile) log d "Running version workaround"
version=$(cat $lockfile)
fi
else else
version="$hard_version" version="$hard_version"
fi fi
@ -133,10 +144,10 @@ if [[ ! -f "$rd_conf" ]]; then
# Check if SD card path has changed from SteamOS update # Check if SD card path has changed from SteamOS update
if [[ ! -d "$default_sd" && "$(ls -A /run/media/deck/)" ]]; then 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 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 media/deck/* -maxdepth 0 -type d -print)" 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 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")" default_sd="$(directory_browse "SD Card Location")"
fi fi
fi fi
@ -173,8 +184,8 @@ else
tmplog_merger tmplog_merger
# Verify rdhome is where it is supposed to be. # Verify rdhome is where it is supposed to be.
if [[ ! -d $rdhome ]]; then if [[ ! -d "$rdhome" ]]; then
prev_home_path=$rdhome 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." 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") new_home_path=$(directory_browse "RetroDECK folder location")
set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths" set_setting_value $rd_conf "rdhome" "$new_home_path" retrodeck "paths"

View file

@ -54,6 +54,15 @@ set_setting_value() {
xml ed -L -u "//$current_section_name/$setting_name_to_change" -v "$setting_value_to_change" "$1" xml ed -L -u "//$current_section_name/$setting_name_to_change" -v "$setting_value_to_change" "$1"
fi fi
;; ;;
"mame" ) # In this option, $current_section_name is the <system name> 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 name=\"'"$current_section_name"'\">^,\^<\/system>^s^'"$mame_current_value"'^'"$setting_value_to_change"'^' "$1"
fi
;;
"es_settings" ) "es_settings" )
sed -i 's^'"$setting_name_to_change"'" value=".*"^'"$setting_name_to_change"'" value="'"$setting_value_to_change"'"^' "$1" 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' 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^\\$^^' 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 fi
;; ;;
"mame" ) # In this option, $current_section_name is the <system name> 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" ) "es_settings" )
echo $(grep -o -P "(?<=$current_setting_name\" value=\").*(?=\")" "$1") echo $(grep -o -P "(?<=$current_setting_name\" value=\").*(?=\")" "$1")
;; ;;

View file

@ -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/RetroArch-Mupen64Plus/hires_texture" "/var/config/retroarch/system/Mupen64plus/hires_texture"
dir_prep "$texture_packs_folder/Duckstation" "/var/config/duckstation/textures" 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" dir_prep "$borders_folder" "/var/config/retroarch/overlays/borders"
rsync -rlD --mkpath "/app/retrodeck/emu-configs/retroarch/borders/" "/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" dir_prep "$states_folder/psx/duckstation" "/var/config/duckstation/savestates"
rm -rf /var/config/retrodeck/tools 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/EUR" "$saves_folder/gc/dolphin/EU"
mv "$saves_folder/gc/dolphin/USA" "$saves_folder/gc/dolphin/US" mv "$saves_folder/gc/dolphin/USA" "$saves_folder/gc/dolphin/US"
@ -195,8 +195,8 @@ post_update() {
sed -i '$ a <string name="UserThemeDirectory" value="" />' "$es_settings" # Add new default line to existing file sed -i '$ a <string name="UserThemeDirectory" value="" />' "$es_settings" # Add new default line to existing file
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings" set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings"
unlink "/var/config/emulationstation/ROMs" unlink "/var/config/emulationstation/ROMs"
unlink "/var/config/emulationstation/.emulationstation/downloaded_media" unlink "/var/config/emulationstation/ES-DE/downloaded_media"
unlink "/var/config/emulationstation/.emulationstation/themes" unlink "/var/config/emulationstation/ES-DE/themes"
set_setting_value "$raconf" "savestate_auto_load" "false" "retroarch" set_setting_value "$raconf" "savestate_auto_load" "false" "retroarch"
set_setting_value "$raconf" "savestate_auto_save" "false" "retroarch" set_setting_value "$raconf" "savestate_auto_save" "false" "retroarch"
@ -236,13 +236,30 @@ post_update() {
if [[ $prev_version -le "080" ]]; then 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: # 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 # - Remove RetroDECK controller profile from existing template location
# - Determine if Steam is installed via normal desktop application / Flatpak / SteamOS TODO
# - Install RetroDECK controller profile in desired location TODO
# - Change section name in retrodeck.cfg for ABXY button swap preset # - 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 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 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. # The following commands are run every time.
if [[ -d "/var/data/dolphin-emu/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled 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/" rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/primehack/Load/DynamicInputTextures/"
fi 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 install_retrodeck_controller_profile
fi fi

View file

@ -23,6 +23,7 @@ prepare_component() {
mkdir -p "$rdhome/$(basename $current_setting_value)" mkdir -p "$rdhome/$(basename $current_setting_value)"
fi fi
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f') done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
mkdir -p "/var/config/retrodeck/godot"
fi fi
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move 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 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 [[ "$component" =~ ^(es-de|ES-DE|all)$ ]]; then # For use after ESDE-related folders are moved or a reset
if [[ "$action" == "reset" ]]; then if [[ "$action" == "reset" ]]; then
rm -rf /var/config/emulationstation/ rm -rf /var/config/ES-DE
mkdir -p /var/config/emulationstation/.emulationstation/ mkdir -p /var/config/ES-DE/settings
cp -f /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml 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" "ROMDirectory" "$roms_folder" "es_settings"
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings" set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_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"
emulationstation --home /var/config/emulationstation --create-system-dirs es-de --home /var/config/ES-DE --create-system-dirs
update_splashscreens update_splashscreens
fi fi
if [[ "$action" == "postmove" ]]; then if [[ "$action" == "postmove" ]]; then
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings" 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" "MediaDirectory" "$media_folder" "es_settings"
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_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
fi fi
@ -541,27 +542,38 @@ prepare_component() {
fi fi
if [[ "$component" =~ ^(ryujunx|Ryujinx|all)$ ]]; then 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 if [[ "$action" == "reset" ]]; then # Run reset-only commands
log i "------------------------" log i "------------------------"
log i "Initializing RYUJINX" log i "Initializing RYUJINX"
log i "------------------------" log i "------------------------"
if [[ $multi_user_mode == "true" ]]; then if [[ $multi_user_mode == "true" ]]; then
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" 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" 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" 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 else
# removing config directory to wipe legacy files # removing config directory to wipe legacy files
rm -rf /var/config/Ryujinx rm -rf /var/config/Ryujinx
mkdir -p /var/config/Ryujinx/system mkdir -p /var/config/Ryujinx/system
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx 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
fi fi
if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves # 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" # dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system"
fi # fi
if [[ "$action" == "postmove" ]]; then # Run only post-move commands 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 sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON
fi fi
@ -678,23 +690,13 @@ prepare_component() {
else # Single-user actions 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 # 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" rm -rf "/var/data/Vita3K"
mkdir -p "/var/data/Vita3K" mkdir -p "/var/data/Vita3K/Vita3K"
unzip "/app/retrodeck/vita3k.zip" -d "/var/data/Vita3K"
chmod +x "/var/data/Vita3K/Vita3K"
rm -f "/var/data/Vita3K/update-vita3k.sh"
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k" set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
fi fi
# Shared actions # Shared actions
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe? 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 fi
if [[ "$action" == "postmove" ]]; then # Run only post-move commands 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? 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 "Initializing MAME"
log i "----------------------" log i "----------------------"
mkdir -p $saves_folder/mame-sa # TODO: probably some of these needs to be put elsewhere
mkdir -p "/var/config/mame" 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" dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore"
cp -fvr "$emuconfigs/mame/**" "/var/config/mame" cp -fvr "$emuconfigs/mame/mame.ini" "$mameconf"
sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/*.ini" cp -fvr "$emuconfigs/mame/ui.ini" "$mameuiconf"
sed -i 's#RETRODECKHOMESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini" cp -fvr "$emuconfigs/mame/default.cfg" "$mamedefconf"
sed -i 's#RETRODECKSAVESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini"
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 fi

View file

@ -112,11 +112,11 @@ build_preset_config() {
"change" ) "change" )
if [[ "$read_preset" == "$current_preset" ]]; then if [[ "$read_preset" == "$current_preset" ]]; then
if [[ "$target_file" = \$* ]]; then # Read current target file and resolve if it is a variable 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 fi
local read_target_file="$target_file" local read_target_file="$target_file"
if [[ "$defaults_file" = \$* ]]; then #Read current defaults file and resolve if it is a variable 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 fi
local read_defaults_file="$defaults_file" local read_defaults_file="$defaults_file"
if [[ "$read_system_enabled" == "true" ]]; then if [[ "$read_system_enabled" == "true" ]]; then

View file

@ -1,6 +1,7 @@
debug = false debug = false
config_version = 1 config_version = 1
blacklisted_games = [] blacklisted_games = []
boilr_tag = "retrodeck"
[steamgrid_db] [steamgrid_db]
enabled = true enabled = true

View file

@ -6,6 +6,8 @@ import shlex
import shutil import shutil
import glob import glob
import sys import sys
import time
import hashlib
import xml.etree.ElementTree as ET 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" "Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so"
} }
def create_shortcut_new(games,rdhome): exit_file="/tmp/retrodeck_steam_sync_exit"
old_games=os.listdir(rdhome+"/sync/") rdhome=""
roms_folder=""
def create_shortcut_new(games):
changes=0
old_games=os.listdir(rdhome+"/.sync/")
for game in games: for game in games:
try: try:
@ -275,8 +282,9 @@ def create_shortcut_new(games,rdhome):
old_games[i]=0 old_games[i]=0
except ValueError: except ValueError:
print(game[0]+" is a new game!") print(game[0]+" is a new game!")
changes=1
path=rdhome+"/sync/"+game[0]
path=rdhome+"/.sync/"+game[0]
print("Go to path: "+path) print("Go to path: "+path)
if not os.path.exists(path): if not os.path.exists(path):
os.makedirs(path) os.makedirs(path)
@ -300,7 +308,7 @@ def create_shortcut_new(games,rdhome):
fl.write(' ]\n') fl.write(' ]\n')
fl.write('}\n') fl.write('}\n')
fl.close() fl.close()
fl=open(path+"/launch.sh","w") fl=open(path+"/launch.sh","w")
fl.write("#!/bin/bash\n\n") fl.write("#!/bin/bash\n\n")
fl.write('if test "$(whereis flatpak)" = "flatpak:"\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(game[1]+"\n")
fl.write("fi\n") fl.write("fi\n")
fl.close() fl.close()
st=os.stat(path+"/launch.sh") st=os.stat(path+"/launch.sh")
os.chmod(path+"/launch.sh", st.st_mode | 0o0111) os.chmod(path+"/launch.sh", st.st_mode | 0o0111)
print("Start removing") print("Start removing")
print(old_games) print(old_games)
for game in old_games: for game in old_games:
if game: if game:
shutil.rmtree(rdhome+"/sync/"+game) shutil.rmtree(rdhome+"/.sync/"+game)
changes=1
os.system("boilr --no-ui")
def addToSteam(): if changes:
print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"))) os.system("boilr --no-ui")
fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r") def addToSteam(systems):
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()
games=[] games=[]
for system in systems:
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/"):
print("Start parsing system: {}".format(system)) print("Start parsing system: {}".format(system))
f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r") f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r")
f.readline() f.readline()
parser=ET.XMLParser() parser=ET.XMLParser()
@ -355,7 +345,7 @@ def addToSteam():
parser.feed(b'</root>') parser.feed(b'</root>')
root=parser.close() root=parser.close()
f.close() f.close()
globalAltEmu="" globalAltEmu=""
for subroot in root: for subroot in root:
if subroot.tag=="alternativeEmulator": if subroot.tag=="alternativeEmulator":
@ -367,7 +357,7 @@ def addToSteam():
name="" name=""
favorite="" favorite=""
altemulator=globalAltEmu altemulator=globalAltEmu
for tag in game: for tag in game:
if tag.tag=="path": if tag.tag=="path":
path=tag.text path=tag.text
elif tag.tag=="name": elif tag.tag=="name":
@ -376,7 +366,7 @@ def addToSteam():
favorite=tag.text favorite=tag.text
elif tag.tag=="altemulator": elif tag.tag=="altemulator":
altemulator=tag.text altemulator=tag.text
if favorite=="true" and altemulator=="": if favorite=="true" and altemulator=="":
print("Find favorite game: {}".format(name)) print("Find favorite game: {}".format(name))
games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"]) games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"])
@ -391,10 +381,76 @@ def addToSteam():
else: else:
games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"]) games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"])
print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'") print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'")
if not games==[]:
create_shortcut_new(games,rdhome) 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__": 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!") print("Finish!")

View file

@ -8,7 +8,7 @@
<developer_name>RetroDECK Team</developer_name> <developer_name>RetroDECK Team</developer_name>
<url type="homepage">https://retrodeck.net</url> <url type="homepage">https://retrodeck.net</url>
<url type="bugtracker">https://github.com/XargonWan/RetroDECK/issues</url> <url type="bugtracker">https://github.com/XargonWan/RetroDECK/issues</url>
<url type="help">http://discord.gg/Dz3szYsP8g</url> <url type="help">https://retrodeck.readthedocs.io</url>
<url type="faq">https://github.com/XargonWan/RetroDECK/wiki/FAQs---Frequently-asked-questions</url> <url type="faq">https://github.com/XargonWan/RetroDECK/wiki/FAQs---Frequently-asked-questions</url>
<url type="donation">https://www.patreon.com/RetroDECK</url> <url type="donation">https://www.patreon.com/RetroDECK</url>
<content_rating type="oars-1.0" /> <content_rating type="oars-1.0" />
@ -65,26 +65,28 @@
<project_license>GPL-3.0</project_license> <project_license>GPL-3.0</project_license>
<metadata_license>CC0-1.0</metadata_license> <metadata_license>CC0-1.0</metadata_license>
<releases> <releases>
<release version="0.8.0b" date="2023-12-14"> <release version="0.8.0b" date="2023-02-27">
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.8.0b</url> <url>https://github.com/XargonWan/RetroDECK/releases/tag/0.8.0b</url>
<description> <description>
<p>CRITICAL:</p> <p>
<ul> WARNING:
<li>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.</li> 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.
</ul> </p>
<p>Changes:</p> <p>Changes:</p>
<ul> <ul>
<li>ES-DE: updated to 3.0</li>
<li>Added new system: RYUJINX</li>
<li>Added new system: SOLARUS</li> <li>Added new system: SOLARUS</li>
<li>Added new engine: GZDOOM</li> <li>Added new engine: GZDOOM</li>
<li>Added new emulator: Vita3K - Reset the emulator to grap the lates changes</li> <li>Added new emulator: Vita3K</li>
<li>Added new emulator: MAME (Standalone)</li> <li>Added new emulator: MAME (Standalone)</li>
<li>PPSSPP: added hotkeys</li> <li>PPSSPP: added hotkeys</li>
<li>MAME: added hotkeys</li>
<li>SCUMMVM: added hotkeys</li>
<li>DOLPHIN: improved wiimote pointer emulation for controllers</li> <li>DOLPHIN: improved wiimote pointer emulation for controllers</li>
<li>Added Steam Sync (with BoilR)</li>
<li>Quit button after emulators reset should act as an actual full quit button</li> <li>Quit button after emulators reset should act as an actual full quit button</li>
<li>Created a quit_retrodeck function to ease the quit in the scripts.</li> <li>Created a quit_retrodeck function to ease the quit in the scripts.</li>
<li>Logs folder is now in retrodeck/logs (previously was .logs)</li> <li>Logs folder is now in retrodeck/logs (previously was .logs)</li>
<li>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)</li>
<li>RPCS3 is now running via shortcut (.desktop file) by default - WARN THE USERS TO MIGRATE</li> <li>RPCS3 is now running via shortcut (.desktop file) by default - WARN THE USERS TO MIGRATE</li>
<li>Added controller config for PS4 and PS5</li> <li>Added controller config for PS4 and PS5</li>
<li>Controller config overhaul</li> <li>Controller config overhaul</li>
@ -93,20 +95,18 @@
<p>Fixes:</p> <p>Fixes:</p>
<ul> <ul>
<li>Fixed DUCKSTATION memory card folder</li> <li>Fixed DUCKSTATION memory card folder</li>
<li>Fixed RPCS3 saves folder (wrong symlink) - WRN THE USERS TO BACKUP</li> <li>Fixed RPCS3 saves folder (wrong symlink) - WARN THE USERS TO BACKUP</li>
<li>Fixed issues that prevents Steam Sync to work correctly</li>
</ul> </ul>
<p>Issues:</p> <p>Issues:</p>
<ul> <ul>
<li>Vita3K firmware downloader is failing. Workaround: run the downloader twice</li>
<li>GZDOOM: the controller for player 2+ is not correctly configured</li> <li>GZDOOM: the controller for player 2+ is not correctly configured</li>
<li>quit_retrodeck function seems to not working correctly</li> <li>quit_retrodeck function seems to not working correctly</li>
<li>MAME (Standalone) paths should be fixed</li>
</ul> </ul>
<p>Missing:</p> <p>Missing:</p>
<ul> <ul>
<li>GZDOOM: hotkeys</li> <li>GZDOOM: hotkeys</li>
<li>SOLARUS: hotkeys</li> <li>SOLARUS: hotkeys</li>
<li>MAME (Standalone): hotkeys</li>
<li>A proper reset script for the new emulators, now it's just a draft (only Vita3K is done)</li> <li>A proper reset script for the new emulators, now it's just a draft (only Vita3K is done)</li>
</ul> </ul>
</description> </description>

View file

@ -407,7 +407,7 @@ modules:
- '*.la' - '*.la'
# When updating this module remember to check those: # 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 # But we don't include them 1:1 as RetroDECK got some specific configs in some cases
- name: ES-DE - name: ES-DE
buildsystem: cmake-ninja buildsystem: cmake-ninja
@ -419,12 +419,8 @@ modules:
sources: sources:
- type: git - type: git
url: https://github.com/XargonWan/RetroDECK-ES-DE url: https://github.com/XargonWan/RetroDECK-ES-DE
branch: cebbeff3b5f834fd9adaeb1f5dc9e0da6b106599 branch: update/3.0
- type: shell - 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 # ES-DE - END
@ -433,8 +429,8 @@ modules:
- name: art-book-next-es-de - name: art-book-next-es-de
buildsystem: simple buildsystem: simple
build-commands: build-commands:
- mkdir -p ${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/emulationstation/themes/art-book-next-es-de/ - mv -f * ${FLATPAK_DEST}/share/es-de/themes/art-book-next-es-de/
sources: sources:
- type: git - type: git
url: https://github.com/anthonycaccese/art-book-next-es-de.git url: https://github.com/anthonycaccese/art-book-next-es-de.git
@ -444,24 +440,6 @@ modules:
# External manifests start # 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 # RetroArch - START
# https://github.com/flathub/org.libretro.RetroArch # https://github.com/flathub/org.libretro.RetroArch
@ -1310,6 +1288,23 @@ modules:
# MAME - End # 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 # External manifests end
- name: retrodeck - name: retrodeck
@ -1320,16 +1315,16 @@ modules:
- mkdir -p ${FLATPAK_DEST}/retrodeck - mkdir -p ${FLATPAK_DEST}/retrodeck
# Prep the ES-DE and RetroArch config files - I will have to SED/XMLSTARLET them soon # 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 - rm -rf /app/share/es-de/resources/systems/linux/es_find_rules.xml
- cp es-configs/es_find_rules.xml /app/share/emulationstation/resources/systems/unix/ - cp es-configs/es_find_rules.xml /app/share/es-de/resources/systems/linux/
- rm -rf /app/share/emulationstation/resources/systems/unix/es_systems.xml - rm -rf /app/share/es-de/resources/systems/linux/es_systems.xml
- cp es-configs/es_systems.xml /app/share/emulationstation/resources/systems/unix/ - cp es-configs/es_systems.xml /app/share/es-de/resources/systems/linux/
# These must be put in home folder, managed by retrodeck.sh # These must be put in home folder, managed by retrodeck.sh
- cp es-configs/es_settings.xml ${FLATPAK_DEST}/retrodeck/es_settings.xml - cp es-configs/es_settings.xml ${FLATPAK_DEST}/retrodeck/es_settings.xml
- mv -f -t ${FLATPAK_DEST}/retrodeck es-configs/rd_prepacks - 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 # 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.svg
- cp -f res/splash.svg ${FLATPAK_DEST}/retrodeck/graphics/splash-orig.svg - cp -f res/splash.svg ${FLATPAK_DEST}/retrodeck/graphics/splash-orig.svg
- cp -rf res/extra_splashes/ ${FLATPAK_DEST}/retrodeck/graphics - cp -rf res/extra_splashes/ ${FLATPAK_DEST}/retrodeck/graphics
@ -1343,7 +1338,7 @@ modules:
# Tools # Tools
- mkdir -p /app/tools - mkdir -p /app/tools
- cp -r tools/** /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 # Function libraries
- mkdir -p /app/libexec - mkdir -p /app/libexec
@ -1376,7 +1371,11 @@ modules:
- cp emu-configs/gzdoom/gzdoom.sh ${FLATPAK_DEST}/bin/gzdoom.sh - cp emu-configs/gzdoom/gzdoom.sh ${FLATPAK_DEST}/bin/gzdoom.sh
- chmod +x ${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: sources:
- type: git - type: git
url: https://github.com/XargonWan/RetroDECK.git url: https://github.com/XargonWan/RetroDECK.git
branch: THISBRANCH branch: THISBRANCH

View file

@ -112,24 +112,7 @@
# Duckstation-DontUpdate - END # Duckstation-DontUpdate - END
# Ryujinx Appimage - START # Ryujinx - 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
# https://github.com/flathub/org.ryujinx.Ryujinx # https://github.com/flathub/org.ryujinx.Ryujinx
- name: Ryujinx - name: Ryujinx

View file

@ -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<TextComponent>(
- "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.
+}

View file

@ -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
+

View file

@ -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));

View file

@ -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() ?

View file

@ -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);

View file

@ -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."

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 133 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -57,9 +57,9 @@ https://retrodeck.net
;; ;;
--reset-component*) --reset-component*)
echo "You are about to reset one or more RetroDECK components or emulators." 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 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 read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response
if [[ $response == [yY] ]]; then if [[ $response == [yY] ]]; then
prepare_component "reset" "$component" "cli" prepare_component "reset" "$component" "cli"
@ -80,8 +80,8 @@ https://retrodeck.net
if [[ $response == [yY] ]]; then if [[ $response == [yY] ]]; then
rm -f "$lockfile" rm -f "$lockfile"
rm -f "$rd_conf" rm -f "$rd_conf"
read -p "The process has been completed, press Enter key to start the initial RetroDECK setup process." read -p "The process has been completed, press Enter key to exit. Please run RetroDECK again to start the initial setup process."
shift # Continue launch after previous command is finished exit 1
else else
read -p "The process has been cancelled, press Enter key to exit." read -p "The process has been cancelled, press Enter key to exit."
exit exit
@ -183,6 +183,17 @@ if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_conf
fi fi
# REMOVE BEFORE NEXT VERSION RELEASE # REMOVE BEFORE NEXT VERSION RELEASE
# Linking switch keys for Ryujinx
manage_ryujinx_keys
# Normal Startup # Normal Startup
if [[ $steam_sync == "true" ]]; then
python3 /app/libexec/steam-sync/steam-sync.py &
fi
start_retrodeck start_retrodeck
if [[ $steam_sync == "true" ]]; then
touch /tmp/retrodeck_steam_sync_exit
fi

View file

@ -14,13 +14,14 @@ source /app/libexec/logger.sh
# - Global: Presets & Settings # - Global: Presets & Settings
# - Widescreen: Enable/Disable # - Widescreen: Enable/Disable
# - Ask-To-Exit: Enable/Disable # - Ask-To-Exit: Enable/Disable
# - Quick Resume: Enable/Disable
# - RetroAchievements: Login # - RetroAchievements: Login
# - RetroAchievements: Logout # - RetroAchievements: Logout
# - RetroAchievements: Hardcore Mode # - 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 # - RetroArch: Presets & Settings
# - Borders: Enable/Disable # - Borders: Enable/Disable
# - Rewind: Enable/Disable
# - Wii & GameCube: Presets & Settings # - Wii & GameCube: Presets & Settings
# - Dolphin Textures: Universal Dynamic Input # - Dolphin Textures: Universal Dynamic Input
# - Primehack Textures: Universal Dynamic Input # - Primehack Textures: Universal Dynamic Input
@ -61,10 +62,12 @@ source /app/libexec/logger.sh
# - Compress All Games # - Compress All Games
# - Install: RetroDECK SD Controller Profile # - Install: RetroDECK SD Controller Profile
# - Install: PS3 firmware # - Install: PS3 firmware
# - Install: PS Vita firmware
# - RetroDECK: Change Update Setting # - RetroDECK: Change Update Setting
# - Troubleshooting # - Troubleshooting
# - Backup: RetroDECK Userdata # - Backup: RetroDECK Userdata
# - Check & Verify: BIOS # - Check & Verify: BIOS
# - Check & Verify: BIOS - Expert Mode
# - Check & Verify: Multi-file structure # - Check & Verify: Multi-file structure
# - RetroDECK: Reset # - RetroDECK: Reset
# - Reset Specific Emulator # - Reset Specific Emulator
@ -211,10 +214,12 @@ configurator_global_presets_and_settings_dialog() {
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Widescreen: Enable/Disable" "Enable or disable widescreen in supported systems" \ "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" \ "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: Login" "Log into the RetroAchievements service in supported systems" \
"RetroAchievements: Logout" "Disable RetroAchievements service in ALL 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" \ "RetroAchievements: Hardcore Mode" "Enable RetroAchievements hardcore mode (no cheats, rewind, save states etc.) in supported systems" \
"Swap A/B and X/Y Buttons" "Enable or disable a swapped A/B and X/Y button layout 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 case $choice in
@ -230,6 +235,11 @@ configurator_global_presets_and_settings_dialog() {
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" ) "RetroAchievements: Login" )
local cheevos_creds=$(get_cheevos_token_dialog) local cheevos_creds=$(get_cheevos_token_dialog)
if [[ ! "$cheevos_creds" == "failed" ]]; then if [[ ! "$cheevos_creds" == "failed" ]]; then
@ -259,8 +269,9 @@ configurator_global_presets_and_settings_dialog() {
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" log i "Configurator: opening \"$choice\" menu"
change_preset_dialog "abxy_button_swap" change_preset_dialog "abxy_button_swap"
configurator_global_presets_and_settings_dialog 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" \ 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 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Borders: Enable/Disable" "Enable or disable borders in supported systems" \ "Borders: Enable/Disable" "Enable or disable borders in supported systems" )
"Rewind: Enable/Disable" "Enable or disable the Rewind function in RetroArch." )
case $choice in case $choice in
@ -288,11 +298,6 @@ configurator_retroarch_presets_and_settings_dialog() {
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 "" ) # No selection made or Back button clicked
log i "Configurator: going back" log i "Configurator: going back"
configurator_presets_and_settings_dialog configurator_presets_and_settings_dialog
@ -301,36 +306,6 @@ configurator_retroarch_presets_and_settings_dialog() {
esac 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() { configurator_wii_and_gamecube_presets_and_settings_dialog() {
choice=$(zenity --list --title="RetroDECK Configurator Utility - Wii & GameCube: Presets & Settings" --cancel-label="Back" \ 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 \ --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" ) "MAME" )
log i "Configurator: \"$emulator\"" log i "Configurator: \"$emulator\""
mame mame-rdwrapper.sh
;; ;;
"MelonDS" ) "MelonDS" )
@ -536,7 +511,7 @@ configurator_open_emulator_dialog() {
"Ryujinx" ) "Ryujinx" )
log i "Configurator: \"$emulator\"" log i "Configurator: \"$emulator\""
ryujinx-wrapper Ryujinx.sh
;; ;;
"Vita3K" ) "Vita3K" )
@ -572,6 +547,7 @@ configurator_retrodeck_tools_dialog() {
"Tool: Compress Games" "Compress games for systems that support it" \ "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: 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: 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" ) "RetroDECK: Change Update Setting" "Enable or disable online checks for new versions of RetroDECK" )
case $choice in case $choice in
@ -616,6 +592,24 @@ configurator_retrodeck_tools_dialog() {
fi 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" ) "RetroDECK: Change Update Setting" )
log i "Configurator: opening \"$choice\" menu" log i "Configurator: opening \"$choice\" menu"
configurator_online_update_setting_dialog configurator_online_update_setting_dialog
@ -755,33 +749,24 @@ configurator_compression_tool_dialog() {
configurator_compress_single_game_dialog() { configurator_compress_single_game_dialog() {
local file=$(file_browse "Game to compress") local file=$(file_browse "Game to compress")
if [[ ! -z "$file" ]]; then if [[ ! -z "$file" ]]; then
local system=$(echo "$file" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$")
local compatible_compression_format=$(find_compatible_compression_format "$file") local compatible_compression_format=$(find_compatible_compression_format "$file")
if [[ ! $compatible_compression_format == "none" ]]; then if [[ ! $compatible_compression_format == "none" ]]; then
local post_compression_cleanup=$(configurator_compression_cleanup_dialog) local post_compression_cleanup=$(configurator_compression_cleanup_dialog)
( (
if [[ $compatible_compression_format == "chd" ]]; then echo "# Compressing $(basename "$file") to $compatible_compression_format format"
if [[ $(validate_for_chd "$file") == "true" ]]; then compress_game "$compatible_compression_format" "$file" "$system"
echo "# Compressing $(basename "$file") to $compatible_compression_format format" if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
compress_game "chd" "$file" if [[ "$file" == *".cue" ]]; then
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
if [[ "$file" == *".cue" ]]; then local file_path=$(dirname "$(realpath "$file")")
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") while IFS= read -r line
local file_path=$(dirname "$(realpath "$file")") do
while IFS= read -r line rm -f "$file_path/$line"
do done < <(printf '%s\n' "$cue_bin_files")
rm -f "$file_path/$line" rm -f $(realpath "$file")
done < <(printf '%s\n' "$cue_bin_files") else
rm -f "$file" rm -f "$(realpath "$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"
fi fi
fi fi
) | ) |
@ -881,12 +866,13 @@ configurator_compress_multiple_games_dialog() {
local post_compression_cleanup=$(configurator_compression_cleanup_dialog) local post_compression_cleanup=$(configurator_compression_cleanup_dialog)
( (
for file in "${games_to_compress[@]}"; do 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") local compression_format=$(find_compatible_compression_format "$file")
echo "# Compressing $(basename "$file") into $compression_format format" # Update Zenity dialog text echo "# Compressing $(basename "$file") into $compression_format format" # Update Zenity dialog text
progress=$(( 100 - (( 100 / "$total_games_to_compress" ) * "$games_left_to_compress" ))) progress=$(( 100 - (( 100 / "$total_games_to_compress" ) * "$games_left_to_compress" )))
echo $progress echo $progress
games_left_to_compress=$((games_left_to_compress-1)) 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 [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
if [[ "$file" == *".cue" ]]; then if [[ "$file" == *".cue" ]]; then
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file") local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
@ -959,6 +945,7 @@ configurator_retrodeck_troubleshooting_dialog() {
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \ "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" "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" \ "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" ) "RetroDECK: Reset" "Reset specific parts or all of RetroDECK" )
@ -987,6 +974,10 @@ configurator_retrodeck_troubleshooting_dialog() {
configurator_check_bios_files configurator_check_bios_files
;; ;;
"Check & Verify: BIOS Files - Expert Mode" )
configurator_check_bios_files_expert_mode
;;
"Check & Verify: Multi-file structure" ) "Check & Verify: Multi-file structure" )
log i "Configurator: opening \"$choice\" menu" log i "Configurator: opening \"$choice\" menu"
configurator_check_multifile_game_structure 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." 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=() bios_checked_list=()
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc check_bios_files "basic"
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
zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \ 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 \ --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_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() { configurator_check_multifile_game_structure() {
local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")) local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3"))
if [[ ${#folder_games[@]} -gt 1 ]]; then if [[ ${#folder_games[@]} -gt 1 ]]; then
@ -1080,6 +1078,7 @@ configurator_reset_dialog() {
"PPSSPP" "Reset the PSP emulator PPSSPP to default settings" \ "PPSSPP" "Reset the PSP emulator PPSSPP to default settings" \
"Primehack" "Reset the Metroid Prime emulator Primehack to default settings" \ "Primehack" "Reset the Metroid Prime emulator Primehack to default settings" \
"RPCS3" "Reset the PS3 emulator RPCS3 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" \ "Vita3k" "Reset the PS Vita emulator Vita3k to default settings" \
"XEMU" "Reset the XBOX emulator XEMU to default settings" \ "XEMU" "Reset the XBOX emulator XEMU to default settings" \
"Yuzu" "Reset the Switch emulator Yuzu 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 \ --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?" \ --text="Which component do you want to reset to default?" \
--column="Component" --column="Action" \ --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" \ ) "ES-DE" "Reset the ES-DE frontend" \ )
# TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU" # TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU"
@ -1226,8 +1225,46 @@ configurator_about_retrodeck_dialog() {
} }
configurator_add_steam() { configurator_add_steam() {
python3 /app/libexec/steam-sync/steam-sync.py if [[ $(get_setting_value $rd_conf "steam_sync" retrodeck "options") == "true" ]]; then
configurator_welcome_dialog 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() { configurator_version_history_dialog() {
@ -1394,8 +1431,8 @@ configurator_usb_import_dialog() {
"${external_devices[@]}") "${external_devices[@]}")
if [[ ! -z "$choice" ]]; then if [[ ! -z "$choice" ]]; then
emulationstation --home "$choice" --create-system-dirs es-de --home "$choice" --create-system-dirs
rm -rf "$choice/.emulationstation" # Cleanup unnecessary folder rm -rf "$choice/ES-DE" # Cleanup unnecessary folder
fi fi
else else
configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found." configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found."