mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
feat: add doom engine wad files, emulatorjs base config
This commit is contained in:
25
README.md
25
README.md
@@ -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*
|
||||||
|
|||||||
BIN
bios/Id Software/Doom/CHEX.WAD
Normal file
BIN
bios/Id Software/Doom/CHEX.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/DOOM.WAD
Normal file
BIN
bios/Id Software/Doom/DOOM.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/DOOM1.WAD
Normal file
BIN
bios/Id Software/Doom/DOOM1.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/DOOM2.WAD
Normal file
BIN
bios/Id Software/Doom/DOOM2.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/DOOM2F.WAD
Normal file
BIN
bios/Id Software/Doom/DOOM2F.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/DOOM64.WAD
Normal file
BIN
bios/Id Software/Doom/DOOM64.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/HERETIC.WAD
Normal file
BIN
bios/Id Software/Doom/HERETIC.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/HERETIC1.WAD
Normal file
BIN
bios/Id Software/Doom/HERETIC1.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/HEXDD.WAD
Normal file
BIN
bios/Id Software/Doom/HEXDD.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/HEXEN.WAD
Normal file
BIN
bios/Id Software/Doom/HEXEN.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/PLUTONIA.WAD
Normal file
BIN
bios/Id Software/Doom/PLUTONIA.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/STRIFE0.WAD
Normal file
BIN
bios/Id Software/Doom/STRIFE0.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/STRIFE1.WAD
Normal file
BIN
bios/Id Software/Doom/STRIFE1.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/TNT.WAD
Normal file
BIN
bios/Id Software/Doom/TNT.WAD
Normal file
Binary file not shown.
BIN
bios/Id Software/Doom/VOICES.WAD
Normal file
BIN
bios/Id Software/Doom/VOICES.WAD
Normal file
Binary file not shown.
724
database.json
724
database.json
@@ -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
|
||||||
|
|||||||
@@ -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` |
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
57
platforms/emulatorjs.yml
Normal file
57
platforms/emulatorjs.yml
Normal file
@@ -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
|
||||||
2784
platforms/romm.yml
2784
platforms/romm.yml
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():
|
||||||
|
|||||||
@@ -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