BIOS_CHECKER: revamped

This commit is contained in:
XargonWan 2025-01-10 15:53:46 +09:00
parent 7265e7078c
commit 3fc1ecb95e
4 changed files with 80 additions and 217 deletions

View file

@ -1,155 +0,0 @@
panafz1.bin^^f47264dd47fe30f73ab3c010015c155b^3DO^Panasonic FZ-1
panafz10.bin^^51f2f43ae2f3508a14d9f56597e2d3ce^3DO^Panasonic FZ-10
panafz10-norsa.bin^^1477bda80dc33731a65468c1f5bcbee9^3DO^Panasonic FZ-10 [RSA Patch]
panafz10e-anvil.bin^^a48e6746bd7edec0f40cff078f0bb19f^3DO^Panasonic FZ-10-E [Anvil]
panafz10e-anvil-norsa.bin^^cf11bbb5a16d7af9875cca9de9a15e09^3DO^Panasonic FZ-10-E [Anvil RSA Patch]
panafz1j.bin^^a496cfdded3da562759be3561317b605^3DO^Panasonic FZ-1J
panafz1j-norsa.bin^^f6c71de7470d16abe4f71b1444883dc8^3DO^Panasonic FZ-1J [RSA Patch]
goldstar.bin^^8639fd5e549bd6238cfee79e3e749114^3DO^Goldstar GDO-101M
sanyotry.bin^^35fa1a1ebaaeea286dc5cd15487c13ea^3DO^Sanyo IMP-21J TRY
3do_arcade_saot.bin^^8970fc987ab89a7f64da9f8a8c4333ff^3DO^Shootout At Old Tucson
panafz1-kanji.bin^^b8dc97f778a6245c58e064b0312e8281^3DO^Panasonic FZ-1 Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
panafz10ja-anvil-kanji.bin^^428577250f43edc902ea239c50d2240d^3DO^Panasonic FZ-10JA Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
panafz1j-kanji.bin^^c23fb5d5e6bb1c240d02cf968972be37^3DO^Panasonic FZ-1J Kanji ROM (Font ROM: required for some Japanese games. Optional otherwise.)
neogeo.zip^^00dad01abdbf8ea9e79ad2fe11bdb182^Arcade (FinalBurn Neo)^Neo Geo BIOS (Required for this system)
neocdz.zip^^c733b4b7bd30fa849874d96c591c8639^Arcade (FinalBurn Neo)^Neo Geo CDZ BIOS (Required for this system)
decocass.zip^^b7e1189b341bf6a8e270017c096d21b0^Arcade (FinalBurn Neo)^DECO Cassette System BIOS (Required for this system)
isgsm.zip^^4a56d56e2219c5e2b006b66a4263c01c^Arcade (FinalBurn Neo)^ISG Selection Master Type 2006 System BIOS (Required for this system)
midssio.zip^^5904b0de768d1d506e766aa7e18994c1^Arcade (FinalBurn Neo)^Midway SSIO Sound Board Internal ROM (Required for this system)
nmk004.zip^^bfacf1a68792d5348f93cf724d2f1dda^Arcade (FinalBurn Neo)^NMK004 Internal ROM (Required for this system)
pgm.zip^^87cc944eef4c671aa2629a8ba48a08e0^Arcade (FinalBurn Neo)^PGM System BIOS (Required for this system)
skns.zip^^3f956c4e7008804cb47cbde49bd5b908^Arcade (FinalBurn Neo)^Super Kaneko Nova System BIOS (Required for this system)
ym2608.zip^^79ae0d2bb1901b7e606b6dc339b79a97^Arcade (FinalBurn Neo)^YM2608 Internal ROM (Required for this system)
cchip.zip^^df6f8a3d83c028a5cb9f2f2be60773f3^Arcade (FinalBurn Neo)^C-Chip Internal ROM (Required for this system)
bubsys.zip^^f81298afd68a1a24a49a1a2d9f087964^Arcade (FinalBurn Neo)^Bubble System BIOS (Required for this system)
namcoc69.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C69 BIOS (Required for this system)
namcoc70.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C70 BIOS (Required for this system)
namcoc75.zip^^Unknown^Arcade (FinalBurn Neo)^Namco C75 BIOS (Required for this system)
coleco.zip^^Unknown^Arcade (FinalBurn Neo)^ColecoVision System BIOS (Required for this system)
fdsbios.zip^^Unknown^Arcade (FinalBurn Neo)^FDS System BIOS (Required for this system)
msx.zip^^Unknown^Arcade (FinalBurn Neo)^MSX1 System BIOS (Required for this system)
ngp.zip^^Unknown^Arcade (FinalBurn Neo)^NeoGeo Pocket BIOS (Required for this system)
spectrum.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum BIOS (Required for this system)
spec128.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum 128 BIOS (Required for this system)
spec1282a.zip^^Unknown^Arcade (FinalBurn Neo)^ZX Spectrum 128 +2a BIOS (Required for this system)
channelf.zip^^Unknown^Arcade (FinalBurn Neo)^Fairchild Channel F BIOS (Required for this system)
5200.rom^^281f20ea4320404ec820fb7ec0693b38^Atari 8-bit computer systems and 5200^5200 BIOS (Required)
ATARIXL.ROM^^06daac977823773a3eea3422fd26a703^Atari 8-bit computer systems and 5200^Atari XL/XE OS BIOS (Required for these systems)
ATARIBAS.ROM^^0bac0c6a50104045d902df4503a4c30b^Atari 8-bit computer systems and 5200^BASIC interpreter BIOS (Required for these systems)
ATARIOSA.ROM^^eb1f32f5d9f382db1bbfb8d7f9cb343a^Atari 8-bit computer systems and 5200^Atari 400/800 PAL BIOS (Required for these systems)
ATARIOSB.ROM^^a3e8d617c95d08031fe1b20d541434b2^Atari 8-bit computer systems and 5200^BIOS for Atari 400/800 NTSC (Required for these systems)
tos.img^^c1c57ce48e8ee4135885cee9e63a68a2^Atari ST/STE/TT/Falcon^TOS Boot Image (Required)
lynxboot.img^^fcd403db69f54290b51035d82f835e7b^Atari Lynx^Lynx Boot Image (Required)
o2rom.bin^^562d5ebf9e030a40d6fabfc2f33139fd^Magnavox Odyssey2 / Phillips Videopac+^Odyssey2 BIOS - G7000 model (Required)
c52.bin^^f1071cdb0b6b10dde94d3bc8a6146387^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ French BIOS - G7000 model (Required for Videopac games)
g7400.bin^^c500ff71236068e0dc0d0603d265ae76^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ European BIOS - G7400 model (Required for Videopac games)
jopac.bin^^279008e4a0db2dc5f1c048853b033828^Magnavox Odyssey2 / Phillips Videopac+^Videopac+ French BIOS - G7400 model (Required for Videopac games)
exec.bin^^62e761035cb657903761800f4437b8af^Mattel Intellivision^Executive ROM (Required)
grom.bin^^0cd5946c6473e42e8e4c2137785e427f^Mattel Intellivision^Graphics ROM (Required)
MSX.ROM^^364a1a579fe5cb8dba54519bcfcdac0d^Microsoft MSX^MSX BIOS (Required)
MSX2.ROM^^ec3a01c91f24fbddcbcab0ad301bc9ef^Microsoft MSX^MSX2 BIOS (Required)
MSX2EXT.ROM^^2183c2aff17cf4297bdb496de78c2e8a^Microsoft MSX^MSX2 ExtROM (Required)
MSX2P.ROM^^847cc025ffae665487940ff2639540e5^Microsoft MSX^MSX2+ BIOS (Required)
MSX2PEXT.ROM^^7c8243c71d8f143b2531f01afa6a05dc^Microsoft MSX^MSX2+ ExtROM (Required)
DISK.ROM^^80dcd1ad1a4cf65d64b7ba10504e8190^Microsoft MSX^DiskROM/BDOS
FMPAC.ROM^^6f69cc8b5ed761b03afd78000dfb0e19^Microsoft MSX^FMPAC BIOS
MSXDOS2.ROM^^6418d091cd6907bbcf940324339e43bb^Microsoft MSX^MSX-DOS 2
PAINTER.ROM^^403cdea1cbd2bb24fae506941f8f655e^Microsoft MSX^Yamaha Painter
KANJI.ROM^^febe8782b466d7c3b16de6d104826b34^Microsoft MSX^Kanji Font
mcpx_1.0.bin^^d49c52a4102f6df7bcf8d0617ac475ed^Microsoft XBOX^Used by XEMU emulator
Complex.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
Complex_4627v1.03.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
Complex_4627.bin^^Unknown^Microsoft XBOX^Used by XEMU emulator
syscard3.pce^^38179df8f4ac870017db21ebcbf53114^NEC PC Engine / CD^Super CD-ROM2 System V3.xx (Required)
syscard2.pce^^3cdd6614a918616bfc41c862e889dd79^NEC PC Engine / CD^CD-ROM System V2.xx
syscard1.pce^^2b7ccb3d86baa18f6402c176f3065082^NEC PC Engine / CD^CD-ROM System V1.xx
gexpress.pce^^6d2cb14fc3e1f65ceb135633d1694122^NEC PC Engine / CD^Game Express CD Card
font.bmp^np2kai/^7da1e5b7c482d4108d22a5b09631d967^NEC PC-98 (Neko Project II Kai)^Needed to display text (Required)
FONT.ROM^np2kai/^2af6179d7de4893ea0b705c00e9a98d6^NEC PC-98 (Neko Project II Kai)^Alt font file (Required if normal font file is missing)
bios.rom^np2kai/^e246140dec5124c5e404869a84caefce^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
itf.rom^np2kai/^e9fc3890963b12cf15d0a2eea5815b72^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
sound.rom^np2kai/^caf90f22197aed6f14c471c21e64658d^NEC PC-98 (Neko Project II Kai)^BIOS file (Required)
bios9821.rom^np2kai/^Unknown^NEC PC-98 (Neko Project II Kai)^Optional BIOS file
d8000.rom^np2kai/^Unknown^NEC PC-98 (Neko Project II Kai)^Optional BIOS file
2608_BD.WAV^np2kai/^d94546e70f17fd899be8df3544ab6cbb^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
2608_SD.WAV^np2kai/^d71004351c8bbfdad53b18222c061d49^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
2608_TOP.WAV^np2kai/^593cff6597ab9380d822b8f824fd2c28^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
2608_HH.WAV^np2kai/^08c54a0c1f774a5538a848a6665a34b4^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
2608_TOM.WAV^np2kai/^96a4ead13f364734f79b0c58af2f0e1f^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
2608_RIM.WAV^np2kai/^465ea0768b27da404aec45dfc501404b^NEC PC-98 (Neko Project II Kai)^YM2608 RYTHM sample
n88.rom^^4f984e04a99d56c4cfe36115415d6eb8^NEC PC-8000 / PC-8800 series (QUASI88)^BIOS File (Required)
n88n.rom^^2ff07b8769367321128e03924af668a0^NEC PC-8000 / PC-8800 series (QUASI88)^Required for PC-8000 series emulation. (N BASIC mode)
disk.rom^^793f86784e5608352a5d7f03f03e0858^NEC PC-8000 / PC-8800 series (QUASI88)^Required for loading disk images
n88knj1.rom^^d81c6d5d7ad1a4bbbd6ae22a01257603^NEC PC-8000 / PC-8800 series (QUASI88)^Required for viewing kanji
n88_0.rom^^d675a2ca186c6efcd6277b835de4c7e5^NEC PC-8000 / PC-8800 series (QUASI88)^Required for viewing kanji
n88_1.rom^^e844534dfe5744b381444dbe61ef1b66^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
n88_2.rom^^6548fa45061274dee1ea8ae1e9e93910^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
n88_3.rom^^fc4b76a402ba501e6ba6de4b3e8b4273^NEC PC-8000 / PC-8800 series (QUASI88)^Optional BIOS file
neocd_f.rom^^8834880c33164ccbe6476b559f3e37de^Neo Geo CD^Front Loader BIOS (At least 1 required)
neocd_sf.rom^^043d76d5f0ef836500700c34faef774d^Neo Geo CD^Front Loader BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
neocd_t.rom^^de3cf45d227ad44645b22aa83b49f450^Neo Geo CD^Top Loader BIOS (At least 1 required)
neocd_st.rom^^f6325a33c6d63ea4b9162a3fa8c32727^Neo Geo CD^Top Loader BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
neocd_z.rom^^11526d58d4c524daef7d5d677dc6b004^Neo Geo CD^CDZ BIOS (At least 1 required)
neocd_sz.rom^^971ee8a36fb72da57aed01758f0a37f5^Neo Geo CD^CDZ BIOS (SMKDAN 0.7b DEC 2010) (At least 1 required)
front-sp1.bin^^5c2366f25ff92d71788468ca492ebeca^Neo Geo CD^Front Loader BIOS (MAME) (At least 1 required)
top-sp1.bin^^122aee210324c72e8a11116e6ef9c0d0^Neo Geo CD^Top Loader BIOS (MAME) (At least 1 required)
neocd.bin^^f39572af7584cb5b3f70ae8cc848aba2^Neo Geo CD^CDZ BIOS (MAME) (At least 1 required)
uni-bioscd.rom^^08ca8b2dba6662e8024f9e789711c6fc^Neo Geo CD^Universe BIOS CD 3.3
gb_bios.bin^^32fbbd84168d3482956eb3c5051637f5^Game Boy^Optional BIOS file (used to display the Nintendo logo at boot)
gbc_bios.bin^^dbfce9db9deaa2567f6a84fde55f9680^Game Boy Color^Optional BIOS file (used to display the Nintendo logo at boot)
gba_bios.bin^^a860e8c0b6d573d191e4ec7db1b1e4f6^Game Boy Advance^Optional BIOS file (used to display the Nintendo logo at boot)
aes_keys.txt^citra/sysdata/^Unknown^Nintendo 3DS^Decryption keys used by Citra emulator
bios7.bin^^df692a80a5b1bc90728bc3dfc76cd948^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
bios9.bin^^a392174eb3e572fed6447e956bde4b25^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
firmware.bin^^e45033d9b0fa6b0de071292bba7c9d13^Nintendo DS^Used by MelonDS emulator (Required, see Wiki)
disksys.rom^^ca30b50f880eb660a320674ed365ef7a^Nintendo NES / Famicom^Family Computer Disk System BIOS - Required for Family Computer Disk System emulation
bios.min^^1e4fb124a3a886865acb574f388c803d^Nintendo Pokemon Mini^Pokémon Mini BIOS - Optional
prod.keys^switch/keys/^Unknown^Nintendo Switch^A file for Switch emulation in Ryujinx (Required)
title.keys^switch/keys/^Unknown^Nintendo Switch^A file for Switch emulation in Ryujinx (Required)
pico8^pico-8/^Unknown^PICO-8^The PICO-8 executable (Required)
pico8.dat^pico-8/^Unknown^PICO-8^A PICO-8 system file (Required)
pico8_dyn^pico-8/^Unknown^PICO-8^A PICO-8 system file (Required)
bios_CD_E.bin^^e66fa1dc5820d254611fdcdba0662372^Sega CD^MegaCD EU BIOS (At least 1 required)
bios_CD_U.bin^^2efd74e3232ff260e371b99f84024f7f^Sega CD^SegaCD US BIOS (At least 1 required)
bios_CD_J.bin^^278a9397d192149e84e820ac621a8edd^Sega CD^MegaCD JP BIOS (At least 1 required)
dc_boot.bin^dc/^e10c53c2f8b90bab96ead2d368858623^Sega Dreamcast^Dreamcast BIOS (Required)
naomi.zip^dc/^0ea6d3650ce4a7608a589e5df21a1f2f^Sega Dreamcast^Naomi BIOS
naomi2.zip^dc/^9b85e0de6ef359e5006c9b79a5a266b0^Sega Dreamcast^Naomi BIOS
naomi_boot.bin^dc/^96cb91c4a0bedd86e5a6965cfe6c0148^Sega Dreamcast^Naomi BIOS
hod2bios.zip^dc/^629bb0552463ba116ccf23d9a468a9f0^Sega Dreamcast^Naomi The House of the Dead 2 BIOS
f355dlx.zip^dc/^4b5bb177cbd760477598f85531dbe7fd^Sega Dreamcast^Naomi Ferrari F355 Challenge Deluxe BIOS
f355bios.zip^dc/^882f2c1cf8ec030955c48fe6aa6929ea^Sega Dreamcast^Naomi Ferrari F355 Challenge Twin/Deluxe BIOS
airlbios.zip^dc/^09ef4b8dea6cd8db2de1c13d510a6a87^Sega Dreamcast^Naomi Airline Pilots Deluxe BIOS
awbios.zip^dc/^b2f122e091da223beb824efafc3d6a36^Sega Dreamcast^Naomi Atomiswave BIOS
bios.sms^^840481177270d5642a14ca71ee72844c^Sega Master System / GameGear^Master System BIOS
BIOS.col^^2c66f5911e5b42b8ebe113403548eee7^Sega Master System / GameGear^Colecovision BIOS
sega_101.bin^^85ec9ca47d8f6807718151cbcca8b964^Sega Saturn^Saturn JP BIOS (At least 1 required)
mpr-17933.bin^^3240872c70984b6cbfda1586cab68dbe^Sega Saturn^Saturn US.mdEU BIOS (At least 1 required)
mpr-18811-mx.ic1^^255113ba943c92a54facd25a10fd780c^Sega Saturn^The King of Fighters 95 ROM Cartridge (Required for this game)
mpr-19367-mx.ic1^^1cd19988d1d72a3e7caa0b73234c96b4^Sega Saturn^Ultraman: Hikari no Kyojin Densetsu ROM Cartridge (Required for this game)
iplrom.dat^keropi/^7fd4caabac1d9169e289f0f7bbf71d8e^Sharp X68000^X68000 BIOS (Required)
cgrom.dat^keropi/^cb0a5cfcf7247a7eab74bb2716260269^Sharp X68000^Font file (Required)
iplrom30.dat^keropi/^f373003710ab4322642f527f567e020a^Sharp X68000^X68000 BIOS 2
iplromco.dat^keropi/^cc78d4f4900f622bd6de1aed7f52592f^Sharp X68000^X68000 BIOS 3
iplromxv.dat^keropi/^0617321daa182c3f3d6f41fd02fb3275^Sharp X68000^X68000 BIOS 4
psxonpsp660.bin^^c53ca5908936d412331790f4426c6c33^Sony PSX^PS1 BIOS from PSP (At least 1 required)
scph5500.bin^^8dd7d5296a650fac7319bce665a6a53c^Sony PSX^PS1 JP BIOS (At least 1 required)
scph5501.bin^^490f666e1afb15b7362b406ed1cea246^Sony PSX^PS1 US BIOS (At least 1 required)
scph5502.bin^^32736f17079d0b2b7024407c39bd3050^Sony PSX^PS1 EU BIOS (At least 1 required)
scph7001.bin^^1e68c231d0896b7eadcad1d7d8e76129^Sony PSX^PS1 BIOS (At least 1 required)
scph7002.bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
scph7003.bin^^490f666e1afb15b7362b406ed1cea246^Sony PSX^PS1 BIOS (At least 1 required)
scph7502.bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
scph9002(7502).bin^^b9d9a0286c33dc6b7237bb13cd46fdee^Sony PSX^PS1 BIOS (At least 1 required)
ps1_rom.bin^^81bbe60ba7a3d1cea1d48c14cbcc647b^Sony PSX^PS1 BIOS (At least 1 required)
ps2-0200a-20040614.bin^^d333558cc14561c1fdc334c75d5f37b7^Sony PS2^PS2 US BIOS (At least 1 required)
ps2-0200e-20040614.bin^^dc752f160044f2ed5fc1f4964db2a095^Sony PS2^PS2 EU BIOS (At least 1 required)
ps2-0200j-20040614.bin^^0eee5d1c779aa50e94edd168b4ebf42e^Sony PS2^PS2 JP BIOS (At least 1 required)
128p-0.rom^fuse/^a249565f03b98d004ee7f019570069cd^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
128p-1.rom^fuse/^6e09e5d3c4aef166601669feaaadc01c^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
trdos.rom^fuse/^0da70a5d2a0e733398e005b96b7e4ba6^ZX Spectrum^Pentagon 128K/512K/1024 ROM (Required)
gluck.rom^fuse/^d5869034604dbfd2c1d54170e874fd0a^ZX Spectrum^Pentagon 512K/1024 ROM (Required)
256s-0.rom^fuse/^b9fda5b6a747ff037365b0e2d8c4379a^ZX Spectrum^Scorpion 256K ROM (Required)
256s-1.rom^fuse/^643861ad34831b255bf2eb64e8b6ecb8^ZX Spectrum^Scorpion 256K ROM (Required)
256s-2.rom^fuse/^d8ad507b1c915a9acfe0d73957082926^ZX Spectrum^Scorpion 256K ROM (Required)
256s-3.rom^fuse/^ce0723f9bc02f4948c15d3b3230ae831^ZX Spectrum^Scorpion 256K ROM (Required)

View file

@ -1,34 +1,5 @@
#!/bin/bash #!/bin/bash
check_bios_files() {
# This function validates all the BIOS files listed in the $bios_checklist and adds the results to an array called $bios_checked_list which can be used elsewhere
# There is a "basic" and "expert" mode which outputs different levels of data
# USAGE: check_bios_files "mode"
while IFS="^" read -r bios_file bios_subdir bios_hash bios_system bios_desc || [[ -n "$bios_file" ]];
do
if [[ ! $bios_file == "#"* ]] && [[ ! -z "$bios_file" ]]; then
bios_file_found="No"
bios_hash_matched="No"
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
bios_file_found="Yes"
if [[ $bios_hash == "Unknown" ]]; then
bios_hash_matched="Unknown"
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
bios_hash_matched="Yes"
fi
fi
if [[ "$1" == "basic" ]]; then
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc")
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc" # Godot data transfer
else
bios_checked_list=("${bios_checked_list[@]}" "$bios_file" "$bios_system" "$bios_file_found" "$bios_hash_matched" "$bios_desc" "$bios_subdir" "$bios_hash")
echo "$bios_file"^"$bios_system"^"$bios_file_found"^"$bios_hash_matched"^"$bios_desc"^"$bios_subdir"^"$bios_hash" # Godot data transfer
fi
fi
done < $bios_checklist
}
find_empty_rom_folders() { find_empty_rom_folders() {
# This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal # This function will build an array of all the system subfolders in $roms_folder which are either empty or contain only systeminfo.txt for easy removal

View file

@ -36,7 +36,7 @@ rd_conf_backup="/var/config/retrodeck/retrodeck.bak"
config="/app/retrodeck/config" # folder with all the default emulator configs config="/app/retrodeck/config" # folder with all the default emulator configs
rd_defaults="$config/retrodeck/retrodeck.cfg" # A default RetroDECK config file 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 rd_update_patch="/var/config/retrodeck/rd_update.patch" # A static location for the temporary patch file used during retrodeck.cfg updates
bios_checklist="$config/retrodeck/reference_lists/bios_checklist.cfg" # A config file listing BIOS file information that can be verified bios_checklist="$config/retrodeck/reference_lists/bios.json" # A config file listing BIOS file information that can be verified
input_validation="$config/retrodeck/reference_lists/input_validation.cfg" # A config file listing valid CLI inputs 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 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 splashscreen_dir="/var/config/ES-DE/resources/graphics/extra_splashes" # The default location of extra splash screens

View file

@ -70,7 +70,6 @@ source /app/libexec/global.sh
# - Troubleshooting # - Troubleshooting
# - Backup: RetroDECK Userdata # - Backup: RetroDECK Userdata
# - Check & Verify: BIOS # - Check & Verify: BIOS
# - Check & Verify: BIOS - Expert Mode
# - Check & Verify: Multi-file structure # - Check & Verify: Multi-file structure
# - RetroDECK: Reset # - RetroDECK: Reset
# - Reset Emulator or Engine # - Reset Emulator or Engine
@ -153,6 +152,7 @@ configurator_welcome_dialog() {
"RetroDECK: Troubleshooting" ) "RetroDECK: Troubleshooting" )
log i "Configurator: opening \"$choice\" menu" log i "Configurator: opening \"$choice\" menu"
# Call the troubleshooting dialog to return to the previous menu after checking BIOS files
configurator_retrodeck_troubleshooting_dialog configurator_retrodeck_troubleshooting_dialog
;; ;;
@ -986,7 +986,6 @@ configurator_retrodeck_troubleshooting_dialog() {
--column="Choice" --column="Action" \ --column="Choice" --column="Action" \
"Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \ "Backup: RetroDECK Userdata" "Compress and backup important RetroDECK user data folders" \
"Check & Verify: BIOS Files" "Show information about common BIOS files" \ "Check & Verify: BIOS Files" "Show information about common BIOS files" \
"Check & Verify: BIOS Files - Expert Mode" "Show information about common BIOS files, with additional information useful for troubleshooting" \
"Check & Verify: Multi-file structure" "Verify the proper structure of multi-file or multi-disc games" \ "Check & Verify: Multi-file structure" "Verify the proper structure of multi-file or multi-disc games" \
"RetroDECK: Reset" "Reset specific parts or all of RetroDECK" ) "RetroDECK: Reset" "Reset specific parts or all of RetroDECK" )
@ -1015,10 +1014,6 @@ configurator_retrodeck_troubleshooting_dialog() {
configurator_check_bios_files configurator_check_bios_files
;; ;;
"Check & Verify: BIOS Files - Expert Mode" )
configurator_check_bios_files_expert_mode
;;
"Check & Verify: Multi-file structure" ) "Check & Verify: Multi-file structure" )
log i "Configurator: opening \"$choice\" menu" log i "Configurator: opening \"$choice\" menu"
configurator_check_multifile_game_structure configurator_check_multifile_game_structure
@ -1037,40 +1032,92 @@ configurator_retrodeck_troubleshooting_dialog() {
esac esac
} }
# This function checks and verifies BIOS files for RetroDECK.
# It reads a list of required BIOS files from a JSON file, checks if they exist in the specified folder,
# verifies their MD5 hashes if provided, and displays the results in a Zenity dialog.
configurator_check_bios_files() { configurator_check_bios_files() {
configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nBIOS files not known to this tool could still function.\n\nSome more advanced emulators such as Ryujinx will have additional methods to verify that the BIOS files are in working order." configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nBIOS files not known to this tool could still function.\n\nSome more advanced emulators such as Ryujinx will have additional methods to verify that the BIOS files are in working order."
bios_checked_list=()
check_bios_files "basic" log d "Starting BIOS check in mode: $mode"
(
# Read the BIOS checklist from bios.json using jq
total_bios=$(jq '.bios | length' $bios_checklist)
current_bios=0
log d "Total BIOS files to check: $total_bios"
declare -a bios_checked_list
while read -r entry; do
# Extract the key (element name) and the fields
bios_file=$(echo "$entry" | jq -r '.key // "Unknown"')
bios_hash=$(echo "$entry" | jq -r '.value.md5 | if type=="array" then join(", ") else . end // "Unknown"')
bios_systems=$(echo "$entry" | jq -r '.value.system | if type=="array" then join(", ") else . end // "Unknown"')
bios_desc=$(echo "$entry" | jq -r '.value.description // "No description provided"')
required=$(echo "$entry" | jq -r '.value.required // "No"') # TODO: add me to zenity
bios_subdir=$(echo "$entry" | jq -r ".value.subdir // \"$bios_folder\"")
log d "Checking entry $bios_entry"
# Skip if bios_file is empty
if [[ ! -z "$bios_file" ]]; then
bios_file_found="No"
bios_hash_matched="No"
# Check if the BIOS file exists
if [[ -f "$bios_folder/$bios_subdir$bios_file" ]]; then
bios_file_found="Yes"
# Check if the hash matches
if [[ $bios_hash == "Unknown" ]]; then
bios_hash_matched="Unknown"
elif [[ $(md5sum "$bios_folder/$bios_subdir$bios_file" | awk '{ print $1 }') == "$bios_hash" ]]; then
bios_hash_matched="Yes"
fi
fi
log d "BIOS file found: $bios_file_found, Hash matched: $bios_hash_matched"
fi
log d "Adding BIOS entry: \"$bios_file $bios_systems $bios_file_found $bios_hash_matched $bios_desc $bios_subdir $bios_hash\" to the bios_checked_list"
if [[ $bios_checked_list != "" ]]; then
bios_checked_list=("${bios_checked_list[@]}"^"$bios_file^$bios_systems^$bios_file_found^$bios_hash_matched^$bios_desc^$bios_subdir^$bios_hash")
else
bios_checked_list=("$bios_file^$bios_systems^$bios_file_found^$bios_hash_matched^$bios_subdir^$bios_hash^$bios_desc")
fi
#echo "$bios_file"^"$bios_systems"^"$bios_file_found"^"$bios_hash_matched"^"$bios_subdir"^"$bios_hash"^"$bios_desc" # Godot data transfer #TODO: this is breaking the zenity dialog, since we don't release Godot in this version I disabled it.
current_bios=$((current_bios + 1))
echo "$((current_bios * 100 / total_bios))"
done < <(jq -c '.bios | to_entries[]' "$bios_checklist")
log d "Finished checking BIOS files"
IFS="^" # Set the Internal Field Separator to ^ to split the bios_checked_list array
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \ rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column "BIOS File Name" \ --column "BIOS File Name" \
--column "System" \ --column "Systems" \
--column "BIOS File Found" \ --column "Found?" \
--column "BIOS Hash Match" \ --column "Hash Matches?" \
--column "BIOS File Description" \ --column "Expected Path" \
"${bios_checked_list[@]}" --column "MD5" \
--column "Description" \
$(printf '%s\n' "${bios_checked_list[@]}")
IFS=$' \t\n' # Reset the Internal Field Separator
configurator_retrodeck_troubleshooting_dialog ) |
} rd_zenity --progress --no-cancel --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
configurator_check_bios_files_expert_mode() { --title "RetroDECK Configurator Utility - BIOS Check in Progress" \
configurator_generic_dialog "RetroDECK Configurator - Check & Verify: BIOS Files - Expert Mode" "This check will look for BIOS files that RetroDECK has identified as working.\n\nNot all BIOS files are required for games to work, please check the BIOS description for more information on its purpose.\n\nBIOS files not known to this tool could still function.\n\nSome more advanced emulators such as Ryujinx will have additional methods to verify that the BIOS files are in working order." --text="RetroDECK is checking your BIOS files, please wait..." \
bios_checked_list=() --width=400 --height=100
check_bios_files "expert"
rd_zenity --list --title="RetroDECK Configurator Utility - Check & Verify: BIOS Files" --cancel-label="Back" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --width=1200 --height=720 \
--column "BIOS File Name" \
--column "System" \
--column "BIOS File Found" \
--column "BIOS Hash Match" \
--column "BIOS File Description" \
--column "BIOS File Subdirectory" \
--column "BIOS File Hash" \
"${bios_checked_list[@]}"
configurator_retrodeck_troubleshooting_dialog configurator_retrodeck_troubleshooting_dialog
} }