mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-06-12 10:05:24 -05:00
feat: add doom engine wad files, emulatorjs base config
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Complete BIOS and firmware packs for RetroArch, Batocera, Recalbox, Lakka, RetroPie, EmuDeck, RetroBat, and RetroDECK.
|
Complete BIOS and firmware packs for RetroArch, Batocera, Recalbox, Lakka, RetroPie, EmuDeck, RetroBat, and RetroDECK.
|
||||||
|
|
||||||
**6,733** verified files across **294** systems, ready to extract into your emulator's BIOS directory.
|
**6,748** verified files across **294** systems, ready to extract into your emulator's BIOS directory.
|
||||||
|
|
||||||
## Download BIOS packs
|
## Download BIOS packs
|
||||||
|
|
||||||
@@ -18,17 +18,18 @@ Pick your platform, download the ZIP, extract to the BIOS path.
|
|||||||
| RetroBat | 331 | `bios/` | [Download](../../releases/latest) |
|
| RetroBat | 331 | `bios/` | [Download](../../releases/latest) |
|
||||||
| RetroDECK | 2007 | `~/retrodeck/bios/` | [Download](../../releases/latest) |
|
| RetroDECK | 2007 | `~/retrodeck/bios/` | [Download](../../releases/latest) |
|
||||||
| RetroPie | 448 | `BIOS/` | [Download](../../releases/latest) |
|
| RetroPie | 448 | `BIOS/` | [Download](../../releases/latest) |
|
||||||
|
| RomM | 374 | `bios/{platform_slug}/` | [Download](../../releases/latest) |
|
||||||
|
|
||||||
## What's included
|
## What's included
|
||||||
|
|
||||||
BIOS, firmware, and system files for consoles from Atari to PlayStation 3.
|
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.
|
Each file is checked against the emulator's source code to match what the code actually loads at runtime.
|
||||||
|
|
||||||
- **8 platforms** supported with platform-specific verification
|
- **9 platforms** supported with platform-specific verification
|
||||||
- **306 emulators** profiled from source (RetroArch cores + standalone)
|
- **306 emulators** profiled from source (RetroArch cores + standalone)
|
||||||
- **294 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
- **294 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
|
||||||
- **6,733 files** verified with MD5, SHA1, CRC32 checksums
|
- **6,748 files** verified with MD5, SHA1, CRC32 checksums
|
||||||
- **5044 MB** total collection size
|
- **5251 MB** total collection size
|
||||||
|
|
||||||
## Supported systems
|
## Supported systems
|
||||||
|
|
||||||
@@ -42,12 +43,13 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
|
|||||||
|----------|----------|----------|----------|---------|
|
|----------|----------|----------|----------|---------|
|
||||||
| Batocera | 359/359 (100.0%) | 358 | 1 | 0 |
|
| Batocera | 359/359 (100.0%) | 358 | 1 | 0 |
|
||||||
| EmuDeck | 161/161 (100.0%) | 161 | 0 | 0 |
|
| EmuDeck | 161/161 (100.0%) | 161 | 0 | 0 |
|
||||||
| Lakka | 448/448 (100.0%) | 440 | 8 | 0 |
|
| Lakka | 448/448 (100.0%) | 448 | 0 | 0 |
|
||||||
| Recalbox | 346/346 (100.0%) | 341 | 5 | 0 |
|
| Recalbox | 346/346 (100.0%) | 346 | 0 | 0 |
|
||||||
| RetroArch | 448/448 (100.0%) | 440 | 8 | 0 |
|
| RetroArch | 448/448 (100.0%) | 448 | 0 | 0 |
|
||||||
| RetroBat | 331/331 (100.0%) | 330 | 1 | 0 |
|
| RetroBat | 331/331 (100.0%) | 331 | 0 | 0 |
|
||||||
| RetroDECK | 2007/2007 (100.0%) | 2001 | 6 | 0 |
|
| RetroDECK | 2007/2007 (100.0%) | 2007 | 0 | 0 |
|
||||||
| RetroPie | 448/448 (100.0%) | 440 | 8 | 0 |
|
| RetroPie | 448/448 (100.0%) | 448 | 0 | 0 |
|
||||||
|
| RomM | 374/374 (100.0%) | 359 | 15 | 0 |
|
||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@ Per-file hashes, emulator profiles, gap analysis, cross-reference: **[https://ab
|
|||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
|
<a href="https://github.com/PixNyb"><img src="https://avatars.githubusercontent.com/u/40770831?v=4" width="50" title="PixNyb"></a>
|
||||||
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
|
<a href="https://github.com/monster-penguin"><img src="https://avatars.githubusercontent.com/u/266009589?v=4" width="50" title="monster-penguin"></a>
|
||||||
|
|
||||||
|
|
||||||
@@ -76,4 +79,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|||||||
|
|
||||||
This repository provides BIOS files for personal backup and archival purposes.
|
This repository provides BIOS files for personal backup and archival purposes.
|
||||||
|
|
||||||
*Auto-generated on 2026-03-25T16:17:06Z*
|
*Auto-generated on 2026-03-25T22:12:06Z*
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+476
-248
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"generated_at": "2026-03-25T15:41:49Z",
|
"generated_at": "2026-03-25T22:06:53Z",
|
||||||
"total_files": 6733,
|
"total_files": 6748,
|
||||||
"total_size": 5288644732,
|
"total_size": 5505760050,
|
||||||
"files": {
|
"files": {
|
||||||
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
|
"520d3d1b5897800af47f92efd2444a26b7a7dead": {
|
||||||
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
|
"path": "bios/3DO Company/3DO/3do_arcade_saot.bin",
|
||||||
@@ -27713,6 +27713,156 @@
|
|||||||
"crc32": "0636e0be",
|
"crc32": "0636e0be",
|
||||||
"adler32": "0ca77de6"
|
"adler32": "0ca77de6"
|
||||||
},
|
},
|
||||||
|
"eca9cff1014ce5081804e193588d96c6ddb35432": {
|
||||||
|
"path": "bios/Id Software/Doom/CHEX.WAD",
|
||||||
|
"name": "CHEX.WAD",
|
||||||
|
"size": 12361532,
|
||||||
|
"sha1": "eca9cff1014ce5081804e193588d96c6ddb35432",
|
||||||
|
"md5": "25485721882b050afa96a56e5758dd52",
|
||||||
|
"sha256": "d8eb5277918883f490fb1a4be3c9a8588df2dbaee6dc4beb8df4929148bbffb1",
|
||||||
|
"crc32": "298dd5b5",
|
||||||
|
"adler32": "4026602b"
|
||||||
|
},
|
||||||
|
"7742089b4468a736cadb659a7deca3320fe6dcbd": {
|
||||||
|
"path": "bios/Id Software/Doom/DOOM.WAD",
|
||||||
|
"name": "DOOM.WAD",
|
||||||
|
"size": 11159840,
|
||||||
|
"sha1": "7742089b4468a736cadb659a7deca3320fe6dcbd",
|
||||||
|
"md5": "1cd63c5ddff1bf8ce844237f580e9cf3",
|
||||||
|
"sha256": "ff2c301b8719465a6e386a512bfa319931b7f64ea517d337c5a47afe03951902",
|
||||||
|
"crc32": "723e60f9",
|
||||||
|
"adler32": "e85f4707"
|
||||||
|
},
|
||||||
|
"5b2e249b9c5133ec987b3ea77596381dc0d6bc1d": {
|
||||||
|
"path": "bios/Id Software/Doom/DOOM1.WAD",
|
||||||
|
"name": "DOOM1.WAD",
|
||||||
|
"size": 4196020,
|
||||||
|
"sha1": "5b2e249b9c5133ec987b3ea77596381dc0d6bc1d",
|
||||||
|
"md5": "f0cefca49926d00903cf57551d901abe",
|
||||||
|
"sha256": "1d7d43be501e67d927e415e0b8f3e29c3bf33075e859721816f652a526cac771",
|
||||||
|
"crc32": "162b696a",
|
||||||
|
"adler32": "3bca9a2a"
|
||||||
|
},
|
||||||
|
"7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7": {
|
||||||
|
"path": "bios/Id Software/Doom/DOOM2.WAD",
|
||||||
|
"name": "DOOM2.WAD",
|
||||||
|
"size": 14604584,
|
||||||
|
"sha1": "7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7",
|
||||||
|
"md5": "25e1459ca71d321525f84628f45ca8cd",
|
||||||
|
"sha256": "10d67824b11025ddd9198e8cfc87ca335ee6e2d3e63af4180fa9b8a471893255",
|
||||||
|
"crc32": "ec8725db",
|
||||||
|
"adler32": "03bcce6c"
|
||||||
|
},
|
||||||
|
"d510c877031bbd5f3d198581a2c8651e09b9861f": {
|
||||||
|
"path": "bios/Id Software/Doom/DOOM2F.WAD",
|
||||||
|
"name": "DOOM2F.WAD",
|
||||||
|
"size": 14607420,
|
||||||
|
"sha1": "d510c877031bbd5f3d198581a2c8651e09b9861f",
|
||||||
|
"md5": "3cb02349b3df649c86290907eed64e7b",
|
||||||
|
"sha256": "ab6d457050daee95fb763040f753fce44a4852883dafdb520b00cc8426e6bda0",
|
||||||
|
"crc32": "27eaae69",
|
||||||
|
"adler32": "13e6449b"
|
||||||
|
},
|
||||||
|
"ae363db8cd5645e1753d9bacc82cc0724e8e7f21": {
|
||||||
|
"path": "bios/Id Software/Doom/DOOM64.WAD",
|
||||||
|
"name": "DOOM64.WAD",
|
||||||
|
"size": 15103284,
|
||||||
|
"sha1": "ae363db8cd5645e1753d9bacc82cc0724e8e7f21",
|
||||||
|
"md5": "e16e17f59afe7b3297f53ebe7e9de815",
|
||||||
|
"sha256": "902e88504c55cb8f6e03774ba57a272565a65332f08578c3c6fa68972766db2e",
|
||||||
|
"crc32": "cb10a53d",
|
||||||
|
"adler32": "1d624237"
|
||||||
|
},
|
||||||
|
"f489d479371df32f6d280a0cb23b59a35ba2b833": {
|
||||||
|
"path": "bios/Id Software/Doom/HERETIC.WAD",
|
||||||
|
"name": "HERETIC.WAD",
|
||||||
|
"size": 14189976,
|
||||||
|
"sha1": "f489d479371df32f6d280a0cb23b59a35ba2b833",
|
||||||
|
"md5": "66d686b1ed6d35ff103f15dbd30e0341",
|
||||||
|
"sha256": "12541f82e1d326b456b89411f8c54b895e775a611580f66b78558e898b2eaafa",
|
||||||
|
"crc32": "5b16049e",
|
||||||
|
"adler32": "065166bc"
|
||||||
|
},
|
||||||
|
"b4c50ca9bea07f7c35250a1a11906091971c05ae": {
|
||||||
|
"path": "bios/Id Software/Doom/HERETIC1.WAD",
|
||||||
|
"name": "HERETIC1.WAD",
|
||||||
|
"size": 5120920,
|
||||||
|
"sha1": "b4c50ca9bea07f7c35250a1a11906091971c05ae",
|
||||||
|
"md5": "ae779722390ec32fa37b0d361f7d82f8",
|
||||||
|
"sha256": "3ab2f21828877e49e5eb3220785aaf8798050b7c4132003b5db7b8f3678bede4",
|
||||||
|
"crc32": "22d3f0ca",
|
||||||
|
"adler32": "6110f0ac"
|
||||||
|
},
|
||||||
|
"081f6a2024643b54ef4a436a85508539b6d20a1e": {
|
||||||
|
"path": "bios/Id Software/Doom/HEXDD.WAD",
|
||||||
|
"name": "HEXDD.WAD",
|
||||||
|
"size": 4440584,
|
||||||
|
"sha1": "081f6a2024643b54ef4a436a85508539b6d20a1e",
|
||||||
|
"md5": "78d5898e99e220e4de64edaa0e479593",
|
||||||
|
"sha256": "ea5e34c9f7eb677c593f125a0c45db2aaf2d98b8f6e9d50bd683a655aeec531f",
|
||||||
|
"crc32": "fd5eb11d",
|
||||||
|
"adler32": "6b8e0546"
|
||||||
|
},
|
||||||
|
"4b53832f0733c1e29e5f1de2428e5475e891af29": {
|
||||||
|
"path": "bios/Id Software/Doom/HEXEN.WAD",
|
||||||
|
"name": "HEXEN.WAD",
|
||||||
|
"size": 20083672,
|
||||||
|
"sha1": "4b53832f0733c1e29e5f1de2428e5475e891af29",
|
||||||
|
"md5": "abb033caf81e26f12a2103e1fa25453f",
|
||||||
|
"sha256": "f74b857076b3ffe2597d0e05bdecc687496e6e8a9582d7a47db681e0e78e4001",
|
||||||
|
"crc32": "dca9114c",
|
||||||
|
"adler32": "7ebb3585"
|
||||||
|
},
|
||||||
|
"90361e2a538d2388506657252ae41aceeb1ba360": {
|
||||||
|
"path": "bios/Id Software/Doom/PLUTONIA.WAD",
|
||||||
|
"name": "PLUTONIA.WAD",
|
||||||
|
"size": 17420824,
|
||||||
|
"sha1": "90361e2a538d2388506657252ae41aceeb1ba360",
|
||||||
|
"md5": "75c8cf89566741fa9d22447604053bd7",
|
||||||
|
"sha256": "a83b00c636fa3308286e76b1b3153fc14507caf994b0450770421260b08efed8",
|
||||||
|
"crc32": "48d1453c",
|
||||||
|
"adler32": "63916b81"
|
||||||
|
},
|
||||||
|
"bc0a110bf27aee89a0b2fc8111e2391ede891b8d": {
|
||||||
|
"path": "bios/Id Software/Doom/STRIFE0.WAD",
|
||||||
|
"name": "STRIFE0.WAD",
|
||||||
|
"size": 9934413,
|
||||||
|
"sha1": "bc0a110bf27aee89a0b2fc8111e2391ede891b8d",
|
||||||
|
"md5": "bb545b9c4eca0ff92c14d466b3294023",
|
||||||
|
"sha256": "f7f557657cbfd5c7eacaaf9d8aaf3e80512467b51ebfb7c567078ef9bf648ef8",
|
||||||
|
"crc32": "93c144dd",
|
||||||
|
"adler32": "70416de4"
|
||||||
|
},
|
||||||
|
"64c13b951a845ca7f8081f68138a6181557458d1": {
|
||||||
|
"path": "bios/Id Software/Doom/STRIFE1.WAD",
|
||||||
|
"name": "STRIFE1.WAD",
|
||||||
|
"size": 28377364,
|
||||||
|
"sha1": "64c13b951a845ca7f8081f68138a6181557458d1",
|
||||||
|
"md5": "2fed2031a5b03892106e0f117f17901f",
|
||||||
|
"sha256": "81e4d4402853392fbf2ebf52f9c19cf97754a84f6dd3e5919036241de1ffe52a",
|
||||||
|
"crc32": "4234ace5",
|
||||||
|
"adler32": "a0bc562a"
|
||||||
|
},
|
||||||
|
"9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3": {
|
||||||
|
"path": "bios/Id Software/Doom/TNT.WAD",
|
||||||
|
"name": "TNT.WAD",
|
||||||
|
"size": 18195736,
|
||||||
|
"sha1": "9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3",
|
||||||
|
"md5": "4e158d9953c79ccf97bd0663244cc6b6",
|
||||||
|
"sha256": "c0a9c29d023af2737953663d0e03177d9b7b7b64146c158dcc2a07f9ec18f353",
|
||||||
|
"crc32": "903dcc27",
|
||||||
|
"adler32": "cd062fca"
|
||||||
|
},
|
||||||
|
"ec6883100d807b894a98f426d024d22c77b63e7f": {
|
||||||
|
"path": "bios/Id Software/Doom/VOICES.WAD",
|
||||||
|
"name": "VOICES.WAD",
|
||||||
|
"size": 27319149,
|
||||||
|
"sha1": "ec6883100d807b894a98f426d024d22c77b63e7f",
|
||||||
|
"md5": "082234d6a3f7086424856478b5aa9e95",
|
||||||
|
"sha256": "3f7a9c37a23dc30bb3b8415e782ea6c78d59e6b2ed4b50ae255ff0365349110c",
|
||||||
|
"crc32": "cd12ebcf",
|
||||||
|
"adler32": "28b023c9"
|
||||||
|
},
|
||||||
"5f4aed208301449c2e9514edfd325fe9dead76fa": {
|
"5f4aed208301449c2e9514edfd325fe9dead76fa": {
|
||||||
"path": "bios/Id Software/Doom/prboom.wad",
|
"path": "bios/Id Software/Doom/prboom.wad",
|
||||||
"name": "prboom.wad",
|
"name": "prboom.wad",
|
||||||
@@ -70107,6 +70257,21 @@
|
|||||||
"8ecd11275ad418d302cd358b408b01ec": "10f1a7204f69b82a18bc94a3010c9660aec0c802",
|
"8ecd11275ad418d302cd358b408b01ec": "10f1a7204f69b82a18bc94a3010c9660aec0c802",
|
||||||
"ec2a977f0c0645dd284010160caec636": "c0ee6f9443fa82c0fef5d497b3e76aa3077f1865",
|
"ec2a977f0c0645dd284010160caec636": "c0ee6f9443fa82c0fef5d497b3e76aa3077f1865",
|
||||||
"19d55c537767a7424a8e376d62fc2ac0": "72c60172fb1ba77c9b24b06b7755f0a16f0b3a13",
|
"19d55c537767a7424a8e376d62fc2ac0": "72c60172fb1ba77c9b24b06b7755f0a16f0b3a13",
|
||||||
|
"25485721882b050afa96a56e5758dd52": "eca9cff1014ce5081804e193588d96c6ddb35432",
|
||||||
|
"1cd63c5ddff1bf8ce844237f580e9cf3": "7742089b4468a736cadb659a7deca3320fe6dcbd",
|
||||||
|
"f0cefca49926d00903cf57551d901abe": "5b2e249b9c5133ec987b3ea77596381dc0d6bc1d",
|
||||||
|
"25e1459ca71d321525f84628f45ca8cd": "7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7",
|
||||||
|
"3cb02349b3df649c86290907eed64e7b": "d510c877031bbd5f3d198581a2c8651e09b9861f",
|
||||||
|
"e16e17f59afe7b3297f53ebe7e9de815": "ae363db8cd5645e1753d9bacc82cc0724e8e7f21",
|
||||||
|
"66d686b1ed6d35ff103f15dbd30e0341": "f489d479371df32f6d280a0cb23b59a35ba2b833",
|
||||||
|
"ae779722390ec32fa37b0d361f7d82f8": "b4c50ca9bea07f7c35250a1a11906091971c05ae",
|
||||||
|
"78d5898e99e220e4de64edaa0e479593": "081f6a2024643b54ef4a436a85508539b6d20a1e",
|
||||||
|
"abb033caf81e26f12a2103e1fa25453f": "4b53832f0733c1e29e5f1de2428e5475e891af29",
|
||||||
|
"75c8cf89566741fa9d22447604053bd7": "90361e2a538d2388506657252ae41aceeb1ba360",
|
||||||
|
"bb545b9c4eca0ff92c14d466b3294023": "bc0a110bf27aee89a0b2fc8111e2391ede891b8d",
|
||||||
|
"2fed2031a5b03892106e0f117f17901f": "64c13b951a845ca7f8081f68138a6181557458d1",
|
||||||
|
"4e158d9953c79ccf97bd0663244cc6b6": "9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3",
|
||||||
|
"082234d6a3f7086424856478b5aa9e95": "ec6883100d807b894a98f426d024d22c77b63e7f",
|
||||||
"72ae1b47820fcc93cc0df9c428d0face": "5f4aed208301449c2e9514edfd325fe9dead76fa",
|
"72ae1b47820fcc93cc0df9c428d0face": "5f4aed208301449c2e9514edfd325fe9dead76fa",
|
||||||
"dbaa5c4e20a11000d1c4db3a2a28f374": "f3f2a11f3ecd91cd62d74c3acfad68a4cc6ddbd9",
|
"dbaa5c4e20a11000d1c4db3a2a28f374": "f3f2a11f3ecd91cd62d74c3acfad68a4cc6ddbd9",
|
||||||
"c011b428819eea4a80b455c245a5a04d": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
|
"c011b428819eea4a80b455c245a5a04d": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
|
||||||
@@ -82071,6 +82236,51 @@
|
|||||||
"ALI1429G.AMW": [
|
"ALI1429G.AMW": [
|
||||||
"72c60172fb1ba77c9b24b06b7755f0a16f0b3a13"
|
"72c60172fb1ba77c9b24b06b7755f0a16f0b3a13"
|
||||||
],
|
],
|
||||||
|
"CHEX.WAD": [
|
||||||
|
"eca9cff1014ce5081804e193588d96c6ddb35432"
|
||||||
|
],
|
||||||
|
"DOOM.WAD": [
|
||||||
|
"7742089b4468a736cadb659a7deca3320fe6dcbd"
|
||||||
|
],
|
||||||
|
"DOOM1.WAD": [
|
||||||
|
"5b2e249b9c5133ec987b3ea77596381dc0d6bc1d"
|
||||||
|
],
|
||||||
|
"DOOM2.WAD": [
|
||||||
|
"7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7"
|
||||||
|
],
|
||||||
|
"DOOM2F.WAD": [
|
||||||
|
"d510c877031bbd5f3d198581a2c8651e09b9861f"
|
||||||
|
],
|
||||||
|
"DOOM64.WAD": [
|
||||||
|
"ae363db8cd5645e1753d9bacc82cc0724e8e7f21"
|
||||||
|
],
|
||||||
|
"HERETIC.WAD": [
|
||||||
|
"f489d479371df32f6d280a0cb23b59a35ba2b833"
|
||||||
|
],
|
||||||
|
"HERETIC1.WAD": [
|
||||||
|
"b4c50ca9bea07f7c35250a1a11906091971c05ae"
|
||||||
|
],
|
||||||
|
"HEXDD.WAD": [
|
||||||
|
"081f6a2024643b54ef4a436a85508539b6d20a1e"
|
||||||
|
],
|
||||||
|
"HEXEN.WAD": [
|
||||||
|
"4b53832f0733c1e29e5f1de2428e5475e891af29"
|
||||||
|
],
|
||||||
|
"PLUTONIA.WAD": [
|
||||||
|
"90361e2a538d2388506657252ae41aceeb1ba360"
|
||||||
|
],
|
||||||
|
"STRIFE0.WAD": [
|
||||||
|
"bc0a110bf27aee89a0b2fc8111e2391ede891b8d"
|
||||||
|
],
|
||||||
|
"STRIFE1.WAD": [
|
||||||
|
"64c13b951a845ca7f8081f68138a6181557458d1"
|
||||||
|
],
|
||||||
|
"TNT.WAD": [
|
||||||
|
"9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3"
|
||||||
|
],
|
||||||
|
"VOICES.WAD": [
|
||||||
|
"ec6883100d807b894a98f426d024d22c77b63e7f"
|
||||||
|
],
|
||||||
"prboom.wad": [
|
"prboom.wad": [
|
||||||
"5f4aed208301449c2e9514edfd325fe9dead76fa"
|
"5f4aed208301449c2e9514edfd325fe9dead76fa"
|
||||||
],
|
],
|
||||||
@@ -93221,6 +93431,207 @@
|
|||||||
"SCPH-70004_BIOS_V12_EUR_200.ROM2": [
|
"SCPH-70004_BIOS_V12_EUR_200.ROM2": [
|
||||||
"1bae895fbdd658cfb56c53cc2139282cc1e778de"
|
"1bae895fbdd658cfb56c53cc2139282cc1e778de"
|
||||||
],
|
],
|
||||||
|
"tos100uk.img": [
|
||||||
|
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2"
|
||||||
|
],
|
||||||
|
"tos106de.img": [
|
||||||
|
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd"
|
||||||
|
],
|
||||||
|
"tos206us.img": [
|
||||||
|
"ee58768bdfc602c9b14942ce5481e97dd24e7c83"
|
||||||
|
],
|
||||||
|
"saturn_bios.bin": [
|
||||||
|
"2b8cb4f87580683eb4d760e4ed210813d667f0a2",
|
||||||
|
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"
|
||||||
|
],
|
||||||
|
"sega-saturn:af5828fdff51384f99b3c4926be27762": [
|
||||||
|
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
|
||||||
|
],
|
||||||
|
"bios7.bin": [
|
||||||
|
"24f67bdea115a2c847c8813a262502ee1607b7df"
|
||||||
|
],
|
||||||
|
"bios9.bin": [
|
||||||
|
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
|
||||||
|
],
|
||||||
|
"dsi_bios7.bin": [
|
||||||
|
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547"
|
||||||
|
],
|
||||||
|
"dsi_bios9.bin": [
|
||||||
|
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb"
|
||||||
|
],
|
||||||
|
"gb_bios.bin": [
|
||||||
|
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
|
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
||||||
|
],
|
||||||
|
"dmg0_rom.bin": [
|
||||||
|
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
|
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
||||||
|
],
|
||||||
|
"sgb_bios.bin": [
|
||||||
|
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
||||||
|
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de",
|
||||||
|
"f282b3aaf98f8423dab7d77f1aa0192be630f2fb"
|
||||||
|
],
|
||||||
|
"sgb1.boot.rom": [
|
||||||
|
"aa2f50a77dfb4823da96ba99309085a3c6278515"
|
||||||
|
],
|
||||||
|
"SGB1.sfc": [
|
||||||
|
"973e10840db683cf3faf61bd443090786b3a9f04"
|
||||||
|
],
|
||||||
|
"SGB1.sfc/program.rom": [
|
||||||
|
"973e10840db683cf3faf61bd443090786b3a9f04"
|
||||||
|
],
|
||||||
|
"SGB2.sfc": [
|
||||||
|
"e5b2922ca137051059e4269b236d07a22c07bc84"
|
||||||
|
],
|
||||||
|
"SGB2.sfc/program.rom": [
|
||||||
|
"e5b2922ca137051059e4269b236d07a22c07bc84"
|
||||||
|
],
|
||||||
|
"fs-a1gt_kanjifont.rom": [
|
||||||
|
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
||||||
|
],
|
||||||
|
"fs-a1wsx_kanjifont.rom": [
|
||||||
|
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
||||||
|
],
|
||||||
|
"yrw801.rom": [
|
||||||
|
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
|
||||||
|
],
|
||||||
|
"fs-a1wsx_msx2psub.rom": [
|
||||||
|
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
|
||||||
|
],
|
||||||
|
"MSX2PEXT.rom": [
|
||||||
|
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
|
||||||
|
],
|
||||||
|
"fs-a1wsx_kanjibasic.rom": [
|
||||||
|
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06"
|
||||||
|
],
|
||||||
|
"fs-a1wsx_disk.rom": [
|
||||||
|
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6"
|
||||||
|
],
|
||||||
|
"kick37350.A600": [
|
||||||
|
"02843c4253bbd29aba535b0aa3bd9a85034ecde4"
|
||||||
|
],
|
||||||
|
"amiga-os-120.rom": [
|
||||||
|
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
|
||||||
|
],
|
||||||
|
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom": [
|
||||||
|
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
|
||||||
|
],
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom": [
|
||||||
|
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
|
||||||
|
],
|
||||||
|
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom": [
|
||||||
|
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
|
||||||
|
],
|
||||||
|
"amiga-os-310-a600.rom": [
|
||||||
|
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom": [
|
||||||
|
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom": [
|
||||||
|
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
||||||
|
],
|
||||||
|
"amiga-ext-130-cdtv.rom": [
|
||||||
|
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
||||||
|
],
|
||||||
|
"amiga-os-130-cdtv-ext.rom": [
|
||||||
|
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
||||||
|
],
|
||||||
|
"CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom": [
|
||||||
|
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
||||||
|
],
|
||||||
|
"CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom": [
|
||||||
|
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
||||||
|
],
|
||||||
|
"amiga-os-300-a1200.rom": [
|
||||||
|
"70033828182fffc7ed106e5373a8b89dda76faa5"
|
||||||
|
],
|
||||||
|
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom": [
|
||||||
|
"70033828182fffc7ed106e5373a8b89dda76faa5"
|
||||||
|
],
|
||||||
|
"amiga-os-310-a1200.rom": [
|
||||||
|
"e21545723fe8374e91342617604f1b3d703094f1"
|
||||||
|
],
|
||||||
|
"AmigaVision.rom": [
|
||||||
|
"e21545723fe8374e91342617604f1b3d703094f1"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom": [
|
||||||
|
"e21545723fe8374e91342617604f1b3d703094f1"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom": [
|
||||||
|
"e21545723fe8374e91342617604f1b3d703094f1"
|
||||||
|
],
|
||||||
|
"amiga-os-310-a4000.rom": [
|
||||||
|
"5fe04842d04a489720f0f4bb0e46948199406f49"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom": [
|
||||||
|
"5fe04842d04a489720f0f4bb0e46948199406f49"
|
||||||
|
],
|
||||||
|
"amiga-os-310-cd32.rom": [
|
||||||
|
"3525be8887f79b5929e017b42380a79edfee542d"
|
||||||
|
],
|
||||||
|
"Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom": [
|
||||||
|
"3525be8887f79b5929e017b42380a79edfee542d"
|
||||||
|
],
|
||||||
|
"amiga-ext-310-cd32.rom": [
|
||||||
|
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
||||||
|
],
|
||||||
|
"amiga-os-310-cd32-ext.rom": [
|
||||||
|
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
||||||
|
],
|
||||||
|
"CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom": [
|
||||||
|
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
||||||
|
],
|
||||||
|
"custom0.sf2": [
|
||||||
|
"286b2e1fb21cc79851da01666db6c0b0e88f25e3"
|
||||||
|
],
|
||||||
|
"colecovision.rom": [
|
||||||
|
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
||||||
|
],
|
||||||
|
"coleco.rom": [
|
||||||
|
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
||||||
|
],
|
||||||
|
"boot.rom": [
|
||||||
|
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
||||||
|
],
|
||||||
|
"d2fdc.zip": [
|
||||||
|
"bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4",
|
||||||
|
"af56c948598291b284a528f3fce06b961dba55e3"
|
||||||
|
],
|
||||||
|
"basic11.rom": [
|
||||||
|
"9451a1a09d8f75944dbd6f91193fc360f1de80ac"
|
||||||
|
],
|
||||||
|
"basic21.bin": [
|
||||||
|
"03bbb386cf530e804363acdfc1d13e64cf28af2e"
|
||||||
|
],
|
||||||
|
"exos21.bin": [
|
||||||
|
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
||||||
|
],
|
||||||
|
"EXOS21.ROM": [
|
||||||
|
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
||||||
|
],
|
||||||
|
"zx48.rom": [
|
||||||
|
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
|
||||||
|
],
|
||||||
|
"zxs:48.rom": [
|
||||||
|
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
|
||||||
|
],
|
||||||
"sony-playstation:239665b1a3dade1b5a52c06338011044": [
|
"sony-playstation:239665b1a3dade1b5a52c06338011044": [
|
||||||
"343883a7b555646da8cee54aadd2795b6e7dd070"
|
"343883a7b555646da8cee54aadd2795b6e7dd070"
|
||||||
],
|
],
|
||||||
@@ -93353,6 +93764,9 @@
|
|||||||
"sony-playstation:c53ca5908936d412331790f4426c6c33": [
|
"sony-playstation:c53ca5908936d412331790f4426c6c33": [
|
||||||
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
|
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
|
||||||
],
|
],
|
||||||
|
"PSXONPSP660.BIN": [
|
||||||
|
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
|
||||||
|
],
|
||||||
"PSXONPSP660.bin": [
|
"PSXONPSP660.bin": [
|
||||||
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
|
"96880d1ca92a016ff054be5159bb06fe03cb4e14"
|
||||||
],
|
],
|
||||||
@@ -93632,13 +94046,6 @@
|
|||||||
"sega-mega-cd:baca1df271d7c11fe50087c0358f4eb5": [
|
"sega-mega-cd:baca1df271d7c11fe50087c0358f4eb5": [
|
||||||
"2b125c0545afa089b617f2558e686ea723bdc06e"
|
"2b125c0545afa089b617f2558e686ea723bdc06e"
|
||||||
],
|
],
|
||||||
"sega-saturn:af5828fdff51384f99b3c4926be27762": [
|
|
||||||
"2b8cb4f87580683eb4d760e4ed210813d667f0a2"
|
|
||||||
],
|
|
||||||
"saturn_bios.bin": [
|
|
||||||
"2b8cb4f87580683eb4d760e4ed210813d667f0a2",
|
|
||||||
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"
|
|
||||||
],
|
|
||||||
"sega-saturn:85ec9ca47d8f6807718151cbcca8b964": [
|
"sega-saturn:85ec9ca47d8f6807718151cbcca8b964": [
|
||||||
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"
|
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720"
|
||||||
],
|
],
|
||||||
@@ -93660,200 +94067,6 @@
|
|||||||
"sega-saturn:0306c0e408d6682dd2d86324bd4ac661": [
|
"sega-saturn:0306c0e408d6682dd2d86324bd4ac661": [
|
||||||
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc"
|
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc"
|
||||||
],
|
],
|
||||||
"tos100uk.img": [
|
|
||||||
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2"
|
|
||||||
],
|
|
||||||
"tos106de.img": [
|
|
||||||
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd"
|
|
||||||
],
|
|
||||||
"tos206us.img": [
|
|
||||||
"ee58768bdfc602c9b14942ce5481e97dd24e7c83"
|
|
||||||
],
|
|
||||||
"bios7.bin": [
|
|
||||||
"24f67bdea115a2c847c8813a262502ee1607b7df"
|
|
||||||
],
|
|
||||||
"bios9.bin": [
|
|
||||||
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
|
|
||||||
],
|
|
||||||
"dsi_bios7.bin": [
|
|
||||||
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547"
|
|
||||||
],
|
|
||||||
"dsi_bios9.bin": [
|
|
||||||
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb"
|
|
||||||
],
|
|
||||||
"gb_bios.bin": [
|
|
||||||
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
|
||||||
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
|
||||||
],
|
|
||||||
"dmg0_rom.bin": [
|
|
||||||
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
|
||||||
"1db57a1e8b6e4096f811587f9eab0c6675fd9755"
|
|
||||||
],
|
|
||||||
"sgb_bios.bin": [
|
|
||||||
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
|
||||||
"369e6eb5e0c975eaa52a4a3f6ee07b2a3c3c16de",
|
|
||||||
"f282b3aaf98f8423dab7d77f1aa0192be630f2fb"
|
|
||||||
],
|
|
||||||
"sgb1.boot.rom": [
|
|
||||||
"aa2f50a77dfb4823da96ba99309085a3c6278515"
|
|
||||||
],
|
|
||||||
"SGB1.sfc": [
|
|
||||||
"973e10840db683cf3faf61bd443090786b3a9f04"
|
|
||||||
],
|
|
||||||
"SGB1.sfc/program.rom": [
|
|
||||||
"973e10840db683cf3faf61bd443090786b3a9f04"
|
|
||||||
],
|
|
||||||
"SGB2.sfc": [
|
|
||||||
"e5b2922ca137051059e4269b236d07a22c07bc84"
|
|
||||||
],
|
|
||||||
"SGB2.sfc/program.rom": [
|
|
||||||
"e5b2922ca137051059e4269b236d07a22c07bc84"
|
|
||||||
],
|
|
||||||
"fs-a1gt_kanjifont.rom": [
|
|
||||||
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
|
||||||
],
|
|
||||||
"fs-a1wsx_kanjifont.rom": [
|
|
||||||
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49"
|
|
||||||
],
|
|
||||||
"yrw801.rom": [
|
|
||||||
"32760893ce06dbe3930627755ba065cc3d8ec6ca"
|
|
||||||
],
|
|
||||||
"fs-a1wsx_msx2psub.rom": [
|
|
||||||
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
|
|
||||||
],
|
|
||||||
"MSX2PEXT.rom": [
|
|
||||||
"fe0254cbfc11405b79e7c86c7769bd6322b04995"
|
|
||||||
],
|
|
||||||
"fs-a1wsx_kanjibasic.rom": [
|
|
||||||
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06"
|
|
||||||
],
|
|
||||||
"fs-a1wsx_disk.rom": [
|
|
||||||
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6"
|
|
||||||
],
|
|
||||||
"kick37350.A600": [
|
|
||||||
"02843c4253bbd29aba535b0aa3bd9a85034ecde4"
|
|
||||||
],
|
|
||||||
"amiga-os-120.rom": [
|
|
||||||
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
|
|
||||||
],
|
|
||||||
"Kickstart v1.2 rev 33.180 (1986)(Commodore)(A500-A2000)[!].rom": [
|
|
||||||
"11f9e62cf299f72184835b7b2a70a16333fc0d88"
|
|
||||||
],
|
|
||||||
"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"
|
|
||||||
],
|
|
||||||
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+)[!].rom": [
|
|
||||||
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
|
|
||||||
],
|
|
||||||
"Kickstart v2.04 rev 37.175 (1991)(Commodore)(A500+).rom": [
|
|
||||||
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1"
|
|
||||||
],
|
|
||||||
"amiga-os-310-a600.rom": [
|
|
||||||
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000)[!].rom": [
|
|
||||||
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.63 (1993)(Commodore)(A500-A600-A2000).rom": [
|
|
||||||
"3b7f1493b27e212830f989f26ca76c02049f09ca"
|
|
||||||
],
|
|
||||||
"amiga-ext-130-cdtv.rom": [
|
|
||||||
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
|
||||||
],
|
|
||||||
"amiga-os-130-cdtv-ext.rom": [
|
|
||||||
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
|
||||||
],
|
|
||||||
"CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom": [
|
|
||||||
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
|
||||||
],
|
|
||||||
"CDTV Extended-ROM v1.0 (1992)(Commodore)(CDTV).rom": [
|
|
||||||
"7ba40ffa17e500ed9fed041f3424bd81d9c907be"
|
|
||||||
],
|
|
||||||
"amiga-os-300-a1200.rom": [
|
|
||||||
"70033828182fffc7ed106e5373a8b89dda76faa5"
|
|
||||||
],
|
|
||||||
"Kickstart v3.0 rev 39.106 (1992)(Commodore)(A1200)[!].rom": [
|
|
||||||
"70033828182fffc7ed106e5373a8b89dda76faa5"
|
|
||||||
],
|
|
||||||
"amiga-os-310-a1200.rom": [
|
|
||||||
"e21545723fe8374e91342617604f1b3d703094f1"
|
|
||||||
],
|
|
||||||
"AmigaVision.rom": [
|
|
||||||
"e21545723fe8374e91342617604f1b3d703094f1"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200)[!].rom": [
|
|
||||||
"e21545723fe8374e91342617604f1b3d703094f1"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A1200).rom": [
|
|
||||||
"e21545723fe8374e91342617604f1b3d703094f1"
|
|
||||||
],
|
|
||||||
"amiga-os-310-a4000.rom": [
|
|
||||||
"5fe04842d04a489720f0f4bb0e46948199406f49"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.68 (1993)(Commodore)(A4000).rom": [
|
|
||||||
"5fe04842d04a489720f0f4bb0e46948199406f49"
|
|
||||||
],
|
|
||||||
"amiga-os-310-cd32.rom": [
|
|
||||||
"3525be8887f79b5929e017b42380a79edfee542d"
|
|
||||||
],
|
|
||||||
"Kickstart v3.1 rev 40.60 (1993)(Commodore)(CD32).rom": [
|
|
||||||
"3525be8887f79b5929e017b42380a79edfee542d"
|
|
||||||
],
|
|
||||||
"amiga-ext-310-cd32.rom": [
|
|
||||||
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
|
||||||
],
|
|
||||||
"amiga-os-310-cd32-ext.rom": [
|
|
||||||
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
|
||||||
],
|
|
||||||
"CD32 Extended-ROM rev 40.60 (1993)(Commodore)(CD32).rom": [
|
|
||||||
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f"
|
|
||||||
],
|
|
||||||
"custom0.sf2": [
|
|
||||||
"286b2e1fb21cc79851da01666db6c0b0e88f25e3"
|
|
||||||
],
|
|
||||||
"colecovision.rom": [
|
|
||||||
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
|
||||||
],
|
|
||||||
"coleco.rom": [
|
|
||||||
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
|
||||||
],
|
|
||||||
"boot.rom": [
|
|
||||||
"45bedc4cbdeac66c7df59e9e599195c778d86a92"
|
|
||||||
],
|
|
||||||
"d2fdc.zip": [
|
|
||||||
"bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4",
|
|
||||||
"af56c948598291b284a528f3fce06b961dba55e3"
|
|
||||||
],
|
|
||||||
"basic11.rom": [
|
|
||||||
"9451a1a09d8f75944dbd6f91193fc360f1de80ac"
|
|
||||||
],
|
|
||||||
"basic21.bin": [
|
|
||||||
"03bbb386cf530e804363acdfc1d13e64cf28af2e"
|
|
||||||
],
|
|
||||||
"exos21.bin": [
|
|
||||||
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
|
||||||
],
|
|
||||||
"EXOS21.ROM": [
|
|
||||||
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e"
|
|
||||||
],
|
|
||||||
"zx48.rom": [
|
|
||||||
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
|
|
||||||
],
|
|
||||||
"zxs:48.rom": [
|
|
||||||
"5ea7c2b824672e914525d1d5c419d71b84a426a2"
|
|
||||||
],
|
|
||||||
"apple2gs1.rom": [
|
"apple2gs1.rom": [
|
||||||
"e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37"
|
"e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37"
|
||||||
],
|
],
|
||||||
@@ -93900,12 +94113,6 @@
|
|||||||
"d64tano.rom": [
|
"d64tano.rom": [
|
||||||
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69"
|
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69"
|
||||||
],
|
],
|
||||||
"d64_1.rom": [
|
|
||||||
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042"
|
|
||||||
],
|
|
||||||
"fs-5500_disk.rom": [
|
|
||||||
"78cd7f847e77fd8cd51a647efb2725ba93f4c471"
|
|
||||||
],
|
|
||||||
"pcfxbios.bin": [
|
"pcfxbios.bin": [
|
||||||
"1a77fd83e337f906aecab27a1604db064cf10074"
|
"1a77fd83e337f906aecab27a1604db064cf10074"
|
||||||
],
|
],
|
||||||
@@ -93919,6 +94126,12 @@
|
|||||||
"plus3e-3.rom": [
|
"plus3e-3.rom": [
|
||||||
"65f031caa8148a5493afe42c41f4929deab26b4e"
|
"65f031caa8148a5493afe42c41f4929deab26b4e"
|
||||||
],
|
],
|
||||||
|
"d64_1.rom": [
|
||||||
|
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042"
|
||||||
|
],
|
||||||
|
"fs-5500_disk.rom": [
|
||||||
|
"78cd7f847e77fd8cd51a647efb2725ba93f4c471"
|
||||||
|
],
|
||||||
"a1000kbd_fr.zip": [
|
"a1000kbd_fr.zip": [
|
||||||
"93d36de4d5d376c521a9ca99722f659e60d177f2"
|
"93d36de4d5d376c521a9ca99722f659e60d177f2"
|
||||||
],
|
],
|
||||||
@@ -98129,6 +98342,21 @@
|
|||||||
"0f3e6586": "10f1a7204f69b82a18bc94a3010c9660aec0c802",
|
"0f3e6586": "10f1a7204f69b82a18bc94a3010c9660aec0c802",
|
||||||
"e75945f3": "c0ee6f9443fa82c0fef5d497b3e76aa3077f1865",
|
"e75945f3": "c0ee6f9443fa82c0fef5d497b3e76aa3077f1865",
|
||||||
"0636e0be": "72c60172fb1ba77c9b24b06b7755f0a16f0b3a13",
|
"0636e0be": "72c60172fb1ba77c9b24b06b7755f0a16f0b3a13",
|
||||||
|
"298dd5b5": "eca9cff1014ce5081804e193588d96c6ddb35432",
|
||||||
|
"723e60f9": "7742089b4468a736cadb659a7deca3320fe6dcbd",
|
||||||
|
"162b696a": "5b2e249b9c5133ec987b3ea77596381dc0d6bc1d",
|
||||||
|
"ec8725db": "7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7",
|
||||||
|
"27eaae69": "d510c877031bbd5f3d198581a2c8651e09b9861f",
|
||||||
|
"cb10a53d": "ae363db8cd5645e1753d9bacc82cc0724e8e7f21",
|
||||||
|
"5b16049e": "f489d479371df32f6d280a0cb23b59a35ba2b833",
|
||||||
|
"22d3f0ca": "b4c50ca9bea07f7c35250a1a11906091971c05ae",
|
||||||
|
"fd5eb11d": "081f6a2024643b54ef4a436a85508539b6d20a1e",
|
||||||
|
"dca9114c": "4b53832f0733c1e29e5f1de2428e5475e891af29",
|
||||||
|
"48d1453c": "90361e2a538d2388506657252ae41aceeb1ba360",
|
||||||
|
"93c144dd": "bc0a110bf27aee89a0b2fc8111e2391ede891b8d",
|
||||||
|
"4234ace5": "64c13b951a845ca7f8081f68138a6181557458d1",
|
||||||
|
"903dcc27": "9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3",
|
||||||
|
"cd12ebcf": "ec6883100d807b894a98f426d024d22c77b63e7f",
|
||||||
"a5751b99": "5f4aed208301449c2e9514edfd325fe9dead76fa",
|
"a5751b99": "5f4aed208301449c2e9514edfd325fe9dead76fa",
|
||||||
"7f9a2c1e": "f3f2a11f3ecd91cd62d74c3acfad68a4cc6ddbd9",
|
"7f9a2c1e": "f3f2a11f3ecd91cd62d74c3acfad68a4cc6ddbd9",
|
||||||
"26dc3fba": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
|
"26dc3fba": "9259b87edfe9b9f6d0749788a75a6ccf158f50aa",
|
||||||
@@ -115312,6 +115540,42 @@
|
|||||||
"1c1a0d8c9f4c446ccd7470516b215ddca5052fb2",
|
"1c1a0d8c9f4c446ccd7470516b215ddca5052fb2",
|
||||||
"80080644289ed93d71a1103992a154cc9802b2fa",
|
"80080644289ed93d71a1103992a154cc9802b2fa",
|
||||||
"434bc0b4eb4827da0773ec0795aadc5162569a07",
|
"434bc0b4eb4827da0773ec0795aadc5162569a07",
|
||||||
|
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2",
|
||||||
|
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd",
|
||||||
|
"ee58768bdfc602c9b14942ce5481e97dd24e7c83",
|
||||||
|
"2b8cb4f87580683eb4d760e4ed210813d667f0a2",
|
||||||
|
"24f67bdea115a2c847c8813a262502ee1607b7df",
|
||||||
|
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d",
|
||||||
|
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547",
|
||||||
|
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb",
|
||||||
|
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
||||||
|
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
||||||
|
"973e10840db683cf3faf61bd443090786b3a9f04",
|
||||||
|
"e5b2922ca137051059e4269b236d07a22c07bc84",
|
||||||
|
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
||||||
|
"32760893ce06dbe3930627755ba065cc3d8ec6ca",
|
||||||
|
"fe0254cbfc11405b79e7c86c7769bd6322b04995",
|
||||||
|
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06",
|
||||||
|
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6",
|
||||||
|
"02843c4253bbd29aba535b0aa3bd9a85034ecde4",
|
||||||
|
"11f9e62cf299f72184835b7b2a70a16333fc0d88",
|
||||||
|
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785",
|
||||||
|
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1",
|
||||||
|
"3b7f1493b27e212830f989f26ca76c02049f09ca",
|
||||||
|
"7ba40ffa17e500ed9fed041f3424bd81d9c907be",
|
||||||
|
"70033828182fffc7ed106e5373a8b89dda76faa5",
|
||||||
|
"e21545723fe8374e91342617604f1b3d703094f1",
|
||||||
|
"5fe04842d04a489720f0f4bb0e46948199406f49",
|
||||||
|
"3525be8887f79b5929e017b42380a79edfee542d",
|
||||||
|
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f",
|
||||||
|
"44620f57a25f0bcac2b57ca2b0f1ebad3bf305d3",
|
||||||
|
"286b2e1fb21cc79851da01666db6c0b0e88f25e3",
|
||||||
|
"45bedc4cbdeac66c7df59e9e599195c778d86a92",
|
||||||
|
"bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4",
|
||||||
|
"9451a1a09d8f75944dbd6f91193fc360f1de80ac",
|
||||||
|
"03bbb386cf530e804363acdfc1d13e64cf28af2e",
|
||||||
|
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e",
|
||||||
|
"5ea7c2b824672e914525d1d5c419d71b84a426a2",
|
||||||
"343883a7b555646da8cee54aadd2795b6e7dd070",
|
"343883a7b555646da8cee54aadd2795b6e7dd070",
|
||||||
"1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
"1a8d6f9453111b1d317bb7dae300495fbf54600c",
|
||||||
"b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
"b06f4a861f74270be819aa2a07db8d0563a7cc4e",
|
||||||
@@ -115427,7 +115691,6 @@
|
|||||||
"f5f60f03501908962446ee02fc27d98694dd157d",
|
"f5f60f03501908962446ee02fc27d98694dd157d",
|
||||||
"328a3228c29fba244b9db2055adc1ec4f7a87e6b",
|
"328a3228c29fba244b9db2055adc1ec4f7a87e6b",
|
||||||
"2b125c0545afa089b617f2558e686ea723bdc06e",
|
"2b125c0545afa089b617f2558e686ea723bdc06e",
|
||||||
"2b8cb4f87580683eb4d760e4ed210813d667f0a2",
|
|
||||||
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720",
|
"df94c5b4d47eb3cc404d88b33a8fda237eaf4720",
|
||||||
"3bb41feb82838ab9a35601ac666de5aacfd17a58",
|
"3bb41feb82838ab9a35601ac666de5aacfd17a58",
|
||||||
"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3",
|
"faa8ea183a6d7bbe5d4e03bb1332519800d3fbc3",
|
||||||
@@ -115435,41 +115698,6 @@
|
|||||||
"49d8493008fa715ca0c94d99817a5439d6f2c796",
|
"49d8493008fa715ca0c94d99817a5439d6f2c796",
|
||||||
"8a22710e09ce75f39625894366cafe503ed1942d",
|
"8a22710e09ce75f39625894366cafe503ed1942d",
|
||||||
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
|
"8c031bf9908fd0142fdd10a9cdd79389f8a3f2fc",
|
||||||
"9a6e4c88533a9eaa4d55cdc040e47443e0226eb2",
|
|
||||||
"3b8cf5ffa41b252eb67f8824f94608fa4005d6dd",
|
|
||||||
"ee58768bdfc602c9b14942ce5481e97dd24e7c83",
|
|
||||||
"24f67bdea115a2c847c8813a262502ee1607b7df",
|
|
||||||
"bfaac75f101c135e32e2aaf541de6b1be4c8c62d",
|
|
||||||
"a3aa751eb6bdaaf8a827ba9e03576a6f1ab0f547",
|
|
||||||
"7bf549b8be9e48ab0cdc9b0fdadd49a5131f97eb",
|
|
||||||
"4ed31ec6b0b175bb109c0eb5fd3d193da823339f",
|
|
||||||
"aa2f50a77dfb4823da96ba99309085a3c6278515",
|
|
||||||
"973e10840db683cf3faf61bd443090786b3a9f04",
|
|
||||||
"e5b2922ca137051059e4269b236d07a22c07bc84",
|
|
||||||
"5aff2d9b6efc723bc395b0f96f0adfa83cc54a49",
|
|
||||||
"32760893ce06dbe3930627755ba065cc3d8ec6ca",
|
|
||||||
"fe0254cbfc11405b79e7c86c7769bd6322b04995",
|
|
||||||
"dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06",
|
|
||||||
"7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6",
|
|
||||||
"02843c4253bbd29aba535b0aa3bd9a85034ecde4",
|
|
||||||
"11f9e62cf299f72184835b7b2a70a16333fc0d88",
|
|
||||||
"891e9a547772fe0c6c19b610baf8bc4ea7fcb785",
|
|
||||||
"c5839f5cb98a7a8947065c3ed2f14f5f42e334a1",
|
|
||||||
"3b7f1493b27e212830f989f26ca76c02049f09ca",
|
|
||||||
"7ba40ffa17e500ed9fed041f3424bd81d9c907be",
|
|
||||||
"70033828182fffc7ed106e5373a8b89dda76faa5",
|
|
||||||
"e21545723fe8374e91342617604f1b3d703094f1",
|
|
||||||
"5fe04842d04a489720f0f4bb0e46948199406f49",
|
|
||||||
"3525be8887f79b5929e017b42380a79edfee542d",
|
|
||||||
"5bef3d628ce59cc02a66e6e4ae0da48f60e78f7f",
|
|
||||||
"44620f57a25f0bcac2b57ca2b0f1ebad3bf305d3",
|
|
||||||
"286b2e1fb21cc79851da01666db6c0b0e88f25e3",
|
|
||||||
"45bedc4cbdeac66c7df59e9e599195c778d86a92",
|
|
||||||
"bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4",
|
|
||||||
"9451a1a09d8f75944dbd6f91193fc360f1de80ac",
|
|
||||||
"03bbb386cf530e804363acdfc1d13e64cf28af2e",
|
|
||||||
"55315b20fecb4441a07ee4bc5dc7153f396e0a2e",
|
|
||||||
"5ea7c2b824672e914525d1d5c419d71b84a426a2",
|
|
||||||
"e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37",
|
"e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37",
|
||||||
"bc32bc0e8902946663998f56aea52be597d9e361",
|
"bc32bc0e8902946663998f56aea52be597d9e361",
|
||||||
"014881a959e045e00f4db8f52955200865d40280",
|
"014881a959e045e00f4db8f52955200865d40280",
|
||||||
@@ -115479,12 +115707,12 @@
|
|||||||
"04990aa1c3a3fc7294ec884b81deaa89832df614",
|
"04990aa1c3a3fc7294ec884b81deaa89832df614",
|
||||||
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e",
|
"e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e",
|
||||||
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69",
|
"1983b4fb398e3dd9668d424c666c5a0b3f1e2b69",
|
||||||
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042",
|
|
||||||
"78cd7f847e77fd8cd51a647efb2725ba93f4c471",
|
|
||||||
"1a77fd83e337f906aecab27a1604db064cf10074",
|
"1a77fd83e337f906aecab27a1604db064cf10074",
|
||||||
"93407ea10d2f30ab96a314d8eca44fe160aea734",
|
"93407ea10d2f30ab96a314d8eca44fe160aea734",
|
||||||
"94d44d7f9529ec1642ba3771ed3c5f756d5bc872",
|
"94d44d7f9529ec1642ba3771ed3c5f756d5bc872",
|
||||||
"65f031caa8148a5493afe42c41f4929deab26b4e",
|
"65f031caa8148a5493afe42c41f4929deab26b4e",
|
||||||
|
"f119506eaa3b4b70b9aa0dd83761e8cbe043d042",
|
||||||
|
"78cd7f847e77fd8cd51a647efb2725ba93f4c471",
|
||||||
"93d36de4d5d376c521a9ca99722f659e60d177f2",
|
"93d36de4d5d376c521a9ca99722f659e60d177f2",
|
||||||
"b22847ad1d8c5ee0fff41b3bd31aab6cbf8778ea",
|
"b22847ad1d8c5ee0fff41b3bd31aab6cbf8778ea",
|
||||||
"e35eda0cc2c11da92c0a6c222f314d84e623b29e",
|
"e35eda0cc2c11da92c0a6c222f314d84e623b29e",
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ nav:
|
|||||||
- RetroBat: platforms/retrobat.md
|
- RetroBat: platforms/retrobat.md
|
||||||
- RetroDECK: platforms/retrodeck.md
|
- RetroDECK: platforms/retrodeck.md
|
||||||
- RetroPie: platforms/retropie.md
|
- RetroPie: platforms/retropie.md
|
||||||
|
- RomM: platforms/romm.md
|
||||||
- Systems:
|
- Systems:
|
||||||
- Overview: systems/index.md
|
- Overview: systems/index.md
|
||||||
- 3DO Company: systems/3do-company.md
|
- 3DO Company: systems/3do-company.md
|
||||||
|
|||||||
+2
-1
@@ -93,4 +93,5 @@ Full libretro docs: `https://docs.libretro.com/library/<core>/`
|
|||||||
| RetroBat | md5 | MD5 check via JSON config | `batocera-systems.json` |
|
| RetroBat | md5 | MD5 check via JSON config | `batocera-systems.json` |
|
||||||
| EmuDeck | md5 | MD5 whitelist per system | `checkBIOS.sh` |
|
| EmuDeck | md5 | MD5 whitelist per system | `checkBIOS.sh` |
|
||||||
| Recalbox | md5 | multi-hash comma-separated | `es_bios.xml` + `Bios.cpp` |
|
| Recalbox | md5 | multi-hash comma-separated | `es_bios.xml` + `Bios.cpp` |
|
||||||
| RomM | md5 | MD5 | `known_bios_files.json` |
|
| RetroDECK | md5 | MD5 per file via component manifests | `api_data_processing.sh` |
|
||||||
|
| RomM | md5 | size + any hash (MD5/SHA1/CRC32) | `firmware.py` |
|
||||||
|
|||||||
+11
-7
@@ -86,6 +86,17 @@ platforms:
|
|||||||
# Each component/<name>/component_manifest.json declares BIOS requirements
|
# Each component/<name>/component_manifest.json declares BIOS requirements
|
||||||
# Scraper enumerates top-level dirs via GitHub API, fetches each manifest directly
|
# Scraper enumerates top-level dirs via GitHub API, fetches each manifest directly
|
||||||
|
|
||||||
|
romm:
|
||||||
|
config: romm.yml
|
||||||
|
status: active
|
||||||
|
logo: "https://avatars.githubusercontent.com/u/168586850"
|
||||||
|
scraper: romm
|
||||||
|
source_url: "https://raw.githubusercontent.com/rommapp/romm/master/backend/models/fixtures/known_bios_files.json"
|
||||||
|
source_format: json
|
||||||
|
hash_type: sha1
|
||||||
|
schedule: monthly
|
||||||
|
inherits_from: emulatorjs # cores inherited from emulatorjs.yml
|
||||||
|
|
||||||
retropie:
|
retropie:
|
||||||
config: retropie.yml
|
config: retropie.yml
|
||||||
status: archived # Last release: v4.8 (March 2022) - no update in 4 years
|
status: archived # Last release: v4.8 (March 2022) - no update in 4 years
|
||||||
@@ -93,10 +104,3 @@ platforms:
|
|||||||
scraper: null
|
scraper: null
|
||||||
cores: all_libretro
|
cores: all_libretro
|
||||||
schedule: null
|
schedule: null
|
||||||
|
|
||||||
romm:
|
|
||||||
config: romm.yml
|
|
||||||
status: active
|
|
||||||
logo: "https://raw.githubusercontent.com/rommapp/romm/master/.github/resources/isotipo.png"
|
|
||||||
scraper: romm
|
|
||||||
schedule: monthly
|
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# EmulatorJS base config (not a standalone platform).
|
||||||
|
# Provides the core list for platforms that use EmulatorJS as their emulation engine.
|
||||||
|
# Source: emulatorjs/emulatorjs data/src/consts.js + emulatorjs/build cores.json
|
||||||
|
# RomM mapping: rommapp/romm frontend/src/utils/index.ts (_EJS_CORES_MAP)
|
||||||
|
platform: EmulatorJS
|
||||||
|
version: "4.2.3"
|
||||||
|
homepage: "https://emulatorjs.org"
|
||||||
|
source: "https://github.com/emulatorjs/emulatorjs"
|
||||||
|
cores:
|
||||||
|
- a5200
|
||||||
|
- beetle_vb
|
||||||
|
- cap32
|
||||||
|
- crocods
|
||||||
|
- desmume
|
||||||
|
- desmume2015
|
||||||
|
- dosbox_pure
|
||||||
|
- fbalpha2012_cps1
|
||||||
|
- fbalpha2012_cps2
|
||||||
|
- fbneo
|
||||||
|
- fceumm
|
||||||
|
- freeintv
|
||||||
|
- fuse
|
||||||
|
- gambatte
|
||||||
|
- gearcoleco
|
||||||
|
- genesis_plus_gx
|
||||||
|
- handy
|
||||||
|
- mame2003
|
||||||
|
- mame2003_plus
|
||||||
|
- mednafen_ngp
|
||||||
|
- mednafen_pce
|
||||||
|
- mednafen_pcfx
|
||||||
|
- mednafen_psx_hw
|
||||||
|
- mednafen_wswan
|
||||||
|
- melonds
|
||||||
|
- mgba
|
||||||
|
- mupen64plus_next
|
||||||
|
- nestopia
|
||||||
|
- opera
|
||||||
|
- parallel_n64
|
||||||
|
- pcsx_rearmed
|
||||||
|
- picodrive
|
||||||
|
- ppsspp
|
||||||
|
- prboom
|
||||||
|
- prosystem
|
||||||
|
- puae
|
||||||
|
- same_cdi
|
||||||
|
- smsplus
|
||||||
|
- snes9x
|
||||||
|
- stella2014
|
||||||
|
- vice_x128
|
||||||
|
- vice_x64
|
||||||
|
- vice_x64sc
|
||||||
|
- vice_xpet
|
||||||
|
- vice_xplus4
|
||||||
|
- vice_xvic
|
||||||
|
- virtualjaguar
|
||||||
|
- yabause
|
||||||
+1578
-1206
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@ import urllib.error
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||||
from common import load_database, load_platform_config
|
from common import list_registered_platforms, load_database, load_platform_config
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import yaml
|
import yaml
|
||||||
@@ -381,10 +381,9 @@ def main():
|
|||||||
db = load_database(args.db)
|
db = load_database(args.db)
|
||||||
|
|
||||||
if args.all:
|
if args.all:
|
||||||
platforms = []
|
platforms = list_registered_platforms(
|
||||||
for f in Path(args.platforms_dir).glob("*.yml"):
|
args.platforms_dir, include_archived=True,
|
||||||
if not f.name.startswith("_"):
|
)
|
||||||
platforms.append(f.stem)
|
|
||||||
elif args.platform:
|
elif args.platform:
|
||||||
platforms = [args.platform]
|
platforms = [args.platform]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -167,6 +167,31 @@ def load_data_dir_registry(platforms_dir: str = "platforms") -> dict:
|
|||||||
return data.get("data_directories", {})
|
return data.get("data_directories", {})
|
||||||
|
|
||||||
|
|
||||||
|
def list_registered_platforms(
|
||||||
|
platforms_dir: str = "platforms",
|
||||||
|
include_archived: bool = False,
|
||||||
|
) -> list[str]:
|
||||||
|
"""List platforms registered in _registry.yml.
|
||||||
|
|
||||||
|
Only registered platforms generate packs and appear in CI.
|
||||||
|
Unregistered YAMLs (e.g., emulatorjs.yml) are base configs for inheritance.
|
||||||
|
"""
|
||||||
|
registry_path = os.path.join(platforms_dir, "_registry.yml")
|
||||||
|
if not os.path.exists(registry_path):
|
||||||
|
return []
|
||||||
|
with open(registry_path) as f:
|
||||||
|
registry = yaml.safe_load(f) or {}
|
||||||
|
platforms = []
|
||||||
|
for name, meta in sorted(registry.get("platforms", {}).items()):
|
||||||
|
status = meta.get("status", "active")
|
||||||
|
if status == "archived" and not include_archived:
|
||||||
|
continue
|
||||||
|
config_path = os.path.join(platforms_dir, meta.get("config", f"{name}.yml"))
|
||||||
|
if os.path.exists(config_path):
|
||||||
|
platforms.append(name)
|
||||||
|
return platforms
|
||||||
|
|
||||||
|
|
||||||
def resolve_local_file(
|
def resolve_local_file(
|
||||||
file_entry: dict,
|
file_entry: dict,
|
||||||
db: dict,
|
db: dict,
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ except ImportError:
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
from common import load_database, load_emulator_profiles, load_platform_config
|
from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config
|
||||||
|
|
||||||
DEFAULT_EMULATORS_DIR = "emulators"
|
DEFAULT_EMULATORS_DIR = "emulators"
|
||||||
DEFAULT_PLATFORMS_DIR = "platforms"
|
DEFAULT_PLATFORMS_DIR = "platforms"
|
||||||
@@ -36,10 +36,8 @@ def load_platform_files(platforms_dir: str) -> tuple[dict[str, set[str]], dict[s
|
|||||||
"""Load all platform configs and collect declared filenames + data_directories per system."""
|
"""Load all platform configs and collect declared filenames + data_directories per system."""
|
||||||
declared = {}
|
declared = {}
|
||||||
platform_data_dirs = {}
|
platform_data_dirs = {}
|
||||||
for f in sorted(Path(platforms_dir).glob("*.yml")):
|
for platform_name in list_registered_platforms(platforms_dir, include_archived=True):
|
||||||
if f.name.startswith("_"):
|
config = load_platform_config(platform_name, platforms_dir)
|
||||||
continue
|
|
||||||
config = load_platform_config(f.stem, platforms_dir)
|
|
||||||
for sys_id, system in config.get("systems", {}).items():
|
for sys_id, system in config.get("systems", {}).items():
|
||||||
for fe in system.get("files", []):
|
for fe in system.get("files", []):
|
||||||
name = fe.get("name", "")
|
name = fe.get("name", "")
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ from datetime import datetime, timezone
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
from common import compute_hashes
|
from common import compute_hashes, list_registered_platforms
|
||||||
|
|
||||||
CACHE_DIR = ".cache"
|
CACHE_DIR = ".cache"
|
||||||
CACHE_FILE = os.path.join(CACHE_DIR, "db_cache.json")
|
CACHE_FILE = os.path.join(CACHE_DIR, "db_cache.json")
|
||||||
@@ -353,9 +353,8 @@ def _collect_all_aliases(files: dict) -> dict:
|
|||||||
if platforms_dir.is_dir():
|
if platforms_dir.is_dir():
|
||||||
try:
|
try:
|
||||||
import yaml
|
import yaml
|
||||||
for config_file in platforms_dir.glob("*.yml"):
|
for platform_name in list_registered_platforms(str(platforms_dir), include_archived=True):
|
||||||
if config_file.name.startswith("_"):
|
config_file = platforms_dir / f"{platform_name}.yml"
|
||||||
continue
|
|
||||||
try:
|
try:
|
||||||
with open(config_file) as f:
|
with open(config_file) as f:
|
||||||
config = yaml.safe_load(f) or {}
|
config = yaml.safe_load(f) or {}
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ sys.path.insert(0, os.path.dirname(__file__))
|
|||||||
from common import (
|
from common import (
|
||||||
_build_validation_index, build_zip_contents_index, check_file_validation,
|
_build_validation_index, build_zip_contents_index, check_file_validation,
|
||||||
check_inside_zip, compute_hashes, fetch_large_file, filter_files_by_mode,
|
check_inside_zip, compute_hashes, fetch_large_file, filter_files_by_mode,
|
||||||
group_identical_platforms, list_emulator_profiles, list_system_ids,
|
group_identical_platforms, list_emulator_profiles, list_registered_platforms,
|
||||||
load_database, load_data_dir_registry, load_emulator_profiles,
|
list_system_ids, load_database, load_data_dir_registry,
|
||||||
load_platform_config, md5_composite, resolve_local_file,
|
load_emulator_profiles, load_platform_config, md5_composite,
|
||||||
|
resolve_local_file,
|
||||||
)
|
)
|
||||||
from deterministic_zip import rebuild_zip_deterministic
|
from deterministic_zip import rebuild_zip_deterministic
|
||||||
|
|
||||||
@@ -820,13 +821,8 @@ def generate_system_pack(
|
|||||||
|
|
||||||
|
|
||||||
def list_platforms(platforms_dir: str) -> list[str]:
|
def list_platforms(platforms_dir: str) -> list[str]:
|
||||||
"""List available platform names from YAML files."""
|
"""List available platform names from registry."""
|
||||||
platforms = []
|
return list_registered_platforms(platforms_dir, include_archived=True)
|
||||||
for f in sorted(Path(platforms_dir).glob("*.yml")):
|
|
||||||
if f.name.startswith("_"):
|
|
||||||
continue
|
|
||||||
platforms.append(f.stem)
|
|
||||||
return platforms
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -901,9 +897,9 @@ def main():
|
|||||||
|
|
||||||
# Platform mode (existing)
|
# Platform mode (existing)
|
||||||
if args.all:
|
if args.all:
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
platforms = list_registered_platforms(
|
||||||
from list_platforms import list_platforms as _list_active
|
args.platforms_dir, include_archived=args.include_archived,
|
||||||
platforms = _list_active(include_archived=args.include_archived)
|
)
|
||||||
elif args.platform:
|
elif args.platform:
|
||||||
platforms = [args.platform]
|
platforms = [args.platform]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ from datetime import datetime, timezone
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
from common import load_database, load_platform_config
|
from common import list_registered_platforms, load_database, load_platform_config
|
||||||
from verify import verify_platform
|
from verify import verify_platform
|
||||||
|
|
||||||
def compute_coverage(platform_name: str, platforms_dir: str, db: dict) -> dict:
|
def compute_coverage(platform_name: str, platforms_dir: str, db: dict) -> dict:
|
||||||
@@ -80,10 +80,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
|||||||
size_mb = total_size / (1024 * 1024)
|
size_mb = total_size / (1024 * 1024)
|
||||||
ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
|
ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
|
||||||
platform_names = sorted(
|
platform_names = list_registered_platforms(platforms_dir, include_archived=True)
|
||||||
p.stem for p in Path(platforms_dir).glob("*.yml")
|
|
||||||
if not p.name.startswith("_")
|
|
||||||
)
|
|
||||||
|
|
||||||
coverages = {}
|
coverages = {}
|
||||||
for name in platform_names:
|
for name in platform_names:
|
||||||
@@ -135,6 +132,7 @@ def generate_readme(db: dict, platforms_dir: str) -> str:
|
|||||||
"RetroPie": "`BIOS/`",
|
"RetroPie": "`BIOS/`",
|
||||||
"RetroDECK": "`~/retrodeck/bios/`",
|
"RetroDECK": "`~/retrodeck/bios/`",
|
||||||
"EmuDeck": "`Emulation/bios/`",
|
"EmuDeck": "`Emulation/bios/`",
|
||||||
|
"RomM": "`bios/{platform_slug}/`",
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, cov in sorted(coverages.items(), key=lambda x: x[1]["platform"]):
|
for name, cov in sorted(coverages.items(), key=lambda x: x[1]["platform"]):
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ except ImportError:
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
from common import load_database, load_emulator_profiles, load_platform_config
|
from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config
|
||||||
from generate_readme import compute_coverage
|
from generate_readme import compute_coverage
|
||||||
from verify import verify_platform
|
from verify import verify_platform
|
||||||
|
|
||||||
@@ -2044,10 +2044,7 @@ def main():
|
|||||||
registry = (yaml.safe_load(f) or {}).get("platforms", {})
|
registry = (yaml.safe_load(f) or {}).get("platforms", {})
|
||||||
|
|
||||||
# Load platform configs
|
# Load platform configs
|
||||||
platform_names = [
|
platform_names = list_registered_platforms(args.platforms_dir, include_archived=True)
|
||||||
p.stem for p in Path(args.platforms_dir).glob("*.yml")
|
|
||||||
if not p.name.startswith("_")
|
|
||||||
]
|
|
||||||
|
|
||||||
print("Computing platform coverage...")
|
print("Computing platform coverage...")
|
||||||
coverages = {}
|
coverages = {}
|
||||||
|
|||||||
@@ -17,45 +17,16 @@ import argparse
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
try:
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
import yaml
|
from common import list_registered_platforms
|
||||||
except ImportError:
|
|
||||||
yaml = None
|
|
||||||
|
|
||||||
PLATFORMS_DIR = "platforms"
|
PLATFORMS_DIR = "platforms"
|
||||||
|
|
||||||
|
|
||||||
def _load_registry(platforms_dir: str = PLATFORMS_DIR) -> dict:
|
|
||||||
"""Load _registry.yml if available."""
|
|
||||||
registry_path = Path(platforms_dir) / "_registry.yml"
|
|
||||||
if yaml and registry_path.exists():
|
|
||||||
with open(registry_path) as f:
|
|
||||||
return yaml.safe_load(f) or {}
|
|
||||||
return {}
|
|
||||||
|
|
||||||
|
|
||||||
def list_platforms(include_archived: bool = False) -> list[str]:
|
def list_platforms(include_archived: bool = False) -> list[str]:
|
||||||
"""List platform config files, filtering by status from _registry.yml."""
|
"""List platform config files, filtering by status from _registry.yml."""
|
||||||
platforms_dir = Path(PLATFORMS_DIR)
|
return list_registered_platforms(PLATFORMS_DIR, include_archived=include_archived)
|
||||||
if not platforms_dir.is_dir():
|
|
||||||
return []
|
|
||||||
|
|
||||||
registry = _load_registry(str(platforms_dir))
|
|
||||||
registry_platforms = registry.get("platforms", {})
|
|
||||||
|
|
||||||
platforms = []
|
|
||||||
for f in sorted(platforms_dir.glob("*.yml")):
|
|
||||||
if f.name.startswith("_"):
|
|
||||||
continue
|
|
||||||
name = f.stem
|
|
||||||
status = registry_platforms.get(name, {}).get("status", "active")
|
|
||||||
if status == "archived" and not include_archived:
|
|
||||||
continue
|
|
||||||
platforms.append(name)
|
|
||||||
|
|
||||||
return platforms
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
+155
-61
@@ -2,48 +2,116 @@
|
|||||||
"""Scraper for RomM BIOS requirements.
|
"""Scraper for RomM BIOS requirements.
|
||||||
|
|
||||||
Source: https://github.com/rommapp/romm
|
Source: https://github.com/rommapp/romm
|
||||||
Format: known_bios_files.json in backend/models/fixtures/
|
Format: JSON fixture mapping "slug:filename" to {size, crc, md5, sha1}
|
||||||
Hash: MD5 (primary), SHA1, CRC
|
Hash: SHA1 primary (all four hashes available per entry)
|
||||||
|
|
||||||
RomM stores BIOS requirements in known_bios_files.json,
|
RomM stores known BIOS hashes in known_bios_files.json. At startup, the
|
||||||
it contains bios files for all emulators, and is formatted as a mapping of "<console>:<bios_file>": { "size": "<size_in_bytes>", "crc": "<crc>", "md5": "<md5>", "sha1": "<sha1>" }.
|
fixture is loaded into Redis. When scanning or uploading firmware, RomM
|
||||||
|
verifies: file size must match AND at least one hash (MD5, SHA1, CRC32)
|
||||||
|
must match (firmware.py:verify_file_hashes).
|
||||||
|
|
||||||
|
RomM hashes files as opaque blobs (no ZIP content inspection). Arcade
|
||||||
|
BIOS ZIPs are matched by their container hash, which varies by MAME
|
||||||
|
version and ZIP tool. This is a known limitation (rommapp/romm#2888).
|
||||||
|
|
||||||
|
Folder structure: {library}/bios/{platform_slug}/{filename} (flat).
|
||||||
|
Slugs are IGDB-style platform identifiers.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .base_scraper import BaseScraper, BiosRequirement, fetch_github_latest_version
|
from .base_scraper import BaseScraper, BiosRequirement, fetch_github_latest_version
|
||||||
except ImportError:
|
except ImportError:
|
||||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
from base_scraper import BaseScraper, BiosRequirement, fetch_github_latest_version
|
||||||
from scraper.base_scraper import BaseScraper, BiosRequirement, fetch_github_latest_version
|
|
||||||
|
|
||||||
PLATFORM_NAME = "RomM"
|
PLATFORM_NAME = "romm"
|
||||||
|
|
||||||
BIOS_REPO = "rommapp/romm"
|
SOURCE_URL = (
|
||||||
BIOS_BRANCH = "master"
|
"https://raw.githubusercontent.com/rommapp/romm/"
|
||||||
BIOS_FILE = "backend/models/fixtures/known_bios_files.json"
|
"master/backend/models/fixtures/known_bios_files.json"
|
||||||
BIOS_URL = (
|
|
||||||
f"https://raw.githubusercontent.com/{BIOS_REPO}/refs/heads/{BIOS_BRANCH}/{BIOS_FILE}"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
GITHUB_REPO = "rommapp/romm"
|
||||||
|
|
||||||
|
# IGDB slug -> retrobios system ID
|
||||||
|
SLUG_MAP: dict[str, str] = {
|
||||||
|
"3do": "3do",
|
||||||
|
"64dd": "nintendo-64dd",
|
||||||
|
"acpc": "amstrad-cpc",
|
||||||
|
"amiga": "commodore-amiga",
|
||||||
|
"arcade": "arcade",
|
||||||
|
"atari-st": "atari-st",
|
||||||
|
"atari5200": "atari-5200",
|
||||||
|
"atari7800": "atari-7800",
|
||||||
|
"atari8bit": "atari-400-800",
|
||||||
|
"colecovision": "coleco-colecovision",
|
||||||
|
"dc": "sega-dreamcast",
|
||||||
|
"doom": "doom",
|
||||||
|
"enterprise": "enterprise-64-128",
|
||||||
|
"fairchild-channel-f": "fairchild-channel-f",
|
||||||
|
"fds": "nintendo-fds",
|
||||||
|
"gamegear": "sega-game-gear",
|
||||||
|
"gb": "nintendo-gb",
|
||||||
|
"gba": "nintendo-gba",
|
||||||
|
"gbc": "nintendo-gbc",
|
||||||
|
"genesis": "sega-mega-drive",
|
||||||
|
"intellivision": "mattel-intellivision",
|
||||||
|
"j2me": "j2me",
|
||||||
|
"lynx": "atari-lynx",
|
||||||
|
"mac": "apple-macintosh-ii",
|
||||||
|
"msx": "microsoft-msx",
|
||||||
|
"msx2": "microsoft-msx",
|
||||||
|
"nds": "nintendo-ds",
|
||||||
|
"neo-geo-cd": "snk-neogeo-cd",
|
||||||
|
"nes": "nintendo-nes",
|
||||||
|
"ngc": "nintendo-gamecube",
|
||||||
|
"odyssey-2-slash-videopac-g7000": "magnavox-odyssey2",
|
||||||
|
"pc-9800-series": "nec-pc-98",
|
||||||
|
"pc-fx": "nec-pc-fx",
|
||||||
|
"pokemon-mini": "nintendo-pokemon-mini",
|
||||||
|
"ps2": "sony-playstation-2",
|
||||||
|
"psp": "sony-psp",
|
||||||
|
"psx": "sony-playstation",
|
||||||
|
"satellaview": "nintendo-satellaview",
|
||||||
|
"saturn": "sega-saturn",
|
||||||
|
"scummvm": "scummvm",
|
||||||
|
"segacd": "sega-mega-cd",
|
||||||
|
"sharp-x68000": "sharp-x68000",
|
||||||
|
"sms": "sega-master-system",
|
||||||
|
"snes": "nintendo-snes",
|
||||||
|
"sufami-turbo": "nintendo-sufami-turbo",
|
||||||
|
"super-gb": "nintendo-sgb",
|
||||||
|
"tg16": "nec-pc-engine",
|
||||||
|
"tvc": "videoton-tvc",
|
||||||
|
"videopac-g7400": "philips-videopac",
|
||||||
|
"wolfenstein": "wolfenstein-3d",
|
||||||
|
"x1": "sharp-x1",
|
||||||
|
"xbox": "microsoft-xbox",
|
||||||
|
"zxs": "sinclair-zx-spectrum",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Scraper(BaseScraper):
|
class Scraper(BaseScraper):
|
||||||
"""RomM BIOS scraper from known_bios_files.json."""
|
"""Scraper for RomM known_bios_files.json."""
|
||||||
|
|
||||||
def __init__(self, url = BIOS_URL):
|
def __init__(self, url: str = SOURCE_URL):
|
||||||
super().__init__(url)
|
super().__init__(url=url)
|
||||||
|
self._parsed: dict | None = None
|
||||||
|
|
||||||
def fetch_metadata(self) -> dict:
|
def _parse_json(self) -> dict:
|
||||||
version = fetch_github_latest_version(BIOS_REPO) or "unknown"
|
if self._parsed is not None:
|
||||||
return {
|
return self._parsed
|
||||||
"name": PLATFORM_NAME,
|
|
||||||
"version": version,
|
raw = self._fetch_raw()
|
||||||
"homepage": "https://romm.app",
|
try:
|
||||||
"source": self.url,
|
self._parsed = json.loads(raw)
|
||||||
}
|
except json.JSONDecodeError as e:
|
||||||
|
raise ValueError(f"Failed to parse JSON: {e}") from e
|
||||||
|
return self._parsed
|
||||||
|
|
||||||
def fetch_requirements(self) -> list[BiosRequirement]:
|
def fetch_requirements(self) -> list[BiosRequirement]:
|
||||||
"""Parse known_bios_files.json and return BIOS requirements."""
|
"""Parse known_bios_files.json and return BIOS requirements."""
|
||||||
@@ -52,43 +120,61 @@ class Scraper(BaseScraper):
|
|||||||
if not self.validate_format(raw):
|
if not self.validate_format(raw):
|
||||||
raise ValueError("known_bios_files.json format validation failed")
|
raise ValueError("known_bios_files.json format validation failed")
|
||||||
|
|
||||||
roms = json.loads(raw)
|
data = self._parse_json()
|
||||||
requirements = []
|
requirements = []
|
||||||
|
|
||||||
for key, info in roms.items():
|
for key, entry in data.items():
|
||||||
if ":" not in key:
|
if ":" not in key:
|
||||||
continue
|
continue
|
||||||
system, name = key.split(":", 1)
|
|
||||||
|
igdb_slug, filename = key.split(":", 1)
|
||||||
|
system = SLUG_MAP.get(igdb_slug)
|
||||||
|
if not system:
|
||||||
|
print(f"Warning: unmapped IGDB slug '{igdb_slug}'", file=sys.stderr)
|
||||||
|
continue
|
||||||
|
|
||||||
|
sha1 = (entry.get("sha1") or "").strip() or None
|
||||||
|
md5 = (entry.get("md5") or "").strip() or None
|
||||||
|
crc32 = (entry.get("crc") or "").strip() or None
|
||||||
|
size = int(entry["size"]) if entry.get("size") else None
|
||||||
|
|
||||||
requirements.append(BiosRequirement(
|
requirements.append(BiosRequirement(
|
||||||
name=name,
|
name=filename,
|
||||||
system=system,
|
system=system,
|
||||||
size=int(info.get("size", 0)),
|
sha1=sha1,
|
||||||
crc32=info.get("crc"),
|
md5=md5,
|
||||||
md5=info.get("md5"),
|
crc32=crc32,
|
||||||
sha1=info.get("sha1"),
|
size=size,
|
||||||
|
destination=f"{igdb_slug}/{filename}",
|
||||||
|
required=True,
|
||||||
))
|
))
|
||||||
|
|
||||||
return requirements
|
return requirements
|
||||||
|
|
||||||
def validate_format(self, raw_data: str) -> bool:
|
def validate_format(self, raw_data: str) -> bool:
|
||||||
"""Validate that the raw data is a JSON object with the expected structure."""
|
"""Validate that raw_data is a JSON dict with slug:filename keys."""
|
||||||
try:
|
try:
|
||||||
data = json.loads(raw_data)
|
data = json.loads(raw_data)
|
||||||
if not isinstance(data, dict):
|
except (json.JSONDecodeError, TypeError):
|
||||||
return False
|
|
||||||
for key, value in data.items():
|
|
||||||
if ":" not in key or not isinstance(value, dict):
|
|
||||||
return False
|
|
||||||
if not all(k in value for k in ("size", "crc", "md5", "sha1")):
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if not isinstance(data, dict):
|
||||||
|
return False
|
||||||
|
|
||||||
|
for key in list(data.keys())[:5]:
|
||||||
|
if ":" not in key:
|
||||||
|
return False
|
||||||
|
_, entry = key.split(":", 1), data[key]
|
||||||
|
if not isinstance(data[key], dict):
|
||||||
|
return False
|
||||||
|
if "md5" not in data[key] and "sha1" not in data[key]:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return len(data) > 0
|
||||||
|
|
||||||
def generate_platform_yaml(self) -> dict:
|
def generate_platform_yaml(self) -> dict:
|
||||||
"""Generate platform YAML content for RomM."""
|
"""Generate a platform YAML config dict from scraped data."""
|
||||||
requirements = self.fetch_requirements()
|
requirements = self.fetch_requirements()
|
||||||
metadata = self.fetch_metadata()
|
|
||||||
|
|
||||||
systems: dict[str, dict] = {}
|
systems: dict[str, dict] = {}
|
||||||
for req in requirements:
|
for req in requirements:
|
||||||
@@ -97,34 +183,42 @@ class Scraper(BaseScraper):
|
|||||||
|
|
||||||
entry: dict = {
|
entry: dict = {
|
||||||
"name": req.name,
|
"name": req.name,
|
||||||
"destination": f"{req.system}/{req.name}",
|
"destination": req.destination,
|
||||||
"size": req.size,
|
"required": req.required,
|
||||||
"crc": req.crc32,
|
|
||||||
"md5": req.md5,
|
|
||||||
"sha1": req.sha1,
|
|
||||||
}
|
}
|
||||||
|
if req.sha1:
|
||||||
|
entry["sha1"] = req.sha1
|
||||||
|
if req.md5:
|
||||||
|
entry["md5"] = req.md5
|
||||||
|
if req.crc32:
|
||||||
|
entry["crc32"] = req.crc32
|
||||||
|
if req.size:
|
||||||
|
entry["size"] = req.size
|
||||||
|
|
||||||
systems[req.system]["files"].append(entry)
|
systems[req.system]["files"].append(entry)
|
||||||
|
|
||||||
|
version = ""
|
||||||
|
tag = fetch_github_latest_version(GITHUB_REPO)
|
||||||
|
if tag:
|
||||||
|
version = tag
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"platform": metadata["name"],
|
"inherits": "emulatorjs",
|
||||||
"version": metadata["version"],
|
"platform": "RomM",
|
||||||
"homepage": metadata["homepage"],
|
"version": version,
|
||||||
"source": metadata["source"],
|
"homepage": "https://romm.app",
|
||||||
|
"source": SOURCE_URL,
|
||||||
"base_destination": "bios",
|
"base_destination": "bios",
|
||||||
"hash_type": "md5",
|
"hash_type": "sha1",
|
||||||
"verification_mode": "md5",
|
"verification_mode": "md5",
|
||||||
"cores": [],
|
|
||||||
"systems": systems,
|
"systems": systems,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
try:
|
from scripts.scraper.base_scraper import scraper_cli
|
||||||
from .base_scraper import scraper_cli
|
|
||||||
except ImportError:
|
|
||||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
||||||
from scraper.base_scraper import scraper_cli
|
|
||||||
scraper_cli(Scraper, "Scrape RomM BIOS requirements")
|
scraper_cli(Scraper, "Scrape RomM BIOS requirements")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
from common import compute_hashes, load_database as _load_database
|
from common import compute_hashes, list_registered_platforms, load_database as _load_database
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import yaml
|
import yaml
|
||||||
@@ -107,9 +107,8 @@ def load_platform_hashes(platforms_dir: str) -> dict:
|
|||||||
if not os.path.isdir(platforms_dir) or yaml is None:
|
if not os.path.isdir(platforms_dir) or yaml is None:
|
||||||
return known
|
return known
|
||||||
|
|
||||||
for f in Path(platforms_dir).glob("*.yml"):
|
for name in list_registered_platforms(platforms_dir, include_archived=True):
|
||||||
if f.name.startswith("_"):
|
f = Path(platforms_dir) / f"{name}.yml"
|
||||||
continue
|
|
||||||
with open(f) as fh:
|
with open(f) as fh:
|
||||||
try:
|
try:
|
||||||
config = yaml.safe_load(fh) or {}
|
config = yaml.safe_load(fh) or {}
|
||||||
|
|||||||
Reference in New Issue
Block a user