From 791c812e7d8bf7cfb168c4bfad8468444e6c7bff Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 08:56:29 +0900 Subject: [PATCH 01/29] FEATURES: new branch init [skip ci] --- .../retrodeck/reference_lists/features.json | 250 ++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 config/retrodeck/reference_lists/features.json diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json new file mode 100644 index 00000000..63a2975c --- /dev/null +++ b/config/retrodeck/reference_lists/features.json @@ -0,0 +1,250 @@ +{ + "about_links": { + "example_site": { + "description": "Updated description.", + "name": "Updated Site", + "url": "https://updated-example.com" + }, + "rd_changelog": { + "description": "Opens the RetroDECK change log in your default browser", + "name": "Changelog", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/" + }, + "rd_contactus": { + "description": "Opens the RetroDECK contact us section in your default browser", + "name": "Contact us", + "url": "https://github.com/XargonWan/RetroDECK" + }, + "rd_credits": { + "description": "Opens the RetroDECK Credits in your default browser", + "name": "Credits", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_donate": { + "description": "Opens Donations page in your default browser", + "name": "Donate", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_licenses": { + "description": "Opens the RetroDECK licenses in your default browser", + "name": "Licences", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_web": { + "description": "Opens the RetroDECK Website in your default browser", + "name": "Website", + "url": "https://retrodeck.net/" + }, + "rd_wiki": { + "description": "Opens the RetroDECK Wiki in your default browser", + "name": "Wiki", + "url": "https://retrodeck.readthedocs.io/en/latest/" + } + }, + "finit_default_options" : { + "rd_controller_profile": { + "name": "RetroDECK Steam Controller Profiles Install", + "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", + "enabled": true + }, + "rpcs3_firmware": { + "name": "RPCS3 Firmware Install", + "description": "Install firmware needed for PS3 emulation", + "enabled": false + }, + "vita3k_firmware": { + "name": "Vita3K Firmware Install", + "description": "Install firmware needed for Vita3K emulation", + "enabled": false + } + }, + "spalsh_screens" : { + "xmas": { + "start_date": "1201", + "end_date": "1231", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-xmas-splash.svg" + }, + "lunar_dragon": { + "start_date": "0209", + "end_date": "0212", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-lunar-dragon-splash.svg" + }, + "valentines_day": { + "start_date": "0214", + "end_date": "0214", + "start_time": "0001", + "end_time": "2359", + "filename": "rd-valentines-splash.svg" + }, + "retrodeck_birthday": { + "start_date": "0304", + "end_date": "0304", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-gm-bday-splash.svg" + }, + "st_patricks_day": { + "start_date": "0317", + "end_date": "0317", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-stpatricks-splash.svg" + }, + "kodomo_golden_week": { + "start_date": "0429", + "end_date": "0505", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-kodomo-golden.svg" + } + }, + "incompatible_presets" : + { + "borders" : "widescreen" + }, + "helper_files": { + + "dolphin_mods": { + "filename": "how-to-install-dolphin-mods.txt", + "location": "$mods_folder/Dolphin" + }, + "primehack_mods": { + "filename": "how-to-install-primehack-mods.txt", + "location": "$mods_folder/Primehack" + }, + + "mesen_textures": { + "filename": "how-to-install-Mesen-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mesen" + }, + "ppsspp_textures": { + "filename": "how-to-install-PPSSPP-textures.txt", + "location": "$texture_packs_folder/PPSSPP" + }, + "pcsx2_textures": { + "filename": "how-to-install-PCSX2-textures.txt", + "location": "$texture_packs_folder/PCSX2" + }, + "mupen64plus_cache_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" + }, + "mupen64plus_hires_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" + }, + "duckstation_textures": { + "filename": "how-to-install-Duckstation-textures.txt", + "location": "$texture_packs_folder/Duckstation" + }, + + "psvita_games": { + "filename": "how-to-install-psvita-games.txt", + "location": "$roms_folder/psvita" + }, + "ryujinx_firmware": { + "filename": "Install-firmware-through-Ryujinx.txt", + "location": "$bios_folder/switch/firmware" + } + }, + "emulators": { + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "system": "wiiu", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir" : "Cemu" + } + ] + }, + "citra": { + "description": "N3DS emulator", + "name": "Citra", + "system": "n3ds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "swanstation_libretro": { + "description": "Swanstation libretro core", + "name": "SwanStation", + "system": "psx", + "properties": [ + { + "abxy_button": false, + "standalone": false + } + ], + "bios": { + "psxonpsp660": { + "filename": "psxonpsp660.bin", + "description": "PS1 BIOS from PSP", + "hash": "c53ca5908936d412331790f4426c6c33", + "required": "At least one" + }, + "scph5500": { + "filename": "scph5500.bin", + "description": "PS1 JP BIOS", + "hash": "8dd7d5296a650fac7319bce665a6a53c", + "required": "At least one" + }, + "scph5501": { + "filename": "scph5501.bin", + "description": "PS1 US BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph5502": { + "filename": "scph5502.bin", + "description": "PS1 EU BIOS", + "hash": "32736f17079d0b2b7024407c39bd3050", + "required": "At least one" + }, + "scph7001": { + "filename": "scph7001.bin", + "description": "PS1 BIOS", + "hash": "1e68c231d0896b7eadcad1d7d8e76129", + "required": "At least one" + }, + "scph7002": { + "filename": "scph7002.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph7003": { + "filename": "scph7003.bin", + "description": "PS1 BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph7502": { + "filename": "scph7502.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph9002_7502": { + "filename": "scph9002(7502).bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "ps1_rom": { + "filename": "ps1_rom.bin", + "description": "PS1 BIOS", + "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", + "required": "At least one" + } + } + } + } +} \ No newline at end of file From 0929c141434a6eb65d91d1f7746ea7265f59a48d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 09:52:09 +0900 Subject: [PATCH 02/29] FEATURES: structural changes [skip ci] --- .../retrodeck/reference_lists/features.json | 218 ++++++++++-------- 1 file changed, 122 insertions(+), 96 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 63a2975c..77915a1f 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -151,100 +151,126 @@ "location": "$bios_folder/switch/firmware" } }, - "emulators": { - "cemu": { - "description": "Wii U emulator", - "name": "Cemu", - "system": "wiiu", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir" : "Cemu" - } - ] - }, - "citra": { - "description": "N3DS emulator", - "name": "Citra", - "system": "n3ds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "swanstation_libretro": { - "description": "Swanstation libretro core", - "name": "SwanStation", - "system": "psx", - "properties": [ - { - "abxy_button": false, - "standalone": false - } - ], - "bios": { - "psxonpsp660": { - "filename": "psxonpsp660.bin", - "description": "PS1 BIOS from PSP", - "hash": "c53ca5908936d412331790f4426c6c33", - "required": "At least one" - }, - "scph5500": { - "filename": "scph5500.bin", - "description": "PS1 JP BIOS", - "hash": "8dd7d5296a650fac7319bce665a6a53c", - "required": "At least one" - }, - "scph5501": { - "filename": "scph5501.bin", - "description": "PS1 US BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph5502": { - "filename": "scph5502.bin", - "description": "PS1 EU BIOS", - "hash": "32736f17079d0b2b7024407c39bd3050", - "required": "At least one" - }, - "scph7001": { - "filename": "scph7001.bin", - "description": "PS1 BIOS", - "hash": "1e68c231d0896b7eadcad1d7d8e76129", - "required": "At least one" - }, - "scph7002": { - "filename": "scph7002.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph7003": { - "filename": "scph7003.bin", - "description": "PS1 BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph7502": { - "filename": "scph7502.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph9002_7502": { - "filename": "scph9002(7502).bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "ps1_rom": { - "filename": "ps1_rom.bin", - "description": "PS1 BIOS", - "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", - "required": "At least one" - } - } - } - } + "system": { + "wiiu" : { + "name": "Wii U", + "folder" : "wiiu", + "emulators" : { + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir" : "Cemu" + } + ] + } + } + }, + "n3ds" : { + "name": "Nintendo 3DS", + "folder" : "n3ds", + "emulator": { + "citra_libretro": { + "description": "Nintendo 3DS Emulator", + "name": "Citra", + "libretro": true, + "properties": [ + { + "abxy_button": true + } + ] + } + } + }, + "psx" : { + "name": "Sony PlayStation", + "folder" : "psx", + "bios": { + "psxonpsp660": { + "filename": "psxonpsp660.bin", + "description": "PS1 BIOS from PSP", + "hash": "c53ca5908936d412331790f4426c6c33", + "required": "At least one" + }, + "scph5500": { + "filename": "scph5500.bin", + "description": "PS1 JP BIOS", + "hash": "8dd7d5296a650fac7319bce665a6a53c", + "required": "At least one" + }, + "scph5501": { + "filename": "scph5501.bin", + "description": "PS1 US BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph5502": { + "filename": "scph5502.bin", + "description": "PS1 EU BIOS", + "hash": "32736f17079d0b2b7024407c39bd3050", + "required": "At least one" + }, + "scph7001": { + "filename": "scph7001.bin", + "description": "PS1 BIOS", + "hash": "1e68c231d0896b7eadcad1d7d8e76129", + "required": "At least one" + }, + "scph7002": { + "filename": "scph7002.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph7003": { + "filename": "scph7003.bin", + "description": "PS1 BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph7502": { + "filename": "scph7502.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph9002_7502": { + "filename": "scph9002(7502).bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "ps1_rom": { + "filename": "ps1_rom.bin", + "description": "PS1 BIOS", + "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", + "required": "At least one" + } + }, + "emulator": { + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation libretro core", + "libretro" : true, + "properties": [ + { + "abxy_button": false + } + ] + }, + "duckstation" : { + "name" : "Duckstation", + "description" : "PlayStation Emulator", + "launch" : "duckstation-qt", + "properties": [ + { + "abxy_button": false + } + ] + } + } + } + } } \ No newline at end of file From 92760c7a431a5600ea642092f1e9d1cca3c1f874 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 10:27:22 +0900 Subject: [PATCH 03/29] FEATURES: structural changes [skip ci] --- config/retrodeck/reference_lists/features.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 77915a1f..dec84bc2 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -253,7 +253,7 @@ "swanstation_libretro": { "name": "SwanStation", "description": "Swanstation libretro core", - "libretro" : true, + "core" : "libretro", "properties": [ { "abxy_button": false From af724a69771731f7cb50689a9f820315186c4046 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 15:35:13 +0900 Subject: [PATCH 04/29] FRAMEWORK: migrating easter_eggs into a reworked splash_screen function --- .../reference_lists/easter_egg_checklist.cfg | 6 --- .../retrodeck/reference_lists/features.json | 2 +- functions/global.sh | 1 - functions/other_functions.sh | 42 +++++++++---------- 4 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 config/retrodeck/reference_lists/easter_egg_checklist.cfg diff --git a/config/retrodeck/reference_lists/easter_egg_checklist.cfg b/config/retrodeck/reference_lists/easter_egg_checklist.cfg deleted file mode 100644 index e70139e3..00000000 --- a/config/retrodeck/reference_lists/easter_egg_checklist.cfg +++ /dev/null @@ -1,6 +0,0 @@ -1201^1231^0000^2359^rd-xmas-splash.svg -0209^0212^0000^2359^rd-lunar-dragon-splash.svg -0214^0214^0001^2359^rd-valentines-splash.svg -0304^0304^0000^2359^rd-gm-bday-splash.svg -0317^0317^0000^2359^rd-stpatricks-splash.svg -0429^0505^0000^2359^rd-kodomo-golden.svg diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index dec84bc2..c9101086 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -58,7 +58,7 @@ "enabled": false } }, - "spalsh_screens" : { + "splash_screens" : { "xmas": { "start_date": "1201", "end_date": "1231", diff --git a/functions/global.sh b/functions/global.sh index 2584aafd..5cfdf78b 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -29,7 +29,6 @@ rd_update_patch="/var/config/retrodeck/rd_update.patch" bios_checklist="$config/retrodeck/reference_lists/bios_checklist.cfg" # A config file listing BIOS file information that can be verified compression_targets="$config/retrodeck/reference_lists/compression_targets.cfg" # A config file containing supported compression types per system zip_compressable_extensions="$config/retrodeck/reference_lists/zip_compressable_extensions.cfg" # A config file containing every file extension that is allowed to be compressed to .zip format, because there are a lot! -easter_egg_checklist="$config/retrodeck/reference_lists/easter_egg_checklist.cfg" # A config file listing days and times when special splash screens should show up 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 diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 4676c174..5786f8cf 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -572,26 +572,26 @@ deploy_helper_files() { done < "$helper_files_list" } -easter_eggs() { - # This function will replace the RetroDECK startup splash screen with a different image if the day and time match a listing in easter_egg_checklist.cfg - # The easter_egg_checklist.cfg file has the current format: $start_date^$end_date^$start_time^$end_time^$splash_file - # Ex. The line "1001^1031^0000^2359^spooky.svg" would show the file "spooky.svg" during any time of day in the month of October - # The easter_egg_checklist.cfg is read in order, so lines higher in the file will have higher priority in the event of an overlap - # USAGE: easter_eggs - current_day=$(date +"%0m%0d") # Read the current date in a format that can be calculated in ranges - current_time=$(date +"%0H%0M") # Read the current time in a format that can be calculated in ranges - if [[ ! -z $(cat $easter_egg_checklist) ]]; then - while IFS="^" read -r start_date end_date start_time end_time splash_file || [[ -n "$start_date" ]]; # Read Easter Egg checklist file and separate values - do - if [[ ! $start_date == "#"* ]] && [[ ! -z "$start_date" ]]; then - if [[ "$((10#$current_day))" -ge "$((10#$start_date))" && "$((10#$current_day))" -le "$((10#$end_date))" && "$((10#$current_time))" -ge "$((10#$start_time))" && "$((10#$current_time))" -le "$((10#$end_time))" ]]; then # If current line specified date/time matches current date/time, set $splash_file to be deployed - new_splash_file="$splashscreen_dir/$splash_file" - break - else # When there are no matches, the default splash screen is set to deploy - new_splash_file="$default_splash_file" - fi - fi - done < $easter_egg_checklist +splash_screen() { + # This function will replace the RetroDECK startup splash screen with a different image if the day and time match a listing in the JSON data. + # USAGE: splash_screen + + current_day=$(date +"%m%d") # Read the current date in a format that can be calculated in ranges + current_time=$(date +"%H%M") # Read the current time in a format that can be calculated in ranges + + # Read the JSON file and extract splash screen data using jq + splash_screen=$(jq -r --arg current_day "$current_day" --arg current_time "$current_time" ' + .splash_screens | to_entries[] | + select( + ($current_day | tonumber) >= (.value.start_date | tonumber) and + ($current_day | tonumber) <= (.value.end_date | tonumber) and + ($current_time | tonumber) >= (.value.start_time | tonumber) and + ($current_time | tonumber) <= (.value.end_time | tonumber) + ) | .value.filename' config/retrodeck/reference_lists/features.json) + + # Determine the splash file to use + if [[ -n "$splash_screen" ]]; then + new_splash_file="$splashscreen_dir/$splash_screen" else new_splash_file="$default_splash_file" fi @@ -770,7 +770,7 @@ quit_retrodeck() { } start_retrodeck() { - easter_eggs # Check if today has a surprise splashscreen and load it if so + splash_screen # Check if today has a surprise splashscreen and load it if so ponzu log i "Starting RetroDECK v$version" es-de From 07b8edb32ee1a5cbf8f239efbe0befd471436076 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 16:20:27 +0900 Subject: [PATCH 05/29] FRAMEWORK: migrating update_rd_conf into a reworked function with features.json support --- functions/other_functions.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 5786f8cf..adaa56e5 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -162,6 +162,15 @@ update_rd_conf() { # STAGE 3: Eliminate any preset incompatibility with existing user settings and new defaults + # Fetch incompatible presets from JSON and create a lookup list + incompatible_presets=$(jq -r ' + .incompatible_presets | to_entries[] | + [ + "\(.key):\(.value)", + "\(.value):\(.key)" + ] | join("\n") + ' config/retrodeck/reference_lists/features.json) + while IFS= read -r current_setting_line # Read the existing retrodeck.cfg do if [[ (! -z "$current_setting_line") && (! "$current_setting_line" == "#"*) && (! "$current_setting_line" == "[]") ]]; then # If the line has a valid entry in it @@ -179,7 +188,7 @@ update_rd_conf() { set_setting_value "$rd_conf" "$system_name" "false" "retrodeck" "$current_section" fi fi - done < "$incompatible_presets_reference_list" + done <<< "$incompatible_presets" fi fi fi @@ -187,6 +196,7 @@ update_rd_conf() { done < $rd_conf } + conf_read() { # This function will read the RetroDECK config file into memory # USAGE: conf_read From a48ba23df085a45215db7d2783f910c17c6e2d92 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 16:20:58 +0900 Subject: [PATCH 06/29] FRAMEWORK: variabilized features.json location --- functions/global.sh | 1 + functions/other_functions.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/functions/global.sh b/functions/global.sh index 5cfdf78b..f1cebd58 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -54,6 +54,7 @@ incompatible_presets_reference_list="$config/retrodeck/reference_lists/incompati pretty_system_names_reference_list="$config/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color) git_organization_name="RetroDECK" # The name of the organization in our git repository such as GitHub cooker_repository_name="Cooker" # The name of the cooker repository under RetroDECK organization +features="$config/retrodeck/reference_lists/features.json" # A file where all the RetroDECK and component capabilities are kept for querying # Godot data transfer temp files diff --git a/functions/other_functions.sh b/functions/other_functions.sh index adaa56e5..e84fbaea 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -169,7 +169,7 @@ update_rd_conf() { "\(.key):\(.value)", "\(.value):\(.key)" ] | join("\n") - ' config/retrodeck/reference_lists/features.json) + ' $features) while IFS= read -r current_setting_line # Read the existing retrodeck.cfg do @@ -597,7 +597,7 @@ splash_screen() { ($current_day | tonumber) <= (.value.end_date | tonumber) and ($current_time | tonumber) >= (.value.start_time | tonumber) and ($current_time | tonumber) <= (.value.end_time | tonumber) - ) | .value.filename' config/retrodeck/reference_lists/features.json) + ) | .value.filename' $features) # Determine the splash file to use if [[ -n "$splash_screen" ]]; then From ddcee3d3949ab381bc3719e28eafa0e4bd967f15 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 17:09:35 +0900 Subject: [PATCH 07/29] FEATURES: fixed an invalid value --- config/retrodeck/reference_lists/features.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index c9101086..cb2ef1ea 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -175,7 +175,7 @@ "citra_libretro": { "description": "Nintendo 3DS Emulator", "name": "Citra", - "libretro": true, + "core": "libretro", "properties": [ { "abxy_button": true From 9530207ca5afe9a4aefef2a76cadd154feb7d957 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 17:09:58 +0900 Subject: [PATCH 08/29] FEATURES: added a sample jq to fetch all the resettable emulators for CLI --- retrodeck.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/retrodeck.sh b/retrodeck.sh index 1c2b1f85..8c878710 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -59,6 +59,15 @@ https://retrodeck.net echo "Available options are: es-de, retroarch, cemu, dolphin, duckstation, gzdoom, melonds, pcsx3, pico8, ppsspp, primehack, rpcs3, ryujinx, xemu, vita3k, mame, all" read -p "Please enter the component you would like to reset: " component component=$(echo "$component" | tr '[:upper:]' '[:lower:]') + + # TODO: this is the jq to get all the resettable emulators list, generic component is missing + # jq -r ' + # [.system[] | + # (.emulator // .emulators | to_entries[]) | + # select(.value.core == null and .value.resettable != false) | + # .key] | sort | join("|") + # ' config/retrodeck/reference_lists/features.json + if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|vita3k|xemu|all)$ ]]; then read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response if [[ $response == [yY] ]]; then From 44a07f96466273254227799cb22fd3459c0feb48 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 17:11:35 +0900 Subject: [PATCH 09/29] FEATURES: added a sample jq to fetch all the resettable emulators for CLI - fix --- retrodeck.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/retrodeck.sh b/retrodeck.sh index 8c878710..9ba232bc 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -66,7 +66,7 @@ https://retrodeck.net # (.emulator // .emulators | to_entries[]) | # select(.value.core == null and .value.resettable != false) | # .key] | sort | join("|") - # ' config/retrodeck/reference_lists/features.json + # ' "$features" if [[ "$component" =~ ^(es-de|retroarch|cemu|dolphin|duckstation|gzdoom|mame|melonds|pcsx2|ppsspp|primehack|ryujinx|rpcs3|vita3k|xemu|all)$ ]]; then read -p "You are about to reset $component to default settings. Enter 'y' to continue, 'n' to stop: " response From 9d05fbd93d2593e4e2c2c857a755f0514b6fb535 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 18:19:13 +0900 Subject: [PATCH 10/29] FEATURES: added more emulators and placeholders --- .../retrodeck/reference_lists/features.json | 179 ++++++++++++++++-- 1 file changed, 163 insertions(+), 16 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index cb2ef1ea..caf59ad0 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -152,22 +152,24 @@ } }, "system": { - "wiiu" : { - "name": "Wii U", - "folder" : "wiiu", - "emulators" : { - "cemu": { - "description": "Wii U emulator", - "name": "Cemu", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir" : "Cemu" - } - ] - } - } - }, + "libretro" : { + "name": "RetroArch", + "emulator": { + "retroarch" : { + "description" : "RetroArch (Multi-emulator Frontend)", + "name" : "RetroArch", + "launch" : "retroarch" + } + } + }, + "arcade" : { + "name" : "Arcade", + "folder" : "arcade", + "emulator" : { + "mame_libretro" : {}, + "mame" : {} + } + }, "n3ds" : { "name": "Nintendo 3DS", "folder" : "n3ds", @@ -181,9 +183,99 @@ "abxy_button": true } ] + }, + "citra": { + "description": "Citra Nintendo 3DS Emulator (via Ponzu)", + "name": "Citra", + "ponzu" : true, + "properties": [ + { + "abxy_button": true + } + ] } } }, + "nds" : { + "name": "Nintendo DS", + "folder" : "nds", + "emulator": { + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "core": "libretro", + "properties": [ + { + "abxy_button": true + } + ] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "core": "libretro", + "properties": [ + { + "abxy_button": true + } + ], + "melonds" : { + "description": "MelonDS Nintendo DS Emulator", + "name": "melonds", + "launch" : "MelonDS", + "bios": { + "bios7": { + "filename": "bios7.bin", + "hash": "df692a80a5b1bc90728bc3dfc76cd948", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + }, + "bios9": { + "filename": "bios9.bin", + "hash": "a392174eb3e572fed6447e956bde4b25", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + }, + "firmware": { + "filename": "firmware.bin", + "hash": "e45033d9b0fa6b0de071292bba7c9d13", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + } + } + } + } + }, + "ps2" : { + "name": "Sony PlayStation 2", + "folder" : "ps2", + "emulator" : { + "pcsx2" : { + "name" : "pcsx2", + "description": "PCSX2 Play Station 2 Emulator", + "bios": { + "ps2-0200a": { + "filename": "ps2-0200a-20040614.bin", + "hash": "d333558cc14561c1fdc334c75d5f37b7", + "description": "PS2 US BIOS", + "required": "At least one" + }, + "ps2-0200e": { + "filename": "ps2-0200e-20040614.bin", + "hash": "dc752f160044f2ed5fc1f4964db2a095", + "description": "PS2 EU BIOS", + "required": "At least one" + }, + "ps2-0200j": { + "filename": "ps2-0200j-20040614.bin", + "hash": "0eee5d1c779aa50e94edd168b4ebf42e", + "description": "PS2 JP BIOS", + "required": "At least one" + } + } + } + } + }, "psx" : { "name": "Sony PlayStation", "folder" : "psx", @@ -271,6 +363,61 @@ ] } } + }, + "psp" : { + "emulator" : { + "name" : "Sony PSP: PlayStation Portable", + "folder" : "psp", + "ppsspp" : { + "name" : "PPSSPP", + "description" : "PSP: PlayStation Portable Emulator", + "launch" : "PPSSPPSDL" + } + } + }, + "rpcs3" : { + "name" : "Sony PlayStation 3", + "folder" : "ps3", + "emulator" : { + "rpcs3" : { + "name" : "RPCS3", + "description" : "RPCS3 PlayStation 3 Emulator", + "launch" : "rpcs3" + } + } + }, + "switch" : { + "name" : "Nintendo Switch", + "folder" : "switch", + "emulator" : { + "ryujinx" : {}, + "yuzu" : {} + } + }, + "wii" : { + "name": "Nintendo Wii", + "folder" : "wii", + "emulators" : { + "dolphin" : {}, + "primehack" : {} + } + }, + "wiiu" : { + "name": "Nintendo Wii U", + "folder" : "wiiu", + "emulators" : { + "cemu": { + "description": "Wii U emulator", + "name" : "Cemu", + "launch" : "Cemu-wrapper", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir" : "Cemu" + } + ] + } + } } } } \ No newline at end of file From 91bbf8af92ba825772711ae9a88acb0e44b51db2 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 18:39:31 +0900 Subject: [PATCH 11/29] FEATURES: added more systems and emulators --- .../retrodeck/reference_lists/features.json | 111 ++++++++++++++---- 1 file changed, 85 insertions(+), 26 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index caf59ad0..5a4d7cfc 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -166,8 +166,16 @@ "name" : "Arcade", "folder" : "arcade", "emulator" : { - "mame_libretro" : {}, - "mame" : {} + "mame_libretro" : { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "core": "libretro" + }, + "mame" : { + "description": "MAME: Multiple Arcade Machine Emulator", + "name": "MAME", + "launch" : "mame" + } } }, "n3ds" : { @@ -186,7 +194,7 @@ }, "citra": { "description": "Citra Nintendo 3DS Emulator (via Ponzu)", - "name": "Citra", + "name": "Citra (via Ponzu)", "ponzu" : true, "properties": [ { @@ -345,36 +353,37 @@ "swanstation_libretro": { "name": "SwanStation", "description": "Swanstation libretro core", - "core" : "libretro", - "properties": [ - { - "abxy_button": false - } - ] + "core" : "libretro" }, "duckstation" : { "name" : "Duckstation", "description" : "PlayStation Emulator", - "launch" : "duckstation-qt", - "properties": [ - { - "abxy_button": false - } - ] + "launch" : "duckstation-qt" } } }, "psp" : { + "name" : "Sony PSP: PlayStation Portable", + "folder" : "psp", "emulator" : { - "name" : "Sony PSP: PlayStation Portable", - "folder" : "psp", "ppsspp" : { "name" : "PPSSPP", - "description" : "PSP: PlayStation Portable Emulator", + "description" : "PPSSPP: PlayStation Portable Emulator", "launch" : "PPSSPPSDL" } } }, + "psvita" : { + "name" : "Sony PlayStation Vita", + "folder" : "psvita", + "emulator" : { + "vita3k" : { + "name" : "Vita3k", + "description" : "Vita3K PSVita Emulator", + "launch" : "Vita3K" + } + } + }, "rpcs3" : { "name" : "Sony PlayStation 3", "folder" : "ps3", @@ -390,22 +399,60 @@ "name" : "Nintendo Switch", "folder" : "switch", "emulator" : { - "ryujinx" : {}, - "yuzu" : {} + "ryujinx" : { + "name": "Ryujinx", + "description" : "Ryujinx Nintendo Switch Emulator", + "launch" : "Ryujinx.sh" + }, + "yuzu" : { + "name": "Yuzu (via Ponzu)", + "description" : "Yuzu Nintendo Switch Emulator (via Ponzu)", + "launch" : "Yuzu", + "ponzu" : true + } + } + }, + "gc" : { + "name": "Nintendo GameCube", + "folder" : "gc", + "emulator" : { + "dolphin" : { + "name" : "Dolphin", + "description" : "Dolphin Wii and GameCube Emulator", + "launch" : "dolphin-emu-wrapper", + "properties": [ + { + "abxy_button": true + } + ] + } } }, "wii" : { "name": "Nintendo Wii", "folder" : "wii", - "emulators" : { - "dolphin" : {}, - "primehack" : {} + "emulator" : { + "dolphin" : { + "name" : "Dolphin", + "description" : "Dolphin Wii and GameCube Emulator", + "launch" : "dolphin-emu-wrapper", + "properties": [ + { + "abxy_button": true + } + ] + }, + "primehack" : { + "name" : "PrimeHack", + "description" : "A fork of Dolphiin to enhance Metroid Prime experience", + "launch" : "primehack-wrapper" + } } }, "wiiu" : { "name": "Nintendo Wii U", "folder" : "wiiu", - "emulators" : { + "emulator" : { "cemu": { "description": "Wii U emulator", "name" : "Cemu", @@ -418,6 +465,18 @@ ] } } - } + }, + "xbox" : { + "name" : "Microsoft XBOX", + "folder" : "xbox", + "emulator" : { + "xemu" : { + "description": "xemu Xbox Emulator", + "name" : "xemu", + "launch" : "xemu" + } + } + } } -} \ No newline at end of file +} +} \ No newline at end of file From 517877124b04a605cb0d849e3e2a774c05b619a6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 18:49:09 +0900 Subject: [PATCH 12/29] FEATURES: added more systems and emulators - fix --- config/retrodeck/reference_lists/features.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 5a4d7cfc..152152fb 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -253,7 +253,8 @@ } } } - }, + } + }, "ps2" : { "name": "Sony PlayStation 2", "folder" : "ps2", From 6147279447f4ef3fbe07a0c0ee2586015e3b5db6 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 18:49:51 +0900 Subject: [PATCH 13/29] FEATURES: added more systems and emulators - fix2 --- config/retrodeck/reference_lists/features.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 152152fb..847bd481 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -479,5 +479,4 @@ } } } -} -} \ No newline at end of file +} \ No newline at end of file From 03442edfc5e28ea6e8205332b327e108c576de42 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 21:24:59 +0900 Subject: [PATCH 14/29] FEATURES: moved libretro cores in retroarch and added more presets --- .../retrodeck/reference_lists/features.json | 197 +++++++++++++----- 1 file changed, 140 insertions(+), 57 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 847bd481..8fe458e3 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -107,7 +107,6 @@ "borders" : "widescreen" }, "helper_files": { - "dolphin_mods": { "filename": "how-to-install-dolphin-mods.txt", "location": "$mods_folder/Dolphin" @@ -158,7 +157,109 @@ "retroarch" : { "description" : "RetroArch (Multi-emulator Frontend)", "name" : "RetroArch", - "launch" : "retroarch" + "launch" : "retroarch", + "properties" : [{ + "cheevos" : true, + "cheevos_hardcore" : true, + "quick_resume": true + }], + "cores" : { + "citra_libretro": { + "description": "Nintendo 3DS Libretro Core", + "name": "Citra", + "properties": [{ + "abxy_button": true + }] + }, + "mame_libretro" : { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "properties": [{ + "tate_mode": true + }] + }, + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "properties": [{ + "abxy_button": true + }] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "properties": [{ + "abxy_button": true + }] + }, + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation Libretro Core", + "properties" : [{ + "widescreen" : true, + "borders" : true + }] + }, + "picodrive_libetro": { + "name" : "PicoDrive", + "description": "SEGA Multi System Libretro Core", + "properties" : [{ + "widescreen" : true, + "borders" : true, + "rewind" : true + }] + }, + "genesisplusgx_libetro": { + "name" : "Genesis Plus GX", + "description": "SEGA Multi System Libretro Core", + "properties" : [{ + "widescreen" : true, + "borders" : true, + "rewind" : true + }] + }, + "genesisplusgxwide_libetro": { + "name" : "Genesis Plus GX Wide", + "description": "SEGA Multi System Libretro Core for Wide Screen", + "properties" : [{ + "widescreen" : true, + "rewind" : true + }] + }, + "mupen64plus-next_libetro": { + "name" : "Mupen64Plus-Next", + "description": "Nintendo 64 Libretro Core", + "properties" : [{ + "widescreen" : true, + "borders" : true + }] + }, + "snes9x-current_libetro": { + "name" : "Snes9x - Current", + "description": "Super Nintendo Libretro Core", + "properties" : [{ + "widescreen" : true, + "borders" : true, + "rewind" : true + }] + }, + "gambatte_libetro": { + "name" : "Gambatte", + "description": "Game Boy/Color Libretro Core", + "properties" : [{ + "borders" : true, + "rewind" : true + }] + }, + "mgba_libetro": { + "name" : "mGBA", + "description": "Game Boy Advance Libretro Core", + "properties" : [{ + "borders" : true, + "rewind" : true + }] + } + } } } }, @@ -166,11 +267,6 @@ "name" : "Arcade", "folder" : "arcade", "emulator" : { - "mame_libretro" : { - "description": "MAME: Multiple Arcade Machine Libretro Core", - "name": "MAME", - "core": "libretro" - }, "mame" : { "description": "MAME: Multiple Arcade Machine Emulator", "name": "MAME", @@ -182,25 +278,14 @@ "name": "Nintendo 3DS", "folder" : "n3ds", "emulator": { - "citra_libretro": { - "description": "Nintendo 3DS Emulator", - "name": "Citra", - "core": "libretro", - "properties": [ - { - "abxy_button": true - } - ] - }, "citra": { "description": "Citra Nintendo 3DS Emulator (via Ponzu)", "name": "Citra (via Ponzu)", "ponzu" : true, - "properties": [ - { - "abxy_button": true - } - ] + "properties": [{ + "abxy_button": true, + "ask_to_exit": true + }] } } }, @@ -208,25 +293,6 @@ "name": "Nintendo DS", "folder" : "nds", "emulator": { - "desmume_libretro": { - "description": "DeSmuME Nintendo DS Libretro Core", - "name": "desmume", - "core": "libretro", - "properties": [ - { - "abxy_button": true - } - ] - }, - "melonds_libretro": { - "description": "MelonDS Nintendo DS Libretro Core", - "name": "melonds", - "core": "libretro", - "properties": [ - { - "abxy_button": true - } - ], "melonds" : { "description": "MelonDS Nintendo DS Emulator", "name": "melonds", @@ -281,7 +347,11 @@ "description": "PS2 JP BIOS", "required": "At least one" } - } + }, + "properties": [{ + "ask_to_exit": true, + "cheevos" : true + }] } } }, @@ -351,15 +421,14 @@ } }, "emulator": { - "swanstation_libretro": { - "name": "SwanStation", - "description": "Swanstation libretro core", - "core" : "libretro" - }, "duckstation" : { "name" : "Duckstation", "description" : "PlayStation Emulator", - "launch" : "duckstation-qt" + "launch" : "duckstation-qt", + "properties": [{ + "ask_to_exit": true, + "cheevos" : true + }] } } }, @@ -370,7 +439,11 @@ "ppsspp" : { "name" : "PPSSPP", "description" : "PPSSPP: PlayStation Portable Emulator", - "launch" : "PPSSPPSDL" + "launch" : "PPSSPPSDL", + "properties": [{ + "cheevos" : true, + "cheevos_hardcore" : true + }] } } }, @@ -393,7 +466,10 @@ "name" : "RPCS3", "description" : "RPCS3 PlayStation 3 Emulator", "launch" : "rpcs3" - } + }, + "properties": [{ + "ask_to_exit": true + }] } }, "switch" : { @@ -421,11 +497,12 @@ "name" : "Dolphin", "description" : "Dolphin Wii and GameCube Emulator", "launch" : "dolphin-emu-wrapper", - "properties": [ - { - "abxy_button": true - } - ] + "properties": [{ + "abxy_button": true, + "ask_to_exit": true, + "cheevos" : true, + "cheevos_hardcore" : true + }] } } }, @@ -439,14 +516,20 @@ "launch" : "dolphin-emu-wrapper", "properties": [ { - "abxy_button": true + "abxy_button": true, + "ask_to_exit": true, + "cheevos" : true, + "cheevos_hardcore" : true } ] }, "primehack" : { "name" : "PrimeHack", "description" : "A fork of Dolphiin to enhance Metroid Prime experience", - "launch" : "primehack-wrapper" + "launch" : "primehack-wrapper", + "properties": [{ + "ask_to_exit": true + }] } } }, From b01f9c048da69d180088675393e91242066f9fff Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 21:32:24 +0900 Subject: [PATCH 15/29] FEATURES: added the last missing presets --- .../retrodeck/reference_lists/features.json | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 8fe458e3..eb0a1682 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -202,7 +202,7 @@ }, "picodrive_libetro": { "name" : "PicoDrive", - "description": "SEGA Multi System Libretro Core", + "description": "SEGA MS/MD/CD/32X Libretro Core", "properties" : [{ "widescreen" : true, "borders" : true, @@ -211,7 +211,7 @@ }, "genesisplusgx_libetro": { "name" : "Genesis Plus GX", - "description": "SEGA Multi System Libretro Core", + "description": "SEGA MS/GG/MD/CD Libretro Core", "properties" : [{ "widescreen" : true, "borders" : true, @@ -220,7 +220,7 @@ }, "genesisplusgxwide_libetro": { "name" : "Genesis Plus GX Wide", - "description": "SEGA Multi System Libretro Core for Wide Screen", + "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", "properties" : [{ "widescreen" : true, "rewind" : true @@ -231,7 +231,8 @@ "description": "Nintendo 64 Libretro Core", "properties" : [{ "widescreen" : true, - "borders" : true + "borders" : true, + "abxy_button": true }] }, "snes9x-current_libetro": { @@ -240,7 +241,8 @@ "properties" : [{ "widescreen" : true, "borders" : true, - "rewind" : true + "rewind" : true, + "abxy_button": true }] }, "gambatte_libetro": { @@ -248,7 +250,8 @@ "description": "Game Boy/Color Libretro Core", "properties" : [{ "borders" : true, - "rewind" : true + "rewind" : true, + "abxy_button": true }] }, "mgba_libetro": { @@ -256,7 +259,8 @@ "description": "Game Boy Advance Libretro Core", "properties" : [{ "borders" : true, - "rewind" : true + "rewind" : true, + "abxy_button": true }] } } @@ -485,7 +489,8 @@ "name": "Yuzu (via Ponzu)", "description" : "Yuzu Nintendo Switch Emulator (via Ponzu)", "launch" : "Yuzu", - "ponzu" : true + "ponzu" : true, + "abxy_button": true } } }, @@ -501,7 +506,8 @@ "abxy_button": true, "ask_to_exit": true, "cheevos" : true, - "cheevos_hardcore" : true + "cheevos_hardcore" : true, + "universal_dyn_input": true }] } } @@ -519,7 +525,8 @@ "abxy_button": true, "ask_to_exit": true, "cheevos" : true, - "cheevos_hardcore" : true + "cheevos_hardcore" : true, + "universal_dyn_input": true } ] }, @@ -528,7 +535,8 @@ "description" : "A fork of Dolphiin to enhance Metroid Prime experience", "launch" : "primehack-wrapper", "properties": [{ - "ask_to_exit": true + "ask_to_exit": true, + "universal_dyn_input": true }] } } From 5d281cf4d95055fa70c12131d404c647399b6449 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 21:36:44 +0900 Subject: [PATCH 16/29] FEATURES: added the last missing presets - fix --- config/retrodeck/reference_lists/features.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index eb0a1682..05b20e15 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -323,7 +323,6 @@ } } } - } }, "ps2" : { "name": "Sony PlayStation 2", @@ -569,5 +568,5 @@ } } } - } + } } \ No newline at end of file From 5fc458693fa9a5926c365262aec133548f471c8f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 21:38:05 +0900 Subject: [PATCH 17/29] FEATURES: json fmt --- .../retrodeck/reference_lists/features.json | 1165 +++++++++-------- 1 file changed, 601 insertions(+), 564 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 05b20e15..25635b4a 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1,572 +1,609 @@ { - "about_links": { - "example_site": { - "description": "Updated description.", - "name": "Updated Site", - "url": "https://updated-example.com" - }, - "rd_changelog": { - "description": "Opens the RetroDECK change log in your default browser", - "name": "Changelog", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/" - }, - "rd_contactus": { - "description": "Opens the RetroDECK contact us section in your default browser", - "name": "Contact us", - "url": "https://github.com/XargonWan/RetroDECK" - }, - "rd_credits": { - "description": "Opens the RetroDECK Credits in your default browser", - "name": "Credits", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" - }, - "rd_donate": { - "description": "Opens Donations page in your default browser", - "name": "Donate", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" - }, - "rd_licenses": { - "description": "Opens the RetroDECK licenses in your default browser", - "name": "Licences", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" - }, - "rd_web": { - "description": "Opens the RetroDECK Website in your default browser", - "name": "Website", - "url": "https://retrodeck.net/" - }, - "rd_wiki": { - "description": "Opens the RetroDECK Wiki in your default browser", - "name": "Wiki", - "url": "https://retrodeck.readthedocs.io/en/latest/" - } - }, - "finit_default_options" : { - "rd_controller_profile": { - "name": "RetroDECK Steam Controller Profiles Install", - "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", - "enabled": true - }, - "rpcs3_firmware": { - "name": "RPCS3 Firmware Install", - "description": "Install firmware needed for PS3 emulation", - "enabled": false - }, - "vita3k_firmware": { - "name": "Vita3K Firmware Install", - "description": "Install firmware needed for Vita3K emulation", - "enabled": false - } - }, - "splash_screens" : { - "xmas": { - "start_date": "1201", - "end_date": "1231", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-xmas-splash.svg" - }, - "lunar_dragon": { - "start_date": "0209", - "end_date": "0212", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-lunar-dragon-splash.svg" - }, - "valentines_day": { - "start_date": "0214", - "end_date": "0214", - "start_time": "0001", - "end_time": "2359", - "filename": "rd-valentines-splash.svg" - }, - "retrodeck_birthday": { - "start_date": "0304", - "end_date": "0304", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-gm-bday-splash.svg" - }, - "st_patricks_day": { - "start_date": "0317", - "end_date": "0317", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-stpatricks-splash.svg" - }, - "kodomo_golden_week": { - "start_date": "0429", - "end_date": "0505", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-kodomo-golden.svg" - } - }, - "incompatible_presets" : - { - "borders" : "widescreen" + "about_links": { + "example_site": { + "description": "Updated description.", + "name": "Updated Site", + "url": "https://updated-example.com" }, - "helper_files": { - "dolphin_mods": { - "filename": "how-to-install-dolphin-mods.txt", - "location": "$mods_folder/Dolphin" - }, - "primehack_mods": { - "filename": "how-to-install-primehack-mods.txt", - "location": "$mods_folder/Primehack" - }, - - "mesen_textures": { - "filename": "how-to-install-Mesen-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mesen" - }, - "ppsspp_textures": { - "filename": "how-to-install-PPSSPP-textures.txt", - "location": "$texture_packs_folder/PPSSPP" - }, - "pcsx2_textures": { - "filename": "how-to-install-PCSX2-textures.txt", - "location": "$texture_packs_folder/PCSX2" - }, - "mupen64plus_cache_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" - }, - "mupen64plus_hires_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" - }, - "duckstation_textures": { - "filename": "how-to-install-Duckstation-textures.txt", - "location": "$texture_packs_folder/Duckstation" - }, - - "psvita_games": { - "filename": "how-to-install-psvita-games.txt", - "location": "$roms_folder/psvita" - }, - "ryujinx_firmware": { - "filename": "Install-firmware-through-Ryujinx.txt", - "location": "$bios_folder/switch/firmware" - } - }, - "system": { - "libretro" : { - "name": "RetroArch", - "emulator": { - "retroarch" : { - "description" : "RetroArch (Multi-emulator Frontend)", - "name" : "RetroArch", - "launch" : "retroarch", - "properties" : [{ - "cheevos" : true, - "cheevos_hardcore" : true, - "quick_resume": true - }], - "cores" : { - "citra_libretro": { - "description": "Nintendo 3DS Libretro Core", - "name": "Citra", - "properties": [{ - "abxy_button": true - }] - }, - "mame_libretro" : { - "description": "MAME: Multiple Arcade Machine Libretro Core", - "name": "MAME", - "properties": [{ - "tate_mode": true - }] - }, - "desmume_libretro": { - "description": "DeSmuME Nintendo DS Libretro Core", - "name": "desmume", - "properties": [{ - "abxy_button": true - }] - }, - "melonds_libretro": { - "description": "MelonDS Nintendo DS Libretro Core", - "name": "melonds", - "properties": [{ - "abxy_button": true - }] - }, - "swanstation_libretro": { - "name": "SwanStation", - "description": "Swanstation Libretro Core", - "properties" : [{ - "widescreen" : true, - "borders" : true - }] - }, - "picodrive_libetro": { - "name" : "PicoDrive", - "description": "SEGA MS/MD/CD/32X Libretro Core", - "properties" : [{ - "widescreen" : true, - "borders" : true, - "rewind" : true - }] - }, - "genesisplusgx_libetro": { - "name" : "Genesis Plus GX", - "description": "SEGA MS/GG/MD/CD Libretro Core", - "properties" : [{ - "widescreen" : true, - "borders" : true, - "rewind" : true - }] - }, - "genesisplusgxwide_libetro": { - "name" : "Genesis Plus GX Wide", - "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", - "properties" : [{ - "widescreen" : true, - "rewind" : true - }] - }, - "mupen64plus-next_libetro": { - "name" : "Mupen64Plus-Next", - "description": "Nintendo 64 Libretro Core", - "properties" : [{ - "widescreen" : true, - "borders" : true, - "abxy_button": true - }] - }, - "snes9x-current_libetro": { - "name" : "Snes9x - Current", - "description": "Super Nintendo Libretro Core", - "properties" : [{ - "widescreen" : true, - "borders" : true, - "rewind" : true, - "abxy_button": true - }] - }, - "gambatte_libetro": { - "name" : "Gambatte", - "description": "Game Boy/Color Libretro Core", - "properties" : [{ - "borders" : true, - "rewind" : true, - "abxy_button": true - }] - }, - "mgba_libetro": { - "name" : "mGBA", - "description": "Game Boy Advance Libretro Core", - "properties" : [{ - "borders" : true, - "rewind" : true, - "abxy_button": true - }] - } - } - } - } - }, - "arcade" : { - "name" : "Arcade", - "folder" : "arcade", - "emulator" : { - "mame" : { - "description": "MAME: Multiple Arcade Machine Emulator", - "name": "MAME", - "launch" : "mame" - } - } - }, - "n3ds" : { - "name": "Nintendo 3DS", - "folder" : "n3ds", - "emulator": { - "citra": { - "description": "Citra Nintendo 3DS Emulator (via Ponzu)", - "name": "Citra (via Ponzu)", - "ponzu" : true, - "properties": [{ - "abxy_button": true, - "ask_to_exit": true - }] + "rd_changelog": { + "description": "Opens the RetroDECK change log in your default browser", + "name": "Changelog", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/" + }, + "rd_contactus": { + "description": "Opens the RetroDECK contact us section in your default browser", + "name": "Contact us", + "url": "https://github.com/XargonWan/RetroDECK" + }, + "rd_credits": { + "description": "Opens the RetroDECK Credits in your default browser", + "name": "Credits", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_donate": { + "description": "Opens Donations page in your default browser", + "name": "Donate", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_licenses": { + "description": "Opens the RetroDECK licenses in your default browser", + "name": "Licences", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/" + }, + "rd_web": { + "description": "Opens the RetroDECK Website in your default browser", + "name": "Website", + "url": "https://retrodeck.net/" + }, + "rd_wiki": { + "description": "Opens the RetroDECK Wiki in your default browser", + "name": "Wiki", + "url": "https://retrodeck.readthedocs.io/en/latest/" + } + }, + "finit_default_options": { + "rd_controller_profile": { + "name": "RetroDECK Steam Controller Profiles Install", + "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", + "enabled": true + }, + "rpcs3_firmware": { + "name": "RPCS3 Firmware Install", + "description": "Install firmware needed for PS3 emulation", + "enabled": false + }, + "vita3k_firmware": { + "name": "Vita3K Firmware Install", + "description": "Install firmware needed for Vita3K emulation", + "enabled": false + } + }, + "splash_screens": { + "xmas": { + "start_date": "1201", + "end_date": "1231", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-xmas-splash.svg" + }, + "lunar_dragon": { + "start_date": "0209", + "end_date": "0212", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-lunar-dragon-splash.svg" + }, + "valentines_day": { + "start_date": "0214", + "end_date": "0214", + "start_time": "0001", + "end_time": "2359", + "filename": "rd-valentines-splash.svg" + }, + "retrodeck_birthday": { + "start_date": "0304", + "end_date": "0304", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-gm-bday-splash.svg" + }, + "st_patricks_day": { + "start_date": "0317", + "end_date": "0317", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-stpatricks-splash.svg" + }, + "kodomo_golden_week": { + "start_date": "0429", + "end_date": "0505", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-kodomo-golden.svg" + } + }, + "incompatible_presets": { + "borders": "widescreen" + }, + "helper_files": { + "dolphin_mods": { + "filename": "how-to-install-dolphin-mods.txt", + "location": "$mods_folder/Dolphin" + }, + "primehack_mods": { + "filename": "how-to-install-primehack-mods.txt", + "location": "$mods_folder/Primehack" + }, + "mesen_textures": { + "filename": "how-to-install-Mesen-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mesen" + }, + "ppsspp_textures": { + "filename": "how-to-install-PPSSPP-textures.txt", + "location": "$texture_packs_folder/PPSSPP" + }, + "pcsx2_textures": { + "filename": "how-to-install-PCSX2-textures.txt", + "location": "$texture_packs_folder/PCSX2" + }, + "mupen64plus_cache_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" + }, + "mupen64plus_hires_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" + }, + "duckstation_textures": { + "filename": "how-to-install-Duckstation-textures.txt", + "location": "$texture_packs_folder/Duckstation" + }, + "psvita_games": { + "filename": "how-to-install-psvita-games.txt", + "location": "$roms_folder/psvita" + }, + "ryujinx_firmware": { + "filename": "Install-firmware-through-Ryujinx.txt", + "location": "$bios_folder/switch/firmware" + } + }, + "system": { + "libretro": { + "name": "RetroArch", + "emulator": { + "retroarch": { + "description": "RetroArch (Multi-emulator Frontend)", + "name": "RetroArch", + "launch": "retroarch", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true, + "quick_resume": true + } + ], + "cores": { + "citra_libretro": { + "description": "Nintendo 3DS Libretro Core", + "name": "Citra", + "properties": [ + { + "abxy_button": true } - } - }, - "nds" : { - "name": "Nintendo DS", - "folder" : "nds", - "emulator": { - "melonds" : { - "description": "MelonDS Nintendo DS Emulator", - "name": "melonds", - "launch" : "MelonDS", - "bios": { - "bios7": { - "filename": "bios7.bin", - "hash": "df692a80a5b1bc90728bc3dfc76cd948", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - }, - "bios9": { - "filename": "bios9.bin", - "hash": "a392174eb3e572fed6447e956bde4b25", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - }, - "firmware": { - "filename": "firmware.bin", - "hash": "e45033d9b0fa6b0de071292bba7c9d13", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - } - } - } - } - }, - "ps2" : { - "name": "Sony PlayStation 2", - "folder" : "ps2", - "emulator" : { - "pcsx2" : { - "name" : "pcsx2", - "description": "PCSX2 Play Station 2 Emulator", - "bios": { - "ps2-0200a": { - "filename": "ps2-0200a-20040614.bin", - "hash": "d333558cc14561c1fdc334c75d5f37b7", - "description": "PS2 US BIOS", - "required": "At least one" - }, - "ps2-0200e": { - "filename": "ps2-0200e-20040614.bin", - "hash": "dc752f160044f2ed5fc1f4964db2a095", - "description": "PS2 EU BIOS", - "required": "At least one" - }, - "ps2-0200j": { - "filename": "ps2-0200j-20040614.bin", - "hash": "0eee5d1c779aa50e94edd168b4ebf42e", - "description": "PS2 JP BIOS", - "required": "At least one" - } - }, - "properties": [{ - "ask_to_exit": true, - "cheevos" : true - }] - } - } - }, - "psx" : { - "name": "Sony PlayStation", - "folder" : "psx", - "bios": { - "psxonpsp660": { - "filename": "psxonpsp660.bin", - "description": "PS1 BIOS from PSP", - "hash": "c53ca5908936d412331790f4426c6c33", - "required": "At least one" - }, - "scph5500": { - "filename": "scph5500.bin", - "description": "PS1 JP BIOS", - "hash": "8dd7d5296a650fac7319bce665a6a53c", - "required": "At least one" - }, - "scph5501": { - "filename": "scph5501.bin", - "description": "PS1 US BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph5502": { - "filename": "scph5502.bin", - "description": "PS1 EU BIOS", - "hash": "32736f17079d0b2b7024407c39bd3050", - "required": "At least one" - }, - "scph7001": { - "filename": "scph7001.bin", - "description": "PS1 BIOS", - "hash": "1e68c231d0896b7eadcad1d7d8e76129", - "required": "At least one" - }, - "scph7002": { - "filename": "scph7002.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph7003": { - "filename": "scph7003.bin", - "description": "PS1 BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph7502": { - "filename": "scph7502.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph9002_7502": { - "filename": "scph9002(7502).bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "ps1_rom": { - "filename": "ps1_rom.bin", - "description": "PS1 BIOS", - "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", - "required": "At least one" - } + ] }, - "emulator": { - "duckstation" : { - "name" : "Duckstation", - "description" : "PlayStation Emulator", - "launch" : "duckstation-qt", - "properties": [{ - "ask_to_exit": true, - "cheevos" : true - }] + "mame_libretro": { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "properties": [ + { + "tate_mode": true } - } - }, - "psp" : { - "name" : "Sony PSP: PlayStation Portable", - "folder" : "psp", - "emulator" : { - "ppsspp" : { - "name" : "PPSSPP", - "description" : "PPSSPP: PlayStation Portable Emulator", - "launch" : "PPSSPPSDL", - "properties": [{ - "cheevos" : true, - "cheevos_hardcore" : true - }] - } - } - }, - "psvita" : { - "name" : "Sony PlayStation Vita", - "folder" : "psvita", - "emulator" : { - "vita3k" : { - "name" : "Vita3k", - "description" : "Vita3K PSVita Emulator", - "launch" : "Vita3K" - } - } - }, - "rpcs3" : { - "name" : "Sony PlayStation 3", - "folder" : "ps3", - "emulator" : { - "rpcs3" : { - "name" : "RPCS3", - "description" : "RPCS3 PlayStation 3 Emulator", - "launch" : "rpcs3" - }, - "properties": [{ - "ask_to_exit": true - }] - } - }, - "switch" : { - "name" : "Nintendo Switch", - "folder" : "switch", - "emulator" : { - "ryujinx" : { - "name": "Ryujinx", - "description" : "Ryujinx Nintendo Switch Emulator", - "launch" : "Ryujinx.sh" - }, - "yuzu" : { - "name": "Yuzu (via Ponzu)", - "description" : "Yuzu Nintendo Switch Emulator (via Ponzu)", - "launch" : "Yuzu", - "ponzu" : true, - "abxy_button": true - } - } - }, - "gc" : { - "name": "Nintendo GameCube", - "folder" : "gc", - "emulator" : { - "dolphin" : { - "name" : "Dolphin", - "description" : "Dolphin Wii and GameCube Emulator", - "launch" : "dolphin-emu-wrapper", - "properties": [{ - "abxy_button": true, - "ask_to_exit": true, - "cheevos" : true, - "cheevos_hardcore" : true, - "universal_dyn_input": true - }] - } - } - }, - "wii" : { - "name": "Nintendo Wii", - "folder" : "wii", - "emulator" : { - "dolphin" : { - "name" : "Dolphin", - "description" : "Dolphin Wii and GameCube Emulator", - "launch" : "dolphin-emu-wrapper", - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true, - "cheevos" : true, - "cheevos_hardcore" : true, - "universal_dyn_input": true - } - ] - }, - "primehack" : { - "name" : "PrimeHack", - "description" : "A fork of Dolphiin to enhance Metroid Prime experience", - "launch" : "primehack-wrapper", - "properties": [{ - "ask_to_exit": true, - "universal_dyn_input": true - }] - } - } - }, - "wiiu" : { - "name": "Nintendo Wii U", - "folder" : "wiiu", - "emulator" : { - "cemu": { - "description": "Wii U emulator", - "name" : "Cemu", - "launch" : "Cemu-wrapper", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir" : "Cemu" - } - ] + ] + }, + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "properties": [ + { + "abxy_button": true } + ] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation Libretro Core", + "properties": [ + { + "widescreen": true, + "borders": true + } + ] + }, + "picodrive_libetro": { + "name": "PicoDrive", + "description": "SEGA MS/MD/CD/32X Libretro Core", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgx_libetro": { + "name": "Genesis Plus GX", + "description": "SEGA MS/GG/MD/CD Libretro Core", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgxwide_libetro": { + "name": "Genesis Plus GX Wide", + "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", + "properties": [ + { + "widescreen": true, + "rewind": true + } + ] + }, + "mupen64plus-next_libetro": { + "name": "Mupen64Plus-Next", + "description": "Nintendo 64 Libretro Core", + "properties": [ + { + "widescreen": true, + "borders": true, + "abxy_button": true + } + ] + }, + "snes9x-current_libetro": { + "name": "Snes9x - Current", + "description": "Super Nintendo Libretro Core", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "gambatte_libetro": { + "name": "Gambatte", + "description": "Game Boy/Color Libretro Core", + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "mgba_libetro": { + "name": "mGBA", + "description": "Game Boy Advance Libretro Core", + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] } + } + } + } + }, + "arcade": { + "name": "Arcade", + "folder": "arcade", + "emulator": { + "mame": { + "description": "MAME: Multiple Arcade Machine Emulator", + "name": "MAME", + "launch": "mame" + } + } + }, + "n3ds": { + "name": "Nintendo 3DS", + "folder": "n3ds", + "emulator": { + "citra": { + "description": "Citra Nintendo 3DS Emulator (via Ponzu)", + "name": "Citra (via Ponzu)", + "ponzu": true, + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true + } + ] + } + } + }, + "nds": { + "name": "Nintendo DS", + "folder": "nds", + "emulator": { + "melonds": { + "description": "MelonDS Nintendo DS Emulator", + "name": "melonds", + "launch": "MelonDS", + "bios": { + "bios7": { + "filename": "bios7.bin", + "hash": "df692a80a5b1bc90728bc3dfc76cd948", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + }, + "bios9": { + "filename": "bios9.bin", + "hash": "a392174eb3e572fed6447e956bde4b25", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + }, + "firmware": { + "filename": "firmware.bin", + "hash": "e45033d9b0fa6b0de071292bba7c9d13", + "description": "Used by MelonDS emulator", + "required": "Required, see Wiki" + } + } + } + } + }, + "ps2": { + "name": "Sony PlayStation 2", + "folder": "ps2", + "emulator": { + "pcsx2": { + "name": "pcsx2", + "description": "PCSX2 Play Station 2 Emulator", + "bios": { + "ps2-0200a": { + "filename": "ps2-0200a-20040614.bin", + "hash": "d333558cc14561c1fdc334c75d5f37b7", + "description": "PS2 US BIOS", + "required": "At least one" + }, + "ps2-0200e": { + "filename": "ps2-0200e-20040614.bin", + "hash": "dc752f160044f2ed5fc1f4964db2a095", + "description": "PS2 EU BIOS", + "required": "At least one" + }, + "ps2-0200j": { + "filename": "ps2-0200j-20040614.bin", + "hash": "0eee5d1c779aa50e94edd168b4ebf42e", + "description": "PS2 JP BIOS", + "required": "At least one" + } + }, + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + } + } + }, + "psx": { + "name": "Sony PlayStation", + "folder": "psx", + "bios": { + "psxonpsp660": { + "filename": "psxonpsp660.bin", + "description": "PS1 BIOS from PSP", + "hash": "c53ca5908936d412331790f4426c6c33", + "required": "At least one" }, - "xbox" : { - "name" : "Microsoft XBOX", - "folder" : "xbox", - "emulator" : { - "xemu" : { - "description": "xemu Xbox Emulator", - "name" : "xemu", - "launch" : "xemu" - } - } - } - } -} \ No newline at end of file + "scph5500": { + "filename": "scph5500.bin", + "description": "PS1 JP BIOS", + "hash": "8dd7d5296a650fac7319bce665a6a53c", + "required": "At least one" + }, + "scph5501": { + "filename": "scph5501.bin", + "description": "PS1 US BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph5502": { + "filename": "scph5502.bin", + "description": "PS1 EU BIOS", + "hash": "32736f17079d0b2b7024407c39bd3050", + "required": "At least one" + }, + "scph7001": { + "filename": "scph7001.bin", + "description": "PS1 BIOS", + "hash": "1e68c231d0896b7eadcad1d7d8e76129", + "required": "At least one" + }, + "scph7002": { + "filename": "scph7002.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph7003": { + "filename": "scph7003.bin", + "description": "PS1 BIOS", + "hash": "490f666e1afb15b7362b406ed1cea246", + "required": "At least one" + }, + "scph7502": { + "filename": "scph7502.bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "scph9002_7502": { + "filename": "scph9002(7502).bin", + "description": "PS1 BIOS", + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "required": "At least one" + }, + "ps1_rom": { + "filename": "ps1_rom.bin", + "description": "PS1 BIOS", + "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", + "required": "At least one" + } + }, + "emulator": { + "duckstation": { + "name": "Duckstation", + "description": "PlayStation Emulator", + "launch": "duckstation-qt", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + } + } + }, + "psp": { + "name": "Sony PSP: PlayStation Portable", + "folder": "psp", + "emulator": { + "ppsspp": { + "name": "PPSSPP", + "description": "PPSSPP: PlayStation Portable Emulator", + "launch": "PPSSPPSDL", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true + } + ] + } + } + }, + "psvita": { + "name": "Sony PlayStation Vita", + "folder": "psvita", + "emulator": { + "vita3k": { + "name": "Vita3k", + "description": "Vita3K PSVita Emulator", + "launch": "Vita3K" + } + } + }, + "rpcs3": { + "name": "Sony PlayStation 3", + "folder": "ps3", + "emulator": { + "rpcs3": { + "name": "RPCS3", + "description": "RPCS3 PlayStation 3 Emulator", + "launch": "rpcs3" + }, + "properties": [ + { + "ask_to_exit": true + } + ] + } + }, + "switch": { + "name": "Nintendo Switch", + "folder": "switch", + "emulator": { + "ryujinx": { + "name": "Ryujinx", + "description": "Ryujinx Nintendo Switch Emulator", + "launch": "Ryujinx.sh" + }, + "yuzu": { + "name": "Yuzu (via Ponzu)", + "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", + "launch": "Yuzu", + "ponzu": true, + "abxy_button": true + } + } + }, + "gc": { + "name": "Nintendo GameCube", + "folder": "gc", + "emulator": { + "dolphin": { + "name": "Dolphin", + "description": "Dolphin Wii and GameCube Emulator", + "launch": "dolphin-emu-wrapper", + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true, + "cheevos": true, + "cheevos_hardcore": true, + "universal_dyn_input": true + } + ] + } + } + }, + "wii": { + "name": "Nintendo Wii", + "folder": "wii", + "emulator": { + "dolphin": { + "name": "Dolphin", + "description": "Dolphin Wii and GameCube Emulator", + "launch": "dolphin-emu-wrapper", + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true, + "cheevos": true, + "cheevos_hardcore": true, + "universal_dyn_input": true + } + ] + }, + "primehack": { + "name": "PrimeHack", + "description": "A fork of Dolphiin to enhance Metroid Prime experience", + "launch": "primehack-wrapper", + "properties": [ + { + "ask_to_exit": true, + "universal_dyn_input": true + } + ] + } + } + }, + "wiiu": { + "name": "Nintendo Wii U", + "folder": "wiiu", + "emulator": { + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "launch": "Cemu-wrapper", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir": "Cemu" + } + ] + } + } + }, + "xbox": { + "name": "Microsoft XBOX", + "folder": "xbox", + "emulator": { + "xemu": { + "description": "xemu Xbox Emulator", + "name": "xemu", + "launch": "xemu" + } + } + } + } +} From c21f7af8633db0ccbae34b341619566d5eef8f80 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 21:59:39 +0900 Subject: [PATCH 18/29] FEATURES: added more bioses --- .../retrodeck/reference_lists/features.json | 70 ++++++++++++++++++- .../reference_lists/finit_options_list.cfg | 3 - 2 files changed, 67 insertions(+), 6 deletions(-) delete mode 100644 config/retrodeck/reference_lists/finit_options_list.cfg diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 25635b4a..50b370bd 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -273,7 +273,21 @@ "rewind": true, "abxy_button": true } - ] + ], + "bios": { + "gb_bios": { + "filename": "gb_bios.bin", + "hash": "32fbbd84168d3482956eb3c5051637f5", + "description": "Game Boy BIOS", + "required": "Optional BIOS file (used to display the Nintendo logo at boot)" + }, + "gbc_bios": { + "filename": "gbc_bios.bin", + "hash": "dbfce9db9deaa2567f6a84fde55f9680", + "description": "Game Boy Color BIOS", + "required": "Optional BIOS file (used to display the Nintendo logo at boot)" + } + } }, "mgba_libetro": { "name": "mGBA", @@ -284,7 +298,15 @@ "rewind": true, "abxy_button": true } - ] + ], + "bios": { + "gba_bios": { + "filename": "gba_bios.bin", + "hash": "a860e8c0b6d573d191e4ec7db1b1e4f6", + "description": "Game Boy Advance BIOS", + "required": "Optional BIOS file (used to display the Nintendo logo at boot)" + } + } } } } @@ -524,6 +546,22 @@ "ponzu": true, "abxy_button": true } + }, + "bios": { + "bios": { + "prod_keys": { + "filename": "prod.keys", + "hash": "Unknown", + "description": "Nintendo Switch key file", + "required": "A file for Switch emulation in Ryujinx (Required)" + }, + "title_keys": { + "filename": "title.keys", + "hash": "Unknown", + "description": "Nintendo Switch key file", + "required": "A file for Switch emulation in Ryujinx (Required)" + } + } } }, "gc": { @@ -601,7 +639,33 @@ "xemu": { "description": "xemu Xbox Emulator", "name": "xemu", - "launch": "xemu" + "launch": "xemu", + "bios": { + "mcpx_1.0": { + "filename": "mcpx_1.0.bin", + "hash": "d49c52a4102f6df7bcf8d0617ac475ed", + "description": "Microsoft XBOX BIOS", + "required": "no" + }, + "complex": { + "filename": "Complex.bin", + "hash": "Unknown", + "description": "Microsoft XBOX BIOS", + "required": "no" + }, + "complex_4627v1.03": { + "filename": "Complex_4627v1.03.bin", + "hash": "Unknown", + "description": "Microsoft XBOX BIOS", + "required": "no" + }, + "complex_4627": { + "filename": "Complex_4627.bin", + "hash": "Unknown", + "description": "Microsoft XBOX BIOS", + "required": "no" + } + } } } } diff --git a/config/retrodeck/reference_lists/finit_options_list.cfg b/config/retrodeck/reference_lists/finit_options_list.cfg deleted file mode 100644 index fdf9f19b..00000000 --- a/config/retrodeck/reference_lists/finit_options_list.cfg +++ /dev/null @@ -1,3 +0,0 @@ -true^RetroDECK Steam Controller Profiles Install^Install RetroDECK Steam Input profiles to Steam - Recommended^rd_controller_profile -false^RPCS3 Firmware Install^Install firmware needed for PS3 emulation^rpcs3_firmware -false^Vita3K Firmware Install^Install firmware needed for Vita3K emulation^vita3k_firmware From 92293539435d73f2c8918c2b9260936f8124f37a Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 22:03:05 +0900 Subject: [PATCH 19/29] FEATURES: removed the bioses --- .../retrodeck/reference_lists/features.json | 174 +----------------- 1 file changed, 4 insertions(+), 170 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 50b370bd..45652b36 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -273,21 +273,7 @@ "rewind": true, "abxy_button": true } - ], - "bios": { - "gb_bios": { - "filename": "gb_bios.bin", - "hash": "32fbbd84168d3482956eb3c5051637f5", - "description": "Game Boy BIOS", - "required": "Optional BIOS file (used to display the Nintendo logo at boot)" - }, - "gbc_bios": { - "filename": "gbc_bios.bin", - "hash": "dbfce9db9deaa2567f6a84fde55f9680", - "description": "Game Boy Color BIOS", - "required": "Optional BIOS file (used to display the Nintendo logo at boot)" - } - } + ] }, "mgba_libetro": { "name": "mGBA", @@ -298,15 +284,7 @@ "rewind": true, "abxy_button": true } - ], - "bios": { - "gba_bios": { - "filename": "gba_bios.bin", - "hash": "a860e8c0b6d573d191e4ec7db1b1e4f6", - "description": "Game Boy Advance BIOS", - "required": "Optional BIOS file (used to display the Nintendo logo at boot)" - } - } + ] } } } @@ -347,27 +325,7 @@ "melonds": { "description": "MelonDS Nintendo DS Emulator", "name": "melonds", - "launch": "MelonDS", - "bios": { - "bios7": { - "filename": "bios7.bin", - "hash": "df692a80a5b1bc90728bc3dfc76cd948", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - }, - "bios9": { - "filename": "bios9.bin", - "hash": "a392174eb3e572fed6447e956bde4b25", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - }, - "firmware": { - "filename": "firmware.bin", - "hash": "e45033d9b0fa6b0de071292bba7c9d13", - "description": "Used by MelonDS emulator", - "required": "Required, see Wiki" - } - } + "launch": "MelonDS" } } }, @@ -378,26 +336,6 @@ "pcsx2": { "name": "pcsx2", "description": "PCSX2 Play Station 2 Emulator", - "bios": { - "ps2-0200a": { - "filename": "ps2-0200a-20040614.bin", - "hash": "d333558cc14561c1fdc334c75d5f37b7", - "description": "PS2 US BIOS", - "required": "At least one" - }, - "ps2-0200e": { - "filename": "ps2-0200e-20040614.bin", - "hash": "dc752f160044f2ed5fc1f4964db2a095", - "description": "PS2 EU BIOS", - "required": "At least one" - }, - "ps2-0200j": { - "filename": "ps2-0200j-20040614.bin", - "hash": "0eee5d1c779aa50e94edd168b4ebf42e", - "description": "PS2 JP BIOS", - "required": "At least one" - } - }, "properties": [ { "ask_to_exit": true, @@ -410,68 +348,6 @@ "psx": { "name": "Sony PlayStation", "folder": "psx", - "bios": { - "psxonpsp660": { - "filename": "psxonpsp660.bin", - "description": "PS1 BIOS from PSP", - "hash": "c53ca5908936d412331790f4426c6c33", - "required": "At least one" - }, - "scph5500": { - "filename": "scph5500.bin", - "description": "PS1 JP BIOS", - "hash": "8dd7d5296a650fac7319bce665a6a53c", - "required": "At least one" - }, - "scph5501": { - "filename": "scph5501.bin", - "description": "PS1 US BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph5502": { - "filename": "scph5502.bin", - "description": "PS1 EU BIOS", - "hash": "32736f17079d0b2b7024407c39bd3050", - "required": "At least one" - }, - "scph7001": { - "filename": "scph7001.bin", - "description": "PS1 BIOS", - "hash": "1e68c231d0896b7eadcad1d7d8e76129", - "required": "At least one" - }, - "scph7002": { - "filename": "scph7002.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph7003": { - "filename": "scph7003.bin", - "description": "PS1 BIOS", - "hash": "490f666e1afb15b7362b406ed1cea246", - "required": "At least one" - }, - "scph7502": { - "filename": "scph7502.bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "scph9002_7502": { - "filename": "scph9002(7502).bin", - "description": "PS1 BIOS", - "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", - "required": "At least one" - }, - "ps1_rom": { - "filename": "ps1_rom.bin", - "description": "PS1 BIOS", - "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", - "required": "At least one" - } - }, "emulator": { "duckstation": { "name": "Duckstation", @@ -546,22 +422,6 @@ "ponzu": true, "abxy_button": true } - }, - "bios": { - "bios": { - "prod_keys": { - "filename": "prod.keys", - "hash": "Unknown", - "description": "Nintendo Switch key file", - "required": "A file for Switch emulation in Ryujinx (Required)" - }, - "title_keys": { - "filename": "title.keys", - "hash": "Unknown", - "description": "Nintendo Switch key file", - "required": "A file for Switch emulation in Ryujinx (Required)" - } - } } }, "gc": { @@ -639,33 +499,7 @@ "xemu": { "description": "xemu Xbox Emulator", "name": "xemu", - "launch": "xemu", - "bios": { - "mcpx_1.0": { - "filename": "mcpx_1.0.bin", - "hash": "d49c52a4102f6df7bcf8d0617ac475ed", - "description": "Microsoft XBOX BIOS", - "required": "no" - }, - "complex": { - "filename": "Complex.bin", - "hash": "Unknown", - "description": "Microsoft XBOX BIOS", - "required": "no" - }, - "complex_4627v1.03": { - "filename": "Complex_4627v1.03.bin", - "hash": "Unknown", - "description": "Microsoft XBOX BIOS", - "required": "no" - }, - "complex_4627": { - "filename": "Complex_4627.bin", - "hash": "Unknown", - "description": "Microsoft XBOX BIOS", - "required": "no" - } - } + "launch": "xemu" } } } From ae0eaf7297ed600253a457593dff3275c77ff3f5 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 22:12:32 +0900 Subject: [PATCH 20/29] FEATURES: migrated incompatible_presets --- functions/global.sh | 1 - functions/presets.sh | 11 ++++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/functions/global.sh b/functions/global.sh index f1cebd58..4f282f40 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -50,7 +50,6 @@ rd_appdata="/app/share/appdata/net.retrodeck.retrodeck.appdata.xml" rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2023_0228_05fe32f5dc8c78acbcd84d36ee7fdc5b/PS3UPDAT.PUP" RA_API_URL="https://retroachievements.org/dorequest.php" # API URL for RetroAchievements.org presets_dir="$config/retrodeck/presets" # Repository for all system preset config files -incompatible_presets_reference_list="$config/retrodeck/reference_lists/incompatible_presets.cfg" # A config file listing all incompatible presets for reference (eg. cannot have borders and widescreen enabled simultaniously) pretty_system_names_reference_list="$config/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color) git_organization_name="RetroDECK" # The name of the organization in our git repository such as GitHub cooker_repository_name="Cooker" # The name of the cooker repository under RetroDECK organization diff --git a/functions/presets.sh b/functions/presets.sh index aac3c321..18f25dad 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -70,6 +70,15 @@ 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 + # Fetch incompatible presets from JSON and create a lookup list + incompatible_presets=$(jq -r ' + .incompatible_presets | to_entries[] | + [ + "\(.key):\(.value)", + "\(.value):\(.key)" + ] | join("\n") + ' $features) + IFS="," read -ra choices <<< "$choice" for emulator in "${all_systems[@]}"; do if [[ " ${choices[*]} " =~ " ${emulator} " && ! " ${current_enabled_systems[*]} " =~ " ${emulator} " ]]; then @@ -89,7 +98,7 @@ make_preset_changes() { fi fi fi - done < "$incompatible_presets_reference_list" + done < "$incompatible_presets" fi if [[ ! " ${choices[*]} " =~ " ${emulator} " && ! " ${current_disabled_systems[*]} " =~ " ${emulator} " ]]; then changed_systems=("${changed_systems[@]}" "$emulator") From 44d693f40e883649be663682c3726d170fc4f76d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 22:27:54 +0900 Subject: [PATCH 21/29] FEATURES: migrated deploy_helper_files and find_empty_rom_folders --- functions/configurator_functions.sh | 14 +++++--------- functions/global.sh | 1 - functions/other_functions.sh | 14 +++++++++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/functions/configurator_functions.sh b/functions/configurator_functions.sh index 768215b8..32f11a7f 100644 --- a/functions/configurator_functions.sh +++ b/functions/configurator_functions.sh @@ -44,14 +44,9 @@ find_empty_rom_folders() { empty_rom_folders_list=() all_empty_folders=() - all_helper_files=() - while IFS='^' read -r file dest || [[ -n "$file" ]]; - do - if [[ ! "$file" == "#"* ]] && [[ ! -z "$file" ]]; then - all_helper_files=("${all_helper_files[@]}" "$file") - fi - done < "$helper_files_list" + # Extract helper file names using jq and populate the all_helper_files array + all_helper_files=($(jq -r '.helper_files | to_entries | .[] | .value.filename' "$features")) for system in $(find "$roms_folder" -mindepth 1 -maxdepth 1 -type d -printf '%f\n') do @@ -70,8 +65,8 @@ find_empty_rom_folders() { all_empty_folders=("${all_empty_folders[@]}" "$(realpath $dir)") echo "$(realpath $dir)" >> "$godot_empty_roms_folders" # Godot data transfer temp file elif [[ $count -eq 2 ]] && [[ "$files" =~ "systeminfo.txt" ]]; then - # Directory contains 2 files, one of which is "systeminfo.txt" - for helper_file in ${all_helper_files[@]} # Compare helper file list to dir file list + contains_helper_file="false" + for helper_file in "${all_helper_files[@]}" # Compare helper file list to dir file list do if [[ "$files" =~ "$helper_file" ]]; then contains_helper_file="true" # Helper file was found @@ -87,3 +82,4 @@ find_empty_rom_folders() { fi done } + diff --git a/functions/global.sh b/functions/global.sh index 4f282f40..932e4822 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -45,7 +45,6 @@ remote_network_target_1="https://flathub.org" remote_network_target_2="$rd_repo" # The URL of a common internet target for testing network access remote_network_target_3="https://one.one.one.one" # The URL of a common internet target for testing network access helper_files_folder="$config/retrodeck/helper_files" # The parent folder of RetroDECK documentation files for deployment -helper_files_list="$config/retrodeck/reference_lists/helper_files_list.cfg" # The list of files to be deployed and where they go rd_appdata="/app/share/appdata/net.retrodeck.retrodeck.appdata.xml" # The shipped appdata XML file for this version rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2023_0228_05fe32f5dc8c78acbcd84d36ee7fdc5b/PS3UPDAT.PUP" RA_API_URL="https://retroachievements.org/dorequest.php" # API URL for RetroAchievements.org diff --git a/functions/other_functions.sh b/functions/other_functions.sh index e84fbaea..5b169f29 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -570,18 +570,22 @@ update_splashscreens() { } deploy_helper_files() { - # This script will distribute helper documentation files throughout the filesystem according to the $helper_files_list + # This script will distribute helper documentation files throughout the filesystem according to the JSON configuration # USAGE: deploy_helper_files - while IFS='^' read -r file dest || [[ -n "$file" ]]; - do - if [[ ! "$file" == "#"* ]] && [[ ! -z "$file" ]]; then + # Extract helper files information using jq + helper_files=$(jq -r '.helper_files | to_entries | map("\(.value.filename)^\(.value.location)")[]' "$features") + + # Iterate through each helper file entry + while IFS='^' read -r file dest; do + if [[ ! -z "$file" ]] && [[ ! -z "$dest" ]]; then eval current_dest="$dest" cp -f "$helper_files_folder/$file" "$current_dest/$file" fi - done < "$helper_files_list" + done <<< "$helper_files" } + splash_screen() { # This function will replace the RetroDECK startup splash screen with a different image if the day and time match a listing in the JSON data. # USAGE: splash_screen From affdee411a79bafa0b993a256fc6394372263f90 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Wed, 7 Aug 2024 22:31:57 +0900 Subject: [PATCH 22/29] FEATURES: migrated deploy_helper_files and find_empty_rom_folders --- .../reference_lists/helper_files_list.cfg | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 config/retrodeck/reference_lists/helper_files_list.cfg diff --git a/config/retrodeck/reference_lists/helper_files_list.cfg b/config/retrodeck/reference_lists/helper_files_list.cfg deleted file mode 100644 index 10630974..00000000 --- a/config/retrodeck/reference_lists/helper_files_list.cfg +++ /dev/null @@ -1,20 +0,0 @@ -# The proper format of this file is -# FILE NAME^DESTINATION -# The destination can be an internal variable name like $roms_folder if needed -# The FILE name can have spaces in it, but the DESTINATION cannot, even in variable form - -# mods -how-to-install-dolphin-mods.txt^$mods_folder/Dolphin -how-to-install-primehack-mods.txt^$mods_folder/Primehack - -# textures -how-to-install-Mesen-textures.txt^$texture_packs_folder/RetroArch-Mesen -how-to-install-PPSSPP-textures.txt^$texture_packs_folder/PPSSPP -how-to-install-PCSX2-textures.txt^$texture_packs_folder/PCSX2 -how-to-install-Mupen64Plus-textures.txt^$texture_packs_folder/RetroArch-Mupen64Plus/cache -how-to-install-Mupen64Plus-textures.txt^$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture -how-to-install-Duckstation-textures.txt^$texture_packs_folder/Duckstation - -# emulators -how-to-install-psvita-games.txt^$roms_folder/psvita -Install-firmware-through-Ryujinx.txt^$bios_folder/switch/firmware From 411940e3d6a1c5929e823e08075dc6db503759f7 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 8 Aug 2024 21:50:28 +0900 Subject: [PATCH 23/29] FEATURES: moved emulators outside system, added all the system pretty names --- .../retrodeck/reference_lists/features.json | 1100 ++++++++++++----- 1 file changed, 774 insertions(+), 326 deletions(-) diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 45652b36..f071eb2a 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -148,360 +148,808 @@ } }, "system": { - "libretro": { - "name": "RetroArch", - "emulator": { - "retroarch": { - "description": "RetroArch (Multi-emulator Frontend)", - "name": "RetroArch", - "launch": "retroarch", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true, - "quick_resume": true - } - ], - "cores": { - "citra_libretro": { - "description": "Nintendo 3DS Libretro Core", - "name": "Citra", - "properties": [ - { - "abxy_button": true - } - ] - }, - "mame_libretro": { - "description": "MAME: Multiple Arcade Machine Libretro Core", - "name": "MAME", - "properties": [ - { - "tate_mode": true - } - ] - }, - "desmume_libretro": { - "description": "DeSmuME Nintendo DS Libretro Core", - "name": "desmume", - "properties": [ - { - "abxy_button": true - } - ] - }, - "melonds_libretro": { - "description": "MelonDS Nintendo DS Libretro Core", - "name": "melonds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "swanstation_libretro": { - "name": "SwanStation", - "description": "Swanstation Libretro Core", - "properties": [ - { - "widescreen": true, - "borders": true - } - ] - }, - "picodrive_libetro": { - "name": "PicoDrive", - "description": "SEGA MS/MD/CD/32X Libretro Core", - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgx_libetro": { - "name": "Genesis Plus GX", - "description": "SEGA MS/GG/MD/CD Libretro Core", - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgxwide_libetro": { - "name": "Genesis Plus GX Wide", - "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", - "properties": [ - { - "widescreen": true, - "rewind": true - } - ] - }, - "mupen64plus-next_libetro": { - "name": "Mupen64Plus-Next", - "description": "Nintendo 64 Libretro Core", - "properties": [ - { - "widescreen": true, - "borders": true, - "abxy_button": true - } - ] - }, - "snes9x-current_libetro": { - "name": "Snes9x - Current", - "description": "Super Nintendo Libretro Core", - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "gambatte_libetro": { - "name": "Gambatte", - "description": "Game Boy/Color Libretro Core", - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "mgba_libetro": { - "name": "mGBA", - "description": "Game Boy Advance Libretro Core", - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - } - } - } - } + "3do": { + "name": "3DO Interactive Multiplayer" + }, + "adam": { + "name": "Coleco Adam" + }, + "amiga": { + "name": "Commodore Amiga" + }, + "amiga1200": { + "name": "Commodore Amiga 1200" + }, + "amiga600": { + "name": "Commodore Amiga 600" + }, + "amigacd32": { + "name": "Commodore Amiga CD32" + }, + "amstradcpc": { + "name": "Amstrad CPC" + }, + "apple2": { + "name": "Apple II" + }, + "apple2gs": { + "name": "Apple IIGS" }, "arcade": { - "name": "Arcade", - "folder": "arcade", - "emulator": { - "mame": { - "description": "MAME: Multiple Arcade Machine Emulator", - "name": "MAME", - "launch": "mame" - } - } + "name": "Arcade" }, - "n3ds": { - "name": "Nintendo 3DS", - "folder": "n3ds", - "emulator": { - "citra": { - "description": "Citra Nintendo 3DS Emulator (via Ponzu)", - "name": "Citra (via Ponzu)", - "ponzu": true, - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true - } - ] - } - } + "arcadia": { + "name": "Emerson Arcadia 2001" }, - "nds": { - "name": "Nintendo DS", - "folder": "nds", - "emulator": { - "melonds": { - "description": "MelonDS Nintendo DS Emulator", - "name": "melonds", - "launch": "MelonDS" - } - } + "archimedes": { + "name": "Acorn Archimedes" }, - "ps2": { - "name": "Sony PlayStation 2", - "folder": "ps2", - "emulator": { - "pcsx2": { - "name": "pcsx2", - "description": "PCSX2 Play Station 2 Emulator", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - } - } + "arduboy": { + "name": "Arduboy Miniature Game System" }, - "psx": { - "name": "Sony PlayStation", - "folder": "psx", - "emulator": { - "duckstation": { - "name": "Duckstation", - "description": "PlayStation Emulator", - "launch": "duckstation-qt", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - } - } + "astrocde": { + "name": "Bally Astrocade" }, - "psp": { - "name": "Sony PSP: PlayStation Portable", - "folder": "psp", - "emulator": { - "ppsspp": { - "name": "PPSSPP", - "description": "PPSSPP: PlayStation Portable Emulator", - "launch": "PPSSPPSDL", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true - } - ] - } - } + "atari2600": { + "name": "Atari 2600" }, - "psvita": { - "name": "Sony PlayStation Vita", - "folder": "psvita", - "emulator": { - "vita3k": { - "name": "Vita3k", - "description": "Vita3K PSVita Emulator", - "launch": "Vita3K" - } - } + "atari5200": { + "name": "Atari 5200" }, - "rpcs3": { - "name": "Sony PlayStation 3", - "folder": "ps3", - "emulator": { - "rpcs3": { - "name": "RPCS3", - "description": "RPCS3 PlayStation 3 Emulator", - "launch": "rpcs3" - }, - "properties": [ - { - "ask_to_exit": true - } - ] - } + "atari7800": { + "name": "Atari 7800 ProSystem" }, - "switch": { - "name": "Nintendo Switch", - "folder": "switch", - "emulator": { - "ryujinx": { - "name": "Ryujinx", - "description": "Ryujinx Nintendo Switch Emulator", - "launch": "Ryujinx.sh" - }, - "yuzu": { - "name": "Yuzu (via Ponzu)", - "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", - "launch": "Yuzu", - "ponzu": true, - "abxy_button": true - } - } + "atari800": { + "name": "Atari 800" + }, + "atarijaguar": { + "name": "Atari Jaguar" + }, + "atarilynx": { + "name": "Atari Lynx" + }, + "atarist": { + "name": "Atari ST" + }, + "atarixe": { + "name": "Atari XE" + }, + "atomiswave": { + "name": "Sammy Corporation Atomiswave" + }, + "bbcmicro": { + "name": "Acorn Computers BBC Micro" + }, + "c64": { + "name": "Commodore 64" + }, + "cdimono1": { + "name": "Philips CD-i" + }, + "cdtv": { + "name": "Commodore CDTV" + }, + "chailove": { + "name": "ChaiLove Game Engine" + }, + "channelf": { + "name": "Fairchild Channel F" + }, + "colecovision": { + "name": "Coleco ColecoVision" + }, + "consolearcade": { + "name": "Console Arcade Systems" + }, + "cps": { + "name": "Capcom Play System" + }, + "cps1": { + "name": "Capcom Play System I" + }, + "cps2": { + "name": "Capcom Play System II" + }, + "cps3": { + "name": "Capcom Play System III" + }, + "crvision": { + "name": "VTech CreatiVision" + }, + "daphne": { + "name": "Daphne Arcade LaserDisc Emulator" + }, + "desktop": { + "name": "Desktop Applications" + }, + "doom": { + "name": "Doom" + }, + "dos": { + "name": "DOS (PC)" + }, + "dreamcast": { + "name": "Sega Dreamcast" + }, + "easyrpg": { + "name": "EasyRPG Game Engine" + }, + "electron": { + "name": "Acorn Electron" + }, + "emulators": { + "name": "Emulators" + }, + "famicom": { + "name": "Nintendo Family Computer" + }, + "fba": { + "name": "FinalBurn Alpha" + }, + "fbneo": { + "name": "FinalBurn Neo" + }, + "fds": { + "name": "Nintendo Famicom Disk System" + }, + "fm7": { + "name": "Fujitsu FM-7" + }, + "fmtowns": { + "name": "Fujitsu FM Towns" + }, + "gamate": { + "name": "Bit Corporation Gamate" + }, + "gameandwatch": { + "name": "Nintendo Game and Watch" + }, + "gamecom": { + "name": "Tiger Electronics Game.com" + }, + "gamegear": { + "name": "Sega Game Gear" + }, + "gb": { + "name": "Nintendo Game Boy" + }, + "gba": { + "name": "Nintendo Game Boy Advance" + }, + "gbc": { + "name": "Nintendo Game Boy Color" }, "gc": { - "name": "Nintendo GameCube", - "folder": "gc", - "emulator": { - "dolphin": { - "name": "Dolphin", - "description": "Dolphin Wii and GameCube Emulator", - "launch": "dolphin-emu-wrapper", - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true, - "cheevos": true, - "cheevos_hardcore": true, - "universal_dyn_input": true - } - ] - } - } + "name": "Nintendo GameCube" + }, + "genesis": { + "name": "Sega Genesis" + }, + "gmaster": { + "name": "Hartung Game Master" + }, + "gx4000": { + "name": "Amstrad GX4000" + }, + "intellivision": { + "name": "Mattel Electronics Intellivision" + }, + "j2me": { + "name": "Java 2 Micro Edition (J2ME)" + }, + "laserdisc": { + "name": "LaserDisc Games" + }, + "lcdgames": { + "name": "LCD Handheld Games" + }, + "lowresnx": { + "name": "LowRes NX Fantasy Console" + }, + "lutris": { + "name": "Lutris Open Gaming Platform" + }, + "lutro": { + "name": "Lutro Game Engine" + }, + "macintosh": { + "name": "Apple Macintosh" + }, + "mame": { + "name": "Multiple Arcade Machine Emulator" + }, + "mastersystem": { + "name": "Sega Master System" + }, + "megacd": { + "name": "Sega Mega-CD" + }, + "megacdjp": { + "name": "Sega Mega-CD" + }, + "megadrive": { + "name": "Sega Mega Drive" + }, + "megaduck": { + "name": "Creatronic Mega Duck" + }, + "mess": { + "name": "Multi Emulator Super System" + }, + "model2": { + "name": "Sega Model 2" + }, + "moto": { + "name": "Thomson MO/TO Series" + }, + "msx": { + "name": "MSX" + }, + "msx1": { + "name": "MSX1" + }, + "msx2": { + "name": "MSX2" + }, + "msxturbor": { + "name": "MSX Turbo R" + }, + "mugen": { + "name": "M.U.G.E.N Game Engine" + }, + "multivision": { + "name": "Othello Multivision" + }, + "n3ds": { + "name": "Nintendo 3DS" + }, + "n64": { + "name": "Nintendo 64" + }, + "n64dd": { + "name": "Nintendo 64DD" + }, + "naomi": { + "name": "Sega NAOMI" + }, + "naomi2": { + "name": "Sega NAOMI 2" + }, + "naomigd": { + "name": "Sega NAOMI GD-ROM" + }, + "nds": { + "name": "Nintendo DS" + }, + "neogeo": { + "name": "SNK Neo Geo" + }, + "neogeocd": { + "name": "SNK Neo Geo CD" + }, + "neogeocdjp": { + "name": "SNK Neo Geo CD" + }, + "nes": { + "name": "Nintendo Entertainment System" + }, + "ngp": { + "name": "SNK Neo Geo Pocket" + }, + "ngpc": { + "name": "SNK Neo Geo Pocket Color" + }, + "odyssey2": { + "name": "Magnavox Odyssey 2" + }, + "openbor": { + "name": "OpenBOR Game Engine" + }, + "palm": { + "name": "Palm OS" + }, + "pc": { + "name": "IBM PC" + }, + "pc88": { + "name": "NEC PC-8800 Series" + }, + "pc98": { + "name": "NEC PC-9800 Series" + }, + "pcarcade": { + "name": "PC Arcade Systems" + }, + "pcengine": { + "name": "NEC PC Engine" + }, + "pcenginecd": { + "name": "NEC PC Engine CD" + }, + "pcfx": { + "name": "NEC PC-FX" + }, + "pico8": { + "name": "PICO-8 Fantasy Console" + }, + "plus4": { + "name": "Commodore Plus/4" + }, + "pokemini": { + "name": "Nintendo Pokémon Mini" + }, + "ports": { + "name": "Ports" + }, + "ps2": { + "name": "Sony PlayStation 2" + }, + "ps3": { + "name": "Sony PlayStation 3" + }, + "psp": { + "name": "Sony PlayStation Portable" + }, + "psvita": { + "name": "Sony PlayStation Vita" + }, + "psx": { + "name": "Sony PlayStation" + }, + "pv1000": { + "name": "Casio PV-1000" + }, + "quake": { + "name": "Quake" + }, + "satellaview": { + "name": "Nintendo Satellaview" + }, + "saturn": { + "name": "Sega Saturn" + }, + "saturnjp": { + "name": "Sega Saturn" + }, + "scummvm": { + "name": "ScummVM Game Engine" + }, + "scv": { + "name": "Epoch Super Cassette Vision" + }, + "sega32x": { + "name": "Sega Mega Drive 32X" + }, + "sega32xjp": { + "name": "Sega Super 32X" + }, + "sega32xna": { + "name": "Sega Genesis 32X" + }, + "segacd": { + "name": "Sega CD" + }, + "sfc": { + "name": "Nintendo SFC (Super Famicom)" + }, + "sg-1000": { + "name": "Sega SG-1000" + }, + "sgb": { + "name": "Nintendo Super Game Boy" + }, + "snes": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "snesna": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "solarus": { + "name": "Solarus Game Engine" + }, + "spectravideo": { + "name": "Spectravideo" + }, + "stv": { + "name": "Sega Titan Video Game System" + }, + "sufami": { + "name": "Bandai SuFami Turbo" + }, + "supergrafx": { + "name": "NEC SuperGrafx" + }, + "supervision": { + "name": "Watara Supervision" + }, + "supracan": { + "name": "Funtech Super A'Can" + }, + "switch": { + "name": "Nintendo Switch" + }, + "tg-cd": { + "name": "NEC TurboGrafx-CD" + }, + "tg16": { + "name": "NEC TurboGrafx-16" + }, + "ti99": { + "name": "Texas Instruments TI-99" + }, + "tic80": { + "name": "TIC-80 Fantasy Computer" + }, + "to8": { + "name": "Thomson TO8" + }, + "uzebox": { + "name": "Uzebox Open Source Console" + }, + "vectrex": { + "name": "GCE Vectrex" + }, + "vic20": { + "name": "Commodore VIC-20" + }, + "videopac": { + "name": "Philips Videopac G7000" + }, + "virtualboy": { + "name": "Nintendo Virtual Boy" + }, + "vsmile": { + "name": "VTech V.Smile" + }, + "wasm4": { + "name": "WASM-4 Fantasy Console" }, "wii": { - "name": "Nintendo Wii", - "folder": "wii", - "emulator": { - "dolphin": { - "name": "Dolphin", - "description": "Dolphin Wii and GameCube Emulator", - "launch": "dolphin-emu-wrapper", + "name": "Nintendo Wii" + }, + "wiiu": { + "name": "Nintendo Wii U" + }, + "windows": { + "name": "Microsoft Windows" + }, + "windows3x": { + "name": "Microsoft Windows 3.x" + }, + "windows9x": { + "name": "Microsoft Windows 9x" + }, + "wonderswan": { + "name": "Bandai WonderSwan" + }, + "wonderswancolor": { + "name": "Bandai WonderSwan Color" + }, + "x1": { + "name": "Sharp X1" + }, + "x68000": { + "name": "Sharp X68000" + }, + "xbox": { + "name": "Microsoft Xbox" + }, + "zx81": { + "name": "Sinclair ZX81" + }, + "zxspectrum": { + "name": "Sinclair ZX Spectrum" + } + }, + "emulator": { + "retroarch": { + "description": "RetroArch (Multi-emulator Frontend)", + "name": "RetroArch", + "launch": "retroarch", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true, + "quick_resume": true + } + ], + "cores": { + "citra_libretro": { + "description": "Nintendo 3DS Libretro Core", + "name": "Citra", + "system": "n3ds", "properties": [ { - "abxy_button": true, - "ask_to_exit": true, - "cheevos": true, - "cheevos_hardcore": true, - "universal_dyn_input": true + "abxy_button": true } ] }, - "primehack": { - "name": "PrimeHack", - "description": "A fork of Dolphiin to enhance Metroid Prime experience", - "launch": "primehack-wrapper", + "mame_libretro": { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "system": "arcade", "properties": [ { - "ask_to_exit": true, - "universal_dyn_input": true + "tate_mode": true + } + ] + }, + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation Libretro Core", + "system": "psx", + "properties": [ + { + "widescreen": true, + "borders": true + } + ] + }, + "picodrive_libetro": { + "name": "PicoDrive", + "description": "SEGA MS/MD/CD/32X Libretro Core", + "system": [ + "ms", + "md", + "cd", + "32x" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgx_libetro": { + "name": "Genesis Plus GX", + "description": "SEGA MS/GG/MD/CD Libretro Core", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgxwide_libetro": { + "name": "Genesis Plus GX Wide", + "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "rewind": true + } + ] + }, + "mupen64plus-next_libetro": { + "name": "Mupen64Plus-Next", + "description": "Nintendo 64 Libretro Core", + "system": "n64", + "properties": [ + { + "widescreen": true, + "borders": true, + "abxy_button": true + } + ] + }, + "snes9x-current_libetro": { + "name": "Snes9x - Current", + "description": "Super Nintendo Libretro Core", + "system": "snes", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "gambatte_libetro": { + "name": "Gambatte", + "description": "Game Boy/Color Libretro Core", + "system": [ + "gb", + "gbc" + ], + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "mgba_libetro": { + "name": "mGBA", + "description": "Game Boy Advance Libretro Core", + "system": "gba", + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true } ] } } }, - "wiiu": { - "name": "Nintendo Wii U", - "folder": "wiiu", - "emulator": { - "cemu": { - "description": "Wii U emulator", - "name": "Cemu", - "launch": "Cemu-wrapper", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir": "Cemu" - } - ] - } - } + "mame": { + "description": "MAME: Multiple Arcade Machine Emulator", + "name": "MAME", + "system": [ + "arcade" + ], + "launch": "mame" }, - "xbox": { - "name": "Microsoft XBOX", - "folder": "xbox", - "emulator": { - "xemu": { - "description": "xemu Xbox Emulator", - "name": "xemu", - "launch": "xemu" + "citra": { + "description": "Citra Nintendo 3DS Emulator (via Ponzu)", + "name": "Citra (via Ponzu)", + "system": "n3ds", + "ponzu": true, + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true } - } + ] + }, + "melonds": { + "description": "MelonDS Nintendo DS Emulator", + "name": "melonds", + "system": "nds", + "launch": "MelonDS" + }, + "pcsx2": { + "name": "pcsx2", + "description": "PCSX2 Play Station 2 Emulator", + "system": "ps2", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "duckstation": { + "name": "Duckstation", + "description": "PlayStation Emulator", + "launch": "duckstation-qt", + "system": "psx", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "ppsspp": { + "name": "PPSSPP", + "description": "PPSSPP: PlayStation Portable Emulator", + "launch": "PPSSPPSDL", + "system": "psp", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true + } + ] + }, + "vita3k": { + "name": "Vita3k", + "description": "Vita3K PSVita Emulator", + "system": "psvita", + "launch": "Vita3K" + }, + "rpcs3": { + "name": "RPCS3", + "description": "RPCS3 PlayStation 3 Emulator", + "system": "ps3", + "launch": "rpcs3", + "properties": [ + { + "ask_to_exit": true + } + ] + }, + "ryujinx": { + "name": "Ryujinx", + "description": "Ryujinx Nintendo Switch Emulator", + "system": "switch", + "launch": "Ryujinx.sh" + }, + "yuzu": { + "name": "Yuzu (via Ponzu)", + "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", + "launch": "Yuzu", + "system": "switch", + "ponzu": true, + "abxy_button": true + }, + "dolphin": { + "name": "Dolphin", + "description": "Dolphin Wii and GameCube Emulator", + "launch": "dolphin-emu-wrapper", + "system": [ + "gc", + "wii" + ], + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true, + "cheevos": true, + "cheevos_hardcore": true, + "universal_dyn_input": true + } + ] + }, + "primehack": { + "name": "PrimeHack", + "description": "A fork of Dolphiin to enhance Metroid Prime experience", + "launch": "primehack-wrapper", + "system": [ + "wii" + ], + "properties": [ + { + "ask_to_exit": true, + "universal_dyn_input": true + } + ] + }, + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "system": "wiiu", + "launch": "Cemu-wrapper", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir": "Cemu" + } + ] + }, + "xemu": { + "description": "xemu Xbox Emulator", + "name": "xemu", + "system": "xbox", + "launch": "xemu" } } } From 66509f07f52b829dd4e7e18071e28e6cb0875822 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 8 Aug 2024 21:59:35 +0900 Subject: [PATCH 24/29] FEATURES: fixes due to the new structure --- retrodeck.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/retrodeck.sh b/retrodeck.sh index 9ba232bc..72177781 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -62,8 +62,7 @@ https://retrodeck.net # TODO: this is the jq to get all the resettable emulators list, generic component is missing # jq -r ' - # [.system[] | - # (.emulator // .emulators | to_entries[]) | + # [(.emulator | to_entries[]) | # select(.value.core == null and .value.resettable != false) | # .key] | sort | join("|") # ' "$features" From a96e6940ad32e44415a6709b1df33592130d5abb Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 9 Aug 2024 16:42:31 +0900 Subject: [PATCH 25/29] FEATURES: migrated pretty system names --- .../retrodeck/reference_lists/features.json | 6 +++++ .../reference_lists/pretty_system_names.cfg | 23 ------------------- .../reference_lists/supported_emulators.cfg | 15 ------------ functions/global.sh | 2 +- functions/other_functions.sh | 14 ++++++----- 5 files changed, 15 insertions(+), 45 deletions(-) delete mode 100644 config/retrodeck/reference_lists/pretty_system_names.cfg delete mode 100644 config/retrodeck/reference_lists/supported_emulators.cfg diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index f071eb2a..8c32825c 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -271,6 +271,9 @@ "dreamcast": { "name": "Sega Dreamcast" }, + "dc": { + "name": "Sega Dreamcast" + }, "easyrpg": { "name": "EasyRPG Game Engine" }, @@ -310,6 +313,9 @@ "gamegear": { "name": "Sega Game Gear" }, + "gg": { + "name": "Sega Game Gear" + }, "gb": { "name": "Nintendo Game Boy" }, diff --git a/config/retrodeck/reference_lists/pretty_system_names.cfg b/config/retrodeck/reference_lists/pretty_system_names.cfg deleted file mode 100644 index 309b38fa..00000000 --- a/config/retrodeck/reference_lists/pretty_system_names.cfg +++ /dev/null @@ -1,23 +0,0 @@ -cemu^Cemu (Nintendo Wii U Standalone Emulator) -citra^Citra (Nintendo 3DS Standalone Emulator, via Ponzu) -dolphin^Dolphin (Nintendo GameCube / Wii Standalone Emulator) -duckstation^Duckstation (Sony Playstation Standalone Emulator) -gb^Nintendo GameBoy -gba^Nintendo GameBoy Advance -gbc^Nintendo GameBoy Color -genesis^Sega Genesis/Master System -gg^Sega GameGear -mame^MAME (Multi-Arcade Machine Standalone Emulator) -melonds^MelonDS (Nintendo DS Standalone Emulator) -n64^Nintendo 64 -pcsx2^PCSX2 (Sony Playstation 2 Standalone Emulator) -ppsspp^PPSSPP (Sony PSP Standalone Emulator) -primehack^Primehack (Metroid Prime Standalone Emulator) -psx_ra^Sony Playstation (RetroArch Core) -retroarch^RetroArch (Multi-emulator Frontend) -rpcs3^RPCS3 (Sony Playstation 3 Standalone Emulator) -ryujinx^Ryujinx (Nintendo Switch Standalone Emulator) -snes^Nintendo Super Nintendo -vita3k^Vita3K (Sony PSVita Standalone Emulator) -xemu^XEMU (Microsoft Xbox Standalone Emulator) -yuzu^Yuzu (Nintendo Switch Standalone Emulator, via Ponzu) diff --git a/config/retrodeck/reference_lists/supported_emulators.cfg b/config/retrodeck/reference_lists/supported_emulators.cfg deleted file mode 100644 index 17f51083..00000000 --- a/config/retrodeck/reference_lists/supported_emulators.cfg +++ /dev/null @@ -1,15 +0,0 @@ -cemu^/app/bin/Cemu-wrapper -citra^/var/data/ponzu/Citra/bin/citra-qt -dolphin^/app/bin/dolphin-emu -duckstation^/app/bin/duckstation-qt -mame^/app/bin/mame -melonds^/app/bin/melonds -pcsx2^/app/bin/pcsx2-qt -ppsspp^/app/bin/PPSSPPSDL -primehack^/app/bin/primehack-wrapper -retroarch^/app/bin/retroarch -rpcs3^/app/bin/rpcs3 -ryujinx^/app/bin/Ryujinx.sh -vita3k^/app/bin/Vita3K -xemu^/app/bin/xemu -yuzu^/var/data/ponzu/Yuzu/bin/yuzu diff --git a/functions/global.sh b/functions/global.sh index 932e4822..a9e9d093 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -34,6 +34,7 @@ finit_options_list="$config/retrodeck/reference_lists/finit_options_list.cfg" splashscreen_dir="/var/config/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens current_splash_file="/var/config/ES-DE/resources/graphics/splash.svg" # The active splash file that will be shown on boot default_splash_file="/var/config/ES-DE/resources/graphics/splash-orig.svg" # The default RetroDECK splash screen +# TODO: instead of this maybe we can iterate the features.json multi_user_emulator_config_dirs="$config/retrodeck/reference_lists/multi_user_emulator_config_dirs.cfg" # A list of emulator config folders that can be safely linked/unlinked entirely in multi-user mode rd_es_themes="/app/share/es-de/themes" # The directory where themes packaged with RetroDECK are stored lockfile="/var/config/retrodeck/.lock" # Where the lockfile is located @@ -49,7 +50,6 @@ rd_appdata="/app/share/appdata/net.retrodeck.retrodeck.appdata.xml" rpcs3_firmware="http://dus01.ps3.update.playstation.net/update/ps3/image/us/2023_0228_05fe32f5dc8c78acbcd84d36ee7fdc5b/PS3UPDAT.PUP" RA_API_URL="https://retroachievements.org/dorequest.php" # API URL for RetroAchievements.org presets_dir="$config/retrodeck/presets" # Repository for all system preset config files -pretty_system_names_reference_list="$config/retrodeck/reference_lists/pretty_system_names.cfg" # An internal translation list for turning internal names (eg. gbc) to "pretty" names (Nintendo GameBoy Color) git_organization_name="RetroDECK" # The name of the organization in our git repository such as GitHub cooker_repository_name="Cooker" # The name of the cooker repository under RetroDECK organization features="$config/retrodeck/reference_lists/features.json" # A file where all the RetroDECK and component capabilities are kept for querying diff --git a/functions/other_functions.sh b/functions/other_functions.sh index 5b169f29..d84ad230 100644 --- a/functions/other_functions.sh +++ b/functions/other_functions.sh @@ -322,16 +322,18 @@ backup_retrodeck_userdata() { make_name_pretty() { # This function will take an internal system name (like "gbc") and return a pretty version for user display ("Nintendo GameBoy Color") + # If the name is nout found it only returns the short name such as "gbc" # USAGE: make_name_pretty "system name" - local system=$(grep "$1^" "$pretty_system_names_reference_list") - if [[ ! -z "$system" ]]; then - IFS='^' read -r internal_name pretty_name < <(echo "$system") - else - pretty_name="$1" - fi + + local system_name="$1" + + # Use jq to parse the JSON and find the pretty name + local pretty_name=$(jq -r --arg name "$system_name" '.system[$name].name // $name' "$features") + echo "$pretty_name" } + finit_browse() { # Function for choosing data directory location during first/forced init path_selected=false From 4c4cdff197cff1f50ed90e8247170a678949070d Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 9 Aug 2024 17:22:17 +0900 Subject: [PATCH 26/29] FEATURES: migrated compression_targets --- .../reference_lists/compression_targets.cfg | 43 ----------------- .../retrodeck/reference_lists/features.json | 48 +++++++++++++++++++ functions/compression.sh | 12 +++-- functions/global.sh | 1 - tools/configurator.sh | 2 +- 5 files changed, 57 insertions(+), 49 deletions(-) delete mode 100644 config/retrodeck/reference_lists/compression_targets.cfg diff --git a/config/retrodeck/reference_lists/compression_targets.cfg b/config/retrodeck/reference_lists/compression_targets.cfg deleted file mode 100644 index 4ae00365..00000000 --- a/config/retrodeck/reference_lists/compression_targets.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[chd] -3do -amigacd32 -dreamcast -megacd -neogeocd -pcenginecd -pcfx -psp -psx -ps2 -saturn -saturnjp -segacd -tg-cd -[rvz] -gc -wii -[zip] -atari2600 -atari5200 -atari7800 -atari800 -atarijaguar -atarilynx -atarist -gamegear -gb -gba -gbc -genesis -mastersystem -n64 -nds -nes -ngp -ngpc -sega32x -sega32xjp -sega32xna -snes -snesna -tg16 diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 8c32825c..e56b8416 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -147,6 +147,54 @@ "location": "$bios_folder/switch/firmware" } }, + "compression_targets": { + "chd": [ + "3do", + "amigacd32", + "dreamcast", + "megacd", + "neogeocd", + "pcenginecd", + "pcfx", + "psp", + "psx", + "ps2", + "saturn", + "saturnjp", + "segacd", + "tg-cd" + ], + "rvz": [ + "gc", + "wii" + ], + "zip": [ + "atari2600", + "atari5200", + "atari7800", + "atari800", + "atarijaguar", + "atarilynx", + "atarist", + "gamegear", + "gb", + "gba", + "gbc", + "genesis", + "mastersystem", + "n64", + "nds", + "nes", + "ngp", + "ngpc", + "sega32x", + "sega32xjp", + "sega32xna", + "snes", + "snesna", + "tg16" + ] + }, "system": { "3do": { "name": "3DO Interactive Multiplayer" diff --git a/functions/compression.sh b/functions/compression.sh index 4b0bcdd8..207ec3d0 100644 --- a/functions/compression.sh +++ b/functions/compression.sh @@ -56,13 +56,17 @@ find_compatible_compression_format() { local normalized_filename=$(echo "$1" | tr '[:upper:]' '[:lower:]') local system=$(echo "$1" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") - if [[ $(validate_for_chd "$1") == "true" ]] && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "chd" ]]; then + local chd_systems=$(jq -r '.compression_targets.chd[]' $features) + local rvz_systems=$(jq -r '.compression_targets.rvz[]' $features) + local zip_systems=$(jq -r '.compression_targets.zip[]' $features) + + if [[ $(validate_for_chd "$1") == "true" ]] && echo "$chd_systems" | grep -q "\b$system\b"; then echo "chd" - elif grep -qF ".${normalized_filename##*.}" $zip_compressable_extensions && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "zip" ]]; then + elif grep -qF ".${normalized_filename##*.}" $zip_compressable_extensions && echo "$zip_systems" | grep -q "\b$system\b"; then echo "zip" - elif echo "$normalized_filename" | grep -qE '\.iso|\.gcm' && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "rvz" ]]; then + elif echo "$normalized_filename" | grep -qE '\.iso|\.gcm' && echo "$rvz_systems" | grep -q "\b$system\b"; then echo "rvz" - elif echo "$normalized_filename" | grep -qE '\.iso' && [[ $(sed -n '/^\[/{h;d};/\b'"$system"'\b/{g;s/\[\(.*\)\]/\1/p;q};' $compression_targets) == "cso" ]]; then + elif echo "$normalized_filename" | grep -qE '\.iso' && echo "$chd_systems" | grep -q "\b$system\b"; then echo "cso" else # If no compatible format can be found for the input file diff --git a/functions/global.sh b/functions/global.sh index a9e9d093..139171bc 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -27,7 +27,6 @@ config="/app/retrodeck/config" 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 -compression_targets="$config/retrodeck/reference_lists/compression_targets.cfg" # A config file containing supported compression types per system zip_compressable_extensions="$config/retrodeck/reference_lists/zip_compressable_extensions.cfg" # A config file containing every file extension that is allowed to be compressed to .zip format, because there are a lot! 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 diff --git a/tools/configurator.sh b/tools/configurator.sh index 54d15453..eba15ddf 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -852,7 +852,7 @@ configurator_compress_single_game_dialog() { } configurator_compress_multiple_games_dialog() { - # This dialog will display any games it finds to be compressable, from the systems listed under each compression type in compression_targets.cfg + # This dialog will display any games it finds to be compressable, from the systems listed under each compression type in features.json find_compatible_games "$1" From 2bbc6c4cf44fdc9e91bcfff6d24753f2c0159a3f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 9 Aug 2024 17:22:35 +0900 Subject: [PATCH 27/29] FEATURES: cleanup incompatible_presets --- config/retrodeck/reference_lists/incompatible_presets.cfg | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 config/retrodeck/reference_lists/incompatible_presets.cfg diff --git a/config/retrodeck/reference_lists/incompatible_presets.cfg b/config/retrodeck/reference_lists/incompatible_presets.cfg deleted file mode 100644 index 417ab816..00000000 --- a/config/retrodeck/reference_lists/incompatible_presets.cfg +++ /dev/null @@ -1,2 +0,0 @@ -borders:widescreen -widescreen:borders From 144da6d7a7fcb287f0c90cfc0941ed40c5ab7b07 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 9 Aug 2024 17:29:32 +0900 Subject: [PATCH 28/29] FEATURES: migrated zip_compressable_extensions --- .../retrodeck/reference_lists/features.json | 65 +++++++++++++++++++ .../zip_compressable_extensions.cfg | 63 ------------------ functions/compression.sh | 5 +- functions/global.sh | 1 - 4 files changed, 69 insertions(+), 65 deletions(-) delete mode 100644 config/retrodeck/reference_lists/zip_compressable_extensions.cfg diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index e56b8416..d9199bd1 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -195,6 +195,71 @@ "tg16" ] }, + "zip_compressable_extensions": [ + ".32x", + ".68k", + ".NDS", + ".a26", + ".a52", + ".a78", + ".abs", + ".agb", + ".atr", + ".atx", + ".bin", + ".bml", + ".bms", + ".bs", + ".bsx", + ".cas", + ".cdm", + ".cgb", + ".cof", + ".col", + ".dim", + ".dmg", + ".dx2", + ".fds", + ".fig", + ".gb", + ".gba", + ".gbc", + ".gd3", + ".gd7", + ".gen", + ".gg", + ".ipf", + ".j64", + ".jag", + ".lnx", + ".md", + ".mdx", + ".mgd", + ".msa", + ".nds", + ".nes", + ".ngc", + ".o", + ".pce", + ".prg", + ".rom", + ".sfc", + ".sg", + ".sgb", + ".sgd", + ".smc", + ".smd", + ".sms", + ".st", + ".st", + ".stx", + ".swc", + ".unf", + ".unif", + ".xex", + ".xfd", + ".z64" + ], "system": { "3do": { "name": "3DO Interactive Multiplayer" diff --git a/config/retrodeck/reference_lists/zip_compressable_extensions.cfg b/config/retrodeck/reference_lists/zip_compressable_extensions.cfg deleted file mode 100644 index 72966ab7..00000000 --- a/config/retrodeck/reference_lists/zip_compressable_extensions.cfg +++ /dev/null @@ -1,63 +0,0 @@ -.32x -.68k -.NDS -.a26 -.a52 -.a78 -.abs -.agb -.atr -.atx -.bin -.bml -.bms -.bs -.bsx -.cas -.cdm -.cgb -.cof -.col -.dim -.dmg -.dx2 -.fds -.fig -.gb -.gba -.gbc -.gd3 -.gd7 -.gen -.gg -.ipf -.j64 -.jag -.lnx -.md -.mdx -.mgd -.msa -.nds -.nes -.ngc -.o -.pce -.prg -.rom -.sfc -.sg -.sgb -.sgd -.smc -.smd -.sms -.st -.st -.stx -.swc -.unf -.unif -.xex -.xfd -.z64 diff --git a/functions/compression.sh b/functions/compression.sh index 207ec3d0..15455e09 100644 --- a/functions/compression.sh +++ b/functions/compression.sh @@ -56,13 +56,15 @@ find_compatible_compression_format() { local normalized_filename=$(echo "$1" | tr '[:upper:]' '[:lower:]') local system=$(echo "$1" | grep -oE "$roms_folder/[^/]+" | grep -oE "[^/]+$") + # Extract the relevant lists from the JSON file local chd_systems=$(jq -r '.compression_targets.chd[]' $features) local rvz_systems=$(jq -r '.compression_targets.rvz[]' $features) local zip_systems=$(jq -r '.compression_targets.zip[]' $features) + local zip_compressable_extensions=$(jq -r '.zip_compressable_extensions[]' $features) if [[ $(validate_for_chd "$1") == "true" ]] && echo "$chd_systems" | grep -q "\b$system\b"; then echo "chd" - elif grep -qF ".${normalized_filename##*.}" $zip_compressable_extensions && echo "$zip_systems" | grep -q "\b$system\b"; then + elif echo "$zip_compressable_extensions" | grep -qF ".${normalized_filename##*.}" && echo "$zip_systems" | grep -q "\b$system\b"; then echo "zip" elif echo "$normalized_filename" | grep -qE '\.iso|\.gcm' && echo "$rvz_systems" | grep -q "\b$system\b"; then echo "rvz" @@ -74,6 +76,7 @@ find_compatible_compression_format() { fi } + validate_for_chd() { # Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY # USAGE: validate_for_chd $input_file diff --git a/functions/global.sh b/functions/global.sh index 139171bc..7e3ae470 100644 --- a/functions/global.sh +++ b/functions/global.sh @@ -27,7 +27,6 @@ config="/app/retrodeck/config" 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 -zip_compressable_extensions="$config/retrodeck/reference_lists/zip_compressable_extensions.cfg" # A config file containing every file extension that is allowed to be compressed to .zip format, because there are a lot! 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 From 0291829960f29c90c1f20820ec96f8c42ea94133 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Fri, 9 Aug 2024 18:10:13 +0900 Subject: [PATCH 29/29] BIOS_FILE: creating a json (WIP) --- config/retrodeck/reference_lists/bios.json | 850 +++++++++++++++++++++ 1 file changed, 850 insertions(+) create mode 100644 config/retrodeck/reference_lists/bios.json diff --git a/config/retrodeck/reference_lists/bios.json b/config/retrodeck/reference_lists/bios.json new file mode 100644 index 00000000..77df3c46 --- /dev/null +++ b/config/retrodeck/reference_lists/bios.json @@ -0,0 +1,850 @@ +{ + "bios": { + "panafz1.bin": { + "hash": "f47264dd47fe30f73ab3c010015c155b", + "system": "3do", + "description": "Panasonic FZ-1" + }, + "panafz10.bin": { + "hash": "51f2f43ae2f3508a14d9f56597e2d3ce", + "system": "3do", + "description": "Panasonic FZ-10" + }, + "panafz10-norsa.bin": { + "hash": "1477bda80dc33731a65468c1f5bcbee9", + "system": "3do", + "description": "Panasonic FZ-10 [RSA Patch]" + }, + "panafz10e-anvil.bin": { + "hash": "a48e6746bd7edec0f40cff078f0bb19f", + "system": "3do", + "description": "Panasonic FZ-10-E [Anvil]" + }, + "panafz10e-anvil-norsa.bin": { + "hash": "cf11bbb5a16d7af9875cca9de9a15e09", + "system": "3do", + "description": "Panasonic FZ-10-E [Anvil RSA Patch]" + }, + "panafz1j.bin": { + "hash": "a496cfdded3da562759be3561317b605", + "system": "3do", + "description": "Panasonic FZ-1J" + }, + "panafz1j-norsa.bin": { + "hash": "f6c71de7470d16abe4f71b1444883dc8", + "system": "3do", + "description": "Panasonic FZ-1J [RSA Patch]" + }, + "goldstar.bin": { + "hash": "8639fd5e549bd6238cfee79e3e749114", + "system": "3do", + "description": "Goldstar GDO-101M" + }, + "sanyotry.bin": { + "hash": "35fa1a1ebaaeea286dc5cd15487c13ea", + "system": "3do", + "description": "Sanyo IMP-21J TRY" + }, + "3do_arcade_saot.bin": { + "hash": "8970fc987ab89a7f64da9f8a8c4333ff", + "system": "3do", + "description": "Shootout At Old Tucson" + }, + "panafz1-kanji.bin": { + "hash": "b8dc97f778a6245c58e064b0312e8281", + "system": "3do", + "description": "Panasonic FZ-1 Kanji Font ROM", + "required" : "Required for some Japanese games. Optional otherwise" + }, + "panafz10ja-anvil-kanji.bin": { + "hash": "428577250f43edc902ea239c50d2240d", + "system": "3do", + "description": "Panasonic FZ-10JA Kanji Font ROM", + "required" : "Required for some Japanese games. Optional otherwise" + }, + "panafz1j-kanji.bin": { + "hash": "c23fb5d5e6bb1c240d02cf968972be37", + "system": "3do", + "description": "Panasonic FZ-1J Kanji Font ROM", + "required" : "Required for some Japanese games. Optional otherwise" + }, + "neogeo.zip": { + "hash": "00dad01abdbf8ea9e79ad2fe11bdb182", + "system": "fbneo", + "description": "Neo Geo BIOS", + "required" : "required" + }, + "neocdz.zip": { + "hash": "c733b4b7bd30fa849874d96c591c8639", + "system": "fbneo", + "description": "Neo Geo CDZ BIOS", + "required" : "required" + }, + "decocass.zip": { + "hash": "b7e1189b341bf6a8e270017c096d21b0", + "system": "fbneo", + "description": "DECO Cassette System BIOS", + "required" : "required" + }, + "isgsm.zip": { + "hash": "4a56d56e2219c5e2b006b66a4263c01c", + "system": "fbneo", + "description": "ISG Selection Master Type 2006 System BIOS", + "required" : "required" + }, + "midssio.zip": { + "hash": "5904b0de768d1d506e766aa7e18994c1", + "system": "fbneo", + "description": "Midway SSIO Sound Board Internal ROM", + "required" : "required" + }, + "nmk004.zip": { + "hash": "bfacf1a68792d5348f93cf724d2f1dda", + "system": "fbneo", + "description": "NMK004 Internal ROM", + "required" : "required" + }, + "pgm.zip": { + "hash": "87cc944eef4c671aa2629a8ba48a08e0", + "system": "fbneo", + "description": "PGM System BIOS", + "required" : "required" + }, + "skns.zip": { + "hash": "3f956c4e7008804cb47cbde49bd5b908", + "system": "fbneo", + "description": "Super Kaneko Nova System BIOS", + "required" : "required" + }, + "ym2608.zip": { + "hash": "79ae0d2bb1901b7e606b6dc339b79a97", + "system": "fbneo", + "description": "YM2608 Internal ROM", + "required" : "required" + }, + "cchip.zip": { + "hash": "df6f8a3d83c028a5cb9f2f2be60773f3", + "system": "fbneo", + "description": "C-Chip Internal ROM", + "required" : "required" + }, + "bubsys.zip": { + "hash": "f81298afd68a1a24a49a1a2d9f087964", + "system": "fbneo", + "description": "Bubble System BIOS", + "required" : "required" + }, + "namcoc69.zip": { + "system": "fbneo", + "description": "Namco C69 BIOS", + "required" : "required" + }, + "namcoc70.zip": { + "system": "fbneo", + "description": "Namco C70 BIOS", + "required" : "required" + }, + "namcoc75.zip": { + "system": "fbneo", + "description": "Namco C75 BIOS", + "required" : "required" + }, + "coleco.zip": { + "system": "fbneo", + "description": "ColecoVision System BIOS", + "required" : "required" + }, + "fdsbios.zip": { + "system": "fbneo", + "description": "FDS System BIOS", + "required" : "required" + }, + "msx.zip": { + "system": "fbneo", + "description": "MSX1 System BIOS", + "required" : "required" + }, + "ngp.zip": { + "system": "fbneo", + "description": "NeoGeo Pocket BIOS", + "required" : "required" + }, + "spectrum.zip": { + "system": "fbneo", + "description": "ZX Spectrum BIOS", + "required" : "required" + }, + "spec128.zip": { + "system": "fbneo", + "description": "ZX Spectrum 128 BIOS", + "required" : "required" + }, + "spec1282a.zip": { + "system": "fbneo", + "description": "ZX Spectrum 128 +2a BIOS", + "required" : "required" + }, + "channelf.zip": { + "system": "fbneo", + "description": "Fairchild Channel F BIOS", + "required" : "required" + }, + "5200.rom": { + "hash": "281f20ea4320404ec820fb7ec0693b38", + "system": "atari5200", + "description": "Atari 5200 BIOS", + "required" : "required" + }, + "ATARIXL.ROM": { + "hash": "06daac977823773a3eea3422fd26a703", + "system": "atari5200", + "description": "Atari XL/XE OS BIOS ", + "required" : "required" + }, + "ATARIBAS.ROM": { + "hash": "0bac0c6a50104045d902df4503a4c30b", + "system": "atari5200", + "description": "BASIC interpreter BIOS ", + "required" : "required" + }, + "ATARIOSA.ROM": { + "hash": "eb1f32f5d9f382db1bbfb8d7f9cb343a", + "system": "atari5200", + "description": "atari800", + "required" : "required" + }, + "ATARIOSB.ROM": { + "hash": "a3e8d617c95d08031fe1b20d541434b2", + "system": "atari5200", + "description": "BIOS for Atari 400/800 NTSC ", + "required" : "required" + }, + "tos.img": { + "hash": "c1c57ce48e8ee4135885cee9e63a68a2", + "system": "atarist", + "description": "TOS Boot Image", + "required" : "required" + }, + "lynxboot.img": { + "hash": "fcd403db69f54290b51035d82f835e7b", + "system": "atarilynx", + "description": "Atari Lynx Boot Image", + "required" : "required" + }, + "o2rom.bin": { + "hash": "562d5ebf9e030a40d6fabfc2f33139fd", + "system": ["odyssey2", "videopac"], + "description": "Odyssey2 BIOS - G7000 model", + "required" : "required" + }, + "c52.bin": { + "hash": "f1071cdb0b6b10dde94d3bc8a6146387", + "system": ["odyssey2", "videopac"], + "description": "Videopac+ French BIOS - G7000 model", + "required" : "required" + }, + "g7400.bin": { + "hash": "c500ff71236068e0dc0d0603d265ae76", + "system": ["odyssey2", "videopac"], + "description": "Videopac+ European BIOS - G7400 model", + "required" : "required" + }, + "jopac.bin": { + "hash": "279008e4a0db2dc5f1c048853b033828", + "system": ["odyssey2", "videopac"], + "description": "Videopac+ French BIOS - G7400 model", + "required" : "required" + }, + "exec.bin": { + "hash": "62e761035cb657903761800f4437b8af", + "system": "intellivision", + "description": "Executive ROM", + "required" : "required" + }, + "grom.bin": { + "hash": "0cd5946c6473e42e8e4c2137785e427f", + "system": "intellivision", + "description": "Graphics ROM", + "required" : "required" + }, + "MSX.ROM": { + "hash": "364a1a579fe5cb8dba54519bcfcdac0d", + "system": "msx", + "description": "MSX BIOS", + "required" : "required" + }, + "MSX2.ROM": { + "hash": "ec3a01c91f24fbddcbcab0ad301bc9ef", + "system": "msx", + "description": "MSX2 BIOS", + "required" : "required" + }, + "MSX2EXT.ROM": { + "hash": "2183c2aff17cf4297bdb496de78c2e8a", + "system": "msx", + "description": "MSX2 ExtROM", + "required" : "required" + }, + "MSX2P.ROM": { + "hash": "847cc025ffae665487940ff2639540e5", + "system": "msx", + "description": "MSX2+ BIOS", + "required" : "required" + }, + "MSX2PEXT.ROM": { + "hash": "7c8243c71d8f143b2531f01afa6a05dc", + "system": "msx", + "description": "MSX2+ ExtROM", + "required" : "required" + }, + "DISK.ROM": { + "hash": "80dcd1ad1a4cf65d64b7ba10504e8190", + "system": "msx", + "description": "DiskROM/BDOS" + }, + "FMPAC.ROM": { + "hash": "6f69cc8b5ed761b03afd78000dfb0e19", + "system": "msx", + "description": "FMPAC BIOS" + }, + "MSXDOS2.ROM": { + "hash": "6418d091cd6907bbcf940324339e43bb", + "system": "msx", + "description": "MSX-DOS 2" + }, + "PAINTER.ROM": { + "hash": "403cdea1cbd2bb24fae506941f8f655e", + "system": "msx", + "description": "Yamaha Painter" + }, + "KANJI.ROM": { + "hash": "febe8782b466d7c3b16de6d104826b34", + "system": "msx", + "description": "Kanji Font" + }, + "mcpx_1.0.bin": { + "hash": "d49c52a4102f6df7bcf8d0617ac475ed", + "system": "xbox", + "description": "Used by XEMU emulator" + }, + "Complex.bin": { + "system": "xbox", + "description": "Used by XEMU emulator" + }, + "Complex_4627v1.03.bin": { + "system": "xbox", + "description": "Used by XEMU emulator" + }, + "Complex_4627.bin": { + "system": "xbox", + "description": "Used by XEMU emulator" + }, + "syscard3.pce": { + "hash": "38179df8f4ac870017db21ebcbf53114", + "system": ["pcengine", "pcenginecd"], + "description": "Super CD-ROM2 System V3.xx", + "required" : "required" + }, + "syscard2.pce": { + "hash": "3cdd6614a918616bfc41c862e889dd79", + "system": ["pcengine", "pcenginecd"], + "description": "CD-ROM System V2.xx" + }, + "syscard1.pce": { + "hash": "2b7ccb3d86baa18f6402c176f3065082", + "system": ["pcengine", "pcenginecd"], + "description": "CD-ROM System V1.xx" + }, + "gexpress.pce": { + "hash": "6d2cb14fc3e1f65ceb135633d1694122", + "system": ["pcengine", "pcenginecd"], + "description": "Game Express CD Card" + }, + "font.bmp": { + "hash": "7da1e5b7c482d4108d22a5b09631d967", + "system": "pc98", + "description": "Needed to display text", + "required" : "required" + }, + "FONT.ROM": { + "hash": "2af6179d7de4893ea0b705c00e9a98d6", + "system": "pc98", + "description": "Alternative font file", + "required": "Required if normal font file is missing" + }, + "bios.rom": { + "hash": "e246140dec5124c5e404869a84caefce", + "system": "pc98", + "description": "BIOS file", + "required" : "required" + }, + "itf.rom": { + "hash": "e9fc3890963b12cf15d0a2eea5815b72", + "system": "pc98", + "description": "BIOS file", + "required" : "required" + }, + "sound.rom": { + "hash": "caf90f22197aed6f14c471c21e64658d", + "system": "pc98", + "description": "BIOS file", + "required" : "required" + }, + "bios9821.rom": { + "system": "pc98", + "description": "Optional BIOS file" + }, + "d8000.rom": { + "system": "pc98", + "description": "Optional BIOS file" + }, + "2608_BD.WAV": { + "hash": "d94546e70f17fd899be8df3544ab6cbb", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "2608_SD.WAV": { + "hash": "d71004351c8bbfdad53b18222c061d49", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "2608_TOP.WAV": { + "hash": "593cff6597ab9380d822b8f824fd2c28", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "2608_HH.WAV": { + "hash": "08c54a0c1f774a5538a848a6665a34b4", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "2608_TOM.WAV": { + "hash": "96a4ead13f364734f79b0c58af2f0e1f", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "2608_RIM.WAV": { + "hash": "465ea0768b27da404aec45dfc501404b", + "system": "pc98", + "description": "YM2608 RYTHM sample" + }, + "n88.rom": { + "hash": "4f984e04a99d56c4cfe36115415d6eb8", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "BIOS File", + "required" : "required" + }, + "n88n.rom": { + "hash": "2ff07b8769367321128e03924af668a0", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Required for PC-8000 series emulation. (N BASIC mode)" + }, + "disk.rom": { + "hash": "793f86784e5608352a5d7f03f03e0858", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Required for loading disk images" + }, + "n88knj1.rom": { + "hash": "d81c6d5d7ad1a4bbbd6ae22a01257603", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Required for viewing kanji" + }, + "n88_0.rom": { + "hash": "d675a2ca186c6efcd6277b835de4c7e5", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Required for viewing kanji" + }, + "n88_1.rom": { + "hash": "e844534dfe5744b381444dbe61ef1b66", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Optional BIOS file" + }, + "n88_2.rom": { + "hash": "6548fa45061274dee1ea8ae1e9e93910", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Optional BIOS file" + }, + "n88_3.rom": { + "hash": "fc4b76a402ba501e6ba6de4b3e8b4273", + "system": "NEC PC-8000 / PC-8800 series (QUASI88)", + "description": "Optional BIOS file" + }, + "neocd_f.rom": { + "hash": "8834880c33164ccbe6476b559f3e37de", + "system": "Neo Geo CD", + "description": "Front Loader BIOS", + "required": "at least one" + }, + "neocd_sf.rom": { + "hash": "043d76d5f0ef836500700c34faef774d", + "system": "Neo Geo CD", + "description": "Front Loader BIOS (SMKDAN 0.7b DEC 2010)", + "required": "at least one" + }, + "neocd_t.rom": { + "hash": "de3cf45d227ad44645b22aa83b49f450", + "system": "Neo Geo CD", + "description": "Top Loader BIOS", + "required": "at least one" + }, + "neocd_st.rom": { + "hash": "f6325a33c6d63ea4b9162a3fa8c32727", + "system": "Neo Geo CD", + "description": "Top Loader BIOS (SMKDAN 0.7b DEC 2010)", + "required": "at least one" + }, + "neocd_z.rom": { + "hash": "11526d58d4c524daef7d5d677dc6b004", + "system": "Neo Geo CD", + "description": "CDZ BIOS", + "required": "at least one" + }, + "neocd_sz.rom": { + "hash": "971ee8a36fb72da57aed01758f0a37f5", + "system": "Neo Geo CD", + "description": "CDZ BIOS (SMKDAN 0.7b DEC 2010)", + "required": "at least one" + }, + "front-sp1.bin": { + "hash": "5c2366f25ff92d71788468ca492ebeca", + "system": "Neo Geo CD", + "description": "Front Loader BIOS (MAME)", + "required": "at least one" + }, + "top-sp1.bin": { + "hash": "122aee210324c72e8a11116e6ef9c0d0", + "system": "Neo Geo CD", + "description": "Top Loader BIOS (MAME)", + "required": "at least one" + }, + "neocd.bin": { + "hash": "f39572af7584cb5b3f70ae8cc848aba2", + "system": "Neo Geo CD", + "description": "CDZ BIOS (MAME)", + "required": "at least one" + }, + "uni-bioscd.rom": { + "hash": "08ca8b2dba6662e8024f9e789711c6fc", + "system": "Neo Geo CD", + "description": "Universe BIOS CD 3.3" + }, + "gb_bios.bin": { + "hash": "32fbbd84168d3482956eb3c5051637f5", + "system": "Game Boy", + "description": "Optional BIOS file (used to display the Nintendo logo at boot)" + }, + "gbc_bios.bin": { + "hash": "dbfce9db9deaa2567f6a84fde55f9680", + "system": "Game Boy Color", + "description": "Optional BIOS file (used to display the Nintendo logo at boot)" + }, + "gba_bios.bin": { + "hash": "a860e8c0b6d573d191e4ec7db1b1e4f6", + "system": "Game Boy Advance", + "description": "Optional BIOS file (used to display the Nintendo logo at boot)" + }, + "aes_keys.txt": { + "system": "Nintendo 3DS", + "description": "Decryption keys used by Citra emulator" + }, + "bios7.bin": { + "hash": "df692a80a5b1bc90728bc3dfc76cd948", + "system": "Nintendo DS", + "description": "Used by MelonDS emulator (Required, see Wiki)" + }, + "bios9.bin": { + "hash": "a392174eb3e572fed6447e956bde4b25", + "system": "Nintendo DS", + "description": "Used by MelonDS emulator (Required, see Wiki)" + }, + "firmware.bin": { + "hash": "e45033d9b0fa6b0de071292bba7c9d13", + "system": "Nintendo DS", + "description": "Used by MelonDS emulator (Required, see Wiki)" + }, + "disksys.rom": { + "hash": "ca30b50f880eb660a320674ed365ef7a", + "system": "Nintendo NES / Famicom", + "description": "Family Computer Disk System BIOS - Required for Family Computer Disk System emulation" + }, + "bios.min": { + "hash": "1e4fb124a3a886865acb574f388c803d", + "system": "Nintendo Pokemon Mini", + "description": "Pokémon Mini BIOS - Optional" + }, + "prod.keys": { + "system": "Nintendo Switch", + "description": "A file for Switch emulation in Ryujinx", + "required" : "required" + }, + "title.keys": { + "system": "Nintendo Switch", + "description": "A file for Switch emulation in Ryujinx", + "required" : "required" + }, + "pico8": { + "system": "PICO-8", + "description": "The PICO-8 executable", + "required" : "required" + }, + "pico8.dat": { + "system": "PICO-8", + "description": "A PICO-8 system file", + "required" : "required" + }, + "pico8_dyn": { + "system": "PICO-8", + "description": "A PICO-8 system file", + "required" : "required" + }, + "bios_CD_E.bin": { + "hash": "e66fa1dc5820d254611fdcdba0662372", + "system": "Sega CD", + "description": "MegaCD EU BIOS", + "required": "at least one" + }, + "bios_CD_U.bin": { + "hash": "2efd74e3232ff260e371b99f84024f7f", + "system": "Sega CD", + "description": "SegaCD US BIOS", + "required": "at least one" + }, + "bios_CD_J.bin": { + "hash": "278a9397d192149e84e820ac621a8edd", + "system": "Sega CD", + "description": "MegaCD JP BIOS", + "required": "at least one" + }, + "dc_boot.bin": { + "hash": "e10c53c2f8b90bab96ead2d368858623", + "system": "Sega Dreamcast", + "description": "Dreamcast BIOS", + "required" : "required" + }, + "naomi.zip": { + "hash": "0ea6d3650ce4a7608a589e5df21a1f2f", + "system": "Sega Dreamcast", + "description": "Naomi BIOS" + }, + "naomi2.zip": { + "hash": "9b85e0de6ef359e5006c9b79a5a266b0", + "system": "Sega Dreamcast", + "description": "Naomi BIOS" + }, + "naomi_boot.bin": { + "hash": "96cb91c4a0bedd86e5a6965cfe6c0148", + "system": "Sega Dreamcast", + "description": "Naomi BIOS" + }, + "hod2bios.zip": { + "hash": "629bb0552463ba116ccf23d9a468a9f0", + "system": "Sega Dreamcast", + "description": "Naomi The House of the Dead 2 BIOS" + }, + "f355dlx.zip": { + "hash": "4b5bb177cbd760477598f85531dbe7fd", + "system": "Sega Dreamcast", + "description": "Naomi Ferrari F355 Challenge Deluxe BIOS" + }, + "f355bios.zip": { + "hash": "882f2c1cf8ec030955c48fe6aa6929ea", + "system": "Sega Dreamcast", + "description": "Naomi Ferrari F355 Challenge Twin/Deluxe BIOS" + }, + "airlbios.zip": { + "hash": "09ef4b8dea6cd8db2de1c13d510a6a87", + "system": "Sega Dreamcast", + "description": "Naomi Airline Pilots Deluxe BIOS" + }, + "awbios.zip": { + "hash": "b2f122e091da223beb824efafc3d6a36", + "system": "Sega Dreamcast", + "description": "Naomi Atomiswave BIOS" + }, + "bios.sms": { + "hash": "840481177270d5642a14ca71ee72844c", + "system": "Sega Master System / GameGear", + "description": "Master System BIOS" + }, + "BIOS.col": { + "hash": "2c66f5911e5b42b8ebe113403548eee7", + "system": "Sega Master System / GameGear", + "description": "Colecovision BIOS" + }, + "sega_101.bin": { + "hash": "85ec9ca47d8f6807718151cbcca8b964", + "system": "Sega Saturn", + "description": "Saturn JP BIOS", + "required": "at least one" + }, + "mpr-17933.bin": { + "hash": "3240872c70984b6cbfda1586cab68dbe", + "system": "Sega Saturn", + "description": "Saturn US.mdEU BIOS", + "required": "at least one" + }, + "mpr-18811-mx.ic1": { + "hash": "255113ba943c92a54facd25a10fd780c", + "system": "Sega Saturn", + "description": "The King of Fighters 95 ROM Cartridge (Required for this game)" + }, + "mpr-19367-mx.ic1": { + "hash": "1cd19988d1d72a3e7caa0b73234c96b4", + "system": "Sega Saturn", + "description": "Ultraman: Hikari no Kyojin Densetsu ROM Cartridge (Required for this game)" + }, + "iplrom.dat": { + "hash": "7fd4caabac1d9169e289f0f7bbf71d8e", + "system": "Sharp X68000", + "description": "X68000 BIOS", + "required" : "required" + }, + "cgrom.dat": { + "hash": "cb0a5cfcf7247a7eab74bb2716260269", + "system": "Sharp X68000", + "description": "Font file", + "required" : "required" + }, + "iplrom30.dat": { + "hash": "f373003710ab4322642f527f567e020a", + "system": "Sharp X68000", + "description": "X68000 BIOS 2" + }, + "iplromco.dat": { + "hash": "cc78d4f4900f622bd6de1aed7f52592f", + "system": "Sharp X68000", + "description": "X68000 BIOS 3" + }, + "iplromxv.dat": { + "hash": "0617321daa182c3f3d6f41fd02fb3275", + "system": "Sharp X68000", + "description": "X68000 BIOS 4" + }, + "psxonpsp660.bin": { + "hash": "c53ca5908936d412331790f4426c6c33", + "system": "Sony PSX", + "description": "PS1 BIOS from PSP", + "required": "at least one" + }, + "scph5500.bin": { + "hash": "8dd7d5296a650fac7319bce665a6a53c", + "system": "Sony PSX", + "description": "PS1 JP BIOS", + "required": "at least one" + }, + "scph5501.bin": { + "hash": "490f666e1afb15b7362b406ed1cea246", + "system": "Sony PSX", + "description": "PS1 US BIOS", + "required": "at least one" + }, + "scph5502.bin": { + "hash": "32736f17079d0b2b7024407c39bd3050", + "system": "Sony PSX", + "description": "PS1 EU BIOS", + "required": "at least one" + }, + "scph7001.bin": { + "hash": "1e68c231d0896b7eadcad1d7d8e76129", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "scph7002.bin": { + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "scph7003.bin": { + "hash": "490f666e1afb15b7362b406ed1cea246", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "scph7502.bin": { + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "scph9002(7502).bin": { + "hash": "b9d9a0286c33dc6b7237bb13cd46fdee", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "ps1_rom.bin": { + "hash": "81bbe60ba7a3d1cea1d48c14cbcc647b", + "system": "Sony PSX", + "description": "PS1 BIOS", + "required": "at least one" + }, + "ps2-0200a-20040614.bin": { + "hash": "d333558cc14561c1fdc334c75d5f37b7", + "system": "Sony PS2", + "description": "PS2 US BIOS", + "required": "at least one" + }, + "ps2-0200e-20040614.bin": { + "hash": "dc752f160044f2ed5fc1f4964db2a095", + "system": "Sony PS2", + "description": "PS2 EU BIOS", + "required": "at least one" + }, + "ps2-0200j-20040614.bin": { + "hash": "0eee5d1c779aa50e94edd168b4ebf42e", + "system": "Sony PS2", + "description": "PS2 JP BIOS", + "required": "at least one" + }, + "128p-0.rom": { + "hash": "a249565f03b98d004ee7f019570069cd", + "system": "ZX Spectrum", + "description": "Pentagon 128K/512K/1024 ROM", + "required" : "required" + }, + "128p-1.rom": { + "hash": "6e09e5d3c4aef166601669feaaadc01c", + "system": "ZX Spectrum", + "description": "Pentagon 128K/512K/1024 ROM", + "required" : "required" + }, + "trdos.rom": { + "hash": "0da70a5d2a0e733398e005b96b7e4ba6", + "system": "ZX Spectrum", + "description": "Pentagon 128K/512K/1024 ROM", + "required" : "required" + }, + "gluck.rom": { + "hash": "d5869034604dbfd2c1d54170e874fd0a", + "system": "ZX Spectrum", + "description": "Pentagon 512K/1024 ROM", + "required" : "required" + }, + "256s-0.rom": { + "hash": "b9fda5b6a747ff037365b0e2d8c4379a", + "system": "ZX Spectrum", + "description": "Scorpion 256K ROM", + "required" : "required" + }, + "256s-1.rom": { + "hash": "643861ad34831b255bf2eb64e8b6ecb8", + "system": "ZX Spectrum", + "description": "Scorpion 256K ROM", + "required" : "required" + }, + "256s-2.rom": { + "hash": "d8ad507b1c915a9acfe0d73957082926", + "system": "ZX Spectrum", + "description": "Scorpion 256K ROM", + "required" : "required" + }, + "256s-3.rom": { + "hash": "ce0723f9bc02f4948c15d3b3230ae831", + "system": "ZX Spectrum", + "description": "Scorpion 256K ROM", + "required" : "required" + } + } +}