diff --git a/README.md b/README.md
index 326382d9..e9987bd7 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,14 @@
-Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
+
+
+
+
-**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*
diff --git a/bios/Atari/Jaguar/boot.rom b/bios/Atari/Jaguar/boot.rom
new file mode 100644
index 00000000..d8a5a5fc
Binary files /dev/null and b/bios/Atari/Jaguar/boot.rom differ
diff --git a/bios/Atari/Jaguar/boot1.rom b/bios/Atari/Jaguar/boot1.rom
new file mode 100644
index 00000000..9e906224
Binary files /dev/null and b/bios/Atari/Jaguar/boot1.rom differ
diff --git a/bios/Atari/Jaguar/boot2.rom b/bios/Atari/Jaguar/boot2.rom
new file mode 100644
index 00000000..736a4581
Binary files /dev/null and b/bios/Atari/Jaguar/boot2.rom differ
diff --git a/bios/Bit Corporation/Gamate/gamate_bios_umc.bin b/bios/Bit Corporation/Gamate/gamate_bios_umc.bin
new file mode 100644
index 00000000..4f34561b
Binary files /dev/null and b/bios/Bit Corporation/Gamate/gamate_bios_umc.bin differ
diff --git a/bios/Casio/PV-2000/hn613128pc64.bin b/bios/Casio/PV-2000/hn613128pc64.bin
new file mode 100644
index 00000000..801f0d8b
Binary files /dev/null and b/bios/Casio/PV-2000/hn613128pc64.bin differ
diff --git a/bios/Epoch/Super Cassette Vision/boot.rom b/bios/Epoch/Super Cassette Vision/boot.rom
new file mode 100644
index 00000000..0d19c7a2
Binary files /dev/null and b/bios/Epoch/Super Cassette Vision/boot.rom differ
diff --git a/bios/Interact/Home Computer/interact.rom b/bios/Interact/Home Computer/interact.rom
new file mode 100644
index 00000000..b9d0a3f3
Binary files /dev/null and b/bios/Interact/Home Computer/interact.rom differ
diff --git a/bios/NEC/PC Engine CD/Super CD 3.1.pce b/bios/NEC/PC Engine CD/Super CD 3.1.pce
new file mode 100644
index 00000000..e58f5844
Binary files /dev/null and b/bios/NEC/PC Engine CD/Super CD 3.1.pce differ
diff --git a/bios/NEC/PC-88/PC8801 MKII SR BIOS.rom b/bios/NEC/PC-88/PC8801 MKII SR BIOS.rom
new file mode 100644
index 00000000..aa526b46
Binary files /dev/null and b/bios/NEC/PC-88/PC8801 MKII SR BIOS.rom differ
diff --git a/bios/Nintendo/Nintendo 64/boot.rom b/bios/Nintendo/Nintendo 64/boot.rom
new file mode 100644
index 00000000..1d08e74c
Binary files /dev/null and b/bios/Nintendo/Nintendo 64/boot.rom differ
diff --git a/bios/Nintendo/Nintendo 64/boot1.rom b/bios/Nintendo/Nintendo 64/boot1.rom
new file mode 100644
index 00000000..1a49f0eb
Binary files /dev/null and b/bios/Nintendo/Nintendo 64/boot1.rom differ
diff --git a/bios/Philips/CD-i/vmpega_split.rom b/bios/Philips/CD-i/vmpega_split.rom
new file mode 100644
index 00000000..bda43ce1
Binary files /dev/null and b/bios/Philips/CD-i/vmpega_split.rom differ
diff --git a/bios/SNK/Neo Geo Pocket/boot.rom b/bios/SNK/Neo Geo Pocket/boot.rom
new file mode 100644
index 00000000..f483854e
Binary files /dev/null and b/bios/SNK/Neo Geo Pocket/boot.rom differ
diff --git a/bios/Sega/Mega CD/US Sega CD 2 (Region Free) 930601 l_oliveira.bin b/bios/Sega/Mega CD/US Sega CD 2 (Region Free) 930601 l_oliveira.bin
new file mode 100644
index 00000000..7b0267a4
Binary files /dev/null and b/bios/Sega/Mega CD/US Sega CD 2 (Region Free) 930601 l_oliveira.bin differ
diff --git a/bios/Sony/PlayStation/sbi.zip b/bios/Sony/PlayStation/sbi.zip
new file mode 100644
index 00000000..1a36f9a1
Binary files /dev/null and b/bios/Sony/PlayStation/sbi.zip differ
diff --git a/bios/Texas Instruments/TI-99/boot0.rom b/bios/Texas Instruments/TI-99/boot0.rom
new file mode 100644
index 00000000..d1dbd42d
Binary files /dev/null and b/bios/Texas Instruments/TI-99/boot0.rom differ
diff --git a/bios/Tiger/Game.com/GameCom External BIOS (Kitrinx v0.03).bin b/bios/Tiger/Game.com/GameCom External BIOS (Kitrinx v0.03).bin
new file mode 100644
index 00000000..c5cd1ce9
Binary files /dev/null and b/bios/Tiger/Game.com/GameCom External BIOS (Kitrinx v0.03).bin differ
diff --git a/bios/VTech/CreatiVision/laser2001.rom b/bios/VTech/CreatiVision/laser2001.rom
new file mode 100644
index 00000000..67a873a5
Binary files /dev/null and b/bios/VTech/CreatiVision/laser2001.rom differ
diff --git a/database.json b/database.json
index d26ad26a..359c8753 100644
--- a/database.json
+++ b/database.json
@@ -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",
diff --git a/install.py b/install.py
index f8150885..ee8926bc 100644
--- a/install.py
+++ b/install.py
@@ -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
diff --git a/install/misterfpga.json b/install/misterfpga.json
new file mode 100644
index 00000000..ecbe02b6
--- /dev/null
+++ b/install/misterfpga.json
@@ -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
+ }
+ ]
+}
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index aa0f40ba..2ece323d 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -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
diff --git a/platforms/_registry.yml b/platforms/_registry.yml
index 152c32df..6bd16c11 100644
--- a/platforms/_registry.yml
+++ b/platforms/_registry.yml
@@ -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
+ - username: Takiiiiiii
+ contribution: platform support
+ 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'
diff --git a/platforms/misterfpga.yml b/platforms/misterfpga.yml
index 1910c8d0..eff1625b 100644
--- a/platforms/misterfpga.yml
+++ b/platforms/misterfpga.yml
@@ -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
diff --git a/scripts/generate_readme.py b/scripts/generate_readme.py
index 61bad765..2744eace 100644
--- a/scripts/generate_readme.py
+++ b/scripts/generate_readme.py
@@ -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"]):
diff --git a/scripts/scraper/misterfpga_scraper.py b/scripts/scraper/misterfpga_scraper.py
new file mode 100644
index 00000000..ab1d7791
--- /dev/null
+++ b/scripts/scraper/misterfpga_scraper.py
@@ -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()
diff --git a/tests/test_e2e.py b/tests/test_e2e.py
index cd7057ae..34f85ae1 100644
--- a/tests/test_e2e.py
+++ b/tests/test_e2e.py
@@ -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()
diff --git a/tests/test_install.py b/tests/test_install.py
index 0531fff8..3bdfad6f 100644
--- a/tests/test_install.py
+++ b/tests/test_install.py
@@ -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()