mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-11-27 16:15:42 +00:00
Merge latest cooker to my local cooker branch
This commit is contained in:
commit
eb7d845868
300
.github/workflows/build_release.yml
vendored
Normal file
300
.github/workflows/build_release.yml
vendored
Normal file
|
@ -0,0 +1,300 @@
|
|||
name: "Build RetroDECK"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- cooker*
|
||||
- feat*
|
||||
- branch/cooker*
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'config/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- cooker*
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
|
||||
# Build RetroDECK Job
|
||||
Build_RetroDECK:
|
||||
runs-on: retrodeck
|
||||
outputs:
|
||||
TAG: ${{ steps.version-tag.outputs.TAG }}
|
||||
RELEASE_BODY: ${{ steps.version-tag.outputs.RELEASE_BODY }}
|
||||
MAKE_LATEST: ${{ steps.version-tag.outputs.MAKE_LATEST }}
|
||||
|
||||
steps:
|
||||
# Remove Stuck Mounts
|
||||
- name: Remove stuck mounts
|
||||
run: |
|
||||
sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
# Clone Repository
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
# Install Dependencies
|
||||
- name: Install dependencies
|
||||
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
|
||||
|
||||
# Generate Build ID for Cooker Branches
|
||||
- name: Generate cooker build ID
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
|
||||
|
||||
# Getting branch name, this needs as PR should be managed in a different way
|
||||
- name: Get Branch Name
|
||||
run: |
|
||||
if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
branch_name="$GITHUB_HEAD_REF"
|
||||
else
|
||||
branch_name="$GITHUB_REF_NAME"
|
||||
fi
|
||||
echo "Branch name: $branch_name"
|
||||
echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV
|
||||
|
||||
# Generates a version tag based on the event type (main branch, PR, or cooker) and sets it as output.
|
||||
- name: Generate Version Tag
|
||||
id: version-tag
|
||||
run: |
|
||||
# Source the version extractor script and fetch the manifest version
|
||||
source automation_tools/version_extractor.sh
|
||||
MANIFEST_VERSION="$(fetch_manifest_version)"
|
||||
|
||||
# Ensure the manifest version was successfully extracted
|
||||
if [[ -z "$MANIFEST_VERSION" ]]; then
|
||||
echo "[ERROR] Failed to extract the manifest version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Determine the tag based on the GitHub event context
|
||||
if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
|
||||
# Main branch tag
|
||||
TAG="$MANIFEST_VERSION"
|
||||
MAKE_LATEST=true
|
||||
elif [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
# Pull request tag, sanitize the source branch
|
||||
source_branch="${GITHUB_HEAD_REF//\//-}"
|
||||
TAG="PR-$source_branch-${{ github.run_id }}"
|
||||
MAKE_LATEST=false
|
||||
else
|
||||
# Other branches (cooker branches)
|
||||
TAG="$MANIFEST_VERSION-${{ env.BUILD_ID }}"
|
||||
MAKE_LATEST=true
|
||||
fi
|
||||
|
||||
echo "TAG=$TAG" >> $GITHUB_ENV
|
||||
echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_ENV
|
||||
|
||||
echo "TAG=$TAG" >> $GITHUB_OUTPUT
|
||||
echo "MAKE_LATEST=$MAKE_LATEST" >> $GITHUB_OUTPUT
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (Cooker only)"
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
||||
- name: "Updating release notes in appdata"
|
||||
run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
# Get Commits Since Last Published Release (Cooker only)
|
||||
- name: Get commits since last published release
|
||||
id: get-commits
|
||||
if: github.ref != 'refs/heads/main'
|
||||
run: |
|
||||
# Get the latest published release tag
|
||||
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "")
|
||||
|
||||
if [ -z "$LATEST_TAG" ]; then
|
||||
echo "[INFO] No previous release found. Using all commits."
|
||||
COMMITS=$(git log HEAD --pretty=format:"- %s")
|
||||
else
|
||||
echo "[INFO] Latest published release tag: $LATEST_TAG"
|
||||
COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s")
|
||||
fi
|
||||
|
||||
# Debug: Print the commits list
|
||||
echo "Commits since $LATEST_TAG:"
|
||||
echo "$COMMITS"
|
||||
|
||||
# Export the commits list to the GitHub environment
|
||||
echo "COMMITS=$COMMITS" >> $GITHUB_ENV
|
||||
|
||||
# - name: Extract XML Description
|
||||
# uses: Mudlet/xmlstarlet-action@master
|
||||
# id: extract-description
|
||||
# with:
|
||||
# args: sel -t -v "/component/releases/release[1]/description//text()" ./net.retrodeck.retrodeck.appdata.xml
|
||||
|
||||
# Generate Release Body
|
||||
- name: Generate release body text
|
||||
id: generate-body
|
||||
run: |
|
||||
# Initialize the release body text
|
||||
RELEASE_BODY="# Release Notes\n"
|
||||
RELEASE_BODY+="This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}."
|
||||
RELEASE_BODY+="On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}})."
|
||||
RELEASE_BODY+="## Commits since last release\n"
|
||||
RELEASE_BODY+="$COMMITS\n\n"
|
||||
|
||||
#raw_description="${{ steps.extract-description.outputs.result }}"
|
||||
|
||||
# Convert <p> tags to markdown headers using sed
|
||||
markdown_description=$(echo "$raw_description" | sed -e 's|<p>|\n### |g' -e 's|</p>||g')
|
||||
|
||||
# Convert <li> tags to bullet points and trim spaces
|
||||
markdown_description=$(echo "$markdown_description" | sed -e 's|<ul>||g' -e 's|</ul>||g' -e 's|<li>|- |g' -e 's|</li>||g' | awk '{$1=$1;print}')
|
||||
|
||||
# Remove any remaining XML tags
|
||||
markdown_description=$(echo "$markdown_description" | sed -e 's/<[^>]*>//g')
|
||||
|
||||
# Debug: Print the markdown description
|
||||
echo "Markdown Description:"
|
||||
echo "$markdown_description"
|
||||
|
||||
# Append markdown content to the release body
|
||||
RELEASE_BODY+="$markdown_description"
|
||||
printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_ENV
|
||||
printf "RELEASE_BODY=%s\n" "$RELEASE_BODY" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "[DEBUG] CHECKPOINT 8"
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: flatpak-download
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
# Upload artifacts for other jobs
|
||||
- name: Upload Build Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: retrodeck-artifacts
|
||||
include-hidden-files: true
|
||||
path: |
|
||||
RetroDECK*.flatpak
|
||||
RetroDECK*.flatpak.sha
|
||||
RetroDECK*Artifact.tar.gz
|
||||
|
||||
GitHub-publish:
|
||||
runs-on: ubuntu-latest
|
||||
needs: Build_RetroDECK
|
||||
env:
|
||||
TAG: ${{ needs.Build_RetroDECK.outputs.TAG }}
|
||||
RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }}
|
||||
MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }}
|
||||
steps:
|
||||
|
||||
- name: Generate a token for Rekku
|
||||
id: generate-rekku-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ vars.REKKU_APP_ID }}
|
||||
private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
|
||||
repositories: "RetroDECK,Cooker"
|
||||
owner: "RetroDECK"
|
||||
|
||||
- name: Download all workflow run artifacts
|
||||
uses: actions/download-artifact@v4.1.8
|
||||
|
||||
# Determine if Target Repository is Main or not, in that case is a Cooker build
|
||||
- name: Determine target repository
|
||||
id: set-repo
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
|
||||
echo "REPO_NAME=RetroDECK" >> $GITHUB_ENV
|
||||
else
|
||||
echo "REPO_NAME=Cooker" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# Publish Release
|
||||
- name: Publish release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
tag: ${{ env.TAG }}
|
||||
name: "RetroDECK ${{ env.TAG }}"
|
||||
body: ${{ env.RELEASE_BODY }}
|
||||
artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: ${{ env.MAKE_LATEST }}
|
||||
repo: ${{ env.REPO_NAME }}
|
||||
token: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
|
||||
# Rewrite Tag (for Main Branch Only)
|
||||
- name: Rewrite Tag
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: |
|
||||
git submodule deinit -f --all
|
||||
git fetch --tags
|
||||
if git rev-parse --verify "${{ env.TAG }}" >/dev/null 2>&1; then
|
||||
git tag -d "${{ env.TAG }}"
|
||||
git push --delete origin "${{ env.TAG }}"
|
||||
fi
|
||||
git tag "${{ env.TAG }}"
|
||||
git push origin "${{ env.TAG }}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
|
||||
# As backup we're even publishing the build on our own selfhosted Fogejo instance
|
||||
# Forgejo Publish Job if main branch
|
||||
# Forgejo-publish:
|
||||
# runs-on: ubuntu-latest
|
||||
# needs: Build_RetroDECK
|
||||
# env:
|
||||
# TAG: ${{ needs.Build_RetroDECK.outputs.TAG }}
|
||||
# RELEASE_BODY: ${{ needs.Build_RetroDECK.outputs.RELEASE_BODY }}
|
||||
# MAKE_LATEST: ${{ needs.Build_RetroDECK.outputs.MAKE_LATEST }}
|
||||
# steps:
|
||||
#
|
||||
# - name: Download all workflow run artifacts
|
||||
# uses: actions/download-artifact@v4.1.8
|
||||
#
|
||||
# - name: Forgejo-publish
|
||||
# if: github.ref == 'refs/heads/main'
|
||||
# uses: RetroDECK/components-template/.github/workflows/fogejo_publish_release.yml@main
|
||||
# with:
|
||||
# release_body: ${{ env.RELEASE_BODY }}
|
||||
# artifacts: "retrodeck-artifacts/*.flatpak,retrodeck-artifacts/*.flatpak.sha,retrodeck-artifacts/*Artifact.tar.gz"
|
||||
# tag: ${{ env.TAG }}
|
||||
|
266
.github/workflows/cooker-selfhosted.yml
vendored
266
.github/workflows/cooker-selfhosted.yml
vendored
|
@ -1,266 +0,0 @@
|
|||
name: "Build cooker"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- cooker*
|
||||
- feat*
|
||||
- branch/cooker*
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'config/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
|
||||
# Italy (CET): 11:00 PM
|
||||
# Japan (JST): 7:00 AM
|
||||
# schedule:
|
||||
# - cron: '0 22 * * *'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
|
||||
Building_RetroDECK:
|
||||
runs-on: retrodeck
|
||||
steps:
|
||||
|
||||
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||
- name: Remove stuck mounts
|
||||
run: |
|
||||
sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
sudo umount -f $HOME/actions-run/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
- name: Generate a token for Rekku
|
||||
if: ${{ github.repository == 'RetroDECK/RetroDECK' }}
|
||||
id: generate-rekku-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
app-id: ${{ vars.REKKU_APP_ID }}
|
||||
private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
|
||||
repositories: "RetroDECK,Cooker"
|
||||
owner: "RetroDECK"
|
||||
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "automation_tools/install_dependencies.sh"
|
||||
|
||||
- name: Generate cooker build ID
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_build_id.sh"
|
||||
|
||||
- name: Get branch name
|
||||
id: branch_name
|
||||
run: |
|
||||
if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
source_branch="${{ github.head_ref }}"
|
||||
echo "BRANCH_NAME=$source_branch" >> $GITHUB_ENV
|
||||
else
|
||||
branch_name=$(echo $GITHUB_REF | sed 's|refs/heads/||')
|
||||
echo "BRANCH_NAME=$branch_name" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# if the branch is coming from a PR the tag should be manually built
|
||||
- name: "Generate version tag and evaluating latest tag"
|
||||
run: |
|
||||
# Source the version extractor script to get the manifest version
|
||||
source automation_tools/version_extractor.sh
|
||||
MANIFEST_VERSION="$(fetch_manifest_version)"
|
||||
echo "MANIFEST_VERSION=$MANIFEST_VERSION" >> $GITHUB_ENV
|
||||
|
||||
# Check if the event is related to a pull request
|
||||
if [[ "$GITHUB_EVENT_NAME" == "pull_request" || "$GITHUB_EVENT_NAME" == "pull_request_target" ]]; then
|
||||
# Use GITHUB_HEAD_REF to get the source branch
|
||||
source_branch="${GITHUB_HEAD_REF}"
|
||||
|
||||
# Replace '/' with '-' in the branch name
|
||||
source_branch=${source_branch//\//-}
|
||||
# Use GITHUB_HEAD_REF to get the source branch
|
||||
source_branch="${GITHUB_HEAD_REF}"
|
||||
|
||||
# Replace '/' with '-' in the branch name
|
||||
source_branch=${source_branch//\//-}
|
||||
echo "[DEBUG] source branch is: $source_branch"
|
||||
|
||||
# Generate the tag for a pull request
|
||||
echo "TAG=PR-$source_branch-${{ env.buildid }}" >> $GITHUB_ENV
|
||||
echo "MAKE_LATEST=false" >> $GITHUB_ENV # Not marked as the latest cooker version if it's a feature branch
|
||||
else
|
||||
# Generate the tag for non-pull request branches
|
||||
# Generate the tag for non-pull request branches
|
||||
TAG="$MANIFEST_VERSION-${{ env.buildid }}"
|
||||
echo "TAG=$TAG" >> $GITHUB_ENV
|
||||
echo "MAKE_LATEST=true" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
# Output the manifest version and generated tag for debugging
|
||||
echo "MANIFEST_VERSION: $MANIFEST_VERSION"
|
||||
echo "Version TAG: $TAG"
|
||||
echo "MAKE_LATEST: $MAKE_LATEST"
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (cooker only)"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
||||
- name: "Updating release notes in appdata"
|
||||
run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: "flatpak-download"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
continue-on-error: true
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
- name: Set environment variable with current branch name
|
||||
run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
|
||||
|
||||
- name: Get commits since last release
|
||||
run: |
|
||||
# Get the latest release tag
|
||||
LATEST_TAG=$(git describe --tags --abbrev=0)
|
||||
# Get all commits since the latest release tag
|
||||
COMMITS=$(git log $LATEST_TAG..HEAD --pretty=format:"- %s")
|
||||
# Set the output variable
|
||||
echo "::set-output name=commits::$COMMITS"
|
||||
id: commits
|
||||
continue-on-error: true
|
||||
|
||||
- name: Publish the flatpak in a new cooker release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
tag: "${{env.TAG}}"
|
||||
body: |
|
||||
# Release Notes (Cooker)
|
||||
This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
|
||||
On branch [${{env.BRANCH_NAME}}](https://github.com/RetroDECK/RetroDECK/tree/${{env.BRANCH_NAME}}).
|
||||
|
||||
## Commits since last release
|
||||
${{ steps.commits.outputs.commits }}
|
||||
|
||||
For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server.
|
||||
|
||||
Cooker channel is provided for the community to test fixes and explore new functionality.
|
||||
Please DO NOT open issues or ask support on this build.
|
||||
|
||||
artifacts: "RetroDECK-cooker.flatpak,RetroDECK-cooker.flatpak.sha,RetroDECK-Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: ${{env.MAKE_LATEST}} # if it's a feat branch is not considered the latest build
|
||||
token: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
repo: ${{ github.repository_owner == 'RetroDECK' && 'Cooker' || github.event.repository.name }} # "Cooker" if we are in RetroDECK Org, else "this repo"
|
||||
continue-on-error: true
|
||||
|
||||
- name: Rewrite Tag
|
||||
if: ${{ github.repository == 'RetroDECK/RetroDECK' }}
|
||||
run: |
|
||||
git submodule deinit -f --all
|
||||
git fetch --tags
|
||||
git config --global user.name "Rekku"
|
||||
git config --global user.email "rekku@retrodeck.net"
|
||||
if git rev-parse --verify "${{ env.TAG }}" >/dev/null 2>&1; then # if the tag exists
|
||||
git tag -d "${{ env.TAG }}" # remove it from local repo
|
||||
git push --delete origin "${{ env.TAG }}" # and from remote
|
||||
fi
|
||||
git tag "${{ env.TAG }}" # Create the tag locally
|
||||
git push origin "${{ env.TAG }}" # Push the new tag in the remote repo
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ steps.generate-rekku-token.outputs.token }}
|
||||
|
||||
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
|
||||
- name: Upload RetroDECK-cooker.flatpak
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: retrodeck-flatpak
|
||||
path: RetroDECK-cooker.flatpak
|
||||
continue-on-error: true
|
||||
|
||||
# - name: Upload RetroDECK-cooker.flatpak to Gitea Release
|
||||
# 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 }}"
|
||||
# RELEASE_NAME="RetroDECK ${{env.TAG}}"
|
||||
# TAG="${{env.TAG}}"
|
||||
# RELEASE_BODY="# Release Notes (Cooker)
|
||||
# This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
|
||||
# On branch [${{env.BRANCH_NAME}}](https://repo.retrodeck.net/RetroDECK/RetroDECK/src/branch/${{env.BRANCH_NAME}}).
|
||||
|
||||
# ## Commits since last release
|
||||
# ${{ steps.commits.outputs.commits }}
|
||||
|
||||
# For the full release note for this build please refer to the channel [#BETA-TESTING](https://discord.gg/WDc5C9YWMx) on our Discord server.
|
||||
|
||||
# Cooker channel is provided for the community to test fixes and explore new functionality.
|
||||
# Please DO NOT open issues or ask support on this build."
|
||||
|
||||
# # Create a release using curl and capture the release ID
|
||||
# release_response=$(curl -X POST \
|
||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
||||
# -H "Content-Type: application/json" \
|
||||
# -d "{\"tag_name\":\"$TAG\",\"name\":\"$RELEASE_NAME\",\"body\":\"$RELEASE_BODY\"}" \
|
||||
# "http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases")
|
||||
|
||||
# # Extract the release ID from the response
|
||||
# release_id=$(echo $release_response | jq -r '.id')
|
||||
|
||||
# # 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://$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://$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://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
26
.github/workflows/godot.yml
vendored
Normal file
26
.github/workflows/godot.yml
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
name: Building a mOnKeyX Project
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ feat/godot-uk ]
|
||||
pull_request:
|
||||
branches: [ feat/godot-uk ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name : exportGame
|
||||
uses: firebelley/godot-export@v5.2.1
|
||||
with:
|
||||
godot_executable_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_linux.x86_64.zip
|
||||
godot_export_templates_download_url: https://download.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_export_templates.tpz
|
||||
relative_project_path: tools/rd-config-test/
|
||||
create_release: true
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
191
.github/workflows/main-selfhosted.yml
vendored
191
.github/workflows/main-selfhosted.yml
vendored
|
@ -1,191 +0,0 @@
|
|||
name: "Build main"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'automation_tools/**'
|
||||
- 'config/**'
|
||||
- 'config/es-de/**'
|
||||
- 'functions/**'
|
||||
- 'rd-submodules/**'
|
||||
- '*.sh'
|
||||
- 'net.retrodeck.retrodeck.yml'
|
||||
- 'net.retrodeck.retrodeck.appdata.xml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
|
||||
Building_RetroDECK:
|
||||
runs-on: retrodeck
|
||||
steps:
|
||||
|
||||
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
|
||||
- name: Remove stuck mounts
|
||||
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/*
|
||||
continue-on-error: true
|
||||
|
||||
- name: Clone RetroDECK repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'true'
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: "automation_tools/install_dependencies.sh"
|
||||
|
||||
# backing up manifest in case download fails and hashes must be recalculated
|
||||
- name: Manifest backup
|
||||
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak"
|
||||
|
||||
- name: Run pre-build automation tasks
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
|
||||
- name: Read manifest content
|
||||
id: read_manifest
|
||||
run: echo "::set-output name=file_content::$(cat net.retrodeck.retrodeck.yml)"
|
||||
|
||||
# - name: "Updating release notes in appdata"
|
||||
# run: "automation_tools/appdata_management.sh"
|
||||
|
||||
- name: Check versions (main only)
|
||||
id: check_version_string
|
||||
run: "automation_tools/main_version_checker.sh"
|
||||
|
||||
- name: "[DEBUG] Outputting manifest"
|
||||
run: cat net.retrodeck.retrodeck.yml
|
||||
|
||||
- name: "Build flatpak: download only"
|
||||
id: "flatpak-download"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
continue-on-error: true
|
||||
|
||||
# Sometimes flatpak download fails, in this case it tries a second time
|
||||
- name: "Build flatpak: download only (retry)"
|
||||
if: steps.flatpak-download.outcome == 'failure'
|
||||
run: |
|
||||
echo "Download failed, maybe some hash changed since the build start."
|
||||
echo "Recalculating hashes and retrying download..."
|
||||
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh"
|
||||
|
||||
- name: Create Artifact for flathub
|
||||
run: |
|
||||
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-main .
|
||||
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz))
|
||||
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact.sha
|
||||
mv -f RetroDECK-Artifact.* ${{ secrets.ARTIFACT_REPO }}
|
||||
|
||||
- name: Create Bundle
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
|
||||
|
||||
- name: Getting version info
|
||||
id: version
|
||||
run: |
|
||||
appdata="https://raw.githubusercontent.com/RetroDECK/RetroDECK/main/net.retrodeck.retrodeck.appdata.xml"
|
||||
REL_VER=$(curl -s $appdata | xmlstarlet sel -t -v "//release/@version" | head -1)
|
||||
DES="$(curl -s $appdata | xmlstarlet sel -t -m "//release[1]" -v "description" -n | sed '1,2d;$d;s/^ */- /;/^- $/d')"
|
||||
echo "REL_VER=$REL_VER" >> $GITHUB_ENV
|
||||
echo -e "# Release Notes\n" >> "body.md"
|
||||
echo "$DES" >> "body.md"
|
||||
|
||||
- name: Publish the flatpak in a new release
|
||||
uses: ncipollo/release-action@v1
|
||||
env:
|
||||
REL_VER: ${{ env.REL_VER }}
|
||||
with:
|
||||
tag: ${{ env.REL_VER }}
|
||||
name: "RetroDECK v${{ env.REL_VER }}"
|
||||
bodyFile: "body.md"
|
||||
artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz"
|
||||
allowUpdates: true
|
||||
makeLatest: true
|
||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||
repo: RetroDECK
|
||||
continue-on-error: true
|
||||
|
||||
- name: Rewrite Tag
|
||||
run: |
|
||||
git submodule deinit -f --all
|
||||
git fetch --tags
|
||||
if git rev-parse --verify "${{ env.REL_VER }}" >/dev/null 2>&1; then # if the tag exists
|
||||
git tag -d "${{ env.REL_VER }}" # remove it from local repo
|
||||
git push --delete origin "${{ env.REL_VER }}" # and from remote
|
||||
fi
|
||||
git tag "${{ env.REL_VER }}" # Create the tag locally
|
||||
git push origin "${{ env.REL_VER }}" # Push the new tag in the remote repo
|
||||
|
||||
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
|
||||
- name: Upload RetroDECK.flatpak
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: retrodeck-flatpak
|
||||
path: RetroDECK.flatpak
|
||||
continue-on-error: true
|
||||
|
||||
- name: Publish release on Gitea
|
||||
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 }}"
|
||||
RELEASE_NAME="RetroDECK v${{ env.REL_VER }}"
|
||||
TAG="${{ env.REL_VER }}"
|
||||
|
||||
payload=$(jq -cn \
|
||||
--arg tag_name "$TAG" \
|
||||
--arg name "$RELEASE_NAME" \
|
||||
--arg body "$(cat body.md)" \
|
||||
'{$tag_name, $name, $body}'
|
||||
)
|
||||
|
||||
# Create a release using curl and capture the release ID
|
||||
release_response=$(curl -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$payload" \
|
||||
"http://$GITEA_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases"
|
||||
)
|
||||
|
||||
# Extract the release ID from the response
|
||||
release_id=$(echo $release_response | jq -r '.id')
|
||||
|
||||
# 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://$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://$UPLOAD_HOST/api/v1/repos/$ORGANIZATION/$REPO/releases/$release_id/assets?name=RetroDECK-Artifact.tar.gz"
|
||||
continue-on-error: true # this will be in place until we reate an artifacts website that bypasses cloudflare limit
|
||||
|
||||
- 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://$UPLOAD_HOST/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha"
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }}
|
||||
continue-on-error: true # this will be in place until we reate an artifacts website that bypasses cloudflare limit
|
|
@ -7,24 +7,24 @@ source automation_tools/version_extractor.sh
|
|||
|
||||
# Fetch appdata version
|
||||
appdata_version=$(fetch_appdata_version)
|
||||
log i "Appdata:\t\t$appdata_version"
|
||||
echo -e "Appdata:\t\t$appdata_version"
|
||||
|
||||
# Defining manifest file location
|
||||
appdata_file="net.retrodeck.retrodeck.appdata.xml"
|
||||
|
||||
# Check if release with appdata_version already exists
|
||||
if grep -q "version=\"$appdata_version\"" "$appdata_file"; then
|
||||
log i "Deleting existing release version $appdata_version..."
|
||||
echo -e "Deleting existing release version $appdata_version..."
|
||||
|
||||
# Remove the existing release entry
|
||||
sed -i "/<release version=\"$appdata_version\"/,/<\/release>/d" "$appdata_file"
|
||||
fi
|
||||
|
||||
log i "Adding new release version $appdata_version..."
|
||||
echo -e "Adding new release version $appdata_version..."
|
||||
|
||||
# Get today's date in the required format (YYYY-MM-DD)
|
||||
today_date=$(date +"%Y-%m-%d")
|
||||
log i "Today is $today_date"
|
||||
echo -e "Today is $today_date"
|
||||
|
||||
# Construct the release snippet
|
||||
release_snippet="\
|
||||
|
@ -41,6 +41,7 @@ xml_content=$(cat "$appdata_file")
|
|||
|
||||
# Replace RELEASE_NOTES_PLACEHOLDER with the actual release notes
|
||||
# TODO
|
||||
rm -rf /tmp/wiki
|
||||
git clone https://github.com/RetroDECK/RetroDECK.wiki.git /tmp/wiki
|
||||
|
||||
# Path to the markdown file
|
||||
|
|
|
@ -8,7 +8,7 @@ outside_file^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
|
|||
branch^THISBRANCH
|
||||
THISREPO^THISREPO
|
||||
|
||||
hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z
|
||||
#hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z
|
||||
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
|
||||
|
@ -24,4 +24,6 @@ hash^RETRODECKMELONDSLATEST^https://github.com/RetroDECK/net.kuribo64.melonDS/re
|
|||
hash^RETRODECKSOLARUSLATEST^https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz
|
||||
hash^RETRODECKGZDOOMLATEST^https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz
|
||||
hash^RETRODECKMAMELATEST^https://github.com/RetroDECK/MAME/releases/latest/download/RetroDECK-MAME-Artifact.tar.gz
|
||||
hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip
|
||||
hash^PORTMASTERLATESTSHA^https://github.com/PortsMaster/PortMaster-GUI/releases/latest/download/retrodeck.portmaster.zip
|
||||
hash^RACITRAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip
|
||||
hash^RETRODECKRPCS3LATEST^https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz
|
|
@ -6,5 +6,5 @@ word2=$(shuf -n 1 ${GITHUB_WORKSPACE}/automation_tools/codename_wordlist.txt)
|
|||
capitalized_word2="$(tr '[:lower:]' '[:upper:]' <<< ${word2:0:1})${word2:1}"
|
||||
result=$capitalized_word1$capitalized_word2
|
||||
echo $result > ${GITHUB_WORKSPACE}/buildid
|
||||
echo "buildid=$result" >> $GITHUB_ENV
|
||||
echo "BUILD_ID=$result" >> $GITHUB_ENV
|
||||
echo "VersionID is $result"
|
|
@ -1,31 +0,0 @@
|
|||
#!/bin/bash
|
||||
# This script is installing the required dependencies to correctly run the pipeline and build the flatpak
|
||||
|
||||
unset pkg_mgr
|
||||
|
||||
# rpm-ostree must be checked before dnf because a dnf (wrapper) command also works on rpm-ostree distros (not what we want)
|
||||
for potential_pkg_mgr in apt pacman rpm-ostree dnf; do
|
||||
command -v "$potential_pkg_mgr" &> /dev/null && pkg_mgr="$potential_pkg_mgr" && break
|
||||
done
|
||||
|
||||
case "$pkg_mgr" in
|
||||
apt)
|
||||
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq
|
||||
;;
|
||||
pacman)
|
||||
sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2
|
||||
;;
|
||||
rpm-ostree)
|
||||
echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox."
|
||||
exit 1
|
||||
;;
|
||||
dnf)
|
||||
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl
|
||||
;;
|
||||
*)
|
||||
echo "Package manager $pkg_mgr not supported. Please open an issue."
|
||||
;;
|
||||
esac
|
||||
|
||||
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
|
|
@ -42,7 +42,7 @@ FastmemMode = true
|
|||
|
||||
|
||||
[GPU]
|
||||
Renderer = Vulkan
|
||||
Renderer = OpenGL
|
||||
Adapter = AMD RADV VANGOGH
|
||||
ResolutionScale = 3
|
||||
Multisamples = 1
|
||||
|
|
|
@ -1132,6 +1132,11 @@
|
|||
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/.",
|
||||
"launch": "es-de"
|
||||
},
|
||||
"steam-rom-manager": {
|
||||
"description": "Steam ROM Manager (used to sync RetroDECK favorites with Steam)",
|
||||
"name": "Steam ROM Manager",
|
||||
"launch": "steam-rom-manager"
|
||||
},
|
||||
"portmaster": {
|
||||
"description": "PortMaster",
|
||||
"name": "PortMaster",
|
||||
|
|
|
@ -31,10 +31,12 @@ default_user=
|
|||
developer_options=false
|
||||
kiroi_ponzu=false
|
||||
akai_ponzu=false
|
||||
steam_sync=false
|
||||
sound_effects=true
|
||||
volume_effects=10
|
||||
font=1
|
||||
cheevos_login=false
|
||||
logging_level=none
|
||||
|
||||
[cheevos]
|
||||
duckstation=false
|
||||
|
|
111
config/steam-rom-manager/userConfigurations.json
Normal file
111
config/steam-rom-manager/userConfigurations.json
Normal file
|
@ -0,0 +1,111 @@
|
|||
[
|
||||
{
|
||||
"parserType": "Glob",
|
||||
"configTitle": "RetroDECK",
|
||||
"steamDirectory": "${steamdirglobal}",
|
||||
"steamCategory": "RetroDECK",
|
||||
"romDirectory": "${romsdirglobal}",
|
||||
"executableArgs": "",
|
||||
"executableModifier": "\"${exePath}\"",
|
||||
"startInDirectory": "",
|
||||
"titleModifier": "${fuzzyTitle}",
|
||||
"imageProviders": [
|
||||
"SteamGridDB"
|
||||
],
|
||||
"onlineImageQueries": "${${fuzzyTitle}}",
|
||||
"imagePool": "${fuzzyTitle}",
|
||||
"userAccounts": {
|
||||
"specifiedAccounts": ""
|
||||
},
|
||||
"executable": {
|
||||
"path": "",
|
||||
"shortcutPassthrough": false,
|
||||
"appendArgsToExecutable": true
|
||||
},
|
||||
"parserInputs": {
|
||||
"glob": "${title}.sh"
|
||||
},
|
||||
"titleFromVariable": {
|
||||
"limitToGroups": "",
|
||||
"caseInsensitiveVariables": false,
|
||||
"skipFileIfVariableWasNotFound": false,
|
||||
"tryToMatchTitle": false
|
||||
},
|
||||
"fuzzyMatch": {
|
||||
"replaceDiacritics": true,
|
||||
"removeCharacters": true,
|
||||
"removeBrackets": true
|
||||
},
|
||||
"controllers": {
|
||||
"ps4": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_ps4.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"ps5": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_ps5.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"xbox360": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_xbox360_simple.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"xboxone": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_xboxone_simple.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"switch_joycon_left": {
|
||||
"title": "Controller",
|
||||
"mappingId": "controller_switch_joycon_left_gamepad_joystick.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"switch_joycon_right": {
|
||||
"title": "Controller",
|
||||
"mappingId": "controller_switch_joycon_right_gamepad_joystick.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"switch_pro": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_switchpro.vdf",
|
||||
"profileType": "template"
|
||||
},
|
||||
"neptune": {
|
||||
"title": "RetroDECK Controller",
|
||||
"mappingId": "RetroDECK_controller_steamdeck_neptune_full.vdf",
|
||||
"profileType": "template"
|
||||
}
|
||||
},
|
||||
"imageProviderAPIs": {
|
||||
"SteamGridDB": {
|
||||
"nsfw": false,
|
||||
"humor": false,
|
||||
"styles": [],
|
||||
"stylesHero": [],
|
||||
"stylesLogo": [],
|
||||
"stylesIcon": [],
|
||||
"imageMotionTypes": [
|
||||
"static"
|
||||
]
|
||||
}
|
||||
},
|
||||
"defaultImage": {
|
||||
"tall": null,
|
||||
"long": null,
|
||||
"hero": null,
|
||||
"logo": null,
|
||||
"icon": null
|
||||
},
|
||||
"localImages": {
|
||||
"tall": null,
|
||||
"long": null,
|
||||
"hero": null,
|
||||
"logo": null,
|
||||
"icon": null
|
||||
},
|
||||
"parserId": "1725539138664815",
|
||||
"version": 15
|
||||
}
|
||||
]
|
30
config/steam-rom-manager/userSettings.json
Normal file
30
config/steam-rom-manager/userSettings.json
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"fuzzyMatcher": {
|
||||
"verbose": false,
|
||||
"filterProviders": true
|
||||
},
|
||||
"environmentVariables": {
|
||||
"steamDirectory": "",
|
||||
"userAccounts": "${steamlogin}",
|
||||
"romsDirectory": "",
|
||||
"retroarchPath": "",
|
||||
"raCoresDirectory": "",
|
||||
"localImagesDirectory": ""
|
||||
},
|
||||
"previewSettings": {
|
||||
"retrieveCurrentSteamImages": true,
|
||||
"deleteDisabledShortcuts": false,
|
||||
"imageZoomPercentage": 30,
|
||||
"preload": false
|
||||
},
|
||||
"enabledProviders": [
|
||||
"SteamGridDB"
|
||||
],
|
||||
"batchDownloadSize": 50,
|
||||
"language": "en-US",
|
||||
"theme": "Deck",
|
||||
"offlineMode": false,
|
||||
"navigationWidth": 0,
|
||||
"clearLogOnTest": false,
|
||||
"version": 6
|
||||
}
|
|
@ -17,82 +17,91 @@
|
|||
# log i "par" rekku.log -> logs an information with message in the specified log file inside the logs folder retrodeck/logs/rekku.log
|
||||
|
||||
log() {
|
||||
if [[ ! $logging_level == "none" ]]; then
|
||||
|
||||
local level="$1"
|
||||
local message="$2"
|
||||
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])"
|
||||
local colorize_terminal
|
||||
local level="$1"
|
||||
local message="$2"
|
||||
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])"
|
||||
local colorize_terminal
|
||||
|
||||
# Use specified logfile or default to retrodeck.log
|
||||
local logfile
|
||||
if [ -n "$3" ]; then
|
||||
logfile="$3"
|
||||
else
|
||||
logfile="$rd_logs_folder/retrodeck.log"
|
||||
# Use specified logfile or default to retrodeck.log
|
||||
local logfile
|
||||
if [ -n "$3" ]; then
|
||||
logfile="$3"
|
||||
else
|
||||
logfile="$rd_logs_folder/retrodeck.log"
|
||||
fi
|
||||
|
||||
# Check if the shell is sh (not bash or zsh) to avoid colorization
|
||||
if [ "${SHELL##*/}" = "sh" ]; then
|
||||
colorize_terminal=false
|
||||
else
|
||||
colorize_terminal=true
|
||||
fi
|
||||
|
||||
case "$level" in
|
||||
d)
|
||||
if [[ $logging_level == "debug" ]]; then
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Debug (green) for terminal
|
||||
colored_message="\e[32m[DEBUG] $message\e[0m"
|
||||
else
|
||||
# Debug (no color for sh) for terminal
|
||||
colored_message="$timestamp [DEBUG] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [DEBUG] $message"
|
||||
fi
|
||||
;;
|
||||
e)
|
||||
if [[ $logging_level == "debug" || $logging_level == "error" ]]; then
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Error (red) for terminal
|
||||
colored_message="\e[31m[ERROR] $message\e[0m"
|
||||
else
|
||||
# Error (no color for sh) for terminal
|
||||
colored_message="$timestamp [ERROR] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [ERROR] $message"
|
||||
fi
|
||||
;;
|
||||
w)
|
||||
if [[ $logging_level == "debug" || $logging_level == "error" || $logging_level == "warn" ]]; then
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Warning (yellow) for terminal
|
||||
colored_message="\e[33m[WARN] $message\e[0m"
|
||||
else
|
||||
# Warning (no color for sh) for terminal
|
||||
colored_message="$timestamp [WARN] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [WARN] $message"
|
||||
fi
|
||||
;;
|
||||
i)
|
||||
if [[ $logging_level == "debug" || $logging_level == "error" || $logging_level == "warn" || $logging_level == "info" ]]; then
|
||||
# Write to log file without colorization for info message
|
||||
log_message="$timestamp [INFO] $message"
|
||||
colored_message=$log_message
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Default (no color for other shells) for terminal
|
||||
colored_message="$timestamp $message"
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp $message"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Display the message in the terminal
|
||||
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" >&2
|
||||
touch "$logfile"
|
||||
fi
|
||||
echo "$log_message" >> "$logfile"
|
||||
fi
|
||||
|
||||
# Check if the shell is sh (not bash or zsh) to avoid colorization
|
||||
if [ "${SHELL##*/}" = "sh" ]; then
|
||||
colorize_terminal=false
|
||||
else
|
||||
colorize_terminal=true
|
||||
fi
|
||||
|
||||
case "$level" in
|
||||
w)
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Warning (yellow) for terminal
|
||||
colored_message="\e[33m[WARN] $message\e[0m"
|
||||
else
|
||||
# Warning (no color for sh) for terminal
|
||||
colored_message="$timestamp [WARN] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [WARN] $message"
|
||||
;;
|
||||
e)
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Error (red) for terminal
|
||||
colored_message="\e[31m[ERROR] $message\e[0m"
|
||||
else
|
||||
# Error (no color for sh) for terminal
|
||||
colored_message="$timestamp [ERROR] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [ERROR] $message"
|
||||
;;
|
||||
i)
|
||||
# Write to log file without colorization for info message
|
||||
log_message="$timestamp [INFO] $message"
|
||||
colored_message=$log_message
|
||||
;;
|
||||
d)
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
# Debug (green) for terminal
|
||||
colored_message="\e[32m[DEBUG] $message\e[0m"
|
||||
else
|
||||
# Debug (no color for sh) for terminal
|
||||
colored_message="$timestamp [DEBUG] $message"
|
||||
fi
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp [DEBUG] $message"
|
||||
;;
|
||||
*)
|
||||
# Default (no color for other shells) for terminal
|
||||
colored_message="$timestamp $message"
|
||||
# Write to log file without colorization
|
||||
log_message="$timestamp $message"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Display the message in the terminal
|
||||
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" >&2
|
||||
touch "$logfile"
|
||||
fi
|
||||
echo "$log_message" >> "$logfile"
|
||||
|
||||
}
|
||||
|
|
|
@ -913,8 +913,25 @@ release_selector() {
|
|||
quit_retrodeck() {
|
||||
log i "Quitting ES-DE"
|
||||
pkill -f "es-de"
|
||||
|
||||
# if steam sync is on do the magic
|
||||
if [[ $steam_sync == "true" ]]; then
|
||||
(
|
||||
source /app/libexec/steam_sync.sh
|
||||
add_to_steam "$(ls "$rdhome/ES-DE/gamelists/")"
|
||||
) |
|
||||
zenity --progress \
|
||||
--title="Syncing with Steam" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--text="Syncing favorite games with Steam, please wait." \
|
||||
--percentage=25 \
|
||||
--pulsate \
|
||||
--auto-close \
|
||||
--auto-kill
|
||||
fi
|
||||
log i "Shutting down RetroDECK's framework"
|
||||
pkill -f "retrodeck"
|
||||
|
||||
log i "See you next time"
|
||||
}
|
||||
|
||||
|
@ -923,4 +940,4 @@ start_retrodeck() {
|
|||
ponzu
|
||||
log i "Starting RetroDECK v$version"
|
||||
es-de
|
||||
}
|
||||
}
|
||||
|
|
|
@ -437,7 +437,10 @@ post_update() {
|
|||
prepare_component "reset" "es-de"
|
||||
prepare_component "reset" "portmaster"
|
||||
prepare_component "reset" "ruffle"
|
||||
|
||||
log d "Steam Rom Manager was added, we need to prepare it"
|
||||
update_rd_conf
|
||||
prepare_component "reset" "steam-rom-manager"
|
||||
|
||||
# TODO: check this
|
||||
# rm /var/config/emulationstation/.emulationstation # remving the old symlink to .emulationstation as it might be not needed anymore
|
||||
|
|
|
@ -81,6 +81,22 @@ prepare_component() {
|
|||
fi
|
||||
fi
|
||||
|
||||
if [[ "$component" =~ ^(steam-rom-manager|all)$ ]]; then
|
||||
component_found="true"
|
||||
log i "-----------------------------"
|
||||
log i "Prepearing Steam ROM Manager"
|
||||
log i "-----------------------------"
|
||||
|
||||
local srm_userdata="/var/config/steam-rom-manager/userData"
|
||||
create_dir -d "/var/config/steam-rom-manager"
|
||||
create_dir -d "$srm_userdata"
|
||||
cp -fv "$config/steam-rom-manager/"*.json $srm_userdata
|
||||
|
||||
log i "Updating steamDirectory and romDirectory lines in $srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.steamDirectory = "'$HOME'/.steam/steam"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
jq '.environmentVariables.romsDirectory = "'$rdhome'/.sync"' "$srm_userdata/userSettings.json" > "$srm_userdata/tmp.json" && mv -f "$srm_userdata/tmp.json" "$srm_userdata/userSettings.json"
|
||||
fi
|
||||
|
||||
if [[ "$component" =~ ^(retroarch|all)$ ]]; then
|
||||
component_found="true"
|
||||
log i "--------------------------------"
|
||||
|
|
|
@ -4,7 +4,18 @@ 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"
|
||||
|
||||
build_preset_list_options "$1"
|
||||
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=()
|
||||
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")
|
||||
system_value=$(get_setting_value "$rd_conf" "$system_name" "retrodeck" "$preset")
|
||||
current_preset_settings=("${current_preset_settings[@]}" "$system_value" "$(make_name_pretty $system_name)" "$system_name")
|
||||
done < <(printf '%s\n' "$section_results")
|
||||
|
||||
choice=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
|
@ -21,7 +32,7 @@ change_preset_dialog() {
|
|||
|
||||
if [[ ! -z $choice || "$rc" == 0 ]]; then
|
||||
(
|
||||
make_preset_changes
|
||||
make_preset_changes "$1" "$choice"
|
||||
) |
|
||||
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" \
|
||||
|
@ -35,6 +46,8 @@ change_preset_dialog() {
|
|||
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
|
||||
# The other arrays built (all_systems, changed_systems etc.) are also used in the make_preset_changes() function, so this needs to be called in the same memory space as that function at least once
|
||||
# USAGE: build_preset_list_options "$preset"
|
||||
|
||||
if [[ -f "$godot_current_preset_settings" ]]; then
|
||||
rm -f "$godot_current_preset_settings" # Godot data transfer temp files
|
||||
|
@ -49,6 +62,7 @@ build_preset_list_options() {
|
|||
current_disabled_systems=()
|
||||
changed_systems=()
|
||||
changed_presets=()
|
||||
all_systems=()
|
||||
local section_results=$(sed -n '/\['"$preset"'\]/, /\[/{ /\['"$preset"'\]/! { /\[/! p } }' $rd_conf | sed '/^$/d')
|
||||
|
||||
while IFS= read -r config_line
|
||||
|
@ -68,7 +82,9 @@ build_preset_list_options() {
|
|||
|
||||
|
||||
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
|
||||
# This function will take a preset name $preset and a CSV list $choice, which contains the names of systems that have been enabled for this preset and enable them in the backend
|
||||
# Any systems which are currently enabled and not in the CSV list $choice will instead be disabled in the backend
|
||||
# USAGE: make_preset_changes $preset $choice
|
||||
|
||||
# Fetch incompatible presets from JSON and create a lookup list
|
||||
incompatible_presets=$(jq -r '
|
||||
|
@ -79,6 +95,11 @@ make_preset_changes() {
|
|||
] | join("\n")
|
||||
' $features)
|
||||
|
||||
preset="$1"
|
||||
choice="$2"
|
||||
|
||||
build_preset_list_options "$preset"
|
||||
|
||||
IFS="," read -ra choices <<< "$choice"
|
||||
for emulator in "${all_systems[@]}"; do
|
||||
if [[ " ${choices[*]} " =~ " ${emulator} " && ! " ${current_enabled_systems[*]} " =~ " ${emulator} " ]]; then
|
||||
|
|
404
functions/steam-sync/steam-sync.py
Normal file
404
functions/steam-sync/steam-sync.py
Normal file
|
@ -0,0 +1,404 @@
|
|||
"""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
|
||||
|
||||
from resetsync import resetfun
|
||||
|
||||
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",
|
||||
"flash": "TODO: I have to catch how it works", #TODO
|
||||
"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_new(games):
|
||||
ignore_game=rdhome+"/.sync/IGNORE.sh"
|
||||
old_games=os.listdir(rdhome+"/.sync/").copy()
|
||||
|
||||
for game in games:
|
||||
try:
|
||||
i=old_games.index(game[0]+".sh")
|
||||
old_games[i]=0
|
||||
except ValueError:
|
||||
print(game[0]+" is a new game!")
|
||||
|
||||
path=rdhome+"/.sync/"+game[0]+".sh"
|
||||
print("Go to path: "+path)
|
||||
|
||||
fl=open(path,"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)
|
||||
os.chmod(path, st.st_mode | 0o0111)
|
||||
|
||||
print("Start removing")
|
||||
print(old_games)
|
||||
for game in old_games:
|
||||
if game:
|
||||
os.remove(rdhome+"/.sync/"+game)
|
||||
|
||||
dir=os.listdir(rdhome+"/.sync/")
|
||||
if len(dir)==0:
|
||||
print("No game found, removing all")
|
||||
fl=open(ignore_game,"w")
|
||||
fl.close()
|
||||
os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager remove")
|
||||
os.remove(ignore_game)
|
||||
else:
|
||||
print("Adding the games")
|
||||
os.system("/app/bin/zypak-wrapper /app/srm/steam-rom-manager add")
|
||||
|
||||
def addToSteam(systems):
|
||||
games=[]
|
||||
for system in systems:
|
||||
print("Start parsing system: {}".format(system))
|
||||
|
||||
f=open(rdhome+"/ES-DE/gamelists/"+system+"/gamelist.xml","r")
|
||||
f.readline()
|
||||
parser=ET.XMLParser()
|
||||
parser.feed(b'<root>')
|
||||
parser.feed(f.read())
|
||||
parser.feed(b'</root>')
|
||||
root=parser.close()
|
||||
f.close()
|
||||
|
||||
globalAltEmu=""
|
||||
for subroot in root:
|
||||
if subroot.tag=="alternativeEmulator":
|
||||
for alt in subroot:
|
||||
globalAltEmu=alt.text
|
||||
else:
|
||||
for game in subroot:
|
||||
path=""
|
||||
name=""
|
||||
favorite=""
|
||||
altemulator=globalAltEmu
|
||||
for tag in game:
|
||||
if tag.tag=="path":
|
||||
path=tag.text
|
||||
elif tag.tag=="name":
|
||||
name=tag.text
|
||||
elif tag.tag=="favorite":
|
||||
favorite=tag.text
|
||||
elif tag.tag=="altemulator":
|
||||
altemulator=tag.text
|
||||
|
||||
if favorite=="true" and altemulator=="":
|
||||
print("Find favorite game: {}".format(name))
|
||||
games.append([name,command_list_default[system]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
elif favorite=="true":
|
||||
print("Find favorite game with alternative emulator: {}, {}".format(name,altemulator))
|
||||
if ("neogeocd" in system) and altemulator=="FinalBurn Neo":
|
||||
games.append([name,alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
print(alt_command_list[altemulator+" neogeocd"]+" '"+roms_folder+"/"+system+path[1:]+"'")
|
||||
elif system=="pico8" and altemulator=="PICO-8 Splore (Standalone)":
|
||||
games.append([name,alt_command_list[altemulator]])
|
||||
print(alt_command_list[altemulator])
|
||||
else:
|
||||
games.append([name,alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'"])
|
||||
print(alt_command_list[altemulator]+" '"+roms_folder+"/"+system+path[1:]+"'")
|
||||
create_shortcut_new_new(games)
|
||||
|
||||
def start_config():
|
||||
global rdhome
|
||||
global roms_folder
|
||||
global command_list_default
|
||||
global alt_command_list
|
||||
|
||||
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")
|
||||
|
||||
srm_path=os.path.expanduser("~/.var/app/net.retrodeck.retrodeck/config/steam-rom-manager/userData/userConfigurations.json")
|
||||
if not os.path.isfile(srm_path):
|
||||
print("Steam ROM Manager configuration not initialized! Initializing now.")
|
||||
resetfun(rdhome)
|
||||
|
||||
if not os.path.exists(rdhome+"/.sync/"):
|
||||
os.makedirs(rdhome+"/.sync/")
|
||||
|
||||
if __name__=="__main__":
|
||||
start_config()
|
||||
addToSteam(os.listdir(rdhome+"/ES-DE/gamelists/"))
|
||||
print("Finished!")
|
148
functions/steam_sync.sh
Normal file
148
functions/steam_sync.sh
Normal file
|
@ -0,0 +1,148 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
# Add games to Steam function
|
||||
add_to_steam() {
|
||||
log "i" "Starting Steam Sync"
|
||||
|
||||
steamsync_folder="$rdhome/.sync"
|
||||
steamsync_folder_tmp="$rdhome/.sync-tmp"
|
||||
create_dir $steamsync_folder
|
||||
mv $steamsync_folder $steamsync_folder_tmp
|
||||
create_dir $steamsync_folder
|
||||
|
||||
local srm_path="/var/config/steam-rom-manager/userData/userConfigurations.json"
|
||||
if [ ! -f "$srm_path" ]; then
|
||||
log "e" "Steam ROM Manager configuration not initialized! Initializing now."
|
||||
prepare_component "reset" "steam-rom-manager"
|
||||
fi
|
||||
|
||||
# Build the systems array from space-separated systems
|
||||
local systems_string=$(jq -r '.system | keys[]' "$features" | paste -sd' ')
|
||||
IFS=' ' read -r -a systems <<< "$systems_string" # TODO: do we need this line?
|
||||
|
||||
local games=()
|
||||
|
||||
for system in "${systems[@]}"; do
|
||||
|
||||
local gamelist="$rdhome/ES-DE/gamelists/$system/gamelist.xml"
|
||||
|
||||
if [ -f "$gamelist" ]; then
|
||||
|
||||
# Extract all <game> elements that are marked as favorite="true"
|
||||
game_blocks=$(xmllint --recover --xpath '//game[favorite="true"]' "$gamelist" 2>/dev/null)
|
||||
log d "Extracted favorite game blocks:\n\n$game_blocks\n\n"
|
||||
|
||||
# Split the game_blocks into an array, where each element is a full <game> block
|
||||
IFS=$'\n' read -r -d '' -a game_array <<< "$(echo "$game_blocks" | xmllint --recover --format - | sed -n '/<game>/,/<\/game>/p' | tr '\n' ' ')"
|
||||
|
||||
# Iterate over each full <game> block in the array
|
||||
for game_block in "${game_array[@]}"; do
|
||||
log "d" "Processing game block:\n$game_block"
|
||||
|
||||
# Extract the game's name and path from the full game block
|
||||
local name=$(echo "$game_block" | xmllint --xpath 'string(//game/name)' - 2>/dev/null)
|
||||
local path=$(echo "$game_block" | xmllint --xpath 'string(//game/path)' - 2>/dev/null | sed 's|^\./||') # removing the ./
|
||||
|
||||
log "d" "Game name: $name"
|
||||
log "d" "Game path: $path"
|
||||
|
||||
# Ensure the extracted name and path are valid
|
||||
if [ -n "$name" ] && [ -n "$path" ]; then
|
||||
# Check for an alternative emulator if it exists
|
||||
# local emulator=$(echo "$game_block" | xmllint --xpath 'string(//game/altemulator)' - 2>/dev/null)
|
||||
# if [ -z "$emulator" ]; then
|
||||
# games+=("$name ${command_list_default[$system]} '$roms_folder/$system/$path'")
|
||||
# else
|
||||
# games+=("$name ${alt_command_list[$emulator]} '$roms_folder/$system/$path'")
|
||||
# fi
|
||||
log "d" "Steam Sync: found favorite game: $name"
|
||||
else
|
||||
log "w" "Steam Sync: failed to find valid name or path for favorite game"
|
||||
fi
|
||||
|
||||
# Sanitize the game name for the filename: replace special characters with underscores
|
||||
local sanitized_name=$(echo "$name" | sed -e 's/^A-Za-z0-9._-/ /g')
|
||||
local sanitized_name=$(echo "$sanitized_name" | sed -e 's/:/ -/g')
|
||||
local sanitized_name=$(echo "$sanitized_name" | sed -e 's/&/and/g')
|
||||
local sanitized_name=$(echo "$sanitized_name" | sed -e 's%/%and%g')
|
||||
local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / - /g')
|
||||
local sanitized_name=$(echo "$sanitized_name" | sed -e 's/ / /g')
|
||||
log d "File Path: $path"
|
||||
log d "Game Name: $name"
|
||||
|
||||
# If the filename is too long, shorten it
|
||||
if [ ${#sanitized_name} -gt 100 ]; then
|
||||
sanitized_name=$(echo "$sanitized_name" | cut -c 1-100)
|
||||
fi
|
||||
|
||||
log d "Sanitized Name: $sanitized_name"
|
||||
|
||||
local launcher="$steamsync_folder/${sanitized_name}.sh"
|
||||
local launcher_tmp="$steamsync_folder_tmp/${sanitized_name}.sh"
|
||||
|
||||
if [ ! -e "$launcher_tmp" ]; then
|
||||
|
||||
log d "Creating desktop file: $launcher"
|
||||
|
||||
# if [[ -v command_list_default[$system] ]]; then
|
||||
# command="${command_list_default[$system]}"
|
||||
# else
|
||||
# log e "$system is not included in the commands array."
|
||||
# continue
|
||||
# fi
|
||||
|
||||
# Populate the .sync script with the correct command
|
||||
# TODO: if there is any emulator defined in the xml we use that, else... how we can know which is the default one?
|
||||
# TODO: if steam is flatpak the command wrapping will change in .desktop
|
||||
local command="flatpak run net.retrodeck.retrodeck start '$roms_folder/$system/$path'"
|
||||
# Create the launcher file using a heredoc - if you enable .desktp this remember to edit .desktop in SRM userConfigurations.json and the above launcher variable (and vice versa)
|
||||
# cat <<EOF > "$launcher"
|
||||
# [Desktop Entry]
|
||||
# Version=1.0
|
||||
# Name=$name
|
||||
# Comment=$name via RetroDECK
|
||||
# Exec=$command
|
||||
# Icon=net.retrodeck.retrodeck
|
||||
# Terminal=false
|
||||
# Type=Application
|
||||
# Categories=Game;Emulator;
|
||||
# EOF
|
||||
cat <<EOF > "$launcher"
|
||||
#!/bin/bash
|
||||
if [ test "\$(whereis flatpak)" = "flatpak:" ]; then
|
||||
flatpak-spawn --host $command
|
||||
else
|
||||
$command
|
||||
fi
|
||||
EOF
|
||||
chmod +x "$launcher"
|
||||
else
|
||||
log d "$launcher desktop file already exists"
|
||||
mv "$launcher_tmp" "$launcher"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
rm -r $steamsync_folder_tmp
|
||||
|
||||
if [ -z "$( ls -A $steamsync_folder )" ]; then
|
||||
log d "No games found, cleaning shortcut"
|
||||
remove_from_steam
|
||||
else
|
||||
log d "Updating game list"
|
||||
steam-rom-manager add
|
||||
fi
|
||||
|
||||
log i "Steam Sync: completed"
|
||||
}
|
||||
|
||||
remove_from_steam() {
|
||||
log d "Creating fake game"
|
||||
cat "" > "$steamsync_folder/CUL0.sh"
|
||||
log d "Cleaning the shortcut"
|
||||
steam-rom-manager remove
|
||||
log d "Removing fake game"
|
||||
rm "$steamsync_folder/CUL0.sh"
|
||||
}
|
|
@ -72,18 +72,26 @@
|
|||
<description>
|
||||
<p>Changes:</p>
|
||||
<ul>
|
||||
<li>WELCOME TO cooker-0.9.0b!</li>
|
||||
<li>RetroDECK is on a diet: we saved around 600mb</li>
|
||||
<li>RetroDECK is on a diet: we saved around 600mb on the final build</li>
|
||||
<li>Updated all the outdated emulators</li>
|
||||
<li>Duckstation due to licensing changes is frozen at the latest possible build becoming de facto: Legacy</li>
|
||||
<li>Duckstation configured to use OpenGL as Vulkan seems to be broken in some cases</li>
|
||||
<li>New Flash system via the new emulator: Ruffle</li>
|
||||
<li>PortMaster is now included in RetroDECK!</li>
|
||||
<li>Steam Sync is now a thing: favorite your games and enable the Steam Sync in the Configurator to find them as a Steam standalone games thank to Steam Rom Manager acting like an engine</li>
|
||||
<li>New Configurator completely written in GODOT, now with controller support and many more features for you to discover</li>
|
||||
<li>New run game engine added to run games via cli, just run `flatpak run net.retrodeck.retrodeck start retrodeck/roms/system/game.ext`, `--help` for more info</li>
|
||||
</ul>
|
||||
<p>Developers, developers, developers:</p>
|
||||
<ul>
|
||||
<li>Manifest was completely redone, more on that on the MONTH blog post</li>
|
||||
<li>RetroDECK now is migrated to an organization on GitHub, as before, please check the MONTH blog post</li>
|
||||
<li>Manifest was completely redone, more on that on the October blog post</li>
|
||||
<li>RetroDECK now is migrated to an organization on GitHub, as before, please check the October blog post</li>
|
||||
<li>pre_build_automation script weas reworked and additional functions are added</li>
|
||||
<li>Contributing is now easier and the manifest build time is down to about 40m (was 3h30)</li>
|
||||
<li>Contributing is now easier and the manifest build time is down to about 1h (was 3h30)</li>
|
||||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
<li>Ryujinx temporary removed until we figure out the situation</li>
|
||||
<li>Please check the know issues in the Wiki under General Information.</li>
|
||||
</ul>
|
||||
</description>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Name=RetroDECK
|
||||
GenericName=Emulation bundle for Steam Deck
|
||||
GenericName=Universal Emulator Platform
|
||||
Type=Application
|
||||
Comment=All you need for emulation on Steam Deck
|
||||
Comment=All-in-one emulation solution for Steam Deck and Linux desktops, making emulation easy and accessible
|
||||
Icon=net.retrodeck.retrodeck
|
||||
Exec=
|
||||
Terminal=false
|
||||
StartupNotify=false
|
||||
Keywords=multi;engine;emulator;standalone;steam;deck
|
||||
Keywords=multi;engine;emulator;standalone;steam;deck;retro;games;roms;console;classic;gamepad;arcade
|
||||
Categories=Game;Emulator;
|
|
@ -2,6 +2,8 @@ app-id: net.retrodeck.retrodeck
|
|||
runtime: org.kde.Platform
|
||||
runtime-version: "6.7"
|
||||
sdk: org.kde.Sdk
|
||||
base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager
|
||||
base-version: "22.08"
|
||||
command: retrodeck.sh
|
||||
|
||||
finish-args:
|
||||
|
@ -27,7 +29,7 @@ finish-args:
|
|||
- --env=SDL_VIDEO_WAYLAND_WMCLASS=net.retrodeck.retrodeck
|
||||
# XEMU - Fixes issues with openSUSE systems, QEMU_AUDIO_DRV is defined as "pa" causing xemu to not launch
|
||||
- --unset-env=QEMU_AUDIO_DRV
|
||||
# BoilR
|
||||
# Steam ROM Manager
|
||||
- --filesystem=xdg-data/Steam:rw #Steam (flatpak)
|
||||
- --filesystem=~/.steam:rw # Steam (Non-flatpak)
|
||||
- --filesystem=~/.var/app/com.valvesoftware.Steam:rw # Steam (Flatpak)
|
||||
|
@ -46,6 +48,7 @@ cleanup:
|
|||
- /bin/zstd*
|
||||
- /lib/pkg-config
|
||||
- /share/doc
|
||||
- /share/gtk-doc # Steam ROM Manager
|
||||
- /share/man
|
||||
- /src
|
||||
- '*.a'
|
||||
|
@ -143,6 +146,48 @@ modules:
|
|||
- type: file
|
||||
url: https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
|
||||
sha256: af986793a515d500ab2d35f8d2aecd656e764504b789b66d7e1a0b727a124c44
|
||||
|
||||
# Steam ROM Manager - START
|
||||
# https://github.com/flathub/com.steamgriddb.steam-rom-manager
|
||||
|
||||
- name: zypak
|
||||
sources:
|
||||
- type: git
|
||||
url: https://github.com/refi64/zypak
|
||||
tag: v2022.03
|
||||
commit: 8424c6bcf909ca2031ebc6537d324bb64772266e
|
||||
|
||||
- name: steam-rom-manager
|
||||
buildsystem: simple
|
||||
env:
|
||||
IN_FLATPAK: 1
|
||||
build-commands:
|
||||
- install -D run.sh ${FLATPAK_DEST}/bin/steam-rom-manager
|
||||
- bsdtar -xf srm.deb data.tar.xz
|
||||
- tar xf data.tar.xz
|
||||
- mv "opt/Steam ROM Manager" "${FLATPAK_DEST}/srm"
|
||||
- rm -rf "usr/share/icons/hicolor/1024x1024"
|
||||
- cd usr; find share/icons/hicolor -type f -exec install -Dm644 "{}"
|
||||
"${FLATPAK_DEST}/{}" \;
|
||||
- rm -r srm.deb data.tar.xz usr opt
|
||||
sources:
|
||||
- type: script
|
||||
dest-filename: run.sh
|
||||
commands:
|
||||
- /app/bin/zypak-wrapper.sh /app/srm/steam-rom-manager "${@}"
|
||||
- type: file
|
||||
dest-filename: srm.deb
|
||||
url: https://github.com/SteamGridDB/steam-rom-manager/releases/download/v2.5.29/steam-rom-manager_2.5.29_amd64.deb
|
||||
sha256: a85369ad8b758551b74755ddb712c6bd72311693971065c9bcec1dcdec53f54a
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/SteamGridDB/steam-rom-manager/releases/latest
|
||||
url-query: >-
|
||||
.assets[] | select(.name=="steam-rom-manager_" + $version +
|
||||
"_amd64.deb") | .browser_download_url
|
||||
version-query: .tag_name | sub("^v"; "")
|
||||
|
||||
# Steam ROM Manager - END
|
||||
|
||||
- name: yq
|
||||
buildsystem: simple
|
||||
|
@ -193,8 +238,9 @@ modules:
|
|||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z
|
||||
sha256: RASHAPLACEHOLDER
|
||||
url: https://buildbot.libretro.com/stable/1.19.1/linux/x86_64//RetroArch.7z
|
||||
#sha256: RASHAPLACEHOLDER
|
||||
sha256: f98e954e99aef7b4b1a3334d710856b997c3f97c5451d33af9e5c88bf63213f8
|
||||
|
||||
# Not part of the offical RetroArch AppImage
|
||||
|
||||
|
@ -226,6 +272,16 @@ modules:
|
|||
url: https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z
|
||||
sha256: RANIGHTLYCORESPLACEHOLDER
|
||||
|
||||
# Citra is removed from the LibretroCores but is still available in Libretro repo
|
||||
- name: citra-libretro-core
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- cp citra_libretro.so ${FLATPAK_DEST}/share/libretro/cores/
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://buildbot.libretro.com/nightly/linux/x86_64/latest/citra_libretro.so.zip
|
||||
sha256: RACITRAPLACEHOLDER
|
||||
|
||||
- name: retroarch-cores
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
|
@ -233,8 +289,8 @@ modules:
|
|||
- cp -rf ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* ${FLATPAK_DEST}/share/libretro/cores/
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://buildbot.libretro.com/stable/1.17.0/linux/x86_64/RetroArch_cores.7z
|
||||
sha256: 1c1d61f86b196e9f89c1a93d0756fba95b60ef3ba57a7cd1d1e86dfd419c766b
|
||||
url: https://buildbot.libretro.com/stable/1.19.1/linux/x86_64/RetroArch_cores.7z
|
||||
sha256: fe75e7e796e29933ab31e4a58f072a1a47ea155b477988a48f33b0f4addc9d49
|
||||
|
||||
- name: retroarch-sameduck-core
|
||||
buildsystem: simple
|
||||
|
@ -309,8 +365,8 @@ modules:
|
|||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/PCSX2/pcsx2/releases/download/v2.1.55/pcsx2-v2.1.55-linux-appimage-x64-Qt.AppImage
|
||||
sha256: d08ae2fdfc1bc3a4bd264b62ceda02f1e2de87c704ee1f464e5ce52073998e33
|
||||
url: https://github.com/PCSX2/pcsx2/releases/download/v2.1.231/pcsx2-v2.1.231-linux-appimage-x64-Qt.AppImage
|
||||
sha256: 227c8f5a38bd0ae9c565b9350868b4f4bd27ae00cde0a598738c2bdd8ca97e88
|
||||
|
||||
# Dolphin
|
||||
# why from source: AppImage not provided, only Flatpak
|
||||
|
@ -353,26 +409,39 @@ modules:
|
|||
# RPCS3
|
||||
# https://rpcs3.net/download
|
||||
|
||||
- name: rpcs3
|
||||
# - name: rpcs3
|
||||
# buildsystem: simple
|
||||
# build-commands:
|
||||
# - chmod +x *.AppImage
|
||||
# - ./*.AppImage --appimage-extract
|
||||
# - mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
# - mkdir -p ${FLATPAK_DEST}/lib/ffmpeg # Needed for a ffmpeg bufgix
|
||||
# - mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
# - cp -r "squashfs-root/usr/bin/"* "${FLATPAK_DEST}/bin/"
|
||||
# - cp -r "squashfs-root/usr/share/"* "${FLATPAK_DEST}/share/"
|
||||
# #TODO: - cp -r squashfs-root/usr/optional* # maybe already included in flatpak runtime
|
||||
# #TODO: - cp -r squashfs-root/usr/plugins* # maybe already included in qt
|
||||
# #TODO: Do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-qt-hook.sh
|
||||
# sources:
|
||||
# - type: file
|
||||
# url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-cd8954db140855101d94a33c0dd7f4d72bdf5a35/rpcs3-v0.0.33-17066-cd8954db_linux64.AppImage
|
||||
# sha256: 2d258b557c17ebba4bea927be4032cfcbc230c26b8f090b796daa5935faa4a8b
|
||||
|
||||
- name: retrodeck-rpcs3
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- chmod +x *.AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- mkdir -p ${FLATPAK_DEST}/lib/ffmpeg # Needed for a ffmpeg bufgix
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r "squashfs-root/usr/bin/"* "${FLATPAK_DEST}/bin/"
|
||||
- cp -r "squashfs-root/usr/share/"* "${FLATPAK_DEST}/share/"
|
||||
#TODO: - cp -r squashfs-root/usr/optional* # maybe already included in flatpak runtime
|
||||
#TODO: - cp -r squashfs-root/usr/plugins* # maybe already included in qt
|
||||
#TODO: Do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-qt-hook.sh
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- cp -rL "files/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- rm -rf "files/lib"
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
- chmod +x "${FLATPAK_DEST}/bin/"*
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/RPCS3/rpcs3-binaries-linux/releases/download/build-ebcb4034119955991a17210af2a45a672fc9533d/rpcs3-v0.0.32-16685-ebcb4034_linux64.AppImage
|
||||
sha256: 2553d56e01a3e3058fa9ceb4e1d61a07eaf2c5bba9e96b29e8923914d89f6e17
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
sha256: RETRODECKRPCS3LATEST
|
||||
|
||||
# MELONDS
|
||||
# https://github.com/melonDS-emu/melonDS/releases/latest
|
||||
# https://github.com/RetroDECK/net.kuribo64.melonDS
|
||||
|
||||
- name: melonds
|
||||
buildsystem: simple
|
||||
|
@ -389,7 +458,8 @@ modules:
|
|||
sha256: RETRODECKMELONDSLATEST
|
||||
|
||||
# Duckstation
|
||||
# https://github.com/stenzek/duckstation/releases/tag/preview
|
||||
# Do not update: Legacy
|
||||
# https://github.com/RetroDECK/Duckstation
|
||||
|
||||
- name: duckstation
|
||||
buildsystem: simple
|
||||
|
@ -401,8 +471,8 @@ modules:
|
|||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/stenzek/duckstation/releases/download/v0.1-6937/DuckStation-x64.AppImage
|
||||
sha256: 8a16f034cc8b11341ed9ad382226549301736794582bdec46a5e19b3ca981e07
|
||||
url: https://github.com/RetroDECK/Duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||
sha256: 84777a8d0fce9acfc2ffe6a8aea352bd68a8a37f5c793d328dbaa4ff5ada5e6d
|
||||
|
||||
# Cemu
|
||||
# https://github.com/cemu-project/Cemu/releases
|
||||
|
@ -420,8 +490,8 @@ modules:
|
|||
#TODO: do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/cemu-project/Cemu/releases/download/v2.0-88/Cemu-2.0-88-x86_64.AppImage
|
||||
sha256: 1af1ad5322df5fa0e2a97588c7486604daf42deb8c4d07a2b885047d9701fed0
|
||||
url: https://github.com/cemu-project/Cemu/releases/download/v2.2/Cemu-2.2-x86_64.AppImage
|
||||
sha256: 05ad07e3b2fb60f9c19f84c7d65c4e978bc2cf58b4b53d39fca0376227900c27
|
||||
- type: script
|
||||
commands:
|
||||
- |
|
||||
|
@ -488,10 +558,12 @@ modules:
|
|||
url: https://github.com/RetroDECK/org.zdoom.GZDoom/releases/latest/download/RetroDECK-gzdoom-Artifact.tar.gz
|
||||
sha256: RETRODECKGZDOOMLATEST
|
||||
|
||||
# TEMPORARLY DISABLED
|
||||
# Ryujinx Appimage
|
||||
# https://ryujinx.org/download
|
||||
|
||||
# This version was reported as working with symlinks: https://discord.com/channels/951662718102962256/951715885968654418/1264882000658169866
|
||||
<<<<<<< HEAD
|
||||
#- name: Ryujinx-reported-working-version
|
||||
# buildsystem: simple
|
||||
# build-commands:
|
||||
|
@ -503,6 +575,19 @@ modules:
|
|||
# - 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
|
||||
=======
|
||||
# - name: Ryujinx-reported-working-version
|
||||
# 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.1297/ryujinx-1.1.1297-linux_x64.tar.gz
|
||||
# sha256: 28b38754e7d2e92083b313b23278c180ae54ac025edbbd0276ec03baec0cec0f
|
||||
>>>>>>> 8cc13786cbd63482a8481e6739ba86e0416008e6
|
||||
|
||||
# XEMU
|
||||
# https://xemu.app/docs/download/#download-for-linux
|
||||
|
@ -517,8 +602,8 @@ modules:
|
|||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}/"
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/xemu-project/xemu/releases/download/v0.7.129/xemu-v0.7.129-x86_64.AppImage
|
||||
sha256: f680774d96a66bf1195cd133497755d43be5eda5f178457a6df32bc691dd8c74
|
||||
url: https://github.com/xemu-project/xemu/releases/download/v0.7.132/xemu-v0.7.132-x86_64.AppImage
|
||||
sha256: c11821d6d0632da3c51a354e9101f68e5ab2ae0e2512c6aa6c8453aef56cedba
|
||||
|
||||
- name: xemu-dummy-hdd
|
||||
buildsystem: simple
|
||||
|
@ -580,7 +665,6 @@ modules:
|
|||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
- chmod +x "${FLATPAK_DEST}/bin/"*
|
||||
sources:
|
||||
# Testing the new feat/update-3.1.0
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/ES-DE/releases/latest/download/RetroDECK-ES-DE-Artifact.tar.gz
|
||||
sha256: RETRODECKESDELATEST
|
||||
|
@ -597,6 +681,7 @@ modules:
|
|||
|
||||
# RUFFLE - START
|
||||
# https://github.com/ruffle-rs/ruffle/releases
|
||||
|
||||
- name: ruffle
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
|
@ -606,51 +691,65 @@ modules:
|
|||
sources:
|
||||
- type: archive
|
||||
strip-components: 0
|
||||
url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-08-09/ruffle-nightly-2024_08_09-linux-x86_64.tar.gz
|
||||
sha256: d2c4c77d8426da6df8dc8b2a57565c151146464a8eec605d5faa68a297d8cad6
|
||||
url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-10-29/ruffle-nightly-2024_10_29-linux-x86_64.tar.gz
|
||||
sha256: 5ab0fc46b07d022d4b0ff355e88175cd77b8bb1663612f31d160f8001dc472bb
|
||||
|
||||
- name: fetch-missing-libs
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- |
|
||||
# Search for missingl ibraries in our libtmp folder
|
||||
# Search for missing libraries in our libtmp folder
|
||||
missing_libs=$(find "${FLATPAK_DEST}/bin" -type f -exec ldd {} + 2>/dev/null | grep "not found" | awk '{print $1}' | sort | uniq)
|
||||
|
||||
# for some reason these libraries are not recognized as missing so we mantain this list
|
||||
manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2"
|
||||
|
||||
# Manually specified libraries that are not automatically detected
|
||||
manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1 libicuuc.so.73 libLLVM.so.18.1"
|
||||
|
||||
# Combine detected missing libraries and manually specified ones
|
||||
missing_libs="$missing_libs $manually_imported"
|
||||
|
||||
# Origin paths
|
||||
# Source paths
|
||||
src_dir="${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
src_debug_dir="${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
|
||||
# Destionation paths
|
||||
# Destination paths
|
||||
dest_dir="${FLATPAK_DEST}/lib"
|
||||
dest_debug_dir="${FLATPAK_DEST}/retrodeck/lib/debug"
|
||||
|
||||
mkdir -p "$dest_dir" "dest_debug_dir"
|
||||
mkdir -p "$dest_dir" "$dest_debug_dir"
|
||||
|
||||
copy_missing_libs() {
|
||||
local src=$1
|
||||
local dest=$2
|
||||
local src_debug=$2
|
||||
local dest=$3
|
||||
for lib in $missing_libs; do
|
||||
if [[ -f "$src/$lib" ]]; then
|
||||
cp "$src/$lib" "$dest"
|
||||
echo "Copied \"$lib\" to \"$dest\""
|
||||
cp "$src/$lib" "$dest" && echo "Copied \"$lib\" to \"$dest\"" || echo "Error copying \"$lib\""
|
||||
elif [[ -f "$src_debug/$lib.debug" ]]; then
|
||||
cp "$src_debug/$lib.debug" "$dest" && echo "Copied debug version of \"$lib\" to \"$dest\"" || echo "Error copying debug version of \"$lib\""
|
||||
else
|
||||
echo "Library \"$lib\" not found in \"$src\" or \"$src_debug\""
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
copy_missing_libs "$src_dir" "$dest_dir"
|
||||
# Copy libraries from source to destination
|
||||
copy_missing_libs "$src_dir" "$src_debug_dir" "$dest_dir"
|
||||
copy_missing_libs "$src_debug_dir" "$dest_debug_dir"
|
||||
|
||||
# Remove temporary source directory to free up space
|
||||
rm -rf "$src_dir"
|
||||
|
||||
- name: retrodeck
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
|
||||
# This prevents appstream-compose to fail
|
||||
- |
|
||||
if [ -d ${FLATPAK_DEST}/usr ]; then
|
||||
mv -n ${FLATPAK_DEST}/usr/** ${FLATPAK_DEST}/share
|
||||
rm -rf ${FLATPAK_DEST}/usr
|
||||
fi
|
||||
|
||||
# Initializing RO retrodeck config folder
|
||||
- mkdir -p ${FLATPAK_DEST}/retrodeck
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ Arguments:
|
|||
-h, --help \t Print this help
|
||||
-v, --version \t Print RetroDECK version
|
||||
--info-msg \t Print paths and config informations
|
||||
--debug \t Enable debug logging for this launch of RetroDECK (This may miss errors very early in the launch process)
|
||||
--configurator \t Starts the RetroDECK Configurator
|
||||
--compress-one <file> \t Compresses target file to a compatible format
|
||||
--compress-all <format> \t Compresses all supported games into a compatible format.\n\t\t\t\t\t\t Available formats are \"chd\", \"zip\", \"rvz\" and \"all\"
|
||||
|
@ -60,6 +61,10 @@ https://retrodeck.net
|
|||
cat $rd_conf
|
||||
exit
|
||||
;;
|
||||
--debug*)
|
||||
logging_level="debug"
|
||||
shift
|
||||
;;
|
||||
--compress-one*)
|
||||
cli_compress_single_game "$2"
|
||||
exit
|
||||
|
@ -210,4 +215,5 @@ fi
|
|||
|
||||
# Normal Startup
|
||||
start_retrodeck
|
||||
# After everything is closed we run the quit function
|
||||
quit_retrodeck
|
||||
|
|
|
@ -156,6 +156,10 @@ configurator_welcome_dialog() {
|
|||
configurator_about_retrodeck_dialog
|
||||
;;
|
||||
|
||||
"Sync with Steam" )
|
||||
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!"
|
||||
|
@ -1152,12 +1156,13 @@ configurator_reset_dialog() {
|
|||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--text="Which component do you want to reset to default settings?" \
|
||||
--column="Component" --column="Action" \
|
||||
"Steam ROM Manager" "Reset SRM 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
|
||||
|
||||
"ES-DE" ) # TODO: GyroDSU
|
||||
"Steam ROM Manager" | "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"
|
||||
|
@ -1250,6 +1255,48 @@ 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 ROM Manager.\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."
|
||||
configurator_welcome_dialog
|
||||
}
|
||||
|
||||
disable_steam_sync() {
|
||||
set_setting_value $rd_conf "steam_sync" "false" retrodeck "options"
|
||||
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=()
|
||||
|
|
|
@ -118,6 +118,8 @@ quit2={
|
|||
[internationalization]
|
||||
|
||||
locale/translation_remaps={}
|
||||
locale/translations=PackedStringArray("res://translations/en_US.po")
|
||||
locale/translations_pot_files=PackedStringArray("res://main.tscn", "res://scripts/TabContainer.gd")
|
||||
|
||||
[rendering]
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
class_name ClassFunctions
|
||||
|
||||
extends Control
|
||||
|
||||
# Test comment
|
||||
|
||||
@onready var main_scene = get_tree().root.get_node("Control")
|
||||
var log_result: Dictionary
|
||||
var log_parameters: Array
|
||||
const globals_sh_file_path: String = "/app/libexec/global.sh"
|
||||
|
@ -97,21 +101,70 @@ func multi_state(section: String, state: String) -> String:
|
|||
else:
|
||||
state = "mixed"
|
||||
return state
|
||||
|
||||
|
||||
func logger(log_type: String, log_text: String) -> void:
|
||||
# Type of log messages:
|
||||
# log d - debug message: maybe in the future we can decide to hide them in main builds or if an option is toggled
|
||||
# log i - normal informational message
|
||||
# log w - waring: something is not expected but it's not a big deal
|
||||
# log e - error: something broke
|
||||
var log_header_text = "gdc_"
|
||||
log_header_text+=log_text
|
||||
log_parameters = ["log", log_type, log_header_text]
|
||||
log_result = await run_thread_command(wrapper_command,log_parameters, false)
|
||||
#log_result = await run_thread_command("find",["$HOME", "-name", "*.xml","-print"], false)
|
||||
#print (log_result["exit_code"])
|
||||
#print (log_result["output"])
|
||||
|
||||
|
||||
func logger_godot(log_type: String, log_text: String) -> void:
|
||||
var log_dir_path: String = "/var/config/retrodeck/logs/"
|
||||
var log_path: String = '/var/config/retrodeck/logs/gd_logs.log'
|
||||
|
||||
var log_dir: DirAccess = DirAccess.open(log_dir_path)
|
||||
var log_file: FileAccess
|
||||
|
||||
var log_header: String = " GD "
|
||||
|
||||
var datetime: Dictionary = Time.get_datetime_dict_from_system()
|
||||
var unixtime: float = Time.get_unix_time_from_system()
|
||||
var msec: int = (unixtime - floor(unixtime)) * 1000 # finally, real ms! Thanks, monkeyx
|
||||
|
||||
var timestamp: String = "[%d-%02d-%02d %02d:%02d:%02d.%03d]" % [
|
||||
datetime.year, datetime.month, datetime.day,
|
||||
datetime.hour, datetime.minute, datetime.second, msec] # real ms!!
|
||||
|
||||
var log_line: String = timestamp + log_header
|
||||
|
||||
match log_type:
|
||||
'w':
|
||||
log_line += "[Warning] "
|
||||
# print("Warning, mate")
|
||||
'e':
|
||||
log_line += "[Error] "
|
||||
# print("Error, mate")
|
||||
'i':
|
||||
log_line += "[Info] "
|
||||
# print("Info, mate")
|
||||
'd':
|
||||
log_line += "[Debug] "
|
||||
# print("Debug, mate")
|
||||
_:
|
||||
log_line += " "
|
||||
print("No idea, mate")
|
||||
log_line += log_text
|
||||
# print(log_line)
|
||||
|
||||
if not log_dir:
|
||||
log_dir = DirAccess.open("res://") #open something valid to create an instance
|
||||
print(log_dir.make_dir_recursive(log_dir_path))
|
||||
if log_dir.make_dir_recursive(log_dir_path) != OK:
|
||||
print("Something wrong with log directory")
|
||||
return
|
||||
|
||||
if not FileAccess.open(log_path, FileAccess.READ):
|
||||
log_file = FileAccess.open(log_path, FileAccess.WRITE_READ) # to create a file if not there
|
||||
else:
|
||||
log_file = FileAccess.open(log_path, FileAccess.READ_WRITE) # to not truncate
|
||||
|
||||
if log_file:
|
||||
log_file.seek_end()
|
||||
log_file.store_line(log_line)
|
||||
log_file.close()
|
||||
else:
|
||||
print("Something wrong with log file")
|
||||
|
||||
func array_to_string(arr: Array) -> String:
|
||||
var text: String
|
||||
for line in arr:
|
||||
|
@ -314,13 +367,17 @@ func update_global(button: Button, preset: String, state: bool) -> void:
|
|||
if ask_to_exit_state != "mixed":
|
||||
ask_to_exit_state = str(state)
|
||||
result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state)))
|
||||
change_global(result, button, ask_to_exit_state)
|
||||
await change_global(result, button, ask_to_exit_state)
|
||||
"border_button":
|
||||
if border_state != "mixed":
|
||||
border_state = str(state)
|
||||
result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state)))
|
||||
change_global(result, button, border_state)
|
||||
await change_global(result, button, border_state)
|
||||
if widescreen_state == "true" or widescreen_state == "mixed":
|
||||
var button_tmp = main_scene.get_node("%widescreen_button")
|
||||
#Remove last array item or tries to append again
|
||||
result.clear()
|
||||
result.append("build_preset_config")
|
||||
config_section = data_handler.get_elements_in_section(config_file_path, "widescreen")
|
||||
widescreen_state = "false"
|
||||
result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, "widescreen", widescreen_state))
|
||||
|
@ -329,12 +386,16 @@ func update_global(button: Button, preset: String, state: bool) -> void:
|
|||
if widescreen_state != "mixed":
|
||||
widescreen_state = str(state)
|
||||
result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state)))
|
||||
change_global(result, button, widescreen_state)
|
||||
await change_global(result, button, widescreen_state)
|
||||
if border_state == "true" or border_state == "mixed":
|
||||
var button_tmp = main_scene.get_node("%border_button")
|
||||
#Remove last array item or tries to append again
|
||||
result.clear()
|
||||
result.append("build_preset_config")
|
||||
config_section = data_handler.get_elements_in_section(config_file_path, "borders")
|
||||
border_state = "false"
|
||||
result.append_array(data_handler.change_all_cfg_values(config_file_path, config_section, "borders", border_state))
|
||||
change_global(result, button, border_state)
|
||||
change_global(result, button_tmp, border_state)
|
||||
"quick_rewind_button":
|
||||
if quick_rewind_state != "mixed":
|
||||
quick_rewind_state = str(state)
|
||||
|
|
BIN
tools/configurator/translations/en_US.mo
Normal file
BIN
tools/configurator/translations/en_US.mo
Normal file
Binary file not shown.
515
tools/configurator/translations/en_US.po
Normal file
515
tools/configurator/translations/en_US.po
Normal file
|
@ -0,0 +1,515 @@
|
|||
# LANGUAGE translation for RetroDECKConfigurator for the following files:
|
||||
# res://main.tscn
|
||||
# res://scripts/TabContainer.gd
|
||||
#
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RetroDECKConfigurator\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en_US\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#: main.tscn
|
||||
msgid "GLOBALS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ASK TO EXIT"
|
||||
msgstr "Ask to EXit"
|
||||
|
||||
#: main.tscn
|
||||
msgid "BORDERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BUTTON SWAP\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MODS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "QUICK RESUME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "REWIND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TATE MODE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SHADERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "WIDESCREEN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEMS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETROARCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MAME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RUFFLE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MELONDS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PCSX2"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DUCKSTATION"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PPSSPP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "VITA3K"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RPCS3"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RYUJINX"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DOLPHIN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PRIMEHACK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CEMU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "XEMU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ES-DE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "HELP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LAUNCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "INSTALL FIRMWARE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CHECK CONNECTION"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LOGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroDECK Log"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ES_DE Log"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Retroarch"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BIOS STANDARD"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BIOS EXPERT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BACKUP USER DATA"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CONTROLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_STEAMCONTEMP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_INSTALL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FILETOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_USBTOOL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_COMPRESSGAMES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MOVEFILES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_GENTOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_GRIDINSTALL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FAVSTEAM"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SCAN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SCUMMVMSCAN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MULTIFILE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SETTINGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEM SETTINGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SOUND EFFECTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "AUTO UPDATES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CHOOSE FONT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Modern"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "OpenDyslexic3"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DEFAULT LANGUAGE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET RETRODECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET ALL EMULATORS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ACHIEVEMENTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVEMENTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVMENTS USERNAME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVMENTS PASSWORD"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LOGIN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVEMENTS HARDCORE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "NETPLAY"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAY"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYID"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroDECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYADDRESS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "127.0.0.1"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYCONNECT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "FUTURE FEATURES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MULTIUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CUSTOMUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_OFF"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_STEAMUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SAVESSYNC"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FTPBTN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MUSIC"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_EASTEREGGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ABOUT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ABOUT RETRODECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "WIP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DECORATIONS - Borders, Widescreen"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_WSCREEN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SHADERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MODS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_TATE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_BORDERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_HOTKEYSOUND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_BTNLAYOUT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_QRESUME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_REWIND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CONFIRMEXIT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CHEATS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SAVE OR SELECT ALL?"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEMS - Emulators, Console, Computers"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroARCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroArch"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Dolphin"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CITRA"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PSPSSPP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Duckstation"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DuckStation"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Melon DS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MelonDS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CONFIRM"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BACK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "INFO"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "REKKU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "QUIT"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " GLOBALS "
|
||||
msgstr " Globals "
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " SYSTEMS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " TOOLS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " SETTINGS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " ABOUT "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid "Hey, there's no description"
|
||||
msgstr ""
|
509
tools/configurator/translations/translation_template.pot
Normal file
509
tools/configurator/translations/translation_template.pot
Normal file
|
@ -0,0 +1,509 @@
|
|||
# LANGUAGE translation for RetroDECKConfigurator for the following files:
|
||||
# res://main.tscn
|
||||
# res://scripts/TabContainer.gd
|
||||
#
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RetroDECKConfigurator\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: main.tscn
|
||||
msgid "GLOBALS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ASK TO EXIT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BORDERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BUTTON SWAP\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MODS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "QUICK RESUME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "REWIND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TATE MODE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SHADERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "WIDESCREEN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEMS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETROARCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MAME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RUFFLE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MELONDS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PCSX2"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DUCKSTATION"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PPSSPP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "VITA3K"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RPCS3"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RYUJINX"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DOLPHIN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PRIMEHACK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CEMU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "XEMU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ES-DE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "HELP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LAUNCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "INSTALL FIRMWARE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CHECK CONNECTION"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LOGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroDECK Log"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ES_DE Log"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Retroarch"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BIOS STANDARD"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BIOS EXPERT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BACKUP USER DATA"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CONTROLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_STEAMCONTEMP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_INSTALL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FILETOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_USBTOOL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_COMPRESSGAMES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MOVEFILES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_GENTOOLS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_GRIDINSTALL"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FAVSTEAM"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SCAN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SCUMMVMSCAN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MULTIFILE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SETTINGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEM SETTINGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SOUND EFFECTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "AUTO UPDATES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CHOOSE FONT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Modern"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "OpenDyslexic3"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DEFAULT LANGUAGE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET RETRODECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RESET ALL EMULATORS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ACHIEVEMENTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVEMENTS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVMENTS USERNAME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVMENTS PASSWORD"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "LOGIN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RETRO ACHIEVEMENTS HARDCORE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "NETPLAY"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAY"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYID"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroDECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYADDRESS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "127.0.0.1"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_NETPLAYCONNECT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "FUTURE FEATURES"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MULTIUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CUSTOMUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_OFF"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_STEAMUSR"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SAVESSYNC"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_FTPBTN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MUSIC"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_EASTEREGGS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ABOUT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "ABOUT RETRODECK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "WIP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DECORATIONS - Borders, Widescreen"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_WSCREEN"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_SHADERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_MODS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_TATE"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_BORDERS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_HOTKEYSOUND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_BTNLAYOUT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_QRESUME"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_REWIND"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CONFIRMEXIT"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "TK_CHEATS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SAVE OR SELECT ALL?"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "SYSTEMS - Emulators, Console, Computers"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroARCH"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "RetroArch"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Dolphin"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CITRA"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "PSPSSPP"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Duckstation"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "DuckStation"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "Melon DS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "MelonDS"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "CONFIRM"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "BACK"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "INFO"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "REKKU"
|
||||
msgstr ""
|
||||
|
||||
#: main.tscn
|
||||
msgid "QUIT"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " GLOBALS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " SYSTEMS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " TOOLS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " SETTINGS "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid " ABOUT "
|
||||
msgstr ""
|
||||
|
||||
#: scripts/TabContainer.gd
|
||||
msgid "Hey, there's no description"
|
||||
msgstr ""
|
Loading…
Reference in a new issue