diff --git a/README.md b/README.md index 11385534..8cb98cb8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Complete, verified collection of BIOS, firmware, and system files for retrogaming emulators - RetroArch, Batocera, Recalbox, Lakka, RetroPie, and more. Every file checked against official checksums from [libretro System.dat](https://github.com/libretro/libretro-database), [batocera-systems](https://github.com/batocera-linux/batocera.linux), and [Recalbox es_bios.xml](https://gitlab.com/recalbox/recalbox). -> **5352** files | **4650.5 MB** | Last updated: 2026-03-17T13:43:36Z +> **5355** files | **4664.7 MB** | Last updated: 2026-03-17T14:31:33Z > > PlayStation, PS2, Nintendo DS, Game Boy, GBA, Dreamcast, Saturn, Neo Geo, Mega CD, PC Engine, MSX, Amiga, Atari ST, ZX Spectrum, Arcade (MAME/FBNeo), and 50+ systems. @@ -45,12 +45,12 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download | Platform | Coverage | Status | Verification | Details | |----------|----------|--------|--------------|---------| -| Batocera | 680/680 (100.0%) | ![Batocera 100%](https://img.shields.io/badge/Batocera-100%25-brightgreen) 🟢 | md5 | 589 verified, 91 untested | +| Batocera | 680/680 (100.0%) | ![Batocera 100%](https://img.shields.io/badge/Batocera-100%25-brightgreen) 🟢 | md5 | 675 verified, 5 untested | | EmuDeck | 164/164 (100.0%) | ![EmuDeck 100%](https://img.shields.io/badge/EmuDeck-100%25-brightgreen) 🟢 | md5 | 164 verified | | Lakka | 398/398 (100.0%) | ![Lakka 100%](https://img.shields.io/badge/Lakka-100%25-brightgreen) 🟢 | existence | 398 present | -| Recalbox | 346/346 (100.0%) | ![Recalbox 100%](https://img.shields.io/badge/Recalbox-100%25-brightgreen) 🟢 | md5 | 336 verified, 10 untested | +| Recalbox | 346/346 (100.0%) | ![Recalbox 100%](https://img.shields.io/badge/Recalbox-100%25-brightgreen) 🟢 | md5 | 337 verified, 9 untested | | RetroArch | 398/398 (100.0%) | ![RetroArch 100%](https://img.shields.io/badge/RetroArch-100%25-brightgreen) 🟢 | existence | 398 present | -| RetroBat | 343/343 (100.0%) | ![RetroBat 100%](https://img.shields.io/badge/RetroBat-100%25-brightgreen) 🟢 | md5 | 341 verified, 2 untested | +| RetroBat | 343/343 (100.0%) | ![RetroBat 100%](https://img.shields.io/badge/RetroBat-100%25-brightgreen) 🟢 | md5 | 343 verified | | RetroPie | 398/398 (100.0%) | ![RetroPie](https://img.shields.io/badge/RetroPie-archived-lightgrey) 📦 | existence | 398 present *(archived - generate manually)* | ## Systems @@ -67,7 +67,7 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download | Apple/Apple II | 17 | 1.2 MB | | Apple/Macintosh | 18 | 60.1 MB | | Apple/Macintosh II | 10 | 50.3 MB | -| Arcade/Arcade | 105 | 594.6 MB | +| Arcade/Arcade | 105 | 597.3 MB | | Arcade/FBNeo | 31 | 29.6 MB | | Arcade/MAME | 1060 | 2120.8 MB | | Atari/400-800 | 7 | 90.5 KB | @@ -89,7 +89,7 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download | Commodore/C128 | 7 | 360.0 KB | | DOS/DOSBox | 6 | 1.9 MB | | Dinothawr/Dinothawr | 1 | 6.4 MB | -| Dragon/Dragon | 17 | 206.9 KB | +| Dragon/Dragon | 17 | 234.1 KB | | EACA/Colour Genie | 1 | 16.0 KB | | Elektronika/BK | 8 | 100.0 KB | | Enterprise/64-128 | 15 | 414.2 KB | @@ -148,11 +148,11 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download | SNK/Neo Geo Pocket | 1 | 64.0 KB | | Sega/32X | 3 | 3.2 KB | | Sega/AI | 1 | 335.2 KB | -| Sega/Arcade | 4 | 1.8 MB | +| Sega/Arcade | 3 | 5.3 KB | | Sega/Beena | 1 | 83.2 KB | -| Sega/Dreamcast | 24 | 32.4 MB | +| Sega/Dreamcast | 18 | 10.0 MB | | Sega/Game Gear | 1 | 1024 B | -| Sega/Hikaru | 2 | 782.3 KB | +| Sega/Hikaru | 1 | 14.7 KB | | Sega/Master System | 2 | 16.0 KB | | Sega/Mega CD | 5 | 1024.0 KB | | Sega/Mega Drive | 6 | 2.3 MB | @@ -171,7 +171,7 @@ python scripts/generate_pack.py --all --include-archived --output-dir ~/Download | Synertek/SYM-1 | 1 | 8.0 KB | | Tandy/CoCo | 21 | 263.0 KB | | Tandy/MC-10 | 2 | 14.2 KB | -| Tandy/TRS-80 | 4 | 42.2 KB | +| Tandy/TRS-80 | 4 | 75.8 KB | | Tandy/VIS | 1 | 590.9 KB | | Texas Instruments/TI-83 | 3 | 2.8 MB | | Texas Instruments/TI-99 | 5 | 121.0 KB | @@ -610,11 +610,13 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `5426d52e17e0ff9195fabbb42f704342e556d08e` - MD5: `fcb631bf18a56f2d5b077fa846bab4a6` - CRC32: `9c9601ca` -- **[airlbios.zip](bios/Arcade/Arcade/airlbios.zip)** (715,730 bytes) - - SHA1: `f2a730530f4989ca0e8860aa4e455b6a5fe69e1d` - - MD5: `7a11bfe0cc72886d032e386db68f890c` - - CRC32: `f83ec60f` - - **Variants** (1 alternate versions): +- **[airlbios.zip](bios/Arcade/Arcade/airlbios.zip)** (718,362 bytes) + - SHA1: `03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623` + - MD5: `6a0ac75d702f8f7c1ca6c72aa2b0b7d8` + - CRC32: `1e5b53dc` + - **Variants** (3 alternate versions): + - [airlbios.zip](bios/Arcade/Arcade/.variants/airlbios.zip) (715,730 bytes) - SHA1: `f2a730530f4989ca0e8860aa4e455b6a5fe69e1d`, MD5: `7a11bfe0cc72886d032e386db68f890c` + - [airlbios.zip](bios/Sega/Dreamcast/.variants/airlbios.zip) (702,637 bytes) - SHA1: `e18c5e9ca21654dfd724aa54e625b386e6ffb2c5`, MD5: `3f348c88af99a40fbd11fa435f28c69d` - [airlbios.zip.ff161eaa](bios/Sega/Dreamcast/.variants/airlbios.zip.ff161eaa) (702,615 bytes) - SHA1: `ff161eaa16b36b519eeab26364b99f59b9e8128c`, MD5: `e80075c0dfcd39ab2bea972d150e0ba1` - **[aleck64.zip](bios/Arcade/Arcade/aleck64.zip)** (1,804 bytes) - SHA1: `beaf97c4a0e0792b8db65648f9dabb6a54ae0549` @@ -652,7 +654,8 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `7940c7bf29eee85a5b2fdec78750b19aa22895dc` - MD5: `85254fbe320ca82a768ec2c26bb08def` - CRC32: `67a14ad5` - - **Variants** (1 alternate versions): + - **Variants** (2 alternate versions): + - [awbios.zip](bios/Sega/Dreamcast/.variants/awbios.zip) (34,620 bytes) - SHA1: `cdf247154e28c4b352b962a4a523587f2fde9305`, MD5: `0ec5ae5b5a5c4959fa8b43fcf8687f7c` - [awbios.zip.1f62f581](bios/Sega/Dreamcast/.variants/awbios.zip.1f62f581) (34,598 bytes) - SHA1: `1f62f581094c90620c74d4d15c1c1640a973e684`, MD5: `59889f03e09c1d4246b7874096a3201c` - **[bubsys.zip](bios/Arcade/Arcade/bubsys.zip)** (7,950 bytes) - SHA1: `1c0ffcd308b0c8c6dbb74ad8b811a0767200d366` @@ -827,11 +830,13 @@ These are large asset packs required by specific cores. They are included in the - CRC32: `e62f0ef7` - **Variants** (1 alternate versions): - [hng64.zip](bios/Arcade/Arcade/.variants/hng64.zip) (41,592 bytes) - SHA1: `fb0c36d69f66f4b10a895aa708ae37f826755257`, MD5: `219a818c4ffd9fab04b9be9c7e2107a8` -- **[hod2bios.zip](bios/Arcade/Arcade/hod2bios.zip)** (1,479,106 bytes) - - SHA1: `782c303cbdfab1027b04db74a63e27bdad5e0c53` - - MD5: `f4011d3116500354edf7302a90402711` - - CRC32: `0ddc6daf` - - **Variants** (3 alternate versions): +- **[hod2bios.zip](bios/Arcade/Arcade/hod2bios.zip)** (1,889,870 bytes) + - SHA1: `07fd3fae7af650a37a3329ed09d039bd7360294f` + - MD5: `0ec01786c10707acfa480f1d96c935ef` + - CRC32: `45ecc8ae` + - **Variants** (5 alternate versions): + - [hod2bios.zip](bios/Arcade/Arcade/.variants/hod2bios.zip) (1,479,106 bytes) - SHA1: `782c303cbdfab1027b04db74a63e27bdad5e0c53`, MD5: `f4011d3116500354edf7302a90402711` + - [hod2bios.zip](bios/Sega/Dreamcast/.variants/hod2bios.zip) (1,469,423 bytes) - SHA1: `b3a86809857fe9ce575da73f6ed6c5441d558e3d`, MD5: `9c755171b222fb1f4e1439d5b709dbf1` - [hod2bios.zip.0b5cc968](bios/Arcade/Arcade/.variants/hod2bios.zip.0b5cc968) (1,465,991 bytes) - SHA1: `0b5cc968644c936d4819c1eb5f623f5f3f83eda1`, MD5: `36ac7b58216de5eecfaebe527bf6d02e` - [hod2bios.zip.889d239a](bios/Sega/Dreamcast/.variants/hod2bios.zip.889d239a) (816,543 bytes) - SHA1: `889d239ac41f25622164609367b713dd33bd5bde`, MD5: `ee362dd63d7ff01f6d579ad53f3bfe69` - [hod2bios.zip.9b9c9f0a](bios/Sega/Dreamcast/.variants/hod2bios.zip.9b9c9f0a) (1,057,881 bytes) - SHA1: `9b9c9f0af3de914de677ba8e19f4190673142c1b`, MD5: `6559697f76592be77a7a9ff3bfb6711a` @@ -915,23 +920,29 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `0649e27b7d605add7fc4215ee628b71e3c835328` - MD5: `17516c33298e52424ffb58afc2ad208c` - CRC32: `cf65b189` -- **[naomi.zip](bios/Arcade/Arcade/naomi.zip)** (9,321,533 bytes) - - SHA1: `c96711c01c0158f161791d6fbe75d88329e8ac0a` - - MD5: `526eda1e2a7920c92c88178789d71d84` - - CRC32: `6ee50181` - - **Variants** (2 alternate versions): +- **[naomi.zip](bios/Arcade/Arcade/naomi.zip)** (10,075,456 bytes) + - SHA1: `11ad55ee6b11092e810365b8389c1f8b4081e5d0` + - MD5: `4e1ca1ade518f53efcce30bdefb855a4` + - CRC32: `fb0bca9c` + - **Variants** (4 alternate versions): + - [naomi.zip](bios/Arcade/Arcade/.variants/naomi.zip) (9,321,533 bytes) - SHA1: `c96711c01c0158f161791d6fbe75d88329e8ac0a`, MD5: `526eda1e2a7920c92c88178789d71d84` + - [naomi.zip](bios/Sega/Dreamcast/.variants/naomi.zip) (9,308,440 bytes) - SHA1: `d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb`, MD5: `eb4099aeb42ef089cfe94f8fe95e51f6` - [naomi.zip.2533cc33](bios/Arcade/Arcade/.variants/naomi.zip.2533cc33) (8,005,827 bytes) - SHA1: `2533cc33201da28b2086a0a2fd2b5e04271b6eeb`, MD5: `58033e4ba5793c09dffb87f96f3e9301` - [naomi.zip.43f0018c](bios/Sega/Dreamcast/.variants/naomi.zip.43f0018c) (6,134,707 bytes) - SHA1: `43f0018c32dd6d166c3b6d8ed2ffa672f398fa3a`, MD5: `8bab1ba136d0cb6ebcc05a27c4dfc185` -- **[naomi2.zip](bios/Arcade/Arcade/naomi2.zip)** (5,384,060 bytes) - - SHA1: `c63a74691ee7384080877268a70bb1f53bc66dee` - - MD5: `dd6fb7894fb2398a55e83a51328a3ad6` - - CRC32: `4a2409fe` - - **Variants** (1 alternate versions): +- **[naomi2.zip](bios/Arcade/Arcade/naomi2.zip)** (7,038,226 bytes) + - SHA1: `da79eca49c59f7661737643b5e11e63a73b51fcc` + - MD5: `843c0d51237dc945f57237c4b9872b1d` + - CRC32: `b700583b` + - **Variants** (2 alternate versions): + - [naomi2.zip](bios/Arcade/Arcade/.variants/naomi2.zip) (5,384,060 bytes) - SHA1: `c63a74691ee7384080877268a70bb1f53bc66dee`, MD5: `dd6fb7894fb2398a55e83a51328a3ad6` - [naomi2.zip.2962e338](bios/Sega/Dreamcast/.variants/naomi2.zip.2962e338) (7,022,501 bytes) - SHA1: `2962e338ccc9f66f29b409f73ca27aeee79633ac`, MD5: `c50072cbab75673e1b1a6b94355e6fa8` -- **[naomigd.zip](bios/Arcade/Arcade/naomigd.zip)** (3,371,765 bytes) - - SHA1: `f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0` - - MD5: `e20b430bd7def78b45f61f238abab624` - - CRC32: `ca501374` +- **[naomigd.zip](bios/Arcade/Arcade/naomigd.zip)** (3,387,512 bytes) + - SHA1: `a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5` + - MD5: `82f3a8bea688b4863947722d2fcb07f7` + - CRC32: `31828d82` + - **Variants** (2 alternate versions): + - [naomigd.zip](bios/Arcade/Arcade/.variants/naomigd.zip) (3,371,765 bytes) - SHA1: `f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0`, MD5: `e20b430bd7def78b45f61f238abab624` + - [naomigd.zip](bios/Sega/Dreamcast/.variants/naomigd.zip) (4,972,898 bytes) - SHA1: `4b92936f396c8199f745d3ed0ff588a324b8dd70`, MD5: `a3c74748f4b1d08f2247b16099db372d` - **[neocdz.zip](bios/Arcade/Arcade/neocdz.zip)** (214,659 bytes) - SHA1: `838934ee5b8fcc81883fb664526b3d281840b2e9` - MD5: `c85b8132799f1b2ad3754a97947809d2` @@ -2809,6 +2820,8 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `041feccfae58fe052247119138098b51c26448ed` - MD5: `53da8a47c5b877ac7cd90fabe9467d94` - CRC32: `74f30fc6` + - **Variants** (1 alternate versions): + - [hikaru.zip](bios/Sega/Hikaru/.variants/hikaru.zip) (785,989 bytes) - SHA1: `de2734b2110864ada20f85ca6ba7874ed1e6ecb1`, MD5: `aac601811a25d7b31a3d5f3f1f82f338` - **[hiscore.dat](bios/Arcade/MAME/hiscore.dat)** (332,919 bytes) - SHA1: `d38572d22721eb5972f671cde54201d752dffe6b` - MD5: `0ca8052de426b7eadcb64da341eadec6` @@ -2825,7 +2838,9 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `d652e72ad5d37032c05ca755dfe5508e03e6b45c` - MD5: `629bb0552463ba116ccf23d9a468a9f0` - CRC32: `c64a448d` - - **Variants** (3 alternate versions): + - **Variants** (5 alternate versions): + - [hod2bios.zip](bios/Arcade/Arcade/.variants/hod2bios.zip) (1,479,106 bytes) - SHA1: `782c303cbdfab1027b04db74a63e27bdad5e0c53`, MD5: `f4011d3116500354edf7302a90402711` + - [hod2bios.zip](bios/Sega/Dreamcast/.variants/hod2bios.zip) (1,469,423 bytes) - SHA1: `b3a86809857fe9ce575da73f6ed6c5441d558e3d`, MD5: `9c755171b222fb1f4e1439d5b709dbf1` - [hod2bios.zip.0b5cc968](bios/Arcade/Arcade/.variants/hod2bios.zip.0b5cc968) (1,465,991 bytes) - SHA1: `0b5cc968644c936d4819c1eb5f623f5f3f83eda1`, MD5: `36ac7b58216de5eecfaebe527bf6d02e` - [hod2bios.zip.889d239a](bios/Sega/Dreamcast/.variants/hod2bios.zip.889d239a) (816,543 bytes) - SHA1: `889d239ac41f25622164609367b713dd33bd5bde`, MD5: `ee362dd63d7ff01f6d579ad53f3bfe69` - [hod2bios.zip.9b9c9f0a](bios/Sega/Dreamcast/.variants/hod2bios.zip.9b9c9f0a) (1,057,881 bytes) - SHA1: `9b9c9f0af3de914de677ba8e19f4190673142c1b`, MD5: `6559697f76592be77a7a9ff3bfb6711a` @@ -3777,6 +3792,9 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `b0677e6b9e1274292fef56787931732072b0e693` - MD5: `8970b2ea1fa70f5f54f675275d2fc584` - CRC32: `44974ee7` + - **Variants** (2 alternate versions): + - [naomigd.zip](bios/Arcade/Arcade/.variants/naomigd.zip) (3,371,765 bytes) - SHA1: `f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0`, MD5: `e20b430bd7def78b45f61f238abab624` + - [naomigd.zip](bios/Sega/Dreamcast/.variants/naomigd.zip) (4,972,898 bytes) - SHA1: `4b92936f396c8199f745d3ed0ff588a324b8dd70`, MD5: `a3c74748f4b1d08f2247b16099db372d` - **[nascom_flop.xml](bios/Arcade/MAME/hash/nascom_flop.xml)** (4,125 bytes) - SHA1: `885c4e4d3c85c2154cc32acc73ed6f9db28426ca` - MD5: `02e1231a5815545edb76c40c21bfda9b` @@ -6127,14 +6145,14 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `90164ea50fe3ac4c118b502438d2e5015a588398` - MD5: `35de5d28da507ebb213a26e04241d940` - CRC32: `f444d57f` -- **[dragon32.zip](bios/Dragon/Dragon/dragon32.zip)** (21,208 bytes) - - SHA1: `afed11dd6be59c672e35f2f416290232a05b1983` - - MD5: `77cdf3264e81884e876f438d2553eaca` - - CRC32: `7909413a` -- **[dragon64.zip](bios/Dragon/Dragon/dragon64.zip)** (34,962 bytes) - - SHA1: `613223e2674d44a6b6cdc9662785fe4b7fe9cb60` - - MD5: `c428fb2eca69e4e7203314ab911179f0` - - CRC32: `81fd2649` +- **[dragon32.zip](bios/Dragon/Dragon/dragon32.zip)** (34,983 bytes) + - SHA1: `9e042597360e6090687b040364101a64c9f54a89` + - MD5: `aa09c353c4759d9eca54ac6d47f4cea1` + - CRC32: `fd24e70a` +- **[dragon64.zip](bios/Dragon/Dragon/dragon64.zip)** (49,052 bytes) + - SHA1: `d82a22cc7d31620983a8c62d400be37f9b18bb9e` + - MD5: `e71131dece02e184c7d54dae50c4cabf` + - CRC32: `5d04994a` - **[sdose6.rom](bios/Dragon/Dragon/sdose6.rom)** (8,192 bytes) - SHA1: `ef157016386ed463374de6bac84d1f8ce654ed80` - MD5: `9d85e6b7133f915c021156f4b9cdb512` @@ -6428,7 +6446,7 @@ These are large asset packs required by specific cores. They are included in the - MD5: `c011b428819eea4a80b455c245a5a04d` - CRC32: `26dc3fba` - **Variants** (1 alternate versions): - - [ecwolf.pk3](bios/Id%20Software/Wolfenstein%203D/.variants/ecwolf.pk3) (187,571 bytes) - SHA1: `f3151d3307c6ff36c0562dac00b4ce195d3157d2`, MD5: `f1c29d2dc0a1a48a0c007dbb38801950` + - [ecwolf.pk3](bios/Id%20Software/Wolfenstein%203D/.variants/ecwolf.pk3) (187,571 bytes) - SHA1: `f3f2a11f3ecd91cd62d74c3acfad68a4cc6ddbd9`, MD5: `dbaa5c4e20a11000d1c4db3a2a28f374` ### Infocom/Z-Machine @@ -6450,7 +6468,7 @@ These are large asset packs required by specific cores. They are included in the - MD5: `ccd92e7156ce2f0ce14c88ffb68a16eb` - CRC32: `96a1babf` - **Variants** (1 alternate versions): - - [freej2me-lr.jar](bios/Java/J2ME/.variants/freej2me-lr.jar) (518,483 bytes) - SHA1: `5f3f22ccca001c5d992b398a2c47a45510f6316c`, MD5: `c575f2dd51217ce82fd925b2a27a857c` + - [freej2me-lr.jar](bios/Java/J2ME/.variants/freej2me-lr.jar) (1,107,828 bytes) - SHA1: `eea6d4c69717af589ea36501e00fcb32ac91a5ac`, MD5: `a6f31483d1da4558cc19025e21f95c1d` - **[freej2me-sdl.jar](bios/Java/J2ME/freej2me-sdl.jar)** (552,043 bytes) - SHA1: `78f1f41d55efc6b8d81e99c1d9d75248b3f83dc2` - MD5: `4da74084fc1b1bd3d776ed8d3ee648de` @@ -9172,14 +9190,6 @@ These are large asset packs required by specific cores. They are included in the ### Sega/Arcade -- **[hod2bios.zip](bios/Sega/Arcade/hod2bios.zip)** (1,889,870 bytes) - - SHA1: `07fd3fae7af650a37a3329ed09d039bd7360294f` - - MD5: `0ec01786c10707acfa480f1d96c935ef` - - CRC32: `45ecc8ae` - - **Variants** (3 alternate versions): - - [hod2bios.zip.0b5cc968](bios/Arcade/Arcade/.variants/hod2bios.zip.0b5cc968) (1,465,991 bytes) - SHA1: `0b5cc968644c936d4819c1eb5f623f5f3f83eda1`, MD5: `36ac7b58216de5eecfaebe527bf6d02e` - - [hod2bios.zip.889d239a](bios/Sega/Dreamcast/.variants/hod2bios.zip.889d239a) (816,543 bytes) - SHA1: `889d239ac41f25622164609367b713dd33bd5bde`, MD5: `ee362dd63d7ff01f6d579ad53f3bfe69` - - [hod2bios.zip.9b9c9f0a](bios/Sega/Dreamcast/.variants/hod2bios.zip.9b9c9f0a) (1,057,881 bytes) - SHA1: `9b9c9f0af3de914de677ba8e19f4190673142c1b`, MD5: `6559697f76592be77a7a9ff3bfb6711a` - **[mie.zip](bios/Sega/Arcade/mie.zip)** (725 bytes) - SHA1: `00f43f5bf58dd79135565d52c4eea7e314ebc810` - MD5: `e95415b161121bef35ade12367138c63` @@ -9234,18 +9244,6 @@ These are large asset packs required by specific cores. They are included in the - SHA1: `3251d3b601850aed422f006b61ce9776cdb799d2` - MD5: `c045f571b123b018ce2bfd2289172169` - CRC32: `18354008` -- **[airlbios.zip](bios/Sega/Dreamcast/airlbios.zip)** (702,637 bytes) - - SHA1: `e18c5e9ca21654dfd724aa54e625b386e6ffb2c5` - - MD5: `3f348c88af99a40fbd11fa435f28c69d` - - CRC32: `2c87c283` - - **Variants** (1 alternate versions): - - [airlbios.zip.ff161eaa](bios/Sega/Dreamcast/.variants/airlbios.zip.ff161eaa) (702,615 bytes) - SHA1: `ff161eaa16b36b519eeab26364b99f59b9e8128c`, MD5: `e80075c0dfcd39ab2bea972d150e0ba1` -- **[awbios.zip](bios/Sega/Dreamcast/awbios.zip)** (34,620 bytes) - - SHA1: `cdf247154e28c4b352b962a4a523587f2fde9305` - - MD5: `0ec5ae5b5a5c4959fa8b43fcf8687f7c` - - CRC32: `c295a8c2` - - **Variants** (1 alternate versions): - - [awbios.zip.1f62f581](bios/Sega/Dreamcast/.variants/awbios.zip.1f62f581) (34,598 bytes) - SHA1: `1f62f581094c90620c74d4d15c1c1640a973e684`, MD5: `59889f03e09c1d4246b7874096a3201c` - **[dc.zip](bios/Sega/Dreamcast/dc.zip)** (1,083,674 bytes) - SHA1: `24e80cdf0695361ae8de7cceda29843e0474ecd0` - MD5: `8248adaabb908bd0427d88c8d64a2a1a` @@ -9281,37 +9279,12 @@ These are large asset packs required by specific cores. They are included in the - CRC32: `d39556fc` - **Variants** (1 alternate versions): - [f355dlx.zip.3c1c6422](bios/Sega/Dreamcast/.variants/f355dlx.zip.3c1c6422) (2,315,343 bytes) - SHA1: `3c1c6422c332fc57c69c938db4dd3ac91eff4f02`, MD5: `5e83867c751f692a000afdf658dc181f` -- **[hod2bios.zip](bios/Sega/Dreamcast/hod2bios.zip)** (1,469,423 bytes) - - SHA1: `b3a86809857fe9ce575da73f6ed6c5441d558e3d` - - MD5: `9c755171b222fb1f4e1439d5b709dbf1` - - CRC32: `277c7fee` - - **Variants** (3 alternate versions): - - [hod2bios.zip.0b5cc968](bios/Arcade/Arcade/.variants/hod2bios.zip.0b5cc968) (1,465,991 bytes) - SHA1: `0b5cc968644c936d4819c1eb5f623f5f3f83eda1`, MD5: `36ac7b58216de5eecfaebe527bf6d02e` - - [hod2bios.zip.889d239a](bios/Sega/Dreamcast/.variants/hod2bios.zip.889d239a) (816,543 bytes) - SHA1: `889d239ac41f25622164609367b713dd33bd5bde`, MD5: `ee362dd63d7ff01f6d579ad53f3bfe69` - - [hod2bios.zip.9b9c9f0a](bios/Sega/Dreamcast/.variants/hod2bios.zip.9b9c9f0a) (1,057,881 bytes) - SHA1: `9b9c9f0af3de914de677ba8e19f4190673142c1b`, MD5: `6559697f76592be77a7a9ff3bfb6711a` -- **[naomi.zip](bios/Sega/Dreamcast/naomi.zip)** (9,308,440 bytes) - - SHA1: `d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb` - - MD5: `eb4099aeb42ef089cfe94f8fe95e51f6` - - CRC32: `ab628024` - - **Variants** (2 alternate versions): - - [naomi.zip.2533cc33](bios/Arcade/Arcade/.variants/naomi.zip.2533cc33) (8,005,827 bytes) - SHA1: `2533cc33201da28b2086a0a2fd2b5e04271b6eeb`, MD5: `58033e4ba5793c09dffb87f96f3e9301` - - [naomi.zip.43f0018c](bios/Sega/Dreamcast/.variants/naomi.zip.43f0018c) (6,134,707 bytes) - SHA1: `43f0018c32dd6d166c3b6d8ed2ffa672f398fa3a`, MD5: `8bab1ba136d0cb6ebcc05a27c4dfc185` -- **[naomi2.zip](bios/Sega/Dreamcast/naomi2.zip)** (7,038,226 bytes) - - SHA1: `da79eca49c59f7661737643b5e11e63a73b51fcc` - - MD5: `843c0d51237dc945f57237c4b9872b1d` - - CRC32: `b700583b` - - **Variants** (1 alternate versions): - - [naomi2.zip.2962e338](bios/Sega/Dreamcast/.variants/naomi2.zip.2962e338) (7,022,501 bytes) - SHA1: `2962e338ccc9f66f29b409f73ca27aeee79633ac`, MD5: `c50072cbab75673e1b1a6b94355e6fa8` - **[naomi_boot.bin](bios/Sega/Dreamcast/naomi_boot.bin)** (2,097,152 bytes) - SHA1: `6d27d71aec4dfba98f66316ae74a1426d567698a` - MD5: `3bffafac42a7767d8dcecf771f5552ba` - CRC32: `d2a1c6bf` - **Variants** (1 alternate versions): - [naomi_boot.bin](bios/Sega/Dreamcast/.variants/naomi_boot.bin) (181,208 bytes) - SHA1: `56b2a1ca68bf3519f01abde00c22e7a3425494e5`, MD5: `b5475847ee3a3ef2b12cda48dd49370d` -- **[naomigd.zip](bios/Sega/Dreamcast/naomigd.zip)** (4,972,898 bytes) - - SHA1: `4b92936f396c8199f745d3ed0ff588a324b8dd70` - - MD5: `a3c74748f4b1d08f2247b16099db372d` - - CRC32: `b7949ddb` - **[vmu_save_A1.bin](bios/Sega/Dreamcast/vmu_save_A1.bin)** (131,072 bytes) - SHA1: `44c9f00deccca2bfe2f3b41693b70662ff2c2256` - MD5: `ccaf708ca6980c4becd018f772ccdd23` @@ -9334,10 +9307,6 @@ These are large asset packs required by specific cores. They are included in the ### Sega/Hikaru -- **[hikaru.zip](bios/Sega/Hikaru/hikaru.zip)** (785,989 bytes) - - SHA1: `de2734b2110864ada20f85ca6ba7874ed1e6ecb1` - - MD5: `aac601811a25d7b31a3d5f3f1f82f338` - - CRC32: `b4015df2` - **[jvs13551.zip](bios/Sega/Hikaru/jvs13551.zip)** (15,088 bytes) - SHA1: `2c79934afdbcfc15684de9b75a520ac196ca75d5` - MD5: `ee643e8c7369fe7feca610d4daa4a57c` @@ -10976,18 +10945,18 @@ These are large asset packs required by specific cores. They are included in the ### Tandy/TRS-80 -- **[trs80.zip](bios/Tandy/TRS-80/trs80.zip)** (4,157 bytes) - - SHA1: `3795bf93d977f2625e452f8caf6a5371eff2f701` - - MD5: `4eed271d76c7bc19baf7f15ca057a753` - - CRC32: `e2510704` -- **[trs80m3.zip](bios/Tandy/TRS-80/trs80m3.zip)** (20,844 bytes) - - SHA1: `8cdf51015a0bac500d9a1d3969fa47ebec4144f6` - - MD5: `dde75b2ef3f7f6ed90364e4564703c1d` - - CRC32: `4d403b13` -- **[trs80m4.zip](bios/Tandy/TRS-80/trs80m4.zip)** (13,369 bytes) - - SHA1: `300b3b1d52fbf833ff1cedb95e9541e76aa224c2` - - MD5: `8491bd4f3fcaf5aa5a00bce5e9b735eb` - - CRC32: `983e55f2` +- **[trs80.zip](bios/Tandy/TRS-80/trs80.zip)** (14,558 bytes) + - SHA1: `a9b8931c42303e8dfb475112fc18ff200b7252ce` + - MD5: `a631f17e1b041a4cf66a8676582dd234` + - CRC32: `6127564d` +- **[trs80m3.zip](bios/Tandy/TRS-80/trs80m3.zip)** (32,854 bytes) + - SHA1: `b804a031c8db6def59e077a4b6938dcac25093d7` + - MD5: `9e2b8b6612c3431e03cec5305571a598` + - CRC32: `e09330c8` +- **[trs80m4.zip](bios/Tandy/TRS-80/trs80m4.zip)** (25,371 bytes) + - SHA1: `bc58ac28be4854fb198b895c7fd999f599b5a961` + - MD5: `71f71d32cbb5e2fcc7d11e8735c97b6e` + - CRC32: `6377a7f8` - **[trs80m4p.zip](bios/Tandy/TRS-80/trs80m4p.zip)** (4,880 bytes) - SHA1: `497eea6e0ed80501ca3beee714d71a5815495b07` - MD5: `8a0f1567df8f166f4056a6a71ef7dce5` @@ -11174,4 +11143,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on submitting BIOS files. This repository provides BIOS files for personal backup and archival purposes. -*Auto-generated on 2026-03-17T13:43:36Z* +*Auto-generated on 2026-03-17T14:31:33Z* diff --git a/bios/Arcade/Arcade/.variants/airlbios.zip b/bios/Arcade/Arcade/.variants/airlbios.zip new file mode 100644 index 00000000..980c8532 Binary files /dev/null and b/bios/Arcade/Arcade/.variants/airlbios.zip differ diff --git a/bios/Arcade/Arcade/.variants/hod2bios.zip b/bios/Arcade/Arcade/.variants/hod2bios.zip new file mode 100644 index 00000000..a7223fcb Binary files /dev/null and b/bios/Arcade/Arcade/.variants/hod2bios.zip differ diff --git a/bios/Arcade/Arcade/.variants/naomi.zip b/bios/Arcade/Arcade/.variants/naomi.zip new file mode 100644 index 00000000..4fe9d407 Binary files /dev/null and b/bios/Arcade/Arcade/.variants/naomi.zip differ diff --git a/bios/Arcade/Arcade/.variants/naomi2.zip b/bios/Arcade/Arcade/.variants/naomi2.zip new file mode 100644 index 00000000..c61f9547 Binary files /dev/null and b/bios/Arcade/Arcade/.variants/naomi2.zip differ diff --git a/bios/Arcade/Arcade/.variants/naomigd.zip b/bios/Arcade/Arcade/.variants/naomigd.zip new file mode 100644 index 00000000..4a400d57 Binary files /dev/null and b/bios/Arcade/Arcade/.variants/naomigd.zip differ diff --git a/bios/Arcade/Arcade/airlbios.zip b/bios/Arcade/Arcade/airlbios.zip index 980c8532..76bb3e10 100644 Binary files a/bios/Arcade/Arcade/airlbios.zip and b/bios/Arcade/Arcade/airlbios.zip differ diff --git a/bios/Arcade/Arcade/hod2bios.zip b/bios/Arcade/Arcade/hod2bios.zip index a7223fcb..fa319efe 100644 Binary files a/bios/Arcade/Arcade/hod2bios.zip and b/bios/Arcade/Arcade/hod2bios.zip differ diff --git a/bios/Arcade/Arcade/naomi.zip b/bios/Arcade/Arcade/naomi.zip index 4fe9d407..b4d3f147 100644 Binary files a/bios/Arcade/Arcade/naomi.zip and b/bios/Arcade/Arcade/naomi.zip differ diff --git a/bios/Arcade/Arcade/naomi2.zip b/bios/Arcade/Arcade/naomi2.zip index c61f9547..83de96ac 100644 Binary files a/bios/Arcade/Arcade/naomi2.zip and b/bios/Arcade/Arcade/naomi2.zip differ diff --git a/bios/Arcade/Arcade/naomigd.zip b/bios/Arcade/Arcade/naomigd.zip index 4a400d57..835641ae 100644 Binary files a/bios/Arcade/Arcade/naomigd.zip and b/bios/Arcade/Arcade/naomigd.zip differ diff --git a/bios/Sega/Dreamcast/.variants/airlbios.zip b/bios/Sega/Dreamcast/.variants/airlbios.zip new file mode 100644 index 00000000..008b1ee4 Binary files /dev/null and b/bios/Sega/Dreamcast/.variants/airlbios.zip differ diff --git a/bios/Sega/Dreamcast/.variants/awbios.zip b/bios/Sega/Dreamcast/.variants/awbios.zip new file mode 100644 index 00000000..60fa6c02 Binary files /dev/null and b/bios/Sega/Dreamcast/.variants/awbios.zip differ diff --git a/bios/Sega/Dreamcast/.variants/hod2bios.zip b/bios/Sega/Dreamcast/.variants/hod2bios.zip new file mode 100644 index 00000000..d998ef5a Binary files /dev/null and b/bios/Sega/Dreamcast/.variants/hod2bios.zip differ diff --git a/bios/Sega/Dreamcast/.variants/naomi.zip b/bios/Sega/Dreamcast/.variants/naomi.zip new file mode 100644 index 00000000..35f9f863 Binary files /dev/null and b/bios/Sega/Dreamcast/.variants/naomi.zip differ diff --git a/bios/Sega/Dreamcast/.variants/naomigd.zip b/bios/Sega/Dreamcast/.variants/naomigd.zip new file mode 100644 index 00000000..c2d5d87c Binary files /dev/null and b/bios/Sega/Dreamcast/.variants/naomigd.zip differ diff --git a/bios/Sega/Dreamcast/airlbios.zip b/bios/Sega/Dreamcast/airlbios.zip index 008b1ee4..76bb3e10 100644 Binary files a/bios/Sega/Dreamcast/airlbios.zip and b/bios/Sega/Dreamcast/airlbios.zip differ diff --git a/bios/Sega/Dreamcast/awbios.zip b/bios/Sega/Dreamcast/awbios.zip index 60fa6c02..7870ce8b 100644 Binary files a/bios/Sega/Dreamcast/awbios.zip and b/bios/Sega/Dreamcast/awbios.zip differ diff --git a/bios/Sega/Dreamcast/hod2bios.zip b/bios/Sega/Dreamcast/hod2bios.zip index d998ef5a..fa319efe 100644 Binary files a/bios/Sega/Dreamcast/hod2bios.zip and b/bios/Sega/Dreamcast/hod2bios.zip differ diff --git a/bios/Sega/Dreamcast/naomi.zip b/bios/Sega/Dreamcast/naomi.zip index 35f9f863..b4d3f147 100644 Binary files a/bios/Sega/Dreamcast/naomi.zip and b/bios/Sega/Dreamcast/naomi.zip differ diff --git a/bios/Sega/Dreamcast/naomigd.zip b/bios/Sega/Dreamcast/naomigd.zip index c2d5d87c..835641ae 100644 Binary files a/bios/Sega/Dreamcast/naomigd.zip and b/bios/Sega/Dreamcast/naomigd.zip differ diff --git a/bios/Sega/Hikaru/.variants/hikaru.zip b/bios/Sega/Hikaru/.variants/hikaru.zip new file mode 100644 index 00000000..892bb988 Binary files /dev/null and b/bios/Sega/Hikaru/.variants/hikaru.zip differ diff --git a/bios/Sega/Hikaru/hikaru.zip b/bios/Sega/Hikaru/hikaru.zip index 892bb988..b7fd63a6 100644 Binary files a/bios/Sega/Hikaru/hikaru.zip and b/bios/Sega/Hikaru/hikaru.zip differ diff --git a/database.json b/database.json index 5080bbac..cf736559 100644 --- a/database.json +++ b/database.json @@ -1,7 +1,7 @@ { - "generated_at": "2026-03-17T14:13:11Z", - "total_files": 5352, - "total_size": 4877068202, + "generated_at": "2026-03-17T14:31:33Z", + "total_files": 5355, + "total_size": 4891249532, "files": { "520d3d1b5897800af47f92efd2444a26b7a7dead": { "path": "bios/3DO Company/3DO/3do_arcade_saot.bin", @@ -822,6 +822,15 @@ "sha256": "a86d539aab1af6352fc05752ec2e3d143f805219880822843c627c6184318def", "crc32": "e133094a" }, + "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d": { + "path": "bios/Arcade/Arcade/.variants/airlbios.zip", + "name": "airlbios.zip", + "size": 715730, + "sha1": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", + "md5": "7a11bfe0cc72886d032e386db68f890c", + "sha256": "cb7d12703030f53a1578210ca7c4979f95bda22970e6df9d2a5eb52b6461ea92", + "crc32": "f83ec60f" + }, "9a48e38cb92b7e0fcc75156bdfa737c63a2cb1c3": { "path": "bios/Arcade/Arcade/.variants/bubsys.zip.9a48e38c", "name": "bubsys.zip.9a48e38c", @@ -876,6 +885,15 @@ "sha256": "f10a8a309f0547cc09cb5aec92d740ca7ad35db4aa6bb50b5241743851a51f69", "crc32": "ae5c68a1" }, + "782c303cbdfab1027b04db74a63e27bdad5e0c53": { + "path": "bios/Arcade/Arcade/.variants/hod2bios.zip", + "name": "hod2bios.zip", + "size": 1479106, + "sha1": "782c303cbdfab1027b04db74a63e27bdad5e0c53", + "md5": "f4011d3116500354edf7302a90402711", + "sha256": "43d2c16c6a5b19a778b96a4e7d00468ee461b2c141f9d735427f7a7d893ba692", + "crc32": "0ddc6daf" + }, "0b5cc968644c936d4819c1eb5f623f5f3f83eda1": { "path": "bios/Arcade/Arcade/.variants/hod2bios.zip.0b5cc968", "name": "hod2bios.zip.0b5cc968", @@ -903,6 +921,15 @@ "sha256": "6ce99eede6948e084341e5611d5504e5b77c5debd2737597b8e80a39efcf74a9", "crc32": "08ba2527" }, + "c96711c01c0158f161791d6fbe75d88329e8ac0a": { + "path": "bios/Arcade/Arcade/.variants/naomi.zip", + "name": "naomi.zip", + "size": 9321533, + "sha1": "c96711c01c0158f161791d6fbe75d88329e8ac0a", + "md5": "526eda1e2a7920c92c88178789d71d84", + "sha256": "9f3ff37a68bef27cd9ce8f5603ce44779b402cca40e653ae3633fff78d179392", + "crc32": "6ee50181" + }, "2533cc33201da28b2086a0a2fd2b5e04271b6eeb": { "path": "bios/Arcade/Arcade/.variants/naomi.zip.2533cc33", "name": "naomi.zip.2533cc33", @@ -912,6 +939,24 @@ "sha256": "9a7864168900c030ecbf25496576cad027e8da6335a91520824f2a18ae180ece", "crc32": "7eba26a4" }, + "c63a74691ee7384080877268a70bb1f53bc66dee": { + "path": "bios/Arcade/Arcade/.variants/naomi2.zip", + "name": "naomi2.zip", + "size": 5384060, + "sha1": "c63a74691ee7384080877268a70bb1f53bc66dee", + "md5": "dd6fb7894fb2398a55e83a51328a3ad6", + "sha256": "80770c419903d66e7e073fd331b7eb22a7c6120a64f20717af22345ba81a0931", + "crc32": "4a2409fe" + }, + "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0": { + "path": "bios/Arcade/Arcade/.variants/naomigd.zip", + "name": "naomigd.zip", + "size": 3371765, + "sha1": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", + "md5": "e20b430bd7def78b45f61f238abab624", + "sha256": "1280f4185ac4f7352ab85e49d71db1ca0b3e679c6430bd2c8545088042117eb1", + "crc32": "ca501374" + }, "4f28af31ca0defdd73d80edec2fa296908e624dc": { "path": "bios/Arcade/Arcade/.variants/neocdz.zip.4f28af31", "name": "neocdz.zip.4f28af31", @@ -1011,14 +1056,14 @@ "sha256": "10fc7b39f97943ef2afc8a464c7829dd5d6af698926aab7d4c8e80008ab1b83f", "crc32": "9c9601ca" }, - "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d": { + "03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623": { "path": "bios/Arcade/Arcade/airlbios.zip", "name": "airlbios.zip", - "size": 715730, - "sha1": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", - "md5": "7a11bfe0cc72886d032e386db68f890c", - "sha256": "cb7d12703030f53a1578210ca7c4979f95bda22970e6df9d2a5eb52b6461ea92", - "crc32": "f83ec60f" + "size": 718362, + "sha1": "03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623", + "md5": "6a0ac75d702f8f7c1ca6c72aa2b0b7d8", + "sha256": "9f7b0bf853d7ce6f5b27e3542fc132ff4f19a31332dab4ab601daafa80ee3f69", + "crc32": "1e5b53dc" }, "beaf97c4a0e0792b8db65648f9dabb6a54ae0549": { "path": "bios/Arcade/Arcade/aleck64.zip", @@ -1488,14 +1533,14 @@ "sha256": "6c5a6332a6dc48832e505a8ed2ed9946753ed2d7dc96a7b40e5efd2bb720de4e", "crc32": "e62f0ef7" }, - "782c303cbdfab1027b04db74a63e27bdad5e0c53": { + "07fd3fae7af650a37a3329ed09d039bd7360294f": { "path": "bios/Arcade/Arcade/hod2bios.zip", "name": "hod2bios.zip", - "size": 1479106, - "sha1": "782c303cbdfab1027b04db74a63e27bdad5e0c53", - "md5": "f4011d3116500354edf7302a90402711", - "sha256": "43d2c16c6a5b19a778b96a4e7d00468ee461b2c141f9d735427f7a7d893ba692", - "crc32": "0ddc6daf" + "size": 1889870, + "sha1": "07fd3fae7af650a37a3329ed09d039bd7360294f", + "md5": "0ec01786c10707acfa480f1d96c935ef", + "sha256": "6ca1cfa70cd956b0305a2140e2d049eb19e95b6bccd0f24296c5f19e8a57dd86", + "crc32": "45ecc8ae" }, "f590ccf688b4c05fa1da5c5dd92c224545170c3b": { "path": "bios/Arcade/Arcade/isgsm.zip", @@ -1641,32 +1686,32 @@ "sha256": "da62c16f9edf1621a9777bc7972f2e66c4870a86513f960de8e44e1694e5507f", "crc32": "cf65b189" }, - "c96711c01c0158f161791d6fbe75d88329e8ac0a": { + "11ad55ee6b11092e810365b8389c1f8b4081e5d0": { "path": "bios/Arcade/Arcade/naomi.zip", "name": "naomi.zip", - "size": 9321533, - "sha1": "c96711c01c0158f161791d6fbe75d88329e8ac0a", - "md5": "526eda1e2a7920c92c88178789d71d84", - "sha256": "9f3ff37a68bef27cd9ce8f5603ce44779b402cca40e653ae3633fff78d179392", - "crc32": "6ee50181" + "size": 10075456, + "sha1": "11ad55ee6b11092e810365b8389c1f8b4081e5d0", + "md5": "4e1ca1ade518f53efcce30bdefb855a4", + "sha256": "b5d0f0ed88e8c07657022998b1a648c9323ce2892e506921474b1a471208f067", + "crc32": "fb0bca9c" }, - "c63a74691ee7384080877268a70bb1f53bc66dee": { + "da79eca49c59f7661737643b5e11e63a73b51fcc": { "path": "bios/Arcade/Arcade/naomi2.zip", "name": "naomi2.zip", - "size": 5384060, - "sha1": "c63a74691ee7384080877268a70bb1f53bc66dee", - "md5": "dd6fb7894fb2398a55e83a51328a3ad6", - "sha256": "80770c419903d66e7e073fd331b7eb22a7c6120a64f20717af22345ba81a0931", - "crc32": "4a2409fe" + "size": 7038226, + "sha1": "da79eca49c59f7661737643b5e11e63a73b51fcc", + "md5": "843c0d51237dc945f57237c4b9872b1d", + "sha256": "5efc11a37e0b8fe97e0007bb707d8a4f047dd0b8b7ba59293e81cca0443f7993", + "crc32": "b700583b" }, - "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0": { + "a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5": { "path": "bios/Arcade/Arcade/naomigd.zip", "name": "naomigd.zip", - "size": 3371765, - "sha1": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", - "md5": "e20b430bd7def78b45f61f238abab624", - "sha256": "1280f4185ac4f7352ab85e49d71db1ca0b3e679c6430bd2c8545088042117eb1", - "crc32": "ca501374" + "size": 3387512, + "sha1": "a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5", + "md5": "82f3a8bea688b4863947722d2fcb07f7", + "sha256": "d185636dd45be0545cb22557793b4ac0543c8b8a9abcf6a78eaffc3cc9d3f8fa", + "crc32": "31828d82" }, "838934ee5b8fcc81883fb664526b3d281840b2e9": { "path": "bios/Arcade/Arcade/neocdz.zip", @@ -44274,15 +44319,6 @@ "sha256": "9be7592d4e4d2c0dbfbb0317648603d7a80cf492ca9cb1d01dea09542f51de61", "crc32": "16ef13bc" }, - "07fd3fae7af650a37a3329ed09d039bd7360294f": { - "path": "bios/Sega/Arcade/hod2bios.zip", - "name": "hod2bios.zip", - "size": 1889870, - "sha1": "07fd3fae7af650a37a3329ed09d039bd7360294f", - "md5": "0ec01786c10707acfa480f1d96c935ef", - "sha256": "6ca1cfa70cd956b0305a2140e2d049eb19e95b6bccd0f24296c5f19e8a57dd86", - "crc32": "45ecc8ae" - }, "00f43f5bf58dd79135565d52c4eea7e314ebc810": { "path": "bios/Sega/Arcade/mie.zip", "name": "mie.zip", @@ -44319,6 +44355,15 @@ "sha256": "6a8bf30a5a0942f500d1d617506a99552e33774207d3e895258abafe35979641", "crc32": "b1642de4" }, + "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5": { + "path": "bios/Sega/Dreamcast/.variants/airlbios.zip", + "name": "airlbios.zip", + "size": 702637, + "sha1": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", + "md5": "3f348c88af99a40fbd11fa435f28c69d", + "sha256": "983487f67861b4ec2b7f20cc49b25de0cb6f2160ec741283312deabb199e465e", + "crc32": "2c87c283" + }, "ff161eaa16b36b519eeab26364b99f59b9e8128c": { "path": "bios/Sega/Dreamcast/.variants/airlbios.zip.ff161eaa", "name": "airlbios.zip.ff161eaa", @@ -44328,6 +44373,15 @@ "sha256": "df47c364fd16a4816d43f4b542544e902c8e62d8835fc5bd15eb3f83feca06e8", "crc32": "fb55e65e" }, + "cdf247154e28c4b352b962a4a523587f2fde9305": { + "path": "bios/Sega/Dreamcast/.variants/awbios.zip", + "name": "awbios.zip", + "size": 34620, + "sha1": "cdf247154e28c4b352b962a4a523587f2fde9305", + "md5": "0ec5ae5b5a5c4959fa8b43fcf8687f7c", + "sha256": "cb2d008926d4553448e475ca8ef996161ad73df56fadc1b2b7f0c57787d85ff3", + "crc32": "c295a8c2" + }, "1f62f581094c90620c74d4d15c1c1640a973e684": { "path": "bios/Sega/Dreamcast/.variants/awbios.zip.1f62f581", "name": "awbios.zip.1f62f581", @@ -44373,6 +44427,15 @@ "sha256": "e7c0369a22ee0a42ac55b634ed1c6282aea91a6af07ba1402627b8fbe7c2afd5", "crc32": "87e1cf82" }, + "b3a86809857fe9ce575da73f6ed6c5441d558e3d": { + "path": "bios/Sega/Dreamcast/.variants/hod2bios.zip", + "name": "hod2bios.zip", + "size": 1469423, + "sha1": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", + "md5": "9c755171b222fb1f4e1439d5b709dbf1", + "sha256": "766c3823b2c3512817628dbb5d6b05aa39322c3c97b8ee244ce4e47d84593084", + "crc32": "277c7fee" + }, "889d239ac41f25622164609367b713dd33bd5bde": { "path": "bios/Sega/Dreamcast/.variants/hod2bios.zip.889d239a", "name": "hod2bios.zip.889d239a", @@ -44391,6 +44454,15 @@ "sha256": "c90c754f36d4ab0c927da1f79883cb322a4f94b7cebe9cc7f401151a1b8f1a5a", "crc32": "651142d3" }, + "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb": { + "path": "bios/Sega/Dreamcast/.variants/naomi.zip", + "name": "naomi.zip", + "size": 9308440, + "sha1": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", + "md5": "eb4099aeb42ef089cfe94f8fe95e51f6", + "sha256": "a062f1242e1dc08a2a9faf07a073cdd7e2d836823f9d01aff5cd0a36482032db", + "crc32": "ab628024" + }, "43f0018c32dd6d166c3b6d8ed2ffa672f398fa3a": { "path": "bios/Sega/Dreamcast/.variants/naomi.zip.43f0018c", "name": "naomi.zip.43f0018c", @@ -44418,6 +44490,15 @@ "sha256": "27d407edcd485d81aec58a8e28081327aeb3e0cc7195f4c53c264ec192657098", "crc32": "da4fbc94" }, + "4b92936f396c8199f745d3ed0ff588a324b8dd70": { + "path": "bios/Sega/Dreamcast/.variants/naomigd.zip", + "name": "naomigd.zip", + "size": 4972898, + "sha1": "4b92936f396c8199f745d3ed0ff588a324b8dd70", + "md5": "a3c74748f4b1d08f2247b16099db372d", + "sha256": "793db2a859be2d814d334ab511811c42c6727a16841e7627fa7c33171c3de441", + "crc32": "b7949ddb" + }, "09f1ed9e0f8ece181a1850ec89361cef78f37c9e": { "path": "bios/Sega/Dreamcast/Atomiswave-0.220_NoClones_V1.0 barhi.dat.7z", "name": "Atomiswave-0.220_NoClones_V1.0 barhi.dat.7z", @@ -44490,24 +44571,6 @@ "sha256": "f28a31cfd272690e41058fb280d0b890996c6cb9a1983565fa47380d38394703", "crc32": "18354008" }, - "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5": { - "path": "bios/Sega/Dreamcast/airlbios.zip", - "name": "airlbios.zip", - "size": 702637, - "sha1": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", - "md5": "3f348c88af99a40fbd11fa435f28c69d", - "sha256": "983487f67861b4ec2b7f20cc49b25de0cb6f2160ec741283312deabb199e465e", - "crc32": "2c87c283" - }, - "cdf247154e28c4b352b962a4a523587f2fde9305": { - "path": "bios/Sega/Dreamcast/awbios.zip", - "name": "awbios.zip", - "size": 34620, - "sha1": "cdf247154e28c4b352b962a4a523587f2fde9305", - "md5": "0ec5ae5b5a5c4959fa8b43fcf8687f7c", - "sha256": "cb2d008926d4553448e475ca8ef996161ad73df56fadc1b2b7f0c57787d85ff3", - "crc32": "c295a8c2" - }, "24e80cdf0695361ae8de7cceda29843e0474ecd0": { "path": "bios/Sega/Dreamcast/dc.zip", "name": "dc.zip", @@ -44562,33 +44625,6 @@ "sha256": "1a98e06d80b758bafe3a787388ba81ecec1184bd28e7b5054e31a99604398d7d", "crc32": "d39556fc" }, - "b3a86809857fe9ce575da73f6ed6c5441d558e3d": { - "path": "bios/Sega/Dreamcast/hod2bios.zip", - "name": "hod2bios.zip", - "size": 1469423, - "sha1": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", - "md5": "9c755171b222fb1f4e1439d5b709dbf1", - "sha256": "766c3823b2c3512817628dbb5d6b05aa39322c3c97b8ee244ce4e47d84593084", - "crc32": "277c7fee" - }, - "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb": { - "path": "bios/Sega/Dreamcast/naomi.zip", - "name": "naomi.zip", - "size": 9308440, - "sha1": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", - "md5": "eb4099aeb42ef089cfe94f8fe95e51f6", - "sha256": "a062f1242e1dc08a2a9faf07a073cdd7e2d836823f9d01aff5cd0a36482032db", - "crc32": "ab628024" - }, - "da79eca49c59f7661737643b5e11e63a73b51fcc": { - "path": "bios/Sega/Dreamcast/naomi2.zip", - "name": "naomi2.zip", - "size": 7038226, - "sha1": "da79eca49c59f7661737643b5e11e63a73b51fcc", - "md5": "843c0d51237dc945f57237c4b9872b1d", - "sha256": "5efc11a37e0b8fe97e0007bb707d8a4f047dd0b8b7ba59293e81cca0443f7993", - "crc32": "b700583b" - }, "6d27d71aec4dfba98f66316ae74a1426d567698a": { "path": "bios/Sega/Dreamcast/naomi_boot.bin", "name": "naomi_boot.bin", @@ -44598,15 +44634,6 @@ "sha256": "d821817411834ea0e98ae48b1e2268b12e7d599630556fa5da1792c6e1a2c66f", "crc32": "d2a1c6bf" }, - "4b92936f396c8199f745d3ed0ff588a324b8dd70": { - "path": "bios/Sega/Dreamcast/naomigd.zip", - "name": "naomigd.zip", - "size": 4972898, - "sha1": "4b92936f396c8199f745d3ed0ff588a324b8dd70", - "md5": "a3c74748f4b1d08f2247b16099db372d", - "sha256": "793db2a859be2d814d334ab511811c42c6727a16841e7627fa7c33171c3de441", - "crc32": "b7949ddb" - }, "44c9f00deccca2bfe2f3b41693b70662ff2c2256": { "path": "bios/Sega/Dreamcast/vmu_save_A1.bin", "name": "vmu_save_A1.bin", @@ -44644,7 +44671,7 @@ "crc32": "0ebea9d4" }, "de2734b2110864ada20f85ca6ba7874ed1e6ecb1": { - "path": "bios/Sega/Hikaru/hikaru.zip", + "path": "bios/Sega/Hikaru/.variants/hikaru.zip", "name": "hikaru.zip", "size": 785989, "sha1": "de2734b2110864ada20f85ca6ba7874ed1e6ecb1", @@ -48265,16 +48292,21 @@ "c54b17f59168048eb5bf99f83a1f0f4d": "d2c4be29ed5b86c083b5283abc8461127d88395f", "8ffe31f1ee8164f6c1dfd95ffb79feff": "734efa75815502d58898599359cf55f8003a03a5", "4a89c35e11d0bcb3c174cabfa4b1cd09": "32daf772960c7ed31f41b95055968532b81d0896", + "7a11bfe0cc72886d032e386db68f890c": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", "17cce3efe7b03d0e789744ed7dc4c619": "9a48e38cb92b7e0fcc75156bdfa737c63a2cb1c3", "a805db5d380c597ce14f42ad1afcfbe8": "f8526dcec63402d2533d8180e217fa03a6322c34", "2b268f2f8960e5124f9a8cc6cfe86773": "5c5f300f3ab2bd10e2adf4dd96baa78317578d8d", "e0d8f3de7d217882fec5aa55883b6a11": "ca7bf85999eaaa79652c721986e64f769cf03892", "c26bf1744cb7f6ffe441f463870321f8": "c25686d24c7205473741f948f8a9df9906823145", "219a818c4ffd9fab04b9be9c7e2107a8": "fb0c36d69f66f4b10a895aa708ae37f826755257", + "f4011d3116500354edf7302a90402711": "782c303cbdfab1027b04db74a63e27bdad5e0c53", "36ac7b58216de5eecfaebe527bf6d02e": "0b5cc968644c936d4819c1eb5f623f5f3f83eda1", "a8c8fe344adb352ea09166a7c43e33b0": "cb6ecfa04936ea2ec833f08c080985c07b8a1435", "981fa4057f4bd5c064ce446963d8ac33": "dc5c6cc5c294accff4ebce2ac33355063cff8a9d", + "526eda1e2a7920c92c88178789d71d84": "c96711c01c0158f161791d6fbe75d88329e8ac0a", "58033e4ba5793c09dffb87f96f3e9301": "2533cc33201da28b2086a0a2fd2b5e04271b6eeb", + "dd6fb7894fb2398a55e83a51328a3ad6": "c63a74691ee7384080877268a70bb1f53bc66dee", + "e20b430bd7def78b45f61f238abab624": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", "62d56b126e78f3d82faa4ee8a92c3e82": "4f28af31ca0defdd73d80edec2fa296908e624dc", "68ef99a1f2847d08ff9242a90561d31b": "0783012b4eabca599e460988257ec37500501df6", "653e991a39e867354d090c3394157d1c": "6bbbce094422062bd178d6007bed06dcdd0d8b78", @@ -48286,7 +48318,7 @@ "6c6c0c726cbf15e81785eb7592fdb51c": "de463b0577dfd1027bf7de523ff67a0fff861cdb", "72d6c73306c7f0b76723f989e7e1bdd1": "ac4b78d53c7a97da2451ca35498395d8dd1e3024", "fcb631bf18a56f2d5b077fa846bab4a6": "5426d52e17e0ff9195fabbb42f704342e556d08e", - "7a11bfe0cc72886d032e386db68f890c": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", + "6a0ac75d702f8f7c1ca6c72aa2b0b7d8": "03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623", "c266fc58905af1e246dffadc84301042": "beaf97c4a0e0792b8db65648f9dabb6a54ae0549", "0507c3a390e5b39d81dd9d10fdfc19eb": "901e1927ebe87946e3e4bb6d0a825088a8a60490", "eb6a82c4cc942bf46970968bf331df1e": "f44836072ec6ad9e5a7b46105985548181faab5b", @@ -48339,7 +48371,7 @@ "8ef9b86ab13c70e519d2c02e5282c67b": "346cbf24af08f5bfd96e6a77abf27595477aace8", "d0e17fe0126993b97d697bc859202be4": "7381472bf046126257e51a0124e4553282f020e5", "b37582d04dee048edb99743d44764407": "98b92ece93d3e160c446a56ac859a8311333e36c", - "f4011d3116500354edf7302a90402711": "782c303cbdfab1027b04db74a63e27bdad5e0c53", + "0ec01786c10707acfa480f1d96c935ef": "07fd3fae7af650a37a3329ed09d039bd7360294f", "4a56d56e2219c5e2b006b66a4263c01c": "f590ccf688b4c05fa1da5c5dd92c224545170c3b", "3a6561f8d2bb8424e6797920759962aa": "7b5be2c65e378f736ee4689303349d80dc425f5f", "361f60b1d3ce84e17f027f3e547e3091": "b4ff14ed8c3e37a4b45ce2d80c692961ffc88270", @@ -48356,9 +48388,9 @@ "ad9af7a9560cad74f1644328213748f6": "1cc7452608d44af8171270530a995644fb213d1d", "aa569a303793510b2b4173480148de4b": "ab8375fcb12791d35b11df801041f965a40b21d9", "17516c33298e52424ffb58afc2ad208c": "0649e27b7d605add7fc4215ee628b71e3c835328", - "526eda1e2a7920c92c88178789d71d84": "c96711c01c0158f161791d6fbe75d88329e8ac0a", - "dd6fb7894fb2398a55e83a51328a3ad6": "c63a74691ee7384080877268a70bb1f53bc66dee", - "e20b430bd7def78b45f61f238abab624": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", + "4e1ca1ade518f53efcce30bdefb855a4": "11ad55ee6b11092e810365b8389c1f8b4081e5d0", + "843c0d51237dc945f57237c4b9872b1d": "da79eca49c59f7661737643b5e11e63a73b51fcc", + "82f3a8bea688b4863947722d2fcb07f7": "a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5", "c85b8132799f1b2ad3754a97947809d2": "838934ee5b8fcc81883fb664526b3d281840b2e9", "00dad01abdbf8ea9e79ad2fe11bdb182": "deb62b0074b8cae4f162c257662136733cfc76ad", "5bc25f80395a68790a69b7eb3e57b897": "f677361cd05cf2d146730890298985290b3dbc69", @@ -53093,22 +53125,26 @@ "f88354ec482be09aeccd76a97bb75868": "1e5b0b2441a4979b6966d942b20cc76c413b8c5e", "7f041b6a55cd7423a6c08a219335269e": "4103668c1bbd66c5e24558e73d4f3f92061a109a", "2f19b925f2c6972c7cf299d42dcd7498": "39a0fec854e438f6757882604a8dc56e62e401d9", - "0ec01786c10707acfa480f1d96c935ef": "07fd3fae7af650a37a3329ed09d039bd7360294f", "e95415b161121bef35ade12367138c63": "00f43f5bf58dd79135565d52c4eea7e314ebc810", "756b19b9829e8b1c9903104ff4139f94": "9c294250f54b4e3f60e3d13f73ee80325e683b04", "3537e3cfe384cad5dcec34dc63777aff": "fa950979aaa1d4c947473f158f770f3f3c8c45da", "a5d31549c638f0dc0ad4f3bb163ba4b7": "f63eca9a1b1e92ee1582ff5e4c0db55193f97e33", + "3f348c88af99a40fbd11fa435f28c69d": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", "e80075c0dfcd39ab2bea972d150e0ba1": "ff161eaa16b36b519eeab26364b99f59b9e8128c", + "0ec5ae5b5a5c4959fa8b43fcf8687f7c": "cdf247154e28c4b352b962a4a523587f2fde9305", "59889f03e09c1d4246b7874096a3201c": "1f62f581094c90620c74d4d15c1c1640a973e684", "2f818338f47701c606ade664a3e16a8a": "ac59626eee00a6a9a8a2f7e3ac5c774678c116ba", "9338b10ee6f13fbc8bfcd6276e156fad": "f695e418bbfff01c47443fb8c4626d742951ed6a", "f126d318f135f38ee377fef2acf08d7e": "62a0d456ff84664a4f631938d3991088bc122f1b", "5e83867c751f692a000afdf658dc181f": "3c1c6422c332fc57c69c938db4dd3ac91eff4f02", + "9c755171b222fb1f4e1439d5b709dbf1": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", "ee362dd63d7ff01f6d579ad53f3bfe69": "889d239ac41f25622164609367b713dd33bd5bde", "6559697f76592be77a7a9ff3bfb6711a": "9b9c9f0af3de914de677ba8e19f4190673142c1b", + "eb4099aeb42ef089cfe94f8fe95e51f6": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", "8bab1ba136d0cb6ebcc05a27c4dfc185": "43f0018c32dd6d166c3b6d8ed2ffa672f398fa3a", "c50072cbab75673e1b1a6b94355e6fa8": "2962e338ccc9f66f29b409f73ca27aeee79633ac", "b5475847ee3a3ef2b12cda48dd49370d": "56b2a1ca68bf3519f01abde00c22e7a3425494e5", + "a3c74748f4b1d08f2247b16099db372d": "4b92936f396c8199f745d3ed0ff588a324b8dd70", "2593bcd4ba33a4974344af27ca371a1a": "09f1ed9e0f8ece181a1850ec89361cef78f37c9e", "1c3337f3f267e9aaab2652ab8aa6c335": "a43960ea7ba25dd823f5e0567d8d0296b960e47e", "cbc5d25c183ca3eb44af1d44418f52bd": "8841e8e15c65fd94ccad95588eb71ef6b2d3d3c9", @@ -53117,19 +53153,13 @@ "5536305d6e89f825519fabf1a8ef207a": "73bdb8359bfc74b04e6e82b20143dc9f6322c886", "35480fabb5a7a306e5a643b915480a24": "c42ff3b9e74c723b07a394dee9106e5a6ab5d3bb", "c045f571b123b018ce2bfd2289172169": "3251d3b601850aed422f006b61ce9776cdb799d2", - "3f348c88af99a40fbd11fa435f28c69d": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", - "0ec5ae5b5a5c4959fa8b43fcf8687f7c": "cdf247154e28c4b352b962a4a523587f2fde9305", "8248adaabb908bd0427d88c8d64a2a1a": "24e80cdf0695361ae8de7cceda29843e0474ecd0", "e10c53c2f8b90bab96ead2d368858623": "8951d1bb219ab2ff8583033d2119c899cc81f18c", "0a93f7940c455905bea6e392dfde92a4": "94d44d7f9529ec1642ba3771ed3c5f756d5bc872", "314fb1b16bd77154db4d30ff780a8e4f": "72c65f2a11ee7b72b77b9945187b7a332632e14a", "54099a23e3d6e87b4786b8eb48bd4274": "7d20a34242c98ac5ea76a8ca55bef0697d22e409", "bb92e8ca3c27546174131ab1f10b7a53": "4b21c78fdc782ef47d1f070ca7df0d50652d5612", - "9c755171b222fb1f4e1439d5b709dbf1": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", - "eb4099aeb42ef089cfe94f8fe95e51f6": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", - "843c0d51237dc945f57237c4b9872b1d": "da79eca49c59f7661737643b5e11e63a73b51fcc", "3bffafac42a7767d8dcecf771f5552ba": "6d27d71aec4dfba98f66316ae74a1426d567698a", - "a3c74748f4b1d08f2247b16099db372d": "4b92936f396c8199f745d3ed0ff588a324b8dd70", "ccaf708ca6980c4becd018f772ccdd23": "44c9f00deccca2bfe2f3b41693b70662ff2c2256", "e72afc5684e66420c1a516117319421e": "210cdc6dccb6737e6ddc950cee2f03d43f414def", "aae3efdeee230b6d35392a36bf3fbc29": "8ce40ec2d1e1e2c5f3153a6afd50cac1e571e055", @@ -53788,6 +53818,11 @@ "vMac.ROM": [ "32daf772960c7ed31f41b95055968532b81d0896" ], + "airlbios.zip": [ + "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", + "03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623", + "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5" + ], "bubsys.zip.9a48e38c": [ "9a48e38cb92b7e0fcc75156bdfa737c63a2cb1c3" ], @@ -53808,6 +53843,12 @@ "fb0c36d69f66f4b10a895aa708ae37f826755257", "98b92ece93d3e160c446a56ac859a8311333e36c" ], + "hod2bios.zip": [ + "782c303cbdfab1027b04db74a63e27bdad5e0c53", + "07fd3fae7af650a37a3329ed09d039bd7360294f", + "d652e72ad5d37032c05ca755dfe5508e03e6b45c", + "b3a86809857fe9ce575da73f6ed6c5441d558e3d" + ], "hod2bios.zip.0b5cc968": [ "0b5cc968644c936d4819c1eb5f623f5f3f83eda1" ], @@ -53821,9 +53862,24 @@ "8cf0aa7f9dca4d77485e605fb0e2173a734633bf", "a97c0579198d88d4db3f7f1b7707ddc6a86ab084" ], + "naomi.zip": [ + "c96711c01c0158f161791d6fbe75d88329e8ac0a", + "11ad55ee6b11092e810365b8389c1f8b4081e5d0", + "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb" + ], "naomi.zip.2533cc33": [ "2533cc33201da28b2086a0a2fd2b5e04271b6eeb" ], + "naomi2.zip": [ + "c63a74691ee7384080877268a70bb1f53bc66dee", + "da79eca49c59f7661737643b5e11e63a73b51fcc" + ], + "naomigd.zip": [ + "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", + "a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5", + "b0677e6b9e1274292fef56787931732072b0e693", + "4b92936f396c8199f745d3ed0ff588a324b8dd70" + ], "neocdz.zip.4f28af31": [ "4f28af31ca0defdd73d80edec2fa296908e624dc" ], @@ -53858,10 +53914,6 @@ "acpsx.zip": [ "5426d52e17e0ff9195fabbb42f704342e556d08e" ], - "airlbios.zip": [ - "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", - "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5" - ], "aleck64.zip": [ "beaf97c4a0e0792b8db65648f9dabb6a54ae0549", "6f2f76832d6dc2c18997421ba26d22d623715c77" @@ -54045,12 +54097,6 @@ "1a2b8740f4672fd9668bfa6f648bb34f4339afb6", "d38572d22721eb5972f671cde54201d752dffe6b" ], - "hod2bios.zip": [ - "782c303cbdfab1027b04db74a63e27bdad5e0c53", - "d652e72ad5d37032c05ca755dfe5508e03e6b45c", - "07fd3fae7af650a37a3329ed09d039bd7360294f", - "b3a86809857fe9ce575da73f6ed6c5441d558e3d" - ], "isgsm.zip": [ "f590ccf688b4c05fa1da5c5dd92c224545170c3b", "6a19d46d3915f2bff823ac34327bb0976fb2fed7" @@ -54100,19 +54146,6 @@ "namcoc75.zip": [ "0649e27b7d605add7fc4215ee628b71e3c835328" ], - "naomi.zip": [ - "c96711c01c0158f161791d6fbe75d88329e8ac0a", - "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb" - ], - "naomi2.zip": [ - "c63a74691ee7384080877268a70bb1f53bc66dee", - "da79eca49c59f7661737643b5e11e63a73b51fcc" - ], - "naomigd.zip": [ - "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", - "b0677e6b9e1274292fef56787931732072b0e693", - "4b92936f396c8199f745d3ed0ff588a324b8dd70" - ], "neocdz.zip": [ "838934ee5b8fcc81883fb664526b3d281840b2e9", "80c9a25ccf39c6b85d1a7c9c0d6fe527ab45ec1c" @@ -68108,6 +68141,9 @@ "disk2-16boot.rom": [ "d4181c9f046aafc3fb326b381baac809d9e38d16" ], + "naomi2.zip.incomplete": [ + "c63a74691ee7384080877268a70bb1f53bc66dee" + ], "tos102uk.img": [ "87900a40a890fdf03bd08be6c60cc645855cbce5" ], @@ -69367,16 +69403,21 @@ "0074341f": "d2c4be29ed5b86c083b5283abc8461127d88395f", "8473ae12": "734efa75815502d58898599359cf55f8003a03a5", "e133094a": "32daf772960c7ed31f41b95055968532b81d0896", + "f83ec60f": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", "0de73e72": "9a48e38cb92b7e0fcc75156bdfa737c63a2cb1c3", "a33210fc": "f8526dcec63402d2533d8180e217fa03a6322c34", "96ff4a07": "5c5f300f3ab2bd10e2adf4dd96baa78317578d8d", "9f9c396d": "ca7bf85999eaaa79652c721986e64f769cf03892", "3d54fe55": "c25686d24c7205473741f948f8a9df9906823145", "ae5c68a1": "fb0c36d69f66f4b10a895aa708ae37f826755257", + "0ddc6daf": "782c303cbdfab1027b04db74a63e27bdad5e0c53", "e2c08bbf": "0b5cc968644c936d4819c1eb5f623f5f3f83eda1", "29f7891d": "cb6ecfa04936ea2ec833f08c080985c07b8a1435", "08ba2527": "dc5c6cc5c294accff4ebce2ac33355063cff8a9d", + "6ee50181": "c96711c01c0158f161791d6fbe75d88329e8ac0a", "7eba26a4": "2533cc33201da28b2086a0a2fd2b5e04271b6eeb", + "4a2409fe": "c63a74691ee7384080877268a70bb1f53bc66dee", + "ca501374": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", "6fc3e0de": "4f28af31ca0defdd73d80edec2fa296908e624dc", "713d6657": "0783012b4eabca599e460988257ec37500501df6", "fefb84f1": "6bbbce094422062bd178d6007bed06dcdd0d8b78", @@ -69388,7 +69429,7 @@ "b28f7112": "de463b0577dfd1027bf7de523ff67a0fff861cdb", "77228c84": "ac4b78d53c7a97da2451ca35498395d8dd1e3024", "9c9601ca": "5426d52e17e0ff9195fabbb42f704342e556d08e", - "f83ec60f": "f2a730530f4989ca0e8860aa4e455b6a5fe69e1d", + "1e5b53dc": "03c9d1c3f59e8c6f320ea74abde1e4e7c5bfa623", "da9beacc": "beaf97c4a0e0792b8db65648f9dabb6a54ae0549", "99c68750": "901e1927ebe87946e3e4bb6d0a825088a8a60490", "bccffdf3": "f44836072ec6ad9e5a7b46105985548181faab5b", @@ -69441,7 +69482,7 @@ "380dcb3f": "346cbf24af08f5bfd96e6a77abf27595477aace8", "fd02cfba": "7381472bf046126257e51a0124e4553282f020e5", "e62f0ef7": "98b92ece93d3e160c446a56ac859a8311333e36c", - "0ddc6daf": "782c303cbdfab1027b04db74a63e27bdad5e0c53", + "45ecc8ae": "07fd3fae7af650a37a3329ed09d039bd7360294f", "26856bf9": "f590ccf688b4c05fa1da5c5dd92c224545170c3b", "d9d92d1b": "7b5be2c65e378f736ee4689303349d80dc425f5f", "201eeb68": "b4ff14ed8c3e37a4b45ce2d80c692961ffc88270", @@ -69458,9 +69499,9 @@ "be241255": "1cc7452608d44af8171270530a995644fb213d1d", "2d71120c": "ab8375fcb12791d35b11df801041f965a40b21d9", "cf65b189": "0649e27b7d605add7fc4215ee628b71e3c835328", - "6ee50181": "c96711c01c0158f161791d6fbe75d88329e8ac0a", - "4a2409fe": "c63a74691ee7384080877268a70bb1f53bc66dee", - "ca501374": "f9ad4a4c6b0bbbe39ba358690a48f763ecbd98f0", + "fb0bca9c": "11ad55ee6b11092e810365b8389c1f8b4081e5d0", + "b700583b": "da79eca49c59f7661737643b5e11e63a73b51fcc", + "31828d82": "a0f07de6070d98f86d55a4ecd61b4a5b05a4a0d5", "a313a0d6": "838934ee5b8fcc81883fb664526b3d281840b2e9", "81315163": "deb62b0074b8cae4f162c257662136733cfc76ad", "6a679292": "f677361cd05cf2d146730890298985290b3dbc69", @@ -74195,22 +74236,26 @@ "dd9c46b8": "1e5b0b2441a4979b6966d942b20cc76c413b8c5e", "bfda1fe5": "4103668c1bbd66c5e24558e73d4f3f92061a109a", "16ef13bc": "39a0fec854e438f6757882604a8dc56e62e401d9", - "45ecc8ae": "07fd3fae7af650a37a3329ed09d039bd7360294f", "e185c03f": "00f43f5bf58dd79135565d52c4eea7e314ebc810", "a5a07c99": "9c294250f54b4e3f60e3d13f73ee80325e683b04", "eed16e7a": "fa950979aaa1d4c947473f158f770f3f3c8c45da", "b1642de4": "f63eca9a1b1e92ee1582ff5e4c0db55193f97e33", + "2c87c283": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", "fb55e65e": "ff161eaa16b36b519eeab26364b99f59b9e8128c", + "c295a8c2": "cdf247154e28c4b352b962a4a523587f2fde9305", "20cab9aa": "1f62f581094c90620c74d4d15c1c1640a973e684", "4d458823": "ac59626eee00a6a9a8a2f7e3ac5c774678c116ba", "fa297c5b": "f695e418bbfff01c47443fb8c4626d742951ed6a", "5177e8c4": "62a0d456ff84664a4f631938d3991088bc122f1b", "87e1cf82": "3c1c6422c332fc57c69c938db4dd3ac91eff4f02", + "277c7fee": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", "9521330f": "889d239ac41f25622164609367b713dd33bd5bde", "651142d3": "9b9c9f0af3de914de677ba8e19f4190673142c1b", + "ab628024": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", "cc8b8e1e": "43f0018c32dd6d166c3b6d8ed2ffa672f398fa3a", "2143196c": "2962e338ccc9f66f29b409f73ca27aeee79633ac", "da4fbc94": "56b2a1ca68bf3519f01abde00c22e7a3425494e5", + "b7949ddb": "4b92936f396c8199f745d3ed0ff588a324b8dd70", "18ecc714": "09f1ed9e0f8ece181a1850ec89361cef78f37c9e", "312459a8": "a43960ea7ba25dd823f5e0567d8d0296b960e47e", "28e5fc81": "8841e8e15c65fd94ccad95588eb71ef6b2d3d3c9", @@ -74219,19 +74264,13 @@ "bb76ee11": "73bdb8359bfc74b04e6e82b20143dc9f6322c886", "f0ddfc76": "c42ff3b9e74c723b07a394dee9106e5a6ab5d3bb", "18354008": "3251d3b601850aed422f006b61ce9776cdb799d2", - "2c87c283": "e18c5e9ca21654dfd724aa54e625b386e6ffb2c5", - "c295a8c2": "cdf247154e28c4b352b962a4a523587f2fde9305", "af93ff9c": "24e80cdf0695361ae8de7cceda29843e0474ecd0", "89f2b1a1": "8951d1bb219ab2ff8583033d2119c899cc81f18c", "c611b498": "94d44d7f9529ec1642ba3771ed3c5f756d5bc872", "20199dc0": "72c65f2a11ee7b72b77b9945187b7a332632e14a", "96b7ce1e": "7d20a34242c98ac5ea76a8ca55bef0697d22e409", "d39556fc": "4b21c78fdc782ef47d1f070ca7df0d50652d5612", - "277c7fee": "b3a86809857fe9ce575da73f6ed6c5441d558e3d", - "ab628024": "d7ef86bd03de7c1d0e2b0762e04b6f8f8d26dbdb", - "b700583b": "da79eca49c59f7661737643b5e11e63a73b51fcc", "d2a1c6bf": "6d27d71aec4dfba98f66316ae74a1426d567698a", - "b7949ddb": "4b92936f396c8199f745d3ed0ff588a324b8dd70", "5008be15": "44c9f00deccca2bfe2f3b41693b70662ff2c2256", "7efc7372": "210cdc6dccb6737e6ddc950cee2f03d43f414def", "c1800ee3": "8ce40ec2d1e1e2c5f3153a6afd50cac1e571e055", diff --git a/scripts/auto_fetch.py b/scripts/auto_fetch.py index 83fdd56a..949d759f 100644 --- a/scripts/auto_fetch.py +++ b/scripts/auto_fetch.py @@ -38,6 +38,8 @@ DEFAULT_DB = "database.json" DEFAULT_PLATFORMS_DIR = "platforms" DEFAULT_BIOS_DIR = "bios" +MAX_DOWNLOAD = 100 * 1024 * 1024 # 100MB per file + LEGACY_BRANCHES = ["libretro", "RetroArch", "RetroPie", "Recalbox", "batocera", "Other"] PUBLIC_REPOS = [ @@ -106,6 +108,14 @@ def verify_content(data: bytes, expected: dict) -> bool: return False +def _read_limited(resp, limit: int = MAX_DOWNLOAD) -> bytes | None: + """Read response up to limit bytes. Returns None if exceeded.""" + data = resp.read(limit + 1) + if len(data) > limit: + return None + return data + + def step1_crossref_db(entry: dict, db: dict) -> str | None: """Check if file exists under different name/path in database.""" sha1 = entry.get("sha1") @@ -166,7 +176,9 @@ def step3_search_public_repos(entry: dict) -> bytes | None: try: req = urllib.request.Request(url, headers={"User-Agent": "retrobios-fetch/1.0"}) with urllib.request.urlopen(req, timeout=30) as resp: - data = resp.read() + data = _read_limited(resp) + if data is None: + continue if verify_content(data, entry): return data except (urllib.error.URLError, urllib.error.HTTPError): @@ -177,7 +189,9 @@ def step3_search_public_repos(entry: dict) -> bytes | None: try: req = urllib.request.Request(url, headers={"User-Agent": "retrobios-fetch/1.0"}) with urllib.request.urlopen(req, timeout=30) as resp: - data = resp.read() + data = _read_limited(resp) + if data is None: + continue if verify_content(data, entry): return data except (urllib.error.URLError, urllib.error.HTTPError): @@ -196,7 +210,9 @@ def step4_search_archive_org(entry: dict) -> bytes | None: try: req = urllib.request.Request(url, headers={"User-Agent": "retrobios-fetch/1.0"}) with urllib.request.urlopen(req, timeout=30) as resp: - data = resp.read() + data = _read_limited(resp) + if data is None: + continue if verify_content(data, entry): return data except (urllib.error.URLError, urllib.error.HTTPError): @@ -223,8 +239,8 @@ def step4_search_archive_org(entry: dict) -> bytes | None: try: req2 = urllib.request.Request(dl_url, headers={"User-Agent": "retrobios-fetch/1.0"}) with urllib.request.urlopen(req2, timeout=30) as resp2: - data = resp2.read() - if verify_content(data, entry): + data = _read_limited(resp2) + if data is not None and verify_content(data, entry): return data except (urllib.error.URLError, urllib.error.HTTPError): pass @@ -236,7 +252,7 @@ def step4_search_archive_org(entry: dict) -> bytes | None: def place_file(data: bytes, entry: dict, bios_dir: str, db: dict) -> str: """Place a fetched BIOS file in the correct location.""" - name = entry["name"] + name = os.path.basename(entry["name"]) system = entry["system"] dest_dir = Path(bios_dir) diff --git a/scripts/generate_pack.py b/scripts/generate_pack.py index 66578481..714770c6 100644 --- a/scripts/generate_pack.py +++ b/scripts/generate_pack.py @@ -39,12 +39,35 @@ DEFAULT_BIOS_DIR = "bios" LARGE_FILES_RELEASE = "large-files" LARGE_FILES_REPO = "Abdess/retrobios" +MAX_ENTRY_SIZE = 512 * 1024 * 1024 # 512MB -def fetch_large_file(name: str, dest_dir: str = ".cache/large") -> str | None: + +def _verify_file_hash(path: str, expected_sha1: str = "", + expected_md5: str = "") -> bool: + """Compute and compare hash of a local file.""" + if not expected_sha1 and not expected_md5: + return True + h = hashlib.sha1() if expected_sha1 else hashlib.md5() + with open(path, "rb") as f: + while True: + chunk = f.read(65536) + if not chunk: + break + h.update(chunk) + return h.hexdigest() == (expected_sha1 or expected_md5) + + +def fetch_large_file(name: str, dest_dir: str = ".cache/large", + expected_sha1: str = "", expected_md5: str = "") -> str | None: """Download a large file from the 'large-files' GitHub release if not cached.""" cached = os.path.join(dest_dir, name) if os.path.exists(cached): - return cached + if expected_sha1 or expected_md5: + if _verify_file_hash(cached, expected_sha1, expected_md5): + return cached + os.unlink(cached) + else: + return cached encoded_name = urllib.request.quote(name) url = f"https://github.com/{LARGE_FILES_REPO}/releases/download/{LARGE_FILES_RELEASE}/{encoded_name}" @@ -58,10 +81,22 @@ def fetch_large_file(name: str, dest_dir: str = ".cache/large") -> str | None: if not chunk: break f.write(chunk) - return cached except (urllib.error.URLError, urllib.error.HTTPError): return None + if expected_sha1 or expected_md5: + if not _verify_file_hash(cached, expected_sha1, expected_md5): + os.unlink(cached) + return None + return cached + + +def _sanitize_path(raw: str) -> str: + """Strip path traversal components from a relative path.""" + raw = raw.replace("\\", "/") + parts = [p for p in raw.split("/") if p and p != ".."] + return "/".join(parts) + def resolve_file(file_entry: dict, db: dict, bios_dir: str, zip_contents: dict | None = None) -> tuple[str | None, str]: @@ -110,7 +145,7 @@ def resolve_file(file_entry: dict, db: dict, bios_dir: str, return local_path, "zip_exact" # Release assets override local files (authoritative large files) - cached = fetch_large_file(name) + cached = fetch_large_file(name, expected_sha1=sha1 or "", expected_md5=md5 or "") if cached: return cached, "release_asset" @@ -146,6 +181,8 @@ def build_zip_contents_index(db: dict) -> dict: for info in zf.infolist(): if info.is_dir(): continue + if info.file_size > MAX_ENTRY_SIZE: + continue data = zf.read(info.filename) inner_md5 = hashlib.md5(data).hexdigest() index[inner_md5] = sha1 @@ -160,6 +197,14 @@ def download_external(file_entry: dict, dest_path: str) -> bool: if not url: return False + sha256 = file_entry.get("sha256") + sha1 = file_entry.get("sha1") + md5 = file_entry.get("md5") + + if not (sha256 or sha1 or md5): + print(f" WARNING: no hash for {file_entry['name']}, skipping unverifiable download") + return False + try: req = urllib.request.Request(url, headers={"User-Agent": "retrobios-pack-gen/1.0"}) with urllib.request.urlopen(req, timeout=120) as resp: @@ -168,11 +213,6 @@ def download_external(file_entry: dict, dest_path: str) -> bool: print(f" WARNING: Failed to download {url}: {e}") return False - # Verify hash - sha256 = file_entry.get("sha256") - sha1 = file_entry.get("sha1") - md5 = file_entry.get("md5") - if sha256: actual = hashlib.sha256(data).hexdigest() if actual != sha256: @@ -228,7 +268,9 @@ def generate_pack( with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf: for sys_id, system in sorted(config.get("systems", {}).items()): for file_entry in system.get("files", []): - dest = file_entry.get("destination", file_entry["name"]) + dest = _sanitize_path(file_entry.get("destination", file_entry["name"])) + if not dest: + continue if base_dest: full_dest = f"{base_dest}/{dest}" else: @@ -316,8 +358,11 @@ def _extract_zip_to_archive(source_zip: str, dest_prefix: str, target_zf: zipfil for info in src.infolist(): if info.is_dir(): continue + clean_name = _sanitize_path(info.filename) + if not clean_name: + continue data = src.read(info.filename) - target_path = f"{dest_prefix}/{info.filename}" if dest_prefix else info.filename + target_path = f"{dest_prefix}/{clean_name}" if dest_prefix else clean_name target_zf.writestr(target_path, data)