diff --git a/missings/knowns.txt b/missings/knowns.txt new file mode 100644 index 0000000..3088501 --- /dev/null +++ b/missings/knowns.txt @@ -0,0 +1,296 @@ +3do_arcade_saot.bin +5200.rom +64DD_IPL.bin +7800 BIOS (E).rom +7800 BIOS (U).rom +airlbios.zip +areplay.bin +ATARIBAS.ROM +ATARIOSA.ROM +ATARIOSB.ROM +ATARIXL.ROM +awbios.zip +bios7.bin +bios9.bin +bios_CD_E.bin +bios_CD_J.bin +bios_CD_U.bin +BIOS.col +bios_E.sms +bios.gg +bios_J.sms +bios_MD.bin +bios.min +bios.sms +bios_U.sms +BS-X.bin +BS-X.bin.sfc (japan, oficial) +c52.bin +CD32 Extended-ROM r40.60 (1993)(Commodore)(CD32).rom +CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom +citra +citra/nand +citra/nand/00000000000000000000000000000000 +citra/nand/00000000000000000000000000000000/title +citra/nand/00000000000000000000000000000000/title/0004009b +citra/nand/00000000000000000000000000000000/title/0004009b/00010202 +citra/nand/00000000000000000000000000000000/title/0004009b/00010202/content +citra/nand/00000000000000000000000000000000/title/0004009b/00010202/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/0004009b/00010402 +citra/nand/00000000000000000000000000000000/title/0004009b/00010402/content +citra/nand/00000000000000000000000000000000/title/0004009b/00010402/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/0004009b/00014002 +citra/nand/00000000000000000000000000000000/title/0004009b/00014002/content +citra/nand/00000000000000000000000000000000/title/0004009b/00014002/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/0004009b/00014102 +citra/nand/00000000000000000000000000000000/title/0004009b/00014102/content +citra/nand/00000000000000000000000000000000/title/0004009b/00014102/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/0004009b/00014202 +citra/nand/00000000000000000000000000000000/title/0004009b/00014202/content +citra/nand/00000000000000000000000000000000/title/0004009b/00014202/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/0004009b/00014302 +citra/nand/00000000000000000000000000000000/title/0004009b/00014302/content +citra/nand/00000000000000000000000000000000/title/0004009b/00014302/content/00000000.app.romfs +citra/nand/00000000000000000000000000000000/title/000400db +citra/nand/00000000000000000000000000000000/title/000400db/00010302 +citra/nand/00000000000000000000000000000000/title/000400db/00010302/content +citra/nand/00000000000000000000000000000000/title/000400db/00010302/content/00000000.app.romfs +citra/sysdata +citra/sysdata/shared_font.bin +Complex_4627.bin +cx4.data.rom +CYRILLIC.FNT +dc +dc/airlbios.zip +dc/awbios.zip +dc/boot.bin +dc_boot.bin +dc/dc_boot.bin +dc/dc_flash.bin +dc/f355bios.zip +dc/f355dlx.zip +dc/flash.bin +dc_flash.bin +dc/hod2bios.zip +dc/naomi2.zip +dc/naomigd.zip +dc/naomi.zip +dc_nvmem.bin +DISK.ROM +disksys.rom +dolphin-emu +dolphin-emu/Sys +dolphin-emu/Sys/GC +dolphin-emu/Sys/GC/EUR +dolphin-emu/Sys/GC/EUR/IPL.bin +dolphin-emu/Sys/GC/JAP +dolphin-emu/Sys/GC/JAP/IPL.bin +dolphin-emu/Sys/GC/USA +dolphin-emu/Sys/GC/USA/IPL.bin +dsp1b.data.rom +dsp1b.program.rom +dsp1.data.rom +dsp1.program.rom +dsp2.data.rom +dsp2.program.rom +dsp3.data.rom +dsp3.program.rom +dsp4.data.rom +dsp4.program.rom +ECS.bin +epochtv.chr +EROM.BIN +exec.bin +f355bios.zip +f355dlx.zip +firmware.bin +FMPAC16.ROM +FMPAC.ROM +g7400.bin +gba_bios.bin +gb_bios.bin +gbc_bios.bin +gexpress.pce +ggenie.bin +goldstar.bin +grom.bin +hod2bios.zip +ITALIC.FNT +IVOICE.bin +jopac.bin +KANJI.ROM +keropi +keropi/cgrom.dat +keropi/iplrom30.dat +keropi/iplromco.dat +keropi/iplrom.dat +keropi/iplromxv.dat +kick34005.A500 +kick34005.CDTV +kick37175.A500 +kick40060.CD32 +kick40060.CD32.ext +kick40063.A600 +kick40068.A1200 +kick40068.A4000 +Kickstart v1.2 r33.180 (1986)(Commodore)(A500-A1000-A2000)[!].rom +Kickstart v1.2 rev 33.166 (1986)(Commodore)(A1000).rom +Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[o].rom +Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom +Kickstart v2.04 r37.175 (1991)(Commodore)(A500+)[!].rom +Kickstart v2.05 r37.350 (1992)(Commodore)(A600HD)[!].rom +Kickstart v3.1 r40.60 (1993)(Commodore)(CD32).rom +Kickstart v3.1 r40.68 (1993)(Commodore)(A1200)[!].rom +Kickstart v3.1 r40.68 (1993)(Commodore)(A3000).rom +Kickstart v3.1 r40.68 (1993)(Commodore)(A4000).rom +kronos +kronos/mpr-18811-mx.ic1 +kronos/mpr-19367-mx.ic1 +kronos/saturn_bios.bin +kronos/stvbios.zip +LICENSE +lynxboot.img +mcpx_1.0.bin +mpr-17933.bin +mpr-18811-mx.ic1 +mpr-19367-mx.ic1 +MSX2EXT.ROM +MSX2PEXT.ROM +MSX2P.ROM +MSX2.ROM +MSXDOS2.ROM +MSX.ROM +Mupen64plus +Mupen64plus/cache +Mupen64plus/cache/readme.txt +Mupen64plus/IPL.n64 +naomi2.zip +naomi.bin +naomigd.zip +naomi.zip +neocd +neocd/000-lo.lo +neocd-cdz.bin +neocd-front-load.bin +neocd/front-sp1.bin +neocd/neocd.bin +neocd/neocd_f.rom +neocd/neocd_sf.rom +neocd/neocd_st.rom +neocd/neocd_sz.rom +neocd/neocd_t.rom +neocd/neocd_z.rom +neocd/ng-lo.rom +neocd-top-load.bin +neocd/top-sp1.bin +neocd-unibios-3.3.bin +neocd-unibios.bin +neocd/uni-bioscd.rom +neocd_z.rom +neocdz.zip +neogeo.zip +nes.pal +ng-lo.rom +np2kai +np2kai/2608_bd.wav +np2kai/2608_hh.wav +np2kai/2608_rim.wav +np2kai/2608_sd.wav +np2kai/2608_tom.wav +np2kai/2608_top.wav +np2kai/bios.rom +np2kai/font.bmp +np2kai/FONT.ROM +np2kai/itf.rom +np2kai/memory.bin +np2kai/sound.rom +o2rom.bin +PAINTER.ROM +palmos41-en-m515.rom +panafz10.bin +panafz10e-anvil.bin +panafz10e-anvil-norsa.bin +panafz10e-anvil-patched.bin +panafz10ja-anvil-kanji +panafz10ja-anvil-kanji.bin +panafz10-norsa.bin +panafz10-patched.bin +panafz1.bin +panafz1j.bin +panafz1j-kanji.bin +panafz1j-norsa.bin +panafz1-kanji.bin +pcfx.rom +pcsx2 +pcsx2/bios +pcsx2/bios/EROM.BIN +pcsx2/bios/rom1.bin +ProSystem.dat +quasi88 +quasi88/DISK.ROM +quasi88/font.rom +quasi88/N88_0.ROM +quasi88/N88_1.ROM +quasi88/N88_2.ROM +quasi88/N88_3.ROM +quasi88/n88jisho.rom +quasi88/N88KNJ1.ROM +quasi88/N88KNJ2.ROM +quasi88/N88N.ROM +quasi88/N88.ROM +rom1.bin +ROM2.BIN +rom.db +RS232.ROM +sanyotry.bin +saturn_bios.bin +scph10000.bin +scph1000.bin +scph1001.bin +scph101.bin +SCPH30004R.bin +SCPH30004R.MEC +SCPH30004R.NVM +scph39001.bin +scph39001.MEC +scph39001.NVM +scph5500.bin +scph5501.bin +scph5502.bin +scph7001.bin +scph7003.bin +sega_101.bin +sega_101_jp_us_eu_hack.bin +SGB1.sfc +SGB2.sfc +sgb_bios.bin +sk2chip.bin +sk.bin +sl31253.bin +sl31254.bin +sl90025.bin +st010.data.rom +st010.program.rom +st011.data.rom +st011.program.rom +st018.data.rom +st018.program.rom +STBIOS.bin +stvbios.zip +switch +switch/keys +switch/keys/prod.keys +switch/keys/title.keys +syscard1.pce +syscard2.pce +syscard2u.pce +syscard3.pce +syscard3u.pce +tos.img +uae_data +uae_data/drive_click_LOUD.wav +uae_data/drive_snatch_LOUD.wav +uae_data/drive_spin_LOUD.wav +uae_data/drive_spinnd_LOUD.wav +uae_data/drive_startup_LOUD.wav +upd7801g.s01 diff --git a/missings/retrodeck.py b/missings/retrodeck.py new file mode 100755 index 0000000..430024f --- /dev/null +++ b/missings/retrodeck.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +from argparse import ArgumentParser +from csv import reader +from hashlib import md5 +from pathlib import Path +from urllib import request + +parser = ArgumentParser() +parser.add_argument( + "-d", + "--directory", + default=Path.cwd(), + type=Path, + help="Folder to scan for existing bioses", +) +args = parser.parse_args() +knowns = [] + +with open(Path(__file__).parent / "knowns.txt", "r") as f: + knowns = f.read().splitlines() + +with request.urlopen( + "https://raw.githubusercontent.com/RetroDECK/RetroDECK/main/emu-configs/defaults/retrodeck/reference_lists/bios_checklist.cfg" +) as response: + bioses = reader(response.read().decode().splitlines(), delimiter="^") + + for bios in bioses: + if "pico" in bios[0]: + continue + + bios_path = args.directory / bios[1] / bios[0] + + if not bios_path.is_file(): + print( + f"\033[91mMissing {bios_path.relative_to(args.directory)} on {bios[3]} with hash {bios[2]}\033[00m" + ) + elif bios[2] == "Unknown": + if str(bios_path.relative_to(args.directory)) not in knowns: + print( + f"Unknown checksum for {bios_path.relative_to(args.directory)} on {bios[3]}" + ) + else: + with open(bios_path, "rb") as file: + checksum = md5(file.read()).hexdigest() + + if checksum != bios[2] and bios[1] != "dc/": + print( + f"\033[93mChecksum mismatch for {bios_path.relative_to(args.directory)} on {bios[3]}: {checksum}\033[00m != \033[92m{bios[2]}\033[00m" + )