feat: add misterfpga platform support

This commit is contained in:
Abdessamad Derraz committed 2026-08-07 13:28:15 +02:00
1 parent d88e87dc34
commit 8663ec17b7
29 files changed
+1629 -279

No files matched your search

+15 -8
View File
@@ -2,9 +2,14 @@
<img src=".github/assets/banner.png" alt="RetroBIOS" width="400">
</p>
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
<p align="center">
<a href="https://github.com/Abdess/retrobios/actions/workflows/build.yml"><img src="https://github.com/Abdess/retrobios/actions/workflows/build.yml/badge.svg" alt="Build"></a>
<a href="https://github.com/Abdess/retrobios/actions/workflows/deploy-site.yml"><img src="https://github.com/Abdess/retrobios/actions/workflows/deploy-site.yml/badge.svg" alt="Site"></a>
</p>
**7,628** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
**7,646** verified files across **396** systems, ready to extract into your emulator's BIOS directory.
## Quick Install
@@ -33,6 +38,7 @@ Pick your platform, download the ZIP, extract to the BIOS path.
| BizHawk | 118 | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 161 | `Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 530 | `system/` | [Download](../../releases/latest) |
| MiSTer FPGA | 65 | `/media/fat/games/` | [Download](../../releases/latest) |
| ROCKNIX | 38 | `/storage/roms/bios/` | [Download](../../releases/latest) |
| Recalbox | 346 | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 530 | `system/` | [Download](../../releases/latest) |
@@ -46,11 +52,11 @@ Pick your platform, download the ZIP, extract to the BIOS path.
BIOS, firmware, and system files for consoles from Atari to PlayStation 3.
Each file is checked against the emulator's source code to match what the code actually loads at runtime.
- **11 platforms** supported with platform-specific verification
- **330 emulators** profiled from source (RetroArch cores + standalone)
- **12 platforms** supported with platform-specific verification
- **314 emulators** profiled from source (RetroArch cores + standalone)
- **396 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **7,628 files** verified with MD5, SHA1, CRC32 checksums
- **9626 MB** total collection size
- **7,646 files** verified with MD5, SHA1, CRC32 checksums
- **9628 MB** total collection size
## Supported systems
@@ -66,6 +72,7 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
| BizHawk | 118/118 (100.0%) | 118 | 0 | 0 |
| EmuDeck | 161/161 (100.0%) | 161 | 0 | 0 |
| Lakka | 530/530 (100.0%) | 530 | 0 | 0 |
| MiSTer FPGA | 65/65 (100.0%) | 65 | 0 | 0 |
| ROCKNIX | 38/38 (100.0%) | 38 | 0 | 0 |
| Recalbox | 346/346 (100.0%) | 346 | 0 | 0 |
| RetroArch | 530/530 (100.0%) | 530 | 0 | 0 |
@@ -108,7 +115,7 @@ The [documentation site](https://abdess.github.io/retrobios/) provides:
- **Per-emulator profiles** with source code references for every file
- **Per-system pages** showing which emulators and platforms cover each console
- **Gap analysis** identifying missing files and undeclared core requirements
- **Cross-reference** mapping files across 11 platforms and 330 emulators
- **Cross-reference** mapping files across 12 platforms and 314 emulators
## How it works
@@ -139,4 +146,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
This repository provides BIOS files for personal backup and archival purposes.
*Auto-generated on 2026-08-07T09:21:54Z*
*Auto-generated on 2026-08-07T10:51:47Z*
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+325 -11
View File
@@ -1,7 +1,7 @@
{
"generated_at": "2026-08-06T17:54:05Z",
"total_files": 7628,
"total_size": 10093874908,
"generated_at": "2026-08-07T10:32:56Z",
"total_files": 7646,
"total_size": 10096108965,
"files": {
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
@@ -29083,6 +29083,36 @@
"crc32": "fb731aaa",
"adler32": "1cf56699"
},
"af643900fea84234e08b616a6d27f03f0a61db96": {
"path": "bios/Atari/Jaguar/boot.rom",
"name": "boot.rom",
"size": 131072,
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"md5": "6e844759720226e58d55ecaf33608a13",
"sha256": "f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9",
"crc32": "ae25bdf5",
"adler32": "851be38a"
},
"73f7356daec9edf7ce2dc35432b1ed948cacbe84": {
"path": "bios/Atari/Jaguar/boot1.rom",
"name": "boot1.rom",
"size": 262144,
"sha1": "73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"md5": "18f0741bdb8bb9b6bb99393cb90426a2",
"sha256": "7ebadb56f8082c86d6f74e2c38e02b218db420d3049f8f9c988f6490dc7f9fc0",
"crc32": "b408a212",
"adler32": "e967428e"
},
"6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce": {
"path": "bios/Atari/Jaguar/boot2.rom",
"name": "boot2.rom",
"size": 131072,
"sha1": "6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce",
"md5": "4af00f1c26898cf04585e1693d25faba",
"sha256": "bf02591cfe4ab4f082ea23c447da5c53afbfddace6d700b785ba04b7ac5c64e0",
"crc32": "69be37bb",
"adler32": "0783dd51"
},
"e4ed47fae31693e016b081c6bda48da5b70d7ccb": {
"path": "bios/Atari/Lynx/Atari_LYNX_boot.img",
"name": "Atari_LYNX_boot.img",
@@ -29623,6 +29653,16 @@
"crc32": "23de1c25",
"adler32": "06bc7e6d"
},
"ea449dc607601f9a68d855ad6ab53800d2e99297": {
"path": "bios/Bit Corporation/Gamate/gamate_bios_umc.bin",
"name": "gamate_bios_umc.bin",
"size": 4096,
"sha1": "ea449dc607601f9a68d855ad6ab53800d2e99297",
"md5": "ef67993a94503c4b7798b5901c7dda52",
"sha256": "26f206fa4eedbe040f619e3af78efa1d38588535b1d746f6a462da639ced4b1e",
"crc32": "07090415",
"adler32": "0d4dcb8f"
},
"80b3ed85d530456d9c879c9b4dd835d8e91637bb": {
"path": "bios/Camputers/Lynx/.variants/lynx48k.zip",
"name": "lynx48k.zip",
@@ -29733,6 +29773,16 @@
"crc32": "a2e5cbfe",
"adler32": "3151baa0"
},
"94b5f54dd7bce321e377fdaaf592acd3870cf621": {
"path": "bios/Casio/PV-2000/hn613128pc64.bin",
"name": "hn613128pc64.bin",
"size": 16384,
"sha1": "94b5f54dd7bce321e377fdaaf592acd3870cf621",
"md5": "558540c5c6f776d88a897f2f3b8fec8f",
"sha256": "2587d206eb63917848ea30e14232448ed4f873c6796a22e2bf6543b01f46308e",
"crc32": "8f31f297",
"adler32": "c69fb29d"
},
"c18f460301177b64bbfcbedc3010e734d0803d4c": {
"path": "bios/Casio/PV-2000/pv2000.zip",
"name": "pv2000.zip",
@@ -32153,6 +32203,16 @@
"crc32": "9a06cba0",
"adler32": "6de0acbf"
},
"e5808cb1f96b39a0d52d67de79a626072f80ef12": {
"path": "bios/Epoch/Super Cassette Vision/boot.rom",
"name": "boot.rom",
"size": 6144,
"sha1": "e5808cb1f96b39a0d52d67de79a626072f80ef12",
"md5": "b596975be2e0360232bbeb1e492ab873",
"sha256": "25c7ff2d735d1ae895af9262f31e083c5c1bd99a8f31b5b378dfbc0f166ec97f",
"crc32": "65ed17b9",
"adler32": "49ff2454"
},
"ecd670080c4163c6c16d218ef35c8141c4a8a290": {
"path": "bios/Epoch/Super Cassette Vision/scv.zip",
"name": "scv.zip",
@@ -33603,6 +33663,16 @@
"crc32": "35930faa",
"adler32": "dca025f1"
},
"405806c97378abcf7c7b0d549430c78c7fc60ba2": {
"path": "bios/Interact/Home Computer/interact.rom",
"name": "interact.rom",
"size": 2048,
"sha1": "405806c97378abcf7c7b0d549430c78c7fc60ba2",
"md5": "aa9fb0e9697a009dfb9d876351dd8f48",
"sha256": "e0888ba82382aabb7557aa4a3445e613bd7f33bae1af5ece211e2cb6bc9ffa82",
"crc32": "1aa50444",
"adler32": "017c6e0d"
},
"eea6d4c69717af589ea36501e00fcb32ac91a5ac": {
"path": "bios/Java/J2ME/.variants/freej2me-lr.jar",
"name": "freej2me-lr.jar",
@@ -38233,6 +38303,16 @@
"crc32": "7ac06182",
"adler32": "240c8b48"
},
"7b3fa6c265d56687d6bff09da5d34caa92e8d2ce": {
"path": "bios/NEC/PC Engine CD/Super CD 3.1.pce",
"name": "Super CD 3.1.pce",
"size": 262144,
"sha1": "7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"md5": "98d43a097a165b03df170fd5c2ad2c2f",
"sha256": "b057e09822c3767120ba56f2ce02f089b5824d4b489ea3cd7ad9405b3a339a52",
"crc32": "9759a20d",
"adler32": "27f1c0f8"
},
"ac3c1e72eae9fc19e575cc011926c80b330e8ad1": {
"path": "bios/NEC/PC-6001/pc6001.zip",
"name": "pc6001.zip",
@@ -38293,6 +38373,16 @@
"crc32": "6178bd43",
"adler32": "d4e50e5a"
},
"7a6676e352c8d0eaf16e5863c1c98ac65d6f8686": {
"path": "bios/NEC/PC-88/PC8801 MKII SR BIOS.rom",
"name": "PC8801 MKII SR BIOS.rom",
"size": 393216,
"sha1": "7a6676e352c8d0eaf16e5863c1c98ac65d6f8686",
"md5": "f1ce4d5f83717093982e5f75516b8f3c",
"sha256": "0dc3fcf58c90c1f119a710babd54b57babf81ba8573c070b33f0cc21948b3086",
"crc32": "6337409f",
"adler32": "66d3f4d2"
},
"0a056b6d28b4b9e29a2d255bdaa25c24f176cf1e": {
"path": "bios/NEC/PC-88/font2.rom",
"name": "font2.rom",
@@ -41153,6 +41243,26 @@
"crc32": "93bd8276",
"adler32": "e04cdd10"
},
"b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a": {
"path": "bios/Nintendo/Nintendo 64/boot.rom",
"name": "boot.rom",
"size": 1984,
"sha1": "b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"md5": "5c124e7948ada85da603a522782940d0",
"sha256": "fa7b09795ef1e54461e59f6f2d902368133e3f1cd980e34383e6a780d74beffd",
"crc32": "0aa20b09",
"adler32": "7267a3f7"
},
"15c23c3b671a8828302603f30c81d464b24a7fb1": {
"path": "bios/Nintendo/Nintendo 64/boot1.rom",
"name": "boot1.rom",
"size": 1984,
"sha1": "15c23c3b671a8828302603f30c81d464b24a7fb1",
"md5": "d4232dc935cad0650ac2664d52281f3a",
"sha256": "79c81fffae934b6df251da6c3a394f52c6a0eaa07115a3b9677743e3c1335f4a",
"crc32": "d6650859",
"adler32": "3a58a131"
},
"1d7f6fa0c34e3d50be52c16a0816bebac309fe41": {
"path": "bios/Nintendo/Nintendo 64DD/Mupen64plus/font.ttf",
"name": "font.ttf",
@@ -43833,6 +43943,16 @@
"crc32": "17d723e7",
"adler32": "3121cac4"
},
"1d9c040b4fe974f5eb600c6f80797f40b45efcf1": {
"path": "bios/Philips/CD-i/vmpega_split.rom",
"name": "vmpega_split.rom",
"size": 131072,
"sha1": "1d9c040b4fe974f5eb600c6f80797f40b45efcf1",
"md5": "9694c466f9b65c1990a81b7a6280546b",
"sha256": "e8a8cabb23650b53c2cb0763c3a1409f6c0d580a52fbe8ef834d44d4021db165",
"crc32": "3685382e",
"adler32": "dc9750c9"
},
"8cd052b532fc052d6b0077261c12f800e8655bb1": {
"path": "bios/Philips/CD-i/zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490",
"name": "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490",
@@ -70223,6 +70343,16 @@
"crc32": "6eeb6f40",
"adler32": "727cc559"
},
"06c000a8c64326cfa326c20a8ecc01313b643c4d": {
"path": "bios/SNK/Neo Geo Pocket/boot.rom",
"name": "boot.rom",
"size": 65536,
"sha1": "06c000a8c64326cfa326c20a8ecc01313b643c4d",
"md5": "43d0d53c69c12cc0d28f197717a1bb06",
"sha256": "06826527c61918ef35b67d9d49e9d689a985d7583d01d112e9975c6ee5547881",
"crc32": "3f008c8d",
"adler32": "af8bc2ef"
},
"1e8ee2b4629b33759316f14bf0c2e15710716e74": {
"path": "bios/SNK/Neo Geo Pocket/ngp.zip",
"name": "ngp.zip",
@@ -71263,6 +71393,16 @@
"crc32": "9d2da8f2",
"adler32": "9452d9fa"
},
"9eed922bec1b9ff2b611dacf484d710b732bea5e": {
"path": "bios/Sega/Mega CD/US Sega CD 2 (Region Free) 930601 l_oliveira.bin",
"name": "US Sega CD 2 (Region Free) 930601 l_oliveira.bin",
"size": 131072,
"sha1": "9eed922bec1b9ff2b611dacf484d710b732bea5e",
"md5": "14db9657bbaa6fbb9249752424dc0ce4",
"sha256": "59403e7f8be1d4e98d673cca17cfec072770a56415165ad7ac88dcd3f7273317",
"crc32": "7e86c5da",
"adler32": "dd0738e8"
},
"f4f315adcef9b8feb0364c21ab7f0eaf5457f3ed": {
"path": "bios/Sega/Mega CD/bios_CD_U.bin",
"name": "bios_CD_U.bin",
@@ -73103,6 +73243,16 @@
"crc32": "5660f34f",
"adler32": "914377dc"
},
"5ff94f33a54b6018ce4c5836e6df16a5da03245b": {
"path": "bios/Sony/PlayStation/sbi.zip",
"name": "sbi.zip",
"size": 218953,
"sha1": "5ff94f33a54b6018ce4c5836e6df16a5da03245b",
"md5": "706d60ab2dfdbfdd53be2069cb85a1fe",
"sha256": "32db7bb64131623fa912ef30a85f7d70cee2abbca56c21d360d2025e12b8aca9",
"crc32": "9f02b335",
"adler32": "62f5a012"
},
"339a48f4fcf63e10b5b867b8c93cfd40945faf6c": {
"path": "bios/Sony/PlayStation/scph100.bin",
"name": "scph100.bin",
@@ -75833,6 +75983,16 @@
"crc32": "a092207d",
"adler32": "ba312438"
},
"05209c994460a34a433fc1490a3eb690ee9bf3e7": {
"path": "bios/Texas Instruments/TI-99/boot0.rom",
"name": "boot0.rom",
"size": 196608,
"sha1": "05209c994460a34a433fc1490a3eb690ee9bf3e7",
"md5": "a75bb208176c0aed1b6a04b2dcf4770c",
"sha256": "53ad354861a62b9144e02e878845c7e1a5dd75342b715047db64b780954f7c88",
"crc32": "eea0b4e7",
"adler32": "32181b67"
},
"698c638e1773244a6bf8a353c87d210047cce402": {
"path": "bios/Texas Instruments/TI-99/cf7+.ctg",
"name": "cf7+.ctg",
@@ -75903,6 +76063,16 @@
"crc32": "237c60bf",
"adler32": "604ff6e5"
},
"f5d72c3c5d12c8973982f926aaa425c653b7e232": {
"path": "bios/Tiger/Game.com/GameCom External BIOS (Kitrinx v0.03).bin",
"name": "GameCom External BIOS (Kitrinx v0.03).bin",
"size": 262144,
"sha1": "f5d72c3c5d12c8973982f926aaa425c653b7e232",
"md5": "3f2178d717dd309ed7424d49ef92987f",
"sha256": "64cbaa1a5e8bae8fae90a7affd6743df5d23edfc4e1e23002ca77c8b7ec1bb64",
"crc32": "b7709d92",
"adler32": "3bad8eb2"
},
"97f782e72d738f4d7b861363266bf46b438d9b50": {
"path": "bios/Tiger/Game.com/external.bin",
"name": "external.bin",
@@ -75993,6 +76163,16 @@
"crc32": "f387895d",
"adler32": "e6982429"
},
"c12e098c14ac0724869053df2b63277a3e413802": {
"path": "bios/VTech/CreatiVision/laser2001.rom",
"name": "laser2001.rom",
"size": 16384,
"sha1": "c12e098c14ac0724869053df2b63277a3e413802",
"md5": "4dfadfb1158f84e2df2b85b13f303986",
"sha256": "48a7fda99c1b9c0d90b70de0b4a9431a5a781f94d1874ee6d91830a638c9e5c3",
"crc32": "4dc35c39",
"adler32": "4fe5cc1e"
},
"9fa5f366c4ec43d7c23f03f054733894bf42912f": {
"path": "bios/VTech/Laser 310/laser310.zip",
"name": "laser310.zip",
@@ -79194,6 +79374,9 @@
"c8a73288ab97226c52602204ab894286": "a3af676991391a6dd716c79022d4947206b78164",
"ce6a86574d0c9de9075705f14e99d090": "d47baf4953fa3297f68886f392b373e204c20a8f",
"bcfe348c565d9dedb173822ee6850dea": "f8991b0c385f4e5002fa2a7e2f5e61e8c5213356",
"6e844759720226e58d55ecaf33608a13": "af643900fea84234e08b616a6d27f03f0a61db96",
"18f0741bdb8bb9b6bb99393cb90426a2": "73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"4af00f1c26898cf04585e1693d25faba": "6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce",
"fcd403db69f54290b51035d82f835e7b": "e4ed47fae31693e016b081c6bda48da5b70d7ccb",
"0bc067bfdbce0e7130264b2e3aade0ac": "bdca7bbb647066cf7555ce5d555ce09de4ebc41b",
"e2c861c588fca2d0cf6be3df3aaf05f2": "bfcc01ae105fa4cee47890c09ebad9e3775395a4",
@@ -79248,6 +79431,7 @@
"880893bd5a7d53fff826bd76a83d566e": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"d3eff34719a363e586e12b700501ed91": "8270c4a72624692842a3cb9f195058f2ffba48c5",
"320bf3d4142fa1043255db7ff87d17c7": "e99667ea5cfe6a5eceb53faaa39cdda0cbf69c69",
"ef67993a94503c4b7798b5901c7dda52": "ea449dc607601f9a68d855ad6ab53800d2e99297",
"85ae78a20ffaff388dd09c75d9e1ec0e": "80b3ed85d530456d9c879c9b4dd835d8e91637bb",
"96123222580c7b923e4aca6a8faa49a4": "5300a352007976102d61d53f1e8c48063d2f3026",
"b0ad5bf3070aea27b637e1998c81fa8c": "7ded5184561168e159a30fa8e9d3fde5e52aa91a",
@@ -79259,6 +79443,7 @@
"23d409a992e5d0010f3e9d00de66b50a": "6508c19fb19abb95eb4bc1923e44b49a6a9ae6b0",
"0aef1a4736e5e2d23719e55e534c7c9d": "df95ea702606e88b4c906a0233c8fec54c02ff01",
"0e1d8dc0110ecf8201c0cef11ef4a858": "144ea9d0f20113632dde6d21c62a01c02cf7666d",
"558540c5c6f776d88a897f2f3b8fec8f": "94b5f54dd7bce321e377fdaaf592acd3870cf621",
"1b7b38c5bdae716ac322c6bf384e0800": "c18f460301177b64bbfcbedc3010e734d0803d4c",
"ba7e972ba12d8a6a323d374fa3e82118": "dc4b77cd3ac45cf448e427eff5c0a7b138fd9d81",
"2c66f5911e5b42b8ebe113403548eee7": "45bedc4cbdeac66c7df59e9e599195c778d86a92",
@@ -79501,6 +79686,7 @@
"85fede415f4294cc777517d7eada482e": "16375d42ea109b47edded7a16028de7fdb3013a1",
"1c08606408029751fd30ac91d2bf30d5": "a9a7eef3c2f80b669e7421d2cf0a7a74f6088160",
"887479fe3c69a0b935c57a7a738e26c4": "83e94c56f2fc4ab60de94021a1283cca09d65ee5",
"b596975be2e0360232bbeb1e492ab873": "e5808cb1f96b39a0d52d67de79a626072f80ef12",
"33df021613fb12abe2ad14b9eb17c7fe": "ecd670080c4163c6c16d218ef35c8141c4a8a290",
"b3acc6716b447a111b20ca4c26d676f6": "4aecb6c11ca508b1cc3788fc35c66b42155f1ff1",
"2adaf4076d2afc3b72d7d178434e41ac": "908dda7aecc7f4c2c97a19a4c4ab3a14cb245d44",
@@ -79646,6 +79832,7 @@
"c011b428819eea4a80b455c245a5a04d": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
"033d7392985841027909c4c32b9f2076": "33b50cec88bc1569431a7885c0cc2692fddb004b",
"e0ba7a8634b12cfee4b6760a6f89051a": "286b2e1fb21cc79851da01666db6c0b0e88f25e3",
"aa9fb0e9697a009dfb9d876351dd8f48": "405806c97378abcf7c7b0d549430c78c7fc60ba2",
"a6f31483d1da4558cc19025e21f95c1d": "eea6d4c69717af589ea36501e00fcb32ac91a5ac",
"ccd92e7156ce2f0ce14c88ffb68a16eb": "fb231192894e2fd17a5799fbbdf86a4696951bce",
"4da74084fc1b1bd3d776ed8d3ee648de": "78f1f41d55efc6b8d81e99c1d9d75248b3f83dc2",
@@ -80109,12 +80296,14 @@
"38179df8f4ac870017db21ebcbf53114": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"0754f903b52e3b3342202bdafb13efa5": "d02611d99921986147c753df14c7349b31d71950",
"635a978fd40db9a18ee44eff449fc126": "6e89d1227581c76441a53d605f9e324185f1da33",
"98d43a097a165b03df170fd5c2ad2c2f": "7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"4e9990f649ec41f13cbc7fe928857b0b": "ac3c1e72eae9fc19e575cc011926c80b330e8ad1",
"9625726babfc759e88a97117a849773c": "5f039c3c4ecd8ed08bbf9a9084a8765a53e44dbe",
"9203a206be15b45a0dc3bb36d618d764": "6c1ab81f4450cd494f54349fa913c20fe6d098a1",
"9c940c993b87b0a31d87960c1dc68656": "5a943ee2f4ff781af2e5ac2274f3350c3cb15248",
"9e5edcd9c670533791034ba84afb4d73": "88ad52740cd0b8a0e927abbfb84601aa099bcfbc",
"d81c6d5d7ad1a4bbbd6ae22a01257603": "82e11a177af6a5091dd67f50a2f4bafda84d6556",
"f1ce4d5f83717093982e5f75516b8f3c": "7a6676e352c8d0eaf16e5863c1c98ac65d6f8686",
"1711df0a52f76bd395fdbc8cada17d38": "0a056b6d28b4b9e29a2d255bdaa25c24f176cf1e",
"b1f6e4d362ae0b443bcd3803c753c16d": "aff9959b402ae0ead377b87566cf0e7b889e3d9e",
"29aad51cd243c8e449d311d14613f0b1": "22fb2cd4412df057762c23dd22729ebcb922fe0e",
@@ -80401,6 +80590,8 @@
"acc19117e43ddde9816460a068724e7f": "c7ba780c28a68dd84cad9455d091d4ca5cb07612",
"e6e3d1ffdbdf64d4e3966cf57463b020": "40c1a36528eb45a4c6a20211501380258c392ce8",
"e280666cdf1037add6f04af0be95fc89": "875f12a1ede52c4353cab2c414b3d3506cafd333",
"5c124e7948ada85da603a522782940d0": "b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"d4232dc935cad0650ac2664d52281f3a": "15c23c3b671a8828302603f30c81d464b24a7fb1",
"785d2fd45984c6548763ae6702d83e20": "1d7f6fa0c34e3d50be52c16a0816bebac309fe41",
"57eca542eab9ca9303e09d18819feb03": "b31cca5881bb7fa071ccb5940b1bd7a6e4056e35",
"df28596f96886f70e64006c95097691c": "c7139e7f98c2109adb05703c8d3ba7b3bad3134d",
@@ -80669,6 +80860,7 @@
"761ed2a51ade6271a611de6e91d368fe": "2366883a3259df021d0f1fc104b945978b8ef8b4",
"97aa5f47030cd9fdb679d4fafbb0e332": "9492247203b71c12d88fad0a5437376941c7870a",
"3b710cc3f60cce0f5640b50d75e09ba5": "6c317a82e35d60ca5e7a74fc99f665055693169d",
"9694c466f9b65c1990a81b7a6280546b": "1d9c040b4fe974f5eb600c6f80797f40b45efcf1",
"b4c27d27166740800eb4e97b91b1865a": "8cd052b532fc052d6b0077261c12f800e8655bb1",
"fb3554749b3f76c18ab0ba064b823133": "cf02d84977050c71e87a38f1249e83c43a93949b",
"3e59b8a9a423d3ecd612a32fe4e2d748": "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f",
@@ -83308,6 +83500,7 @@
"122aee210324c72e8a11116e6ef9c0d0": "235f4d1d74364415910f73c10ae5482d90b4274f",
"d87d876c4391935c9d48ef352a3ff02d": "2f6429b68446536d8b03f35d02f1e98beb6460a0",
"3655aacebb43a963607d4cf821fc1301": "edc13192054a59be49c6d55f83b70e2510968e86",
"43d0d53c69c12cc0d28f197717a1bb06": "06c000a8c64326cfa326c20a8ecc01313b643c4d",
"b6f957b4d787b133cf48450a8d411e1b": "1e8ee2b4629b33759316f14bf0c2e15710716e74",
"a17e0e0150155400d8cced329563d9c8": "718c1a00d38e0810a1ad0ffde79f73447f846f01",
"368bdb1816a02640f873310faa9dedf7": "320801896408d7c1566ce26dd5e4b5eb0f0caa6c",
@@ -83412,6 +83605,7 @@
"baca1df271d7c11fe50087c0358f4eb5": "2b125c0545afa089b617f2558e686ea723bdc06e",
"e66fa1dc5820d254611fdcdba0662372": "f891e0ea651e2232af0c5c4cb46a0cae2ee8f356",
"278a9397d192149e84e820ac621a8edd": "4846f448160059a7da0215a5df12ca160f26dd69",
"14db9657bbaa6fbb9249752424dc0ce4": "9eed922bec1b9ff2b611dacf484d710b732bea5e",
"2efd74e3232ff260e371b99f84024f7f": "f4f315adcef9b8feb0364c21ab7f0eaf5457f3ed",
"51de1667b2a131377ed6f2aacbe14e7e": "2a170e18ca44a8bbaa8d36675cdae9e7203026d0",
"bdeb4c47da613946d422d97d98b21cda": "e4193c6ae44c3cea002707d2a88f1fbcced664de",
@@ -83596,6 +83790,7 @@
"71f50ef4f4e17c163c78908e16244f7d": "91cb6e3f9871454a0127ecb928ed7f1237742ea1",
"7ebb4fc5eab6f79a27d76ac9aad392b2": "3bbf6335b226932ee5a83d516acb0fafc62ac3ce",
"c53ca5908936d412331790f4426c6c33": "96880d1ca92a016ff054be5159bb06fe03cb4e14",
"706d60ab2dfdbfdd53be2069cb85a1fe": "5ff94f33a54b6018ce4c5836e6df16a5da03245b",
"8abc1b549a4a80954addc48ef02c4521": "339a48f4fcf63e10b5b867b8c93cfd40945faf6c",
"239665b1a3dade1b5a52c06338011044": "343883a7b555646da8cee54aadd2795b6e7dd070",
"476d68a94ccec3b9c8303bbd1daf2810": "7082bd57141fa0007b3adcd031f7ba23a20108a0",
@@ -83869,6 +84064,7 @@
"42f768a66fa8b27dadb8361dd2e2e012": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
"7551f1d578a32cccd97efd1adff15252": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
"412ecbf991edcb68edd0e76c2caa4a59": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
"a75bb208176c0aed1b6a04b2dcf4770c": "05209c994460a34a433fc1490a3eb690ee9bf3e7",
"d3fd9bc1fcaf48e5ed681c5ac31bc194": "698c638e1773244a6bf8a353c87d210047cce402",
"7adcaf64272248f7a7161cfc02fd5b3f": "382292295c00dff348d7e17c5ce4da12a1d87763",
"04714f43347cefb2a051a77116344b3f": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
@@ -83876,6 +84072,7 @@
"3df4d280ad76edc0662c2e89ad4f2f74": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
"01770fde15c34ff88bb49526d38cb1f6": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
"12ae505e36b850030f5188e960864775": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
"3f2178d717dd309ed7424d49ef92987f": "f5d72c3c5d12c8973982f926aaa425c653b7e232",
"813364d4863b1d7b7b8fd6a97a416bcf": "97f782e72d738f4d7b861363266bf46b438d9b50",
"f2087ed09f7fa8d8856cfafb20dd00dc": "e0f5e2eced447abf9948342b2facc40179f0f527",
"f7bcefb6daf923c8e5ea2eb69f619efe": "03368237e8fed4a8724f3b4a1596cf4b17c96d33",
@@ -83885,6 +84082,7 @@
"4f0e9736c6ff1671459b1f3c80f74f98": "273dbb7a93eb0ab83c2e13e9db51b897cc18f838",
"3b1ef759d8e3fb4071582efd33dd05f9": "5ac620c529e4965efb5560fe824854a44c983757",
"a2049600b290c9e73a74d124785516c4": "87526fb12fabbcc01292dd01dc698fdc762ab7dc",
"4dfadfb1158f84e2df2b85b13f303986": "c12e098c14ac0724869053df2b63277a3e413802",
"9cd678c94615c23a65618631be70b500": "9fa5f366c4ec43d7c23f03f054733894bf42912f",
"cec18738c1e68d08eeceb7b263fbc1f8": "251a46aa62690480315b3c0b990d23cf2487f0d5",
"3e88a4725c71e49c897e83ab9eb536f6": "6bbaa8f73027eaca2c6988ee3b9b3f3b0b29d18e",
@@ -92177,6 +92375,19 @@
"[BIOS] Atari Jaguar (World).j64": [
"f8991b0c385f4e5002fa2a7e2f5e61e8c5213356"
],
"boot.rom": [
"af643900fea84234e08b616a6d27f03f0a61db96",
"e5808cb1f96b39a0d52d67de79a626072f80ef12",
"b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"06c000a8c64326cfa326c20a8ecc01313b643c4d"
],
"boot1.rom": [
"73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"15c23c3b671a8828302603f30c81d464b24a7fb1"
],
"boot2.rom": [
"6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce"
],
"Atari_LYNX_boot.img": [
"e4ed47fae31693e016b081c6bda48da5b70d7ccb"
],
@@ -92331,6 +92542,9 @@
"gamate.zip": [
"e99667ea5cfe6a5eceb53faaa39cdda0cbf69c69"
],
"gamate_bios_umc.bin": [
"ea449dc607601f9a68d855ad6ab53800d2e99297"
],
"lynx48-1.rom": [
"7ded5184561168e159a30fa8e9d3fde5e52aa91a"
],
@@ -92352,6 +92566,9 @@
"casloopy.zip": [
"144ea9d0f20113632dde6d21c62a01c02cf7666d"
],
"hn613128pc64.bin": [
"94b5f54dd7bce321e377fdaaf592acd3870cf621"
],
"pv2000.zip": [
"c18f460301177b64bbfcbedc3010e734d0803d4c"
],
@@ -93456,6 +93673,9 @@
"zcsf.sf2": [
"286b2e1fb21cc79851da01666db6c0b0e88f25e3"
],
"interact.rom": [
"405806c97378abcf7c7b0d549430c78c7fc60ba2"
],
"freej2me-lr.jar": [
"eea6d4c69717af589ea36501e00fcb32ac91a5ac",
"fb231192894e2fd17a5799fbbdf86a4696951bce"
@@ -94818,9 +95038,15 @@
"upd7801g.s01": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
"Super CD 3.1.pce": [
"7b3fa6c265d56687d6bff09da5d34caa92e8d2ce"
],
"KANJI1.ROM": [
"82e11a177af6a5091dd67f50a2f4bafda84d6556"
],
"PC8801 MKII SR BIOS.rom": [
"7a6676e352c8d0eaf16e5863c1c98ac65d6f8686"
],
"font2.rom": [
"0a056b6d28b4b9e29a2d255bdaa25c24f176cf1e"
],
@@ -96247,6 +96473,9 @@
"philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211": [
"6c317a82e35d60ca5e7a74fc99f665055693169d"
],
"vmpega_split.rom": [
"1d9c040b4fe974f5eb600c6f80797f40b45efcf1"
],
"zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490": [
"8cd052b532fc052d6b0077261c12f800e8655bb1"
],
@@ -103699,6 +103928,9 @@
"MCD_jp_100p.bin": [
"4846f448160059a7da0215a5df12ca160f26dd69"
],
"US Sega CD 2 (Region Free) 930601 l_oliveira.bin": [
"9eed922bec1b9ff2b611dacf484d710b732bea5e"
],
"bios_CD_U.bin": [
"f4f315adcef9b8feb0364c21ab7f0eaf5457f3ed",
"5adb6c3af218c60868e6b723ec47e36bbdf5e6f0"
@@ -104195,6 +104427,9 @@
"psxonpsp660.bin": [
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
],
"sbi.zip": [
"5ff94f33a54b6018ce4c5836e6df16a5da03245b"
],
"scph100.bin": [
"339a48f4fcf63e10b5b867b8c93cfd40945faf6c"
],
@@ -104971,6 +105206,9 @@
"TI-994A.ctg": [
"4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8"
],
"boot0.rom": [
"05209c994460a34a433fc1490a3eb690ee9bf3e7"
],
"cf7+.ctg": [
"698c638e1773244a6bf8a353c87d210047cce402"
],
@@ -104986,6 +105224,9 @@
"mo5-v1.1.rom": [
"8d2865996a1a8d8a13fc9965c1bcf490f9621399"
],
"GameCom External BIOS (Kitrinx v0.03).bin": [
"f5d72c3c5d12c8973982f926aaa425c653b7e232"
],
"external.bin": [
"97f782e72d738f4d7b861363266bf46b438d9b50"
],
@@ -105008,6 +105249,9 @@
"bioscv.rom": [
"5ac620c529e4965efb5560fe824854a44c983757"
],
"laser2001.rom": [
"c12e098c14ac0724869053df2b63277a3e413802"
],
"laser310.zip": [
"9fa5f366c4ec43d7c23f03f054733894bf42912f"
],
@@ -105878,9 +106122,6 @@
"coleco.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"boot.rom": [
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
],
"amiga-os-130.rom": [
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
],
@@ -106132,7 +106373,8 @@
"f9608bb4ad1cfe3640d02844c7ad8e0bcd974917"
],
"kanji.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
"884515605ee243577ab20767ef8c1a7368e4e407"
],
"KANJI.rom": [
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
@@ -106277,6 +106519,10 @@
"64DD_IPL_JP.n64": [
"bf861922dcb78c316360e3e742f4f70ff63c9bc3"
],
"boot3.rom": [
"bf861922dcb78c316360e3e742f4f70ff63c9bc3",
"b7ccb38b881d7f8426cd6f1f8a7aabbd31784fc5"
],
"IPL.n64": [
"bf861922dcb78c316360e3e742f4f70ff63c9bc3"
],
@@ -106289,12 +106535,18 @@
"IPL_DEV.n64": [
"10c4173c2a7eb09c6579818f72ef18fa0b6d32de"
],
"boot4.rom": [
"10c4173c2a7eb09c6579818f72ef18fa0b6d32de"
],
"64DD_IPL_US.n64": [
"3c5b93ca231550c68693a14f03cea8d5dbd1be9e"
],
"IPL_USA.n64": [
"3c5b93ca231550c68693a14f03cea8d5dbd1be9e"
],
"boot5.rom": [
"3c5b93ca231550c68693a14f03cea8d5dbd1be9e"
],
"nds7.bin": [
"24f67bdea115a2c847c8813a262502ee1607b7df"
],
@@ -106340,12 +106592,18 @@
"SGB2.sfc": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"Super Game Boy 2.sfc": [
"e5b2922ca137051059e4269b236d07a22c07bc84"
],
"sgb1.program.rom": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"SGB1.sfc": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"Super Game Boy.sfc": [
"973e10840db683cf3faf61bd443090786b3a9f04"
],
"CACERT_NINTENDO_CA_G2.der": [
"501b5c42652b659e0d0ef607c4337e457080e5a2"
],
@@ -106899,6 +107157,12 @@
"sega-mega-cd:310a9081d2edf2d316ab38813136725e": [
"5a8c4b91d3034c1448aac4b5dc9a6484fce51636"
],
"cd_bios.rom": [
"5a8c4b91d3034c1448aac4b5dc9a6484fce51636",
"7063192ae9f6b696c5b81bc8f0a9fe6f0c400e58",
"d203cfe22c03ae479dd8ca33840cf8d9776eb3ff",
"7b3fa6c265d56687d6bff09da5d34caa92e8d2ce"
],
"bios_CD_E.bin": [
"f891e0ea651e2232af0c5c4cb46a0cae2ee8f356"
],
@@ -107795,6 +108059,18 @@
"sega-saturn:0306c0e408d6682dd2d86324bd4ac661": [
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc"
],
"bsx_bios.rom": [
"4891d739a8a8b67923681bad4fb67edab2e90e50"
],
"BS-X.bios": [
"4891d739a8a8b67923681bad4fb67edab2e90e50"
],
"neo-epo.sp1": [
"1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07"
],
"uni-bios.rom": [
"938a0bda7d9a357240718c2cec319878d36b8f72"
],
"svi328a.rom": [
"10349ce675f6d6d47f0976e39cb7188eba858d89"
],
@@ -108618,9 +108894,6 @@
"FdsBios.bin": [
"af5af53f66982e749643fdf8b2acbb7d4d3ed229"
],
"BS-X.bios": [
"4891d739a8a8b67923681bad4fb67edab2e90e50"
],
"upd7801g.bin": [
"6e89d1227581c76441a53d605f9e324185f1da33"
],
@@ -111699,6 +111972,9 @@
"9be408d3": "a3af676991391a6dd716c79022d4947206b78164",
"1a48e4b3": "d47baf4953fa3297f68886f392b373e204c20a8f",
"fb731aaa": "f8991b0c385f4e5002fa2a7e2f5e61e8c5213356",
"ae25bdf5": "af643900fea84234e08b616a6d27f03f0a61db96",
"b408a212": "73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"69be37bb": "6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce",
"0d973c9d": "e4ed47fae31693e016b081c6bda48da5b70d7ccb",
"8fb3a531": "bdca7bbb647066cf7555ce5d555ce09de4ebc41b",
"dbfa7ceb": "bfcc01ae105fa4cee47890c09ebad9e3775395a4",
@@ -111753,6 +112029,7 @@
"cb06d9c3": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"0b382c81": "8270c4a72624692842a3cb9f195058f2ffba48c5",
"23de1c25": "e99667ea5cfe6a5eceb53faaa39cdda0cbf69c69",
"07090415": "ea449dc607601f9a68d855ad6ab53800d2e99297",
"1cc2abd3": "80b3ed85d530456d9c879c9b4dd835d8e91637bb",
"9b6d3d35": "5300a352007976102d61d53f1e8c48063d2f3026",
"56feec44": "7ded5184561168e159a30fa8e9d3fde5e52aa91a",
@@ -111764,6 +112041,7 @@
"409fba4a": "6508c19fb19abb95eb4bc1923e44b49a6a9ae6b0",
"3fa34c8a": "df95ea702606e88b4c906a0233c8fec54c02ff01",
"a2e5cbfe": "144ea9d0f20113632dde6d21c62a01c02cf7666d",
"8f31f297": "94b5f54dd7bce321e377fdaaf592acd3870cf621",
"1b4fb70d": "c18f460301177b64bbfcbedc3010e734d0803d4c",
"9ee54a73": "dc4b77cd3ac45cf448e427eff5c0a7b138fd9d81",
"3aa93ef3": "45bedc4cbdeac66c7df59e9e599195c778d86a92",
@@ -112006,6 +112284,7 @@
"2cbe8995": "16375d42ea109b47edded7a16028de7fdb3013a1",
"2ed33801": "a9a7eef3c2f80b669e7421d2cf0a7a74f6088160",
"9a06cba0": "83e94c56f2fc4ab60de94021a1283cca09d65ee5",
"65ed17b9": "e5808cb1f96b39a0d52d67de79a626072f80ef12",
"c2f0462d": "ecd670080c4163c6c16d218ef35c8141c4a8a290",
"6645fc7f": "4aecb6c11ca508b1cc3788fc35c66b42155f1ff1",
"ea26acc4": "908dda7aecc7f4c2c97a19a4c4ab3a14cb245d44",
@@ -112151,6 +112430,7 @@
"26dc3fba": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
"4c0d2dbc": "33b50cec88bc1569431a7885c0cc2692fddb004b",
"35930faa": "286b2e1fb21cc79851da01666db6c0b0e88f25e3",
"1aa50444": "405806c97378abcf7c7b0d549430c78c7fc60ba2",
"5a79e0e1": "eea6d4c69717af589ea36501e00fcb32ac91a5ac",
"96a1babf": "fb231192894e2fd17a5799fbbdf86a4696951bce",
"5cca0f35": "78f1f41d55efc6b8d81e99c1d9d75248b3f83dc2",
@@ -112614,12 +112894,14 @@
"6d9a73ef": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"2b5b75fe": "d02611d99921986147c753df14c7349b31d71950",
"7ac06182": "6e89d1227581c76441a53d605f9e324185f1da33",
"9759a20d": "7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"a8ca11cc": "ac3c1e72eae9fc19e575cc011926c80b330e8ad1",
"986362e9": "5f039c3c4ecd8ed08bbf9a9084a8765a53e44dbe",
"398cf5dc": "6c1ab81f4450cd494f54349fa913c20fe6d098a1",
"300be300": "5a943ee2f4ff781af2e5ac2274f3350c3cb15248",
"84760465": "88ad52740cd0b8a0e927abbfb84601aa099bcfbc",
"6178bd43": "82e11a177af6a5091dd67f50a2f4bafda84d6556",
"6337409f": "7a6676e352c8d0eaf16e5863c1c98ac65d6f8686",
"1a86221f": "0a056b6d28b4b9e29a2d255bdaa25c24f176cf1e",
"58c0c76f": "aff9959b402ae0ead377b87566cf0e7b889e3d9e",
"fcb60c01": "22fb2cd4412df057762c23dd22729ebcb922fe0e",
@@ -112906,6 +113188,8 @@
"fc0180cf": "c7ba780c28a68dd84cad9455d091d4ca5cb07612",
"645a4df2": "40c1a36528eb45a4c6a20211501380258c392ce8",
"93bd8276": "875f12a1ede52c4353cab2c414b3d3506cafd333",
"0aa20b09": "b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"d6650859": "15c23c3b671a8828302603f30c81d464b24a7fb1",
"35d39b97": "1d7f6fa0c34e3d50be52c16a0816bebac309fe41",
"ff550460": "b31cca5881bb7fa071ccb5940b1bd7a6e4056e35",
"7aa253e0": "c7139e7f98c2109adb05703c8d3ba7b3bad3134d",
@@ -113174,6 +113458,7 @@
"c77cb795": "2366883a3259df021d0f1fc104b945978b8ef8b4",
"4eab5eda": "9492247203b71c12d88fad0a5437376941c7870a",
"17d723e7": "6c317a82e35d60ca5e7a74fc99f665055693169d",
"3685382e": "1d9c040b4fe974f5eb600c6f80797f40b45efcf1",
"2bc8e4e9": "8cd052b532fc052d6b0077261c12f800e8655bb1",
"5b19da07": "cf02d84977050c71e87a38f1249e83c43a93949b",
"7a3af407": "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f",
@@ -115813,6 +116098,7 @@
"c36a47c0": "235f4d1d74364415910f73c10ae5482d90b4274f",
"6232df8d": "2f6429b68446536d8b03f35d02f1e98beb6460a0",
"6eeb6f40": "edc13192054a59be49c6d55f83b70e2510968e86",
"3f008c8d": "06c000a8c64326cfa326c20a8ecc01313b643c4d",
"c5ca4e4f": "1e8ee2b4629b33759316f14bf0c2e15710716e74",
"a93f1c4b": "718c1a00d38e0810a1ad0ffde79f73447f846f01",
"52c47eb1": "320801896408d7c1566ce26dd5e4b5eb0f0caa6c",
@@ -115917,6 +116203,7 @@
"d48c44b5": "2b125c0545afa089b617f2558e686ea723bdc06e",
"529ac15a": "f891e0ea651e2232af0c5c4cb46a0cae2ee8f356",
"9d2da8f2": "4846f448160059a7da0215a5df12ca160f26dd69",
"7e86c5da": "9eed922bec1b9ff2b611dacf484d710b732bea5e",
"c6d10268": "f4f315adcef9b8feb0364c21ab7f0eaf5457f3ed",
"757b3a78": "2a170e18ca44a8bbaa8d36675cdae9e7203026d0",
"550f30bb": "e4193c6ae44c3cea002707d2a88f1fbcced664de",
@@ -116101,6 +116388,7 @@
"b6f00238": "91cb6e3f9871454a0127ecb928ed7f1237742ea1",
"0c1a95f9": "3bbf6335b226932ee5a83d516acb0fafc62ac3ce",
"5660f34f": "96880d1ca92a016ff054be5159bb06fe03cb4e14",
"9f02b335": "5ff94f33a54b6018ce4c5836e6df16a5da03245b",
"f2af798b": "339a48f4fcf63e10b5b867b8c93cfd40945faf6c",
"3b601fc8": "343883a7b555646da8cee54aadd2795b6e7dd070",
"7bc5477f": "7082bd57141fa0007b3adcd031f7ba23a20108a0",
@@ -116374,6 +116662,7 @@
"b3ef7ac7": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
"f1c12fb2": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
"a092207d": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
"eea0b4e7": "05209c994460a34a433fc1490a3eb690ee9bf3e7",
"81f3aec2": "698c638e1773244a6bf8a353c87d210047cce402",
"58b155f7": "382292295c00dff348d7e17c5ce4da12a1d87763",
"1a52b40c": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
@@ -116381,6 +116670,7 @@
"f93bd9f7": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
"71879a28": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
"237c60bf": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
"b7709d92": "f5d72c3c5d12c8973982f926aaa425c653b7e232",
"e235a589": "97f782e72d738f4d7b861363266bf46b438d9b50",
"9ed23a12": "e0f5e2eced447abf9948342b2facc40179f0f527",
"a0cec361": "03368237e8fed4a8724f3b4a1596cf4b17c96d33",
@@ -116390,6 +116680,7 @@
"0d9fbdbb": "273dbb7a93eb0ab83c2e13e9db51b897cc18f838",
"c3c590c6": "5ac620c529e4965efb5560fe824854a44c983757",
"f387895d": "87526fb12fabbcc01292dd01dc698fdc762ab7dc",
"4dc35c39": "c12e098c14ac0724869053df2b63277a3e413802",
"e004421a": "9fa5f366c4ec43d7c23f03f054733894bf42912f",
"c5cf80b8": "251a46aa62690480315b3c0b990d23cf2487f0d5",
"a5156df5": "6bbaa8f73027eaca2c6988ee3b9b3f3b0b29d18e",
@@ -119329,6 +119620,9 @@
"368a5b43b9ab18c7108341e7da5cb3c65dbe5ca1d8334eb8654bf3d73b6f6308": "a3af676991391a6dd716c79022d4947206b78164",
"0b73d867e6a6e34c2ff193dfcb57e110c103d29df199b227b4d9466435304d03": "d47baf4953fa3297f68886f392b373e204c20a8f",
"d3f8eb881e2560cdce00738c716b9ad679128cb827493c267594f26c1c0ac744": "f8991b0c385f4e5002fa2a7e2f5e61e8c5213356",
"f0bd29599b3dfca7f5620c011256c1dc45c9d82c428a318f965c2ba3ded2e9f9": "af643900fea84234e08b616a6d27f03f0a61db96",
"7ebadb56f8082c86d6f74e2c38e02b218db420d3049f8f9c988f6490dc7f9fc0": "73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"bf02591cfe4ab4f082ea23c447da5c53afbfddace6d700b785ba04b7ac5c64e0": "6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce",
"c26a36c1990bcf841155e5a6fea4d2ee1a4d53b3cc772e70f257a962ad43b383": "e4ed47fae31693e016b081c6bda48da5b70d7ccb",
"8fc5201d46abd1a98639b59ba1579198617a4c28839fd3611ac82cbb092fa77e": "bdca7bbb647066cf7555ce5d555ce09de4ebc41b",
"2d3a2f32ebc5675219784ee1aa0123cbe79c1a2ab8f3b5396143a3bc5763a460": "bfcc01ae105fa4cee47890c09ebad9e3775395a4",
@@ -119383,6 +119677,7 @@
"f5a5c044d84ce1681f94e9ef74287cb989784497be5bd5108df17908dfa55db2": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"82e96addf5ab1ce09a84b6eedaa904e4ca432756851f7e0cc0649006c183834d": "8270c4a72624692842a3cb9f195058f2ffba48c5",
"64f1008552f5d8224b6b49927496094541f0a9e6ff7975e28a88c175c53b73ef": "e99667ea5cfe6a5eceb53faaa39cdda0cbf69c69",
"26f206fa4eedbe040f619e3af78efa1d38588535b1d746f6a462da639ced4b1e": "ea449dc607601f9a68d855ad6ab53800d2e99297",
"384b25b215e9e1acd226dc48e56dc166a4a6ae5a643fdc5279b19b84a27f1b1d": "80b3ed85d530456d9c879c9b4dd835d8e91637bb",
"ed5fd13cd5f0515b9f0ffe73f7494133e5ee22aec5bd89d04c977ce7a0e40bf5": "5300a352007976102d61d53f1e8c48063d2f3026",
"4644d0fb5d86f5ac0a5616986e5452d6477173a8778d8550bc11d09eae89443d": "7ded5184561168e159a30fa8e9d3fde5e52aa91a",
@@ -119394,6 +119689,7 @@
"fa09e131fa0f674ab2ec6016e3d346d52c17ec48beff53bac758a1c14ac535f1": "6508c19fb19abb95eb4bc1923e44b49a6a9ae6b0",
"c5bbcf87cf4a1aa55f327b90565d7aba46a15a36a5cb2b0d7356ca2c3ff2f4bd": "df95ea702606e88b4c906a0233c8fec54c02ff01",
"96e6aea3028ff6b800d72dc01f46e667572529dba771c5178371679be2b5ff62": "144ea9d0f20113632dde6d21c62a01c02cf7666d",
"2587d206eb63917848ea30e14232448ed4f873c6796a22e2bf6543b01f46308e": "94b5f54dd7bce321e377fdaaf592acd3870cf621",
"6825be490ec8a351bec4d3ecc55f835855c71eb7e3bf580e91cda59a8926a5b1": "c18f460301177b64bbfcbedc3010e734d0803d4c",
"2e8e545a34c49e7cb1f360cdefa05f9c444c5f3c61732fa6633b8e2d22b1fd33": "dc4b77cd3ac45cf448e427eff5c0a7b138fd9d81",
"990bf1956f10207d8781b619eb74f89b00d921c8d45c95c334c16c8cceca09ad": "45bedc4cbdeac66c7df59e9e599195c778d86a92",
@@ -119636,6 +119932,7 @@
"c1ff621d7910105d4ee45c31e9fd8fd0d79a545c78b66c69a562ee1ffbae8d72": "16375d42ea109b47edded7a16028de7fdb3013a1",
"8b9132570eaaf11983787f98d13fb7f23817d2375e92d8fe0d8508ca5db165cf": "a9a7eef3c2f80b669e7421d2cf0a7a74f6088160",
"48a0cdb1062d863d469fe5a64357f56ba21f77ee43e941345fbabbe5ef6fadd8": "83e94c56f2fc4ab60de94021a1283cca09d65ee5",
"25c7ff2d735d1ae895af9262f31e083c5c1bd99a8f31b5b378dfbc0f166ec97f": "e5808cb1f96b39a0d52d67de79a626072f80ef12",
"d517d15204d28dd50dfefe51351e62e58e1cfd1452dd23071b2cc1bed485acf1": "ecd670080c4163c6c16d218ef35c8141c4a8a290",
"ce5c5229b913e89a2a9e25cad6987702d8bc816903e971f21f557a771a6d60b8": "4aecb6c11ca508b1cc3788fc35c66b42155f1ff1",
"ba62d616ed132e4fafea6f65ea9547c747744af4e96f4e16d379e3276b6beeba": "908dda7aecc7f4c2c97a19a4c4ab3a14cb245d44",
@@ -119781,6 +120078,7 @@
"7cfec3ba4f36447f828fb558aeaceb5ca1589ceec5037ced9ebebdad23a91cfa": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
"fa234fb14cb77bba14cc4bd40253010346702e96d82b5481ec0a0d8758958df7": "33b50cec88bc1569431a7885c0cc2692fddb004b",
"d6b60c4196b9bb51f4bf779bad1c27af47389514de87fdb98d8131c941ba6341": "286b2e1fb21cc79851da01666db6c0b0e88f25e3",
"e0888ba82382aabb7557aa4a3445e613bd7f33bae1af5ece211e2cb6bc9ffa82": "405806c97378abcf7c7b0d549430c78c7fc60ba2",
"358992e0b71b5b6a370c5f07b6fbd050fda3cb1fde7256bf818f1bbe20245dd4": "eea6d4c69717af589ea36501e00fcb32ac91a5ac",
"a90e9d39067a6423b34b032c530504b723158035fcdc7044ee0e7d293d2a8495": "fb231192894e2fd17a5799fbbdf86a4696951bce",
"75091873c418c97c39dd6794bd515faf51accfdb2a96a82cf05785c193352fb6": "78f1f41d55efc6b8d81e99c1d9d75248b3f83dc2",
@@ -120244,12 +120542,14 @@
"e11527b3b96ce112a037138988ca72fd117a6b0779c2480d9e03eaebece3d9ce": "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
"cadac2725711b3c442bcf237b02f5a5210c96f17625c35fa58f009e0ed39e4db": "d02611d99921986147c753df14c7349b31d71950",
"248ec2f28294316558475ba0e416da19cfff0a5dd8ad3525a484a9be67b8a290": "6e89d1227581c76441a53d605f9e324185f1da33",
"b057e09822c3767120ba56f2ce02f089b5824d4b489ea3cd7ad9405b3a339a52": "7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"bb602899ffa165edfac22053b48292ad0764ad13a8ef3c7511477b5c72e5eedf": "ac3c1e72eae9fc19e575cc011926c80b330e8ad1",
"12a018dfc8840efe920451b2fed457ede53772f6f38ea227f3fb86f83c91f5d2": "5f039c3c4ecd8ed08bbf9a9084a8765a53e44dbe",
"ae4fb9126cad0a800bb5aaf2aeb5e687c0575e6fde410a7d913ac32872d2ad10": "6c1ab81f4450cd494f54349fa913c20fe6d098a1",
"1a074a63d95c97709032adb597fccf047f6397261fd977ba1fb24334a77e158e": "5a943ee2f4ff781af2e5ac2274f3350c3cb15248",
"12689b8c462b9a6e56da31630c02d6d8a3d5a4183bfac2cbe47c5a4563fa4724": "88ad52740cd0b8a0e927abbfb84601aa099bcfbc",
"7608040cffb1951e5cc567abb63f75b5746777a1ba96196c1b75606b793bb4bb": "82e11a177af6a5091dd67f50a2f4bafda84d6556",
"0dc3fcf58c90c1f119a710babd54b57babf81ba8573c070b33f0cc21948b3086": "7a6676e352c8d0eaf16e5863c1c98ac65d6f8686",
"d35d380c8a716c086cdee9f821c879a01196eeec4e52c94a93f79631248c11ba": "0a056b6d28b4b9e29a2d255bdaa25c24f176cf1e",
"4c5da1098f71dd9d8f7e1c4852b749766389571dbcddf7526a85f02f35440791": "aff9959b402ae0ead377b87566cf0e7b889e3d9e",
"083c383103948dc4f05ac2a4e1bd7f12c02924c7fcd81d98e0ae13f2b309ab2f": "22fb2cd4412df057762c23dd22729ebcb922fe0e",
@@ -120536,6 +120836,8 @@
"e4080be9568dd021b8af1233f8c6e7b00be9fb1b0f146e3a4300d8ce93ed5d46": "c7ba780c28a68dd84cad9455d091d4ca5cb07612",
"584400c9b80c33c39aed22767f52c483d3896fe48b56dee6c8ac7e39a54533b2": "40c1a36528eb45a4c6a20211501380258c392ce8",
"eaa7107775199ccde7d885665aa5d9d765d12bf13c0bc080f306e5e0b1b628e0": "875f12a1ede52c4353cab2c414b3d3506cafd333",
"fa7b09795ef1e54461e59f6f2d902368133e3f1cd980e34383e6a780d74beffd": "b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"79c81fffae934b6df251da6c3a394f52c6a0eaa07115a3b9677743e3c1335f4a": "15c23c3b671a8828302603f30c81d464b24a7fb1",
"c4c45690b345435b2cba52ecabe275f05e49b389b39fe68ad03afbb551288d3d": "1d7f6fa0c34e3d50be52c16a0816bebac309fe41",
"9725badc4407a780bda630fc61ca51f5e2705e969cabde8045eb1f0720071784": "b31cca5881bb7fa071ccb5940b1bd7a6e4056e35",
"a463253e36e2d0d1e33fde43389adeb6168253228b91c1b3e78c209a07e04627": "c7139e7f98c2109adb05703c8d3ba7b3bad3134d",
@@ -120804,6 +121106,7 @@
"6191645da67a0aa7f77b77a022294ddcd5a24a495cf0367fd3e740b4773407d8": "2366883a3259df021d0f1fc104b945978b8ef8b4",
"2302aaeab1f6b74523f43a4d00983b4fea9ff1692a9b27ccf17e6ac7e6e66b32": "9492247203b71c12d88fad0a5437376941c7870a",
"800a572ceab5a4798f2797d52d3c271ac0e6c5ef73e556fccfb43fcbf1e32b85": "6c317a82e35d60ca5e7a74fc99f665055693169d",
"e8a8cabb23650b53c2cb0763c3a1409f6c0d580a52fbe8ef834d44d4021db165": "1d9c040b4fe974f5eb600c6f80797f40b45efcf1",
"853a051bed78fe73fddc12832c356d872cf8e540f0390f13f9a5dc2921ca1fae": "8cd052b532fc052d6b0077261c12f800e8655bb1",
"b7a80948040e00fcb671e2f1f9191f6df606a7d0993d42174f1e8600a40c21f1": "cf02d84977050c71e87a38f1249e83c43a93949b",
"b467fb3e9bb9e38d195c55116aecd6bc4c8023cdfe4b4d50fd9699139f221b9b": "fdf8d78d6a0df4a56b5b963d72eabd39fcec163f",
@@ -123443,6 +123746,7 @@
"c11c33589b2057008a7e4c7c700fcd989a8c0f95f869e7e7539fdd00414d99a7": "235f4d1d74364415910f73c10ae5482d90b4274f",
"0293555b21c4fac516d25199df7809b26beeae150e1d4504a050db32264a6ad7": "2f6429b68446536d8b03f35d02f1e98beb6460a0",
"8fb845a2f71514cec20728e2f0fecfade69444f8d50898b92c2259f1ba63e10d": "edc13192054a59be49c6d55f83b70e2510968e86",
"06826527c61918ef35b67d9d49e9d689a985d7583d01d112e9975c6ee5547881": "06c000a8c64326cfa326c20a8ecc01313b643c4d",
"60c728ba3d2d846823e8c7aff9f34c46d6af1a947415f4eee81c54050fc9622b": "1e8ee2b4629b33759316f14bf0c2e15710716e74",
"dc4e7723aa4183456d135db72cf5ee0e6ce31bbbda892586588f7a20d9270904": "718c1a00d38e0810a1ad0ffde79f73447f846f01",
"c1fbb81a0cb56266a619f36c57ad4017ee99218d62d032b4106401cf1c99ec27": "320801896408d7c1566ce26dd5e4b5eb0f0caa6c",
@@ -123547,6 +123851,7 @@
"559a2914e18b91b772629a3088ebecfd34128ed9880fc31c286add7f76a6a8f6": "2b125c0545afa089b617f2558e686ea723bdc06e",
"16735df92fcc1d0fc6a1eced244867e95281c5006340926082b74e363e073dc4": "f891e0ea651e2232af0c5c4cb46a0cae2ee8f356",
"923eb9da740f98ab1572085e3d351e2c0982df0906b0b99efb68a9997c94cf8f": "4846f448160059a7da0215a5df12ca160f26dd69",
"59403e7f8be1d4e98d673cca17cfec072770a56415165ad7ac88dcd3f7273317": "9eed922bec1b9ff2b611dacf484d710b732bea5e",
"807384678ef259494d943eddb6954dfc7069693d0dde0c424e2028488d88e81a": "f4f315adcef9b8feb0364c21ab7f0eaf5457f3ed",
"26ec7848cdbf4fcdae522c16f707ccc9bb7ae9f492db912f09f94d5bac4dd65d": "2a170e18ca44a8bbaa8d36675cdae9e7203026d0",
"e8dbee3edcd1b2751c72c1d9ae0dac1aacd9203804bfc1a35ea098d8778bcb1c": "e4193c6ae44c3cea002707d2a88f1fbcced664de",
@@ -123731,6 +124036,7 @@
"a42c16a9be754f8f665c56611bd3a83eabb231c818b8de64744d0ea1a1d0e74d": "91cb6e3f9871454a0127ecb928ed7f1237742ea1",
"7f7dd27cbddba7067fca250ef02b81dc5fe50083e8c20b83017343df6a34d411": "3bbf6335b226932ee5a83d516acb0fafc62ac3ce",
"cbe758e1c8ece593c8e14ce1e8b3436428a01c608032a02613b3a4b442b4d712": "96880d1ca92a016ff054be5159bb06fe03cb4e14",
"32db7bb64131623fa912ef30a85f7d70cee2abbca56c21d360d2025e12b8aca9": "5ff94f33a54b6018ce4c5836e6df16a5da03245b",
"b29b4b5fcddef369bd6640acacda0865e0366fcf7ea54e40b2f1a8178004f89a": "339a48f4fcf63e10b5b867b8c93cfd40945faf6c",
"cfc1fc38eb442f6f80781452119e931bcae28100c1c97e7e6c5f2725bbb0f8bb": "343883a7b555646da8cee54aadd2795b6e7dd070",
"f597f4a8811c1207256f871a8b551be5fce7144051bb0baa9f9c21e94f79307f": "7082bd57141fa0007b3adcd031f7ba23a20108a0",
@@ -124004,6 +124310,7 @@
"172db86fc7f03808084fcf846ae1e53143d2d26ec6a72f437b9726c6b4295359": "8212fbd8899a2808c7ace4559245861e5bee2c9a",
"3e63f6a54a8001ddd75ecde70572c7030776d79817f46ee0dfcf5274dd03047f": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5",
"5a1787ece8a37db887d60953471084e2ea44a6dbe529d20882f4824d97536fa4": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8",
"53ad354861a62b9144e02e878845c7e1a5dd75342b715047db64b780954f7c88": "05209c994460a34a433fc1490a3eb690ee9bf3e7",
"8998c8525a9014a7983a8ed3b03fa8210a08c205dacccd654f139f78f20623da": "698c638e1773244a6bf8a353c87d210047cce402",
"1a7481f3e7e2d464772b540f9b9e4d529dc61df372f181adf7432f0df9876c16": "382292295c00dff348d7e17c5ce4da12a1d87763",
"c0a5c744fffa9265fd3ee49020d0697717eaf5aa2fefacd0387ad997b1165b5a": "693f5b4fe1e5eb6429fd6614fb7bb14350939814",
@@ -124011,6 +124318,7 @@
"d7bb2d9b65a766dcc03376c6afd9a605df5fe302cf61584f801653b7be87279a": "e05575b630bea7ff98b9ca1f083d745abb3110b6",
"a8bf18e99904f9c14969a3be1da84da2438ee3d206928ead28eaff758e4449dd": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6",
"c15d3d6732399a879bb6de5ae2fcb9aadfd64da86d95652ced9ad96a2ae8e692": "8d2865996a1a8d8a13fc9965c1bcf490f9621399",
"64cbaa1a5e8bae8fae90a7affd6743df5d23edfc4e1e23002ca77c8b7ec1bb64": "f5d72c3c5d12c8973982f926aaa425c653b7e232",
"4cade226b44f09ebf5897b137d5564e5579b4d11b23dcabacd308fb0d18e7077": "97f782e72d738f4d7b861363266bf46b438d9b50",
"e646d6e7ca7345e5058836db8a4f4db08dc5c9911bee34d061372a2883c39536": "e0f5e2eced447abf9948342b2facc40179f0f527",
"aa9ad1e0592fce6c0c1ee8dd2460b3c4fca67969615a7da80dbe29bc5796b57b": "03368237e8fed4a8724f3b4a1596cf4b17c96d33",
@@ -124020,6 +124328,7 @@
"c156550085a40e69e82e83ce4fe31c92401b1cc0e09b35ca3a9b1687b0d852d6": "273dbb7a93eb0ab83c2e13e9db51b897cc18f838",
"5e3c95e10217007c5159a2ba3a60672888f5f8c87ba375a81ca9013e268b7bc8": "5ac620c529e4965efb5560fe824854a44c983757",
"fc25f2f9e1c8620d8382cdec9334829bbaaa3d2f56045233867730d7975f9fe4": "87526fb12fabbcc01292dd01dc698fdc762ab7dc",
"48a7fda99c1b9c0d90b70de0b4a9431a5a781f94d1874ee6d91830a638c9e5c3": "c12e098c14ac0724869053df2b63277a3e413802",
"f876ab42542424dea749570a2b832255bc46f96ef0373832fbd8257c55358d00": "9fa5f366c4ec43d7c23f03f054733894bf42912f",
"e4a2fb9d2ac1b116ae65e59cf5cc4e7a5dd067d477493331b3f3888a1ef0a6f0": "251a46aa62690480315b3c0b990d23cf2487f0d5",
"468ff4b7247b7ba6b7ade48a353e17368b4bd1841bf0384c0b2f94a2ab44c799": "6bbaa8f73027eaca2c6988ee3b9b3f3b0b29d18e",
@@ -138355,6 +138664,12 @@
"49d8493008fa715ca0c94d99817a5439d6f2c796",
"8a22710e09ce75f39625894366cafe503ed1942d",
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
"884515605ee243577ab20767ef8c1a7368e4e407",
"b7ccb38b881d7f8426cd6f1f8a7aabbd31784fc5",
"7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"4891d739a8a8b67923681bad4fb67edab2e90e50",
"1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07",
"938a0bda7d9a357240718c2cec319878d36b8f72",
"10349ce675f6d6d47f0976e39cb7188eba858d89",
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06",
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6",
@@ -138469,7 +138784,6 @@
"34fa37599f2f9eb607390ef2458a3c22d87f09a9",
"273a9933b68a290c5aedcd6d69faa7b1d22c0344",
"af5af53f66982e749643fdf8b2acbb7d4d3ed229",
"4891d739a8a8b67923681bad4fb67edab2e90e50",
"6e89d1227581c76441a53d605f9e324185f1da33",
"f2dab125673e653995a83bf6b793e3390ec7f65a",
"628543ee8b47a56df2b2175cfb763c0051517b90",
+8
View File
@@ -48,6 +48,7 @@ DEFAULT_DESTS = {
"retrodeck": Path.home() / "retrodeck",
"emudeck": Path.home() / "Emulation" / "bios",
"rocknix": Path("/storage/roms/bios"),
"misterfpga": Path("/media/fat/games"),
}
@@ -202,6 +203,13 @@ def _detect_embedded() -> list[tuple[str, Path]]:
found.append(("rocknix", Path("/storage/roms/bios")))
return found
# MiSTer keeps the SD card at /media/fat with the main binary at its root
# (Main_MiSTer file_io.cpp:1150-1156), and cores read from games/
# (file_io.h:168)
if Path("/media/fat/MiSTer").exists():
found.append(("misterfpga", Path("/media/fat/games")))
return found
if Path("/etc/knulli-release").exists():
found.append(("batocera", Path("/userdata/bios")))
return found
+477
View File
@@ -0,0 +1,477 @@
{
"manifest_version": 1,
"source": "full",
"platform": "misterfpga",
"display_name": "MiSTer FPGA",
"version": "1.0",
"generated": "2026-08-07T10:50:13Z",
"base_destination": "games",
"detect": [
{
"os": "linux",
"method": "path_exists",
"path": "/media/fat/MiSTer",
"bios_path": "/media/fat/games"
}
],
"standalone_copies": [],
"total_files": 65,
"total_size": 24588745,
"files": [
{
"dest": "3DO/boot.rom",
"sha1": "34bf189111295f74d7b7dfc1f304d98b8d36325a",
"size": 1048576,
"repo_path": "bios/3DO Company/3DO/panafz1.bin",
"cores": null
},
{
"dest": "3DO/kanji.rom",
"sha1": "884515605ee243577ab20767ef8c1a7368e4e407",
"size": 1048576,
"repo_path": "bios/3DO Company/3DO/panafz1j-kanji.bin",
"cores": null
},
{
"dest": "Apple-IIgs/boot.rom",
"sha1": "bc32bc0e8902946663998f56aea52be597d9e361",
"size": 262144,
"repo_path": "bios/Apple/Apple II/apple2gs.rom",
"cores": null
},
{
"dest": "Apple-IIgs/boot1.rom",
"sha1": "e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37",
"size": 131072,
"repo_path": "bios/Apple/Apple IIGS/ROM",
"cores": null
},
{
"dest": "Jaguar/boot.rom",
"sha1": "af643900fea84234e08b616a6d27f03f0a61db96",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot.rom",
"cores": null
},
{
"dest": "Jaguar/boot1.rom",
"sha1": "73f7356daec9edf7ce2dc35432b1ed948cacbe84",
"size": 262144,
"repo_path": "bios/Atari/Jaguar/boot1.rom",
"cores": null
},
{
"dest": "Jaguar/boot2.rom",
"sha1": "6bb291d62fc69e2f9b26c6ead86d3e0022eab3ce",
"size": 131072,
"repo_path": "bios/Atari/Jaguar/boot2.rom",
"cores": null
},
{
"dest": "AtariLynx/boot.rom",
"sha1": "e4ed47fae31693e016b081c6bda48da5b70d7ccb",
"size": 512,
"repo_path": "bios/Atari/Lynx/Atari_LYNX_boot.img",
"cores": null
},
{
"dest": "Astrocade/boot.rom",
"sha1": "b902c941997c9d150a560435bf517c6a28137ecc",
"size": 8192,
"repo_path": "bios/Bally/Astrocade/astro.bin",
"cores": null
},
{
"dest": "Casio_PV-2000/boot0.rom",
"sha1": "94b5f54dd7bce321e377fdaaf592acd3870cf621",
"size": 16384,
"repo_path": "bios/Casio/PV-2000/hn613128pc64.bin",
"cores": null
},
{
"dest": "CreatiVision/boot.rom",
"sha1": "c12e098c14ac0724869053df2b63277a3e413802",
"size": 16384,
"repo_path": "bios/VTech/CreatiVision/laser2001.rom",
"cores": null
},
{
"dest": "SCV/boot.rom",
"sha1": "e5808cb1f96b39a0d52d67de79a626072f80ef12",
"size": 6144,
"repo_path": "bios/Epoch/Super Cassette Vision/boot.rom",
"cores": null
},
{
"dest": "Gamate/boot.rom",
"sha1": "ea449dc607601f9a68d855ad6ab53800d2e99297",
"size": 4096,
"repo_path": "bios/Bit Corporation/Gamate/gamate_bios_umc.bin",
"cores": null
},
{
"dest": "Interact/boot.rom",
"sha1": "405806c97378abcf7c7b0d549430c78c7fc60ba2",
"size": 2048,
"repo_path": "bios/Interact/Home Computer/interact.rom",
"cores": null
},
{
"dest": "Intellivision/boot0.rom",
"sha1": "5a65b922b562cb1f57dab51b73151283f0e20c7a",
"size": 8192,
"repo_path": "bios/Mattel/Intellivision/INTV_EROM.bin",
"cores": null
},
{
"dest": "Intellivision/boot1.rom",
"sha1": "f9608bb4ad1cfe3640d02844c7ad8e0bcd974917",
"size": 2048,
"repo_path": "bios/Mattel/Intellivision/INTV_GROM.bin",
"cores": null
},
{
"dest": "Intellivision/boot2.rom",
"sha1": "618563e512ff5665183664f52270fa9606c9d289",
"size": 2048,
"repo_path": "bios/Mattel/Intellivision/IVOICE.BIN",
"cores": null
},
{
"dest": "Intellivision/boot3.rom",
"sha1": "b7ccb38b881d7f8426cd6f1f8a7aabbd31784fc5",
"size": 24576,
"repo_path": "bios/Mattel/Intellivision/ECS.bin",
"cores": null
},
{
"dest": "MSX1/boot.rom",
"sha1": "829c00c3114f25b3dae5157c0a238b52a3ac37db",
"size": 32768,
"repo_path": "bios/Microsoft/MSX/share/systemroms/vg8020_basic-bios1.rom",
"cores": null
},
{
"dest": "PC8801/boot.rom",
"sha1": "7a6676e352c8d0eaf16e5863c1c98ac65d6f8686",
"size": 393216,
"repo_path": "bios/NEC/PC-88/PC8801 MKII SR BIOS.rom",
"cores": null
},
{
"dest": "TGFX16-CD/cd_bios.rom",
"sha1": "7b3fa6c265d56687d6bff09da5d34caa92e8d2ce",
"size": 262144,
"repo_path": "bios/NEC/PC Engine CD/Super CD 3.1.pce",
"cores": null
},
{
"dest": "N64/boot.rom",
"sha1": "b7a0070cbe4b9bcaa08ec0b76b8c4955b2ae535a",
"size": 1984,
"repo_path": "bios/Nintendo/Nintendo 64/boot.rom",
"cores": null
},
{
"dest": "N64/boot1.rom",
"sha1": "15c23c3b671a8828302603f30c81d464b24a7fb1",
"size": 1984,
"repo_path": "bios/Nintendo/Nintendo 64/boot1.rom",
"cores": null
},
{
"dest": "N64/boot3.rom",
"sha1": "bf861922dcb78c316360e3e742f4f70ff63c9bc3",
"size": 4194304,
"repo_path": "bios/Nintendo/64DD/64DD_IPL_v12_JPN.bin",
"cores": null
},
{
"dest": "N64/boot4.rom",
"sha1": "10c4173c2a7eb09c6579818f72ef18fa0b6d32de",
"size": 4194304,
"repo_path": "bios/Nintendo/64DD/64DD_IPL_DEV.bin",
"cores": null
},
{
"dest": "N64/boot5.rom",
"sha1": "3c5b93ca231550c68693a14f03cea8d5dbd1be9e",
"size": 4194304,
"repo_path": "bios/Nintendo/64DD/64DD_IPL_USA.bin",
"cores": null
},
{
"dest": "GAMEBOY/boot1.rom",
"sha1": "1293d68bf9643bc4f36954c1e80e38f39864528d",
"size": 2304,
"repo_path": "bios/Nintendo/Game Boy Color/GBC_cgb.bin",
"cores": null
},
{
"dest": "GBA/boot.rom",
"sha1": "300c20df6731a33952ded8c436f7f186d25d3492",
"size": 16384,
"repo_path": "bios/Nintendo/Game Boy Advance/GBA_bios.rom",
"cores": null
},
{
"dest": "NES/boot0.rom",
"sha1": "57fe1bdee955bb48d357e463ccbf129496930b62",
"size": 8192,
"repo_path": "bios/Arcade/FBNeo/fdsbios.nes",
"cores": null
},
{
"dest": "PokemonMini/boot.rom",
"sha1": "daad4113713ed776fbd47727762bca81ba74915f",
"size": 4096,
"repo_path": "bios/Nintendo/Pokemon Mini/bios.min",
"cores": null
},
{
"dest": "SGB/Super Game Boy 2.sfc",
"sha1": "e5b2922ca137051059e4269b236d07a22c07bc84",
"size": 524288,
"repo_path": "bios/Nintendo/Super Game Boy/SGB2.sfc/program.rom",
"cores": null
},
{
"dest": "SGB/Super Game Boy.sfc",
"sha1": "973e10840db683cf3faf61bd443090786b3a9f04",
"size": 262144,
"repo_path": "bios/Nintendo/Super Game Boy/SGB1.sfc/program.rom",
"cores": null
},
{
"dest": "SNES/bsx_bios.rom",
"sha1": "4891d739a8a8b67923681bad4fb67edab2e90e50",
"size": 1048576,
"repo_path": "bios/Nintendo/SNES/BS-X.bin",
"cores": null
},
{
"dest": "CD-i/boot0.rom",
"sha1": "53360a1f21ddac952e95306ced64186a3fc0b93e",
"size": 524288,
"repo_path": "bios/Philips/CD-i/cdi220b.rom",
"cores": null
},
{
"dest": "CD-i/boot1.rom",
"sha1": "56d0acd7caad51c7de703247cd6d842b36173079",
"size": 8192,
"repo_path": "bios/Philips/CD-i/zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206",
"cores": null
},
{
"dest": "CD-i/boot2.rom",
"sha1": "1d9c040b4fe974f5eb600c6f80797f40b45efcf1",
"size": 131072,
"repo_path": "bios/Philips/CD-i/vmpega_split.rom",
"cores": null
},
{
"dest": "PocketChallengeV2/boot.rom",
"sha1": "4015bcacea76bb0b5bbdb13c5358f7e1abb986a1",
"size": 4096,
"repo_path": "bios/Bandai/WonderSwan/bootrom.ws",
"cores": null
},
{
"dest": "PocketChallengeV2/boot1.rom",
"sha1": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"size": 8192,
"repo_path": "bios/Bandai/WonderSwan/bootrom.wsc",
"cores": null
},
{
"dest": "MegaCD/Europe/cd_bios.rom",
"sha1": "7063192ae9f6b696c5b81bc8f0a9fe6f0c400e58",
"size": 131072,
"repo_path": "bios/Sega/Mega CD/eu_mcd2_9303.bin",
"cores": null
},
{
"dest": "MegaCD/Japan/cd_bios.rom",
"sha1": "d203cfe22c03ae479dd8ca33840cf8d9776eb3ff",
"size": 131072,
"repo_path": "bios/Sega/Mega CD/jp_mcd2_921222.bin",
"cores": null
},
{
"dest": "MegaCD/USA/cd_bios.rom",
"sha1": "5a8c4b91d3034c1448aac4b5dc9a6484fce51636",
"size": 131072,
"repo_path": "bios/Sega/Mega CD/SegaCDBIOS9303.bin",
"cores": null
},
{
"dest": "MegaCD/boot.rom",
"sha1": "9eed922bec1b9ff2b611dacf484d710b732bea5e",
"size": 131072,
"repo_path": "bios/Sega/Mega CD/US Sega CD 2 (Region Free) 930601 l_oliveira.bin",
"cores": null
},
{
"dest": "Saturn/boot.rom",
"sha1": "8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
"size": 524288,
"repo_path": "bios/Sega/Saturn/.variants/hisaturn_v103.bin",
"cores": null
},
{
"dest": "NEOGEO/000-lo.lo",
"sha1": "5992277debadeb64d1c1c64b0a92d9293eaf7e4a",
"size": 131072,
"repo_path": "bios/SNK/Neo Geo CD/000-lo.lo",
"cores": null
},
{
"dest": "NEOGEO/neo-epo.sp1",
"sha1": "1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07",
"size": 131072,
"repo_path": "bios/SNK/Neo Geo/neo-epo.bin",
"cores": null
},
{
"dest": "NEOGEO/sfix.sfix",
"sha1": "fd4a618cdcdbf849374f0a50dd8efe9dbab706c3",
"size": 131072,
"repo_path": "bios/SNK/Neo Geo/sfix.sfix",
"cores": null
},
{
"dest": "NEOGEO/sp-s2.sp1",
"sha1": "4f5ed7105b7128794654ce82b51723e16e389543",
"size": 131072,
"repo_path": "bios/SNK/Neo Geo/sp-s2.sp1",
"cores": null
},
{
"dest": "NEOGEO/uni-bios.rom",
"sha1": "938a0bda7d9a357240718c2cec319878d36b8f72",
"size": 131072,
"repo_path": "bios/SNK/Neo Geo/uni-bios_4_0.rom",
"cores": null
},
{
"dest": "NeoGeo-CD/neocd.bin",
"sha1": "7bb26d1e5d1e930515219cb18bcde5b7b23e2eda",
"size": 524288,
"repo_path": "bios/SNK/Neo Geo CD/neocd.bin",
"cores": null
},
{
"dest": "NeoGeo-CD/top-sp1.bin",
"sha1": "235f4d1d74364415910f73c10ae5482d90b4274f",
"size": 524288,
"repo_path": "bios/SNK/Neo Geo CD/top-sp1.bin",
"cores": null
},
{
"dest": "NeoGeo-CD/uni-bioscd.rom",
"sha1": "5142f205912869b673a71480c5828b1eaed782a8",
"size": 524288,
"repo_path": "bios/SNK/Neo Geo/uni-bioscd33.rom",
"cores": null
},
{
"dest": "NeoGeoPocket/boot.rom",
"sha1": "06c000a8c64326cfa326c20a8ecc01313b643c4d",
"size": 65536,
"repo_path": "bios/SNK/Neo Geo Pocket/boot.rom",
"cores": null
},
{
"dest": "PSX/boot.rom",
"sha1": "14df4f6c1e367ce097c11deae21566b4fe5647a9",
"size": 524288,
"repo_path": "bios/Sony/PlayStation/scph7001.bin",
"cores": null
},
{
"dest": "PSX/boot1.rom",
"sha1": "77b10118d21ac7ffa9b35f9c4fd814da240eb3e9",
"size": 524288,
"repo_path": "bios/Sony/PlayStation/scph7000.bin",
"cores": null
},
{
"dest": "PSX/boot2.rom",
"sha1": "8d5de56a79954f29e9006929ba3fed9b6a418c1d",
"size": 524288,
"repo_path": "bios/Sony/PlayStation/scph7002.bin",
"cores": null
},
{
"dest": "PSX/sbi.zip",
"sha1": "5ff94f33a54b6018ce4c5836e6df16a5da03245b",
"size": 218953,
"repo_path": "bios/Sony/PlayStation/sbi.zip",
"cores": null
},
{
"dest": "COCO3/boot0.rom",
"sha1": "e0d82953fb6fd03768604933df1ce8bc51fc427d",
"size": 32768,
"repo_path": "bios/Tandy/CoCo/coco3.rom",
"cores": null
},
{
"dest": "COCO3/boot1.rom",
"sha1": "10bdc5aa2d7d7f205f67b47b19003a4bd89defd1",
"size": 8192,
"repo_path": "bios/Tandy/CoCo/disk11.rom",
"cores": null
},
{
"dest": "COCO3/boot2.rom",
"sha1": "6a20fee9c70b36a6435ac8378f31d5b626017df0",
"size": 8192,
"repo_path": "bios/Tandy/CoCo/orch90.rom",
"cores": null
},
{
"dest": "TI-99_4A/boot0.rom",
"sha1": "05209c994460a34a433fc1490a3eb690ee9bf3e7",
"size": 196608,
"repo_path": "bios/Texas Instruments/TI-99/boot0.rom",
"cores": null
},
{
"dest": "GameCom/boot.rom",
"sha1": "f5d72c3c5d12c8973982f926aaa425c653b7e232",
"size": 262144,
"repo_path": "bios/Tiger/Game.com/GameCom External BIOS (Kitrinx v0.03).bin",
"cores": null
},
{
"dest": "WonderSwan/boot.rom",
"sha1": "4015bcacea76bb0b5bbdb13c5358f7e1abb986a1",
"size": 4096,
"repo_path": "bios/Bandai/WonderSwan/bootrom.ws",
"cores": null
},
{
"dest": "WonderSwan/boot1.rom",
"sha1": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"size": 8192,
"repo_path": "bios/Bandai/WonderSwan/bootrom.wsc",
"cores": null
},
{
"dest": "WonderSwanColor/boot.rom",
"sha1": "4015bcacea76bb0b5bbdb13c5358f7e1abb986a1",
"size": 4096,
"repo_path": "bios/Bandai/WonderSwan/bootrom.ws",
"cores": null
},
{
"dest": "WonderSwanColor/boot1.rom",
"sha1": "c5ad0b8af45d762662a69f50b64161b9c8919efb",
"size": 8192,
"repo_path": "bios/Bandai/WonderSwan/bootrom.wsc",
"cores": null
}
]
}
+2
View File
@@ -61,6 +61,7 @@ nav:
- BizHawk: platforms/bizhawk.md
- EmuDeck: platforms/emudeck.md
- Lakka: platforms/lakka.md
- MiSTer FPGA: platforms/misterfpga.md
- ROCKNIX: platforms/rocknix.md
- Recalbox: platforms/recalbox.md
- RetroArch: platforms/retroarch.md
@@ -105,6 +106,7 @@ nav:
- IBM: systems/ibm.md
- Id Software: systems/id-software.md
- Infocom: systems/infocom.md
- Interact: systems/interact.md
- Java: systems/java.md
- Jupiter: systems/jupiter.md
- Lambda: systems/lambda.md
+7 -26
View File
@@ -1708,42 +1708,23 @@ platforms:
config: misterfpga.yml
status: active
logo: https://avatars.githubusercontent.com/u/47264183
scraper: null
scraper: misterfpga
source_url: https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/db/bios_db.json.zip
source_format: json_zip
source_format: mister_downloader_db
hash_type: md5
verification_mode: md5
base_destination: games
case_insensitive_fs: false
schedule: weekly
cores: all_mister
cores: []
target_scraper: null
target_source: https://github.com/MiSTer-devel/Distribution_MiSTer
target_source: null
contributed_by:
- username: Takiiiiiii
contribution: platform support
pr: TBD
pr: 50
install:
detect:
# Running on MiSTer FPGA hardware itself (Linux-based, SD card mounted at /media/fat)
# Main_MiSTer mounts the SD card at /media/fat (file_io.cpp:1150-1156)
# and reads game data from GAMES_DIR (file_io.h:168)
- os: linux
method: path_exists
path: /media/fat/MiSTer
bios_path: /media/fat/games
# Host PC with SD card mounted at a common location — scan for the MiSTer binary signature
- os: linux
method: path_glob
patterns:
- /media/*/MiSTer_Data/MiSTer
- /media/*/*/MiSTer
bios_path_template: '{dirname}/games'
- os: macos
method: path_glob
patterns:
- /Volumes/*/MiSTer
bios_path_template: '{dirname}/games'
- os: windows
method: path_glob
patterns:
- '?:\MiSTer'
bios_path_template: '{dirname}\games'
+409 -234
View File
@@ -1,327 +1,502 @@
platform: MiSTer FPGA
version: latest
homepage: 'https://misterfpga.org'
source: 'https://github.com/ajgowans/BiosDB_MiSTer'
version: '2026-07-27'
homepage: https://misterfpga.org
source: https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/db/bios_db.json.zip
base_destination: games
hash_type: md5
verification_mode: md5
cores: []
systems:
3do:
files:
- name: panafz1.bin
- name: boot.rom
destination: 3DO/boot.rom
required: true
md5: f47264dd47fe30f73ab3c010015c155b
sha1: 34bf189111295f74d7b7dfc1f304d98b8d36325a
crc32: c8c8ff89
size: 1048576
- name: panafz1j-kanji.bin
- name: kanji.rom
destination: 3DO/kanji.rom
required: true
md5: c23fb5d5e6bb1c240d02cf968972be37
sha1: 884515605ee243577ab20767ef8c1a7368e4e407
crc32: 45f478b1
size: 1048576
native_id: MiSTer - 3DO Interactive Multiplayer
core: 3DO_MiSTer
manufacturer: Panasonic
docs: 'https://github.com/MiSTer-devel/3DO_MiSTer'
native_id: 3DO
name: 3DO Interactive Multiplayer
docs: https://github.com/MiSTer-devel/3DO_MiSTer
apple-iigs:
files:
- name: boot.rom
destination: Apple-IIgs/boot.rom
required: true
md5: ba89edf2729a28a17cd9e0f7a0ac9a39
size: 262144
- name: boot1.rom
destination: Apple-IIgs/boot1.rom
required: true
md5: 20a0334c447cb069a040ae5be1d938df
size: 131072
native_id: Apple-IIgs
name: Apple IIGS
docs: https://github.com/MiSTer-devel/Apple-IIgs_MiSTer
atari-jaguar:
files:
- name: boot.rom
destination: Jaguar/boot.rom
required: true
md5: 6e844759720226e58d55ecaf33608a13
size: 131072
- name: boot1.rom
destination: Jaguar/boot1.rom
required: true
md5: 18f0741bdb8bb9b6bb99393cb90426a2
size: 262144
- name: boot2.rom
destination: Jaguar/boot2.rom
required: true
md5: 4af00f1c26898cf04585e1693d25faba
size: 131072
native_id: Jaguar
name: Atari Jaguar
docs: https://github.com/MiSTer-devel/Jaguar_MiSTer
atari-lynx:
files:
- name: Atari_LYNX_boot.img
- name: boot.rom
destination: AtariLynx/boot.rom
required: true
md5: fcd403db69f54290b51035d82f835e7b
sha1: e4ed47fae31693e016b081c6bda48da5b70d7ccb
crc32: 0d973c9d
size: 512
native_id: MiSTer - Atari Lynx
core: AtariLynx_MiSTer
manufacturer: Atari
docs: 'https://github.com/MiSTer-devel/AtariLynx_MiSTer'
coco3:
native_id: AtariLynx
name: Atari Lynx
docs: https://github.com/MiSTer-devel/AtariLynx_MiSTer
bally-astrocade:
files:
- name: coco3.rom
destination: COCO3/boot0.rom
- name: boot.rom
destination: Astrocade/boot.rom
required: true
md5: 7233c6c429f3ce1c7392f28a933e0b6f
sha1: e0d82953fb6fd03768604933df1ce8bc51fc427d
crc32: b4c88d6c
size: 32768
- name: disk11.rom
destination: COCO3/boot1.rom
required: true
md5: 8cab28f4b7311b8df63c07bb3b59bfd5
sha1: 10bdc5aa2d7d7f205f67b47b19003a4bd89defd1
crc32: 0b9c5415
md5: 7d25a26e5c4841b364cfe6b1735eaf03
size: 8192
- name: orch90.rom
destination: COCO3/boot2.rom
required: true
md5: 171fb7a5d3b808565295b45c773abaaf
sha1: 6a20fee9c70b36a6435ac8378f31d5b626017df0
crc32: 15fb39af
size: 8192
native_id: MiSTer - Tandy TRS-80 Color Computer 3
core: CoCo3_MiSTer
manufacturer: Tandy
docs: 'https://github.com/MiSTer-devel/CoCo3_MiSTer'
game-boy:
native_id: Astrocade
name: Bally Astrocade
docs: https://github.com/MiSTer-devel/Astrocade_MiSTer
casio-pv2000:
files:
- name: GBC_cgb.bin
destination: GAMEBOY/boot1.rom
- name: boot0.rom
destination: Casio_PV-2000/boot0.rom
required: true
md5: dbfce9db9deaa2567f6a84fde55f9680
sha1: 1293d68bf9643bc4f36954c1e80e38f39864528d
crc32: 41884e46
size: 2304
native_id: MiSTer - Game Boy / Game Boy Color
core: Gameboy_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/Gameboy_MiSTer'
game-boy-advance:
files:
- name: GBA_bios.rom
destination: GBA/boot.rom
required: true
md5: a860e8c0b6d573d191e4ec7db1b1e4f6
sha1: 300c20df6731a33952ded8c436f7f186d25d3492
crc32: '81977335'
md5: 558540c5c6f776d88a897f2f3b8fec8f
size: 16384
native_id: MiSTer - Game Boy Advance
core: GBA_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/GBA_MiSTer'
intellivision:
native_id: Casio_PV-2000
name: Casio PV-2000
docs: https://github.com/MiSTer-devel/Casio_PV-2000_MiSTer
creativision:
files:
- name: INTV_EROM.bin
- name: boot.rom
destination: CreatiVision/boot.rom
required: true
md5: 4dfadfb1158f84e2df2b85b13f303986
size: 16384
native_id: CreatiVision
name: VTech CreatiVision
docs: https://github.com/MiSTer-devel/CreatiVision_MiSTer
epoch-scv:
files:
- name: boot.rom
destination: SCV/boot.rom
required: true
md5: b596975be2e0360232bbeb1e492ab873
size: 6144
native_id: SCV
name: Epoch Super Cassette Vision
docs: https://github.com/MiSTer-devel/SuperCassetteVision_MiSTer
gamate:
files:
- name: boot.rom
destination: Gamate/boot.rom
required: true
md5: ef67993a94503c4b7798b5901c7dda52
size: 4096
native_id: Gamate
name: Bit Corporation Gamate
docs: https://github.com/MiSTer-devel/Gamate_MiSTer
interact:
files:
- name: boot.rom
destination: Interact/boot.rom
required: true
md5: aa9fb0e9697a009dfb9d876351dd8f48
size: 2048
native_id: Interact
name: Interact Home Computer
docs: https://github.com/MiSTer-devel/Interact_MiSTer
mattel-intellivision:
files:
- name: boot0.rom
destination: Intellivision/boot0.rom
required: true
md5: 62e761035cb657903761800f4437b8af
sha1: 5a65b922b562cb1f57dab51b73151283f0e20c7a
crc32: cbce86f7
size: 8192
- name: INTV_GROM.bin
- name: boot1.rom
destination: Intellivision/boot1.rom
required: true
md5: 0cd5946c6473e42e8e4c2137785e427f
sha1: f9608bb4ad1cfe3640d02844c7ad8e0bcd974917
crc32: 683a4158
size: 2048
- name: IVOICE.BIN
- name: boot2.rom
destination: Intellivision/boot2.rom
required: true
md5: d5530f74681ec6e0f282dab42e6b1c5f
sha1: 618563e512ff5665183664f52270fa9606c9d289
crc32: 0de7579d
size: 2048
- name: ECS.bin
- name: boot3.rom
destination: Intellivision/boot3.rom
required: true
md5: 2e72a9a2b897d330a35c8b07a6146c52
sha1: b7ccb38b881d7f8426cd6f1f8a7aabbd31784fc5
crc32: ea790a06
size: 24576
native_id: MiSTer - Intellivision
core: Intellivision_MiSTer
manufacturer: Mattel
docs: 'https://github.com/MiSTer-devel/Intellivision_MiSTer'
msx:
native_id: Intellivision
name: Mattel Intellivision
docs: https://github.com/MiSTer-devel/Intv_MiSTer
microsoft-msx:
files:
- name: vg8020_basic-bios1.rom
- name: boot.rom
destination: MSX1/boot.rom
required: true
md5: a0452dbf5ace7d2e49d0a8029efed09a
sha1: 829c00c3114f25b3dae5157c0a238b52a3ac37db
crc32: 8205795e
size: 32768
native_id: MiSTer - MSX1
core: MSX_MiSTer
manufacturer: Microsoft
docs: 'https://github.com/MiSTer-devel/MSX_MiSTer'
neo-geo:
native_id: MSX1
name: MSX1
docs: https://github.com/MiSTer-devel/MSX1_MiSTer
nec-pc-88:
files:
- name: boot.rom
destination: PC8801/boot.rom
required: true
md5: f1ce4d5f83717093982e5f75516b8f3c
size: 393216
native_id: PC8801
name: NEC PC-8801
docs: https://github.com/MiSTer-devel/PC88_MiSTer
nec-pc-engine-cd:
files:
- name: cd_bios.rom
destination: TGFX16-CD/cd_bios.rom
required: true
md5: 98d43a097a165b03df170fd5c2ad2c2f
size: 262144
native_id: TGFX16-CD
name: PC Engine CD / TurboGrafx-CD
docs: https://github.com/MiSTer-devel/TurboGrafx16_MiSTer
nintendo-64:
files:
- name: boot.rom
destination: N64/boot.rom
required: true
md5: 5c124e7948ada85da603a522782940d0
size: 1984
- name: boot1.rom
destination: N64/boot1.rom
required: true
md5: d4232dc935cad0650ac2664d52281f3a
size: 1984
- name: boot3.rom
destination: N64/boot3.rom
required: true
md5: 8d3d9f294b6e174bc7b1d2fd1c727530
size: 4194304
- name: boot4.rom
destination: N64/boot4.rom
required: true
md5: aad37b1492886b892f1821f37fd3ae34
size: 4194304
- name: boot5.rom
destination: N64/boot5.rom
required: true
md5: 37c36e4286d36892a9fc70eafe4104be
size: 4194304
native_id: N64
name: Nintendo 64
docs: https://github.com/MiSTer-devel/N64_MiSTer
nintendo-gb:
files:
- name: boot1.rom
destination: GAMEBOY/boot1.rom
required: true
md5: dbfce9db9deaa2567f6a84fde55f9680
size: 2304
native_id: GAMEBOY
name: Game Boy / Game Boy Color
docs: https://github.com/MiSTer-devel/Gameboy_MiSTer
nintendo-gba:
files:
- name: boot.rom
destination: GBA/boot.rom
required: true
md5: a860e8c0b6d573d191e4ec7db1b1e4f6
size: 16384
native_id: GBA
name: Game Boy Advance
docs: https://github.com/MiSTer-devel/GBA_MiSTer
nintendo-nes:
files:
- name: boot0.rom
destination: NES/boot0.rom
required: true
md5: ca30b50f880eb660a320674ed365ef7a
size: 8192
native_id: NES
name: NES / Famicom Disk System
docs: https://github.com/MiSTer-devel/NES_MiSTer
nintendo-pokemon-mini:
files:
- name: boot.rom
destination: PokemonMini/boot.rom
required: true
md5: 1e4fb124a3a886865acb574f388c803d
size: 4096
native_id: PokemonMini
name: Pokemon Mini
docs: https://github.com/MiSTer-devel/PokemonMini_MiSTer
nintendo-sgb:
files:
- name: Super Game Boy 2.sfc
destination: SGB/Super Game Boy 2.sfc
required: true
md5: 8ecd73eb4edf7ed7e81aef1be80031d5
size: 524288
- name: Super Game Boy.sfc
destination: SGB/Super Game Boy.sfc
required: true
md5: b15ddb15721c657d82c5bab6db982ee9
size: 262144
native_id: SGB
name: Super Game Boy
docs: https://github.com/MiSTer-devel/SGB_MiSTer
nintendo-snes:
files:
- name: bsx_bios.rom
destination: SNES/bsx_bios.rom
required: true
md5: 96cf17bf589fcbfa6f8de2dc84f19fa2
size: 1048576
native_id: SNES
name: Super NES / Super Famicom
docs: https://github.com/MiSTer-devel/SNES_MiSTer
philips-cdi:
files:
- name: boot0.rom
destination: CD-i/boot0.rom
required: true
md5: ac0d468be366779c9df633be98da250a
size: 524288
- name: boot1.rom
destination: CD-i/boot1.rom
required: true
md5: 3d20cf7550f1b723158b42a1fd5bac62
size: 8192
- name: boot2.rom
destination: CD-i/boot2.rom
required: true
md5: 9694c466f9b65c1990a81b7a6280546b
size: 131072
native_id: CD-i
name: Philips CD-i
docs: https://github.com/MiSTer-devel/CDi_MiSTer
pocket-challenge-v2:
files:
- name: boot.rom
destination: PocketChallengeV2/boot.rom
required: true
md5: 54b915694731cc22e07d3fb8a00ee2db
size: 4096
- name: boot1.rom
destination: PocketChallengeV2/boot1.rom
required: true
md5: 880893bd5a7d53fff826bd76a83d566e
size: 8192
native_id: PocketChallengeV2
name: Benesse Pocket Challenge V2
docs: https://github.com/MiSTer-devel/WonderSwan_MiSTer
sega-mega-cd:
files:
- name: cd_bios.rom
destination: MegaCD/Europe/cd_bios.rom
required: true
md5: 9b562ebf2d095bf1dabadbc1881f519a
size: 131072
- name: cd_bios.rom
destination: MegaCD/Japan/cd_bios.rom
required: true
md5: 683a8a9e273662561172468dfa2858eb
size: 131072
- name: cd_bios.rom
destination: MegaCD/USA/cd_bios.rom
required: true
md5: 310a9081d2edf2d316ab38813136725e
size: 131072
- name: boot.rom
destination: MegaCD/boot.rom
required: true
md5: 14db9657bbaa6fbb9249752424dc0ce4
size: 131072
native_id: MegaCD
name: Sega CD / Mega-CD
docs: https://github.com/MiSTer-devel/MegaCD_MiSTer
sega-saturn:
files:
- name: boot.rom
destination: Saturn/boot.rom
required: true
md5: 0306c0e408d6682dd2d86324bd4ac661
size: 524288
native_id: Saturn
name: Sega Saturn
docs: https://github.com/MiSTer-devel/Saturn_MiSTer
snk-neogeo:
files:
- name: 000-lo.lo
destination: NEOGEO/000-lo.lo
required: true
md5: fc7599f3f871578fe9a0453662d1c966
sha1: 5992277debadeb64d1c1c64b0a92d9293eaf7e4a
crc32: 5a86cff2
size: 131072
native_id: MiSTer - Neo Geo (AES/MVS)
core: NeoGeo_MiSTer
manufacturer: SNK
docs: 'https://github.com/MiSTer-devel/NeoGeo_MiSTer'
neo-geo-cd:
- name: neo-epo.sp1
destination: NEOGEO/neo-epo.sp1
required: true
md5: b11751ad42879c461d64ad2b7b2b0129
size: 131072
- name: sfix.sfix
destination: NEOGEO/sfix.sfix
required: true
md5: aa2b5d0eae4158ffc0d7d63481c7830b
size: 131072
- name: sp-s2.sp1
destination: NEOGEO/sp-s2.sp1
required: true
md5: 2968f59f44bf328639aa79391aeeeab4
size: 131072
- name: uni-bios.rom
destination: NEOGEO/uni-bios.rom
required: true
md5: 4f0aeda8d2d145f596826b62d563c4ef
size: 131072
native_id: NEOGEO
name: Neo Geo AES / MVS
docs: https://github.com/MiSTer-devel/NeoGeo_MiSTer
snk-neogeo-cd:
files:
- name: neocd.bin
destination: NeoGeo-CD/neocd.bin
required: true
md5: f39572af7584cb5b3f70ae8cc848aba2
sha1: 7bb26d1e5d1e930515219cb18bcde5b7b23e2eda
crc32: df9de490
size: 524288
- name: top-sp1.bin
destination: NeoGeo-CD/top-sp1.bin
required: true
md5: 122aee210324c72e8a11116e6ef9c0d0
sha1: 235f4d1d74364415910f73c10ae5482d90b4274f
crc32: c36a47c0
size: 524288
- name: uni-bioscd.rom
destination: NeoGeo-CD/uni-bioscd.rom
required: true
md5: 08ca8b2dba6662e8024f9e789711c6fc
sha1: 5142f205912869b673a71480c5828b1eaed782a8
crc32: ff3abc59
size: 524288
native_id: MiSTer - Neo Geo CD
core: NeoGeo_MiSTer
manufacturer: SNK
docs: 'https://github.com/MiSTer-devel/NeoGeo_MiSTer'
nes-fds:
native_id: NeoGeo-CD
name: Neo Geo CD
docs: https://github.com/MiSTer-devel/NeoGeo_MiSTer
snk-neogeo-pocket:
files:
- name: FDS_disksys-nintendo.rom
destination: NES/boot0.rom
- name: boot.rom
destination: NeoGeoPocket/boot.rom
required: true
md5: ca30b50f880eb660a320674ed365ef7a
sha1: 57fe1bdee955bb48d357e463ccbf129496930b62
crc32: 5e607dcf
size: 8192
native_id: MiSTer - NES / Famicom Disk System
core: NES_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/NES_MiSTer'
philips-cdi:
md5: 43d0d53c69c12cc0d28f197717a1bb06
size: 65536
native_id: NeoGeoPocket
name: Neo Geo Pocket
sony-playstation:
files:
- name: cdi200.rom
destination: CD-i/boot0.rom
required: true
md5: 2969341396aa61e0143dc2351aaa6ef6
sha1: d961de803c89b3d1902d656ceb9ce7c02dccb40a
crc32: 40c4e6b9
size: 524288
- name: zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206
destination: CD-i/boot1.rom
required: true
md5: 3d20cf7550f1b723158b42a1fd5bac62
sha1: 56d0acd7caad51c7de703247cd6d842b36173079
crc32: 688cda63
size: 8192
native_id: MiSTer - Philips CD-i
core: CDi_MiSTer
manufacturer: Philips
docs: 'https://github.com/MiSTer-devel/CDi_MiSTer'
playstation:
files:
- name: scph7001.bin
- name: boot.rom
destination: PSX/boot.rom
required: true
md5: 1e68c231d0896b7eadcad1d7d8e76129
sha1: 14df4f6c1e367ce097c11deae21566b4fe5647a9
crc32: 502224b6
size: 524288
- name: scph7000.bin
- name: boot1.rom
destination: PSX/boot1.rom
required: true
md5: 8e4c14f567745eff2f0408c8129f72a6
sha1: 77b10118d21ac7ffa9b35f9c4fd814da240eb3e9
crc32: ec541cd0
size: 524288
- name: scph7002.bin
- name: boot2.rom
destination: PSX/boot2.rom
required: true
md5: b9d9a0286c33dc6b7237bb13cd46fdee
sha1: 8d5de56a79954f29e9006929ba3fed9b6a418c1d
crc32: 318178bf
size: 524288
native_id: MiSTer - Sony PlayStation
core: PSX_MiSTer
manufacturer: Sony
docs: 'https://github.com/MiSTer-devel/PSX_MiSTer'
pokemon-mini:
- name: sbi.zip
destination: PSX/sbi.zip
required: true
md5: 706d60ab2dfdbfdd53be2069cb85a1fe
size: 218953
native_id: PSX
name: Sony PlayStation
docs: https://github.com/MiSTer-devel/PSX_MiSTer
tandy-coco:
files:
- name: bios.min
destination: PokemonMini/boot.rom
- name: boot0.rom
destination: COCO3/boot0.rom
required: true
md5: 1e4fb124a3a886865acb574f388c803d
sha1: daad4113713ed776fbd47727762bca81ba74915f
crc32: aed3c14d
size: 4096
native_id: MiSTer - Pokémon Mini
core: PokemonMini_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/PokemonMini_MiSTer'
sega-cd:
md5: 7233c6c429f3ce1c7392f28a933e0b6f
size: 32768
- name: boot1.rom
destination: COCO3/boot1.rom
required: true
md5: 8cab28f4b7311b8df63c07bb3b59bfd5
size: 8192
- name: boot2.rom
destination: COCO3/boot2.rom
required: true
md5: 171fb7a5d3b808565295b45c773abaaf
size: 8192
native_id: COCO3
name: Tandy Color Computer 3
docs: https://github.com/MiSTer-devel/CoCo3_MiSTer
ti99:
files:
- name: eu_mcd2_9306.bin
destination: MegaCD/Europe/cd_bios.rom
- name: boot0.rom
destination: TI-99_4A/boot0.rom
required: true
md5: 9b562ebf2d095bf1dabadbc1881f519a
sha1: 7063192ae9f6b696c5b81bc8f0a9fe6f0c400e58
crc32: 0507b590
size: 131072
- name: jp_mcd2_921222.bin
destination: MegaCD/Japan/cd_bios.rom
required: true
md5: 683a8a9e273662561172468dfa2858eb
sha1: d203cfe22c03ae479dd8ca33840cf8d9776eb3ff
crc32: dd6cc972
size: 131072
- name: us_scd2_9306.bin
destination: MegaCD/USA/cd_bios.rom
required: true
md5: 310a9081d2edf2d316ab38813136725e
sha1: 5a8c4b91d3034c1448aac4b5dc9a6484fce51636
crc32: 8af65f58
size: 131072
native_id: MiSTer - Sega CD / Mega-CD
core: MegaCD_MiSTer
manufacturer: Sega
docs: 'https://github.com/MiSTer-devel/MegaCD_MiSTer'
sega-saturn:
md5: a75bb208176c0aed1b6a04b2dcf4770c
size: 196608
native_id: TI-99_4A
name: Texas Instruments TI-99/4A
docs: https://github.com/MiSTer-devel/TI-99_4A_MiSTer
tiger-game-com:
files:
- name: hisaturn_v103.bin
destination: Saturn/boot.rom
- name: boot.rom
destination: GameCom/boot.rom
required: true
md5: 0306c0e408d6682dd2d86324bd4ac661
sha1: 8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc
crc32: 6abfefea
size: 524288
native_id: MiSTer - Sega Saturn
core: Saturn_MiSTer
manufacturer: Sega
docs: 'https://github.com/MiSTer-devel/Saturn_MiSTer'
snes:
files:
- name: BS-X.bin
destination: SNES/bsx_bios.rom
required: true
md5: 96cf17bf589fcbfa6f8de2dc84f19fa2
sha1: 4891d739a8a8b67923681bad4fb67edab2e90e50
crc32: e5a91ad4
size: 1048576
native_id: MiSTer - Super NES / Super Famicom
core: SNES_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/SNES_MiSTer'
super-game-boy:
files:
- name: program.rom
destination: SGB/Super Game Boy 2.sfc
required: true
md5: 8ecd73eb4edf7ed7e81aef1be80031d5
sha1: e5b2922ca137051059e4269b236d07a22c07bc84
crc32: cb176e45
size: 524288
- name: program.rom
destination: SGB/Super Game Boy.sfc
required: true
md5: b15ddb15721c657d82c5bab6db982ee9
sha1: 973e10840db683cf3faf61bd443090786b3a9f04
crc32: 8a4a174f
md5: 3f2178d717dd309ed7424d49ef92987f
size: 262144
native_id: MiSTer - Super Game Boy
core: SGB_MiSTer
manufacturer: Nintendo
docs: 'https://github.com/MiSTer-devel/SGB_MiSTer'
native_id: GameCom
name: Tiger Game.com
wonderswan:
files:
- name: boot.rom
destination: WonderSwan/boot.rom
required: true
md5: 54b915694731cc22e07d3fb8a00ee2db
size: 4096
- name: boot1.rom
destination: WonderSwan/boot1.rom
required: true
md5: 880893bd5a7d53fff826bd76a83d566e
size: 8192
native_id: WonderSwan
name: Bandai WonderSwan
docs: https://github.com/MiSTer-devel/WonderSwan_MiSTer
wonderswan-color:
files:
- name: boot.rom
destination: WonderSwanColor/boot.rom
required: true
md5: 54b915694731cc22e07d3fb8a00ee2db
size: 4096
- name: boot1.rom
destination: WonderSwanColor/boot1.rom
required: true
md5: 880893bd5a7d53fff826bd76a83d566e
size: 8192
native_id: WonderSwanColor
name: Bandai WonderSwan Color
docs: https://github.com/MiSTer-devel/WonderSwan_MiSTer
+1
View File
@@ -186,6 +186,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
"EmuDeck": "`Emulation/bios/`",
"RomM": "`bios/{platform_slug}/`",
"ROCKNIX": "`/storage/roms/bios/`",
"MiSTer FPGA": "`/media/fat/games/`",
}
for name, cov in sorted(coverages.items(), key=lambda x: x[1]["platform"]):
+241
View File
@@ -0,0 +1,241 @@
#!/usr/bin/env python3
"""Scraper for MiSTer FPGA BIOS requirements.
Source: ajgowans/BiosDB_MiSTer, branch db, file bios_db.json.zip
Format: MiSTer Downloader database (JSON inside a ZIP)
Hash: MD5
MiSTer verification logic (MiSTer-devel/Downloader_MiSTer):
- file_system.py:705-712, hash_file() is a plain MD5 of the file bytes
- jobs/process_db_index_worker.py:216, an installed file is up to date when
its MD5 equals the description hash
- jobs/process_db_index_worker.py:242, integrity checks compare MD5 only;
the declared size is logged on failure but never gates the result
- jobs/fetch_file_worker.py:61-65, a freshly downloaded file is rejected on
MD5 mismatch
The database carries no required/optional flag: every entry is installed
unless the user sets a tag filter, which defaults to empty (config.py:161).
Entries reached through the archives section (UniBIOS) are extracted from a
remote ZIP and carry the hash of the extracted member, not of the archive.
"""
from __future__ import annotations
import io
import json
import urllib.error
import urllib.request
import zipfile
from datetime import datetime, timezone
try:
from .base_scraper import BaseScraper, BiosRequirement, _read_limited
except ImportError:
from base_scraper import BaseScraper, BiosRequirement, _read_limited
PLATFORM_NAME = "misterfpga"
SOURCE_URL = (
"https://raw.githubusercontent.com/ajgowans/BiosDB_MiSTer/db/bios_db.json.zip"
)
DB_MEMBER = "bios_db.json"
# Files live under games/ on the SD card; base_destination carries that prefix
DB_ROOT = "games/"
# MiSTer core folder -> (retrobios system ID, display name, core repository)
SYSTEM_MAP = {
"3DO": ("3do", "3DO Interactive Multiplayer", "3DO_MiSTer"),
"Apple-IIgs": ("apple-iigs", "Apple IIGS", "Apple-IIgs_MiSTer"),
"Astrocade": ("bally-astrocade", "Bally Astrocade", "Astrocade_MiSTer"),
"AtariLynx": ("atari-lynx", "Atari Lynx", "AtariLynx_MiSTer"),
"CD-i": ("philips-cdi", "Philips CD-i", "CDi_MiSTer"),
"COCO3": ("tandy-coco", "Tandy Color Computer 3", "CoCo3_MiSTer"),
"Casio_PV-2000": ("casio-pv2000", "Casio PV-2000", "Casio_PV-2000_MiSTer"),
"CreatiVision": ("creativision", "VTech CreatiVision", "CreatiVision_MiSTer"),
"GAMEBOY": ("nintendo-gb", "Game Boy / Game Boy Color", "Gameboy_MiSTer"),
"GBA": ("nintendo-gba", "Game Boy Advance", "GBA_MiSTer"),
"Gamate": ("gamate", "Bit Corporation Gamate", "Gamate_MiSTer"),
"GameCom": ("tiger-game-com", "Tiger Game.com", ""),
"Intellivision": ("mattel-intellivision", "Mattel Intellivision", "Intv_MiSTer"),
"Interact": ("interact", "Interact Home Computer", "Interact_MiSTer"),
"Jaguar": ("atari-jaguar", "Atari Jaguar", "Jaguar_MiSTer"),
"MSX1": ("microsoft-msx", "MSX1", "MSX1_MiSTer"),
"MegaCD": ("sega-mega-cd", "Sega CD / Mega-CD", "MegaCD_MiSTer"),
"N64": ("nintendo-64", "Nintendo 64", "N64_MiSTer"),
"NEOGEO": ("snk-neogeo", "Neo Geo AES / MVS", "NeoGeo_MiSTer"),
"NES": ("nintendo-nes", "NES / Famicom Disk System", "NES_MiSTer"),
"NeoGeo-CD": ("snk-neogeo-cd", "Neo Geo CD", "NeoGeo_MiSTer"),
"NeoGeoPocket": ("snk-neogeo-pocket", "Neo Geo Pocket", ""),
"PC8801": ("nec-pc-88", "NEC PC-8801", "PC88_MiSTer"),
"PSX": ("sony-playstation", "Sony PlayStation", "PSX_MiSTer"),
"PocketChallengeV2": (
"pocket-challenge-v2",
"Benesse Pocket Challenge V2",
"WonderSwan_MiSTer",
),
"PokemonMini": ("nintendo-pokemon-mini", "Pokemon Mini", "PokemonMini_MiSTer"),
"SCV": ("epoch-scv", "Epoch Super Cassette Vision", "SuperCassetteVision_MiSTer"),
"SGB": ("nintendo-sgb", "Super Game Boy", "SGB_MiSTer"),
"SNES": ("nintendo-snes", "Super NES / Super Famicom", "SNES_MiSTer"),
"Saturn": ("sega-saturn", "Sega Saturn", "Saturn_MiSTer"),
"TGFX16-CD": ("nec-pc-engine-cd", "PC Engine CD / TurboGrafx-CD", "TurboGrafx16_MiSTer"),
"TI-99_4A": ("ti99", "Texas Instruments TI-99/4A", "TI-99_4A_MiSTer"),
"WonderSwan": ("wonderswan", "Bandai WonderSwan", "WonderSwan_MiSTer"),
"WonderSwanColor": (
"wonderswan-color",
"Bandai WonderSwan Color",
"WonderSwan_MiSTer",
),
}
def parse_db(raw: str) -> dict[str, dict]:
"""Return every installable file entry of the database, keyed by path.
Entries listed under archives are inlined: the Downloader extracts them
from a remote ZIP, and their hash describes the extracted member.
"""
data = json.loads(raw)
entries: dict[str, dict] = dict(data.get("files", {}))
for archive in data.get("archives", {}).values():
inline = archive.get("summary_inline", {}).get("files", {})
entries.update(inline)
if not entries:
raise ValueError("no file entries found in bios_db.json")
return entries
def system_of(path: str) -> str:
"""Return the core folder a database path belongs to."""
remainder = path[len(DB_ROOT):] if path.startswith(DB_ROOT) else path
return remainder.split("/", 1)[0]
class Scraper(BaseScraper):
"""Scraper for the MiSTer BiosDB database."""
def __init__(self, url: str = SOURCE_URL):
super().__init__(url=url)
def _fetch_raw(self) -> str:
"""Fetch bios_db.json.zip and return the JSON it contains."""
if self._raw_data is not None:
return self._raw_data
req = urllib.request.Request(
self.url, headers={"User-Agent": "retrobios-scraper/1.0"}
)
try:
with urllib.request.urlopen(req, timeout=30) as resp:
payload = _read_limited(resp)
except urllib.error.URLError as e:
raise ConnectionError(f"Failed to fetch {self.url}: {e}") from e
with zipfile.ZipFile(io.BytesIO(payload)) as archive:
self._raw_data = archive.read(DB_MEMBER).decode("utf-8")
return self._raw_data
def validate_format(self, raw_data: str) -> bool:
"""Validate the BiosDB database format."""
try:
data = json.loads(raw_data)
except json.JSONDecodeError:
return False
if data.get("db_id") != "bios_db":
return False
files = data.get("files")
if not isinstance(files, dict) or not files:
return False
return all(
isinstance(entry.get("hash"), str) and isinstance(entry.get("size"), int)
for entry in files.values()
)
def fetch_requirements(self) -> list[BiosRequirement]:
"""Parse bios_db.json and return BIOS requirements."""
raw = self._fetch_raw()
if not self.validate_format(raw):
raise ValueError("bios_db.json format validation failed")
requirements = []
for path, entry in sorted(parse_db(raw).items()):
folder = system_of(path)
system, _, _ = SYSTEM_MAP.get(folder, (folder.lower(), folder, ""))
destination = path[len(DB_ROOT):] if path.startswith(DB_ROOT) else path
requirements.append(
BiosRequirement(
name=destination.rsplit("/", 1)[-1],
system=system,
md5=entry["hash"],
size=entry.get("size"),
destination=destination,
required=True,
native_id=folder,
)
)
return requirements
def generate_platform_yaml(self) -> dict:
"""Build the MiSTer FPGA platform configuration."""
data = json.loads(self._fetch_raw())
systems: dict[str, dict] = {}
for req in self.fetch_requirements():
_, display, repo = SYSTEM_MAP.get(
req.native_id or "", (req.system, req.system, "")
)
entry = systems.setdefault(
req.system,
{
"files": [],
"native_id": req.native_id,
"name": display,
"docs": f"https://github.com/MiSTer-devel/{repo}" if repo else "",
},
)
file_entry: dict = {
"name": req.name,
"destination": req.destination,
"required": req.required,
"md5": req.md5,
}
if req.size is not None:
file_entry["size"] = req.size
entry["files"].append(file_entry)
for entry in systems.values():
if not entry["docs"]:
del entry["docs"]
timestamp = data.get("timestamp")
released = (
datetime.fromtimestamp(timestamp, timezone.utc).strftime("%Y-%m-%d")
if isinstance(timestamp, (int, float))
else ""
)
return {
"platform": "MiSTer FPGA",
"version": released,
"homepage": "https://misterfpga.org",
"source": SOURCE_URL,
"base_destination": "games",
"hash_type": "md5",
"verification_mode": "md5",
"cores": [],
"systems": dict(sorted(systems.items())),
}
def main() -> None:
"""Entry point."""
try:
from .base_scraper import scraper_cli
except ImportError:
from base_scraper import scraper_cli
scraper_cli(Scraper, "Scrape MiSTer FPGA BIOS requirements")
if __name__ == "__main__":
main()
+105
View File
@@ -5043,5 +5043,110 @@ struct BurnDriver BurnDrvneogeo = {
self.assertIsNotNone(bad)
# -- MiSTer FPGA scraper (BiosDB) -------------------------------------
MISTER_DB = {
"db_id": "bios_db",
"timestamp": 1785183064,
"files": {
"games/3DO/boot.rom": {
"hash": "f47264dd47fe30f73ab3c010015c155b",
"size": 1048576,
"url": "https://archive.org/download/x/3DO.zip/boot.rom",
},
"games/GameCom/boot.rom": {
"hash": "3f2178d717dd309ed7424d49ef92987f",
"size": 262144,
"url": "https://archive.org/download/x/GameCom.zip/boot.rom",
},
},
"archives": {
"neogeo_unibios": {
"archive_file": {"hash": "a" * 32, "size": 101498, "url": "http://x/u.zip"},
"summary_inline": {
"files": {
"games/NEOGEO/uni-bios.rom": {
"hash": "4f0aeda8d2d145f596826b62d563c4ef",
"size": 131072,
}
}
},
}
},
}
def _mister_scraper(self):
import json
from scraper.misterfpga_scraper import Scraper
scraper = Scraper()
scraper._raw_data = json.dumps(self.MISTER_DB)
return scraper
def test_221_mister_parse_db_inlines_archive_entries(self):
"""Archive-provided files carry the extracted member hash."""
import json
from scraper.misterfpga_scraper import parse_db
entries = parse_db(json.dumps(self.MISTER_DB))
self.assertIn("games/NEOGEO/uni-bios.rom", entries)
self.assertEqual(
entries["games/NEOGEO/uni-bios.rom"]["hash"],
"4f0aeda8d2d145f596826b62d563c4ef",
)
self.assertEqual(len(entries), 3)
def test_222_mister_validate_format_rejects_foreign_db(self):
"""Only the bios_db database is accepted."""
import json
scraper = self._mister_scraper()
self.assertTrue(scraper.validate_format(json.dumps(self.MISTER_DB)))
self.assertFalse(scraper.validate_format("not json"))
self.assertFalse(
scraper.validate_format(json.dumps({"db_id": "distribution_mister", "files": {}}))
)
broken = json.loads(json.dumps(self.MISTER_DB))
broken["files"]["games/3DO/boot.rom"].pop("size")
self.assertFalse(scraper.validate_format(json.dumps(broken)))
def test_223_mister_requirements_strip_games_prefix(self):
"""Destinations are relative to base_destination games."""
reqs = {r.destination: r for r in self._mister_scraper().fetch_requirements()}
self.assertIn("3DO/boot.rom", reqs)
self.assertEqual(reqs["3DO/boot.rom"].name, "boot.rom")
self.assertEqual(reqs["3DO/boot.rom"].system, "3do")
self.assertEqual(reqs["3DO/boot.rom"].native_id, "3DO")
self.assertEqual(reqs["3DO/boot.rom"].size, 1048576)
def test_224_mister_platform_yaml_shape(self):
"""The generated config declares md5 verification and no cores."""
config = self._mister_scraper().generate_platform_yaml()
self.assertEqual(config["verification_mode"], "md5")
self.assertEqual(config["base_destination"], "games")
self.assertEqual(config["cores"], [])
self.assertEqual(config["version"], "2026-07-27")
systems = config["systems"]
self.assertEqual(
systems["3do"]["docs"], "https://github.com/MiSTer-devel/3DO_MiSTer"
)
# No MiSTer-devel repository exists for the Game.com core
self.assertNotIn("docs", systems["tiger-game-com"])
entry = systems["3do"]["files"][0]
self.assertTrue(entry["required"])
self.assertEqual(entry["md5"], "f47264dd47fe30f73ab3c010015c155b")
def test_225_mister_docs_targets_are_unique_per_system(self):
"""Every mapped system resolves to a distinct retrobios system ID."""
from scraper.misterfpga_scraper import SYSTEM_MAP
folders = list(SYSTEM_MAP)
systems = [SYSTEM_MAP[f][0] for f in folders]
self.assertEqual(len(systems), len(set(systems)))
if __name__ == "__main__":
unittest.main()
+39
View File
@@ -166,6 +166,45 @@ class TestDefaultDests(unittest.TestCase):
install.DEFAULT_DESTS["recalbox"], Path("/recalbox/share/bios")
)
def test_mister_defaults_to_games_on_the_sd_card(self):
self.assertEqual(
install.DEFAULT_DESTS["misterfpga"], Path("/media/fat/games")
)
class TestEmbeddedDetection(unittest.TestCase):
"""MiSTer is identified by the main binary at the SD card root."""
def _detect_with(self, existing: set[str], os_id: str = ""):
real_exists = install.Path.exists
real_parse = install._parse_os_release
def fake_exists(self):
return str(self) in existing
install.Path.exists = fake_exists
install._parse_os_release = lambda: {"ID": os_id} if os_id else {}
try:
return install._detect_embedded()
finally:
install.Path.exists = real_exists
install._parse_os_release = real_parse
def test_mister_detected_from_main_binary(self):
self.assertEqual(
self._detect_with({"/media/fat/MiSTer"}),
[("misterfpga", Path("/media/fat/games"))],
)
def test_rocknix_wins_over_path_probes(self):
self.assertEqual(
self._detect_with({"/media/fat/MiSTer"}, os_id="rocknix"),
[("rocknix", Path("/storage/roms/bios"))],
)
def test_no_embedded_os_detected(self):
self.assertEqual(self._detect_with(set()), [])
if __name__ == "__main__":
unittest.main()