mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-02-27 16:55:40 +00:00
commit
7db41ab45d
.github/workflows
.gitignoreREADME.mdautomation_tools
config/retrodeck/reference_lists
developer_toolbox
functions
net.retrodeck.retrodeck.appdata.xmlnet.retrodeck.retrodeck.ymlold/disabled-workflows
tools
4
.github/workflows/build_retrodeck.yml
vendored
4
.github/workflows/build_retrodeck.yml
vendored
|
@ -147,7 +147,7 @@ jobs:
|
|||
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"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/manifest_placeholder_replacer.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (Cooker only)"
|
||||
if: github.ref != 'refs/heads/main'
|
||||
|
@ -269,7 +269,7 @@ jobs:
|
|||
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/manifest_placeholder_replacer.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -26,6 +26,8 @@ incconfigs/
|
|||
*.flatpak
|
||||
*.flatpak.sha
|
||||
net.retrodeck.retrodeck.cached.yml
|
||||
placeholders.cache
|
||||
RetroDECK*Artifact.tar.gz
|
||||
|
||||
# Python #
|
||||
##########
|
||||
|
|
|
@ -93,6 +93,9 @@ Read up here on how to help out, there is something for everyone:
|
|||
|
||||
[How to: Contribute to RetroDECK](https://retrodeck.readthedocs.io/en/latest/wiki_community/contibute-rd/)
|
||||
|
||||
## Build RetroDECK locally
|
||||
Please follow [this guide](https://retrodeck.readthedocs.io/en/latest/wiki_development/general/build-locally/).
|
||||
|
||||
## Our repositories:
|
||||
| Name | Description |
|
||||
|-------------------------------------------------------------|-----------------------------------------------------------|
|
||||
|
@ -107,7 +110,6 @@ Read up here on how to help out, there is something for everyone:
|
|||
And many more, for the full list please check our [repositories page on GitHub](https://github.com/orgs/RetroDECK/repositories).
|
||||
|
||||
# The RetroDECK Wiki
|
||||
|
||||
Please check out the [Wiki](https://github.com/RetroDECK/RetroDECK/wiki) for even more information.
|
||||
|
||||
## The FAQ
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
latestcommit^UNIVERSALDYNAMICINPUTCOMMITPLACEHOLDER^https://github.com/Venomalia/UniversalDynamicInput^main
|
||||
outside_file^VERSIONPLACEHOLDER^${GITHUB_WORKSPACE}/buildid
|
||||
branch^THISBRANCH
|
||||
THISREPO^THISREPO
|
||||
# branch^THISBRANCH
|
||||
# THISREPO^THISREPO
|
||||
|
||||
#hash^RASHAPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch.7z
|
||||
#hash^RANIGHTLYSHAPLACEHOLDER^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
|
||||
|
@ -17,14 +17,14 @@ hash^VITA3KSHAPLACEHOLDER^https://github.com/Vita3K/Vita3K/releases/download/con
|
|||
hash^RANIGHTLYCORESPLACEHOLDER^https://buildbot.libretro.com/nightly/linux/x86_64/RetroArch_cores.7z
|
||||
|
||||
hash^RETRODECKESDELATEST^https://github.com/RetroDECK/ES-DE/releases/latest/download/RetroDECK-ES-DE-Artifact.tar.gz
|
||||
hash^RETRODECKPPSSPPLATEST^https://github.com/RetroDECK/org.ppsspp.PPSSPP/releases/latest/download/RetroDECK-RetroDECK-PPSSPP-Artifact.tar.gz
|
||||
hash^RETRODECKPPSSPPLATEST^https://github.com/RetroDECK/org.ppsspp.PPSSPP/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
hash^RETRODECKDOLPHINLATEST^https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
hash^RETRODECKPRIMEHACKLATEST^https://github.com/RetroDECK/io.github.shiiion.primehack/releases/latest/download/RetroDECK-primehack-Artifact.tar.gz
|
||||
hash^RETRODECKMELONDSLATEST^https://github.com/RetroDECK/net.kuribo64.melonDS/releases/latest/download/RetroDECK-melonds-Artifact.tar.gz
|
||||
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-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/org.mamedev.MAME/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
#hash^RETRODECKOLDMAMELATEST^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^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
|
||||
hash^RETRODECKRPCS3LATEST^https://github.com/RetroDECK/net.rpcs3.RPCS3/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
hash^RETRODECKLATESTVITA3KSHA^https://github.com/RetroDECK/Vita3K-bin/releases/latest/download/ubuntu-latest.zip
|
|
@ -1,6 +1,7 @@
|
|||
advance
|
||||
aesthetic
|
||||
alien
|
||||
abduction
|
||||
amateratsu
|
||||
amazing
|
||||
amiga
|
||||
|
@ -41,6 +42,7 @@ cage
|
|||
call
|
||||
capsule
|
||||
captain
|
||||
comeback
|
||||
capumon
|
||||
card
|
||||
cart
|
||||
|
@ -67,6 +69,7 @@ controller
|
|||
crazy
|
||||
critical
|
||||
crt
|
||||
culo
|
||||
curaga
|
||||
curara
|
||||
cure
|
||||
|
@ -115,6 +118,7 @@ future
|
|||
gainax
|
||||
galleon
|
||||
game
|
||||
gamma
|
||||
ganon
|
||||
gantz
|
||||
gear
|
||||
|
@ -163,6 +167,7 @@ junes
|
|||
jurassic
|
||||
jusenkyo
|
||||
kabuto
|
||||
kawaii
|
||||
kame
|
||||
kami
|
||||
kang
|
||||
|
@ -191,6 +196,7 @@ kyoto
|
|||
lagan
|
||||
landlubber
|
||||
level
|
||||
libman
|
||||
link
|
||||
linux
|
||||
lisa
|
||||
|
@ -219,7 +225,9 @@ mayonaka
|
|||
medal
|
||||
mega
|
||||
megatron
|
||||
megazord
|
||||
men
|
||||
mendokusai
|
||||
metabee
|
||||
metal
|
||||
midnight
|
||||
|
@ -314,6 +322,7 @@ ryoga
|
|||
ryuji
|
||||
saint
|
||||
sakura
|
||||
urusai
|
||||
sakurambo
|
||||
sama
|
||||
samurai
|
||||
|
@ -416,3 +425,4 @@ yukiko
|
|||
zelda
|
||||
zero
|
||||
zombie
|
||||
quest
|
168
automation_tools/libman.sh
Normal file
168
automation_tools/libman.sh
Normal file
|
@ -0,0 +1,168 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Be aware that this script deletes the source directory after copying the files. It is intended to be used only by the flatpak builder.
|
||||
|
||||
|
||||
# List of user-defined libraries to exclude
|
||||
|
||||
# General libraries``
|
||||
excluded_libraries=("libselinux.so.1")
|
||||
# Qt libraries
|
||||
excluded_libraries+=("libQt6Core.so.6" "libQt6DBus.so.6" "libQt6Gui.so.6" "libQt6OpenGL.so.6" "libQt6Svg.so.6" "libQt6WaylandClient.so.6" "libQt6WaylandEglClientHwIntegration.so.6" "libQt6Widgets.so.6" "libQt6XcbQpa.so.6")
|
||||
# SDL libraries
|
||||
excluded_libraries+=("libSDL2_net-2.0.so.0.200.0" "libSDL2_mixer-2.0.so.0.600.3" "libSDL2-2.0.so.0" "libSDL2_mixer-2.0.so.0" "libSDL2_image-2.0.so.0" "libSDL2-2.0.so.0.2800.5" "libSDL2_ttf-2.0.so.0" "libSDL2_net-2.0.so.0" "libSDL2_image-2.0.so.0.600.3" "libSDL2_ttf-2.0.so.0.2200.0")
|
||||
|
||||
# Add libraries from /lib/x86_64-linux-gnu/ to the excluded list
|
||||
for lib in /lib/x86_64-linux-gnu/*.so*; do
|
||||
excluded_libraries+=("$(basename "$lib")")
|
||||
done
|
||||
|
||||
# Add libraries from /lib to the excluded list
|
||||
for lib in /lib/*.so*; do
|
||||
excluded_libraries+=("$(basename "$lib")")
|
||||
done
|
||||
|
||||
# Add libraries from /lib to the excluded list
|
||||
for lib in /lib64/*.so*; do
|
||||
excluded_libraries+=("$(basename "$lib")")
|
||||
done
|
||||
|
||||
# Define target directory
|
||||
target_dir="${FLATPAK_DEST}/lib"
|
||||
|
||||
# Define debug directory
|
||||
debug_dir="${target_dir}/debug"
|
||||
|
||||
echo "Worry not, LibMan is here!"
|
||||
|
||||
# Set default destination if FLATPAK_DEST is not set
|
||||
if [ -z "$FLATPAK_DEST" ]; then
|
||||
export FLATPAK_DEST="/app"
|
||||
fi
|
||||
|
||||
# Check if source directory is provided
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <source_directory>"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Ensure the target directory exists
|
||||
if ! mkdir -p "$target_dir"; then
|
||||
echo "Error: Failed to create target directory $target_dir"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Ensure the debug directory exists
|
||||
if ! mkdir -p "$debug_dir"; then
|
||||
echo "Error: Failed to create debug directory $debug_dir"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Function to check if a file is in the excluded libraries list
|
||||
is_excluded() {
|
||||
local file="$1"
|
||||
for excluded in "${excluded_libraries[@]}"; do
|
||||
if [[ "$excluded" == "$file" ]]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# Find and copy files
|
||||
copied_files=()
|
||||
failed_files=()
|
||||
|
||||
# First, copy all regular files
|
||||
for file in $(find "$1" -type f -name "*.so*" ! -type l); do
|
||||
# Check if the file is in the debug folder
|
||||
if [[ "$file" == *"/debug/"* ]]; then
|
||||
dest_file="$debug_dir/$(basename "$file")"
|
||||
else
|
||||
dest_file="$target_dir/$(basename "$file")"
|
||||
fi
|
||||
|
||||
# Skip if the file is in the list of excluded libraries
|
||||
if is_excluded "$(basename "$file")"; then
|
||||
reason="library is in the exclusion list"
|
||||
echo "Skipped $file as it is $reason"
|
||||
failed_files+=("$file, $reason")
|
||||
continue
|
||||
fi
|
||||
|
||||
# Skip if the destination file already exists
|
||||
if [ -e "$dest_file" ]; then
|
||||
echo "Skipped $file as $dest_file already exists"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Attempt to copy the file
|
||||
if install -D "$file" "$dest_file" 2>error_log; then
|
||||
echo "Copied $file to $dest_file"
|
||||
copied_files+=("$file")
|
||||
else
|
||||
error_message=$(<error_log)
|
||||
echo "Warning: Failed to copy $file. Skipping. Error: $error_message"
|
||||
failed_files+=("$file, $error_message")
|
||||
fi
|
||||
done
|
||||
|
||||
# Then, copy all symlinks
|
||||
for file in $(find "$1" -type l -name "*.so*"); do
|
||||
# Check if the file is in the debug folder
|
||||
if [[ "$file" == *"/debug/"* ]]; then
|
||||
dest_file="$debug_dir/$(basename "$file")"
|
||||
else
|
||||
dest_file="$target_dir/$(basename "$file")"
|
||||
fi
|
||||
|
||||
# Get the target of the symlink
|
||||
symlink_target=$(readlink "$file")
|
||||
# Define the destination for the symlink target
|
||||
if [[ "$symlink_target" == *"/debug/"* ]]; then
|
||||
dest_symlink_target="$debug_dir/$(basename "$symlink_target")"
|
||||
else
|
||||
dest_symlink_target="$target_dir/$(basename "$symlink_target")"
|
||||
fi
|
||||
|
||||
# Copy the symlink target if it doesn't already exist
|
||||
if [ ! -e "$dest_symlink_target" ]; then
|
||||
if install -D "$symlink_target" "$dest_symlink_target" 2>error_log; then
|
||||
echo "Copied symlink target $symlink_target to $dest_symlink_target"
|
||||
copied_files+=("$symlink_target")
|
||||
else
|
||||
error_message=$(<error_log)
|
||||
echo "Warning: Failed to copy symlink target $symlink_target. Skipping. Error: $error_message"
|
||||
failed_files+=("$symlink_target, $error_message")
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create the symlink in the target directory
|
||||
if ln -s "$dest_symlink_target" "$dest_file" 2>error_log; then
|
||||
echo "Created symlink $dest_file -> $dest_symlink_target"
|
||||
copied_files+=("$file")
|
||||
else
|
||||
error_message=$(<error_log)
|
||||
echo "Warning: Failed to create symlink $dest_file. Skipping. Error: $error_message"
|
||||
failed_files+=("$file, $error_message")
|
||||
fi
|
||||
done
|
||||
|
||||
# Output the lists of copied and failed files
|
||||
if [ ${#copied_files[@]} -ne 0 ]; then
|
||||
echo "Imported libraries:"
|
||||
for file in "${copied_files[@]}"; do
|
||||
echo "$file"
|
||||
done
|
||||
fi
|
||||
|
||||
# Output failed files only if the list is not empty
|
||||
if [ ${#failed_files[@]} -ne 0 ]; then
|
||||
echo "Failed library files:"
|
||||
for file in "${failed_files[@]}"; do
|
||||
echo "$file"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "LibMan is flying away"
|
|
@ -4,7 +4,7 @@
|
|||
set -e
|
||||
|
||||
# For the file paths to work correctly, call this script with this command from the cloned repo folder root:
|
||||
# sh automation_tools/pre_build_automation.sh
|
||||
# sh automation_tools/manifest_placeholder_replacer.sh
|
||||
# Different actions need different information in the task list file
|
||||
# branch: This changes the placeholder text to the currently-detected GIT branch if an automated build was started from a PR environment.
|
||||
# hash: Finds the SHA256 hash of a file online and updates the placeholder in the manifest.
|
||||
|
@ -40,6 +40,12 @@ set -e
|
|||
# Define paths
|
||||
rd_manifest="${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml"
|
||||
automation_task_list="${GITHUB_WORKSPACE}/automation_tools/automation_task_list.cfg"
|
||||
cache_file="${GITHUB_WORKSPACE}/placeholders.cache"
|
||||
|
||||
# Check if cache file exists
|
||||
if [ -f "$cache_file" ]; then
|
||||
echo "Warning: Cache file $cache_file is being used. If you encounter issues with hashes, consider deleting this file."
|
||||
fi
|
||||
|
||||
# Retrieve current git branch
|
||||
get_current_branch() {
|
||||
|
@ -71,6 +77,31 @@ echo "Task list contents:"
|
|||
cat "$automation_task_list"
|
||||
echo
|
||||
|
||||
# Function to get hash from cache or calculate it
|
||||
get_hash() {
|
||||
local url="$1"
|
||||
local hash
|
||||
|
||||
# Check if cache should be used and if cache file exists
|
||||
# the use_cache variable is initialized by build_retrodeck_locally only so in the pipeline it will never use cache
|
||||
if [ "$use_cache" == "true" ] && [ -f "$cache_file" ]; then
|
||||
# Try to retrieve hash from cache
|
||||
hash=$(grep "^$url " "$cache_file" | cut -d ' ' -f2)
|
||||
fi
|
||||
|
||||
# If hash is not found in cache, calculate it
|
||||
if [ -z "$hash" ]; then
|
||||
hash=$(curl -sL "$url" | sha256sum | cut -d ' ' -f1)
|
||||
# Save the calculated hash to cache if caching is enabled
|
||||
if [ "$use_cache" == "true" ]; then
|
||||
echo "$url $hash" >> "$cache_file"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Return the hash
|
||||
echo "$hash"
|
||||
}
|
||||
|
||||
# Functions to handle different actions
|
||||
handle_branch() {
|
||||
local placeholder="$1"
|
||||
|
@ -82,7 +113,7 @@ handle_hash() {
|
|||
local placeholder="$1"
|
||||
local url="$2"
|
||||
local calculated_url=$(eval echo "$url")
|
||||
local hash=$(curl -sL "$calculated_url" | sha256sum | cut -d ' ' -f1)
|
||||
local hash=$(get_hash "$calculated_url")
|
||||
echo "Replacing placeholder $placeholder with hash $hash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$hash"'^g' "$rd_manifest"
|
||||
}
|
||||
|
@ -118,7 +149,7 @@ handle_latestghrelease() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
local ghreleasehash=$(curl -sL "$ghreleaseurl" | sha256sum | cut -d ' ' -f1)
|
||||
local ghreleasehash=$(get_hash "$ghreleaseurl")
|
||||
|
||||
echo "Replacing placeholder $placeholder with URL $ghreleaseurl and hash $ghreleasehash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$ghreleaseurl"'^g' "$rd_manifest"
|
||||
|
@ -139,7 +170,7 @@ handle_latestghreleasesha() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
local ghreleasehash=$(curl -sL "$ghreleaseurl" | sha256sum | cut -d ' ' -f1)
|
||||
local ghreleasehash=$(get_hash "$ghreleaseurl")
|
||||
|
||||
echo "Replacing placeholder $placeholder with hash $ghreleasehash"
|
||||
/bin/sed -i 's^'"$placeholder"'^'"$ghreleasehash"'^g' "$rd_manifest"
|
||||
|
@ -189,22 +220,20 @@ handle_thisrepo() {
|
|||
}
|
||||
|
||||
# Process the task list
|
||||
if [ "$use_cached" != "y" ]; then
|
||||
while IFS="^" read -r action placeholder url branch || [[ -n "$action" ]]; do
|
||||
if [[ ! "$action" == "#"* ]] && [[ -n "$action" ]]; then
|
||||
case "$action" in
|
||||
"branch" ) handle_branch "$placeholder" ;;
|
||||
"hash" ) handle_hash "$placeholder" "$url" ;;
|
||||
"latestcommit" ) handle_latestcommit "$placeholder" "$url" "$branch" ;;
|
||||
"latestghtag" ) handle_latestghtag "$placeholder" "$url" ;;
|
||||
"latestghrelease" ) handle_latestghrelease "$placeholder" "$url" "$branch" ;;
|
||||
"latestghreleasesha" ) handle_latestghreleasesha "$placeholder" "$url" "$branch" ;;
|
||||
"outside_file" ) handle_outside_file "$placeholder" "$url" ;;
|
||||
"outside_env_var" ) handle_outside_env_var "$placeholder" "$url" ;;
|
||||
"custom_command" ) handle_custom_command "$url" ;;
|
||||
"url" ) handle_url "$placeholder" "$url" ;;
|
||||
"THISREPO" ) handle_thisrepo "$placeholder" ;;
|
||||
esac
|
||||
fi
|
||||
done < "$automation_task_list"
|
||||
fi
|
||||
while IFS="^" read -r action placeholder url branch || [[ -n "$action" ]]; do
|
||||
if [[ ! "$action" == "#"* ]] && [[ -n "$action" ]]; then
|
||||
case "$action" in
|
||||
"branch" ) handle_branch "$placeholder" ;;
|
||||
"hash" ) handle_hash "$placeholder" "$url" ;;
|
||||
"latestcommit" ) handle_latestcommit "$placeholder" "$url" "$branch" ;;
|
||||
"latestghtag" ) handle_latestghtag "$placeholder" "$url" ;;
|
||||
"latestghrelease" ) handle_latestghrelease "$placeholder" "$url" "$branch" ;;
|
||||
"latestghreleasesha" ) handle_latestghreleasesha "$placeholder" "$url" "$branch" ;;
|
||||
"outside_file" ) handle_outside_file "$placeholder" "$url" ;;
|
||||
"outside_env_var" ) handle_outside_env_var "$placeholder" "$url" ;;
|
||||
"custom_command" ) handle_custom_command "$url" ;;
|
||||
"url" ) handle_url "$placeholder" "$url" ;;
|
||||
"THISREPO" ) handle_thisrepo "$placeholder" ;;
|
||||
esac
|
||||
fi
|
||||
done < "$automation_task_list"
|
|
@ -72,7 +72,12 @@
|
|||
"md5": "00dad01abdbf8ea9e79ad2fe11bdb182",
|
||||
"system": "fbneo",
|
||||
"description": "Neo Geo BIOS",
|
||||
"required": "required"
|
||||
"required": "required",
|
||||
"paths": [
|
||||
"roms/neogeo",
|
||||
"roms/fbneo",
|
||||
"roms/arcade"
|
||||
]
|
||||
},
|
||||
"neocdz.zip": {
|
||||
"md5": "c733b4b7bd30fa849874d96c591c8639",
|
||||
|
@ -500,7 +505,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Front Loader BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd_sf.rom": {
|
||||
"md5": "043d76d5f0ef836500700c34faef774d",
|
||||
|
@ -509,7 +514,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Front Loader BIOS (SMKDAN 0.7b DEC 2010)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd_t.rom": {
|
||||
"md5": "de3cf45d227ad44645b22aa83b49f450",
|
||||
|
@ -518,7 +523,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Top Loader BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd_st.rom": {
|
||||
"md5": "f6325a33c6d63ea4b9162a3fa8c32727",
|
||||
|
@ -527,7 +532,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Top Loader BIOS (SMKDAN 0.7b DEC 2010)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd_z.rom": {
|
||||
"md5": "11526d58d4c524daef7d5d677dc6b004",
|
||||
|
@ -536,7 +541,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "CDZ BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd_sz.rom": {
|
||||
"md5": "971ee8a36fb72da57aed01758f0a37f5",
|
||||
|
@ -545,7 +550,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "CDZ BIOS (SMKDAN 0.7b DEC 2010)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"front-sp1.bin": {
|
||||
"md5": "5c2366f25ff92d71788468ca492ebeca",
|
||||
|
@ -554,7 +559,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Front Loader BIOS (MAME)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"top-sp1.bin": {
|
||||
"md5": "122aee210324c72e8a11116e6ef9c0d0",
|
||||
|
@ -563,7 +568,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "Top Loader BIOS (MAME)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"neocd.bin": {
|
||||
"md5": "f39572af7584cb5b3f70ae8cc848aba2",
|
||||
|
@ -572,7 +577,7 @@
|
|||
"neogeocdjp"
|
||||
],
|
||||
"description": "CDZ BIOS (MAME)",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"uni-bioscd.rom": {
|
||||
"md5": "08ca8b2dba6662e8024f9e789711c6fc",
|
||||
|
@ -651,13 +656,13 @@
|
|||
"system": "switch",
|
||||
"description": "A file for Switch emulation in Ryujinx",
|
||||
"required": "required",
|
||||
"path": "switch"
|
||||
"paths": "bios/switch"
|
||||
},
|
||||
"title.keys": {
|
||||
"system": "switch",
|
||||
"description": "A file for Switch emulation in Ryujinx",
|
||||
"required": "required",
|
||||
"path": "switch"
|
||||
"paths": "bios/switch"
|
||||
},
|
||||
"pico8": {
|
||||
"system": "PICO-8",
|
||||
|
@ -678,56 +683,56 @@
|
|||
"md5": "e66fa1dc5820d254611fdcdba0662372",
|
||||
"system": "segacd",
|
||||
"description": "MegaCD EU BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"bios_CD_U.bin": {
|
||||
"md5": "2efd74e3232ff260e371b99f84024f7f",
|
||||
"system": "segacd",
|
||||
"description": "SegaCD US BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"bios_CD_J.bin": {
|
||||
"md5": "278a9397d192149e84e820ac621a8edd",
|
||||
"system": "segacd",
|
||||
"description": "MegaCD JP BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"dc_boot.bin": {
|
||||
"md5": "e10c53c2f8b90bab96ead2d368858623",
|
||||
"system": "dreamcast",
|
||||
"description": "Dreamcast BIOS",
|
||||
"path": "dc",
|
||||
"paths": "bios/dc",
|
||||
"required": "required"
|
||||
},
|
||||
"naomi.zip": {
|
||||
"md5": "0ea6d3650ce4a7608a589e5df21a1f2f",
|
||||
"system": "dreamcast",
|
||||
"description": "Naomi BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"naomi2.zip": {
|
||||
"md5": "9b85e0de6ef359e5006c9b79a5a266b0",
|
||||
"system": "dreamcast",
|
||||
"description": "Naomi BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"naomi_boot.bin": {
|
||||
"md5": "96cb91c4a0bedd86e5a6965cfe6c0148",
|
||||
"system": "dreamcast",
|
||||
"description": "Naomi BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"hod2bios.zip": {
|
||||
"md5": "629bb0552463ba116ccf23d9a468a9f0",
|
||||
"system": "dreamcast",
|
||||
"description": "Naomi The House of the Dead 2 BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"f355dlx.zip": {
|
||||
"md5": "4b5bb177cbd760477598f85531dbe7fd",
|
||||
"system": "dreamcast",
|
||||
"description": "Naomi Ferrari F355 Challenge Deluxe BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"f355bios.zip": {
|
||||
"md5": [
|
||||
|
@ -739,7 +744,7 @@
|
|||
"arcade"
|
||||
],
|
||||
"description": "Naomi Ferrari F355 Challenge Twin/Deluxe BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"airlbios.zip": {
|
||||
"md5": [
|
||||
|
@ -751,7 +756,7 @@
|
|||
"arcade"
|
||||
],
|
||||
"description": "Naomi Airline Pilots Deluxe BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"awbios.zip": {
|
||||
"md5": [
|
||||
|
@ -763,7 +768,7 @@
|
|||
"arcade"
|
||||
],
|
||||
"description": "Naomi Atomiswave BIOS",
|
||||
"path": "dc"
|
||||
"paths": "bios/dc"
|
||||
},
|
||||
"bios.sms": {
|
||||
"md5": "840481177270d5642a14ca71ee72844c",
|
||||
|
@ -790,7 +795,7 @@
|
|||
"saturnjp"
|
||||
],
|
||||
"description": "Saturn JP BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"mpr-17933.bin": {
|
||||
"md5": "3240872c70984b6cbfda1586cab68dbe",
|
||||
|
@ -799,7 +804,7 @@
|
|||
"saturnjp"
|
||||
],
|
||||
"description": "Saturn US BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"mpr-18811-mx.ic1": {
|
||||
"md5": "255113ba943c92a54facd25a10fd780c",
|
||||
|
@ -848,79 +853,79 @@
|
|||
"md5": "c53ca5908936d412331790f4426c6c33",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS from PSP",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph5500.bin": {
|
||||
"md5": "8dd7d5296a650fac7319bce665a6a53c",
|
||||
"system": "psx",
|
||||
"description": "PS1 JP BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph5501.bin": {
|
||||
"md5": "490f666e1afb15b7362b406ed1cea246",
|
||||
"system": "psx",
|
||||
"description": "PS1 US BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph5502.bin": {
|
||||
"md5": "32736f17079d0b2b7024407c39bd3050",
|
||||
"system": "psx",
|
||||
"description": "PS1 EU BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph7001.bin": {
|
||||
"md5": "1e68c231d0896b7eadcad1d7d8e76129",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph7002.bin": {
|
||||
"md5": "b9d9a0286c33dc6b7237bb13cd46fdee",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph7003.bin": {
|
||||
"md5": "490f666e1afb15b7362b406ed1cea246",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph7502.bin": {
|
||||
"md5": "b9d9a0286c33dc6b7237bb13cd46fdee",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"scph9002(7502).bin": {
|
||||
"md5": "b9d9a0286c33dc6b7237bb13cd46fdee",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"ps1_rom.bin": {
|
||||
"md5": "81bbe60ba7a3d1cea1d48c14cbcc647b",
|
||||
"system": "psx",
|
||||
"description": "PS1 BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"ps2-0200a-20040614.bin": {
|
||||
"md5": "d333558cc14561c1fdc334c75d5f37b7",
|
||||
"system": "ps2",
|
||||
"description": "PS2 US BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"ps2-0200e-20040614.bin": {
|
||||
"md5": "dc752f160044f2ed5fc1f4964db2a095",
|
||||
"system": "ps2",
|
||||
"description": "PS2 EU BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"ps2-0200j-20040614.bin": {
|
||||
"md5": "0eee5d1c779aa50e94edd168b4ebf42e",
|
||||
"system": "ps2",
|
||||
"description": "PS2 JP BIOS",
|
||||
"required": "at least one"
|
||||
"required": "at least one for this system"
|
||||
},
|
||||
"128p-0.rom": {
|
||||
"md5": "a249565f03b98d004ee7f019570069cd",
|
||||
|
|
|
@ -1,155 +0,0 @@
|
|||
panafz1.bin^^f47264dd47fe30f73ab3c010015c155b^3DO^Panasonic FZ-1
|
||||
panafz10.bin^^51f2f43ae2f3508a14d9f56597e2d3ce^3DO^Panasonic FZ-10
|
||||
panafz10-norsa.bin^^1477bda80dc33731a65468c1f5bcbee9^3DO^Panasonic FZ-10 [RSA Patch]
|
||||
panafz10e-anvil.bin^^a48e6746bd7edec0f40cff078f0bb19f^3DO^Panasonic FZ-10-E [Anvil]
|
||||
panafz10e-anvil-norsa.bin^^cf11bbb5a16d7af9875cca9de9a15e09^3DO^Panasonic FZ-10-E [Anvil RSA Patch]
|
||||
panafz1j.bin^^a496cfdded3da562759be3561317b605^3DO^Panasonic FZ-1J
|
||||
panafz1j-norsa.bin^^f6c71de7470d16abe4f71b1444883dc8^3DO^Panasonic FZ-1J [RSA Patch]
|
||||
goldstar.bin^^8639fd5e549bd6238cfee79e3e749114^3DO^Goldstar GDO-101M
|
||||
sanyotry.bin^^35fa1a1ebaaeea286dc5cd15487c13ea^3DO^Sanyo IMP-21J TRY
|
||||
3do_arcade_saot.bin^^8970fc987ab89a7f64da9f8a8c4333ff^3DO^Shootout At Old Tucson
|
||||
panafz1-kanji.bin^^b8dc97f778a6245c58e064b0312e8281^3DO^Panasonic FZ-1 Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
|
||||
panafz10ja-anvil-kanji.bin^^428577250f43edc902ea239c50d2240d^3DO^Panasonic FZ-10JA Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
|
||||
panafz1j-kanji.bin^^c23fb5d5e6bb1c240d02cf968972be37^3DO^Panasonic FZ-1J Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
|
||||
neogeo.zip^^00dad01abdbf8ea9e79ad2fe11bdb182^Arcade (FinalBurn Neo)^Neo Geo BIOS (Required for this system)
|
||||
neocdz.zip^^c733b4b7bd30fa849874d96c591c8639^Arcade (FinalBurn Neo)^Neo Geo CDZ BIOS (Required for this system)
|
||||
decocass.zip^^b7e1189b341bf6a8e270017c096d21b0^Arcade (FinalBurn Neo)^DECO Cassette System BIOS (Required for this system)
|
||||
isgsm.zip^^4a56d56e2219c5e2b006b66a4263c01c^Arcade (FinalBurn Neo)^ISG Selection Master Type 2006 System BIOS (Required for this system)
|
||||
midssio.zip^^5904b0de768d1d506e766aa7e18994c1^Arcade (FinalBurn Neo)^Midway SSIO Sound Board Internal ROM (Required for this system)
|
||||
nmk004.zip^^bfacf1a68792d5348f93cf724d2f1dda^Arcade (FinalBurn Neo)^NMK004 Internal ROM (Required for this system)
|
||||
pgm.zip^^87cc944eef4c671aa2629a8ba48a08e0^Arcade (FinalBurn Neo)^PGM System BIOS (Required for this system)
|
||||
skns.zip^^3f956c4e7008804cb47cbde49bd5b908^Arcade (FinalBurn Neo)^Super Kaneko Nova System BIOS (Required for this system)
|
||||
ym2608.zip^^79ae0d2bb1901b7e606b6dc339b79a97^Arcade (FinalBurn Neo)^YM2608 Internal ROM (Required for this system)
|
||||
cchip.zip^^df6f8a3d83c028a5cb9f2f2be60773f3^Arcade (FinalBurn Neo)^C-Chip Internal ROM (Required for this system)
|
||||
bubsys.zip^^f81298afd68a1a24a49a1a2d9f087964^Arcade (FinalBurn Neo)^Bubble System BIOS (Required for this system)
|
||||
namcoc69.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C69 BIOS (Required for this system)
|
||||
namcoc70.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C70 BIOS (Required for this system)
|
||||
namcoc75.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C75 BIOS (Required for this system)
|
||||
coleco.zip^^Unknown^Arcade (FinalBurn Neo)^ColecoVision System BIOS (Required for this system)
|
||||
fdsbios.zip^^Unknown^Arcade (FinalBurn Neo)^FDS System BIOS (Required for this system)
|
||||
msx.zip^^Unknown^Arcade (FinalBurn Neo)^MSX1 System BIOS (Required for this system)
|
||||
ngp.zip^^Unknown^Arcade (FinalBurn Neo)^NeoGeo Pocket BIOS (Required for this system)
|
||||
spectrum.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum BIOS (Required for this system)
|
||||
spec128.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum 128 BIOS (Required for this system)
|
||||
spec1282a.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum 128 +2a BIOS (Required for this system)
|
||||
channelf.zip^^Unknown^Arcade (FinalBurn Neo)^Fairchild Channel F BIOS (Required for this system)
|
||||
5200.rom^^281f20ea4320404ec820fb7ec0693b38^Atari 8-bit computer systems and 5200^5200 BIOS (Required)
|
||||
ATARIXL.ROM^^06daac977823773a3eea3422fd26a703^Atari 8-bit computer systems and 5200^Atari XL/XE OS BIOS (Required for these systems)
|
||||
ATARIBAS.ROM^^0bac0c6a50104045d902df4503a4c30b^Atari 8-bit computer systems and 5200^BASIC interpreter BIOS (Required for these systems)
|
||||
ATARIOSA.ROM^^eb1f32f5d9f382db1bbfb8d7f9cb343a^Atari 8-bit computer systems and 5200^Atari 400/800 PAL BIOS (Required for these systems)
|
||||
ATARIOSB.ROM^^a3e8d617c95d08031fe1b20d541434b2^Atari 8-bit computer systems and 5200^BIOS for Atari 400/800 NTSC (Required for these systems)
|
||||
tos.img^^c1c57ce48e8ee4135885cee9e63a68a2^Atari ST/STE/TT/Falcon^TOS Boot Image (Required)
|
||||
lynxboot.img^^fcd403db69f54290b51035d82f835e7b^Atari Lynx^Lynx Boot Image (Required)
|
||||
o2rom.bin^^562d5ebf9e030a40d6fabfc2f33139fd^Magnavox Odyssey2 / Phillips Videopac+^Odyssey2 BIOS - G7000 model (Required)
|
||||
c52.bin^^f1071cdb0b6b10dde94d3bc8a6146387^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ French BIOS - G7000 model (Required for Videopac games)
|
||||
g7400.bin^^c500ff71236068e0dc0d0603d265ae76^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ European BIOS - G7400 model (Required for Videopac games)
|
||||
jopac.bin^^279008e4a0db2dc5f1c048853b033828^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ French BIOS - G7400 model (Required for Videopac games)
|
||||
exec.bin^^62e761035cb657903761800f4437b8af^Mattel Intellivision^Executive ROM (Required)
|
||||
grom.bin^^0cd5946c6473e42e8e4c2137785e427f^Mattel Intellivision^Graphics ROM (Required)
|
||||
MSX.ROM^^364a1a579fe5cb8dba54519bcfcdac0d^Microsoft MSX^MSX BIOS (Required)
|
||||
MSX2.ROM^^ec3a01c91f24fbddcbcab0ad301bc9ef^Microsoft MSX^MSX2 BIOS (Required)
|
||||
MSX2EXT.ROM^^2183c2aff17cf4297bdb496de78c2e8a^Microsoft MSX^MSX2 ExtROM (Required)
|
||||
MSX2P.ROM^^847cc025ffae665487940ff2639540e5^Microsoft MSX^MSX2+ BIOS (Required)
|
||||
MSX2PEXT.ROM^^7c8243c71d8f143b2531f01afa6a05dc^Microsoft MSX^MSX2+ ExtROM (Required)
|
||||
DISK.ROM^^80dcd1ad1a4cf65d64b7ba10504e8190^Microsoft MSX^DiskROM/BDOS
|
||||
FMPAC.ROM^^6f69cc8b5ed761b03afd78000dfb0e19^Microsoft MSX^FMPAC BIOS
|
||||
MSXDOS2.ROM^^6418d091cd6907bbcf940324339e43bb^Microsoft MSX^MSX-DOS 2
|
||||
PAINTER.ROM^^403cdea1cbd2bb24fae506941f8f655e^Microsoft MSX^Yamaha Painter
|
||||
KANJI.ROM^^febe8782b466d7c3b16de6d104826b34^Microsoft MSX^Kanji Font
|
||||
mcpx_1.0.bin^^d49c52a4102f6df7bcf8d0617ac475ed^Microsoft XBOX^Used by XEMU emulator
|
||||
Complex.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
|
||||
Complex_4627v1.03.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
|
||||
Complex_4627.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
|
||||
syscard3.pce^^38179df8f4ac870017db21ebcbf53114^NEC PC Engine / CD^Super CD-ROM2 System V3.xx (Required)
|
||||
syscard2.pce^^3cdd6614a918616bfc41c862e889dd79^NEC PC Engine / CD^CD-ROM System V2.xx
|
||||
syscard1.pce^^2b7ccb3d86baa18f6402c176f3065082^NEC PC Engine / CD^CD-ROM System V1.xx
|
||||
gexpress.pce^^6d2cb14fc3e1f65ceb135633d1694122^NEC PC Engine / CD^Game Express CD Card
|
||||
font.bmp^np2kai/^7da1e5b7c482d4108d22a5b09631d967^NEC PC-98 (Neko Project II Kai)^Needed to display text (Required)
|
||||
FONT.ROM^np2kai/^2af6179d7de4893ea0b705c00e9a98d6^NEC PC-98 (Neko Project II Kai)^Alt font file (Required if normal font file is missing)
|
||||
bios.rom^np2kai/^e246140dec5124c5e404869a84caefce^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
|
||||
itf.rom^np2kai/^e9fc3890963b12cf15d0a2eea5815b72^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
|
||||
sound.rom^np2kai/^caf90f22197aed6f14c471c21e64658d^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
|
||||
bios9821.rom^np2kai/^Unknown^NEC PC-98 (Neko Project II Kai)^Optional BIOS file
|
||||
d8000.rom^np2kai/^Unknown^NEC PC-98 (Neko Project II Kai)^Optional BIOS file
|
||||
2608_BD.WAV^np2kai/^d94546e70f17fd899be8df3544ab6cbb^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
2608_SD.WAV^np2kai/^d71004351c8bbfdad53b18222c061d49^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
2608_TOP.WAV^np2kai/^593cff6597ab9380d822b8f824fd2c28^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
2608_HH.WAV^np2kai/^08c54a0c1f774a5538a848a6665a34b4^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
2608_TOM.WAV^np2kai/^96a4ead13f364734f79b0c58af2f0e1f^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
2608_RIM.WAV^np2kai/^465ea0768b27da404aec45dfc501404b^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
|
||||
n88.rom^^4f984e04a99d56c4cfe36115415d6eb8^NEC PC-8000 / PC-8800 series (QUASI88)^BIOS File (Required)
|
||||
n88n.rom^^2ff07b8769367321128e03924af668a0^NEC PC-8000 / PC-8800 series (QUASI88)^Required for PC-8000 series emulation. (N BASIC mode)
|
||||
disk.rom^^793f86784e5608352a5d7f03f03e0858^NEC PC-8000 / PC-8800 series (QUASI88)^Required for loading disk images
|
||||
n88knj1.rom^^d81c6d5d7ad1a4bbbd6ae22a01257603^NEC PC-8000 / PC-8800 series (QUASI88)^Required for viewing kanji
|
||||
n88_0.rom^^d675a2ca186c6efcd6277b835de4c7e5^NEC PC-8000 / PC-8800 series (QUASI88)^Required for viewing kanji
|
||||
n88_1.rom^^e844534dfe5744b381444dbe61ef1b66^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
|
||||
n88_2.rom^^6548fa45061274dee1ea8ae1e9e93910^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
|
||||
n88_3.rom^^fc4b76a402ba501e6ba6de4b3e8b4273^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
|
||||
neocd_f.rom^^8834880c33164ccbe6476b559f3e37de^Neo Geo CD^Front Loader BIOS (At least 1 required)
|
||||
neocd_sf.rom^^043d76d5f0ef836500700c34faef774d^Neo Geo CD^Front Loader BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
|
||||
neocd_t.rom^^de3cf45d227ad44645b22aa83b49f450^Neo Geo CD^Top Loader BIOS (At least 1 required)
|
||||
neocd_st.rom^^f6325a33c6d63ea4b9162a3fa8c32727^Neo Geo CD^Top Loader BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
|
||||
neocd_z.rom^^11526d58d4c524daef7d5d677dc6b004^Neo Geo CD^CDZ BIOS (At least 1 required)
|
||||
neocd_sz.rom^^971ee8a36fb72da57aed01758f0a37f5^Neo Geo CD^CDZ BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
|
||||
front-sp1.bin^^5c2366f25ff92d71788468ca492ebeca^Neo Geo CD^Front Loader BIOS (MAME) (At least 1 required)
|
||||
top-sp1.bin^^122aee210324c72e8a11116e6ef9c0d0^Neo Geo CD^Top Loader BIOS (MAME) (At least 1 required)
|
||||
neocd.bin^^f39572af7584cb5b3f70ae8cc848aba2^Neo Geo CD^CDZ BIOS (MAME) (At least 1 required)
|
||||
uni-bioscd.rom^^08ca8b2dba6662e8024f9e789711c6fc^Neo Geo CD^Universe BIOS CD 3.3
|
||||
gb_bios.bin^^32fbbd84168d3482956eb3c5051637f5^Game Boy^Optional BIOS file (used to display the Nintendo logo at boot)
|
||||
gbc_bios.bin^^dbfce9db9deaa2567f6a84fde55f9680^Game Boy Color^Optional BIOS file (used to display the Nintendo logo at boot)
|
||||
gba_bios.bin^^a860e8c0b6d573d191e4ec7db1b1e4f6^Game Boy Advance^Optional BIOS file (used to display the Nintendo logo at boot)
|
||||
aes_keys.txt^citra/sysdata/^Unknown^Nintendo 3DS^Decryption keys used by Citra emulator
|
||||
bios7.bin^^df692a80a5b1bc90728bc3dfc76cd948^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
|
||||
bios9.bin^^a392174eb3e572fed6447e956bde4b25^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
|
||||
firmware.bin^^e45033d9b0fa6b0de071292bba7c9d13^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
|
||||
disksys.rom^^ca30b50f880eb660a320674ed365ef7a^Nintendo NES / Famicom^Family Computer Disk System BIOS - Required for Family Computer Disk System emulation
|
||||
bios.min^^1e4fb124a3a886865acb574f388c803d^Nintendo Pokemon Mini^Pokémon Mini BIOS - Optional
|
||||
prod.keys^switch/keys/^Unknown^Nintendo Switch^A file for Switch emulation in Ryujinx (Required)
|
||||
title.keys^switch/keys/^Unknown^Nintendo Switch^A file for Switch emulation in Ryujinx (Required)
|
||||
pico8^pico-8/^Unknown^PICO-8^The PICO-8 executable (Required)
|
||||
pico8.dat^pico-8/^Unknown^PICO-8^A PICO-8 system file (Required)
|
||||
pico8_dyn^pico-8/^Unknown^PICO-8^A PICO-8 system file (Required)
|
||||
bios_CD_E.bin^^e66fa1dc5820d254611fdcdba0662372^Sega CD^MegaCD EU BIOS (At least 1 required)
|
||||
bios_CD_U.bin^^2efd74e3232ff260e371b99f84024f7f^Sega CD^SegaCD US BIOS (At least 1 required)
|
||||
bios_CD_J.bin^^278a9397d192149e84e820ac621a8edd^Sega CD^MegaCD JP BIOS (At least 1 required)
|
||||
dc_boot.bin^dc/^e10c53c2f8b90bab96ead2d368858623^Sega Dreamcast^Dreamcast BIOS (Required)
|
||||
naomi.zip^dc/^0ea6d3650ce4a7608a589e5df21a1f2f^Sega Dreamcast^Naomi BIOS
|
||||
naomi2.zip^dc/^9b85e0de6ef359e5006c9b79a5a266b0^Sega Dreamcast^Naomi BIOS
|
||||
naomi_boot.bin^dc/^96cb91c4a0bedd86e5a6965cfe6c0148^Sega Dreamcast^Naomi BIOS
|
||||
hod2bios.zip^dc/^629bb0552463ba116ccf23d9a468a9f0^Sega Dreamcast^Naomi The House of the Dead 2 BIOS
|
||||
f355dlx.zip^dc/^4b5bb177cbd760477598f85531dbe7fd^Sega Dreamcast^Naomi Ferrari F355 Challenge Deluxe BIOS
|
||||
f355bios.zip^dc/^882f2c1cf8ec030955c48fe6aa6929ea^Sega Dreamcast^Naomi Ferrari F355 Challenge Twin/Deluxe BIOS
|
||||
airlbios.zip^dc/^09ef4b8dea6cd8db2de1c13d510a6a87^Sega Dreamcast^Naomi Airline Pilots Deluxe BIOS
|
||||
awbios.zip^dc/^b2f122e091da223beb824efafc3d6a36^Sega Dreamcast^Naomi Atomiswave BIOS
|
||||
bios.sms^^840481177270d5642a14ca71ee72844c^Sega Master System / GameGear^Master System BIOS
|
||||
BIOS.col^^2c66f5911e5b42b8ebe113403548eee7^Sega Master System / GameGear^Colecovision BIOS
|
||||
sega_101.bin^^85ec9ca47d8f6807718151cbcca8b964^Sega Saturn^Saturn JP BIOS (At least 1 required)
|
||||
mpr-17933.bin^^3240872c70984b6cbfda1586cab68dbe^Sega Saturn^Saturn US.mdEU BIOS (At least 1 required)
|
||||
mpr-18811-mx.ic1^^255113ba943c92a54facd25a10fd780c^Sega Saturn^The King of Fighters 95 ROM Cartridge (Required for this game)
|
||||
mpr-19367-mx.ic1^^1cd19988d1d72a3e7caa0b73234c96b4^Sega Saturn^Ultraman: Hikari no Kyojin Densetsu ROM Cartridge (Required for this game)
|
||||
iplrom.dat^keropi/^7fd4caabac1d9169e289f0f7bbf71d8e^Sharp X68000^X68000 BIOS (Required)
|
||||
cgrom.dat^keropi/^cb0a5cfcf7247a7eab74bb2716260269^Sharp X68000^Font file (Required)
|
||||
iplrom30.dat^keropi/^f373003710ab4322642f527f567e020a^Sharp X68000^X68000 BIOS 2
|
||||
iplromco.dat^keropi/^cc78d4f4900f622bd6de1aed7f52592f^Sharp X68000^X68000 BIOS 3
|
||||
iplromxv.dat^keropi/^0617321daa182c3f3d6f41fd02fb3275^Sharp X68000^X68000 BIOS 4
|
||||
psxonpsp660.bin^^c53ca5908936d412331790f4426c6c33^Sony PSX^PS1 BIOS from PSP (At least 1 required)
|
||||
scph5500.bin^^8dd7d5296a650fac7319bce665a6a53c^Sony PSX^PS1 JP BIOS (At least 1 required)
|
||||
scph5501.bin^^490f666e1afb15b7362b406ed1cea246^Sony PSX^PS1 US BIOS (At least 1 required)
|
||||
scph5502.bin^^32736f17079d0b2b7024407c39bd3050^Sony PSX^PS1 EU BIOS (At least 1 required)
|
||||
scph7001.bin^^1e68c231d0896b7eadcad1d7d8e76129^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
scph7002.bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
scph7003.bin^^490f666e1afb15b7362b406ed1cea246^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
scph7502.bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
scph9002(7502).bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
ps1_rom.bin^^81bbe60ba7a3d1cea1d48c14cbcc647b^Sony PSX^PS1 BIOS (At least 1 required)
|
||||
ps2-0200a-20040614.bin^^d333558cc14561c1fdc334c75d5f37b7^Sony PS2^PS2 US BIOS (At least 1 required)
|
||||
ps2-0200e-20040614.bin^^dc752f160044f2ed5fc1f4964db2a095^Sony PS2^PS2 EU BIOS (At least 1 required)
|
||||
ps2-0200j-20040614.bin^^0eee5d1c779aa50e94edd168b4ebf42e^Sony PS2^PS2 JP BIOS (At least 1 required)
|
||||
128p-0.rom^fuse/^a249565f03b98d004ee7f019570069cd^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
|
||||
128p-1.rom^fuse/^6e09e5d3c4aef166601669feaaadc01c^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
|
||||
trdos.rom^fuse/^0da70a5d2a0e733398e005b96b7e4ba6^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
|
||||
gluck.rom^fuse/^d5869034604dbfd2c1d54170e874fd0a^ZX Spectrum^Pentagon 512K/1024 ROM (Required)
|
||||
256s-0.rom^fuse/^b9fda5b6a747ff037365b0e2d8c4379a^ZX Spectrum^Scorpion 256K ROM (Required)
|
||||
256s-1.rom^fuse/^643861ad34831b255bf2eb64e8b6ecb8^ZX Spectrum^Scorpion 256K ROM (Required)
|
||||
256s-2.rom^fuse/^d8ad507b1c915a9acfe0d73957082926^ZX Spectrum^Scorpion 256K ROM (Required)
|
||||
256s-3.rom^fuse/^ce0723f9bc02f4948c15d3b3230ae831^ZX Spectrum^Scorpion 256K ROM (Required)
|
|
@ -3,11 +3,30 @@
|
|||
# WARNING: run this script from the project root folder, not from here!!
|
||||
|
||||
# Check if script is running with elevated privileges
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
read -rp "The build might fail without some superuser permissions, please run me with sudo. Continue WITHOUT sudo (not suggested)? [y/N] " continue_without_sudo
|
||||
if [[ "$continue_without_sudo" != "y" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
# if [ "$EUID" -ne 0 ]; then
|
||||
# read -rp "The build might fail without some superuser permissions, please run me with sudo. Continue WITHOUT sudo (not suggested)? [y/N] " continue_without_sudo
|
||||
# if [[ "$continue_without_sudo" != "y" ]]; then
|
||||
# exit 1
|
||||
# fi
|
||||
# fi
|
||||
|
||||
read -rp "Do you want to use the hashes cache? If you're unsure just say no [Y/n] " use_cache_input
|
||||
use_cache_input=${use_cache_input:-Y}
|
||||
if [[ "$use_cache_input" =~ ^[Yy]$ ]]; then
|
||||
export use_cache="true"
|
||||
else
|
||||
export use_cache="false"
|
||||
rm -f "placeholders.cache"
|
||||
fi
|
||||
|
||||
echo "Do you want to clear the build cache?"
|
||||
read -rp "Keeping the build cache can speed up the build process, but it might cause issues and should be cleared occasionally [y/N] " clear_cache_input
|
||||
clear_cache_input=${clear_cache_input:-N}
|
||||
if [[ "$clear_cache_input" =~ ^[Yy]$ ]]; then
|
||||
# User chose to clear the build cache
|
||||
echo "Clearing build cache..."
|
||||
rm -rf "retrodeck-repo" "retrodeck-flatpak-cooker" ".flatpak-builder"
|
||||
|
||||
fi
|
||||
|
||||
git submodule update --init --recursive
|
||||
|
@ -21,22 +40,9 @@ ostree init --mode=archive-z2 --repo=${GITHUB_WORKSPACE}/retrodeck-repo
|
|||
cp net.retrodeck.retrodeck.appdata.xml net.retrodeck.retrodeck.appdata.xml.bak
|
||||
cp net.retrodeck.retrodeck.yml net.retrodeck.retrodeck.yml.bak
|
||||
|
||||
if [[ -f "net.retrodeck.retrodeck.cached.yml" ]]; then
|
||||
read -rp "A cached manifest file with placeholder substitutions already exists. Do you want to use it? [y/N] " use_cached
|
||||
if [[ "${use_cached,,}" == "y" ]]; then
|
||||
mv -f net.retrodeck.retrodeck.cached.yml net.retrodeck.retrodeck.yml
|
||||
else
|
||||
use_cached="n"
|
||||
fi
|
||||
else
|
||||
use_cached="n"
|
||||
fi
|
||||
|
||||
export use_cached
|
||||
|
||||
automation_tools/install_dependencies.sh
|
||||
automation_tools/cooker_build_id.sh
|
||||
automation_tools/pre_build_automation.sh
|
||||
automation_tools/manifest_placeholder_replacer.sh
|
||||
automation_tools/cooker_flatpak_portal_add.sh
|
||||
# THIS SCRIPT IS BROKEN HENCE DISABLED FTM
|
||||
# automation_tools/appdata_management.sh
|
||||
|
|
|
@ -1,34 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
check_bios_files() {
|
||||
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called $bios_checked_list which can be used elsewhere
|
||||
# There is a "basic" and "expert" mode which outputs different levels of data
|
||||
# USAGE: check_bios_files "mode"
|
||||
|
||||
|
||||
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc || [[ -n "$bios_file" ]];
|
||||
do
|
||||
if [[ ! $bios_file == "#"* ]] && [[ ! -z "$bios_file" ]]; then
|
||||
bios_file_found="No"
|
||||
bios_hash_matched="No"
|
||||
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
if [[ $bios_hash == "Unknown" ]]; then
|
||||
bios_hash_matched="Unknown"
|
||||
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
|
||||
bios_hash_matched="Yes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$1" == "basic" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" # Godot data transfer
|
||||
else
|
||||
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
|
||||
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" # Godot data transfer
|
||||
fi
|
||||
fi
|
||||
done < $bios_checklist
|
||||
}
|
||||
|
||||
find_empty_rom_folders() {
|
||||
# This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal
|
||||
|
|
|
@ -36,7 +36,7 @@ rd_conf_backup="/var/config/retrodeck/retrodeck.bak"
|
|||
config="/app/retrodeck/config" # folder with all the default emulator configs
|
||||
rd_defaults="$config/retrodeck/retrodeck.cfg" # A default RetroDECK config file
|
||||
rd_update_patch="/var/config/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
|
||||
bios_checklist="$config/retrodeck/reference_lists/bios_checklist.cfg" # A config file listing BIOS file information that can be verified
|
||||
bios_checklist="$config/retrodeck/reference_lists/bios.json" # A config file listing BIOS file information that can be verified
|
||||
input_validation="$config/retrodeck/reference_lists/input_validation.cfg" # A config file listing valid CLI inputs
|
||||
finit_options_list="$config/retrodeck/reference_lists/finit_options_list.cfg" # A config file listing available optional installs during finit
|
||||
splashscreen_dir="/var/config/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens
|
||||
|
|
|
@ -372,14 +372,12 @@ done
|
|||
|
||||
finit_user_options_dialog() {
|
||||
finit_available_options=()
|
||||
finit_extracted_options=$(jq -r '.finit_default_options | to_entries[] | "\(.value.enabled)^\(.value.name)^\(.value.description)^\(.key)"' "$features")
|
||||
|
||||
while IFS="^" read -r enabled option_name option_desc option_tag || [[ -n "$enabled" ]];
|
||||
do
|
||||
if [[ ! $enabled == "#"* ]] && [[ ! -z "$enabled" ]]; then
|
||||
finit_available_options=("${finit_available_options[@]}" "$enabled" "$option_name" "$option_desc" "$option_tag")
|
||||
fi
|
||||
done < $finit_options_list
|
||||
|
||||
# Read finit_default_options from features.json using jq
|
||||
while IFS="^" read -r enabled option_name option_desc option_tag; do
|
||||
finit_available_options+=("$enabled" "$option_name" "$option_desc" "$option_tag")
|
||||
done <<< "$finit_extracted_options"
|
||||
|
||||
local choices=$(rd_zenity \
|
||||
--list --width=1200 --height=720 \
|
||||
|
|
|
@ -72,8 +72,8 @@
|
|||
<description>
|
||||
<p>New Additions:</p>
|
||||
<ul>
|
||||
<li>New Flash system via the new emulator: Ruffle</li>
|
||||
<li>New RetroArch core: Panda3DS</li>
|
||||
<li>New Flash system via the new standalone emulator: Ruffle</li>
|
||||
<li>New RetroArch experimental core: Panda3DS</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 run game engine added to run games via cli, just run `flatpak run net.retrodeck.retrodeck retrodeck/roms/system/game.ext`, `--help` for more info</li>
|
||||
|
@ -97,6 +97,7 @@
|
|||
<li>RetroDECK now is migrated to an organization on GitHub, as before, please check the October blog post</li>
|
||||
<li>pre_build_automation script was reworked and additional functions are added</li>
|
||||
<li>Contributing is now easier and the manifest build time is down to about 1h (was 3h30)</li>
|
||||
<li>Introduced a new library management system called LibMan to make sure that each compoent is bringing its own libraries while built from the manifest</li>
|
||||
</ul>
|
||||
<p>Known issues:</p>
|
||||
<ul>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
app-id: net.retrodeck.retrodeck
|
||||
runtime: org.kde.Platform
|
||||
runtime-version: "6.7"
|
||||
runtime-version: "6.8"
|
||||
sdk: org.kde.Sdk
|
||||
base: org.electronjs.Electron2.BaseApp # Needed for Steam ROM Manager
|
||||
base-version: "22.08"
|
||||
|
@ -53,7 +53,7 @@ cleanup:
|
|||
- /src
|
||||
- '*.a'
|
||||
- '*.la'
|
||||
- /app/retrodeck/tmplib
|
||||
- /app/bin/libman.sh
|
||||
|
||||
modules:
|
||||
|
||||
|
@ -70,11 +70,12 @@ modules:
|
|||
# [ ] Update the VERSION variable on line containing "VERSION=THISBRANCH"
|
||||
# [ ] Update the appdata.xml with the version number and notes
|
||||
|
||||
- name: version-initialization
|
||||
- name: retrodeck-initialization
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- |
|
||||
|
||||
# VERSION INITIALIZATION
|
||||
# on main please update this with the version variable, eg: VERSION=0.8.0b
|
||||
# on cooker will be VERSION=cooker-0.9.0b for example
|
||||
VERSION=cooker-0.9.0b
|
||||
|
@ -88,10 +89,12 @@ modules:
|
|||
echo $VERSION >> ${FLATPAK_DEST}/retrodeck/version
|
||||
cat ${FLATPAK_DEST}/retrodeck/version
|
||||
echo "Version is $VERSION"
|
||||
|
||||
# LIBMAN INSTALLATION
|
||||
install -Dm755 "automation_tools/libman.sh" "/app/bin/libman.sh"
|
||||
sources:
|
||||
- type: git
|
||||
url: THISREPO
|
||||
branch: THISBRANCH
|
||||
- type: dir
|
||||
path: .
|
||||
|
||||
- name: xmlstarlet
|
||||
config-opts:
|
||||
|
@ -229,21 +232,22 @@ modules:
|
|||
- name: retroarch
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Create required directories
|
||||
- mkdir -p "${FLATPAK_DEST}/share/libretro/"
|
||||
# Step 2: Copy RetroArch configuration files
|
||||
- cp -r ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/* "${FLATPAK_DEST}/share/libretro/"
|
||||
# Step 3: Extract the AppImage
|
||||
- chmod +x ./*.AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
# Step 4: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||
# Step 5: Copy remaining extracted files to the Flatpak destination
|
||||
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://buildbot.libretro.com/stable/1.20.0/linux/x86_64/RetroArch.7z
|
||||
#sha256: RASHAPLACEHOLDER
|
||||
sha256: 809b3e9f02a9849719453d0f189a0edc544ad3235c8ce75a79488e710ba9668a
|
||||
|
||||
# Not part of the offical RetroArch AppImage
|
||||
|
||||
# TODO: outsource me
|
||||
- name: libbz2
|
||||
no-autogen: true
|
||||
|
@ -341,15 +345,19 @@ modules:
|
|||
- name: retrodeck-ppsspp
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 3: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 4: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 5: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/org.ppsspp.PPSSPP/releases/latest/download/RetroDECK-PPSSPP-Artifact.tar.gz
|
||||
url: https://github.com/RetroDECK/org.ppsspp.PPSSPP/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
sha256: RETRODECKPPSSPPLATEST
|
||||
|
||||
# PCSX2
|
||||
|
@ -359,11 +367,14 @@ modules:
|
|||
- name: pcsx2
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Ensure the AppImage is executable
|
||||
- chmod +x *.AppImage
|
||||
# Step 2: Extract the AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
# Step 3: Use libman.sh to handle library files
|
||||
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||
# Step 4: Copy the remaining extracted files to the Flatpak destination
|
||||
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/PCSX2/pcsx2/releases/download/v2.3.53/pcsx2-v2.3.53-linux-appimage-x64-Qt.AppImage
|
||||
|
@ -376,17 +387,19 @@ modules:
|
|||
- name: retrodeck-dolphin
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- "cp -rnL files/lib/debug ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
- rm -rf "files/lib/debug"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 3: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 4: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 5: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/latest/download/RetroDECK-dolphin-Artifact.tar.gz
|
||||
url: https://github.com/RetroDECK/org.DolphinEmu.dolphin-emu/releases/latest/download/RetroDECK-Artifact.tar.gz
|
||||
sha256: RETRODECKDOLPHINLATEST
|
||||
|
||||
# PRIMEHACK
|
||||
|
@ -395,14 +408,17 @@ modules:
|
|||
- name: retrodeck-primehack
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
# Step 2: Remove unnecessary files
|
||||
- rm -rf "files/lib/pkgconfig"
|
||||
- "cp -rnL files/lib/debug ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
- rm -rf "files/lib/debug"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 3: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 4: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 5: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 6: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -415,11 +431,15 @@ modules:
|
|||
- name: retrodeck-rpcs3
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 3: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 4: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 5: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -432,11 +452,15 @@ modules:
|
|||
- name: melonds
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib/"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 3: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 4: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 5: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}/"
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -450,11 +474,13 @@ modules:
|
|||
- name: duckstation
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Ensure the AppImage is executable and extract it
|
||||
- chmod +x *.AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||
# Step 3: Copy remaining extracted files to the Flatpak destination
|
||||
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/RetroDECK/Duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||
|
@ -467,14 +493,17 @@ modules:
|
|||
- name: cemu
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Ensure the AppImage is executable and extract it
|
||||
- chmod +x *.AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- rm -rf "squashfs-root/usr/lib/girepository-1.0" # causes issues, I think we already have this
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
||||
# Step 2: Remove unnecessary files causing potential issues
|
||||
- rm -rf "squashfs-root/usr/lib/girepository-1.0"
|
||||
# Step 3: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||
# Step 4: Copy remaining extracted files to the Flatpak destination
|
||||
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||
# Step 5: Install the wrapper script
|
||||
- install -Dm755 Cemu-wrapper "${FLATPAK_DEST}/bin/"
|
||||
#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.4/Cemu-2.4-x86_64.AppImage
|
||||
|
@ -491,8 +520,7 @@ modules:
|
|||
Cemu "$@"
|
||||
dest-filename: Cemu-wrapper
|
||||
|
||||
# Vita3K - AUTOUPDATED
|
||||
|
||||
# Vita3K - ROLLING RELEASE
|
||||
- name: vita3k
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
|
@ -505,8 +533,8 @@ modules:
|
|||
- ln -s ${FLATPAK_DEST}/share/Vita3K/Vita3K ${FLATPAK_DEST}/bin/Vita3K
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/Vita3K/Vita3K/releases/download/continuous/ubuntu-latest.zip
|
||||
sha256: VITA3KSHAPLACEHOLDER
|
||||
url: https://github.com/RetroDECK/Vita3K-bin/releases/latest/download/ubuntu-latest.zip
|
||||
sha256: RETRODECKLATESTVITA3KSHA
|
||||
- type: file
|
||||
path: res/retrodeck.png
|
||||
|
||||
|
@ -517,12 +545,18 @@ modules:
|
|||
- name: retrodeck-solarus
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
#- cp -r "files/lib/debug/lib/*" "${FLATPAK_DEST}/retrodeck/tmplib/debug/"
|
||||
# Step 2: Remove unnecessary files
|
||||
- rm -rf "files/lib/debug" "files/lib/pkgconfig"
|
||||
# Step 3: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 4: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 5: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 6: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz
|
||||
|
@ -535,12 +569,17 @@ modules:
|
|||
- name: retrodeck-gzdoom
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
# Step 2: Remove unnecessary files
|
||||
- rm -rf "files/lib/cmake" "files/lib/pkgconfig" "files/lib/debug"
|
||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
||||
# Step 3: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 4: removing libraries folder that have been already moved
|
||||
- rm -rf "files/lib"
|
||||
# Step 5: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 6: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -549,15 +588,23 @@ modules:
|
|||
|
||||
# Pancakes
|
||||
|
||||
- name: Pancakes
|
||||
- name: pancakes
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Create the Flatpak destination directory
|
||||
- mkdir -p "${FLATPAK_DEST}"
|
||||
- mv *.so* "${FLATPAK_DEST}/retrodeck/tmplib/"
|
||||
# Step 2: Extract and manage library files
|
||||
- /app/bin/libman.sh "."
|
||||
# Step 3: Move and set up the binary
|
||||
- rm -rf *.dll.config
|
||||
- mv R*x* "${FLATPAK_DEST}/bin/"
|
||||
# This line inserts the command to export the LD_LIBRARY_PATH environment variable at the beginning of the specified file.
|
||||
# It ensures that the /app/bin directory is included in the library search path for the executable files matching the pattern R*x*.sh.
|
||||
- sed -i 's|#!/bin/bash|#!/bin/bash\nexport LD_LIBRARY_PATH=/app/bin:$LD_LIBRARY_PATH|' "${FLATPAK_DEST}/bin/"R*x*.sh
|
||||
- chmod +x "${FLATPAK_DEST}/bin/"R*x*
|
||||
# Step 4: Set up license directory and move license files
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/licenses"
|
||||
- mv LICENSE.txt "${FLATPAK_DEST}/retrodeck/licenses"
|
||||
- mv LICENSE.txt THIRDPARTY.md "${FLATPAK_DEST}/retrodeck/licenses"
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/RetroDECK/Pancakes-bin/releases/download/1.1.0.1403/pancakes-Release-linux_x64.tar.gz
|
||||
|
@ -569,11 +616,13 @@ modules:
|
|||
- name: xemu
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Ensure the AppImage is executable and extract it
|
||||
- chmod +x *.AppImage
|
||||
- ./*.AppImage --appimage-extract
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}/"
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||
# Step 3: Copy remaining extracted files to the Flatpak destination
|
||||
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||
sources:
|
||||
- type: file
|
||||
url: https://github.com/xemu-project/xemu/releases/download/v0.8.5/xemu-v0.8.5-x86_64.AppImage
|
||||
|
@ -594,7 +643,11 @@ modules:
|
|||
- name: retrodeck-mame
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f files/manifest.json
|
||||
# Step 2: Use libman.sh to manage libraries - REMOVED AS MAME DON'T BRING ANY LIBS WITH IT
|
||||
# - /app/bin/libman.sh "files/lib"
|
||||
# Step 3: Copy the managed libraries and all other files to the Flatpak destination
|
||||
- cp -rn files/* ${FLATPAK_DEST}
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -631,12 +684,15 @@ modules:
|
|||
- name: ES-DE
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
# Step 1: Remove any existing manifest.json file
|
||||
- rm -f "files/manifest.json"
|
||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
- cp -rfL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib
|
||||
- cp -rfL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib
|
||||
# Step 2: Use libman.sh to manage libraries
|
||||
- /app/bin/libman.sh "files/lib"
|
||||
# Step 3: Clean up source library folder
|
||||
- rm -rf "files/lib"
|
||||
# Step 4: Ensure binaries are executable
|
||||
- chmod +x "files/bin/"*
|
||||
# Step 5: Copy all remaining files to the Flatpak destination
|
||||
- cp -r files/* "${FLATPAK_DEST}"
|
||||
sources:
|
||||
- type: archive
|
||||
|
@ -668,53 +724,6 @@ modules:
|
|||
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 missing libraries in our libtmp folder
|
||||
missing_libs=$(find /app/bin -type f -exec ldd {} + 2>/dev/null | grep 'not found' | awk '$1 ~ /\.so/ {print $1}' | sort | uniq)
|
||||
echo "$missing_libs"
|
||||
|
||||
# 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"
|
||||
echo -e "Missing libs and manually imported:\n$missing_libs"
|
||||
|
||||
# Source paths
|
||||
src_dir="${FLATPAK_DEST}/retrodeck/tmplib"
|
||||
src_debug_dir="${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
||||
|
||||
# Destination paths
|
||||
dest_dir="${FLATPAK_DEST}/lib"
|
||||
dest_debug_dir="${FLATPAK_DEST}/retrodeck/lib/debug"
|
||||
|
||||
mkdir -p "$dest_dir" "$dest_debug_dir"
|
||||
|
||||
copy_missing_libs() {
|
||||
local src=$1
|
||||
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\"" || 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 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:
|
||||
|
@ -787,6 +796,7 @@ modules:
|
|||
- install -Dm 644 config/retrodeck/net.retrodeck.retrodeck.mime.xml /app/share/mime/packages/net.retrodeck.retrodeck.mime.xml
|
||||
|
||||
sources:
|
||||
- type: git
|
||||
url: THISREPO
|
||||
branch: THISBRANCH
|
||||
- type: dir
|
||||
path: .
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ jobs:
|
|||
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"
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/manifest_placeholder_replacer.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (cooker only)"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
@ -102,7 +102,7 @@ jobs:
|
|||
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/manifest_placeholder_replacer.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only_persistent.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
|
|
|
@ -80,7 +80,7 @@ jobs:
|
|||
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"
|
||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/manifest_placeholder_replacer.sh"
|
||||
|
||||
- name: "Adding flatpak portal for automated updates (cooker only)"
|
||||
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/cooker_flatpak_portal_add.sh"
|
||||
|
@ -104,7 +104,7 @@ jobs:
|
|||
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/manifest_placeholder_replacer.sh"
|
||||
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh"
|
||||
|
||||
- name: Build flatpak
|
||||
|
|
|
@ -70,7 +70,6 @@ source /app/libexec/global.sh
|
|||
# - Troubleshooting
|
||||
# - Backup: RetroDECK Userdata
|
||||
# - Check & Verify: BIOS
|
||||
# - Check & Verify: BIOS - Expert Mode
|
||||
# - Check & Verify: Multi-file structure
|
||||
# - RetroDECK: Reset
|
||||
# - Reset Emulator or Engine
|
||||
|
@ -153,6 +152,7 @@ configurator_welcome_dialog() {
|
|||
|
||||
"RetroDECK: Troubleshooting" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
# Call the troubleshooting dialog to return to the previous menu after checking BIOS files
|
||||
configurator_retrodeck_troubleshooting_dialog
|
||||
;;
|
||||
|
||||
|
@ -986,7 +986,6 @@ configurator_retrodeck_troubleshooting_dialog() {
|
|||
--column="Choice" --column="Action" \
|
||||
"Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \
|
||||
"Check & Verify: BIOS Files" "Show information about common BIOS files" \
|
||||
"Check & Verify: BIOS Files - Expert Mode" "Show information about common BIOS files, with additional information useful for troubleshooting" \
|
||||
"Check & Verify: Multi-file structure" "Verify the proper structure of multi-file or multi-disc games" \
|
||||
"RetroDECK: Reset" "Reset specific parts or all of RetroDECK" )
|
||||
|
||||
|
@ -1015,10 +1014,6 @@ configurator_retrodeck_troubleshooting_dialog() {
|
|||
configurator_check_bios_files
|
||||
;;
|
||||
|
||||
"Check & Verify: BIOS Files - Expert Mode" )
|
||||
configurator_check_bios_files_expert_mode
|
||||
;;
|
||||
|
||||
"Check & Verify: Multi-file structure" )
|
||||
log i "Configurator: opening \"$choice\" menu"
|
||||
configurator_check_multifile_game_structure
|
||||
|
@ -1037,40 +1032,97 @@ configurator_retrodeck_troubleshooting_dialog() {
|
|||
esac
|
||||
}
|
||||
|
||||
# This function checks and verifies BIOS files for RetroDECK.
|
||||
# It reads a list of required BIOS files from a JSON file, checks if they exist in the specified folder,
|
||||
# verifies their MD5 hashes if provided, and displays the results in a Zenity dialog.
|
||||
configurator_check_bios_files() {
|
||||
|
||||
configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nBIOS files not known to this tool could still function.\n\nSome more advanced emulators such as Ryujinx will have additional methods to verify that the BIOS files are in working order."
|
||||
bios_checked_list=()
|
||||
|
||||
check_bios_files "basic"
|
||||
log d "Starting BIOS check in mode: $mode"
|
||||
|
||||
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column "BIOS File Name" \
|
||||
--column "System" \
|
||||
--column "BIOS File Found" \
|
||||
--column "BIOS Hash Match" \
|
||||
--column "BIOS File Description" \
|
||||
"${bios_checked_list[@]}"
|
||||
(
|
||||
|
||||
configurator_retrodeck_troubleshooting_dialog
|
||||
}
|
||||
# Read the BIOS checklist from bios.json using jq
|
||||
total_bios=$(jq '.bios | length' $bios_checklist)
|
||||
current_bios=0
|
||||
|
||||
configurator_check_bios_files_expert_mode() {
|
||||
configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files - Expert Mode" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nBIOS files not known to this tool could still function.\n\nSome more advanced emulators such as Ryujinx will have additional methods to verify that the BIOS files are in working order."
|
||||
bios_checked_list=()
|
||||
log d "Total BIOS files to check: $total_bios"
|
||||
|
||||
check_bios_files "expert"
|
||||
declare -a bios_checked_list
|
||||
|
||||
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column "BIOS File Name" \
|
||||
--column "System" \
|
||||
--column "BIOS File Found" \
|
||||
--column "BIOS Hash Match" \
|
||||
--column "BIOS File Description" \
|
||||
--column "BIOS File Subdirectory" \
|
||||
--column "BIOS File Hash" \
|
||||
"${bios_checked_list[@]}"
|
||||
while read -r entry; do
|
||||
# Extract the key (element name) and the fields
|
||||
bios_file=$(echo "$entry" | jq -r '.key // "Unknown"')
|
||||
bios_md5=$(echo "$entry" | jq -r '.value.md5 | if type=="array" then join(", ") else . end // "Unknown"')
|
||||
bios_systems=$(echo "$entry" | jq -r '.value.system | if type=="array" then join(", ") else . end // "Unknown"')
|
||||
# Broken
|
||||
#bios_systems_pretty=$(echo "$bios_systems" | jq -R -r 'split(", ") | map(. as $sys | input_filename | gsub("features.json"; "") | .emulator[$sys].name) | join(", ")' --slurpfile features $features)
|
||||
bios_desc=$(echo "$entry" | jq -r '.value.description // "No description provided"')
|
||||
required=$(echo "$entry" | jq -r '.value.required // "No"')
|
||||
bios_paths=$(echo "$entry" | jq -r '.value.paths | if type=="array" then join(", ") else . end // "'"$bios_folder"'"' | sed "s|"$rdhome/"||")
|
||||
|
||||
log d "Checking entry $bios_entry"
|
||||
|
||||
# Skip if bios_file is empty
|
||||
if [[ ! -z "$bios_file" ]]; then
|
||||
bios_file_found="No"
|
||||
bios_md5_matched="No"
|
||||
|
||||
# Check if the BIOS file exists
|
||||
if [[ -f "$bios_folder/$bios_paths$bios_file" ]]; then
|
||||
bios_file_found="Yes"
|
||||
|
||||
# Check if the hash matches any of the possible MD5s
|
||||
IFS=', ' read -r -a md5_array <<< "$bios_md5"
|
||||
for md5 in "${md5_array[@]}"; do
|
||||
if [[ $(md5sum "$bios_folder/$bios_paths$bios_file" | awk '{ print $1 }') == "$md5" ]]; then
|
||||
bios_md5_matched="Yes"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
log d "BIOS file found: $bios_file_found, Hash matched: $bios_md5_matched"
|
||||
|
||||
fi
|
||||
|
||||
log d "Adding BIOS entry: \"$bios_file $bios_systems $bios_file_found $bios_md5_matched $bios_desc $bios_paths $bios_md5\" to the bios_checked_list"
|
||||
|
||||
if [[ $bios_checked_list != "" ]]; then
|
||||
bios_checked_list=("${bios_checked_list[@]}"^"$bios_file^$bios_systems^$bios_file_found^$bios_md5_matched^$required^$bios_paths^$bios_desc^$bios_md5")
|
||||
else
|
||||
bios_checked_list=("$bios_file^$bios_systems^$bios_file_found^$bios_md5_matched^$required^$bios_paths^$bios_desc^$bios_md5")
|
||||
fi
|
||||
#echo "$bios_file"^"$bios_systems"^"$bios_file_found"^"$bios_md5_matched"^"$bios_paths"^"$bios_md5"^"$bios_desc" # Godot data transfer #TODO: this is breaking the zenity dialog, since we don't release Godot in this version I disabled it.
|
||||
|
||||
current_bios=$((current_bios + 1))
|
||||
echo "$((current_bios * 100 / total_bios))"
|
||||
|
||||
done < <(jq -c '.bios | to_entries[]' "$bios_checklist")
|
||||
|
||||
log d "Finished checking BIOS files"
|
||||
|
||||
IFS="^" # Set the Internal Field Separator to ^ to split the bios_checked_list array
|
||||
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
|
||||
--column "BIOS File Name" \
|
||||
--column "Systems" \
|
||||
--column "Found" \
|
||||
--column "Hash Matches" \
|
||||
--column "Required" \
|
||||
--column "Expected Path" \
|
||||
--column "Description" \
|
||||
--column "MD5" \
|
||||
$(printf '%s\n' "${bios_checked_list[@]}")
|
||||
IFS=$' \t\n' # Reset the Internal Field Separator
|
||||
|
||||
) |
|
||||
rd_zenity --progress --no-cancel --auto-close \
|
||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||
--title "RetroDECK Configurator Utility - BIOS Check in Progress" \
|
||||
--text="RetroDECK is checking your BIOS files, please wait..." \
|
||||
--width=400 --height=100
|
||||
|
||||
configurator_retrodeck_troubleshooting_dialog
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue