mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-11-22 14:05:39 +00:00
Merge branch 'cooker-0.8.2b'
This commit is contained in:
commit
b70508f856
10
.github/workflows/cooker-selfhosted.yml
vendored
10
.github/workflows/cooker-selfhosted.yml
vendored
|
@ -171,6 +171,7 @@ jobs:
|
|||
# run: |
|
||||
# # Set variables for Gitea host, organization, repository, access token, and release details
|
||||
# GITEA_HOST="repo.retrodeck.net"
|
||||
# UPLOAD_HOST="upload.retrodeck.net"
|
||||
# ORGANIZATION="RetroDECK"
|
||||
# REPO="RetroDECK-cooker"
|
||||
# GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}"
|
||||
|
@ -201,19 +202,22 @@ jobs:
|
|||
# # Upload artifacts
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
|
||||
# # Upload artifacts sha
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-cooker.flatpak.sha" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak.sha"
|
||||
|
||||
# curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
# -H "Content-Type: multipart/form-data" \
|
||||
# -F "attachment=@RetroDECK-Artifact.tar.gz" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
# "http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
|
|
10
.github/workflows/main-selfhosted.yml
vendored
10
.github/workflows/main-selfhosted.yml
vendored
|
@ -127,6 +127,7 @@ jobs:
|
|||
run: |
|
||||
# Set variables for Gitea host, organization, repository, access token, and release details
|
||||
GITEA_HOST="repo.retrodeck.net"
|
||||
UPLOAD_HOST="upload.retrodeck.net"
|
||||
ORGANIZATION="RetroDECK"
|
||||
REPO="RetroDECK"
|
||||
GITEA_TOKEN="${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}"
|
||||
|
@ -154,21 +155,24 @@ jobs:
|
|||
# Upload artifacts
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-H "Content-Type: multipart/form-data" \
|
||||
-F "attachment=@RetroDECK.flatpak" \
|
||||
"http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
"http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-cooker.flatpak"
|
||||
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-H "Content-Type: multipart/form-data" \
|
||||
-F "attachment=@RetroDECK-Artifact.tar.gz" \
|
||||
"http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
"http://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
|
||||
- name: Upload RetroDECK.flatpak.sha to Gitea Release
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "X-GitHub-Token: ${{ secrets.UPLOAD_TOKEN }}" \
|
||||
-F "file=@RetroDECK.flatpak.sha" \
|
||||
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
"https://$UPLOAD_HOST/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -18,7 +18,7 @@ backup
|
|||
tmp
|
||||
.godot
|
||||
rd-submodules/es-de/patches-tmp*
|
||||
.local/
|
||||
retrodeck-repo
|
||||
buildid
|
||||
*.bak
|
||||
incconfigs/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# 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^DUCKSTATIONSHAPLACEHOLDER^https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||
#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
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
# This is building the bundle RetroDECK.flatpak after the download and build steps are done
|
||||
|
||||
if [ "${GITHUB_REF##*/}" = "main" ]; then
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/retrodeck-repo" "$GITHUB_WORKSPACE/RetroDECK.flatpak" net.retrodeck.retrodeck
|
||||
sha256sum RetroDECK.flatpak > RetroDECK.flatpak.sha
|
||||
else
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/.local" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
|
||||
flatpak build-bundle "${GITHUB_WORKSPACE}/retrodeck-repo" "$GITHUB_WORKSPACE/RetroDECK-cooker.flatpak" net.retrodeck.retrodeck
|
||||
sha256sum RetroDECK-cooker.flatpak > RetroDECK-cooker.flatpak.sha
|
||||
fi
|
|
@ -12,12 +12,12 @@ else
|
|||
FOLDER=retrodeck-flatpak-cooker
|
||||
fi
|
||||
|
||||
mkdir -vp "${GITHUB_WORKSPACE}"/{.local,retrodeck-flatpak-cooker}
|
||||
mkdir -vp "${GITHUB_WORKSPACE}"/{retrodeck-repo,retrodeck-flatpak-cooker}
|
||||
|
||||
flatpak-builder --user --force-clean \
|
||||
--install-deps-from=flathub \
|
||||
--install-deps-from=flathub-beta \
|
||||
--repo="${GITHUB_WORKSPACE}/.local" \
|
||||
--repo="${GITHUB_WORKSPACE}/retrodeck-repo" \
|
||||
--download-only \
|
||||
"${GITHUB_WORKSPACE}/${FOLDER}" \
|
||||
net.retrodeck.retrodeck.yml
|
||||
|
|
|
@ -12,13 +12,13 @@ else
|
|||
FOLDER=retrodeck-flatpak-cooker
|
||||
fi
|
||||
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/.local
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/retrodeck-repo
|
||||
mkdir -vp ${GITHUB_WORKSPACE}/"$FOLDER"
|
||||
|
||||
flatpak-builder --user --force-clean \
|
||||
--install-deps-from=flathub \
|
||||
--install-deps-from=flathub-beta \
|
||||
--repo=${GITHUB_WORKSPACE}/.local \
|
||||
--repo=${GITHUB_WORKSPACE}/retrodeck-repo \
|
||||
--disable-download \
|
||||
"${GITHUB_WORKSPACE}/$FOLDER" \
|
||||
net.retrodeck.retrodeck.yml
|
|
@ -8,6 +8,8 @@
|
|||
# Needs the URL of the file, in this line format: hash^PLACEHOLDERTEXT^url
|
||||
# latestcommit: Finds the most recent commit of a git repo and updated the placeholder in the manifest.
|
||||
# Needs the URL of the repo and the branch to find the latest commit from, in this line format: latestcommit^PLACEHOLDERTEXT^url^branch
|
||||
# latestghtag: Finds the most recent tag on a GitHub repo, for repos that don't have normal releases, but also shouldn't use the latest commit
|
||||
# Needs the URL of the repo, in this line format: latestghtag^PLACEHOLDERTEXT^url
|
||||
# latestghrelease: Finds the download URL and SHA256 hash of the latest release from a git repo.
|
||||
# Needs the API URL of the repo, in this line format: latestappimage^PLACEHOLDERTEXT^https://api.github.com/repos/<owner-name>/<repo-name>/releases/latest^<file suffix>
|
||||
# As this command updates two different placeholders (one for the URL, one for the file hash) in the manifest,
|
||||
|
@ -48,7 +50,7 @@ cat "$automation_task_list"
|
|||
echo
|
||||
|
||||
# Update all collected information
|
||||
while IFS="^" read -r action placeholder url branch
|
||||
while IFS="^" read -r action placeholder url branch || [[ -n "$action" ]];
|
||||
do
|
||||
if [[ ! $action == "#"* ]] && [[ ! -z "$action" ]]; then
|
||||
case "$action" in
|
||||
|
@ -82,10 +84,20 @@ do
|
|||
/bin/sed -i 's^'"$placeholder"'^'"$commit"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"latestghtag" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to get the latest tag from: $url"
|
||||
echo
|
||||
tag=$(git ls-remote "$url" | tail -n 1 | cut -f2 | sed 's|refs/tags/||')
|
||||
echo "Tag found: $tag"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$tag"'^' $rd_manifest
|
||||
;;
|
||||
|
||||
"latestghrelease" )
|
||||
echo
|
||||
echo "Placeholder text: $placeholder"
|
||||
echo "Repo to look for AppImage releases: $url"
|
||||
echo "Repo to look for latest releases: $url"
|
||||
echo
|
||||
ghreleaseurl=$(curl -s "$url" | grep browser_download_url | grep "$branch\""$ | cut -d : -f 2,3 | tr -d \" | sed -n 1p | tr -d ' ')
|
||||
echo "GitHub release URL found: $ghreleaseurl"
|
||||
|
|
|
@ -2,9 +2,22 @@
|
|||
|
||||
# WARNING: run this script from the project root folder, not from here!!
|
||||
|
||||
# Check if script is running with elevated privileges
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "The build might fail without some superuser permissions, please run me with sudo. Continue without sudo? [y/N,]"
|
||||
read -r continue_without_sudo
|
||||
if [[ "$continue_without_sudo" != "y" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
git submodule update --init --recursive
|
||||
|
||||
export GITHUB_WORKSPACE="."
|
||||
|
||||
# Initialize the Flatpak repo
|
||||
ostree init --mode=archive-z2 --repo=${GITHUB_WORKSPACE}/retrodeck-repo
|
||||
|
||||
cp net.retrodeck.retrodeck.appdata.xml net.retrodeck.retrodeck.appdata.xml.bak
|
||||
cp net.retrodeck.retrodeck.yml net.retrodeck.retrodeck.yml.bak
|
||||
|
||||
|
@ -12,7 +25,8 @@ 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
|
||||
# THIS SCRIPT IS BROKEN HENCE DISABLED FTM
|
||||
# automation_tools/appdata_management.sh
|
||||
automation_tools/flatpak_build_download_only.sh
|
||||
automation_tools/flatpak_build_only.sh
|
||||
automation_tools/flatpak_build_bundle.sh
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
</controller>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -41,6 +41,54 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -93,50 +141,6 @@
|
|||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
</emulated_controller>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<profile>SteamInput-P1</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -20,6 +20,10 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -65,56 +69,56 @@
|
|||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<profile>SteamInput-P1</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>0_03000000de280000ff11000001000000</uuid>
|
||||
<uuid>0_030079f6de280000ff11000001000000</uuid>
|
||||
<display_name>Steam Virtual Gamepad</display_name>
|
||||
<rumble>0</rumble>
|
||||
<axis>
|
||||
|
@ -20,6 +20,58 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>40</button>
|
||||
|
@ -64,54 +116,6 @@
|
|||
<mapping>14</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
<button>9</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>6</mapping>
|
||||
<button>10</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>7</mapping>
|
||||
<button>42</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>11</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>13</button>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<emulated_controller>
|
||||
<type>Wii U Pro Controller</type>
|
||||
<profile>SteamInput-P2</profile>
|
||||
<controller>
|
||||
<api>SDLController</api>
|
||||
<uuid>1_03000000de280000ff11000001000000</uuid>
|
||||
|
@ -19,65 +18,65 @@
|
|||
<range>1</range>
|
||||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>20</mapping>
|
||||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>19</mapping>
|
||||
<button>39</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>18</mapping>
|
||||
<button>45</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>2</mapping>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>4</mapping>
|
||||
<button>3</button>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>5</mapping>
|
||||
|
@ -103,17 +102,17 @@
|
|||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>1</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -20,25 +20,29 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
|
@ -60,21 +64,21 @@
|
|||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
|
@ -87,6 +91,10 @@
|
|||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
|
@ -104,16 +112,8 @@
|
|||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -20,25 +20,29 @@
|
|||
</trigger>
|
||||
<mappings>
|
||||
<entry>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>10</mapping>
|
||||
<button>4</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>9</mapping>
|
||||
<button>6</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>8</mapping>
|
||||
<button>43</button>
|
||||
|
@ -60,21 +64,21 @@
|
|||
<button>3</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
<mapping>25</mapping>
|
||||
<button>40</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>13</mapping>
|
||||
<button>12</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
<mapping>12</mapping>
|
||||
<button>11</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>1</mapping>
|
||||
<button>0</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>14</mapping>
|
||||
<button>13</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>15</mapping>
|
||||
<button>14</button>
|
||||
|
@ -87,6 +91,10 @@
|
|||
<mapping>16</mapping>
|
||||
<button>7</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>3</mapping>
|
||||
<button>2</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>17</mapping>
|
||||
<button>8</button>
|
||||
|
@ -104,16 +112,8 @@
|
|||
<button>44</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>21</mapping>
|
||||
<button>38</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>22</mapping>
|
||||
<button>47</button>
|
||||
</entry>
|
||||
<entry>
|
||||
<mapping>23</mapping>
|
||||
<button>41</button>
|
||||
<mapping>24</mapping>
|
||||
<button>46</button>
|
||||
</entry>
|
||||
</mappings>
|
||||
</controller>
|
||||
|
|
|
@ -94,9 +94,9 @@
|
|||
<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>
|
||||
<TVDevice>default</TVDevice>
|
||||
<PadDevice>default</PadDevice>
|
||||
<InputDevice>default</InputDevice>
|
||||
</Audio>
|
||||
<Account>
|
||||
<PersistentId>2147483649</PersistentId>
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
dolphin^Dolphin (GameCube / Wii Standalone Emulator)
|
||||
cemu^Cemu (Nintendo Wii U Standalone Emulator)
|
||||
citra^Citra (Nintendo 3DS Standalone Emulator, via Ponzu)
|
||||
dolphin^Dolphin (Nintendo GameCube / Wii Standalone Emulator)
|
||||
duckstation^Duckstation (Sony Playstation Standalone Emulator)
|
||||
gb^Nintendo GameBoy
|
||||
gba^Nintendo GameBoy Advance
|
||||
gbc^Nintendo GameBoy Color
|
||||
genesis^Sega Genesis/Master System
|
||||
gg^Sega GameGear
|
||||
mame^MAME (Multi-Arcade Machine Standalone Emulator)
|
||||
melonds^MelonDS (Nintendo DS Standalone Emulator)
|
||||
n64^Nintendo 64
|
||||
pcsx2^PCSX2 (Sony Playstation 2 Standalone Emulator)
|
||||
ppsspp^PPSSPP (Sony PSP Standalone Emulator)
|
||||
primehack^Primehack (Metroid Prime Standalone Emulator)
|
||||
psx_ra^Sony Playstation (RetroArch Core)
|
||||
retroarch^RetroArch (Multi-emulator Frontend)
|
||||
rpcs3^RPCS3 (Sony Playstation 3 Standalone Emulator)
|
||||
ryujinx^Ryujinx (Nintendo Switch Standalone Emulator)
|
||||
snes^Nintendo Super Nintendo
|
||||
vita3k^Vita3K (Sony PSVita Standalone Emulator)
|
||||
xemu^XEMU (Microsoft Xbox Standalone Emulator)
|
||||
yuzu^Yuzu (Nintendo Switch Standalone Emulator, via Ponzu)
|
||||
citra^Citra (Nintendo 3DS Standalone Emulator, via Ponzu)
|
|
@ -1,74 +1,67 @@
|
|||
Credits & The Team
|
||||
|
||||
This is the page where we try to introduce the team and thank everyone who have contributed to the project so far.
|
||||
If you feel you have contributed to the project but lacks mention, please contact us on discord!
|
||||
|
||||
The Team
|
||||
XargonWan
|
||||
RetroDECK project founder and also one of the founding members of AmberELEC.
|
||||
|
||||
IceNine451
|
||||
Creator of the RetroDECK configurator and the RetroDECK Framework.
|
||||
---
|
||||
|
||||
XargonWan
|
||||
|
||||
RetroDECK project founder and also one of the founding members of AmberELEC.
|
||||
Grand General of the IPL (Italian Pizza Legion) also known as the Napoletanan Fist in the internal pizza war.
|
||||
|
||||
---
|
||||
|
||||
Lazorne
|
||||
Community management/outreach, testing, documentation and Wiki Lord.
|
||||
|
||||
Community management/outreach, testing, documentation, emulator configurations, Steam Input and feature request / issue management.
|
||||
Meme Lord of the Wiki and also the cult leader of the NPC (The Nordic Pizza Cult) also called by the others as "The Pizza Heresy Cult" or "Harbingers of Pizza Chaos". Instigator of the internal pizza war.
|
||||
|
||||
---
|
||||
|
||||
jiannazzone
|
||||
|
||||
Web Development, Community management/outreach, testing, documentation. Have not choosen a side yet in the Pizza War.
|
||||
|
||||
---
|
||||
|
||||
IceNine451
|
||||
|
||||
Creator of the RetroDECK configurator, the RetroDECK Framework and various cool things.
|
||||
Freedom loving leader of the MCCP (Murican Cheese Crust Patriots) in the internal pizza war.
|
||||
|
||||
---
|
||||
|
||||
Lx32
|
||||
|
||||
|
||||
Develops various new features, functions and tools.
|
||||
1st Commander of the IPL (Italian Pizza Legion) nicknamed Paladin al Taglio in the internal pizza war.
|
||||
|
||||
---
|
||||
|
||||
WallK
|
||||
Works on Godot Features.
|
||||
|
||||
LX32
|
||||
Works on a many projects.
|
||||
Checks GODOT and other things.
|
||||
Pizza Mercenary
|
||||
|
||||
---
|
||||
|
||||
dottormac
|
||||
Tester
|
||||
|
||||
Does bleeding edge cooker testing (lives in the danger zone), some feature suggestions and design.
|
||||
|
||||
Collaborators
|
||||
Leon Styhre
|
||||
Maker of EmulationStation Desktop Edition
|
||||
---
|
||||
|
||||
anthonycaccese
|
||||
Theme creator for ES-DE and AmberELEC
|
||||
We want give special thanks to:
|
||||
|
||||
- Our Patreon and donors that keeps the build servers running and provide feedback.
|
||||
|
||||
Additional credits
|
||||
RavenKilit
|
||||
Former Beta Tester and AmberELEC contributor
|
||||
- All related emulation, front end and software projects that we are dependent on.
|
||||
|
||||
MorGuux
|
||||
Made the RetroDECK steamdb graphics for the old logo
|
||||
- All people that have put both time and money into emulation projects.
|
||||
|
||||
Pixelguin
|
||||
Made the new logo and steamdb graphics
|
||||
- All the users who help others with support, guidance and good spirit.
|
||||
|
||||
teotwaki
|
||||
Generous cloud hosting sponsor
|
||||
- All the users who help with testing and reporting issues.
|
||||
|
||||
Niroku / Atari
|
||||
Helps with community management, is also part of Batocera
|
||||
- All the community creators who creates various art and assets for the community.
|
||||
|
||||
Gabeboii
|
||||
Webmaster
|
||||
|
||||
Draco
|
||||
Former server admiistrator and code consultant
|
||||
|
||||
ItzSelenux
|
||||
Maker of pixelitos
|
||||
|
||||
Kenny.nl
|
||||
The Kenny.nl project provides several free game assets under open licenses.
|
||||
|
||||
|
||||
Special Thanks
|
||||
|
||||
We want give special thanks to:
|
||||
|
||||
Our Patreons that keeps the build servers running and provide feedback.
|
||||
All related emulation projects, such as Batocera and AmberELEC where we are taking our inspiration.
|
||||
All people that have put both time and money into emulation projects.
|
||||
All the users who help others with support, guidance and good spirit.
|
||||
All the users who help with testing and reporting issues.
|
||||
All the community creators who creates various art and assets for the community.
|
||||
|
||||
You are the ones that makes this project possible.
|
||||
You are all the ones that makes this project possible.
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
cemu^/app/bin/Cemu-wrapper
|
||||
citra^/var/data/ponzu/Citra/bin/citra-qt
|
||||
dolphin^/app/bin/dolphin-emu
|
||||
duckstation^/app/bin/duckstation-qt
|
||||
mame^/app/bin/mame
|
||||
melonds^/app/bin/melonds
|
||||
pcsx2^/app/bin/pcsx2-qt
|
||||
ppsspp^/app/bin/PPSSPPSDL
|
||||
primehack^/app/bin/primehack-wrapper
|
||||
retroarch^/app/bin/retroarch
|
||||
rpcs3^/app/bin/rpcs3
|
||||
ryujinx^/app/bin/Ryujinx.sh
|
||||
vita3k^/app/bin/Vita3K
|
||||
xemu^/app/bin/xemu
|
||||
yuzu^/var/data/ponzu/Yuzu/bin/yuzu
|
|
@ -7,7 +7,7 @@ SyncToHostRefreshRate = false
|
|||
IncreaseTimerResolution = true
|
||||
InhibitScreensaver = true
|
||||
StartPaused = false
|
||||
StartFullscreen = false
|
||||
StartFullscreen = true
|
||||
PauseOnFocusLoss = true
|
||||
PauseOnMenu = true
|
||||
SaveStateOnExit = false
|
||||
|
|
|
@ -68,7 +68,7 @@ else
|
|||
# Check if the .doom file exists
|
||||
if [[ ! -e "$doom_file" ]]; then
|
||||
log e "doom file not found in \"$doom_file\""
|
||||
zenity --error --no-wrap \
|
||||
rd_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."
|
||||
|
@ -85,7 +85,7 @@ else
|
|||
# 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 \
|
||||
rd_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."
|
||||
|
|
|
@ -20,7 +20,6 @@ Core:
|
|||
SPU loop detection: false
|
||||
Max SPURS Threads: 6
|
||||
SPU Block Size: Mega
|
||||
Accurate GETLLAR: false
|
||||
Accurate SPU DMA: false
|
||||
Accurate SPU Reservations: true
|
||||
Accurate Cache Line Stores: false
|
||||
|
@ -104,6 +103,7 @@ Video:
|
|||
Strict Texture Flushing: false
|
||||
Multithreaded RSX: false
|
||||
Relaxed ZCULL Sync: false
|
||||
Force Hardware MSAA Resolve: false
|
||||
3D Display Mode: Disabled
|
||||
Debug Program Analyser: false
|
||||
Accurate ZCULL stats: true
|
||||
|
@ -165,6 +165,7 @@ Audio:
|
|||
Convert to 16 bit: false
|
||||
Audio Format: Stereo
|
||||
Audio Formats: 0
|
||||
Audio Channel Layout: Automatic
|
||||
Audio Device: "@@@default@@@"
|
||||
Master Volume: 100
|
||||
Enable Buffering: true
|
||||
|
@ -186,6 +187,7 @@ Input/Output:
|
|||
Buzz emulated controller: "Null"
|
||||
Turntable emulated controller: "Null"
|
||||
GHLtar emulated controller: "Null"
|
||||
GameTablet emulated controller: Disabled
|
||||
Pad handler mode: Single-threaded
|
||||
Keep pads connected: false
|
||||
Pad handler sleep (microseconds): 1000
|
||||
|
@ -200,6 +202,7 @@ System:
|
|||
Keyboard Type: English keyboard (US standard)
|
||||
Enter button assignment: Enter with cross
|
||||
Console time offset (s): 0
|
||||
System Name: RPCS3-960
|
||||
PSID high: 0
|
||||
PSID low: 0
|
||||
HDD Model Name: ""
|
||||
|
|
|
@ -25,10 +25,15 @@ screen-filter: Bilinear
|
|||
v-sync: true
|
||||
anisotropic-filtering: 1
|
||||
texture-cache: true
|
||||
async-pipeline-compilation: true
|
||||
show-compile-shaders: true
|
||||
hashless-texture-cache: false
|
||||
import-textures: false
|
||||
export-textures: false
|
||||
export-as-png: true
|
||||
boot-apps-full-screen: true
|
||||
audio-backend: SDL
|
||||
audio-volume: 100
|
||||
ngs-enable: true
|
||||
sys-button: 1
|
||||
sys-lang: 1
|
||||
|
@ -78,16 +83,20 @@ keyboard-button-psbutton: 19
|
|||
keyboard-gui-toggle-gui: 10
|
||||
keyboard-gui-fullscreen: 68
|
||||
keyboard-gui-toggle-touch: 23
|
||||
keyboard-toggle-texture-replacement: 0
|
||||
keyboard-take-screenshot: 0
|
||||
user-id: 00
|
||||
user-auto-connect: true
|
||||
dump-textures: false
|
||||
user-lang: ""
|
||||
display-info-message: true
|
||||
show-welcome: false
|
||||
check-for-updates: false
|
||||
asia-font-support: false
|
||||
shader-cache: true
|
||||
spirv-shader: false
|
||||
fps-hack: true
|
||||
current-ime-lang: 4
|
||||
psn-status: 0
|
||||
psn-signed-in: 0
|
||||
http-enable: true
|
||||
http-timeout-attempts: 50
|
||||
http-timeout-sleep-ms: 100
|
||||
|
|
|
@ -54,7 +54,7 @@ save_migration() {
|
|||
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"
|
||||
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="You are updating to a version of RetroDECK where save file locations have changed!\n\nYour existing files will be backed up for safety and then sorted automatically.\n\nIf a file cannot be sorted automatically it will remain where it is for manual sorting.\n\nPLEASE BE PATIENT! This process can take several minutes if you have a large ROM library."
|
||||
|
@ -144,7 +144,7 @@ save_migration() {
|
|||
done
|
||||
|
||||
) |
|
||||
zenity --progress \
|
||||
rd_zenity --progress \
|
||||
--icon-name=net.retrodeck.retrodeck \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title="Processing Files" \
|
||||
|
@ -154,14 +154,14 @@ save_migration() {
|
|||
--auto-close
|
||||
|
||||
if [[ $(cat $migration_logfile | grep "ERROR" | wc -l) -eq 0 ]]; then
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="The migration process has sorted all of your files automatically.\n\nEverything should be working normally, if you experience any issues please check the RetroDECK wiki or contact us directly on the Discord."
|
||||
|
||||
else
|
||||
cat $migration_logfile | grep "ERROR" > "$rdhome/manual_sort_needed.log"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--text="The migration process was unable to sort $(cat $migration_logfile | grep "ERROR" | wc -l) files automatically.\n\nThese files will need to be moved manually to their new locations, find more detail on the RetroDECK wiki.\n\nA log of the files that need manual sorting can be found at $rdhome/manual_sort_needed.log"
|
||||
|
|
|
@ -51,7 +51,7 @@ check_for_version_update() {
|
|||
|
||||
if [[ ! "$update_ignore" == "$online_version" ]]; then
|
||||
if [[ "$update_repo" == "RetroDECK" ]] && [[ $(sed -e 's/[\.a-z]//g' <<< $version) -le $(sed -e 's/[\.a-z]//g' <<< $online_version) ]]; then
|
||||
# choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \
|
||||
# choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \
|
||||
# --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
# --title "RetroDECK Update Available" \
|
||||
# --text="There is a new version of RetroDECK on the stable release channel $online_version. Would you like to update to it?\n\n(depending on your internet speed this could takes several minutes).")
|
||||
|
@ -65,7 +65,7 @@ check_for_version_update() {
|
|||
# (
|
||||
# flatpak-spawn --host flatpak update --noninteractive -y net.retrodeck.retrodeck
|
||||
# ) |
|
||||
# zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
# rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
# --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
# --title "RetroDECK Updater" \
|
||||
# --text="Upgrade in process please wait (this could takes several minutes)."
|
||||
|
@ -74,7 +74,7 @@ check_for_version_update() {
|
|||
# fi
|
||||
# TODO: add the logic to check and update the branch from the configuration file
|
||||
log i "Showing new version found dialog"
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK - New Update Available" \
|
||||
--text="There is a new version of RetroDECK available: <span foreground='$blue'><b>$online_version</b></span>.\nYou can easily update from the app store you have installed, examples: KDE Discover or Gnome Software.\n\nIf you would like to ignore this notification, click the \"Ignore this version\" button.")
|
||||
|
@ -85,7 +85,7 @@ check_for_version_update() {
|
|||
fi
|
||||
elif [[ "$update_repo" == "RetroDECK-cooker" ]] && [[ ! $version == $online_version ]]; then
|
||||
log i "Showing update request dialog as \"$online_version\" was found and is greater then \"$version\""
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK - New Cooker Version Available" \
|
||||
--text="There is a more recent version of RetroDECK cooker.\nYou are running version <span foreground='$blue'><b>$hard_version</b></span>. The latest is <span foreground='$blue'><b>$online_version</b></span>.\n\nWould you like to update?\nIf you would like to ignore this notification, click the \"Ignore this version\" button.\n\nIf you would like to disable these notifications entirely: disable Online Update Checks in the Configurator.")
|
||||
|
@ -141,7 +141,7 @@ check_for_version_update() {
|
|||
|
||||
rm -rf "$temp_folder" # Cleanup old bundles to save space
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Updater" \
|
||||
--text="RetroDECK is updating to the latest version, please wait."
|
||||
|
@ -156,11 +156,13 @@ check_for_version_update() {
|
|||
}
|
||||
|
||||
validate_input() {
|
||||
while IFS="^" read -r input action
|
||||
while IFS="^" read -r input action || [[ -n "$input" ]];
|
||||
do
|
||||
if [[ "$input" == "$1" ]]; then
|
||||
eval "$action"
|
||||
input_validated="true"
|
||||
if [[ ! $input == "#"* ]] && [[ ! -z "$input" ]]; then
|
||||
if [[ "$input" == "$1" ]]; then
|
||||
eval "$action"
|
||||
input_validated="true"
|
||||
fi
|
||||
fi
|
||||
done < $input_validation
|
||||
}
|
||||
|
|
|
@ -26,6 +26,28 @@ compress_game() {
|
|||
elif [[ "$1" == "rvz" ]]; then
|
||||
dolphin-tool convert -f rvz -b 131072 -c zstd -l 5 -i "$source_file" -o "$dest_file.rvz"
|
||||
fi
|
||||
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$1" ]]; then
|
||||
log i "Performing post-compression file cleanup"
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath "$file")"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath "$file")"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$1 not found, skipping original file deletion"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
find_compatible_compression_format() {
|
||||
|
@ -66,7 +88,7 @@ validate_for_chd() {
|
|||
log i "Validating .cue associated .bin files"
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
log i "Associated bin files read:"
|
||||
log i $(printf '%s\n' "$cue_bin_files")
|
||||
log i "$(printf '%s\n' "$cue_bin_files")"
|
||||
if [[ ! -z "$cue_bin_files" ]]; then
|
||||
while IFS= read -r line
|
||||
do
|
||||
|
@ -96,6 +118,71 @@ validate_for_chd() {
|
|||
fi
|
||||
}
|
||||
|
||||
find_compatible_games() {
|
||||
# The function takes the following arguments, which alter what files are compressed:
|
||||
# "everything" - Compresses all games found into their compatible formats
|
||||
# "all" - Compresses a list of user-chosen files into their compatible formats
|
||||
# "chd" or "zip" or "rvz" - Compresses a list of user-chosen files into the given format
|
||||
|
||||
if [[ -f "$godot_compression_compatible_games" ]]; then
|
||||
rm -f "$godot_compression_compatible_games" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_compression_compatible_games"
|
||||
|
||||
compressable_games_list=()
|
||||
all_compressable_games=()
|
||||
games_to_compress=()
|
||||
target_selection="$1"
|
||||
|
||||
if [[ "$1" == "everything" ]]; then
|
||||
local compression_format="all"
|
||||
else
|
||||
local compression_format="$1"
|
||||
fi
|
||||
|
||||
if [[ $compression_format == "all" ]]; then
|
||||
local compressable_systems_list=$(cat $compression_targets | sed '/^$/d' | sed '/^\[/d')
|
||||
else
|
||||
local compressable_systems_list=$(sed -n '/\['"$compression_format"'\]/, /\[/{ /\['"$compression_format"'\]/! { /\[/! p } }' $compression_targets | sed '/^$/d')
|
||||
fi
|
||||
|
||||
while IFS= read -r system # Find and validate all games that are able to be compressed with this compression type
|
||||
do
|
||||
compression_candidates=$(find "$roms_folder/$system" -type f -not -iname "*.txt")
|
||||
if [[ ! -z $compression_candidates ]]; then
|
||||
while IFS= read -r game
|
||||
do
|
||||
local compatible_compression_format=$(find_compatible_compression_format "$game")
|
||||
if [[ $compression_format == "chd" ]]; then
|
||||
if [[ $compatible_compression_format == "chd" && ! -f "$(echo ${game%.*}.chd)" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "zip" ]]; then
|
||||
if [[ $compatible_compression_format == "zip" && ! -f "$(echo ${game%.*}.zip)" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "rvz" ]]; then
|
||||
if [[ $compatible_compression_format == "rvz" && ! -f "$(echo ${game%.*}.rvz)" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
elif [[ $compression_format == "all" ]]; then
|
||||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
echo "${game}"^"$compatible_compression_format" >> "$godot_compression_compatible_games"
|
||||
fi
|
||||
fi
|
||||
done < <(printf '%s\n' "$compression_candidates")
|
||||
fi
|
||||
done < <(printf '%s\n' "$compressable_systems_list")
|
||||
}
|
||||
|
||||
cli_compress_single_game() {
|
||||
# This function will compress a single file passed from the CLI arguments
|
||||
# USAGE: cli_compress_single_game $full_file_path
|
||||
|
@ -109,26 +196,6 @@ cli_compress_single_game() {
|
|||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
log i "$(basename "$file") can be compressed to $compatible_compression_format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ $(basename "$file") == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do # Remove associated .bin files
|
||||
log i "Removing original file "$file_path/$line""
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files") # Remove original .cue file
|
||||
log i "Removing original file $(basename "$file")"
|
||||
rm -f "$file"
|
||||
else
|
||||
log i "Removing original file $(basename "$file")"
|
||||
rm -f "$file"
|
||||
fi
|
||||
else
|
||||
log w "Compressed version of $(basename "$file") not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log w "$(basename "$file") does not have any compatible compression formats."
|
||||
fi
|
||||
|
@ -171,26 +238,6 @@ cli_compress_all_games() {
|
|||
if [[ ! "$compatible_compression_format" == "none" ]]; then
|
||||
log i "$(basename "$file") can be compressed to $compatible_compression_format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == [yY] ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do # Remove associated .bin files
|
||||
log i "Removing original file "$file_path/$line""
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files") # Remove original .cue file
|
||||
log i "Removing original file "$file""
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing original file "$file""
|
||||
rm -f $(realpath "$file")
|
||||
fi
|
||||
else
|
||||
log w "Compressed version of $(basename "$file") not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log w "No compatible compression format found for $(basename "$file")"
|
||||
fi
|
||||
|
|
89
functions/configurator_functions.sh
Normal file
89
functions/configurator_functions.sh
Normal file
|
@ -0,0 +1,89 @@
|
|||
#!/bin/bash
|
||||
|
||||
check_bios_files() {
|
||||
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called $bios_checked_list which can be used elsewhere
|
||||
# There is a "basic" and "expert" mode which outputs different levels of data
|
||||
# USAGE: check_bios_files "mode"
|
||||
|
||||
if [[ -f "$godot_bios_files_checked" ]]; then
|
||||
rm -f "$godot_bios_files_checked" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_bios_files_checked"
|
||||
|
||||
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc || [[ -n "$bios_file" ]];
|
||||
do
|
||||
if [[ ! $bios_file == "#"* ]] && [[ ! -z "$bios_file" ]]; then
|
||||
bios_file_found="No"
|
||||
bios_hash_matched="No"
|
||||
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
if [[ $bios_hash == "Unknown" ]]; then
|
||||
bios_hash_matched="Unknown"
|
||||
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||
bios_hash_matched="Yes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$1" == "basic" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
else
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
fi
|
||||
fi
|
||||
done < $bios_checklist
|
||||
}
|
||||
|
||||
find_empty_rom_folders() {
|
||||
# This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal
|
||||
|
||||
if [[ -f "$godot_empty_roms_folders" ]]; then
|
||||
rm -f "$godot_empty_roms_folders" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_empty_roms_folders"
|
||||
|
||||
empty_rom_folders_list=()
|
||||
all_empty_folders=()
|
||||
all_helper_files=()
|
||||
|
||||
while IFS='^' read -r file dest || [[ -n "$file" ]];
|
||||
do
|
||||
if [[ ! "$file" == "#"* ]] && [[ ! -z "$file" ]]; then
|
||||
all_helper_files=("${all_helper_files[@]}" "$file")
|
||||
fi
|
||||
done < "$helper_files_list"
|
||||
|
||||
for system in $(find "$roms_folder" -mindepth 1 -maxdepth 1 -type d -printf '%f\n')
|
||||
do
|
||||
local dir="$roms_folder/$system"
|
||||
local files=$(ls -A1 "$dir")
|
||||
local count=$(ls -A "$dir" | wc -l)
|
||||
|
||||
if [[ $count -eq 0 ]]; then
|
||||
# Directory is empty
|
||||
empty_rom_folders_list=("${empty_rom_folders_list[@]}" "false" "$(realpath $dir)")
|
||||
all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)")
|
||||
echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file
|
||||
elif [[ $count -eq 1 ]] && [[ "$(basename "${files[0]}")" == "systeminfo.txt" ]]; then
|
||||
# Directory contains only systeminfo.txt
|
||||
empty_rom_folders_list=("${empty_rom_folders_list[@]}" "false" "$(realpath $dir)")
|
||||
all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)")
|
||||
echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file
|
||||
elif [[ $count -eq 2 ]] && [[ "$files" =~ "systeminfo.txt" ]]; then
|
||||
# Directory contains 2 files, one of which is "systeminfo.txt"
|
||||
for helper_file in ${all_helper_files[@]} # Compare helper file list to dir file list
|
||||
do
|
||||
if [[ "$files" =~ "$helper_file" ]]; then
|
||||
contains_helper_file="true" # Helper file was found
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "$contains_helper_file" == "true" ]]; then
|
||||
# Directory contains only systeminfo.txt and a helper file
|
||||
empty_rom_folders_list=("${empty_rom_folders_list[@]}" "false" "$(realpath $dir)")
|
||||
all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)")
|
||||
echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
source /app/libexec/functions.sh
|
||||
|
||||
# Dialog colors
|
||||
purple="#a864fc"
|
||||
blue="#6fbfff"
|
||||
|
@ -10,7 +8,7 @@ debug_dialog() {
|
|||
# This function is for displaying commands run by the Configurator without actually running them
|
||||
# USAGE: debug_dialog "command"
|
||||
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_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 - Debug Dialog" \
|
||||
--text="$1"
|
||||
|
@ -19,7 +17,7 @@ debug_dialog() {
|
|||
configurator_process_complete_dialog() {
|
||||
# This dialog shows when a process is complete.
|
||||
# USAGE: configurator_process_complete_dialog "process text"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Quit" --extra-button="OK" \
|
||||
rd_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 quit RetroDECK."
|
||||
|
@ -35,7 +33,7 @@ configurator_generic_dialog() {
|
|||
# This dialog is for showing temporary messages before another process happens.
|
||||
# USAGE: configurator_generic_dialog "title text" "info text"
|
||||
log i "Showing a configurator_generic_dialog"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "$1" \
|
||||
--text="$2"
|
||||
|
@ -45,7 +43,7 @@ configurator_generic_question_dialog() {
|
|||
# This dialog provides a generic dialog for getting a response from a user.
|
||||
# USAGE: $(configurator_generic_question_dialog "title text" "action text")
|
||||
# This function will return a "true" if the user clicks "Yes", and "false" if they click "No".
|
||||
choice=$(zenity --title "RetroDECK - $1" --question --no-wrap --cancel-label="No" --ok-label="Yes" \
|
||||
choice=$(rd_zenity --title "RetroDECK - $1" --question --no-wrap --cancel-label="No" --ok-label="Yes" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="$2")
|
||||
if [[ $? == "0" ]]; then
|
||||
|
@ -59,7 +57,7 @@ configurator_destination_choice_dialog() {
|
|||
# This dialog is for making things easy for new users to move files to common locations. Gives the options for "Internal", "SD Card" and "Custom" locations.
|
||||
# USAGE: $(configurator_destination_choice_dialog "folder being moved" "action text")
|
||||
# This function returns one of the values: "Back" "Internal Storage" "SD Card" "Custom Location"
|
||||
choice=$(zenity --title "RetroDECK Configurator Utility - Moving $1 folder" --info --no-wrap --ok-label="Back" --extra-button="Internal Storage" --extra-button="SD Card" --extra-button="Custom Location" \
|
||||
choice=$(rd_zenity --title "RetroDECK Configurator Utility - Moving $1 folder" --info --no-wrap --ok-label="Back" --extra-button="Internal Storage" --extra-button="SD Card" --extra-button="Custom Location" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="$2")
|
||||
|
||||
|
@ -75,7 +73,7 @@ configurator_reset_confirmation_dialog() {
|
|||
# This dialog provides a confirmation for any reset functions, before the reset is actually performed.
|
||||
# USAGE: $(configurator_reset_confirmation_dialog "emulator being reset" "action text")
|
||||
# This function will return a "true" if the user clicks Confirm, and "false" if they click Cancel.
|
||||
choice=$(zenity --title "RetroDECK Configurator Utility - Reset $1" --question --no-wrap --cancel-label="Cancel" --ok-label="Confirm" \
|
||||
choice=$(rd_zenity --title "RetroDECK Configurator Utility - Reset $1" --question --no-wrap --cancel-label="Cancel" --ok-label="Confirm" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="$2")
|
||||
if [[ $? == "0" ]]; then
|
||||
|
@ -135,7 +133,7 @@ configurator_move_folder_dialog() {
|
|||
configurator_generic_dialog "RetroDECK Configurator - Move Folder" "The moving process was not completed, please try again."
|
||||
fi
|
||||
else # If there isn't enough space in the picked destination
|
||||
zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - Move Directories" \
|
||||
--text="The destination directory you have selected does not have enough free space for the files you are trying to move.\n\nPlease select a new destination or free up some space."
|
||||
|
@ -172,7 +170,7 @@ changelog_dialog() {
|
|||
if [[ "$1" == "all" ]]; then
|
||||
xml sel -t -m "//release" -v "concat('RetroDECK version: ', @version)" -n -v "description" -n $rd_appdata | awk '{$1=$1;print}' | sed -e '/./b' -e :n -e 'N;s/\n$//;tn' > "/var/config/retrodeck/changelog.txt"
|
||||
|
||||
zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Changelogs" \
|
||||
--filename="/var/config/retrodeck/changelog.txt"
|
||||
|
@ -181,7 +179,7 @@ changelog_dialog() {
|
|||
|
||||
echo -e "In RetroDECK version $1, the following changes were made:\n$version_changelog" > "/var/config/retrodeck/changelog-partial.txt" 2>/dev/null
|
||||
|
||||
zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Changelogs" \
|
||||
--filename="/var/config/retrodeck/changelog-partial.txt"
|
||||
|
@ -192,7 +190,7 @@ get_cheevos_token_dialog() {
|
|||
# This function will return a RetroAchvievements token from a valid username and password, will return "login failed" otherwise
|
||||
# USAGE: get_cheevos_token_dialog
|
||||
|
||||
local cheevos_info=$(zenity --forms --title="Cheevos" \
|
||||
local cheevos_info=$(rd_zenity --forms --title="Cheevos" \
|
||||
--text="Username and password." \
|
||||
--separator="^" \
|
||||
--add-entry="Username" \
|
||||
|
@ -219,7 +217,7 @@ desktop_mode_warning() {
|
|||
if [[ $(check_desktop_mode) == "true" && $desktop_mode_warning == "true" ]]; then
|
||||
local message='You appear to be running RetroDECK in the Steam Deck'\''s Desktop mode!\n\nSome functions of RetroDECK may not work properly in Desktop mode, such as the Steam Deck'\''s normal controls.\n\nRetroDECK is best enjoyed in Game mode!\n\nDo you still want to proceed?'
|
||||
log i "Showing message:\n$message"
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Desktop Mode Warning" \
|
||||
--text="$message")
|
||||
|
@ -247,7 +245,7 @@ low_space_warning() {
|
|||
if [[ "$used_percent" -ge 90 && -d "$HOME/retrodeck" ]]; then # If there is any RetroDECK data on the main drive to move
|
||||
local message='Your main drive is over 90% full!\n\nIf your drive fills completely this can lead to data loss or system crash.\n\nPlease consider moving some RetroDECK folders to other storage locations using the Configurator.'
|
||||
log i "Showing message:\n$message"
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Never show this again" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Never show this again" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Low Space Warning" \
|
||||
--text="$message")
|
||||
|
|
|
@ -410,47 +410,44 @@ deploy_single_patch() {
|
|||
|
||||
cp -fv "$1" "$3" # Create a copy of the original file to be patched
|
||||
|
||||
while IFS="^" read -r action current_section setting_name setting_value system_name
|
||||
while IFS="^" read -r action current_section setting_name setting_value system_name || [[ -n "$action" ]];
|
||||
do
|
||||
if [[ ! $action == "#"* ]] && [[ ! -z "$action" ]]; then
|
||||
case $action in
|
||||
|
||||
case $action in
|
||||
"disable_file" )
|
||||
eval disable_file "$setting_name"
|
||||
;;
|
||||
|
||||
"disable_file" )
|
||||
eval disable_file "$setting_name"
|
||||
;;
|
||||
"enable_file" )
|
||||
eval enable_file "$setting_name"
|
||||
;;
|
||||
|
||||
"enable_file" )
|
||||
eval enable_file "$setting_name"
|
||||
;;
|
||||
"add_setting_line" )
|
||||
add_setting_line "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"add_setting_line" )
|
||||
add_setting_line "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"disable_setting" )
|
||||
disable_setting "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"disable_setting" )
|
||||
disable_setting "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"enable_setting" )
|
||||
enable_setting "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"enable_setting" )
|
||||
enable_setting "$3" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"change" )
|
||||
if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval setting_value="$setting_value"
|
||||
fi
|
||||
set_setting_value "$3" "$setting_name" "$setting_value" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"change" )
|
||||
if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval setting_value="$setting_value"
|
||||
fi
|
||||
set_setting_value "$3" "$setting_name" "$setting_value" "$system_name" "$current_section"
|
||||
;;
|
||||
* )
|
||||
log e "Config line malformed: $action"
|
||||
;;
|
||||
|
||||
*"#"* )
|
||||
# Comment line in patch file
|
||||
;;
|
||||
|
||||
* )
|
||||
echo "Config line malformed: $action"
|
||||
;;
|
||||
|
||||
esac
|
||||
esac
|
||||
fi
|
||||
done < "$2"
|
||||
}
|
||||
|
||||
|
@ -461,60 +458,58 @@ deploy_multi_patch() {
|
|||
# Patch file format should be as follows, with optional entries in (). Optional settings can be left empty, but must still have ^ dividers:
|
||||
# $action^($current_section)^$setting_name^$setting_value^$system_name^($config file)
|
||||
|
||||
while IFS="^" read -r action current_section setting_name setting_value system_name config_file
|
||||
while IFS="^" read -r action current_section setting_name setting_value system_name config_file || [[ -n "$action" ]];
|
||||
do
|
||||
case $action in
|
||||
if [[ ! $action == "#"* ]] && [[ ! -z "$action" ]]; then
|
||||
case $action in
|
||||
|
||||
"disable_file" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
disable_file "$config_file"
|
||||
;;
|
||||
"disable_file" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
disable_file "$config_file"
|
||||
;;
|
||||
|
||||
"enable_file" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
enable_file "$config_file"
|
||||
;;
|
||||
"enable_file" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
enable_file "$config_file"
|
||||
;;
|
||||
|
||||
"add_setting_line" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
add_setting_line "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"add_setting_line" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
add_setting_line "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"disable_setting" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
disable_setting "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"disable_setting" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
disable_setting "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"enable_setting" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
enable_setting "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
"enable_setting" )
|
||||
if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval config_file="$config_file"
|
||||
fi
|
||||
enable_setting "$config_file" "$setting_name" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
"change" )
|
||||
if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval setting_value="$setting_value"
|
||||
fi
|
||||
set_setting_value "$config_file" "$setting_name" "$setting_value" "$system_name" "$current_section"
|
||||
;;
|
||||
"change" )
|
||||
if [[ "$setting_value" = \$* ]]; then # If patch setting value is a reference to an internal variable name
|
||||
eval setting_value="$setting_value"
|
||||
fi
|
||||
set_setting_value "$config_file" "$setting_name" "$setting_value" "$system_name" "$current_section"
|
||||
;;
|
||||
|
||||
*"#"* )
|
||||
# Comment line in patch file
|
||||
;;
|
||||
* )
|
||||
log e "Config line malformed: $action"
|
||||
;;
|
||||
|
||||
* )
|
||||
echo "Config line malformed: $action"
|
||||
;;
|
||||
|
||||
esac
|
||||
esac
|
||||
fi
|
||||
done < "$1"
|
||||
}
|
||||
|
|
|
@ -7,12 +7,13 @@ source /app/libexec/checks.sh
|
|||
source /app/libexec/compression.sh
|
||||
source /app/libexec/dialogs.sh
|
||||
source /app/libexec/logger.sh
|
||||
source /app/libexec/functions.sh
|
||||
source /app/libexec/other_functions.sh
|
||||
source /app/libexec/multi_user.sh
|
||||
source /app/libexec/framework.sh
|
||||
source /app/libexec/post_update.sh
|
||||
source /app/libexec/prepare_component.sh
|
||||
source /app/libexec/presets.sh
|
||||
source /app/libexec/configurator_functions.sh
|
||||
|
||||
# Static variables
|
||||
rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path
|
||||
|
@ -52,6 +53,9 @@ pretty_system_names_reference_list="$emuconfigs/defaults/retrodeck/reference_lis
|
|||
# Godot data transfer temp files
|
||||
|
||||
godot_bios_files_checked="/var/config/retrodeck/godot/godot_bios_files_checked.tmp"
|
||||
godot_current_preset_settings="/var/config/retrodeck/godot/godot_current_preset_settings.tmp"
|
||||
godot_compression_compatible_games="/var/config/retrodeck/godot/godot_compression_compatible_games.tmp"
|
||||
godot_empty_roms_folders="/var/config/retrodeck/godot/godot_empty_roms_folders.tmp"
|
||||
|
||||
# Config files for emulators with single config files
|
||||
|
||||
|
@ -114,8 +118,7 @@ rpcs3vfsconf="/var/config/rpcs3/vfs.yml"
|
|||
|
||||
# Vita3k config files
|
||||
|
||||
vita3kconf="/var/data/Vita3K/config.yml"
|
||||
vita3kusrconfdir="$bios_folder/Vita3K/Vita3K"
|
||||
vita3kconf="/var/config/Vita3K/config.yml"
|
||||
|
||||
# MAME-SA config files
|
||||
|
||||
|
@ -131,6 +134,11 @@ if [[ ! -d "$rd_logs_folder/ES-DE" ]]; then
|
|||
dir_prep "$rd_logs_folder/ES-DE" "$es_source_logs"
|
||||
fi
|
||||
|
||||
# Initialize location of Godot temp data files, if it doesn't exist
|
||||
if [[ ! -d "/var/config/retrodeck/godot" ]]; then
|
||||
create_dir "/var/config/retrodeck/godot"
|
||||
fi
|
||||
|
||||
# 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
|
||||
mv "$HOME/retrodeck/.lock" $lockfile
|
||||
|
@ -191,7 +199,6 @@ else
|
|||
fi
|
||||
|
||||
conf_read
|
||||
#tmplog_merger # This function is tempry(?) removed
|
||||
|
||||
# Verify rdhome is where it is supposed to be.
|
||||
if [[ ! -d "$rdhome" ]]; then
|
||||
|
|
|
@ -86,11 +86,11 @@ log() {
|
|||
esac
|
||||
|
||||
# Display the message in the terminal
|
||||
echo -e "$colored_message"
|
||||
echo -e "$colored_message" >&2
|
||||
|
||||
# Write the log message to the log file
|
||||
if [ ! -f "$logfile" ]; then
|
||||
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it"
|
||||
echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2
|
||||
touch "$logfile"
|
||||
fi
|
||||
echo "$log_message" >> "$logfile"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
multi_user_set_default_dialog() {
|
||||
chosen_user="$1"
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="No and don't ask again" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="No and don't ask again" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Default User" \
|
||||
--text="Would you like to set $chosen_user as the default user?\n\nIf the current user cannot be determined from the system, the default will be used.\nThis normally only happens in Desktop Mode.\n\nIf you would like to be asked which user is playing every time, click \"No and don't ask again\"")
|
||||
|
@ -23,7 +23,7 @@ do
|
|||
full_userlist=("${full_userlist[@]}" "$user")
|
||||
done < <(ls -1 "$multi_user_data_folder")
|
||||
|
||||
chosen_user=$(zenity \
|
||||
chosen_user=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--ok-label="Select User" \
|
||||
--text="Choose the current user:" \
|
||||
|
@ -65,7 +65,7 @@ multi_user_disable_multi_user_mode() {
|
|||
full_userlist=("${full_userlist[@]}" "$user")
|
||||
done < <(ls -1 "$multi_user_data_folder")
|
||||
|
||||
single_user=$(zenity \
|
||||
single_user=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--ok-label="Select User" \
|
||||
--text="Choose the current user:" \
|
||||
|
@ -125,7 +125,7 @@ multi_user_determine_current_user() {
|
|||
multi_user_setup_new_user
|
||||
else # If running in Desktop mode for the first time
|
||||
configurator_generic_dialog "RetroDECK Multi-User Mode" "The current user could not be determined from the system and there is no existing userlist.\n\nPlease enter the Steam account username (not profile name) into the next dialog, or run RetroDECK in game mode."
|
||||
if zenity --entry \
|
||||
if rd_zenity --entry \
|
||||
--title="Specify Steam username" \
|
||||
--text="Enter Steam username:"
|
||||
then # User clicked "OK"
|
||||
|
@ -149,7 +149,7 @@ multi_user_determine_current_user() {
|
|||
|
||||
multi_user_return_to_single_user() {
|
||||
single_user="$1"
|
||||
echo "Returning to single-user mode for $single_user"
|
||||
log i "Returning to single-user mode for $single_user"
|
||||
unlink "$saves_folder"
|
||||
unlink "$states_folder"
|
||||
unlink "$rd_conf"
|
||||
|
@ -182,7 +182,7 @@ multi_user_return_to_single_user() {
|
|||
|
||||
multi_user_setup_new_user() {
|
||||
# TODO: RPCS3 one-offs
|
||||
echo "Setting up new user"
|
||||
log i "Setting up new user"
|
||||
unlink "$saves_folder"
|
||||
unlink "$states_folder"
|
||||
dir_prep "$multi_user_data_folder/$SteamAppUser/saves" "$saves_folder"
|
||||
|
@ -220,7 +220,7 @@ multi_user_setup_new_user() {
|
|||
}
|
||||
|
||||
multi_user_link_current_user_files() {
|
||||
echo "Linking existing user"
|
||||
log i "Linking existing user"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/saves" "$saves_folder"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/states" "$states_folder"
|
||||
ln -sfT "$multi_user_data_folder/$SteamAppUser/config/retrodeck/retrodeck.cfg" "$rd_conf"
|
||||
|
|
|
@ -8,10 +8,10 @@ directory_browse() {
|
|||
|
||||
while [ $path_selected == false ]
|
||||
do
|
||||
local target="$(zenity --file-selection --title="Choose $1" --directory)"
|
||||
local target="$(rd_zenity --file-selection --title="Choose $1" --directory)"
|
||||
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" \
|
||||
rd_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
|
||||
|
@ -20,7 +20,7 @@ directory_browse() {
|
|||
break
|
||||
fi
|
||||
else
|
||||
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
|
||||
rd_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="No directory selected. Do you want to exit the selection process?"
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
|
@ -38,10 +38,10 @@ file_browse() {
|
|||
|
||||
while [ $file_selected == false ]
|
||||
do
|
||||
local target="$(zenity --file-selection --title="Choose $1")"
|
||||
local target="$(rd_zenity --file-selection --title="Choose $1")"
|
||||
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" \
|
||||
rd_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="File $target chosen, is this correct?"
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
|
@ -50,7 +50,7 @@ file_browse() {
|
|||
break
|
||||
fi
|
||||
else
|
||||
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --cancel-label="No" --ok-label "Yes" \
|
||||
rd_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="No file selected. Do you want to exit the selection process?"
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
|
@ -89,13 +89,13 @@ move() {
|
|||
rsync -a --remove-source-files --ignore-existing --mkpath "$source_dir" "$dest_dir" # Copy files but don't overwrite conflicts
|
||||
find "$source_dir" -type d -empty -delete # Cleanup empty folders that were left behind
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 Configurator Utility - Move in Progress" \
|
||||
--text="Moving directory $(basename "$1") to new location of $2, please wait."
|
||||
|
||||
if [[ -d "$source_dir" ]]; then # Some conflicting files remain
|
||||
zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - Move Directories" \
|
||||
--text="There were some conflicting files that were not moved.\n\nAll files that could be moved are in the new location,\nany files that already existed at the new location have not been moved and will need to be handled manually."
|
||||
|
@ -133,7 +133,7 @@ download_file() {
|
|||
(
|
||||
wget "$1" -O "$2" -q
|
||||
) |
|
||||
zenity --progress \
|
||||
rd_zenity --progress \
|
||||
--title="Downloading File" \
|
||||
--text="Downloading $3..." \
|
||||
--pulsate \
|
||||
|
@ -153,7 +153,6 @@ update_rd_conf() {
|
|||
|
||||
# STAGE 2: To handle presets sections that use duplicate setting names
|
||||
|
||||
mv -f $rd_conf $rd_conf_backup # Backup config file agiain before update but after Stage 1 expansion
|
||||
generate_single_patch $rd_defaults $rd_conf_backup $rd_update_patch retrodeck # Create a patch file for differences between defaults and current user settings
|
||||
sed -i '/change^^version/d' $rd_update_patch # Remove version line from temporary patch file
|
||||
deploy_single_patch $rd_defaults $rd_update_patch $rd_conf # Re-apply user settings to defaults file
|
||||
|
@ -286,34 +285,9 @@ dir_prep() {
|
|||
log i "$symlink is now $real"
|
||||
}
|
||||
|
||||
check_bios_files() {
|
||||
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called bios_checked_list which can be used elsewhere
|
||||
# There is a "basic" and "expert" mode which outputs different levels of data
|
||||
# USAGE: check_bios_files "mode"
|
||||
|
||||
rm -f "$godot_bios_files_checked" # Godot data transfer temp files
|
||||
touch "$godot_bios_files_checked"
|
||||
|
||||
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc
|
||||
do
|
||||
bios_file_found="No"
|
||||
bios_hash_matched="No"
|
||||
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
if [[ $bios_hash == "Unknown" ]]; then
|
||||
bios_hash_matched="Unknown"
|
||||
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||
bios_hash_matched="Yes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$1" == "basic" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
else
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" >> "$godot_bios_files_checked" # Godot data transfer temp file
|
||||
fi
|
||||
done < $bios_checklist
|
||||
rd_zenity() {
|
||||
# This function replaces the standard 'zenity' command and filters out annoying GTK errors on Steam Deck
|
||||
zenity 2> >(grep -v 'Gtk' >&2) "$@"
|
||||
}
|
||||
|
||||
update_rpcs3_firmware() {
|
||||
|
@ -343,7 +317,7 @@ make_name_pretty() {
|
|||
if [[ ! -z "$system" ]]; then
|
||||
IFS='^' read -r internal_name pretty_name < <(echo "$system")
|
||||
else
|
||||
pretty_name="$system"
|
||||
pretty_name="$1"
|
||||
fi
|
||||
echo "$pretty_name"
|
||||
}
|
||||
|
@ -353,10 +327,10 @@ finit_browse() {
|
|||
path_selected=false
|
||||
while [ $path_selected == false ]
|
||||
do
|
||||
local target="$(zenity --file-selection --title="Choose RetroDECK data directory location" --directory)"
|
||||
local target="$(rd_zenity --file-selection --title="Choose RetroDECK data directory location" --directory)"
|
||||
if [[ ! -z "$target" ]]; then
|
||||
if [[ -w "$target" ]]; then
|
||||
zenity --question --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
|
||||
rd_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="Your RetroDECK data folder will be:\n\n$target/retrodeck\n\nis that ok?"
|
||||
|
@ -366,7 +340,7 @@ do
|
|||
echo "$target/retrodeck"
|
||||
break
|
||||
else
|
||||
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?"
|
||||
rd_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
|
||||
quit_retrodeck
|
||||
|
@ -374,7 +348,7 @@ do
|
|||
fi
|
||||
fi
|
||||
else
|
||||
zenity --error --no-wrap \
|
||||
rd_zenity --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--ok-label "Quit" \
|
||||
|
@ -387,13 +361,15 @@ done
|
|||
finit_user_options_dialog() {
|
||||
finit_available_options=()
|
||||
|
||||
while IFS="^" read -r enabled option_name option_desc option_tag
|
||||
while IFS="^" read -r enabled option_name option_desc option_tag || [[ -n "$enabled" ]];
|
||||
do
|
||||
finit_available_options=("${finit_available_options[@]}" "$enabled" "$option_name" "$option_desc" "$option_tag")
|
||||
if [[ ! $enabled == "#"* ]] && [[ ! -z "$enabled" ]]; then
|
||||
finit_available_options=("${finit_available_options[@]}" "$enabled" "$option_name" "$option_desc" "$option_tag")
|
||||
fi
|
||||
done < $finit_options_list
|
||||
|
||||
|
||||
local choices=$(zenity \
|
||||
local choices=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--checklist --hide-column=4 --ok-label="Confirm Selections" --extra-button="Enable All" \
|
||||
--separator=" " --print-column=4 \
|
||||
|
@ -437,7 +413,7 @@ finit() {
|
|||
if [ ! -d "$sdcard" ] # SD Card path is not existing
|
||||
then
|
||||
log e "SD card not found"
|
||||
zenity --error --no-wrap \
|
||||
rd_zenity --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--ok-label "Browse" \
|
||||
|
@ -450,7 +426,7 @@ finit() {
|
|||
elif [ ! -w "$sdcard" ] #SD card found but not writable
|
||||
then
|
||||
log e "SD card found but not writable"
|
||||
zenity --error --no-wrap \
|
||||
rd_zenity --error --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--ok-label "Quit" \
|
||||
|
@ -465,7 +441,7 @@ finit() {
|
|||
|
||||
"Custom Location" )
|
||||
log i "Custom Location selected"
|
||||
zenity --info --no-wrap \
|
||||
rd_zenity --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK" \
|
||||
--ok-label "Browse" \
|
||||
|
@ -479,6 +455,8 @@ finit() {
|
|||
|
||||
esac
|
||||
|
||||
log i "\"retrodeck\" folder will be located in \"$rdhome\""
|
||||
|
||||
prepare_component "reset" "retrodeck" # Parse the [paths] section of retrodeck.cfg and set the value of / create all needed folders
|
||||
|
||||
conf_write # Write the new values to retrodeck.cfg
|
||||
|
@ -494,7 +472,7 @@ finit() {
|
|||
configurator_generic_dialog "Vita3K Firmware Install" "You have chosen to install the Vita3K firmware during the RetroDECK first setup.\n\nThis process will take several minutes and requires network access.\n\nVita3K will be launched automatically at the end of the RetroDECK setup process.\nOnce the firmware is installed, please close the emulator to finish the process."
|
||||
fi
|
||||
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" \
|
||||
--text="RetroDECK will now install the needed files, which can take up to one minute.\nRetroDECK will start once the process is completed.\n\nPress OK to continue."
|
||||
|
||||
|
@ -522,7 +500,7 @@ finit() {
|
|||
fi
|
||||
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 initial setup process, please wait."
|
||||
|
@ -585,13 +563,12 @@ deploy_helper_files() {
|
|||
# This script will distribute helper documentation files throughout the filesystem according to the $helper_files_list
|
||||
# USAGE: deploy_helper_files
|
||||
|
||||
while IFS='^' read -r file dest
|
||||
while IFS='^' read -r file dest || [[ -n "$file" ]];
|
||||
do
|
||||
if [[ ! "$file" == "#"* ]] && [[ ! -z "$file" ]]; then
|
||||
eval current_dest="$dest"
|
||||
cp -f "$helper_files_folder/$file" "$current_dest/$file"
|
||||
fi
|
||||
|
||||
done < "$helper_files_list"
|
||||
}
|
||||
|
||||
|
@ -604,13 +581,15 @@ easter_eggs() {
|
|||
current_day=$(date +"%0m%0d") # Read the current date in a format that can be calculated in ranges
|
||||
current_time=$(date +"%0H%0M") # Read the current time in a format that can be calculated in ranges
|
||||
if [[ ! -z $(cat $easter_egg_checklist) ]]; then
|
||||
while IFS="^" read -r start_date end_date start_time end_time splash_file # Read Easter Egg checklist file and separate values
|
||||
while IFS="^" read -r start_date end_date start_time end_time splash_file || [[ -n "$start_date" ]]; # Read Easter Egg checklist file and separate values
|
||||
do
|
||||
if [[ "$((10#$current_day))" -ge "$((10#$start_date))" && "$((10#$current_day))" -le "$((10#$end_date))" && "$((10#$current_time))" -ge "$((10#$start_time))" && "$((10#$current_time))" -le "$((10#$end_time))" ]]; then # If current line specified date/time matches current date/time, set $splash_file to be deployed
|
||||
new_splash_file="$splashscreen_dir/$splash_file"
|
||||
break
|
||||
else # When there are no matches, the default splash screen is set to deploy
|
||||
new_splash_file="$default_splash_file"
|
||||
if [[ ! $start_date == "#"* ]] && [[ ! -z "$start_date" ]]; then
|
||||
if [[ "$((10#$current_day))" -ge "$((10#$start_date))" && "$((10#$current_day))" -le "$((10#$end_date))" && "$((10#$current_time))" -ge "$((10#$start_time))" && "$((10#$current_time))" -le "$((10#$end_time))" ]]; then # If current line specified date/time matches current date/time, set $splash_file to be deployed
|
||||
new_splash_file="$splashscreen_dir/$splash_file"
|
||||
break
|
||||
else # When there are no matches, the default splash screen is set to deploy
|
||||
new_splash_file="$default_splash_file"
|
||||
fi
|
||||
fi
|
||||
done < $easter_egg_checklist
|
||||
else
|
||||
|
@ -699,7 +678,7 @@ ponzu() {
|
|||
rm -rf "$rdhome/ponzu"
|
||||
}
|
||||
|
||||
ponzu_remove(){
|
||||
ponzu_remove() {
|
||||
|
||||
# Call me with yuzu or citra and I will remove them
|
||||
|
||||
|
@ -739,7 +718,7 @@ branch_selector() {
|
|||
|
||||
# Display branches in a Zenity list dialog
|
||||
selected_branch=$(
|
||||
zenity --list \
|
||||
rd_zenity --list \
|
||||
--icon-name=net.retrodeck.retrodeck \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Cooker Branch - Select Branch" \
|
||||
|
@ -749,7 +728,7 @@ branch_selector() {
|
|||
|
||||
# Display warning message
|
||||
if [ $selected_branch ]; then
|
||||
zenity --question --icon-name=net.retrodeck.retrodeck --no-wrap \
|
||||
rd_zenity --question --icon-name=net.retrodeck.retrodeck --no-wrap \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Cooker Branch - Switch Branch" \
|
||||
--text="Are you sure you want to move to \"$selected_branch\" branch?"
|
||||
|
@ -770,7 +749,7 @@ branch_selector() {
|
|||
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak"
|
||||
rm -rf "$rdhome/RetroDECK_Updates" # Cleanup old bundles to save space
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Updater" \
|
||||
--text="RetroDECK is updating to the latest \"$selected_branch\" version, please wait."
|
|
@ -313,8 +313,7 @@ post_update() {
|
|||
set_setting_value "$es_settings" "UserThemeDirectory" "$rdhome/ES-DE/themes" "es_settings"
|
||||
mv -f "$rdhome/themes" "$rdhome/ES-DE/themes" && log d "Move of \"$rdhome/themes\" completed"
|
||||
mv -f "$rdhome/downloaded_media" "$rdhome/ES-DE/downloaded_media" && log d "Move of \"$rdhome/downloaded_media\" completed"
|
||||
mv -f "$rdhome/gamelists/"* "$rdhome/ES-DE/gamelists" && log d "Move of \"$rdhome/gamelists/\" completed"
|
||||
rm -rf "$rdhome/gamelists"
|
||||
mv -f "$rdhome/gamelists/"* "$rdhome/ES-DE/gamelists" && log d "Move of \"$rdhome/gamelists/\" completed" && rm -rf "$rdhome/gamelists"
|
||||
|
||||
log i "MAME-SA, migrating samples to the new exposed folder: from \"/var/data/mame/assets/samples\" to \"$bios_folder/mame-sa/samples\""
|
||||
create_dir "$bios_folder/mame-sa/samples"
|
||||
|
@ -339,6 +338,17 @@ post_update() {
|
|||
fi
|
||||
fi
|
||||
|
||||
if [[ $(check_version_is_older_than "0.8.2b") == "true" ]]; then
|
||||
log i "Vita3K changed some paths, reflecting them: moving \"/var/data/Vita3K\" in \"/var/config/Vita3K\""
|
||||
mv -f "/var/data/Vita3K" "/var/config/Vita3K"
|
||||
log i "Moving ES-DE downloaded_media, gamelist, and themes from \"$rdhome\" to \"$rdhome/ES-DE\" due to a RetroDECK Framework bug"
|
||||
mv -f "$rdhome/themes" "$rdhome/ES-DE/themes" && log d "Move of \"$rdhome/themes\" completed"
|
||||
mv -f "$rdhome/downloaded_media" "$rdhome/ES-DE/downloaded_media" && log d "Move of \"$rdhome/downloaded_media\" completed"
|
||||
mv -f "$rdhome/gamelists/"* "$rdhome/ES-DE/gamelists" && log d "Move of \"$rdhome/gamelists/\" completed" && rm -rf "$rdhome/gamelists"
|
||||
log i "Since in this version we moved to a PR build of Ryujinx we need to symlink it."
|
||||
ln -sv $ryujinxconf "$(dirname $ryujinxconf)/PRConfig.json"
|
||||
fi
|
||||
|
||||
# if [[ $(check_version_is_older_than "0.9.0b") == "true" ]]; then
|
||||
# # Placeholder for version 0.9.0b
|
||||
# rm /var/config/emulationstation/.emulationstation # remving the old symlink to .emulationstation as it might be not needed anymore
|
||||
|
@ -353,6 +363,9 @@ post_update() {
|
|||
# if yes: mv "/var/data/Cemu/keys.txt" "$bios_folder/cemu/mlc/keys.txt"
|
||||
# ln -s "$bios_folder/cemu/mlc/keys.txt" "/var/data/Cemu/keys.txt" <--- AND THIS SHOULD BE EVEN PUT IN THE PREPARATION SCRIPT
|
||||
# fi
|
||||
# TODO: is this true?
|
||||
# log i "Since in this version we restored Ryujinx to a main buikd we don't need the symlink anymore."
|
||||
# rm "$(dirname $ryujinxconf)/PRConfig.json"
|
||||
# fi
|
||||
|
||||
# The following commands are run every time.
|
||||
|
@ -372,7 +385,7 @@ post_update() {
|
|||
deploy_helper_files
|
||||
build_retrodeck_current_presets
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 - Upgrade Process" \
|
||||
--width=400 --height=200 \
|
||||
|
|
|
@ -12,16 +12,19 @@ prepare_component() {
|
|||
action="$1"
|
||||
component=$(echo "$2" | tr '[:upper:]' '[:lower:]')
|
||||
call_source="$3"
|
||||
component_found="false"
|
||||
|
||||
log d "Preparing component: \"$component\", action: \"$action\""
|
||||
|
||||
if [[ "$component" == "retrodeck" ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Update the paths of all folders in retrodeck.cfg and create them
|
||||
while read -r config_line; do
|
||||
local current_setting_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
if [[ ! $current_setting_name =~ (rdhome|sdcard) ]]; then # Ignore these locations
|
||||
local current_setting_value=$(get_setting_value "$rd_conf" "$current_setting_name" "retrodeck" "paths")
|
||||
declare -g "$current_setting_name=$rdhome/$(basename $current_setting_value)"
|
||||
declare -g "$current_setting_name=$rdhome/${current_setting_value#*retrodeck/}" #removes everything until "retrodeck" and adds the actual retrodeck folder
|
||||
log d "Setting: $current_setting_name=$current_setting_value"
|
||||
if [[ ! $current_setting_name == "logs_folder" ]]; then # Don't create a logs folder normally, we want to maintain the current files exactly to not lose early-install logs.
|
||||
create_dir "$rdhome/$(basename $current_setting_value)"
|
||||
else # Log folder-specific actions
|
||||
|
@ -31,7 +34,7 @@ prepare_component() {
|
|||
fi
|
||||
fi
|
||||
done < <(grep -v '^\s*$' $rd_conf | awk '/^\[paths\]/{f=1;next} /^\[/{f=0} f')
|
||||
create_dir "/var/config/retrodeck/godot"
|
||||
create_dir "/var/config/retrodeck/godot" # TODO: what is this for? Can we delete it or add it to the retrodeck.cfg so the folder will be created by the above script?
|
||||
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Update the paths of any folders that came with the retrodeck folder during a move
|
||||
|
@ -49,9 +52,10 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(es-de|all)$ ]]; then # For use after ESDE-related folders are moved or a reset
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing ES-DE"
|
||||
log i "--------------------------------"
|
||||
component_found="true"
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing ES-DE"
|
||||
log i "--------------------------------"
|
||||
if [[ "$action" == "reset" ]]; then
|
||||
rm -rf /var/config/ES-DE
|
||||
create_dir /var/config/ES-DE/settings
|
||||
|
@ -77,9 +81,10 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(retroarch|all)$ ]]; then
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing RetroArch"
|
||||
log i "--------------------------------"
|
||||
component_found="true"
|
||||
log i "--------------------------------"
|
||||
log i "Prepearing RetroArch"
|
||||
log i "--------------------------------"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
if [[ $multi_user_mode == "true" ]]; then # Multi-user actions
|
||||
create_dir -d "$multi_user_data_folder/$SteamAppUser/config/retroarch"
|
||||
|
@ -211,6 +216,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(citra|citra-emu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing CITRA"
|
||||
|
@ -244,7 +250,7 @@ prepare_component() {
|
|||
set_setting_value "$rd_conf" "citra" "$(get_setting_value "$rd_defaults" "citra" "retrodeck" "ask_to_exit")" "retrodeck" "ask_to_exit"
|
||||
fi
|
||||
if [[ "$action" == "postmove" ]]; then # Run only post-move commands
|
||||
dir_prep "$rdhome/bios/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||
dir_prep "$bios_folder/citra/sysdata" "/var/data/citra-emu/sysdata"
|
||||
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"
|
||||
|
@ -256,6 +262,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(cemu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing CEMU"
|
||||
|
@ -283,6 +290,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(dolphin|dolphin-emu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing DOLPHIN"
|
||||
|
@ -336,6 +344,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(duckstation|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing DUCKSTATION"
|
||||
|
@ -381,6 +390,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(melonds|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing MELONDS"
|
||||
|
@ -419,6 +429,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(pcsx2|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing PCSX2"
|
||||
|
@ -463,6 +474,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(pico8|pico-8|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ ("$action" == "reset") || ("$action" == "postmove") ]]; then
|
||||
dir_prep "$bios_folder/pico-8" "$HOME/.lexaloffle/pico-8" # Store binary and config files together. The .lexaloffle directory is a hard-coded location for the PICO-8 config file, cannot be changed
|
||||
dir_prep "$roms_folder/pico8" "$bios_folder/pico-8/carts" # Symlink default game location to RD roms for cleanliness (this location is overridden anyway by the --root_path launch argument anyway)
|
||||
|
@ -473,6 +485,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(ppsspp|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing PPSSPPSDL"
|
||||
|
@ -501,6 +514,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(primehack|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing Primehack"
|
||||
|
@ -544,6 +558,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(rpcs3|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing RPCS3"
|
||||
|
@ -580,6 +595,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(ryujinx|all)$ ]]; then
|
||||
component_found="true"
|
||||
# NOTE: for techincal reasons the system folder of Ryujinx IS NOT a sumlink of the bios/switch/keys as not only the keys are located there
|
||||
# When RetroDECK starts there is a "manage_ryujinx_keys" function that symlinks the keys only in Rryujinx/system.
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
|
@ -612,6 +628,9 @@ prepare_component() {
|
|||
dir_prep "$saves_folder/switch/ryujinx/sdcard" "/var/config/Ryujinx/sdcard"
|
||||
dir_prep "$bios_folder/switch/firmware" "/var/config/Ryujinx/bis/system/Contents/registered"
|
||||
dir_prep "$bios_folder/switch/keys" "/var/config/Ryujinx/system"
|
||||
# TODO: delete these two lines after Ryujinx is back to a proper build
|
||||
log i "Since in this version we moved to a PR build of Ryujinx we need to symlink it." # TODO: deleteme later
|
||||
ln -sv $ryujinxconf "$(dirname $ryujinxconf)/PRConfig.json" # TODO: deleteme later
|
||||
fi
|
||||
fi
|
||||
# if [[ "$action" == "reset" ]] || [[ "$action" == "postmove" ]]; then # Run commands that apply to both resets and moves
|
||||
|
@ -624,6 +643,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(yuzu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing YUZU"
|
||||
|
@ -677,6 +697,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(xemu|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "------------------------"
|
||||
log i "Prepearing XEMU"
|
||||
|
@ -721,6 +742,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(vita3k|all)$ ]]; then
|
||||
component_found="true"
|
||||
if [[ "$action" == "reset" ]]; then # Run reset-only commands
|
||||
log i "----------------------"
|
||||
log i "Prepearing Vita3K"
|
||||
|
@ -729,22 +751,23 @@ prepare_component() {
|
|||
log d "Figure out what Vita3k needs for multi-user"
|
||||
else # Single-user actions
|
||||
# NOTE: the component is writing in "." so it must be placed in the rw filesystem. A symlink of the binary is already placed in /app/bin/Vita3K
|
||||
rm -rf "/var/data/Vita3K"
|
||||
create_dir "/var/data/Vita3K/Vita3K"
|
||||
cp -fvr "$emuconfigs/vita3k/config.yml" "/var/data/Vita3K" # component config
|
||||
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/Vita3K" # User config
|
||||
set_setting_value "$vita3kconf" "pref-path" "$rdhome/bios/Vita3K/Vita3K/" "vita3k"
|
||||
rm -rf "/var/config/Vita3K"
|
||||
create_dir "/var/config/Vita3K"
|
||||
cp -fvr "$emuconfigs/vita3k/config.yml" "$vita3kconf" # component config
|
||||
cp -fvr "$emuconfigs/vita3k/ux0" "$bios_folder/Vita3K/" # User config
|
||||
set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k"
|
||||
fi
|
||||
# Shared actions
|
||||
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/Vita3K/ux0/user/00/savedata" # Multi-user safe?
|
||||
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe?
|
||||
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"
|
||||
dir_prep "$saves_folder/psvita/vita3k" "$bios_folder/Vita3K/ux0/user/00/savedata" # Multi-user safe?
|
||||
set_setting_value "$vita3kconf" "pref-path" "$bios_folder/Vita3K/" "vita3k"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$component" =~ ^(mame|all)$ ]]; then
|
||||
component_found="true"
|
||||
# TODO: do a proper script
|
||||
# This is just a placeholder script to test the emulator's flow
|
||||
log i "----------------------"
|
||||
|
@ -814,6 +837,7 @@ prepare_component() {
|
|||
fi
|
||||
|
||||
if [[ "$component" =~ ^(gzdoom|all)$ ]]; then
|
||||
component_found="true"
|
||||
# TODO: do a proper script
|
||||
# This is just a placeholder script to test the emulator's flow
|
||||
log i "----------------------"
|
||||
|
@ -824,7 +848,7 @@ prepare_component() {
|
|||
create_dir "/var/data/gzdoom/audio/midi"
|
||||
create_dir "/var/data/gzdoom/audio/fm_banks"
|
||||
create_dir "/var/data/gzdoom/audio/soundfonts"
|
||||
create_dir "$rdhome/bios/gzdoom"
|
||||
create_dir "$bios_folder/gzdoom"
|
||||
|
||||
cp -fvr "$emuconfigs/gzdoom/gzdoom.ini" "/var/config/gzdoom"
|
||||
|
||||
|
@ -833,16 +857,7 @@ prepare_component() {
|
|||
sed -i 's#RETRODECKSAVESDIR#'$saves_folder'#g' "/var/config/gzdoom/gzdoom.ini" # This is an unfortunate one-off because set_setting_value does not currently support JSON
|
||||
fi
|
||||
|
||||
if [[ "$component" =~ ^(boilr|all)$ ]]; then
|
||||
log i "----------------------"
|
||||
log i "Prepearing BOILR"
|
||||
log i "----------------------"
|
||||
|
||||
create_dir "/var/config/boilr"
|
||||
cp -fvr "/app/libexec/steam-sync/config.toml" "/var/config/boilr"
|
||||
fi
|
||||
|
||||
if [[ ! "$component" =~ ^(retrodeck|es-de|retroarch|citra|citra-emu|cemu|dolphin|dolphin-emu|duckstation|melonds|melonDS|pcsx2|pico8|pico-8|ppsspp|primehack|rpcs3|ryujinx|yuzu|xemu|vita3k|mame|gzdoom|boilr|)$ ]]; then
|
||||
if [[ $component_found == "false" ]]; then
|
||||
log e "Supplied component $component not found, not resetting"
|
||||
fi
|
||||
|
||||
|
|
|
@ -4,30 +4,9 @@ change_preset_dialog() {
|
|||
# This function will build a list of all systems compatible with a given preset, their current enable/disabled state and allow the user to change one or more
|
||||
# USAGE: change_preset_dialog "$preset"
|
||||
|
||||
local preset="$1"
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
local current_preset_settings=()
|
||||
local current_enabled_systems=()
|
||||
local current_disabled_systems=()
|
||||
local changed_systems=()
|
||||
local changed_presets=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
build_preset_list_options "$1"
|
||||
|
||||
while IFS= read -r config_line
|
||||
do
|
||||
system_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
all_systems=("${all_systems[@]}" "$system_name")
|
||||
system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset")
|
||||
if [[ "$system_value" == "true" ]]; then
|
||||
current_enabled_systems=("${current_enabled_systems[@]}" "$system_name")
|
||||
elif [[ "$system_value" == "false" ]]; then
|
||||
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
|
||||
fi
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
|
||||
choice=$(zenity \
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
--checklist \
|
||||
--separator="," \
|
||||
|
@ -42,7 +21,56 @@ change_preset_dialog() {
|
|||
|
||||
if [[ ! -z $choice || "$rc" == 0 ]]; then
|
||||
(
|
||||
IFS="," read -ra choices <<< "$choice"
|
||||
make_preset_changes
|
||||
) |
|
||||
rd_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 Configurator Utility - Presets Configuration" \
|
||||
--text="Setting up your presets, please wait..."
|
||||
else
|
||||
log i "No preset choices made"
|
||||
fi
|
||||
}
|
||||
|
||||
build_preset_list_options() {
|
||||
# This function will build a list of all the systems available for a given preset
|
||||
# The list will be generated into a Godot temp file and the variable $current_preset_settings
|
||||
|
||||
if [[ -f "$godot_current_preset_settings" ]]; then
|
||||
rm -f "$godot_current_preset_settings" # Godot data transfer temp files
|
||||
fi
|
||||
touch "$godot_current_preset_settings"
|
||||
|
||||
preset="$1"
|
||||
pretty_preset_name=${preset//_/ } # Preset name prettification
|
||||
pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification
|
||||
current_preset_settings=()
|
||||
current_enabled_systems=()
|
||||
current_disabled_systems=()
|
||||
changed_systems=()
|
||||
changed_presets=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
|
||||
while IFS= read -r config_line
|
||||
do
|
||||
system_name=$(get_setting_name "$config_line" "retrodeck")
|
||||
all_systems=("${all_systems[@]}" "$system_name")
|
||||
system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset")
|
||||
if [[ "$system_value" == "true" ]]; then
|
||||
current_enabled_systems=("${current_enabled_systems[@]}" "$system_name")
|
||||
elif [[ "$system_value" == "false" ]]; then
|
||||
current_disabled_systems=("${current_disabled_systems[@]}" "$system_name")
|
||||
fi
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
echo "$system_value"^"$(make_name_pretty $system_name)"^"$system_name" >> "$godot_current_preset_settings"
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
}
|
||||
|
||||
|
||||
make_preset_changes() {
|
||||
# This function will take an array $choices, which contains the names of systems that have been enabled for this preset and enable them in the backend
|
||||
|
||||
IFS="," read -ra choices <<< "$choice"
|
||||
for emulator in "${all_systems[@]}"; do
|
||||
if [[ " ${choices[*]} " =~ " ${emulator} " && ! " ${current_enabled_systems[*]} " =~ " ${emulator} " ]]; then
|
||||
changed_systems=("${changed_systems[@]}" "$emulator")
|
||||
|
@ -51,11 +79,14 @@ change_preset_dialog() {
|
|||
fi
|
||||
set_setting_value "$rd_conf" "$emulator" "true" "retrodeck" "$preset"
|
||||
# Check for conflicting presets for this system
|
||||
while IFS=: read -r preset_being_checked known_incompatible_preset; do
|
||||
if [[ "$preset" == "$preset_being_checked" ]]; then
|
||||
if [[ $(get_setting_value "$rd_conf" "$emulator" "retrodeck" "$known_incompatible_preset") == "true" ]]; then
|
||||
changed_presets=("${changed_presets[@]}" "$known_incompatible_preset")
|
||||
set_setting_value "$rd_conf" "$emulator" "false" "retrodeck" "$known_incompatible_preset"
|
||||
while IFS=: read -r preset_being_checked known_incompatible_preset || [[ -n "$preset_being_checked" ]];
|
||||
do
|
||||
if [[ ! $preset_being_checked == "#"* ]] && [[ ! -z "$preset_being_checked" ]]; then
|
||||
if [[ "$preset" == "$preset_being_checked" ]]; then
|
||||
if [[ $(get_setting_value "$rd_conf" "$emulator" "retrodeck" "$known_incompatible_preset") == "true" ]]; then
|
||||
changed_presets=("${changed_presets[@]}" "$known_incompatible_preset")
|
||||
set_setting_value "$rd_conf" "$emulator" "false" "retrodeck" "$known_incompatible_preset"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done < "$incompatible_presets_reference_list"
|
||||
|
@ -71,14 +102,6 @@ change_preset_dialog() {
|
|||
for emulator in "${changed_systems[@]}"; do
|
||||
build_preset_config $emulator ${changed_presets[*]}
|
||||
done
|
||||
) |
|
||||
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 Configurator Utility - Presets Configuration" \
|
||||
--text="Setting up your presets, please wait..."
|
||||
else
|
||||
echo "No choices made"
|
||||
fi
|
||||
}
|
||||
|
||||
build_preset_config() {
|
||||
|
@ -96,81 +119,83 @@ build_preset_config() {
|
|||
local read_system_name=$(get_setting_name "$system_line")
|
||||
if [[ "$read_system_name" == "$system_being_changed" ]]; then
|
||||
local read_system_enabled=$(get_setting_value "$rd_conf" "$read_system_name" "retrodeck" "$current_preset")
|
||||
while IFS='^' read -r action read_preset read_setting_name new_setting_value section target_file defaults_file
|
||||
while IFS='^' read -r action read_preset read_setting_name new_setting_value section target_file defaults_file || [[ -n "$action" ]];
|
||||
do
|
||||
case "$action" in
|
||||
if [[ ! $action == "#"* ]] && [[ ! -z "$action" ]]; then
|
||||
case "$action" in
|
||||
|
||||
"config_file_format" )
|
||||
if [[ "$read_preset" == "retroarch-all" ]]; then
|
||||
local retroarch_all="true"
|
||||
local read_config_format="retroarch"
|
||||
else
|
||||
local read_config_format="$read_preset"
|
||||
fi
|
||||
;;
|
||||
"config_file_format" )
|
||||
if [[ "$read_preset" == "retroarch-all" ]]; then
|
||||
local retroarch_all="true"
|
||||
local read_config_format="retroarch"
|
||||
else
|
||||
local read_config_format="$read_preset"
|
||||
fi
|
||||
;;
|
||||
|
||||
"change" )
|
||||
if [[ "$read_preset" == "$current_preset" ]]; then
|
||||
if [[ "$target_file" = \$* ]]; then # Read current target file and resolve if it is a variable
|
||||
eval target_file=$target_file
|
||||
fi
|
||||
local read_target_file="$target_file"
|
||||
if [[ "$defaults_file" = \$* ]]; then #Read current defaults file and resolve if it is a variable
|
||||
eval defaults_file=$defaults_file
|
||||
fi
|
||||
local read_defaults_file="$defaults_file"
|
||||
if [[ "$read_system_enabled" == "true" ]]; then
|
||||
if [[ "$new_setting_value" = \$* ]]; then
|
||||
eval new_setting_value=$new_setting_value
|
||||
"change" )
|
||||
if [[ "$read_preset" == "$current_preset" ]]; then
|
||||
if [[ "$target_file" = \$* ]]; then # Read current target file and resolve if it is a variable
|
||||
eval target_file=$target_file
|
||||
fi
|
||||
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then # If this is a RetroArch core, generate the override file
|
||||
if [[ ! -f "$read_target_file" ]]; then
|
||||
create_dir "$(realpath "$(dirname "$read_target_file")")"
|
||||
echo "$read_setting_name = \""$new_setting_value"\"" > "$read_target_file"
|
||||
else
|
||||
if [[ -z $(grep -o -P "^$read_setting_name\b" "$read_target_file") ]]; then
|
||||
add_setting "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
local read_target_file="$target_file"
|
||||
if [[ "$defaults_file" = \$* ]]; then #Read current defaults file and resolve if it is a variable
|
||||
eval defaults_file=$defaults_file
|
||||
fi
|
||||
local read_defaults_file="$defaults_file"
|
||||
if [[ "$read_system_enabled" == "true" ]]; then
|
||||
if [[ "$new_setting_value" = \$* ]]; then
|
||||
eval new_setting_value=$new_setting_value
|
||||
fi
|
||||
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then # If this is a RetroArch core, generate the override file
|
||||
if [[ ! -f "$read_target_file" ]]; then
|
||||
create_dir "$(realpath "$(dirname "$read_target_file")")"
|
||||
echo "$read_setting_name = \""$new_setting_value"\"" > "$read_target_file"
|
||||
else
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
if [[ -z $(grep -o -P "^$read_setting_name\b" "$read_target_file") ]]; then
|
||||
add_setting "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
else
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
fi
|
||||
else
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$new_setting_value" "$read_config_format" "$section"
|
||||
fi
|
||||
else
|
||||
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then
|
||||
if [[ -f "$read_target_file" ]]; then
|
||||
delete_setting "$read_target_file" "$read_setting_name" "$read_config_format" "$section"
|
||||
if [[ -z $(cat "$read_target_file") ]]; then # If the override file is empty
|
||||
rm -f "$read_target_file"
|
||||
fi
|
||||
if [[ -z $(ls -1 "$(dirname "$read_target_file")") ]]; then # If the override folder is empty
|
||||
rmdir "$(realpath "$(dirname "$read_target_file")")"
|
||||
if [[ "$read_config_format" == "retroarch" && ! "$retroarch_all" == "true" ]]; then
|
||||
if [[ -f "$read_target_file" ]]; then
|
||||
delete_setting "$read_target_file" "$read_setting_name" "$read_config_format" "$section"
|
||||
if [[ -z $(cat "$read_target_file") ]]; then # If the override file is empty
|
||||
rm -f "$read_target_file"
|
||||
fi
|
||||
if [[ -z $(ls -1 "$(dirname "$read_target_file")") ]]; then # If the override folder is empty
|
||||
rmdir "$(realpath "$(dirname "$read_target_file")")"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
local default_setting_value=$(get_setting_value "$read_defaults_file" "$read_setting_name" "$read_config_format" "$section")
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$default_setting_value" "$read_config_format" "$section"
|
||||
fi
|
||||
else
|
||||
local default_setting_value=$(get_setting_value "$read_defaults_file" "$read_setting_name" "$read_config_format" "$section")
|
||||
set_setting_value "$read_target_file" "$read_setting_name" "$default_setting_value" "$read_config_format" "$section"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
;;
|
||||
|
||||
"enable" )
|
||||
if [[ "$read_preset" == "$current_preset" ]]; then
|
||||
if [[ "$read_system_enabled" == "true" ]]; then
|
||||
enable_file "$read_setting_name"
|
||||
else
|
||||
disable_file "$read_setting_name"
|
||||
"enable" )
|
||||
if [[ "$read_preset" == "$current_preset" ]]; then
|
||||
if [[ "$read_system_enabled" == "true" ]]; then
|
||||
enable_file "$read_setting_name"
|
||||
else
|
||||
disable_file "$read_setting_name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
;;
|
||||
|
||||
* )
|
||||
echo "Other data: $action $read_preset $read_setting_name $new_setting_value $section" # DEBUG
|
||||
;;
|
||||
* )
|
||||
log d "Other data: $action $read_preset $read_setting_name $new_setting_value $section" # DEBUG
|
||||
;;
|
||||
|
||||
esac
|
||||
esac
|
||||
fi
|
||||
done < <(cat "$presets_dir/$read_system_name"_presets.cfg)
|
||||
fi
|
||||
done < <(printf '%s\n' "$preset_section")
|
||||
|
@ -182,7 +207,7 @@ build_retrodeck_current_presets() {
|
|||
# This can also be used to build the "current" state post-update after adding new systems
|
||||
# USAGE: build_retrodeck_current_presets
|
||||
|
||||
while IFS= read -r current_setting_line # Read the existing retrodeck.cfg
|
||||
while IFS= read -r current_setting_line || [[ -n "$current_setting_line" ]]; # Read the existing retrodeck.cfg
|
||||
do
|
||||
if [[ (! -z "$current_setting_line") && (! "$current_setting_line" == "#"*) && (! "$current_setting_line" == "[]") ]]; then # If the line has a valid entry in it
|
||||
if [[ ! -z $(grep -o -P "^\[.+?\]$" <<< "$current_setting_line") ]]; then # If the line is a section header
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
debug = false
|
||||
config_version = 1
|
||||
blacklisted_games = []
|
||||
boilr_tag = "retrodeck"
|
||||
|
||||
[steamgrid_db]
|
||||
enabled = true
|
||||
prefer_animated = false
|
||||
banned_images = []
|
||||
only_download_boilr_images = false
|
||||
allow_nsfw = false
|
||||
|
||||
[steam]
|
||||
create_collections = false
|
||||
optimize_for_big_picture = false
|
||||
stop_steam = false
|
||||
start_steam = false
|
||||
|
||||
[bottles]
|
||||
enabled = false
|
||||
|
||||
[epic_games]
|
||||
enabled = false
|
||||
safe_launch = []
|
||||
|
||||
[flatpak]
|
||||
enabled = false
|
||||
|
||||
[gog]
|
||||
enabled = false
|
||||
create_symlinks = true
|
||||
|
||||
[heroic]
|
||||
enabled = false
|
||||
launch_games_through_heroic = []
|
||||
default_launch_through_heroic = true
|
||||
|
||||
[itch]
|
||||
enabled = false
|
||||
create_symlinks = true
|
||||
|
||||
[legendary]
|
||||
enabled = false
|
||||
|
||||
[lutris]
|
||||
enabled = false
|
||||
executable = "lutris"
|
||||
flatpak = true
|
||||
flatpak_image = "net.lutris.Lutris"
|
||||
installed = true
|
||||
|
||||
[origin]
|
||||
enabled = false
|
||||
|
||||
[uplay]
|
||||
enabled = false
|
||||
|
||||
[minigalaxy]
|
||||
enabled = true
|
||||
create_symlinks = false
|
||||
games_folder = "/var/config/boilr/sync/"
|
|
@ -1,456 +0,0 @@
|
|||
"""Sync RetroDECK favorites games with steam shortcuts"""
|
||||
import binascii
|
||||
import os
|
||||
import re
|
||||
import shlex
|
||||
import shutil
|
||||
import glob
|
||||
import sys
|
||||
import time
|
||||
import hashlib
|
||||
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
command_list_default={
|
||||
"3do": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/opera_libretro.so",
|
||||
"amiga": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"amiga1200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"amiga600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"amigacd32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"amstradcpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
|
||||
"arcade": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"arduboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/arduous_libretro.so",
|
||||
"astrocde": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"atari2600": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so",
|
||||
"atari5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so",
|
||||
"atari7800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prosystem_libretro.so",
|
||||
"atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
|
||||
"atarijaguar": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so",
|
||||
"atarijaguarcd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/virtualjaguar_libretro.so",
|
||||
"atarilynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so",
|
||||
"atarist": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/hatari_libretro.so",
|
||||
"atarixe": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
|
||||
"atomiswave": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
|
||||
"c64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so",
|
||||
"cavestory": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nxengine_libretro.so",
|
||||
"cdimono1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so",
|
||||
"cdtv": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"chailove": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/chailove_libretro.so",
|
||||
"channelf": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freechaf_libretro.so",
|
||||
"colecovision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"cps": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"cps1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"cps2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"cps3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"doom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so",
|
||||
"dos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so",
|
||||
"dreamcast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
|
||||
"easyrpg": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/easyrpg_libretro.so",
|
||||
"famicom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
|
||||
"fba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so",
|
||||
"fbneo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
|
||||
"fds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
|
||||
"gameandwatch": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so",
|
||||
"gamegear": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"gb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
|
||||
"gba": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
|
||||
"gbc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
|
||||
"genesis": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"gx4000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
|
||||
"intellivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/freeintv_libretro.so",
|
||||
"j2me": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/squirreljme_libretro.so",
|
||||
"lcdgames": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gw_libretro.so",
|
||||
"lutro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/lutro_libretro.so",
|
||||
"mame": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"mastersystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"megacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"megacdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"megadrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"megaduck": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameduck_libretro.so",
|
||||
"mess": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mess2015_libretro.so",
|
||||
"model2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"moto": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so",
|
||||
"msx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"msx1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"msx2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"msxturbor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"multivision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so",
|
||||
"n64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so",
|
||||
"n64dd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so",
|
||||
"naomi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
|
||||
"naomigd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
|
||||
"nds": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so",
|
||||
"neogeo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
|
||||
"neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
|
||||
"neogeocdjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
|
||||
"nes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
|
||||
"ngp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
|
||||
"ngpc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
|
||||
"odyssey2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so",
|
||||
"palm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mu_libretro.so",
|
||||
"pc88": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quasi88_libretro.so",
|
||||
"pc98": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so",
|
||||
"pcengine": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
|
||||
"pcenginecd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
|
||||
"pcfx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pcfx_libretro.so",
|
||||
"pokemini": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pokemini_libretro.so",
|
||||
"psx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so",
|
||||
"quake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so",
|
||||
"satellaview": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
|
||||
"saturnjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
|
||||
"scummvm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/scummvm_libretro.so",
|
||||
"sega32x": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
|
||||
"sega32xjp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
|
||||
"sega32xna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
|
||||
"segacd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"sfc": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"sg-1000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"sgb": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so",
|
||||
"snes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"snesna": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"spectravideo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"sufami": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"supergrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so",
|
||||
"supervision": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/potator_libretro.so",
|
||||
"tg16": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
|
||||
"tg-cd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
|
||||
"tic80": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tic80_libretro.so",
|
||||
"to8": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/theodore_libretro.so",
|
||||
"uzebox": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/uzem_libretro.so",
|
||||
"vectrex": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vecx_libretro.so",
|
||||
"vic20": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xvic_libretro.so",
|
||||
"videopac": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/o2em_libretro.so",
|
||||
"virtualboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_vb_libretro.so",
|
||||
"wasm4": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/wasm4_libretro.so",
|
||||
"wonderswan": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so",
|
||||
"wonderswancolor": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_wswan_libretro.so",
|
||||
"x1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/x1_libretro.so",
|
||||
"x68000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/px68k_libretro.so",
|
||||
"zx81": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/81_libretro.so",
|
||||
"zxspectrum": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fuse_libretro.so",
|
||||
"switch": "flatpak run --command=/var/data/ponzu/Yuzu/bin/yuzu net.retrodeck.retrodeck -f -g",
|
||||
"n3ds": "flatpak run --command=/var/data/ponzu/Citra/bin/citra-qt net.retrodeck.retrodeck",
|
||||
"ps2": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch",
|
||||
"wiiu": "flatpak run --command=Cemu-wrapper net.retrodeck.retrodeck -g",
|
||||
"gc": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
|
||||
"wii": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
|
||||
"xbox": "flatpak run --command=xemu net.retrodeck.retrodeck -dvd_path",
|
||||
"ps3": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui",
|
||||
"psp": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck",
|
||||
"pico8": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run"
|
||||
}
|
||||
|
||||
alt_command_list={
|
||||
"PUAE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae_libretro.so",
|
||||
"Caprice32": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cap32_libretro.so",
|
||||
"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"Stella": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella_libretro.so",
|
||||
"a5200": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/a5200_libretro.so",
|
||||
"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
|
||||
"Handy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/handy_libretro.so",
|
||||
"VICE x64sc Accurate": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64sc_libretro.so",
|
||||
"SAME CDi": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/same_cdi_libretro.so",
|
||||
"blueMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bluemsx_libretro.so",
|
||||
"MAME - CURRENT": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame_libretro.so",
|
||||
"PrBoom": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/prboom_libretro.so",
|
||||
"DOSBox-Pure": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_pure_libretro.so",
|
||||
"Mesen": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen_libretro.so",
|
||||
"Genesis Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_libretro.so",
|
||||
"Gamebatte": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gambatte_libretro.so",
|
||||
"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
|
||||
"ParaLLEI N64": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/parallel_n64_libretro.so",
|
||||
"DeSmuME": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume_libretro.so",
|
||||
"NeoCD": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/neocd_libretro.so",
|
||||
"Beetle NeoPop": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_ngp_libretro.so",
|
||||
"Neko Project II Kai": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/np2kai_libretro.so",
|
||||
"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so",
|
||||
"Swanstation": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/swanstation_libretro.so",
|
||||
"TyrQuake": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tyrquake_libretro.so",
|
||||
"Beetle Saturn": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_saturn_libretro.so",
|
||||
"Snes 9x - Current": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x_libretro.so",
|
||||
"Beetle SuperGrafx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supergrafx_libretro.so",
|
||||
"Yuzu (Standalone)": "flatpak run --command=yuzu net.retrodeck.retrodeck -f -g",
|
||||
"Citra (Standalone)": "flatpak run --command=citra net.retrodeck.retrodeck",
|
||||
"PCSX2 (Standalone)": "flatpak run --command=pcsx2-qt net.retrodeck.retrodeck -batch",
|
||||
"Dolphin (Standalone)": "flatpak run --command=dolphin-emu-wrapper net.retrodeck.retrodeck -b -e",
|
||||
"RPCS3 Directory (Standalone)": "flatpak run --command=pcsx3 net.retrodeck.retrodeck --no-gui",
|
||||
"PPSSPP (Standalone)": "flatpak run --command=PPSSPPSDL net.retrodeck.retrodeck",
|
||||
"PICO-8 (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -run",
|
||||
"PUAE 2021": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/puae2021_libretro.so",
|
||||
"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so",
|
||||
"CPCemu (Standalone)": "NYI", #NYI
|
||||
"MAME 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2010_libretro.so",
|
||||
"MAME 2003-Plus": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2003_plus_libretro.so",
|
||||
"MAME 2000": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mame2000_libretro.so",
|
||||
"MAME (Standalone)": "NYI", #NYI
|
||||
"FinalBurn Neo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbneo_libretro.so",
|
||||
"FinalBurn Neo (Standalone)": "NYI", #NYI
|
||||
"FB Alpha 2012": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_libretro.so",
|
||||
"Flycast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/flycast_libretro.so",
|
||||
"Flycast (Standalone)": "NYI", #NYI
|
||||
"Kronos": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/kronos_libretro.so",
|
||||
"Supermodel (Standalone)": "NYI", #NYI
|
||||
"Supermodel [Fullscreen] (Standalone)": "NYI", #NYI
|
||||
"Shortcut or script": "TODO: I have to catch how it works", #TODO
|
||||
"Atari800 (Standalone)": "NYI", #NYI
|
||||
"Stella 2014": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/stella2014_libretro.so",
|
||||
"Atari800": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/atari800_libretro.so",
|
||||
"Beetle Lynx": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_lynx_libretro.so",
|
||||
"VICE x64 Fast": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x64_libretro.so",
|
||||
"VICE x64 SuperCPU": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_xscpu64_libretro.so",
|
||||
"VICE x128": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vice_x128_libretro.so",
|
||||
"Frodo": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/frodo_libretro.so",
|
||||
"CDi 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/cdi2015_libretro.so",
|
||||
"Gearcoleco": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearcoleco_libretro.so",
|
||||
"FB Alpha 2012 CPS-1": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps1_libretro.so",
|
||||
"FB Alpha 2012 CPS-2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps2_libretro.so",
|
||||
"FB Alpha 2012 CPS-3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fbalpha2012_cps3_libretro.so",
|
||||
"Boom 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro.so",
|
||||
"Boom 3 xp": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/boom3_libretro_xp.so",
|
||||
"DOSBox-Core": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_core_libretro.so",
|
||||
"DOSBox-SVN": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dosbox_svn_libretro.so",
|
||||
"Keep ES-DE running": "TODO: I have to catch how it works", #TODO
|
||||
"AppImage (Suspend ES-DE)": "TODO: I have to catch how it works", #TODO
|
||||
"AppImage (Keep ES-DE running)": "TODO: I have to catch how it works", #TODO
|
||||
"Nestopia UE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nestopia_libretro.so",
|
||||
"FCEUmm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fceumm_libretro.so",
|
||||
"QuickNES": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/quicknes_libretro.so",
|
||||
"Genesis Plus GX Wide": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/genesis_plus_gx_wide_libretro.so",
|
||||
"Gearsystem": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearsystem_libretro.so",
|
||||
"SMS Plus GX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/smsplus_libretro.so",
|
||||
"SameBoy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/sameboy_libretro.so",
|
||||
"Gearboy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gearboy_libretro.so",
|
||||
"TGB Dual": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/tgbdual_libretro.so",
|
||||
"Mesen-S": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mesen-s_libretro.so",
|
||||
"VBA-M": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vbam_libretro.so",
|
||||
"bsnes": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_libretro.so",
|
||||
"mGBA": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mgba_libretro.so",
|
||||
"VBA Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vba_next_libretro.so",
|
||||
"gpSP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/gpsp_libretro.so",
|
||||
"Dolphin": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/dolphin_libretro.so",
|
||||
"PrimeHack (Standalone)": "flatpak run --command=primehack-wrapper net.retrodeck.retrodeck -b -e",
|
||||
"PicoDrive": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/picodrive_libretro.so",
|
||||
"BlastEm": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/blastem_libretro.so",
|
||||
"CrocoDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/crocods_libretro.so",
|
||||
"fMSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/fmsx_libretro.so",
|
||||
"Citra": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra_libretro.so",
|
||||
"Citra 2018": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/citra2018_libretro.so",
|
||||
"Mupen64Plus-Next": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mupen64plus_next_libretro.so",
|
||||
"DeSmuME 2015": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/desmume2015_libretro.so",
|
||||
"melonDS": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/melonds_libretro.so",
|
||||
"melonDS (Standalone)": "flatpak run --command=melonDS net.retrodeck.retrodeck",
|
||||
"FinalBurn Neo neogeocd": "flatpak run --command=retroarch net.retrodeck.retrodeck --subsystem neocd -L /var/config/retroarch/cores/fbneo_libretro.so",
|
||||
"RACE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/race_libretro.so",
|
||||
"Neko Project II": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/nekop2_libretro.so",
|
||||
"Beetle PCE FAST": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_fast_libretro.so",
|
||||
"PICO-8 Splore (Standalone)": "flatpak run --command=pico8 net.retrodeck.retrodeck -desktop_path ~/retrodeck/screenshots -root_path {GAMEDIR} -splore",
|
||||
"AppImage": "TODO: I have to catch how it works", #TODO
|
||||
"LRPS2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so",
|
||||
"PCSX2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx2_libretro.so",
|
||||
"RPCS3 Shortcut (Standalone)": "TODO: I have to catch how it works", #TODO
|
||||
"PPSSPP": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/ppsspp_libretro.so",
|
||||
"Beetle PSX": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_libretro.so",
|
||||
"Beetle PSX HW": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_psx_hw_libretro.so",
|
||||
"PCSX ReARMed": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/pcsx_rearmed_libretro.so",
|
||||
"DuckStation (Standalone)": "flatpak run --command=duckstation-qt net.retrodeck.retrodeck -batch",
|
||||
"vitaQuake 2": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2_libretro.so",
|
||||
"vitaQuake 2 [Rogue]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-rogue_libretro.so",
|
||||
"vitaQuake 2 [Xatrix]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-xatrix_libretro.so",
|
||||
"vitaQuake 2 [Zaero]": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake2-zaero_libretro.so",
|
||||
"vitaQuake 3": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/vitaquake3_libretro.so",
|
||||
"YabaSanshiro": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabasanshiro_libretro.so",
|
||||
"Yabause": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/yabause_libretro.so",
|
||||
"Snes9x 2010": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/snes9x2010_libretro.so",
|
||||
"bsnes-hd": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_hd_beta_libretro.so",
|
||||
"bsnes-mercury Accuracy": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/bsnes_mercury_accuracy_libretro.so",
|
||||
"Beetle Supafaust": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_supafaust_libretro.so",
|
||||
"Beetle PCE": "flatpak run --command=retroarch net.retrodeck.retrodeck -L /var/config/retroarch/cores/mednafen_pce_libretro.so"
|
||||
}
|
||||
|
||||
exit_file="/tmp/retrodeck_steam_sync_exit"
|
||||
rdhome=""
|
||||
roms_folder=""
|
||||
|
||||
def create_shortcut_new(games):
|
||||
changes=0
|
||||
old_games=os.listdir(rdhome+"/.sync/")
|
||||
|
||||
for game in games:
|
||||
try:
|
||||
i=old_games.index(game[0])
|
||||
old_games[i]=0
|
||||
except ValueError:
|
||||
print(game[0]+" is a new game!")
|
||||
changes=1
|
||||
|
||||
path=rdhome+"/.sync/"+game[0]
|
||||
print("Go to path: "+path)
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
fl=open(path+"/goggame-0.info","w")
|
||||
fl.write('{\n')
|
||||
fl.write(' "buildId": "",\n')
|
||||
fl.write(' "clientId": "",\n')
|
||||
fl.write(' "gameId": "",\n')
|
||||
fl.write(' "name": "'+game[0]+'",\n')
|
||||
fl.write(' "playTasks": [\n')
|
||||
fl.write(' {\n')
|
||||
fl.write(' "category": "launcher",\n')
|
||||
fl.write(' "isPrimary": true,\n')
|
||||
fl.write(' "languages": [\n')
|
||||
fl.write(' "en-US"\n')
|
||||
fl.write(' ],\n')
|
||||
fl.write(' "name": "'+game[0]+'",\n')
|
||||
fl.write(' "path": "launch.sh",\n')
|
||||
fl.write(' "type": "FileTask"\n')
|
||||
fl.write(' }\n')
|
||||
fl.write(' ]\n')
|
||||
fl.write('}\n')
|
||||
fl.close()
|
||||
|
||||
fl=open(path+"/launch.sh","w")
|
||||
fl.write("#!/bin/bash\n\n")
|
||||
fl.write('if test "$(whereis flatpak)" = "flatpak:"\n')
|
||||
fl.write("then\n")
|
||||
fl.write("flatpak-spawn --host "+game[1]+"\n")
|
||||
fl.write("else\n")
|
||||
fl.write(game[1]+"\n")
|
||||
fl.write("fi\n")
|
||||
fl.close()
|
||||
|
||||
st=os.stat(path+"/launch.sh")
|
||||
os.chmod(path+"/launch.sh", st.st_mode | 0o0111)
|
||||
|
||||
print("Start removing")
|
||||
print(old_games)
|
||||
for game in old_games:
|
||||
if game:
|
||||
shutil.rmtree(rdhome+"/.sync/"+game)
|
||||
changes=1
|
||||
|
||||
if changes:
|
||||
os.system("boilr --no-ui")
|
||||
|
||||
def addToSteam(systems):
|
||||
games=[]
|
||||
for system in systems:
|
||||
print("Start parsing system: {}".format(system))
|
||||
|
||||
f=open(rdhome+"/gamelists/"+system+"/gamelist.xml","r")
|
||||
f.readline()
|
||||
parser=ET.XMLParser()
|
||||
parser.feed(b'<root>')
|
||||
parser.feed(f.read())
|
||||
parser.feed(b'</root>')
|
||||
root=parser.close()
|
||||
f.close()
|
||||
|
||||
globalAltEmu=""
|
||||
for subroot in root:
|
||||
if subroot.tag=="alternativeEmulator":
|
||||
for alt in subroot:
|
||||
globalAltEmu=alt.text
|
||||
else:
|
||||
for game in subroot:
|
||||
path=""
|
||||
name=""
|
||||
favorite=""
|
||||
altemulator=globalAltEmu
|
||||
for tag in game:
|
||||
if tag.tag=="path":
|
||||
path=tag.text
|
||||
elif tag.tag=="name":
|
||||
name=tag.text
|
||||
elif tag.tag=="favorite":
|
||||
favorite=tag.text
|
||||
elif tag.tag=="altemulator":
|
||||
altemulator=tag.text
|
||||
|
||||
if favorite=="true" and altemulator=="":
|
||||
print("Find favorite game: {}".format(name))
|
||||
games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
elif favorite=="true":
|
||||
print("Find favorite game with alternative emulator: {}, {}".format(name,altemulator))
|
||||
if ("neogeocd" in system) and altemulator=="FinalBurn Neo":
|
||||
games.append([name,alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
print(alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'")
|
||||
elif system=="pico8" and altemulator=="PICO-8 Splore (Standalone)":
|
||||
games.append([name,alt_command_list[altemulator]])
|
||||
print(alt_command_list[altemulator])
|
||||
else:
|
||||
games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'")
|
||||
if not games==[]:
|
||||
create_shortcut_new(games)
|
||||
|
||||
def start_config():
|
||||
global rdhome
|
||||
global roms_folder
|
||||
global command_list_default
|
||||
global alt_command_list
|
||||
|
||||
if os.path.isfile(exit_file):
|
||||
os.remove(exit_file)
|
||||
|
||||
print("Open RetroDECK config file: {}".format(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg")))
|
||||
|
||||
fl=open(os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/retrodeck/retrodeck.cfg"),"r")
|
||||
lines=fl.readlines()
|
||||
for line in lines:
|
||||
if "rdhome" in line:
|
||||
rdhome=line[7:-1]
|
||||
elif "roms_folder" in line:
|
||||
roms_folder=line[12:-1]
|
||||
fl.close()
|
||||
|
||||
command_list_default["pico8"]=command_list_default["pico8"].replace("{GAMEDIR}",roms_folder+"/pico8")
|
||||
alt_command_list["PICO-8 Splore (Standalone)"]=alt_command_list["PICO-8 Splore (Standalone)"].replace("{GAMEDIR}",roms_folder+"/pico8")
|
||||
|
||||
if not os.path.exists(rdhome+"/.sync/"):
|
||||
os.makedirs(rdhome+"/.sync/")
|
||||
|
||||
boilr_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/boilr/config.toml")
|
||||
if os.path.isfile(boilr_path):
|
||||
with open(boilr_path,"r") as f:
|
||||
data=f.read()
|
||||
data=re.sub("\"games_folder.*","games_folder = "+rdhome+"/.sync/\"",data)
|
||||
with open(boilr_path,"w") as f:
|
||||
f.write(data)
|
||||
else:
|
||||
print("Error! BoilR config not initialized.")
|
||||
|
||||
if __name__=="__main__":
|
||||
start_config()
|
||||
|
||||
new_hash={}
|
||||
for system in os.listdir(rdhome+"/gamelists/"):
|
||||
new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest()
|
||||
|
||||
running=True
|
||||
|
||||
while running:
|
||||
time.sleep(30)
|
||||
systems=[]
|
||||
|
||||
for system in os.listdir(rdhome+"/gamelists/"):
|
||||
if not system in systems:
|
||||
if system in new_hash.keys():
|
||||
old_hash=new_hash[system]
|
||||
new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest()
|
||||
if not new_hash[system] == old_hash:
|
||||
print("System {} changed!".format(system))
|
||||
systems.append(system)
|
||||
else:
|
||||
print("System {} not changed!".format(system))
|
||||
else:
|
||||
new_hash[system]=hashlib.md5(open(rdhome+"/gamelists/"+system+"/gamelist.xml","rb").read()).hexdigest()
|
||||
print("System {} added!".format(system))
|
||||
systems.append(system)
|
||||
|
||||
if os.path.isfile(exit_file):
|
||||
running=False
|
||||
os.remove(exit_file)
|
||||
|
||||
addToSteam(systems)
|
||||
print("Finish!")
|
|
@ -67,6 +67,31 @@
|
|||
<project_license>GPL-3.0</project_license>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<releases>
|
||||
<release version="0.8.2b" date="2024-07-15">
|
||||
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.8.2b</url>
|
||||
<description>
|
||||
<p>Changes:</p>
|
||||
<ul>
|
||||
<li>ES-DE: updated to 3.0.3</li>
|
||||
<li>RUNTIME: updated to KDE 6.7</li>
|
||||
<li>All emulators and engines updated</li>
|
||||
<li>CONFIGURATOR: fixed an issue in the multi-file compression tool that prevented some type of files to be converted</li>
|
||||
<li>CONFIGURATOR: added headless state for some functions (this will help to migrate to the Godot Configurator)</li>
|
||||
<li>CONFIGURATOR: added a new "Empty ROMs folder removal" tool helping the user to cleanup the roms folder by deleting the empty folders</li>
|
||||
<li>CONFIGURATOR: added a new "Rebuild removed ROMs folders" tool. This is complementary to the previous one:by recreating the whole roms folder structure</li>
|
||||
<li>CONFIGURATOR: chd compression functionality restored</li>
|
||||
<li>FRAMEWORK: fixed an issue where second level subfolders inside retrodeck folder were not correctly placed, this caused errors on ES-DE as themes and downloaded_media folder could not be found after a reset or first install</li>
|
||||
<li>CEMU: now audio should work correctly when docking and undocking the Steam Deck</li>
|
||||
<li>CEMU: added microphone blow input to R3</li>
|
||||
<li>DUCKSTATION: now out of the rolling release</li>
|
||||
<li>INFRASTRUCTURE: we now have a self-hosted Gitea repo in case fo disaster recovery</li>
|
||||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Information.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.1b" date="2024-05-13">
|
||||
<url>https://github.com/XargonWan/RetroDECK/releases/tag/0.8.1b</url>
|
||||
<description>
|
||||
|
@ -96,7 +121,7 @@
|
|||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Infomration.</li>
|
||||
<li>Please check the know issues in the Wiki under General Information.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
@ -154,7 +179,7 @@
|
|||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Infomration.</li>
|
||||
<li>Please check the know issues in the Wiki under General Information.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
@ -172,7 +197,7 @@
|
|||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Infomration.</li>
|
||||
<li>Please check the know issues in the Wiki under General Information.</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
@ -208,7 +233,7 @@
|
|||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Infomration</li>
|
||||
<li>Please check the know issues in the Wiki under General Information</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
@ -222,7 +247,7 @@
|
|||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Please check the know issues in the Wiki under General Infomration</li>
|
||||
<li>Please check the know issues in the Wiki under General Information</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
app-id: net.retrodeck.retrodeck
|
||||
runtime: org.kde.Platform
|
||||
runtime-version: "6.5"
|
||||
runtime-version: "6.7"
|
||||
sdk: org.kde.Sdk
|
||||
sdk-extensions:
|
||||
- org.freedesktop.Sdk.Extension.llvm16 # Needed for RPCS3 (llvm17 actually)
|
||||
- org.freedesktop.Sdk.Extension.rust-stable # Needed for BoilR
|
||||
- org.freedesktop.Sdk.Extension.llvm18 # Needed for RPCS3
|
||||
command: retrodeck.sh
|
||||
|
||||
finish-args:
|
||||
|
@ -69,8 +68,8 @@ 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
|
||||
|
@ -79,7 +78,7 @@ modules:
|
|||
|
||||
# on main please update this with the version variable, eg: VERSION=0.8.0b
|
||||
# on cooker will be THISBRANCH
|
||||
VERSION=0.8.1b
|
||||
VERSION=THISBRANCH
|
||||
|
||||
git checkout ${GITHUB_REF_NAME}
|
||||
mkdir -p ${FLATPAK_DEST}/retrodeck/
|
||||
|
@ -223,21 +222,13 @@ modules:
|
|||
- /lib/cmake
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/KhronosGroup/glslang/archive/14.1.0.tar.gz
|
||||
sha256: b5e4c36d60eda7613f36cfee3489c6f507156829c707e1ecd7f48ca45b435322
|
||||
url: https://github.com/KhronosGroup/glslang/archive/14.2.0.tar.gz
|
||||
sha256: 14a2edbb509cb3e51a9a53e3f5e435dbf5971604b4b833e63e6076e8c0a997b5
|
||||
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
|
||||
|
@ -247,16 +238,20 @@ modules:
|
|||
config-opts:
|
||||
- -Dtests=disabled
|
||||
- -Ddocumentation=disabled
|
||||
cleanup:
|
||||
- /bin
|
||||
- /include
|
||||
- /lib/pkgconfig
|
||||
- /share
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.1.tar.xz
|
||||
sha256: 06a77bf2ac5c993305882bc1641017f5bec1592d6d1b64787bad492ab34f2f36
|
||||
url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.2.tar.xz
|
||||
sha256: 3eca86a6ce55b81d5bce910637fc451c8bbe373b1f9698f375c7f1ad0de3ac48
|
||||
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: CEMU
|
||||
- name: rapidjson
|
||||
buildsystem: cmake-ninja
|
||||
|
@ -315,13 +310,20 @@ modules:
|
|||
# dependency of: CEMU, RPCS3
|
||||
- rd-submodules/shared-modules/glew/glew.json
|
||||
|
||||
# dependency of: XEMU, MelonDS
|
||||
# dependency of: XEMU, MelonDS (4.7.0)
|
||||
- name: libslirp
|
||||
buildsystem: meson
|
||||
cleanup:
|
||||
- /include
|
||||
sources:
|
||||
- type: git
|
||||
url: https://gitlab.freedesktop.org/slirp/libslirp.git
|
||||
tag: v4.7.0
|
||||
- type: archive
|
||||
url: https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.8.0/libslirp-v4.8.0.tar.gz
|
||||
sha256: 2a98852e65666db313481943e7a1997abff0183bd9bea80caec1b5da89fda28c
|
||||
x-checker-data:
|
||||
type: anitya
|
||||
project-id: 96796
|
||||
stable-only: true
|
||||
url-template: https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v$version/libslirp-v$version.tar.gz
|
||||
|
||||
# dependency of: CEMU (1.0.26), DOLPHIN (1.0.27)
|
||||
- name: libusb
|
||||
|
@ -358,7 +360,7 @@ modules:
|
|||
sources:
|
||||
- type: git
|
||||
url: https://github.com/FFmpeg/FFmpeg.git
|
||||
tag: n5.1.1
|
||||
tag: n5.1.4
|
||||
|
||||
- name: freeimage
|
||||
no-autogen: true
|
||||
|
@ -678,8 +680,8 @@ 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.5769/pcsx2-v1.7.5769-linux-appimage-x64-Qt.AppImage
|
||||
sha256: d819a339b9f3c43ee44fe9b6d975b9f76cff7716b5976a3b94f77e2cf4cab667
|
||||
url: https://github.com/PCSX2/pcsx2/releases/download/v2.0.3/pcsx2-v2.0.3-linux-appimage-x64-Qt.AppImage
|
||||
sha256: ce1a6240643a1c7b68d5ad21789bf9de218fcef6f61649a6503b7de7bfce186f
|
||||
|
||||
# PCSX2 - END
|
||||
|
||||
|
@ -687,7 +689,6 @@ modules:
|
|||
# https://github.com/flathub/org.DolphinEmu.dolphin-emu
|
||||
# WHEN UPADTING: remember to update rd-submodules/dolphin contents
|
||||
|
||||
# needed for screensaver inhibition
|
||||
- name: xdg-screensaver-shim
|
||||
buildsystem: meson
|
||||
sources:
|
||||
|
@ -707,14 +708,15 @@ modules:
|
|||
- /share/man
|
||||
post-install:
|
||||
- install -D -t ${FLATPAK_DEST}/bin/ dolphin-emu-wrapper
|
||||
- sed -i -e 's/"2048"/"512"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg
|
||||
- sed -i -e 's/viewBox="0 0 1024.02 571.29"/viewBox="0 -285.645 1024 1024" width="2048"
|
||||
height="2048"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg
|
||||
sources:
|
||||
- type: git
|
||||
# Sometimes Dolphin or its submodules clone are failing in https so it must done in ssh
|
||||
# fatal: remote transport reported error
|
||||
# url: ssh://git@github.com/dolphin-emu/dolphin.git
|
||||
url: https://github.com/dolphin-emu/dolphin.git
|
||||
commit: 032c77b462a220016f23c5079e71bb23e0ad2adf
|
||||
commit: b92e354389bb7c0bd114a8631b8af110d3cb3a14
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://dolphin-emu.org/update/latest/beta
|
||||
|
@ -809,8 +811,8 @@ modules:
|
|||
sources:
|
||||
- type: git
|
||||
url: https://github.com/xemu-project/xemu.git
|
||||
tag: v0.7.120
|
||||
commit: 94d826a4f125d755d6d37069ad7084bfde33d650
|
||||
tag: v0.7.126
|
||||
commit: b2b6a98d5ea21970cd2436a1912230f4b97c5e03
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/xemu-project/xemu/releases/latest
|
||||
|
@ -856,11 +858,8 @@ modules:
|
|||
buildsystem: cmake-ninja
|
||||
builddir: true
|
||||
build-options:
|
||||
# llvm17 is not available in framework 6.5 but in 6.6, so we're trying llvm16 and cross our fingers until Primehack is updated (as Primehack breaks on 6.6)
|
||||
#append-ld-library-path: /usr/lib/sdk/llvm17/lib
|
||||
#append-path: /usr/lib/sdk/llvm17/bin
|
||||
append-ld-library-path: /usr/lib/sdk/llvm16/lib
|
||||
append-path: /usr/lib/sdk/llvm16/bin
|
||||
append-ld-library-path: /usr/lib/sdk/llvm18/lib
|
||||
append-path: /usr/lib/sdk/llvm18/bin
|
||||
cflags: &optflags -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
|
||||
-grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
-fcf-protection -fno-omit-frame-pointer
|
||||
|
@ -886,8 +885,7 @@ modules:
|
|||
- -DUSE_SYSTEM_ZLIB=ON
|
||||
- -Wno-dev
|
||||
post-install:
|
||||
#- cp /usr/lib/sdk/llvm17/lib/libLLVM-17.so /app/lib/
|
||||
- cp /usr/lib/sdk/llvm16/lib/libLLVM-16.so /app/lib/
|
||||
- cp /usr/lib/sdk/llvm18/lib/libLLVM.so.18.1 /app/lib/
|
||||
- |-
|
||||
set -eux
|
||||
COMM_TAG="$(awk -F'[\{,]' '/version{.*}/{printf "%d.%d.%d", $2, $3, $4}' ../rpcs3/rpcs3_version.cpp)"
|
||||
|
@ -896,7 +894,7 @@ modules:
|
|||
sources:
|
||||
- type: git
|
||||
url: https://github.com/RPCS3/rpcs3.git
|
||||
commit: 4ecf8ecd06c15f0557e1d9243f31e4c2d7baebe2
|
||||
commit: 5b973448bf75a239f34fd9c7698c8a02b04e2ea9
|
||||
|
||||
# RPCS3 - END
|
||||
|
||||
|
@ -911,17 +909,14 @@ 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/XargonWan/primehack
|
||||
commit: af7710ef7b04a632b4294eae5e0eff8fe9c4d1f8
|
||||
#url: https://github.com/TheDrifter363/primehack.git
|
||||
#commit: 6295c695307a67f11ee202b05cbdd7b5c1edae5c
|
||||
url: https://github.com/shiiion/dolphin.git
|
||||
commit: 81bfb9686afd2d190134b44dd72d3cee876fe2ab # This commit refers to the PR 166: https://github.com/shiiion/dolphin/pull/166, please change it when it's approved
|
||||
# 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
|
||||
|
@ -940,9 +935,9 @@ modules:
|
|||
- primehack "$@"
|
||||
dest-filename: primehack-wrapper
|
||||
|
||||
# # PRIMEHACK - END
|
||||
# PRIMEHACK - END
|
||||
|
||||
# Duckstation-AppImage - START
|
||||
# Duckstation-AppImage - START - AUTOUPDATED
|
||||
# https://github.com/stenzek/duckstation/releases/tag/preview
|
||||
|
||||
- name: Duckstation-AppImage
|
||||
|
@ -955,8 +950,8 @@ modules:
|
|||
- ln -s "${FLATPAK_DEST}/duckstation/usr/bin/duckstation-qt" "${FLATPAK_DEST}/bin/duckstation-qt"
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/stenzek/duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||
sha256: DUCKSTATIONSHAPLACEHOLDER
|
||||
url: https://github.com/stenzek/duckstation/releases/download/v0.1-6937/DuckStation-x64.AppImage
|
||||
sha256: 8a16f034cc8b11341ed9ad382226549301736794582bdec46a5e19b3ca981e07
|
||||
|
||||
# Duckstation-AppImage - END
|
||||
|
||||
|
@ -1045,8 +1040,8 @@ modules:
|
|||
- /share
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2
|
||||
sha256: 0640e1ab716db5af2ecb7389dbef6138d7679261fbff730d23845ba838ca133e
|
||||
url: https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.5/wxWidgets-3.2.5.tar.bz2
|
||||
sha256: 0ad86a3ad3e2e519b6a705248fc9226e3a09bbf069c6c692a02acf7c2d1c6b51
|
||||
x-checker-data:
|
||||
type: anitya
|
||||
project-id: 5150
|
||||
|
@ -1066,8 +1061,21 @@ modules:
|
|||
x-checker-data:
|
||||
type: git
|
||||
tag-pattern: ^v([\d.]+-\d+)$
|
||||
tag: v2.0-79
|
||||
commit: efbbb817fe1cbe09ee132344b44a0f61f8b8ac96
|
||||
tag: v2.0-88
|
||||
commit: aefbb918beb8718af8f190a73018ff63bf801d95
|
||||
disable-submodules: true
|
||||
- type: git
|
||||
url: https://github.com/mozilla/cubeb
|
||||
commit: 6c1a6e151c1f981a2800d40af7c041cfcccc710e
|
||||
dest: dependencies/cubeb
|
||||
- type: git
|
||||
url: https://github.com/Exzap/ZArchive
|
||||
dest: dependencies/ZArchive
|
||||
tag: v0.1.2
|
||||
- type: git
|
||||
url: https://github.com/ocornut/imgui
|
||||
dest: dependencies/imgui
|
||||
commit: f65bcf481ab34cd07d3909aab1479f409fa79f2f
|
||||
- type: shell
|
||||
commands:
|
||||
- sed "s/set(EXPERIMENTAL_VERSION.*/set(EXPERIMENTAL_VERSION \"$(git describe
|
||||
|
@ -1115,7 +1123,7 @@ modules:
|
|||
|
||||
# Cemu - END
|
||||
|
||||
# Vita3K - START
|
||||
# Vita3K - START - AUTOUPDATED
|
||||
|
||||
- name: vita3k
|
||||
buildsystem: simple
|
||||
|
@ -1211,17 +1219,34 @@ modules:
|
|||
# Ryujinx Appimage - START
|
||||
# https://ryujinx.org/download
|
||||
|
||||
- name: Ryujinx
|
||||
# Temporary disabled to test a symlink fix build
|
||||
# - name: Ryujinx
|
||||
# buildsystem: simple
|
||||
# build-commands:
|
||||
# - |
|
||||
# tar -zxvf *.tar.gz
|
||||
# mv -v publish ${FLATPAK_DEST}/ryujinx
|
||||
# ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx.sh
|
||||
# sources:
|
||||
# - type: file
|
||||
# url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.1343/ryujinx-1.1.1343-linux_x64.tar.gz
|
||||
# sha256: 3cd2172d2f42a0fb93a83bffe6bd8fb2d1d81fb45afc80e0068a245c8f755ac1
|
||||
|
||||
- name: Ryujinx-with-symlink-fix
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- |
|
||||
tar -zxvf *.tar.gz
|
||||
mv -v publish ${FLATPAK_DEST}/ryujinx
|
||||
ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx ${FLATPAK_DEST}/bin/Ryujinx.sh
|
||||
mkdir -p ${FLATPAK_DEST}/ryujinx
|
||||
mkdir -p ${FLATPAK_DEST}/bin
|
||||
chmod +x Ryujinx.sh
|
||||
chmod +x Ryujinx
|
||||
mv -v * ${FLATPAK_DEST}/ryujinx
|
||||
ln -sv ${FLATPAK_DEST}/ryujinx/Ryujinx.sh ${FLATPAK_DEST}/bin/Ryujinx.sh
|
||||
chmod +x ${FLATPAK_DEST}/bin/Ryujinx.sh
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/Ryujinx/release-channel-master/releases/download/1.1.1297/ryujinx-1.1.1297-linux_x64.tar.gz
|
||||
sha256: 28b38754e7d2e92083b313b23278c180ae54ac025edbbd0276ec03baec0cec0f
|
||||
- type: archive
|
||||
url: https://gitlab.com/-/project/59825450/uploads/8519a04d7a3f5b5949f14b6ad25a4185/ryujinx-Release-1.1.0+81fd228-linux_x64.zip
|
||||
sha256: 9e4a4393a3dcc44fda2aec40c2842492e30656c7369a9959d865a3351f12eeb9
|
||||
|
||||
# Ryujinx Appimage - END
|
||||
|
||||
|
|
|
@ -31,4 +31,3 @@ index 8d9dc2abb8..8a9d39a3d5 100644
|
|||
std::string data_path =
|
||||
--
|
||||
2.37.1
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -10,4 +10,3 @@ index 9af66009a1..2acd3bed9a 100644
|
|||
+ 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 c2aad98600a47ab250f1b133328d0ccc1310f65e
|
||||
Subproject commit eec4bcca8c9e514467fb62cca4a7b2d12c6a2328
|
|
@ -1 +1 @@
|
|||
Subproject commit ea1dae930a6f61388c2b5e05f95bb6ed0120926e
|
||||
Subproject commit 41761a7dc36ec8520bdaca796d9d0b1219b66a07
|
|
@ -1 +1 @@
|
|||
Subproject commit f63cb3f5fff835c141769d35cd54ce0ae042fcbf
|
||||
Subproject commit 782d3cc04ccdd8071017f622d4bacd35faecbd86
|
141
res/extra_splashes/rd-pride.svg
Normal file
141
res/extra_splashes/rd-pride.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 22 KiB |
BIN
res/icon-pride.png
Normal file
BIN
res/icon-pride.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.9 KiB |
100
res/icon-pride.svg
Normal file
100
res/icon-pride.svg
Normal file
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="100%"
|
||||
height="100%"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
|
||||
id="svg17"
|
||||
sodipodi:docname="icon (pride).svg"
|
||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:serif="http://www.serif.com/"><sodipodi:namedview
|
||||
id="namedview19"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#111111"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.3398438"
|
||||
inkscape:cx="147.31228"
|
||||
inkscape:cy="177.85263"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Left-Symbol" />
|
||||
<g
|
||||
transform="matrix(1.88235,0,0,1.86861,-7.52941,-5.60584)"
|
||||
id="g4">
|
||||
<path
|
||||
d="M140,37.25C140,18.347 124.765,3 106,3L38,3C19.235,3 4,18.347 4,37.25L4,105.75C4,124.653 19.235,140 38,140L106,140C124.765,140 140,124.653 140,105.75L140,37.25Z"
|
||||
style="fill:rgb(17,17,17);"
|
||||
id="path2" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(2.02105,0,0,2.02105,-13.4737,-13.4737)"
|
||||
id="g12">
|
||||
<g
|
||||
id="D"
|
||||
transform="matrix(-0.674885,8.26495e-17,-8.26495e-17,-0.674885,223.747,109.037)">
|
||||
<path
|
||||
d="M172.54,-2.511C175.786,-5.757 179.378,-8.24 183.315,-9.96C187.251,-11.68 191.533,-12.54 196.16,-12.54L271.855,-12.54L271.855,6.901L196.16,6.901C194.44,6.901 192.823,7.222 191.309,7.864C189.795,8.506 188.475,9.39 187.348,10.517C186.222,11.643 185.337,12.964 184.695,14.478C184.053,15.992 183.732,17.609 183.732,19.329L183.732,96.355C183.732,97.954 184.084,99.498 184.786,100.988C185.489,102.478 186.416,103.798 187.566,104.949C188.717,106.1 190.037,107.027 191.527,107.729C193.017,108.432 194.562,108.783 196.16,108.783L271.855,108.783L271.855,128.224L196.16,128.224C193.859,128.224 191.624,127.982 189.456,127.498C187.288,127.013 185.204,126.329 183.206,125.444C181.207,124.56 179.311,123.5 177.518,122.265C175.726,121.029 174.066,119.673 172.54,118.195C169.366,115.118 166.901,111.575 165.145,107.566C163.389,103.556 162.51,99.226 162.51,94.574L162.51,21.11C162.51,16.458 163.37,12.17 165.09,8.246C166.811,4.321 169.294,0.736 172.54,-2.511Z"
|
||||
style="fill:white;fill-rule:nonzero;"
|
||||
id="path6" />
|
||||
</g>
|
||||
<g
|
||||
id="Left-Symbol"
|
||||
serif:id="Left Symbol"
|
||||
transform="matrix(0.494792,-0,-0,0.494792,6.66667,6.66667)">
|
||||
<path
|
||||
id="rect6600"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;fill:url(#pattern7632);stroke:none;stroke-width:0.999998"
|
||||
d="M 47.199248 80.802785 C 45.822808 80.802785 44.569351 81.044902 43.441434 81.527395 C 42.313512 82.009865 41.343959 82.696403 40.531275 83.587943 C 39.718995 84.47953 39.092064 85.5436 38.652368 86.781305 C 38.212654 88.019017 37.994165 89.393933 37.994165 90.904354 L 38.021508 168.91026 L 54.769566 168.91026 L 54.769566 134.23446 L 97.697327 134.23446 L 123.50594 168.91026 L 144.29501 168.91026 L 118.4864 134.23446 L 118.80281 134.23446 C 121.49824 134.23446 123.9587 133.88769 126.18563 133.1954 C 128.413 132.50312 130.41571 131.54371 132.19344 130.31649 C 133.97116 129.0893 135.52516 127.63538 136.8536 125.95711 C 138.18246 124.27862 139.2867 122.44931 140.1661 120.46687 C 141.0455 118.48428 141.70493 116.39222 142.14462 114.18952 C 142.58434 111.98667 142.80282 109.76227 142.80282 107.51765 C 142.82193 105.31474 142.61167 103.12832 142.17196 100.95709 C 141.73228 98.786016 141.07285 96.708861 140.19345 94.726622 C 139.31404 92.744383 138.21178 90.902392 136.8829 89.203181 C 135.55439 87.503908 133.99477 86.036596 132.20711 84.798881 C 130.41986 83.561223 128.413 82.584399 126.18563 81.871145 C 123.95873 81.157899 121.49637 80.802785 118.80086 80.802785 L 47.199248 80.802785 z M 54.769566 97.63678 L 118.4864 97.63678 C 119.76727 97.63678 120.87996 97.919949 121.82625 98.48639 C 122.77254 99.052829 123.55673 99.797753 124.17781 100.72077 C 124.79933 101.64378 125.26257 102.69763 125.56844 103.88288 C 125.87432 105.06816 126.02275 106.27995 126.01375 107.51765 C 126.0044 108.75534 125.8409 109.96715 125.52547 111.15241 C 125.21005 112.33768 124.73643 113.3915 124.10555 114.31452 C 123.47468 115.23757 122.6907 115.98249 121.75398 116.5489 C 120.81726 117.1153 119.72901 117.39851 118.4864 117.39851 L 54.769566 117.39851 L 54.769566 97.63678 z "
|
||||
transform="translate(2.6596517e-5,2.6596517e-5)" />
|
||||
</g>
|
||||
</g>
|
||||
<defs
|
||||
id="defs15"><pattern
|
||||
inkscape:collect="always"
|
||||
xlink:href="#pattern6592"
|
||||
id="pattern7632"
|
||||
patternTransform="matrix(0.13680989,0,0,0.18355902,37.993601,80.802163)" />
|
||||
<image
|
||||
id="_Image1"
|
||||
width="104px"
|
||||
height="79px"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABPCAYAAAAHtYAvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGHUlEQVR4nO2de2xTVRzHP6cbe4qg8jB1ioQMcDJAHgEVMPyjgaAGQR4xhAxEGfIY8gaBGCXGGEULjMG2FhEG6JCBhEgEJWRBBkaDopIYwRAsigSHoMLa3usftzVla7eu/bWU9HySJvd37jnfnNzvPae95/Scq2hE7cTz6YZigqEYYKAKTUWhoehoKDBQmAqsYzCUwlBYaUGxocBsFBuAGS7Gn6ZUkFaQfnOx/9hsFIfSalE7rJa/rk3jBkNRbyjqDVS9qfjRUBw3FMcM1IlvXkpvaHx9W4sKDo5McPc1lKo0FP2aGKINajYOca3+MBSlpqL02+L0C9EaZAscfDnBPRs4DvSLVkxzAx2BlcDZXmXeioIy34PRiNgA6sa7+wBvA+ly9dP4yQSmAid7bvDt77HR16c1hW11493pQAXanETwOFCbX+4bGWkBGzAOGBC3KmkacxvwSbdyoziSzDZgYHzrowmBDSjtWmG81aXSsLWUsVdi6qQJwXxgy31OQ4XLYAMKE1cfTQgmApPDnbQBnRNXF00YVuc5TXuoE832f5qE0R5Yb3eZTbo6bVDy8BQwvnGiNii5WGN3mbnBCdqg5KIDMCo4QRuUfEwMDiSGd5YCLgGdWw0bUAAM8X+GI3PDj7C7zPbuIlUPMgZdHlPZ6TcBnVsRN3AAYLDDMxL4EMhttkTLZACj8d/0uosT4ujsNvuAYcDvAnL/d3PaIEHqZrX5GlgsIDUs8EykDZJnK3A2Ro1M4E7QBolzfGYbD/COgNQ9oA2KF0cFNLRBceS0gIY2KI5cBK7GqKENiiOK2J8xvaANihd5QFaMGr+CNihe5AtonANtULwYLqChDYoHA9d62gEzBaR0FxcnZgHtYtT4y12kroBlkBlzlTQADFrjGQ0sE5A6HDjQLUiIwQ5PCbCT2H+9AWwPHEjMB927c+qFvim4/MRmQKGhGGoohhrQXeBaAlwD9gQCCYMWIzPErrHYG/j+Ad3FJSPbgwNtUHJxEdgXnKANSi5muYvUv8EJ2qDkoQbY0ThRG5Qc/AnMcBepJs+k2qDkoOTcFHU+1Ak9knDzqQI+CHdSt6Cby5vApLNTbGEbiV7ZfXPwAsVnnrdVtJRRG5R4LgNjf55mOxBJZt3FJQ4T66f0wz9NS4vIHNAtKBFcBSoBx6kX01r9dyxtUPz4BXAAzpPT0y9HKyJh0BXgHwGdeHM7kC2o58VaflKP9b1SD5wCvvJ/zpyYkR7zI4zIdMOYyk6lAjpxZeqrfxcAdVhbsUiggMm1czIOCemFJGV+JFSuzP0BeE5QMg2oHvJew/2Cmk1IqZEE54rcPcByQcm7gN2POBpiXVUXlpRpQUGsAqoF9XoDmwY7PGH324mFlDNo04pcEygCvhOUHYu1mFqclDMIYPPy3KvA08AlQdnXBq3xPCmoB6SoQQBbXsk5AzwL+IQkFbB14FrPA0J6QAobBFC1LOdzYK6gZFtgd/91njukBFPaID9rAaegXj6w7aF13jQJsZQ3aNuyHBOYgcy60gBPAG9ICKW8QQA7luZcB57BGrqRYkGfUm/MD8baID8fLck+j7UFy3VB2Yre670x7aicUiMJLbFzSfYx4AVBySxgV68y793RCugW1Ihdi7M3A6sFJfOA6oIyX0Y0hbVBoVmIfxcrIR4F1vbc4Gv1cJA2KAQ1i7K9WPuHSmxIEWAaML21hbRBYdizMOsS1kavsW5IEYyjx0bfY60poA1qhr0Ls74HJglKpgPV+eW+LpEW0Aa1wL4FWTVY7wGSogNQ063ciGgOSRsUGa8DHwvq9QWcXSvCv7MhgDYoAj6dn2VgvV/hpKDsOCJYOqoNipD98zLjMYe0qkulMaq5DHokoRV8Ni/zNNadLzmHVHWf0+gZLoNuQa3k4MuZB4F5gpJtgd15TrN9qJPaoOhwAJsE9boDVXaX2WQOSRsUBV/MzTSBYqw/QkoxAusfRzegDYqSQyUZ17DmkEIuXYySRXaXecO7G7RBMXC4JMONNYcU8yuhg3DaXWb/QKANipHaORl1yM8h1dhdZmfQBolwZHbG+8C7gpJ5QLXdZWZog+RYABwU1BsCOP4DNMctuHcT4JEAAAAASUVORK5CYII=" />
|
||||
<pattern
|
||||
patternUnits="userSpaceOnUse"
|
||||
width="777"
|
||||
height="480"
|
||||
id="pattern6592"><path
|
||||
fill="#770088"
|
||||
d="M 0,0 H 777 V 480 H 0 Z"
|
||||
id="path6457" /><path
|
||||
fill="#004cff"
|
||||
d="M 0,0 H 777 V 400 H 0 Z"
|
||||
id="path6459" /><path
|
||||
fill="#028121"
|
||||
d="M 0,0 H 777 V 320 H 0 Z"
|
||||
id="path6461" /><path
|
||||
fill="#ffee00"
|
||||
d="M 0,0 H 777 V 240 H 0 Z"
|
||||
id="path6463" /><path
|
||||
fill="#ff8d00"
|
||||
d="M 0,0 H 777 V 160 H 0 Z"
|
||||
id="path6465" /><path
|
||||
fill="#e50000"
|
||||
d="M 0,0 H 777 V 80 H 0 Z"
|
||||
id="path6467" /></pattern></defs>
|
||||
</svg>
|
After Width: | Height: | Size: 7.8 KiB |
15
retrodeck.sh
15
retrodeck.sh
|
@ -56,10 +56,10 @@ https://retrodeck.net
|
|||
;;
|
||||
--reset-component*)
|
||||
echo "You are about to reset one or more RetroDECK components or emulators."
|
||||
echo "Available options are: es-de, retroarch, cemu, dolphin, duckstation, gzdoom, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, ryujinx, xemu, vita3k, mame, boilr, all"
|
||||
echo "Available options are: es-de, retroarch, cemu, dolphin, duckstation, gzdoom, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, ryujinx, xemu, vita3k, mame, all"
|
||||
read -p "Please enter the component you would like to reset: " component
|
||||
component=$(echo "$component" | tr '[:upper:]' '[:lower:]')
|
||||
if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|xemu|all)$ ]]; then
|
||||
if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|vita3k|xemu|all)$ ]]; then
|
||||
read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response
|
||||
if [[ $response == [yY] ]]; then
|
||||
prepare_component "reset" "$component" "cli"
|
||||
|
@ -113,7 +113,7 @@ if [ -f "$lockfile" ]; then
|
|||
set_setting_value $rd_conf "update_check" "true" retrodeck "options"
|
||||
set_setting_value $rd_conf "developer_options" "true" retrodeck "options"
|
||||
cooker_base_version=$(echo $hard_version | cut -d'-' -f2)
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Upgrade" --extra-button="Don't Upgrade" --extra-button="Full Wipe and Fresh Install" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Upgrade" --extra-button="Don't Upgrade" --extra-button="Full Wipe and Fresh Install" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Cooker Upgrade" \
|
||||
--text="You appear to be upgrading to a \"cooker\" build of RetroDECK.\n\nWould you like to perform the standard post-update process, skip the post-update process or remove ALL existing RetroDECK folders and data (including ROMs and saves) to start from a fresh install?\n\nPerforming the normal post-update process multiple times may lead to unexpected results.")
|
||||
|
@ -184,13 +184,4 @@ if [[ $update_check == "true" ]]; then
|
|||
fi
|
||||
|
||||
# Normal Startup
|
||||
|
||||
if [[ $steam_sync == "true" ]]; then
|
||||
python3 /app/libexec/steam-sync/steam-sync.py &
|
||||
fi
|
||||
|
||||
start_retrodeck
|
||||
|
||||
if [[ $steam_sync == "true" ]]; then
|
||||
touch /tmp/retrodeck_steam_sync_exit
|
||||
fi
|
||||
|
|
|
@ -52,6 +52,8 @@ source /app/libexec/global.sh
|
|||
# - Move Screenshots folder
|
||||
# - Move Mods folder
|
||||
# - Move Texture Packs folder
|
||||
# - Tool: Remove Empty ROM Folders
|
||||
# - Tool: Rebuild All ROM Folders
|
||||
# - Tool: Compress Games
|
||||
# - Compress Single Game
|
||||
# - Compress Multiple Games - CHD
|
||||
|
@ -99,8 +101,8 @@ source /app/libexec/global.sh
|
|||
# - Change Multi-user mode
|
||||
# - Change Update channel
|
||||
# - Browse the wiki
|
||||
# - USB Import tool
|
||||
# - Install: RetroDECK Starter Pack
|
||||
# - Tool: USB Import
|
||||
|
||||
# DIALOG TREE FUNCTIONS
|
||||
|
||||
|
@ -122,7 +124,7 @@ configurator_welcome_dialog() {
|
|||
"RetroDECK: About" "Show additional information about RetroDECK")
|
||||
fi
|
||||
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility" --cancel-label="Quit" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"${welcome_menu_options[@]}")
|
||||
|
@ -154,11 +156,6 @@ configurator_welcome_dialog() {
|
|||
configurator_about_retrodeck_dialog
|
||||
;;
|
||||
|
||||
"Sync with Steam" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_add_steam
|
||||
;;
|
||||
|
||||
"Developer Options" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_generic_dialog "RetroDECK Configurator - Developer Options" "The following features and options are potentially VERY DANGEROUS for your RetroDECK install!\n\nThey should be considered the bleeding-edge of upcoming RetroDECK features, and never used when you have important saves/states/roms that are not backed up!\n\nYOU HAVE BEEN WARNED!"
|
||||
|
@ -174,7 +171,7 @@ configurator_welcome_dialog() {
|
|||
}
|
||||
|
||||
configurator_presets_and_settings_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - Presets & Settings" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Presets & Settings" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Global: Presets & Settings" "Here you find presets and settings that that span over multiple emulators" \
|
||||
|
@ -207,7 +204,7 @@ configurator_presets_and_settings_dialog() {
|
|||
}
|
||||
|
||||
configurator_global_presets_and_settings_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - Global: Presets & Settings" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Global: Presets & Settings" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Widescreen: Enable/Disable" "Enable or disable widescreen in supported systems" \
|
||||
|
@ -290,7 +287,7 @@ configurator_global_presets_and_settings_dialog() {
|
|||
}
|
||||
|
||||
configurator_retroarch_presets_and_settings_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroArch: Presets & Settings" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroArch: Presets & Settings" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Borders: Enable/Disable" "Enable or disable borders in supported systems" )
|
||||
|
@ -312,7 +309,7 @@ configurator_retroarch_presets_and_settings_dialog() {
|
|||
}
|
||||
|
||||
configurator_wii_and_gamecube_presets_and_settings_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - Wii & GameCube: Presets & Settings" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Wii & GameCube: Presets & Settings" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Dolphin Textures: Universal Dynamic Input" "Enable/Disable Venomalia's Universal Dynamic Input Textures for Dolphin" \
|
||||
|
@ -340,7 +337,7 @@ configurator_wii_and_gamecube_presets_and_settings_dialog() {
|
|||
|
||||
configurator_dolphin_input_textures_dialog() {
|
||||
if [[ -d "/var/data/dolphin-emu/Load/DynamicInputTextures" ]]; then
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - Dolphin Textures: Universal Dynamic Input" \
|
||||
--text="Custom input textures are currently enabled. Do you want to disable them?"
|
||||
|
@ -354,7 +351,7 @@ configurator_dolphin_input_textures_dialog() {
|
|||
configurator_wii_and_gamecube_presets_and_settings_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - Dolphin Textures: Universal Dynamic Input" \
|
||||
--text="Custom input textures are currently disabled. Do you want to enable them?\n\nThis process may take several minutes to complete."
|
||||
|
@ -366,7 +363,7 @@ configurator_dolphin_input_textures_dialog() {
|
|||
mkdir "/var/data/dolphin-emu/Load/DynamicInputTextures"
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/dolphin-emu/Load/DynamicInputTextures/"
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 Configurator Utility - Dolphin Custom Input Textures Install"
|
||||
configurator_process_complete_dialog "enabling Dolphin custom input textures"
|
||||
|
@ -378,7 +375,7 @@ configurator_dolphin_input_textures_dialog() {
|
|||
|
||||
configurator_primehack_input_textures_dialog() {
|
||||
if [[ -d "/var/data/primehack/Load/DynamicInputTextures" ]]; then
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - Dolphin Custom Input Textures" \
|
||||
--text="Custom input textures are currently enabled. Do you want to disable them?"
|
||||
|
@ -392,7 +389,7 @@ configurator_primehack_input_textures_dialog() {
|
|||
configurator_wii_and_gamecube_presets_and_settings_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - Primehack Custom Input Textures" \
|
||||
--text="Custom input textures are currently disabled. Do you want to enable them?\n\nThis process may take several minutes to complete."
|
||||
|
@ -404,7 +401,7 @@ configurator_primehack_input_textures_dialog() {
|
|||
mkdir "/var/data/primehack/Load/DynamicInputTextures"
|
||||
rsync -rlD --mkpath "/app/retrodeck/extras/DynamicInputTextures/" "/var/data/primehack/Load/DynamicInputTextures/"
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 Configurator Utility - Primehack Custom Input Textures Install"
|
||||
configurator_process_complete_dialog "enabling Primehack custom input textures"
|
||||
|
@ -416,7 +413,7 @@ configurator_primehack_input_textures_dialog() {
|
|||
|
||||
configurator_power_user_warning_dialog() {
|
||||
if [[ $power_user_warning == "true" ]]; then
|
||||
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
||||
choice=$(rd_zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Never show this again" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Power User Warning" \
|
||||
--text="Making manual changes to an emulator's configuration may create serious issues,\nand some settings may be overwitten during RetroDECK updates or when using presets.\n\nSome standalone emulator functions may not work properly outside of Desktop mode.\n\nPlease continue only if you know what you're doing.\n\nDo you want to continue?")
|
||||
|
@ -460,7 +457,7 @@ configurator_open_emulator_dialog() {
|
|||
emulator_list+=("Citra" "Open the 3DS emulator Citra")
|
||||
fi
|
||||
|
||||
emulator=$(zenity --list \
|
||||
emulator=$(rd_zenity --list \
|
||||
--title "RetroDECK Configurator Utility - Open Emulator" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--text="Which emulator do you want to launch?" \
|
||||
|
@ -559,6 +556,8 @@ configurator_retrodeck_tools_dialog() {
|
|||
|
||||
local choices=(
|
||||
"Tool: Move Folders" "Move RetroDECK folders between internal/SD card or to a custom location"
|
||||
"Tool: Remove Empty ROM Folders" "Remove some or all of the empty ROM folders"
|
||||
"Tool: Rebuild All ROM Folders" "Rebuild any missing default ROM folders"
|
||||
"Tool: Compress Games" "Compress games for systems that support it"
|
||||
"Install: RetroDECK Controller Layouts" "Install the custom RetroDECK controller layouts on Steam"
|
||||
"Install: PS3 Firmware" "Download and install PS3 firmware for use with the RPCS3 emulator"
|
||||
|
@ -573,7 +572,7 @@ configurator_retrodeck_tools_dialog() {
|
|||
choices+=("Ponzu - Remove Citra" "Run Ponzu to remove Citra from RetroDECK. Configurations and saves will be mantained.")
|
||||
fi
|
||||
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Tools" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Tools" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"${choices[@]}")
|
||||
|
@ -585,6 +584,48 @@ configurator_retrodeck_tools_dialog() {
|
|||
configurator_retrodeck_move_tool_dialog
|
||||
;;
|
||||
|
||||
"Tool: Remove Empty ROM Folders" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
|
||||
configurator_generic_dialog "RetroDECK Configurator - Remove Empty ROM Folders" "Before removing any identified empty ROM folders,\nplease make sure your ROM collection is backed up, just in case!"
|
||||
configurator_generic_dialog "RetroDECK Configurator - Remove Empty ROM Folders" "Searching for empty rom folders, please be patient..."
|
||||
find_empty_rom_folders
|
||||
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 --title "RetroDECK Configurator - RetroDECK: Remove Empty ROM Folders" \
|
||||
--checklist --hide-column=3 --ok-label="Remove Selected" --extra-button="Remove All" \
|
||||
--separator="," --print-column=2 \
|
||||
--text="Choose which ROM folders to remove:" \
|
||||
--column "Remove?" \
|
||||
--column "System" \
|
||||
"${empty_rom_folders_list[@]}")
|
||||
|
||||
local rc=$?
|
||||
if [[ $rc == "0" && ! -z $choice ]]; then # User clicked "Remove Selected" with at least one system selected
|
||||
IFS="," read -ra folders_to_remove <<< "$choice"
|
||||
for folder in "${folders_to_remove[@]}"; do
|
||||
log i "Removing empty folder $folder"
|
||||
rm -rf "$folder"
|
||||
done
|
||||
configurator_generic_dialog "RetroDECK Configurator - Remove Empty ROM Folders" "The removal process is complete."
|
||||
elif [[ ! -z $choice ]]; then # User clicked "Remove All"
|
||||
for folder in "${all_empty_folders[@]}"; do
|
||||
log i "Removing empty folder $folder"
|
||||
rm -rf "$folder"
|
||||
done
|
||||
configurator_generic_dialog "RetroDECK Configurator - Remove Empty ROM Folders" "The removal process is complete."
|
||||
fi
|
||||
|
||||
configurator_retrodeck_tools_dialog
|
||||
;;
|
||||
|
||||
"Tool: Rebuild All ROM Folders" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
es-de --create-system-dirs
|
||||
configurator_generic_dialog "RetroDECK Configurator - Rebuild All ROM Folders" "The rebuilding process is complete.\n\nAll missing default ROM folders will now exist in $roms_folder"
|
||||
configurator_retrodeck_tools_dialog
|
||||
;;
|
||||
|
||||
"Tool: Compress Games" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_generic_dialog "RetroDECK Configurator - Compression Tool" "Depending on your library and compression choices, the process can sometimes take a long time.\nPlease be patient once it is started!"
|
||||
|
@ -608,7 +649,7 @@ configurator_retrodeck_tools_dialog() {
|
|||
(
|
||||
update_rpcs3_firmware
|
||||
) |
|
||||
zenity --progress --no-cancel --pulsate --auto-close \
|
||||
rd_zenity --progress --no-cancel --pulsate --auto-close \
|
||||
--icon-name=net.retrodeck.retrodeck \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title="Downloading PS3 Firmware" \
|
||||
|
@ -627,7 +668,7 @@ configurator_retrodeck_tools_dialog() {
|
|||
(
|
||||
update_vita3k_firmware
|
||||
) |
|
||||
zenity --progress --pulsate \
|
||||
rd_zenity --progress --pulsate \
|
||||
--icon-name=net.retrodeck.retrodeck \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title="Downloading PS Vita Firmware" \
|
||||
|
@ -661,7 +702,7 @@ configurator_retrodeck_tools_dialog() {
|
|||
}
|
||||
|
||||
configurator_retrodeck_move_tool_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Move Tool" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Move Tool" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Move all of RetroDECK" "Move the entire retrodeck folder to a new location" \
|
||||
|
@ -733,7 +774,7 @@ configurator_retrodeck_move_tool_dialog() {
|
|||
}
|
||||
|
||||
configurator_compression_tool_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Compression Tool" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Compression Tool" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Compress Single Game" "Compress a single game into a compatible format" \
|
||||
|
@ -794,30 +835,8 @@ configurator_compress_single_game_dialog() {
|
|||
echo "# Compressing $(basename "$file") to $compatible_compression_format format" # This updates the Zenity dialog
|
||||
log i "Compressing $(basename "$file") to $compatible_compression_format format"
|
||||
compress_game "$compatible_compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
log i "Performing post-compression file cleanup"
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$compatible_compression_format not found, skipping original file deletion"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "A compressed version of the file was not found, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 Configurator Utility - Compression in Progress"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "The compression process is complete."
|
||||
|
@ -835,78 +854,37 @@ configurator_compress_single_game_dialog() {
|
|||
configurator_compress_multiple_games_dialog() {
|
||||
# This dialog will display any games it finds to be compressable, from the systems listed under each compression type in compression_targets.cfg
|
||||
|
||||
local compressable_games_list=()
|
||||
local all_compressable_games=()
|
||||
local games_to_compress=()
|
||||
local target_selection="$1"
|
||||
find_compatible_games "$1"
|
||||
|
||||
if [[ "$1" == "everything" ]]; then
|
||||
local compression_format="all"
|
||||
else
|
||||
local compression_format="$1"
|
||||
fi
|
||||
if [[ ! $(echo "${#all_compressable_games[@]}") == "0" ]]; then
|
||||
if [[ ! "$target_selection" == "everything" ]]; then # If the user chose to not auto-compress everything
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 --title "RetroDECK Configurator - RetroDECK: Compression Tool" \
|
||||
--checklist --hide-column=3 --ok-label="Compress Selected" --extra-button="Compress All" \
|
||||
--separator="," --print-column=3 \
|
||||
--text="Choose which games to compress:" \
|
||||
--column "Compress?" \
|
||||
--column "Game" \
|
||||
--column "Game Full Path" \
|
||||
"${compressable_games_list[@]}")
|
||||
|
||||
if [[ $compression_format == "all" ]]; then
|
||||
local compressable_systems_list=$(cat $compression_targets | sed '/^$/d' | sed '/^\[/d')
|
||||
else
|
||||
local compressable_systems_list=$(sed -n '/\['"$compression_format"'\]/, /\[/{ /\['"$compression_format"'\]/! { /\[/! p } }' $compression_targets | sed '/^$/d')
|
||||
fi
|
||||
|
||||
while IFS= read -r system # Find and validate all games that are able to be compressed with this compression type
|
||||
do
|
||||
compression_candidates=$(find "$roms_folder/$system" -type f -not -iname "*.txt")
|
||||
if [[ ! -z $compression_candidates ]]; then
|
||||
while IFS= read -r game
|
||||
do
|
||||
local compatible_compression_format=$(find_compatible_compression_format "$game")
|
||||
if [[ $compression_format == "chd" ]]; then
|
||||
if [[ $compatible_compression_format == "chd" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "zip" ]]; then
|
||||
if [[ $compatible_compression_format == "zip" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "rvz" ]]; then
|
||||
if [[ $compatible_compression_format == "rvz" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
elif [[ $compression_format == "all" ]]; then
|
||||
if [[ ! $compatible_compression_format == "none" ]]; then
|
||||
all_compressable_games=("${all_compressable_games[@]}" "$game")
|
||||
compressable_games_list=("${compressable_games_list[@]}" "false" "${game#$roms_folder}" "$game")
|
||||
fi
|
||||
fi
|
||||
done < <(printf '%s\n' "$compression_candidates")
|
||||
fi
|
||||
done < <(printf '%s\n' "$compressable_systems_list")
|
||||
|
||||
if [[ ! "$target_selection" == "everything" ]]; then # If the user chose to not auto-compress everything
|
||||
choice=$(zenity \
|
||||
--list --width=1200 --height=720 --title "RetroDECK Configurator - RetroDECK: Compression Tool" \
|
||||
--checklist --hide-column=3 --ok-label="Compress Selected" --extra-button="Compress All" \
|
||||
--separator="," --print-column=3 \
|
||||
--text="Choose which games to compress:" \
|
||||
--column "Compress?" \
|
||||
--column "Game" \
|
||||
--column "Game Full Path" \
|
||||
"${compressable_games_list[@]}")
|
||||
|
||||
local rc=$?
|
||||
if [[ $rc == "0" && ! -z $choice ]]; then # User clicked "Compress Selected" with at least one game selected
|
||||
IFS="," read -ra games_to_compress <<< "$choice"
|
||||
local total_games_to_compress=${#games_to_compress[@]}
|
||||
local games_left_to_compress=$total_games_to_compress
|
||||
elif [[ ! -z $choice ]]; then # User clicked "Compress All"
|
||||
local rc=$?
|
||||
if [[ $rc == "0" && ! -z $choice ]]; then # User clicked "Compress Selected" with at least one game selected
|
||||
IFS="," read -ra games_to_compress <<< "$choice"
|
||||
local total_games_to_compress=${#games_to_compress[@]}
|
||||
local games_left_to_compress=$total_games_to_compress
|
||||
elif [[ ! -z $choice ]]; then # User clicked "Compress All"
|
||||
games_to_compress=("${all_compressable_games[@]}")
|
||||
local total_games_to_compress=${#all_compressable_games[@]}
|
||||
local games_left_to_compress=$total_games_to_compress
|
||||
fi
|
||||
else # The user chose to auto-compress everything
|
||||
games_to_compress=("${all_compressable_games[@]}")
|
||||
local total_games_to_compress=${#all_compressable_games[@]}
|
||||
local games_left_to_compress=$total_games_to_compress
|
||||
fi
|
||||
else # The user chose to auto-compress everything
|
||||
games_to_compress=("${all_compressable_games[@]}")
|
||||
else
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "No compressable files were found."
|
||||
fi
|
||||
|
||||
if [[ ! $(echo "${#games_to_compress[@]}") == "0" ]]; then
|
||||
|
@ -922,30 +900,9 @@ configurator_compress_multiple_games_dialog() {
|
|||
games_left_to_compress=$((games_left_to_compress-1))
|
||||
log i "Games left to compress: $games_left_to_compress"
|
||||
compress_game "$compression_format" "$file" "$system"
|
||||
if [[ $post_compression_cleanup == "true" ]]; then # Remove file(s) if requested
|
||||
if [[ -f "${file%.*}.$compatible_compression_format" ]]; then
|
||||
if [[ "$file" == *".cue" ]]; then
|
||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" "$file")
|
||||
local file_path=$(dirname "$(realpath "$file")")
|
||||
while IFS= read -r line
|
||||
do
|
||||
log i "Removing file $file_path/$line"
|
||||
rm -f "$file_path/$line"
|
||||
done < <(printf '%s\n' "$cue_bin_files")
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f $(realpath "$file")
|
||||
else
|
||||
log i "Removing file $(realpath $file)"
|
||||
rm -f "$(realpath "$file")"
|
||||
fi
|
||||
else
|
||||
log i "Compressed file ${file%.*}.$compatible_compression_format not found, skipping original file deletion"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "Compression of $(basename $file) failed, skipping deletion."
|
||||
fi
|
||||
fi
|
||||
done
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - Compression in Progress"
|
||||
configurator_generic_dialog "RetroDECK Configurator - RetroDECK: Compression Tool" "The compression process is complete!"
|
||||
|
@ -956,7 +913,7 @@ configurator_compress_multiple_games_dialog() {
|
|||
}
|
||||
|
||||
configurator_compression_cleanup_dialog() {
|
||||
zenity --icon-name=net.retrodeck.retrodeck --question --no-wrap --cancel-label="No" --ok-label="Yes" \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --question --no-wrap --cancel-label="No" --ok-label="Yes" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK: Compression Tool" \
|
||||
--text="Do you want to remove old files after they are compressed?\n\nClicking \"No\" will leave all files behind which will need to be cleaned up manually and may result in game duplicates showing in the RetroDECK library.\n\nPlease make sure you have a backup of your ROMs before using automatic cleanup!"
|
||||
|
@ -970,7 +927,7 @@ configurator_compression_cleanup_dialog() {
|
|||
|
||||
configurator_online_update_setting_dialog() {
|
||||
if [[ $(get_setting_value $rd_conf "update_check" retrodeck "options") == "true" ]]; then
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Online Update Check" \
|
||||
--text="Online update checks for RetroDECK are currently enabled.\n\nDo you want to disable them?"
|
||||
|
@ -982,7 +939,7 @@ configurator_online_update_setting_dialog() {
|
|||
configurator_retrodeck_tools_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Online Update Check" \
|
||||
--text="Online update checks for RetroDECK are currently disabled.\n\nDo you want to enable them?"
|
||||
|
@ -997,7 +954,7 @@ configurator_online_update_setting_dialog() {
|
|||
}
|
||||
|
||||
configurator_retrodeck_troubleshooting_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Troubleshooting" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Troubleshooting" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \
|
||||
|
@ -1014,7 +971,7 @@ configurator_retrodeck_troubleshooting_dialog() {
|
|||
(
|
||||
backup_retrodeck_userdata
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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 Configurator Utility - Backup in Progress" \
|
||||
--text="Backing up RetroDECK userdata, please wait..."
|
||||
|
@ -1059,7 +1016,7 @@ configurator_check_bios_files() {
|
|||
|
||||
check_bios_files "basic"
|
||||
|
||||
zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column "BIOS File Name" \
|
||||
--column "System" \
|
||||
|
@ -1077,7 +1034,7 @@ configurator_check_bios_files_expert_mode() {
|
|||
|
||||
check_bios_files "expert"
|
||||
|
||||
zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column "BIOS File Name" \
|
||||
--column "System" \
|
||||
|
@ -1095,7 +1052,7 @@ configurator_check_multifile_game_structure() {
|
|||
local folder_games=($(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3"))
|
||||
if [[ ${#folder_games[@]} -gt 1 ]]; then
|
||||
echo "$(find $roms_folder -maxdepth 2 -mindepth 2 -type d ! -name "*.m3u" ! -name "*.ps3")" > $logs_folder/multi_file_games_"$(date +"%Y_%m_%d_%I_%M_%p").log"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_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"
|
||||
|
@ -1114,7 +1071,7 @@ configurator_reset_dialog() {
|
|||
"Reset RetroDECK" "Reset RetroDECK to default settings"
|
||||
)
|
||||
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Reset" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: Reset" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Action" \
|
||||
"${choices[@]}")
|
||||
|
@ -1148,7 +1105,7 @@ configurator_reset_dialog() {
|
|||
|
||||
"Reset Emulator or Engine" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
component_to_reset=$(zenity --list \
|
||||
component_to_reset=$(rd_zenity --list \
|
||||
--title "RetroDECK Configurator Utility - Reset Specific Standalone Emulator" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--text="Which emulator or engine do you want to reset to default?" \
|
||||
|
@ -1190,18 +1147,17 @@ configurator_reset_dialog() {
|
|||
;;
|
||||
|
||||
"Reset RetroDECK Component" )
|
||||
component_to_reset=$(zenity --list \
|
||||
component_to_reset=$(rd_zenity --list \
|
||||
--title "RetroDECK Configurator Utility - Reset Specific RetroDECK Component" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--text="Which component do you want to reset to default settings?" \
|
||||
--column="Component" --column="Action" \
|
||||
"BoilR" "Reset BoilR that manages the sync and scraping toward Steam library" \
|
||||
"ES-DE" "Reset the ES-DE frontend" \ )
|
||||
# TODO: "GyroDSU" "Reset the gyroscope manager GyroDSU"
|
||||
|
||||
case $component_to_reset in
|
||||
|
||||
"BoilR" | "ES-DE" ) # TODO: GyroDSU
|
||||
"ES-DE" ) # TODO: GyroDSU
|
||||
if [[ $(configurator_reset_confirmation_dialog "$component_to_reset" "Are you sure you want to reset $component_to_reset to default settings?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||
prepare_component "reset" "$component_to_reset" "configurator"
|
||||
configurator_process_complete_dialog "resetting $component_to_reset"
|
||||
|
@ -1225,7 +1181,7 @@ configurator_reset_dialog() {
|
|||
(
|
||||
prepare_component "reset" "all"
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||
rd_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."
|
||||
|
@ -1243,7 +1199,7 @@ configurator_reset_dialog() {
|
|||
"Reset RetroDECK" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
if [[ $(configurator_reset_confirmation_dialog "RetroDECK" "Are you sure you want to reset RetroDECK entirely?\n\nThis process cannot be undone.") == "true" ]]; then
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
|
||||
rd_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 RetroDECK" \
|
||||
--text="You are resetting RetroDECK to its default state.\n\nAfter the process is complete you will need to exit RetroDECK and run it again, where you will go through the initial setup process."
|
||||
|
@ -1264,7 +1220,7 @@ configurator_reset_dialog() {
|
|||
}
|
||||
|
||||
configurator_about_retrodeck_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK: About" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK: About" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Version History" "View the version changelogs for RetroDECK" \
|
||||
|
@ -1279,7 +1235,7 @@ configurator_about_retrodeck_dialog() {
|
|||
|
||||
"Credits" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --text-info --width=1200 --height=720 \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Credits" \
|
||||
--filename="$emuconfigs/defaults/retrodeck/reference_lists/retrodeck_credits.txt"
|
||||
|
@ -1294,49 +1250,6 @@ configurator_about_retrodeck_dialog() {
|
|||
esac
|
||||
}
|
||||
|
||||
configurator_add_steam() {
|
||||
if [[ $(get_setting_value $rd_conf "steam_sync" retrodeck "options") == "true" ]]; then
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization is currently enabled. Do you want to disable it?\n\nThe already added shortcut will not be removed.\n"
|
||||
|
||||
if [ $? == 0 ] # User clicked "Yes"
|
||||
then
|
||||
disable_steam_sync
|
||||
else # User clicked "Cancel"
|
||||
configurator_welcome_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization is currently disabled. Do you want to enable it?\n\nAll the games marked as favorites will be syncronized with Steam thanks to BoilR.\nRemember to restart Steam each time to see the changes.\n"
|
||||
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
enable_steam_sync
|
||||
else
|
||||
configurator_welcome_dialog
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
enable_steam_sync() {
|
||||
set_setting_value $rd_conf "steam_sync" "true" retrodeck "options"
|
||||
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Steam Syncronization" \
|
||||
--text="Steam syncronization enabled, restart RetroDECK to get effect."
|
||||
configurator_welcome_dialog
|
||||
}
|
||||
|
||||
disable_steam_sync() {
|
||||
set_setting_value $rd_conf "steam_sync" "false" retrodeck "options"
|
||||
touch /tmp/retrodeck_steam_sync_exit
|
||||
configurator_welcome_dialog
|
||||
}
|
||||
|
||||
configurator_version_history_dialog() {
|
||||
local version_array=($(xml sel -t -v '//component/releases/release/@version' -n $rd_appdata))
|
||||
local all_versions_list=()
|
||||
|
@ -1345,7 +1258,7 @@ configurator_version_history_dialog() {
|
|||
all_versions_list=("${all_versions_list[@]}" "RetroDECK $rd_version Changelog" "View the changes specific to version $rd_version")
|
||||
done
|
||||
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - RetroDECK Version History" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - RetroDECK Version History" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Full RetroDECK Changelog" "View the list of all changes that have ever been made to RetroDECK" \
|
||||
|
@ -1370,14 +1283,14 @@ configurator_version_history_dialog() {
|
|||
}
|
||||
|
||||
configurator_developer_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - Developer Options" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Developer Options" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Change Multi-user mode" "Enable or disable multi-user support" \
|
||||
"Change Update Channel" "Change between normal and cooker builds" \
|
||||
"Browse the Wiki" "Browse the RetroDECK wiki online" \
|
||||
"USB Import" "Prepare a USB device for ROMs or import an existing collection" \
|
||||
"Install RetroDECK Starter Pack" "Install the optional RetroDECK starter pack" )
|
||||
"Install RetroDECK Starter Pack" "Install the optional RetroDECK starter pack" \
|
||||
"Tool: USB Import" "Prepare a USB device for ROMs or import an existing collection")
|
||||
|
||||
case $choice in
|
||||
|
||||
|
@ -1397,11 +1310,6 @@ configurator_developer_dialog() {
|
|||
configurator_developer_dialog
|
||||
;;
|
||||
|
||||
"USB Import" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_usb_import_dialog
|
||||
;;
|
||||
|
||||
"Install RetroDECK Starter Pack" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
if [[ $(configurator_generic_question_dialog "Install: RetroDECK Starter Pack" "The RetroDECK creators have put together a collection of classic retro games you might enjoy!\n\nWould you like to have them automatically added to your library?") == "true" ]]; then
|
||||
|
@ -1410,6 +1318,11 @@ configurator_developer_dialog() {
|
|||
configurator_developer_dialog
|
||||
;;
|
||||
|
||||
"Tool: USB Import" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_usb_import_dialog
|
||||
;;
|
||||
|
||||
"" ) # No selection made or Back button clicked
|
||||
log i "Configurator: going back"
|
||||
configurator_welcome_dialog
|
||||
|
@ -1419,7 +1332,7 @@ configurator_developer_dialog() {
|
|||
|
||||
configurator_retrodeck_multiuser_dialog() {
|
||||
if [[ $(get_setting_value $rd_conf "multi_user_mode" retrodeck "options") == "true" ]]; then
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Multi-user Support" \
|
||||
--text="Multi-user support is currently enabled. Do you want to disable it?\n\nIf there is more than one user configured,\nyou will be given a choice of which to use as the single RetroDECK user.\n\nThis user's files will be moved to the default locations.\n\nOther users' files will remain in the mutli-user-data folder.\n"
|
||||
|
@ -1431,7 +1344,7 @@ configurator_retrodeck_multiuser_dialog() {
|
|||
configurator_developer_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Multi-user support" \
|
||||
--text="Multi-user support is currently disabled. Do you want to enable it?\n\nThe current user's saves and states will be backed up and then moved to the \"retrodeck/multi-user-data\" folder.\nAdditional users will automatically be stored in their own folder here as they are added."
|
||||
|
@ -1447,7 +1360,7 @@ configurator_retrodeck_multiuser_dialog() {
|
|||
|
||||
configurator_online_update_channel_dialog() {
|
||||
if [[ $(get_setting_value $rd_conf "update_repo" retrodeck "options") == "RetroDECK" ]]; then
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Change Update Branch" \
|
||||
--text="You are currently on the production branch of RetroDECK updates. Would you like to switch to the cooker branch?\n\nAfter installing a cooker build, you may need to remove the \"stable\" branch install of RetroDECK to avoid overlap."
|
||||
|
@ -1459,7 +1372,7 @@ configurator_online_update_channel_dialog() {
|
|||
configurator_developer_dialog
|
||||
fi
|
||||
else
|
||||
zenity --question \
|
||||
rd_zenity --question \
|
||||
--no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator - RetroDECK Change Update Branch" \
|
||||
--text="You are currently on the cooker branch of RetroDECK updates. Would you like to switch to the production branch?\n\nAfter installing a production build, you may need to remove the \"cooker\" branch install of RetroDECK to avoid overlap."
|
||||
|
@ -1474,25 +1387,27 @@ configurator_online_update_channel_dialog() {
|
|||
}
|
||||
|
||||
configurator_usb_import_dialog() {
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - Developer Options" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - Developer Options" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column="Choice" --column="Description" \
|
||||
"Prepare USB device" "Create ROM folders on a selected USB device" \
|
||||
"Prepare USB device" "Create ROM and BIOS folders on a selected USB device" \
|
||||
"Import from USB" "Import collection from a previously prepared device" )
|
||||
|
||||
case $choice in
|
||||
|
||||
"Prepare USB device" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_generic_dialog "RetroDeck Configurator - USB Import" "If you have an SD card installed that is not currently configured in RetroDECK it may show up in this list, but not be suitable for USB import.\n\nPlease select your desired drive carefully."
|
||||
|
||||
external_devices=()
|
||||
|
||||
while read -r size device_path; do
|
||||
device_name=$(basename "$device_path")
|
||||
external_devices=("${external_devices[@]}" "$device_name" "$size" "$device_path")
|
||||
done < <(df --output=size,target | grep media | grep -v $default_sd | awk '{$1=$1;print}')
|
||||
done < <(df --output=size,target -h | grep "/run/media/" | grep -v "$sdcard" | awk '{$1=$1;print}')
|
||||
|
||||
if [[ "${#external_devices[@]}" -gt 0 ]]; then
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--hide-column=3 --print-column=3 \
|
||||
--column "Device Name" \
|
||||
|
@ -1501,8 +1416,33 @@ configurator_usb_import_dialog() {
|
|||
"${external_devices[@]}")
|
||||
|
||||
if [[ ! -z "$choice" ]]; then
|
||||
es-de --home "$choice" --create-system-dirs
|
||||
rm -rf "$choice/ES-DE" # Cleanup unnecessary folder
|
||||
es-de --home "$choice/RetroDECK Import" --create-system-dirs
|
||||
rm -rf "$choice/RetroDECK Import/ES-DE" # Cleanup unnecessary folder
|
||||
create_dir "$choice/RetroDECK Import/BIOS"
|
||||
|
||||
# Prepare default BIOS folder subfolders
|
||||
create_dir "$choice/RetroDECK Import/BIOS/np2kai"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/dc"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/Mupen64plus"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/quasi88"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/fbneo/samples"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/fbneo/cheats"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/fbneo/blend"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/fbneo/patched"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/citra/sysdata"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/cemu"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/pico-8/carts"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/pico-8/cdata"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_hdd0"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_hdd1"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_flash"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_flash2"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_flash3"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_bdvd"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/rpcs3/dev_usb000"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/Vita3K/"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/mame-sa/samples"
|
||||
create_dir "$choice/RetroDECK Import/BIOS/gzdoom"
|
||||
fi
|
||||
else
|
||||
configurator_generic_dialog "RetroDeck Configurator - USB Import" "There were no USB devices found."
|
||||
|
@ -1515,14 +1455,14 @@ configurator_usb_import_dialog() {
|
|||
external_devices=()
|
||||
|
||||
while read -r size device_path; do
|
||||
if [[ -d "$device_path/ROMs" ]]; then
|
||||
if [[ -d "$device_path/RetroDECK Import/ROMs" ]]; then
|
||||
device_name=$(basename "$device_path")
|
||||
external_devices=("${external_devices[@]}" "$device_name" "$size" "$device_path")
|
||||
fi
|
||||
done < <(df --output=size,target | grep media | grep -v $default_sd | awk '{$1=$1;print}')
|
||||
done < <(df --output=size,target -h | grep "/run/media/" | grep -v "$sdcard" | awk '{$1=$1;print}')
|
||||
|
||||
if [[ "${#external_devices[@]}" -gt 0 ]]; then
|
||||
choice=$(zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
|
||||
choice=$(rd_zenity --list --title="RetroDECK Configurator Utility - USB Migration Tool" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--hide-column=3 --print-column=3 \
|
||||
--column "Device Name" \
|
||||
|
@ -1531,21 +1471,23 @@ configurator_usb_import_dialog() {
|
|||
"${external_devices[@]}")
|
||||
|
||||
if [[ ! -z "$choice" ]]; then
|
||||
if [[ $(verify_space "$choice/ROMs" "$roms_folder") == "false" ]]; then
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Configurator Utility - USB Migration Tool" "You MAY not have enough free space to import this ROM library.\n\nThis utility only imports new additions from the USB device, so if there are a lot of the same ROMs in both locations you are likely going to be fine\nbut we are not able to verify how much data will be transferred before it happens.\n\nIf you are unsure, please verify your available free space before continuing.\n\nDo you want to continue now?") == "true" ]]; then
|
||||
if [[ $(verify_space "$choice/RetroDECK Import/ROMs" "$roms_folder") == "false" || $(verify_space "$choice/RetroDECK Import/BIOS" "$bios_folder") == "false" ]]; then
|
||||
if [[ $(configurator_generic_question_dialog "RetroDECK Configurator Utility - USB Migration Tool" "You MAY not have enough free space to import this ROM/BIOS library.\n\nThis utility only imports new additions from the USB device, so if there are a lot of the same files in both locations you are likely going to be fine\nbut we are not able to verify how much data will be transferred before it happens.\n\nIf you are unsure, please verify your available free space before continuing.\n\nDo you want to continue now?") == "true" ]]; then
|
||||
(
|
||||
rsync -a --mkpath "$choice/ROMs/"* "$roms_folder"
|
||||
rsync -a --mkpath "$choice/RetroDECK Import/ROMs/"* "$roms_folder"
|
||||
rsync -a --mkpath "$choice/RetroDECK Import/BIOS/"* "$bios_folder"
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - USB Import In Progress"
|
||||
configurator_generic_dialog "RetroDECK Configurator - USB Migration Tool" "The import process is complete!"
|
||||
fi
|
||||
else
|
||||
(
|
||||
rsync -a --mkpath "$choice/ROMs/"* "$roms_folder"
|
||||
rsync -a --mkpath "$choice/RetroDECK Import/ROMs/"* "$roms_folder"
|
||||
rsync -a --mkpath "$choice/RetroDECK Import/BIOS/"* "$bios_folder"
|
||||
) |
|
||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
rd_zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - USB Import In Progress"
|
||||
configurator_generic_dialog "RetroDECK Configurator - USB Migration Tool" "The import process is complete!"
|
||||
|
@ -1562,7 +1504,6 @@ configurator_usb_import_dialog() {
|
|||
configurator_developer_dialog
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
# START THE CONFIGURATOR
|
||||
|
|
Loading…
Reference in a new issue