Merge branch 'cooker-0.8.0b' into feat/steam-sync

This commit is contained in:
XargonWan 2024-01-10 13:19:01 +01:00
commit 1a794b491c
125 changed files with 18294 additions and 5499 deletions

View file

@ -0,0 +1,152 @@
name: "Build cooker (persistent)"
env:
PERSISTENCE: true
on:
push:
branches:
- cooker*
- feat*
paths:
- '.github/workflows/**'
- 'automation_tools/**'
- 'emu-configs/**'
- 'es-configs/**'
- 'functions/**'
- 'rd-submodules/**'
- '*.sh'
- 'net.retrodeck.retrodeck.yml'
- 'net.retrodeck.retrodeck.appdata.xml'
pull_request:
branches:
- cooker*
workflow_dispatch:
jobs:
Building_RetroDECK:
runs-on: self-hosted
steps:
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
- name: Remove stuck mounts
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
continue-on-error: true
- name: Clone RetroDECK repo
uses: actions/checkout@v3
with:
submodules: 'true'
- name: "Install dependencies"
run: "automation_tools/install_dependencies.sh"
- name: Generate cooker build ID
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
# backing up manifest in case download fails and hashes must be recalculated
- name: Manifest backup
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
- name: Run pre-build automation tasks
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
- 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: "[DEBUG] Outputting manifest"
run: cat net.retrodeck.retrodeck.yml
- name: "Build flatpak: download only"
id: "flatpak-download"
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only_persistent.sh"
continue-on-error: true
# Sometimes flatpak download fails, in this case it tries a second time
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: |
echo "Download failed, maybe some hash changed since the build start."
echo "Recalculating hashes and retrying download..."
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only_persistent.sh"
- name: Build flatpak
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only_persistent.sh"
- name: Create Artifact for flathub
run: |
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker .
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.tar.gz))
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha
mv -f RetroDECK-Artifact-cooker.* ${{ secrets.ARTIFACT_REPO }}
continue-on-error: true
- name: Create Bundle
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle_persistent.sh"
- name: Set environment variable with current branch name
run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
- name: Get commits since last release
run: |
# Get the latest release tag
LATEST_TAG=$(git describe --tags --abbrev=0)
# Get all commits since the latest release tag
COMMITS=$(git log $LATEST_TAG..HEAD --pretty=format:"- %s")
# Set the output variable
echo "::set-output name=commits::$COMMITS"
id: commits
continue-on-error: true
- name: Get branch name
id: branch_name
run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV
# if it's a feature branch it will not marked as "latest" cooker version
- name: "Set makeLatest (cooker only)"
run: |
if [[ "$BRANCH_NAME" == 'feat/'* ]]; then
echo "MAKE_LATEST=false" >> $GITHUB_ENV
else
echo "MAKE_LATEST=true" >> $GITHUB_ENV
fi
- name: Publish the flatpak in a new cooker release
uses: ncipollo/release-action@v1
with:
tag: "${{env.BRANCH_NAME}}-${{ env.buildid }}"
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 }}
For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/qQcrFvaA2C) on our Discord server.
Cooker channel is provided for the community to test fixes and explore new functionality.
Please DO NOT open issues or ask support on this build.
artifacts: "RetroDECK-cooker.flatpak,RetroDECK-Artifact.tar.gz"
allowUpdates: 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
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
- name: Upload RetroDECK-cooker.flatpak
uses: actions/upload-artifact@v3
with:
name: retrodeck-flatpak
path: RetroDECK-cooker.flatpak
continue-on-error: true

View file

@ -1,23 +1,28 @@
name: "Build cooker"
on:
push:
branches:
- cooker*
- feat*
paths:
- '.github/workflows/**'
- 'automation_tools/**'
- 'emu-configs/**'
- 'es-configs/**'
- 'functions/**'
- 'rd-submodules/**'
- '*.sh'
- 'net.retrodeck.retrodeck.yml'
- 'net.retrodeck.retrodeck.appdata.xml'
pull_request:
branches:
- cooker*
# push:
# branches:
# - cooker*
# - feat*
# paths:
# - '.github/workflows/**'
# - 'automation_tools/**'
# - 'emu-configs/**'
# - 'es-configs/**'
# - 'functions/**'
# - 'rd-submodules/**'
# - '*.sh'
# - 'net.retrodeck.retrodeck.yml'
# - 'net.retrodeck.retrodeck.appdata.xml'
# pull_request:
# branches:
# - cooker*
# Italy (CET): 11:00 PM
# Japan (JST): 7:00 AM
schedule:
- cron: '0 22 * * *'
workflow_dispatch:
@ -42,15 +47,11 @@ jobs:
run: "automation_tools/install_dependencies.sh"
- name: Generate cooker build ID
run: |
word1=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
capitalized_word1="$(tr '[:lower:]' '[:upper:]' <<< ${word1:0:1})${word1:1}"
word2=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}"
result=$capitalized_word1$capitalized_word2
echo $result > ${GITHUB_WORKSPACE}/buildid
echo "buildid=$result" >> $GITHUB_ENV
echo "VersionID is $result"
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
# backing up manifest in case download fails and hashes must be recalculated
- name: Manifest backup
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
- name: Run pre-build automation tasks
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
@ -72,7 +73,13 @@ jobs:
# Sometimes flatpak download fails, in this case it tries a second time
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
run: |
echo "Download failed, maybe some hash changed since the build start."
echo "Recalculating hashes and retrying download..."
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
- name: Build flatpak
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"

View file

@ -40,6 +40,10 @@ jobs:
- name: "Install dependencies"
run: "automation_tools/install_dependencies.sh"
# backing up manifest in case download fails and hashes must be recalculated
- name: Manifest backup
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
- name: Run pre-build automation tasks
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
@ -65,7 +69,13 @@ jobs:
# Sometimes flatpak download fails, in this case it tries a second time
- name: "Build flatpak: download only (retry)"
if: steps.flatpak-download.outcome == 'failure'
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
run: |
echo "Download failed, maybe some hash changed since the build start."
echo "Recalculating hashes and retrying download..."
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
- name: Build flatpak
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
@ -76,7 +86,6 @@ jobs:
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz))
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact.sha
mv -f RetroDECK-Artifact.* ${{ secrets.ARTIFACT_REPO }}
continue-on-error: true
- name: Create Bundle
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"

View file

@ -68,7 +68,7 @@ jobs:
- name: Buld part 1 - Until melonds
run: |
sudo flatpak-builder --build-only --stop-at=melonds --user --force-clean --repo=${GITHUB_WORKSPACE}/local retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml
sudo flatpak-builder --build-only --stop-at=melonds --user --force-clean --repo=${GITHUB_WORKSPACE}/.local retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml
- name: Compress cache
run: |
@ -140,8 +140,8 @@ jobs:
- name: Create Bundle
run: |
sudo flatpak-builder --user --force-clean --repo=${GITHUB_WORKSPACE}/local retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml
sudo flatpak build-bundle $GITHUB_WORKSPACE/local RetroDECK.flatpak net.retrodeck.retrodeck
sudo flatpak-builder --user --force-clean --repo=${GITHUB_WORKSPACE}/.local retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml
sudo flatpak build-bundle $GITHUB_WORKSPACE/.local RetroDECK.flatpak net.retrodeck.retrodeck
- name: Get date for artifacts
id: date

View file

@ -69,7 +69,7 @@ jobs:
- name: Buld part 1 - Until melonds
run: |
sudo flatpak-builder --build-only --stop-at=melonds --user --force-clean --repo=${GITHUB_WORKSPACE}/local retrodeck-flatpak-main net.retrodeck.retrodeck.yml
sudo flatpak-builder --build-only --stop-at=melonds --user --force-clean --repo=${GITHUB_WORKSPACE}/.local retrodeck-flatpak-main net.retrodeck.retrodeck.yml
- name: Compress cache
run: |
@ -141,8 +141,8 @@ jobs:
- name: Create Bundle
run: |
sudo flatpak-builder --user --force-clean --repo=${GITHUB_WORKSPACE}/local retrodeck-flatpak-main net.retrodeck.retrodeck.yml
sudo flatpak build-bundle $GITHUB_WORKSPACE/local RetroDECK.flatpak net.retrodeck.retrodeck
sudo flatpak-builder --user --force-clean --repo=${GITHUB_WORKSPACE}/.local retrodeck-flatpak-main net.retrodeck.retrodeck.yml
sudo flatpak build-bundle $GITHUB_WORKSPACE/.local RetroDECK.flatpak net.retrodeck.retrodeck
- name: Read version from version file
id: version

View file

@ -2,8 +2,8 @@ name: Sunday Submodule Update
on:
# At 4:00 (CET)
schedule:
- cron: '0 2 * * 0'
# schedule:
# - cron: '0 2 * * 0'
workflow_dispatch:
jobs:

10
.gitignore vendored
View file

@ -17,7 +17,17 @@ backup
.old
tmp
.godot
.local/
buildid
*.bak
# Python #
##########
__pycache__
# Submodules #
##############
rd-submodules/retroarch*
rd-submodules/ryujinx*
rd-submodules/shared-modules*
rd-submodules/es-de/patches-tmp*

6
.gitmodules vendored
View file

@ -1,9 +1,9 @@
[submodule "rd-submodules/retroarch"]
path = rd-submodules/retroarch
url = https://github.com/flathub/org.libretro.RetroArch
[submodule "rd-submodules/shared-modules"]
path = rd-submodules/shared-modules
url = https://github.com/flathub/shared-modules.git
[submodule "rd-submodules/retroarch"]
path = rd-submodules/retroarch
url = https://github.com/flathub/org.libretro.RetroArch.git
[submodule "rd-submodules/ryujinx"]
path = rd-submodules/ryujinx
url = https://github.com/flathub/org.ryujinx.Ryujinx

View file

@ -1,31 +0,0 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
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
# Optionally build your docs in additional formats such as PDF and ePub
formats:
- pdf
- epub
# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: wiki-rtd/requirements.txt

104
README.md
View file

@ -2,13 +2,6 @@
<img src="https://github.com/XargonWan/RetroDECK/blob/main/res/logo.png?raw=true" alt="RetroDECK logo" width="600"/>
</p>
![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)
[![Documentation Status](https://readthedocs.org/projects/retrodeck/badge/?version=latest)](https://retrodeck.readthedocs.io/en/latest/?badge=latest)
# RetroDECK on your device!
<p float="center">
@ -19,35 +12,34 @@
</p>
<br/>
## What is RetroDECK?
RetroDECK is a [EmulationStation Desktop Edition](https://es-de.org) powered application that builds in a variety of emulators and other software that allows you to play your favorite retro (and even not-so-retro) games in a tidy contained flatpak sandbox environment. It's inspired by embedded emulation systems like AmberELEC, EmuELEC, CoreELEC, Lakka, and Batocera.
![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)
[![Documentation Status](https://readthedocs.org/projects/retrodeck/badge/?version=latest)](https://retrodeck.readthedocs.io/en/latest/?badge=latest)
You can also check out our: [Flathub Page](https://flathub.org/apps/net.retrodeck.retrodeck)<br/>
# What is RetroDECK?
Instead of having several different software on your system for a variety of emulators and frontends you only need to have one: RetroDECK.
## What devices/systems does RetroDECK support:
RetroDECK is a [EmulationStation Desktop Edition](https://es-de.org) (ES-DE) powered flatpak application that builds in a variety of emulators and other software that allows you to play your favorite retro (and even not-so-retro) games in one complete package.
### Steam Deck
It's inspired by embedded emulation systems like:
Supported from the start and RetroDECK is tailored to the Steam Deck during the beta period. The goal is that all the configurations are ready out-of-the-box and optimized towards the Steam Deck.
- AmberELEC
- EmuELEC
- CoreELEC
- Lakka
- Batocera
### Linux Desktop
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 flatpak support (else you will need to install it).<br>
We will start to have a bigger desktop focus after the beta period is over.
The RetroDECK team consists of several veterans from some of the projects mentioned above as well as a bunch of other talented individuals.
### Other SteamOS or Linux handheld gaming devices with flatpak support
We do plan to support other SteamOS based devices in the future. But during the BETA we are focusing on the Steam Deck.<br/>
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.<br/>
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.
RetroDECK also adds the `RetroDECK Framework` and the `RetroDECK Configurator` on top of the emulators and ES-DE frontend that allows deeper integrations between emulators and easier exposure to a variety of features that you otherwise need to set per emulator basis to create a uniformity between them.
For our long term vision you can check out the following wiki page:
## Do you have any plans for other systems?
RetroDECK does not have plans to support Windows, macOS, Android, or iOS.<br>For similar functionality on Windows you could explore [Retrobat](https://www.retrobat.org/) as an alternative.
[RetroDECK: Visions and Goals](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Visions-and-Goals)
## How do I install RetroDECK?
Read and follow the guide here: [Installation instructions](https://github.com/XargonWan/RetroDECK/wiki/How-to:-Getting-started) on the Wiki
## The RetroDECK community:
### The RetroDECK community:
[Website](https://retrodeck.net) <br/>
[Wiki](https://github.com/XargonWan/RetroDECK/wiki) <br/>
@ -55,24 +47,54 @@ Read and follow the guide here: [Installation instructions](https://github.com/X
[Lemmy](https://lemmy.zip/c/retrodeck)<br/>
[Subreddit](https://www.reddit.com/r/retrodeck)
# How do I start using RetroDECK?
# Short FAQ
We have an in depth How To on how to get started over here:
Please read the [Wiki](https://github.com/XargonWan/RetroDECK/wiki) for even more information.
[How to: Start using RetroDECK](https://github.com/XargonWan/RetroDECK/wiki/How-to%3A-Start-using-RetroDECK)
## What devices/systems does RetroDECK support:
RetroDECK currently supports:
- Steam Deck
- Linux Desktop
For more information read up here:
[Supported Systems](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Supported-Systems)
## Is RetroDECK in Beta?
Yes, here you can read more about the beta period:
[RetroDECK: Beta period](https://github.com/XargonWan/RetroDECK/wiki/RetroDECK%3A-Beta-period)
## Do I have to partition or format my disk/sdcard to install it?
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.
## Can I contribute to the project?
Yes! Everybody is welcome to contribute in any way possible if it is personal time or funds, just check out our [Discord](https://discord.gg/Dz3szYsP8g)!
- 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).
- By joining the ✨-new-helpers-start-here channel on [Discord](https://discord.gg/Mv3GZnwrE8) and keeping an eye on the [issues](https://github.com/XargonWan/RetroDECK/issues) tab as well as the [Roadmap](https://github.com/XargonWan/RetroDECK/milestones) tab, you can be up to speed on the latest developments on RetroDECK.
- We have a [Patreon](https://www.patreon.com/RetroDECK) page if you want to help us keep our build servers running or just buy us a beverage
###### The Steam Deck logo is a registered trademark of Valve Corporation. This project is in no way officially affiliated with Valve.<br/>
Yes, off course! <br>
Read up here on how to help out, there is something for everyone:
###### All trademarks, logos 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.
[How to: Contribute to RetroDECK](https://github.com/XargonWan/RetroDECK/wiki/How-to%3A-Contribute-to-RetroDECK)
## Our repositories:
| Name | Description |
|-------------------------------------------------------------|-----------------------------------------------------------|
| [RetroDECK](https://github.com/XargonWan/RetroDECK) | This one, our main repo where the core of the project is |
| [RetroDECK-cooker](https://github.com/XargonWan/RetroDECK-cooker) | Where we publish our test build, no code is hosted here |
| [RetroDECK-Wiki](https://github.com/XargonWan/RetroDECK-Wiki) | Where our wiki source code is |
| [RetroDECK on Flathub](https://github.com/flathub/net.retrodeck.retrodeck) | Our little space in Flathub's organization |
| [RetroDECK-MAME](https://github.com/XargonWan/RetroDECK-MAME) | MAME is big to build, so it's pre-built here and then imported in the build |
| [RetroDECK-ES-DE](https://github.com/XargonWan/RetroDECK-ES-DE) | This is where we store our patched fork of ES-DE |
# The RetroDECK Wiki
Please check out the [Wiki](https://github.com/XargonWan/RetroDECK/wiki) for even more information.
## The FAQ
The RetroDECK [FAQ](https://github.com/XargonWan/RetroDECK/wiki/FAQs%3A-Frequently-asked-questions) on the wiki has a vast variety of questions and awnsers.
# How to get support?
Use the supports channels on [Discord](https://discord.gg/Dz3szYsP8g).

View file

@ -1,12 +1,14 @@
# 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
hash^MSXBIOSHASHPLACEHOLDER^http://bluemsx.msxblue.com/rel_download/blueMSXv282full.zip
hash^XEMUHDDHASHPLACEHOLDER^https://github.com/mborgerson/xemu-hdd-image/releases/latest/download/xbox_hdd.qcow2.zip
hash^VITA3KSHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
hash^RANIGHTLYCORESPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z
#hash^RETRODECKMAMEPLACEHOLDER^
latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main
outside_info^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
branch^THISBRANCH

View file

@ -0,0 +1,10 @@
#!/bin/bash
word1=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
capitalized_word1="$(tr '[:lower:]' '[:upper:]' <<< ${word1:0:1})${word1:1}"
word2=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}"
result=$capitalized_word1$capitalized_word2
echo $result > ${GITHUB_WORKSPACE}/buildid
echo "buildid=$result" >> $GITHUB_ENV
echo "VersionID is $result"

View file

@ -2,4 +2,8 @@
# This is building the bundle RetroDECK.flatpak after the download and build steps are done
flatpak build-bundle ${GITHUB_WORKSPACE}/local RetroDECK-cooker.flatpak net.retrodeck.retrodeck
if [ "${GITHUB_REF##*/}" = "main" ]; then
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
else
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
fi

View file

@ -0,0 +1,12 @@
#!/bin/bash
# This is building the bundle RetroDECK.flatpak after the download and build steps are done
BUILD_DIR="$HOME/cooker-persistent"
mkdir -p "$BUILD_DIR"
if [ "${GITHUB_REF##*/}" = "main" ]; then
flatpak build-bundle "${BUILD_DIR}/.local" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
else
flatpak build-bundle "${BUILD_DIR}/.local" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
fi

View file

@ -3,12 +3,22 @@
# This script is downloading the needed files to prepare the manifest build
git config --global protocol.file.allow always
mkdir -vp ${GITHUB_WORKSPACE}/local
mkdir -vp ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker
if [[ "${GITHUB_REF##*/}" == "main" ]]; then
BUNDLE_NAME="RetroDECK.flatpak"
FOLDER=retrodeck-flatpak
else
BUNDLE_NAME="RetroDECK-cooker.flatpak"
FOLDER=retrodeck-flatpak-cooker
fi
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}/retrodeck-flatpak-cooker \
"${GITHUB_WORKSPACE}/${FOLDER}" \
net.retrodeck.retrodeck.yml

View file

@ -0,0 +1,26 @@
#!/bin/bash
# This script is downloading the needed files to prepare the manifest build
git config --global protocol.file.allow always
if [[ "${GITHUB_REF##*/}" == "main" ]]; then
BUNDLE_NAME="RetroDECK.flatpak"
FOLDER=retrodeck-flatpak
else
BUNDLE_NAME="RetroDECK-cooker.flatpak"
FOLDER=retrodeck-flatpak-cooker
fi
BUILD_DIR="$HOME/cooker-persistent"
mkdir -p "$BUILD_DIR"
mkdir -vp "${BUILD_DIR}"/{.local,retrodeck-flatpak-cooker}
flatpak-builder --user --force-clean \
--install-deps-from=flathub \
--install-deps-from=flathub-beta \
--repo="${BUILD_DIR}/.local" \
--download-only \
"${BUILD_DIR}/${FOLDER}" \
"${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"

View file

@ -1,14 +1,24 @@
#!/bin/bash
# This script is building the flatpak is the needed files are already downloaded
# This script is downloading the needed files to prepare the manifest build
git config protocol.file.allow always
if [ "${GITHUB_REF##*/}" = "main" ]; then
BUNDLE_NAME="RetroDECK.flatpak"
FOLDER=retrodeck-flatpak-main
else
BUNDLE_NAME="RetroDECK-cooker.flatpak"
FOLDER=retrodeck-flatpak-cooker
fi
mkdir -vp ${GITHUB_WORKSPACE}/.local
mkdir -vp ${GITHUB_WORKSPACE}/"$FOLDER"
git config --global protocol.file.allow always
mkdir -vp ${GITHUB_WORKSPACE}/local
mkdir -vp ${GITHUB_WORKSPACE}/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 \
--disable-download \
${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker \
"${GITHUB_WORKSPACE}/$FOLDER" \
net.retrodeck.retrodeck.yml

View file

@ -0,0 +1,25 @@
#!/bin/bash
# This script is downloading the needed files to prepare the manifest build
git config protocol.file.allow always
if [ "${GITHUB_REF##*/}" = "main" ]; then
BUNDLE_NAME="RetroDECK.flatpak"
FOLDER=retrodeck-flatpak-main
else
BUNDLE_NAME="RetroDECK-cooker.flatpak"
FOLDER=retrodeck-flatpak-cooker
fi
BUILD_DIR="$HOME/cooker-persistent"
mkdir -vp ${$BUILD_DIR}/.local
mkdir -vp ${$BUILD_DIR}/"$FOLDER"
flatpak-builder --user --force-clean \
--install-deps-from=flathub \
--install-deps-from=flathub-beta \
--repo="${BUILD_DIR}/.local" \
--disable-download \
"${BUILD_DIR}/${FOLDER}" \
"${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"

View file

@ -2,16 +2,27 @@
# WARNING: DANGEROUS! Don't use this script lightly
git submodule deinit --all
rm rd-submodules/retroarch
git submodule deinit -f --all
rm -rf rd-submodules/retroarch
git rm -rf --cached rd-submodules/retroarch
rm -rf .git/modules/rd-submodules/retroarch
rm -rf shared-modules
git rm -rf --cached shared-modules
rm -rf .git/modules/shared-modules
rm -rf rd-submodules/ryujinx
git rm -rf --cached rd-submodules/ryujinx
rm -rf .git/modules/rd-submodules/ryujinx
rm -rf rd-submodules/shared-modules
git rm -rf --cached rd-submodules/shared-modules
rm -rf .git/modules/rd-submodules/shared-modules
rm .gitmodules
# Do a commit here before giving the next commands
git submodule add https://github.com/flathub/shared-modules.git rd-submodules/shared-modules
git submodule add https://github.com/flathub/org.libretro.RetroArch.git rd-submodules/retroarch
git submodule add https://github.com/flathub/org.ryujinx.Ryujinx rd-submodules/ryujinx
git submodule init
git submodule add https://github.com/flathub/shared-modules.git
git submodule add https://github.com/flathub/org.libretro.RetroArch rd-submodules/retroarch
git submodule update --remote --merge --recursive

19
build-locally.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/bash
export GITHUB_WORKSPACE="."
cp net.retrodeck.retrodeck.appdata.xml net.retrodeck.retrodeck.appdata.xml.bak
cp net.retrodeck.retrodeck.yml net.retrodeck.retrodeck.yml.bak
automation_tools/install_dependencies.sh
automation_tools/cooker_build_id.sh
automation_tools/pre_build_automation.sh
automation_tools/cooker_flatpak_portal_add.sh
automation_tools/appdata_management.sh
automation_tools/flatpak_build_download_only.sh
automation_tools/flatpak_build_only.sh
automation_tools/flatpak_build_bundle.sh
rm -f net.retrodeck.retrodeck.appdata.xml
rm -f net.retrodeck.retrodeck.yml
cp net.retrodeck.retrodeck.appdata.xml.bak net.retrodeck.retrodeck.appdata.xml
cp net.retrodeck.retrodeck.yml.bak net.retrodeck.retrodeck.yml

View file

@ -44,7 +44,7 @@ Bios=RETRODECKHOMEDIR/roms/bios
Snapshots=RETRODECKHOMEDIR/screenshots
Savestates=RETRODECKHOMEDIR/states/ps2/pcsx2
MemoryCards=RETRODECKHOMEDIR/saves/ps2/memcards
Logs=RETRODECKHOMEDIR/.logs
Logs=RETRODECKHOMEDIR/logs
Langs=/app/share/PCSX2/resources/locale
Cheats=/var/config/PCSX2/cheats
CheatsWS=/var/config/PCSX2/cheats_ws

View file

@ -7,6 +7,7 @@
<language>0</language>
<use_discord_presence>true</use_discord_presence>
<fullscreen_menubar>false</fullscreen_menubar>
<feral_gamemode>false</feral_gamemode>
<check_update>false</check_update>
<save_screenshot>true</save_screenshot>
<vk_warning>false</vk_warning>
@ -90,9 +91,9 @@
<TVChannels>1</TVChannels>
<PadChannels>1</PadChannels>
<InputChannels>0</InputChannels>
<TVVolume>50</TVVolume>
<PadVolume>0</PadVolume>
<InputVolume>50</InputVolume>
<TVVolume>100</TVVolume>
<PadVolume>100</PadVolume>
<InputVolume>100</InputVolume>
<TVDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</TVDevice>
<PadDevice>alsa_output.pci-0000_04_00.5-platform-acp5x_mach.0.HiFi__hw_acp5x_1__sink</PadDevice>
<InputDevice>filter-chain-source</InputDevice>

View file

@ -3,6 +3,10 @@ audio_emulation=0
audio_emulation\default=true
enable_audio_stretching=true
enable_audio_stretching\default=true
input_device=auto
input_device\default=true
input_type=0
input_type\default=true
mic_input_device=Default
mic_input_device\default=true
mic_input_type=0
@ -11,7 +15,9 @@ output_device=auto
output_device\default=true
output_engine=auto
output_engine\default=true
volume=@Variant(\0\0\0\x87?\x80\0\0)
output_type=0
output_type\default=true
volume=1
volume\default=true
[Camera]
@ -251,6 +257,10 @@ log_filter=*:Info
log_filter\default=true
[Renderer]
async_presentation=true
async_presentation\default=true
async_shader_compilation=false
async_shader_compilation\default=true
bg_blue=0
bg_blue\default=true
bg_green=0
@ -261,10 +271,16 @@ frame_limit=100
frame_limit\default=true
graphics_api=1
graphics_api\default=true
physical_device=0
physical_device\default=true
resolution_factor=1
resolution_factor\default=true
shaders_accurate_mul=true
shaders_accurate_mul\default=true
spirv_shader_gen=true
spirv_shader_gen\default=true
texture_filter=0
texture_filter\default=true
texture_filter_name=Linear (Default)
texture_filter_name\default=false
use_disk_shader_cache=true
@ -303,6 +319,14 @@ GameList\row1=2
GameList\row1\default=true
GameList\row2=0
GameList\row2\default=true
GameList\show_compat_column=true
GameList\show_compat_column\default=true
GameList\show_region_column=true
GameList\show_region_column\default=true
GameList\show_size_column=true
GameList\show_size_column\default=true
GameList\show_type_column=true
GameList\show_type_column\default=true
GameList\singleLineMode=false
GameList\singleLineMode\default=true
Multiplayer\game_id=0
@ -437,6 +461,10 @@ Shortcuts\Main%20Window\Toggle%203D\Context=1
Shortcuts\Main%20Window\Toggle%203D\Context\default=false
Shortcuts\Main%20Window\Toggle%203D\KeySeq=
Shortcuts\Main%20Window\Toggle%203D\KeySeq\default=false
Shortcuts\Main%20Window\Toggle%20Custom%20Textures\Context=2
Shortcuts\Main%20Window\Toggle%20Custom%20Textures\Context\default=true
Shortcuts\Main%20Window\Toggle%20Custom%20Textures\KeySeq=F7
Shortcuts\Main%20Window\Toggle%20Custom%20Textures\KeySeq\default=false
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context=1
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\Context\default=false
Shortcuts\Main%20Window\Toggle%20Filter%20Bar\KeySeq=
@ -488,6 +516,8 @@ hideInactiveMouse=false
hideInactiveMouse\default=true
pauseWhenInBackground=false
pauseWhenInBackground\default=true
saveStateWarning=true
saveStateWarning\default=true
screenshot_resolution_factor=0
screenshot_resolution_factor\default=true
showConsole=false
@ -502,6 +532,8 @@ theme=colorful_dark
theme\default=false
[Utility]
async_custom_loading=true
async_custom_loading\default=true
custom_textures=false
custom_textures\default=true
dump_textures=false

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,22 @@
# Guide: Vita3K
Please note that the PSVita support is still experimental and it will be available starting from RetroDECK 0.8.0b, and for the way Vita3K is actually 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 by searching for example `WipEout 2048 (EU) zRIF`.
- Install DLCs and patches in the same way.
- Create an empty file in `retrodeck/roms/psvita/gamename.psvita`, please mind the `.psvita` extension.<br>
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 or reloaded from the Utilities.
## 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

@ -0,0 +1 @@
1201^1231^0000^2359^RetroDECK-Xmas-splash.svg

View file

@ -19,3 +19,6 @@ 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

@ -8,7 +8,7 @@ states_folder=/home/deck/retrodeck/states
bios_folder=/home/deck/retrodeck/bios
media_folder=/home/deck/retrodeck/downloaded_media
themes_folder=/home/deck/retrodeck/themes
logs_folder=/home/deck/retrodeck/.logs
logs_folder=/home/deck/retrodeck/logs
screenshots_folder=/home/deck/retrodeck/screenshots
mods_folder=/home/deck/retrodeck/mods
texture_packs_folder=/home/deck/retrodeck/texture_packs
@ -39,14 +39,14 @@ pcsx2=false
retroarch=false
[borders]
gb=true
gba=true
gbc=true
genesis=true
gg=true
n64=true
psx_ra=true
snes=true
gb=false
gba=false
gbc=false
genesis=false
gg=false
n64=false
psx_ra=false
snes=false
[widescreen]
genesis=false

View file

@ -4,7 +4,7 @@ Buttons/A = SOUTH
Buttons/B = EAST
Buttons/X = NORTH
Buttons/Y = WEST
Buttons/Z = `Full Axis 5+`
Buttons/Z = TR
Buttons/Start = START
Main Stick/Up = `Axis 1-`
Main Stick/Down = `Axis 1+`
@ -20,8 +20,8 @@ C-Stick/Right = `Axis 3+`
C-Stick/Modifier = `Ctrl`
C-Stick/Modifier/Range = 50.0
C-Stick/Calibration = 100.00 141.42 100.00 141.42 100.00 141.42 100.00 141.42
Triggers/L = TL
Triggers/R = TR
Triggers/L = `Full Axis 2+`
Triggers/R = `Full Axis 5+`
D-Pad/Up = `Axis 7-`
D-Pad/Down = `Axis 7+`
D-Pad/Left = `Axis 6-`

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,118 @@
#!/bin/bash
# Define the IWAD files list
IWAD_FILES=("DOOM1.WAD" "DOOM.WAD" "DOOM2.WAD" "DOOM2F.WAD" "DOOM64.WAD" "TNT.WAD"
"PLUTONIA.WAD" "HERETIC1.WAD" "HERETIC.WAD" "HEXEN.WAD" "HEXDD.WAD"
"STRIFE0.WAD" "STRIFE1.WAD" "VOICES.WAD" "CHEX.WAD"
"CHEX3.WAD" "HACX.WAD" "freedoom1.wad" "freedoom2.wad" "freedm.wad"
"doom_complete.pk3"
)
# Function to log messages to terminal and a log file
log() {
local message="$1"
local logfile="$rdhome/logs/gzdoom.log"
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S])"
echo "$timestamp $message" | tee -a "$logfile"
}
# Function to check if a file is an IWAD
is_iwad() {
local file="$1"
local lowercase_file="$(basename "${file,,}")"
for iwad in "${IWAD_FILES[@]}"; do
if [[ "${iwad,,}" == "$lowercase_file" ]]; then
echo "true"
return
fi
done
echo "false"
}
# Function to search for files recursively
search_file_recursive() {
local file="$1"
local directory="$2"
local found_file=""
# Check if the file exists in the current directory
if [[ -e "$directory/$file" ]]; then
found_file="$directory/$file"
else
# Search recursively
local lowercase_file="$(echo "$file" | tr '[:upper:]' '[:lower:]')"
found_file=$(find "$directory" -type f -iname "$lowercase_file" | head -n 1)
fi
echo "$found_file"
}
# Main script
log "[INFO] RetroDECK GZDOOM wrapper init"
# Check if $1 is not a .doom file
if [[ "${1##*.}" != "doom" ]]; then
# Check if the file is in the IWAD list
if [[ $(is_iwad "$1") == "true" ]]; then
command="gzdoom -config /var/config/gzdoom/gzdoom.ini -iwad $1"
else
command="gzdoom -config /var/config/gzdoom/gzdoom.ini -file $1"
fi
# Log the command
log "[INFO] Loading: \"$1\""
log "[INFO] Executing command \"$command\""
# Execute the command
eval "$command"
# Check if $1 is a .doom file
else
doom_file="$1"
log "[INFO] Found a doom file: \"$1\""
# Check if the .doom file exists
if [[ ! -e "$doom_file" ]]; then
log "[Error] doom file not found in \"$doom_file\""
zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="File \"$doom_file\" not found. Quitting."
exit 1
fi
# Read the .doom file and compose the command
command="gzdoom -config /var/config/gzdoom/gzdoom.ini"
while IFS= read -r line; do
# Search for the file recursively
found_file=$(search_file_recursive "$line" "$(dirname "$doom_file")")
# If the file is not found, exit with an error
if [[ -z "$found_file" ]]; then
log "[ERROR] File not found in \"$line\""
zenity --error --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--text="File \"$doom_file\" not found. Quitting."
exit 1
fi
# Check if the file is an IWAD
if [[ $(is_iwad "$found_file") == "true" ]]; then
command+=" -iwad $found_file"
log "[INFO] Appending the param \"-iwad $found_file\""
else
command+=" -file $found_file"
log "[INFO] Appending the param \"-file $found_file\""
fi
done < "$doom_file"
# Log the command
log "[INFO] Executing command \"$command\""
# Execute the command
eval "$command"
fi

View file

@ -8,10 +8,10 @@ writeconfig 0
# CORE SEARCH PATH OPTIONS
#
homepath /var/config/mame
rompath /home/deck/retrodeck/roms/arcade
rompath RETRODECKROMSDIR
hashpath /app/share/mame/hash
samplepath /app/share/mame/samples
artpath $HOME/retrodeck/downloaded_media/arcade/screenshots/
artpath RETRODECKHOMEDIR/downloaded_media/arcade/screenshots/
ctrlrpath /app/share/mame/ctrlr
inipath /var/config/mame
fontpath /app/bin/
@ -27,7 +27,7 @@ swpath /app/share/mame/software
cfg_directory /var/config/mame/cfg
nvram_directory /var/config/mame/nvram
input_directory /var/config/mame/inp
state_directory /var/config/mame/sta
state_directory RETRODECKSAVESDIR/mame-sa/states
snapshot_directory RETRODECKHOMEDIR/screenshots
diff_directory /var/config/mame/diff
comment_directory /var/config/mame/comments

View file

@ -9,7 +9,7 @@ pcbs_directory pcb
flyers_directory flyers
titles_directory titles
ends_directory ends
marquees_directory marquees;$HOME/retrodeck/downloaded_media/arcade/marquees
marquees_directory marquees;RETRODECKHOMEDIR/downloaded_media/arcade/marquees
artwork_preview_directory "artwork preview;artpreview"
bosses_directory bosses
logos_directory logo
@ -19,7 +19,7 @@ gameover_directory gameover
howto_directory howto
select_directory select
icons_directory icons
covers_directory covers;$HOME/retrodeck/downloaded_media/arcade/covers
covers_directory covers;RETRODECKHOMEDIR/downloaded_media/arcade/covers
ui_path ui
#

View file

@ -1,79 +0,0 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present AmberELEC (https://github.com/AmberELEC)
#. /etc/profile
ROM="${1##*/}"
PLATFORM="doom"
CONF="/storage/.config/distribution/configs/distribution.conf"
function get_setting() {
#We look for the setting on the ROM first, if not found we search for platform and lastly we search globally
PAT="s|^${PLATFORM}\[\"${ROM}\"\].*${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
if [ -z "${EES}" ]; then
PAT="s|^${PLATFORM}[\.-]${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
fi
if [ -z "${EES}" ]; then
PAT="s|^global[\.-].*${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
fi
[ -z "${EES}" ] && EES="false"
}
# Show FPS
get_setting "show_fps"
echo ${EES}
if [ "${EES}" == "auto" ] || [ "${EES}" == "disabled" ] || [ "${EES}" == "false" ] || [ "${EES}" == "none" ] || [ "${EES}" == "0" ]; then
SHOWFPS='0'
else
SHOWFPS='1'
fi
EE_DEVICE=$(cat /storage/.config/.OS_ARCH)
RUN_DIR="/storage/roms/doom"
CONFIG="/storage/.config/distribution/gzdoom/gzdoom.ini"
SAVE_DIR="/storage/roms/gamedata/gzdoom"
if [ ! -L "/storage/.config/gzdoom" ]
then
ln -sf "/storage/.config/distribution/gzdoom" "/storage/.config/gzdoom"
fi
if [ ! -f "/storage/.config/distribution/gzdoom/gzdoom.ini" ]
then
cp -rf /usr/config/distribution/gzdoom/gzdoom.ini /storage/.config/distribution/gzdoom/
fi
mkdir -p ${SAVE_DIR}
params=" -config ${CONFIG} -savedir ${SAVE_DIR}"
# EXT can be wad, WAD, iwad, IWAD, pwad, PWAD or doom
EXT=${1#*.}
# If its not a simple wad (extension .doom) read the file and parse the data
if [ ${EXT} == "doom" ]; then
dos2unix "${1}"
while IFS== read -r key value; do
if [ "$key" == "IWAD" ]; then
params+=" -iwad $value"
fi
if [ "$key" == "MOD" ]; then
params+=" -file $value"
fi
done < "${1}"
else
params+=" -iwad ${1}"
fi
params+=" +gl_es 1 +vid_preferbackend 3 +cl_capfps 0 +vid_fps $SHOWFPS"
cd "${RUN_DIR}"
/usr/bin/gzdoom ${params} >/tmp/logs/gzdoom.log 2>&1

View file

@ -7,7 +7,7 @@ Core:
Use LLVM CPU: ""
Max LLVM Compile Threads: 0
PPU LLVM Greedy Mode: false
PPU LLVM Precompilation: true
LLVM Precompilation: true
Thread Scheduler Mode: Operating System
Set DAZ and FTZ: false
SPU Decoder: Recompiler (LLVM)
@ -33,9 +33,7 @@ Core:
MFC Commands Timeout: 0
MFC Commands Shuffling In Steps: false
Enable TSX: Disabled
Accurate xfloat: false
Approximate xfloat: true
Relaxed xfloat: true
XFloat Accuracy: Approximate
Accurate PPU 128-byte Reservation Op Max Length: 0
Stub PPU Traps: 0
Full Width AVX-512: false
@ -61,6 +59,7 @@ Core:
Max CPU Preempt Count: 0
Allow RSX CPU Preemptions: true
Sleep Timers Accuracy: As Host
Usleep Time Addend: 0
Performance Report Threshold: 500
Enable Performance Report: false
Assume External Debugger: false
@ -74,15 +73,16 @@ Video:
Renderer: Vulkan
Resolution: 1280x720
Aspect ratio: 16:9
Frame limit: Auto
Frame limit: 30
Second Frame Limit: 0
MSAA: Auto
Shader Mode: Async Shader Recompiler
Shader Precision: High
Shader Precision: Auto
Write Color Buffers: false
Write Depth Buffer: false
Read Color Buffers: false
Read Depth Buffer: false
Handle RSX Memory Tiling: false
Log shader programs: false
VSync: false
Debug output: false
@ -104,7 +104,7 @@ Video:
Strict Texture Flushing: false
Multithreaded RSX: false
Relaxed ZCULL Sync: false
Enable 3D: false
3D Display Mode: Disabled
Debug Program Analyser: false
Accurate ZCULL stats: true
Consecutive Frames To Draw: 1
@ -123,13 +123,14 @@ Video:
Disable MSL Fast Math: false
Output Scaling Mode: Bilinear
Vulkan:
Adapter: AMD RADV VANGOGH
Adapter: AMD Custom GPU 0405 (RADV VANGOGH)
Force FIFO present mode: false
Force primitive restart flag: false
Exclusive Fullscreen Mode: Automatic
Asynchronous Texture Streaming 2: false
FidelityFX CAS Sharpening Intensity: 50
Asynchronous Queue Scheduler: Fast
VRAM allocation limit (MB): 65536
Performance Overlay:
Enabled: false
Enable Framerate Graph: false
@ -186,9 +187,13 @@ Input/Output:
Turntable emulated controller: "Null"
GHLtar emulated controller: "Null"
Pad handler mode: Single-threaded
Keep pads connected: false
Pad handler sleep (microseconds): 1000
Background input enabled: true
Show move cursor: false
Lock overlay input to player one: false
Emulated Midi devices: Keyboardßßß@@@Keyboardßßß@@@Keyboardßßß@@@
Load SDL GameController Mappings: true
System:
License Area: SCEE
Language: English (US)
@ -197,6 +202,8 @@ System:
Console time offset (s): 0
PSID high: 0
PSID low: 0
HDD Model Name: ""
HDD Serial Number: ""
Net:
Internet enabled: Disconnected
IP address: 0.0.0.0
@ -208,15 +215,18 @@ Net:
Savestate:
Start Paused: false
Suspend Emulation Savestate Mode: true
Compatible Savestate Mode: false
Inspection Mode Savestates: false
Save Disc Game Data: false
Miscellaneous:
Automatically start games after boot: true
Exit RPCS3 when process finishes: true
Pause emulation on RPCS3 focus loss: false
Start games in fullscreen mode: true
Prevent display sleep while running games: true
Show trophy popups: true
Show shader compilation hint: true
Show PPU compilation hint: true
Use native user interface: true
GDB Server: 127.0.0.1:2345
Silence All Logs: false

View file

@ -0,0 +1,121 @@
---
initial-setup: true
gdbstub: false
log-active-shaders: false
log-uniforms: false
log-compat-warn: false
validation-layer: false
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/
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

@ -12,7 +12,6 @@
<rule type="systempath">
<entry>retroarch</entry>
<entry>org.libretro.RetroArch</entry>
<entry>RetroArch-Linux-x86_64.AppImage</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/RetroArch-Linux*.AppImage</entry>
@ -25,14 +24,18 @@
</emulator>
<core name="RETROARCH">
<rule type="corepath">
<!-- Flatpak RetroDECK -->
<entry>/app/share/libretro/cores</entry>
<!-- Snap package -->
<entry>~/snap/retroarch/current/.config/retroarch/cores</entry>
<entry>/app/share/libretro/cores</entry> <!-- RetroDECK -->
<!-- Non-portable AppImage and compiled from source -->
<entry>~/.config/retroarch/cores</entry>
<!-- Portable AppImage -->
<entry>~/Applications/RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores</entry>
<entry>~/.local/share/applications/RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores</entry>
<entry>~/.local/bin/RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores</entry>
<entry>~/bin/RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores</entry>
<!-- Flatpak package -->
<entry>~/.var/app/org.libretro.RetroArch/config/retroarch/cores</entry>
<!-- AppImage and compiled from source -->
<entry>~/.config/retroarch/cores</entry>
<!-- Snap package -->
<entry>~/snap/retroarch/current/.config/retroarch/cores</entry>
<!-- Ubuntu and Linux Mint repository -->
<entry>/usr/lib/x86_64-linux-gnu/libretro</entry>
<!-- Fedora repository -->
@ -45,6 +48,27 @@
<entry>/usr/pkg/lib/libretro</entry>
</rule>
</core>
<emulator name="3DSEN-WINDOWS">
<!-- Nintendo NES and Famicom emulator 3dSen -->
<rule type="staticpath">
<entry>~/Applications/3dSen/3dSen.exe</entry>
<entry>~/.local/share/applications/3dSen/3dSen.exe</entry>
<entry>~/.local/bin/3dSen/3dSen.exe</entry>
<entry>~/bin/3dSen/3dSen.exe</entry>
</rule>
</emulator>
<emulator name="ADVANCEMAME">
<!-- Arcade emulator AdvanceMAME -->
<rule type="systempath">
<entry>advmame</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/advancemame/advmame</entry>
<entry>~/.local/share/applications/advancemame/advmame</entry>
<entry>~/.local/bin/advancemame/advmame</entry>
<entry>~/bin/advancemame/advmame</entry>
</rule>
</emulator>
<emulator name="ARES">
<!-- Multi-system emulator ares -->
<rule type="systempath">
@ -78,6 +102,15 @@
<entry>~/.local/share/flatpak/exports/bin/net.cebix.basilisk</entry>
</rule>
</emulator>
<emulator name="BIGPEMU-WINDOWS">
<!-- Atari Jaguar emulator BigPEmu -->
<rule type="staticpath">
<entry>~/Applications/BigPEmu/BigPEmu.exe</entry>
<entry>~/.local/share/applications/BigPEmu/BigPEmu.exe</entry>
<entry>~/.local/bin/BigPEmu/BigPEmu.exe</entry>
<entry>~/bin/BigPEmu/BigPEmu.exe</entry>
</rule>
</emulator>
<emulator name="BLASTEM">
<!-- Sega Mega Drive/Genesis emulator BlastEm -->
<rule type="systempath">
@ -93,6 +126,7 @@
<!-- Super Nintendo/Super Famicom emulator bsnes -->
<rule type="systempath">
<entry>bsnes</entry>
<entry>dev.bsnes.bsnes</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/dev.bsnes.bsnes</entry>
@ -102,7 +136,7 @@
<emulator name="CEMU">
<!-- Nintendo Wii U emulator Cemu -->
<rule type="systempath">
<entry>Cemu-wrapper</entry>
<entry>Cemu-wrapper</entry> <!-- RetroDECK -->
<entry>cemu</entry>
<entry>Cemu</entry>
</rule>
@ -115,21 +149,25 @@
<entry>~/.local/share/applications/Cemu/Cemu</entry>
<entry>~/.local/bin/Cemu/Cemu</entry>
<entry>~/bin/Cemu/Cemu</entry>
<entry>/var/lib/flatpak/exports/bin/info.cemu.Cemu</entry>
<entry>~/.local/share/flatpak/exports/bin/info.cemu.Cemu</entry>
</rule>
</emulator>
<emulator name="CITRA">
<!-- Nintendo 3DS emulator Citra -->
<rule type="systempath">
<entry>citra-qt</entry>
<entry>citra</entry>
<entry>citra-qt</entry> <!-- RetroDECK -->
<entry>citra</entry>
<entry>citra-emu.citra-nightly</entry>
<entry>org.citra_emu.citra</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/citra*.AppImage</entry>
<entry>~/.local/share/applications/citra*.AppImage</entry>
<entry>~/.local/bin/citra*.AppImage</entry>
<entry>~/bin/citra*.AppImage</entry>
<entry>~/Applications/citra-qt*.AppImage</entry>
<entry>~/.local/share/applications/citra-qt*.AppImage</entry>
<entry>~/.local/bin/citra-qt*.AppImage</entry>
<entry>~/bin/citra-qt*.AppImage</entry>
<entry>~/.citra/canary/citra-qt.AppImage</entry>
<entry>~/.citra/nightly/citra-qt.AppImage</entry>
<entry>/var/lib/flatpak/exports/bin/org.citra_emu.citra</entry>
<entry>~/.local/share/flatpak/exports/bin/org.citra_emu.citra</entry>
</rule>
@ -170,6 +208,7 @@
<!-- Nintendo GameCube and Wii emulator Dolphin -->
<rule type="systempath">
<entry>dolphin-emu</entry>
<entry>dolphin-emulator.dolphin-emu</entry>
<entry>org.DolphinEmu.dolphin-emu</entry>
</rule>
<rule type="staticpath">
@ -211,6 +250,10 @@
<entry>org.duckstation.DuckStation</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/DuckStation*.AppImage</entry>
<entry>~/.local/share/applications/DuckStation*.AppImage</entry>
<entry>~/.local/bin/DuckStation*.AppImage</entry>
<entry>~/bin/DuckStation*.AppImage</entry>
<entry>~/Applications/duckstation-nogui*.AppImage</entry>
<entry>~/.local/share/applications/duckstation-nogui*.AppImage</entry>
<entry>~/.local/bin/duckstation-nogui*.AppImage</entry>
@ -235,6 +278,27 @@
<entry>~/bin/easyrpg/easyrpg-player</entry>
</rule>
</emulator>
<emulator name="EKA2L1">
<!-- Symbian and Nokia N-Gage emulator EKA2L1 -->
<rule type="systempath">
<entry>eka2l1_qt</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/EKA2L1*.AppImage</entry>
<entry>~/.local/share/applications/EKA2L1*.AppImage</entry>
<entry>~/.local/bin/EKA2L1*.AppImage</entry>
<entry>~/bin/EKA2L1*.AppImage</entry>
</rule>
</emulator>
<emulator name="EKA2L1-WINDOWS">
<!-- Symbian and Nokia N-Gage emulator EKA2L1 -->
<rule type="staticpath">
<entry>~/Applications/EKA2L1/eka2l1_qt.exe</entry>
<entry>~/.local/share/applications/EKA2L1/eka2l1_qt.exe</entry>
<entry>~/.local/bin/EKA2L1/eka2l1_qt.exe</entry>
<entry>~/bin/EKA2L1/eka2l1_qt.exe</entry>
</rule>
</emulator>
<emulator name="FINALBURN-NEO">
<!-- Arcade emulator FinalBurn Neo -->
<rule type="systempath">
@ -289,6 +353,7 @@
<!-- Interactive fiction player Gargoyle -->
<rule type="systempath">
<entry>gargoyle</entry>
<entry>io.github.garglk.Gargoyle</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/Gargoyle*.AppImage</entry>
@ -324,6 +389,7 @@
<!-- Atari ST/STE/TT/Falcon emulator Hatari -->
<rule type="systempath">
<entry>hatari</entry>
<entry>org.tuxfamily.hatari</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.tuxfamily.hatari</entry>
@ -366,6 +432,15 @@
<entry>~/bin/linapple/linapple</entry>
</rule>
</emulator>
<emulator name="M2EMULATOR-WINDOWS">
<!-- Sega Model 2 Emulator -->
<rule type="staticpath">
<entry>~/Applications/m2emulator/EMULATOR.EXE</entry>
<entry>~/.local/share/applications/m2emulator/EMULATOR.EXE</entry>
<entry>~/.local/bin/m2emulator/EMULATOR.EXE</entry>
<entry>~/bin/m2emulator/EMULATOR.EXE</entry>
</rule>
</emulator>
<emulator name="MAME">
<!-- Arcade emulator MAME -->
<rule type="systempath">
@ -399,6 +474,18 @@
<entry>~/.local/share/flatpak/exports/bin/net.kuribo64.melonDS</entry>
</rule>
</emulator>
<emulator name="MESEN">
<!-- Multi-system emulator Mesen -->
<rule type="systempath">
<entry>mesen2</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/Mesen*.AppImage</entry>
<entry>~/.local/share/applications/Mesen*.AppImage</entry>
<entry>~/.local/bin/Mesen*.AppImage</entry>
<entry>~/bin/Mesen*.AppImage</entry>
</rule>
</emulator>
<emulator name="MGBA">
<!-- Nintendo Game Boy Advance emulator mGBA -->
<rule type="systempath">
@ -430,6 +517,7 @@
<!-- Nintendo NES and Famicom emulator Nestopia UE -->
<rule type="systempath">
<entry>nestopia</entry>
<entry>ca._0ldsk00l.Nestopia</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/ca._0ldsk00l.Nestopia</entry>
@ -440,6 +528,7 @@
<!-- MSX home computer emulator openMSX -->
<rule type="systempath">
<entry>openmsx</entry>
<entry>org.openmsx.openMSX</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.openmsx.openMSX</entry>
@ -462,11 +551,15 @@
<!-- Sony PlayStation 2 emulator PCSX2 -->
<rule type="systempath">
<entry>pcsx2-qt</entry>
<entry>net.pcsx2.PCSX2</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/pcsx2*-Qt.AppImage</entry>
<entry>~/.local/bin/pcsx2*-Qt.AppImage</entry>
<entry>~/bin/pcsx2*-Qt.AppImage</entry>
<entry>~/Applications/pcsx2*.AppImage</entry>
<entry>~/.local/share/applications/pcsx2*.AppImage</entry>
<entry>~/.local/bin/pcsx2*.AppImage</entry>
<entry>~/bin/pcsx2*.AppImage</entry>
<entry>/var/lib/flatpak/exports/bin/net.pcsx2.PCSX2</entry>
<entry>~/.local/share/flatpak/exports/bin/net.pcsx2.PCSX2</entry>
</rule>
</emulator>
<emulator name="PCSX2-LEGACY">
@ -495,6 +588,9 @@
</emulator>
<emulator name="PLAY!">
<!-- Sony PlayStation 2 emulator Play! -->
<rule type="systempath">
<entry>org.purei.Play</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/Play!*.AppImage</entry>
<entry>~/.local/share/applications/Play!*.AppImage</entry>
@ -508,9 +604,9 @@
<!-- Sony PlayStation Portable emulator PPSSPP -->
<rule type="systempath">
<entry>ppsspp-emu.ppsspp-sdl</entry>
<entry>org.ppsspp.PPSSPP</entry>
<entry>PPSSPPSDL</entry>
<entry>PPSSPPQt</entry>
<entry>org.ppsspp.PPSSPP</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/org.ppsspp.PPSSPP</entry>
@ -534,6 +630,15 @@
<entry>~/.local/share/flatpak/exports/bin/io.github.shiiion.primehack</entry>
</rule>
</emulator>
<emulator name="PROTON">
<!-- Microsoft Windows compatibility layer Proton -->
<rule type="staticpath">
<entry>~/Applications/Proton/wine*.AppImage</entry>
<entry>~/.local/share/applications/Proton/wine*.AppImage</entry>
<entry>~/.local/bin/Proton/wine*.AppImage</entry>
<entry>~/bin/Proton/wine*.AppImage</entry>
</rule>
</emulator>
<emulator name="PUNES">
<!-- Nintendo NES and Famicom emulator puNES -->
<rule type="systempath">
@ -546,6 +651,18 @@
<entry>~/bin/punes/punes</entry>
</rule>
</emulator>
<emulator name="QUASI88">
<!-- NEC PC-8800 series emulator QUASI88 -->
<rule type="systempath">
<entry>quasi88</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/quasi88/quasi88</entry>
<entry>~/.local/share/applications/quasi88/quasi88</entry>
<entry>~/.local/bin/quasi88/quasi88</entry>
<entry>~/bin/quasi88/quasi88</entry>
</rule>
</emulator>
<emulator name="REDREAM">
<!-- Sega Dreamcast emulator Redream -->
<rule type="systempath">
@ -685,13 +802,30 @@
<entry>~/.local/share/flatpak/exports/bin/io.github.simple64.simple64</entry>
</rule>
</emulator>
<emulator name="SKYEMU">
<!-- Nintendo Game Boy, Game Boy Color, Game Boy Advance and DS emulator SkyEmu -->
<rule type="systempath">
<entry>SkyEmu</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/SkyEmu/SkyEmu</entry>
<entry>~/.local/share/applications/SkyEmu/SkyEmu</entry>
<entry>~/.local/bin/SkyEmu/SkyEmu</entry>
<entry>~/bin/SkyEmu/SkyEmu</entry>
</rule>
</emulator>
<emulator name="SNES9X">
<!-- Super Nintendo emulator Snes9x -->
<rule type="systempath">
<entry>snes9x</entry>
<entry>snes9x-gtk</entry>
<entry>com.snes9x.Snes9x</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/Snes9x*.AppImage</entry>
<entry>~/.local/share/applications/Snes9x*.AppImage</entry>
<entry>~/.local/bin/Snes9x*.AppImage</entry>
<entry>~/bin/Snes9x*.AppImage</entry>
<entry>/var/lib/flatpak/exports/bin/com.snes9x.Snes9x</entry>
<entry>~/.local/share/flatpak/exports/bin/com.snes9x.Snes9x</entry>
</rule>
@ -775,8 +909,19 @@
<entry>~/.local/share/flatpak/exports/bin/net.sf.VICE</entry>
</rule>
</emulator>
<emulator name="VICE-XPLUS4">
<!-- Commodore 8-bit computer emulator VICE (xplus4) -->
<rule type="systempath">
<entry>xplus4</entry>
<entry>vice-jz.xplus4</entry>
</rule>
<rule type="staticpath">
<entry>/var/lib/flatpak/exports/bin/net.sf.VICE|flatpak run --command=xplus4 net.sf.VICE</entry>
<entry>~/.local/share/flatpak/exports/bin/net.sf.VICE|flatpak run --command=xplus4 net.sf.VICE</entry>
</rule>
</emulator>
<emulator name="VICE-XVIC">
<!-- Commodore 8-bit computer emulator VICE (xvic VIC-20) -->
<!-- Commodore 8-bit computer emulator VICE (xvic) -->
<rule type="systempath">
<entry>xvic</entry>
<entry>vice-jz.xvic</entry>
@ -786,6 +931,18 @@
<entry>~/.local/share/flatpak/exports/bin/net.sf.VICE|flatpak run --command=xvic net.sf.VICE</entry>
</rule>
</emulator>
<emulator name="VISUAL-PINBALL">
<!-- Pinball simulator Visual Pinball -->
<rule type="systempath">
<entry>VPinballX_GL</entry>
</rule>
<rule type="staticpath">
<entry>~/Applications/VPinballX/VPinballX_GL</entry>
<entry>~/.local/share/applications/VPinballX/VPinballX_GL</entry>
<entry>~/.local/bin/VPinballX/VPinballX_GL</entry>
<entry>~/bin/VPinballX/VPinballX_GL</entry>
</rule>
</emulator>
<emulator name="VITA3K">
<!-- Sony PlayStation Vita emulator Vita3K -->
<rule type="systempath">
@ -814,6 +971,28 @@
<entry>~/.local/share/flatpak/exports/bin/app.xemu.xemu</entry>
</rule>
</emulator>
<emulator name="WINE">
<!-- Microsoft Windows compatibility layer Wine -->
<rule type="staticpath">
<entry>~/Applications/Wine/wine*.AppImage</entry>
<entry>~/.local/share/applications/Wine/wine*.AppImage</entry>
<entry>~/.local/bin/Wine/wine*.AppImage</entry>
<entry>~/bin/Wine/wine*.AppImage</entry>
</rule>
</emulator>
<emulator name="XENIA-WINDOWS">
<!-- Microsoft Xbox 360 emulator xenia -->
<rule type="staticpath">
<entry>~/Applications/xenia/xenia.exe</entry>
<entry>~/.local/share/applications/xenia/xenia.exe</entry>
<entry>~/.local/bin/xenia/xenia.exe</entry>
<entry>~/bin/xenia/xenia.exe</entry>
<entry>~/Applications/xenia/xenia_canary.exe</entry>
<entry>~/.local/share/applications/xenia/xenia_canary.exe</entry>
<entry>~/.local/bin/xenia/xenia_canary.exe</entry>
<entry>~/bin/xenia/xenia_canary.exe</entry>
</rule>
</emulator>
<emulator name="XROAR">
<!-- Dragon and Tandy 8-bit computer emulator XRoar -->
<rule type="systempath">

View file

@ -3,6 +3,7 @@
<bool name="ApplicationUpdaterPrereleases" value="false" />
<bool name="CollectionShowSystemInfo" value="true" />
<bool name="CustomEventScripts" value="false" />
<bool name="DebugMode" value="false" />
<bool name="DebugSkipInputLogging" value="false" />
<bool name="DebugSkipMissingThemeFiles" value="false" />
<bool name="DebugSkipMissingThemeFilesCustomCollections" value="true" />
@ -69,6 +70,7 @@
<bool name="ScraperOverwriteData" value="false" />
<bool name="ScraperRegionFallback" value="true" />
<bool name="ScraperRespectExclusions" value="true" />
<bool name="ScraperSearchFileHash" value="true" />
<bool name="ScraperSearchMetadataName" value="true" />
<bool name="ScraperSemiautomatic" value="true" />
<bool name="ScraperUseAccountScreenScraper" value="true" />
@ -101,6 +103,7 @@
<int name="ScraperConnectionTimeout" value="30" />
<int name="ScraperRetryOnErrorCount" value="3" />
<int name="ScraperRetryOnErrorTimer" value="3" />
<int name="ScraperSearchFileHashMaxSize" value="384" />
<int name="ScraperTransferTimeout" value="120" />
<int name="ScreenRotate" value="0" />
<int name="ScreensaverSwapImageTimeout" value="10000" />
@ -108,12 +111,13 @@
<int name="ScreensaverTimer" value="300000" />
<int name="SoundVolumeNavigation" value="70" />
<int name="SoundVolumeVideos" value="80" />
<string name="ApplicationUpdaterDownloadDirectory" value="" />
<string name="ApplicationUpdaterFrequency" value="never" />
<string name="ApplicationUpdaterLastCheck" value="20230331T153206" />
<string name="CollectionCustomGrouping" value="unthemed" />
<string name="CollectionSystemsAuto" value="recent" />
<string name="CollectionSystemsCustom" value="" />
<string name="DefaultSortOrder" value="filename, ascending" />
<string name="DefaultSortOrder" value="name, ascending" />
<string name="GamelistViewStyle" value="automatic" />
<string name="InputControllerType" value="xbox" />
<string name="KeyboardQuitShortcut" value="AltF4" />
@ -144,11 +148,13 @@
<string name="ScreensaverSlideshowImageDir" value="~/.emulationstation/slideshow/custom_images" />
<string name="ScreensaverType" value="video" />
<string name="StartupSystem" value="" />
<string name="SystemsSorting" value="default" />
<string name="Theme" value="art-book-next-es-de" />
<string name="ThemeAspectRatio" value="automatic" />
<string name="ThemeColorScheme" value="art-book-next" />
<string name="ThemeSet" value="art-book-next-es-de" />
<string name="ThemeTransitions" value="automatic" />
<string name="ThemeVariant" value="" />
<string name="ThemeVariant" value="system-multi-gamelist-list-immersive" />
<string name="UIMode" value="full" />
<string name="UIMode_passkey" value="uuddlrlrba" />
<string name="UserThemeDirectory" value="" />

View file

@ -5,18 +5,32 @@
<name>3do</name>
<fullname>3DO Interactive Multiplayer</fullname>
<path>%ROMPATH%/3do</path>
<extension>.bin .BIN .chd .CHD .cue .CUE .iso .ISO</extension>
<extension>.bin .BIN .chd .CHD .cue .CUE .iso .ISO .7z .7Z .zip .ZIP</extension>
<command label="Opera">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/opera_libretro.so %ROM%</command>
<platform>3do</platform>
<theme>3do</theme>
</system>
<system>
<name>adam</name>
<fullname>Coleco Adam</fullname>
<path>%ROMPATH%/adam</path>
<extension>.1dd .1DD .bin .BIN .col .COL .cqi .CQI .cqm .CQM .d77 .D77 .d88 .D88 .ddp .DDP .dfi .DFI .dsk .DSK .hfe .HFE .imd .IMD .mfi .MFI .mfm .MFM .rom .ROM .td0 .TD0 .wav .WAV .7z .7Z .zip .ZIP</extension>
<command label="MAME [Diskette] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/adam adam -flop1 %ROM%</command>
<command label="MAME [Tape] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/adam adam -cass1 %ROM%</command>
<command label="MAME [Cartridge] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/adam adam -cart1 %ROM%</command>
<command label="MAME [Software list] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/adam adam %BASENAME%</command>
<platform>adam</platform>
<theme>adam</theme>
</system>
<!--
<system>
<name>ags</name>
<fullname>Adventure Game Studio Game Engine</fullname>
<path>%ROMPATH%/ags</path>
<extension>.desktop</extension>
<command label="Native binary">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<extension>.desktop .sh</extension>
<command label="Native binary">%STARTDIR%=%GAMEDIR% %ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>ags</platform>
<theme>ags</theme>
</system>
@ -69,6 +83,7 @@
<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="CPCemu (Standalone)">%STARTDIR%=~/.CPCemu %EMULATOR_CPCEMU% %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/amstradcpc cpc6128 -flop1 %ROM%</command>
<platform>amstradcpc</platform>
<theme>amstradcpc</theme>
</system>
@ -81,28 +96,30 @@
<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>
<path>%ROMPATH%/apple2gs</path>
<extension>.2mg .2MG</extension>
<extension>.2mg .2MG .7z .7z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "apple2gs -rompath %GAMEDIR%\;%ROMPATH%/apple2gs -flop3 \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/apple2gs apple2gs -flop3 %ROM%</command>
<platform>apple2gs</platform>
<theme>apple2gs</theme>
</system>
<system>
<name>arcade</name>
<fullname>Arcade</fullname>
@ -125,17 +142,31 @@
<platform>arcade</platform>
<theme>arcade</theme>
</system>
<!--
<system>
<name>arcadia</name>
<fullname>Emerson Arcadia 2001</fullname>
<path>%ROMPATH%/arcadia</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "arcadia -rompath %GAMEDIR%\;%ROMPATH%/arcadia -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/arcadia arcadia -cart %ROM%</command>
<platform>arcadia</platform>
<theme>arcadia</theme>
</system>
-->
<system>
<name>archimedes</name>
<fullname>Acorn Archimedes</fullname>
<path>%ROMPATH%/archimedes</path>
<extension>.1dd .1DD .360 .adf .ADF .adl .ADL .adm .ADM .ads .ADS .apd .APD .bbc .BBC .chd .CHD .cqi .CQI .cqm .CQM .d77 .D77 .d88 .D88 .dfi .DFI .dsd .DSD .dsk .DSK .hfe .HFE .ima .IMA .imd .IMD .img .IMG .ipf .IPF .jfd .JFD .mfi .MFI .mfm .MFM .msa .MSA .ssd .SSD .st .ST .td0 .TD0 .ufi .UFI .7z .7Z .zip .ZIP</extension>
<command label="MAME [Model A440/1] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/archimedes aa4401 -flop1 %ROM%</command>
<command label="MAME [Model A3000] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/archimedes aa3000 -flop1 %ROM%</command>
<command label="MAME [Model A310] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/archimedes aa310 -flop1 %ROM%</command>
<command label="MAME [Model A540] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/archimedes aa540 -flop1 %ROM%</command>
<platform>archimedes</platform>
<theme>archimedes</theme>
</system>
<system>
<name>arduboy</name>
<fullname>Arduboy Miniature Game System</fullname>
@ -175,7 +206,7 @@
<extension>.a52 .A52 .atr .ATR .atx .ATX .bin .BIN .car .CAR .cas .CAS .cdm .CDM .rom .ROM .xex .XEX .xfd .XFD .7z .7Z .zip .ZIP</extension>
<command label="a5200">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/a5200_libretro.so %ROM%</command>
<command label="Atari800">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/atari800_libretro.so %ROM%</command>
<!-- <command label="Atari800 (Standalone)">%EMULATOR_ATARI800% %ROM%</command> -->
<!--<command label="Atari800 (Standalone)">%EMULATOR_ATARI800% %ROM%</command> -->
<platform>atari5200</platform>
<theme>atari5200</theme>
</system>
@ -185,6 +216,7 @@
<path>%ROMPATH%/atari7800</path>
<extension>.a78 .A78 .bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="ProSystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prosystem_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atari7800 a7800 -cart %ROM%</command>
<platform>atari7800</platform>
<theme>atari7800</theme>
</system>
@ -204,19 +236,24 @@
<path>%ROMPATH%/atarijaguar</path>
<extension>.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="Virtual Jaguar">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/virtualjaguar_libretro.so %ROM%</command>
<!-- <command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atarijaguar jaguar -cart %ROM%</command> -->
<platform>atarijaguar, atarijaguarcd</platform>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/atarijaguar jaguar -cart %ROM%</command>
<!--<command label="BigPEmu (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_BIGPEMU-WINDOWS% %ROM%</command>-->
<!--<command label="BigPEmu (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_BIGPEMU-WINDOWS% %ROM%</command>-->
<platform>atarijaguar</platform>
<theme>atarijaguar</theme>
</system>
<!--
<system>
<name>atarijaguarcd</name>
<fullname>Atari Jaguar CD</fullname>
<path>%ROMPATH%/atarijaguarcd</path>
<extension>.j64 .J64 .jag .JAG .rom .ROM .abs .ABS .cof .COF .bin .BIN .prg .PRG .7z .7Z .zip .ZIP</extension>
<command>%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/virtualjaguar_libretro.so %ROM%</command>
<extension>.abs .ABS .bin .BIN .cdi .CDI .cof .COF .cue .CUE .j64 .J64 .jag .JAG .prg .PRG .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="BigPEmu (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_BIGPEMU-WINDOWS% %ROM%</command>
<command label="BigPEmu (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_BIGPEMU-WINDOWS% %ROM%</command>
<platform>atarijaguarcd</platform>
<theme>atarijaguarcd</theme>
</system>
-->
<system>
<name>atarilynx</name>
<fullname>Atari Lynx</fullname>
@ -224,7 +261,7 @@
<extension>.lnx .LNX .o .O .7z .7Z .zip .ZIP</extension>
<command label="Handy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/handy_libretro.so %ROM%</command>
<command label="Beetle Lynx">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mednafen_lynx_libretro.so %ROM%</command>
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module lynx %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module lynx %ROM%</command> -->
<platform>atarilynx</platform>
<theme>atarilynx</theme>
</system>
@ -258,7 +295,7 @@
<platform>arcade</platform>
<theme>atomiswave</theme>
</system>
<!--
<system>
<name>bbcmicro</name>
<fullname>Acorn Computers BBC Micro</fullname>
@ -268,7 +305,7 @@
<platform>bbcmicro</platform>
<theme>bbcmicro</theme>
</system>
-->
<system>
<name>c64</name>
<fullname>Commodore 64</fullname>
@ -299,6 +336,7 @@
<extension>.chd .CHD .cue .CUE .iso .ISO</extension>
<command label="SAME CDi">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/same_cdi_libretro.so %ROM%</command>
<command label="CDi 2015">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/cdi2015_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/cdimono1 cdimono1 -cdrom %ROM%</command>
<platform>cdimono1</platform>
<theme>cdimono1</theme>
</system>
@ -330,7 +368,7 @@
<platform>channelf</platform>
<theme>channelf</theme>
</system>
<!--
<system>
<name>coco</name>
<fullname>Tandy Color Computer</fullname>
@ -341,7 +379,7 @@
<platform>coco</platform>
<theme>coco</theme>
</system>
-->
<system>
<name>colecovision</name>
<fullname>Coleco ColecoVision</fullname>
@ -354,6 +392,25 @@
<platform>colecovision</platform>
<theme>colecovision</theme>
</system>
<system>
<name>consolearcade</name>
<fullname>Console Arcade Systems</fullname>
<path>%ROMPATH%/consolearcade</path>
<extension>.arcadedef .desktop .iso .ISO .sh .xbe .XBE .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%/consolearcade %BASENAME%</command>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>-->
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<!--<command label="Mednafen [Sega Saturn] (Standalone)">%EMULATOR_MEDNAFEN% -force_module ss %ROM%</command>-->
<!--<command label="Play! (Standalone)">%EMULATOR_PLAY!% &ndash;&ndash;disc %ROM%</command>-->
<command label="RPCS3 Shortcut (Standalone)">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<!--<command label="Triforce (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_TRIFORCE% -b -e %ROM%</command>-->
<command label="xemu (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_XEMU% -dvd_path %ROM%</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>arcade</platform>
<theme>consolearcade</theme>
</system>
<system>
<name>cps</name>
<fullname>Capcom Play System</fullname>
@ -363,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>
@ -382,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>
@ -399,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>
@ -416,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>
@ -424,34 +481,38 @@
<platform>arcade</platform>
<theme>cps3</theme>
</system>
<!--
<system>
<name>crvision</name>
<fullname>VTech CreatiVision</fullname>
<path>%ROMPATH%/crvision</path>
<extension>.bin .BIN .rom .ROM .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "crvision -rompath %GAMEDIR%\;%ROMPATH%/crvision -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/crvision crvision -cart %ROM%</command>
<platform>crvision</platform>
<theme>crvision</theme>
</system>
-->
<!--
<system>
<name>daphne</name>
<fullname>Daphne Arcade LaserDisc Emulator</fullname>
<path>%ROMPATH%/daphne</path>
<extension>.daphne .singe</extension>
<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>
<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>
<platform>daphne</platform>
<extension>.daphne .singe .7z .7Z .zip .ZIP</extension>
<!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>-->
<!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>-->
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/daphne %BASENAME%</command>
<platform>daphne, arcade</platform>
<theme>daphne</theme>
</system>
-->
<system>
<name>doom</name>
<fullname>Doom</fullname>
<path>%ROMPATH%/doom</path>
<extension>.desktop .iwad .IWAD .pk4 .PK4 .pwad .PWAD .sh .wad .WAD</extension>
<extension>.doom .DOOM .desktop .iwad .IWAD .pk4 .PK4 .pk3 .PK3 .pwad .PWAD .sh .wad .WAD .ipk3 .IPK3</extension>
<command label="GZDoom (Standalone)">gzdoom.sh %ROM%</command>
<command label="PrBoom">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/prboom_libretro.so %ROM%</command>
<!-- <command label="PrBoom+ (Standalone)">%EMULATOR_PRBOOM-PLUS% -iwad %ROM%</command> -->
<command label="Boom 3">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/boom3_libretro.so %ROM%</command>
@ -506,6 +567,20 @@
<platform>easyrpg</platform>
<theme>easyrpg</theme>
</system>
<system>
<name>electron</name>
<fullname>Acorn Electron</fullname>
<path>%ROMPATH%/electron</path>
<extension>.1dd .1DD .adf .ADF .adl .ADL .adm .ADM .ads .ADS .bbc .BBC .bin .BIN .cqi .CQI .cqm .CQM .csw .CSW .d77 .D77 .d88 .D88 .dfi .DFI .dsd .DSD .dsk .DSK .hfe .HFE .imd .IMD .img .IMG .mfi .MFI .mfm .MFM .rom .ROM .ssd .SSD .td0 .TD0 .uef .UEF .wav .WAV .7z .7Z .zip .ZIP</extension>
<command label="MAME [Tape] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/electron electron64 -autoboot_delay "2" -autoboot_command "*T.\nCH.\"\"\n" -cass1 %ROM%</command>
<command label="MAME [Diskette DFS] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/electron electron64 -exp plus1 -cart1 seds -autoboot_delay "2" -autoboot_command "*CAT\n\n\n\n\n\n*EXEC !BOOT\n" -flop1 %ROM%</command>
<command label="MAME [Diskette ADFS] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/electron electron64 -exp plus3 -exp:plus3:fdc:1 35dd -autoboot_delay "2" -autoboot_command "*CAT\n\n\n\n\n\n*RUN !BOOT\n" -flop1 %ROM%</command>
<platform>electron</platform>
<theme>electron</theme>
</system>
<!--
<system>
<name>emulators</name>
<fullname>Emulators</fullname>
@ -518,12 +593,14 @@
<platform>pcwindows</platform>
<theme>emulators</theme>
</system>
-->
<system>
<name>famicom</name>
<fullname>Nintendo Family Computer</fullname>
<path>%ROMPATH%/famicom</path>
<extension>.fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP</extension>
<extension>.3dsen .3DSEN .fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP</extension>
<command label="Mesen">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="Nestopia UE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM%</command>
<!-- <command label="Nestopia UE (Standalone)">%EMULATOR_NESTOPIA-UE% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="FCEUmm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fceumm_libretro.so %ROM%</command>
@ -564,6 +641,7 @@
<path>%ROMPATH%/fds</path>
<extension>.nes .NES .fds .FDS .unf .UNF .UNIF .UNIF .7z .7Z .zip .ZIP</extension>
<command label="Mesen">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="Nestopia UE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM%</command>
<!-- <command label="Nestopia UE (Standalone)">%EMULATOR_NESTOPIA-UE% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="FCEUmm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fceumm_libretro.so %ROM%</command>
@ -584,17 +662,34 @@
<theme>flash</theme>
</system>
-->
<!--
<system>
<name>fm7</name>
<fullname>Fujitsu FM-7</fullname>
<path>%ROMPATH%/fm7</path>
<extension>.1dd .1DD .cqi .CQI .cqm .CQM .d77 .D77 .d88 .D88 .dfi .DFI .dsk .DSK .hfe .HFE .imd .IMD .mfi .MFI .mfm .MFM .t77 .T77 .td0 .TD0 .wav .WAV .7z .7Z .zip .ZIP</extension>
<command label="MAME [FM-7 Diskette] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm7 -flop1 %ROM%</command>
<command label="MAME [FM-7 Tape] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm7 -autoboot_delay "5" -autoboot_command "load\n\n\nrun\n" -cass1 %ROM%</command>
<command label="MAME [FM-7 Software list] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm7 %BASENAME%</command>
<command label="MAME [FM77AV Diskette] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm77av -flop1 %ROM%</command>
<command label="MAME [FM77AV Tape] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm77av -autoboot_delay "5" -autoboot_command "load\n\n\nrun\n" -cass1 %ROM%</command>
<command label="MAME [FM77AV Software list] (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fm7 fm77av %BASENAME%</command>
<platform>fm7</platform>
<theme>fm7</theme>
</system>
<system>
<name>fmtowns</name>
<fullname>Fujitsu FM Towns</fullname>
<path>%ROMPATH%/fmtowns</path>
<extension>.cue .CUE .iso .ISO</extension>
<command label="Tsugaru (Standalone)">%EMULATOR_TSUGARU% %EMUDIR%/roms -HOSTSHORTCUT ESC 0 0 FORCEQUIT -FULLSCREEN -CD %ROM% %INJECT%=%BASENAME%.cfg</command>
<extension>.cue .CUE .iso .ISO .7z .7Z .zip .ZIP</extension>
<!--<command label="Tsugaru (Standalone)">%EMULATOR_TSUGARU% %EMUDIR%/roms -HOSTSHORTCUT ESC 0 0 FORCEQUIT -FULLSCREEN -CD %ROM% %INJECT%=%BASENAME%.cfg</command>-->
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/fmtowns fmtowns %BASENAME%</command>
<platform>fmtowns</platform>
<theme>fmtowns</theme>
</system>
-->
<!--
<system>
<name>fpinball</name>
@ -606,28 +701,41 @@
<theme>fpinball</theme>
</system>
-->
<system>
<name>gamate</name>
<fullname>Bit Corporation Gamate</fullname>
<path>%ROMPATH%/gamate</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamate -rompath %GAMEDIR%\;%ROMPATH%/gamate -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamate gamate -cart %ROM%</command>
<platform>gamate</platform>
<theme>gamate</theme>
</system>
<system>
<name>gameandwatch</name>
<fullname>Nintendo Game and Watch</fullname>
<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>
<path>%ROMPATH%/gamecom</path>
<extension>.tgc .TGC .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gamecom -rompath %GAMEDIR%\;%ROMPATH%/gamecom -cartridge1 \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gamecom gamecom -cartridge1 %ROM%</command>
<platform>gamecom</platform>
<theme>gamecom</theme>
</system>
-->
<system>
<name>gamegear</name>
<fullname>Sega Game Gear</fullname>
@ -637,8 +745,9 @@
<command label="Genesis Plus GX Wide">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/genesis_plus_gx_wide_libretro.so %ROM%</command>
<command label="Gearsystem">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gearsystem_libretro.so %ROM%</command>
<command label="SMS Plus GX">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/smsplus_libretro.so %ROM%</command>
<!-- <command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> -->
<!-- <command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gg %ROM%</command> -->
<!--<command label="PicoDrive">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/picodrive_libretro.so %ROM%</command> -->
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module gg %ROM%</command> -->
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Gear" %ROM%</command>-->
<platform>gamegear</platform>
<theme>gamegear</theme>
</system>
@ -654,6 +763,7 @@
<!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> -->
<command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
<command label="mGBA">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM%</command>
<!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> -->
@ -673,6 +783,8 @@
<!-- <command label="VBA-M (Standalone)">%EMULATOR_VBA-M% -f %ROM%</command> -->
<command label="VBA Next">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vba_next_libretro.so %ROM%</command>
<command label="gpSP">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/gpsp_libretro.so %ROM%</command>
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Game Boy Advance" %ROM%</command>-->
<!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>-->
<platform>gba</platform>
<theme>gba</theme>
</system>
@ -688,6 +800,7 @@
<!-- <command label="Gearboy (Standalone)">%EMULATOR_GEARBOY% %ROM%</command> -->
<command label="TGB Dual">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/tgbdual_libretro.so %ROM%</command>
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="bsnes">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_libretro.so %ROM%</command>
<command label="mGBA">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mgba_libretro.so %ROM%</command>
<!-- <command label="mGBA (Standalone)">%EMULATOR_MGBA% -f %ROM%</command> -->
@ -723,17 +836,18 @@
<platform>genesis</platform>
<theme>genesis</theme>
</system>
<!--
<system>
<name>gmaster</name>
<fullname>Hartung Game Master</fullname>
<path>%ROMPATH%/gmaster</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "gmaster -rompath %GAMEDIR%\;%ROMPATH%/gmaster -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/gmaster gmaster -cart %ROM%</command>
<platform>gmaster</platform>
<theme>gmaster</theme>
</system>
-->
<system>
<name>gx4000</name>
<fullname>Amstrad GX4000</fullname>
@ -741,7 +855,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>
@ -774,13 +888,25 @@
<theme>kodi</theme>
</system>
-->
<system>
<name>laserdisc</name>
<fullname>LaserDisc Games</fullname>
<path>%ROMPATH%/laserdisc</path>
<extension>.daphne .singe .7z .7Z .zip .ZIP</extension>
<!--<command label="Hypseus [Daphne] (Standalone)">%EMULATOR_HYPSEUS-SINGE% %BASENAME% vldp -framefile %GAMEDIR%/%BASENAME%.txt %INJECT%=%BASENAME%.commands</command>-->
<!--<command label="Hypseus [Singe] (Standalone)">%EMULATOR_HYPSEUS-SINGE% singe vldp -framefile %GAMEDIR%/%BASENAME%.txt -script %GAMEDIR%/%BASENAME%.singe %INJECT%=%BASENAME%.commands</command>-->
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/laserdisc %BASENAME%</command>
<platform>daphne, arcade</platform>
<theme>laserdisc</theme>
</system>
<system>
<name>lcdgames</name>
<fullname>LCD Handheld Games</fullname>
<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>
@ -814,7 +940,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>
@ -827,24 +953,17 @@
<platform>arcade</platform>
<theme>mame</theme>
</system>
<system>
<name>mame-advmame</name>
<fullname>AdvanceMAME</fullname>
<path>%ROMPATH%/mame-advmame</path>
<extension>.chd .cue .CUE .CHD .cmd .CMD .fba .FBA .iso .ISO .7z .7Z .zip .ZIP</extension>
<command>PLACEHOLDER %ROM%</command>
<extension>.7z .7Z .zip .ZIP</extension>
<command label="AdvanceMAME (Standalone)">%STARTDIR%=~/.advance %EMULATOR_ADVANCEMAME% %BASENAME%</command>
<platform>arcade</platform>
<theme>mame-advmame</theme>
</system>
<system>
<name>mame-mame4all</name>
<fullname>MAME4ALL</fullname>
<path>%ROMPATH%/mame-mame4all</path>
<extension>.chd .cue .CUE .CHD .cmd .CMD .fba .FBA .iso .ISO .7z .7Z .zip .ZIP</extension>
<command>PLACEHOLDER %ROM%</command>
<platform>arcade</platform>
<theme>mame-mame4all</theme>
</system>
<system>
<name>mastersystem</name>
<fullname>Sega Master System</fullname>
@ -917,13 +1036,16 @@
<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>-->
<platform>arcade</platform>
<theme>model2</theme>
</system>
@ -1073,11 +1195,21 @@
<platform>arcade</platform>
<theme>naomi</theme>
</system>
<system>
<name>naomi2</name>
<fullname>Sega NAOMI 2</fullname>
<path>%ROMPATH%/naomi2</path>
<extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!--<command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command>-->
<platform>arcade</platform>
<theme>naomi2</theme>
</system>
<system>
<name>naomigd</name>
<fullname>Sega NAOMI GD-ROM</fullname>
<path>%ROMPATH%/naomigd</path>
<extension>.cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP</extension>
<extension>.bin .BIN .dat .DAT .elf .ELF .lst .LST .7z .7Z .zip .ZIP</extension>
<command label="Flycast">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/flycast_libretro.so %ROM%</command>
<!-- <command label="Flycast (Standalone)">%EMULATOR_FLYCAST% %ROM%</command> -->
<platform>arcade</platform>
@ -1093,6 +1225,7 @@
<!-- <command label="DeSmuME (Standalone)">%EMULATOR_DESMUME% %ROM%</command> -->
<command label="melonDS">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/melonds_libretro.so %ROM%</command>
<command label="melonDS (Standalone)">%EMULATOR_MELONDS% %ROM%</command>
<!--<command label="SkyEmu (Standalone)">%EMULATOR_SKYEMU% %ROM%</command>-->
<platform>nds</platform>
<theme>nds</theme>
</system>
@ -1103,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>
@ -1115,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>
@ -1127,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>
@ -1137,8 +1270,9 @@
<path>%ROMPATH%/nes</path>
<extension>.fds .FDS .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP</extension>
<command label="Mesen">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<command label="Nestopia UE">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/nestopia_libretro.so %ROM%</command>
<!-- <command label="Nestopia UE (Standalone)">%EMULATOR_NESTOPIA-UE% &ndash;&ndashfullscreen %ROM%</command> -->
<!-- <command label="Nestopia UE (Standalone)">%EMULATOR_NESTOPIA-UE% &ndash;&ndash;fullscreen %ROM%</command> -->
<command label="FCEUmm">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/fceumm_libretro.so %ROM%</command>
<command label="QuickNES">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/quicknes_libretro.so %ROM%</command>
<!-- <command label="puNES (Standalone)">%EMULATOR_PUNES% -u yes %ROM%</command> -->
@ -1148,6 +1282,20 @@
<platform>nes</platform>
<theme>nes</theme>
</system>
<!--
<system>
<name>ngage</name>
<fullname>Nokia N-Gage</fullname>
<path>%ROMPATH%/ngage</path>
<extension>.ngage .zip .ZIP</extension>
<command label="EKA2L1 [Mounted] (Standalone)">%EMULATOR_EKA2L1% &ndash;&ndash;fullscreen &ndash;&ndash;device RH-29 &ndash;&ndash;mount %ROM% &ndash;&ndash;run "%BASENAME%"</command>
<command label="EKA2L1 [Installed] (Standalone)">%EMULATOR_EKA2L1% &ndash;&ndash;fullscreen &ndash;&ndash;device RH-29 &ndash;&ndash;run "%BASENAME%"</command>
<command label="EKA2L1 [Mounted] (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_EKA2L1-WINDOWS% &ndash;&ndash;fullscreen &ndash;&ndash;device RH-29 &ndash;&ndash;mount %ROM% &ndash;&ndash;run "%BASENAME%"</command>
<command label="EKA2L1 [Installed] (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_EKA2L1-WINDOWS% &ndash;&ndash;fullscreen &ndash;&ndash;device RH-29 &ndash;&ndash;run "%BASENAME%"</command>
<platform>ngage</platform>
<theme>ngage</theme>
</system>
-->
<system>
<name>ngp</name>
<fullname>SNK Neo Geo Pocket</fullname>
@ -1216,8 +1364,9 @@
<name>pc88</name>
<fullname>NEC PC-8800 Series</fullname>
<path>%ROMPATH%/pc88</path>
<extension>.d88 .D88 .u88 .U88 .m3u .M3U .7z .7Z .zip .ZIP</extension>
<extension>.88d .88D .cmt .CMT .d88 .D88 .m3u .M3U .t88 .T88 .u88 .U88</extension>
<command label="QUASI88">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/quasi88_libretro.so %ROM%</command>
<!--<command label="QUASI88 (Standalone)">%EMULATOR_QUASI88% -romdir ~/.quasi88 %ROM%</command>-->
<platform>pc88</platform>
<theme>pc88</theme>
</system>
@ -1275,6 +1424,16 @@
<platform>pico8</platform>
<theme>pico8</theme>
</system>
<system>
<name>plus4</name>
<fullname>Commodore Plus/4</fullname>
<path>%ROMPATH%/plus4</path>
<extension>.bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP</extension>
<command label="VICE xplus4">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/vice_xplus4_libretro.so %ROM%</command>
<!--<command label="VICE xplus4 (Standalone)">%EMULATOR_VICE-XPLUS4% %ROM%</command>-->
<platform>plus4</platform>
<theme>plus4</theme>
</system>
<system>
<name>pokemini</name>
<fullname>Nintendo Pokémon Mini</fullname>
@ -1298,11 +1457,12 @@
<name>ps2</name>
<fullname>Sony PlayStation 2</fullname>
<path>%ROMPATH%/ps2</path>
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
<extension>.bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG</extension>
<extension>.arcadedef .bin .BIN .chd .CHD .ciso .CISO .cso .CSO .dump .DUMP .elf .ELF .gz .GZ .m3u .M3U .mdf .MDF .img .IMG .iso .ISO .isz .ISZ .ngr .NRG</extension>
<command label="PCSX2 (Standalone)">%EMULATOR_PCSX2% -batch %ROM%</command>
<command label="LRPS2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
<command label="PCSX2">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/pcsx2_libretro.so %ROM%</command>
<!-- <command label="Play! (Standalone)">%EMULATOR_PLAY!% &ndash;&ndashdisc %ROM%</command> -->
<!--<command label="PCSX2 Legacy (Standalone)">%EMULATOR_PCSX2-LEGACY% &ndash;&ndash;nogui %ROM%</command>-->
<!--<command label="Play! (Standalone)">%EMULATOR_PLAY!% &ndash;&ndash;disc %ROM%</command>-->
<platform>ps2</platform>
<theme>ps2</theme>
</system>
@ -1337,7 +1497,7 @@
<platform>psp</platform>
<theme>psp</theme>
</system>
<!--
<system>
<name>psvita</name>
<fullname>Sony PlayStation Vita</fullname>
@ -1347,7 +1507,7 @@
<platform>psvita</platform>
<theme>psvita</theme>
</system>
-->
<system>
<name>psx</name>
<fullname>Sony PlayStation</fullname>
@ -1362,7 +1522,7 @@
<platform>psx</platform>
<theme>psx</theme>
</system>
<!--
<system>
<name>pv1000</name>
<fullname>Casio PV-1000</fullname>
@ -1372,7 +1532,7 @@
<platform>pv1000</platform>
<theme>pv1000</theme>
</system>
-->
<system>
<name>quake</name>
<fullname>Quake</fullname>
@ -1412,6 +1572,8 @@
<command label="bsnes-mercury Accuracy">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/bsnes_mercury_accuracy_libretro.so %ROM%</command>
<!--<command label="bsnes (Standalone)">%EMULATOR_BSNES% &ndash;&ndashfullscreen %ROM%</command> -->
<command label="Mesen-S">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mesen-s_libretro.so %ROM%</command>
<!--<command label="Mesen (Standalone)">%EMULATOR_MESEN% &ndash;&ndash;fullscreen %ROM%</command>-->
<!--<command label="ares (Standalone)">%EMULATOR_ARES% &ndash;&ndash;fullscreen &ndash;&ndash;system "Super Famicom" %ROM%</command>-->
<platform>satellaview</platform>
<theme>satellaview</theme>
</system>
@ -1451,17 +1613,18 @@
<platform>scummvm</platform>
<theme>scummvm</theme>
</system>
<!--
<system>
<name>scv</name>
<fullname>Epoch Super Cassette Vision</fullname>
<path>%ROMPATH%/scv</path>
<extension>.0 .bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "scv -rompath %GAMEDIR%\;%ROMPATH%/scv -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/scv scv -cart %ROM%</command>
<platform>scv</platform>
<theme>scv</theme>
</system>
-->
<system>
<name>sega32x</name>
<fullname>Sega Mega Drive 32X</fullname>
@ -1585,7 +1748,7 @@
<platform>snes</platform>
<theme>snesna</theme>
</system>
<!--
<system>
<name>solarus</name>
<fullname>Solarus Game Engine</fullname>
@ -1595,7 +1758,7 @@
<platform>solarus</platform>
<theme>solarus</theme>
</system>
-->
<system>
<name>spectravideo</name>
<fullname>Spectravideo</fullname>
@ -1614,6 +1777,18 @@
<platform>stratagus</platform>
<theme>stratagus</theme>
</system>
<system>
<name>stv</name>
<fullname>Sega Titan Video Game System</fullname>
<path>%ROMPATH%/stv</path>
<extension>.7z .7Z .zip .ZIP</extension>
<command label="Kronos">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/kronos_libretro.so %ROM%</command>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so %ROM%</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/stv %BASENAME%</command>
<!--<command label="Mednafen (Standalone)">%EMULATOR_MEDNAFEN% -force_module ss %ROM%</command>-->
<platform>arcade</platform>
<theme>stv</theme>
</system>
<system>
<name>sufami</name>
<fullname>Bandai SuFami Turbo</fullname>
@ -1650,6 +1825,18 @@
<platform>supervision</platform>
<theme>supervision</theme>
</system>
<system>
<name>supracan</name>
<fullname>Funtech Super A'Can</fullname>
<path>%ROMPATH%/supracan</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "supracan -rompath %GAMEDIR%\;%ROMPATH%/supracan -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/supracan supracan -cart %ROM%</command>
<platform>supracan</platform>
<theme>supracan</theme>
</system>
<system>
<name>switch</name>
<fullname>Nintendo Switch</fullname>
@ -1665,9 +1852,12 @@
<name>symbian</name>
<fullname>Symbian</fullname>
<path>%ROMPATH%/symbian</path>
<extension>.7z .7Z .zip .ZIP</extension>
<command>PLACEHOLDER %ROM%</command>
<platform>android</platform>
<extension>.sis .SIS .sisx .SISX .symbian</extension>
<command label="EKA2L1 [Nokia N-Gage] (Standalone)">%EMULATOR_EKA2L1% --fullscreen --device RH-29 --run "%BASENAME%"</command>
<command label="EKA2L1 [Nokia N70] (Standalone)">%EMULATOR_EKA2L1% --fullscreen --device RM-84 --run "%BASENAME%"</command>
<command label="EKA2L1 [Nokia N97] (Standalone)">%EMULATOR_EKA2L1% --fullscreen --device RM-507 --run "%BASENAME%"</command>
<command label="EKA2L1 [Custom device] (Standalone)">%EMULATOR_EKA2L1% --fullscreen --device %INJECT%=%BASENAME%.device --run "%BASENAME%"</command>
<platform>ngage</platform>
<theme>symbian</theme>
</system>
<!--
@ -1705,7 +1895,7 @@
<platform>pcenginecd</platform>
<theme>tg-cd</theme>
</system>
<!--
<system>
<name>ti99</name>
<fullname>Texas Instruments TI-99</fullname>
@ -1715,7 +1905,7 @@
<platform>ti99</platform>
<theme>ti99</theme>
</system>
-->
<system>
<name>tic80</name>
<fullname>TIC-80 Game Engine</fullname>
@ -1735,6 +1925,15 @@
<theme>to8</theme>
</system>
<!--
<system>
<name>triforce</name>
<fullname>Namco-Sega-Nintendo Triforce</fullname>
<path>%ROMPATH%/triforce</path>
<extension>.ciso .CISO .dff .DFF .dol .DOL .elf .ELF .gcm .GCM .gcz .GCZ .iso .ISO .json .JSON .m3u .M3U .rvz .RVZ .tgc .TGC .wad .WAD .wbfs .WBFS .wia .WIA .7z .7Z .zip .ZIP</extension>
<command label="Triforce (Standalone)">%INJECT%=%BASENAME%.esprefix %EMULATOR_TRIFORCE% -b -e %ROM%</command>
<platform>arcade</platform>
<theme>triforce</theme>
</system>
<system>
<name>trs-80</name>
<fullname>Tandy TRS-80</fullname>
@ -1746,6 +1945,18 @@
<platform>trs-80</platform>
<theme>trs-80</theme>
</system>
<system>
<name>type-x</name>
<fullname>Taito Type X</fullname>
<path>%ROMPATH%/type-x</path>
<extension>.AppImage .desktop .exe .EXE .sh</extension>
<command label="Wine (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_WINE% %ROM%</command>
<command label="Proton (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_PROTON% %ROM%</command>
<command label="AppImage">%EMULATOR_OS-SHELL% -c "%ROM%"</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>arcade</platform>
<theme>type-x</theme>
</system>
-->
<system>
<name>uzebox</name>
@ -1800,22 +2011,23 @@
<fullname>Visual Pinball</fullname>
<path>%ROMPATH%/vpinball</path>
<extension>.vpt .VPT .vpx .VPX</extension>
<command label="Visual Pinball (Standalone)">PLACEHOLDER %ROM%</command>
<command label="Visual Pinball (Standalone)">%EMULATOR_VISUAL-PINBALL% -Minimized -Play %ROM%</command>
<platform>vpinball</platform>
<theme>vpinball</theme>
</system>
-->
<!--
<system>
<name>vsmile</name>
<fullname>VTech V.Smile</fullname>
<path>%ROMPATH%/vsmile</path>
<extension>.bin .BIN .7z .7Z .zip .ZIP</extension>
<command label="MAME - Current">%EMULATOR_RETROARCH% -L %CORE_RETROARCH%/mame_libretro.so "vsmile -rompath %GAMEDIR%\;%ROMPATH%/vsmile -cart \"%ROMRAW%\""</command>
<command label="MAME (Standalone)">%STARTDIR%=~/.mame %EMULATOR_MAME% -rompath %GAMEDIR%\;%ROMPATH%/vsmile vsmile -cart %ROM%</command>
<platform>vsmile</platform>
<theme>vsmile</theme>
</system>
-->
<system>
<name>wasm4</name>
<fullname>WASM-4 Fantasy Console</fullname>
@ -1882,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>
@ -1900,8 +2112,10 @@
<name>xbox360</name>
<fullname>Microsoft Xbox 360</fullname>
<path>%ROMPATH%/xbox360</path>
<extension>. .iso .ISO .xex .XEX</extension>
<command>PLACEHOLDER %ROM%</command>
<extension>. .desktop .iso .ISO .sh .xex .XEX</extension>
<command label="xenia (Wine)">%STARTDIR%=%EMUDIR% %PRECOMMAND_WINE% %EMULATOR_XENIA-WINDOWS% %ROM%</command>
<command label="xenia (Proton)">%STARTDIR%=%EMUDIR% %PRECOMMAND_PROTON% %EMULATOR_XENIA-WINDOWS% %ROM%</command>
<command label="Shortcut or script">%ENABLESHORTCUTS% %EMULATOR_OS-SHELL% %ROM%</command>
<platform>xbox360</platform>
<theme>xbox360</theme>
</system>

View file

@ -30,7 +30,7 @@ save_migration() {
# Doing the dir prep as we don't know from which version we came
dir_prep "$media_folder" "/var/config/emulationstation/.emulationstation/downloaded_media"
dir_prep "$themes_folder" "/var/config/emulationstation/.emulationstation/themes"
mkdir -pv $rdhome/.logs #this was added later, maybe safe to remove in a few versions
mkdir -pv $rdhome/logs #this was added later, maybe safe to remove in a few versions
# Resetting es_settings, now we need it but in the future I should think a better solution, maybe with sed
cp -fv /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml
@ -50,7 +50,7 @@ save_migration() {
versionwheresaveschanged="0.4.5b" # Hardcoded break point between unsorted and sorted saves
if [[ $(sed -e "s/\.//g" <<< $hard_version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]] && [[ ! $(sed -e "s/\.//g" <<< $version) > $(sed -e "s/\.//g" <<< $versionwheresaveschanged) ]]; then # Check if user is upgrading from the version where save organization was changed. Try not to reuse this, it things 0.4.5b is newer than 0.4.5
migration_logfile=$rdhome/.logs/savemove_"$(date +"%Y_%m_%d_%I_%M_%p").log"
migration_logfile=$rdhome/logs/savemove_"$(date +"%Y_%m_%d_%I_%M_%p").log"
save_backup_file=$rdhome/savebackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"
state_backup_file=$rdhome/statesbackup_"$(date +"%Y_%m_%d_%I_%M_%p").zip"

View file

@ -1,5 +1,7 @@
#!/bin/bash
source functions/functions.sh
debug_dialog() {
# This function is for displaying commands run by the Configurator without actually running them
# USAGE: debug_dialog "command"
@ -16,11 +18,12 @@ configurator_process_complete_dialog() {
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Quit" --extra-button="OK" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Process Complete" \
--text="The process of $1 is now complete.\n\nYou may need to quit and restart RetroDECK for your changes to take effect\n\nClick OK to return to the Main Menu or Quit to return to RetroDECK."
--text="The process of $1 is now complete.\n\nYou may need to quit and restart RetroDECK for your changes to take effect\n\nClick OK to return to the Main Menu or Quit to quit RetroDECK."
if [ ! $? == 0 ] # OK button clicked
then
if [ ! $? == 0 ]; then # OK button clicked
configurator_welcome_dialog
elif [ ! $? == 1 ]; then # Quit button clicked
quit_retrodeck
fi
}
@ -113,7 +116,7 @@ configurator_move_folder_dialog() {
unlink "$dest_root/$rd_dir_path" # In case there is already a symlink at the picked destination
move "$dir_to_move" "$dest_root/$rd_dir_path"
if [[ -d "$dest_root/$rd_dir_path" ]]; then # If the move succeeded
eval "$rd_dir_name"="$dest_root/$rd_dir_path" # Set the new path for that folder variable in retrodeck.cfg
declare -g "$rd_dir_name=$dest_root/$rd_dir_path" # Set the new path for that folder variable in retrodeck.cfg
if [[ "$rd_dir_name" == "rdhome" ]]; then # If the whole retrodeck folder was moved...
prepare_emulator "postmove" "retrodeck"
fi
@ -146,7 +149,7 @@ configurator_move_folder_dialog() {
else # The folder to move was not found at the path pulled from retrodeck.cfg and it needs to be reconfigured manually.
configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The $(basename $dir_to_move) folder was not found at the expected location.\n\nThis may have happened if the folder was moved manually.\n\nPlease select the current location of the folder."
dir_to_move=$(directory_browse "RetroDECK $(basename $dir_to_move) directory location")
eval "$rd_dir_name"="$dir_to_move"
declare -g "$rd_dir_name=$dir_to_move"
prepare_emulator "postmove" "all"
conf_write
configurator_generic_dialog "RetroDECK Configurator - Move Folder" "RetroDECK $(basename $dir_to_move) folder now configured at\n$dir_to_move."

View file

@ -9,14 +9,14 @@ directory_browse() {
while [ $path_selected == false ]
do
local target="$(zenity --file-selection --title="Choose $1" --directory)"
if [ ! -z $target ] #yes
if [ ! -z "$target" ] #yes
then
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
--text="Directory $target chosen, is this correct?"
if [ $? == 0 ]
then
path_selected=true
echo $target
echo "$target"
break
fi
else
@ -161,7 +161,7 @@ conf_read() {
if [[ "$current_section" == "" || "$current_section" == "paths" || "$current_section" == "options" ]]; then
local current_setting_name=$(get_setting_name "$current_setting_line" "retrodeck") # Read the variable name from the current line
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "$current_section") # Read the variables value from retrodeck.cfg
eval "$current_setting_name=$current_setting_value" # Write the current setting name and value to memory
declare -g "$current_setting_name=$current_setting_value" # Write the current setting name and value to memory
fi
fi
fi
@ -294,7 +294,7 @@ do
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" --text="Do you want to quit?"
if [ $? == 0 ] # yes, quit
then
exit 2
quit_retrodeck
fi
fi
fi
@ -304,7 +304,7 @@ do
--title "RetroDECK" \
--ok-label "Quit" \
--text="No location was selected. Please run RetroDECK again to retry."
exit 2
quit_retrodeck
fi
done
}
@ -341,19 +341,19 @@ finit() {
local finit_dest_choice=$(configurator_destination_choice_dialog "RetroDECK data" "Welcome to the first configuration of RetroDECK.\nThe setup will be quick but please READ CAREFULLY each message in order to avoid misconfigurations.\n\nWhere do you want your RetroDECK data folder to be located?\n\nThis folder will contain all ROMs, BIOSs and scraped data." )
echo "Choice is $finit_dest_choice"
case $finit_dest_choice in
case "$finit_dest_choice" in
"Back" | "" ) # Back or X button quits
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
echo "Now quitting"
exit 2
quit_retrodeck
;;
"Internal Storage" ) # Internal
echo "Internal selected"
rdhome="$HOME/retrodeck"
if [[ -L $rdhome ]]; then #Remove old symlink from existing install, if it exists
unlink $rdhome
if [[ -L "$rdhome" ]]; then #Remove old symlink from existing install, if it exists
unlink "$rdhome"
fi
;;
@ -366,9 +366,9 @@ finit() {
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK" \
--ok-label "Browse" \
--text="SD Card was not find in the default location.\nPlease choose the SD Card root.\nA retrodeck folder will be created starting from the directory that you selected."
rdhome=$(finit_browse) # Calling the browse function
if [[ -z $rdhome ]]; then # If user hit the cancel button
--text="SD Card was not found in the default location.\nPlease choose the SD Card root.\nA retrodeck folder will be created starting from the directory that you selected."
rdhome="$(finit_browse)" # Calling the browse function
if [[ -z "$rdhome" ]]; then # If user hit the cancel button
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
exit 2
fi
@ -382,7 +382,7 @@ finit() {
--text="SD card was found but is not writable\nThis can happen with cards formatted on PC.\nPlease format the SD card through the Steam Deck's Game Mode and run RetroDECK again."
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
echo "Now quitting"
exit 2
quit_retrodeck
else
rdhome="$sdcard/retrodeck"
fi
@ -395,8 +395,8 @@ finit() {
--title "RetroDECK" \
--ok-label "Browse" \
--text="Please choose the root folder for the RetroDECK data.\nA retrodeck folder will be created starting from the directory that you selected."
rdhome=$(finit_browse) # Calling the browse function
if [[ -z $rdhome ]]; then # If user hit the cancel button
rdhome="$(finit_browse)" # Calling the browse function
if [[ -z "$rdhome" ]]; then # If user hit the cancel button
rm -f "$rd_conf" # Cleanup unfinished retrodeck.cfg if first install is interrupted
exit 2
fi
@ -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
@ -527,6 +527,11 @@ easter_eggs() {
cp -f "$new_splash_file" "$current_splash_file" # Deploy assigned splash screen
}
quit_retrodeck() {
pkill -f retrodeck
pkill -f emulationstation
}
start_retrodeck() {
easter_eggs # Check if today has a surprise splashscreen and load it if so
# normal startup

View file

@ -103,6 +103,11 @@ primehackqtconf="/var/config/primehack/Qt.ini"
rpcs3conf="/var/config/rpcs3/config.yml"
rpcs3vfsconf="/var/config/rpcs3/vfs.yml"
# Vita3k config files
vita3kconf="/var/data/Vita3K/config.yml"
vita3kusrconfdir="$bios_folder/Vita3K/Vita3K"
# We moved the lockfile in /var/config/retrodeck in order to solve issue #53 - Remove in a few versions
if [ -f "$HOME/retrodeck/.lock" ]
then
@ -126,9 +131,13 @@ if [[ ! -f "$rd_conf" ]]; then
fi
# Check if SD card path has changed from SteamOS update
if [[ ! -d $default_sd && "$(ls -A /run/media/deck/)" ]]; then
configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"."
default_sd=$(directory_browse "SD Card Location")
if [[ ! -d "$default_sd" && "$(ls -A /run/media/deck/)" ]]; then
if [[ $(find media/deck/* -maxdepth 0 -type d -print | wc -l) -eq 1 ]]; then # If there is only one SD card found in the new Steam OS 3.5 location, assign it as the default
default_sd="$(find media/deck/* -maxdepth 0 -type d -print)"
else # If the default legacy path cannot be found, and there are multiple entries in the new Steam OS 3.5 SD card path, let the user pick which one to use
configurator_generic_dialog "RetroDECK Setup" "The SD card was not found in the expected location.\nThis may happen when SteamOS is updated.\n\nPlease browse to the current location of the SD card.\n\nIf you are not using an SD card, please click \"Cancel\"."
default_sd="$(directory_browse "SD Card Location")"
fi
fi
cp $rd_defaults $rd_conf # Load default settings file

View file

@ -17,7 +17,7 @@ set_setting_value() {
sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'=^s^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' "$1"
fi
if [[ "$4" == "retrodeck" && ("$current_section_name" == "" || "$current_section_name" == "paths" || "$current_section_name" == "options") ]]; then # If a RetroDECK setting is being changed, also write it to memory for immediate use
eval "$setting_name_to_change=$setting_value_to_change"
declare -g "$setting_name_to_change=$setting_value_to_change"
fi
;;
@ -37,7 +37,7 @@ set_setting_value() {
fi
;;
"rpcs3" ) # This does not currently work for settings with a $ in them
"rpcs3" | "vita3k" ) # This does not currently work for settings with a $ in them
if [[ -z $current_section_name ]]; then
sed -i 's^\^'"$setting_name_to_change"': .*^'"$setting_name_to_change"': '"$setting_value_to_change"'^' "$1"
else
@ -72,7 +72,7 @@ get_setting_name() {
echo ''"$current_setting_line"'' | grep -o -P '(?<=name\=\").*(?=\" value)'
;;
"rpcs3" )
"rpcs3" | "vita3k" )
echo "$current_setting_line" | grep -o -P "^\s*?.*?(?=\s?:\s?)" | sed -e 's/^[ \t]*//;s^\\ ^ ^g'
;;
@ -116,7 +116,7 @@ get_setting_value() {
fi
;;
"rpcs3" ) # For files with this syntax - setting_name: setting_value
"rpcs3" | "vita3k" ) # For files with this syntax - setting_name: setting_value
if [[ -z $current_section_name ]]; then
echo $(grep -o -P "(?<=$current_setting_name: ).*" "$1")
else

View file

@ -1,5 +1,7 @@
#!/bin/bash
source /app/libexec/logger.sh
post_update() {
# post update script
@ -229,6 +231,11 @@ post_update() {
set_setting_value "$ppssppcontrolsconf" "R" "1-51,10-192" "ppsspp" "ControlMapping"
fi
if [[ $prev_version -le "073" ]]; then
# In version 0.7.3b, there was a bug that prevented the correct creations of the roms/system folders, so we force recreate them.
emulationstation --home /var/config/emulationstation --create-system-dirs
fi
# The following commands are run every time.
if [[ -d "/var/data/dolphin-emu/Load/DynamicInputTextures" ]]; then # Refresh installed textures if they have been enabled
@ -239,8 +246,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
@ -260,4 +266,28 @@ post_update() {
else
changelog_dialog "$version"
fi
if [[ $prev_version -le "075" ]]; then
# In version 0.7.5b, the following changes were made:
# TODO: vita3k init
# TODO: MAME init
if [ -d "$rdhome/.logs" ]; then
mv "$rdhome/.logs" "$logs_folder"
log i "Logs folder renamed successfully"
else
log i "The .logs folder does not exist, continuing."
fi
# The save folder of rpcs3 was inverted so we're moving the saves into the real one
echo "RPCS3 saves needs to be migrated, executing."
mv "$saves_folder/ps3/rpcs3" "$saves_folder/ps3/rpcs3.bak"
mkdir -p "$saves_folder/ps3/rpcs3"
mv -v "$saves_folder/ps3/rpcs3.bak"/* "$saves_folder/ps3/rpcs3"
mv -v "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"/* "$saves_folder/ps3/rpcs3"
mv -v "$saves_folder/ps3/rpcs3.bak" "$rdhome/backups/saves/ps3/rpcs3"
echo "RPCS3 saves migration completed, a backup was made here: \"$rdhome/backups/saves/ps3/rpcs3\"."
source /app/libexec/functions.sh
dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
fi
}

View file

@ -19,7 +19,7 @@ prepare_emulator() {
local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
eval "$current_setting_name=$rdhome/$(basename $current_setting_value)"
declare -g "$current_setting_name=$rdhome/$(basename $current_setting_value)"
mkdir -p "$rdhome/$(basename $current_setting_value)"
fi
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
@ -30,7 +30,7 @@ prepare_emulator() {
if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
if [[ -d "$rdhome/$(basename $current_setting_value)" ]]; then # If the folder exists at the new ~/retrodeck location
eval "$current_setting_name=$rdhome/$(basename $current_setting_value)"
declare -g "$current_setting_name=$rdhome/$(basename $current_setting_value)"
fi
fi
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
@ -45,9 +45,9 @@ prepare_emulator() {
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
set_setting_value "$es_settings" "MediaDirectory" "$media_folder" "es_settings"
set_setting_value "$es_settings" "UserThemeDirectory" "$themes_folder" "es_settings"
dir_prep "$rdhome/gamelists" "/var/config/emulationstation/.emulationstation/gamelists"
emulationstation --home /var/config/emulationstation --create-system-dirs
update_splashscreens
dir_prep "$rdhome/gamelists" "/var/config/emulationstation/.emulationstation/gamelists"
fi
if [[ "$action" == "postmove" ]]; then
set_setting_value "$es_settings" "ROMDirectory" "$roms_folder" "es_settings"
@ -220,7 +220,7 @@ prepare_emulator() {
fi
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
dir_prep "$rdhome/.logs/citra" "/var/data/citra-emu/log"
dir_prep "$rdhome/logs/citra" "/var/data/citra-emu/log"
dir_prep "$mods_folder/Citra" "/var/data/citra-emu/load/mods"
dir_prep "$texture_packs_folder/Citra" "/var/data/citra-emu/load/textures"
set_setting_value "$citraconf" "nand_directory" "$saves_folder/n3ds/citra/nand/" "citra" "Data%20Storage"
@ -301,8 +301,9 @@ prepare_emulator() {
set_setting_value "$multi_user_data_folder/$SteamAppUser/data/duckstation/settings.ini" "RecursivePaths" "$roms_folder/psx" "duckstation" "GameList"
dir_prep "$multi_user_data_folder/$SteamAppUser/config/duckstation" "/var/config/duckstation"
else # Single-user actions
rm -rf /var/config/duckstation
mkdir -p /var/config/duckstation/
rm -rf "/var/config/duckstation"
mkdir -p "/var/config/duckstation/"
mkdir -p "$saves_folder/psx/duckstation/memcards"
cp -fv "$emuconfigs/duckstation/"* /var/config/duckstation
set_setting_value "$duckstationconf" "SearchDirectory" "$bios_folder" "duckstation" "BIOS"
set_setting_value "$duckstationconf" "Card1Path" "$saves_folder/psx/duckstation/memcards/shared_card_1.mcd" "duckstation" "MemoryCards"
@ -521,7 +522,7 @@ prepare_emulator() {
# This is an unfortunate one-off because set_setting_value does not currently support settings with $ in the name.
sed -i 's^\^$(EmulatorDir): .*^$(EmulatorDir): '"$bios_folder/rpcs3/"'^' "$rpcs3vfsconf"
set_setting_value "$rpcs3vfsconf" "/games/" "$roms_folder/ps3/" "rpcs3"
dir_prep "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata" "$saves_folder/ps3/rpcs3"
dir_prep "$saves_folder/ps3/rpcs3" "$bios_folder/rpcs3/dev_hdd0/home/00000001/savedata"
fi
# Shared actions
mkdir -p "$bios_folder/rpcs3/dev_hdd0"
@ -667,6 +668,73 @@ prepare_emulator() {
fi
fi
if [[ "$emulator" =~ ^(vita3k|Vita3K|all)$ ]]; then
if [[ "$action" == "reset" ]]; then # Run reset-only commands
echo "----------------------"
echo "Initializing Vita3K"
echo "----------------------"
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
echo "Figure out what Vita3k needs for multi-user"
else # Single-user actions
# NOTE: the emulator is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
rm -rf "/var/data/Vita3K"
mkdir -p "/var/data/Vita3K"
unzip "/app/retrodeck/vita3k.zip" -d "/var/data/Vita3K"
chmod +x "/var/data/Vita3K/Vita3K"
rm -f "/var/data/Vita3K/update-vita3k.sh"
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # Emulator config
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
fi
# Shared actions
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe?
# Installing firmware
# TODO: at the moment this is here instead of a tool because it seems like it cannot run without Firmware
curl "http://dus01.psv.update.playstation.net/update/psv/image/2022_0209/rel_f2c7b12fe85496ec88a0391b514d6e3b/PSVUPDAT.PUP" -po /tmp/PSVUPDAT.PUP
curl "http://dus01.psp2.update.playstation.net/update/psp2/image/2019_0924/sd_8b5f60b56c3da8365b973dba570c53a5/PSP2UPDAT.PUP?dest=us" -po /tmp/PSP2UPDAT.PUP
Vita3K --firmware /tmp/PSVUPDAT.PUP
Vita3K --firmware /tmp/PSP2UPDAT.PUP
fi
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe?
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
fi
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 $saves_folder/mame-sa
mkdir -p "/var/config/mame"
dir_prep "$saves_folder/mame-sa/hiscore" "/var/config/mame/hiscore"
cp -fvr "$emuconfigs/mame/**" "/var/config/mame"
sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/*.ini"
sed -i 's#RETRODECKHOMESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini"
sed -i 's#RETRODECKSAVESDIR#'$rdhome'#g' "/var/config/gzdoom/*.ini"
fi
if [[ "$emulator" =~ ^(gzdoom|GZDOOM|all)$ ]]; then
# TODO: do a proper script
# This is just a placeholder script to test the emulator's flow
echo "----------------------"
echo "Initializing GZDOOM"
echo "----------------------"
mkdir -p "/var/config/gzdoom"
mkdir -p "/var/data/gzdoom"
cp -fvr "$emuconfigs/gzdoom/gzdoom.ini" "/var/config/gzdoom"
cp -fvr "$emuconfigs/gzdoom/gzdoom.pk3" "/var/data/gzdoom"
sed -i 's#RETRODECKROMSDIR#'$roms_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
fi
# Update presets for all emulators after any reset or move
if [[ ! "$emulator" == "retrodeck" ]]; then
build_retrodeck_current_presets

View file

@ -4,7 +4,7 @@ GenericName=RetroDECK Configuration Utility
Type=Application
Comment=A handy tool to change common RetroDECK settings
Icon=net.retrodeck.retrodeck
Exec=/app/tools/configurator.sh
Exec=/bin/bash /app/tools/configurator.sh
Terminal=false
StartupNotify=false
Keywords=multi;engine;emulator;standalone;steam;deck

View file

@ -4,7 +4,7 @@
<id>net.retrodeck.retrodeck</id>
<launchable type="desktop-id">net.retrodeck.retrodeck.desktop</launchable>
<name>RetroDECK</name>
<summary>RetroDECK brings an environment to catalog and play your retro games directly on your Steam Deck.</summary>
<summary>RetroDECK brings an environment to catalog and play your retro games directly on your Steam Deck</summary>
<developer_name>RetroDECK Team</developer_name>
<url type="homepage">https://retrodeck.net</url>
<url type="bugtracker">https://github.com/XargonWan/RetroDECK/issues</url>
@ -65,12 +65,86 @@
<project_license>GPL-3.0</project_license>
<metadata_license>CC0-1.0</metadata_license>
<releases>
<release version="0.8.0b" date="2023-09-28">
<release version="0.8.0b" date="2023-12-14">
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.8.0b</url>
<description>
<p>News:</p>
<p>Changes:</p>
<ul>
<li>Welcome to cooker 0.8.0b!</li>
<li>Added new system: SOLARUS</li>
<li>Added new engine: GZDOOM</li>
<li>Added new emulator: Vita3K</li>
<li>Quit button after emulators reset should act as an actual full quit button</li>
<li>Created a quit_retrodeck function to ease the quit in the scripts.</li>
<li>Logs folder is now in retrodeck/logs (previously was .logs)</li>
</ul>
<p>Fixes:</p>
<ul>
<li>Fixed DUCKSTATION memory card folder</li>
<li>Fixed RPCS3 saves folder (wrong symlink)</li>
</ul>
<p>Issues:</p>
<ul>
<li>GZDOOM: the controller for player 2+ is not correctly configured</li>
<li>quit_retrodeck function seems to not working correctly</li>
<li>Added new emulator: MAME (Standalone) -- Removed cause of compiling issues</li>
<li>MAME (Standalone) paths should be fixed</li>
</ul>
<p>Missing:</p>
<ul>
<li>GZDOOM: hotkeys</li>
<li>SOLARUS: hotkeys</li>
<li>MAME (Standalone): hotkeys</li>
<li>A proper reset script for the new emulators, now it's just a draft (only Vita3K is done)</li>
</ul>
</description>
</release>
<release version="0.7.5b" date="2023-14-12">
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.7.5b</url>
<description>
<p>Bug fixes and other changes:</p>
<ul>
<li>RetroDECK Team wishes you happy holidays with a festive loading screen!</li>
<li>Framework: Fixed the SD card path resolution for SteamOS 3.5</li>
<li>Configurator: Added the possibility to reset ES-DE configs via Configurator and CLI</li>
<li>RetroArch: Borders/Overlays are now disabled by default on fresh installs to prevent screen burn-in</li>
<li>RetroArch: added nightly cores, stable cores have priority over them</li>
<li>RPCS3: tweaked confing to improve performance</li>
<li>Dolphin (SA): fixed GC buttons layout. Now R1 is Z and L2/R2 are L/R</li>
<li>CEMU: tweaked audio config to choose the correct output device when docked</li>
</ul>
<p>Updates:</p>
<ul>
<li>All standalone emulators to their latest versions (prior to llvm17 and 6.6 framework updates)</li>
</ul>
</description>
</release>
<release version="0.7.4b" date="2023-11-18">
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.7.4b</url>
<description>
<p>Hotfix:</p>
<ul>
<li>Fixed a bug where the system folders were not correctly generated</li>
<li>Fixed a bug where the RetroDECK Configurator desktop file was not opening the Configurator from Desktop Mode</li>
<li>Fixed a bug where the theme was not showing correctly</li>
<li>Added retrodeck and configurator commands to be called from the shell or bash inside flatpak</li>
</ul>
<p>Known issues:</p>
<ul>
<li>Please check the know issues in the Wiki under General Infomration</li>
</ul>
</description>
</release>
<release version="0.7.3b" date="2023-11-14">
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.7.3b</url>
<description>
<p>Updates:</p>
<ul>
<li>All standalone emulators</li>
<li>EmulationStation Desktop Edition (ES-DE)</li>
</ul>
<p>Known issues:</p>
<ul>
<li>Please check the know issues in the Wiki under General Infomration</li>
</ul>
</description>
</release>

View file

@ -1,12 +1,12 @@
app-id: net.retrodeck.retrodeck
runtime: org.kde.Platform
runtime-version: 5.15-22.08
runtime-version: "6.5"
sdk: org.kde.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.llvm14 # Needed for rpcs3
- org.freedesktop.Sdk.Extension.llvm16 # Needed for rpcs3 (llvm15) but llvm16 for CITRA
- org.freedesktop.Sdk.Extension.rust-stable # Needed for BoilR
base: io.qt.qtwebengine.BaseApp # Needed for Yuzu
base-version: 5.15-22.08 # Needed for Yuzu
# base: io.qt.qtwebengine.BaseApp # Needed for Yuzu - Disabled as we're using AppImage for Yuzu
# base-version: "6.5" # Needed for Yuzu - Disabled as we're using AppImage for Yuzu
command: retrodeck.sh
add-extensions:
@ -42,6 +42,8 @@ finish-args:
# It allows an SDL application to specify its window class, which can be useful for window managers and desktop environments to identify and group similar windows
- --env=SDL_VIDEO_X11_WMCLASS=net.retrodeck.retrodeck
- --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.retrodeck
# XEMU - Fixes issues with openSUSE systems, QEMU_AUDIO_DRV is defined as "pa" causing xemu to not launch
- --unset-env=QEMU_AUDIO_DRV
# BoilR
- --filesystem=xdg-data/Steam:rw #Steam (flatpak)
- --filesystem=~/.steam:rw # Steam (Non-flatpak)
@ -67,13 +69,13 @@ cleanup:
# XMLSTARLET
- /lib/debug
- /share/runtime
cleanup-commands:
#cleanup-commands:
# Yuzu
- /app/cleanup-BaseApp.sh
#- /app/cleanup-BaseApp.sh
modules:
# dependency of: CEMU
# dependency of: CEMU, CITRA, DOLPHIN
- rd-submodules/shared-modules/libusb/libusb.json
# This module is used to define the RetroDECK version
@ -82,15 +84,16 @@ modules:
# The version number is hardcoded in /app/retrodeck/version
#
# UPDATE STEPS FOR MAIN:
# [X] Update the VERSION variable on line containing "VERSION=THISBRANCH"
# [X] Update the appdata.xml with the version number and notes
# [ ] Update the VERSION variable on line containing "VERSION=THISBRANCH"
# [ ] Update the appdata.xml with the version number and notes
#
- name: version-initialization
buildsystem: simple
build-commands:
- |
# on main please update this with the version variable, eg: VERSION='0.7.0b'
# on main please update this with the version variable, eg: VERSION='0.7.4b'
# on cooker will be THISBRANCH
VERSION=THISBRANCH
git checkout ${GITHUB_REF_NAME}
@ -124,10 +127,10 @@ modules:
- ln -s "xml" "${FLATPAK_DEST}/bin/xmlstarlet" ||:
# mesa repo got a double certificate issue and gnutils cannot handle that so GLU download fails,
# this affects even the shared-modules's glu so I have to replace it temporarly
# this affects even the shared-modules's libglu so I have to replace it temporarly
# more info there: https://gitlab.com/gnutls/gnutls/-/issues/1335
# dependency of: CEMU
- name: glu
# dependency of: RETROARCH, CEMU, RPCS3, XEMU
- name: libglu
buildsystem: meson
cleanup:
- /include
@ -136,8 +139,16 @@ modules:
- /lib/*.a
sources:
- type: archive
url: https://ftp.osuosl.org/pub/blfs/conglomeration/glu/glu-9.0.2.tar.xz
sha256: 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4
url: https://ftp.osuosl.org/pub/blfs/conglomeration/glu/glu-9.0.3.tar.xz
sha256: bd43fe12f374b1192eb15fe20e45ff456b9bc26ab57f0eee919f96ca0f8a330f
# - type: archive
# url: https://mesa.freedesktop.org/archive/glu/glu-9.0.3.tar.xz
# sha256: bd43fe12f374b1192eb15fe20e45ff456b9bc26ab57f0eee919f96ca0f8a330f
# x-checker-data:
# type: anitya
# project-id: 13518
# stable-only: true
# url-template: https://mesa.freedesktop.org/archive/glu/glu-$version.tar.xz
- name: libgudev
buildsystem: meson
@ -225,24 +236,120 @@ modules:
url: https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_amd64
sha256: 4ee662847c588c3ef2fec8bfb304e8739e3dbaba87ccb9a608d691c88f5b64dc
# dependency of: CEMU (13.0.0)
# dependency of: CEMU (13.1.1), CITRA (13.0.0)
- name: glslang
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DENABLE_CTEST=OFF
# TODO: Does Cemu benefit from SPIRV-Tools-opt
- -DENABLE_OPT=OFF
cleanup:
- /include
- /lib/cmake
sources:
- type: archive
url: https://github.com/KhronosGroup/glslang/archive/13.0.0.tar.gz
sha256: bcda732434f829aa74414ea0e06d329ec8ac28637c38a0de45e17c8fd25a4715
url: https://github.com/KhronosGroup/glslang/archive/13.1.1.tar.gz
sha256: 1c4d0a5a38c8aaf89a2d7e6093be734320599f5a6775b2726beeb05b0c054e66
# url: https://github.com/KhronosGroup/glslang/archive/13.0.0.tar.gz
# sha256: bcda732434f829aa74414ea0e06d329ec8ac28637c38a0de45e17c8fd25a4715
x-checker-data:
type: anitya
stable-only: true
project-id: 205796
url-template: https://github.com/KhronosGroup/glslang/archive/$version.tar.gz
# - type: git
# url: https://github.com/KhronosGroup/SPIRV-Tools.git
# tag: sdk-1.3.261.1
# dest: External/spirv-tools
# - type: git
# url: https://github.com/KhronosGroup/SPIRV-Headers.git
# tag: sdk-1.3.261.1
# dest: External/spirv-tools/external/spirv-headers
# enables motion controls on non-wii controllers (switch, ps4, etc)
# dependency of: DOLPHIN, RPCS3
# TODO: requires a udev rule enabling Motion Sensors access
- name: libevdev
buildsystem: meson
config-opts:
- -Dtests=disabled
- -Ddocumentation=disabled
sources:
- type: archive
url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.1.tar.xz
sha256: 06a77bf2ac5c993305882bc1641017f5bec1592d6d1b64787bad492ab34f2f36
x-checker-data:
type: anitya
project-id: 20540
stable-only: true
url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz
# dependency of: CITRA, CEMU
- name: rapidjson
buildsystem: cmake-ninja
config-opts:
- -DRAPIDJSON_BUILD_DOC=OFF
- -DRAPIDJSON_BUILD_EXAMPLES=OFF
- -DRAPIDJSON_BUILD_TESTS=OFF
- -DRAPIDJSON_BUILD_THIRDPARTY_GTEST=OFF
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
- /share/doc
sources:
- type: archive
url: https://github.com/Tencent/rapidjson/archive/refs/tags/v1.1.0.tar.gz
sha256: bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e
x-checker-data:
type: anitya
project-id: 7422
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
config-opts:
- -DBUILD_SHARED_LIBS=ON
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
sources:
- type: archive
url: https://github.com/zeux/pugixml/releases/download/v1.14/pugixml-1.14.tar.gz
sha256: 2f10e276870c64b1db6809050a75e11a897a8d7456c4be5c6b2e35a11168a015
x-checker-data:
type: anitya
project-id: 3728
url-template: https://github.com/zeux/pugixml/releases/download/v$version/pugixml-$version.tar.gz
# dependency of: CEMU, RPCS3
- rd-submodules/shared-modules/glew/glew.json
# dependency of: XEMU, MelonDS
- name: libslirp
buildsystem: meson
sources:
- type: git
url: https://gitlab.freedesktop.org/slirp/libslirp.git
tag: v4.7.0
# ES-DE - START
# https://gitlab.com/es-de/emulationstation-de
@ -279,24 +386,6 @@ modules:
- sed -i 's|-o root -g root ||' ./Makefile.gnu
- sed -i 's|/usr|/app|' ./Makefile.gnu
# dependency of: CEMU
- name: pugixml
buildsystem: cmake-ninja
config-opts:
- -DBUILD_SHARED_LIBS=ON
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
sources:
- type: archive
url: https://github.com/zeux/pugixml/releases/download/v1.13/pugixml-1.13.tar.gz
sha256: 40c0b3914ec131485640fa57e55bf1136446026b41db91c1bef678186a12abbe
x-checker-data:
type: anitya
project-id: 3728
url-template: https://github.com/zeux/pugixml/releases/download/v$version/pugixml-$version.tar.gz
- name: libgit2
buildsystem: cmake-ninja
config-opts:
@ -315,8 +404,10 @@ modules:
- -DENABLE_BOOST=OFF
sources:
- type: archive
url: https://gitlab.freedesktop.org/poppler/poppler/-/archive/poppler-22.11.0/poppler-poppler-22.11.0.tar.bz2
sha256: b8f618d5c62030034d5c8da4d3f6a740260b7620b9a31021679ce1914d327f81
# original link not working, found a mirror
url: https://poppler.freedesktop.org/poppler-22.11.0.tar.xz
#url: https://gitlab.freedesktop.org/poppler/poppler/-/archive/poppler-22.11.0/poppler-poppler-22.11.0.tar.bz2
sha256: 093ba9844ed774285517361c15e21a31ba4df278a499263d4403cca74f2da828
cleanup:
- /lib/pkgconfig
- /include
@ -335,21 +426,13 @@ modules:
- es-core
sources:
- type: git
url: https://gitlab.com/es-de/emulationstation-de
branch: 5545187d82fabf93256b7d176f39a0a98bcd6c54
url: https://github.com/XargonWan/RetroDECK-ES-DE
branch: cebbeff3b5f834fd9adaeb1f5dc9e0da6b106599
- type: shell
commands:
- sed -i 's#"EMULATIONSTATION-DE V" + Utils::String::toUpper(PROGRAM_VERSION_STRING)#"RetroDECK
v'$(cat ${FLATPAK_DEST}/retrodeck/version)', ES-DE v" + Utils::String::toUpper(PROGRAM_VERSION_STRING)#g'
es-app/src/guis/GuiMenu.cpp
- type: patch
path: rd-submodules/es-de/GuiMenu.cpp.patch
- type: patch
path: rd-submodules/es-de/GuiMenu.h.patch
- type: patch
path: rd-submodules/es-de/ViewController.cpp.patch
- type: patch
path: rd-submodules/es-de/Window.cpp.patch
# ES-DE - END
@ -506,11 +589,22 @@ modules:
# RetroArch - END
# Not part of the offical RetroArch manifest
# retroarch-cores-nightly must be earlier than retroarch-cores as it will overwrite this cores with the stable ones
- name: retroarch-cores-nightly
buildsystem: simple
build-commands:
- mkdir -p /app/share/libretro/cores/
- mv -f ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* /app/share/libretro/cores/
sources:
- type: archive
url: https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z
sha256: RANIGHTLYCORESPLACEHOLDER
- name: retroarch-cores
buildsystem: simple
build-commands:
- mkdir -p /app/share/libretro/cores/
- mv ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* /app/share/libretro/cores/
- mv -f ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* /app/share/libretro/cores/
sources:
- type: archive
url: https://buildbot.libretro.com/stable/1.16.0/linux/x86_64/RetroArch_cores.7z
@ -567,10 +661,8 @@ modules:
- -DUSE_SYSTEM_FFMPEG=OFF
- -DUSE_SYSTEM_LIBZIP=ON
- -DUSE_SYSTEM_ZSTD=ON
- -DUSE_WAYLAND_WSI=ON
- -DUSING_QT_UI=OFF
- -DBUILD_TESTING=OFF
- -DOpenGL_GL_PREFERENCE=GLVND
build-options:
@ -586,8 +678,8 @@ modules:
sources:
- type: git
url: &ppsspp-url https://github.com/hrydgard/ppsspp.git
tag: v1.16.3
commit: a9b6421dfde68be9d065b51e9d519699ce2e9053
tag: v1.16.6
commit: ba0ce344937d17e177ec8656ab957f6b82facdda
x-checker-data:
type: json
url: https://api.github.com/repos/hrydgard/ppsspp/releases/latest
@ -626,43 +718,63 @@ modules:
- ln -s "${FLATPAK_DEST}/yuzu/usr/bin/yuzu" "${FLATPAK_DEST}/bin/yuzu"
sources:
- type: file
url: https://github.com/yuzu-emu/yuzu-mainline/releases/download/mainline-0-1567/yuzu-mainline-20230923-ace91dd0c.AppImage
sha256: 965bdfa63e713a0672fb5a037ecb527b4860600c6a2526f7c053bfe082b5a9d8
url: https://github.com/yuzu-emu/yuzu-mainline/releases/download/mainline-0-1648/yuzu-mainline-20231211-14c24e64e.AppImage
sha256: d40f61c2abf8ddd0bb53098e2d9edf0c47e1cfd89e50cf5856b8cc27dbb25bd6
# Yuzu - END
# CITRA - START
# DO NOT UPDATE! WENT ON QT6
# https://github.com/flathub/org.citra_emu.citra
- rd-submodules/shared-modules/SDL2/SDL2-with-libdecor.json
- rd-submodules/shared-modules/SDL2/SDL2-with-libdecor.json
- name: citra
buildsystem: cmake-ninja
builddir: true
build-options:
env:
CI: '1'
GITHUB_ACTIONS: '1'
GITHUB_REPOSITORY: citra-emu/citra-nightly
GITHUB_REF_NAME: nightly-2025
append-path: /usr/lib/sdk/llvm16/bin
prepend-ld-library-path: /usr/lib/sdk/llvm16/lib
cflags: '-Wno-unused-command-line-argument'
cxxflags: '-Wno-unused-command-line-argument'
config-opts:
- '-DCMAKE_BUILD_TYPE=Release'
- '-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON'
- '-DENABLE_LTO=ON'
- '-DCMAKE_C_COMPILER=clang'
- '-DCMAKE_CXX_COMPILER=clang++'
- '-DCMAKE_LINKER=lld'
- '-DENABLE_QT_TRANSLATION=ON'
- '-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON'
- '-DUSE_DISCORD_PRESENCE=ON'
- '-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF'
# - '-DENABLE_FFMPEG_VIDEO_DUMPER=ON'
# FFMPEG VIDEO DUMPER was disabled because of this: https://github.com/citra-emu/citra/issues/5949
- '-DUSE_SYSTEM_SDL2=ON'
- '-DCMAKE_POLICY_DEFAULT_CMP0069=NEW'
- '-DENABLE_FDK=ON'
cleanup:
- /share/man
- /share/pixmaps
post-install:
- install -Dm644 ../dist/citra.svg /app/share/icons/hicolor/scalable/apps/citra.svg
- install -Dm644 ../dist/icon.png /app/share/icons/hicolor/512x512/apps/citra.png
- install -Dm755 ../citra-launcher.sh /app/bin/citra-launcher
- >-
install -Dm644 ../org.citra_emu.citra.svg
/app/share/icons/hicolor/scalable/apps/citra.svg
- >-
install -Dm644 ../dist/icon.png
/app/share/icons/hicolor/512x512/apps/citra.png
- >-
mv /app/share/mime/packages/citra.xml
/app/share/mime/packages/org.citra_emu.citra.xml
- >-
sed 's/citra/org.citra_emu.citra/g' -i
/app/share/mime/packages/org.citra_emu.citra.xml
sources:
- type: archive
url: >-
https://github.com/citra-emu/citra-nightly/releases/download/nightly-1898/citra-unified-source-20230504-70335a7.tar.xz
sha256: b320585bd8c4c075f63d3d9c74b830718e58fcf04d987a5dcead402a72abf753
https://github.com/citra-emu/citra-nightly/releases/download/nightly-2025/citra-unified-source-20231105-998b9a9.tar.xz
sha256: ebf52af66c6ef729688a29d093d9139baa76973b698c0630a295f38d126cf118
x-checker-data:
type: json
url: https://api.github.com/repos/citra-emu/citra-nightly/releases/latest
@ -671,9 +783,10 @@ modules:
.assets[] | .browser_download_url |
match("https://.+citra-unified-source-.+.xz$") | .string
is-main-source: true
- type: patch
path: rd-submodules/citra/unified-source-compat.patch
- type: file
path: rd-submodules/citra/org.citra_emu.citra.svg
- type: file
path: rd-submodules/citra/citra-launcher.sh
# CITRA - END
@ -692,62 +805,15 @@ modules:
- ln -s "${FLATPAK_DEST}/pcsx2-qt/usr/bin/pcsx2-qt" "${FLATPAK_DEST}/bin/pcsx2-qt"
sources:
- type: file
url: https://github.com/PCSX2/pcsx2/releases/download/v1.7.5059/pcsx2-v1.7.5059-linux-appimage-x64-Qt.AppImage
sha256: a51addc9bd15b77e842160acecb1f18486f8a024e5e73e8aea5de71de2b164c7
url: https://github.com/PCSX2/pcsx2/releases/download/v1.7.5284/pcsx2-v1.7.5284-linux-appimage-x64-Qt.AppImage
sha256: b3cb23e07435f7efe7145cddd0cf4d473cc65eee8feae436b8a718fc3017721a
# PCSX2 - END
# Dolphin - START
# DO NOT UPDATE! WENT ON QT6
# https://github.com/flathub/org.DolphinEmu.dolphin-emu
# WHEN UPADTING: remember to update rd-submodules/dolphin contents
# needed for the emulate bluetooth adapter feature to work
- name: bluez
config-opts:
- --enable-library
- --disable-manpages
- --disable-udev
- --disable-tools
- --disable-cups
- --disable-monitor
- --disable-client
- --disable-systemd
- --disable-a2dp
- --disable-avrcp
- --disable-network
- --disable-obex
- --disable-bap
- --disable-mcp
- --with-dbusconfdir=/app/etc
- --with-dbussessionbusdir=/app/usr/lib/system-services
sources:
- type: archive
url: https://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz
sha256: 39fea64b590c9492984a0c27a89fc203e1cdc74866086efb8f4698677ab2b574
x-checker-data:
type: anitya
project-id: 10029
stable-only: true
url-template: https://www.kernel.org/pub/linux/bluetooth/bluez-$version.tar.xz
# enables motion controls on non-wii controllers (switch, ps4, etc)
# requires a udev rule enabling Motion Sensors access
- name: libevdev
buildsystem: meson
config-opts:
- -Dtests=disabled
- -Ddocumentation=disabled
sources:
- type: archive
url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.0.tar.xz
sha256: 9edf2006cc86a5055279647c38ec923d11a821ee4dc2c3033e8d20e8ee237cd9
x-checker-data:
type: anitya
project-id: 20540
stable-only: true
url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz
# needed for screensaver inhibition
- name: xdg-screensaver-shim
buildsystem: meson
@ -775,7 +841,7 @@ modules:
# fatal: remote transport reported error
# url: ssh://git@github.com/dolphin-emu/dolphin.git
url: https://github.com/dolphin-emu/dolphin.git
commit: 46b99671d9158e0ca840c1d8ef249db0f321ced7
commit: 032c77b462a220016f23c5079e71bb23e0ad2adf
x-checker-data:
type: json
url: https://dolphin-emu.org/update/latest/beta
@ -870,8 +936,8 @@ modules:
sources:
- type: git
url: https://github.com/xemu-project/xemu.git
tag: v0.7.98
commit: 7bfb7c85378f64f93556c365ea0cc18cb2181dc8
tag: v0.7.116
commit: b3fc80b3a83fa99aeb541a0c665cfb596cedd71c
x-checker-data:
type: json
url: https://api.github.com/repos/xemu-project/xemu/releases/latest
@ -895,15 +961,11 @@ modules:
# https://github.com/flathub/net.kuribo64.melonDS
# ちっちゃい、かわいい!
- name: libslirp
buildsystem: meson
sources:
- type: git
url: https://gitlab.freedesktop.org/slirp/libslirp.git
tag: v4.7.0
- name: melonds
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DUSE_QT6=ON
build-options:
arch:
aarch64:
@ -919,15 +981,8 @@ modules:
# MELONDS - END
# RPCS3 - START
# DO NOT UPDATE! WENT ON QT6
# https://github.com/flathub/net.rpcs3.RPCS3
# glu issue, check glu module for more info
#- rd-submodules/shared-modules/glu/glu-9.json
# dependency of: CEMU
- rd-submodules/shared-modules/glew/glew.json
- name: rpcs3
buildsystem: cmake-ninja
builddir: true
@ -948,14 +1003,12 @@ modules:
ldflags: -fuse-ld=lld
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
#- -DBUILD_LLVM_SUBMODULE=ON this was replaced by the fllowing:
- -DBUILD_LLVM=OFF
- -DUSE_NATIVE_INSTRUCTIONS=OFF
- -DUSE_PRECOMPILED_HEADERS=OFF
- -DUSE_SDL=ON
- -DUSE_SYSTEM_CURL=ON
# Disabled this to force RPCS3 to use our built FFMPEG
- -DUSE_SYSTEM_FFMPEG=OFF
- -DUSE_SYSTEM_FFMPEG=OFF # Disabled this to force RPCS3 to use our built FFMPEG
- -DUSE_SYSTEM_LIBPNG=ON
- -DUSE_SYSTEM_SDL=ON
- -DUSE_SYSTEM_ZLIB=ON
@ -964,14 +1017,13 @@ modules:
- cp /usr/lib/sdk/llvm16/lib/libLLVM-16.so /app/lib/
- |-
set -eux
COMM_TAG="$(awk -F'[\{,]' '/version{.*}/{printf "%d.%d.%d", $2, $3, $4}' ../rpcs3/rpcs3_version.cpp)"
COMM_COUNT="$(git rev-list --count HEAD)";
COMM_HASH="$(git rev-parse --short=8 HEAD)";
sources:
- type: git
url: https://github.com/RPCS3/rpcs3.git
commit: a828c214b5c0b87b81fcd13ff3c1e952c9a5d6dd
commit: f9d213650cfe4733937c43d93de91a17f8582820
# RPCS3 - END
@ -986,24 +1038,27 @@ modules:
- -DENABLE_SDL=ON
- -DENABLE_EVDEV=ON
- -DDISTRIBUTOR=Flathub
- -DQT_DIR=
cleanup:
- /share/man
post-install:
- install -D primehack-wrapper /app/bin/primehack-wrapper
sources:
- type: git
url: https://github.com/TheDrifter363/primehack.git
commit: 6295c695307a67f11ee202b05cbdd7b5c1edae5c
url: https://github.com/XargonWan/primehack
commit: af7710ef7b04a632b4294eae5e0eff8fe9c4d1f8
#url: https://github.com/TheDrifter363/primehack.git
#commit: 6295c695307a67f11ee202b05cbdd7b5c1edae5c
# detects whether dolphin is running in a flatpak sandbox
# and makes it use xdg directories if it is.
# prevents dolphin from attempting to write conf files
# in non-writable paths, typically happens when a user
# has leftover files from a previous non-flatpak install
- type: patch
path: rd-submodules/dolphin/detectflatpak.patch
path: rd-submodules/primehack/detectflatpak.patch
# version strings must match exactly for online multiplayer
- type: patch
path: rd-submodules/dolphin/nodirtyversion.patch
path: rd-submodules/primehack/nodirtyversion.patch
- type: script
commands:
- for i in {0..9}; do
@ -1033,7 +1088,6 @@ modules:
# Duckstation-AppImage - END
# Cemu - START
# LATEST BUILD BEFORE RUNTIME 23.08
# https://github.com/cemu-project/Cemu/releases
# https://github.com/flathub/info.cemu.Cemu
@ -1061,7 +1115,7 @@ modules:
sources:
- type: archive
url: https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.bz2
sha256: 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e
sha256: 5e89103d9b70bba5c91a794126b169cb67654be2051f90cf7c22ba6893ede0ff
x-checker-data:
type: anitya
project-id: 6845
@ -1091,41 +1145,6 @@ modules:
project-id: 10649
url-template: https://libzip.org/download/libzip-$version.tar.xz
- name: rapidjson
buildsystem: cmake-ninja
config-opts:
- -DRAPIDJSON_BUILD_DOC=OFF
- -DRAPIDJSON_BUILD_EXAMPLES=OFF
- -DRAPIDJSON_BUILD_TESTS=OFF
- -DRAPIDJSON_BUILD_THIRDPARTY_GTEST=OFF
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
- /share/doc
sources:
- type: archive
url: https://github.com/Tencent/rapidjson/archive/refs/tags/v1.1.0.tar.gz
sha256: bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e
x-checker-data:
type: anitya
project-id: 7422
stable-only: true
url-template: https://github.com/Tencent/rapidjson/archive/refs/tags/v$version.tar.gz
- 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:
@ -1142,7 +1161,8 @@ modules:
url-template: https://github.com/fmtlib/fmt/archive/$version.tar.gz
versions: {<: '10.0'}
- name: wxwidgets
- name: wxWidgets
buildsystem: cmake-ninja
cleanup:
- /bin
- /include
@ -1151,13 +1171,14 @@ modules:
- /share
sources:
- type: archive
url: https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.2.1/wxWidgets-3.2.2.1.tar.bz2
sha256: dffcb6be71296fff4b7f8840eb1b510178f57aa2eb236b20da41182009242c02
url: https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2
sha256: 0640e1ab716db5af2ecb7389dbef6138d7679261fbff730d23845ba838ca133e
x-checker-data:
type: anitya
project-id: 5150
stable-only: true
url-template: https://github.com/wxWidgets/wxWidgets/releases/download/v$version/wxWidgets-$version.tar.bz2
versions: {'!=': 3.2.4-with-msvs2012-fix}
- name: Cemu
buildsystem: cmake-ninja
@ -1174,8 +1195,8 @@ modules:
x-checker-data:
type: git
tag-pattern: ^v([\d.]+-\d+)$
tag: v2.0-47
commit: 85aa4f095b119e98620451a0c19c80f656d944a6
tag: v2.0-61
commit: b6aaf6633063be47d89a8216e269e32aec5a4b49
- type: shell
commands:
- sed "s/set(EXPERIMENTAL_VERSION.*/set(EXPERIMENTAL_VERSION \"$(git describe
@ -1223,67 +1244,95 @@ modules:
# Cemu - END
# Ryujinx - START
# https://github.com/flathub/org.ryujinx.Ryujinx
# Vita3K - START
- name: Ryujinx
- name: vita3k
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
# Copying the user icon
- mkdir -p ${FLATPAK_DEST}/retrodeck
- cp retrodeck.png ${FLATPAK_DEST}/retrodeck
- unzip "ubuntu-latest.zip" -d "${FLATPAK_DEST}/share/Vita3K"
- chmod +x "${FLATPAK_DEST}/share/Vita3K/Vita3K"
- rm -f "${FLATPAK_DEST}/share/Vita3K/update-vita3k.sh"
- ln -s ${FLATPAK_DEST}/share/Vita3K/Vita3K ${FLATPAK_DEST}/bin/Vita3K
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
- type: file
url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
sha256: VITA3KSHAPLACEHOLDER
- type: file
path: res/retrodeck.png
# Ryujinx - END
# 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
- rd-submodules/shared-modules/gzdoom/gzdoom.json
# SOLARUS - END
# MAME - Start
# - name: retrodeck-mame
# buildsystem: simple
# build-commands:
# - cp -rn files/* /app
# sources:
# - type: archive
# url:
# sha256: RETRODECKMAMEPLACEHOLDER
# MAME - End
# External manifests end
@ -1327,6 +1376,7 @@ modules:
# Desktop entries
- cp net.retrodeck.retrodeck.desktop /app/share/applications/net.retrodeck.retrodeck.desktop
- cp net.retrodeck.retrodeck.Configurator.desktop /app/share/applications/net.retrodeck.retrodeck.Configurator.desktop
- chmod +x net.retrodeck.retrodeck*desktop
# Initializing default emulator configs
- cp -r emu-configs ${FLATPAK_DEST}/retrodeck/emu-configs/
@ -1342,6 +1392,14 @@ modules:
- mkdir -p ${FLATPAK_DEST}/share/appdata
- cp net.retrodeck.retrodeck.appdata.xml ${FLATPAK_DEST}/share/appdata
# Creating symlinks for a prettier access
- ln -s /app/bin/retrodeck.sh /app/bin/retrodeck
- ln -s /app/tools/configurator.sh /app/bin/configurator
# GZDOOM wrapper
- cp emu-configs/gzdoom/gzdoom.sh ${FLATPAK_DEST}/bin/gzdoom.sh
- chmod +x ${FLATPAK_DEST}/bin/gzdoom.sh
sources:
- type: git
url: https://github.com/XargonWan/RetroDECK.git

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"]
}

View file

@ -0,0 +1,25 @@
#!/bin/bash -e
report_error() {
read -r -d '|' MESSAGE <<EOF
Unfortunately, Citra seems to have crashed.
We kindly ask you to submit a bug report to <a href="https://github.com/flathub/org.citra_emu.citra/issues">https://github.com/flathub/org.citra_emu.citra/issues</a>.
When submitting a bug report, please attach your <b>system information</b> and the <b>Citra log file</b>.
You seem to be using ${XDG_SESSION_DESKTOP} ${DESKTOP_SESSION} (${XDG_SESSION_TYPE}):
To obtain Citra log files, please see <a href="https://community.citra-emu.org/t/how-to-upload-the-log-file/296">this guide</a>.
To obtain your system information, please install <tt>inxi</tt> and run <tt>inxi -v3</tt>. |
EOF
zenity --warning --no-wrap --title "That's awkward ..." --text "$MESSAGE"
}
unset VK_ICD_FILENAMES VK_DRIVER_FILES
# Discord RPC
for i in {0..9}; do
test -S "$XDG_RUNTIME_DIR"/"discord-ipc-$i" || ln -sf {app/com.discordapp.Discord,"$XDG_RUNTIME_DIR"}/"discord-ipc-$i";
done
if ! prlimit --nofile=8192 citra-qt "$@"; then
report_error
fi

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -1,56 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 710f3fcfb..e5f4f4687 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,7 +94,11 @@ function(check_submodules_present)
endif()
endforeach()
endfunction()
-check_submodules_present()
+
+if (EXISTS "${PROJECT_SOURCE_DIR}/.git/objects")
+ # only check submodules when source is obtained via Git
+ check_submodules_present()
+endif()
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake
index a011c6cbf..87e9eef35 100644
--- a/CMakeModules/GenerateSCMRev.cmake
+++ b/CMakeModules/GenerateSCMRev.cmake
@@ -6,15 +6,27 @@ endfunction()
list(APPEND CMAKE_MODULE_PATH "${SRC_DIR}/externals/cmake-modules")
-# Find the package here with the known path so that the GetGit commands can find it as well
-find_package(Git QUIET PATHS "${GIT_EXECUTABLE}")
-
# generate git/build information
-include(GetGitRevisionDescription)
-get_git_head_revision(GIT_REF_SPEC GIT_REV)
-git_describe(GIT_DESC --always --long --dirty)
-git_branch_name(GIT_BRANCH)
get_timestamp(BUILD_DATE)
+if (EXISTS "${SRC_DIR}/.git/objects")
+ # Find the package here with the known path so that the GetGit commands can find it as well
+ find_package(Git QUIET PATHS "${GIT_EXECUTABLE}")
+ # only use Git to check revision info when source is obtained via Git
+ include(GetGitRevisionDescription)
+ get_git_head_revision(GIT_REF_SPEC GIT_REV)
+ git_describe(GIT_DESC --always --long --dirty)
+ git_branch_name(GIT_BRANCH)
+elseif(EXISTS "${SRC_DIR}/GIT-COMMIT" AND EXISTS "${SRC_DIR}/GIT-TAG")
+ # unified source archive
+ file(READ "${SRC_DIR}/GIT-COMMIT" GIT_REV_RAW LIMIT 64)
+ string(STRIP "${GIT_REV_RAW}" GIT_REV)
+ string(SUBSTRING "${GIT_REV_RAW}" 0 9 GIT_DESC)
+ set(GIT_BRANCH "HEAD")
+else()
+ # self-packed archive?
+ set(GIT_DESC "UNKNOWN")
+ set(GIT_BRANCH "UNKNOWN")
+endif()
# Generate cpp with Git revision from template
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well

View file

@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9af66009a1..2acd3bed9a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,7 +149,7 @@ if(GIT_FOUND)
diff --git a/CMake/ScmRevGen.cmake b/CMake/ScmRevGen.cmake
index aacf7491ce..503791cda8 100644
--- a/CMake/ScmRevGen.cmake
+++ b/CMake/ScmRevGen.cmake
@@ -7,7 +7,7 @@ if(GIT_FOUND)
OUTPUT_VARIABLE DOLPHIN_WC_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE)
# defines DOLPHIN_WC_DESCRIBE

View file

@ -0,0 +1,10 @@
diff -au1r emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp
--- emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp 2023-11-03 16:25:01.115126901 +0100
+++ emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp 2023-11-03 16:26:18.882607724 +0100
@@ -602,4 +602,4 @@
getHelpStyle(),
- "IT SEEMS AS IF YOU'RE NOT RUNNING THE LATEST ES-DE RELEASE, PLEASE UPGRADE BEFORE "
- "PROCEEDING AS THESE THEMES MAY NOT BE COMPATIBLE WITH YOUR VERSION",
+ "ES-DE THEME ENGINE WAS UPDATED UPSTREAM. THESE THEMES MAY NOT BE COMPATIBLE WITH THE CURRENT RETRODECK VERSION."
+ "CHECK IF A NEW RETRODECK UPDATE IS AVAILABLE, ELSE PLEASE WAIT FOR IT OR PROCEED AT YOUR OWN RISK.",
"OK", [] { return; }, "", nullptr, "", nullptr, nullptr, true));

View file

@ -1,22 +1,7 @@
diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstation-de/es-app/src/views/ViewController.cpp
--- emulationstation-de/es-app/src/views/ViewController.cpp 2023-08-23 13:12:15.625292630 +0200
+++ emulationstation-de/es-app/src/views/ViewController.cpp 2023-08-23 14:29:23.547223951 +0200
@@ -164,9 +164,7 @@
{
- mNoGamesErrorMessage = "NO GAME FILES WERE FOUND. EITHER PLACE YOUR GAMES IN "
- "THE CURRENTLY CONFIGURED ROM DIRECTORY OR CHANGE "
- "ITS PATH USING THE BUTTON BELOW. OPTIONALLY THE ROM "
- "DIRECTORY STRUCTURE CAN BE GENERATED WHICH WILL "
- "CREATE A TEXT FILE FOR EACH SYSTEM PROVIDING SOME "
- "INFORMATION SUCH AS THE SUPPORTED FILE EXTENSIONS.\n"
- "THIS IS THE CURRENTLY CONFIGURED ROM DIRECTORY:\n";
+ mNoGamesErrorMessage = "RETRODECK COULD NOT FIND ANY ROM FILES. "
+ "PLEASE PLACE YOUR ROM FILES INTO THE APPROPRIATE "
+ "SYSTEM SUBFOLDER IN THE CONFIGURED ROM DIRECTORY "
+ "AND RUN RETRODECK AGAIN TO SCAN YOUR LIBRARY.\n"
+ "THE CURRENTLY CONFIGURED ROM DIRECTORY IS:\n";
@@ -179,90 +177,3 @@
--- emulationstation-de/es-app/src/views/ViewController.cpp 2023-11-04 15:09:24.332178777 -0400
+++ emulationstation-de/es-app/src/views/ViewController.cpp 2023-11-04 15:13:59.015780009 -0400
@@ -195,91 +195,3 @@
mNoGamesMessageBox = new GuiMsgBox(
- HelpStyle(), mNoGamesErrorMessage + mRomDirectory, "CHANGE ROM DIRECTORY",
- [this] {
@ -29,22 +14,24 @@ diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstat
- if (Settings::getInstance()->getBool("VirtualKeyboard")) {
- mWindow->pushGui(new GuiTextEditKeyboardPopup(
- HelpStyle(), 0.0f, "ENTER ROM DIRECTORY PATH", currentROMDirectory,
- [this](const std::string& newROMDirectory) {
- Settings::getInstance()->setString("ROMDirectory",
- Utils::String::trim(newROMDirectory));
- Settings::getInstance()->saveFile();
- [this, currentROMDirectory](const std::string& newROMDirectory) {
- if (currentROMDirectory != newROMDirectory) {
- Settings::getInstance()->setString(
- "ROMDirectory", Utils::String::trim(newROMDirectory));
- Settings::getInstance()->saveFile();
-#if defined(_WIN64)
- mRomDirectory =
- Utils::String::replace(FileData::getROMDirectory(), "/", "\\");
- mRomDirectory =
- Utils::String::replace(FileData::getROMDirectory(), "/", "\\");
-#else
- mRomDirectory = FileData::getROMDirectory();
- mRomDirectory = FileData::getROMDirectory();
-#endif
- mNoGamesMessageBox->changeText(mNoGamesErrorMessage + mRomDirectory);
- mWindow->pushGui(new GuiMsgBox(HelpStyle(),
- "ROM DIRECTORY SETTING SAVED, RESTART\n"
- "THE APPLICATION TO RESCAN THE SYSTEMS",
- "OK", nullptr, "", nullptr, "", nullptr,
- true, true));
- mNoGamesMessageBox->changeText(mNoGamesErrorMessage + mRomDirectory);
- mWindow->pushGui(new GuiMsgBox(HelpStyle(),
- "ROM DIRECTORY SETTING SAVED, RESTART\n"
- "THE APPLICATION TO RESCAN THE SYSTEMS",
- "OK", nullptr, "", nullptr, "", nullptr,
- nullptr, true, true));
- }
- },
- false, "SAVE", "SAVE CHANGES?", "Currently configured path:",
- currentROMDirectory, "LOAD CURRENTLY CONFIGURED PATH",
@ -68,7 +55,7 @@ diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstat
- "ROM DIRECTORY SETTING SAVED, RESTART\n"
- "THE APPLICATION TO RESCAN THE SYSTEMS",
- "OK", nullptr, "", nullptr, "", nullptr,
- true));
- nullptr, true));
- },
- false, "SAVE", "SAVE CHANGES?", "Currently configured path:",
- currentROMDirectory, "LOAD CURRENTLY CONFIGURED PATH",
@ -82,9 +69,8 @@ diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstat
- "THIS WILL CREATE DIRECTORIES FOR ALL THE\n"
- "GAME SYSTEMS DEFINED IN es_systems.xml\n\n"
- "THIS MAY CREATE A LOT OF FOLDERS SO IT'S\n"
- "ADVICED TO REMOVE THE ONES YOU DON'T NEED\n\n"
- "PROCEED?",
- "YES",
- "ADVICED TO REMOVE THE ONES YOU DON'T NEED",
- "PROCEED",
- [this] {
- if (!SystemData::createSystemDirectories()) {
- mWindow->pushGui(new GuiMsgBox(HelpStyle(),
@ -92,7 +78,7 @@ diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstat
- "GENERATED, EXIT THE APPLICATION AND PLACE\n"
- "YOUR GAMES IN THE NEWLY CREATED FOLDERS",
- "OK", nullptr, "", nullptr, "", nullptr,
- true));
- nullptr, true));
- }
- else {
- mWindow->pushGui(new GuiMsgBox(HelpStyle(),
@ -100,19 +86,16 @@ diff -au1r emulationstation-de/es-app/src/views/ViewController.cpp emulationstat
- "PERMISSION PROBLEMS OR DISK FULL?\n\n"
- "SEE THE LOG FILE FOR MORE DETAILS",
- "OK", nullptr, "", nullptr, "", nullptr,
- true));
- nullptr, true));
- }
- },
- "NO", nullptr, "", nullptr, true));
- "CANCEL", nullptr, "", nullptr, nullptr, false));
- },
- "QUIT",
+ HelpStyle(), mNoGamesErrorMessage + mRomDirectory, "QUIT",
[] {
@@ -272,3 +183,3 @@
@@ -289,3 +201,3 @@
},
- true, false,
+ "", nullptr, "", nullptr, true, false,
- nullptr, true, false,
+ "", nullptr, "", nullptr, nullptr, true, true,
(mRenderer->getIsVerticalOrientation() ?
@@ -1446 +1357,2 @@
}
+

View file

@ -0,0 +1,31 @@
#!/bin/bash
mkdir /tmp
branch="00a226062fff37209d98e0ab048ac89af50ecacc"
git clone "https://gitlab.com/es-de/emulationstation-de.git" /tmp/emulationstation-de
pushd .
cd /tmp/emulationstation-de
git checkout $branch
popd
mkdir patches-tmp
cp /tmp/emulationstation-de/es-app/src/guis/GuiMenu.cpp ./patches-tmp
cp /tmp/emulationstation-de/es-app/src/guis/GuiMenu.h ./patches-tmp
cp /tmp/emulationstation-de/es-app/src/views/ViewController.cpp ./patches-tmp
cp /tmp/emulationstation-de/es-core/src/Window.cpp ./patches-tmp
cp /tmp/emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp ./patches-tmp
read -p "Please edit the files in \"patches-tmp\" and press enter to continue."
diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiMenu.cpp ./patches-tmp/GuiMenu.cpp > GuiMenu.cpp.patch
diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiMenu.h ./patches-tmp/GuiMenu.h > GuiMenu.h.patch
diff -au1r /tmp/emulationstation-de/es-app/src/views/ViewController.cpp ./patches-tmp/ViewController.cpp > ViewController.cpp.patch
diff -au1r /tmp/emulationstation-de/es-core/src/Window.cpp ./patches-tmp/Window.cpp > Window.cpp.patch
diff -au1r /tmp/emulationstation-de/es-app/src/guis/GuiThemeDownloader.cpp ./patches-tmp/GuiThemeDownloader.cpp > GuiThemeDownloader.cpp.patch
rm -rf patches-tmp
echo "Done, now please remeber to edit the headers of the patch files with the correct paths."

View file

@ -1,41 +0,0 @@
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index 3c00336d..cda94d92 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -1707,9 +1707,10 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector<
{
idx = m_spin_playback_sample;
sampleend = m_sample[idx].data.size();
- out = m_sample[idx].data[m_spin_samplepos++];
-
- if (m_spin_samplepos >= sampleend)
+ m_spin_samplepos++;
+ if (m_spin_samplepos < sampleend)
+ out = m_sample[idx].data[m_spin_samplepos];
+ else
{
// Motor sample has completed
switch (m_spin_playback_sample)
@@ -1763,7 +1764,8 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector<
idx = m_step_base + m_seek_playback_sample;
sampleend = m_sample[idx].data.size();
// Mix it into the stream value
- out += m_sample[idx].data[(int)m_seek_samplepos];
+ if (m_seek_samplepos < sampleend)
+ out += m_sample[idx].data[(int)m_seek_samplepos];
// By adding different values than 1, we can change the playback speed
// This will be used to adjust the seek sound
m_seek_samplepos += m_seek_pitch;
@@ -1781,8 +1783,10 @@ void floppy_sound_device::sound_stream_update(sound_stream &stream, std::vector<
sampleend = m_sample[idx].data.size();
// Mix it into the stream value
- out += m_sample[idx].data[m_step_samplepos++];
- if (m_step_samplepos >= sampleend)
+ m_step_samplepos++;
+ if (m_step_samplepos < sampleend)
+ out += m_sample[idx].data[m_step_samplepos];
+ else
{
// Step sample done
m_step_samplepos = 0;

View file

@ -1,33 +0,0 @@
#
# CORE SEARCH PATH OPTIONS
#
homepath $HOME/.mame
rompath /app/share/mame/roms
hashpath /app/share/mame/hash
samplepath /app/share/mame/samples
artpath /app/share/mame/artwork
ctrlrpath /app/share/mame/ctrlr
inipath $HOME/.mame;/app/share/mame/ini
fontpath /app/bin/
cheatpath /app/share/mame/cheat
crosshairpath /app/share/mame/crosshair
pluginspath /app/share/mame/plugins
languagepath /app/share/mame/language
swpath /app/share/mame/software
#
# CORE OUTPUT DIRECTORY OPTIONS
#
cfg_directory $HOME/.mame/cfg
nvram_directory $HOME/.mame/nvram
input_directory $HOME/.mame/inp
state_directory $HOME/.mame/sta
snapshot_directory $HOME/.mame/snap
diff_directory $HOME/.mame/diff
comment_directory $HOME/.mame/comments
share_directory $HOME/.mame/share
#
# OSD VIDEO OPTIONS
#
video opengl

View file

@ -1,28 +0,0 @@
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index a0293063..c4989abb 100644
--- a/src/emu/sound.cpp
+++ b/src/emu/sound.cpp
@@ -761,6 +761,9 @@ read_stream_view sound_stream::update_view(attotime start, attotime end, u32 out
}
g_profiler.stop();
+ if (!m_output_view[outputnum].valid())
+ m_output_view[outputnum] = empty_view(start, end);
+
// return the requested view
return read_stream_view(m_output_view[outputnum], start);
}
diff --git a/src/emu/sound.h b/src/emu/sound.h
index 15f6a574..bfa45c45 100644
--- a/src/emu/sound.h
+++ b/src/emu/sound.h
@@ -284,6 +284,9 @@ public:
return *this;
}
+ // check basic constraints
+ bool valid() const { return m_buffer != nullptr; }
+
// return the local gain
sample_t gain() const { return m_gain; }

View file

@ -1,13 +0,0 @@
diff --git a/src/devices/machine/ym3802.cpp b/src/devices/machine/ym3802.cpp
index 4a8f6a7ffae..d1bf2b961f6 100644
--- a/src/devices/machine/ym3802.cpp
+++ b/src/devices/machine/ym3802.cpp
@@ -45,7 +45,7 @@ void ym3802_device::device_start()
void ym3802_device::device_reset()
{
- m_reg.clear();
+ m_reg.assign(REG_MAX, 0);
reset_irq(0xff);
transmit_register_reset();
receive_register_reset();

View file

@ -0,0 +1,34 @@
From f2d3b349d8487cf0ee50b36ba024ac513d36f826 Mon Sep 17 00:00:00 2001
From: Carles Pastor <cpbadosa@gmail.com>
Date: Sat, 20 Aug 2022 13:35:32 +0200
Subject: [PATCH] Detect we are running inside a flatpak sandbox
---
Source/Core/UICommon/UICommon.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Source/Core/UICommon/UICommon.cpp b/Source/Core/UICommon/UICommon.cpp
index 8d9dc2abb8..8a9d39a3d5 100644
--- a/Source/Core/UICommon/UICommon.cpp
+++ b/Source/Core/UICommon/UICommon.cpp
@@ -348,7 +348,7 @@ void SetUserDirectory(std::string custom_path)
// -> Use GetExeDirectory()/User
// 2. $DOLPHIN_EMU_USERPATH is set
// -> Use $DOLPHIN_EMU_USERPATH
- // 3. ~/.dolphin-emu directory exists
+ // 3. ~/.dolphin-emu directory exists, and we're not in flatpak
// -> Use ~/.dolphin-emu
// 4. Default
// -> Use XDG basedir, see
@@ -381,7 +381,7 @@ void SetUserDirectory(std::string custom_path)
{
user_path = home_path + "." DOLPHIN_DATA_DIR DIR_SEP;
- if (!File::Exists(user_path))
+ if (File::Exists("/.flatpak-info") || !File::Exists(user_path))
{
const char* data_home = getenv("XDG_DATA_HOME");
std::string data_path =
--
2.37.1

View file

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9af66009a1..2acd3bed9a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,7 +149,7 @@ if(GIT_FOUND)
OUTPUT_VARIABLE DOLPHIN_WC_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE)
# defines DOLPHIN_WC_DESCRIBE
- execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty
+ execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long
OUTPUT_VARIABLE DOLPHIN_WC_DESCRIBE
OUTPUT_STRIP_TRAILING_WHITESPACE)

@ -1 +1 @@
Subproject commit 9dc439300e92338d5b2bc3fc680eedd4fe1d3b0c
Subproject commit a96821769848a711db1ed0b71883f91383e2b4ab

@ -1 +1 @@
Subproject commit ff79306a50b484ce992d02a23e091d79fcde4cac
Subproject commit f9e0cd83f366025c15de7de46621963cab793ea9

@ -1 +1 @@
Subproject commit 76809270588f87c6c14df96fef2dde9a7bac84f4
Subproject commit 55a8e460c6343229597a13e973ba4855c27a1c4c

BIN
res/RetroDECK_OLDLogo.xcf Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 122 KiB

BIN
res/retrodeck.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -20,6 +20,7 @@ Arguments:
--compress-one <file> Compresses target file to a compatible format
--compress-all <format> Compresses all supported games into compatible format. Available formats are \"chd\", \"zip\", \"rvz\" and \"all\".
--reset-emulator <emulator> Reset one or more emulator configs to the default values
--reset-emulationstation Reset EmulationStation DE to default settings
--reset-retrodeck Starts the initial RetroDECK installer (backup your data first!)
For flatpak run specific options please run: flatpak run -h
@ -73,6 +74,18 @@ https://retrodeck.net
exit
fi
;;
--reset-emulationstation*)
echo "You are about to reset EmulationStation DE to default settings. Your scraped media, downloaded themes and gamelists will remain untouched."
read -p "Enter 'y' to continue, 'n' to stop: " response
if [[ $response == [yY] ]]; then
prepare_emulator "reset" "emulationstation" "cli"
read -p "The process has been completed, press Enter key to start RetroDECK."
shift # Continue launch after previous command is finished
else
read -p "The process has been cancelled, press Enter key to exit."
exit
fi
;;
--reset-retrodeck*)
echo "You are about to reset RetroDECK completely!"
read -p "Enter 'y' to continue, 'n' to stop: " response

View file

@ -29,12 +29,14 @@ source /app/libexec/global.sh
# - Citra
# - Dolphin
# - Duckstation
# - MAME
# - MelonDS
# - PCSX2
# - PPSSPP
# - Primehack
# - RPCS3
# - Ryujinx
# - Vita3K
# - XEMU
# - Yuzu
# - Tools
@ -70,15 +72,18 @@ source /app/libexec/global.sh
# - Reset Citra
# - Reset Dolphin
# - Reset Duckstation
# - Reset GZDoom
# - Reset MelonDS
# - Reset PCSX2
# - Reset PPSSPP
# - Reset Primehack
# - Reset RPCS3
# - Reset Ryujinx
# - Reset Vita3k
# - Reset XEMU
# - Reset Yuzu
# - Reset All Emulators
# - Reset EmulationStation DE
# - Reset RetroDECK
# - RetroDECK: About
# - RetroDECK Version History
@ -435,12 +440,14 @@ 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")
@ -466,6 +473,10 @@ configurator_open_emulator_dialog() {
duckstation-qt
;;
"MAME" )
mame
;;
"MelonDS" )
melonDS
;;
@ -490,6 +501,10 @@ configurator_open_emulator_dialog() {
ryujinx-wrapper
;;
"Vita3K" )
Vita3K
;;
"XEMU" )
xemu
;;
@ -529,7 +544,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!"
@ -958,7 +973,7 @@ configurator_check_multifile_game_structure() {
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator - Check & Verify: Multi-file structure" \
--text="The following games were found to have the incorrect folder structure:\n\n$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/.logs"
--text="The following games were found to have the incorrect folder structure:\n\n$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")\n\nIncorrect folder structure can result in failure to launch games or saves being in the incorrect location.\n\nPlease see the RetroDECK wiki for more details!\n\nYou can find this list of games in ~/retrodeck/logs"
else
configurator_generic_dialog "RetroDECK Configurator - Check & Verify: Multi-file structure" "No incorrect multi-file game folder structures found."
fi
@ -971,6 +986,7 @@ configurator_reset_dialog() {
--column="Choice" --column="Action" \
"Reset Specific Emulator" "Reset only one specific emulator to default settings" \
"Reset All Emulators" "Reset all emulators to default settings" \
"Reset EmulationStation DE" "Reset the ES-DE frontend" \
"Reset RetroDECK" "Reset RetroDECK to default settings" )
case $choice in
@ -986,23 +1002,31 @@ configurator_reset_dialog() {
"Citra" "Reset the N3DS emulator Citra to default settings" \
"Dolphin" "Reset the Wii/GameCube emulator Dolphin to default settings" \
"Duckstation" "Reset the PSX emulator Duckstation to default settings" \
"GZDoom" "Reset the GZDoom Doom engine to default settings" \
"MAME" "Reset the Multiple Arcade Machine Emulator (MAME) to default settings" \
"MelonDS" "Reset the NDS emulator MelonDS to default settings" \
"PCSX2" "Reset the PS2 emulator PCSX2 to default settings" \
"PPSSPP" "Reset the PSP emulator PPSSPP to default settings" \
"Primehack" "Reset the Metroid Prime emulator Primehack to default settings" \
"RPCS3" "Reset the PS3 emulator RPCS3 to default settings" \
"Ryujinx" "Reset the Switch emulator Ryujinx to default settings" \
"Vita3k" "Reset the PS Vita emulator Vita3k to default settings" \
"XEMU" "Reset the XBOX emulator XEMU to default settings" \
"Yuzu" "Reset the Switch emulator Yuzu to default settings" )
case $emulator_to_reset in
"RetroArch" | "XEMU" ) # Emulators that require network access
if [[ $(configurator_reset_confirmation_dialog "$emulator_to_reset" "Are you sure you want to reset the $emulator_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
prepare_emulator "reset" "$emulator_to_reset" "configurator"
configurator_process_complete_dialog "resetting $emulator_to_reset"
"RetroArch" | "Vita3k" | "XEMU" ) # Emulators that require network access
if [[ $(check_network_connectivity) == "true" ]]; then
if [[ $(configurator_reset_confirmation_dialog "$emulator_to_reset" "Are you sure you want to reset the $emulator_to_reset emulator to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
prepare_emulator "reset" "$emulator_to_reset" "configurator"
configurator_process_complete_dialog "resetting $emulator_to_reset"
else
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled."
configurator_reset_dialog
fi
else
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled."
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Resetting this emulator requires active network access.\nPlease try again when you are connected to an Internet-capable network.\n\nReset process cancelled."
configurator_reset_dialog
fi
;;
@ -1025,17 +1049,36 @@ configurator_reset_dialog() {
;;
"Reset All Emulators" )
if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
(
prepare_emulator "reset" "all"
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Finishing Initialization" \
--text="RetroDECK is finishing the reset process, please wait."
configurator_process_complete_dialog "resetting all emulators"
if [[ $(check_network_connectivity) == "true" ]]; then
if [[ $(configurator_reset_confirmation_dialog "all emulators" "Are you sure you want to reset all emulators to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
(
prepare_emulator "reset" "all"
) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Finishing Initialization" \
--text="RetroDECK is finishing the reset process, please wait."
configurator_process_complete_dialog "resetting all emulators"
else
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled."
configurator_reset_dialog
fi
else
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Reset process cancelled."
configurator_generic_dialog "RetroDeck Configurator - RetroDECK: Reset" "Resetting all emulators requires active network access.\nPlease try again when you are connected to an Internet-capable network.\n\nReset process cancelled."
configurator_reset_dialog
fi
;;
"Reset EmulationStation DE" )
if [[ $(configurator_reset_confirmation_dialog "EmulationStation DE" "Are you sure you want to reset EmulationStation DE to default settings?\n\nYour scraped media, downloaded themes and gamelists will not be touched.\n\nThis process cannot be undone.") == "true" ]]; then
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Configurator Utility - Reset EmulationStation DE" \
--text="You are resetting EmulationStation DE to its default settings.\n\nAfter the process is complete you will need to exit RetroDECK and run it again."
prepare_emulator "reset" "emulationstation" "configurator"
configurator_process_complete_dialog "resetting EmulationStation DE"
else
configurator_generic_dialog "RetroDeck Configurator - EmulationStation DE: Reset" "Reset process cancelled."
configurator_reset_dialog
fi
;;

View file

@ -1,171 +0,0 @@
# Archive
The Archive have some legacy information from the wiki, for those that would want to read it or run some older version of RetroDECK.
# Legacy included Themes
## Alekfull NX (Light)
| System View | Gamelist View |
|----|----|
| ![rd-theme-AlekfullNXLight-SystemView](https://user-images.githubusercontent.com/1454947/193457765-e56875cd-a34d-4675-8267-56d04d4d1c32.jpeg) | ![rd-theme-AlekfullNXLight-GamelistView](https://user-images.githubusercontent.com/1454947/193457762-4d997ca3-d77c-4993-81bb-0c1a78f240a1.jpeg) |
**Description:** <br>
Alekfull NX was inspired by the straightforward and intuitive interface of the Nintendo Switch and offers a similar experience but with a light retro twist.
Source: [Alekfull NX (Light)](https://github.com/anthonycaccese/alekfull-nx-retropie/tree/retro-deck-esde-1.x-light)<br>
Ported and remixed by: [anthonycaccese](https://github.com/anthonycaccese)<br>
Ported from: [Alekfull-NX for Batocera](https://github.com/fagnerpc/Alekfull-NX)<br>
Original creator: [fagnerpc](https://github.com/fagnerpc)
## Retrofix Revisited
| System View | Gamelist View |
|----|----|
| ![rd-theme-RetrofixRevisited-SystemView](https://user-images.githubusercontent.com/1454947/193457596-05dc4316-9f2a-41ae-aa27-9609c680ec5a.jpeg) | ![rd-theme-RetrofixRevisited-GamelistView](https://user-images.githubusercontent.com/1454947/193457594-b803546b-36eb-4e71-9eca-bfee1d81ba36.jpeg) |
**Description:** <br>
Retrofix Revisited is a theme where the goal is to showcase that the art of video games can be more interesting than the games themselves.
Source: [Retrofix Revisited](https://github.com/anthonycaccese/retrofix-revisited-retropie)<br>
Ported and remixed by: [anthonycaccese](https://github.com/anthonycaccese)<br>
Ported from: [ES Theme Retrofix for Batocera](https://github.com/20GotoTen/es-theme-retrofix)<br>
Original creator: [20GotoTen](https://github.com/20GotoTen)<br>
## Slate-DE
| System View | Gamelist View |
|----|----|
| ![rd-SlateDE-SystemView](https://user-images.githubusercontent.com/1454947/193464197-14cb8c12-77ea-4b8b-965f-fa51a5d004b9.jpeg) | ![rd-SlateDE-GamelistView](https://user-images.githubusercontent.com/1454947/193464213-b73f18a3-840d-4cab-bac2-268bc51fbc03.jpeg) |
**Description:** <br>
Slate-DE is based on the community created theme Recalbox-Multi for Recalbox.
Source: [slate-DE](https://gitlab.com/es-de/emulationstation-de/-/tree/master/themes/slate-DE)<br>
Created by: [LeonSE from ES-DE](https://gitlab.com/es-de)<br>
Inspired by: [Recalbox-Multi](https://gitlab.com/recalbox/recalbox-themes/-/tree/master/themes/recalbox-multi)
## Modern-DE
| System View | Gamelist View |
|----|----|
| ![rd-ModernDE-SystemView](https://user-images.githubusercontent.com/1454947/193464329-938c5b68-6ae9-4ab6-8ac7-e7312e9698c5.jpeg) | ![rd-ModernDE-GamelistView](https://user-images.githubusercontent.com/1454947/193464333-890444ed-dd85-4322-8056-c3be8df6cad2.jpeg) |
**Description:** <br>
Modern-DE is based on ES-Theme-Switch for RetroPie, a lightweight Switch inspired theme.
Source: [Modern-DE](https://gitlab.com/es-de/emulationstation-de/-/tree/master/themes/modern-DE)<br>
Created by: [LeonSE from ES-DE](https://gitlab.com/es-de)<br>
Inspired by: [ES-Theme-Switch](https://github.com/lilbud/es-theme-switch)
## NSO Menu Interpreted
| System View | Gamelist View |
|----|----|
| ![rd-NSO-SystemView](https://user-images.githubusercontent.com/1454947/222733121-975db30a-098c-4f77-aebd-f252ebe8c4cc.png) | ![rd-NSO-GamelistView](https://user-images.githubusercontent.com/1454947/222733148-42d38a12-34d1-4063-8ecc-13d16c1e44d3.png) |
**Description:** <br>
NSO Menu Interpreted is a theme that takes inspiration from the menu design of Nintendo Switch Online.
Source: [NSO-Menu-Interpreted](https://github.com/anthonycaccese/nso-menu-interpreted-es-de)<br>
Created by: [anthonycaccese](https://github.com/anthonycaccese) & [rogs123](https://github.com/rogs123)
# Legacy Steam Deck Inputs Pre: 0.7b
These are legacy inputs from the old RetroDECK TEST Official Layout profile for the Steam Deck
| Command | Button / Combination |
| :--- | :---: |
| RetroArch Menu | `L3+R3` or `SELECT+Y` |
| Quit Game | `START + SELECT` |
| Pause Emulation | `Select + B` |
| Take Screenshot | `Select + A` |
| Select Save State Slot +| `Select + D-Pad UP` |
| Select Save State Slot -| `Select + D-Pad Down` |
| Load State | `Select + L1` |
| Save State | `Select + R1` |
| Rewind Emulation* | `Select + L2` |
| Fast forward Emulation* | `Select + R2` |
`*` Fast forwarding and rewind must be enabled inside RetroDeck firstly inside the Tools menu.
## MelonDS
| Command | Button / Combination |
| :--- | :---: |
| Fast forward Emulation* | `R2 or R4` |
| Swap screen layout | `L3 or R5` |
| Pause/Resume | `R3 or L4` |
## CITRA (SA)
| Command | Button / Combination |
| :--- | :---: |
| Load State | `L4` |
| Save State | `R4` |
| Citra Main Menu | `R5` |
| Swap Screens | `L5` |
**NOTE:** in order to quit CITRA just exit from the menu.
## YUZU
| Command | Button / Combination |
| :--- | :---: |
| Pause/Resume | `R4 + A` |
| Load Amiibo | `R4 + X` |
| Docked/Undocked Mode | `R4 + Y` |
| Yuzu Main Menu | `R4 + B` |
| Exit Yuzu | `R4 + Select` |
| Take Screenshot | `R4` |
| Home | `L4` |
## Ryujinx
Please note!
Unfortunately Ryujinx doesn't support the full hotkey customization yet. These are the default hotkeys as of now:
| Command | Button / Combination |
| :--- | :---: |
| Vsync Toggle | `F1` |
| Sound Mute/Unmute | `F2` |
| Show UI | `F4` |
| Pause/Resume | `F5` |
| Screenshot | `F8` |
| Fulscreen Toggle | `F11` or `Alt+Enter` |
## DOLPHIN (SA)
| Command | Button / Combination |
| :--- | :---: |
| Take Screenshot | `Select + A` |
| Load State | `Select + L2` |
| Save State | `Select + R2` |
| Fastforward | `Select + R4` |
| Slowdown | `Select + L4` |
| Exit Dolphin | `Select + Start` |
## PPSSPPSDL (SA)
| Command | Button / Combination |
| :--- | :---: |
| Fastforward | `R2` |
| Rewind | `L2` |
| Pause/Resume | `R4` |
| Take Screenshot | `L4` |
| Load State | `L5` |
| Save State | `R5` |
## Duckstation (SA)
| Command | Button / Combination |
| :--- | :---: |
| Fastforward | `R4` |
| Rewind | `L4` |
| Load State | `L5` |
| Save State | `R5` |

View file

@ -1,31 +0,0 @@
# Citra - 3DS
The `~/retrodeck/mods/citra/` represents the `/load/mods/` folder in Citra.
**Note:**<br>
`TITLEID` is different for every game.
## How do I add mods?
**Requirements:** Mod files <br>
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`.
There are two ways of adding mods into Citra
### From Citra
1. Extract any mod from compressed `.zip` or any other format to folders.
2. Open up Citra inside `RetroDECK Configurator` by pressing `Open Emulator` - `Citra`.
3. Right click on the game you want to add mods into.
4. Click on `Open Mods Location`.
5. Paste the mod files inside that directory, each folder is stored by the `TITLLEID` of the game.
6. Quit Citra
### From the mod folder directly
1. Extract any mod files from compressed `.zip` or any other format into folders.
2. Go into `~/retrodeck/mods/citra/`. The folders are all named by `TITLEID`.
3. Past the mods into the right `~/retrodeck/mods/yuzu/<TITLEID>` folder.

View file

@ -1,43 +0,0 @@
# Citra - 3DS
The `~/retrodeck/texture_packs/citra/` represents the `/load/textures` folder in Citra.
**Note:** <br>
Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it.
**Note:**<br>
`TITLEID` is different for every game.
## Enable Custom Textures
* Open up Citra inside `RetroDECK Configurator` by pressing `Open Emulator` - `Citra`.
* Press `Emulation` -> `Configure` -> `Graphics` -> `Use Custom Textures` and set it to `On`.
## How do I add texture packs?
**Requirements:** Texture pack files <br>
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`.
There are two ways of adding texture packs into Citra
### From Citra
1. Extract any texture files from compressed `.zip` or any other format to folders.
2. Open up Citra inside `RetroDECK Configurator` by pressing `Open Emulator` - `Citra`.
3. Right click on the game you want to add textures into.
4. Click on `Open Custom Textures Location`.
5. Paste the texture folders inside that directory, each folder is stored by the `TITLLEID` of the game.
6. Quit Citra
### From the texture folder directly
1. Extract any texture pack files from compressed `.zip` or any other format into folders.
2. Go into `~/retrodeck/texture_packs/citra/`. The folders are all named by `TITLEID`.
3. Move textures into the right `~/retrodeck/texture_packs/citra/<TITLEID>` folder.
Example:
* You have a `.zip` file for a game that contains the `/load/textures/0000001000` folders.
* All you need to do is take the TITLEID folder: `0000001000` and put it into `~/retrodeck/texture_packs/citra/`
* So the end result looks like: `~/retrodeck/texture_packs/citra/0000001000`

View file

@ -1,116 +0,0 @@
# 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.
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
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
cd RetroDECK
git submodule init
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 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
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
```
To get the list of the available binaries to launch, then just write the command, such as `yuzu` or `retroarch`
This is useful when for example a game is not starting and you want the output printed in the terminal.
# 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
- `flatpak install RetroDECK.flatpak` or whatever the filename is
If this doesn´t work:
- cd into your download location
- `flatpak install RetroDECK.flatpak`
- 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
- 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
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>
[Theme Development ](https://gitlab.com/es-de/emulationstation-de/-/blob/master/THEMES-DEV.md)

View file

@ -1,36 +0,0 @@
# Dolphin / Primehack - GC & Wii
Primehack is based on Dolphin so the method is the same.
The `~/retrodeck/mods/dolphin/` & `~/retrodeck/mods/primehack/` that represents the `/load/GraphicMods` folder.<br>
**Note:** <br>
Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it.
**Note:**<br>
`GAME_ID` is different for every game.
## Enable Custom Textures
* Open up Dolphin or Primehack inside `RetroDECK Configurator` by pressing `Open Emulator` - `Dolphin` or `Primehack`.
* Press `Options` -> `Graphic Settings`
`Enable Graphics Mods` and set it to `On`.<br>
## How do I add mods?
**Requirements:** Mod files <br>
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`.
### Directly into the mods folder
1. Extract any mod files from compressed `.zip` or any other format into folders.
2. Go into mods folders, they contain folders that are all named by `GAME_ID`.<br>
**Dolphin:**`~/retrodeck/mods/dolphin/` <br>
**Primehack:**`~/retrodeck/mods/primehack/`.
3. Move the mods into the right folder: <br>
**Dolphin:** `~/retrodeck/mods/dolphin/<GAME_ID>` <br>
**Primehack:** `~/retrodeck/mods/primehack/<GAME_ID>` <br>

View file

@ -1,39 +0,0 @@
# Dolphin / Primehack - GC & Wii
Primehack is based on Dolphin so the method is the same.
The `~/retrodeck/texture_packs/dolphin/` & `~/retrodeck/texture_packs/primehack/` represents the `/load/Textures` folder.<br>
**Note:** <br>
Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it.
**Note:**<br>
`GAME_ID` is different for every game.
## Enable Custom Textures
* Open up Dolphin or Primehack inside `RetroDECK Configurator` by pressing `Open Emulator` - `Dolphin` or `Primehack`.
* Press `Options` -> `Graphic Settings`
`Load Custom Textures` and set it to `On`.<br>
`Prefetch Custom Textures` and set it to `On`.
## How do I add texture packs?
**Requirements:** Texture pack files <br>
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`.
### Directly in the folder
1. Extract any texture pack files from compressed `.zip` or any other format into folders.
2. Go into texture pack folders, they contain folders that are all named by `GAME_ID`.<br>
**Dolphin:**`~/retrodeck/texture_packs/dolphin/` <br>
**Primehack:**`~/retrodeck/texture_packs/primehack/`.
3. Move the textures into the right folder: <br>
**Dolphin:** `~/retrodeck/texture_packs/dolphin/<GAME_ID>` <br>
**Primehack:** `~/retrodeck/texture_packs/primehack/<GAME_ID>` <br>

View file

@ -1,30 +0,0 @@
# Duckstation - PSX
The `~/retrodeck/texture_packs/duckstaiton/` represents the `/duckstation/textures/` folder in Duckstation.
**Note:** <br>
Some texture packs could made for a specific version or region of a game. Make sure you have the right game and textures for it.
**Note:**<br>
`TITLEID` is different for every game.
## Enable Custom Textures
* Open up Duckstation inside `RetroDECK Configurator` by pressing `Open Emulator` - `Duckstation`.
* Go to `Settings` -> `Advanced` -> `Tweaks/Hacks` <br>
`Enable VRAM Write Texture Replacement` and set it to `On`.<br>
`Preload Texture Replacements` and set it to `On`.<br>
## How do I add texture packs?
**Requirements:** Texture pack files <br>
**NOTE:** On the Steam Deck this could be easier to do in `Desktop Mode`.
### Texture folder directly
1. Extract any texture pack files from compressed `.zip` or any other format into folders.
2. Go into `~/retrodeck/texture_packs/duckstation/`. The folders are all named by `TITLEID`.
3. Move textures into the right `~/retrodeck/texture_packs/duckstation/<TITLEID>` folder.

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,97 +0,0 @@
# The User Guide
RetroDECK uses EmulationStation Desktop Edition (ES-DE) as its bundled interface.
The official EmulationStation Desktop Edition user guide is over at their gitlab.<br>
[EmulationStation Desktop Edition user guide](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md)
Note that the guide is written in a general way for the application and not how RetroDECK handles certain configurations. Also note that RetroDECK is currently not shipped with all the emulators ES-DE supports in the user guide.
_EmulationStation Desktop Edition (ES-DE) and it's guide is written by [Leon Styhre](https://gitlab.com/leonstyhre)<br>
Published under the MIT-Licence._
# Recommended sections in the user guide:
## General Interface
### General UI Settings
Various settings that affect the user interface.<br>
[UI Settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#ui-settings)
### Other UI settings
These are mostly technical settings.<br>
[Other UI settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#other-settings)
### General navigation
These are the buttons mappings automatically applied by ES-DE.<br>
[General navigation](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#general-navigation)
If you are using the Steam Deck look at RetroDECKs hotkeys:
[Steam Deck: Hotkeys ](https://github.com/XargonWan/RetroDECK/wiki/Steam-Deck:-Hotkeys)
### Sound Settings
Various sound settings.<br>
[Sound settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#sound-settings)
## Game settings and filters
### Game options menu
Various navigation for the game options menu.<br>
[Game options menu](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#game-options-menu)
### Game collections
ES-DE provides two types of collections, Automatic collections and Custom collections, the latter being defined by the user. Collections are as the name implies only collections of games already present in your actual game systems, so they're basically grouping of games into convenient views.<br>
[Game collections](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#game-collections)
### Set alternative emulator.
ES-DE allows you to change emulators for systems that has many different emulators.<br>
[Set alternative emulator](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#other-settings-1)
## Scraping and editing roms: metadata, images etc...
### Scraper
Contains the various options for the scraper, which is used to download metadata, images and videos for your games.<br>
[Scraper guide](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#scraping)
### Scraper account settings
Setup of ScreenScraper account.<br>
[Scraper account settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#account-settings)
### Content Settings
Describes the content types to include in the scraping.<br>
[Content settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#content-settings)
### How to: Manually copy custom media files (images, videos etc..)
How to add custom media files to the ES-DE interface. For example you want other images then those on screenscraper or the game you add don't exists.<br>
[How to: Manually copy custom media files](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#manually-copying-game-media-files)
### Miximage settings
These are the settings for the miximage generator, which can either be run from the scraper (single-game scraper or multi-scraper) or from the offline generator. The miximage combines the screenshot, marquee, box/cover and physical media images to make a composite picture that is displayed in the gamelist view. There are various settings for the generator.<br>
[Miximage settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#miximage-settings)
### Metadata editor
In the metadata editor, you can modify the metadata, scrape for game info and media files, clear the entry which will delete all metadata and game media files, or delete the entire game which also removes its file on the filesystem. <br>
[Metadata editor](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#metadata-editor)
### Various other scraping settings.<br>
[Other scraper settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#other-settings)
## Media, video, themes and slideshow settings
### Video screensaver settings
Options specific to the video screensaver.<br>
[Video screensaver settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#video-screensaver-settings)
### Media viewer settings
Settings for the media viewer that is accessible from the gamelist views.<br>
[Media viewer settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#media-viewer-settings)
### Slideshow screensaver settings
Options specific to the slideshow screensaver.<br>
[Slideshow screensaver settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#slideshow-screensaver-settings)
### Theme settings
Tells you how to use themes.<br>
[Theme settings](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#themes)

View file

@ -1,132 +0,0 @@
A BIOS or firmware is like the brain of a computer or electronic device. It helps the device start up and makes sure all its parts work together smoothly. In emulation, having the correct BIOS/firmware is important because it allows the software to pretend to be the real device and work properly.
That's why some emulators require BIOS and Firmware files to work correctly or at all.
Generally the bios files should be put in `~/retrodeck/bios`.
## RetroArch (Libretro)
Some cores may need some BIOS files to work or run correctly.
Here are the most common systems, if you find more we can add them to this wiki.
However the extended information can be found on the [official libretro documentation](https://docs.libretro.com/guides/bios/), just search for your core.
More info by clicking on the system name down here.
[Sony Playstation](https://docs.libretro.com/library/beetle_psx/#bios)
```
scph5500.bin PS1 JP BIOS - Required for JP games 8dd7d5296a650fac7319bce665a6a53c
scph5501.bin PS1 US BIOS - Required for US games 490f666e1afb15b7362b406ed1cea246
scph5502.bin PS1 EU BIOS - Required for EU games 32736f17079d0b2b7024407c39bd3050
```
[SegaCD](https://docs.libretro.com/library/genesis_plus_gx/#bios)
```
bios_CD_E.bin | MegaCD EU BIOS - Required for MegaCD EU games | e66fa1dc5820d254611fdcdba0662372
bios_CD_U.bin | SegaCD US BIOS - Required for SegaCD US games | 854b9150240a198070150e4566ae1290
bios_CD_J.bin | MegaCD JP BIOS - Required for MegaCD JP games | 278a9397d192149e84e820ac621a8edd
```
[Sega Saturn](https://docs.libretro.com/library/beetle_saturn/#bios)
```
sega_101.bin | Saturn JP BIOS - Required for JP games | 85ec9ca47d8f6807718151cbcca8b964
mpr-17933.bin | Saturn US.mdEU BIOS - Required for US/EU games | 3240872c70984b6cbfda1586cab68dbe
mpr-18811-mx.ic1 | The King of Fighters '95 ROM Cartridge - Required for this game | 255113ba943c92a54facd25a10fd780c
mpr-19367-mx.ic1 | Ultraman: Hikari no Kyojin Densetsu ROM Cartridge - Required for this game | 1cd19988d1d72a3e7caa0b73234c96b4
```
*only required for a specific game
[PPSSPP](https://docs.libretro.com/library/ppsspp/)<br/>
Starting everything should be included. <br/>
But if you want the original PSP fonts you can place them in `system/PPSSPP/flash0/font`
[MSX / SVI / ColecoVision / SG-1000](https://docs.libretro.com/library/bluemsx/#bios)<br/>
Content of [blueMSXv282full.zip](http://bluemsx.msxblue.com/download.html).<br/>
Not the zip itself, its contents must be extracted in `~/retrodeck/bios` folder, more info [here](https://docs.libretro.com/library/bluemsx/#bios).
Starting from v0.5.0b this is automatically provided.
## Yuzu
Yuzu needs the key files `prod.keys`, `title.keys` and the firmware files in the following directories:
**Yuzu keys:** `~/retrodeck/bios/switch/keys`
**Yuzu firmware:** `~/retrodeck/bios/switch/registered`
The directory tree should look like this example:
```
~/retrodeck/bios/switch
├── keys
│   ├── prod.keys
│   └── title.keys
└── registered
├── 02259fd41066eddbc64e0fdd217d9d2f.nca
├── 02582a2cd46cc226ce72c8a52504cd97.nca
├── 02b1dd519a6df4de1b11871851d328a1.nca
├── other 217 files...
└── fd0d23003ea5602c24ac4e41101c16fd.nca
```
You can find a complete guide in the [Yuzu official wiki](https://yuzu-emu.org/help/quickstart/#downloading-and-installing-yuzu) on how to extract the BIOS from your Switch.
## XEMU (Xbox)
These files must be placed with the correct name in the given folders:
```
~/retrodeck/bios/mcpx_1.0.bin'
~/retrodeck/bios/Complex.bin'
~/retrodeck/saves/xbox-eeprom.bin'
[OPTIONAL] ~/retrodeck/bios/xbox_hdd.qcow2'
```
The hard disk is optional as RetroDECK already provides a pre-built 8G Xbox HDD image, free of any copyrighted content, and only containing a dummy dashboard.
So if you want to the complete experience you have to provide your own.
Usually those files are dumped/found as:
```
mcpx_1.0.bin
Complex.bin -> Complex_4627v1.03.bin or Complex_4627.bin
xbox-eeprom.bin -> eeprom.bin
xbox_hdd.qcow2 -> xbox_harddisk-D4920.qcow2
```
So don't forget to rename them for the RetroDECK standards.
## PICO-8
Pico-8 it's not freeware hence it cannot be included with RetroDECK, however it's supported by using these steps:
1. Download PICO-8 for `Linux 64-bit` from the [official website](https://www.lexaloffle.com/games.php?page=updates) or where you bought it.
2. Extract the zipfile somewhere on your desktop
3. Copy the content of the extracted pico-8 folder into `~/retrodeck/bios/pico-8/`
## MelonDS (Standalone), (NDS)
MelonDS by default needs those files:<br/>
- `~/retrodeck/bios/bios9.bin`<br/>
- `~/retrodeck/bios/bios7.bin`<br/>
- `~/retrodeck/bios/firmware.bin`
However there is a setting to disable the need of these files by going to: `Tools` -> `Start MelonDS` -> `Yes` -> `Config` -> `Emu settings` -> `DS-mode` and removing the check on `Use external BIOS/firmware files`.
Please be advised that this operation may prevent the games from running correctly.
## PCSX2 (PS2)
There a multitude of PS2 bios for a complete list with the hashes check <br>
[Gametechwiki](https://emulation.gametechwiki.com/index.php/File_hashes#Known_BIOS_Hashes)
The PS2 bios could be named in the following ways
<br>
By bios version: `ps2-0200a-20040614.bin`
<br>
By system name:`SCPH-70012.bin`
Put the bios inside the bios folder: `~/retrodeck/bios/SCPH-70012.bin`
Here is a list of common used bios with `bios versions/system names/hashes`.
```
ps2-0200a-20040614 - SCPH-70001/SCPH-70011/SCPH-70012 - d333558cc14561c1fdc334c75d5f37b7 -PS2 US BIOS
ps2-0200e-20040614 - SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 - dc752f160044f2ed5fc1f4964db2a095 - PS2 EU BIOS
ps2-0200j-20040614 - SCPH-70000 - 0eee5d1c779aa50e94edd168b4ebf42e - PS2 JP BIOS
```
## RPCS3 (PS3)
- Download the [latest PlayStation 3 firmware](https://www.playstation.com/en-us/support/hardware/ps3/system-software/).
- `Tools` -> `RetroDECK Configurator` -> `Change settings` -> `RPCS3` -> `File` -> `Install Firmware`.
For more information on how to load the games check the [official quickstart guide](https://rpcs3.net/quickstart).

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,734 +0,0 @@
# General information
**Disclaimer: This list is a work in progress and might contain errors**
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
# Amstrad
## Amstrad CPC
- **Roms path:**<br> ~/retrodeck/roms/amstradcpc
- **Supported file extensions:**<br> .cdt .CDT .cpr .CPR .dsk .DSK .kcr .KCR .m3u .M3U .sna .SNA .tap .TAR .voc .VOC .7z .7Z .zip .ZIP
## Amstrad GX4000
- **Roms path:**<br> ~/retrodeck/roms/gx4000
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Android (Google)
- **Roms path:**<br> ~/retrodeck/roms/android
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Apple
## Apple II
- **Roms path:**<br> ~/retrodeck/roms/apple2
- **Supported file extensions:**<br> .nib .NIB .do .DO .po .PO .dsk .DSK .7z .7Z .zip .ZIP
## Apple IIGS
- **Roms path:**<br> ~/retrodeck/roms/apple2gs
- **Supported file extensions:**<br> .nib .NIB .do .DO .po .PO .dsk .DSK .7z .7Z .zip .ZIP
# Arcade
- **Roms path:**<br> ~/retrodeck/roms/arcade
- **Supported file extensions:**<br> .cmd .CMD .7z .7Z .zip .ZIP
# Atari
## Atari 2600
- **Roms path:**<br> ~/retrodeck/roms/atari2600
- **Supported file extensions:**<br> .a26 .A26 .bin .BIN .7z .7Z .zip .ZIP
## Atari 5200
- **Roms path:**<br> ~/retrodeck/roms/atari5200
- **Supported file extensions:**<br> .xfd .XFD .atr .ATR .atx .ATX .cdm .CDM .cas .CAS .bin .BIN .a52 .A52 .xex .XEX .7z .7Z .zip .ZIP
## Atari 7800 ProSystem
- **Roms path:**<br> ~/retrodeck/roms/atari7800
- **Supported file extensions:**<br> .a78 .A78 .bin .BIN .7z .7Z .zip .ZIP
## Atari 800
- **Roms path:**<br> ~/retrodeck/roms/atari800
- **Supported file extensions:**<br> .xfd .XFD .atr .ATR .atx .ATX .cdm .CDM .cas .CAS .bin .BIN .a52 .A52 .xex .XEX .rom .ROM .7z .7Z .zip .ZIP
## Atari Jaguar
- **Roms path:**<br> ~/retrodeck/roms/atarijaguar
- **Supported file extensions:**<br> .j64 .J64 .jag .JAG .rom .ROM .abs .ABS .cof .COF .bin .BIN .prg .PRG .7z .7Z .zip .ZIP
## Atari Jaguar CD
- **Roms path:**<br> ~/retrodeck/roms/atarijaguarcd
- **Supported file extensions:**<br> .j64 .J64 .jag .JAG .rom .ROM .abs .ABS .cof .COF .bin .BIN .prg .PRG .7z .7Z .zip .ZIP
## Atari Lynx
- **Roms path:**<br> ~/retrodeck/roms/atarilynx
- **Supported file extensions:**<br> .lnx .LNX .o .O .7z .7Z .zip .ZIP
## Atari ST
- **Roms path:**<br> ~/retrodeck/roms/atarist
- **Supported file extensions:**<br> .st .ST .msa .MSA .stx .STX .dim .DIM .ipf .IPF .m3u .M3U .7z .7Z .zip .ZIP
## Atari XE
- **Roms path:**<br> ~/retrodeck/roms/atarixe
- **Supported file extensions:**<br> .xfd .XFD .atr .ATR .atx .ATX .cdm .CDM .cas .CAS .bin .BIN .a52 .A52 .xex .XEX .7z .7Z .zip .ZIP
# Atomiswave
- **Roms path:**<br> ~/retrodeck/roms/atomiswave
- **Supported file extensions:**<br> .cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP
# Bandai
## Bandai SuFami Turbo
- **Roms path:**<br> ~/retrodeck/roms/sufami
- **Supported file extensions:**<br> .bml .BML .bs .BS .fig .FIG .sfc .SFC .smc .SMC .st .ST .7z .7Z .zip .ZIP
## Bandai WonderSwan
- **Roms path:**<br> ~/retrodeck/roms/wonderswan
- **Supported file extensions:**<br> .ws .WS .pc2 .PC2 .7z .7Z .zip .ZIP
## Bandai WonderSwan Color
- **Roms path:**<br> ~/retrodeck/roms/wonderswancolor
- **Supported file extensions:**<br> .ws .WS .wsc .WSC .pc2 .PC2 .7z .7Z .zip .ZIP
# Bally Astrocade
- **Roms path:**<br> ~/retrodeck/roms/astrocde
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# BBC Micro
- **Roms path:**<br> ~/retrodeck/roms/bbcmicro
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Commodore
## 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
- **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
- **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
## Commodore Amiga CD32
- **Roms path:**<br> ~/retrodeck/roms/amigacd32
- **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 64
- **Roms path:**<br> ~/retrodeck/roms/c64
- **Supported file extensions:**<br> .bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP
## Commodore CDTV
- **Roms path:**<br> ~/retrodeck/roms/cdtv
- **Supported file extensions:**<br> .cue .CUE .ccd .CCD .nrg .NRG .mds .MDS .iso .ISO .m3u .M3U .7z .7Z .zip .ZIP
## Commodore VIC-20
- **Roms path:**<br> ~/retrodeck/roms/vic20
- **Supported file extensions:**<br> .bin .BIN .cmd .CMD .crt .CRT .d2m .D2M .d4m .D4M .d64 .D64 .d6z .D6Z .d71 .D71 .d7z .D7Z .d80 .D80 .d81 .D81 .d82 .D82 .d8z .D8Z .g41 .G41 .g4z .G4Z .g64 .G64 .g6z .G6Z .gz .GZ .lnx .LNX .m3u .M3U .nbz .NBZ .nib .NIB .p00 .P00 .prg .PRG .t64 .T64 .tap .TAP .vfl .VFL .vsf .VSF .x64 .X64 .x6z .X6Z .7z .7Z .zip .ZIP
# Cave Story (NXEngine)
- **Roms path:**<br> ~/retrodeck/roms/cavestory
- **Supported file extensions:**<br> .exe .EXE .7z .7Z .zip .ZIP
# ChaiLove Game Engine
- **Roms path:**<br> ~/retrodeck/roms/chailove
- **Supported file extensions:**<br> .chai .CHAI .chailove .CHAILOVE .7z .7Z .zip .ZIP
# ColecoVision
- **Roms path:**<br> ~/retrodeck/roms/coleco
- **Supported file extensions:**<br> .bin .BIN .cas .CAS .col .COL .cv .CV .dsk .DSK .m3u .M3U .mx1 .MX1 .mx2 .MX2 .ri .RI .rom .ROM .sc .SC .sg .SG .7z .7Z .zip .ZIP
# Capcom Play System
- **Roms path:**<br> ~/retrodeck/roms/cps
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Daphne Arcade LaserDisc Emulator
- **Roms path:**<br> ~/retrodeck/roms/daphne
- **Supported file extensions:**<br> .daphne .singe
# Doom
- **Roms path:**<br> ~/retrodeck/roms/doom
- **Supported file extensions:**<br> .wad .WAD .iwad .IWAD .pwad .PWAD
# DOS (PC)
- **Roms path:**<br> ~/retrodeck/roms/dos
- **Supported file extensions:**<br> .bat .BAT .com .COM .conf .CONF .cue .CUE .dosz .DOSZ .exe .EXE .iso .ISO .7z .7Z
# Dragon 32
- **Roms path:**<br> ~/retrodeck/roms/dragon32
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Fairchild Channel F
- **Roms path:**<br> ~/retrodeck/roms/channelf
- **Supported file extensions:**<br> .bin .BIN .chf .CHF .7z .7Z .zip .ZIP
# FinalBurn
## FinalBurn Alpha
- **Roms path:**<br> ~/retrodeck/roms/fba
- **Supported file extensions:**<br> .iso .ISO .7z .7Z .zip .ZIP
## FinalBurn Neo
- **Roms path:**<br> ~/retrodeck/roms/fbneo
- **Supported file extensions:**<br> .ccd .CCD .cue .CUE .7z .7Z .zip .ZIP
# Intellivision - Mattel Electronics
- **Roms path:**<br> ~/retrodeck/roms/intellivision
- **Supported file extensions:**<br> .int .INT .bin .BIN .rom .ROM .7z .7Z .zip .ZIP
# Infocom Z-machine
- **Roms path:**<br> ~/retrodeck/roms/zmachine
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Java 2 Micro Edition (J2ME)
- **Roms path:**<br> ~/retrodeck/roms/j2me
- **Supported file extensions:**<br> .jar .JAR .7z .7Z .zip .ZIP
# Lutro Game Engine
- **Roms path:**<br> ~/retrodeck/roms/lutro
- **Supported file extensions:**<br> .lua .LUA .lutro .LUTRO .7z .7Z .zip .ZIP
# Multiple Arcade Machine Emulator (MAME)
- **Roms path:**<br> ~/retrodeck/roms/mame
- **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
- **Roms path:**<br> ~/retrodeck/roms/msx
- **Supported file extensions:**<br> .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP
## MSX1
- **Roms path:**<br> ~/retrodeck/roms/msx1
- **Supported file extensions:**<br> .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP
## MSX2
- **Roms path:**<br> ~/retrodeck/roms/msx2
- **Supported file extensions:**<br> .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP
## MSX Turbo R
- **Roms path:**<br> ~/retrodeck/roms/msxturbor
- **Supported file extensions:**<br> .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP
# Microsoft Xbox
## Microsoft Xbox
- **Roms path:**<br> ~/retrodeck/roms/xbox
- **Supported file extensions:**<br> .iso .ISO
## Microsoft Xbox 360
- **Roms path:**<br> ~/retrodeck/roms/xbox360
- **Supported file extensions:**<br> .iso .ISO .xex .XEX
# Othello Multivision
- **Roms path:**<br> ~/retrodeck/roms/multivision
- **Supported file extensions:**<br> .bin .BIN .gg .GG .rom .ROM .sg .SG .sms .SMS .7z .7Z .zip .ZIP
# Nintendo
## Nintendo 64
- **Roms path:**<br> ~/retrodeck/roms/n64
- **Supported file extensions:**<br> .n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP
## Nintendo 64DD
- **Roms path:**<br> ~/retrodeck/roms/64dd
- **Supported file extensions:**<br> .n64 .N64 .v64 .V64 .z64 .Z64 .bin .BIN .u1 .U1 .7z .7Z .zip .ZIP
## Nintendo 3DS
- **Roms path:**<br> ~/retrodeck/roms/n3ds
- **Supported file extensions:**<br> .3ds .3DS .3dsx .3DSX .app .APP .axf .AXF .cci .CCI .cxi .CXI .elf .ELF .7z .7Z .zip .ZIP
## Nintendo DS
- **Roms path:**<br> ~/retrodeck/roms/nds
- **Supported file extensions:**<br> .bin .BIN .nds .NDS .7z .7Z .zip .ZIP
## Nintendo Entertainment System (NES)
- **Roms path:**<br> ~/retrodeck/roms/nes
- **Supported file extensions:**<br> .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP
## Nintendo Family Computer (Famicom)
- **Roms path:**<br> ~/retrodeck/roms/famicom
- **Supported file extensions:**<br> .nes .NES .unf .UNF .unif .UNIF .7z .7Z .zip .ZIP
## Nintendo Famicom Disk System
- **Roms path:**<br> ~/retrodeck/roms/fds
- **Supported file extensions:**<br> .nes .NES .fds .FDS .unf .UNF .UNIF .UNIF .7z .7Z .zip .ZIP
## Nintendo Game and Watch
- **Roms path:**<br> ~/retrodeck/roms/gameandwatch
- **Supported file extensions:**<br> .mgw .MGW .7z .7Z .zip .ZIP
## Nintendo Game Boy
- **Roms path:**<br> ~/retrodeck/roms/gb
- **Supported file extensions:**<br> .bs .BS .cgb .CGB .dmg .DMG .gb .GB .gbc .GBC .sgb .SGB .sfc .SFC .smc .SMC .7z .7Z .zip .ZIP
## Nintendo Game Boy Advance
- **Roms path:**<br> ~/retrodeck/roms/gba
- **Supported file extensions:**<br> .agb .AGB .bin .BIN .cgb .CGB .dmg .DMG .gb .GB .gba .GBA .gbc .GBC .sgb .SGB .7z .7Z .zip .ZIP
## Nintendo Game Boy Color
- **Roms path:**<br> ~/retrodeck/roms/gbc
- **Supported file extensions:**<br> .bs .BS .cgb .CGB .dmg .DMG .gb .GB .gbc .GBC .sgb .SGB .sfc .SFC .smc .SMC .7z .7Z .zip .ZIP
## Nintendo GameCube
- **Roms path:**<br> ~/retrodeck/roms/gc
- **Supported file extensions:**<br> .gcm .GCM .iso .ISO .wbfs .WBFS .wia .WIA .ciso .CISO .gcz .GCZ .elf .ELF .dol .DOL .dff .DFF .rvz .RVZ .tgc .TGC .wad .WAD .m3u .M3U .7z .7Z .zip .ZIP
## Nintendo SFC (Super Famicom)
- **Roms path:**<br> ~/retrodeck/roms/sfc
- **Supported file extensions:**<br> .bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
## Nintendo Virtual Boy
- **Roms path:**<br> ~/retrodeck/roms/virtualboy
- **Supported file extensions:**<br> .vb .VB .vboy .VBOY .bin .BIN .7z .7Z .zip .ZIP
## Nintendo SNES (Super Nintendo)
- **Roms path:**<br> ~/retrodeck/roms/snes
- **Supported file extensions:**<br> .bin .BIN .bml .BML .bs .BS .bsx .BSX .dx2 .DX2 .fig .FIG .gd3 .GD3 .gd7 .GD7 .mgd .MGD .sfc .SFC .smc .SMC .st .ST .swc .SWC .7z .7Z .zip .ZIP
## Nintendo Switch
- **Roms path:**<br> ~/retrodeck/roms/switch
- **Supported file extensions:**<br> .nca .NCA .nro .NRO .nso .NSO .nsp .NSP .xci .XCI .7z .7Z .zip .ZIP
## Nintendo Satellaview
- **Roms path:**<br> ~/retrodeck/roms/satellaview
- **Supported file extensions:**<br> .bml .BML .bs .BS .fig .FIG .sfc .SFC .smc .SMC .swc .SWC .st .ST .7z .7Z .zip .ZIP
## Nintendo Pokémon Mini
- **Roms path:**<br> ~/retrodeck/roms/pokemini
- **Supported file extensions:**<br> .min .MIN .7z .7Z .zip .ZIP
## Nintendo Wii
- **Roms path:**<br> ~/retrodeck/roms/wii
- **Supported file extensions:**<br> .gcm .GCM .iso .ISO .wbfs .WBFS .wia .WIA .ciso .CISO .gcz .GCZ .elf .ELF .dol .DOL .dff .DFF .rvz .RVZ .tgc .TGC .wad .WAD .m3u .M3U .7z .7Z .zip .ZIP
## Nintendo Wii U
- **Roms path:**<br> ~/retrodeck/roms/wiiu
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# SNK
## SNK Neo Geo
- **Roms path:**<br> ~/retrodeck/roms/neogeo
- **Supported file extensions:**<br> .chd .CHD .cue .CUE .iso .ISO .7z .7Z .zip .ZIP
## SNK Neo Geo CD
- **Roms path:**<br> ~/retrodeck/roms/neogeocd
- **Supported file extensions:**<br> .chd .CHD .cue .CUE .7z .7Z .zip .ZIP
## SNK Neo Geo CD
- **Roms path:**<br> ~/retrodeck/roms/neogeocdjp
- **Supported file extensions:**<br> .chd .CHD .cue .CUE .7z .7Z .zip .ZIP
## SNK Neo Geo Pocket
- **Roms path:**<br> ~/retrodeck/roms/ngp
- **Supported file extensions:**<br> .ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP
## SNK Neo Geo Pocket Color
- **Roms path:**<br> ~/retrodeck/roms/ngpc
- **Supported file extensions:**<br> .ngp .NGP .ngc .NGC .ngpc .NGPC .npc .NPC .7z .7Z .zip .ZIP
# Magnavox Odyssey2
- **Roms path:**<br> ~/retrodeck/roms/odyssey2
- **Supported file extensions:**<br> .bin .BIN .7z .7Z .zip .ZIP
# OpenBOR Game Engine
- **Roms path:**<br> ~/retrodeck/roms/openbor
- **Supported file extensions:**<br> .AppImage
# Tandy
## Tandy Color Computer
- **Roms path:**<br> ~/retrodeck/roms/coco
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
## Tandy TRS-80
- **Roms path:**<br> ~/retrodeck/roms/trs-80
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Tangerine Computer Systems Oric
- **Roms path:**<br> ~/retrodeck/roms/oric
- **Supported file extensions:**<br> .dsk .DSK .ort .ORT .tap .TAP .wav .WAV
# Palm OS
- **Roms path:**<br> ~/retrodeck/roms/palm
- **Supported file extensions:**<br> .prc .PRC .pqa .PQA .img .IMG .7z .7Z .zip .ZIP
# NEC
## NEC PC-8800 Series
- **Roms path:**<br> ~/retrodeck/roms/pc88
- **Supported file extensions:**<br> .d88 .D88 .u88 .U88 .m3u .M3U .7z .7Z .zip .ZIP
## NEC PC-9800 Series
- **Roms path:**<br> ~/retrodeck/roms/pc98
- **Supported file extensions:**<br> .2hd .2HD .88d .88D .98d .98D .d88 .D88 .d98 .D98 .cmd .CMD .dup .DUP .fdd .FDD .fdi .FDI .hdd .HDD .hdi .HDI .hdm .HDM .hdn .HDN .nhd .NHD .tfd .TFD .thd .THD . xdf .XDF .7z .7Z .zip .ZIP
## NEC PC Engine
- **Roms path:**<br> ~/retrodeck/roms/pcengine
- **Supported file extensions:**<br> .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP
## NEC PC Engine CD
- **Roms path:**<br> ~/retrodeck/roms/pcenginecd
- **Supported file extensions:**<br> .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP
## NEC SuperGrafx
- **Roms path:**<br> ~/retrodeck/roms/supergrafx
- **Supported file extensions:**<br> .pce .PCE .sgx .SGX .cue .CUE .ccd .CCD .chd .CHD .7z .7Z .zip .ZIP
## NEC TurboGrafx-16
- **Roms path:**<br> ~/retrodeck/roms/tg16
- **Supported file extensions:**<br> .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP
## NEC TurboGrafx-CD
- **Roms path:**<br> ~/retrodeck/roms/tg-cd
- **Supported file extensions:**<br> .ccd .CCD .chd .CHD .cue .CUE .img .IMG .iso .ISO .m3u .M3U .pce .PCE .sgx .SGX .toc .TOC .7z .7Z .zip .ZIP
## NEC PC-FX
- **Roms path:**<br> ~/retrodeck/roms/pcfx
- **Supported file extensions:**<br> .cue CUE .ccd .CCD .toc .TOC .chd .CHD .7z .7Z .zip .ZIP
# Philips
## Philips CD-i
- **Roms path:**<br> ~/retrodeck/roms/cdimono1
- **Supported file extensions:**<br> .chd .CHD .cue .CUE .iso .ISO
## Philips Videopac G7000
- **Roms path:**<br> ~/retrodeck/roms/videopac
- **Supported file extensions:**<br> .bin .BIN .7z .7Z .zip .ZIP
# PICO-8
- **Roms path:**<br> ~/retrodeck/roms/pico8
- **Supported file extensions:**<br> .p8 .P8 .png .PNG
# Ports
- **Roms path:**<br> ~/retrodeck/roms/ports
- **Supported file extensions:**<br> .sh
# Sony Playstation
## Sony PlayStation (PSX)
- **Roms path:**<br> ~/retrodeck/roms/psx
- **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
- **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
- **Roms path:**<br> ~/retrodeck/roms/ps3
- **Supported file extensions:**<br> .ps3 .PS3 .ps3dir .PS3DIR
## Sony PlayStation Portable (PSP)
- **Roms path:**<br> ~/retrodeck/roms/psp
- **Supported file extensions:**<br> .elf .ELF .iso .ISO .cso .CSO .prx .PRX .pbp .PBP .7z .7Z .zip .ZIP
## Sony PlayStation Vita
- **Roms path:**<br> ~/retrodeck/roms/psvita
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# SAM Coupé
- **Roms path:**<br> ~/retrodeck/roms/samcoupe
- **Supported file extensions:**<br> .dsk .DSK .mgt .MGT .sbt .SBT .sad .SAD .7z .7Z .zip .ZIP
# ScummVM Game Engine
- **Roms path:**<br> ~/retrodeck/roms/scummvm
- **Supported file extensions:**<br> .scummvm .SCUMMVM .svm .SVM
# Sega
## Sega Game Gear
- **Roms path:**<br> ~/retrodeck/roms/gamegear
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega Dreamcast
- **Roms path:**<br> ~/retrodeck/roms/dreamcast
- **Supported file extensions:**<br> .chd .CHD .cdi .CDI .iso .ISO .elf .ELF .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP
## Sega Genesis (Mega Drive)
- **Roms path:**<br> ~/retrodeck/roms/genesis
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega Master System
- **Roms path:**<br> ~/retrodeck/roms/mastersystem
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .col .COL .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega Mega-CD
- **Roms path:**<br> ~/retrodeck/roms/megacd
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega Mega Drive
- **Roms path:**<br> ~/retrodeck/roms/megadrive
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega Model 2
- **Roms path:**<br> ~/retrodeck/roms/model2
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
## Sega Model 3
- **Roms path:**<br> ~/retrodeck/roms/model3
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
## Sega NAOMI
- **Roms path:**<br> ~/retrodeck/roms/naomi
- **Supported file extensions:**<br> .cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP
## Sega NAOMI GD-ROM
- **Roms path:**<br> ~/retrodeck/roms/naomigd
- **Supported file extensions:**<br> .cdi .CDI .iso .ISO .elf .ELF .bin .BIN .cue .CUE .gdi .GDI .lst .LST .dat .DAT .m3u .M3U .7z .7Z .zip .ZIP
## Sega Saturn
- **Roms path:**<br> ~/retrodeck/roms/saturn
- **Supported file extensions:**<br> .bin .BIN .ccd .CCD .chd .CHD .cue .CUE .iso .ISO .mds .MDS .toc .TOC .m3u .M3U .7z .7Z .zip .ZIP
## Sega Mega Drive 32X
- **Roms path:**<br> ~/retrodeck/roms/sega32x
- **Supported file extensions:**<br> .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP
## Sega Super 32X
- **Roms path:**<br> ~/retrodeck/roms/sega32xjp
- **Supported file extensions:**<br> .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP
## Sega Genesis 32X
- **Roms path:**<br> ~/retrodeck/roms/sega32xna
- **Supported file extensions:**<br> .bin .BIN .gen .GEN .smd .SMD .md .MD .32x .32X .cue .CUE .iso .ISO .sms .SMS .68k .68K .7z .7Z .zip .ZIP
## Sega SG-1000
- **Roms path:**<br> ~/retrodeck/roms/sg-1000
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .ri .RI .rom .ROM .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
## Sega CD
- **Roms path:**<br> ~/retrodeck/roms/segacd
- **Supported file extensions:**<br> .68k .68K .bin .BIN .bms .BMS .chd .CHD .cue .CUE .gen .GEN .gg .GG .iso .ISO .m3u .M3U .md .MD .mdx .MDX .sg .SG .sgd .SGD .smd .SMD .sms .SMS .7z .7Z .zip .ZIP
# Sharp
## 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
## Sharp X68000
- **Roms path:**<br> ~/retrodeck/roms/x68000
- **Supported file extensions:**<br> .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
# Sinclair
## Sinclair ZX81
- **Roms path:**<br> ~/retrodeck/roms/zx81
- **Supported file extensions:**<br> .tzx .TZX .p .P .7z .7Z .zip .ZIP
## 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
# Solarus Game Engine
- **Roms path:**<br> ~/retrodeck/roms/solarus
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Spectravideo
- **Roms path:**<br> ~/retrodeck/roms/spectravideo
- **Supported file extensions:**<br> .rom .ROM .ri .RI .mx1 .MX1 .mx2 .MX2 .col .COL .dsk .DSK .cas .CAS .sg .SG .sc .SC .m3u .M3U .7z .7Z .zip .ZIP
# Stratagus Game Engine
- **Roms path:**<br> ~/retrodeck/roms/stratagus
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Symbian
- **Roms path:**<br> ~/retrodeck/roms/symbian
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Tano Dragon
- **Roms path:**<br> ~/retrodeck/roms/tanodragon
- **Supported file extensions:**<br> .7z .7Z .zip .ZIP
# Texas Instruments TI-99
- **Roms path:**<br> ~/retrodeck/roms/ti99
- **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
# Thomson
## Thomson TO8
- **Roms path:**<br> ~/retrodeck/roms/to8
- **Supported file extensions:**<br> .fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP
## Thomson MO/TO Series
- **Roms path:**<br> ~/retrodeck/roms/moto
- **Supported file extensions:**<br> .fd .FD .sap .SAP .k7 .K7 .m7 .M7 .m5 .M5 .rom .ROM .7z .7Z .zip .ZIP
# Uzebox
- **Roms path:**<br> ~/retrodeck/roms/uzebox
- **Supported file extensions:**<br> .uze .UZE .7z .7Z .zip .ZIP
# Vectrex
- **Roms path:**<br> ~/retrodeck/roms/vectrex
- **Supported file extensions:**<br> .bin .BIN .vec .VEC .gam .GAM .vc .VC .7z .7Z .zip .ZIP

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,73 +0,0 @@
# About testing
There are two ways help us to test features in RetroDECK.<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.
## 🛑 Warning! 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/`.
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.
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?
[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
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.
### 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.
### CLI:
Run the following command from where you have downloaded the `.flatpak` file. <br>
`flatpak install RetroDECK.flatpak`
## How do I uninstall RetroDECK Cooker?
### Desktop:
Just go into your application manager/installer (like Discover), find RetroDECK and press uninstall.
### 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.
# 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?
From CLI run:
`flatpak run net.retrodeck.retrodeck uuddlrlrstart`
The `Developer Options Menu` should show up inside the Configurator.

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,84 +0,0 @@
# Supported extensions
In order to check which file extensions are supported check the page [Emulators: Folders & File extensions](https://github.com/XargonWan/RetroDECK/wiki/Emulators:-Folders-&-File-extensions)
## Special ROMs formats
Some emulators are working only with specific rips, here is what I gather.
**XEMU**: you must use iso files called xiso (the extensions are usually `.xiso.iso` or `.iso` only)<br/>
**NDS**: needs a decrypted dump<br/>
**3DS**: needs a decrypted dump<br/>
**PS3**: are folders that need to be with the `.ps3` file extension in the end. <br/>
Example: `Gran Turismo 5.ps3`
# RetroAchievements
Until we don't implement a proper menu, the RetroAchievements must be enabled from RetroArch:<br/>
`Tools` -> `Start RetroArch` -> `Settings` -> `Achievements`<br/>
Here you have to insert your username and password that you used to register to [RetroAchievements](https://retroachievements.org), then [save your RetroArch config](https://github.com/XargonWan/RetroDECK/wiki/FAQs---Frequently-asked-questions#i-configured-retroarch-but-the-configuration-was-not-saved).<br/><br/>
**NOTE:** not all the games are supported; your game [hash](https://docs.retroachievements.org/FAQ/#what-is-an-ra-hash) must be checked on [RetroAchievements website](https://retroachievements.org).
# Multidisk/file games: Directory interpreted as files
You can put all the game files inside a sub-folder in order to keep you game list clean, these folder will be seen as the game itself from RetroDECK and not as an actual folder, more info [here](https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#directories-interpreted-as-files) on the official ES-DE Documentation. The folder needs to have the corresponding .m3u file and the folder needs to be renamed to the exact filename of the .m3u
Example on how a structure could be:
```
─── Dragon Fantasy VII.m3u
├── Dragon Fantasy VII - Disk1.chd
├── Dragon Fantasy VII - Disk2.chd
├── Dragon Fantasy VII - Disk3.chd
└── Dragon Fantasy VII.m3u
```
In this case the folder will be viewed as a single game and it will launch `Dragon Fantasy VII.m3u` so you can easly swap the disks from RetroArch menu.
## How do I create a Multidisk Directory?
Let's use the Dragon Fantasy VII example as written above.
### Step 1: Make a .m3u sub-folder
Make a new sub-folder inside the PSX roms directory where you move and store the Dragon Fantasy VII files with a .m3u file extension in the end.
The name of the folder will be Dragon Fantasy VII.m3u and the full file path will be:
`~/retrodeck/roms/psx/Dragon Fantasy VII.m3u`
### Step 2: Make a .m3u file inside the folder.m3u
Following the example above, make an empty file inside the Dragon Fantasy VII.m3u folder called the exact same thing as the folder name in this case: `Dragon Fantasy VII.m3u`. Now the full file path to the newly created .m3u file should be like this:
`~/retrodeck/roms/psx/Dragon Fantasy VII.m3u/Dragon Fantasy VII.m3u`
### Step 3: Populate the .m3u file
Open the `Dragon Fantasy VII.m3u` file with an text editor and write the filenames of all files contained in the folder, one per line.
When you are done, the structure of the file should look something like this:
`Dragon Fantasy VII - Disk1.chd`<br>
`Dragon Fantasy VII - Disk2.chd`<br>
`Dragon Fantasy VII - Disk3.chd`
Note this also works with other files types like `.bin` `.iso` `.cue` `.bin` etc.. You just need to make sure that all the files in the folders are written inside the .m3u file.
### Step 4: Launch RetroDECK
The ES-DE interface that RetroDECK uses should now pick up on the game as one file and you can change disks inside RetroArch.
# Emulators compatibility lists
Here is a collection of games that were tested on Steam Deck, not on RetroDECK specifically.
If you find some inconsistences please report them on our `#support` channel on Discord.
* [Xemu](https://xemu.app/#compatibility)
* [Citra](https://citra-emu.org/game/)
* [Dolphin](https://dolphin-emu.org/compat/?nocr=true)
* [Yuzu](https://yuzu-emu.org/game/)
* [PCSX2](https://pcsx2.net/compat/)
* [RPCS3](https://docs.google.com/spreadsheets/d/1EzTcNoKiBaMS4orZrGEOKwMpFOZEFKVSOZjLRJqzEkA/)
# Scraping
[Check out FAQ on Scraping on the wiki](https://github.com/XargonWan/RetroDECK/wiki/FAQs%3A-Frequently-asked-questions#scraping-questions)
## Quick tips
* Register an account on https://www.screenscraper.fr/ (support them on Patreon for faster downloads, more scrapes per day and priority scraping).
* Login to your Screenscraper.fr account inside of the ES-DE interface in RetroDECK
* Choose what content you want to scrape (remember that each content you choose could take up several mb of data per game).
* Do an initial scrape of all the games you want to scrape.
* If some games are missed do a more narrow scraping by enabling `Scraper -> Other Settings -> Interactive Mode -> On`& Scraper -> `Other Settings -> Auto-Accept Single Game Matches -> On` and choose to scrape by games missing metadata. This will allow you to select each game from a list and also tweak the searches of the missing games. In some cases you need to remove certain aspects of the name like if a rom comes both with a Japanese name and English name, you could try to remove one of the names to find a better result.

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