Merge branch 'feat/wiki-rtd' [skip ci]

This commit is contained in:
XargonWan 2023-12-15 08:38:51 +01:00
commit 556402e607
1116 changed files with 20301 additions and 2977 deletions

View file

@ -4,6 +4,7 @@ on:
push:
branches:
- cooker*
- feat*
paths:
- '.github/workflows/**'
- 'automation_tools/**'
@ -57,8 +58,8 @@ jobs:
- name: "Adding flatpak portal for automated updates (cooker only)"
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
# - name: "Updating release notes in appdata"
# run: "automation_tools/appdata_management.sh"
- name: "Updating release notes in appdata"
run: "automation_tools/appdata_management.sh"
- name: "[DEBUG] Outputting manifest"
run: cat net.retrodeck.retrodeck.yml
@ -69,6 +70,9 @@ jobs:
continue-on-error: true
# Sometimes flatpak download fails, in this case it tries a second time
- name: Run pre-build automation tasks (retry)
if: steps.flatpak-download.outcome == 'failure'
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
@ -101,13 +105,27 @@ jobs:
id: commits
continue-on-error: true
- name: Get branch name
id: branch_name
run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV
# if it's a feature branch it will not marked as "latest" cooker version
- name: "Set makeLatest (cooker only)"
run: |
if [[ "$BRANCH_NAME" == 'feat/'* ]]; then
echo "MAKE_LATEST=false" >> $GITHUB_ENV
else
echo "MAKE_LATEST=true" >> $GITHUB_ENV
fi
- name: Publish the flatpak in a new cooker release
uses: ncipollo/release-action@v1
with:
tag: "${{ env.GITHUB_REF_SLUG }}-${{ env.buildid }}"
tag: "${{env.BRANCH_NAME}}-${{ env.buildid }}"
body: |
# Release Notes (Cooker)
This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
On branch [${{env.BRANCH_NAME}}](https://github.com/XargonWan/RetroDECK/tree/${{env.BRANCH_NAME}}).
## Commits since last release
${{ steps.commits.outputs.commits }}
@ -119,7 +137,7 @@ jobs:
artifacts: "RetroDECK-cooker.flatpak,RetroDECK-Artifact.tar.gz"
allowUpdates: true
makeLatest: true
makeLatest: ${{env.MAKE_LATEST}} # if it's a feat branch is not considered the latest build
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
repo: RetroDECK-cooker
continue-on-error: true
@ -131,3 +149,4 @@ jobs:
name: retrodeck-flatpak
path: RetroDECK-cooker.flatpak
continue-on-error: true

View file

@ -9,14 +9,11 @@ build:
os: ubuntu-22.04
tools:
python: "3.11"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: wiki-rtd/conf.py
mkdocs:
configuration: wiki-rtd/mkdocs.yml
fail_on_warning: false
# Optionally build your docs in additional formats such as PDF and ePub
formats:
@ -27,5 +24,5 @@ formats:
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
install:
- requirements: wiki-rtd/requirements.txt

View file

@ -1,7 +1,6 @@
# The proper format for this file is
# ACTION^PLACEHOLDERTEXT^URL^REPO(Optional)
# hash^DOOMSHAPLACEHOLDER^https://buildbot.libretro.com/assets/cores/DOOM/Doom%20%28Shareware%29.zip
hash^VITASHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
hash^DUCKSTATIONSHAPLACEHOLDER^https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage
hash^SAMEDUCKSHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/sameduck_libretro.so.zip
hash^PPSSPPBIOSHASHPLACEHOLDER^https://github.com/hrydgard/ppsspp/archive/refs/heads/master.zip

View file

@ -4,7 +4,7 @@
git config --global protocol.file.allow always
if [ "${GITHUB_REF##*/}" = "main" ]; then
if [[ "${GITHUB_REF##*/}" == "main" ]]; then
BUNDLE_NAME="RetroDECK.flatpak"
FOLDER=retrodeck-flatpak-cooker
else
@ -12,13 +12,12 @@ else
FOLDER=retrodeck-flatpak-cooker
fi
mkdir -vp ${GITHUB_WORKSPACE}/local
mkdir -vp ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker
mkdir -vp "${GITHUB_WORKSPACE}"/{local,retrodeck-flatpak-cooker}
flatpak-builder --user --force-clean \
--install-deps-from=flathub \
--install-deps-from=flathub-beta \
--repo=${GITHUB_WORKSPACE}/local \
--repo="${GITHUB_WORKSPACE}/local" \
--download-only \
${GITHUB_WORKSPACE}/"$FOLDER" \
"${GITHUB_WORKSPACE}/${FOLDER}" \
net.retrodeck.retrodeck.yml

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,16 @@
There is the possibility to provide custom emutlators provided by the user.
At the moment the only one available is Yuzu.
Place your custom Yuzu files (AppImage and such) in the custom/yuzu folder without any other subfolders, like in the example:
retrodeck/customs/yuzu/yuzu*.AppImage
WARNINGS on custom emulators:
- Custom emulators are self managed: means that RetroDECK Team is not supporting nor troubleshooting them.
- Custom emulators could potentially break other included emulators configs: use them at your own risk.
- Remember to make the binary executable, otherwise they won't be launched.
- Hotkeys might not be working if not configured by the users.
Related wiki article can be found here:
---
The RetroDECK Team

View file

@ -0,0 +1,19 @@
Please note that the PSVita support is still experimental, and for the way Vita3K is working the automation is limited.
In order to install a PSVita games is needed to:
- Install a game opening the Vita3K emulator via Configurator, the supported formats are pkg, zip, vpk.
- Upon installation the zRIF may be asked, it's different for each game, you can find it via web search.
- Install DLCs and patches in the same way.
- Create an empty file in roms/psvita/gamename.psvita, please mind the .psvita extension. For example: roms/psvita/WipEout 2048 (EU).psvita.
- Edit the empty file adding the game Title ID (more below).
- The game should appear in the game list after RetroDECK is re-opened.
How to find a title ID
It can be found inside the Vita3K GUI in the Title ID column, or found via web search.
For example the game WipEout 2048 (EU) has an ID that is PCSF00007.
So simply add PCSF00007 to the WipEout 2048 (EU).psvita file and the setup for this game is complete.
Related wiki article can be found here:
--
The RetroDECK Team

View file

@ -16,3 +16,9 @@ how-to-install-PCSX2-textures.txt^$texture_packs_folder/PCSX2
how-to-install-Mupen64Plus-textures.txt^$texture_packs_folder/RetroArch-Mupen64Plus/cache
how-to-install-Mupen64Plus-textures.txt^$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture
how-to-install-Duckstation-textures.txt^$texture_packs_folder/Duckstation
# customs
how-to-install-custom-emulators.txt^$rdhome/customs
# emulators
how-to-install-psvita-games.txt^$roms_folder/psvita

View file

@ -12,5 +12,6 @@ ppsspp^PPSSPP (Sony PSP Standalone Emulator)
primehack^Primehack (Metroid Prime Standalone Emulator)
psx_ra^Sony Playstation (RetroArch Core)
retroarch^RetroArch (Multi-emulator Frontend)
ryujinx^Ryujinx (Nintendo Switch Standalone Emulator)
snes^Nintendo Super Nintendo
yuzu^Yuzu (Nintendo Switch Standalone Emulator)

View file

@ -1,14 +1,17 @@
{
"version": 42,
"version": 48,
"enable_file_log": true,
"backend_threading": "Auto",
"res_scale": 1,
"res_scale_custom": 1,
"max_anisotropy": -1,
"aspect_ratio": "Fixed16x9",
"anti_aliasing": "None",
"scaling_filter": "Bilinear",
"scaling_filter_level": 80,
"graphics_shaders_dump_path": "",
"logging_enable_debug": false,
"logging_enable_stub": true,
"logging_enable_stub": false,
"logging_enable_info": true,
"logging_enable_warn": true,
"logging_enable_error": true,
@ -21,20 +24,21 @@
"system_region": "Europe",
"system_time_zone": "UTC",
"system_time_offset": 0,
"docked_mode": true,
"docked_mode": false,
"enable_discord_integration": true,
"check_updates_on_start": true,
"show_confirm_exit": true,
"hide_cursor_on_idle": false,
"check_updates_on_start": false,
"show_confirm_exit": false,
"hide_cursor": 2,
"enable_vsync": true,
"enable_shader_cache": true,
"enable_texture_recompression": false,
"enable_macro_hle": true,
"enable_color_space_passthrough": false,
"enable_ptc": true,
"enable_internet_access": false,
"enable_fs_integrity_checks": true,
"fs_global_access_log_mode": 0,
"audio_backend": "SDL2",
"audio_backend": "OpenAl",
"audio_volume": 1,
"memory_manager_mode": "HostMappedUnsafe",
"expand_ram": false,
@ -58,6 +62,21 @@
"game_dirs": [
"RETRODECKHOMEDIR/roms/switch"
],
"shown_file_types": {
"nsp": true,
"pfs0": true,
"xci": true,
"nca": true,
"nro": true,
"nso": true
},
"window_startup": {
"window_size_width": 1280,
"window_size_height": 800,
"window_position_x": 0,
"window_position_y": 0,
"window_maximized": true
},
"language_code": "en_US",
"enable_custom_theme": false,
"custom_theme_path": "",
@ -67,12 +86,12 @@
"grid_size": 2,
"application_sort": 0,
"is_ascending_order": true,
"start_fullscreen": false,
"start_fullscreen": true,
"show_console": true,
"enable_keyboard": false,
"enable_mouse": false,
"hotkeys": {
"toggle_vsync": "Tab",
"toggle_vsync": "F1",
"screenshot": "F8",
"show_ui": "F4",
"pause": "F5",
@ -104,12 +123,12 @@
"deadzone_right": 0,
"range_left": 1,
"range_right": 1,
"trigger_threshold": 0,
"trigger_threshold": 0.5,
"motion": {
"motion_backend": "GamepadDriver",
"sensitivity": 100,
"gyro_deadzone": 1,
"enable_motion": false
"enable_motion": true
},
"rumble": {
"strong_rumble": 1,
@ -133,18 +152,20 @@
"button_zr": "RightTrigger",
"button_sl": "Unbound",
"button_sr": "Unbound",
"button_x": "X",
"button_x": "Y",
"button_b": "A",
"button_y": "Y",
"button_y": "X",
"button_a": "B"
},
"version": 1,
"backend": "GamepadSDL2",
"id": "0-f6790003-28de-0000-ff11-000001000000",
"controller_type": "JoyconPair",
"player_index": "Player1"
"controller_type": "Handheld",
"player_index": "Handheld"
}
],
"graphics_backend": "Vulkan",
"preferred_gpu": "0x1002_0x163F"
}
"preferred_gpu": "0x1002_0x163F",
"multiplayer_lan_interface_id": "0",
"use_hypervisor": true
}

View file

@ -0,0 +1,121 @@
---
initial-setup: true
gdbstub: false
log-active-shaders: false
log-uniforms: false
log-compat-warn: false
validation-layer: true
pstv-mode: false
show-mode: false
demo-mode: false
show-gui: false
show-info-bar: false
apps-list-grid: false
display-system-apps: true
stretch_the_display_area: false
show-live-area-screen: true
icon-size: 64
archive-log: false
backend-renderer: OpenGL
gpu-idx: 0
high-accuracy: true
resolution-multiplier: 1
disable-surface-sync: true
screen-filter: Bilinear
v-sync: true
anisotropic-filtering: 1
texture-cache: true
show-compile-shaders: true
hashless-texture-cache: false
boot-apps-full-screen: true
audio-backend: SDL
ngs-enable: true
sys-button: 1
sys-lang: 1
sys-date-format: 2
sys-time-format: 0
cpu-pool-size: 10
modules-mode: 0
delay-background: 4
delay-start: 10
background-alpha: 0.300000012
log-level: 0
cpu-backend: Dynarmic
cpu-opt: true
pref-path: RETRODECKHOMEDIR/bios/Vita3K/Vita3K/
discord-rich-presence: true
wait-for-debugger: false
color-surface-debug: false
show-touchpad-cursor: true
performance-overlay: false
perfomance-overlay-detail: 0
perfomance-overlay-position: 0
keyboard-button-select: 229
keyboard-button-start: 40
keyboard-button-up: 82
keyboard-button-right: 79
keyboard-button-down: 81
keyboard-button-left: 80
keyboard-button-l1: 20
keyboard-button-r1: 8
keyboard-button-l2: 24
keyboard-button-r2: 18
keyboard-button-l3: 9
keyboard-button-r3: 11
keyboard-button-triangle: 25
keyboard-button-circle: 6
keyboard-button-cross: 27
keyboard-button-square: 29
keyboard-leftstick-left: 4
keyboard-leftstick-right: 7
keyboard-leftstick-up: 26
keyboard-leftstick-down: 22
keyboard-rightstick-left: 13
keyboard-rightstick-right: 15
keyboard-rightstick-up: 12
keyboard-rightstick-down: 14
keyboard-button-psbutton: 19
keyboard-gui-toggle-gui: 10
keyboard-gui-fullscreen: 68
keyboard-gui-toggle-touch: 23
user-id: 00
user-auto-connect: true
dump-textures: false
display-info-message: true
show-welcome: false
asia-font-support: false
shader-cache: true
spirv-shader: false
current-ime-lang: 4
psn-status: 0
http-enable: true
http-timeout-attempts: 50
http-timeout-sleep-ms: 100
http-read-end-attempts: 10
http-read-end-sleep-ms: 250
tracy-primitive-impl: false
controller-binds:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
controller-led-color:
[]
lle-modules:
[]
ime-langs:
- 4
tracy-advanced-profiling-modules:
[]
...

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<user id="00" name="RetroDECK">
<avatar>/app/retrodeck/retrodeck.png</avatar>
<sort-apps-list type="4" state="1" />
<theme use-background="true">
<content-id>default</content-id>
</theme>
<start-screen type="default">
<path></path>
</start-screen>
<backgrounds />
</user>

View file

@ -721,21 +721,16 @@
<emulator name="RYUJINX">
<!-- Nintendo Switch emulator Ryujinx -->
<rule type="systempath">
<entry>Ryujinx</entry>
<entry>Ryujinx.Ava</entry>
<entry>Ryujinx.sh</entry>
<entry>org.ryujinx.Ryujinx</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.ryujinx.Ryujinx</entry>
<entry>~/.local/share/flatpak/exports/bin/org.ryujinx.Ryujinx</entry>
<entry>~/Applications/publish/Ryujinx</entry>
<entry>~/.local/share/applications/publish/Ryujinx</entry>
<entry>~/.local/bin/publish/Ryujinx</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>
<entry>~/Applications/publish/Ryujinx.sh</entry>
<entry>~/.local/share/applications/publish/Ryujinx.sh</entry>
<entry>~/.local/bin/publish/Ryujinx.sh</entry>
<entry>~/bin/publish/Ryujinx.sh</entry>
</rule>
</emulator>
<emulator name="SAMEBOY">
@ -1025,6 +1020,12 @@
<entry>~/.local/share/flatpak/exports/bin/org.yuzu_emu.yuzu</entry>
</rule>
</emulator>
<emulator name="YUZU-CUSTOM">
<!-- Nintendo Switch emulator Yuzu Custom provided by the user -->
<rule type="staticpath">
<entry>~/retrodeck/customs/yuzu/yuzu*.AppImage</entry>
</rule>
</emulator>
<emulator name="ZESARUX">
<!-- Sinclair ZX Spectrum emulator ZEsarUX -->
<rule type="systempath">
@ -1037,4 +1038,4 @@
<entry>~/bin/ZEsarUX/zesarux</entry>
</rule>
</emulator>
</ruleList>
</ruleList>

View file

@ -96,19 +96,19 @@
<platform>android</platform>
<theme>android</theme>
</system>
<!--
<system>
<name>apple2</name>
<fullname>Apple II</fullname>
<path>%ROMPATH%/apple2</path>
<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="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module apple2 %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="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2 apple2e -flop1 %ROM%</command>
<platform>apple2</platform>
<theme>apple2</theme>
</system>
-->
<system>
<name>apple2gs</name>
<fullname>Apple IIGS</fullname>
@ -119,6 +119,7 @@
<platform>apple2gs</platform>
<theme>apple2gs</theme>
</system>
<system>
<name>arcade</name>
<fullname>Arcade</fullname>
@ -141,7 +142,7 @@
<platform>arcade</platform>
<theme>arcade</theme>
</system>
<!--
<system>
<name>arcadia</name>
<fullname>Emerson Arcadia 2001</fullname>
@ -152,7 +153,6 @@
<platform>arcadia</platform>
<theme>arcadia</theme>
</system>
-->
<!--
<system>
<name>archimedes</name>
@ -295,7 +295,7 @@
<platform>arcade</platform>
<theme>atomiswave</theme>
</system>
<!--
<system>
<name>bbcmicro</name>
<fullname>Acorn Computers BBC Micro</fullname>
@ -305,7 +305,7 @@
<platform>bbcmicro</platform>
<theme>bbcmicro</theme>
</system>
-->
<system>
<name>c64</name>
<fullname>Commodore 64</fullname>
@ -368,7 +368,7 @@
<platform>channelf</platform>
<theme>channelf</theme>
</system>
<!--
<system>
<name>coco</name>
<fullname>Tandy Color Computer</fullname>
@ -379,7 +379,7 @@
<platform>coco</platform>
<theme>coco</theme>
</system>
-->
<system>
<name>colecovision</name>
<fullname>Coleco ColecoVision</fullname>
@ -420,7 +420,7 @@
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps %BASENAME%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
@ -439,7 +439,7 @@
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps1 %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps1 %BASENAME%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
@ -456,7 +456,7 @@
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps2 %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps2 %BASENAME%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
@ -473,7 +473,7 @@
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps3 %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cps3 %BASENAME%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
@ -481,7 +481,7 @@
<platform>arcade</platform>
<theme>cps3</theme>
</system>
<!--
<system>
<name>crvision</name>
<fullname>VTech CreatiVision</fullname>
@ -492,7 +492,7 @@
<platform>crvision</platform>
<theme>crvision</theme>
</system>
-->
<!--
<system>
<name>daphne</name>
@ -718,12 +718,12 @@
<path>%ROMPATH%/gameandwatch</path>
<extension>.mgw .MGW .7z .7Z .zip .ZIP</extension>
<!-- <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>
<platform>gameandwatch</platform>
<theme>gameandwatch</theme>
</system>
<!--
<system>
<name>gamecom</name>
<fullname>Tiger Electronics Game.com</fullname>
@ -734,7 +734,7 @@
<platform>gamecom</platform>
<theme>gamecom</theme>
</system>
-->
<system>
<name>gamegear</name>
<fullname>Sega Game Gear</fullname>
@ -835,7 +835,7 @@
<platform>genesis</platform>
<theme>genesis</theme>
</system>
<!--
<system>
<name>gmaster</name>
<fullname>Hartung Game Master</fullname>
@ -846,7 +846,7 @@
<platform>gmaster</platform>
<theme>gmaster</theme>
</system>
-->
<system>
<name>gx4000</name>
<fullname>Amstrad GX4000</fullname>
@ -854,7 +854,7 @@
<extension>.bin .BIN .cdt .CDT .cpr .CPR .dsk .DSK .kcr .KCR .m3u .M3U .sna .SNA .tap .TAR .voc .VOC .7z .7Z .zip .ZIP</extension>
<command label="Caprice32">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/cap32_libretro.so %ROM%</command>
<command label="CrocoDS">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/crocods_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gx4000 gx4000 -cart %ROM%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gx4000 gx4000 -cart %ROM%</command>
<platform>gx4000</platform>
<theme>gx4000</theme>
</system>
@ -905,7 +905,7 @@
<path>%ROMPATH%/lcdgames</path>
<extension>.mgw .MGW .7z .7Z .zip .ZIP</extension>
<!-- <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>
<platform>lcdgames, gameandwatch</platform>
<theme>lcdgames</theme>
@ -939,7 +939,7 @@
<command label="MAME 2010">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2010_libretro.so %ROM%</command>
<command label="MAME 2003-Plus">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2003_plus_libretro.so %ROM%</command>
<command label="MAME 2000">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame2000_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/mame %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/mame %BASENAME%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<command label="FB Alpha 2012">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbalpha2012_libretro.so %ROM%</command>
@ -1035,12 +1035,14 @@
<platform>mess</platform>
<theme>mess</theme>
</system>
<system>
<name>model2</name>
<fullname>Sega Model 2</fullname>
<path>%ROMPATH%/model2</path>
<extension>.7z .7Z .zip .ZIP</extension>
<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%/model2 %BASENAME%</command>
<!--<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/model2 %BASENAME%</command>-->
<!--<command label="Model 2 Emulator (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_M2EMULATOR-WINDOWS% %BASENAME%</command>-->
<!--<command label="Model 2 Emulator (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_M2EMULATOR-WINDOWS% %BASENAME%</command>-->
@ -1234,7 +1236,7 @@
<extension>.7z .7Z .zip .ZIP</extension>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% -fullscreen %BASENAME%</command> -->
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeo %BASENAME%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeo %BASENAME%</command>
<platform>neogeo</platform>
<theme>neogeo</theme>
</system>
@ -1246,7 +1248,7 @@
<command label="NeoCD">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/neocd_libretro.so %ROM%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% --subsystem neocd -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% neocdz -fullscreen -cd %ROM%</command> -->
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeocd neocdz -cdrm %ROM%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeocd neocdz -cdrm %ROM%</command>
<platform>neogeocd</platform>
<theme>neogeocd</theme>
</system>
@ -1258,7 +1260,7 @@
<command label="NeoCD">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/neocd_libretro.so %ROM%</command>
<command label="FinalBurn Neo">%EMULATOR_RETROARCH% --subsystem neocd -L %CORE_RETROARCH%/fbneo_libretro.so %ROM%</command>
<!-- <command label="FinalBurn Neo (Standalone)">%EMULATOR_FINALBURN-NEO% neocdz -fullscreen -cd %ROM%</command> -->
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeocdjp neocdz -cdrm %ROM%</command> -->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/neogeocdjp neocdz -cdrm %ROM%</command>
<platform>neogeocd</platform>
<theme>neogeocdjp</theme>
</system>
@ -1495,7 +1497,7 @@
<platform>psp</platform>
<theme>psp</theme>
</system>
<!--
<system>
<name>psvita</name>
<fullname>Sony PlayStation Vita</fullname>
@ -1505,7 +1507,7 @@
<platform>psvita</platform>
<theme>psvita</theme>
</system>
-->
<system>
<name>psx</name>
<fullname>Sony PlayStation</fullname>
@ -1520,7 +1522,7 @@
<platform>psx</platform>
<theme>psx</theme>
</system>
<!--
<system>
<name>pv1000</name>
<fullname>Casio PV-1000</fullname>
@ -1530,7 +1532,7 @@
<platform>pv1000</platform>
<theme>pv1000</theme>
</system>
-->
<system>
<name>quake</name>
<fullname>Quake</fullname>
@ -1611,7 +1613,7 @@
<platform>scummvm</platform>
<theme>scummvm</theme>
</system>
<!--
<system>
<name>scv</name>
<fullname>Epoch Super Cassette Vision</fullname>
@ -1622,7 +1624,7 @@
<platform>scv</platform>
<theme>scv</theme>
</system>
-->
<system>
<name>sega32x</name>
<fullname>Sega Mega Drive 32X</fullname>
@ -1746,7 +1748,7 @@
<platform>snes</platform>
<theme>snesna</theme>
</system>
<!--
<system>
<name>solarus</name>
<fullname>Solarus Game Engine</fullname>
@ -1756,7 +1758,7 @@
<platform>solarus</platform>
<theme>solarus</theme>
</system>
-->
<system>
<name>spectravideo</name>
<fullname>Spectravideo</fullname>
@ -1841,7 +1843,8 @@
<path>%ROMPATH%/switch</path>
<extension>.nca .NCA .nro .NRO .nso .NSO .nsp .NSP .xci .XCI</extension>
<command label="Yuzu (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_YUZU% -f -g %ROM%</command>
<!-- <command label="Ryujinx (Standalone)">%EMULATOR_RYUJINX% %ROM%</command> -->
<command label="Ryujinx (Standalone)">%EMULATOR_RYUJINX% %ROM%</command>
<command label="Yuzu (User provided)">%INJECT%=%BASENAME%.esprefix %EMULATOR_YUZU-CUSTOM% -f -g %ROM%</command>
<platform>switch</platform>
<theme>switch</theme>
</system>
@ -1892,7 +1895,7 @@
<platform>pcenginecd</platform>
<theme>tg-cd</theme>
</system>
<!--
<system>
<name>ti99</name>
<fullname>Texas Instruments TI-99</fullname>
@ -1902,7 +1905,7 @@
<platform>ti99</platform>
<theme>ti99</theme>
</system>
-->
<system>
<name>tic80</name>
<fullname>TIC-80 Game Engine</fullname>
@ -2013,7 +2016,7 @@
<theme>vpinball</theme>
</system>
-->
<!--
<system>
<name>vsmile</name>
<fullname>VTech V.Smile</fullname>
@ -2024,7 +2027,7 @@
<platform>vsmile</platform>
<theme>vsmile</theme>
</system>
-->
<system>
<name>wasm4</name>
<fullname>WASM-4 Fantasy Console</fullname>
@ -2091,7 +2094,7 @@
<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>
<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>
<theme>x68000</theme>
</system>

View file

@ -467,7 +467,7 @@ install_retrodeck_controller_profile() {
# USAGE: install_retrodeck_controller_profile
if [[ -d "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/" && -d "$HOME/.steam/steam/controller_base/templates/" ]]; then
rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/"
cp -f "$emuconfigs/defaults/retrodeck/RetroDECK_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf"
cp -f "$emuconfigs/defaults/retrodeck/controller_configs/*.vdf" "$HOME/.steam/steam/controller_base/templates"
else
configurator_generic_dialog "RetroDECK Controller Profile Install" "The target directories for the controller profile do not exist.\n\nThis may happen if you do not have Steam installed or the location is does not have permission to be read."
fi

View file

@ -244,8 +244,7 @@ post_update() {
fi
if [[ -f "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf" ]]; then # If RetroDECK controller profile has been previously installed
cp -f "$emuconfigs/defaults/retrodeck/RetroDECK_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf"
rsync -rlD --mkpath "/app/retrodeck/binding_icons/" "$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/"
install_retrodeck_controller_profile
fi
update_splashscreens

View file

@ -539,32 +539,32 @@ prepare_emulator() {
fi
fi
# if [[ "$emulator" =~ ^(ryujunx|Ryujinx|all)$ ]]; then
# if [[ "$action" == "reset" ]]; then # Run reset-only commands
# echo "------------------------"
# echo "Initializing RYUJINX"
# echo "------------------------"
# if [[ $multi_user_mode == "true" ]]; then
# rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
# mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
# 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"
# dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx"
# else
# # removing config directory to wipe legacy files
# rm -rf /var/config/Ryujinx
# mkdir -p /var/config/Ryujinx/system
# cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
# sed -i 's#/home/deck/retrodeck#'$rdhome'#g' "$ryujinxconf"
# fi
# fi
# if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves
# dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system"
# fi
# if [[ "$action" == "postmove" ]]; then # Run only post-move commands
# sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON
# fi
# fi
if [[ "$emulator" =~ ^(ryujunx|Ryujinx|all)$ ]]; then
if [[ "$action" == "reset" ]]; then # Run reset-only commands
echo "------------------------"
echo "Initializing RYUJINX"
echo "------------------------"
if [[ $multi_user_mode == "true" ]]; then
rm -rf "$multi_user_data_folder/$SteamAppUser/config/Ryujinx"
mkdir -p "$multi_user_data_folder/$SteamAppUser/config/Ryujinx/system"
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"
dir_prep "$multi_user_data_folder/$SteamAppUser/config/Ryujinx" "/var/config/Ryujinx"
else
# removing config directory to wipe legacy files
rm -rf /var/config/Ryujinx
mkdir -p /var/config/Ryujinx/system
cp -fv $emuconfigs/ryujinx/* /var/config/Ryujinx
sed -i 's#/home/deck/retrodeck#'$rdhome'#g' "$ryujinxconf"
fi
fi
if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves
dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system"
fi
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "$ryujinxconf" # This is an unfortunate one-off because set_setting_value does not currently support JSON
fi
fi
if [[ "$emulator" =~ ^(xemu|XEMU|all)$ ]]; then
if [[ "$action" == "reset" ]]; then # Run reset-only commands
@ -642,6 +642,7 @@ prepare_emulator() {
dir_prep "$logs_folder/yuzu" "/var/data/yuzu/log"
dir_prep "$screenshots_folder" "/var/data/yuzu/screenshots"
dir_prep "$mods_folder/Yuzu" "/var/data/yuzu/load"
mkdir -pv "$rdhome/customs/yuzu"
# removing dead symlinks as they were present in a past version
if [ -d $bios_folder/switch ]; then
find $bios_folder/switch -xtype l -exec rm {} \;
@ -666,6 +667,53 @@ prepare_emulator() {
fi
fi
if [[ "$emulator" =~ ^(vita3k|Vita3K|all)$ ]]; then
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
echo "----------------------"
echo "Initializing Vita3K"
echo "----------------------"
# extracting the emulator
# NOTE: the emulator is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
rm -rf "/var/data/Vita3K"
mkdir -p "/var/data/Vita3K"
unzip "/app/retrodeck/vita3k.zip" -d "/var/data/Vita3K"
chmod +x "/var/data/Vita3K/Vita3K"
rm -f "/var/data/Vita3K/update-vita3k.sh"
# copying config file
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K"
# TODO: this step is to be done properly: Replacing RETRODECKHOMEDIR placeholder
sed -i 's#RETRODECKHOMEDIR#'$rdhome'#g' "/var/data/Vita3K/config.yml"
# copying vita user config
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K"
# prep saves folder
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata"
# Installing firmware
# TODO: at the moment this is here instead of a tool because it seems like it cannot run without Firmware
curl "http://dus01.psv.update.playstation.net/update/psv/image/2022_0209/rel_f2c7b12fe85496ec88a0391b514d6e3b/PSVUPDAT.PUP" -po /tmp/PSVUPDAT.PUP
curl "http://dus01.psp2.update.playstation.net/update/psp2/image/2019_0924/sd_8b5f60b56c3da8365b973dba570c53a5/PSP2UPDAT.PUP?dest=us" -po /tmp/PSP2UPDAT.PUP
Vita3K --firmware /tmp/PSVUPDAT.PUP
Vita3K --firmware /tmp/PSP2UPDAT.PUP
fi
if [[ "$emulator" =~ ^(mame|MAME|all)$ ]]; then
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
echo "----------------------"
echo "Initializing MAME"
echo "----------------------"
mkdir -p "/var/config/mame"
mkdir -p "$emuconfigs/mame/**" "/var/config/mame"
fi
# Update presets for all emulators after any reset or move
if [[ ! "$emulator" == "retrodeck" ]]; then
build_retrodeck_current_presets

View file

@ -0,0 +1,435 @@
"""Sync RetroDECK favorites games with steam shortcuts"""
import binascii
import os
import re
import shlex
import shutil
import glob
import vdf
import sys
import xml.etree.ElementTree as ET
command_list_default={
"3do": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so",
"amiga": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"amiga1200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"amiga600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"amigacd32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"amstradcpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
"arcade": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"arduboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so",
"astrocde": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"atari2600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so",
"atari5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so",
"atari7800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so",
"atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
"atarijaguar": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so",
"atarijaguarcd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so",
"atarilynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so",
"atarist": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so",
"atarixe": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
"atomiswave": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
"c64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so",
"cavestory": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so",
"cdimono1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so",
"cdtv": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"chailove": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so",
"channelf": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so",
"colecovision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"cps": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"cps1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"cps2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"cps3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"doom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so",
"dos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so",
"dreamcast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
"easyrpg": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so",
"famicom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
"fba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so",
"fbneo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
"fds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
"gameandwatch": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so",
"gamegear": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"gb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
"gba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
"gbc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
"genesis": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"gx4000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
"intellivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so",
"j2me": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so",
"lcdgames": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so",
"lutro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so",
"mame": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"mastersystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"megacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"megacdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"megadrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"megaduck": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so",
"mess": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so",
"model2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"moto": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so",
"msx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"msx1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"msx2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"msxturbor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"multivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so",
"n64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so",
"n64dd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so",
"naomi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
"naomigd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
"nds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so",
"neogeo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
"neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
"neogeocdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
"nes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
"ngp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
"ngpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
"odyssey2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so",
"palm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so",
"pc88": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so",
"pc98": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so",
"pcengine": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
"pcenginecd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
"pcfx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so",
"pokemini": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so",
"psx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so",
"quake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so",
"satellaview": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
"saturnjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
"scummvm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so",
"sega32x": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
"sega32xjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
"sega32xna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
"segacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"sfc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"sg-1000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"sgb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so",
"snes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"snesna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"spectravideo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"sufami": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"supergrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so",
"supervision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so",
"tg16": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
"tg-cd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
"tic80": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so",
"to8": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so",
"uzebox": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so",
"vectrex": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so",
"vic20": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so",
"videopac": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so",
"virtualboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so",
"wasm4": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so",
"wonderswan": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so",
"wonderswancolor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so",
"x1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so",
"x68000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so",
"zx81": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so",
"zxspectrum": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so",
"switch": "flatpak run --command=yuzu net.retrodeck.retrodeck -f -g",
"n3ds": "flatpak run --command=citra net.retrodeck.retrodeck",
"ps2": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch",
"wiiu": "flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g",
"gc": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
"wii": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
"xbox": "flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path",
"ps3": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui",
"psp": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck",
"pico8": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run"
}
alt_command_list={
"PUAE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
"Caprice32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"Stella": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so",
"a5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so",
"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
"Handy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so",
"VICE x64sc Accurate": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so",
"SAME CDi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so",
"blueMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
"PrBoom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so",
"DOSBox-Pure": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so",
"Mesen": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
"Genesis Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
"Gamebatte": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
"ParaLLEI N64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so",
"DeSmuME": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so",
"NeoCD": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
"Beetle NeoPop": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
"Neko Project II Kai": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so",
"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
"Swanstation": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so",
"TyrQuake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so",
"Beetle Saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
"Snes 9x - Current": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
"Beetle SuperGrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so",
"Yuzu (Standalone)": "flatpak run --command=yuzu net.retrodeck.retrodeck -f -g",
"Citra (Standalone)": "flatpak run --command=citra net.retrodeck.retrodeck",
"PCSX2 (Standalone)": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch",
"Dolphin (Standalone)": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
"RPCS3 Directory (Standalone)": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui",
"PPSSPP (Standalone)": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck",
"PICO-8 (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run",
"PUAE 2021": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so",
"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so",
"CPCemu (Standalone)": "NYI", #NYI
"MAME 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so",
"MAME 2003-Plus": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so",
"MAME 2000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so",
"MAME (Standalone)": "NYI", #NYI
"FinalBurn Neo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
"FinalBurn Neo (Standalone)": "NYI", #NYI
"FB Alpha 2012": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so",
"Flycast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
"Flycast (Standalone)": "NYI", #NYI
"Kronos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so",
"Supermodel (Standalone)": "NYI", #NYI
"Supermodel [Fullscreen] (Standalone)": "NYI", #NYI
"Shortcut or script": "TODO: I have to catch how it works", #TODO
"Atari800 (Standalone)": "NYI", #NYI
"Stella 2014": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so",
"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
"Beetle Lynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so",
"VICE x64 Fast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so",
"VICE x64 SuperCPU": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so",
"VICE x128": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so",
"Frodo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so",
"CDi 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so",
"Gearcoleco": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so",
"FB Alpha 2012 CPS-1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so",
"FB Alpha 2012 CPS-2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so",
"FB Alpha 2012 CPS-3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so",
"Boom 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so",
"Boom 3 xp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so",
"DOSBox-Core": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so",
"DOSBox-SVN": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so",
"Keep ES-DE running": "TODO: I have to catch how it works", #TODO
"AppImage (Suspend ES-DE)": "TODO: I have to catch how it works", #TODO
"AppImage (Keep ES-DE running)": "TODO: I have to catch how it works", #TODO
"Nestopia UE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so",
"FCEUmm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so",
"QuickNES": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so",
"Genesis Plus GX Wide": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so",
"Gearsystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so",
"SMS Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so",
"SameBoy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so",
"Gearboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so",
"TGB Dual": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so",
"Mesen-S": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so",
"VBA-M": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so",
"bsnes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so",
"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
"VBA Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so",
"gpSP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so",
"Dolphin": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so",
"PrimeHack (Standalone)": "flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e",
"PicoDrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
"BlastEm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so",
"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so",
"fMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so",
"Citra": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so",
"Citra 2018": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so",
"Mupen64Plus-Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so",
"DeSmuME 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so",
"melonDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so",
"melonDS (Standalone)": "flatpak run --command=melonDS net.retrodeck.retrodeck",
"FinalBurn Neo neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so",
"RACE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so",
"Neko Project II": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so",
"Beetle PCE FAST": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so",
"PICO-8 Splore (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore",
"AppImage": "TODO: I have to catch how it works", #TODO
"LRPS2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so",
"PCSX2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so",
"RPCS3 Shortcut (Standalone)": "TODO: I have to catch how it works", #TODO
"PPSSPP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so",
"Beetle PSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so",
"Beetle PSX HW": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so",
"PCSX ReARMed": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so",
"DuckStation (Standalone)": "flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch",
"vitaQuake 2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so",
"vitaQuake 2 [Rogue]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so",
"vitaQuake 2 [Xatrix]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so",
"vitaQuake 2 [Zaero]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so",
"vitaQuake 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so",
"YabaSanshiro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so",
"Yabause": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so",
"Snes9x 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so",
"bsnes-hd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so",
"bsnes-mercury Accuracy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so",
"Beetle Supafaust": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so",
"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so"
}
STEAM_DATA_DIRS = (
"~/.steam/debian-installation",
"~/.steam",
"~/.local/share/steam",
"~/.local/share/Steam",
"~/.steam/steam",
"~/.var/app/com.valvesoftware.Steam/data/steam",
"~/.var/app/com.valvesoftware.Steam/data/Steam",
"/usr/share/steam",
"/usr/local/share/steam",
)
def create_shortcut(games, launch_config_name=None):
shortcut_path = get_shortcuts_vdf_path()
if os.path.exists(shortcut_path):
with open(shortcut_path, "rb") as shortcut_file:
shortcuts = vdf.binary_loads(shortcut_file.read())['shortcuts'].values()
else:
shortcuts = []
old_shortcuts=[]
for shortcut in shortcuts:
if "net.retrodeck.retrodeck" in shortcut["Exe"]:
keep=False
for game in games:
gameid=generate_shortcut_id(game[0])
if gameid==shortcut["appid"]:
shortcut["Exe"]=game[1]
game[0]="###"
keep=True
break
if keep:
old_shortcuts.append(shortcut)
else:
old_shortcuts.append(shortcut)
new_shortcuts=[]
for game in games:
if not game[0]=="###":
new_shortcuts=new_shortcuts+[generate_shortcut(game, launch_config_name)]
shortcuts = list(old_shortcuts) + list(new_shortcuts)
updated_shortcuts = {
'shortcuts': {
str(index): elem for index, elem in enumerate(shortcuts)
}
}
with open(shortcut_path, "wb") as shortcut_file:
shortcut_file.write(vdf.binary_dumps(updated_shortcuts))
def get_config_path():
config_paths = search_recursive_in_steam_dirs("userdata/**/config/")
if not config_paths:
return None
return config_paths[0]
def get_shortcuts_vdf_path():
config_path = get_config_path()
if not config_path:
return None
return os.path.join(config_path, "shortcuts.vdf")
def search_recursive_in_steam_dirs(path_suffix):
"""Perform a recursive search based on glob and returns a
list of hits"""
results = []
for candidate in STEAM_DATA_DIRS:
glob_path = os.path.join(os.path.expanduser(candidate), path_suffix)
for path in glob.glob(glob_path):
results.append(path)
return results
def generate_shortcut(game, launch_config_name):
return {
'appid': generate_shortcut_id(game[0]),
'appname': f'{game[0]}',
'Exe': f'{game[1]}',
'StartDir': f'{os.path.expanduser("~")}',
'icon': "",
'LaunchOptions': "",
'IsHidden': 0,
'AllowDesktopConfig': 1,
'AllowOverlay': 1,
'OpenVR': 0,
'Devkit': 0,
'DevkitOverrideAppID': 0,
'LastPlayTime': 0,
}
def generate_preliminary_id(name):
unique_id = ''.join(["RetroDECK", name])
top = binascii.crc32(str.encode(unique_id, 'utf-8')) | 0x80000000
return (top << 32) | 0x02000000
def generate_shortcut_id(name):
return (generate_preliminary_id(name) >> 32) - 0x100000000
def addToSteam():
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()
games=[]
command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8")
alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8")
for system in os.listdir(rdhome+"/gamelists/"):
print("Start parsing system: {}".format(system))
f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r")
f.readline()
parser=ET.XMLParser()
parser.feed(b'<root>')
parser.feed(f.read())
parser.feed(b'</root>')
root=parser.close()
f.close()
globalAltEmu=""
for subroot in root:
if subroot.tag=="alternativeEmulator":
for alt in subroot:
globalAltEmu=alt.text
else:
for game in subroot:
path=""
name=""
favorite=""
altemulator=globalAltEmu
for tag in game:
if tag.tag=="path":
path=tag.text
elif tag.tag=="name":
name=tag.text
elif tag.tag=="favorite":
favorite=tag.text
elif tag.tag=="altemulator":
altemulator=tag.text
if favorite=="true" and altemulator=="":
print("Find favorite game: {}".format(name))
games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"])
elif favorite=="true":
print("Find favorite game with alternative emulator: {}, {}".format(name,altemulator))
if ("neogeocd" in system) and altemulator=="FinalBurn Neo":
games.append([name,alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'"])
print(alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'")
elif system=="pico8" and altemulator=="PICO-8 Splore (Standalone)":
games.append([name,alt_command_list[altemulator]])
print(alt_command_list[altemulator])
else:
games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"])
print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'")
create_shortcut(games)
if __name__=="__main__":
addToSteam()

View file

@ -0,0 +1,467 @@
"""
Module for deserializing/serializing to and from VDF
https://github.com/ValvePython/vdf
MIT License
"""
# pylint: disable=raise-missing-from
__version__ = "3.2"
__author__ = "Rossen Georgiev"
import re
import struct
from binascii import crc32
from io import StringIO as unicodeIO
string_type = str
int_type = int
BOMS = '\ufffe\ufeff'
def strip_bom(line):
return line.lstrip(BOMS)
# string escaping
_unescape_char_map = {
r"\n": "\n",
r"\t": "\t",
r"\v": "\v",
r"\b": "\b",
r"\r": "\r",
r"\f": "\f",
r"\a": "\a",
r"\\": "\\",
r"\?": "?",
r"\"": "\"",
r"\'": "\'",
}
_escape_char_map = {v: k for k, v in _unescape_char_map.items()}
def _re_escape_match(m):
return _escape_char_map[m.group()]
def _re_unescape_match(m):
return _unescape_char_map[m.group()]
def _escape(text):
return re.sub(r"[\n\t\v\b\r\f\a\\\?\"']", _re_escape_match, text)
def _unescape(text):
return re.sub(r"(\\n|\\t|\\v|\\b|\\r|\\f|\\a|\\\\|\\\?|\\\"|\\')", _re_unescape_match, text)
# parsing and dumping for KV1
def parse(fp, mapper=dict, merge_duplicate_keys=True, escaped=True):
"""
Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a VDF)
to a Python object.
``mapper`` specifies the Python object used after deserializetion. ``dict` is
used by default. Alternatively, ``collections.OrderedDict`` can be used if you
wish to preserve key order. Or any object that acts like a ``dict``.
``merge_duplicate_keys`` when ``True`` will merge multiple KeyValue lists with the
same key into one instead of overwriting. You can se this to ``False`` if you are
using ``VDFDict`` and need to preserve the duplicates.
"""
if not issubclass(mapper, dict):
raise TypeError("Expected mapper to be subclass of dict, got %s" % type(mapper))
if not hasattr(fp, 'readline'):
raise TypeError("Expected fp to be a file-like object supporting line iteration")
lineno = 0
stack = [mapper()]
expect_bracket = False
re_keyvalue = re.compile(r'^("(?P<qkey>(?:\\.|[^\\"])+)"|(?P<key>#?[a-z0-9\-\_\\\?]+))'
r'([ \t]*('
r'"(?P<qval>(?:\\.|[^\\"])*)(?P<vq_end>")?'
r'|(?P<val>[a-z0-9\-\_\\\?\*\.]+)'
r'))?',
flags=re.I)
for lineno, line in enumerate(fp, 1):
if lineno == 1:
line = strip_bom(line)
line = line.lstrip()
# skip empty and comment lines
if line == "" or line[0] == '/':
continue
# one level deeper
if line[0] == "{":
expect_bracket = False
continue
if expect_bracket:
raise SyntaxError("vdf.parse: expected openning bracket",
(getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 1, line))
# one level back
if line[0] == "}":
if len(stack) > 1:
stack.pop()
continue
raise SyntaxError("vdf.parse: one too many closing parenthasis",
(getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 0, line))
# parse keyvalue pairs
while True:
match = re_keyvalue.match(line)
if not match:
try:
line += next(fp)
continue
except StopIteration:
raise SyntaxError("vdf.parse: unexpected EOF (open key quote?)",
(getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 0, line))
key = match.group('key') if match.group('qkey') is None else match.group('qkey')
val = match.group('val') if match.group('qval') is None else match.group('qval')
if escaped:
key = _unescape(key)
# we have a key with value in parenthesis, so we make a new dict obj (level deeper)
if val is None:
if merge_duplicate_keys and key in stack[-1]:
_m = stack[-1][key]
else:
_m = mapper()
stack[-1][key] = _m
stack.append(_m)
expect_bracket = True
# we've matched a simple keyvalue pair, map it to the last dict obj in the stack
else:
# if the value is line consume one more line and try to match again,
# until we get the KeyValue pair
if match.group('vq_end') is None and match.group('qval') is not None:
try:
line += next(fp)
continue
except StopIteration:
raise SyntaxError("vdf.parse: unexpected EOF (open quote for value?)",
(getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 0, line))
stack[-1][key] = _unescape(val) if escaped else val
# exit the loop
break
if len(stack) != 1:
raise SyntaxError("vdf.parse: unclosed parenthasis or quotes (EOF)",
(getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 0, line))
return stack.pop()
def loads(s, **kwargs):
"""
Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
document) to a Python object.
"""
if not isinstance(s, string_type):
raise TypeError("Expected s to be a str, got %s" % type(s))
fp = unicodeIO(s)
return parse(fp, **kwargs)
def load(fp, **kwargs):
"""
Deserialize ``fp`` (a ``.readline()``-supporting file-like object containing
a JSON document) to a Python object.
"""
return parse(fp, **kwargs)
def dumps(obj, pretty=False, escaped=True):
"""
Serialize ``obj`` to a VDF formatted ``str``.
"""
if not isinstance(obj, dict):
raise TypeError("Expected data to be an instance of``dict``")
if not isinstance(pretty, bool):
raise TypeError("Expected pretty to be of type bool")
if not isinstance(escaped, bool):
raise TypeError("Expected escaped to be of type bool")
return ''.join(_dump_gen(obj, pretty, escaped))
def dump(obj, fp, pretty=False, escaped=True):
"""
Serialize ``obj`` as a VDF formatted stream to ``fp`` (a
``.write()``-supporting file-like object).
"""
if not isinstance(obj, dict):
raise TypeError("Expected data to be an instance of``dict``")
if not hasattr(fp, 'write'):
raise TypeError("Expected fp to have write() method")
if not isinstance(pretty, bool):
raise TypeError("Expected pretty to be of type bool")
if not isinstance(escaped, bool):
raise TypeError("Expected escaped to be of type bool")
for chunk in _dump_gen(obj, pretty, escaped):
fp.write(chunk)
def _dump_gen(data, pretty=False, escaped=True, level=0):
indent = "\t"
line_indent = ""
if pretty:
line_indent = indent * level
for key, value in data.items():
if escaped and isinstance(key, string_type):
key = _escape(key)
if isinstance(value, dict):
yield '%s"%s"\n%s{\n' % (line_indent, key, line_indent)
for chunk in _dump_gen(value, pretty, escaped, level + 1):
yield chunk
yield "%s}\n" % line_indent
else:
if escaped and isinstance(value, string_type):
value = _escape(value)
yield '%s"%s" "%s"\n' % (line_indent, key, value)
# binary VDF
class BASE_INT(int_type):
def __repr__(self):
return "%s(%s)" % (self.__class__.__name__, self)
class UINT_64(BASE_INT):
pass
class INT_64(BASE_INT):
pass
class POINTER(BASE_INT):
pass
class COLOR(BASE_INT):
pass
BIN_NONE = b'\x00'
BIN_STRING = b'\x01'
BIN_INT32 = b'\x02'
BIN_FLOAT32 = b'\x03'
BIN_POINTER = b'\x04'
BIN_WIDESTRING = b'\x05'
BIN_COLOR = b'\x06'
BIN_UINT64 = b'\x07'
BIN_END = b'\x08'
BIN_INT64 = b'\x0A'
BIN_END_ALT = b'\x0B'
def binary_loads(s, mapper=dict, merge_duplicate_keys=True, alt_format=False):
"""
Deserialize ``s`` (``bytes`` containing a VDF in "binary form")
to a Python object.
``mapper`` specifies the Python object used after deserializetion. ``dict` is
used by default. Alternatively, ``collections.OrderedDict`` can be used if you
wish to preserve key order. Or any object that acts like a ``dict``.
``merge_duplicate_keys`` when ``True`` will merge multiple KeyValue lists with the
same key into one instead of overwriting. You can se this to ``False`` if you are
using ``VDFDict`` and need to preserve the duplicates.
"""
if not isinstance(s, bytes):
raise TypeError("Expected s to be bytes, got %s" % type(s))
if not issubclass(mapper, dict):
raise TypeError("Expected mapper to be subclass of dict, got %s" % type(mapper))
# helpers
int32 = struct.Struct('<i')
uint64 = struct.Struct('<Q')
int64 = struct.Struct('<q')
float32 = struct.Struct('<f')
def read_string(s, idx, wide=False):
if wide:
end = s.find(b'\x00\x00', idx)
if (end - idx) % 2 != 0:
end += 1
else:
end = s.find(b'\x00', idx)
if end == -1:
raise SyntaxError("Unterminated cstring (offset: %d)" % idx)
result = s[idx:end]
if wide:
result = result.decode('utf-16')
elif bytes is not str:
result = result.decode('utf-8', 'replace')
else:
try:
result.decode('ascii')
except:
result = result.decode('utf-8', 'replace')
return result, end + (2 if wide else 1)
stack = [mapper()]
idx = 0
CURRENT_BIN_END = BIN_END if not alt_format else BIN_END_ALT
while len(s) > idx:
t = s[idx:idx + 1]
idx += 1
if t == CURRENT_BIN_END:
if len(stack) > 1:
stack.pop()
continue
break
key, idx = read_string(s, idx)
if t == BIN_NONE:
if merge_duplicate_keys and key in stack[-1]:
_m = stack[-1][key]
else:
_m = mapper()
stack[-1][key] = _m
stack.append(_m)
elif t == BIN_STRING:
stack[-1][key], idx = read_string(s, idx)
elif t == BIN_WIDESTRING:
stack[-1][key], idx = read_string(s, idx, wide=True)
elif t in (BIN_INT32, BIN_POINTER, BIN_COLOR):
val = int32.unpack_from(s, idx)[0]
if t == BIN_POINTER:
val = POINTER(val)
elif t == BIN_COLOR:
val = COLOR(val)
stack[-1][key] = val
idx += int32.size
elif t == BIN_UINT64:
stack[-1][key] = UINT_64(uint64.unpack_from(s, idx)[0])
idx += uint64.size
elif t == BIN_INT64:
stack[-1][key] = INT_64(int64.unpack_from(s, idx)[0])
idx += int64.size
elif t == BIN_FLOAT32:
stack[-1][key] = float32.unpack_from(s, idx)[0]
idx += float32.size
else:
raise SyntaxError("Unknown data type at offset %d: %s" % (idx - 1, repr(t)))
if len(s) != idx or len(stack) != 1:
raise SyntaxError("Binary VDF ended at offset %d, but length is %d" % (idx, len(s)))
return stack.pop()
def binary_dumps(obj, alt_format=False):
"""
Serialize ``obj`` to a binary VDF formatted ``bytes``.
"""
return b''.join(_binary_dump_gen(obj, alt_format=alt_format))
def _binary_dump_gen(obj, level=0, alt_format=False):
if level == 0 and len(obj) == 0:
return
int32 = struct.Struct('<i')
uint64 = struct.Struct('<Q')
int64 = struct.Struct('<q')
float32 = struct.Struct('<f')
for key, value in obj.items():
if isinstance(key, string_type):
key = key.encode('utf-8')
else:
raise TypeError("dict keys must be of type str, got %s" % type(key))
if isinstance(value, dict):
yield BIN_NONE + key + BIN_NONE
for chunk in _binary_dump_gen(value, level + 1, alt_format=alt_format):
yield chunk
elif isinstance(value, UINT_64):
yield BIN_UINT64 + key + BIN_NONE + uint64.pack(value)
elif isinstance(value, INT_64):
yield BIN_INT64 + key + BIN_NONE + int64.pack(value)
elif isinstance(value, string_type):
try:
value = value.encode('utf-8') + BIN_NONE
yield BIN_STRING
except:
value = value.encode('utf-16') + BIN_NONE * 2
yield BIN_WIDESTRING
yield key + BIN_NONE + value
elif isinstance(value, float):
yield BIN_FLOAT32 + key + BIN_NONE + float32.pack(value)
elif isinstance(value, (COLOR, POINTER, int, int_type)):
if isinstance(value, COLOR):
yield BIN_COLOR
elif isinstance(value, POINTER):
yield BIN_POINTER
else:
yield BIN_INT32
yield key + BIN_NONE
yield int32.pack(value)
else:
raise TypeError("Unsupported type: %s" % type(value))
yield BIN_END if not alt_format else BIN_END_ALT
def vbkv_loads(s, mapper=dict, merge_duplicate_keys=True):
"""
Deserialize ``s`` (``bytes`` containing a VBKV to a Python object.
``mapper`` specifies the Python object used after deserializetion. ``dict` is
used by default. Alternatively, ``collections.OrderedDict`` can be used if you
wish to preserve key order. Or any object that acts like a ``dict``.
``merge_duplicate_keys`` when ``True`` will merge multiple KeyValue lists with the
same key into one instead of overwriting. You can se this to ``False`` if you are
using ``VDFDict`` and need to preserve the duplicates.
"""
if s[:4] != b'VBKV':
raise ValueError("Invalid header")
checksum, = struct.unpack('<i', s[4:8])
if checksum != crc32(s[8:]):
raise ValueError("Invalid checksum")
return binary_loads(s[8:], mapper, merge_duplicate_keys, alt_format=True)
def vbkv_dumps(obj):
"""
Serialize ``obj`` to a VBKV formatted ``bytes``.
"""
data = b''.join(_binary_dump_gen(obj, alt_format=True))
checksum = crc32(data)
return b'VBKV' + struct.pack('<i', checksum) + data

View file

@ -0,0 +1,219 @@
# pylint: disable=no-member,unnecessary-dunder-call
from collections import Counter
_iter_values = 'values'
_range = range
_string_type = str
import collections as _c
class _kView(_c.KeysView):
def __iter__(self):
return self._mapping.iterkeys()
class _vView(_c.ValuesView):
def __iter__(self):
return self._mapping.itervalues()
class _iView(_c.ItemsView):
def __iter__(self):
return self._mapping.iteritems()
class VDFDict(dict):
def __init__(self, data=None):
"""
This is a dictionary that supports duplicate keys and preserves insert order
``data`` can be a ``dict``, or a sequence of key-value tuples. (e.g. ``[('key', 'value'),..]``)
The only supported type for key is str.
Get/set duplicates is done by tuples ``(index, key)``, where index is the duplicate index
for the specified key. (e.g. ``(0, 'key')``, ``(1, 'key')``...)
When the ``key`` is ``str``, instead of tuple, set will create a duplicate and get will look up ``(0, key)``
"""
super().__init__()
self.__omap = []
self.__kcount = Counter()
if data is not None:
if not isinstance(data, (list, dict)):
raise ValueError("Expected data to be list of pairs or dict, got %s" % type(data))
self.update(data)
def __repr__(self):
out = "%s(" % self.__class__.__name__
out += "%s)" % repr(list(self.iteritems()))
return out
def __len__(self):
return len(self.__omap)
def _verify_key_tuple(self, key):
if len(key) != 2:
raise ValueError("Expected key tuple length to be 2, got %d" % len(key))
if not isinstance(key[0], int):
raise TypeError("Key index should be an int")
if not isinstance(key[1], _string_type):
raise TypeError("Key value should be a str")
def _normalize_key(self, key):
if isinstance(key, _string_type):
key = (0, key)
elif isinstance(key, tuple):
self._verify_key_tuple(key)
else:
raise TypeError("Expected key to be a str or tuple, got %s" % type(key))
return key
def __setitem__(self, key, value):
if isinstance(key, _string_type):
key = (self.__kcount[key], key)
self.__omap.append(key)
elif isinstance(key, tuple):
self._verify_key_tuple(key)
if key not in self:
raise KeyError("%s doesn't exist" % repr(key))
else:
raise TypeError("Expected either a str or tuple for key")
super().__setitem__(key, value)
self.__kcount[key[1]] += 1
def __getitem__(self, key):
return super().__getitem__(self._normalize_key(key))
def __delitem__(self, key):
key = self._normalize_key(key)
result = super().__delitem__(key)
start_idx = self.__omap.index(key)
del self.__omap[start_idx]
dup_idx, skey = key
self.__kcount[skey] -= 1
tail_count = self.__kcount[skey] - dup_idx
if tail_count > 0:
for idx in _range(start_idx, len(self.__omap)):
if self.__omap[idx][1] == skey:
oldkey = self.__omap[idx]
newkey = (dup_idx, skey)
super().__setitem__(newkey, self[oldkey])
super().__delitem__(oldkey)
self.__omap[idx] = newkey
dup_idx += 1
tail_count -= 1
if tail_count == 0:
break
if self.__kcount[skey] == 0:
del self.__kcount[skey]
return result
def __iter__(self):
return iter(self.iterkeys())
def __contains__(self, key):
return super().__contains__(self._normalize_key(key))
def __eq__(self, other):
if isinstance(other, VDFDict):
return list(self.items()) == list(other.items())
return False
def __ne__(self, other):
return not self.__eq__(other)
def clear(self):
super().clear()
self.__kcount.clear()
self.__omap = []
def get(self, key, *args):
return super().get(self._normalize_key(key), *args)
def setdefault(self, key, default=None):
if key not in self:
self.__setitem__(key, default)
return self.__getitem__(key)
def pop(self, key):
key = self._normalize_key(key)
value = self.__getitem__(key)
self.__delitem__(key)
return value
def popitem(self):
if not self.__omap:
raise KeyError("VDFDict is empty")
key = self.__omap[-1]
return key[1], self.pop(key)
def update(self, data=None, **kwargs):
if isinstance(data, dict):
data = data.items()
elif not isinstance(data, list):
raise TypeError("Expected data to be a list or dict, got %s" % type(data))
for key, value in data:
self.__setitem__(key, value)
def iterkeys(self):
return (key[1] for key in self.__omap)
def keys(self):
return _kView(self)
def itervalues(self):
return (self[key] for key in self.__omap)
def values(self):
return _vView(self)
def iteritems(self):
return ((key[1], self[key]) for key in self.__omap)
def items(self):
return _iView(self)
def get_all_for(self, key):
""" Returns all values of the given key """
if not isinstance(key, _string_type):
raise TypeError("Key needs to be a string.")
return [self[(idx, key)] for idx in _range(self.__kcount[key])]
def remove_all_for(self, key):
""" Removes all items with the given key """
if not isinstance(key, _string_type):
raise TypeError("Key need to be a string.")
for idx in _range(self.__kcount[key]):
super().__delitem__((idx, key))
self.__omap = list(filter(lambda x: x[1] != key, self.__omap))
del self.__kcount[key]
def has_duplicates(self):
"""
Returns ``True`` if the dict contains keys with duplicates.
Recurses through any all keys with value that is ``VDFDict``.
"""
for n in getattr(self.__kcount, _iter_values)():
if n != 1:
return True
def dict_recurse(obj):
for v in getattr(obj, _iter_values)():
if isinstance(v, VDFDict) and v.has_duplicates():
return True
if isinstance(v, dict):
return dict_recurse(v)
return False
return dict_recurse(self)

View file

@ -27,6 +27,7 @@ finish-args:
- --filesystem=home
- --filesystem=/run/media
- --filesystem=/media
- --filesystem=home/.var/app/com.valvesoftware.Steam
- --allow=multiarch
- --talk-name=org.freedesktop.ScreenSaver
- --talk-name=org.freedesktop.PowerManagement.Inhibit
@ -90,7 +91,6 @@ modules:
# on cooker will be THISBRANCH
VERSION="0.7.5b"
git checkout ${GITHUB_REF_NAME}
mkdir -p ${FLATPAK_DEST}/retrodeck/
if [[ $VERSION == *"cooker"* ]];
@ -303,6 +303,20 @@ modules:
stable-only: true
url-template: https://github.com/Tencent/rapidjson/archive/refs/tags/v$version.tar.gz
# dependency of: CEMU, SOLARUS
- name: glm
buildsystem: cmake-ninja
cleanup: ['*']
no-make-install: true
post-install:
- install -d ${FLATPAK_DEST}/include
- cp -R glm ${FLATPAK_DEST}/include
- cp -R cmake/glm ${FLATPAK_DEST}/lib/cmake
sources:
- type: archive
url: https://github.com/g-truc/glm/releases/download/0.9.9.8/glm-0.9.9.8.zip
sha256: 37e2a3d62ea3322e43593c34bae29f57e3e251ea89f4067506c94043769ade4c
# dependency of: CEMU, ES-DE
- name: pugixml
buildsystem: cmake-ninja
@ -1116,19 +1130,6 @@ modules:
project-id: 10649
url-template: https://libzip.org/download/libzip-$version.tar.xz
- name: glm
buildsystem: cmake-ninja
cleanup: ['*']
no-make-install: true
post-install:
- install -d ${FLATPAK_DEST}/include
- cp -R glm ${FLATPAK_DEST}/include
- cp -R cmake/glm ${FLATPAK_DEST}/lib/cmake
sources:
- type: archive
url: https://github.com/g-truc/glm/releases/download/0.9.9.8/glm-0.9.9.8.zip
sha256: 37e2a3d62ea3322e43593c34bae29f57e3e251ea89f4067506c94043769ade4c
- name: fmt
buildsystem: cmake-ninja
config-opts:
@ -1228,6 +1229,84 @@ modules:
# Cemu - END
# Vita3K - START
# Vita3K is writing some files in its own directory
# So that is placed in /var/data/Vita3K and not in the readonly filesystem
# This module is just fetching the file so it will be unique for this build
- name: vita3k
buildsystem: simple
build-commands:
# Creating an empty symlink that will point to Vita3K binary
- ln -s /var/data/Vita3K/Vita3K ${FLATPAK_DEST}/bin/Vita3K
# Copying the user icon
- mkdir -p ${FLATPAK_DEST}/retrodeck
- cp retrodeck.png ${FLATPAK_DEST}/retrodeck
# preparing the vita3k zip for later
- mv ubuntu-latest.zip ${FLATPAK_DEST}/retrodeck/vita3k.zip
sources:
- type: file
url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
sha256: VITA3KSHAPLACEHOLDER
- type: file
path: res/retrodeck.png
# Vita3K - END
# SOLARUS - START
# https://github.com/flathub/org.solarus_games.solarus.Launcher
- name: luajit
no-autogen: true
cleanup:
- /bin
- /lib/*.a
- /include
- /lib/pkgconfig
- /share/man
sources:
- type: archive
url: https://luajit.org/download/LuaJIT-2.0.5.tar.gz
sha256: 874b1f8297c697821f561f9b73b57ffd419ed8f4278c82e05b48806d30c1e979
- type: shell
commands:
- sed -i 's|/usr/local|/app|' ./Makefile
- name: libmodplug
cleanup:
- /include
sources:
- type: archive
url: https://download.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz
sha512: 880e10154fd367ee24ace53ca7e32a5c1fee7dfff1f934e6499944c12779427da63e2f55f8d6ce25db0a42a5b4424053bf64305b31dbfc4ef6a8909924d655fd
- name: physfs
buildsystem: cmake-ninja
config-opts:
- -DPHYSFS_BUILD_TEST=OFF
sources:
- type: archive
url: https://icculus.org/physfs/downloads/physfs-3.0.2.tar.bz2
sha256: 304df76206d633df5360e738b138c94e82ccf086e50ba84f456d3f8432f9f863
size: 194888
x-checker-data:
type: anitya
project-id: 3631
url-template: https://icculus.org/physfs/downloads/physfs-$version.tar.bz2
- name: solarus
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DSOLARUS_GUI=OFF
sources:
- type: git
url: https://gitlab.com/solarus-games/solarus.git
tag: v1.6.5
commit: 3aec70b0556a8d7aed7903d1a3e4d9a18c5d1649
# SOLARUS - END
# External manifests end
- name: retrodeck
@ -1260,14 +1339,12 @@ modules:
# Tools
- mkdir -p /app/tools
- cp tools/configurator.sh /app/tools/configurator.sh
- chmod +x /app/tools/configurator.sh
- cp tools/retrodeck_function_wrapper.sh /app/tools/retrodeck_function_wrapper.sh
- chmod +x /app/tools/retrodeck_function_wrapper.sh
- cp -r tools/** /app/tools
- find /app/tools -name '*.py|*.sh' -exec chmod +x {} \;
# Function libraries
- mkdir -p /app/libexec
- cp -r functions/* "/app/libexec/"
- cp -r functions/** "/app/libexec/"
# Desktop entries
- cp net.retrodeck.retrodeck.desktop /app/share/applications/net.retrodeck.retrodeck.desktop
@ -1295,4 +1372,4 @@ modules:
sources:
- type: git
url: https://github.com/XargonWan/RetroDECK.git
branch: THISBRANCH
branch: THISBRANCH

View file

@ -129,26 +129,64 @@
# Ryujinx Appimage - END
# Vita3K - START
# Very broken, disabled
# NOTE: this is a continuos release, it's provided but not supported
# to update this module:
# wget https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip -O rd-submodules/vita3k/vita3k-14-01-23.zip
# sha256sum rd-submodules/vita3k/vita3k*.zip
# change url and sha
# check the branch in the url
# Ryujinx - START
# https://github.com/flathub/org.ryujinx.Ryujinx
# - name: Vita3K
# buildsystem: simple
# build-commands:
# - |
# mkdir -p ${FLATPAK_DEST}/vita3k
# cp -r * ${FLATPAK_DEST}/vita3k
# chmod +x ${FLATPAK_DEST}/vita3k/Vita3K
# ln -s ${FLATPAK_DEST}/vita3k/Vita3K /app/bin/Vita3K
# sources:
# - type: archive
# url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
# sha256: VITASHAPLACEHOLDER
- name: Ryujinx
buildsystem: simple
build-options:
no-debuginfo: true
no-debuginfo-compression: true
strip: false
arch:
x86_64:
env:
RUNTIME: linux-x64
env:
PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
DOTNET_CLI_TELEMETRY_OPTOUT: 'true'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 'true'
RYUJINX_VERSION: 1.1.1014
RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: flathub
RYUJINX_TARGET_RELEASE_CHANNEL_REPO: org.ryujinx.Ryujinx
RYUJINX_TARGET_RELEASE_CHANNEL_NAME: master
build-commands:
- |
export PATH=$PATH:/run/build/Ryujinx/dotnet-sdk
export RYUJINX_GIT_SHORT_HASH=$(git rev-parse --short HEAD)
export RUNTIME_FRAMEWORK_VERSION=$(find nuget-sources -name 'microsoft.netcore.app.host.linux-x64.*' | grep -oP '(\d.\d.\d+.nupkg)' | grep -oP '(\d.\d.\d+)')
sed -r --in-place "s/\%\%RYUJINX_BUILD_VERSION\%\%/$RYUJINX_VERSION/g;" src/Ryujinx.Common/ReleaseInformation.cs
sed -r --in-place "s/\%\%RYUJINX_BUILD_GIT_HASH\%\%/$RYUJINX_GIT_SHORT_HASH/g;" src/Ryujinx.Common/ReleaseInformation.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_NAME/g;" src/Ryujinx.Common/ReleaseInformation.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_OWNER/g;" src/Ryujinx.Common/ReleaseInformation.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_REPO/g;" src/Ryujinx.Common/ReleaseInformation.cs
mkdir -p /app/bin
dotnet publish -c Release -r $RUNTIME /p:DebugType=embedded src/Ryujinx /p:Version=$RYUJINX_VERSION /p:SourceRevisionId=$RYUJINX_GIT_SHORT_HASH /p:ExtraDefineConstants="DISABLE_UPDATER%2CFORCE_EXTERNAL_BASE_DIR" /p:RuntimeFrameworkVersion=$RUNTIME_FRAMEWORK_VERSION --self-contained --source nuget-sources
if [ $? -ne 0 ]; then
exit 1;
fi;
cp -r --remove-destination /run/build/Ryujinx/src/Ryujinx/bin/Release/net7.0/$RUNTIME/publish/* /app/bin/
chmod +x /app/bin/Ryujinx.sh
mkdir -p /app/lib/ffmpeg
ln -s /usr/lib/x86_64-linux-gnu/libX11.so.6 /app/lib/libX11.so
install -Dm755 ryujinx-wrapper /app/bin/ryujinx-wrapper
install -Dm644 distribution/misc/Logo.svg /app/share/icons/hicolor/scalable/apps/ryujinx.svg
sources:
- type: archive
only-arches:
- x86_64
dest: dotnet-sdk
url: https://dotnetcli.azureedge.net/dotnet/Sdk/7.0.401/dotnet-sdk-7.0.401-linux-x64.tar.gz
sha256: 4634fa4da7ae4e3dadb83e320a87fb26f0cb12a7ca02bf9f10e6c3c1c91d645c
x-checker-data:
type: rotating-url
url: https://aka.ms/dotnet/7.0/dotnet-sdk-linux-x64.tar.gz
pattern: https://dotnetcli.azureedge.net/dotnet/Sdk/^([\d\.a-z-]+)$/dotnet-sdk-^([\d\.a-z-]+)$-linux-x64.tar.gz
- rd-submodules/ryujinx/nuget_sources.json
- type: git
url: https://github.com/Ryujinx/Ryujinx.git
commit: 7ccff037e87f82f3461f3e1422235e29800eaa2f
- type: file
path: rd-submodules/ryujinx/ryujinx-wrapper
# Vita3K - END
# Ryujinx - END

View file

@ -1,22 +0,0 @@
{
"name": "SDL2",
"buildsystem": "autotools",
"config-opts": ["--disable-static"],
"sources": [
{
"type": "archive",
"url": "https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.26.3.tar.gz",
"sha256": "af0ff86e4a268bc12c915a0ea19ea1a16419ab1426d92bad5f4e26eb31583967"
}
],
"cleanup": [ "/bin/sdl2-config",
"/include",
"/lib/libSDL2.la",
"/lib/libSDL2main.a",
"/lib/libSDL2main.la",
"/lib/libSDL2_test.a",
"/lib/libSDL2_test.la",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"]
}

BIN
res/retrodeck.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -29,11 +29,14 @@ source /app/libexec/global.sh
# - Citra
# - Dolphin
# - Duckstation
# - MAME
# - MelonDS
# - PCSX2
# - PPSSPP
# - Primehack
# - RPCS3
# - Ryujinx
# - Vita3K
# - XEMU
# - Yuzu
# - Tools
@ -74,6 +77,7 @@ source /app/libexec/global.sh
# - Reset PPSSPP
# - Reset Primehack
# - Reset RPCS3
# - Reset Ryujinx
# - Reset XEMU
# - Reset Yuzu
# - Reset All Emulators
@ -84,6 +88,7 @@ source /app/libexec/global.sh
# - Full changelog
# - Version-specific changelogs
# - RetroDECK Credits
# - Add to Steam
# - Developer Options (Hidden)
# - Change Multi-user mode
# - Change Update channel
@ -100,13 +105,15 @@ configurator_welcome_dialog() {
"RetroDECK: Tools" "Compress games, move RetroDECK and install optional features" \
"RetroDECK: Troubleshooting" "Backup data, perform BIOS / multi-disc file checks checks and emulator resets" \
"RetroDECK: About" "Show additional information about RetroDECK" \
"Sync with Steam" "Sync with Steam all the favorites games" \
"Developer Options" "Welcome to the DANGER ZONE")
else
welcome_menu_options=("Presets & Settings" "Here you find various presets, tweaks and settings to customize your RetroDECK experience" \
"Open Emulator" "Launch and configure each emulators settings (for advanced users)" \
"RetroDECK: Tools" "Compress games, move RetroDECK and install optional features" \
"RetroDECK: Troubleshooting" "Backup data, perform BIOS / multi-disc file checks checks and emulator resets" \
"RetroDECK: About" "Show additional information about RetroDECK" )
"RetroDECK: About" "Show additional information about RetroDECK" \
"Add to Steam" "Add to Steam all the favorite games, it will not remove added games")
fi
choice=$(zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \
@ -136,6 +143,10 @@ configurator_welcome_dialog() {
configurator_about_retrodeck_dialog
;;
"Sync with Steam" )
configurator_add_steam
;;
"Developer Options" )
configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!"
configurator_developer_dialog
@ -427,13 +438,16 @@ configurator_open_emulator_dialog() {
"Citra" "Open the N3DS emulator Citra" \
"Dolphin" "Open the Wii & GC emulator Dolphin" \
"Duckstation" "Open the PSX emulator Duckstation" \
"MAME" "Open the Multiple Arcade Machine Emulator emulator MAME" \
"MelonDS" "Open the NDS emulator MelonDS" \
"PCSX2" "Open the PS2 emulator PSXC2" \
"PPSSPP" "Open the PSP emulator PPSSPP" \
"Primehack" "Open the Metroid Prime emulator Primehack" \
"RPCS3" "Open the PS3 emulator RPCS3" \
"Ryujinx" "Open the Switch emulator Ryujinx" \
"Vita3K" "Open the PSVita emulator Vita3K" \
"XEMU" "Open the Xbox emulator XEMU" \
"Yuzu" "Open the Switch emulator Yuzu" )
"Yuzu" "Open the Switch emulator Yuzu")
case $emulator in
@ -457,6 +471,10 @@ configurator_open_emulator_dialog() {
duckstation-qt
;;
"MAME" )
mame
;;
"MelonDS" )
melonDS
;;
@ -477,6 +495,14 @@ configurator_open_emulator_dialog() {
rpcs3
;;
"Ryujinx" )
ryujinx-wrapper
;;
"Vita3K" )
Vita3K
;;
"XEMU" )
xemu
;;
@ -516,7 +542,7 @@ configurator_retrodeck_tools_dialog() {
;;
"Install: RetroDECK SD Controller Profile" )
configurator_generic_dialog "RetroDECK Configurator - Install: RetroDECK Controller Profile" "We are now offering a new official RetroDECK controller profile!\nIt is an optional component that helps you get the most out of RetroDECK with a new in-game radial menu for unified hotkeys across emulators.\n\nThe files need to be installed outside of the normal ~/retrodeck folder, so we wanted your permission before proceeding.\n\nThe files will be installed at the following shared Steam locations:\n\n$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/\n$HOME/.steam/steam/controller_base/templates/RetroDECK_controller_config.vdf"
configurator_generic_dialog "RetroDECK Configurator - Install: RetroDECK Controller Profile" "We are now offering a new official RetroDECK controller profile!\nIt is an optional component that helps you get the most out of RetroDECK with a new in-game radial menu for unified hotkeys across emulators.\n\nThe files need to be installed outside of the normal ~/retrodeck folder, so we wanted your permission before proceeding.\n\nThe files will be installed at the following shared Steam locations:\n\n$HOME/.steam/steam/tenfoot/resource/images/library/controller/binding_icons/\n$HOME/.steam/steam/controller_base/templates"
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Controller Profile" "Would you like to install the official RetroDECK controller profile?") == "true" ]]; then
install_retrodeck_controller_profile
configurator_generic_dialog "RetroDECK Configurator - Install: RetroDECK Controller Profile" "The RetroDECK controller profile install is complete.\nSee the Wiki for more details on how to use it to its fullest potential!"
@ -979,6 +1005,7 @@ configurator_reset_dialog() {
"PPSSPP" "Reset the PSP emulator PPSSPP to default settings" \
"Primehack" "Reset the Metroid Prime emulator Primehack to default settings" \
"RPCS3" "Reset the PS3 emulator RPCS3 to default settings" \
"Ryujinx" "Reset the Switch emulator Ryujinx to default settings" \
"XEMU" "Reset the XBOX emulator XEMU to default settings" \
"Yuzu" "Reset the Switch emulator Yuzu to default settings" )
@ -1091,6 +1118,11 @@ configurator_about_retrodeck_dialog() {
esac
}
configurator_add_steam() {
python3 /app/libexec/steam-sync/steam-sync.py
configurator_welcome_dialog
}
configurator_version_history_dialog() {
local version_array=($(xml sel -t -v '//component/releases/release/@version' -n $rd_appdata))
local all_versions_list=()

View file

@ -1,38 +0,0 @@
# Themes general information
## How to switch between themes?
Go into `Main Menu` - `UI Settings` - `Theme Set` to select the theme you want to use.
## ES-DE Theme List
Look over at the [Theme List](https://gitlab.com/es-de/themes/themes-list) and find themes you like.
## How do I add additional themes?
RetroDECK uses [ES-DE](https://www.es-de.org) for its interface so any theme that is compatible with ES-DE can also be used with RetroDECK
### From the Theme Downloader
Go into `Main Menu` - `UI Settings` - `Theme Downloader` from there you can download a wide array of themes.
### From the Internet
If you find a theme you would like to use that is not in the `Theme Downloader` please download it and place it in `~/retrodeck/themes` (make sure the theme has its own folder in that directory).
## FAQs: Frequently asked questions on Themes
["Why does the theme I am using not work?" or "Why does the layout look broken?" (black screen with blue text)](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#why-does-the-theme-i-am-using-not-work-or-why-does-the-layout-look-broken-black-screen-with-blue-text)
[Why does the theme layout look squished?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#why-does-the-theme-layout-look-squished)
# RetroDECK: Included Theme
## Art Book Next
| System View | Gamelist View |
|----|----|
| ![rd-theme-ArtBookNext-SystemView](https://user-images.githubusercontent.com/1454947/193457029-9a7a1207-fe05-4cd1-8b18-eb4112e903e9.jpeg)| ![rd-theme-ArtBookNext-GamelistView](https://user-images.githubusercontent.com/1454947/193457123-505ccd23-6477-43d8-baaa-1360ed3c250e.jpeg) |
**Description:** <br>
Art Book Next is a theme that tries to emulate the feeling of flipping trough your game library as if they where pages of a coffee table book.
Source: [Art Book Next on Github](https://github.com/anthonycaccese/art-book-next-retropie)<br>
Created by: [anthonycaccese](https://github.com/anthonycaccese)

View file

@ -1,60 +0,0 @@
# Different controller layouts in games
## Configurator Switch Y-X and A-B
You can enable a mode that switches the Y-X and A-B buttons for supported Emulators inside the `RetroDECK Configurator`.
## XBOX layout
Many devices like the `Steam Deck` uses the XBOX layout
**XBOX button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `Y` |
| Left | `X` |
| Right | `B` |
| Bottom | `A` |
**Example:**<br>
So if you are emulating a Xbox game that calls for the button `B` to be pressed it corresponds to the right button.
### Nintendo Layout
**Nintendo - button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `X` |
| Left | `Y` |
| Right | `A` |
| Bottom | `B` |
**Example:**<br>
So if you are emulating a Nintendo game that calls for the button `A` to be pressed it corresponds to the right button.
## Sony PlayStation Layout
The Sony PlayStation uses it's icon glyphs to represent it's buttons.
**Sony PlayStation - button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `Triangle` |
| Left | `Square` |
| Right | `Circle` |
| Bottom | `X` |
**Example:**
So if you are emulating a PlayStation game that calls for the button `Square` to be pressed it corresponds to the right button.
**Regional differences:**
Depending on the region of your Playstation game, the buttons `Circle` and `X` switches the meaning for confirm and cancel (they are still at the same physical location). But it is good to keep in mind if you are used to exiting out of menus with a certain button and wondering why it works in some games while others not.
**Example:**
In the EU/US `X` is confirm while in Japan `X` is cancel.

View file

@ -1,23 +0,0 @@
# General information
The goal is to add more emulators and functions over course of the development cycle.
What follows is a list of all the emulators currently included in RetroDECK:
# RetroArch
RetroDECK ships will all cores under the stable branch of RetroArch.
# Standalone Emulators
The following standalone emulators are included
## Yuzu (Switch)
## Citra (3DS)
## PCSX2 (PS2)
## Cemu (WiiU)
As of 0.7b
## Dolphin (GameCube/Wii)
## Primehack (Metroid Prime - Dolphin Fork)
As of 0.6b
## Xemu (XBOX)
## MelondDS (DS)
## RPCS3 (PS3)
## PPSSPP (PSP)

View file

@ -1,503 +0,0 @@
# General questions:
## What is the scope of this project?
<details><summary>Click here to see the answer</summary>
Read the "Whats the long term vision and goals" on the Home page of this wiki.
</details>
## Do you include any games, firmware or BIOS?
<details><summary>Click here to see the answer</summary>
No, this can never be done for legal reasons.
</details>
### Can you at least point me towards where I can get them?
<details><summary>Click here to see the answer</summary>
Again...no, this can never be done for legal reasons.
</details>
## Why are games call ROMs?
<details><summary>Click here to see the answer</summary>
ROM stands for "Read Only Memory" and was a common method to store games.<br>
The games where later dumped from their ROM chips into digitalized files that can be played with an emulator.<br>
Read more on [wikipedia](https://en.wikipedia.org/wiki/Read-only_memory)
</details>
## What is sudo?
<details><summary>Click here to see the answer</summary>
The command stands for "superuser do" and in the windows world it is called "run as administrator".
Su in "sudo" refers to the "superuser" or in the windows called the "administrator".
</details>
## Retrodeck is a flatpak, what is it?
<details><summary>Click here to see the answer</summary>
A flatpak is generated from a manifest, our manifest is this: https://github.com/XargonWan/RetroDECK/blob/main/net.retrodeck.retrodeck.yml
There is a software named flatpak-builder that is reading that manifest and downloads and builds everything that is needed.<br/>
This is creating the RetroDECK.flatpak file that can be distributed as a file or be included in the official Flathub repository accessible from Discovery.<br/>
[Flaptak](https://docs.flatpak.org/en/latest/introduction.html) is like a sandbox, with its own read only filesystem that is different from your computer's filesystem, that's why flatpak is safer than installing something directly in your filesystem, moreover it persists after any SteamOS update.
</details>
## What is RetroDECK cooker?
<details><summary>Click here to see the answer</summary>
Cooker is a bleeding edge snapshot of the current commits, the action of uploading code to GitHub is called commit.<br/>
As you can understand, the code may not be always reviewed and so the cooker it's unstable by its nature, it's just suggested to testers or developer to try bleeding edge function or to contribute.<br/>
More info on the pinned post in #💙-i-want-to-help on our [Discord Server](discord.gg/Dz3szYsP8g).
I don't support the cooker user side.
</details>
### Why the name cooker? 🍲
<details><summary>Click here to see the answer</summary>
That's what cooking in the pot at this moment and not yet ready to be served (released).<br> This name was also used by Linux Mandrake and Mandriva for the bleeding edge channel.
</details>
# Updates, feature requests and more devices/OS questions:
## Will you support the general Linux desktop and not only the Steam Deck?
<details><summary>Click here to see the answer</summary>
Technically it is working, but the user experience might not be that great it could contain desktop specific bugs and other issues.
You will also need to manually configure the input to match your desktop and might need to tweak more settings. If you want to try it make sure that your distribution has native flatpak support else, you might need to install it.
We will start to tackle desktop bugs and have a bigger desktop focus after the beta period is over.
</details>
## Will you support other SteamOS or Linux handheld gaming devices with flatpak support?
<details><summary>Click here to see the answer</summary>
We do plan to support other SteamOS based devices in the future. But during the BETA we are focusing on the Steam Deck.
You can get it to run on other Linux based devices it is not just as seamless as we want it to be and does not live up to our higher standards.
You will need to manually configure the input to match your device and might need to tweak more settings if you try it on a none Steam Deck device. There might also be some hardware specific bugs.
</details>
## Will you support Windows or Windows based devices like the ROG Ally?
<details><summary>Click here to see the answer</summary>
No, RetroDECK doesn't support Windows, but the project is fully open source so you can port it if you wish.
As an alternative you could try https://www.retrobat.ovh/ that offers similar functionality.
</details>
## Will you support MacOS?
<details><summary>Click here to see the answer</summary>
Not supported and not planned.
</details>
## Will you support Android/IOS?
<details><summary>Click here to see the answer</summary>
Not supported and not planned.
</details>
## Will you implement X/Y/Z emulator?
<details><summary>Click here to see the answer</summary>
Our goal is to implement and configure a selection of the best emulators for each system. If your favorite system is not integrated you can request its integration by opening an issue on this github page.
</details>
## Will you implement none emulator software inside of RetroDECK like Batocera?
<details><summary>Click here to see the answer</summary>
Nothing in the short term but maybe in the future. It also need to fit inside the scope of project for example: GZDoom would be ok. But another project like a multimedia center solution like Kodi would not fit.
</details>
## When does the next version of RetroDECK come out?
<details><summary>Click here to see the answer</summary>
> When it's ready.
</details>
### When does the version after the upcoming version come out?
<details><summary>Click here to see the answer</summary>
After the upcoming version.</details>
### When does the version 1.0 of RetroDECK come out?
<details><summary>Click here to see the answer</summary>
Some time in the future.
</details>
# Documentation questions
## I see ~ refereed in documentation and examples, what does it mean?
<details><summary>Click here to see the answer</summary>
The tilde character ~ is the a short way of saying the logged in users home directory in the UNIX world.<br>
So for example the Steam Deck<br>
`~ = /home/deck`<br>
Read more on [Wikipedia](https://en.wikipedia.org/wiki/Home_directory)</details>
## I see SA refereed in documentation about emulators what does it mean?
<details><summary>Click here to see the answer</summary>
SA means Standalone and the emulator is not inside RetroArch/LibRetro but a separate program launched within RetroDECK. </details>
## I see CLI refereed in documentation what does it mean?
<details><summary>Click here to see the answer</summary>
CLI stands for command-line interface and is often refereed commands you can run in the the Linux Terminal </details>
# Other Emulation Solutions questions:
## Are you related to EmuDeck?
<details><summary>Click here to see the answer</summary>
No, the two projects are not related.
</details>
### So what's the difference between RetroDECK and EmuDeck?
<details><summary>Click here to see the answer</summary>
Apart of that from the user point of view EmuDeck and RetroDECK may sound similar but technically they're completely different.
EmuDeck is a shell script that you run in the Steam Decks desktop mode that downloads and configures all the separate emulators & plugins for you from various sources using a built in electron based gui.
RetroDECK is an all-in-one application contained in a sandboxed environment called "flatpak", that is downloaded from Discover (Flathub). This is Valves and other Linux desktops recommended way of distributing applications on the Steam Deck and Linux desktop in a safe way. It grantees for example even if Valve makes major changes to the file system in a SteamOS update, RetroDECK and its configurations will not be touched and will be safe.
RetroDECK only writes in these two folders: `~/retrodeck` for roms/configurations/bios etc.. And an hidden flatpak folder located in `~/.var/net.retrodeck.retrodeck`.
As everything is contained within those two folders it will not have conflict if you decide to install an emulator from another source like Yuzu or RetroArch with your RetroDECK setup. Even if you uninstall RetroDECK all your roms/bios/saves/etc.. are safe until you remove the `~/retrodeck` folder. So if you for some reason don't like the application after playing for a while you can easily move out your important files after an uninstall (or you can just reinstall RetroDECK again and start where you left off).
This approach of everything is in a all-in-one package will also allow RetroDECK to do tighter integrations with each bundled emulator in the future and expose all those settings when you are inside RetroDECK, so you do not need to go into Steam Decks desktop mode to do changes and tweaks. All things should be, in the long term, inside the application itself and you can already see a part of that inside the RetroDECK Configurator in the Tools menu.
</details>
### Can I install RetroDECK if I have EmuDeck already?
<details><summary>Click here to see the answer</summary>
Yes, as RetroDECK is completely standalone.
</details>
## Are you related anyway to Batocera?
<details><summary>Click here to see the answer</summary>
No, but RetroDECK had some dialog before the project started with some of the Batocera crew if there where any plans to start a Batocera non-OS application (there where no plans at that moment and their focus is to make the best retro gaming operative system). RetroDECK and Batocera also have good dialog together with representatives of each projects inside the internal development channels.
</details>
## Batocera or EmuDeck or RetroDECK I still don't get it?
<details><summary>Click here to see the answer</summary>
- Batocera is a retro emulation operative system that you need to boot into separately (like from an SDCard) or replace your current OS. <br> For the Steam Deck you lose access to the SteamOS features and your emulation gaming is separate from your SteamOS gamemode gaming. That said; Batocera has many years of development time, is a great mature OS with a lot of features.
- EmuDeck is a shell script that you download and run. The script downloads & configures all the separate emulators & plugins for you from various sources for various operative systems.
- RetroDECK is an all-in-one application that already provides everything you need without to many extra steps for the user.It is on flathub and thus allows the users to update the application via standard safe operative system update methods.
You can see RetroDECK as the in between of EmuDeck and Batocera. We hope that one day we can offer a complete Batocera-like experience right inside your operative system.
</details>
## What is your relationship with EmulationStation Desktop Edition (ES-DE)?<br>
<details><summary>Click here to see the answer</summary>
ES-DE and RetroDECK are separate projects, but we collaborate to give the best possible user experience.<br>
We have a unique partnership where inside the ES-DE code is a section just for RetroDECK specific features. <br>
[Read more on ES-DE FAQs](https://gitlab.com/es-de/emulationstation-de/-/blob/master/FAQ.md#what-is-the-relationship-between-es-de-and-retrodeck)
</details>
# RetroDECK usage questions:
## Can I launch RetroDECK from inside of the Steam Decks gamemode?
<details><summary>Click here to see the answer</summary>
Yes, RetroDECK currently only supports Steam Deck's gamemode as it relies on Steam Controller configs. <br>
To add it into Steam please check the second step of [[Steam Deck: Installation and updates]].
</details>
## Do I have to partition or format my disk/sdcard to install RetroDECK?
<details><summary>Click here to see the answer</summary>
No, partitioning or formatting is not needed at all. RetroDECK (differently from AmberELEC, Batocera and others) comes as a flatpak. Just install it as any other application and launch it from your desktop and/or Steam library.
</details>
## Can I move the ROMs folder to another place?
<details><summary>Click here to see the answer</summary>
Yes, you can do so inside the configurator and the `Move RetroDECK` option.
</details>
## Is there a way to reset RetroDECK?
<details><summary>Click here to see the answer</summary>
Yes, you can reset various parts of the software using the RetroDECK configurator under the option reset<br/>
Or you can use CLI arguments in the terminal.
Resets the whole RetroDECK at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset-all
```
Resets RetroArch configs at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset-ra
```
Resets all the standalone emulators configs at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset-sa
```
</details>
## How do I uninstall RetroDECK?
<details><summary>Click here to see the answer</summary>
**On the Steam Deck:**<br>
Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`<br>
* Go into Discover
* Press the `Installed` tab and find RetroDECK
* Press the `Uninstall` button
* Manually backup then remove the ~\RetroDECK folder. Warning! Make a backup your data roms/bios/saves etc if you want to save them else they will be gone.
</details>
## Does uninstalling RetroDECK remove my roms, bios and saves?
<details><summary>Click here to see the answer</summary>
No, as long as you don't manually don't delete the ~\RetroDECK folder and it's content your data is safe. You could uninstall RetroDECK and install it again and keep going.
</details>
## Where can I find the logfiles?
<details><summary>Click here to see the answer</summary>
> In `~/retrodeck/logs/retrodeck.log`
</details>
## Can I add a single game to my Steam Library or with Steam Rom Manager?
<details><summary>Click here to see the answer</summary>
Not yet but might be in the future, it is technical possible but quite complicated and needs to be done via launch script. We hope we can simplify this in the future via an API call or inside the Configurator.
Example of a launch script to launch to launch a Wii game called Baloon World:
`flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -e "/run/media/mmcblk0p1/retrodeck/roms/wii/Baloon World.rvz" -b `
</details>
## If I installed RetroDECK from outside of discover, do I need to uninstall the application to update?
<details><summary>Click here to see the answer</summary>
If you previously installed from outside of Discover, you can find the instructions here to
[install from discover](https://github.com/XargonWan/RetroDECK/wiki/Steam-Deck-Installation-and-updates)
or here
[to install .flatpak file](https://github.com/XargonWan/RetroDECK/wiki/Developer-notes#managing-retrodeck-flatpak-file).</details>
## After installing RetroDECK manually, Discover is not opening or giving me some errors?
<details><summary>Click here to see the answer</summary>
This bug is appearing only when installing RetroDECK manually and not from Discover. The discover release is suggested for all the users.
However you can run this to fix it: `flatpak remote-delete retrodeck-origin`
</details>
# General emulation & games questions:
## What emulators and software is included in RetroDECK?
<details><summary>Click here to see the answer</summary>
You can check this wiki what emulators are currently bundled. We plan to have support for most of the emulators ES-DE support in the long term.
</details>
## How can I set another default emulator?
<details><summary>Click here to see the answer</summary>
The ES-DE interface allows you to change emulators for systems that has many different emulators. In the main menu go to `Other Settings` - `Alternative Emulators` to set other defaults.
</details>
## Game X/Y/Z is not working or showing black screen
<details><summary>Click here to see the answer</summary>
Some emulators needs BIOS and/or firmware files, first you can check if you got the [needed ones](https://github.com/XargonWan/RetroDECK/wiki/BIOS-&-Firmware).<br/>
Then you can check if your got a bad dump by comparing your hash with the ones of the official lists on the internet, such as [no-intro](https://datomatic.no-intro.org/index.php?page=search&s=64) or even [RetroAchievements](https://retroachievements.org) if your game is supported.<br/>
Moreover please mind that some emulator require very specific roms, please [read here](https://github.com/XargonWan/RetroDECK/wiki/How-to-Manage-your-games#special-roms-formats).
If it still not working you are welcome to ask for support on our [Discord Server](discord.gg/Dz3szYsP8g).
</details>
## PS2 games are not working or buggy in the RetroArch Core.
<details><summary>Click here to see the answer</summary>
It's a known issue with if you are using the libretro core but you can use the the standalone pcsx2 emulator to solve this issue.<br>
Be sure to check that the bios files are in the correct folder. Read more on the [Emulators: BIOS and Firmware](https://github.com/XargonWan/RetroDECK/wiki/Emulators%3A-BIOS-and-Firmware)# page on this wiki.
</details>
## I configured RetroArch but the configuration was not saved.
<details><summary>Click here to see the answer</summary>
Configuring RetroArch can be dangerous for an inexperienced user, so RetroDECK is set to don't save the RetroArch configuration upon exiting.<br/>
The configuration must be saved willingly by going to: `Main Menu` -> `Configuration File` -> `Save Current Configuration`.<br/>
If you find some better configurations however, you may contribute by sharing it on the #💙-i-want-to-help channel on our [Discord Server](discord.gg/Dz3szYsP8g) that may be included in the next version.
</details>
## Will you support Lightguns (Sinden, Gun4IR, Samco etc...)?
<details><summary>Click here to see the answer</summary>
The long term answer is yes, but there are several issues that need to be addressed from various dependencies that are beyond the scope of what RetroDECK can do by it self. We are talking to several projects and hope to have those issues addressed in the future. Right now the best way to use lightgun hardware is to use Batocera as they have developed native support in their OS.
</details>
# Steam Deck emulation questions:
## XBOX games are slow on the Steam Deck
<details><summary>Click here to see the answer</summary>
Unfortunately on thanks to missing optimizations focusing on the Steam Deck and the hardware is limited in scope makes performance not great. Like most emulators they will get improvements over time and we will follow the XBOX emulators progress with great interest.
</details>
## The games are stuck at 30FPS on the Steam Deck!
<details><summary>Click here to see the answer</summary>
Press the [...] button on the Steam Deck, go into the Power menu and see if the Framerate Limit is set to 30FPS and set it to 60FPS or off.
</details>
## Fast forwarding is slow on the Steam Deck!
<details><summary>Click here to see the answer</summary>
Same as above: Check the Power menu Framerate Limit.
</details>
# Theme questions:
## How can I add more themes?
<details><summary>Click here to see the answer</summary>
In the future we wish to include a themes browser and downloader, but for the moment you can put your own themes here: <br>
~/retrodeck/themes
</details>
## How do you switch between themes inside of RetroDECK?
<details><summary>Click here to see the answer</summary>
**On the Steam Deck:**<br>
you can switch between them by pressing the `☰` button to open the menu and then navigate to `UI Settings > Theme Set` to select the theme you want to use.
</details>
## "Why does the theme I am using not work?" or "Why does the layout look broken?" (black screen with blue text)?
<details><summary>Click here to see the answer</summary>
* Please make sure you are specifically using a theme that is compatible with [ES-DE](https://www.es-de.org). <br>
* If you are trying to use a theme that was built for Batocera it will likely not be compatible.<br>
* ES-DE uses a unique theme engine so themes are not directly portable from Batocera. <br>
* Please see ES-DE's [User Guide](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#themes) for more details.
</details>
## Why does the theme layout look squished?
<details><summary>Click here to see the answer</summary>
* The Steam Deck has a screen aspect ratio of `16:10` and most themes that you will find are built for an aspect ratio of `16:9`. Depending on the theme's design this may cause the layout to appear squished when using it on the Steam Deck's display. <br>
* All of the included themes are built for 16:10 aspect ratio so you should not see this issue with any of them; however if you are downloading a theme from another source there is a chance this can occur for you. <br>
* There are 2 ways to fix this if it does occur: (1) see if a specific version was built for `16:10` aspect ratio and use that instead or (2) edit the theme to make it compatible with that aspect ratio.
</details>
# Scraping questions
## Can I manually add custom game images/videos/media for games that I can not scrape?
<details><summary>Click here to see the answer</summary>
Yes, check the file structure over at Emulationstation DE's user guide on gitlab.<br>
## [Manually copying game media files](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#manually-copying-game-media-files)
</details>
## Where is my scraped data?
<details><summary>Click here to see the answer</summary>
In `~/retrodeck/downloaded_media`
</details>
## I got some weird error message about quota after scraping!
<details><summary>Click here to see the answer</summary>
The error message mentions something about quota. You have a quota limit on how much you can scrape each day from [Screenscraper.fr ](https://www.screenscraper.fr/) where each item you scrape counts as 1 quota of the daily total.<br>
You can pay them to get a bit more daily quota and show your support or just wait 24 hours.<br>
</details>
## I got some weird error message about about server or service!
<details><summary>Click here to see the answer</summary>
The website is down, check [Screenscraper.fr](https://www.screenscraper.fr/) when they get back up.
</details>
## The scraping is too slow!
<details><summary>Click here to see the answer</summary>
[Screenscraper.fr](https://www.screenscraper.fr/) offers different types of donations that can increase your speed with extra threads.
</details>
## My systems storage ran out after scraping!
<details><summary>Click here to see the answer</summary>
Images and videos takes a lot of space, you can clean some out under `~/retrodeck/downloaded_media`
</details>
### But I still want them!
<details><summary>Click here to see the answer</summary>
Delete something else or buy more storage.
</details>
## Can I move the downloaded_media folder?
<details><summary>Click here to see the answer</summary>
You can move it with the the move RetroDECK option inside the configurator.
</details>

View file

@ -1,104 +0,0 @@
# Getting started
This is a guide on how to get started with RetroDECK
# Step 0: Prerequisites
## What do I need?
You need to meet the following prerequisites before you start following this guide:
* You need to have a device to install RetroDECK on (we currently only support the Steam Deck).
* Read up on the FAQs pages: <br>
[Do you include any games, firmware or BIOS?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#do-you-include-any-games-firmware-or-bios)<br>
[Where can I get them?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#can-you-at-least-point-me-towards-where-i-can-get-them)<br>
[What does ~ mean?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#i-see--refereed-in-documentation-and-examples-what-does-it-mean)
* Have related BIOS & Firmware ready
* Have backup rom files of the games you want to play ready
# Step 1: Installation & Configuration
Only install RetroDECK from the official channels via flathub!
## Steam Deck - Installation<br>
Read and follow the:
* [Installation guide for the Steam Deck](https://github.com/XargonWan/RetroDECK/wiki/Steam-Deck-Installation-and-updates)<br>
## Linux Desktop - Installation<br>
(more information later)
## Other SteamOS devices - Installation<br>
(more information later)
# Step 2: BIOS & Firmware
**NOTE:** On the Steam Deck this step needs to be done in Desktop Mode
## Information
Read up on [BIOS & Firmware](https://github.com/XargonWan/RetroDECK/wiki/BIOS-and-Firmware)
* The BIOS & Firmware files go into the `~/retrodeck/bios/` directory <br>
**Example:**<br>
You have a BIOS for the PSX called `exampleBIOSPSX.bin`, you just put that file into the `~/retrodeck/bios/` folder.
# Step 3: ROMs
**NOTE:** On the Steam Deck this step needs to be done in Desktop Mode
## On ROMs
Rom files needs to be put in their corresponding system directory inside the `roms` folder.<br>
Note that the `roms` folder location can be different depending on where you choose to put it during the installation process. The following options are available during the installation:
### **Choice: Internal**<br>
If during the installation of RetroDECK you choose the Internal option for the roms folder:<br>
The roms folder is:`~/retrodeck/roms/`
### **Choice: SDCard**<br>
If during the installation of RetroDECK you choose the SDCard option for the roms folder:<br>
The roms folder is: `<sdcard>/retrodeck/roms/`<br>
(Please note that the `<sdcard>` is an example and not called so inside your Linux/SteamOS system but rather your unique per SDCard ID number).<br>
## Let's get started on ROMs:
Read up on [Emulators: Folders & File extensions](https://github.com/XargonWan/RetroDECK/wiki/Emulators-Folders-&-File-extensions) to see what folder each system has.
* Put the corresponding roms inside the corresponding system folder
**Example:**<br>
You have an example NES game called `ExampleNESGame.nes` <br>
You have to put that game into the `/retrodeck/roms/nes` folder.
# Step 4: Playing the ROMs
## Steam Deck - Gamemode
Return to gamemode on the Steam Deck and start up RetroDECK. Now the systems you put rom files for should be shown and be able to be played.
**Example:**<br>
The NES column should now be shown with our `ExampleNESGame.nes` from `Step 3`
# Step 5: Making the games "pretty" with videos, images and art.
Do the following:
1. Make an account on https://www.screenscraper.fr/
2. Read up on scraping on the [ES-DE Guide](https://github.com/XargonWan/RetroDECK/wiki/EmulationStation-DE-User-Guide#scraping-and-editing-roms-metadata-images-etc)
3. Login to your screenscraper account inside RetroDECK and start scraping.
4. Look at your nice pretty games.
Also read:
* [I got some weird error message about quota after scraping in a foreign language from screenscraper.fr](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#i-got-some-weird-error-message-about-quota-after-scraping-in-a-foreign-language-from-screenscraperfr)
* [My system storage ran out after scraping!](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#my-system-storage-ran-out-after-scraping)
# Step 6: Themes
RetroDECK comes with several themes built in for the ES-DE interface.
## How to switch between themes?
* On the Steam Deck: you can switch between them by pressing the `☰` button to open the menu and then navigate to `UI Settings > Theme Set` to select the theme you want to use.
## How to add more themes?
[More information on themes and how to add more](https://github.com/XargonWan/RetroDECK/wiki/EmulationStation-DE-Themes)

View file

@ -1,17 +0,0 @@
# Not yet officially implemented in RetroDECK
Some of these features can be configured by the users manually but work is being done to implement across the board over time.
**Missing features:**
* Cloud saves
* Netplay
* External controller support *
* External display resolution support
* Not all Emulators supported by ES-DE are included as of this moment (more will be added all the time).
* A configurator that is controller usable
* Better art
( * External controller support "semi works" in some emulators if you have docked the Steam Deck and pair a Bluetooth controller inside the Steam Gamemode GUI. Not all hotkey combinations will work how ever!)
# Issues, bugs and suggestions
For a list of reported issues please check here on github: [RetroDECK issues](https://github.com/XargonWan/RetroDECK/issues)

View file

@ -1,93 +0,0 @@
# RetroDECK
https://github.com/XargonWan/RetroDECK/blob/main/LICENSE
# Features, front-end and assets
## ES-DE
https://gitlab.com/es-de/emulationstation-de/-/blob/master/LICENSE
https://gitlab.com/es-de/emulationstation-de/-/tree/master/licenses
## Pixelitos
https://github.com/ItzSelenux/pixelitos-icon-theme/blob/main/LICENSE
## Kenny.nl
CC0 & CC1 (Various assets) <br>
https://www.kenney.nl/assets
# Emulators & Software
## RetroArch & LibreRetro
https://docs.libretro.com/development/licenses/
## Duckstation
https://github.com/stenzek/duckstation/blob/master/LICENSE
## RPCS3
https://github.com/RPCS3/rpcs3/blob/master/LICENSE
## Dolphin & Primehack
https://github.com/dolphin-emu/dolphin/blob/master/LICENSE
https://github.com/Kekun/primehack/blob/master/LICENSE
## MAME
https://github.com/mamedev/mame/blob/master/COPYING
## Yuzu
https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt
## Ryujinx
https://github.com/Ryujinx/Ryujinx/blob/master/LICENSE.txt
## Citra
https://github.com/citra-emu/citra/blob/master/license.txt
## Xenia
https://github.com/xenia-project/xenia/blob/master/LICENSE
## Cemu
https://github.com/cemu-project/Cemu/blob/main/LICENSE.txt
## Xemu
https://github.com/xemu-project/xemu
## PPSSPP
https://github.com/hrydgard/ppsspp/blob/master/LICENSE.TXT
## MelonDS
https://github.com/melonDS-emu/melonDS/blob/master/LICENSE
## PCXS2
https://github.com/PCSX2/pcsx2/blob/master/COPYING.GPLv3
## Vita3K
https://github.com/Vita3K/Vita3K/blob/master/COPYING.txt
## ZDoom / GZDoom
https://github.com/ZDoom/gzdoom/blob/master/LICENSE
## ScummVM
https://github.com/scummvm/scummvm/blob/master/COPYING
## Capsimg
https://github.com/rsn8887/capsimg/blob/master/LICENCE.txt

View file

@ -1,87 +0,0 @@
# Where to put the games?
PS3 games comes either as a Blu-ray rip directory (folder) with a bunch of different files or a digital PSN title that needs to be installed (see guide on this page).
PS3 games should be put under the `retrodeck/roms/ps3/` directory.
# How to: Install the PS3UPDAT.PUP firmware
There are two ways to install the firmware:
## Install PS3 firmware from RetroDECK Configurator
1. Open RPCS3 `RetroDECK Configurator` - `RetroDECK: Tools` - `Install: PS3 Firmware`.
2. Press `OK` and this will download the PS3 Firmware and open RPCS3.
3. You will get a prompt asking if you want to install the firmware from the /tmp/ folder, say `Yes`
4. Wait for the installation to finish
5. Exit RPCS3 from the GUI under `File -> Exit`
## Manual Download
1. Download the latest PS3 firmware `PS3UPDAT.PUP` from Sony [here](https://www.playstation.com/en-us/support/hardware/ps3/system-software/)
2. Open RPCS3 `RetroDECK Configurator -> Open Emulator -> RPCS3`.
3. In the RPCS3 interface navigate to `File -> Install Firmware`.
4. In the file browser navigate and select the file `PS3UPDAT.PUP` file.
5. The firmware should now be installed.
# How to: Get games to show up inside the ES-DE interface
To get the games to show up you need to rename the directory to end with a `.ps3` file extension.
_Example:_
You have directory dump of the a game Blu-ray PlayStation 3 game called Hockey World, the directory is called `Hockey World`.
To get the it to show up you need to rename and add `.ps3` in the end of the directory name.
The directory `Hockey World` becomes `Hockey World.ps3` and the game will show up.
# How to: Install DLC or patches on disc based games
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`. If you want to do it in `Game Mode` you need to press the `Steam` button and switch between windows using the window switcher.
If you want to install some DLC or patch you can do that trough RPCS3 itself.
1. Open RPCS3 `RetroDECK Configurator -> Open Emulator -> RPCS3`.
2. In the RPCS3 interface navigate to `File -> Install Packages/Raps/Edats`.
3. In the file browser navigate and select the file you want to install.
4. The file will be installed inside the a new game directory on the RPCS3 hard drive under
`retrodeck/bios/rpcs3/dev_hdd0/game/GAMEID` where `GAMEID` is unique for each game [PS3GAMEID-List](https://www.gametdb.com/PS3/List).
5. The patches or dlc should now be installed and in the GAMEID directory.
6. Move the content of the GAMEID directory into the games directory inside the `retrodeck/roms/ps3/GAMENAME.ps3` directory and overwrite & replace the files.
8. You can now remove the `retrodeck/bios/rpcs3/dev_hdd0/game/GAMEID` directory as the files have been moved.
9. The game can be launched inside the ES-DE interface with patches and DLC installed.
_Example:_
The game `Hockey World.ps3` inside the `retrodeck/roms/ps3/` has some DLC & and a patch you want to install.
You follow the above guide and install the files.
The installation made a newly created directory called `BCA111111` under `retrodeck/bios/rpcs3/dev_hdd0/game/`.
You open up the directory `retrodeck/bios/rpcs3/dev_hdd0/game/BCA111111` and copy all of it's content and paste it into `retrodeck/roms/ps3/Hockey World.ps3` directory and replace/overwrite the files.
You can then remove the `BCA111111` directory in `retrodeck/bios/rpcs3/dev_hdd0/game/`
# How to: Install digital PSN titles
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`. If you want to do it in `Game Mode` you need to press the `Steam` button and switch between windows using the window switcher.
If you want to install some PSN tiltes you can do that trough RPCS3 itself.
1. Open RPCS3 `RetroDECK Configurator -> Open Emulator -> RPCS3`.
2. In the RPCS3 interface navigate to `File -> Install Packages/Raps/Edats`.
3. In the file browser navigate and select the file you want to install.
4. The file will be installed inside the games directory on the RPCS3 hard drive under
`retrodeck/bios/rpcs3/dev_hdd0/game/GAMEID` where `GAMEID` is unique for each game [PS3GAMEID-List](https://www.gametdb.com/PS3/List).
5. Install any patches or DLC for the game by repeating step .2 and .3 for each file.
6. After the game is ready move the digital games directory from `retrodeck/bios/rpcs3/dev_hdd0/game/GAMEID` to `retrodeck/roms/ps3`
7. Rename the directory to the name of the game and add the .ps3 file extension to the end of the directory (see guide on top).
8. The game should now show up and be playable inside the ES-DE interface.
_Example:_
You installed a file that contained the digital game Hockey World 2, it created a directory called `BCA123456` under `retrodeck/bios/rpcs3/dev_hdd0/game/`
After that you moved `BCA123456` from `retrodeck/bios/rpcs3/dev_hdd0/game/` to `retrodeck/roms/ps3`.
The directory `BCA123456` is renamed to `Hockey World 2.ps3`.

View file

@ -1,154 +0,0 @@
# The RetroDECK Configurator
The `RetroDECK Configurator` is a unique multi-use toolbox that exists within RetroDECK to manage/configure/change/reset/edit many aspect of the application and built around the `RetroDECK Framework`.
The`RetroDECK Configurator` can be found:
* In the main menu inside the ES-DE interface
* From CLI
* From the `.desktop` desktop shortcut.
What follows are the commands you can use inside the Configurator (more commands will be added during development).
# Presets & Settings
In this menu you can set various presets.
## Global: Presets & Settings
In this menu you will find presets and settings that span over multiple emulators.
### RetroAchivements: Login
Login to RetroAchievements in all supported emulators and cores.
### RetroAchivements: Logut
Logut from RetroAchievements in all supported emulators and cores.
### RetroAchivements: Hardcore Mode
Enables `Hardcore Mode` from RetroAchievements in all supported emulators and cores.
### Widescreen: Enable/Disable
Enables or disable Widescreen in all supported emulators and cores.
### Swap A/B and X/Y: Enable/Disable
Swaps `A/B` `X/Y` in all supported emulators and cores.
### Ask to Exit prompt: Enable/Disable
Enables or disables ask to exit prompts in all supported emulators and cores.
Note: If you disable this, the emulators will directly exit.
## RetroArch: Presets & Settings
In this menu you will find presets and settings for RetroArch.
### Borders: Enable/Disable
Enable / Disable borders across the RetroArch cores you choose.
### Rewind: Enable/Disable
Enable / Disable rewind across all of RetroArch (this may impact performance on some more demanding systems).
## Wii & Gamecube: Presets & Settings
In this menu you will find presets and settings for Dolphin and Primehack.
### Dolphin Textures: Universal Dynamic Input
Enable / Disable Venomalias's Universal Dynamic Input Texture for Dolphin.
### Primehack Textures: Universal Dynamic Input
Enable / Disable Venomalias's Universal Dynamic Input Texture for Primehack.
# Open Emulator
Here you launch and configure each emulators settings, the option you choose will open that emulators GUI. For documentation on how to change the settings of each emulators settings please check the website of each emulator.
(Please note that several emulators where not designed with controller input in mind for handling the applications GUI, just the games. So you might need to use other inputs like the Steam Decks touchscreen or a mouse and key board to navigate properly).
The options are the following:
## RetroArch
Opens RetroArch
## Citra
Opens Citra
## Dolphin
Opens Dolphin
## Duckstation
Opens Duckstation
## MelonDS
Opens MelonDS
## PCSX2
Opens PCSX2
## PPSSPP
Opens PPSSPP
## RPCS3
Opens RPCS3
## XEMU
Opens XEMU
## Yuzu
Opens Yuzu
# RetroDECK: Tools
## Tool: Move files
This option lets you choose the installation path of the RetroDECK folder that handles ROMS,Saves, BIOS etc... to a new location.
You get the following three options.
`Internal Storage` - Moves the folder to the internal storage. <br>
`SD CARD` - Moves the folder to the SD CARD <br>
`Custom Location` - Choose where you want the RetroDECK folder to be.<br>
## Tool: Compress games
This option enables you to compress disc based game image files `.gdi` `.iso` `.bin` `.cue` to the less space demanding `.chd` format.
You can choose either a single game or many.
## Install: RetroDECK SD Controller Profile
This option installs the Steam Deck controller profile to RetroDECK it also resets all emulators configurations to input the correct bindings.
## Install: PS3 Firmware
This option downloads and installs the latest PS3 firmware. You will have to press OK to install it.
## RetroDECK: Change update settings
This option lets you turn on or off automatic updates on launch.
# RetroDECK: Troubleshooting
## Backup: RetroDECK Userdata
Creates backups of the user data folders
## Check & Verify: Multi-file structure
Verifies to the structure of multi disc/file games that uses `.m3u` files.
## Check & Verify: BIOS
Shows a detailed BIOS list of missing and current BIOS.
## RetroDECK: Reset
The reset menu resets various features
### Reset Specific Emulator
Opens up a menu where you can reset a specific emulator
### Reset All Emulators
Resets all the emulators at once
### Reset RetroDECK
Resets the entirety of RetroDECK.
⚠️ WARNING! BACK UP YOUR DATA BEFORE RUNNING THIS! ⚠️
# RetroDECK: About
This menu contains information about RetroDECK
## Version history
Displays the changelogs
## Credits
Displays the credits

View file

@ -1,99 +0,0 @@
# Credits & The Team
This is the page where we try to introduce the team and thank everyone who have contributed to the project so far.<br>
If you feel you have contributed to the project but lacks mention, please contact us on discord! <br>
# The Team
## Community Management
### [Lazorne](https://github.com/Lazorne)
Community management/outreach, testing, documentation, feature suggestions and some design.
<details><summary>.</summary>
Internal meme lord and leader of the "Nordic Pizza Heresy Cult". Instigator of the internal pizza war and "Banana Warlock".
</details>
## Developers
### [XargonWan](https://github.com/XargonWan)
RetroDECK project founder and also one of the founding members of [AmberELEC](https://amberelec.org/).
<details><summary>.</summary>
General of the "Italian Pizza Legion" in the internal pizza war.
</details>
### [IceNine451](https://github.com/icenine451)
Creator of the `RetroDECK configurator`, the `RetroDECK Framework` and various cool things.
<details><summary>.</summary>
Freedom loving leader of the "Murican Cheese Crust Patriots" in the internal pizza war.
</details>
### [Lx32](https://github.com/Lx32)
Develops various new features, functions and tools.
<details><summary>.</summary>
1st Commander of the "Italian Pizza Legion" in the internal pizza war.
</details>
## Testers
### [dottormac](https://github.com/redeemer666)
Does bleeding edge cooker testing (lives in the danger zone), some feature suggestions and design.
<details><summary>.</summary>
2nd Commander of the "Italian Pizza Legion" in the internal pizza war (might be a spy for the Nordic Cult or Muricans).
</details>
# Collaborators
### [Niroku / Atari](https://github.com/Hew-ux)
Helps with community management, is also part of [Batocera](https://batocera.org/)
### [Leon Styhre](https://gitlab.com/leonstyhre)
Maker of EmulationStation Desktop Edition
### [anthonycaccese](https://github.com/anthonycaccese/)
Theme creator for ES-DE and [AmberELEC](https://amberelec.org/)
### [Zurdi](https://github.com/zurdi15)
Creator of RomM and other projects.
# Additional credits
### [RavenKilit](https://github.com/RavenKilit)
Did some code and testning, contributed to [AmberELEC](https://amberelec.org/)
### MorGuux
Made the RetroDECK steamdb graphics for the old logo
### Pixelguin
Made the new logo and steamdb graphics
### teotwaki
Generous cloud hosting sponsor
### [Gabeboii](https://github.com/gabeeeboii)
Webmaster
### Draco
Server Administration
### [ItzSelenux](https://github.com/ItzSelenux)
Maker of [pixelitos](https://github.com/ItzSelenux/pixelitos-icon-theme)
### [Kenny.nl](https://twitter.com/KenneyNL)
[The Kenny.nl project](https://www.kenney.nl/) provides several free game assets under open licenses.
# Special Thanks
We want give special thanks to:
* Our [Patreons](https://www.patreon.com/RetroDECK) that keeps the build servers running and provide feedback.
* All related emulation projects.
* All people that have put both time and money into emulation projects.
* All the users who help others with support, guidance and good spirit.
* All the users who help with testing and reporting issues.
* All the community creators who creates various art and assets for the community.
You are the ones that makes this project possible.

View file

@ -1,80 +0,0 @@
# Discord
## Rules: DO NOT
1. DO NOT: Discuss any type of piracy whatsoever.
2. DO NOT: Ask for roms, bios, games and where/how to find them and don't PM the RetroDECK team members about it either.
3. DO NOT: Post NSFW & NSFL content.
4. DO NOT: Try to sell or promote your products and/or services, this is not a store or a marketplace (discussing experiences, asking for advice and reviews of products related to gaming and retro gaming is fine).
5. DO NOT: Post hateful comments.
6. DO NOT: Discuss your political or religious viewpoints here.
7. DO NOT: Attack server members in the channels or private in PMs on: political viewpoints, religious/non religious believes, gender, race, sexual orientation, age or any other way (if you have been attacked please message a mod in a PM).
8. DO NOT: Spam or flood the channels.
9. DO NOT: Share information or pictures about leaked games.
10. DO NOT: spoil any new or old game or media. If you want to write about it, use the ||spoiler tag|| to prevent to ruin other user's fruition.
<details><summary>Rule 42</summary>
DO NOT : Break the space time continuum with time travel and/or para dimensional travelling.
</details>
## Rules: DO
11. DO: Try to keep memes, light spam and funny posts in the ⁠🐸-random-memes channel (however flooding is always prohibited and all server rules must till be respected even in this channel).
12. DO: Be patient, be polite, dont swear and be respectful to each other.
13. DO: Try your best to keep the topic in the correct channel.
14. DO: Try your best to help each other.
15. DO: Be mindful that the RetroDECK team is working on this project out of passion and spending their own free time to make it happen. You can't expect 24/7 hours support and help. When you do feel the need to ask for help or advice from the RetroDECK team respect rule 11.
# Lemmy / Reddit
### 1. DO NOT: Post links/discussion of illegal, copyrighted, pirated or leaked content.
* Post links directly to pirated games, ROMs, BIOSes or shader caches.
* Partake in discussion or encouragement to in piracy.
* Ask for technical support for pirated games/software.
* Post links or discussions to leaked content of any kind.
* Censoring or obfuscating parts of an link to any part of the content above to bypass filters.
### 2. DO NOT: Post NSFW & NSFL content.
### 3. DO NOT: Make posts about: buying, selling, trading, begging, giveaways, self or crowd-funding without asking.
* You cant promote crowd-funding, begging, affiliate links or other form of raising funds without asking.
* Discussing experiences, giving advice or reviews of products related to gaming and retro gaming is always OK!
* All promotions or marketing must be vetted and approved by the RetroDECK team on Discord.
### 4. DO NOT: Make posts about anything other then RetroDECK, Emulation or community relevant content.
### 5. DO NOT: Post hateful comments or posts.
* Dont attack any community member on: political viewpoints, religious/non religious believes, gender, race, sexual orientation, age or any other way (if you have been attacked please message the a mod here or on discord).
* Be patient, be polite, be kind, dont swear and be respectful to each other.
### 6. DO NOT: Discuss your political or religious viewpoints here.
### 7. DO NOT: Spread misinformation
* Spread intentional misinformation.
* Impersonate another: entity, company or person.
# Vivi e lascia vivere
// RetroDECK Team

View file

@ -1,14 +0,0 @@
# How RetroDECK was born?
Let's take a step back.
RetroDECK was born on March 4th 2022 in Kyoto, Japan, with the name of [351EDECK](https://imgur.com/a/tGC9ZGO) because I am also one of the founding members of 351ELEC, now [AmberELEC](https://amberelec.org/).
What I wanted to do was to "port" 351ELEC to the Steam Deck, but instead of doing a custom firmware to flash, doing it as an application that could be launched from Steam.
Eventually, after talking to the other team members, we decided that we didn't want to support another platform such as Steam Deck, so I decided to continue the project on my own, renaming it to RetroDECK.
Back then I had many options on how to create 351EDECK, such as a bash script, appimage and flatpak.
In the beginning I opted for a simple shell script, in fact RetroDECK/351EDECK v0.1a existed as a mere shell script.
However I had bad feedbacks from the community because someone was feeling unsafe to give my script the root privileges so evaluating the Steam Deck use case I felt like it was not the right direction to take, the people was not feeling comfortable to give the sudo to a random script downloaded from the internet, so they asked to packetize it in some way.
Valve suggests the flatpak technology to port the applications on Steam Deck so, I decided to follow their guidelines, and I created the RetroDECK that you know today, starting from a Manjaro virtual machine as a development environment because I didn't have a Steam Deck yet.
-Xargon

View file

@ -1,110 +0,0 @@
# How do I install RetroDECK on the Steam Deck?
## Quick start guide
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
- Install RetroDECK from Discover
- Start RetroDECK first time in Desktop Mode
- Choose where RetroDECK should create the `roms` folders `Internal` or `SDCard`.
- Put the BIOS inside `~/retrodeck/bios/` for more information read: [[Emulators: BIOS and Firmware]]
- Put the ROMS inside `~/retrodeck/roms/` or `<sdcard>/retrodeck/roms/` depending on your choice
- In Steam desktop go to the tab `Games` press `Add non Steam game to My library` and select RetroDECK to add it into your library. If that is not working you can `Right Click` on the RetroDECK desktop icon and press `Add to Steam` in the menu.
- **Optional way:** Get RetroDECK Steam Grid art and add it to your Steam library with BoilR. Or add the art manually from [SteamgridDB](https://www.steamgriddb.com/search/grids?term=RetroDeck) for the Steam Grid.
- Switch over to game mode and go to RetroDECK on the Steam Grid under `Library > Non-Steam`
- Add the Official Layout under `Controller Settings` -> `Controller Layouts` -> `Templates` in the Steam Deck called `RetroDECK: Official Layout` with a version number and apply
- Launch RetroDECK and enjoy
### Other quick tips:
- Read up on the [[Steam Deck: Hotkeys and controls]] to ease your navigation.
- Read up on the [[EmulationStation DE: User Guide]]
- Check out our other software recommendations [[Steam Deck: Software recommendations]].
- Check various optional optimizations that can make some emulators run even better [[Steam Deck: Optimizations]].
## Full step by step guide:
### Step 1: Go to Desktop Mode
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
### Step 2: Install from Discover
- Open the Discover application.
- **NOTE:** Depending on what language you have set in Desktop mode your Discover application can be named differently.
- Inside Discover search for RetroDECK and press the install button.
- After the installation is finished, launch RetroDECK from Discover or in the program menu under `Games > RetroDECK`.
- Follow the first time setup instructions and choose where RetroDECK should create the `roms` folders `Internal` or `SDCard`.
- Open Steam while still in desktop mode.
- Inside Steam go to the tab `Games` press `Add non Steam game to My library` and select RetroDECK to add it into your library.
- After this is done you can now see RetroDECK in Steam Deck's gamemode after you return to it from desktop mode.
### Step 3: Configure the official controller layout
- Go back into gamemode by pressing the return to gamemode icon on the desktop.
- Go to RetroDECK on the Steam Grid under `Library > Non-Steam`
- Press the `Controller Icon`
- Go into `Controller Layouts` and press `Templates`
- Add the layout for RetroDECK called `RetroDECK: Official Layout` with a version number.
- You can now use RetroDECK and it's ready to populate with ROMS.
- If you are unsure on how to add ROMS and BIOS to RetroDECK follow the [Getting Started Guide ](https://github.com/XargonWan/RetroDECK/wiki/How-to-Getting-started) from Step 2 and onward on how to add them.
### Step 4 (Optional): Extras
- Get RetroDECK Steam Grid art with BoilR or add it manually from [SteamgridDB](https://www.steamgriddb.com/search/grids?term=RetroDeck) for the Steam Grid.
- Check various optional optimizations that can make some emulators run even better [[Steam Deck: Optimizations]].
- Read up on the [[Steam Deck: Hotkeys and controls]] to ease your navigation.
- Read up on the [[EmulationStation DE: User Guide]]
- Check out our other software recommendations [[Steam Deck: Software recommendations]].
# How do I update RetroDECK on the Steam Deck?
## Automatic Updates
RetroDECK features Automatic Updates and should download the latest version when you start the application.
This feature can be turned off inside the `RetroDECK Configurator`.
## Manually from Desktop Mode:
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
- Open the Discover application.
- Click on the updates tab.
- If there are any updates available it will be shown here.
- Click on the `Update` or `Update all` buttons.
# How do I move my installation to a new Steam Deck?
**Note:** depending on how comfortable you are using the Steam Deck controller to navigate the desktop environment, this may be easier to do with a connected mouse and keyboard.
The general process is as follows:
1. Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`.
2. Back up existing RetroDECK files.
3. Install RetroDECK on your new Steam Deck [from the Discover store](#step-2-install-from-discover).
4. Before starting RetroDECK, restore files that were backed up in Step 1.
5. Start RetroDECK.
### Step 1: Back up your existing files
You will need to backup two directories: the main `retrodeck` folders and a hidden `net.retrodeck.retrodeck` folder.
- First put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`.
- Main `retrodeck` folder
- Open the Dolphin File Manager (the folder icon in the taskbar).
- Navigate to `/home/retrodeck/`. This folder should contain sub-folders such as `bios`, `roms`, and `saves`.
- Copy all contents of this directory to a folder on another device, such as a thumb drive, microSD Card, or NAS
- Hidden `net.retrodeck.retrodeck` folder
- Return to `home`
- Find the "hamburger" menu button (three horizontal lines in the top-right). Open the menu and select `Show Hidden Files`. If on a keyboard, you can type `Ctrl+H`.
- Navigate to `home/.var/app/net.retrodeck.retrodeck/`. Again, copy all contents of this directory to a folder another device, such as a thumb drive, microSD Card, or NAS.
- Ensure that you are keeping your backups of these two directories in two separate folders.
### Step 2: Install RetroDECK on your new Steam Deck
- Follow steps 1 and 2 of the [standard installation guide](#step-2-install-from-discover).
- Stop after Step 2.
- **Do not open RetroDECK yet!**
### Step 3: Restore your backed up files
- Restore your backed up contents of `retrodeck` to `/home/retrodeck/` on the new device.
- Restore your backed up contents of `net.retrodeck.retrodeck` to `home/.var/app/net.retrodeck.retrodeck/` on the new device.
- In both cases, you can safely overwrite all existing files.
### Step 4: Return to Game Mode and launch RetroDECK
- Launch RetroDECK from Game Mode and continue with steps 3 and 4 of the [standard installation guide](#step-4-optional-extras).
- Don't forget to install the official controller profile!

View file

@ -1,65 +0,0 @@
# What are some optimizations for the Steam Deck to make emulation even better?
These optimizations are entirely optional and but they can give you better performance on some more demanding emulators.
## Increase the VRAM to 4GB
This increases the VRAM to 4GB in the BIOS, this can give you improvements in certain emulators.
* Power off your Steam Deck completely
* Hold the `Power Button` and `Volume Up Button` until you hear a chime/beep and release the buttons.
* Click on `Setup Utility`
* Click on `Advanced`
* Change`UMA Frame buffer Size` to 4GB
* Save and Exit
## Setup a sudo password
[What is sudo?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#what-is-sudo)
This is a requirement for many optimizations and solutions, it also makes your Deck safer.
It enables you to run commands/applications heighten sudo privileges.
* Go to `Desktop Mode`
* Open `Konsole` or another `Terminal`
* Type `passwd`
* You will now set your new sudo password
* After you are done you can close the terminal
## Install CryoUtilities
This requires that you have set up a sudo password.
This will create a 16GB SWAP file that can improve the performance for some emulators. Note that it will take up that extra space on your Steam Deck.
There is a official video [here](https://www.youtube.com/watch?v=C9EjXYZUqUs&t=17s)
* Go to `Desktop Mode`
* Open a web browser and go to the [CryoUtilities](https://github.com/CryoByte33/steam-deck-utilities) github page
* Click on releases
* Download the latewst `cryo_utilities` version and save to the Desktop or Home folder
* Double click on the file and it will begin the installation
* After installation is complete you will find a new desktop icon `CryoUtilities`
* Click on `CryoUtilities`
* Click on `Recommended Settings`
* It should now be done
## Install Decky Loader
Decky Loader is a [homebrew plugin store](https://beta.deckbrew.xyz/) for the Steam Deck and it also enables `CEF Remote Debugging` during installation.
This requires that you have set up a sudo password.
* Go to `Desktop Mode`
* Open `Konsole` or another `Terminal`
* Type `curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh`
* Decky Loader should now be installed and you can go back into `Game Mode`.
* To access Decky Loader you only need to press the `Menu Button - (•••)`
### Decky Loader: Install Power Tools
Power Tools allows you to tweak various performance settings of the Steam Deck.
What the best setting is differs per emulator or even per game.
Decky Loader is a requirement.
In Game Mode:
* `Menu Button - (•••)`
* Go into Decky Loader
* From the Store install Power Tools
* This will add a 🔌 icon to the `Menu Button - (•••)` where you can access Power Tools.

View file

@ -1,38 +0,0 @@
# Any other recommended software?
The following software works great with the Steam Deck and might enhance your RetroDECK experience (these are entirely optional to install).
There is a guide on how to install several of them under [Steam Deck: Optimizations](https://github.com/XargonWan/RetroDECK/wiki/Steam-Deck%3A-Optimizations).
# Steam Deck specific recommendations
For general Linux Desktop recommendations go to [Linux Desktop: Software recommendations](https://github.com/XargonWan/RetroDECK/wiki/Linux-Desktop-Software-recommendations) as many of them also work on the Steam Deck.
## CryoUtilities
Scripts and utilities to improve performance and manage storage on the Steam Deck.
_Made by CryoByte33_
[CryoUtilities](https://github.com/CryoByte33/steam-deck-utilities)
## Decky Loader
Is a great piece of software that allows custom plugins inside Steam Deck's gamemode. It can open up more advanced features then the standard Steam Deck experience offers. But it's a bit more technical to install, please follow the guide on their github.
_Made by Steam Deck Homebrew Team_
[Decky Loader](https://github.com/SteamDeckHomebrew/decky-loader)
## PowerTools
If you install the Decky Plugin Loader above you can download the PowerTools application from the plugin store that let's you do advanced tweaking of the Steam Decks hardware. This can greatly improve performance on certain games in the PS2,GC and above generations. But it requires you to find the knowledge of what setting works best for each game and/or emulator.
_Made by NGnius_
[PowerTools](https://github.com/NGnius/PowerTools)
## Discover Overlay
If you use Discord this is a program that adds Discord integration into the Steam Deck's gamemode UI.
It's already in on flathub and downloadable in Discover. Note that you need to install and login to Discord as well.
_Made by trigg_
[Discover Overlay](https://trigg.github.io/Discover/)

View file

@ -1,554 +0,0 @@
# RetroDECK 0.7.1b
### Release Date: 2023-08-22
## Information:
- Steam Deck users update RetroDECK from `Discover` in Desktop Mode.
- Don't forget to reapply the latest controller layout: Go into the `Templates` tab and reapply the new profile ending with 0.7.1b (there is no need to reinstall the entire layout from the Configurator).
## Bugfixes & other changes:
- Fixed an issue to make sure the RD controller layout file at update with each RD update.
- Fixed an issue with PPSSPP that made `L` and `R` incorrectly bound.
- Fixed an issue in the Configurator that prevented the Yuzu preset for swapping A/B X/Y from working.
- Fixed an notification issues on the latest SteamOS Beta releases.
- Fixed an rsync permissions issue in the RetroDECK Framework.
- Updated Yuzu presets to handle new config syntax in the RetroDECK Framework.
- Changed auto-update to notification only, until permissions error can be worked out.
- Added some new pixelart icons by ItzSelenux (pixelitos-icon-theme)
## Updates
- All Emulators and ES-DE have been updated
## Steam Deck - Global Controller Layout:
We have done some changes based on community feedback
**Layout Changes:**
- `Select` is now a hotkey trigger while pressing it down, `L4` and `R4` are still triggers as well.
- The RetroArch combo of `Select` + `Start` = `Quit` now works on many SA-Emulators.
- `Open Menu` is removed from `Select`.
- `R5` = `A` button (this allows for great Wii controls on the right touchpad and pressing down the R5 for A).
- `L5` = `B` button.
**Global hotkey changes:**
- `Open Menu` is on `Y`.
- `Increase Emulation Speed` is on `Dpad-UP`.
- `Decrease Emulation Speed` is on `Dpad-Down`.
- `Fullscreen OFF` command is removed (as emulators have migrated to toggle).
## Known issues
- The built in auto-updater is not working (we are working on it). Discover is ok.
- Some emulators don't have hotkey support or have bugs affecting their hotkeys.
# RetroDECK v0.7.0b - Amazing Aozora
### Release Date: 2023-06-16
## Read First Important Changes!
* `PCSX2-SA` latest updates are not compatible with old save states. Please make sure you do an in-game save to your virtual memory card before upgrading.
* The following emulators have changed the defaults and now run the stand-alone version: `Dolphin`, `Citra`, `PPSSPP`. <br>
If you have saves states or just want to go back to the RetroArch version, you can always switch back by pressing: `Other Settings` `Alternative Emulators` and set them back to the core versions.
* If you decide to install the new `RetroDECK Controller Layout` for the Steam Deck (highly recommended), it will wipe your custom configurations and emulator settings. Thats because all the configs needs to be updated and changed to be compatible. <br>
The choice is yours (you can always install it later via the Configurator if you change your mind).
## New Emulators
- Wii U powered by CEMU
- We had hopes to add MAME standalone as well but we had to push it towards a future update because of various issues. That's why there is a MAME submenu in the new radial menus.
## New General Features
### New - Steam Deck Controller Layout
Please read up on: https://github.com/XargonWan/RetroDECK/wiki/Steam-Deck%3A-Hotkeys-and-controls
- All hotkeys for all emulators have been unified where possible.
This Steam Deck Controller Layout features both
- Radial input menus on the left touchpad.
- Button bound hotkeys you can access by either holding R4 or L4.
**Installation of the layout:**
**From an upgrade:**
A upgrade from a older version to 0.7b you will get a prompt during the upgrade process that asks you if you want to install the layout. If you choose to do this (highly recommended), it will reset your emulators custom configurations if you had them.
**For everyone (upgrade or fresh install):**
After installation need to manually enable the config as under (you also need to do this for a new RetroDECK install): <br>
`Controller Settings` -> `Controller Layouts` -> `Templates` `RetroDECK: Official Layout` with a version number.
**NOTE:**
Not all Emulators has hotkey support; some have partial support, some has none and some has a majority implemented.
**Known issues:**
PPSSPP has an issue with flatpak hotkeys currently on their github so we have mapped ESC `HK + R3` ( press the `Escape` key from the radial menu) to `Open PPSSPP Menu`. In this way you can shutdown, save and access PPSSPP functions from there.
As soon as the issue is solved we will remap everything to the correct hotkeys.
### New - RetroDECK system folders
Handling modpacks and texture packs has never been easier! You can read more on the wiki!
https://github.com/XargonWan/RetroDECK/wiki
**New folder: Mods**
`retrodeck/mods/` Inside you will find easy to access mod folders for the following systems: Citra ,Dolphin, Primehack, Yuzu
**New folder: Texture Packs**
`retrodeck/texture_packs/` inside you will find easy to access texture pack folders for the following systems: Citra, Dolphin, Duckstation, PCSX2, PPSSPP, Primehack, RetroArch-Mesen, RetroArch-Mupen64Plus
**New folder: Gamelists**
`retrodeck/gamelists` gamelists are now moved into by default for ease of access and added security.
## New - System features
- The Configurator has a new home inside the ES-DE main menu and thus the tools menu has been removed.
- The Configurator also has a .deskop icon for ease of access for both Steam Deck desktop mode and Linux Desktop users.
- Added RetroDECK auto updates on launch, this can be disabled from the Configurator this works in Game Mode for the Steam Deck.
## New RetroDECK Configurator features:
- The Configurator has a new structure, with more menus and options.
- The compression tool has been updated to allow for even more formats such as .zip in addition to the standard disc-based formats for certain systems.
- The compression tool has been updated to have an even stronger verification before a compression job starts.
- Added a global preset to swap A/B and X/Y in all supported emulators (aka N layout).
- Added a global preset to enable/disable Widescreen in all supported emulators, globally or per core/emulator.
- Added a global preset to enable/disable Ask-to-Exit prompts in all supported emulators.
- Added a preset to enable/disable Pegasus and NyNy77 Borders for RetroArch, globally or per core.
- Added an option to install Venomalia's Universial Dynamic Input Textures for Dolphin https://github.com/Venomalia/UniversalDynamicInput
- Added an RetroDECK: About section
- Added an option to install the RetroDECK Steam Deck controller profile
- Added an “RetroDECK: Auto Updates” function that enables or disables auto updates on RetroDECK launch.
- Added a Semi-automated RPCS3 firmware installer.
- The Move Folder tool has been greatly expanded
- You can now move the entire folder or different folders as you choose. (WARNING! Please do not try to move the data to more exotic locations).
- The basic BIOS checker has been removed.
- The BIOS checker has been updated to look for over 120+ BIOS.
- RetroAchivements Login: Now logs into all supported emulators/cores at once.
- RetroAchivements Logout: Now logs out of all supported emulators/cores at once.
- Added RetroAchivements: Hardcore Mode, that lets you toggle hardcore mode for supported emulators/cores with a logged in RetroAchivements account.
## Updates
- Updated ES-DE to the latest version.
- Updated RetroArch and the cores to latest versions.
- Updated all standalone emulators and to their latest versions.
## Bugfixes & other changes:
- Dolphin/Primehack Wii Mote controls have been redesigned for the Steam Deck to allow both for touch input or right radial as pointer and `R2` emulates the Wii Remote Shake needed for certain games.
- Updated the RPCS3 to run better and with a better configuration. Read more on the wiki on how to install DLC and patches.
- RPCS3 and Duckstations save files where in the wrong directory. They have been moved to fit the overall inside the RetroDECK Framework. If you have any issues, contact us on discord or add them on github.
- We made a unique PICO-8 wrapper that makes it runs better in a flatpak environment.
- Fixed an avcodec issue that caused some roms for certain emulators to break.
- Changed the ES-DE progress bar color
- Changed how Yuzu builds are handled and should allow for better Yuzu updates.
- Added a low space warning on launch.
- Various backend improvements and fixes.
- Added the foss Capsimg BIOS for the Amiga RetroArch core.
- Implemented ES-DE's experimental theme downloader. For fresh new installs we only now ship one theme: ArtBookNext (as all other themes can be downloaded from the interface).
## Experimental features:
You can enable the RetroDECK: Multi-user system and other things from CLI for testing purposes.
Read more here on how to help us with testing:
https://github.com/XargonWan/RetroDECK/wiki/How-can-I-help-with-testing%3F
There is also a Q&A on the latest blog post:
https://www.reddit.com/r/RetroDeck/comments/13x8dva/retrodeck_status_update_202306/
# RetroDECK v0.6.6b
### Release Date: 2023-04-26
### Information:
This patch is a quick hotfix for ES-DE.
## Bug fixes and other changes:
- ES-DE had the wrong buildflag and pushed the update notification.
- Reverted to the Swanstation Core for RetroArch
# RetroDECK v0.6.5b
### Release Date: 2023-04-07
### Information:
Just a quick hotfix for Yuzu (since some games where not working in 0.6.4b).
So we had to roll back to the latest working version.
Newer versions will be shipped with v0.7b
## Bug fixes and other changes:
- Rolled back to latest working Yuzu as some games had issues with the latest update.
- Slightly improved Yuzu performance by tweaking GPU options
- Fixed an issue where the default theme was not loaded
- Removed unavailable emulators entries
# RetroDECK v0.6.4b
### Release Date: 2023-04-04
## New features - General:
- Updated to ES-DE 2.0
- Added the NSO Menu Interpreted theme
- Updated all included themes
- Updated the Emulators/RetroArch + cores
## Bug fixes and other changes:
- Fixed an audio issue in the Primehack configuration
- Various backend fixes
# RetroDECK v0.6.3b
### Release Date: 2023-03-24
## New features - General:
- Added support support for multiple file compression via CLI.
## RetroDECK Configurator:
- Added support support for multiple file compression in the Configurator.
- Added safety y/n prompts to the reset functions.
- Fixed some missing layout changes.
- Renamed "Reset All" to "Reset RetroDECK".
- Moved the configurator into the RO partition for futher enhancements.
## Bug fixes and other changes:
- Fixed a bug in the compression tool with certain filenames with spaces.
- Fixed a bug where some folders were recursively symlinked.
- Fixed a bug where some emulator configs were not correctly deployed.
- Fixed a manifest bug that caused a conflict between Dolphin and Primehack in certain scenarios.
- Fixed the Configurator BIOS tool looking in the wrong location (Thanks sofauxboho for the report!)
- Implemented new configurations for Yuzu and Citra thanks to the big config file changes in the latest emulator updates in both emulators.
- Removed some leftover files from Legacy PCSX2.
- Removed the legacy "Reset Tools" command from Configurator and CLI.
# RetroDECK v0.6.2b
### Release Date: 2023-03-15
## New features - General:
- Persistent configurations when updating RetroDECK <br> (This means your custom configurations should be saved across future versions. We also laid groundwork for dynamic persistent configurations, more on that in a future update. This is the reason why it has taken quite long to fix this).
- Added Primehack controller profiles for both Xbox and Nintendo button layouts
- Added a warning when running RetroDECK in desktop mode that not all control inputs will work properly. It also comes with a "Never show again" button.
- Added CLI for CHD compression (chdman) of single games
- Reworked CLI commands and added safety "y/n" confirmations for the reset arguments.
## New features - RetroDECK Configurator:
- The RetroDECK Configurator "toolbox" has a new structure for more easy access to various tools
- The power user prompt has a "Never show again" button
- Added tool to do CHD compression (chdman) of single games (multi-game batch compression coming in a future update)
- Added tool to check for common BIOS files
- Added tool to check for common multi-file game structure issues
## Bug fixes and other changes:
- Fixed Primehack initial configuration as it was broken (will automatically reset the emulator just this once)
- Fixed Duckstation initial configuration as it was broken (will require user-performed reset just this once)
- Fixed Pico-8 initial configuration as it was broken.
- Fixed Pico-8 dual bios folders. The program files `pico8_dyn`,`pico8.dat` and `pico8` have to be manually moved to the correct location`~/retrodeck/bios/pico-8/`. The old `~/retrodeck/bios/pico8/` is renamed `~/retrodeck/bios/pico8_olddata/` to avoid confusion on where to put files. After the files have moved the `pico8_olddata `folder can be deleted.
- Fixed a bug that made the Dolphin RetroArch core not working properly (the standalone version of Dolphin always worked and is the default)
- Various backend fixes
## Updates:
- Updated all Emulators, RetroArch and libreretro cores. <br> (PLEASE NOTE! ES-DE was not updated to version 2.0, this will be done in the next major version of RetroDECK as we need more time to work on the new theme format).
# RetroDECK v0.6.1b
### Release Date: 2023-02-21
## New features:
* Added CLI option to run Configurator directly
* Added "--configure" option to RetroDECK CLI
## Updates:
* Yuzu updated to mainline-1301
## Fixes & adjustments:
* Adjusted Configuration window sizes
* Temporarily removed Ryjuinx as it was broken and had too many issues (will be added back in a future patch).
* Removed deprecated emulators from Configurator (eg. Legacy PCSX2)
* Made improvements to file-moving code
* Fixed Primehack preconfiguration and Configurator entry
* Fixed a bug where the hidden files were not moved during the directory preparation
* Fixed a bug where the symlinks were recursively placed inside the prepeared paths
* Fixed issue with missing symlink after RetroDECK base directory was moved somewhere else
* Fixed Duckstation preconfiguration
# RetroDECK v0.6.0b
### Release Date: 2022-12-27
## New Emulators
* Primehack
* Ryjuinx (Disabled in 0.6.2b)
## New Features
* Merged all tools into single Configurator
* The Configurator can now move the whole retrodeck folder eslewhere (not just the ROMs one)
* The Configurator can now reset a single emulator, all RetroArch or all Standaloned configs (so there is no need to di it via CLI anymore
* The first install is now asking where to place the whole retrodeck folder instead of requesting the location of the ROMs folder only.
## RetroArch
* Updated RetroArch to version [v1.14.0](https://www.libretro.com/index.php/retroarch-1-14-0-release/)
* Updated Cores
* Updated Cheat_db
## Updated standalone emulators
These emulators are updated to the latest version available on 31/10/2022.
* Updated PPSSPP
* Updated Yuzu
* Updated Citra
* Updated PCSX2-QT
* Updated Dolphin
* Updated Xemu
* Updated RPCS3
* Updated Duckstation
## Fixes
* PCSX2-QT is now looking for saves in the correct directory `~/retrodeck/saves/ps2/memcards` and not in `~/retrodeck/saves/ps2/pcsx2/memcards`
# RetroDECK v0.5.3b
### Release Date: 2022-10-28
## Bug fixes in v0.5.3b
* Fixed inaccessible RetroArch shaders folder
* Fixed PSP saving issue when using RetroArch core
* Fixed ROM visibility for Dolphin when running standalone, which should address ability to use AR/Gecko codes
* Changed default RPCS3 launch method to fix games not starting properly
* Fixed PCSX2 (legacy) autosave loading issue
* (Hopefully) Fixed RetroAchievements login on PCSX2-QT
## Changes in 0.5.3b
* Made Citra standalone the default 3DS emulator
## Additions in 0.5.3b
* Added Citra SA sysdata folder to RetroDECK BIOS folder
* Added Yuzu save folders to RetroDECK saves folder
* A progress window during emulator initialization where it can look like RetroDECK has crashed
# RetroDECK v0.5.2b
### Release Date: 2022-10-14
## Bug fixes in 0.5.2b
* Fixed a bug where the Citra save folder was duplicated
* Fixed a bug where scraped videos would not be played correctly for certain systems
* Fixed the Rewind Tool
# RetroDECK v0.5.1b
### Release Date: 2022-10-13
## Bug fixes in 0.5.1b
* Fixed an issue with Yuzu not being compiled correctly in 0.5.0b
# RetroDECK v0.5.0b
### Release Date: 2022-10-12
## Important: New save folder structure and migration in 0.5.0b
### General information
[I see ~ refereed in documentation and examples, what does it mean?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#i-see--refereed-in-documentation-and-examples-what-does-it-mean)
**Saves = game saves and save states**<br>
The word "saves" is used to reference both save files and save state files in this wiki article. Both files are treated in the same manner, the only difference is that saves are located at.
**PLEASE BE PATIENT:** <br>
The migration of the saves only needs to be done once. <br>
Depending on how large roms library you have, this migration can take several minutes.<br>
If you have an extremely large roms library (+5.000 roms) this process can take over an hour.
### Why are you changing the save folder structure?
In the long run, it is about the safety of your saves and we feel it's better to tackle this now during the beta period then later.
By default, RetroArch (which handles emulation of most older systems) puts all your saves together in one folder. <br>
This is normally not an issue, but what you if you want to play the same game but different versions of it across multiple systems? <br>
RetroArch has no way of telling the difference between a save for `Mortal Kombat 3` on the Sega Genesis and on the Super Nintendo when the saves are all bundled together. RetroDECK is moving to a save storage structure where every save file is in a per system sub-folder inside of the `~/retrodeck/saves/` for game saves or `~/retrodeck/states/` for save states.
### How saves are stored in RetroDECK pre 0.5.0b:
_Example: Structure of the `~/retrodeck/saves/` folder_
~/retrodeck/saves/Final Fantasy 3.save
~/retrodeck/saves/Sonic the Hedgehog.save
_Example: Structure of the `~/retrodeck/states/` folder_
~/retrodeck/saves/Final Fantasy VI.savestate
~/retrodeck/saves/Sonic the Hedgehog 2.savestate
### How saves are stored in RetroDECK post 0.5.0b:
_Example: Structure of the `~/retrodeck/saves/` folder and with new sub-folders_
~/retrodeck/saves/nes/Super Mario Bros. 3.save
~/retrodeck/saves/genesis/Sonic the Hedgehog.save
_Example: Structure of the `~/retrodeck/states/` folder_
~/retrodeck/states/snes/Final Fantasy VI.savestate
~/retrodeck/states/genesis/Sonic the Hedgehog 2.savestate
Since RetroArch will be looking for your saves in new locations, RetroDECK will do its best to sort your saves into the new structure automatically, so you likely won't need to do anything except enjoy knowing your saves are safer than ever.
### How will it work?
* The fist time you run RetroDECK after upgrading from a previews version to 0.5.0b a new dialog prompt will appear letting you that the migration process will start after pressing `OK`.
* The migration process matches up all of your saves with all of your ROMs.
* Once a match is found, the save is moved to where the sub-folder it needs to be in.
* At the end of the process RetroDECK will let you know if any saves could not be sorted automatically.
* **NOTE:** Only saves created by RetroArch need to be sorted, standalone emulators such as Yuzu and Citra already use their own folder structure and don't need to go through this process.
* **NOTE:** If a match can't be found (for instance if you have a save for Mortal Kombat 3 and have both the SNES and Genesis editions in your ROM library) the save will be left alone and will need to be sorted manually, since only you will know for sure what system you were playing that game on.
### Where will my saves be moved to?
The saves will still be in the `~/retrodeck/saves` folder, but will also be moved into a new folder that matches what system the associated game is on.
_Example: Game save - The Legend of Zelda on the NES_<br>
`~/retrodeck/saves/The Legend of Zelda.save`
will be moved to
`~/retrodeck/saves/nes/The Legend of Zelda.save`
_Example 2: Save state - Super Mario Bros 3 on the NES_<br>
`~/retrodeck/states/Super Mario Bros 3.savestate`
will be moved to
`~/retrodeck/states/nes/Super Mario Bros 3.savestate`
### Why could not all saves be moved automatically?
If you have a large ROM library, it is likely you will have multiple versions of the same game across multiple systems.
RetroArch creates save files that have the same name as the original ROM file. If there are multiple ROM files with the same name as a save, there is no way to tell which system the save belongs to.
In the interest of ultimate safety for your saves, we only sort files we can be sure of. It is unfortunate that some saves may need to be sorted manually for some users, but this is a one time process that will keep your saves safer in the long run.
### How do I move them manually?
The saves can be moved like any other file, using the Dolphin file manager included in the Steam Deck desktop mode to the corresponding sub-folder inside `/retrodeck/saves/(system sub-folder)`.
### Where can I find saves that could not be moved?
If you see a message after the migration process saying some of your saves could not be sorted automatically, they will be found where they have always been, in `~/retrodeck/saves` or `~/retrodeck/states`.
In the `~/retrodeck` folder there will also be a file called `manual_sort_needed.log` listing every save that could not be sorted automatically with a reason it was not moved. In order to be used again, these files will need to be moved into the folder matching the name of the system that the game the save belongs to runs on.
For example, this save file could not be sorted automatically, because there are multiple ROMs in the library with the same name.
**Example: Game saves** <br
A game save from Mortal Kombat 3: `saves/Mortal Kombat 3.save`
Two roms with the same name exist, one for the SNES and one for the Genesis/Megadrive:
~/retrodeck/roms/genesis/Mortal Kombat 3.rom
~/retrodeck/roms/snes/Mortal Kombat 3.rom
If you have playing on the SNES, the save will need to be moved to:
`/retrodeck/saves/snes/Mortal Kombat 3.save`
If you have been playing on the Genesis/Megadrive, the save will need to be moved to:
`/retrodeck/saves/genesis/Mortal Kombat 3.save`
**Example 2: Save states** <br
A save state from Street Fighter 2: `states/Street Fighter 2.savestate`
Two roms with the same name exist, one for the SNES and one for the Genesis/Megadrive:
~/retrodeck/roms/genesis/Street Fighter 2.rom
~/retrodeck/roms/snes/Street Fighter 2.rom
If you have playing on the SNES, the save will need to be moved to:
`/retrodeck/states/snes/Street Fighter 2.savestate`
If you have been playing on the Genesis/Megadrive, the save will need to be moved to:
`/retrodeck/states/genesis/Street Fighter 2.savestate`
## Major features in 0.5.0b
* New save sub-folders structure.
* Implemented the first steps towards a universal Emulator Configuration Tool in the TOOLS menu.
* Ability to log into your RetroAchievements account under the TOOLS menu.
* Added several free assets/fonts for RetroArch, PPSSPP, XEMU and BlueMSX
* Added a new DEFAULT Emulator for the PS2: PCSX2-QT (the former PCSX2 default emulator is now called "PCSX2 (Legacy)").
* Changed the DEFAULT Emulator for the PSX: Swanstation (Libretro) Core
* Added a new Standalone Emulator for the PSX: Duckstation.
* Enhanced the XEMU (XBOX) experience
* New logo made by Pixelguin
* Two new themes added, made by RetroDECKs [anthonycaccese](https://github.com/anthonycaccese):
>
* New theme 1: [Alekfull-NX-Light](https://github.com/anthonycaccese/alekfull-nx-retropie/tree/retro-deck-esde-1.x-light) for ES-DE <br(Based on the original Alekfull-NX for Batrocera made by [Fagnerpc](https://github.com/fagnerpc)).
![rd-theme-AlekfullNXLight-GamelistView](https://user-images.githubusercontent.com/1454947/193457762-4d997ca3-d77c-4993-81bb-0c1a78f240a1.jpeg)
![rd-theme-AlekfullNXLight-SystemView](https://user-images.githubusercontent.com/1454947/193457765-e56875cd-a34d-4675-8267-56d04d4d1c32.jpeg)
* New theme 2: [Retrofix-Revisited](https://github.com/anthonycaccese/retrofix-revisited-retropie) for ES-DE <br(Based on the original Retrofix theme for Batrocera made by [20GotoTen](https://github.com/20GotoTen)). <br>
![rd-theme-RetrofixRevisited-GamelistView](https://user-images.githubusercontent.com/1454947/193457594-b803546b-36eb-4e71-9eca-bfee1d81ba36.jpeg)
![rd-theme-RetrofixRevisited-SystemView](https://user-images.githubusercontent.com/1454947/193457596-05dc4316-9f2a-41ae-aa27-9609c680ec5a.jpeg)
## Updates & minor additions in 0.5.0b
* New variables system: now some variables such as game folder location are saved in /var/config/retrodeck/retrodeck.cfg.
* Rewritten build and publication workflows
* Updated ES-DE from 1.2.4 to 1.2.6 <br>(Please note that not all the supported emulators in ES-DE are included in RetroDECK at this moment)<br>
For the full ES-DE patch notes follow these links:<br>
[1.2.5 Patch Notes](https://gitlab.com/es-de/emulationstation-de/-/blob/master/CHANGELOG.md#version-125)<br>
[1.2.6 Patch Notes](https://gitlab.com/es-de/emulationstation-de/-/blob/master/CHANGELOG.md#version-126)
* Updated RetroArch, updated all cores and added new cores from 1.10.2 to 1.11.1<br>
[1.10.3 Patch Notes](https://www.libretro.com/index.php/retroarch-1-10-3-release/)<br>
[1.11.1 Patch Notes](https://www.libretro.com/index.php/retroarch-1-11-0-release/)<br>
* Updated all the standalone emulators to their latest releases
* Updated all included themes to their latest version.
## Bug fixes in 0.5.0b
* Removed the unavailable emulators from the ES-DE interface to avoid confusion.
* Solved an issue where Dolphin (Standalone) was not saving in the intended directories.
* Various smaller bug fixes, for a more detailed list check the [issues list](https://github.com/XargonWan/RetroDECK/issues?q=is%3Aissue+milestone%3A0.5.0b+)

View file

@ -1,65 +0,0 @@
# Wiki startpage
[Home[(/XargonWan/RetroDECK/wiki)]
## RetroDECK: Getting started
- [How to: Getting started[(How-to-Getting-started.md)]
- [FAQs: Frequently asked questions[(FAQs-Frequently-asked-questions.md)]
- [EmulationStation DE: User Guide[(EmulationStation-DE-User-Guide.md)]
## RetroDECK: General information
- [How to: Manage your games[(How-to-Manage-your-games.md)]
- [Emulators: What's included?[(Emulators-What's-included.md)]
- [Emulators: BIOS and Firmware[(Emulators-BIOS-and-Firmware.md)]
- [Emulators: Different controller layouts[(Emulators-Diffrent-controller-layouts.md)]
- [Emulators: Supported folders and files[(Emulators-Supported-folders-and-files.md)]
- [EmulationStation DE: Themes[é(EmulationStation-DE-Themes.md)]
## RetroDECK: Configuration
- [RetroDECK: Configurator[(RetroDECK-Configurator.md)]
- [RetroDECK: CLI[(RetroDECK-CLI.md)]
- [RetroDECK: Folders and filepaths[(RetroDECK-Folders-and-filepaths.md)]
## RetroDECK: Development
- [Development: General notes[(Development-General-notes.md)]
- [Known Issues[(Known-Issues.md)]
- [Version history: Patch Notes[(Version-history-Patch-Notes.md)]
- [How can I help with testing?[(How-can-I-help-with-testing.md)]
## Emulator Guides:
- [Playstation 3: RPCS3[(Playstation-3-RPCS3.md)]
- [Switch: Yuzu[(Switch-Yuzu.md)]
## Mod Guides:
- [Yuzu: Mods[(Yuzu-Mods.md)]
- [Citra: Mods[(Citra-Mods.md)]
- [Dolphin and Primehack: Mods[(Dolphin-and-Primehack-Mods.md)]
## Texture Packs Guides:
- [Citra: Texture Packs[(Citra-Texture-Packs.md)]
- [Dolphin and Primehack: Texture Packs[(Dolphin-and-Primehack-Texture-Packs.md)]
- [Duckstation: Texture Packs[(Duckstation-Texture-Packs.md)]
- [RetroArch Mesen: Texture Packs[(RetroArch-Mesen-Texture-Packs.md)]
- [RetroArch Mupen64Plus Next: Texture Packs[(RetroArch-Mupen64Plus-Next-Texture-Packs.md)]
- [PPSSPP: Texture Packs[(PPSSPP-Texture-Packs.md)]
- [PCXS2: Texture Packs[(PCXS2-Texture-Packs.md)]
## Steam Deck
- [Steam Deck: Installation and updates[(Steam-Deck-Installation-and-updates.md)]
- [Steam Deck: Hotkeys and controls[(Steam-Deck-Hotkeys-and-controls.md)]
- [Steam Deck: Optimizations[(Steam-Deck-Optimizations.md)]
- [Steam Deck: Software recommendations[(Steam-Deck-Software-recommendations.md)]
## Linux Desktop
- [Linux Desktop: Software recommendations[(Linux-Desktop-Software-recommendations.md)]
## Other Devices
- (More information later)
## Credits & Other
- [RetroDECK: Credits and The Team[(RetroDECK-Credits-and-The-Team.md)]
- [RetroDECK: The story of RetroDECK[(RetroDECK-The-story-of-RetroDECK.md)]
- [RetroDECK: Social media rules[(RetroDECK-Social-media-rules.md)]
- [Licences[(Licences.md)]
- [Archive[(Archive.md)]

View file

@ -2,16 +2,17 @@ project = 'RetroDECK'
author = 'RetroDECK Team'
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.mathjax',
'sphinx.ext.ifconfig',
'sphinx.ext.viewcode',
'sphinx_rtd_theme',
# 'sphinx.ext.autodoc',
# 'sphinx.ext.doctest',
# 'sphinx.ext.intersphinx',
# 'sphinx.ext.todo',
# 'sphinx.ext.coverage',
# 'sphinx.ext.mathjax',
# 'sphinx.ext.ifconfig',
# 'sphinx.ext.viewcode',
# 'sphinx_rtd_theme',
'myst_parser',
'mkdocs-material'
]
language = 'English'

View file

@ -0,0 +1,2 @@
# The RetroDECK Blog 📝

View file

@ -0,0 +1,78 @@
---
date: 2023-04-06
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
# Status update 2023-04:
Controls, Controls, Controls!
Right now we are working on a huge overhaul of the Steam Deck's input profile for GameMode that should feature a more uniform hotkey configuration for version v0.7b across most emulators.
The team have painstakingly made a huge map (excel) with all the emulators hotkeys, how they can be mapped and in the end classified as important, semi-important och not important.
<!-- more -->
*The thoughts so far:*
* L4-L5 and R4-R5 (the back buttons) are used for various hotkey combos with the traditional buttons. We have to find a layout that feels right and it should allow us do a lot of hotkey binds.
* The left touchpad opens a radial menu with sub menus that gives you more quick access to less used and the frequently used hotkeys across all emulators.
* The right touchpad works as a mouse with left click (WiiMote games, Lightgun, navigate the emulators gui and other things)
There also will be a community feedback and test phase for the new inputs at a later date. We would love to hear your feedback!
*Note: You are not forced to use our profile, you can still make your own and rebind how you want.*
**Expose new folders for ease of access:**
For v0.7b we are going to make it easy to understand where to find the various gamelist.xml and where to put mods and textures. We are adding/exposing folders in the main `retrodeck` folder for ease of access. So you will find new folders for `gamelists` `mods` `textures`.
No more deep diving into various hidden folders of where to put your textures and mods in Citra for your favorite Zelda game!
Just put them in the corresponding mods or texture folder and you should be good to go.
**CEMU**
We are also trying to get CEMU inside the next version of v0.7b
**Trivia: Patch names**
We will also start with naming the big patches from v0.7b and forward.
So v0.7b will be called "**RetroDECK v0.7b - Amazing Aozora**".
It will go up one letter for each version so v0.8 will be a word combo that contains "B B" and v0.9 will be a combo with the letters "C C" and so forth.
**What else?**
There are a lot of other things in the pipeline as well for v0.7b. But we shall save those for a future update (when we have something to share and we don't want to spoil everything).
If you want to help with out with the project or just chat join the discord.
[Discord Server](https://discord.gg/Dz3szYsP8g)
[Patreon](https://patreon.com/RetroDECK)
//The RetroDECK team

View file

@ -0,0 +1,308 @@
---
date: 2023-06-01
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
Github link if you don't know what the project is: [https://github.com/XargonWan/RetroDECK](https://github.com/XargonWan/RetroDECK)
# Status update 2023-06:
With 0.7b and summer just around the corner we in the team thought this month we should focus more on a mix of topics.
<!-- more -->
### Read First Important Changes in 0.7b!
* `PCSX2-SA` latest updates are not compatible with old save states. Please make sure you do an in-game save to your virtual memory card before upgrading.
* The following emulators have changed as the defaults and now run the stand-alone version: `Dolphin`, `Citra`, `PPSSPP`.If you have saves states or just want to go back to the `RetroArch` versions, you can always switch back by pressing: `Other Settings` `Alternative Emulators` in the main interface and set them there.
* If you decide to install the new `RetroDECK Controller Layout` for the Steam Deck, it will wipe your custom configurations and emulator settings. Thats because all the configs need to be updated and changed to be compatible. The choice is yours (you can always install it later via the Configurator if you change your mind).
# What are the upsides of RetroDECKs all-in-one approach?
Quite many actually!
* RetroDECK is updated via standard secure update channels where you update all your other software (we will have an internal updater added in RetroDECK in 0.7b, so users dont even need to go to the Discover app to update if they dont want to).
* It allows us to apply the RetroDECK Framework on the bundled software and apply custom made specific patches for emulators or ES-DE (more on that later).
* We can optimize the data to take as little space as we possibly could. Our whole application in 0.7b is around 3GB. Since we are using a single package, ~~we can avoid a lot (but not all) of the overlap that takes up space when installing multiple AppImages or Flatpacks.~~ (Flatpak does an even greater job of deduplicating data see [**TiZ\_EX1**](https://www.reddit.com/user/TiZ_EX1/) comment in this thread!).
* We can expose various hidden/hard to find emulation features and allow the users to customize various experiences directly inside the application itself without needing to go into the Steam Decks desktop environment.
* We are leveraging the power of compiling these emulators ourselves (where possible) to make a more complete unified experience a reality with custom patches.
**What are the downsides of this approach?**
* You are bound to the software we ship inside our application and cannot add more things. But we are always open to suggestions on what to add next, just tell us on Github or Discord.
* *That said we are experimenting with allowing users to import certain emulators early access versions like Yuzu (but no solution in the short term).*
* Emulator updates need to be in point releases and not daily, since we cant update emulators inside an existing flatpak. As we apply the RetroDECK Framework on top of the emulators, we sometimes need to do some tinkering before we can release a new version. But you can expect semi-frequent emulator-update point releases, historically we have been fast if we feel the need to get something out quickly. Major new updates that add features to the RetroDECK application itself will take more time.
* *There has been some issues with Yuzu in the past, but we have redone our entire Yuzu pipeline for 0.7b s it should allow for faster updates.*
# What is RetroDECK's vision and design philosophy?
* Valve endorsed the use of flatpaks as their preferred and safe way to distribute software on SteamOSs immutable system. Many other immutable systems like Fedora Silverblue/Kionite and standard Linux distributions have also endorsed flatpaks. We also share the vision that flatpaks are the future for the Linux desktop and Linux based devices.
* Everything must be accessible from inside the application itself where possible. Once you launch RetroDECK, you should have all the tools you need to play games and configure the application. For the Steam Deck that means minimizing switching to desktop mode.
* We need to build a foundation that pushes emulation forward and expose more of the niche hardcore features in an easier way.
* We shall not be so bound by design choices that others have made but make our own path.
* We should ship the emulators with optimized settings for Steam Deck (later other devices) but also allow the users full control to create their own configs and make it easy to do so.
* We should do our best to respect user-made config changes where possible, even during the updates. Any forced changes should always be explained and give the users a prompt to accept them.
* We believe in a transparent open community: Dialog , user feedback and testing development versions will never be locked behind paywalls or subscription tiers . This comes from deep rooted beliefs in open-source freedom. Subscriptions and donations will always only grant cosmetics like a unique discord color.
* We want to make the emulation available for everyone; from the casual to the power user. Keep it simple, everything in one application and download it like any other software. Only one thing to update.
* Prioritize security and keep everything contained as much as possible.
**How does this vision effect design?**
A good example is the new exposure of `mods` and `texture_packs` under the retrodeck folder.
Before it was quite hard for users to add mods and texture packs into the emulators. No work for any other solution (that we are aware off) has been done to make this very hardcore thing more easy to handle.
For the user it means no more looking into hidden folders of when and where to put the files. Our new approach also has received the blessing of famous texture packs and mod pack creators out there that were happy that someone lowered the barrier.
So if you found it hard before to add:
* A magnificent texture pack for Citra
* A spooky HD pack for the Mesen Core
* New 3D polygon racing models for Mupen64Plus-Next Core
Just look our wiki under mods/texture packs and look forward to 0.7b.
[https://github.com/XargonWan/RetroDECK/wiki](https://github.com/XargonWan/RetroDECK/wiki)
Another example is (as others have done) move `gamelists` to under the retrodeck folder. This is a safer way of doing it and it's easier for the users to take backups.
**What to expect in the future?**
You can expect most of the standard stuff like that you can except from an emulation solution in the future:
* Cloud-sync
* USB and FTP file transfer
* External controller management
* Lightgun support
* Most of the supported ES-DE emulators
* Automatic Updates from Gamemode on Launch (0.7b it can be disabled in the Configurator)
* And more...
# What is the RetroDECK Framework?
This is the feature we have been building on since the beginning and the true hidden core of RetroDECK that we are unveiling for the first time today. Its the foundation we have built over many months of hard work and will keep expanding on in every upcoming update.
The RetroDECK framework is a complete system that applies and adds features, fixes, structure and functions to all applications/data shipped within RetroDECK.
This is also one of the reasons we needed to restructure save file folders in the past updates as well.
**What does the RetroDECK Framework allow you to do?**
It allows us to ship deeper choices, customization, apply settings globally, create custom patches or functions and expose hidden settings to the front.
But what truly excites us in the team is the more advanced big features that we have not seen anyone else do on SteamOS or other operative systems.
**Some light examples in 0.7b of the framework is:**
* Move everything everywhere.
**Note:**
Please be careful when moving data to exotic locations don't be like Mr.Angry:
* Log in/logout/hardcore mode for RetroAchivements hardcore mode for all supported emulators.
* Apply Borders, Shaders and Widescreen mode per emulator / core or globally.
**Note:**
RetroDECK will offer full user choice and not a blanket all or nothing. You could have widescreen on one core while the others have borders.
**What are some advanced big examples that you could do with the Framework?**
Here is one example:
Think about configurations for emulators. How most other solutions are handling changes or updates is just a blanket call all-or-nothing. Either you accept the changes and remove everything you have done or keep your changes without getting the updates.
What we are building with the framework is a system to inject point changes into configurations.
*So instead of doing the crude way others are doing:*
Force replace in `config.xml` old with new `config.xml` yes or no?
***What our goal is and what we are building:***
Be able to open a `config.xml` inject the changed values across all those configs.
If an emulator updates and adds more config options, we can just add them without losing the rest of the user data.
So we can compare changes between the new `config.xml` and the old, then inject the changes.
*But if a emulator totally change how their configuration works and makes a whole new system from scratch (it does not happen often or at all) even we will be out of luck.*
So we hope in the future to be able to save even more custom configs even with the emulator updates. We also hope to make configuring emulators easier... more on that in a future development update after the summer.
**Another big example:**
If you read the recent article, we in the RetroDECK team are happy to unveil the `RetroDECK: Multiuser Mode`. This is only the first one of the big features we have planned for future updates and stands as an example of the complicated features we can accomplish. There is even more crazy stuff in development for the future big releases then this, so consider this a taste of things to come. It will not be ready for 0.7b but can be enabled with CLI commands for testing.
See the following Q&A:
# RetroDECK: Multiuser Mode Q&A
First read here:
[https://github.com/XargonWan/RetroDECK/wiki/How-can-I-help-with-testing%3F](https://github.com/XargonWan/RetroDECK/wiki/How-can-I-help-with-testing%3F)
This is for testing only in 0.7b!
**What does Multiuser Mode mean?**
It creates a new directory structure `retrodeck/multi-user-data/<username>` and allows multiple users to use RetroDECK from one device.
**Wait... what.. how?! What about saves?! Configurations?! Custom settings?!**
They are all saved per user if you enable it. You, your sister, brother, child, husband, wife, dog, cat could all have their separate saves, states and custom emulator settings just for themselves when they select their own profile.
**Does it support the Steam Decks multiple users in Game Mode? Will RetroDECK hook those Steam Users into the enabled Multiuser system?**
Yes, that is the intent and should work, so you can log into your Steam Deck profile and have your RetroDECK saves/configs.
**What about a Linux Desktop PC that don't have Steam installed?**
We also support locally created “RetroDECK Users” so, for those Linux Desktop users in the future that dont use Steam and just want RetroDECK on their device.
**What happens if I disable multiuser mode?**
You chose one profile as the primary user and the other data still exists under `retrodeck/multi-user-data/<username>`. No data is lost until you delete it manually.
**What happens if I re-enable multiuser mode?**
If you have had multiuser mode enabled and disable it, then re-enable it and have not deleted any `retrodeck/multi-user-data/` everything should work as it did before.
**Will there be an easy way transfer/export/import a user profile, like press a button and my can export to my profile (saves, configurations, with/without roms) to my friend's device on something like a USB or other media?**
Not for 0.7b but hopefully for the next major update 0.8b.
# Other things
**What does Amazing Aozora mean?**
Aozora is Japanese and means blue sky.
So, you could interpret the name as one team member:
*“Amazing blue skies... The first update that shows the exiting new horizon and the path we are heading towards.”*
Or as another:
*“Aozora is just a tiny Japanese banks name! This is clearly just an update to pay some of our dept to the community off! Stop with that horizon nonsense mumbo jumbo!”*
**What are some examples I can help out with with?**
**Artist/Creators:**
* Create new pixel art for the Radial menus.
* Create easter egg art for the new `easter egg system` for various holidays.
* Create menu art for a new Configurator.
* Create input art that can be shown when you start a game.
* Create input art guides for the wiki for the Steam Deck and later various controllers.
* Create patch note videos.
* Create instruction videos.
* Help us make RetroDECK better.
**Developers:**
* Help us put in new features.
* Help us make the configurator a godot application with full controller support.
* Help us get releases out faster.
* Help us make RetroDECK better.
**Testers:**
* Help us test cooker builds and submit bugs and feedback.
* Help us make RetroDECK better.
**Everyone:**
* Be kind and follow the rules.
* Spread the word of RetroDECK if you like it, if you don't like it or have suggestions put them on github into issues or discuss them on discord.
* Engage with the rest of the community.
* Help us make RetroDECK better.
**Summer Period**
As the summer period arrives there will be a holiday break on these kind of development posts until after the summer. Some parts of the team is also going on vacation, you can still except semi regular emulator updates and bug fixes as usual in 0.7.X releases (but no major 0.8b - Bonsai Banana version in the middle of the summer!).
**End Quote**
*We hope you are excited about these features and our vision as we are and we want to get 0.7b out to you as quickly as possible (hopefully next week).*
*We also wish everyone a happy and good summer!*
[Discord Server](https://discord.gg/Dz3szYsP8g)
[Patreon](https://patreon.com/RetroDECK)
*//The RetroDECK Team*

View file

@ -0,0 +1,41 @@
---
date: 2023-03-05
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
As we just recently got co-ownership this subreddit (thus making this our official subreddit).
We in the team thought we could give you a quick status update on how development is going.
# Status update 2023-03:
First of we are working out some bugs and issues with Duckstation and Primehack, the later will have a totally from the ground up redone configuration for a more optimized experience.
<!-- more -->
RetroDECK is also moving to another cloud provider for our buildserver and website, sponsored by one generous community member (THANKS!).
Another recent breakthrough was getting chdman the compression tool for disc based games running inside a flatpak (sandbox environment). It should be accessible later in a future version via CLI and we will check if it's possible to a build in GUI for it later in the future.
Also the work to add borders into the emulators that support it has also begun and we are targeting the next major version.
There are some experimenting with ES-DE 2.0 and the new theme engine.
We are also trying to do a totally new universal and uniform controller profile for the Steam Deck that should work for all the emulators (fingers crossed).
There are a lot of other things in the pipeline as well. But we shall save those for a future update (when we have something to share).
If you want to help with out with the project or just chat join the discord.
[Discord Server](https://discord.gg/Dz3szYsP8g)
[Patreon](https://patreon.com/RetroDECK)

View file

@ -0,0 +1,197 @@
---
date: 2023-05-03
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
**NOTE: This is still work in progress**
# Status update 2023-05:
*Controls for everything everywhere all at once.*
As a continuation of last months post, some parts of the team have been working on hotkeys and controls (in fact since October 2022 [GitHub: Issue 194](https://github.com/XargonWan/RetroDECK/issues/194)).
<!-- more -->
*This is only one part of the 0.7b update.*
**We set out the following goals for the project for a new Steam Deck layout profile:**
* The layout needs to be scalable and adapt for new emulators in the future without adding too much clutter.
* The layout needs to be scalable when a emulator updates and supports new hotkeys.
* The layout should when possible have the ability to hook as many hotkeys into the same input that represents the same function across all emulators.
* The layout need to be unified and support players dynamic playstyles to hop between emulators and games in one gaming session. A player could start RetroDECK: Play a little Switch then quit Yuzu, go directly to PPSSPP and play some PSP then end up in RetroArch to play SNES before the session is over.
**That boiled down into the following points to work on:**
* Check every hotkey that exists in every emulator and how they work.
* Check if some hotkeys are hardbound (none rebind-able) and see if those can be worked into the over all structure of all other emulators.
* Check what rules the hotkeys of each emulator have to bind them (single button only, only keyboard inputs, only gamepad inputs etc..).
* From the result above: Decide and prioritize what hotkeys are so important they need a physical button combo. What hotkeys are "semi-important / good to have" and can live in a radial menu. Decide what not hotkeys not to bind at all.
**Results so far:**
*NOTE: Not all functions are supported in all emulators, but they will be added in as soon as they do support them.*
**Physical button combo input**
* The standard RetroArch = Start + Select to Quit and L3 + R3 for Open Menu is still there for RetroArch.
* The L4 and R4 buttons changes the layout when hold down and allows button combinations with those buttons, example: "L4 or R4 + R1" = Save State and "L4 or R4 + L1" = Load State. It allows for quick access to the following functions with just button presses:
* Save state
* Load state
* Exit/Quit Emulator
* Fullscreen On/Off
* Fullscreen Off - (NOTE: Some emulators don't have toggle and have a separated on / off hotkeys)
* Fast forward
* Rewind
* Pause/Resume
* Open Menu
* Select Previous State Slot
* Select Next State Slot
* Capture Screenshot
* Swap Dual-Screens / Toggle pad screen (DS, 3DS, WiiU)
* Escape key - (Useful for some Emulators)
* Freelook mode movement for Dolphin on the sticks (NOTE: as long as L4 or R4 is hold down and Freelook mode is activated).
**Radial Menu System**
The radial menu system that is on the left touchpad gives you access to 70+ hotkeys (including the button bound from above) for various functions while gaming. All functions are labeled (even tho the labels) are not in the picture.
The Main Menu is your way into the radial system and it's sub-menus bellow:
The State Menu gives you access to everything to do with states
* Save State
* Load State
* Select Previous State Slot
* Select Next State Slot
* Undo Save State
* Undo Load State
The Speed Menu gives you access to everything to do with Speed / Frame rate manipulation
* Fast forward
* Rewind
* Increase Emulation Speed
* Decrease Emulation Speed
* Reset Emulation Speed
* Disable Emulation Speed Limit
* Toggle Frame Limit
The General Menu gives you access to general emulator functions
* Toggle Cheats
* Exit/Quit Emulator
* Open Menu
* Capture Screenshot
* Toggle Turbo
* Pause/Resume
* Toggle Video Capture / Recording
The Display / Graphics Menu gives you access to everything about: screen layout, upscaling, widescreen etc..
* Increase Reslution Scale / Increase Upscale Multiplier
* Decrease Reslution Scale / Decrease Upscale Multiplier
* Widescreen / Cycle Aspect Ratio
* Fullscreen On/Off
* Fullscreen Off
* Swap Dual-Screens (3DS, DS, WiiU)
* Change Dual-Screenlayout (3DS)
The Steam Deck Menu gives you access to certain steam deck functions and certain keyboard inputs (that could work in emulators that don't have good hotkey support).
* Show Keyboard
* Steam Deck Screenshot
* Steam Deck Zoom
* Escape
* ALT + F4
* Tab
The Emulator Specific Menu opens up a new menu system where you can access emulator specific functions (I can't show them all in this post!)
* Switch Menu - Gives a radial that supports: Docked / Undocked, Change GPU Accuracy, Amiibo
* Mame Menu - Gives a radial that supports: Service menu and keys, insert bills and other none credits.
* Wii/GC (Dolphin) Menu - Gives a radial that supports: Golf Mode, Freelook Mode, Wii Sync Button, Freelook Reset, WiiMote mode: Upright / Sideways
* DS Menu - Gives a radial that supports: Send Close / Open Lid, Send Microphone Input, Boktai + and - sunlight.
* 3DS Menu - Gives a radial that supports: Amiibos
* RetroArch Menu - Gives a radial that supports: Cheats manipulation, AI Service, Netplay Host
The Quick Access Menu gives you a "best of" hotkeys from the other menus.
* Save / Load
* Fullscreen On / Offf
* Fullscreen Off
* Swap Dual-Screens (3DS, DS, WiiU)
* Change Dual-Screenlayout (3DS)
* Escape
* Quit
* Open Menu
* Pause
* Screenshot
That is all for today!
If you are an pixelartist, a video editor or a developer that want to help us with the project please contact us on discord.
**What else?**
There are a lot of other things in the pipeline as well for v0.7b. But we shall save those for a future update (when we have something to share and we don't want to spoil everything).
If you want to help with out with the project or just chat join the discord.
[Discord Server](https://discord.gg/Dz3szYsP8g)
[Patreon](https://patreon.com/RetroDECK)
//The RetroDECK team

View file

@ -0,0 +1,152 @@
---
date: 2023-11-23
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
If you dont know what RetroDECK is or want more information check out the wiki.
# Status update 2023-11:
It is the end of November and we want to give you a status update on how things are going with RetroDECK. First off development is going steady, and we have a lot of features in the pipeline but also some IRL things that slow us down a bit (work, new baby etc…). But let us talk about what we are working on and answer some questions.
<!-- more -->
**Note:**
Most listed here are subject to change and is just an outline of what we are working on right now. Not all of these features will be a part of 0.8b and we are also working on even more stuff than what we are showing in this post.
##
## Question: How do I move RetroDECK to a new device?
You can find a detailed step-for-step guide here for both Linux Desktop and Steam Deck:
[How to: Move RetroDECK](https://github.com/XargonWan/RetroDECK/wiki/How-to%3A-Move-RetroDECK-to-a-new-device)
**For a ultra-quick guide:**
* Just copy the \~/retrodeck folder to the new device to the location you want it.
* Install RetroDECK on the new device and point to it the new location of \~/retrodeck during first setup:
* If you put it on the internal drive choose that option
* If you put it on the sd card choose that option.
* If you put it in a custom location choose that option.
* Then proceed installation as normal.
# What are you working on?
## New Emulators/Systems
We will be trying to include all of these in the next big update 0.8b
* OpenBOR
* IkemenGO (M.U.G.E.N)
* Solarus
* MAME (Standalone)
* Ryujinx
* SCUMMVM (Standalone)
* Vita3K
* GZDoom (Standalone)
We have worked with several of the development teams of the emulators to add various functions we could use and improve the emulators for everyone regardless of whether you use RetroDECK or not. They have also worked with us to help us integrate into RetroDECK better. We want to give special thanks to the Vita3K Team and Ryujinx Team.
## New Feature: Yuzu (Custom)
Yuzu (Custom) is something we are working on for those that want to use the Early Access version of Yuzu. So, you will get the ability to run the EA .appimage version from inside RetroDECK in some fashion.
But the downside is that it will not fully hook into the RetroDECK Framework, so you will need to configure things like input manually the first time you run it. But the goal is you can select it in the alternative emulator selector in ES-DE and pick Yuzu (Custom) from the list.
## New Feature: Steam Flatpak version support
We have gotten feedback that users want us to support the Steam Flatpak version and are trying to make it happen. Examples of features that need to work are the “Controller Profiles”, “Add RetroDECK to Steam” and the “Add games to Steam” function. We are still not sure if everything will work as intended in the Flatpak version of Steam.
If you for some reason have both normal Steam and flatpak Steam installed on the same system. The none flatpak version will take preference over the flatpak version (this is also how projects like Lutris do things).
But running a flatpak within a flatpak is something the users will need to think about.If the users want RetroDECK and other flatpaks to run from Steam they will need to open the permissions in the sandbox from either terminal or Flatseal. This does open the sandbox more than the standard configuration that Steam comes with as default.
## New Feature: SFTP
We are looking into letting users enabling SFTP transfers for easy transfers of files (roms, saves etc…).
## New Feature: Cloud Sync
We have done some work cloud sync both live sync and backup to various cloud services. But nothing to show just yet.
## New Feature: USB Transfer / Backups
Like SFPT, Cloud Sync above will be another way to export import files but via USB.
## Status update: External Controllers & Inputs
* PS3
* PS4
* PS5
* Xbox360
* Xbox One / S / X
* Switch Pro
* Steam Controller
* Generic
All standard type controllers supported by Steam Input will work with the normal global hotkeys. We are also changing the layout so that you have even more hotkeys.
If you want to try them right now, you can do that by going into the following github issue and follow the instructions over there (they also work on current stable, just extract the zipfile in the correct folder and enjoy):
[Github Issue with Download](https://github.com/XargonWan/RetroDECK/issues/573)
## Status update: Multiuser mode
We are still working on it with all the complexity. The goal is to support both Steam users from the Steam Deck and local RetroDECK users for desktop users. It does “work” right now in our cooker builds, but it still needs more time in the oven. There are a lot of variables to account for before we feel ready to ship it to everyone.
## Status update: Adding RetroDECK games as Steam Entries
We are still working on it and have it working on our cooker builds. But we are still trying to get it to work on the Steam Flatpak version. There are also some other ideas we want to try to make it even better, but more of them if we can make them happen in a later development update.
## Status update: Configurator GODOT version
The work is ongoing and not something that will be part of 0.8b. We have general plans for the GUI and internal versions we can play with. But the goal stays the same replace the entire configurator with a nice GODOT controller navigational interface and replace all the Zenity windows with it.
## Status update: Mascot
After the last development update, we got connected with Tyson Tan the artist behind both the KDE and Krita mascots. We are hopeful we can work something out together.
# That is all for now!
Also there will be no December update post thanks to the upcoming holidays!
To everyone out there in our community, we want to wish you a festive holiday period and a Happy New Year.
**Want to contribute to RetroDECK?**
We are always looking for more people to help us with the project.
· Developers (help us improve RetroDECK and get updates out faster).
· Website developer (to help us improve our website).
· Video Editor (to help us with patch notes / hype videos on various platforms).
**Check out our:**
[Discord](https://discord.gg/Dz3szYsP8g)
[Github](https://github.com/XargonWan/RetroDECK)
[Wiki](https://github.com/XargonWan/RetroDECK/wiki)
[Donations](https://github.com/XargonWan/RetroDECK/wiki/Misc%3A-Donations-%26-Licenses)

View file

@ -0,0 +1,129 @@
---
date: 2023-10-13
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
# Status update 2023-10:
We hope that everyone is ready for a tiny spooky October status update.
<!-- more -->
## We begin with thanking all kind emulator developers.
We had some issues with certain emulators caused by the recent QT6 migration and the addition of new emulators (more on that next month).
We tried to contact those developers to request for help or a hint about their project and thankfully they were very collaborative towards us, in some cases making some code changes to accustom some specific RetroDECK needing and thanking us for our work.
It seems like that RetroDECK got a good reputation out there and we're really thankful for this, as one of our main efforts is trying to contribute more good will into the emulation community.
This is what makes the emulation community great when we all can work together. If you need something from us, feel free to ask.
Thank you all!
## What are you working on?
## Adding individual ROMS to Steam and launch them with RetroDECK
More development has been going on into this and how it will work in its first iteration is that the games you flag as your favorites can be added to Steam with a tool in the Configurator.
## External Controllers Button Combo Hotkeys
We will ship various Steam Input templates that allows you to use the button bound hotkey combos to do various emulator functions like (Save State, Load State, Quit etc..) for a variety of controllers from 0.8b. All you will need to is plug in / connect your controller, go into Steam Controller setting and choose the RetroDECK template for your controller.
This will also work for the RetroDECK Linux Desktop users as long as you have added RetroDECK to Steam and launch it from there.
It will be the same button combos as the Steam Deck with \`Select\` as the trigger but with \*\*no radial menu system\*\*.
We will have templates for all the following:
* PS3
* PS4
* PS5
* Xbox 360
* Xbox One / S / X
* Switch Pro
* Steam Controller
* Generic (Stadia, 8bit, Xiaomi, USB-Clones, others etc..)
**Special notes on Generic:**
To access all the hotkeys, you must have a controller that has all the normal inputs (two joysticks with clickable L3 and R3, four button dpad, four face buttons, four shoulder buttons, start, and select).
But if you have start and select you can always quit the game (even with a tiny NES USB clone controller).
**Special notes on PS4, PS5:**
The full touchpad acts as a mouse for Wii input / computer systems.
Left touchpad click = left click
Right touchpad click = right click
**Special notes on the Steam Controller:**
The right touchpad acts as a mouse for Wii input / computer systems.
Right touchpad click = left click
## Turning the Configurator into a Godot application
We are working on turning the configurator into a Godot application. This will allow you to use all the functions with a controller in a Retro Inspired interface that is already working. The interface should be scalable for both TVs, Monitors and Steam Deck Screen. We are also looking into changing toggle the font to OpenDyslexic so it can be easier to read for those who need it. This might not be done for 0.8b as its quite a big project (it will ready when its ready).
If you are working with UI/UX design and/or have experience with Godot and want to help on this, please contact us on discord.
## Rekku, the RetroDECK mascot.
Some parts of the team also really wanted a mascot so that will also be a part of the new Configurator. Its a animated cyborg-cat-like-humanoid that guides you to the various functions in the Configurator. Right now, we only have AI generated concepts of the mascot for reference but if you are an artist and want to help us design the mascot, please contact us on discord.
**Mascot Q/A:**
Q: I get the Godot Configurator, but why a mascot?!
A: Why not?!
Q: Will we see Rekku in other things except the Configurator?
A: Maybe!
Q: I hate mascots with a burning passion, can I turn it off in the configurator?
A: Youre a meanie, but yes!
## That is all for this month!
A minor patch 0.7.3b will be out later with Emulator updates. But the main feature will be ES-DE 2.2, so we will release it when the ES-DE team are ready, and we can implement it asap.

View file

@ -0,0 +1,112 @@
---
date: 2023-09-14
---
**Please note that this was written for Lemmy/Reddit and copied over to the new RetroDECK Wiki**
Hello community!
We in the team thought we could give you a quick status update on how development is going.
# Status update 2023-09:
We hope that everyone had a good summer and that you are ready for a tiny status update with a plethora of mixed topics.
But before we get into what we are working on we want to make a short statement.
<!-- more -->
# Our commitment to Open-Source
>As the RetroDECK team, we are deeply concerned by the rumors about how others have handled their dependencies and their relationship with those developers.
>
>We would like to say this:
>
>Emulation is a multigenerational effort of development that has lasted for decades, motivated by the pure love for video game preservation for current and future generations. RetroDECK depends on the constant development of all our dependencies (the emulators, front-end, various assets, etc...). It would be unfair to both the hard work that has been done in those projects and to the entire open-source community if we said otherwise or tried to take credit, conceal, or obscure it for our own gain.
>
>We always strive to have the best possible relationship with the teams that generously provide and develop the third-party software we are depending on now and in the future. Everyone that works on RetroDECK is immensely grateful for the global collective effort and work that has been done. Without these projects and those passionate people RetroDECK would not be possible.
>
>We also want to add a word for the developers of the third-party projects:
>
>Please feel free to reach out to us, talk to us for any reason and share your ideas. We value your feedback and suggestions, and our door is always open for collaboration and improvements. You are the backbone of our project, and we appreciate your contributions.
>
>You can find more about our dependencies on the wiki and how to donate to them or us:
>
>[https://github.com/XargonWan/RetroDECK/wiki/Donations-%26-Licenses](https://github.com/XargonWan/RetroDECK/wiki/Donations-%26-Licenses)
>
>//The RetroDECK Team
# Now on to the new stuff:
**Two new developers and one tester have joined the team**
We are incredibly happy that three new members have decided to join us. All of them have been active in their contributions and helping the community. They bring exciting innovative ideas and skillsets to the project.
**Adding individual ROMS to Steam and launch them with RetroDECK**
One of our new developers is looking into adding individual ROMS to Steam and hopes to have this done for the next big major release 0.8b - Bonsai Banana. This will allow you to list the ROMS you want as a separate game in the Steam interface and thus have different power profiles for each game.
It is something many of you have requested and given feedback about.
**Dynamic viewports / scaling system**
Another new developer is looking into making a dynamic scaling / viewport system for the various emulators and cores to match the borders and resolutions to the most common screen types. \\
This would allow better desktop screen support and better handling on undocked / docked Steam Deck resolutions.
The goal is simple but complex:
The borders and scale of the games should look nice and proper on your external screen when you plug in your movable device.
**Better external controller hotkey support**
As part of the Controller Unification Project and with the addition of the \`SELECT\` button as a hotkey trigger in 0.7.1b. We now have a better understanding of Steam Inputs controller template system and should be able to make a template for common external controllers with the button bound hotkeys combos that use \`SELECT\` as the trigger.
However, the entire radial menu system is a bit harder as many controllers do not have touch input or a logical and comfortable way to navigate it. We will investigate if it is feasible to port the radial system to controllers with touch and those without.
**Status on the Multi-user system**
We are still working hard on the Multi-user system, but it might not be ready for 0.8b as we had hoped. There are tons of complexity, and we want to make it right. Some parts of the development team have other IRL priorities that take preset over RetroDECK development (new baby incoming and fatherly duties).
**That is all for this month**
A minor patch 0.7.2b will be out soon with a emulator update refresh and some bug fixes.
See you next month.
Check out our:
[Discord](https://discord.gg/Dz3szYsP8g)
[Github](https://github.com/XargonWan/RetroDECK)
[Wiki](https://github.com/XargonWan/RetroDECK/wiki)
[Donations](https://github.com/XargonWan/RetroDECK/wiki/Donations-%26-Licenses)
[Lemmy](https://lemmy.zip/c/retrodeck)

25
wiki-rtd/docs/index.md Normal file
View file

@ -0,0 +1,25 @@
<img src="wiki_images/logos/rd-xmas-logo.svg" width="700">
![Flathub](https://img.shields.io/flathub/downloads/net.retrodeck.retrodeck)
![Flathub](https://img.shields.io/flathub/v/net.retrodeck.retrodeck)
![Discord](https://img.shields.io/discord/951662718102962256?label=discord)
![GitHub](https://img.shields.io/github/license/XargonWan/RetroDECK)
## Welcome to the RetroDECK wiki!
**Do you want to help to contribute to the wiki?**<br>
Join the Discord and post in `💬-general` that you want to help out.
You will then get access to the `🖋-wiki-maintainers`channel.
**🏗️ This wiki is currently under construction 🏗️**<br>
Some articles are marked with WIP (Work in Progress).
### The RetroDECK community
[Discord](https://discord.gg/Dz3szYsP8g)<br/>
[Lemmy](https://lemmy.zip/c/retrodeck)<br/>
[Reddit](https://www.reddit.com/r/retrodeck)<br/>
### Other links
[Website](https://retrodeck.net) <br/>
[Github](https://github.com/XargonWan/) <br/>
[Flathub](https://flathub.org/apps/net.retrodeck.retrodeck)<br>

View file

@ -0,0 +1,431 @@
# Information on donations
RetroDECK is nothing without our dependencies without them this project and many others like us cannot exist. If you do not want to donate to RetroDECK and you might want to donate to the ES-DE front-end, art assets or a specific emulator. We support you no matter what, whatever choice you take from this list will be a good one for us all.
**Please note:**
We are trying to list current and future software we want to include in RetroDECK. More things will be added all the time. There are even more emulators, software, front-ends, and assets out there that are not part of the RetroDECK project for various other systems. This is not a complete list of all Emulators or Frontends for the entire internet.
## RetroDECK
<img src="../../wiki_images/logos/rd-logo-box.png" width="550">
By donating to RetroDECK you support this project and the vision of a unified packaged retro experience.
#### We will use those funds to:
- Wiki / Homepage
- Web hosting
- Developer accounts
- Certificates
- Software licenses
- Build servers
- Pay the running upkeep costs
**Buy new hardware and target new devices**
- New SteamOS based devices.
- New Linux based devices.
- In some cases better development hardware
**Buy new peripherals that we want to work out of the box**
- Various big brand and small brand controllers.
- Lightguns.
- Special peripherals.
**Make RetroDECK better**
- Develop more Configurator functions
- Develop better integrations
- Develop broad new functions and features
- Expose more emulator settings to the users in a easy way
- Push for better peripherals support in Linux even beyond RetroDECK (Do more global Linux goodwill)
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/RetroDECK)
#### Licenses
[Licenses](https://github.com/XargonWan/RetroDECK/blob/main/LICENSE)
---
## Frontend
### EmulationStation Desktop Edition (ES-DE)
<img src="../../wiki_images/logos/es-de-logo.png" width="150">
EmulationStation Desktop Edition (ES-DE) is a frontend for browsing and launching games from your multi-platform game collection.
#### Where to donate / support the project?
[Website - Paypal](https://es-de.org/)
[Patreon](https://www.patreon.com/EmulationStation_DE)
#### Licenses
[License](https://gitlab.com/es-de/emulationstation-de/-/blob/master/LICENSE)
[Licenses](https://gitlab.com/es-de/emulationstation-de/-/tree/master/licenses)
---
## Emulators: Multi-system
### LibreRetro - RetroArch
<img src="../../wiki_images/logos/retroarch-logo.png" width="150">
The LibreRetro Team makes RetroArch, Libretro and Lakka
#### Where to donate / support the project?
[Teespring](https://teespring.com/stores/retroarch)
[Patreon](https://www.patreon.com/libretro)
[YouTube Membership](https://www.youtube.com/channel/UCjAimkVp-G_o6HK5MXujk9A/join)
[Liberapay](https://liberapay.com/Libretro/donate)
[BountySource](https://salt.bountysource.com/checkout/amount?team=libretro)
#### Licenses
[Licenses](https://docs.libretro.com/development/licenses/)
### MAME
<img src="../../wiki_images/logos/mame-logo.png" width="180">
MAME is a multi-purpose emulation framework.
MAME's purpose is to preserve decades of software history. As electronic technology continues to rush forward, MAME prevents this important "vintage" software from being lost and forgotten.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Copy License](https://github.com/mamedev/mame/blob/master/COPYING)
[Licenses](https://github.com/mamedev/mame#license)
### ares
<img src="../../wiki_images/logos/ares-logo.png" width="180">
ares is a cross-platform, open source, multi-system emulator, focusing on accuracy and preservation.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### License
[Licenses](https://github.com/ares-emulator/ares/blob/master/LICENSE)
---
## Emulators: Sony
### RPCS3
<img src="../../wiki_images/logos/rpcs3-logo.png" width="150">
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.
#### Where to donate / support the project?
**NOTE:**
Since the beginning of the Ukraine war, RPCS3 became unable to manage funds from the Patreon directly due to sanctions imposed on Russia.
Before donating check the current status on their Patreon.
[Patreon](https://patreon.com/Nekotekina)
[Alipay](https://rpcs3.net/alipay)
### Duckstation
<img src="../../wiki_images/logos/duckstation-logo.png" width="150">
DuckStation is an simulator/emulator of the Sony PlayStation(TM) console, focusing on playability, speed, and long-term maintainability. The goal is to be as accurate as possible while maintaining performance suitable for low-end devices. "Hack" options are discouraged, the default configuration should support all playable games with only some of the enhancements having compatibility issues.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/stenzek/duckstation/blob/master/LICENSE)
### PPSSPP
<img src="../../wiki_images/logos/ppsspp-logo.png" width="150">
PPSSPP can run your PSP games on your PC or Android phone in full HD resolution or even higher. It can also upscale textures to make them sharper, and you can enable post-processing shaders to adjust color and brightness the way you like, and other effects.
#### Where to donate / support the project?
[PPSSPP Gold](https://www.ppsspp.org/buygold)
#### Licenses
[Licenses](https://github.com/hrydgard/ppsspp/blob/master/LICENSE.TXT)
### PCSX2
<img src="../../wiki_images/logos/pcsx2-logo.png" width="180">
PCSX2 is a free and open-source PlayStation 2 (PS2) emulator. Its purpose is to emulate the PS2's hardware and this allows you to play PS2 games on your PC, with many additional features and benefits.
#### Where to donate / support the project?
[Github Sponsor](https://github.com/sponsors/PCSX2)
#### Licenses
[Licenses](https://github.com/PCSX2/pcsx2/blob/master/COPYING.GPLv3)
### Vita3K
<img src="../../wiki_images/logos/vita3k-logo.png" width="150">
Vita3K is an experimental PlayStation Vita emulator for Windows, Linux, macOS and Android.
#### Where to donate / support the project?
[Ko-fi](https://ko-fi.com/vita3k/tiers)
#### Licenses
[Licenses](https://github.com/Vita3K/Vita3K/blob/master/COPYING.txt)
---
## Emulators: Nintendo
### Dolphin
<img src="../../wiki_images/logos/dolphin-logo.png" width="150">
Dolphin is an emulator for two recent Nintendo video game consoles: the GameCube and the Wii. It allows PC gamers to enjoy games for these two consoles in full HD (1080p) with several enhancements: compatibility with all PC controllers, turbo speed, networked multiplayer, and even more!
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/dolphin-emu/dolphin/tree/master/LICENSES)
### Primehack
<img src="../../wiki_images/logos/primehack-logo.png" width="150">
PrimeHack is a modified version of [Dolphin-Emu](https://github.com/dolphin-emu/dolphin) solely for playing Metroid Prime Trilogy for Wii with keyboard and mouse on a PC.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/Kekun/primehack/tree/master/LICENSES)
### Yuzu
<img src="../../wiki_images/logos//yuzu-logo.svg" width="150">
Yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/yuzuteam)
#### Licenses
[Licenses](https://github.com/yuzu-emu/yuzu/tree/master/LICENSES)
### Citra
<img src="../../wiki_images/logos/citra-logo.svg" width="150">
Citra is the world's most popular, open-source, Nintendo 3DS emulator.
It is written in C++ with portability in mind and builds are actively maintained for Windows, Linux, Android and macOS.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/citraemu)
#### Licenses
[Licenses](https://github.com/citra-emu/citra/blob/master/license.txt)
### Ryujinx
<img src="../../wiki_images/logos/ryujinx-logo.svg" width="150">
Ryujinx is an open-source Nintendo Switch emulator, created by gdkchan, written in C#. This emulator aims at providing excellent accuracy and performance, a user-friendly interface and consistent builds. It was written from scratch and development on the project began in September 2017.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/ryujinx)
#### Licenses
[Licenses](https://github.com/Ryujinx/Ryujinx/blob/master/LICENSE.txt)
### melonDS
<img src="../../wiki_images/logos/melonds-logo.svg" width="150">
melonDS aims at providing fast and accurate Nintendo DS emulation. While it is still a work in progress, it has a pretty solid set of features:
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/Arisotura)
[Paypal](https://paypal.me/Arisotura)
#### Licenses
[Licenses](https://github.com/melonDS-emu/melonDS/blob/master/LICENSE)
### Cemu
<img src="../../wiki_images/logos/cemu-logo.png" width="150">
Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state. It's written in C/C++ and is being actively developed with new features and fixes to increase compatibility, convenience and usability.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/cemu)
#### Licenses
[Licenses](https://github.com/cemu-project/Cemu/blob/main/LICENSE.txt)
---
## Emulators: Microsoft
### Xenia
<img src="../../wiki_images/logos/xenia-logo.png" width="150">
Xenia is an experimental emulator for the Xbox 360.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/xenia_project)
#### Licenses
[Licenses](https://github.com/xenia-project/xenia/blob/master/LICENSE)
### Xemu
<img src="../../wiki_images/logos/xemu-logo.png" width="150">
A free and open-source application that emulates the original Microsoft Xbox game console, enabling people to play their original Xbox games on Windows, macOS, and Linux systems.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/mborgerson)
#### Licenses
[Licenses](https://github.com/xemu-project/xemu/tree/master/licenses)
---
## Software
### OpenBOR
<img src="../../wiki_images/logos/openbor-logo.svg" width="150">
OpenBOR is a royalty free sprite-based side scrolling gaming engine. From humble beginnings in 2004, it has since grown into the most versatile, easy to use, and powerful engine of its type you will find anywhere.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/DCurrent/openbor/blob/master/LICENSE)
### GZDoom
<img src="../../wiki_images/logos/gzdoom-logo.png" width="150">
GZDoom is a feature centric port for all Doom engine games, based on ZDoom, adding an OpenGL renderer and powerful scripting capabilities
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/ZDoom/gzdoom/blob/master/LICENSE)
### ScummVM
<img src="../../wiki_images/logos/scummvm-logo.svg" width="150">
ScummVM allows you to play classic graphic point-and-click adventure games, text adventure games, and RPGs, as long as you already have the game data files. ScummVM replaces the executable files shipped with the games, which means you can now play your favorite games on all your favorite devices.
#### Where to donate / support the project?
[Website - Paypal](https://www.scummvm.org/)
#### Licenses
[Licenses](https://github.com/scummvm/scummvm/blob/master/COPYING)
### Solarus
<img src="../../wiki_images/logos/solarus-logo.svg" width="150">
Solarus is a free and open-source 2D game engine written in C++, that can run games scripted in Lua. It has been designed with 16-bit classic Action-RPGs in mind, and is available on a wide range of platforms.
#### Where to donate / support the project?
[Liberapay](https://liberapay.com/solarus-labs/donate)
#### Licenses
[Licenses](https://gitlab.com/solarus-games/solarus/-/blob/dev/license.txt)
### IKEMEN Go
<img src="../../wiki_images/logos/ikemen-go-logo.png" width="150">
IKEMEN Go is a remake of the IKEMEN (open source fighting games engine that supports M.U.G.E.N resources) in Googles Programming Language “Go”.
#### Where to donate / support the project?
We have not found a donation link to this project at this time or the project does not support donations.
#### Licenses
[Licenses](https://github.com/ikemen-engine/Ikemen-GO/blob/master/License.txt)
---
## Art and Assets
### Kenny.nl
<img src="../../wiki_images/logos/kennynl-logo.png" width="150">
Over the last couple of years Kenny.nl have released [30,000+](https://kenney.nl/assets) images, audio files and 3D models for anyone to use in any kind of project, all dedicated to the public domain. Thanks to your donation Kenny.nl can create even more content and support developers, students and teachers all over the world.
#### Where to donate / support the project?
[Patreon](https://www.patreon.com/kenney)
[itch.io](https://kenney.itch.io/kenney-donation)
#### Licenses
CC0 & CC1
---
## Other Licenses
Here we showcase the licenses of projects / functions we might use in part, got inspired by the code/solutions or want to give special credit.
### Capsimg
[Licenses](https://github.com/rsn8887/capsimg/blob/master/LICENCE.txt)
### Pixelitos
[Licenses](https://github.com/ItzSelenux/pixelitos-icon-theme/blob/main/LICENSE)
### Lutris
[Licenses](https://github.com/lutris/lutris/blob/master/LICENSE)
### Steam Deck & Steam Deck Logo
The Steam Deck logo and Steam Deck device is a registered trademark of Valve Corporation. This project is in no way officially affiliated with Valve.<br/>
### Other Trademarks
All trademarks, logos, controller images and brand names are the property of their respective owners. All company, product and service names used in this project are for identification purposes only. Use of these names, trademarks and brands does not imply endorsement.

View file

@ -0,0 +1,9 @@
<p float="center">
<img src="https://github.com/XargonWan/RetroDECK/blob/main/res/logo.png?raw=true" alt="RetroDECK logo" width="400"/>
</p>
`test`
<img src="/wiki_icons/kenneynl-input-pixel16×/tile_0137.png" width="25"/>
<img src="/wiki_icons/kenneynl-input-pixel16×/tile_0136.png" width="35"/>
<img src="/wiki_icons/kenneynl-input-pixel16×/tile_0136.png"/>

View file

@ -0,0 +1,18 @@
# The Pizza War
Who will prevail?
## The Italian Pizza Legion - IPL
Conservative purists of pure Italian Pizza Force.
*"Pizza is Italian and everything else is a facsimile, a mockery of Italian perfection. Our mothers and fathers gave everything for the purity of the Napoletana and so shall you!"*.
## The Murican Cheese Crust Patriots - MCCP
Patriotic Americans that try to crush the opposition with infinite pepperoni and cheese.
*"The Italian American imigrants took Pizza to the US and made it better thanks to freedom. Are we not free to put as much pepperoni as we want? How about Mozzarella or bread sticks is there a upper limit? We say no there is not! The symbol of new found freedom of the Italian Americans is not the cheese filled crusts? All of these inovations where made thanks to being free."*.
## The Nordic Pizza Cult - NPC
Label as Heretics by the others for their dark pizza magicks.
*"The Italians and Americans are weak, the don't dare to take Pizza beyond their set fake borders and rules. Here in the cold north we have learned and now know the truth... there is no borders. Pizza is an empty canvas, it can be painted in to what ever chaotic image of food perfection we desire!"*.

View file

@ -0,0 +1,27 @@
# RetroDECK Story & Philosophy
## How RetroDECK was born?
Let's take a step back.
RetroDECK was born on March 4th 2022 in Kyoto, Japan, with the name of [351EDECK](https://imgur.com/a/tGC9ZGO) because I am also one of the founding members of 351ELEC, now [AmberELEC](https://amberelec.org/).
What I wanted to do was to "port" 351ELEC to the Steam Deck, but instead of doing a custom firmware to flash, doing it as an application that could be launched from Steam.
Eventually, after talking to the other team members, we decided that we didn't want to support another platform such as Steam Deck, so I decided to continue the project on my own, renaming it to RetroDECK.
Back then I had many options on how to create 351EDECK, such as a bash script, appimage and flatpak.
In the beginning I opted for a simple shell script, in fact RetroDECK/351EDECK v0.1a existed as a mere shell script.
However I had bad feedbacks from the community because someone was feeling unsafe to give my script the root privileges so evaluating the Steam Deck use case I felt like it was not the right direction to take, the people was not feeling comfortable to give the sudo to a random script downloaded from the internet, so they asked to packetize it in some way.
Valve suggests the flatpak technology to port the applications on Steam Deck so, I decided to follow their guidelines, and I created the RetroDECK that you know today, starting from a Manjaro virtual machine as a development environment because I didn't have a Steam Deck yet.
// Xargon
## What is RetroDECK's philosophy?
Emulation is a global multi-generational effort of development that has lasted for decades, motivated by the pure love for video game preservation for current and future generations. RetroDECK depends on the constant development of all our dependencies (the emulators, front-end, various assets, etc…). It would be unfair to both the hard work that has been done in those projects and to the entire open-source community if we said otherwise or tried to take credit, conceal, or obscure it for our own gain.
We always strive to have the best possible relationship with the teams that generously provide and develop the third-party software we are depending on now and in the future. Everyone that works on RetroDECK is immensely grateful for the global collective effort and work that has been done. Without these projects and those passionate people RetroDECK would not be possible.
We also want to add a word for the developers of the third-party projects: Please feel free to reach out to us, talk to us for any reason and share your ideas. We value your feedback and suggestions, and our door is always open for collaboration and improvements. You are the backbone of our project, and we appreciate your contributions.
You can find more about our dependencies on the wiki and how to donate to them or us under the donations page on this wiki.
// The RetroDECK Team

View file

@ -0,0 +1,115 @@
# The Team
## Community Management
### [Lazorne](https://github.com/Lazorne)
Community management/outreach, testing, documentation, feature suggestions, does controllers and some design.
<details><summary> </summary>
Meme Lord of the Wiki and also the cult leader of the NPC (The Nordic Pizza Cult) also called by the others as "The Pizza Heresy Cult" or "Harbingers of Pizza Chaos". Instigator of the internal pizza war.
</details>
## Developers
### [XargonWan](https://github.com/XargonWan)
RetroDECK project founder and also one of the founding members of [AmberELEC](https://amberelec.org/).
<details><summary> </summary>
Grand General of the IPL (Italian Pizza Legion) also known as the Napoletanan Fist in the internal pizza war.
</details>
### [IceNine451](https://github.com/icenine451)
Creator of the `RetroDECK configurator`, the `RetroDECK Framework` and various cool things.
<details><summary> </summary>
Freedom loving leader of the MCCP (Murican Cheese Crust Patriots) in the internal pizza war.
</details>
### [Lx32](https://github.com/Lx32)
Develops various new features, functions and tools.
<details><summary> </summary>
1st Commander of the IPL (Italian Pizza Legion) nicknamed Paladin al Taglio in the internal pizza war.
</details>
### WallK
Checks GODOT and other things.
<details><summary> </summary>
Pizza Mercenary
</details>
## Testers
### [dottormac](https://github.com/redeemer666)
Does bleeding edge cooker testing (lives in the danger zone), some feature suggestions and design.
<details><summary> </summary>
2nd Commander of the IPL (Italian Pizza Legion) nicknamed The Wrath of Siciliana in the internal pizza war. .
</details>
## Collaborators: The ES-DE Group
### [Leon Styhre](https://gitlab.com/leonstyhre)
Maker of EmulationStation Desktop Edition
### [anthonycaccese](https://github.com/anthonycaccese/)
Theme creator for ES-DE and [AmberELEC](https://amberelec.org/)
### [Weestuarty](https://github.com/Weestuarty)
Theme creator for ES-DE
## Others
### [Niroku](https://github.com/Hew-ux)
Helps with community management, is also part of [Batocera](https://batocera.org/)
### [Zurdi](https://github.com/zurdi15)
Creator of RomM and other projects.
## Additional credits
### [lilbud](https://github.com/lilbud)
Have done some themes for ES-DE.
### [RavenKilit](https://github.com/RavenKilit)
Did some code and testning, contributed to [AmberELEC](https://amberelec.org/)
### [MorGuux](https://github.com/MorGuux)
Made the RetroDECK steamdb graphics for the old logo
### [Pixelguin](https://github.com/Pixelguin)
Made the new logo and steamdb graphics
### teotwaki
Generous cloud hosting sponsor
### [Gabeboii](https://github.com/gabeeeboii)
Webmaster
### Draco
Server Administration
### [ItzSelenux](https://github.com/ItzSelenux)
Maker of [pixelitos](https://github.com/ItzSelenux/pixelitos-icon-theme)
## Special Thanks
We want give special thanks to:
- Our Patreons and doners that keeps the build servers running and provide feedback.
- All related emulation, frontend and software projects that we are dependent on.
- All people that have put both time and money into emulation projects.
- All the users who help others with support, guidance and good spirit.
- All the users who help with testing and reporting issues.
- All the community creators who creates various art and assets for the community.
You are all the ones that makes this project possible.

View file

@ -0,0 +1,46 @@
# Inspiration for RetroDECK and goals
RetroDECK is inspired by embedded emulation systems like:
- AmberELEC
- EmuELEC
- CoreELEC
- Lakka
- Batocera
The RetroDECK team consists of several veterans from some of the projects mentioned above as well as a bunch of other talented other individuals.
# What are the long term vision and goals of the RetroDECK project?
The long term vision and goals of the project is an all-in-one application to manage your entire retro games library that is:
- Already configured and should just work with your games.
- Has disaster recovery and multi device support: with cloud saves and syncs.
- Easy to install with one click installation.
- Easy to use and provide a "Console-like / Batocera-like" featured user experience.
- Easy to manage your collections of roms, mods and romhacks.
- As much as possible should be configurable from inside RetroDECK itself without needing to exiting the application.
- Make tighter integrations with bundled emulators and expose more features and ways to handle them to the end users.
- Should be secure, safe, and stable.
- Should have an easy way to mange external controllers and other inputs.
- Should support a majority of all supported Emulators in ES-DE, so at least you have one good option per system.
- Should in the long run support applications outside of the scope of ES-DE via a ports manager.
- Should be plug and play and fill the need for a portable retro gaming solution that you can bring on the go to a friends/family/others house. Just dock into the TV and get going!
- Should fully support Steam Deck, Linux Desktop, other SteamOS or Linux based devices.
- AND MORE

View file

@ -0,0 +1,45 @@
# Known issues
What follows is a list of knows issues.
For a list of reported bugs please check here on github: [RetroDECK issues](https://github.com/XargonWan/RetroDECK/issues/)
## Big issues
- NONE Reported
## Minor issues
- `PPSSPP` Retroachievements is in the latest version, you can login / logout / enable hardcore mode normally from the emulators interface. It is right now not configurable in the Configurator (as it works a bit different the other emulators), we hope to have a solution for it at a later date.
- `RetroArch: Gambatte` Quitting the core with the `Quit` radial function makes the core swap the palette while playing GB.
- `RetroArch` Borders are in some few cases disappearing in the latest RetroArch version. A possible workaround is to reset RetroArch from the Configurator.
## Hotkey and Controller Issues
**Not all Emulators has hotkey support; some have partial support, some has none and some has a majority implemented**
The plan is to map as much as we can into the RetroDECK Hotkey System below. We are also patching in Emulator Hotkeys with the `RetroDECK Framework` (if possible) to be compatible with the system. If a emulators later versions adds better hotkey support we plan to map it towards the same functions bellow for a unified experience across as many emulators as possible.
### Emulator Issues
* `PPSSPP` has a bug in with multi-input hotkeys in their flatpak version, so we did a workaround and bound ESC is Open Menu. This allows you to access all of the emulator features and can quit.
* `RPCS3` hotkeys/shortcuts do not work and they are a new experimental feature. To exit you have to shut down RPCS3 from the `Switch Window` inside the Steam Deck interface.
* `CEMU` has almost no hotkey support.
* `XEMU` has no hotkey support.
* `Citra` is the only dual-screen emulator that allows a hotkey for changing the screen layout, others: `MelonDS`, `RetroArch`, `Cemu` has no hotkey for it.
# Missing Features
We are working on implementing all of these features over the big releases. Some will take longer time then others and we will also add more things to this list when needed.
**Missing features:**
* Cloud sync
* USB transfer
* STFP
* Better External controller support.
* Better gyro support.
* Dynamic external display resolution support for borders and viewports.
* All Emulators supported by ES-DE so there at least is one per system in RetroDECK.
* A Ports Downloader for additional systems and features.
* A rebuilt Configurator that is a Godot application that support controller navigation.
* A rebuilt First Run installer in Godot.
* Better art: Mascot, Easter Eggs, Logos.
* A multi-user system with user profiles.

View file

@ -0,0 +1,15 @@
# Reporting bugs and issues.
## Before you report:
- Check [Github issues](https://github.com/XargonWan/RetroDECK/issues/) on reported issues.
- Check the [Known Issues](../wiki_bugs/known-issues.md).
## How to Report?
You can submit bugs and issues on:
- On [Github issues](https://github.com/XargonWan/RetroDECK/issues/)
- On [Discord](https://discord.gg/Dz3szYsP8g) in the `🤝-community-support` or `🆘-support` channels.
- If you are not certain of a issue it is better to discuss it with the community in <br>
`🤝-community-support` before submitting it.

View file

@ -0,0 +1,58 @@
# Can I contribute to the project?
Yes! Everybody is welcome to contribute in any way possible if it is personal time or funds.
- Do you know how to code and want to contribute? Please join the development team!
- Maybe you know graphics, art or UI & UX design? Join the discussion!
- You can just help by helping others in the support or guide people on various social media and communication platforms.
- You can also help by just finding and testing the best configurations for the emulators and the roms.
- Or just help us by doing bug reports on all the issues you find (please check old issues first before submitting a new one).
- You can also choose do donate to the project over at [Donations & Licenses 🎁](../wiki_about/donations-licenses.md).
## Any specific examples of what you need help with?
### Artist/Creators:
- Create new pixel art for the Radial menus.
- Create easter egg art for various holidays and functions.
- Create menu art for a new Configurator.
- Create input art that can be shown when you start a game.
- Create input art guides for the wiki for the Steam Deck and later various controllers.
- Create patch note and hype videos.
- Create instruction videos.
- Help us make RetroDECK better.
### Developers:
- Help us put in and make new features.
- Help us make the Configurator a godot application with full controller support.
- Help us get releases out faster.
- Help us make RetroDECK better.
### Testers:
- Help us test cooker builds and submit bugs and feedback.
-
- Help us make RetroDECK better.
### Everyone:
- Be kind and follow the rules.
- Spread the word of RetroDECK if you like it, if you don't like it or have suggestions put them on github into issues or discuss them on discord.
- Engage with the rest of the community.
- Help us make RetroDECK better.

View file

@ -0,0 +1,55 @@
# Discord
The Discord can be found here:<br>
[Discord](https://discord.gg/Dz3szYsP8g)
## Information
Discord is a primary communication hub for the RetroDECK project.
## Discord Rules
### Do not do any of the following
- Discuss any type of piracy whatsoever.
- Ask for roms, bios, games and where/how to find
them and don't PM the RetroDECK team members about it either.
- Post NSFW & NSFL content.
- Try to sell or promote your products and/or services, this is not a store or a marketplace (discussing experiences, asking for advice and reviews of products related to gaming and retro gaming is fine).
- Post hateful comments.
- Discuss your political or religious viewpoints here.
- Attack server members in the channels or private in PMs on: political viewpoints, religious/non religious believes, gender, race, sexual orientation, age or any other way (if you have been attacked please message a mod in a PM).
- Spam or flood the channels.
- Share information or pictures about leaked games.
- Spoil any new or old game or media. If you want to write about it, use the ||spoiler tag|| to prevent to ruin other user's fruition.
- Use the ⁠💬-general channel for support requests.
- <details><summary>Rule 42</summary>
DO NOT : Break the space time continuum with time travel and/or para dimensional travelling.
</details>
### Please help and try your best to do
- Try to keep memes, light spam and funny posts in the ⁠🐸-random-memes channel (however flooding is always prohibited and all server rules must till be respected even in this channel).
- Be patient, be polite, dont swear and be respectful to each other.
- Keep the topic in the correct channel.
- Help other members of the community.
- Be mindful that the RetroDECK team is working on this project out of passion and spending their own free time to make it happen. You can't expect 24/7 hours support and help. When you do feel the need to ask for help or advice from the RetroDECK team respect rule 13.

View file

@ -0,0 +1,40 @@
# Lemmy / Reddit
## Information
## Lemmy/Reddit Rules
### 1. DO NOT: Post links/discussion of illegal, copyrighted, pirated or leaked content.
* Post links directly to pirated games, ROMs, BIOSes or shader caches.
* Partake in discussion or encouragement to in piracy.
* Ask for technical support for pirated games/software.
* Post links or discussions to leaked content of any kind.
* Censoring or obfuscating parts of an link to any part of the content above to bypass filters.
### 2. DO NOT: Post NSFW & NSFL content.
### 3. DO NOT: Make posts about: buying, selling, trading, begging, giveaways, self or crowd-funding without asking.
* You cant promote crowd-funding, begging, affiliate links or other form of raising funds without asking.
* Discussing experiences, giving advice or reviews of products related to gaming and retro gaming is always OK!
* All promotions or marketing must be vetted and approved by the RetroDECK team on Discord.
### 4. DO NOT: Make posts about anything other then RetroDECK, Emulation or community relevant content.
### 5. DO NOT: Post hateful comments or posts.
* Dont attack any community member on: political viewpoints, religious/non religious believes, gender, race, sexual orientation, age or any other way (if you have been attacked please message the a mod here or on discord).
* Be patient, be polite, be kind, dont swear and be respectful to each other.
### 6. DO NOT: Discuss your political or religious viewpoints here.
### 7. DO NOT: Spread misinformation
* Spread intentional misinformation.
* Impersonate another: entity, company or person.
# Vivi e lascia vivere
// RetroDECK Team

View file

@ -1,19 +1,26 @@
# About testing
# Testing RetroDECK
There are two ways help us to test features in RetroDECK.<br>
The first one is our bleeding edge `RetroDECK Cooker` channel.<br>
The first one is our bleeding edge `RetroDECK Cooker` channel.<br>
The second one is the `Experimental Features` inside the stable version inside the `Developer Options Menu`.
## 🛑 Warning! Backup before testing! 🛑
These builds and features can make you loose all data including `ROMS`, `BIOS` and `Scraped Data` etc..<br>
We **recommend** that you don't run any experimental features or cooker builds on your main gaming machine.
## Can I help you with testing?
Yes, do follow the instructions on this page and tell in Discord channel `i-want-to-help` that you are interested in testing out `RetroDECK Cooker` builds or want to give feedback on `Experimental Features`.
You will get some instructions from one of the mods and be promoted to a `BetaTester` role.
## 🛑 Warning! Expect bugs and issues! 🛑
These builds and experimental features can contain several bugs and be unstable.
## Before you begin!
### Backup before testing! 🛑
These builds and features can make you loose all data including `ROMS`, `BIOS` and `Scraped Data` etc..<br>
We **recommend** that you don't run any experimental features or cooker builds on your main gaming machine.
### Expect bugs and issues! 🛑
These builds and experimental features can contain several bugs and be unstable.
## How do I take a backup?
Backup your `/retrodeck/` and it's content and `/.var/app/net.retrodeck.retrodeck/`.
Backup your `/retrodeck/` and it's content and `/.var/app/net.retrodeck.retrodeck/`.
You could copy the entire folders to a secure location or for a quick test you could just rename both of the folders into something else.
Then RetroDECK will think it's a fresh install.
@ -21,25 +28,22 @@ Example of renaming:<br>
`OLDnet.retrodeck.retrodeck/`<br>
`OLDretrodeck/`
## Can I help you with testing?
Yes, do the backups above and tell in Discord channel `i-want-to-help` that you are interested in testing out `RetroDECK Cooker` builds or want to give feedback on `Experimental Features`.
You will get some instructions from one of the mods and be promoted to a `BetaTester` role.
# What is RetroDECK Cooker?
## What is RetroDECK Cooker?
[RetroDECK Cooker](https://github.com/XargonWan/RetroDECK-cooker) are the bleeding edge development builds of [RetroDECK](https://github.com/XargonWan/RetroDECK). These builds are only for development and testing purposes.
## How do I install cooker builds
### How do I install cooker builds?
You can download the latest `.flatpak` releases from the above link and install them via CLI or from the desktop.
**NOTE:**
* You need to have set up a sudo password if you want to test on a Steam Deck.
* If you have `RetroDECK` the stable release on your system `RetroDECK-Cooker` will be installed separately since it is a different branch. We do not recommend running cooker on a system where you have a running `RetroDECK` stable.
**NOTE:**
* You need to have set up a sudo password if you want to test on a Steam Deck.
* If you have `RetroDECK` the stable release on your system `RetroDECK-Cooker` will be installed separately since it is a different branch. We do not recommend running cooker on a system where you have a running `RetroDECK` stable.
### Desktop:
#### Desktop
You should just be able to double click on the .`flatpak` file and what ever application manager/installer (like Discover) you have installed should be able to install it. If that does not work use the CLI method.
You should just be able to double click on the .`flatpak` file and what ever application manager/installer (like Discover) you have installed should be able to install it. If that does not work use the CLI method.
### CLI:
#### CLI
Run the following command from where you have downloaded the `.flatpak` file. <br>
`flatpak install RetroDECK.flatpak`
@ -47,27 +51,28 @@ Run the following command from where you have downloaded the `.flatpak` file. <b
## How do I uninstall RetroDECK Cooker?
### Desktop:
### Desktop
Just go into your application manager/installer (like Discover), find RetroDECK and press uninstall.
### CLI:
### CLI
Run the following command: <br>
`flatpak remove RetroDECK`
### Why does the cooker release have strange names?
The names are randomly generated to make it easy to see what build you are running.
The names are randomly generated to make it easy to see what build you are running.
# What are RetroDECK experimental features?
Experimental features are a showcase of what proof-of-concepts we are trying out or working on that you can try out even on stable releases and we would like feedback on them. All these features are just conceptual and we hope them release ready in an later major update or scrap them if the don't work out.
Standard backup procedures apply as written above.
## What are RetroDECK experimental features?
Experimental features are a showcase of what proof-of-concepts we are trying out or working on that you can try out even on stable releases and we would like feedback on them. All these features are just conceptual and we hope them release ready in an later major update or scrap them if the don't work out.
Standard backup procedures apply as written above.
## How do I enable them?
### How do I enable them?
From CLI run:
From CLI run:
`flatpak run net.retrodeck.retrodeck uuddlrlrstart`
The `Developer Options Menu` should show up inside the Configurator.
The `Developer Options Menu` should show up inside the Configurator.

View file

@ -0,0 +1,29 @@
# Steam Input
RetroDECK handles most of the advanced controller mapping via Steam Input.
## All controls in Steam Input and RetroDECK can be changed
Everyone is free to rebind the buttons as you see fit in the any of the RetroDECK's Steam Input profiles, inside the emulators or both.
You can make your own profile to better suite your needs and combine it with input changes you make in each emulator.
But always remember if you rebind the keys inside RetroDECK in both Steam Input and the Emulators there will always be a risk that an upcoming update of either Steam or RetroDECK (thus including new versions of the built in Emulators) can come with changes that breaks your profiles.
Also note that if you break your controller profile with your tinkering you can always revert to the Official Controller Profiles or reinstall them from the Configurator.
## Prerequisites for Steam Input work
### RetroDECK must be added to Steam
In Steam go to the tab `Games` press `Add non Steam game to My library` and select RetroDECK to add it into your library or add it via the software `BoilR`.
### Device templates like Steam Deck
Devices like the Steam Deck with a built-in controller you will be able to find the profile under `Controller Settings` -> `Controller Layouts` -> `Templates`.
### Connect the external controller to find the templates for them
If you plan on using external controllers, you need to have the controller connected via either: `Cable` `Bluetooth` `Wireless` for the controller profile to show up automatically. You will find the profile under `Controller Settings` -> `Controller Layouts` -> `Templates`.
### The following only applies to Linux Desktop:
**You must have enable all Steam Inputs in Steam** <br>
In Steam go to the `Settings` tab to go into the `Steam Settings`, press `Controller`, enable all Steam Inputs: `Xbox` `PlayStation` `Switch Pro` `Generic`.

View file

@ -0,0 +1,78 @@
# About udev
udev is a device manager for the Linux kernel that gives the system access to various running hardware via device `.rules` files also known as `udev rules`.
udev rules are used to allow and manage the access to a specific devices, so without a proper udev rule some devices such as custom controller could not be used by RetroDECK nor by Steam or any other part of the system.
Read more on:
- [Debian Wiki](https://wiki.debian.org/udev)
- [Arch Wiki](https://wiki.archlinux.org/title/udev)
- [Wikipedia](https://en.wikipedia.org/wiki/Udev)
## Important directories
### /lib/udev/rules.d/
This directory contains the default `.rules file` shipped by your system. <br>
They should not be edited.
### /etc/udev/rules.d/ or /run/udev/rules.d (depending on the system)
This directory contains custom `.rules file` additions to those shipped in `/lib/udev/rules.d/` and the administrator can add more rules into this directory.
If a `.rules file` exist for the same device under `/lib/udev/rules.d/` and `/etc/udev/rules.d/` the `/etc` version will always take preset over the `lib` version.
## Example of a .rules file
The content of a Merlin UTMS modem .rules file.
```
ATTRS{prod_id2}=="Merlin UMTS Modem", ATTRS{prod_id1}=="Novatel Wireless", SYMLINK+="MerlinUMTS"
```
A .rules file can also contain more the one devices example multiple 8Bitdo controllers:
```
# 8Bitdo F30 P1
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 GamePad", ENV{ID_INPUT_JOYSTICK}="1", TAG+="uaccess"
# 8Bitdo F30 P2
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 II", ENV{ID_INPUT_JOYSTICK}="1", TAG+="uaccess"
```
## Controller udev projects
**Valve's - Steam Devices**
[steam-devices github](https://github.com/ValveSoftware/steam-devices)
The Steam Devices package is usually installed when you install Steam on your system, it contains rules for the most common controllers.<br>
This package is also part of SteamOS so there is no need to install it on the Steam Deck. <br>
**Game Devices udev**
[game-devices-udev codeberg](https://codeberg.org/fabiscafe/game-devices-udev)
The Game Devices udev project is an effort to combine all game devices into one package but it is still early and several are missing. <br>
**Batocera udev**
[Batocera - Controllers github](https://github.com/batocera-linux/batocera.linux/tree/master/package/batocera/controllers)
The Batocera project has also combined a list of other controllers that might be missing from the two projects above.
## Quick tips on udev installation
### Administrator sudo access is needed
Installing a udev rule needs administrator root access with sudo and the rules should be put in either the `/etc/udev/rules.d/` or `/run/udev/rules.d` example from above.
- You can copy the `.rules` from terminal into the directory either from terminal or with a file browser.
- The rules should be in the `.rules` file format and should be extracted from any `.zip` `.7z` `.tar` or any other compressed format.
### Reboot or reload rules
After a rule is added you will need to either reload the `udevadm` from terminal by issuing the following command: `sudo udevadm control --reload-rules` or just reboot the system.
- The udev rule should be added when the RetroDECK or any other software that you want access to the device is not running.
### SteamOS or immutable systems
For SteamOS or other immutable systems udev rules might or might not persistent persist over SteamOS updates (we can't say for certain).

View file

@ -0,0 +1,28 @@
# Adaptive Controllers
Adaptive Controllers is a small category of specialized controllers that are designed to primarily to meet the needs of gamers with limited mobility.
They can be customized to fit the players needs with swapable inputs from various sources controlled by the main hub of the adaptive controller.
You can also sometimes expand to more inputs as well by connecting other controller types like a Flight Stick.
## Xbox Adaptive Controller (XAC)
<img src="../../wiki_images/controllers/xbox-adaptive.png" width="250">
[Microsoft XAC Website](https://www.xbox.com/en-US/accessories/controllers/xbox-adaptive-controller)
> When everybody plays, we all win.
### The xone Project
[The xone Project](https://github.com/medusalix/xone) <br>
Has firmwares, udev rules and drivers might be needed to get it to run on your distribution to get the wireless connections working.
### How to configure?
The Linux Kernel has had XAC support since version 3.17.<br>
As the XAC outputs standard xinput we don't see any reason why this should not work with RetroDECK.
None on the RetroDECK Team owns a XAC, but we would love to hear from your experiences using it with RetroDECK. <br>
If there is something we in the team can help you with, maybe we can design a better general Steam Input profile for the XAC or any other feedback feel free to contact us on Discord.

View file

@ -0,0 +1,36 @@
# Arcade Controllers
Arcade Controllers is a broad category that encompasses the vast majority of third party controllers that are used for playing arcade games, arcade style games or fighting games. <br>
As long as you can connect the arcade solution to USB, it has working udev/drivers and xinput then it should work with RetroDECK.
**Always check for Linux Support**<br>
Just to be safe, it is better before you buy anything to double check if there is Linux support for it.
Wireless Fight Sticks can be a hit or miss depending on if they require external configuration software.
## Fight Sticks
<img src="../../wiki_images/controllers/arcade-ps3.png" width="250">
Many USB Fight Sticks work nativly on Linux without much of a configuration. There might be need for a slight input remapping if they are a console version of a Fight Stick.
## Fight Stick 2 Player Combo
<img src="../../wiki_images/controllers/arcade-x-arcade.png" width="250">
Several suppliers have made Two Player Fight Sticks Solutions for versus and co-op gameplay.
## Arcade Machines - DIY
<img src="../../wiki_images/controllers/arcade-set.png" width="250">
<img src="../../wiki_images/controllers/arcade-trackball.png" width="250">
There are several predone kits to make your own PC connected Arcade Machine. <br>
They a majorty of them use a standard USB interface to connect to the PC and many times the same connector board as in the standalone Fight Sticks while the trackballs has a seperate USB connection that simulates a mouse.
There should not be any major issues connecting these with RetroDECK except maybe a controller remapping.

View file

@ -0,0 +1,43 @@
# Flight Controllers
Flight Controllers is a broad category that encompasses the vast majority of third party controllers that are used for playing games where you are flying airplanes or other things as magic carpets. <br>
Some of them might lack Linux drivers or udev rules entirely with others there is a community effort to make them work under Linux.<br>
A few of them also require Windows only software to configure various inputs and buttons.<br>
If you own a Flight Controller the best solution is just to try it on Linux via the Steam Deck Dock or a Linux PC and see if it works as expected.<br>
If it does work on Linux and it supports xinput, we see no reason why it should not work on RetroDECK.
If you have a Flight Controller that did not work on Linux but have found a way to make it work:<br>
- Please try to contribute udev rules to the [game-devices-udev codeberg](https://codeberg.org/fabiscafe/game-devices-udev)
- (Optional) Inform the RetroDECK team on how you got it working on discord.
**Always check for Linux Support**<br>
Just to be safe, it is better before you buy anything to double check if there is Linux support for it.
## Flight Sticks - Arcade
<img src="../../wiki_images/controllers/flightstick-arcade.png" width="250">
Arcade flight sticks are used for mainly flight arcade games.
## Flight Sticks - Professional
<img src="../../wiki_images/controllers/flightstick-pro.png" width="250">
Professional level flight sticks are used for mainly flight simulation games.
## Cockpit Style Sticks
<img src="../../wiki_images/controllers/flight-cockpit.png" width="250">
Cockpit Style flight sticks are used for mainly flight simulation games.
## Flight Pedals
<img src="../../wiki_images/controllers/flight-pedals.png" width="250">
Flight Pedals are used for mainly flight simulation games.

View file

@ -0,0 +1,76 @@
# Generic Controllers
**Note these inputs are part of the upcoming 0.8b update.**
<img src="../../wiki_images/controllers/xiaomi-controller.png" width="280">
<img src="../../wiki_images/controllers/8bitdo-pro2.png" width="250">
Generic Controllers is a broad category that encompasses the vast majority of third party controllers.<br>
## Generic: Standard
This guide assumes that they have a similar layout as an Xbox Controller aka a Standard layout.
### What are the Official profiles called?
- Generic Standard : `RetroDECK: Generic: Standard - <Version Number>`
## Global Hotkeys: Generic Button Combos
The global hotkeys are activated by pressing the `SELECT` button and holding it while pressing the corresponding other button input.
What follows is a list of hotkeys:
`Function` Shows what the hotkey does. <br>
`Button / Combination` Shows the input you need to make to trigger the command. <br>
`Command` Shows what is being sent to the emulator. <br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
| Function | Button / Combination| Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `SELECT + A` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `SELECT + B` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `SELECT + X` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Open Menu | `SELECT + Y` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` |
| Quit Emulator | `SELECT + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | | |
| Previous State Slot | `SELECT + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `SELECT + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `SELECT + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `SELECT + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `SELECT + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `SELECT + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `SELECT + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `SELECT + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `SELECT + Left Joystick - Up` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` |
| Escape | `SELECT + Left Joystick - Down` | `ESC` | `PPSSPP` `Computer emulators` `Solarus` `IkemenGO` |
| Enter | `SELECT + Left Joystick - Right` | `Enter` | `Computer emulators` `OpenBOR` |
### Right Joystick as Mouse
By holding `SELECT` and moving the right joystick you can use it as a mouse for various systems that uses mouse input.
| Function | Button / Combination| Command | Comment |
| :--- | :---: | :---: | :---: |
| Joystick as Mouse | `SELECT + Right Stick` | | Movement |
| Right Click | `SELECT + L3` | `Right Click` | |
| Left Click | `SELECT + R3` | `Left Click` | |
### RetroArch: Additional Hotkeys
These hotkeys also work for RetroArch and are built in.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
### Arcade Systems: Additional Hotkeys
This hotkey work for RetroArch, MAME, FBNEO and other arcade systems.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `SELECT` | `RetroArch` `MAME` `FBNeo` | |

View file

@ -0,0 +1,95 @@
# Lightguns Controllers
Lightguns are special type of controllers use to play lightgun games is a broad category that encompasses the vast majority of first / third party controllers, DIY and open source projects.
## Sinden
<img src="../../wiki_images/controllers/lightgun-sinden.png" width="250">
[Sinden Website](https://sindenlightgun.com/)
### How to configure?
WIP
## GUN4IR
<img src="../../wiki_images/logos/gun4ir-logo.png" width="250">
The GUN4IR uses LED point strips around your display and allows you to rebuild existing lightguns or toyguns into the GUN4IR system. <br>
The payed software to configure the GUN4IR guns is Windows only.
[GUN4IR Website](https://www.gun4ir.com/)
### How to configure?
WIP
## AE Light Gun
<img src="../../wiki_images/controllers/lightgun-aelightgun.png" width="250">
[AE Light Gun Website](https://www.aelightgun.com/)
### How to configure?
WIP
## AimTrak
<img src="../../wiki_images/controllers/lightgun-aimtrak.png" width="250">
### How to configure?
WIP
## SAMCO - Arduino Powered IR Light Gun
<img src="../../wiki_images/controllers/lightgun-guncon1.png" width="250">
SAMCO is a way to rebuild old Namco GunCon's with Arduino to a IR Light Gun that works with modern displays.
[The SAMCO Project Github](https://github.com/samuelballantyne/IR-Light-Gun)
### How to configure?
WIP
## GunCon or G-Con
<img src="../../wiki_images/logos/guncon-logo.png" width="250">
The GunCon, known as the G-Con in Europe, is a family of gun peripherals designed by Namco for the PlayStation consoles.
### ConCon 1 and 2
<img src="../../wiki_images/controllers/lightgun-guncon1.png" width="250">
<img src="../../wiki_images/controllers/lightgun-guncon2.png" width="250">
The version one and two of the GunCon only works on CRT displays.
#### How to configure?
WIP
### GunCon 3
<img src="../../wiki_images/controllers/lightgun-guncon3.png" width="250">
The version three for the Playstation 3 works with some modern displays.
#### How to configure?
WIP
## Wii Remote Gun
<img src="../../wiki_images/controllers/lightgun-wiigun.png" width="250">
### How to configure?
WIP

View file

@ -0,0 +1,37 @@
# Music / Rhythm Controllers
Rhythm Controllers are special type of controllers use to play rhythm games.
Is is a broad category that encompasses the vast majority of third and first party controllers.
## Rockband & Guitar Hero Instruments
<img src="../../wiki_images/controllers/guitar-hero-guitars.png" width="350">
<img src="../../wiki_images/controllers/rockband-drums.png" width="153">
### How to configure
WIP
## DJ Hero Turntable
<img src="../../wiki_images/controllers/dj-hero-turntable.png" width="250">
### How to configure
WIP
## DK Bongos
<img src="../../wiki_images/controllers/dk-bongos.png" width="250">
### How to configure
WIP
## Taiko Drum & Bachi
### How to configure
WIP
<img src="../../wiki_images/controllers/taiko-drum-bachi.png" width="250">

View file

@ -0,0 +1,96 @@
# Nintendo Controllers
**Note some these inputs are part of the upcoming 0.8b update.**
## Switch Pro
Supported by Steam Input
<img src="../../wiki_images/controllers/switch-pro.png" width="250">
## What is the Official - Switch Pro RetroDECK profile called?
- Switch Pro: `RetroDECK: Switch Pro - <Version Number>`
### Switch Pro - Global Hotkeys: Nintendo Button Combos
The global hotkeys are activated by pressing the `SELECT` button and holding it while pressing the corresponding other button input.
What follows is a list of hotkeys:
`Function` Shows what the hotkey does. <br>
`Button / Combination` Shows the input you need to make to trigger the command. <br>
`Command` Shows what is being sent to the emulator. <br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
| Function | Button / Combination| Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `SELECT + B` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `SELECT + A` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `SELECT + Y` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Open Menu | `SELECT + X` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` |
| Quit Emulator | `SELECT + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | | |
| Previous State Slot | `SELECT + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `SELECT + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `SELECT + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `SELECT + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `SELECT + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `SELECT + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `SELECT + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `SELECT + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `SELECT + Left Joystick - Up` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` |
| Escape | `SELECT + Left Joystick - Down` | `ESC` | `PPSSPP` `Computer emulators` `Solarus` `IkemenGO` |
| Enter | `SELECT + Left Joystick - Right` | `Enter` | `Computer emulators` `OpenBOR` |
### Right Joystick as Mouse
By holding `SELECT` and moving the right joystick you can use it as a mouse for various systems that uses mouse input.
| Function | Button / Combination| Command | Comment |
| :--- | :---: | :---: | :---: |
| Joystick as Mouse | `SELECT + Right Stick` | | Movement |
| Right Click | `SELECT + L3` | `Right Click` | |
| Left Click | `SELECT + R3` | `Left Click` | |
### RetroArch: Additional Hotkeys
These hotkeys also work for RetroArch and are built in.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
### Arcade Systems: Additional Hotkeys
This hotkey work for RetroArch, MAME, FBNEO and other arcade systems.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `SELECT` | `RetroArch` `MAME` `FBNeo` | |
## Joy-Con
<img src="../../wiki_images/controllers/joy-con.png" width="250">
WIP
## GameCube Controller Adapter for Wii U
<img src="../../wiki_images/controllers/wiiu-gcpad-adapter.png" width="250">
WIP
## Wii Remote (Wiimote)
<img src="../../wiki_images/controllers/wii-mote.png" width="250">
WIP
## Wii U GamePad
<img src="../../wiki_images/controllers/wii-u-gamepad.png" width="250">
WIP

View file

@ -0,0 +1,93 @@
# Playstation Controllers
**Note these inputs are part of the upcoming 0.8b update.**
Steam Input have support for the following controllers:
## Playstation 3 - Dualshock 3 / Sixaxis
<img src="../../wiki_images/controllers/ps3-dualshock3.png" width="250">
## Playstation 4 - Dualshock 4
<img src="../../wiki_images/controllers/ps4-dualshock4.png" width="250">
## Playstation 5 - DualSense
<img src="../../wiki_images/controllers/ps5-dualsense.png" width="250">
## What are the Official profiles called?
- Dualshock 3 / Sixaxis: `RetroDECK: Dualshock 3 - <Version Number>`
- Dualshock 4: `RetroDECK: Dualshock 4 - <Version Number>`
- DualSense: `RetroDECK: DualSense - <Version Number>`
## Global Hotkeys: Playstation Button Combos
The global hotkeys are activated by pressing the `SELECT` button and holding it while pressing the corresponding other button input.
What follows is a list of hotkeys:
`Function` Shows what the hotkey does. <br>
`Button / Combination` Shows the input you need to make to trigger the command. <br>
`Command` Shows what is being sent to the emulator. <br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
| Function | Button / Combination| Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `SELECT + Cross` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `SELECT + Circle` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `SELECT + Square` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Open Menu | `SELECT + Triangle` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` |
| Quit Emulator | `SELECT + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | | |
| Previous State Slot | `SELECT + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `SELECT + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `SELECT + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `SELECT + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `SELECT + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `SELECT + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `SELECT + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `SELECT + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `SELECT + Left Joystick - Up` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` |
| Escape | `SELECT + Left Joystick - Down` | `ESC` | `PPSSPP` `Computer emulators` `Solarus` `IkemenGO` |
| Enter | `SELECT + Left Joystick - Right` | `Enter` | `Computer emulators` `OpenBOR` |
### Right Joystick as Mouse
By holding `SELECT` and moving the right joystick you can use it as a mouse for various systems that uses mouse input.
| Function | Button / Combination| Command | Comment |
| :--- | :---: | :---: | :---: |
| Joystick as Mouse | `SELECT + Right Stick` | | Movement |
| Right Click | `SELECT + L3` | `Right Click` | |
| Left Click | `SELECT + R3` | `Left Click` | |
### RetroArch: Additional Hotkeys
These hotkeys also work for RetroArch and are built in.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
### Arcade Systems: Additional Hotkeys
This hotkey work for RetroArch, MAME, FBNEO and other arcade systems.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `SELECT` | `RetroArch` `MAME` `FBNeo` | |
### PS4 Dualshock 4 and PS5 DualSense: Additional Hotkeys
The touchpads acts as a mouse and can be used to navigate mouse based inputs.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Full Touchpad | | | The entire touchpad acts a mouse |
| Right Touchpad Click | `Left Mouse Click` | | |
| Center Touchpad Click | `Center Mouse Click` | | |
| Left Touchpad Click | `Right Mouse Click` | | |

View file

@ -0,0 +1,37 @@
# Racing Controllers
Racing Controllers is a broad category that encompasses the vast majority of third and first party controllers that has everything to do with racing games.
Some of them might lack Linux drivers or udev rules entirely with others there is a community effort to make them work under Linux.<br>
A few of them also require Windows only software to configure various inputs and buttons.<br>
If you own a Racing Controller the best solution is just to try it on Linux via the Steam Deck Dock or a Linux PC and see if it works as expected.<br>
If it does work on Linux and it supports xinput, we see no reason why it should not work on RetroDECK.
If you have a Flight Controller that did not work on Linux but have found a way to make it work:<br>
- Contribute udev rules to the [game-devices-udev codeberg](https://codeberg.org/fabiscafe/game-devices-udev)
- Contribute to the Oversteer project
- (Optional) Inform the RetroDECK team on how you got it working on discord.
**Oversteer**
The [OverSteer Project](https://github.com/berarma/oversteer) is trying to manage support multiple Steering Wheels on Linux. It is still in the early stages of development.
Oversteer manages steering wheels on Linux using the features provided by the loaded modules.
It doesn't provide hardware support, you'll still need a driver module that enables the hardware on Linux.
Most wheels will work but won't have FFB without specific drivers that support that feature.
## Steering Wheels, Pedals and Gear Shifters
<img src="../../wiki_images/controllers/racing-kit.png" width="250">
- Steering Wheel
- Pedals
- Gear Shifter
All of them needs seperate driver modules and udev rules to work.

View file

@ -0,0 +1,22 @@
# Special Controllers
Special Controllers is a broad category that encompasses the vast majority of third and first party controllers that don't fit anywhere else. <br>
They might have been made for a single game.
## The Steel Battalion Cockpit
<img src="../../wiki_images/controllers/steel-battalion.png" width="250">
The unique cockpit controller for the original Xbox game Steel Battalion.
### How to use with RetroDECK or a PC or anything else?
There have been efforts by user SantiagoSaldana of hackaday.io to get it working on PCs via a Teensy 3.6 / 4.1 Arduino Adapter.
It translates the controllers input to emulated xinput. You can read more about the project here:
[Hackady.io Project Thread](https://hackaday.io/project/182810-steel-battalion-controller-teensy-adapter)
[Github Steel Battalion Controller Library for Arduino](https://github.com/SantiagoSaldana/SBC)
If you have this rare controller and want to try to get it running by the above methods on Linux and RetroDECK please contact the RetroDECK team on discord to inform on your efforts we will follow them with great intrest.

View file

@ -0,0 +1,18 @@
# Steam Controller
Steam Controllers are controllers designed by Valve and have native Steam Input support.
So far only one Steam Controller has been released the `Steam Controller: Gordon`.
**Note these inputs are part of the upcoming 0.8b update.**
Steam Input have support for the following controllers:
## Steam Controller: Gordon
<img src="../../wiki_images/controllers/steam-controller-gordon.png" width="250">
The first Steam Controller is nicknamed Gordon and also goes by that name in all configurations.
### What is the Official - Steam Controller: Gordon RetroDECK profile called?
- Steam Controller Gordon: `RetroDECK: Steam Controller: Gordon - <Version Number>`

View file

@ -0,0 +1,57 @@
# Toys-to-life Controllers
Toys-to-life Controllers is a broad category that encompasses the vast majority of mostly first party controllers that are used to connect collectable toys figures that can via the controller interact with the game.
## LEGO Dimensions
### LEGO ToyPad
<img src="../../wiki_images/controllers/lego-toypad.png" width="250">
#### Installing the Toypad
This controller needs to set a system's udev rule, just execute this in the terminal:
```bash
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0e6f", ATTRS{idProduct}=="0241", MODE="0666"' | sudo tee -a /etc/udev/rules.d/71-toypad.rules > /dev/null
sudo udevadm control --reload-rules
```
#### What emulator support the Toypad?
At the moment of writing the best way to play LEGO Dimensions with the LEGO Toypad is to use the PS3 version and the RPCS3 emulator.
Just connect the ToyPad to a USB port before starting the game.
**Special Notes on the Steam Deck**
The ToyPad must be connected to an powered USB-hub such as the a USB port of the Steam Dock. <br>
Directly connecting the ToyPad to the Steam Deck it's not working as the Steam Deck can not give the ToyPad enought power output.
## Skylanders
### Portal of Power
<img src="../../wiki_images/controllers/portal-of-power.png" width="250">
The Portal of Power is used for the Skylanders game Series.
#### How to configure
WIP
### Traptanium Portal
<img src="../../wiki_images/controllers/traptanium-portal.png" width="250">
The Traptanium Portal is used for the game Skylanders: Trap Team.
#### How to configure
WIP
## Disney Infinity
### The Disney Infinity Base
<img src="../../wiki_images/controllers/disney-infinity-base.png" width="250">
#### How to configure
WIP

View file

@ -0,0 +1,84 @@
# Xbox Controllers
**Note these inputs are part of the upcoming 0.8b update.**
#### The xone Project
[The xone Project](https://github.com/medusalix/xone) <br>
Has firmwares, udev rules and drivers might be needed to get it to run on your distribution to get the wireless connections working.<br>
This should not needed for the Steam Deck, SteamOS and most gaming focus Linux distroes has it included.
## Xbox 360
Supported by Steam Input
<img src="../../wiki_images/controllers/xbox-360.png" width="250">
## Xbox One/S/X - Xbox Wireless Controller
Supported by Steam Input
<img src="../../wiki_images/controllers/xbox-wireless.png" width="250">
## What are the Official profiles called?
- Xbox 360: `RetroDECK: Xbox 360 - <Version Number>`
- Xbox Wireless Controller: `RetroDECK: Xbox Wireless - <Version Number>`
## Global Hotkeys: Xbox Button Combos
The global hotkeys are activated by pressing the `SELECT` button and holding it while pressing the corresponding other button input.
What follows is a list of hotkeys:
`Function` Shows what the hotkey does. <br>
`Button / Combination` Shows the input you need to make to trigger the command. <br>
`Command` Shows what is being sent to the emulator. <br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
| Function | Button / Combination| Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `SELECT + A` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `SELECT + B` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `SELECT + X` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Open Menu | `SELECT + Y` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` |
| Quit Emulator | `SELECT + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | | |
| Previous State Slot | `SELECT + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `SELECT + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `SELECT + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `SELECT + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `SELECT + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `SELECT + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `SELECT + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `SELECT + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `SELECT + Left Joystick - Up` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` |
| Escape | `SELECT + Left Joystick - Down` | `ESC` | `PPSSPP` `Computer emulators` `Solarus` `IkemenGO` |
| Enter | `SELECT + Left Joystick - Right` | `Enter` | `Computer emulators` `OpenBOR` |
### Right Joystick as Mouse
By holding `SELECT` and moving the right joystick you can use it as a mouse for various systems that uses mouse input.
| Function | Button / Combination| Command | Comment |
| :--- | :---: | :---: | :---: |
| Joystick as Mouse | `SELECT + Right Stick` | | Movement |
| Right Click | `SELECT + L3` | `Right Click` | |
| Left Click | `SELECT + R3` | `Left Click` | |
### RetroArch: Additional Hotkeys
These hotkeys also work for RetroArch and are built in.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
### Arcade Systems: Additional Hotkeys
This hotkey work for RetroArch, MAME, FBNEO and other arcade systems.
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `SELECT` | `RetroArch` `MAME` `FBNeo` | |

View file

@ -1,98 +1,24 @@
# General information
[I see SA refereed in documentation about emulators what does it mean?](https://github.com/XargonWan/RetroDECK/wiki/FAQs%3A-Frequently-asked-questions#i-see-sa-refereed-in-documentation-about-emulators-what-does-it-mean)
## Different controller layouts in games
### Xbox layout - Steam Deck
The Steam Deck uses the Xbox button layout as it's physical buttons.
**Steam Deck/Xbox button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `Y` |
| Left | `X` |
| Right | `B` |
| Bottom | `A` |
### Nintendo Layout
Nintendo systems uses the Nintendo layout in game where both the Y-X and A-B buttons have switched places with each other from the Steam Decks physical button layout. You can enable a mode that switches the Y-X and A-B buttons for supported Emulators inside the `RetroDECK Configurator`.
<br>
**Nintendo - button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `X` |
| Left | `Y` |
| Right | `A` |
| Bottom | `B` |
# RetroDECK: Steam Deck - Official Layout
**Example:**<br>
So if you are emulating a Nintendo game that calls for the button A to be pressed it corresponds to the right button on the Steam Deck so button B.
<img src="../../wiki_images/graphics/steamdeck/rd_sd_screen1.jpeg" width="350">
### Sony PlayStation Layout
The Sony PlayStation uses it's icon glyphs to represent it's buttons.
### What's the latest version of the Steam Deck layout?
**Sony PlayStation - button layout:**<br>
| Button Placement | Button |
| :--- | :---: |
| Top | `Triangle` |
| Left | `Square` |
| Right | `Circle` |
| Bottom | `X` |
**0.7.1b**
**Example:**<br>
So if you are emulating a PlayStation game that calls for the button Triangle to be pressed it corresponds to the top button on the Steam Deck so button Y.
The layout versioning do not always update with each minor patch. <br>
Generally only the major versions comes with profile changes.
**Regional differences:**
## Enable the Layout
Be sure to have the `RetroDECK: Official Controller Layout` activated from the `Templates`.
Depending on the region of your Playstation game, the buttons `Circle` and `X` switches the meaning for confirm and cancel (they are still at the same physical location). But it is good to keep in mind if you are used to exiting out of menus with a certain button and wondering why it works in some games while others not.
**Example:**
In the EU/US `X` is confirm while in Japan `X` is cancel.
# Steam Deck Controller Guide - A Visual Introduction
If you are looking for a general guide on how to use the Steam Deck controls beyond RetroDECK please check this steam community guide:<br>
[Steam Deck Controller Guide - A Visual Introduction](https://steamcommunity.com/sharedfiles/filedetails/?id=2804823261)
# RetroDECK Official Controller Layout: Hotkeys:
### Current version of the layout
0.7.1b that is written on this wiki
## Information
Be sure to have the `RetroDECK: Official Controller Layout` activated from the `Templates`.
- Add the Official Layout under `Controller Settings` -> `Controller Layouts` -> `Templates` in the Steam Deck called `RetroDECK: Official Layout` with a version number and apply
Read more on <br>[[Steam Deck: Installation and updates]]
## Everything is customizable
You are free to rebind the keys as you see fit in the RetroDECK: Official Layout profile and make your own to better suit your needs. <br>
But if you rebind the keys inside RetroDECK there can be a risk that an upcoming update will revert your changes if the emulators made changes to the keybindings for the hotkeys. <br>
Also note that if you break your controller profile with your tinkering please revert the RetroDECK's official profile.
## 🚧 Please READ: 🚧
**Not all Emulators has hotkey support; some have partial support, some has none and some has a majority implemented**
The plan is to map as much as we can into the RetroDECK Hotkey System below. We are also patching in Emulator Hotkeys with the `RetroDECK Framework` (if possible) to be compatible with the system. If a emulators later versions adds better hotkey support we plan to map it towards the same functions bellow for a unified experience across as many emulators as possible.
### Known issues
* `PPSSPP` has a bug in with multi-input hotkeys in their flatpak version, so we did a workaround and bound ESC is Open Menu. This allows you to access all of the emulator features and can quit.
* `RPCS3` hotkeys/shortcuts do not work and they are a new experimental feature. To exit you have to shut down RPCS3 from the `Switch Window` inside the Steam Deck interface.
* `CEMU` has almost no hotkey support.
* `XEMU` has no hotkey support.
* `Citra` is the only dual-screen emulator that allows a hotkey for changing the screen layout, others: `MelonDS`, `RetroArch`, `Cemu` has no hotkey for it.
- Add the Official Layout under `Controller Settings` -> `Controller Layouts` -> `Templates` in the Steam Deck called `RetroDECK: Official Layout` with a version number and apply.
## Global Hotkeys: Button Combos
### The hotkey button
### The hotkey button
The `HK` or `hotkey button` on the Steam Deck is `L4` or `R4` or `Select` depending on what is closest for the button combo you are trying to press, all trigger the same functions.
**Example:**
@ -102,33 +28,33 @@ You press and hold either `L4` or `R4` or `Select` and press `A` to trigger the
### Button combo list
The global hotkeys are activated by pressing the hotkey button and holding it while pressing the corresponding other button input.
What follows is a list of hotkeys:
What follows is a list of hotkeys:
`Command` Shows what the hotkey does. <br>
`Function` Shows what the hotkey does. <br>
`Button / Combination` Shows the input you need to make to trigger the command. <br>
`Keyboard Command` Shows what is being sent to the emulator. <br>
`Command` Shows what is being sent to the emulator. <br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
| Command | Button / Combination| Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `HK + A` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `HK + B` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `HK + X` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Previous State Slot | `HK + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `HK + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `HK + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `HK + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `HK + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `HK + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `HK + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `HK + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `HK + L3` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` | |
| Open Menu | `HK + Y` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` | |
| Exit Emulator | `HK + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Escape | `HK + R3` | `ESC` | `PPSSPP` | |
| Function | Button / Combination| Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: | :---: |
| Pause / Resume | `HK + A` | `CTRL + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Take Screenshot | `HK + B` | `CTRL + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `HK + X` | `CTRL + ENTER` | `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Open Menu | `HK + Y` | `CTRL + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` |
| Quit Emulator | `HK + Start` | `CTRL + Q` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | | |
| Previous State Slot | `HK + D-Pad Left` | `CTRL + J` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Next State Slot | `HK + D-Pad Right` | `CTRL + K` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2`|
| Increase Emulation Speed | `HK + D-Pad Up` | `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Decrease Emulation Speed | `HK + D-Pad Down` | `CTRL + 2` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2`| | |
| Load State | `HK + L1` | `CTRL + A` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `HK + R1` | `CTRL + S` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Rewind | `HK + L2` | `CTRL + -` | `RetroArch` `Duckstation` | |
| Fast forward | `HK + R2` | `CTRL + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Swap Screens | `HK + L3` | `CTRL + TAB` | `Citra` `MelonDS` `Cemu` | |
| Escape | `HK + R3` | `ESC` | `PPSSPP` | |
@ -137,75 +63,71 @@ What follows is a list of hotkeys:
These hotkeys also work for RetroArch and are built in.
| Command | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Open Menu | `L3 + R3` | `RetroArch` | |
### Arcade Systems: Additional Hotkeys
This hotkey work for RetroArch, MAME, FBNEO and other arcade systems.
| Command | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `Select` | `RetroArch` | |
| Function | Button / Combination | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Insert Credit | `Select` | `RetroArch` `MAME` `FBNeo` | |
## Steam Input - Radial Menu System
# Steam Deck - Radial Menu System
#### Is there a quick way to go back to the top of the radial menu system?
Yes, just press on the `HK` trigger buttons: `L4` or `R4` or `Select`
What follows is a breakdown of the Radial System that you access on the `Left Touchpad`.
### Radial Menus
What follows is a breakdown of the Radial System that you access on the `Left Touchpad`.
### Is there a quick way to go back to the top of the radial menu system?
Yes, just press on the `HK` trigger buttons: `L4` or `R4` or `Select`
## Radial Menu System
`Radial Button` Shows what the hotkey does. <br>
`Keyboard Command` Shows what is being sent to the emulator.<br>
`Keyboard Command` Shows what is being sent to the emulator.<br>
`Emulator Support` Shows what emulators support the command. <br>
`Comment` Just extra comments. <br>
**NOTE:**
Like everything in RetroDECK we plan to make revisions and updates of the menus. We hope with time be able to add more emulators and even better art.
#### Main Menu
The `Main Menu` gives you access to all the menus bellow.
## Main Menu
The `Main Menu` gives you access to all the menus bellow.
## Quick
#### Quick Menu
The `Quick Menu` or `Quick Access Menu` Menu is the most populated menu. It features "best of" options from other menus.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Exit Emulator | `Ctrl + Q` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Open Menu | `Ctrl + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` | |
| Swap Screens | `Ctrl + Tab` | `Citra` `MelonDS` `Cemu` | |
| Take Screenshot | `Ctrl + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Save State | `Ctrl + S` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Load State | `Ctrl + A` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Pause / Resume | `Ctrl + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `Ctrl + Enter` |`Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| :--- | :---: | :---: | :---: |
| Quit Emulator | `Ctrl + Q` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Open Menu | `Ctrl + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` | |
| Swap Screens | `Ctrl + Tab` | `Citra` `MelonDS` `Cemu` | |
| Take Screenshot | `Ctrl + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Save State | `Ctrl + S` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Load State | `Ctrl + A` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Pause / Resume | `Ctrl + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Fullscreen Toggle | `Ctrl + Enter` |`Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Restart / Reset | `CTRL + R` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Escape | `ESC` | `PPSSPP` | |
## State
The `State Menu` is the menu where you handle anything to do with saving and loading states.
#### State Menu
The `State Menu` is the menu where you handle anything to do with saving and loading states.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Previous State | `Ctrl + J` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Next State | `Ctrl + K` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `Ctrl + S` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Load State | `Ctrl + A` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Undo Load State | `Ctrl + 8` | `Dolphin/Primehack` | |
| Undo Save State | `Ctrl + 9` | `Dolphin/Primehack` `Duckstation` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Previous State | `Ctrl + J` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Next State | `Ctrl + K` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Save State | `Ctrl + S` |`RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Load State | `Ctrl + A` | `RetroArch` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Undo Load State | `Ctrl + 8` | `Dolphin/Primehack` | |
| Undo Save State | `Ctrl + 9` | `Dolphin/Primehack` `Duckstation` | |
## Speed / Frames
The `Speed / Frames Menu` is where you find anything related to: emulation speed, frame limits, fast forwarding and rewinding.
#### Speed / Frames Menu
The `Speed / Frames Menu` is where you find anything related to: emulation speed, frame limits, fast forwarding and rewinding.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Fastforward | `Ctrl + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Fastforward | `Ctrl + +` | `RetroArch` `Duckstation` `MelonDS` `PCSX2` | |
| Rewind | `CTRL + -` | `RetroArch` `Duckstation` | |
| Increase Emulation Speed| `CTRL + 1` | `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
| Decrease Emulation Speed| `CTRL + 2` |`Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` | |
@ -214,8 +136,8 @@ The `Speed / Frames Menu` is where you find anything related to: emulation speed
| Frame limit On/Off | `CTRL + Z` | `PCSX2` `Yuzu` | |
## Display / Graphics
The `Display / Graphics Menu` is where you find anything related to: up-scaling/resolution scaling, widescreen or change aspect ratio, fullscreen, swap or change dual screen layout.
#### Display / Graphics Menu
The `Display / Graphics Menu` is where you find anything related to: up-scaling/resolution scaling, widescreen or change aspect ratio, fullscreen, swap or change dual screen layout.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
@ -226,105 +148,107 @@ The `Display / Graphics Menu` is where you find anything related to: up-scaling/
| Swap Screens | `Ctrl + Tab` |`Citra` `MelonDS` `Cemu` | |
| Change Dual Screens Layout | `Ctrl + L` | `Citra`| | |
## General
#### General Menu
The `General Menu` or `General Emulation Menu` is where you find various global generic emulation hotkeys: Quit/Exit, Restart, Take Screenshot, Change CD, Pause, Turbo Input, Cheats and Video Recording.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Exit Emulator | `Ctrl + Q` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Open Menu | `Ctrl + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` | |
| Take Screenshot | `Ctrl + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Quit Emulator | `Ctrl + Q` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `PCSX2` `Yuzu` | |
| Open Menu | `Ctrl + M` | `RetroArch` `Duckstation` `PCSX2` `Yuzu` | |
| Take Screenshot | `Ctrl + X` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Restart / Reset | `CTRL + R` |`RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Change Disc / Next Disc | `CTRL + D` | `RetroArch` `Dolphin/Primehack` `Duckstation` | |
| Cheats On/Off | `CTRL + C` | `RetroArch` `Duckstation` | |
| Pause / Resume | `Ctrl + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Turbo On/Off | `Ctrl + T` | `Duckstation` | |
| Video Recording On/Off | `Ctrl + V` |`RetroArch` `Dolphin/Primehack` `PCSX2` | |
| Pause / Resume | `Ctrl + P` | `RetroArch` `Citra` `Dolphin/Primehack` `Duckstation` `MelonDS` `PCSX2` `Yuzu` | |
| Turbo On/Off | `Ctrl + T` | `Duckstation` | |
| Video Recording On/Off | `Ctrl + V` |`RetroArch` `Dolphin/Primehack` `PCSX2` | |
## Steam Deck
The `Steam Deck Menu` is where you find Steam Deck specific functions and general computer hotkeys: Steam Screenshot, Show Steam Deck Keyboard, Escape, Alt + F4, Tab, Enter and F1. Some of these could also be useful inside the various PC emulation emulators.
#### Steam Deck Menu
The `Steam Deck Menu` is where you find Steam Deck specific functions and general computer hotkeys: Steam Screenshot, Show Steam Deck Keyboard, Escape, Alt + F4, Tab, Enter and F1. Some of these could also be useful inside the various PC emulation emulators.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Escape | `ESC` | `PPSSPP` | |
| Tab | `Tab` | | |
| Alt + F4 | `Alt + F4` | | |
| F1 | `F1` | | |
| Enter | `Enter` | | |
| Take Steam Screenshot | `none` | | |
| Show Steam Deck Keyboard| `none` | | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Escape | `ESC` | `PPSSPP` | |
| Tab | `Tab` | | |
| Alt + F4 | `Alt + F4` | | |
| F1 | `F1` | | |
| Enter | `Enter` | | |
| Take Steam Screenshot | `none` | | |
| Show Steam Deck Keyboard| `none` | | |
## Specific
#### Emulator Specific Menu
The `Specific Menu` or `Specific Emulator Hotkeys Menu` opens up several system/emulator specific sub-menus. Here you will find hotkeys not so commonly used but could be good to have easy access to:
The `Specific Menu` or ` Emulator Specific Menu` opens up several system/emulator specific sub-menus. Here you will find hotkeys not so commonly used but could be good to have easy access to:
### Switch
##### Switch Menu
The `Switch Menu` here you find hotkeys related to Switch emulation: Change GPU Accuracy, Change Docked/Undocked Mode, Add/Remove Amiibo
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Change GPU Accuracy | `Alt + G` | `Yuzu` | |
| Load / Remove Amiibo | `Alt + M` | `Yuzu` | |
| Docked / Undocked Mode | `Alt + D` | `Yuzu` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Change GPU Accuracy | `Alt + G` | `Yuzu` | |
| Load / Remove Amiibo | `Alt + M` | `Yuzu` | |
| Docked / Undocked Mode | `Alt + D` | `Yuzu` | |
### MAME
##### MAME Menu
The `MAME Menu` here find hotkeys related to the MAME standalone emulator: Servicemode and buttons 1-4, Insert None Bills (not credits that is Select) and tilt.
**MAME SUPPORT IS NOT IN YET WILL BE IN A LATER UPDATE**
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Service Mode | `Alt + 0` | `MAME` | |
| Service Button 1 | `Alt + 1` | `MAME` | |
| Service Button 2 | `Alt + 2` | `MAME` | |
| Service Button 3 | `Alt + 3` | `MAME` | |
| Service Button 4 | `Alt + 4` | `MAME` | |
| Insert Bill / Note | `Alt + 5` | `MAME` | |
| Tilt | `Alt + 6` | `MAME` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Service Mode | `Alt + 0` | `MAME` | |
| Service Button 1 | `Alt + 1` | `MAME` | |
| Service Button 2 | `Alt + 2` | `MAME` | |
| Service Button 3 | `Alt + 3` | `MAME` | |
| Service Button 4 | `Alt + 4` | `MAME` | |
| Insert Bill / Note | `Alt + 5` | `MAME` | |
| Tilt | `Alt + 6` | `MAME` | |
### RetroArch
##### RetroArch Menu
The `RetroArch Menu` here you find hotkeys related to the RetroArch emulator: RetroArch Cheat Mangement, AI Service and Netplay Host.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Next Cheat | `Ctrl + G` | `RetroArch` | |
| Previous Cheat | `Ctrl + F` | `RetroArch` | |
| Cheats On/Off | `Ctrl + C` | `RetroArch` | |
| AI Service On/Off | `Ctrl + I` | `RetroArch` | |
| Netplay Host On/Off | `Ctrl + H` | `RetroArch` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Next Cheat | `Ctrl + G` | `RetroArch` | |
| Previous Cheat | `Ctrl + F` | `RetroArch` | |
| Cheats On/Off | `Ctrl + C` | `RetroArch` | |
| AI Service On/Off | `Ctrl + I` | `RetroArch` | |
| Netplay Host On/Off | `Ctrl + H` | `RetroArch` | |
### Gamecube / Wii
The `Gamecube / Wii Menu` here you find hotkeys related to the Dolphin standalone emulator: Golf Mode, Freelook Mode On/Off/Reset, Wii Sync Button and Wii Mote Sideways / Upright.
##### Gamecube / Wii Menu
The `Gamecube / Wii Menu` here you find hotkeys related to the Dolphin standalone emulator: Golf Mode, Freelook Mode On/Off/Reset, Wii Sync Button and Wii Mote Sideways / Upright.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Golf Mode On/Off | `Alt + H` | `Dolphin/Primehack` | |
| Freelook Mode On/Off | `Alt + F` |`Dolphin/Primehack` | |
| Freelook Mode Reset | `Alt + R` | `Dolphin/Primehack` | |
| Wii Sync Button | `Alt + W` | `Dolphin/Primehack` | |
| Wiimote Upright | `Alt + Z` | `Dolphin/Primehack` | |
| Wiimote Sideways | `Alt + X` | `Dolphin/Primehack` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Golf Mode On/Off | `Alt + H` | `Dolphin/Primehack` | |
| Freelook Mode On/Off | `Alt + F` |`Dolphin/Primehack` | |
| Freelook Mode Reset | `Alt + R` | `Dolphin/Primehack` | |
| Wii Sync Button | `Alt + W` | `Dolphin/Primehack` | |
| Wiimote Upright | `Alt + Z` | `Dolphin/Primehack` | |
| Wiimote Sideways | `Alt + X` | `Dolphin/Primehack` | |
### NDS
##### NDS Menu
The `NDS Menu` here you find hotkeys related to the MelonDS standalone emulator: Send Close/Open Lid, Send Play Microphone and Sunlight + / -.
| Radial Button | Keyboard Command | Emulator Support | Comment |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Sunlight + | `Alt + +` |`MelonDS` | |
| Sunlight - | `Alt + -` | `MelonDS` | |
| Play Microphone | `Alt + P` |`MelonDS` | |
| Close/Open Lid | `Alt + L` | `MelonDS` | |
| Sunlight + | `Alt + +` |`MelonDS` | |
| Sunlight - | `Alt + -` | `MelonDS` | |
| Play Microphone | `Alt + P` |`MelonDS` | |
| Close/Open Lid | `Alt + L` | `MelonDS` | |
### 3DS
##### 3DS Menu
The `3DS Menu` here you find hotkeys related to the Citra standalone emulator: Load and Remove Amiibo
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Load Amiibo | `Alt + M` |`Citra` | |
| Remove Amiibo | `Alt + N` |`Citra` | |
| Radial Button | Keyboard Command | Emulator Support | Comment |
| :--- | :---: | :---: | :---: |
| Load Amiibo | `Alt + M` |`Citra` | |
| Remove Amiibo | `Alt + N` |`Citra` | |

View file

@ -0,0 +1,66 @@
# Different button prompts in games
Depending on what system you are playing the button prompt inputs might not correspond to the one you have on your physical controller or device you have in your hand.
## Xbox Games
The Xbox layout is used by `Xbox Controllers`.<br>
Is also used by devices like the `Steam Deck` `Rog Alley`.<br>
It is used by a lot of `Genric` third party `PC controllers` and `Xbox Clone Controllers`.
**Xbox - Button Layout:**<br>
| Button Placement | Button |Name |
| :--- | :---: |:---: |
| North | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0007.png" width="30"> |Y |
| West | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0006.png" width="30"> |X |
| East | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0005.png" width="30"> |B |
| South | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0004.png" width="30"> |A |
**Example:**<br>
So if you are emulating a Xbox game that calls for the button `B` to be pressed it corresponds to the right button.
## Nintendo Games
The Nintendo layout is used by `Nintendo Controllers`.<br>
It could also be used by other `Genric` third party `Nintendo Clone Controllers`.
**Nintendo - Button Layout**<br>
| Button Placement | Button |Name |
| :--- | :---: |:---: |
| North | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0006.png" width="30"> |X |
| West | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0007.png" width="30"> |Y |
| East | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0004.png" width="30"> |A |
| South | <img src="../../wiki_icons/kenneynl-input-pixel16×/tile_0005.png" width="30"> |B |
**Example:**<br>
So if you are emulating a Nintendo game that calls for the button `A` to be pressed it corresponds to the right button.
## Sony PlayStation Games
The Playstation layout is used by `Playstation Controllers`. <br>
It could also be used by other `Genric` third party `Playstation Clone Controllers`.
**Playstation - Button Layout**<br>
| Button Placement | Button | Name |
| :--- | :---: |:---: |
| North | <img src="../../wiki_icons/playstation/playstation-triangle.png" width="20"> |Triangle |
| West | <img src="../../wiki_icons/playstation/playstation-square.png" width="20"> |Square |
| East | <img src="../../wiki_icons/playstation/playstation-circle.png" width="20"> |Circle |
| South | <img src="../../wiki_icons/playstation/playstation-cross.png" width="20"> |Cross |
**Example:**
If you are emulating a PlayStation game that calls for the button `Square` to be pressed it corresponds to the left button.
**Regional differences:**
In games from the EU/US `Cross` is confirm while in Japan `Cross` is cancel:
Depending on the region of your Playstation game, the buttons `Circle` and `Cross` switches the meaning for confirm and cancel (they are still at the same physical location).
But it is good to keep in mind if you are used to exiting out of menus with a certain button and wondering why it works in some games while others not.

View file

@ -8,7 +8,7 @@ The default command to run retrodeck options and arguments is:
`flatpak run [FLATPAK-RUN-OPTION] net.retrodeck.retrodeck [ARGUMENTS]`
Where `[FLATPAK-RUN-OPTION]` is replaced by a flatpak run option (if there is one) and `[ARGUMENTS]` is replaced by arguments.
Where `[FLATPAK-RUN-OPTION]` is replaced by a flatpak run option (if there is one) and `[ARGUMENTS]` is replaced by arguments.
**Example:**
@ -25,7 +25,7 @@ Where the argument `--reset-all` replaced `[ARGUMENTS]` and `[FLATPAK-RUN-OPTION
`-v` or `--version` - Prints the installed RetroDECK version
`--info-msg` - Prints all the folder paths and various config information.
`--configurator` - Starts the RetroDECK configurator
`--compress` - Compresses a specific file to .chd format. It supports .cue .iso and .gdi formats. You need to add the filepath to the file for it to work.
@ -36,29 +36,29 @@ Where the argument `--reset-all` replaced `[ARGUMENTS]` and `[FLATPAK-RUN-OPTION
`retroarch`
`citra`
`dolphin`
`duckstation`
`melonds`
`pcsx2`
`ppsspp`
`primehack`
`rpcs3`
`duckstation`
`melonds`
`pcsx2`
`ppsspp`
`primehack`
`rpcs3`
`xemu`
`yuzu`
`yuzu`
`--reset-retrodeck` - Resets the entirety of RetroDECK to default settings!
`--reset-retrodeck` - Resets the entirety of RetroDECK to default settings!
<br>
⚠️ WARNING! BACK UP YOUR DATA BEFORE RUNNING THIS ARGUMENT! ⚠️
# General flatpak commands
If you want to check RetroDECK's flathub page [click here](https://flathub.org/apps/details/net.retrodeck.retrodeck)<br>
If you want to check RetroDECK's Flathub page [click here](https://flathub.org/apps/details/net.retrodeck.retrodeck)<br>
Here follows some general flatpak commands that could be useful: <br>
## Install RetroDECK from CLI
If you want to install RetroDECK from CLI type:<br>
`flatpak install flathub net.retrodeck.retrodeck`
`flatpak install Flathub net.retrodeck.retrodeck`
NOTE! This will work on the Steam Deck out of the box.<br>
But on the Linux desktop you need to check your distribution if it ships with both Flatpak and Flathub integration installed, if not you may need to install it. Check your distributions or flathubs documentation on how to install it on your desktop.
@ -68,7 +68,7 @@ But on the Linux desktop you need to check your distribution if it ships with bo
If you want to update all installed flatpaks from CLI type:<br>
`flatpak update`
Then answer `y` on the input prompt.
Then answer `y` on the input prompt.
## Update only RetroDECK from CLI
@ -76,4 +76,4 @@ If you just want to update RetroDECK type: <br>
`flatpak update net.retrodeck.retrodeck`
Then answer `y` on the input prompt.
Then answer `y` on the input prompt.

View file

@ -2,8 +2,9 @@
RetroDECK is a Flatpak a sandboxed bundle of different applications and configurations. One part of the files are none writable while others are.
### `~/retrodeck`
## ~/retrodeck
It's the home folder of RetroDECK itself, it contains:
- `bios`, the bios folder, the actual `retroarch/system` folder is poiting here `~/.var/app/net.retrodeck.retrodeck/config/emulationstation/.emulationstation/downloaded_media` is pointing here
- `.downloaded_media`, this is where you scraped data is saved (images, videos, logos..),
- `.lock`, this file tells RetroDECK that the settings are done and to not reset them, if this file is missing it will trigger a first boot showing the setup. Here is written the software version that is compared to the actual version to check if an update is needed.
@ -17,54 +18,70 @@ It's the home folder of RetroDECK itself, it contains:
- `mods`, emulators mods location
- `.themes`, additional themes folder, `~/.var/app/net.retrodeck.retrodeck/config/emulationstation/.emulationstation/themes` is poiting here
### `~/.var/app/net.retrodeck.retrodeck`
## ~/.var/app/net.retrodeck.retrodeck
This folder is the only flatpak folder that is editable user side, it's mapped as `/var` in the flatpak itself, from now on we will use the flatpak paths unless differently specified.
### `/var`
- `config`, contains all the various software configs such as RetroDECK, retroarch folder and standalones emulator configs
-- `retroarch`, the retroarch folder (see below)
-- `emulationstation`, emulationstation home folder (see below)
-- `retrodeck`, to not be confued with `~/retrodeck/`, this folder contains the retrodeck configs, see below.
-- various standalone emulators config folders such as `yuzu`, `pcsx2`, `melonDS`, `dolphin-emu` and so on.
### config/
- `config`, contains all the various software configs such as RetroDECK, retroarch folder and standalones emulator configs
- `retroarch`, the retroarch folder (see below)
- `emulationstation`, emulationstation home folder (see below)
- `retrodeck`, to not be confued with `~/retrodeck/`, this folder contains the retrodeck configs, see below.
- various standalone emulators config folders such as `yuzu`, `pcsx2`, `melonDS`, `dolphin-emu` and so on.
### config/retroarch
### `/var/config/retroarch`
- `system`, retroarch bios (system) folder, this points to `~/retrodeck/bios`
- `core`, retroarch cores folder, this is populated by `/app/share/libretro/cores` at the first startup (or with `--reset`, `--reset-ra`)
- `retroarch.cfg`, the retroarch config, the original one is located in `/app/retrodeck/emu-configs/retroarch.cfg`, and similarly to above it's generated at the first startup
### `/var/config/emulationstation`
### config/emulationstation
- `ROMs`, this is linked to the roms folder in `~/retroeck/roms`or `<sdcard>/roms`
- `.emulationstation`, ES-DE main folder
-- `custom_systems`, where the customs systems are kept (example the tools file), check the official ES-DE docs for more info.
-- `downloaded_media`, this points to `~/retrodeck/.downloaded_media`
-- `themes`, this points to `~/retrodeck/.themes`
-- `es_log.txt`, ES-DE log file
-- `es_settings.xml`, ES-DE settings file
### `/var/config/retrodeck`
- `custom_systems`, where the customs systems are kept (example the tools file), check the official ES-DE docs for more info.
- `downloaded_media`, this points to `~/retrodeck/.downloaded_media`
- `themes`, this points to `~/retrodeck/.themes`
- `es_log.txt`, ES-DE log file
- `es_settings.xml`, ES-DE settings file
### config/retrodeck
- `tools`
- `version`, this file carries the RetroDECK version number and it ś generated during the flatpak build.
### `/var/data`
### data/
Some emulators, like yuzu, needs this path, here for example is even symlinked the yuzu keys and firmware folder.
### `/var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files`
### emu-configs/defaults/retrodeck/controller_configs
Where the Steam Input .vdf files are located
### /var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files/
Non-flatpak path: this folders contain file such as the .desktop, icons, etc.
This is mapped as the `/app` folder in flatpak, this folder is inside the read only file system and so all this tree is immutable (actually can be edited by root for develop purposes).<br>
FYI: you can edit the with KWrite, it justs ask you for the root password when saving.
### `/app/bin`
### /var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files/share/emulationstation/resources/systems/unix/
This contains `es_find_rules.xml` and `es_systems.xml`
### /app/bin
All the binary files, like `retrodeck.sh`, the main program (wrapper).
All these programs can be launched in developer mode just invoking them in the terminal.
### `/app/retrodeck`
### /app/retrodeck
This folder contains the default configuration that is restored with the various `--reset` commands.
- `emu-configs`
- `steam`
- `tools`
- `es_settings.xml`
- `tools-gamelist.xml`
### `/var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files`
Non-flatpak path: this folders contain file such as the .desktop, icons, etc.

View file

@ -1,4 +1,6 @@
# Cooker
# Development General Notes
## Cooker
Cooker, differently from the main (stable) branch, is what it's boiling in the pot now: the bleeding edge of the software development.
Every time a commit or a PR is done, a GitHub action automatically compiles the snapshot with the latest changes and publish them on the [cooker repository](https://github.com/XargonWan/RetroDECK-cooker).
This can be publicly tested and if it's stable will be merged in the main branch creating a new release.
@ -6,9 +8,10 @@ This can be publicly tested and if it's stable will be merged in the main branch
Useless to say that this channel is not suggested for the end user but it's developer / alpha tester oriented.
Expect major bugs and data loss: be warned.
# Build instructions
## Build instructions
If you want to build the RetroDECK flatpak on your machine for developing or just testing purposes:
```
cd ~
git clone --recursive https://github.com/XargonWan/RetroDECK.git
@ -20,37 +23,42 @@ git submodule update
install `flatpak flatpak-builder p7zip-full` with your distro's package manager, then:
```
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --if-not-exists Flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y org.kde.Sdk//5.15-21.08 org.kde.Platform//5.15-21.08 io.qt.qtwebengine.BaseApp/x86_64/5.15-21.08 org.freedesktop.Sdk.Extension.llvm13 org.freedesktop.Platform.ffmpeg-full/x86_64/21.08
```
To build the stable release:
```
flatpak-builder --user --install --install-deps-from=flathub --install-deps-from=flathub-beta --force-clean --repo=local ~/RetroDECK/retrodeck-main ~/RetroDECK/net.retrodeck.retrodeck.yml
flatpak build-bundle local ~/RetroDECK.flatpak net.retrodeck.retrodeck
```
Or alternatively, to build the cooker (experimental) release:
```
git checkout cooker
flatpak-builder --user --install --force-clean --repo=local ~/RetroDECK/retrodeck-cooker ~/RetroDECK/net.retrodeck.retrodeck.yml
flatpak build-bundle local ~/RetroDECK.flatpak net.retrodeck.retrodeck
```
# Debug Mode
## Debug Mode
It's possible to enter in a sort of debug mode, it's actually the flatpak shell.
Enter in the flatpak shell:
```
flatpak run --command=bash net.retrodeck.retrodeck
```
Launch ES-DE in debug mode:
```
emulationstation --debug --home /var/config/emulationstation
```
Launch an emulator in debug mode:
```
ls /app/bin
```
@ -58,7 +66,7 @@ To get the list of the available binaries to launch, then just write the command
This is useful when for example a game is not starting and you want the output printed in the terminal.
# Manual installation instructions
## Manual installation instructions
This method is usually for the beta/cooker testers:
- Download the RetroDECK.flatpak from the [release page](https://github.com/XargonWan/RetroDECK/releases) or from the [cooker release page](https://github.com/XargonWan/RetroDECK-cooker/releases) (be sure to download the correct version, check the date as they're not ordered unfortunately).
- `cd` where the downloded file is located
@ -70,47 +78,33 @@ If this doesn´t work:
- Run it from the start menu or, alternatively, from the terminal by typing `flatpak run net.retrodeck.retrodeck`
- Then the first setup will guide you in the first steps, **please read all the messages carefully** as the rom directory must not be edited in EmulationStation
## Updating instructions
### Updating instructions
- uninstall the previous version with `flatpak uninstall net.retrodeck.retrodeck`
- follow installation instructions
- [OPTIONAL] In case of issues it's suggested to remove `~/.var/app/net.retrodeck.retrodeck` and run `flatpak run net.retrodeck.retrodeck --reset`, but this will reset the application configs, please backup your data.
NOTE: this will not be needed after v`0.4.0b`.
# Managing RetroDECK flatpak file
## Managing RetroDECK flatpak file
Install RetroDECK from flatpak file:
```
flatpak install RetroDECK.flatpak
```
Run RetroDECK:
```
flatpak run net.retrodeck.retrodeck
```
Uninstall RetroDECK:
```
flatpak uninstall net.retrodeck.retrodeck
```
# CLI - (Command Line interface)
There are some functions that can be called via CLI, for a comprehensive list type:
`flatpak run net.retrodeck.retrodeck --help` or `flatpak run net.retrodeck.retrodeck -h`
Some useful ones:
Resets the whole RetroDECK at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset
```
Resets RetroArch configs at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset-ra
```
Resets all the standalone emulators configs at factory defaults:
```bash
flatpak run net.retrodeck.retrodeck --reset-sa
```
# Making your own ES-DE theme
Please check the following link link over ES-DE (this is still in development)<br>
## Making your own ES-DE theme
Please check the following link link over ES-DE <br>
[Theme Development ](https://gitlab.com/es-de/emulationstation-de/-/blob/master/THEMES-DEV.md)

View file

@ -0,0 +1,46 @@
# What are you working on right now?
We are always working on more stuff then shown here. Not all of these might be in the next release some are for later releases.
What is presented here is just a short list of currently announced projects to give everyone a quick overview.
To get the latest updates first:
- Be a member of the [Discord](https://discord.gg/Dz3szYsP8g) and keep an eye on the `🚧-open-development` channels.
- Follow `The RetroDECK Blog 📝`.
- Look at [Github issues](https://github.com/XargonWan/RetroDECK/issues/) for clues.
## New Emulators
- GZDoom (Doom engine)
- MAME (Standalone)
- Ryujinx (Switch)
- Solarus (engine)
- Vita3K (PSVita)
- OpenBOR (engine)
- IkemenGO (engine)
- ScummVM (Standalone)
- Yuzu (Custom)
## New Features Configurator / RetroDECK Framework
- Reset ES-DE
- Reset ES-DE Inputs
- More BIOS Checks
- More Compression formats
- Steam Flatpak Support
- External Controllers Support (CUP Project)
- SFTP
- Cloud Sync
- USB Transfer / Backups
- Multiuser mode
- Adding RetroDECK games as Steam Entries
- Configurator GODOT version
- Disable/Enable - Quick Resume: Auto Save / Auto Load
## Wiki
- Emulator Guides
- Cleaning up the Wiki
## Other
- Develop Rekku the RetroDECK Mascot with Tyson Tan

View file

@ -0,0 +1,42 @@
# How do I install RetroDECK on the Linux Desktop?
<img src="../../../wiki_images/logos/linux-tux-logo.svg" width="150">
## Prerequisites
1. You need to have flatpak support installed on your Linux desktop. <br>
Follow the official flatpak guides on how to install it for your distribution:<br>
[Flatpak Setup Guide](https://flatpak.org/setup/)
2. We recommend that you have the `steam-devices` and/or `game-devices-udev` package installed as it comes with udev rules for many different controllers. You will have to check your distribution on how to install it.
3. We currently recommend that you add and launch RetroDECK from Steam so you can utilize the Steam Input feature to change various aspects of the external controllers. We will be looking into other alternative solutions later for those that don't want to use Steam.
## From the Desktop GUI
- Go into your flatpak supported software manager in your desktop environment, this is different depending on what desktop you use. Example: for GNOME is often `GNOME Software` and for KDE it is `KDE Discover`.
- Search for RetroDECK and press install.
## From the terminal
- Run the following command `flatpak install Flathub net.retrodeck.retrodeck`
## First Run - Quick Start
1. Start RetroDECK for the first time
2. Choose where RetroDECK should create the `roms` folders `Internal`, `SDCard` or `Custom`.
3. Put the BIOS inside `~/retrodeck/bios/` for more information read
4. Put the ROMS inside `~/retrodeck/roms/` folder.<
5. Add RetroDECK to Steam [How-to - Add RetroDECK to Steam](../../wiki_howto_faq/add-to-steam.md)
6. Make sure you have enabled controller support in Steam [How-to - Enable Controllers in Steam ](../../wiki_howto_faq/enable-controllers-steam.md)
7. Connect your controller to your Desktop.
8. Launch RetroDECK from Steam and enjoy
## Updates
Updates to RetroDECK is handled automatically via your software manager when there is a new version released.
Or if you want to update from the terminal you can type: <br>
`flatpak update`

View file

@ -1,32 +1,43 @@
# Any other recommended software?
The following software works great with the Linux Desktop and might enhance your RetroDECK experience (these are entirely optional to install).
The following software works great with the Linux Desktop and might enhance your RetroDECK experience (these are entirely optional to install).
## Flips
<img src="../../../wiki_images/logos/flips-logo.png" width="150">
## Flips
Flips is a software that let you patch romhacks IPS & BPS files onto the rom files.
It's already on flathub.
It's already on Flathub.
_Made by Alcaro_
[Flips](https://flathub.org/apps/details/com.github.Alcaro.Flips)
## BoilR
## BoilR
BoilR will show games from other games platforms in your Steam library. It uses the Steam 3rd party shortcuts feature and does not require you to set up anything. You can also use BoilR to manually and automatically download custom art from SteamGridDB. It's already in flathub.
<img src="../../../wiki_images/logos/boilr-logo.png" width="150">
BoilR will show games from other games platforms in your Steam library. It uses the Steam 3rd party shortcuts feature and does not require you to set up anything. You can also use BoilR to manually and automatically download custom art from SteamGridDB. It's already in Flathub.
_Made by Philipk_
[BoilR](https://flathub.org/apps/details/io.github.philipk.boilr)
## JRomManager
<img src="../../../wiki_images/logos/jrommanager-logo.png" width="150">
A Mame and Retrogaming Rom Manager. <br>
This more complex application allows you to manage and verify your roms via .dat files. It's already in on flathub and downloadable in Discover.
This more complex application allows you to manage and verify your roms via .dat files. It's already in on Flathub and downloadable in Discover.
_Made by optyfr_
[JRomManager](https://flathub.org/apps/details/com.github.optyfr.JRomManager)<br>
## RomM
## RomM
<img src="../../../wiki_images/logos/romm-logo.svg" width="150">
RomM is a game library roms manager focused in retro gaming. Manage and organize all of your games from a web browser.
Inspired by [Jellyfin](https://jellyfin.org/), allows you to manage all your games from a modern interface while enriching them with IGDB metadata.
@ -36,3 +47,4 @@ _Made by zurdi15_

View file

@ -0,0 +1,65 @@
# What are some optimizations for the Steam Deck to make emulation even better?
These optimizations are entirely optional and but they can give you better performance on some more demanding emulators.
## Increase the VRAM to 4GB
This increases the VRAM to 4GB in the BIOS, this can give you improvements in certain emulators.
- Power off your Steam Deck completely
- Hold the `Power Button` and `Volume Up Button` until you hear a chime/beep and release the buttons.
- Click on `Setup Utility`
- Click on `Advanced`
- Change`UMA Frame buffer Size` to 4GB
- Save and Exit
## Setup a sudo password
This is a requirement for many optimizations and solutions, it also makes your Deck safer.
It enables you to run commands/applications heighten sudo privileges.
- Go to `Desktop Mode`
- Open `Konsole` or another `Terminal`
- Type `passwd`
- You will now set your new sudo password
- After you are done you can close the terminal
## Install CryoUtilities
This requires that you have set up a sudo password.
This will create a 16GB SWAP file that can improve the performance for some emulators. Note that it will take up that extra space on your Steam Deck.
- Go to `Desktop Mode`
- Open a web browser and go to the [CryoUtilities](https://github.com/CryoByte33/steam-deck-utilities) github page
- Click on releases
- Download the latewst `cryo_utilities` version and save to the Desktop or Home folder
- Double click on the file and it will begin the installation
- After installation is complete you will find a new desktop icon `CryoUtilities`
- Click on `CryoUtilities`
- Click on `Recommended Settings`
- It should now be done
## Install Decky Loader
Decky Loader is a [homebrew plugin store](https://beta.deckbrew.xyz/) for the Steam Deck.
This requires that you have set up a sudo password.
- Go to `Desktop Mode`
- Open `Konsole` or another `Terminal`
- Type `curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh`
- Decky Loader should now be installed and you can go back into `Game Mode`.
- To access Decky Loader you only need to press the `Menu Button - (•••)`
### Decky Loader: Install Power Tools
Power Tools allows you to tweak various performance settings of the Steam Deck.
What the best setting is differs per emulator or even per game.
In Game Mode:
- `Menu Button - (•••)`
- Go into Decky Loader
- From the Store install Power Tools
- This will add a 🔌 icon to the `Menu Button - (•••)` where you can access Power Tools.
### Decky Loader: AutoFlatpaks
AutoFlatpaks allows you to manage and update flatpaks like RetroDECK directly from Game Mode
- `Menu Button - (•••)`
- Go into Decky Loader
- From the Store install AutoFlatpaks

View file

@ -0,0 +1,55 @@
# Steam Deck specific recommendations
The following software works great with the Steam Deck and might enhance your RetroDECK experience.
## CryoUtilities
<img src="../../../wiki_images/logos/cryoutilities-logo.png" width="150">
Scripts and utilities to improve performance and manage storage on the Steam Deck.
_Made by CryoByte33_
[CryoUtilities link](https://github.com/CryoByte33/steam-deck-utilities)
## Discover Overlay
<img src="../../../wiki_images/logos/discover-overlay-logo.svg" width="150">
If you use Discord this is a program that adds Discord integration into the Steam Deck's gamemode UI.
It's already in on Flathub and downloadable in Discover. Note that you need to install and login to Discord as well.
_Made by trigg_
[Discover Overlay Link](https://trigg.github.io/Discover/)
## Decky Loader
<img src="../../../wiki_images/logos/decky-loader-logo.png" width="450">
Is a great piece of software that allows custom plugins inside Steam Deck's gamemode. It can open up more advanced features then the standard Steam Deck experience offers. But it's a bit more technical to install, please follow the guide on their github.
_Made by Steam Deck Homebrew Team_
[Decky Loader Link](https://github.com/SteamDeckHomebrew/decky-loader)
### Plugin: PowerTools
<img src="../../../wiki_images/logos/powertools-logo.png" width="150">
PowerTools let's you do advanced tweaking of the Steam Decks hardware. This can greatly improve performance on certain games in the PS2,GC and above generations. But it requires you to find the knowledge of what setting works best for each game and/or emulator.
_Made by NGnius_
[PowerTools Link](https://git.ngni.us/NG-SD-Plugins/PowerTools)
### Plugin: AutoFlatpaks
AutoFlatpaks let's you update/install/manage flatpaks directly from gamemode. You can for example update RetroDECK directly from gamemode.
_Made by jurassicplayer_
[AutoFlatpaks Link](https://github.com/jurassicplayer/decky-autoflatpaks)

View file

@ -0,0 +1,72 @@
# How do I install RetroDECK on the Steam Deck?
<img src="../../../wiki_images/logos/steam-deck-logo.png" width="150">
## Quickstart guide
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
- Install RetroDECK from Discover
- Start RetroDECK first time in Desktop Mode
- Choose where RetroDECK should create the `roms` folders `Internal` or `SDCard`.
- Put the BIOS inside `~/retrodeck/bios/`.
- Put the ROMS inside `~/retrodeck/roms/` or `<sdcard>/retrodeck/roms/` or a custom location.
- In Steam desktop go to the tab `Games` press `Add non Steam game to My library` and select RetroDECK to add it into your library. If that is not working you can `Right Click` on the RetroDECK desktop icon and press `Add to Steam` in the menu.
- **Optional way:** Get RetroDECK Steam Grid art and add it to your Steam library with BoilR. Or add the art manually from [SteamgridDB](https://www.steamgriddb.com/search/grids?term=RetroDeck) for the Steam Grid.
- Switch over to game mode and go to RetroDECK on the Steam Grid under `Library > Non-Steam`
- Add the Official Layout under `Controller Settings` -> `Controller Layouts` -> `Templates` in the Steam Deck called `RetroDECK: Official Layout` with a version number and apply
- Launch RetroDECK and enjoy
## Other quick tips
- Read up on the [Steam Deck - Controls](../../wiki_controllers/controls-steamdeck.md) to ease your navigation.
- Read up on the [EmulationStation DE: User Guide](../../wiki_emulationStation_de/esde-guide.md)
- Check out our other software recommendations for the Steam Deck [Steam Deck - Software Recommendations](../../wiki_devices/steamdeck/steamdeck-software.md).
- Check various optional optimizations that can make some emulators run even better [Steam Deck - Optimizations](../../wiki_devices/steamdeck/steamdeck-optimize.md).
## Full step by step guide
### Step 1: Go to Desktop Mode
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
### Step 2: Install from Discover
- Open the Discover application.
- **NOTE:** Depending on what language you have set in Desktop mode your Discover application can be named differently.
- Inside Discover search for RetroDECK and press the install button.
- After the installation is finished, launch RetroDECK from Discover or in the program menu under `Games > RetroDECK`.
- Follow the first time setup instructions and choose where RetroDECK should create the `roms` folders `Internal` or `SDCard`.
- Open Steam while still in desktop mode.
- Inside Steam go to the tab `Games` press `Add non Steam game to My library` and select RetroDECK to add it into your library.
- After this is done you can now see RetroDECK in Steam Deck's gamemode after you return to it from desktop mode.
### Step 3: Configure the official controller layout
- Go back into gamemode by pressing the return to gamemode icon on the desktop.
- Go to RetroDECK on the Steam Grid under `Library > Non-Steam`
- Press the `Controller Icon`
- Go into `Controller Layouts` and press `Templates`
- Add the layout for RetroDECK called `RetroDECK: Official Layout` with a version number.
- You can now use RetroDECK and it's ready to populate with ROMS.
- If you are unsure on how to add ROMS and BIOS to RetroDECK follow the [How-to - Start using RetroDECK](../../wiki_howto_faq/retrodeck-start.md)
### Step 4 (Optional): Extras
- Get RetroDECK Steam Grid art with BoilR or add it manually from [SteamgridDB](https://www.steamgriddb.com/search/grids?term=RetroDeck) for the Steam Grid.
- Read up on the [Steam Deck - Controls](../../wiki_controllers/controls-steamdeck.md) to ease your navigation.
- Read up on the [EmulationStation DE: User Guide](../../wiki_emulationStation_de/esde-guide.md)
- Check out our other software recommendations for the Steam Deck [Steam Deck - Software Recommendations](../../wiki_devices/steamdeck/steamdeck-software.md).
- Check various optional optimizations that can make some emulators run even better [Steam Deck - Optimizations](../../wiki_devices/steamdeck/steamdeck-optimize.md).
## How do I update RetroDECK on the Steam Deck?
### From Desktop Mode
- Put the Steam Deck into Desktop Mode `Steam button` > `Power` > `Switch to Desktop`
- Open the Discover application.
- Click on the updates tab.
- If there are any updates available it will be shown here.
- Click on the `Update` or `Update all` buttons.
### Decky: AutoFlatpaks
If you have Decky installed and the AutoFlatpaks plugin. You can update RetroDECK from gamemode. <br>
Read more here: [Steam Deck - Software Recommendations](../../wiki_devices/steamdeck/steamdeck-software.md).

View file

@ -1,26 +1,14 @@
# General information
**Disclaimer: This list is a work in progress and might contain errors**
**Disclaimer: This list is a work in progress and might contain errors, not all of these systems are enabled**
What follows is a list of each systems supported file extensions and the path to the folder where to put the roms.
**NOTE: Steam Deck**<br>
For the Steam Deck the `roms` folder location depends on where you choose to install the roms folder during the RetroDECK installation process.<br>
It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>/retrodeck/roms`<br>
[What does ~ mean?](https://github.com/XargonWan/RetroDECK/wiki/FAQs-Frequently-asked-questions#i-see--refereed-in-documentation-and-examples-what-does-it-mean)
# 3DO
- **Roms path:**<br> ~/retrodeck/roms/3do
- **Supported file extensions:**<br> .iso .ISO .bin .BIN .chd .CHD .cue .CUE .7z .7Z .zip .ZIP
# AdvanceMAME
- **Roms path:**<br> ~/retrodeck/roms/mame-advmame
- **Supported file extensions:**<br> .chd .cue .CUE .CHD .cmd .CMD .fba .FBA .iso .ISO .7z .7Z .zip .ZIP
# Adventure Game Studio Game Engine
- **Roms path:**<br> ~/retrodeck/roms/ags
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
@ -141,16 +129,16 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
# Commodore
## Commodore Amiga
## Commodore Amiga
- **Roms path:**<br> ~/retrodeck/roms/amiga
- **Supported file extensions:**<br> .adf .ADF .adz .ADZ .dms .DMS .fdi .FDI .ipf .IPF .hdf .HDF .hdz .HDZ .lha .LHA .cue .CUE .ccd .CCD .nrg .NRG .mds .MDS .iso .ISO .uae .UAE .m3u .M3U .7z .7Z .zip .ZIP
## Commodore Amiga 600
## Commodore Amiga 600
- **Roms path:**<br> ~/retrodeck/roms/amiga600
- **Supported file extensions:**<br> .adf .ADF .adz .ADZ .dms .DMS .fdi .FDI .ipf .IPF .hdf .HDF .hdz .HDZ .lha .LHA .cue .CUE .ccd .CCD .nrg .NRG .mds .MDS .iso .ISO .uae .UAE .m3u .M3U .7z .7Z .zip .ZIP
## Commodore Amiga 1200
## Commodore Amiga 1200
- **Roms path:**<br> ~/retrodeck/roms/amiga1200
- **Supported file extensions:**<br> .adf .ADF .adz .ADZ .dms .DMS .fdi .FDI .ipf .IPF .hdf .HDF .hdz .HDZ .lha .LHA .cue .CUE .ccd .CCD .nrg .NRG .mds .MDS .iso .ISO .uae .UAE .m3u .M3U .7z .7Z .zip .ZIP
@ -215,7 +203,7 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Fairchild Channel F
# Fairchild Channel F
- **Roms path:**<br> ~/retrodeck/roms/channelf
- **Supported file extensions:**<br> .bin .BIN .chf .CHF .7z .7Z .zip .ZIP
@ -237,7 +225,7 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
- **Supported file extensions:**<br> .int .INT .bin .BIN .rom .ROM .7z .7Z .zip .ZIP
# Infocom Z-machine
# Infocom Z-machine
- **Roms path:**<br> ~/retrodeck/roms/zmachine
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
@ -257,21 +245,10 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
- **Supported file extensions:**<br> .cmd .CMD .7z .7Z .zip .ZIP
# MAME4ALL
- **Roms path:**<br> ~/retrodeck/roms/mame-mame4all
- **Supported file extensions:**<br> .chd .cue .CUE .CHD .cmd .CMD .fba .FBA .iso .ISO .7z .7Z .zip .ZIP
# Multi Emulator Super System (MESS)
- **Roms path:**<br> ~/retrodeck/roms/mess
- **Supported file extensions:**<br> .chd .CHD .7z .7Z .zip .ZIP
# Moonlight Game Streaming
- **Roms path:**<br> ~/retrodeck/roms/moonlight
- **Supported file extensions:**<br> .moonlight .MOONLIGHT .7z .7Z .zip .ZIP
# MSX
## MSX
@ -541,12 +518,12 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
- **Supported file extensions:**<br> .bin .BIN .cbn .CBN .ccd .CCD .chd .CHD .cue .CUE .ecm .ECM .exe .EXE .img .IMG .iso .ISO .m3u .M3U .mdf .MDF .mds .MDS .pbp .PBP .psexe .PSEXE .psf .PSF .toc .TOC .z .Z .znx .ZNX .7z .7Z .zip .ZIP
## Sony PlayStation 2
## Sony PlayStation 2
- **Roms path:**<br> ~/retrodeck/roms/ps2
- **Supported file extensions:**<br> .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
## Sony PlayStation 3
## Sony PlayStation 3
- **Roms path:**<br> ~/retrodeck/roms/ps3
- **Supported file extensions:**<br> .ps3 .PS3 .ps3dir .PS3DIR
@ -655,7 +632,7 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
# Sharp
## Sharp X1
## Sharp X1
- **Roms path:**<br> ~/retrodeck/roms/x1
- **Supported file extensions:**<br> .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
@ -667,12 +644,12 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
# Sinclair
## Sinclair ZX81
## Sinclair ZX81
- **Roms path:**<br> ~/retrodeck/roms/zx81
- **Supported file extensions:**<br> .tzx .TZX .p .P .7z .7Z .zip .ZIP
## Sinclair ZX Spectrum
## Sinclair ZX Spectrum
- **Roms path:**<br> ~/retrodeck/roms/zxspectrum
- **Supported file extensions:**<br> .tzx .TZX .tap .TAP .z80 .Z80 .rzx .RZX .scl .SCL .trd .TRD .sh .SH .sna .SNA .szx .SZX .udi .UDI .mgt .MGT .img .IMG .dsk .DSK .gz .GZ .7z .7Z .zip .ZIP
@ -707,7 +684,6 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
- **Supported file extensions:**<br> .rpk .RPK .7z .7Z .zip .ZIP
# TIC-80 Game Engine
- **Roms path:**<br> ~/retrodeck/roms/tic80
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
@ -732,3 +708,4 @@ It's either on the internal storage: `~/retrodeck/roms` or the SDCard: `<sdcard>
# Vectrex
- **Roms path:**<br> ~/retrodeck/roms/vectrex
- **Supported file extensions:**<br> .bin .BIN .vec .VEC .gam .GAM .vc .VC .7z .7Z .zip .ZIP

Some files were not shown because too many files have changed in this diff Show more