diff --git a/README.md b/README.md index 212e8473..ec75d908 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM. -**6,816** verified files across **352** systems, ready to extract into your emulator's BIOS directory. +**6,845** verified files across **352** systems, ready to extract into your emulator's BIOS directory. ## Download BIOS packs @@ -11,7 +11,7 @@ Pick your platform, download the ZIP, extract to the BIOS path. | Platform | BIOS files | Extract to | Download | |----------|-----------|-----------|----------| | Batocera | 359 | `/userdata/bios/` | [Download](../../releases/latest) | -| BizHawk | 118 | | [Download](../../releases/latest) | +| BizHawk | 118 | `Firmware/` | [Download](../../releases/latest) | | EmuDeck | 161 | `Emulation/bios/` | [Download](../../releases/latest) | | Lakka | 448 | `system/` | [Download](../../releases/latest) | | Recalbox | 346 | `/recalbox/share/bios/` | [Download](../../releases/latest) | @@ -29,8 +29,8 @@ Each file is checked against the emulator's source code to match what the code a - **10 platforms** supported with platform-specific verification - **328 emulators** profiled from source (RetroArch cores + standalone) - **352 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...) -- **6,816 files** verified with MD5, SHA1, CRC32 checksums -- **6863 MB** total collection size +- **6,845 files** verified with MD5, SHA1, CRC32 checksums +- **6866 MB** total collection size ## Supported systems @@ -113,4 +113,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. This repository provides BIOS files for personal backup and archival purposes. -*Auto-generated on 2026-03-28T10:48:52Z* +*Auto-generated on 2026-03-28T12:55:41Z* diff --git a/database.json b/database.json index 40a0c836..cbc34756 100644 --- a/database.json +++ b/database.json @@ -1,7 +1,7 @@ { - "generated_at": "2026-03-28T10:43:25Z", - "total_files": 6816, - "total_size": 7196725072, + "generated_at": "2026-03-28T12:55:15Z", + "total_files": 6845, + "total_size": 7199902931, "files": { "520d3d1b5897800af47f92efd2444a26b7a7dead": { "path": "bios/3DO Company/3DO/3do_arcade_saot.bin", @@ -203,6 +203,16 @@ "crc32": "09ec70cc", "adler32": "2918d83f" }, + "3487729e87bebc9cb51665838c27beff22f7b3bd": { + "path": "bios/Acorn/Archimedes/ROM311", + "name": "ROM311", + "size": 2097152, + "sha1": "3487729e87bebc9cb51665838c27beff22f7b3bd", + "md5": "b7e46ab8c832d720942fcd2c8a66c294", + "sha256": "e916a0b84a2c8d96d43731ec9a02c9dff31312c95bca725b2b60e7eb3bfe7384", + "crc32": "54c0c963", + "adler32": "12fd0834" + }, "db67429100680a7a991822b8e2b1ca958df1e140": { "path": "bios/Acorn/Archimedes/aa310.zip", "name": "aa310.zip", @@ -503,6 +513,16 @@ "crc32": "bade516d", "adler32": "948ecbfe" }, + "141d18c36a617ab9dce668445440d34354be0672": { + "path": "bios/Apple/Apple II/341s0632-2", + "name": "341s0632-2", + "size": 4096, + "sha1": "141d18c36a617ab9dce668445440d34354be0672", + "md5": "c9e0e059faec0393fc429131a3af4ee9", + "sha256": "d7d2b0bbf3724b50afceba9434cab24e5f6cd3f9896db3af16a3a4d097a49f35", + "crc32": "e1c11fb0", + "adler32": "1061638b" + }, "b8ea90abe135a0031065e01697c4a3a20d51198b": { "path": "bios/Apple/Apple II/AppleIIe.rom", "name": "AppleIIe.rom", @@ -553,6 +573,16 @@ "crc32": "1d05c1b1", "adler32": "fc3cece0" }, + "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659": { + "path": "bios/Apple/Apple II/apple2-character.rom", + "name": "apple2-character.rom", + "size": 2048, + "sha1": "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659", + "md5": "9ac0dc8c4d0002eb45b0b84be0bde5ec", + "sha256": "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de", + "crc32": "64f415c6", + "adler32": "a35ca58f" + }, "2dfaf376fc6a0b106320911c1ebfc1512601dc6c": { "path": "bios/Apple/Apple II/apple2-int-auto.rom", "name": "apple2-int-auto.rom", @@ -563,6 +593,16 @@ "crc32": "2dcec5cb", "adler32": "016f2864" }, + "8c5ca0c39005dfb0898af2c0992f797cc77530c0": { + "path": "bios/Apple/Apple II/apple2.rom", + "name": "apple2.rom", + "size": 12288, + "sha1": "8c5ca0c39005dfb0898af2c0992f797cc77530c0", + "md5": "5be2fd85a99905d57785390b8b6c4ed6", + "sha256": "378ba00c86a64cca49cedaca7de8d5d351983ebc295d9d11e0752febfc346249", + "crc32": "f66f9c26", + "adler32": "fc73ecfe" + }, "e63ac5e5bd3443cb937916a78e7d4bb8d3c67c4b": { "path": "bios/Apple/Apple II/apple2.zip", "name": "apple2.zip", @@ -573,6 +613,26 @@ "crc32": "e7dc5a90", "adler32": "2c6074a3" }, + "b2b5d87f52693817fc747df087a4aa1ddcdb1f10": { + "path": "bios/Apple/Apple II/apple2e-character.rom", + "name": "apple2e-character.rom", + "size": 4096, + "sha1": "b2b5d87f52693817fc747df087a4aa1ddcdb1f10", + "md5": "9123fff3442c0e688cc6816be88dd4ab", + "sha256": "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f", + "crc32": "2651014d", + "adler32": "fe9ab61d" + }, + "d756eba578a6c5a4807510dfee30ee585c63755e": { + "path": "bios/Apple/Apple II/apple2e.rom", + "name": "apple2e.rom", + "size": 32768, + "sha1": "d756eba578a6c5a4807510dfee30ee585c63755e", + "md5": "003a780b461c96ae3e72861ed0f4d3d9", + "sha256": "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab", + "crc32": "65989942", + "adler32": "b8eb06b6" + }, "891f44b09ab1a948d3d887f8a30b9c9265849ada": { "path": "bios/Apple/Apple II/apple2e.zip", "name": "apple2e.zip", @@ -593,6 +653,36 @@ "crc32": "505407fe", "adler32": "1605d2fe" }, + "7060de104046736529c1e8a687a0dd7b84f8c51b": { + "path": "bios/Apple/Apple II/apple2eu-character.rom", + "name": "apple2eu-character.rom", + "size": 4096, + "sha1": "7060de104046736529c1e8a687a0dd7b84f8c51b", + "md5": "e6d453d8738e6df4f73df8c8051df3e8", + "sha256": "0d54ff735c060c55d54b8a22d0112af78a6465ce9c9aae4a865d207e5c8ff1e7", + "crc32": "b081df66", + "adler32": "ca1ff453" + }, + "9b041a861ae6ff99e466ad428700269db509ced6": { + "path": "bios/Apple/Apple II/apple2eu.rom", + "name": "apple2eu.rom", + "size": 32768, + "sha1": "9b041a861ae6ff99e466ad428700269db509ced6", + "md5": "e14eae591b3569f54802f99c0355c817", + "sha256": "b10f553c50daf34aa305087179104f55111a5f6d2b425109ae95cb1d2dcd2ff9", + "crc32": "e12be18d", + "adler32": "ca4d1e45" + }, + "34e2443e2ef960a36c047a09ed5a93f471797f89": { + "path": "bios/Apple/Apple II/apple2gs.chr", + "name": "apple2gs.chr", + "size": 4096, + "sha1": "34e2443e2ef960a36c047a09ed5a93f471797f89", + "md5": "68ff96a624237d233e8d4c701f660dd1", + "sha256": "5a02ba26152f609a694912d9b1531a79fba4fdd84b2e6c6561f363def62636cb", + "crc32": "91e53cd8", + "adler32": "3b7930b1" + }, "bc32bc0e8902946663998f56aea52be597d9e361": { "path": "bios/Apple/Apple II/apple2gs.rom", "name": "apple2gs.rom", @@ -613,6 +703,16 @@ "crc32": "4f923a35", "adler32": "9b3cf9cd" }, + "78008be557f643e956a106121bcc182c0fb9ea6d": { + "path": "bios/Apple/Apple II/apple2o.rom", + "name": "apple2o.rom", + "size": 12288, + "sha1": "78008be557f643e956a106121bcc182c0fb9ea6d", + "md5": "2a68f049d44e326574b95c0ec638c1ca", + "sha256": "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1", + "crc32": "ba210588", + "adler32": "8c397035" + }, "e8c40d3a44a41a9b6b5dd3a993d7057b3bfb4086": { "path": "bios/Apple/Apple II/apple2p.zip", "name": "apple2p.zip", @@ -693,6 +793,16 @@ "crc32": "1735e7a5", "adler32": "a635cc08" }, + "9d86c883aa09f7ef5f086d9e32330ef85f1bc93b": { + "path": "bios/Apple/Macintosh/mac128k.rom", + "name": "mac128k.rom", + "size": 65536, + "sha1": "9d86c883aa09f7ef5f086d9e32330ef85f1bc93b", + "md5": "1d7f52d2d490524954f6afce083d9593", + "sha256": "13fe8312cf6167a2bb4351297b48cc1ee29c523b788e58270434742bfeda864c", + "crc32": "6d0c8a28", + "adler32": "72ccfee0" + }, "b63ea7435784f26bb99398890c707b21d7084769": { "path": "bios/Apple/Macintosh/mac128k.zip", "name": "mac128k.zip", @@ -713,6 +823,16 @@ "crc32": "c37b828c", "adler32": "cb2aea29" }, + "5b1ced181b74cecd3834c49c2a4aa1d7ffe944d7": { + "path": "bios/Apple/Macintosh/mac512k.rom", + "name": "mac512k.rom", + "size": 65536, + "sha1": "5b1ced181b74cecd3834c49c2a4aa1d7ffe944d7", + "md5": "db7e6d3205a2b48023fba5aa867ac6d6", + "sha256": "fe6a1ceff5b3eefe32f20efea967cdf8cd4cada291ede040600e7f6c9e2dfc0e", + "crc32": "cf759e0d", + "adler32": "2530febd" + }, "0f033f8d7793c58d3ef5374174eec3ab86b33ba1": { "path": "bios/Apple/Macintosh/mac512k.zip", "name": "mac512k.zip", @@ -823,6 +943,16 @@ "crc32": "5009917e", "adler32": "bd1a2604" }, + "7d2f808a045aa3a1b242764f0e2c7d13e288bf1f": { + "path": "bios/Apple/Macintosh/macplus.rom", + "name": "macplus.rom", + "size": 131072, + "sha1": "7d2f808a045aa3a1b242764f0e2c7d13e288bf1f", + "md5": "8a41e0754ffd1bb00d8183875c55164c", + "sha256": "dd908e2b65772a6b1f0c859c24e9a0d3dcde17b1c6a24f4abd8955846d7895e7", + "crc32": "b2102e8e", + "adler32": "54ecdde4" + }, "616a58ca17834f76f9e07e64919f1cc56ae41e28": { "path": "bios/Apple/Macintosh/macplus.zip", "name": "macplus.zip", @@ -2183,6 +2313,16 @@ "crc32": "24e90480", "adler32": "2636de07" }, + "a1c5727c93860381c4e65e1f04e204248678c702": { + "path": "bios/Arcade/Arcade/redearthn.zip", + "name": "redearthn.zip", + "size": 132458, + "sha1": "a1c5727c93860381c4e65e1f04e204248678c702", + "md5": "10306ad48fc8cc0499f3c0328c4b4f8a", + "sha256": "e2efa813d88b8d86f3601ada84c01344e625db87d64aa5dfc07255a5de617976", + "crc32": "f6444e33", + "adler32": "7bd1a6d6" + }, "2c178083ac2906cecb7e331d7111f7766a353052": { "path": "bios/Arcade/Arcade/sammymdl.zip", "name": "sammymdl.zip", @@ -2233,6 +2373,16 @@ "crc32": "7290dea5", "adler32": "02a42b85" }, + "5e74fb0a1fab8a85a941e932049cb2ef79e64e9c": { + "path": "bios/Arcade/Arcade/sfiii2h.zip", + "name": "sfiii2h.zip", + "size": 131609, + "sha1": "5e74fb0a1fab8a85a941e932049cb2ef79e64e9c", + "md5": "5b35b509b7bd5943d6f56c8326a105cf", + "sha256": "1cd62567e4e032b6c91dd1796eec072e6b2bfa1de4ca0b75b7f83291dd815e22", + "crc32": "5009e9d4", + "adler32": "bea7ae7c" + }, "b6410ccf4a291e028fb05848f8308200f9eb2ea7": { "path": "bios/Arcade/Arcade/sfiii2j.zip", "name": "sfiii2j.zip", @@ -25453,6 +25603,16 @@ "crc32": "9ed783d0", "adler32": "9999b27d" }, + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785": { + "path": "bios/Commodore/Amiga/Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom", + "name": "Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom", + "size": 262144, + "sha1": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", + "md5": "82a21c1890cae844b3df741f2762d48d", + "sha256": "ee05862d8102a08436ac4056da7d549db31625c7d47b24dfb7b3c9a5c113ca53", + "crc32": "c4f0f55f", + "adler32": "140442ed" + }, "455aa8688747daaa7e64122ba6871eaf51566727": { "path": "bios/Commodore/Amiga/WHDLoad.prefs", "name": "WHDLoad.prefs", @@ -25563,16 +25723,6 @@ "crc32": "c61d5663", "adler32": "7c2ded0f" }, - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785": { - "path": "bios/Commodore/Amiga/kick34005.A500", - "name": "kick34005.A500", - "size": 262144, - "sha1": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", - "md5": "82a21c1890cae844b3df741f2762d48d", - "sha256": "ee05862d8102a08436ac4056da7d549db31625c7d47b24dfb7b3c9a5c113ca53", - "crc32": "c4f0f55f", - "adler32": "140442ed" - }, "209c109855f94c935439b60950d049527d2f2484": { "path": "bios/Commodore/Amiga/kick34005.A500.RTB", "name": "kick34005.A500.RTB", @@ -26364,8 +26514,8 @@ "adler32": "18bdd99d" }, "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69": { - "path": "bios/Dragon/Dragon/d200rom1.rom", - "name": "d200rom1.rom", + "path": "bios/Dragon/Dragon/alpha-basic.rom", + "name": "alpha-basic.rom", "size": 16384, "sha1": "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", "md5": "be9bc86ee5eb401d0a40d0377f65fefa", @@ -26373,6 +26523,26 @@ "crc32": "84f68bf9", "adler32": "8dde603a" }, + "4a5851aa66eb426e9bb0bba196f1e02d48156068": { + "path": "bios/Dragon/Dragon/alpha-boot-v1.0.rom", + "name": "alpha-boot-v1.0.rom", + "size": 8192, + "sha1": "4a5851aa66eb426e9bb0bba196f1e02d48156068", + "md5": "283726f0f22603d3e60c27865babccf4", + "sha256": "dd236210b88447c8f185fd4ed72df9879cd9d2c2077ce68d935e45a7559c2e17", + "crc32": "c3dab585", + "adler32": "fe24eca4" + }, + "628543ee8b47a56df2b2175cfb763c0051517b90": { + "path": "bios/Dragon/Dragon/d200e_1.rom", + "name": "d200e_1.rom", + "size": 16384, + "sha1": "628543ee8b47a56df2b2175cfb763c0051517b90", + "md5": "03f25edd487df4c98a79b2d504469653", + "sha256": "790f79fc4347b146e39bec48038b4eed082b1b04034536bd638f7fd222c14e82", + "crc32": "95af0a0a", + "adler32": "355f8de5" + }, "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e": { "path": "bios/Dragon/Dragon/d200rom2.rom", "name": "d200rom2.rom", @@ -26633,6 +26803,16 @@ "crc32": "fd654b8e", "adler32": "700b336e" }, + "50a548d1df3ea86f9b5fa669afd8ff124050e776": { + "path": "bios/Enterprise/64-128/basic11.bin", + "name": "basic11.bin", + "size": 16384, + "sha1": "50a548d1df3ea86f9b5fa669afd8ff124050e776", + "md5": "7cd7268b9e4a4357fe401021df0335b5", + "sha256": "880559bc2368bc4742dab609bb3cdf65e12ae6f2db1894b73630cb2e88b4b445", + "crc32": "683cf455", + "adler32": "9d8b91f0" + }, "61d0987b906146e21b94f265d5b51b4938c986a9": { "path": "bios/Enterprise/64-128/basic20.rom", "name": "basic20.rom", @@ -26744,8 +26924,8 @@ "adler32": "c34211c1" }, "6033a0535136c40c47137e4d1cd9273c06d5fdff": { - "path": "bios/Enterprise/64-128/exos20.rom", - "name": "exos20.rom", + "path": "bios/Enterprise/64-128/exos20.bin", + "name": "exos20.bin", "size": 32768, "sha1": "6033a0535136c40c47137e4d1cd9273c06d5fdff", "md5": "5ad3baaad3b5156d6b60b34229a676fb", @@ -26763,6 +26943,16 @@ "crc32": "982a3b44", "adler32": "62f41522" }, + "c6241e1c248193108ce38b9a8e9dd33972cf47ba": { + "path": "bios/Enterprise/64-128/exos23.bin", + "name": "exos23.bin", + "size": 65536, + "sha1": "c6241e1c248193108ce38b9a8e9dd33972cf47ba", + "md5": "80115adf36136f30b23c10ea2dd83bef", + "sha256": "7d4be98066acc92ad87afac84b5c3165a1e336b77ce6e002cc031296769de18f", + "crc32": "24838410", + "adler32": "bd428ea5" + }, "cf12e971623a54bf8c4f891ca3a36d969f205c49": { "path": "bios/Enterprise/64-128/exos24uk.rom", "name": "exos24uk.rom", @@ -27203,6 +27393,46 @@ "crc32": "bbdc5d5b", "adler32": "aab81da4" }, + "1fddd01dcc0fa8c002ced3a1a94873dccdc88424": { + "path": "bios/IBM/PC/CGA.F08", + "name": "CGA.F08", + "size": 2048, + "sha1": "1fddd01dcc0fa8c002ced3a1a94873dccdc88424", + "md5": "d943fb07669097c58a99df28250d1af2", + "sha256": "e1935cd2bfdf0188775e0bcfd9fdc263dcfb17c81fd465ce1c671269f3d6a2a3", + "crc32": "a362ffe6", + "adler32": "9642d79c" + }, + "8078648a1d27d34b7ddc09385edbaa04968c5bd6": { + "path": "bios/IBM/PC/EUMDA9.F14", + "name": "EUMDA9.F14", + "size": 3584, + "sha1": "8078648a1d27d34b7ddc09385edbaa04968c5bd6", + "md5": "5936c2e392b5dbab78af8321dbf05907", + "sha256": "1600134322dda5a296e4a677c94216952cf5bc63f416a74d53a0f6c6a2b8e1d2", + "crc32": "7754882a", + "adler32": "94757463" + }, + "0f38c6579808e58b8401247946e6b4db0fed9ed6": { + "path": "bios/IBM/PC/GLABIOS_0.2.5_8T.ROM", + "name": "GLABIOS_0.2.5_8T.ROM", + "size": 8192, + "sha1": "0f38c6579808e58b8401247946e6b4db0fed9ed6", + "md5": "2b325a004a7dc42d1d12962dd16169a8", + "sha256": "1eaa7de6f26e188cf64756c3ae1850717ced3e7ea257251faf5ead4a4603bd07", + "crc32": "9576944c", + "adler32": "570cc2c4" + }, + "31c60c0941faa705bd5afa0d457e9a25110e7e5d": { + "path": "bios/IBM/PC/Phoenix 80286 ROM BIOS Version 3.05.bin", + "name": "Phoenix 80286 ROM BIOS Version 3.05.bin", + "size": 32768, + "sha1": "31c60c0941faa705bd5afa0d457e9a25110e7e5d", + "md5": "8ce7ce2881a714125f46c4e368beae92", + "sha256": "cfa23df243b460fb6f0275766df7f64e0d0837c6d482fd5726bbce29125d275c", + "crc32": "8d0d318a", + "adler32": "0c70dacf" + }, "9be25b1af080aee863441cf0d25d0f984accb086": { "path": "bios/IBM/PC/acer386/acer386.bin", "name": "acer386.bin", @@ -27243,6 +27473,16 @@ "crc32": "0bcafd1f", "adler32": "d21b70d3" }, + "4b8cf615d3360267226352dc2c9d55b65924f05b": { + "path": "bios/IBM/PC/at-bios.bin", + "name": "at-bios.bin", + "size": 65536, + "sha1": "4b8cf615d3360267226352dc2c9d55b65924f05b", + "md5": "09ca42e4ae249009dd78c3ea3049d287", + "sha256": "872febf7d7034bfadf72ed1936e06600eca72456b9ded41d15b7a284de20337d", + "crc32": "674426be", + "adler32": "a89485a0" + }, "6ac3c1317c1acb83902397d7767763cca4de357a": { "path": "bios/IBM/PC/awe32.raw", "name": "awe32.raw", @@ -34483,6 +34723,16 @@ "crc32": "a9664a9c", "adler32": "b4326558" }, + "7afc276cb118adff72e4f16698f94bf3b2c64146": { + "path": "bios/Oric/Oric/pravetz.rom", + "name": "pravetz.rom", + "size": 16384, + "sha1": "7afc276cb118adff72e4f16698f94bf3b2c64146", + "md5": "8712a22e7e078de3343667d9fc1f2390", + "sha256": "a142c6a9f9ccf25ce4e7ab64107bc2210ee7f68557fe3a8bbb60d1587da814ae", + "crc32": "58079502", + "adler32": "e5c81c95" + }, "3dd12d7ba54fee06a7e20dadb2c278a23a17af50": { "path": "bios/Oric/Oric/pravetzt.pch", "name": "pravetzt.pch", @@ -34493,16 +34743,6 @@ "crc32": "46bab02d", "adler32": "4a13f713" }, - "7afc276cb118adff72e4f16698f94bf3b2c64146": { - "path": "bios/Oric/Oric/pravetzt.rom", - "name": "pravetzt.rom", - "size": 16384, - "sha1": "7afc276cb118adff72e4f16698f94bf3b2c64146", - "md5": "8712a22e7e078de3343667d9fc1f2390", - "sha256": "a142c6a9f9ccf25ce4e7ab64107bc2210ee7f68557fe3a8bbb60d1587da814ae", - "crc32": "58079502", - "adler32": "e5c81c95" - }, "926b95e1cb574d4914dbed0681729a7c1a4bc68d": { "path": "bios/Oric/Oric/shell.rom", "name": "shell.rom", @@ -34993,6 +35233,26 @@ "crc32": "76116a02", "adler32": "def1ac9b" }, + "f402170ee4f374c304a7ce0b139d6cecb1732aff": { + "path": "bios/QEMU/.variants/bios.bin", + "name": "bios.bin", + "size": 131072, + "sha1": "f402170ee4f374c304a7ce0b139d6cecb1732aff", + "md5": "e9ca30100c47a26b66488444c5b0bd15", + "sha256": "8244f3e5eaca828cc0a6a963f1fad15d68d8d3c0b5c80b8451b3067a85f14ae1", + "crc32": "9a28471e", + "adler32": "95b05338" + }, + "63d87e2a6618c3a9b2aabecf03ac2456e5e63410": { + "path": "bios/QEMU/.variants/vgabios.bin", + "name": "vgabios.bin", + "size": 38912, + "sha1": "63d87e2a6618c3a9b2aabecf03ac2456e5e63410", + "md5": "ecef0b49f8f4e61874f012eb12ba0e36", + "sha256": "f0defab87465236d0d22b6000bd2c270e05a56ff3bb7fd209a56069caed86d57", + "crc32": "bbc57207", + "adler32": "70dd56fe" + }, "874289e207c473cb1a5a6ac2aaa03ba49443fe3d": { "path": "bios/QEMU/bios-256k.bin", "name": "bios-256k.bin", @@ -67303,6 +67563,16 @@ "crc32": "1ade9254", "adler32": "398468ab" }, + "c2166b91e6396a311f486832012aa43e0d2b19f8": { + "path": "bios/Tandy/CoCo/alice.rom", + "name": "alice.rom", + "size": 8192, + "sha1": "c2166b91e6396a311f486832012aa43e0d2b19f8", + "md5": "78af465c2f31cf4e05dec1efda77da01", + "sha256": "e105c4e772e20e1349ab88dc59bd0c2a49a100088c8d236c4c8b3af077947de4", + "crc32": "f876abe9", + "adler32": "2975409c" + }, "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1": { "path": "bios/Tandy/CoCo/alice32.rom", "name": "alice32.rom", @@ -67313,16 +67583,6 @@ "crc32": "c3854ddf", "adler32": "db2cf48a" }, - "c2166b91e6396a311f486832012aa43e0d2b19f8": { - "path": "bios/Tandy/CoCo/alice4k.rom", - "name": "alice4k.rom", - "size": 8192, - "sha1": "c2166b91e6396a311f486832012aa43e0d2b19f8", - "md5": "78af465c2f31cf4e05dec1efda77da01", - "sha256": "e105c4e772e20e1349ab88dc59bd0c2a49a100088c8d236c4c8b3af077947de4", - "crc32": "f876abe9", - "adler32": "2975409c" - }, "1f08455cd48ce6a06132aea15c4778f264e19539": { "path": "bios/Tandy/CoCo/bas10.rom", "name": "bas10.rom", @@ -67484,8 +67744,8 @@ "adler32": "7aaa14f2" }, "a348a165009a6de1ae6fc18ed77137b38b6ed46d": { - "path": "bios/Tandy/CoCo/cp400extbas.rom", - "name": "cp400extbas.rom", + "path": "bios/Tandy/CoCo/cp400ext.rom", + "name": "cp400ext.rom", "size": 8192, "sha1": "a348a165009a6de1ae6fc18ed77137b38b6ed46d", "md5": "091581001577b4a83ccfd511829de0f1", @@ -67493,6 +67753,16 @@ "crc32": "114accbc", "adler32": "1e860578" }, + "d89196292b9ebd787647cf91bbb83c63da2b4390": { + "path": "bios/Tandy/CoCo/deluxe.rom", + "name": "deluxe.rom", + "size": 32768, + "sha1": "d89196292b9ebd787647cf91bbb83c63da2b4390", + "md5": "e27c02fd766e8710240c59ef5424a6ef", + "sha256": "04183f5d658b6f9860c51c4c4778b3325a4c1529b66cc6c7a53cd1ff5e8c5676", + "crc32": "1cce231e", + "adler32": "e9a1542f" + }, "04115be3f97952b9d9310b52f806d04f80b40d03": { "path": "bios/Tandy/CoCo/disk10.rom", "name": "disk10.rom", @@ -67573,6 +67843,16 @@ "crc32": "d918156e", "adler32": "d9749663" }, + "9079a477c3f22e46cebb1e68b61df5bd607c71a4": { + "path": "bios/Tandy/CoCo/mx1600extbas.rom", + "name": "mx1600extbas.rom", + "size": 8192, + "sha1": "9079a477c3f22e46cebb1e68b61df5bd607c71a4", + "md5": "6fc82178ae8abe07fa8f6939062291dc", + "sha256": "e9314d9b2f0f39deeb8ea274fca84d97de12d15371bfb40e3a72a6c430bfab4f", + "crc32": "322a3d58", + "adler32": "208900d3" + }, "ad1beef9d6f095ada69f91d0b8ad75985172d86f": { "path": "bios/Tandy/CoCo/xroarbios.rom", "name": "xroarbios.rom", @@ -67783,6 +68063,16 @@ "crc32": "71879a28", "adler32": "e7247c2a" }, + "8d2865996a1a8d8a13fc9965c1bcf490f9621399": { + "path": "bios/Thomson/MO5/mo5-v1.1.rom", + "name": "mo5-v1.1.rom", + "size": 16384, + "sha1": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", + "md5": "12ae505e36b850030f5188e960864775", + "sha256": "c15d3d6732399a879bb6de5ae2fcb9aadfd64da86d95652ced9ad96a2ae8e692", + "crc32": "237c60bf", + "adler32": "604ff6e5" + }, "97f782e72d738f4d7b861363266bf46b438d9b50": { "path": "bios/Tiger/Game.com/external.bin", "name": "external.bin", @@ -68186,6 +68476,7 @@ "35fa1a1ebaaeea286dc5cd15487c13ea": "b01c53da256dde43ffec4ad3fc3adfa8d635e943", "b197db12f7a13827717bbeb7cfd9542a": "d2cce3ff07afa9d13ea371499495f4df9611420c", "5fa94e66b887e900c688751873a72dfa": "7a8669daa77e4f6ff260d5a8b5470d34fc063068", + "b7e46ab8c832d720942fcd2c8a66c294": "3487729e87bebc9cb51665838c27beff22f7b3bd", "dc68b6ad1c10b42ff4a7720e423af790": "db67429100680a7a991822b8e2b1ca958df1e140", "5352d15a3b7938a276305a01080af64c": "baeb7254012b4a55893aba6e5c79ca747c02bdc3", "224779dcd4b9aa1bb27865568fb80f72": "1203096ca9d0748ba722066f47f089513a9be151", @@ -68216,17 +68507,26 @@ "25629dfe870d097469c217b95fdc1c95": "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb", "bdbe5b131171871c15928528261708d2": "f8a11b4e03bb8c3caee604ca591676eab6535d1b", "1ed06e9efe61c8092d4f42cd400d11f4": "844988dc5a36917b002d0140d3a7692d1407f783", + "c9e0e059faec0393fc429131a3af4ee9": "141d18c36a617ab9dce668445440d34354be0672", "38063e08c778503fc03ecebb979769e9": "b8ea90abe135a0031065e01697c4a3a20d51198b", "2020aa1413ff77fe29353f3ee72dc295": "d4181c9f046aafc3fb326b381baac809d9e38d16", "c192973c9a3c06594f87908abaec0b66": "e8af33c0904b422841080a5ee25935f5ea1f3781", "e07ffce4500ffeac9750c427d8309d9b": "d9bb189730e15d46c27e7246d7bb23137e7d761e", "572b3005a4fa49bc54917b069b82c1ab": "33a24f5489ba9195b44be77d9afb2252594cb5c7", + "9ac0dc8c4d0002eb45b0b84be0bde5ec": "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659", "cde36c6b519a628509eb3dc4e4897845": "2dfaf376fc6a0b106320911c1ebfc1512601dc6c", + "5be2fd85a99905d57785390b8b6c4ed6": "8c5ca0c39005dfb0898af2c0992f797cc77530c0", "af7001a6be1c77d08acf212e57c1e434": "e63ac5e5bd3443cb937916a78e7d4bb8d3c67c4b", + "9123fff3442c0e688cc6816be88dd4ab": "b2b5d87f52693817fc747df087a4aa1ddcdb1f10", + "003a780b461c96ae3e72861ed0f4d3d9": "d756eba578a6c5a4807510dfee30ee585c63755e", "d96a5b4370d665300802970c35cf1b7f": "891f44b09ab1a948d3d887f8a30b9c9265849ada", "5096735438308631fac54ab7e229d21e": "0bd2026795d117c33a5967b68fed8c54b3d95502", + "e6d453d8738e6df4f73df8c8051df3e8": "7060de104046736529c1e8a687a0dd7b84f8c51b", + "e14eae591b3569f54802f99c0355c817": "9b041a861ae6ff99e466ad428700269db509ced6", + "68ff96a624237d233e8d4c701f660dd1": "34e2443e2ef960a36c047a09ed5a93f471797f89", "ba89edf2729a28a17cd9e0f7a0ac9a39": "bc32bc0e8902946663998f56aea52be597d9e361", "8f7ee14ccca8ae3dd8c759497af3f09b": "799e2fc90d6bfd8cb74e331e04d5afd36f2f21a1", + "2a68f049d44e326574b95c0ec638c1ca": "78008be557f643e956a106121bcc182c0fb9ea6d", "d3bef2755267a941f264fb5b288e3076": "e8c40d3a44a41a9b6b5dd3a993d7057b3bfb4086", "4f80448507cf43ab40c17ac08d89e278": "afd060e6f35faf3bb0146fa889fc787adf56330a", "5f1be0c1cdff26f5956eef9643911886": "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4", @@ -68235,8 +68535,10 @@ "64c507ce3395f96e5bbb09a13834fbba": "134eab28dcb54854013f348078fb69bfb6329a8b", "e2db7b7d1cf1420c7903206815d529d1": "601460f725cbe21711b4e7bc627614a0667caf05", "af343f3f1362bf29cefd630687efaa25": "47cd505b6a7c46e5c0ffa29f0d5037c83e94a02f", + "1d7f52d2d490524954f6afce083d9593": "9d86c883aa09f7ef5f086d9e32330ef85f1bc93b", "3cdf42e48684ac419d08f8dc2d23f9c3": "b63ea7435784f26bb99398890c707b21d7084769", "c2806ab3415462ae989c163bfdce95ce": "bcecee4379e0ecfa6dc0c49900dda3f8220d6ef0", + "db7e6d3205a2b48023fba5aa867ac6d6": "5b1ced181b74cecd3834c49c2a4aa1d7ffe944d7", "96c9bdde5f9910d5ac8bee917ed8cffa": "0f033f8d7793c58d3ef5374174eec3ab86b33ba1", "58d73d87e189ddc68ee9c64440ab1a05": "817fbb2bbce56bf8e473ee2525ca34bcdeaddb90", "28cada606496d94c0a3dc99816654221": "39a3243624df5a962c160c7bc1535b50c538f0bd", @@ -68248,6 +68550,7 @@ "2bee2c49381dd7d96c15deb57ea6e0a7": "fb89deb29ff341e92fd30307934f7c7616c2c8e2", "1b010545094e1a4fd5dae8dec54d6238": "37b3c669ac03f855ed14affbded280af7a78525e", "7d8460f9ca957007bc77bf9d74066819": "c44664a2a7a649696b0081373717a9cf821c52d3", + "8a41e0754ffd1bb00d8183875c55164c": "7d2f808a045aa3a1b242764f0e2c7d13e288bf1f", "2b96a73f785e49798154e8c7414ae14e": "616a58ca17834f76f9e07e64919f1cc56ae41e28", "56ac25d36f6e5ae0c634267ac525ee3b": "0e36e6df4a5c468939f8c136f6d0f0d4aed81a47", "66223be1497460f1e60885eeb35e03cc": "db6b504744281369794e26ba71a6e385cf6227fa", @@ -68384,11 +68687,13 @@ "3263c8d3320aa7934e8d4806888a8a31": "ed7d7a1de52042e1b0d9467f41c5105620fa165a", "101163782d87442d74f5e98c50c9f912": "f1ccedb2c6e8f15cfebab52c3923e4b35f4df43f", "e96854681b9a548dc311e7d70906423a": "7821398e77ca91837548826773157c427a2ba018", + "10306ad48fc8cc0499f3c0328c4b4f8a": "a1c5727c93860381c4e65e1f04e204248678c702", "3f5f4c2626a2ff0b590ebba998a7d562": "2c178083ac2906cecb7e331d7111f7766a353052", "ca5f3a6d0fe963ec2db8f8f636f90ca7": "de78a0b8df78d5ffdb1a274f80d877a96ef204aa", "982982a7862ef09b996b777363e38989": "14311945b06a5d013d1df5ce961ab47fbd46fb2a", "af79a13aeeb4b97dbfd4f9f0f3630173": "b23ce6c1cc03e366cedcba01e9f01e7ed47c7856", "94b5b8cae5c6d8417acc75c1c2d28914": "1c8b9163f121afba6f43d5a55dda504bb66a32c5", + "5b35b509b7bd5943d6f56c8326a105cf": "5e74fb0a1fab8a85a941e932049cb2ef79e64e9c", "f26fa7c1a2295d68b26b72c43c281506": "b6410ccf4a291e028fb05848f8308200f9eb2ea7", "84305bd65363692f97b14ce5e74a47cb": "79fbda9ec65e377a4e0e70bfd70bd4447f286ddd", "2076afc24ba5c3c5177d5d4f4be555e3": "908a53ee5dc154dc8e429ec9637b37b22f223f6d", @@ -70711,6 +71016,7 @@ "2c66f5911e5b42b8ebe113403548eee7": "45bedc4cbdeac66c7df59e9e599195c778d86a92", "c3b8d740e5d0260ebc35ff9f28d81cd0": "eaa7b491d412c735a03952405a1112c079948950", "68c9c0826f6c0ca20546d588ee77391c": "6a7bfb5dbd6b8f179f03da84d8d9528267b6273b", + "82a21c1890cae844b3df741f2762d48d": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "4df7c6a10c6b4ab21898756dfc3b3677": "455aa8688747daaa7e64122ba6871eaf51566727", "3dbbbbac1edef40e040309f229c033ed": "5a9d9c387162e280512f5ebd169c01125c8dda4b", "465646c9b6729f77eea5314d1f057951": "02843c4253bbd29aba535b0aa3bd9a85034ecde4", @@ -70722,7 +71028,6 @@ "192d6d950d0ed3df8040b788502831c2": "90933936cce43ca9bc6bf375662c076b27e3c458", "85ad74194e87c08904327de1a9443b7a": "11f9e62cf299f72184835b7b2a70a16333fc0d88", "c993feb1eeddec1d2e687aa514231028": "1d1c557f4a0f5ea88aeb96d68b09f41990340f70", - "82a21c1890cae844b3df741f2762d48d": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "7eb13d974af0992d672b67c317a7e0a1": "209c109855f94c935439b60950d049527d2f2484", "89da1838a24460e4b93f4f0c5d92d48d": "7ba40ffa17e500ed9fed041f3424bd81d9c907be", "dc10d7bdd1b6f450773dfb558477c230": "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1", @@ -70803,6 +71108,8 @@ "b8e3f8e88dc8164f8b4b60aa2add9107": "eadb966430454b40a17387acc7302ff1683cc9f2", "d35177f73cf303c5565aa13ef8ca5251": "e004e25a8bb7bcd76a1aee7c2ec87b8fceda4332", "be9bc86ee5eb401d0a40d0377f65fefa": "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", + "283726f0f22603d3e60c27865babccf4": "4a5851aa66eb426e9bb0bba196f1e02d48156068", + "03f25edd487df4c98a79b2d504469653": "628543ee8b47a56df2b2175cfb763c0051517b90", "fd91edce7be5e7c2d88e46b76956a8aa": "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e", "3420b96031078a4ef408cad7bf21a33f": "f2dab125673e653995a83bf6b793e3390ec7f65a", "5f0bee59710e55f5880e74890912ed78": "f119506eaa3b4b70b9aa0dd83761e8cbe043d042", @@ -70829,6 +71136,7 @@ "5737f972e8638831ab71e9139abae052": "6386e58bc1bba5e76baec9e8a1ca4b99dc3c573f", "95f8c41c6abf7640e35a6a03cecebd01": "4e83a94ae5155bbea14d7331a5a8db82457bd5ae", "8cd30d86b57f9236ab749165b240a2cc": "273a9933b68a290c5aedcd6d69faa7b1d22c0344", + "7cd7268b9e4a4357fe401021df0335b5": "50a548d1df3ea86f9b5fa669afd8ff124050e776", "8e18edce4a7acb2c33cc0ab18f988482": "61d0987b906146e21b94f265d5b51b4938c986a9", "e972fe42b398c9ff1d93ff014786aec6": "03bbb386cf530e804363acdfc1d13e64cf28af2e", "6af0402906944fd134004b85097c8524": "f34f0c330b44dbf2548329bea954d5991dec30ca", @@ -70842,6 +71150,7 @@ "f91c4a507cc6895bdd9c43df4f021df3": "b82e21b6e3214432b6dc13f650e97de88fc90a72", "5ad3baaad3b5156d6b60b34229a676fb": "6033a0535136c40c47137e4d1cd9273c06d5fdff", "f36f24cbb87745fbd2714e4df881db09": "55315b20fecb4441a07ee4bc5dc7153f396e0a2e", + "80115adf36136f30b23c10ea2dd83bef": "c6241e1c248193108ce38b9a8e9dd33972cf47ba", "55af78f877a21ca45eb2df68a74fcc60": "cf12e971623a54bf8c4f891ca3a36d969f205c49", "22167938f142c222f40992839aa21a06": "325a5e28c2a0d896711f8829e7ff14fed5dd4103", "3082dc488d32f30a612761b99074199b": "283be1ce417a759a3368bb4bbe72f692fd43ca6d", @@ -70886,10 +71195,15 @@ "561fa658d75427a80eafd3308bf68123": "0f80bbcb8f310e449d56e23118a230aa88d82bc2", "b745b4d4014195cf70208d3fd268cfea": "3494864cf6f00720d1a65d97f8574b8dee0d9c89", "77a0129e238cee7d2ec3bc92285b8c12": "a308b15f93da34961c0141ec95b98c211557e2d5", + "d943fb07669097c58a99df28250d1af2": "1fddd01dcc0fa8c002ced3a1a94873dccdc88424", + "5936c2e392b5dbab78af8321dbf05907": "8078648a1d27d34b7ddc09385edbaa04968c5bd6", + "2b325a004a7dc42d1d12962dd16169a8": "0f38c6579808e58b8401247946e6b4db0fed9ed6", + "8ce7ce2881a714125f46c4e368beae92": "31c60c0941faa705bd5afa0d457e9a25110e7e5d", "492a7cbc219c64a41562fef20317e2e4": "9be25b1af080aee863441cf0d25d0f984accb086", "7b63a5a0169aaa61ec3137fa7cdc3402": "0633f78a0013a62be974233a3cad6a5d3cbe90d1", "99bb4fafd75e57cfd9f3a8d4ac9303e2": "4e1d4a0deec702679961ffde470f8929d903bd5c", "a084ecdaf1ab0d0cc66511ea8d093d04": "cb30f01c46dad83343999c609d6f82092e2e8f54", + "09ca42e4ae249009dd78c3ea3049d287": "4b8cf615d3360267226352dc2c9d55b65924f05b", "30b76c45ca0712418239d2b15c65881a": "6ac3c1317c1acb83902397d7767763cca4de357a", "d7bc6e0584c7466407c399b495dab25c": "ac0f6402450bcf077aa95255e66e4c4c3cdd9ed8", "e540cada31a763e1d815adc7543a87bf": "50237ffea703b867de426ab9ebc2af46bac1d0e1", @@ -71614,8 +71928,8 @@ "5136f764a7dbd1352519351fbb53a9f3": "70e59b8abd67092f050462abc6cb5271e4c15f01", "1d63b6289c7e3566d411cf0682e401bc": "01f7a84d5a1973623eabd2be6c2cbac1ce5096a6", "df864344d2a2091c3f952bd1c5ce1707": "0d2ef6e67322f48f4b7e08d8bbe68827e2074561", - "eaa5158b07b439faab0db30e357f0af2": "3dd12d7ba54fee06a7e20dadb2c278a23a17af50", "8712a22e7e078de3343667d9fc1f2390": "7afc276cb118adff72e4f16698f94bf3b2c64146", + "eaa5158b07b439faab0db30e357f0af2": "3dd12d7ba54fee06a7e20dadb2c278a23a17af50", "642e8504adc72e7c16384dbdc1665fa2": "926b95e1cb574d4914dbed0681729a7c1a4bc68d", "2324c9cc227c1327a72a667c97ed2990": "9e9af51dae3199cccf49ab3f0d47e2b9be4ba97d", "0a814078410353744e2947a8e9342e4e": "35f92a0477a88f5cf564971125047ffcfa02ec10", @@ -71665,6 +71979,8 @@ "f69f173b251d8bf7649b10a9167a10bf": "6973e2593e66fd21627fedccec98d4a364afaaff", "f0fb8a4605ac7eefbafd4f2d5a793cc8": "f7412aa822d70a55b2ff3d7095137263dc54f6b6", "761fea207d0eafd4cfd78da7c44cac88": "c1b9202cbe072db12114b223a9ba5374b30718fb", + "e9ca30100c47a26b66488444c5b0bd15": "f402170ee4f374c304a7ce0b139d6cecb1732aff", + "ecef0b49f8f4e61874f012eb12ba0e36": "63d87e2a6618c3a9b2aabecf03ac2456e5e63410", "9d0e1ba4cce5817ce66639c954c9ae38": "874289e207c473cb1a5a6ac2aaa03ba49443fe3d", "ab544ba23671d9249fb08b385be7b995": "fa2f71ec68fc09e7980d56e509b143bae51a60cf", "e54025ba2722d5689f1ff2ed5cbc0cf1": "64dafd84a3f3d7eaf54b8ed44edb2bd908c3c68b", @@ -74896,8 +75212,8 @@ "a17397fb5408647a11d23bab959d1f97": "c0a04b87ad138e6754a6688ad757004467950c08", "65e1aab5fc5cba1b7374d9dddec25d62": "35e101f63194d75e234ef843ae6af893423b7f64", "6a07aeee664d81047672e6ff3541a12a": "e0c98d00fe3004942c4a2842f06e2702dd2bd7c7", - "79ea46603d716578d5f2b52eb4c33ca2": "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1", "78af465c2f31cf4e05dec1efda77da01": "c2166b91e6396a311f486832012aa43e0d2b19f8", + "79ea46603d716578d5f2b52eb4c33ca2": "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1", "a74f3d95b395dad7cdca19d560eeea74": "1f08455cd48ce6a06132aea15c4778f264e19539", "c73fb4bff9621c5ab17f6220b20db82f": "cecb7c24ff1e0ab5836e4a7a8eb1b8e01f1fded3", "c933316c7d939532a13648850c1c2aa6": "0f14dc46c647510eb0b7bd3f53e33da07907d04f", @@ -74915,6 +75231,7 @@ "f73da4d73d6db5cdb8b3cb6a50415e38": "2588b89a25be5c21cb2cf0abb51eca620e4a1bb6", "16d3ab9bc935f0d5651ca3f0e3030846": "827697fa5b755f5dc1efb054cdbbeb04e405405b", "091581001577b4a83ccfd511829de0f1": "a348a165009a6de1ae6fc18ed77137b38b6ed46d", + "e27c02fd766e8710240c59ef5424a6ef": "d89196292b9ebd787647cf91bbb83c63da2b4390", "a64b3ef9efcc066b18d35b134068d1cc": "04115be3f97952b9d9310b52f806d04f80b40d03", "8cab28f4b7311b8df63c07bb3b59bfd5": "10bdc5aa2d7d7f205f67b47b19003a4bd89defd1", "fda72f415afe99b36f953bb9bc1253da": "7275f1e3f165ff6a4657e4e5e24cb8b817239f54", @@ -74923,6 +75240,7 @@ "ef750d93d24d7bc87a8ecd6e5a15a845": "8fd64f1c246489e0bf2b3743ae76332ff324716a", "f29e94ff36577ffb6a787959e45bfe85": "4afff2b4c120334481aab7b02c3552bf76f1bc43", "88d1504e93366f498105a846cdbf7fb7": "70a464edf3a654ed4ffe687e6dee4f0d2acc758b", + "6fc82178ae8abe07fa8f6939062291dc": "9079a477c3f22e46cebb1e68b61df5bd607c71a4", "28dc97df470fb8660ef61b81dfd34f4a": "ad1beef9d6f095ada69f91d0b8ad75985172d86f", "7e7fb3daa64a29a3bb5927acc9a7055d": "026b5c2e4d04b2c8e7d569a852d62be9bca2f32c", "ed9816479dcea7dd88eedb97b9cb0d26": "fa66a874b735d3d984d66b529a54ae978a9b2766", @@ -74944,6 +75262,7 @@ "04714f43347cefb2a051a77116344b3f": "693f5b4fe1e5eb6429fd6614fb7bb14350939814", "3df4d280ad76edc0662c2e89ad4f2f74": "e05575b630bea7ff98b9ca1f083d745abb3110b6", "01770fde15c34ff88bb49526d38cb1f6": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6", + "12ae505e36b850030f5188e960864775": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", "813364d4863b1d7b7b8fd6a97a416bcf": "97f782e72d738f4d7b861363266bf46b438d9b50", "f2087ed09f7fa8d8856cfafb20dd00dc": "e0f5e2eced447abf9948342b2facc40179f0f527", "f7bcefb6daf923c8e5ea2eb69f619efe": "03368237e8fed4a8724f3b4a1596cf4b17c96d33", @@ -75045,6 +75364,9 @@ "7a8669daa77e4f6ff260d5a8b5470d34fc063068", "db67429100680a7a991822b8e2b1ca958df1e140" ], + "ROM311": [ + "3487729e87bebc9cb51665838c27beff22f7b3bd" + ], "archimedes_keyboard.zip": [ "baeb7254012b4a55893aba6e5c79ca747c02bdc3", "8d22783d40413a68038b2bff4dd4b263363a2c67" @@ -75129,6 +75451,9 @@ "pcw9512.zip": [ "844988dc5a36917b002d0140d3a7692d1407f783" ], + "341s0632-2": [ + "141d18c36a617ab9dce668445440d34354be0672" + ], "AppleIIe.rom": [ "b8ea90abe135a0031065e01697c4a3a20d51198b" ], @@ -75146,24 +75471,48 @@ "apple2-asoft-auto.rom": [ "33a24f5489ba9195b44be77d9afb2252594cb5c7" ], + "apple2-character.rom": [ + "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659" + ], "apple2-int-auto.rom": [ "2dfaf376fc6a0b106320911c1ebfc1512601dc6c" ], + "apple2.rom": [ + "8c5ca0c39005dfb0898af2c0992f797cc77530c0" + ], "apple2.zip": [ "e63ac5e5bd3443cb937916a78e7d4bb8d3c67c4b" ], + "apple2e-character.rom": [ + "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" + ], + "apple2e.rom": [ + "d756eba578a6c5a4807510dfee30ee585c63755e" + ], "apple2e.zip": [ "891f44b09ab1a948d3d887f8a30b9c9265849ada" ], "apple2ee.zip": [ "0bd2026795d117c33a5967b68fed8c54b3d95502" ], + "apple2eu-character.rom": [ + "7060de104046736529c1e8a687a0dd7b84f8c51b" + ], + "apple2eu.rom": [ + "9b041a861ae6ff99e466ad428700269db509ced6" + ], + "apple2gs.chr": [ + "34e2443e2ef960a36c047a09ed5a93f471797f89" + ], "apple2gs.rom": [ "bc32bc0e8902946663998f56aea52be597d9e361" ], "apple2gs.zip": [ "799e2fc90d6bfd8cb74e331e04d5afd36f2f21a1" ], + "apple2o.rom": [ + "78008be557f643e956a106121bcc182c0fb9ea6d" + ], "apple2p.zip": [ "e8c40d3a44a41a9b6b5dd3a993d7057b3bfb4086", "5ba8555f716bd48834858d8a7f42810ab7293b12" @@ -75190,12 +75539,18 @@ "mac.rom": [ "47cd505b6a7c46e5c0ffa29f0d5037c83e94a02f" ], + "mac128k.rom": [ + "9d86c883aa09f7ef5f086d9e32330ef85f1bc93b" + ], "mac128k.zip": [ "b63ea7435784f26bb99398890c707b21d7084769" ], "mac2fdhd.zip": [ "bcecee4379e0ecfa6dc0c49900dda3f8220d6ef0" ], + "mac512k.rom": [ + "5b1ced181b74cecd3834c49c2a4aa1d7ffe944d7" + ], "mac512k.zip": [ "0f033f8d7793c58d3ef5374174eec3ab86b33ba1" ], @@ -75231,6 +75586,9 @@ "macos75.img": [ "c44664a2a7a649696b0081373717a9cf821c52d3" ], + "macplus.rom": [ + "7d2f808a045aa3a1b242764f0e2c7d13e288bf1f" + ], "macplus.zip": [ "616a58ca17834f76f9e07e64919f1cc56ae41e28" ], @@ -75672,6 +76030,9 @@ "redearth.zip": [ "7821398e77ca91837548826773157c427a2ba018" ], + "redearthn.zip": [ + "a1c5727c93860381c4e65e1f04e204248678c702" + ], "sammymdl.zip": [ "2c178083ac2906cecb7e331d7111f7766a353052", "a2d1cfe34d5e62b7c8d6490383fb079ffe7f4a4a" @@ -75690,6 +76051,9 @@ "sfiii2.zip": [ "1c8b9163f121afba6f43d5a55dda504bb66a32c5" ], + "sfiii2h.zip": [ + "5e74fb0a1fab8a85a941e932049cb2ef79e64e9c" + ], "sfiii2j.zip": [ "b6410ccf4a291e028fb05848f8308200f9eb2ea7" ], @@ -82329,6 +82693,9 @@ "Kickstart v1.2 rev 33.166 (1986)(Commodore)(A1000).rom": [ "6a7bfb5dbd6b8f179f03da84d8d9528267b6273b" ], + "Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom": [ + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" + ], "WHDLoad.prefs": [ "455aa8688747daaa7e64122ba6871eaf51566727" ], @@ -82362,9 +82729,6 @@ "kick33180.A500.RTB": [ "1d1c557f4a0f5ea88aeb96d68b09f41990340f70" ], - "kick34005.A500": [ - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" - ], "kick34005.A500.RTB": [ "209c109855f94c935439b60950d049527d2f2484" ], @@ -82603,9 +82967,15 @@ "e004e25a8bb7bcd76a1aee7c2ec87b8fceda4332", "f2dab125673e653995a83bf6b793e3390ec7f65a" ], - "d200rom1.rom": [ + "alpha-basic.rom": [ "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" ], + "alpha-boot-v1.0.rom": [ + "4a5851aa66eb426e9bb0bba196f1e02d48156068" + ], + "d200e_1.rom": [ + "628543ee8b47a56df2b2175cfb763c0051517b90" + ], "d200rom2.rom": [ "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e" ], @@ -82681,6 +83051,9 @@ "TERAK.ROM": [ "273a9933b68a290c5aedcd6d69faa7b1d22c0344" ], + "basic11.bin": [ + "50a548d1df3ea86f9b5fa669afd8ff124050e776" + ], "basic20.rom": [ "61d0987b906146e21b94f265d5b51b4938c986a9" ], @@ -82714,12 +83087,15 @@ "exdos14isdos10uk.rom": [ "b82e21b6e3214432b6dc13f650e97de88fc90a72" ], - "exos20.rom": [ + "exos20.bin": [ "6033a0535136c40c47137e4d1cd9273c06d5fdff" ], "exos21.rom": [ "55315b20fecb4441a07ee4bc5dc7153f396e0a2e" ], + "exos23.bin": [ + "c6241e1c248193108ce38b9a8e9dd33972cf47ba" + ], "exos24uk.rom": [ "cf12e971623a54bf8c4f891ca3a36d969f205c49" ], @@ -82831,6 +83207,18 @@ "86c764x1.bin": [ "a308b15f93da34961c0141ec95b98c211557e2d5" ], + "CGA.F08": [ + "1fddd01dcc0fa8c002ced3a1a94873dccdc88424" + ], + "EUMDA9.F14": [ + "8078648a1d27d34b7ddc09385edbaa04968c5bd6" + ], + "GLABIOS_0.2.5_8T.ROM": [ + "0f38c6579808e58b8401247946e6b4db0fed9ed6" + ], + "Phoenix 80286 ROM BIOS Version 3.05.bin": [ + "31c60c0941faa705bd5afa0d457e9a25110e7e5d" + ], "acer386.bin": [ "9be25b1af080aee863441cf0d25d0f984accb086" ], @@ -82843,6 +83231,9 @@ "AMI_8088_BIOS_31JAN89.BIN": [ "cb30f01c46dad83343999c609d6f82092e2e8f54" ], + "at-bios.bin": [ + "4b8cf615d3360267226352dc2c9d55b65924f05b" + ], "awe32.raw": [ "6ac3c1317c1acb83902397d7767763cca4de357a" ], @@ -84548,12 +84939,12 @@ "microdis.rom": [ "0d2ef6e67322f48f4b7e08d8bbe68827e2074561" ], + "pravetz.rom": [ + "7afc276cb118adff72e4f16698f94bf3b2c64146" + ], "pravetzt.pch": [ "3dd12d7ba54fee06a7e20dadb2c278a23a17af50" ], - "pravetzt.rom": [ - "7afc276cb118adff72e4f16698f94bf3b2c64146" - ], "shell.rom": [ "926b95e1cb574d4914dbed0681729a7c1a4bc68d" ], @@ -84614,6 +85005,7 @@ ], "bios.bin": [ "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9", + "f402170ee4f374c304a7ce0b139d6cecb1732aff", "64dafd84a3f3d7eaf54b8ed44edb2bd908c3c68b" ], "vgabios-stdvga.bin": [ @@ -84622,6 +85014,7 @@ ], "vgabios.bin": [ "214f09a25012e8702783d3ab9a22796071de5374", + "63d87e2a6618c3a9b2aabecf03ac2456e5e63410", "f638542f51f2dd15d3206c66fe5f96e563f54817" ], "fw_payload.bin": [ @@ -93538,12 +93931,12 @@ "DBPATCH.WAV": [ "e0c98d00fe3004942c4a2842f06e2702dd2bd7c7" ], + "alice.rom": [ + "c2166b91e6396a311f486832012aa43e0d2b19f8" + ], "alice32.rom": [ "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1" ], - "alice4k.rom": [ - "c2166b91e6396a311f486832012aa43e0d2b19f8" - ], "bas10.rom": [ "1f08455cd48ce6a06132aea15c4778f264e19539" ], @@ -93583,9 +93976,12 @@ "cp400dsk.rom": [ "827697fa5b755f5dc1efb054cdbbeb04e405405b" ], - "cp400extbas.rom": [ + "cp400ext.rom": [ "a348a165009a6de1ae6fc18ed77137b38b6ed46d" ], + "deluxe.rom": [ + "d89196292b9ebd787647cf91bbb83c63da2b4390" + ], "disk10.rom": [ "04115be3f97952b9d9310b52f806d04f80b40d03" ], @@ -93610,6 +94006,9 @@ "mx1600bas.rom": [ "70a464edf3a654ed4ffe687e6dee4f0d2acc758b" ], + "mx1600extbas.rom": [ + "9079a477c3f22e46cebb1e68b61df5bd607c71a4" + ], "xroarbios.rom": [ "ad1beef9d6f095ada69f91d0b8ad75985172d86f" ], @@ -93669,6 +94068,9 @@ "ti-disk.ctg": [ "693f5b4fe1e5eb6429fd6614fb7bb14350939814" ], + "mo5-v1.1.rom": [ + "8d2865996a1a8d8a13fc9965c1bcf490f9621399" + ], "external.bin": [ "97f782e72d738f4d7b861363266bf46b438d9b50" ], @@ -93785,6 +94187,18 @@ "sanyo_hc21_b3_unenc.bin": [ "c389af32bcadf0d86826927dc3d20b7072f90069" ], + "apple2gs.rom2": [ + "bc32bc0e8902946663998f56aea52be597d9e361" + ], + "apple2gs3.rom": [ + "bc32bc0e8902946663998f56aea52be597d9e361" + ], + "ROM03.ROM": [ + "bc32bc0e8902946663998f56aea52be597d9e361" + ], + "ROM.ROM": [ + "bc32bc0e8902946663998f56aea52be597d9e361" + ], "disk2-13seq.rom": [ "afd060e6f35faf3bb0146fa889fc787adf56330a" ], @@ -93815,6 +94229,12 @@ "lynxboot.img": [ "e4ed47fae31693e016b081c6bda48da5b70d7ccb" ], + "tos100.img": [ + "9a6e4c88533a9eaa4d55cdc040e47443e0226eb2" + ], + "tos100uk.img": [ + "9a6e4c88533a9eaa4d55cdc040e47443e0226eb2" + ], "tos102uk.img": [ "87900a40a890fdf03bd08be6c60cc645855cbce5" ], @@ -93842,6 +94262,12 @@ "kick37350.A600": [ "02843c4253bbd29aba535b0aa3bd9a85034ecde4" ], + "kick34005.A500": [ + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" + ], + "amiga-os-130.rom": [ + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" + ], "C64_Basic.bin": [ "79015323128650c742a3694c9429aa91f355905e" ], @@ -93866,6 +94292,42 @@ "kernal": [ "1d503e56df85a62fee696e7618dc5b4e781df1bb" ], + "basic.318006-01.bin": [ + "161c96b4ad20f3a4f2321808e37a5ded26a135dd" + ], + "kernal.318004-05.bin": [ + "7c7e07f016391174a557e790c4ef1cbe33512cdb" + ], + "basic.bin": [ + "587d1e90950675ab6b12d91248a3f0d640d02e8d" + ], + "characters-english.bin": [ + "4fd85ab6647ee2ac7ba40f729323f2472d35b9b4" + ], + "kernel-ntsc.bin": [ + "06de7ec017a5e78bd6746d89c2ecebb646efeb19" + ], + "kernel-pal.bin": [ + "ce0137ed69f003a299f43538fa9eee27898e621e" + ], + "d200rom1.rom": [ + "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" + ], + "d64tano.rom": [ + "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" + ], + "alpha_ba": [ + "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" + ], + "Dragon Data Ltd - Dragon Alpga Basic": [ + "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" + ], + "exos20.rom": [ + "6033a0535136c40c47137e4d1cd9273c06d5fdff" + ], + "Expandible OS v2.0 (1984)(Intelligent Software).bin": [ + "6033a0535136c40c47137e4d1cd9273c06d5fdff" + ], "sl31253.bin": [ "81193965a374d77b99b4743d317824b53c3e3c78" ], @@ -93897,6 +94359,15 @@ "e998f0c441f4f1800ef44e42cd1659150206cf79", "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498" ], + "msx.rom": [ + "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498" + ], + "Machines/Shared Roms/MSX.rom": [ + "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498" + ], + "msx2.rom": [ + "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e" + ], "nms8250_basic-bios2.rom": [ "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e" ], @@ -93906,8 +94377,8 @@ "nms8245_basic-bios2.rom": [ "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e" ], - "nms8250_disk.rom": [ - "c3efedda7ab947a06d9345f7b8261076fa7ceeef" + "msx2ext.rom": [ + "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02" ], "nms8250_msx2sub.rom": [ "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02" @@ -93915,6 +94386,9 @@ "MSX2EXT.rom": [ "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02" ], + "nms8250_disk.rom": [ + "c3efedda7ab947a06d9345f7b8261076fa7ceeef" + ], "px-7_basic-bios1.rom": [ "302afb5d8be26c758309ca3df611ae69cced2821" ], @@ -94068,6 +94542,9 @@ "SGB2.sfc": [ "e5b2922ca137051059e4269b236d07a22c07bc84" ], + "pravetzt.rom": [ + "7afc276cb118adff72e4f16698f94bf3b2c64146" + ], "O2_Odyssey2.bin": [ "b2e1955d957a475de2411770452eff4ea19f4cee" ], @@ -94645,8 +95122,11 @@ "SCPH-70004_BIOS_V12_EUR_200.ROM2": [ "1bae895fbdd658cfb56c53cc2139282cc1e778de" ], - "tos100uk.img": [ - "9a6e4c88533a9eaa4d55cdc040e47443e0226eb2" + "alice4k.rom": [ + "c2166b91e6396a311f486832012aa43e0d2b19f8" + ], + "cp400extbas.rom": [ + "a348a165009a6de1ae6fc18ed77137b38b6ed46d" ], "tos106de.img": [ "3b8cf5ffa41b252eb67f8824f94608fa4005d6dd" @@ -94702,15 +95182,6 @@ "Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A1000-A2000).rom": [ "11f9e62cf299f72184835b7b2a70a16333fc0d88" ], - "amiga-os-130.rom": [ - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" - ], - "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom": [ - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" - ], - "Kickstart v1.3 rev 34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV).rom": [ - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785" - ], "amiga-os-204.rom": [ "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1" ], @@ -94805,9 +95276,6 @@ "zxs:48.rom": [ "5ea7c2b824672e914525d1d5c419d71b84a426a2" ], - "Machines/Shared Roms/MSX.rom": [ - "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498" - ], "sony-playstation:239665b1a3dade1b5a52c06338011044": [ "343883a7b555646da8cee54aadd2795b6e7dd070" ], @@ -95225,15 +95693,6 @@ "sega-saturn:0306c0e408d6682dd2d86324bd4ac661": [ "8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc" ], - "apple2gs3.rom": [ - "bc32bc0e8902946663998f56aea52be597d9e361" - ], - "ROM03.ROM": [ - "bc32bc0e8902946663998f56aea52be597d9e361" - ], - "ROM.ROM": [ - "bc32bc0e8902946663998f56aea52be597d9e361" - ], "FMPAC.rom": [ "9d789166e3caf28e4742fe933d962e99618c633d" ], @@ -95255,9 +95714,6 @@ "d64_2.rom": [ "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e" ], - "d64tano.rom": [ - "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69" - ], "flash.bin": [ "94d44d7f9529ec1642ba3771ed3c5f756d5bc872" ], @@ -96591,9 +97047,24 @@ "Dragon Data Ltd - Dragon 32 - IC17": [ "f2dab125673e653995a83bf6b793e3390ec7f65a" ], + "d200e_rom1": [ + "628543ee8b47a56df2b2175cfb763c0051517b90" + ], + "ic18_v1.4e.ic34": [ + "628543ee8b47a56df2b2175cfb763c0051517b90" + ], + "alpha_bt_10": [ + "4a5851aa66eb426e9bb0bba196f1e02d48156068" + ], + "Dragon Data Ltd - Dragon Alpha Boot v1.0 150584": [ + "4a5851aa66eb426e9bb0bba196f1e02d48156068" + ], "Color Basic v1.2 (1982)(Tandy)": [ "0f14dc46c647510eb0b7bd3f53e33da07907d04f" ], + "adv070_u24": [ + "d89196292b9ebd787647cf91bbb83c63da2b4390" + ], "mx1600bas_zephyr": [ "70a464edf3a654ed4ffe687e6dee4f0d2acc758b" ], @@ -96636,12 +97107,12 @@ "kanji2.rom": [ "b86b932cb4ce34472e0fe0f01a4a4350e15dcb53" ], + "Expandible OS v2.3 (1987)(Intelligent Software).bin": [ + "c6241e1c248193108ce38b9a8e9dd33972cf47ba" + ], "arm6.program.rom": [ "388e3721b94cd074d6ba0eca8616523d2118a6c3" ], - "EXOS20.ROM": [ - "6033a0535136c40c47137e4d1cd9273c06d5fdff" - ], "EXDOS14.ROM": [ "cb43ab3676b93c279f1ed8ffcb0d4dcd4b34e631" ], @@ -96742,6 +97213,7 @@ "d5cbc509": "b01c53da256dde43ffec4ad3fc3adfa8d635e943", "a64058f0": "d2cce3ff07afa9d13ea371499495f4df9611420c", "09ec70cc": "7a8669daa77e4f6ff260d5a8b5470d34fc063068", + "54c0c963": "3487729e87bebc9cb51665838c27beff22f7b3bd", "9287f1f7": "db67429100680a7a991822b8e2b1ca958df1e140", "bb049d88": "baeb7254012b4a55893aba6e5c79ca747c02bdc3", "440ff82b": "1203096ca9d0748ba722066f47f089513a9be151", @@ -96772,17 +97244,26 @@ "1fe22ecd": "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb", "e685bd58": "f8a11b4e03bb8c3caee604ca591676eab6535d1b", "bade516d": "844988dc5a36917b002d0140d3a7692d1407f783", + "e1c11fb0": "141d18c36a617ab9dce668445440d34354be0672", "1d70b193": "b8ea90abe135a0031065e01697c4a3a20d51198b", "ce7144f6": "d4181c9f046aafc3fb326b381baac809d9e38d16", "669f3e91": "e8af33c0904b422841080a5ee25935f5ea1f3781", "1dcd4719": "d9bb189730e15d46c27e7246d7bb23137e7d761e", "1d05c1b1": "33a24f5489ba9195b44be77d9afb2252594cb5c7", + "64f415c6": "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659", "2dcec5cb": "2dfaf376fc6a0b106320911c1ebfc1512601dc6c", + "f66f9c26": "8c5ca0c39005dfb0898af2c0992f797cc77530c0", "e7dc5a90": "e63ac5e5bd3443cb937916a78e7d4bb8d3c67c4b", + "2651014d": "b2b5d87f52693817fc747df087a4aa1ddcdb1f10", + "65989942": "d756eba578a6c5a4807510dfee30ee585c63755e", "726b604c": "891f44b09ab1a948d3d887f8a30b9c9265849ada", "505407fe": "0bd2026795d117c33a5967b68fed8c54b3d95502", + "b081df66": "7060de104046736529c1e8a687a0dd7b84f8c51b", + "e12be18d": "9b041a861ae6ff99e466ad428700269db509ced6", + "91e53cd8": "34e2443e2ef960a36c047a09ed5a93f471797f89", "de7ddf29": "bc32bc0e8902946663998f56aea52be597d9e361", "4f923a35": "799e2fc90d6bfd8cb74e331e04d5afd36f2f21a1", + "ba210588": "78008be557f643e956a106121bcc182c0fb9ea6d", "665cd50f": "e8c40d3a44a41a9b6b5dd3a993d7057b3bfb4086", "d34eb2ff": "afd060e6f35faf3bb0146fa889fc787adf56330a", "b72a2c70": "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4", @@ -96791,8 +97272,10 @@ "30f5d7a6": "134eab28dcb54854013f348078fb69bfb6329a8b", "4a5258ae": "601460f725cbe21711b4e7bc627614a0667caf05", "1735e7a5": "47cd505b6a7c46e5c0ffa29f0d5037c83e94a02f", + "6d0c8a28": "9d86c883aa09f7ef5f086d9e32330ef85f1bc93b", "ffe2524b": "b63ea7435784f26bb99398890c707b21d7084769", "c37b828c": "bcecee4379e0ecfa6dc0c49900dda3f8220d6ef0", + "cf759e0d": "5b1ced181b74cecd3834c49c2a4aa1d7ffe944d7", "43272790": "0f033f8d7793c58d3ef5374174eec3ab86b33ba1", "69a1983e": "817fbb2bbce56bf8e473ee2525ca34bcdeaddb90", "dcfc228d": "39a3243624df5a962c160c7bc1535b50c538f0bd", @@ -96804,6 +97287,7 @@ "febb735f": "fb89deb29ff341e92fd30307934f7c7616c2c8e2", "33c18479": "37b3c669ac03f855ed14affbded280af7a78525e", "5009917e": "c44664a2a7a649696b0081373717a9cf821c52d3", + "b2102e8e": "7d2f808a045aa3a1b242764f0e2c7d13e288bf1f", "332c11d6": "616a58ca17834f76f9e07e64919f1cc56ae41e28", "73cb32d5": "0e36e6df4a5c468939f8c136f6d0f0d4aed81a47", "4df6d054": "db6b504744281369794e26ba71a6e385cf6227fa", @@ -96940,11 +97424,13 @@ "f76450f8": "ed7d7a1de52042e1b0d9467f41c5105620fa165a", "d85f005e": "f1ccedb2c6e8f15cfebab52c3923e4b35f4df43f", "24e90480": "7821398e77ca91837548826773157c427a2ba018", + "f6444e33": "a1c5727c93860381c4e65e1f04e204248678c702", "c92cc7db": "2c178083ac2906cecb7e331d7111f7766a353052", "c6406ea3": "de78a0b8df78d5ffdb1a274f80d877a96ef204aa", "1e4a1866": "14311945b06a5d013d1df5ce961ab47fbd46fb2a", "03ecd264": "b23ce6c1cc03e366cedcba01e9f01e7ed47c7856", "7290dea5": "1c8b9163f121afba6f43d5a55dda504bb66a32c5", + "5009e9d4": "5e74fb0a1fab8a85a941e932049cb2ef79e64e9c", "4caf4084": "b6410ccf4a291e028fb05848f8308200f9eb2ea7", "8dca006c": "79fbda9ec65e377a4e0e70bfd70bd4447f286ddd", "51303c12": "908a53ee5dc154dc8e429ec9637b37b22f223f6d", @@ -99267,6 +99753,7 @@ "3aa93ef3": "45bedc4cbdeac66c7df59e9e599195c778d86a92", "d3078160": "eaa7b491d412c735a03952405a1112c079948950", "9ed783d0": "6a7bfb5dbd6b8f179f03da84d8d9528267b6273b", + "c4f0f55f": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "bfa2be8c": "455aa8688747daaa7e64122ba6871eaf51566727", "413acfc9": "5a9d9c387162e280512f5ebd169c01125c8dda4b", "43b0df7b": "02843c4253bbd29aba535b0aa3bd9a85034ecde4", @@ -99278,7 +99765,6 @@ "f6290043": "90933936cce43ca9bc6bf375662c076b27e3c458", "a6ce1636": "11f9e62cf299f72184835b7b2a70a16333fc0d88", "c61d5663": "1d1c557f4a0f5ea88aeb96d68b09f41990340f70", - "c4f0f55f": "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "ae7a9ac7": "209c109855f94c935439b60950d049527d2f2484", "42baa124": "7ba40ffa17e500ed9fed041f3424bd81d9c907be", "c3bdb240": "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1", @@ -99359,6 +99845,8 @@ "ae2635ef": "eadb966430454b40a17387acc7302ff1683cc9f2", "ff7bf41e": "e004e25a8bb7bcd76a1aee7c2ec87b8fceda4332", "84f68bf9": "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", + "c3dab585": "4a5851aa66eb426e9bb0bba196f1e02d48156068", + "95af0a0a": "628543ee8b47a56df2b2175cfb763c0051517b90", "17893a42": "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e", "e3879310": "f2dab125673e653995a83bf6b793e3390ec7f65a", "60a4634c": "f119506eaa3b4b70b9aa0dd83761e8cbe043d042", @@ -99385,6 +99873,7 @@ "b90a52e8": "6386e58bc1bba5e76baec9e8a1ca4b99dc3c573f", "26c6e8a0": "4e83a94ae5155bbea14d7331a5a8db82457bd5ae", "fd654b8e": "273a9933b68a290c5aedcd6d69faa7b1d22c0344", + "683cf455": "50a548d1df3ea86f9b5fa669afd8ff124050e776", "1228de34": "61d0987b906146e21b94f265d5b51b4938c986a9", "55f96251": "03bbb386cf530e804363acdfc1d13e64cf28af2e", "6999d6a3": "f34f0c330b44dbf2548329bea954d5991dec30ca", @@ -99398,6 +99887,7 @@ "a0d2808f": "b82e21b6e3214432b6dc13f650e97de88fc90a72", "d421795f": "6033a0535136c40c47137e4d1cd9273c06d5fdff", "982a3b44": "55315b20fecb4441a07ee4bc5dc7153f396e0a2e", + "24838410": "c6241e1c248193108ce38b9a8e9dd33972cf47ba", "c099a5e3": "cf12e971623a54bf8c4f891ca3a36d969f205c49", "596ab6d6": "325a5e28c2a0d896711f8829e7ff14fed5dd4103", "76c9dbf6": "283be1ce417a759a3368bb4bbe72f692fd43ca6d", @@ -99442,10 +99932,15 @@ "f7e6bcfa": "0f80bbcb8f310e449d56e23118a230aa88d82bc2", "af55cc51": "3494864cf6f00720d1a65d97f8574b8dee0d9c89", "bbdc5d5b": "a308b15f93da34961c0141ec95b98c211557e2d5", + "a362ffe6": "1fddd01dcc0fa8c002ced3a1a94873dccdc88424", + "7754882a": "8078648a1d27d34b7ddc09385edbaa04968c5bd6", + "9576944c": "0f38c6579808e58b8401247946e6b4db0fed9ed6", + "8d0d318a": "31c60c0941faa705bd5afa0d457e9a25110e7e5d", "8708727c": "9be25b1af080aee863441cf0d25d0f984accb086", "56ea4d9d": "0633f78a0013a62be974233a3cad6a5d3cbe90d1", "6b4a821a": "4e1d4a0deec702679961ffde470f8929d903bd5c", "0bcafd1f": "cb30f01c46dad83343999c609d6f82092e2e8f54", + "674426be": "4b8cf615d3360267226352dc2c9d55b65924f05b", "ceb2787e": "6ac3c1317c1acb83902397d7767763cca4de357a", "0a79415a": "ac0f6402450bcf077aa95255e66e4c4c3cdd9ed8", "36307aa9": "50237ffea703b867de426ab9ebc2af46bac1d0e1", @@ -100170,8 +100665,8 @@ "37220e89": "70e59b8abd67092f050462abc6cb5271e4c15f01", "356231a6": "01f7a84d5a1973623eabd2be6c2cbac1ce5096a6", "a9664a9c": "0d2ef6e67322f48f4b7e08d8bbe68827e2074561", - "46bab02d": "3dd12d7ba54fee06a7e20dadb2c278a23a17af50", "58079502": "7afc276cb118adff72e4f16698f94bf3b2c64146", + "46bab02d": "3dd12d7ba54fee06a7e20dadb2c278a23a17af50", "8d166635": "926b95e1cb574d4914dbed0681729a7c1a4bc68d", "68b0fde6": "9e9af51dae3199cccf49ab3f0d47e2b9be4ba97d", "94358dc6": "35f92a0477a88f5cf564971125047ffcfa02ec10", @@ -100221,6 +100716,8 @@ "a8cb694c": "6973e2593e66fd21627fedccec98d4a364afaaff", "01223dd5": "f7412aa822d70a55b2ff3d7095137263dc54f6b6", "76116a02": "c1b9202cbe072db12114b223a9ba5374b30718fb", + "9a28471e": "f402170ee4f374c304a7ce0b139d6cecb1732aff", + "bbc57207": "63d87e2a6618c3a9b2aabecf03ac2456e5e63410", "c32b58cf": "874289e207c473cb1a5a6ac2aaa03ba49443fe3d", "88b9f52b": "fa2f71ec68fc09e7980d56e509b143bae51a60cf", "e1101e30": "64dafd84a3f3d7eaf54b8ed44edb2bd908c3c68b", @@ -103452,8 +103949,8 @@ "4d222ced": "c0a04b87ad138e6754a6688ad757004467950c08", "829b27aa": "35e101f63194d75e234ef843ae6af893423b7f64", "1ade9254": "e0c98d00fe3004942c4a2842f06e2702dd2bd7c7", - "c3854ddf": "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1", "f876abe9": "c2166b91e6396a311f486832012aa43e0d2b19f8", + "c3854ddf": "f34e61c3cf711fb59ff4f1d4c0d2863dab0ab5d1", "00b50aaa": "1f08455cd48ce6a06132aea15c4778f264e19539", "6270955a": "cecb7c24ff1e0ab5836e4a7a8eb1b8e01f1fded3", "54368805": "0f14dc46c647510eb0b7bd3f53e33da07907d04f", @@ -103471,6 +103968,7 @@ "0b2903d4": "2588b89a25be5c21cb2cf0abb51eca620e4a1bb6", "e9ad60a0": "827697fa5b755f5dc1efb054cdbbeb04e405405b", "114accbc": "a348a165009a6de1ae6fc18ed77137b38b6ed46d", + "1cce231e": "d89196292b9ebd787647cf91bbb83c63da2b4390", "b4f9968e": "04115be3f97952b9d9310b52f806d04f80b40d03", "0b9c5415": "10bdc5aa2d7d7f205f67b47b19003a4bd89defd1", "e031d076": "7275f1e3f165ff6a4657e4e5e24cb8b817239f54", @@ -103479,6 +103977,7 @@ "867a3f42": "8fd64f1c246489e0bf2b3743ae76332ff324716a", "11fda97e": "4afff2b4c120334481aab7b02c3552bf76f1bc43", "d918156e": "70a464edf3a654ed4ffe687e6dee4f0d2acc758b", + "322a3d58": "9079a477c3f22e46cebb1e68b61df5bd607c71a4", "b0717d71": "ad1beef9d6f095ada69f91d0b8ad75985172d86f", "e9443331": "026b5c2e4d04b2c8e7d569a852d62be9bca2f32c", "34e1d87e": "fa66a874b735d3d984d66b529a54ae978a9b2766", @@ -103500,6 +103999,7 @@ "1a52b40c": "693f5b4fe1e5eb6429fd6614fb7bb14350939814", "f93bd9f7": "e05575b630bea7ff98b9ca1f083d745abb3110b6", "71879a28": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6", + "237c60bf": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", "e235a589": "97f782e72d738f4d7b861363266bf46b438d9b50", "9ed23a12": "e0f5e2eced447abf9948342b2facc40179f0f527", "a0cec361": "03368237e8fed4a8724f3b4a1596cf4b17c96d33", @@ -116748,20 +117248,25 @@ "fe7f9c9c6a98910013bf13f2cf798de9fea52acd", "1d0db81e171ebc1d07cefc8ce8ab082306186e56", "c389af32bcadf0d86826927dc3d20b7072f90069", + "bc32bc0e8902946663998f56aea52be597d9e361", "3693c9cb9bf3b41bae1150f7a8264992468fc8c0", "d9d134bb6b36907c615a594cc7688f7bfcef5b43", "5a140136a16d1d83e4ff32a19409ca376a8df874", "e4ed47fae31693e016b081c6bda48da5b70d7ccb", + "9a6e4c88533a9eaa4d55cdc040e47443e0226eb2", "87900a40a890fdf03bd08be6c60cc645855cbce5", "9526ef63b9cb1d2a7109e278547ae78a5c1db6c6", "06f9ea322e74b682df0396acfaee8cb4d9c90cad", "45bedc4cbdeac66c7df59e9e599195c778d86a92", "02843c4253bbd29aba535b0aa3bd9a85034ecde4", + "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "79015323128650c742a3694c9429aa91f355905e", "adc7c31e18c7c7413d54802ef2f4193da14711aa", "ab16f56989b27d89babe5f89c5a8cb3da71a82f0", "d3b78c3dbac55f5199f33f3fe0036439811f7fb3", "1d503e56df85a62fee696e7618dc5b4e781df1bb", + "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", + "6033a0535136c40c47137e4d1cd9273c06d5fdff", "81193965a374d77b99b4743d317824b53c3e3c78", "8f70d1b74483ba3a37e86cf16c849d601a8c3d2c", "759e2ed31fbde4a2d8daf8b9f3e0dffebc90dae2", @@ -116770,6 +117275,7 @@ "f9608bb4ad1cfe3640d02844c7ad8e0bcd974917", "df48902f5f12af8867ae1a87f255145f0e5e0774", "e998f0c441f4f1800ef44e42cd1659150206cf79", + "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498", "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e", "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02", "302afb5d8be26c758309ca3df611ae69cced2821", @@ -116795,6 +117301,7 @@ "aa2f50a77dfb4823da96ba99309085a3c6278515", "93407ea10d2f30ab96a314d8eca44fe160aea734", "e5b2922ca137051059e4269b236d07a22c07bc84", + "7afc276cb118adff72e4f16698f94bf3b2c64146", "b2e1955d957a475de2411770452eff4ea19f4cee", "a6120aed50831c9c0d95dbdf707820f601d9452e", "5130243429b40b01a14e1304d0394b8459a6fbae", @@ -116818,7 +117325,8 @@ "80080644289ed93d71a1103992a154cc9802b2fa", "1a8d6f9453111b1d317bb7dae300495fbf54600c", "434bc0b4eb4827da0773ec0795aadc5162569a07", - "9a6e4c88533a9eaa4d55cdc040e47443e0226eb2", + "c2166b91e6396a311f486832012aa43e0d2b19f8", + "a348a165009a6de1ae6fc18ed77137b38b6ed46d", "3b8cf5ffa41b252eb67f8824f94608fa4005d6dd", "ee58768bdfc602c9b14942ce5481e97dd24e7c83", "2b8cb4f87580683eb4d760e4ed210813d667f0a2", @@ -116831,7 +117339,6 @@ "dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06", "7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6", "11f9e62cf299f72184835b7b2a70a16333fc0d88", - "891e9a547772fe0c6c19b610baf8bc4ea7fcb785", "c5839f5cb98a7a8947065c3ed2f14f5f42e334a1", "3b7f1493b27e212830f989f26ca76c02049f09ca", "7ba40ffa17e500ed9fed041f3424bd81d9c907be", @@ -116847,7 +117354,6 @@ "03bbb386cf530e804363acdfc1d13e64cf28af2e", "55315b20fecb4441a07ee4bc5dc7153f396e0a2e", "5ea7c2b824672e914525d1d5c419d71b84a426a2", - "409e82adac40f6bdd18eb6c84e8b2fbdc7fb5498", "343883a7b555646da8cee54aadd2795b6e7dd070", "b06f4a861f74270be819aa2a07db8d0563a7cc4e", "649895efd79d14790eabb362e94eb0622093dfb9", @@ -116964,12 +117470,10 @@ "49d8493008fa715ca0c94d99817a5439d6f2c796", "8a22710e09ce75f39625894366cafe503ed1942d", "8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc", - "bc32bc0e8902946663998f56aea52be597d9e361", "9d789166e3caf28e4742fe933d962e99618c633d", "e90f80a61d94c617850c415e12ad70ac41e66bb7", "04990aa1c3a3fc7294ec884b81deaa89832df614", "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e", - "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", "94d44d7f9529ec1642ba3771ed3c5f756d5bc872", "65f031caa8148a5493afe42c41f4929deab26b4e", "f119506eaa3b4b70b9aa0dd83761e8cbe043d042", @@ -117113,7 +117617,10 @@ "4891d739a8a8b67923681bad4fb67edab2e90e50", "6e89d1227581c76441a53d605f9e324185f1da33", "f2dab125673e653995a83bf6b793e3390ec7f65a", + "628543ee8b47a56df2b2175cfb763c0051517b90", + "4a5851aa66eb426e9bb0bba196f1e02d48156068", "0f14dc46c647510eb0b7bd3f53e33da07907d04f", + "d89196292b9ebd787647cf91bbb83c63da2b4390", "70a464edf3a654ed4ffe687e6dee4f0d2acc758b", "ef157016386ed463374de6bac84d1f8ce654ed80", "d1ae642aed4f0584eeb81ff50180db694e5101d4", @@ -117123,8 +117630,8 @@ "063609dd518c124a4fc9ba35d1bae35771666a34", "8063185d4dd653dd75a68855148c9ee15b71164c", "b86b932cb4ce34472e0fe0f01a4a4350e15dcb53", + "c6241e1c248193108ce38b9a8e9dd33972cf47ba", "388e3721b94cd074d6ba0eca8616523d2118a6c3", - "6033a0535136c40c47137e4d1cd9273c06d5fdff", "cb43ab3676b93c279f1ed8ffcb0d4dcd4b34e631", "f2572ee83d09fc08f4de4a62f101c8bb301a9505", "abf119cf947ea32defd08b29a8a25d75f6bd4987", diff --git a/mkdocs.yml b/mkdocs.yml index 8d3d08b0..1974281f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -122,6 +122,7 @@ nav: - Synertek: systems/synertek.md - Tandy: systems/tandy.md - Texas Instruments: systems/texas-instruments.md + - Thomson: systems/thomson.md - Tiger: systems/tiger.md - Timex: systems/timex.md - Tomy: systems/tomy.md diff --git a/scripts/generate_pack.py b/scripts/generate_pack.py index 0cfbc666..1f1c4824 100644 --- a/scripts/generate_pack.py +++ b/scripts/generate_pack.py @@ -337,8 +337,10 @@ def _collect_emulator_extras( for u in undeclared: if not u["in_repo"]: continue - name = u["name"] - dest = u.get("path") or name + # For archive entries, use the archive name for resolution + archive = u.get("archive") + name = archive if archive else u["name"] + dest = archive if archive else (u.get("path") or u["name"]) full_dest = f"{base_dest}/{dest}" if base_dest else dest if full_dest in seen: continue diff --git a/scripts/generate_readme.py b/scripts/generate_readme.py index 510fb494..0bd78fdf 100644 --- a/scripts/generate_readme.py +++ b/scripts/generate_readme.py @@ -128,6 +128,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str: "RetroArch": "`system/`", "Lakka": "`system/`", "Batocera": "`/userdata/bios/`", + "BizHawk": "`Firmware/`", "Recalbox": "`/recalbox/share/bios/`", "RetroBat": "`bios/`", "RetroPie": "`BIOS/`", diff --git a/scripts/verify.py b/scripts/verify.py index 0004f478..316a0fc9 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -246,6 +246,18 @@ def _build_expected(file_entry: dict, checks: list[str]) -> dict: expected["adler32"] = adler_val return expected +def _name_in_index(name: str, by_name: dict, by_path_suffix: dict | None = None) -> bool: + """Check if a name is resolvable in the database indexes.""" + if name in by_name: + return True + basename = name.rsplit("/", 1)[-1] + if basename != name and basename in by_name: + return True + if by_path_suffix and name in by_path_suffix: + return True + return False + + def find_undeclared_files( config: dict, emulators_dir: str, @@ -271,12 +283,16 @@ def find_undeclared_files( declared_dd.add(ref) by_name = db.get("indexes", {}).get("by_name", {}) + by_path_suffix = db.get("indexes", {}).get("by_path_suffix", {}) profiles = emu_profiles if emu_profiles is not None else load_emulator_profiles(emulators_dir) relevant = resolve_platform_cores(config, profiles, target_cores=target_cores) standalone_set = set(str(c) for c in config.get("standalone_cores", [])) undeclared = [] - seen = set() + seen_files: set[str] = set() + # Track archives: archive_name -> {in_repo, emulator, files: [...], ...} + archive_entries: dict[str, dict] = {} + for emu_name, profile in sorted(profiles.items()): if profile.get("type") in ("launcher", "alias"): continue @@ -290,7 +306,7 @@ def find_undeclared_files( for f in profile.get("files", []): fname = f.get("name", "") - if not fname or fname in seen: + if not fname or fname in seen_files: continue # Skip pattern placeholders (e.g., .bin) if "<" in fname or ">" in fname or "*" in fname: @@ -301,7 +317,44 @@ def find_undeclared_files( continue if file_mode == "libretro" and is_standalone: continue + + archive = f.get("archive") + + # Skip files declared by the platform (by name or archive) if fname in declared_names: + seen_files.add(fname) + continue + if archive and archive in declared_names: + seen_files.add(fname) + continue + + seen_files.add(fname) + + # Archived files are grouped by archive + if archive: + if archive not in archive_entries: + in_repo = _name_in_index(archive, by_name, by_path_suffix) + archive_entries[archive] = { + "emulator": profile.get("emulator", emu_name), + "name": archive, + "archive": archive, + "path": archive, + "required": False, + "hle_fallback": False, + "category": f.get("category", "bios"), + "in_repo": in_repo, + "note": "", + "checks": [], + "source_ref": None, + "expected": {}, + "archive_file_count": 0, + "archive_required_count": 0, + } + entry = archive_entries[archive] + entry["archive_file_count"] += 1 + if f.get("required", False): + entry["archive_required_count"] += 1 + entry["required"] = True continue # Determine destination path based on mode @@ -310,8 +363,12 @@ def find_undeclared_files( else: dest = f.get("path") or fname - in_repo = fname in by_name or fname.rsplit("/", 1)[-1] in by_name - seen.add(fname) + # Resolution: try name, then path basename, then path_suffix + in_repo = _name_in_index(fname, by_name, by_path_suffix) + if not in_repo and dest != fname: + path_base = dest.rsplit("/", 1)[-1] + in_repo = _name_in_index(path_base, by_name, by_path_suffix) + checks = _parse_validation(f.get("validation")) undeclared.append({ "emulator": profile.get("emulator", emu_name), @@ -327,6 +384,10 @@ def find_undeclared_files( "expected": _build_expected(f, checks), }) + # Append grouped archive entries + for entry in sorted(archive_entries.values(), key=lambda e: e["name"]): + undeclared.append(entry) + return undeclared @@ -715,7 +776,12 @@ def print_platform_result(result: dict, group: list[str], verbose: bool = False) # Required NOT in repo = critical if req_not_in_repo: for u in req_not_in_repo: - print(f" MISSING (required): {u['emulator']} needs {u['name']}") + arc_count = u.get("archive_file_count") + if arc_count: + label = f"{u['name']} ({arc_count} file{'s' if arc_count != 1 else ''})" + else: + label = u["name"] + print(f" MISSING (required): {u['emulator']} needs {label}") checks = u.get("checks", []) if checks: if verbose: @@ -733,7 +799,12 @@ def print_platform_result(result: dict, group: list[str], verbose: bool = False) print(f" [{checks_label}]") if req_hle_not_in_repo: for u in req_hle_not_in_repo: - print(f" MISSING (required, HLE fallback): {u['emulator']} needs {u['name']}") + arc_count = u.get("archive_file_count") + if arc_count: + label = f"{u['name']} ({arc_count} file{'s' if arc_count != 1 else ''})" + else: + label = u["name"] + print(f" MISSING (required, HLE fallback): {u['emulator']} needs {label}") checks = u.get("checks", []) if checks: if verbose: diff --git a/tests/test_e2e.py b/tests/test_e2e.py index 002f443d..d8cea464 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -103,6 +103,11 @@ class TestE2E(unittest.TestCase): self._make_zip("composite.zip", {"b.rom": b"BBBB", "a.rom": b"AAAA"}) # ZIP for multi-hash self._make_zip("multi.zip", {"rom.bin": b"MULTI_HASH_DATA"}) + # Archive BIOS ZIP (like neogeo.zip) containing multiple ROMs + self._make_zip("test_archive.zip", { + "rom_a.bin": b"ARCHIVE_ROM_A", + "rom_b.bin": b"ARCHIVE_ROM_B", + }) # -- Build synthetic database -- self.db = self._build_db() @@ -371,6 +376,35 @@ class TestE2E(unittest.TestCase): with open(os.path.join(self.emulators_dir, "test_emu_dd.yml"), "w") as fh: yaml.dump(emu_dd, fh) + # Emulator with archived files (like FBNeo with neogeo.zip) + emu_archive = { + "emulator": "TestArchiveEmu", + "type": "libretro", + "systems": ["console-a"], + "files": [ + {"name": "rom_a.bin", "required": True, "archive": "test_archive.zip"}, + {"name": "rom_b.bin", "required": False, "archive": "test_archive.zip"}, + {"name": "missing_rom.bin", "required": True, "archive": "missing_archive.zip"}, + ], + } + with open(os.path.join(self.emulators_dir, "test_archive_emu.yml"), "w") as fh: + yaml.dump(emu_archive, fh) + + # Emulator with descriptive name and path (like QEMU SeaBIOS) + emu_descriptive = { + "emulator": "TestDescriptive", + "type": "libretro", + "systems": ["console-a"], + "files": [ + {"name": "Descriptive BIOS Name", "required": True, + "path": "present_req.bin"}, + {"name": "Missing Descriptive", "required": True, + "path": "nonexistent_path.bin"}, + ], + } + with open(os.path.join(self.emulators_dir, "test_descriptive.yml"), "w") as fh: + yaml.dump(emu_descriptive, fh) + # Emulator with validation checks (size, crc32) emu_val = { "emulator": "TestValidation", @@ -2288,5 +2322,102 @@ class TestE2E(unittest.TestCase): self.assertFalse(any("nested.rom" in n for n in names)) + # --------------------------------------------------------------- + # Archive cross-reference and descriptive name tests + # --------------------------------------------------------------- + + def test_159_cross_ref_archive_in_repo(self): + """Archived files group by archive; in_repo=True when archive exists.""" + config = load_platform_config("test_existence", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + undeclared = find_undeclared_files(config, self.emulators_dir, self.db, profiles) + # test_archive.zip should appear as a single grouped entry + archive_entries = [u for u in undeclared if u.get("archive") == "test_archive.zip"] + self.assertEqual(len(archive_entries), 1) + entry = archive_entries[0] + self.assertTrue(entry["in_repo"]) + self.assertEqual(entry["name"], "test_archive.zip") + self.assertEqual(entry["archive_file_count"], 2) + self.assertTrue(entry["required"]) # at least one file is required + + def test_160_cross_ref_archive_missing(self): + """Missing archive reported as single entry with in_repo=False.""" + config = load_platform_config("test_existence", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + undeclared = find_undeclared_files(config, self.emulators_dir, self.db, profiles) + missing_entries = [u for u in undeclared if u.get("archive") == "missing_archive.zip"] + self.assertEqual(len(missing_entries), 1) + entry = missing_entries[0] + self.assertFalse(entry["in_repo"]) + self.assertEqual(entry["name"], "missing_archive.zip") + self.assertEqual(entry["archive_file_count"], 1) + + def test_161_cross_ref_archive_not_individual_roms(self): + """Individual ROM names from archived files should NOT appear as separate entries.""" + config = load_platform_config("test_existence", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + undeclared = find_undeclared_files(config, self.emulators_dir, self.db, profiles) + names = {u["name"] for u in undeclared} + # Individual ROMs should NOT be in the undeclared list + self.assertNotIn("rom_a.bin", names) + self.assertNotIn("rom_b.bin", names) + self.assertNotIn("missing_rom.bin", names) + + def test_162_cross_ref_descriptive_name_resolved_by_path(self): + """Descriptive name with path: fallback resolves via path basename.""" + config = load_platform_config("test_existence", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + undeclared = find_undeclared_files(config, self.emulators_dir, self.db, profiles) + desc_entries = {u["name"]: u for u in undeclared + if u["emulator"] == "TestDescriptive"} + # "Descriptive BIOS Name" has path: "present_req.bin" which IS in by_name + self.assertIn("Descriptive BIOS Name", desc_entries) + self.assertTrue(desc_entries["Descriptive BIOS Name"]["in_repo"]) + # "Missing Descriptive" has path: "nonexistent_path.bin" which is NOT in by_name + self.assertIn("Missing Descriptive", desc_entries) + self.assertFalse(desc_entries["Missing Descriptive"]["in_repo"]) + + def test_163_cross_ref_archive_declared_by_platform_skipped(self): + """Archive files whose archive is declared by platform are skipped.""" + # Create a platform that declares test_archive.zip + config = { + "platform": "TestArchivePlatform", + "verification_mode": "existence", + "systems": { + "console-a": { + "files": [ + {"name": "test_archive.zip", "destination": "test_archive.zip", + "required": True}, + ], + }, + }, + } + with open(os.path.join(self.platforms_dir, "test_archive_platform.yml"), "w") as fh: + yaml.dump(config, fh) + config = load_platform_config("test_archive_platform", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + undeclared = find_undeclared_files(config, self.emulators_dir, self.db, profiles) + # test_archive.zip is declared → its archived ROMs should be skipped + archive_entries = [u for u in undeclared if u.get("archive") == "test_archive.zip"] + self.assertEqual(len(archive_entries), 0) + + def test_164_pack_extras_use_archive_name(self): + """Pack extras for archived files use archive name, not individual ROM.""" + from generate_pack import _collect_emulator_extras + config = load_platform_config("test_existence", self.platforms_dir) + profiles = load_emulator_profiles(self.emulators_dir) + extras = _collect_emulator_extras( + config, self.emulators_dir, self.db, + set(), "", profiles, + ) + extra_names = {e["name"] for e in extras} + # Archive name should be present, not individual ROMs + self.assertIn("test_archive.zip", extra_names) + self.assertNotIn("rom_a.bin", extra_names) + self.assertNotIn("rom_b.bin", extra_names) + # Missing archive should NOT be in extras (in_repo=False) + self.assertNotIn("missing_archive.zip", extra_names) + + if __name__ == "__main__": unittest.main()