From fb3a74427e3f39530ae270d90d243b0dad7b068d Mon Sep 17 00:00:00 2001 From: icenine451 Date: Wed, 8 Mar 2023 17:08:57 -0500 Subject: [PATCH] Configurator BIOS check tool --- global.sh | 17 +++++++++-------- tools/bios_checklist.cfg | 16 ++++++++++++++++ tools/configurator.sh | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 tools/bios_checklist.cfg diff --git a/global.sh b/global.sh index 0cb2c6b0..5351a3fa 100755 --- a/global.sh +++ b/global.sh @@ -5,14 +5,15 @@ source /app/libexec/functions.sh # Static variables -rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path -rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update -emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs -rd_defaults="$emuconfigs/defaults/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 -lockfile="/var/config/retrodeck/.lock" # where the lockfile is located -default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path -hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem) +rd_conf="/var/config/retrodeck/retrodeck.cfg" # RetroDECK config file path +rd_conf_backup="/var/config/retrodeck/retrodeck.bak" # Backup of RetroDECK config file from update +emuconfigs="/app/retrodeck/emu-configs" # folder with all the default emulator configs +rd_defaults="$emuconfigs/defaults/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="/var/config/retrodeck/tools/bios_checklist.cfg" # A config file listing BIOS file information that can be verified +lockfile="/var/config/retrodeck/.lock" # where the lockfile is located +default_sd="/run/media/mmcblk0p1" # Steam Deck SD default path +hard_version="$(cat '/app/retrodeck/version')" # hardcoded version (in the readonly filesystem) # Config files for emulators with single config files diff --git a/tools/bios_checklist.cfg b/tools/bios_checklist.cfg new file mode 100644 index 00000000..58a807ad --- /dev/null +++ b/tools/bios_checklist.cfg @@ -0,0 +1,16 @@ +scph5500.bin^8dd7d5296a650fac7319bce665a6a53c^PSX^PS1 JP BIOS +scph5501.bin^490f666e1afb15b7362b406ed1cea246^PSX^PS1 US BIOS +scph5502.bin^32736f17079d0b2b7024407c39bd3050^PSX^PS1 EU BIOS +ps2-0200a-20040614.bin^d333558cc14561c1fdc334c75d5f37b7^PS2^PS2 US BIOS +ps2-0200e-20040614.bin^dc752f160044f2ed5fc1f4964db2a095^PS2^PS2 EU BIOS +ps2-0200j-20040614.bin^0eee5d1c779aa50e94edd168b4ebf42e^PS2^PS2 JP BIOS +bios_CD_E.bin^e66fa1dc5820d254611fdcdba0662372^SegaCD^MegaCD EU BIOS +bios_CD_U.bin^854b9150240a198070150e4566ae1290^SegaCD^SegaCD US BIOS +bios_CD_J.bin^278a9397d192149e84e820ac621a8edd^SegaCD^MegaCD JP BIOS +sega_101.bin^85ec9ca47d8f6807718151cbcca8b964^Sega Saturn^Saturn JP BIOS +mpr-17933.bin^3240872c70984b6cbfda1586cab68dbe^Sega Saturn^Saturn US.mdEU BIOS +mpr-18811-mx.ic1^255113ba943c92a54facd25a10fd780c^Sega Saturn^The King of Fighters 95 ROM Cartridge - Required for this game +mpr-19367-mx.ic1^1cd19988d1d72a3e7caa0b73234c96b4^Sega Saturn^Ultraman: Hikari no Kyojin Densetsu ROM Cartridge - Required for this game +bios7.bin^df692a80a5b1bc90728bc3dfc76cd948^Nintendo DS^Used by MelonDS emulator +bios9.bin^a392174eb3e572fed6447e956bde4b25^Nintendo DS^Used by MelonDS emulator +firmware.bin^93276d8629990f50a90950ea083ab348^Nintendo DS^Used by MelonDS emulator \ No newline at end of file diff --git a/tools/configurator.sh b/tools/configurator.sh index d0cb7e43..81be2c39 100644 --- a/tools/configurator.sh +++ b/tools/configurator.sh @@ -386,11 +386,40 @@ configurator_check_multifile_game_structure() { configurator_troubleshooting_tools_dialog } +configurator_check_bios_files() { + bios_checked_list=() + + while IFS="^" read -r bios_file bios_hash bios_system bios_desc + do + bios_file_found="No" + bios_hash_matched="No" + if [[ -f "$bios_folder/$bios_file" ]]; then + bios_file_found="Yes" + if [[ $(md5sum "$bios_folder/$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then + bios_hash_matched="Yes" + fi + fi + bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc") + done < $bios_checklist + + zenity --list --title="RetroDECK Configurator Utility - Verify BIOS Files" --cancel-label="Back" \ + --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ + --column "BIOS File Name" \ + --column "System" \ + --column "BIOS File Found" \ + --column "BIOS Hash Match" \ + --column "BIOS File Description" \ + "${bios_checked_list[@]}" + + configurator_troubleshooting_tools_dialog +} + configurator_troubleshooting_tools_dialog() { choice=$(zenity --list --title="RetroDECK Configurator Utility - Change Options" --cancel-label="Back" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --column="Choice" --column="Action" \ - "Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" ) + "Multi-file game structure check" "Verify the proper structure of multi-file or multi-disc games" \ + "BIOS file check" "Verify the existence and file integrity of common BIOS files" ) case $choice in @@ -398,6 +427,10 @@ configurator_troubleshooting_tools_dialog() { configurator_check_multifile_game_structure ;; + "BIOS file check" ) + configurator_check_bios_files + ;; + "" ) # No selection made or Back button clicked configurator_welcome_dialog ;;