From d1ebd411abcac419b3c34563253857802c9b6593 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Thu, 5 Nov 2026 23:17:04 +0100 Subject: [PATCH] fix: narrow hashless name matches to their maker AmberELEC's nec-pc-88 declares DISK.ROM with an empty md5. QUASI88 reads that name as n88sub.rom, the 2 KB PC-88 disk ROM (libretro.c:1085), but the name step served the 16 KB MSX disk ROM, the only primary of that name. The quasi88 alias never reached by_name, which refuses an alias a primary already carries. load_platform_config now writes each entry's system as platform_system. A platform entry with no hash and no owning emulator, whose system id names a maker, takes no name candidate filed under another maker, in the name step and in the hash_mismatch step after it. When nothing is left, by_shadowed_alias, the profile aliases by_name refuses, answers within the system's maker folder. names_manufacturer and BUCKET_FOLDERS move to common.py, and generate_site imports them. Across every registered platform the only resolution that moves is AmberELEC nec-pc-88 DISK.ROM, from bios/Microsoft/MSX/DISK.ROM to bios/NEC/PC-88/N88SUB.ROM. Manifests, truth and exports are otherwise byte-identical. --- database.json | 126 +++++++++++- install/amberelec.json | 14 +- install/games/fallback/amberelec.json | 2 +- install/games/index.json | 2 +- schemas/database.schema.json | 3 + scripts/common.py | 104 ++++++++++ scripts/generate_db.py | 41 +++- scripts/generate_site.py | 19 +- tests/test_maker_folder_names.py | 274 ++++++++++++++++++++++++++ wiki/architecture.md | 9 +- wiki/verification-modes.md | 11 ++ 11 files changed, 578 insertions(+), 27 deletions(-) create mode 100644 tests/test_maker_folder_names.py diff --git a/database.json b/database.json index 6760bcf34..5f161c48b 100644 --- a/database.json +++ b/database.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "generated_at": "2026-11-05T18:33:47Z", + "generated_at": "2026-11-05T22:08:47Z", "total_files": 19944, "total_size": 16892646538, "bios_dir": "bios", @@ -600408,6 +600408,130 @@ "sf2/custom0.sf2": [ "286b2e1fb21cc79851da01666db6c0b0e88f25e3" ] + }, + "by_shadowed_alias": { + "DISK.ROM": [ + "bb7103a0818850a039c67ff666a31ce49a8d516f", + "d4181c9f046aafc3fb326b381baac809d9e38d16" + ], + "Mac OS ROM": [ + "e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37" + ], + "N88EXT1.ROM": [ + "4ae4d37409ff99411a623da9f6a44192170a854e" + ], + "N88EXT2.ROM": [ + "e94278682ef9e9bbb82201f72c50382748dcea2a" + ], + "N88EXT3.ROM": [ + "af452aed79b072c4d17985830b7c5dca64d4b412" + ], + "ROM1": [ + "e4fc7560b69d062cb2da5b1ffbe11cd1ca03cc37" + ], + "basic10.rom": [ + "af7eae90c398ec12942a408fa5ac2722e331738c" + ], + "basic2.rom": [ + "3693c9cb9bf3b41bae1150f7a8264992468fc8c0" + ], + "bios.bin": [ + "6e89d1227581c76441a53d605f9e324185f1da33" + ], + "bios.rom": [ + "6e89d1227581c76441a53d605f9e324185f1da33" + ], + "bios9821.rom": [ + "0877ffb4b4d1c18283468be3579b72ed8c22e3ac" + ], + "biosdsi7.bin": [ + "d2b17224e156ee5e55b5d8d9f323b1c9b86dd951" + ], + "biosdsi9.bin": [ + "db61fa39ddbc5f5ed71fb19cda47609ef0201723" + ], + "d8000.rom": [ + "0877ffb4b4d1c18283468be3579b72ed8c22e3ac" + ], + "disk.rom": [ + "bb7103a0818850a039c67ff666a31ce49a8d516f", + "d4181c9f046aafc3fb326b381baac809d9e38d16" + ], + "epr-17740.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17740a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17741a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17742a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17951a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17952a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17953a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-17954a.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-19730.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-19854.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "epr-23603.ic8": [ + "eff0f54c70bce05ff3a289bf30b1027e1c8cd117" + ], + "hisaturn.bin": [ + "df94c5b4d47eb3cc404d88b33a8fda237eaf4720" + ], + "n88.rom": [ + "3b31fc68fa7f47b21c1a1cb027b86b9e87afbfff" + ], + "n88_0.rom": [ + "d239c26ad7ac5efac6e947b0e9549b1534aa970d" + ], + "n88_1.rom": [ + "8528eef7946edf6501a6ccb1f416b60c64efac7c" + ], + "n88_2.rom": [ + "b7c8bcea219b77d9cc3ee0efafe343cc307425d1" + ], + "n88_3.rom": [ + "efce0b51cab9f0da6cf68507757f1245a2867a72" + ], + "ps2-0250j-20100415.bin": [ + "f9229fe159d0353b9f0632f3fdc66819c9030458" + ], + "rom1.bin": [ + "aea7a4c0c7ffe1f212f7b9faecfd728862ac6904" + ], + "rom2.bin": [ + "5d5ab4313a2d0effe7572bb129193b64cab002c1" + ], + "rom2_st.bin": [ + "5d5ab4313a2d0effe7572bb129193b64cab002c1" + ], + "sega1003.bin": [ + "df94c5b4d47eb3cc404d88b33a8fda237eaf4720" + ], + "sega_100.bin": [ + "df94c5b4d47eb3cc404d88b33a8fda237eaf4720" + ], + "sega_100a.bin": [ + "df94c5b4d47eb3cc404d88b33a8fda237eaf4720" + ], + "vsaturn.bin": [ + "df94c5b4d47eb3cc404d88b33a8fda237eaf4720" + ] } } } \ No newline at end of file diff --git a/install/amberelec.json b/install/amberelec.json index 21852aebe..6afed25c2 100644 --- a/install/amberelec.json +++ b/install/amberelec.json @@ -6,7 +6,7 @@ "platform": "amberelec", "display_name": "AmberELEC", "version": "prerelease-20261019_1835", - "generated": "2026-11-05T18:33:47Z", + "generated": "2026-11-05T22:08:47Z", "base_destination": "", "detect": [ { @@ -30,9 +30,9 @@ ], "standalone_copies": [], "total_files": 4958, - "total_size": 5348102161, + "total_size": 5348087825, "pack_files": 5152, - "pack_size": 5348202505, + "pack_size": 5348188169, "total_omitted": 285, "omitted_files": [ { @@ -8414,10 +8414,10 @@ }, { "dest": "bios/quasi88/DISK.ROM", - "sha1": "032cb1c1c75b9a191fa1230978971698d9d2a17f", - "sha256": "31740a761447d7590c304338d389b0ae114546a8b9f79c9ffd5e374f80b7d354", - "size": 16384, - "repo_path": "bios/Microsoft/MSX/DISK.ROM", + "sha1": "bb7103a0818850a039c67ff666a31ce49a8d516f", + "sha256": "9dc63118728a171ce2ed437ad38ef280b8b7bcf4a5a95fedf18946501b010456", + "size": 2048, + "repo_path": "bios/NEC/PC-88/N88SUB.ROM", "cores": null, "systems": [ "nec-pc-88" diff --git a/install/games/fallback/amberelec.json b/install/games/fallback/amberelec.json index bc7184ab2..9833d42b1 100644 --- a/install/games/fallback/amberelec.json +++ b/install/games/fallback/amberelec.json @@ -1 +1 @@ -{"files":[["bios/128p-0.rom",16384,"bios"],["bios/128p-1.rom",16384,"bios"],["bios/256s-0.rom",16384,"bios"],["bios/256s-1.rom",16384,"bios"],["bios/256s-2.rom",16384,"bios"],["bios/256s-3.rom",16384,"bios"],["bios/32X_G_BIOS.BIN",256,"bios"],["bios/32X_M_BIOS.BIN",2048,"bios"],["bios/32X_S_BIOS.BIN",1024,"bios"],["bios/3do_arcade_saot.bin",524288,"bios"],["bios/5200.rom",2048,"bios"],["bios/64DD_IPL.bin",4194304,"bios"],["bios/7800 BIOS (E).rom",16384,"bios"],["bios/7800 BIOS (U).rom",4096,"bios"],["bios/ATARIBAS.ROM",8192,"bios"],["bios/ATARIOSA.ROM",10240,"bios"],["bios/ATARIOSB.ROM",10240,"bios"],["bios/ATARIXL.ROM",16384,"bios"],["bios/BB01R4_OS.ROM",16384,"bios"],["bios/BIOS.col",8192,"bios"],["bios/BLOOD.RFF",3536782,"game_data"],["bios/BS-X.bin",1048576,"bios"],["bios/CD32 Extended-ROM r40.60 (1993)(Commodore)(CD32).rom",524288,"bios"],["bios/CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom",262144,"bios"],["bios/CM32LN_CONTROL.ROM",65536,"bios"],["bios/CM32L_CONTROL.ROM",65536,"bios"],["bios/CM32L_PCM.ROM",1048576,"bios"],["bios/DOSBOX.SF2",32319396,"bios"],["bios/DUKE3D.GRP",11035779,"game_data"],["bios/Databases/colecodb.xml",164848,"bios"],["bios/Databases/msxcaswavdb.xml",819679,"bios"],["bios/Databases/msxromdb.xml",930986,"bios"],["bios/Databases/msxsysromdb.xml",157542,"bios"],["bios/Databases/segadb.xml",82318,"bios"],["bios/Databases/svidb.xml",261070,"bios"],["bios/ECS.bin",24576,"bios"],["bios/GUI.RFF",7145,"game_data"],["bios/IVOICE.bin",2048,"bios"],["bios/JiffyDOS_1541-II.bin",16384,"bios"],["bios/JiffyDOS_1571_repl310654.bin",32768,"bios"],["bios/JiffyDOS_1581.bin",32768,"bios"],["bios/JiffyDOS_C128.bin",16384,"bios"],["bios/JiffyDOS_C64.bin",8192,"bios"],["bios/JiffyDOS_SX-64.bin",8192,"bios"],["bios/Kickstart v1.2 r33.180 (1986)(Commodore)(A500-A1000-A2000)[!].rom",262144,"bios"],["bios/Kickstart v1.2 rev 33.166 (1986)(Commodore)(A1000).rom",262144,"bios"],["bios/Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom",262144,"bios"],["bios/Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[o].rom",524288,"bios"],["bios/Kickstart v2.04 r37.175 (1991)(Commodore)(A500+)[!].rom",524288,"bios"],["bios/Kickstart v2.05 r37.350 (1992)(Commodore)(A600HD)[!].rom",524288,"bios"],["bios/Kickstart v3.1 r40.60 (1993)(Commodore)(CD32).rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A1200)[!].rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A3000).rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A4000).rom",524288,"bios"],["bios/MT32_CONTROL.ROM",65536,"bios"],["bios/MT32_PCM.ROM",524288,"bios"],["bios/Machines/COL - Bit Corporation Dina/czz50-1.rom",8192,"bios"],["bios/Machines/COL - Bit Corporation Dina/czz50-2.rom",8192,"bios"],["bios/Machines/COL - ColecoVision with Opcode Memory Extension/coleco.rom",8192,"bios"],["bios/Machines/COL - ColecoVision/coleco.rom",8192,"bios"],["bios/Machines/COL - ColecoVision/config.ini",347,"bios"],["bios/Machines/COL - Spectravideo SVI-603 Coleco/SVI603.ROM",8192,"bios"],["bios/Machines/Forte II Games - Pesadelo/pesadelo.rom",65536,"bios"],["bios/Machines/MSX - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX - C-BIOS/cbios_logo_msx1.rom",16384,"bios"],["bios/Machines/MSX - C-BIOS/cbios_main_msx1.rom",32768,"bios"],["bios/Machines/MSX/MSX.ROM",32768,"bios"],["bios/Machines/MSX/MSX2.ROM",32768,"bios"],["bios/Machines/MSX/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX/config.ini",408,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_logo_msx2.rom",16384,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_main_msx2.rom",32768,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_sub.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_logo_msx2+.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_main_msx2+.rom",32768,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_music.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_sub.rom",16384,"bios"],["bios/Machines/MSX2+/MSX.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX2+/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX2+/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX2+/config.ini",773,"bios"],["bios/Machines/MSX2/MSX.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX2/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX2/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX2/config.ini",649,"bios"],["bios/Machines/MSXturboR/config.ini",941,"bios"],["bios/Machines/SVI - Spectravideo SVI-318/svi318.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Column/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Column/svi806.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Swedish/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Swedish/svi806se.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 MK2/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 MK2/svi806.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328/svi328.rom",32768,"bios"],["bios/Machines/Shared Roms/ARAB1.ROM",32768,"bios"],["bios/Machines/Shared Roms/ARABIC.rom",32768,"bios"],["bios/Machines/Shared Roms/BEERIDE.ROM",16384,"bios"],["bios/Machines/Shared Roms/FMPAC.rom",65536,"bios"],["bios/Machines/Shared Roms/GCVMX80.ROM",8192,"bios"],["bios/Machines/Shared Roms/HANGUL.rom",131072,"bios"],["bios/Machines/Shared Roms/KANJI.rom",262144,"bios"],["bios/Machines/Shared Roms/MICROSOLDISK.ROM",16384,"bios"],["bios/Machines/Shared Roms/MOONSOUND.rom",2097152,"bios"],["bios/Machines/Shared Roms/MSX.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2AR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSX2AREXT.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSX2BR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2BREXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2EXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2FR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2FREXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2G.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2GEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2HAN.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2J.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2JEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2KR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2KREXT.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2P.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2PEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2PMUS.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2R.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2R2.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSX2REXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2SE.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2SP.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2SPEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSXAR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXBR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXDOS2.ROM",65536,"bios"],["bios/Machines/Shared Roms/MSXDOS23.ROM",65536,"bios"],["bios/Machines/Shared Roms/MSXFR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXG.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXHAN.rom",8192,"bios"],["bios/Machines/Shared Roms/MSXJ.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXKANJI.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXKR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXR2.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXR2.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXSE.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXSP.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXTR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXTREXT.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSXTRMUS.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSXTROPT.ROM",16384,"bios"],["bios/Machines/Shared Roms/NATIONALDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/NOVAXIS.rom",16384,"bios"],["bios/Machines/Shared Roms/PAINT.rom",65536,"bios"],["bios/Machines/Shared Roms/PANASONICDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/PHILIPSDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/RS232.ROM",8192,"bios"],["bios/Machines/Shared Roms/SUNRISEIDE.rom",65536,"bios"],["bios/Machines/Shared Roms/SWP.rom",32768,"bios"],["bios/Machines/Shared Roms/Shared.txt",41,"bios"],["bios/Machines/Shared Roms/XBASIC2.rom",16384,"bios"],["bios/Machines/Shared Roms/nowindDos1.rom",524288,"bios"],["bios/Machines/Shared Roms/nowindDos2.rom",524288,"bios"],["bios/Mupen64plus/IPL.n64",4194304,"bios"],["bios/Mupen64plus/font.ttf",65932,"bios"],["bios/NWINTER.GRP",10965909,"game_data"],["bios/NstDatabase.xml",1022369,"bios"],["bios/PPSSPP/ppge_atlas.meta",1119232,"bios"],["bios/PPSSPP/ppge_atlas.zim",666530,"bios"],["bios/ROM_OS_BB01R59",16384,"bios"],["bios/ROM_OS_BB01R59A",16384,"bios"],["bios/ROM_OS_BB02R3V4",16384,"bios"],["bios/ROM_OS_CC01R4",16384,"bios"],["bios/SC-55-v1.00/sc55_rom1.bin",32768,"bios"],["bios/SC-55-v1.00/sc55_rom2.bin",262144,"bios"],["bios/SC-55-v1.00/sc55_waverom1.bin",1048576,"bios"],["bios/SC-55-v1.00/sc55_waverom2.bin",1048576,"bios"],["bios/SC-55-v1.00/sc55_waverom3.bin",1048576,"bios"],["bios/SC-55/ROM1.BIN",32768,"bios"],["bios/SC-55/ROM2.BIN",524288,"bios"],["bios/SC-55/ROM_SM.BIN",4096,"bios"],["bios/SC-55/WAVEROM1.BIN",2097152,"bios"],["bios/SC-55/WAVEROM2.BIN",1048576,"bios"],["bios/SOUNDS.RFF",12830764,"game_data"],["bios/STBIOS.bin",262144,"bios"],["bios/SURFACE.DAT",4096,"game_data"],["bios/SW.GRP",26056769,"game_data"],["bios/VOXEL.DAT",8192,"game_data"],["bios/Vircon32Bios.v32",1073060,"bios"],["bios/WHDLoad.prefs",1935,"bios"],["bios/XEGAME.ROM",8192,"bios"],["bios/[BIOS] Atari Jaguar CD (World).j64",262144,"bios"],["bios/[BIOS] Atari Jaguar Developer CD (World).j64",262144,"bios"],["bios/ace.zip",21283,"bios"],["bios/ace91.zip",27636,"bios"],["bios/ace91_euro.zip",27381,"bios"],["bios/ace_a.zip",3752,"bios"],["bios/ace_a2.zip",3760,"bios"],["bios/aceeuro.zip",23853,"bios"],["bios/action2.wad",209908382,"game_data"],["bios/all.bin",516096,"bios"],["bios/areplay.bin",32768,"bios"],["bios/astron.zip",57886,"bios"],["bios/astronp.zip",23339,"bios"],["bios/atari-1200xl-os-rev-10.rom",16384,"bios"],["bios/atari-1200xl-os-rev-11.rom",16384,"bios"],["bios/atari-5200-os-2port.rom",2048,"bios"],["bios/atari-800-os-a-ntsc.rom",10240,"bios"],["bios/atari-basic-rev-a.rom",8192,"bios"],["bios/atari-basic-rev-b.rom",8192,"bios"],["bios/atari-xl-os-ver-1.rom",16384,"bios"],["bios/atari-xl-os-ver-3.rom",16384,"bios"],["bios/badlandp.zip",8789,"bios"],["bios/badlands.zip",12872,"bios"],["bios/bega.zip",48777,"bios"],["bios/begar1.zip",19993,"bios"],["bios/bios.gg",1024,"bios"],["bios/bios.min",4096,"bios"],["bios/bios.sms",8192,"bios"],["bios/bios7.bin",16384,"bios"],["bios/bios9.bin",4096,"bios"],["bios/bios_CD_E.bin",131072,"bios"],["bios/bios_CD_J.bin",131072,"bios"],["bios/bios_CD_U.bin",131072,"bios"],["bios/bios_E.sms",8192,"bios"],["bios/bios_J.sms",8192,"bios"],["bios/bios_MD.bin",2048,"bios"],["bios/bios_U.sms",8192,"bios"],["bios/blazer.zip",19999,"bios"],["bios/c52.bin",1024,"bios"],["bios/capsimg.dll",191488,"bios"],["bios/capsimg.so",95460,"bios"],["bios/chargen-901460-02.bin",4096,"bios"],["bios/cliff.zip",16725,"bios"],["bios/cliff_ox.zip",16879,"bios"],["bios/cliffalt.zip",15087,"bios"],["bios/cliffalt2.zip",14504,"bios"],["bios/cobra.zip",29388,"bios"],["bios/cobraab.zip",20648,"bios"],["bios/cobraconv.zip",27623,"bios"],["bios/cobram3.zip",23520,"bios"],["bios/colecovision.rom",8192,"bios"],["bios/cputest.zip",11874,"bios"],["bios/custom.pal",192,"bios"],["bios/dc/awbios.zip",34620,"bios"],["bios/dc/dc_boot.bin",2097152,"bios"],["bios/dc/dc_flash.bin",131072,"bios"],["bios/dc/font.bin",519984,"bios"],["bios/dc/naomi.zip",6134785,"bios"],["bios/dc/naomi_boot.bin",2097152,"bios"],["bios/delaweare.wad",83219726,"game_data"],["bios/disksys.rom",8192,"bios"],["bios/dle11.zip",28296,"bios"],["bios/dle20.zip",25955,"bios"],["bios/dle21.zip",24883,"bios"],["bios/doom.wad",11159840,"game_data"],["bios/doom2.wad",14943400,"game_data"],["bios/doom2f.wad",14607420,"game_data"],["bios/easyrpg.soundfont",148398306,"game_data"],["bios/ep128emu/roms/tvc22_ext.rom",8192,"bios"],["bios/ep128emu/roms/tvc22_sys.rom",16384,"bios"],["bios/ep128emu/roms/tvc_dos12d.rom",16384,"bios"],["bios/ep128emu/roms/tvcfileio.rom",8192,"bios"],["bios/esh.zip",16764,"bios"],["bios/eshalt.zip",5660,"bios"],["bios/eshalt2.zip",5277,"bios"],["bios/eshfix7.zip",5669,"bios"],["bios/eshfix7alt.zip",5678,"bios"],["bios/eshfix7alt2.zip",5669,"bios"],["bios/exec.bin",8192,"bios"],["bios/fbneo/hiscore.dat",328397,"bios"],["bios/fbneo/samples/donpachi.zip",208549253,"game_data"],["bios/fbneo/samples/sfz3mix.zip",101017377,"game_data"],["bios/firefox.zip",53410,"bios"],["bios/firefoxa.zip",51026,"bios"],["bios/firmware.bin",262144,"bios"],["bios/freedm.wad",22218796,"game_data"],["bios/freedoom1.wad",28795076,"game_data"],["bios/freedoom2.wad",28787748,"game_data"],["bios/freej2me_plus-lr.jar",1219093,"bios"],["bios/fuse/128-0.rom",16384,"bios"],["bios/fuse/128-1.rom",16384,"bios"],["bios/fuse/128p-0.rom",16384,"bios"],["bios/fuse/128p-1.rom",16384,"bios"],["bios/fuse/256s-0.rom",16384,"bios"],["bios/fuse/256s-1.rom",16384,"bios"],["bios/fuse/256s-2.rom",16384,"bios"],["bios/fuse/256s-3.rom",16384,"bios"],["bios/fuse/48.rom",16384,"bios"],["bios/fuse/didaktik80.rom",14336,"bios"],["bios/fuse/disciple.rom",8192,"bios"],["bios/fuse/gluck.rom",16384,"bios"],["bios/fuse/if1-2.rom",8192,"bios"],["bios/fuse/mf1.rom",8192,"bios"],["bios/fuse/mf128.rom",8192,"bios"],["bios/fuse/mf3.rom",8192,"bios"],["bios/fuse/opus.rom",8192,"bios"],["bios/fuse/plus2-0.rom",16384,"bios"],["bios/fuse/plus2-1.rom",16384,"bios"],["bios/fuse/plus3-0.rom",16384,"bios"],["bios/fuse/plus3-1.rom",16384,"bios"],["bios/fuse/plus3-2.rom",16384,"bios"],["bios/fuse/plus3-3.rom",16384,"bios"],["bios/fuse/plus3e-0.rom",16384,"bios"],["bios/fuse/plus3e-1.rom",16384,"bios"],["bios/fuse/plus3e-2.rom",16384,"bios"],["bios/fuse/plus3e-3.rom",16384,"bios"],["bios/fuse/plusd.rom",8192,"bios"],["bios/fuse/se-0.rom",16384,"bios"],["bios/fuse/se-1.rom",16384,"bios"],["bios/fuse/speccyboot-1.4.rom",8192,"bios"],["bios/fuse/tc2048.rom",16384,"bios"],["bios/fuse/tc2068-0.rom",16384,"bios"],["bios/fuse/tc2068-1.rom",8192,"bios"],["bios/fuse/trdos.rom",16384,"bios"],["bios/fuse/ttx2000s.rom",8192,"bios"],["bios/fuse/usource.rom",8192,"bios"],["bios/g7400.bin",1024,"bios"],["bios/galaxy.zip",48574,"bios"],["bios/galaxyp.zip",20042,"bios"],["bios/gamecontrollerdb.txt",609830,"game_data"],["bios/gb_bios.bin",256,"bios"],["bios/gba_bios.bin",16384,"bios"],["bios/gbc_bios.bin",2304,"bios"],["bios/gexpress.pce",32768,"bios"],["bios/ggenie.bin",32768,"bios"],["bios/gluck.rom",16384,"bios"],["bios/goldstar.bin",1048576,"bios"],["bios/gpworld.zip",86990,"bios"],["bios/grom.bin",2048,"bios"],["bios/gtg.zip",19748,"bios"],["bios/hacx.wad",19321722,"game_data"],["bios/hacx2.wad",20504847,"game_data"],["bios/harm1.wad",58396393,"game_data"],["bios/hatari/BOOT.ST",737280,"bios"],["bios/howard.o",513,"bios"],["bios/interstellar.zip",39757,"bios"],["bios/jagboot.rom",131072,"bios"],["bios/jagboot_m.rom",131072,"bios"],["bios/jopac.bin",1024,"bios"],["bios/kernal-901227-01.bin",8192,"bios"],["bios/kernal-901227-02.bin",8192,"bios"],["bios/kernal.901486-02.bin",8192,"bios"],["bios/keropi/cgrom.dat",786432,"bios"],["bios/keropi/iplrom.dat",131072,"bios"],["bios/keropi/iplrom30.dat",131072,"bios"],["bios/keropi/iplromco.dat",131072,"bios"],["bios/keropi/iplromxv.dat",131072,"bios"],["bios/kick31034.A1000",262144,"bios"],["bios/kick32034.A1000",262144,"bios"],["bios/kick33180.A500",262144,"bios"],["bios/kick34005.A500",262144,"bios"],["bios/kick37175.A500",524288,"bios"],["bios/kick37350.A600",524288,"bios"],["bios/kick39106.A1200",524288,"bios"],["bios/kick39106.A4000",524288,"bios"],["bios/kick40060.CD32",524288,"bios"],["bios/kick40060.CD32.ext",524288,"bios"],["bios/kick40063.A600",524288,"bios"],["bios/kick40068.A1200",524288,"bios"],["bios/kick40068.A4000",524288,"bios"],["bios/lair.zip",17906,"bios"],["bios/lair2.zip",25809,"bios"],["bios/lair2_211.zip",23278,"bios"],["bios/lair2_300.zip",24540,"bios"],["bios/lair2_314.zip",25195,"bios"],["bios/lair2_315.zip",25271,"bios"],["bios/lair2_316_euro.zip",25175,"bios"],["bios/lair2_318.zip",25592,"bios"],["bios/lair2_319_euro.zip",25493,"bios"],["bios/lair2_319_span.zip",25828,"bios"],["bios/lair_a.zip",21377,"bios"],["bios/lair_b.zip",4293,"bios"],["bios/lair_c.zip",968,"bios"],["bios/lair_d.zip",27677,"bios"],["bios/lair_d2.zip",4056,"bios"],["bios/lair_e.zip",20802,"bios"],["bios/lair_f.zip",6027,"bios"],["bios/lair_ita.zip",6408,"bios"],["bios/lair_n1.zip",26477,"bios"],["bios/lair_x.zip",24316,"bios"],["bios/laireuro.zip",10771,"bios"],["bios/lgp.zip",37609,"bios"],["bios/lynxboot.img",512,"bios"],["bios/mach3.zip",441761,"bios"],["bios/mame2003-plus/artwork/blueshrk.zip",925914,"game_data"],["bios/mame2003-plus/artwork/dotron.zip",2010009,"game_data"],["bios/mame2003-plus/artwork/frogs.zip",2832731,"game_data"],["bios/mame2003-plus/artwork/invaders.zip",4324198,"game_data"],["bios/mame2003-plus/artwork/omegrace.zip",1754523,"game_data"],["bios/mame2003-plus/artwork/skydiver.zip",117241,"game_data"],["bios/mame2003-plus/artwork/solarq.zip",1342645,"game_data"],["bios/mame2003-plus/artwork/warrior.zip",1125335,"game_data"],["bios/mame2003-plus/cheat.dat",7971360,"game_data"],["bios/mame2003-plus/hiscore.dat",131926,"game_data"],["bios/mame2003-plus/history.dat",38635890,"game_data"],["bios/mame2003-plus/mameinfo.dat",24837237,"game_data"],["bios/mpr-17933.bin",524288,"bios"],["bios/mpr-18811-mx.ic1",2097152,"bios"],["bios/mpr-19367-mx.ic1",2097152,"bios"],["bios/neocd/front-sp1.bin",524288,"bios"],["bios/neocd/neocd.bin",524288,"bios"],["bios/neocd/neocd_f.rom",524288,"bios"],["bios/neocd/neocd_sf.rom",524288,"bios"],["bios/neocd/neocd_st.rom",524288,"bios"],["bios/neocd/neocd_sz.rom",524288,"bios"],["bios/neocd/neocd_t.rom",524288,"bios"],["bios/neocd/neocd_z.rom",524288,"bios"],["bios/neocd/ng-lo.rom",65536,"bios"],["bios/neocd/top-sp1.bin",524288,"bios"],["bios/neocd/uni-bioscd.rom",524288,"bios"],["bios/neocdz.zip",1181333,"bios"],["bios/np2kai/2608_BD.WAV",19192,"bios"],["bios/np2kai/2608_HH.WAV",36722,"bios"],["bios/np2kai/2608_RIM.WAV",5288,"bios"],["bios/np2kai/2608_SD.WAV",15558,"bios"],["bios/np2kai/2608_TOM.WAV",23092,"bios"],["bios/np2kai/2608_TOP.WAV",57016,"bios"],["bios/np2kai/2608_bd.wav",19192,"bios"],["bios/np2kai/2608_hh.wav",36722,"bios"],["bios/np2kai/2608_rim.wav",5288,"bios"],["bios/np2kai/2608_sd.wav",15558,"bios"],["bios/np2kai/2608_tom.wav",23092,"bios"],["bios/np2kai/2608_top.wav",57016,"bios"],["bios/np2kai/FONT.ROM",288768,"bios"],["bios/np2kai/bios.rom",98304,"bios"],["bios/np2kai/font.bmp",524350,"bios"],["bios/np2kai/ide.rom",8192,"bios"],["bios/np2kai/pci.rom",32768,"bios"],["bios/np2kai/sasi.rom",4096,"bios"],["bios/np2kai/scsi.rom",8192,"bios"],["bios/np2kai/sound.rom",16384,"bios"],["bios/o2rom.bin",1024,"bios"],["bios/opera-boot.bin",131072,"bios"],["bios/panafz1-kanji.bin",933636,"bios"],["bios/panafz1.bin",1048576,"bios"],["bios/panafz10-norsa.bin",1048576,"bios"],["bios/panafz10.bin",1048576,"bios"],["bios/panafz10e-anvil-norsa.bin",1048576,"bios"],["bios/panafz10e-anvil.bin",1048576,"bios"],["bios/panafz10ja-anvil-kanji.bin",1048576,"bios"],["bios/panafz1j-kanji.bin",1048576,"bios"],["bios/panafz1j-norsa.bin",1048576,"bios"],["bios/panafz1j.bin",1048576,"bios"],["bios/pcfx.rom",1048576,"bios"],["bios/penthous.zip",2112419,"game_data"],["bios/plutonia.wad",17420824,"game_data"],["bios/psxonpsp660.bin",524288,"bios"],["bios/quasi88/DISK.ROM",16384,"bios"],["bios/quasi88/N88.ROM",32768,"bios"],["bios/quasi88/N88N.ROM",32768,"bios"],["bios/quasi88/N88_0.ROM",8192,"bios"],["bios/quasi88/N88_1.ROM",8192,"bios"],["bios/quasi88/N88_2.ROM",8192,"bios"],["bios/quasi88/N88_3.ROM",8192,"bios"],["bios/quasi88/font.rom",2048,"bios"],["bios/quasi88/font2.rom",2048,"bios"],["bios/quasi88/font3.rom",2048,"bios"],["bios/quasi88/n88jisho.rom",524288,"bios"],["bios/quasi88/n88knj1.rom",131072,"bios"],["bios/quasi88/n88knj2.rom",131072,"bios"],["bios/roadblaster.zip",20664,"bios"],["bios/rom.key",2069,"bios"],["bios/rotwb.wad",20592999,"game_data"],["bios/sae.zip",27734,"bios"],["bios/same_cdi/bios/cdi490a.zip",379558,"bios"],["bios/same_cdi/bios/cdi910.zip",487572,"bios"],["bios/same_cdi/bios/cdimono1.zip",745703,"bios"],["bios/same_cdi/bios/cdimono2.zip",244291,"bios"],["bios/sanyotry.bin",1048576,"bios"],["bios/saturn_bios.bin",524288,"bios"],["bios/scph1001.bin",524288,"bios"],["bios/scph101.bin",524288,"bios"],["bios/scph5500.bin",524288,"bios"],["bios/scph5501.bin",524288,"bios"],["bios/scph5502.bin",524288,"bios"],["bios/scph7001.bin",524288,"bios"],["bios/sdq.zip",11467,"bios"],["bios/sdqshort.zip",10147,"bios"],["bios/sdqshortalt.zip",10161,"bios"],["bios/sega_101.bin",524288,"bios"],["bios/sgb_bios.bin",256,"bios"],["bios/sk.bin",2097152,"bios"],["bios/sk2chip.bin",262144,"bios"],["bios/sl31253.bin",1024,"bios"],["bios/sl31254.bin",1024,"bios"],["bios/sl90025.bin",1024,"bios"],["bios/square1.pk3",45202919,"game_data"],["bios/stvbios.zip",2955630,"bios"],["bios/syscard1.pce",262144,"bios"],["bios/syscard2.pce",262144,"bios"],["bios/syscard2u.pce",262144,"bios"],["bios/syscard3.pce",262144,"bios"],["bios/syscard3u.pce",262144,"bios"],["bios/system/nds_bios_arm7.bin",16384,"bios"],["bios/system/nds_bios_arm9.bin",4096,"bios"],["bios/system/nds_firmware.bin",262144,"bios"],["bios/timetrav.zip",53103,"bios"],["bios/tnt.wad",18195736,"game_data"],["bios/tos.img",196608,"bios"],["bios/tq.zip",24144,"bios"],["bios/tq_alt.zip",3831,"bios"],["bios/tq_swear.zip",19758,"bios"],["bios/trdos.rom",16384,"bios"],["bios/uae_data/drive_click_A500.wav",3313326,"bios"],["bios/uae_data/drive_click_LOUD.wav",3308526,"bios"],["bios/uae_data/drive_snatch_A500.wav",34450,"bios"],["bios/uae_data/drive_snatch_LOUD.wav",39864,"bios"],["bios/uae_data/drive_spin_A500.wav",134294,"bios"],["bios/uae_data/drive_spin_LOUD.wav",20216,"bios"],["bios/uae_data/drive_spinnd_A500.wav",352430,"bios"],["bios/uae_data/drive_spinnd_LOUD.wav",241790,"bios"],["bios/uae_data/drive_startup_A500.wav",34450,"bios"],["bios/uae_data/drive_startup_LOUD.wav",43492,"bios"],["bios/upd7801g.s01",4096,"bios"],["bios/uvt.zip",62052,"bios"],["bios/voice/E480.WAV",101,"game_data"],["bios/voice/E481.WAV",554,"game_data"],["bios/voice/E482.WAV",554,"game_data"],["bios/voice/E483.WAV",1096,"game_data"],["bios/voice/E484.WAV",2219,"game_data"],["bios/voice/E485.WAV",4592,"game_data"],["bios/voice/E486.WAV",2902,"game_data"],["bios/voice/E487.WAV",804,"game_data"],["bios/voice/E488.WAV",1378,"game_data"],["bios/voice/E489.WAV",576,"game_data"],["bios/voice/E48A.WAV",1556,"game_data"],["bios/voice/E48B.WAV",1516,"game_data"],["bios/voice/E48C.WAV",794,"game_data"],["bios/voice/E48D.WAV",1510,"game_data"],["bios/voice/E48E.WAV",1892,"game_data"],["bios/voice/E48F.WAV",788,"game_data"],["bios/voice/E490.WAV",2020,"game_data"],["bios/voice/E491.WAV",1122,"game_data"],["bios/voice/E492.WAV",1862,"game_data"],["bios/voice/E493.WAV",2772,"game_data"],["bios/voice/E494.WAV",3120,"game_data"],["bios/voice/E495.WAV",854,"game_data"],["bios/voice/E496.WAV",1154,"game_data"],["bios/voice/E497.WAV",1122,"game_data"],["bios/voice/E498.WAV",1144,"game_data"],["bios/voice/E499.WAV",2056,"game_data"],["bios/voice/E49A.WAV",1302,"game_data"],["bios/voice/E49B.WAV",2492,"game_data"],["bios/voice/E49C.WAV",936,"game_data"],["bios/voice/E49D.WAV",2038,"game_data"],["bios/voice/E49E.WAV",1146,"game_data"],["bios/voice/E49F.WAV",2884,"game_data"],["bios/voice/E4A0.WAV",4096,"game_data"],["bios/voice/E4A1.WAV",1702,"game_data"],["bios/voice/E4A2.WAV",1570,"game_data"],["bios/voice/E4A3.WAV",2060,"game_data"],["bios/voice/E4A4.WAV",846,"game_data"],["bios/voice/E4A5.WAV",1756,"game_data"],["bios/voice/E4A6.WAV",2144,"game_data"],["bios/voice/E4A7.WAV",1388,"game_data"],["bios/voice/E4A8.WAV",1586,"game_data"],["bios/voice/E4A9.WAV",2022,"game_data"],["bios/voice/E4AA.WAV",1624,"game_data"],["bios/voice/E4AB.WAV",2302,"game_data"],["bios/voice/E4AC.WAV",2484,"game_data"],["bios/voice/E4AD.WAV",1252,"game_data"],["bios/voice/E4AE.WAV",1978,"game_data"],["bios/voice/E4AF.WAV",3984,"game_data"],["bios/voice/E4B0.WAV",2184,"game_data"],["bios/voice/E4B1.WAV",1448,"game_data"],["bios/voice/E4B2.WAV",2040,"game_data"],["bios/voice/E4B3.WAV",1762,"game_data"],["bios/voice/E4B4.WAV",3334,"game_data"],["bios/voice/E4B5.WAV",2604,"game_data"],["bios/voice/E4B6.WAV",2654,"game_data"],["bios/voice/E4B7.WAV",984,"game_data"],["bios/voice/E4B8.WAV",2156,"game_data"],["bios/voice/E4B9.WAV",890,"game_data"],["bios/voice/E4BA.WAV",3656,"game_data"],["bios/voice/E4BB.WAV",3166,"game_data"],["bios/voice/E4BC.WAV",3840,"game_data"],["bios/voice/E4BD.WAV",464,"game_data"],["bios/voice/E4BE.WAV",2084,"game_data"],["bios/voice/E4BF.WAV",646,"game_data"],["bios/voice/E4C0.WAV",5348,"game_data"],["bios/voice/E4C1.WAV",8577,"game_data"],["bios/voice/E4C2.WAV",5504,"game_data"],["bios/voice/E4C3.WAV",12420,"game_data"],["bios/voice/E4C4.WAV",11286,"game_data"],["bios/voice/E4C5.WAV",7194,"game_data"],["bios/voice/E4C6.WAV",7078,"game_data"],["bios/voice/E4C7.WAV",4566,"game_data"],["bios/voice/E4C8.WAV",7740,"game_data"],["bios/voice/E4C9.WAV",9504,"game_data"],["bios/voice/E4CA.WAV",12896,"game_data"],["bios/voice/E4FA.WAV",11049,"game_data"],["bios/voice/E4FB.WAV",7604,"game_data"],["bios/voice/E880.WAV",10745,"game_data"],["bios/voice/E881.WAV",7324,"game_data"],["bios/voice/E882.WAV",6876,"game_data"],["bios/voice/E883.WAV",7418,"game_data"],["bios/voice/E884.WAV",13296,"game_data"],["bios/voice/E885.WAV",10055,"game_data"],["bios/voice/E886.WAV",5827,"game_data"],["bios/voice/E887.WAV",6215,"game_data"],["bios/voice/E888.WAV",5264,"game_data"],["bios/voice/E889.WAV",8524,"game_data"],["bios/voice/E88A.WAV",4348,"game_data"],["bios/voice/E88B.WAV",4104,"game_data"],["bios/voice/E88C.WAV",9624,"game_data"],["bios/voice/E88D.WAV",6914,"game_data"],["bios/voice/E88E.WAV",8319,"game_data"],["bios/voice/E88F.WAV",9592,"game_data"],["bios/voice/E890.WAV",9479,"game_data"],["bios/voice/E891.WAV",8697,"game_data"],["bios/voice/E892.WAV",6878,"game_data"],["bios/voice/E893.WAV",6220,"game_data"],["bios/voice/E894.WAV",6830,"game_data"],["bios/voice/E895.WAV",6283,"game_data"],["bios/voice/E980.WAV",6300,"game_data"],["bios/voice/E981.WAV",5324,"game_data"],["bios/voice/E982.WAV",11267,"game_data"],["bios/voice/E983.WAV",7202,"game_data"],["bios/voice/E984.WAV",6732,"game_data"],["bios/voice/E985.WAV",6317,"game_data"],["bios/voice/E986.WAV",6638,"game_data"],["bios/voice/E987.WAV",8261,"game_data"],["bios/voice/E988.WAV",10269,"game_data"],["bios/voice/E989.WAV",5644,"game_data"],["bios/voice/E98A.WAV",6008,"game_data"],["bios/voice/E98B.WAV",10470,"game_data"],["bios/voice/E98C.WAV",6304,"game_data"],["bios/voice/E98D.WAV",3478,"game_data"],["bios/voice/E98E.WAV",12232,"game_data"],["bios/voice/E98F.WAV",13922,"game_data"],["bios/voice/E990.WAV",10460,"game_data"],["bios/voice/E991.WAV",2924,"game_data"],["bios/voice/E992.WAV",16808,"game_data"],["bios/voice/E993.WAV",12544,"game_data"],["bios/voice/E994.WAV",7100,"game_data"],["bios/voice/E995.WAV",6452,"game_data"],["bios/voice/E996.WAV",6685,"game_data"],["bios/voice/EA80.WAV",3092,"game_data"],["bios/voice/EA81.WAV",5390,"game_data"],["bios/voice/EA82.WAV",14341,"game_data"],["bios/voice/EA83.WAV",4719,"game_data"],["bios/voice/EA84.WAV",5252,"game_data"],["bios/voice/EA85.WAV",7018,"game_data"],["bios/voice/EA86.WAV",8480,"game_data"],["bios/voice/EA87.WAV",9496,"game_data"],["bios/voice/EA88.WAV",38600,"game_data"],["bios/voice/EA89.WAV",29892,"game_data"],["bios/voice/EA8A.WAV",11328,"game_data"],["bios/voice/EA8B.WAV",2604,"game_data"],["bios/voice/EA8C.WAV",16184,"game_data"],["bios/voice/EA8D.WAV",3308,"game_data"],["bios/voice/EA8E.WAV",3350,"game_data"],["bios/voice/EA8F.WAV",18174,"game_data"],["bios/voice/EA90.WAV",3348,"game_data"],["bios/voice/EA91.WAV",3299,"game_data"],["bios/voice/EA92.WAV",3302,"game_data"],["bios/voice/EA93.WAV",3306,"game_data"],["bios/voice/EA94.WAV",3267,"game_data"],["bios/voice/EA95.WAV",3388,"game_data"],["bios/voice/EA96.WAV",3392,"game_data"],["bios/voice/EA97.WAV",3393,"game_data"],["bios/voice/EA98.WAV",3359,"game_data"],["bios/voice/EA99.WAV",3300,"game_data"],["bios/voice/EA9A.WAV",3312,"game_data"],["bios/voice/EA9B.WAV",3402,"game_data"],["bios/voice/EA9C.WAV",3308,"game_data"],["bios/voice/EA9D.WAV",3313,"game_data"],["bios/voice/EA9E.WAV",3302,"game_data"],["bios/voice/EA9F.WAV",3340,"game_data"],["bios/voice/EAA0.WAV",3314,"game_data"],["bios/voice/EAA1.WAV",3306,"game_data"],["bios/voice/EAA2.WAV",3308,"game_data"],["bios/voice/EAA3.WAV",3314,"game_data"],["bios/voice/EAA4.WAV",3313,"game_data"],["bios/voice/EAA5.WAV",3311,"game_data"],["bios/voice/EAA6.WAV",3340,"game_data"],["bios/voice/EAA7.WAV",3302,"game_data"],["bios/voice/EB80.WAV",7226,"game_data"],["bios/voice/EB81.WAV",5558,"game_data"],["bios/voice/EB82.WAV",5566,"game_data"],["bios/voice/EB83.WAV",6276,"game_data"],["bios/voice/EB84.WAV",7508,"game_data"],["bios/voice/EB85.WAV",5400,"game_data"],["bios/voice/EB86.WAV",8981,"game_data"],["bios/voice/EB87.WAV",8844,"game_data"],["bios/voice/EB88.WAV",6554,"game_data"],["bios/voice/EB89.WAV",6932,"game_data"],["bios/voice/EB8A.WAV",7059,"game_data"],["bios/voice/EB8B.WAV",7544,"game_data"],["bios/voice/EB8C.WAV",5790,"game_data"],["bios/voice/EB8D.WAV",6700,"game_data"],["bios/voice/EB8E.WAV",6188,"game_data"],["bios/voice/EB8F.WAV",4880,"game_data"],["bios/voice/EB90.WAV",7480,"game_data"],["bios/voice/EB91.WAV",6804,"game_data"],["bios/voice/EB92.WAV",7419,"game_data"],["bios/voice/EB93.WAV",6105,"game_data"],["bios/voice/EB94.WAV",4972,"game_data"],["bios/voice/EB95.WAV",5084,"game_data"],["bios/voice/EB96.WAV",6492,"game_data"],["bios/voice/EB97.WAV",8819,"game_data"],["bios/voice/EB98.WAV",6104,"game_data"],["bios/voice/EB99.WAV",5896,"game_data"],["bios/voice/EB9A.WAV",5784,"game_data"],["bios/voice/EB9B.WAV",5742,"game_data"],["bios/voice/EB9C.WAV",6154,"game_data"],["bios/voice/EB9D.WAV",4984,"game_data"],["bios/voice/EC80.WAV",6815,"game_data"],["bios/voice/EC81.WAV",5628,"game_data"],["bios/voice/EC82.WAV",17440,"game_data"],["bios/voice/EC83.WAV",8162,"game_data"],["bios/voice/EC84.WAV",7944,"game_data"],["bios/voice/EC85.WAV",6848,"game_data"],["bios/voice/EC86.WAV",8225,"game_data"],["bios/voice/EC87.WAV",5588,"game_data"],["bios/voice/EC88.WAV",8954,"game_data"],["bios/voice/EC89.WAV",7340,"game_data"],["bios/voice/EC8A.WAV",9092,"game_data"],["bios/voice/EC8B.WAV",7754,"game_data"],["bios/voice/EC8C.WAV",7100,"game_data"],["bios/voice/EC8D.WAV",5732,"game_data"],["bios/voice/EC8E.WAV",6200,"game_data"],["bios/voice/EC8F.WAV",6504,"game_data"],["bios/voice/EC90.WAV",7853,"game_data"],["bios/voice/EC91.WAV",8378,"game_data"],["bios/voice/EC92.WAV",5336,"game_data"],["bios/voice/EC93.WAV",8294,"game_data"],["bios/voice/EC94.WAV",7838,"game_data"],["bios/voice/EC95.WAV",6927,"game_data"],["bios/voice/EC96.WAV",7524,"game_data"],["bios/voice/EC97.WAV",8140,"game_data"],["bios/voice/EC98.WAV",8370,"game_data"],["bios/voice/EC99.WAV",7292,"game_data"],["bios/voice/EC9A.WAV",6884,"game_data"],["bios/voice/EC9B.WAV",6846,"game_data"],["bios/voice/ED80.WAV",6308,"game_data"],["bios/voice/ED81.WAV",5772,"game_data"],["bios/voice/ED82.WAV",6794,"game_data"],["bios/voice/ED83.WAV",6680,"game_data"],["bios/voice/ED84.WAV",6624,"game_data"],["bios/voice/ED85.WAV",7450,"game_data"],["bios/voice/ED86.WAV",7055,"game_data"],["bios/voice/ED87.WAV",5955,"game_data"],["bios/voice/ED88.WAV",6789,"game_data"],["bios/voice/ED89.WAV",6542,"game_data"],["bios/voice/ED8A.WAV",6924,"game_data"],["bios/voice/ED8B.WAV",7062,"game_data"],["bios/voice/ED8C.WAV",6967,"game_data"],["bios/voice/ED8D.WAV",7205,"game_data"],["bios/voice/ED8E.WAV",7381,"game_data"],["bios/voice/ED8F.WAV",5168,"game_data"],["bios/voice/ED90.WAV",5344,"game_data"],["bios/voice/ED91.WAV",5345,"game_data"],["bios/voice/ED92.WAV",7924,"game_data"],["bios/voice/ED93.WAV",7415,"game_data"],["bios/voice/ED94.WAV",6820,"game_data"],["bios/voice/ED95.WAV",6464,"game_data"],["bios/voice/ED96.WAV",6576,"game_data"],["bios/voice/ED97.WAV",6124,"game_data"],["bios/voice/ED98.WAV",7688,"game_data"],["bios/voice/ED99.WAV",6369,"game_data"],["bios/voice/ED9A.WAV",6254,"game_data"],["bios/voice/EE80.WAV",6012,"game_data"],["bios/voice/EE81.WAV",8294,"game_data"],["bios/voice/EE82.WAV",7128,"game_data"],["bios/voice/EE83.WAV",4256,"game_data"],["bios/voice/EE84.WAV",7514,"game_data"],["bios/voice/EE85.WAV",8176,"game_data"],["bios/voice/EE86.WAV",6824,"game_data"],["bios/voice/EE87.WAV",8117,"game_data"],["bios/voice/EE88.WAV",8756,"game_data"],["bios/voice/EE89.WAV",7406,"game_data"],["bios/voice/EE8A.WAV",7352,"game_data"],["bios/voice/EE8B.WAV",8651,"game_data"],["bios/voice/EE8C.WAV",7511,"game_data"],["bios/voice/EE8D.WAV",8024,"game_data"],["bios/voice/EE8E.WAV",9809,"game_data"],["bios/voice/EE8F.WAV",8364,"game_data"],["bios/voice/EE90.WAV",4828,"game_data"],["bios/voice/EE91.WAV",6092,"game_data"],["bios/voice/EE92.WAV",5000,"game_data"],["bios/voice/EE93.WAV",7197,"game_data"],["bios/voice/EE94.WAV",6785,"game_data"],["bios/voice/EE95.WAV",6105,"game_data"],["bios/voice/EE96.WAV",7604,"game_data"],["bios/wildmidi.cfg",192,"game_data"],["bios/xmil/FNT0808.X1",2048,"bios"],["bios/xmil/FNT0816.X1",4096,"bios"],["bios/xmil/FNT1616.X1",306176,"bios"],["bios/xmil/IPLROM.X1",4096,"bios"],["bios/xmil/IPLROM.X1T",2048,"bios"],["neogeo/aes.zip",850311,"bios"],["neogeo/neogeo.zip",1952551,"bios"]],"format_version":1,"platform":"amberelec","sets":{"amstrad-cpc|cap32":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"amstrad-cpc|crocods":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"aquaplus-piece|piemu":{"bytes":516096,"files":[207],"optional":[],"required_bytes":516096},"arcade-laserdisc|hypseus-singe":{"bytes":2648486,"files":[200,201,202,203,204,205,209,210,219,220,221,222,235,240,241,242,243,244,245,246,247,249,259,260,261,270,271,272,273,274,275,280,281,325,326,327,335,337,343,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,391,468,471,484,485,486,504,507,508,509,522],"optional":[327],"required_bytes":2038656},"arcade|fbneo":{"bytes":309895027,"files":[277,278,279],"optional":[277,278,279],"required_bytes":0},"arcade|mame2003_plus":{"bytes":86009009,"files":[392,393,394,395,396,397,398,399,400,401,402,403],"optional":[392,393,394,395,396,397,398,399,400,401,402,403],"required_bytes":0},"arduboy|arduous":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"atari-2600|stella2014":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"atari-400-800|atari800":{"bytes":229376,"files":[14,15,16,17,18,176,177,178,179,197,211,212,213,214,215,216,217,218],"optional":[18,176,177,178,179,197,211,212,213,214,215,216,217,218],"required_bytes":45056},"atari-5200|a5200":{"bytes":2048,"files":[10],"optional":[],"required_bytes":2048},"atari-7800|prosystem":{"bytes":20480,"files":[12,13],"optional":[12],"required_bytes":4096},"atari-jaguar|virtualjaguar":{"bytes":786432,"files":[198,199,344,345],"optional":[198,199,344,345],"required_bytes":0},"atari-lynx|handy":{"bytes":1025,"files":[342,390],"optional":[342],"required_bytes":512},"atari-st|hatari":{"bytes":933888,"files":[341,506],"optional":[341],"required_bytes":196608},"blood|raze":{"bytes":16386979,"files":[20,36,190,192,194],"optional":[20,36,190,192,194],"required_bytes":0},"capcom-cps1|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"capcom-cps2|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"capcom-cps3|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"casio-pv1000|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"chip8|jaxe":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"colecovision|bluemsx":{"bytes":2474134,"files":[19,29,30,31,32,33,34,56,57,58,59,60,61,248],"optional":[30,31,32,33,34],"required_bytes":222539},"commodore-amiga-cd32|puae2021":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"commodore-amiga|puae2021":{"bytes":18823838,"files":[22,23,44,45,46,47,48,49,50,51,52,53,196,237,238,355,356,357,358,359,360,361,362,363,364,365,366,367,469,511,512,513,514,515,516,517,518,519,520],"optional":[196,237,238,355,356,360,361,362,469,511,512,513,514,515,516,517,518,519,520],"required_bytes":8912896},"commodore-c128|vice_x128":{"bytes":106496,"files":[38,39,40,41,42],"optional":[38,39,40,41,42],"required_bytes":0},"commodore-c64|vice_x64":{"bytes":114688,"files":[38,39,40,42,43,347,348],"optional":[38,39,40,42,43,347,348],"required_bytes":0},"commodore-plus4|vice_xplus4":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"commodore-vic20|vice_xvic":{"bytes":12288,"files":[239,349],"optional":[239,349],"required_bytes":0},"doom|gzdoom":{"bytes":613275828,"files":[206,257,262,263,264,283,284,285,338,339,340,453,470,494,505],"optional":[206,257,262,263,264,283,284,285,338,339,340,453,470,494,505],"required_bytes":0},"dos|dosbox_pure":{"bytes":41236388,"files":[24,25,26,27,54,55,180,181,182,183,184,185,186,187,188,189],"optional":[24,25,26,27,54,55,180,181,182,183,184,185,186,187,188,189],"required_bytes":0},"duke3d|raze":{"bytes":24114107,"files":[28,172,452],"optional":[28,172,452],"required_bytes":0},"enterprise-64-128|ep128emu_core":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"entex-advision|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"exhumed|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"fairchild-channelf|freechaf":{"bytes":3072,"files":[491,492,493],"optional":[491,492,493],"required_bytes":0},"famicom|nestopia":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gamate|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gameking|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gamepock|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"handheld-electronic|gw":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"hartung-game-master|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"intellivision|freeintv":{"bytes":36864,"files":[35,37,276,336],"optional":[],"required_bytes":36864},"j2me|freej2me_plus":{"bytes":1219093,"files":[286],"optional":[],"required_bytes":1219093},"lowresnx|lowresnx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"mega-duck|sameduck":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"msx2|bluemsx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"msx|bluemsx":{"bytes":8543963,"files":[30,31,32,33,34,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],"optional":[30,31,32,33,34,150],"required_bytes":6259600},"nam|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nec-pc-88|quasi88":{"bytes":907264,"files":[455,456,457,458,459,460,461,462,463,464,465,466,467],"optional":[462,463,464,465,466,467],"required_bytes":114688},"nec-pc-engine-cd|mednafen_pce_fast":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nec-pc-engine|mednafen_pce_fast":{"bytes":1343488,"files":[331,496,497,498,499,500],"optional":[498,500],"required_bytes":819200},"nec-pcfx|beetle_pcfx":{"bytes":1048576,"files":[451],"optional":[],"required_bytes":1048576},"nec-supergrafx|mednafen_supergrafx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"neogeo|fbneo":{"bytes":2802862,"files":[799,800],"optional":[],"required_bytes":2802862},"nintendo-64|":{"bytes":8454540,"files":[11,170,171],"optional":[],"required_bytes":8454540},"nintendo-ds|drastic":{"bytes":565248,"files":[226,227,282,501,502,503],"optional":[501,502,503],"required_bytes":282624},"nintendo-fds|nestopia":{"bytes":1030561,"files":[173,258],"optional":[],"required_bytes":1030561},"nintendo-gba|mgba":{"bytes":19200,"files":[328,329,330,488],"optional":[],"required_bytes":19200},"nintendo-gbc|gambatte":{"bytes":2560,"files":[328,330],"optional":[],"required_bytes":2560},"nintendo-gb|gambatte":{"bytes":2560,"files":[328,330],"optional":[],"required_bytes":2560},"nintendo-nes|nestopia":{"bytes":192,"files":[250],"optional":[250],"required_bytes":0},"nintendo-pokemon-mini|pokemini":{"bytes":4096,"files":[224],"optional":[224],"required_bytes":0},"nintendo-satellaview|snes9x":{"bytes":1048576,"files":[21],"optional":[],"required_bytes":1048576},"nintendo-snes|snes9x":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nintendo-sufami-turbo|snes9x":{"bytes":262144,"files":[191],"optional":[],"required_bytes":262144},"nintendo-virtualboy|beetle_vb":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"odyssey2|o2em":{"bytes":1606321,"files":[236,324,346,439,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792],"optional":[],"required_bytes":1606321},"olivetti-pc128|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"openbor|openbor":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"panasonic-3do|opera":{"bytes":13123332,"files":[9,334,440,441,442,443,444,445,446,447,448,449,450,476],"optional":[440,441,443,445,446,447,448,449,450],"required_bytes":4718592},"pc-98|np2kai":{"bytes":1294790,"files":[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438],"optional":[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438],"required_bytes":0},"philips-cdi|same_cdi":{"bytes":1857124,"files":[472,473,474,475],"optional":[472,473,475],"required_bytes":745703},"philips-videopac|o2em":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"pico8|fake08":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"powerslave|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"redneck|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"rpgmaker|easyrpg":{"bytes":148398498,"files":[265,793],"optional":[265,793],"required_bytes":0},"scummvm|scummvm-standalone":{"bytes":1703936,"files":[25,26,54,55],"optional":[25,26,54,55],"required_bytes":0},"scv|emuscv":{"bytes":4096,"files":[521],"optional":[],"required_bytes":4096},"sega-32x|picodrive":{"bytes":3328,"files":[6,7,8],"optional":[6,7,8],"required_bytes":0},"sega-dreamcast-arcade|flycast2021":{"bytes":8266557,"files":[251,255,256],"optional":[],"required_bytes":8266557},"sega-dreamcast-arcade|flycast2021le":{"bytes":8266557,"files":[251,255,256],"optional":[],"required_bytes":8266557},"sega-dreamcast|flycast2021":{"bytes":2748208,"files":[252,253,254],"optional":[254],"required_bytes":2228224},"sega-dreamcast|flycast2021le":{"bytes":2748208,"files":[252,253,254],"optional":[254],"required_bytes":2228224},"sega-gamegear|gearsystem":{"bytes":1024,"files":[223],"optional":[],"required_bytes":1024},"sega-genesis|genesis_plus_gx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"sega-mastersystem|gearsystem":{"bytes":32768,"files":[225,231,232,234],"optional":[225],"required_bytes":24576},"sega-megacd|genesis_plus_gx":{"bytes":393216,"files":[228,229,230],"optional":[],"required_bytes":393216},"sega-megadrive|genesis_plus_gx":{"bytes":2426880,"files":[208,233,332,489,490],"optional":[208,233,332,489,490],"required_bytes":0},"sega-saturn|yabasanshiro":{"bytes":8722798,"files":[404,405,406,477,487,495],"optional":[],"required_bytes":8722798},"sega-sc3000|bluemsx":{"bytes":2251595,"files":[30,31,32,33,34],"optional":[30,31,32,33,34],"required_bytes":0},"sega-sg1000|gearsystem":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"shadow-warrior|raze":{"bytes":26056769,"files":[193],"optional":[193],"required_bytes":0},"sharp-x1|x1":{"bytes":318464,"files":[794,795,796,797,798],"optional":[794,795,796],"required_bytes":6144},"sharp-x68000|px68k":{"bytes":1310720,"files":[350,351,352,353,354],"optional":[],"required_bytes":1310720},"sinclair-zx-spectrum|fuse":{"bytes":645120,"files":[0,1,2,3,4,5,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,333,510],"optional":[],"required_bytes":645120},"sinclair-zx81|81":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"snk-neogeo-cd|neocd":{"bytes":8442300,"files":[407,408,409,410,411,412,413,414,415,416,417,418,800],"optional":[407,408,409,410,411,412,413,416,417],"required_bytes":3723708},"snk-ngpc|beetle_ngp":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"snk-ngp|beetle_ngp":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"solarus|solarus":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"sony-playstation|pcsx_rearmed":{"bytes":3670016,"files":[454,478,479,480,481,482,483],"optional":[454,478,479,483],"required_bytes":1572864},"sony-psp|ppsspp":{"bytes":1785762,"files":[174,175],"optional":[174,175],"required_bytes":0},"thomson-mo5|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-mo6|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to770|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to7|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to8d|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to8|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to9plus|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to9|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"tic80|tic80":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"uzebox|uzem":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"vectrex|vecx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"videoton-tvc|ep128emu_core":{"bytes":49152,"files":[266,267,268,269],"optional":[266,267,268,269],"required_bytes":0},"vircon32|vircon32":{"bytes":1073060,"files":[195],"optional":[195],"required_bytes":0},"vtech-vsmile|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"watara-supervision|potator":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wolfenstein3d|ecwolf":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wonderswan-color|beetle_wswan":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wonderswan|beetle_wswan":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"ww2gi|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"zmachine|mojozork":{"bytes":0,"files":[],"optional":[],"required_bytes":0}}} +{"files":[["bios/128p-0.rom",16384,"bios"],["bios/128p-1.rom",16384,"bios"],["bios/256s-0.rom",16384,"bios"],["bios/256s-1.rom",16384,"bios"],["bios/256s-2.rom",16384,"bios"],["bios/256s-3.rom",16384,"bios"],["bios/32X_G_BIOS.BIN",256,"bios"],["bios/32X_M_BIOS.BIN",2048,"bios"],["bios/32X_S_BIOS.BIN",1024,"bios"],["bios/3do_arcade_saot.bin",524288,"bios"],["bios/5200.rom",2048,"bios"],["bios/64DD_IPL.bin",4194304,"bios"],["bios/7800 BIOS (E).rom",16384,"bios"],["bios/7800 BIOS (U).rom",4096,"bios"],["bios/ATARIBAS.ROM",8192,"bios"],["bios/ATARIOSA.ROM",10240,"bios"],["bios/ATARIOSB.ROM",10240,"bios"],["bios/ATARIXL.ROM",16384,"bios"],["bios/BB01R4_OS.ROM",16384,"bios"],["bios/BIOS.col",8192,"bios"],["bios/BLOOD.RFF",3536782,"game_data"],["bios/BS-X.bin",1048576,"bios"],["bios/CD32 Extended-ROM r40.60 (1993)(Commodore)(CD32).rom",524288,"bios"],["bios/CDTV Extended-ROM v1.0 (1991)(Commodore)(CDTV)[!].rom",262144,"bios"],["bios/CM32LN_CONTROL.ROM",65536,"bios"],["bios/CM32L_CONTROL.ROM",65536,"bios"],["bios/CM32L_PCM.ROM",1048576,"bios"],["bios/DOSBOX.SF2",32319396,"bios"],["bios/DUKE3D.GRP",11035779,"game_data"],["bios/Databases/colecodb.xml",164848,"bios"],["bios/Databases/msxcaswavdb.xml",819679,"bios"],["bios/Databases/msxromdb.xml",930986,"bios"],["bios/Databases/msxsysromdb.xml",157542,"bios"],["bios/Databases/segadb.xml",82318,"bios"],["bios/Databases/svidb.xml",261070,"bios"],["bios/ECS.bin",24576,"bios"],["bios/GUI.RFF",7145,"game_data"],["bios/IVOICE.bin",2048,"bios"],["bios/JiffyDOS_1541-II.bin",16384,"bios"],["bios/JiffyDOS_1571_repl310654.bin",32768,"bios"],["bios/JiffyDOS_1581.bin",32768,"bios"],["bios/JiffyDOS_C128.bin",16384,"bios"],["bios/JiffyDOS_C64.bin",8192,"bios"],["bios/JiffyDOS_SX-64.bin",8192,"bios"],["bios/Kickstart v1.2 r33.180 (1986)(Commodore)(A500-A1000-A2000)[!].rom",262144,"bios"],["bios/Kickstart v1.2 rev 33.166 (1986)(Commodore)(A1000).rom",262144,"bios"],["bios/Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!].rom",262144,"bios"],["bios/Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[o].rom",524288,"bios"],["bios/Kickstart v2.04 r37.175 (1991)(Commodore)(A500+)[!].rom",524288,"bios"],["bios/Kickstart v2.05 r37.350 (1992)(Commodore)(A600HD)[!].rom",524288,"bios"],["bios/Kickstart v3.1 r40.60 (1993)(Commodore)(CD32).rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A1200)[!].rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A3000).rom",524288,"bios"],["bios/Kickstart v3.1 r40.68 (1993)(Commodore)(A4000).rom",524288,"bios"],["bios/MT32_CONTROL.ROM",65536,"bios"],["bios/MT32_PCM.ROM",524288,"bios"],["bios/Machines/COL - Bit Corporation Dina/czz50-1.rom",8192,"bios"],["bios/Machines/COL - Bit Corporation Dina/czz50-2.rom",8192,"bios"],["bios/Machines/COL - ColecoVision with Opcode Memory Extension/coleco.rom",8192,"bios"],["bios/Machines/COL - ColecoVision/coleco.rom",8192,"bios"],["bios/Machines/COL - ColecoVision/config.ini",347,"bios"],["bios/Machines/COL - Spectravideo SVI-603 Coleco/SVI603.ROM",8192,"bios"],["bios/Machines/Forte II Games - Pesadelo/pesadelo.rom",65536,"bios"],["bios/Machines/MSX - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX - C-BIOS/cbios_logo_msx1.rom",16384,"bios"],["bios/Machines/MSX - C-BIOS/cbios_main_msx1.rom",32768,"bios"],["bios/Machines/MSX/MSX.ROM",32768,"bios"],["bios/Machines/MSX/MSX2.ROM",32768,"bios"],["bios/Machines/MSX/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX/config.ini",408,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_logo_msx2.rom",16384,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_main_msx2.rom",32768,"bios"],["bios/Machines/MSX2 - C-BIOS/cbios_sub.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios.txt",8924,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_logo_msx2+.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_main_msx2+.rom",32768,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_music.rom",16384,"bios"],["bios/Machines/MSX2+ - C-BIOS/cbios_sub.rom",16384,"bios"],["bios/Machines/MSX2+/MSX.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX2+/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX2+/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX2+/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX2+/config.ini",773,"bios"],["bios/Machines/MSX2/MSX.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2EXT.ROM",16384,"bios"],["bios/Machines/MSX2/MSX2P.ROM",32768,"bios"],["bios/Machines/MSX2/MSX2PEXT.ROM",16384,"bios"],["bios/Machines/MSX2/MSXDOS2.ROM",65536,"bios"],["bios/Machines/MSX2/config.ini",649,"bios"],["bios/Machines/MSXturboR/config.ini",941,"bios"],["bios/Machines/SVI - Spectravideo SVI-318/svi318.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Column/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Column/svi806.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Swedish/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 80 Swedish/svi806se.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 MK2/svi328a.rom",32768,"bios"],["bios/Machines/SVI - Spectravideo SVI-328 MK2/svi806.rom",4096,"bios"],["bios/Machines/SVI - Spectravideo SVI-328/svi328.rom",32768,"bios"],["bios/Machines/Shared Roms/ARAB1.ROM",32768,"bios"],["bios/Machines/Shared Roms/ARABIC.rom",32768,"bios"],["bios/Machines/Shared Roms/BEERIDE.ROM",16384,"bios"],["bios/Machines/Shared Roms/FMPAC.rom",65536,"bios"],["bios/Machines/Shared Roms/GCVMX80.ROM",8192,"bios"],["bios/Machines/Shared Roms/HANGUL.rom",131072,"bios"],["bios/Machines/Shared Roms/KANJI.rom",262144,"bios"],["bios/Machines/Shared Roms/MICROSOLDISK.ROM",16384,"bios"],["bios/Machines/Shared Roms/MOONSOUND.rom",2097152,"bios"],["bios/Machines/Shared Roms/MSX.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2AR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSX2AREXT.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSX2BR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2BREXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2EXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2FR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2FREXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2G.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2GEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2HAN.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2J.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2JEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2KR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2KREXT.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2P.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2PEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2PMUS.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2R.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2R2.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSX2REXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSX2SE.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2SP.rom",32768,"bios"],["bios/Machines/Shared Roms/MSX2SPEXT.rom",16384,"bios"],["bios/Machines/Shared Roms/MSXAR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXBR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXDOS2.ROM",65536,"bios"],["bios/Machines/Shared Roms/MSXDOS23.ROM",65536,"bios"],["bios/Machines/Shared Roms/MSXFR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXG.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXHAN.rom",8192,"bios"],["bios/Machines/Shared Roms/MSXJ.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXKANJI.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXKR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXR.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXR2.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXR2.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXSE.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXSP.rom",32768,"bios"],["bios/Machines/Shared Roms/MSXTR.ROM",32768,"bios"],["bios/Machines/Shared Roms/MSXTREXT.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSXTRMUS.ROM",16384,"bios"],["bios/Machines/Shared Roms/MSXTROPT.ROM",16384,"bios"],["bios/Machines/Shared Roms/NATIONALDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/NOVAXIS.rom",16384,"bios"],["bios/Machines/Shared Roms/PAINT.rom",65536,"bios"],["bios/Machines/Shared Roms/PANASONICDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/PHILIPSDISK.rom",16384,"bios"],["bios/Machines/Shared Roms/RS232.ROM",8192,"bios"],["bios/Machines/Shared Roms/SUNRISEIDE.rom",65536,"bios"],["bios/Machines/Shared Roms/SWP.rom",32768,"bios"],["bios/Machines/Shared Roms/Shared.txt",41,"bios"],["bios/Machines/Shared Roms/XBASIC2.rom",16384,"bios"],["bios/Machines/Shared Roms/nowindDos1.rom",524288,"bios"],["bios/Machines/Shared Roms/nowindDos2.rom",524288,"bios"],["bios/Mupen64plus/IPL.n64",4194304,"bios"],["bios/Mupen64plus/font.ttf",65932,"bios"],["bios/NWINTER.GRP",10965909,"game_data"],["bios/NstDatabase.xml",1022369,"bios"],["bios/PPSSPP/ppge_atlas.meta",1119232,"bios"],["bios/PPSSPP/ppge_atlas.zim",666530,"bios"],["bios/ROM_OS_BB01R59",16384,"bios"],["bios/ROM_OS_BB01R59A",16384,"bios"],["bios/ROM_OS_BB02R3V4",16384,"bios"],["bios/ROM_OS_CC01R4",16384,"bios"],["bios/SC-55-v1.00/sc55_rom1.bin",32768,"bios"],["bios/SC-55-v1.00/sc55_rom2.bin",262144,"bios"],["bios/SC-55-v1.00/sc55_waverom1.bin",1048576,"bios"],["bios/SC-55-v1.00/sc55_waverom2.bin",1048576,"bios"],["bios/SC-55-v1.00/sc55_waverom3.bin",1048576,"bios"],["bios/SC-55/ROM1.BIN",32768,"bios"],["bios/SC-55/ROM2.BIN",524288,"bios"],["bios/SC-55/ROM_SM.BIN",4096,"bios"],["bios/SC-55/WAVEROM1.BIN",2097152,"bios"],["bios/SC-55/WAVEROM2.BIN",1048576,"bios"],["bios/SOUNDS.RFF",12830764,"game_data"],["bios/STBIOS.bin",262144,"bios"],["bios/SURFACE.DAT",4096,"game_data"],["bios/SW.GRP",26056769,"game_data"],["bios/VOXEL.DAT",8192,"game_data"],["bios/Vircon32Bios.v32",1073060,"bios"],["bios/WHDLoad.prefs",1935,"bios"],["bios/XEGAME.ROM",8192,"bios"],["bios/[BIOS] Atari Jaguar CD (World).j64",262144,"bios"],["bios/[BIOS] Atari Jaguar Developer CD (World).j64",262144,"bios"],["bios/ace.zip",21283,"bios"],["bios/ace91.zip",27636,"bios"],["bios/ace91_euro.zip",27381,"bios"],["bios/ace_a.zip",3752,"bios"],["bios/ace_a2.zip",3760,"bios"],["bios/aceeuro.zip",23853,"bios"],["bios/action2.wad",209908382,"game_data"],["bios/all.bin",516096,"bios"],["bios/areplay.bin",32768,"bios"],["bios/astron.zip",57886,"bios"],["bios/astronp.zip",23339,"bios"],["bios/atari-1200xl-os-rev-10.rom",16384,"bios"],["bios/atari-1200xl-os-rev-11.rom",16384,"bios"],["bios/atari-5200-os-2port.rom",2048,"bios"],["bios/atari-800-os-a-ntsc.rom",10240,"bios"],["bios/atari-basic-rev-a.rom",8192,"bios"],["bios/atari-basic-rev-b.rom",8192,"bios"],["bios/atari-xl-os-ver-1.rom",16384,"bios"],["bios/atari-xl-os-ver-3.rom",16384,"bios"],["bios/badlandp.zip",8789,"bios"],["bios/badlands.zip",12872,"bios"],["bios/bega.zip",48777,"bios"],["bios/begar1.zip",19993,"bios"],["bios/bios.gg",1024,"bios"],["bios/bios.min",4096,"bios"],["bios/bios.sms",8192,"bios"],["bios/bios7.bin",16384,"bios"],["bios/bios9.bin",4096,"bios"],["bios/bios_CD_E.bin",131072,"bios"],["bios/bios_CD_J.bin",131072,"bios"],["bios/bios_CD_U.bin",131072,"bios"],["bios/bios_E.sms",8192,"bios"],["bios/bios_J.sms",8192,"bios"],["bios/bios_MD.bin",2048,"bios"],["bios/bios_U.sms",8192,"bios"],["bios/blazer.zip",19999,"bios"],["bios/c52.bin",1024,"bios"],["bios/capsimg.dll",191488,"bios"],["bios/capsimg.so",95460,"bios"],["bios/chargen-901460-02.bin",4096,"bios"],["bios/cliff.zip",16725,"bios"],["bios/cliff_ox.zip",16879,"bios"],["bios/cliffalt.zip",15087,"bios"],["bios/cliffalt2.zip",14504,"bios"],["bios/cobra.zip",29388,"bios"],["bios/cobraab.zip",20648,"bios"],["bios/cobraconv.zip",27623,"bios"],["bios/cobram3.zip",23520,"bios"],["bios/colecovision.rom",8192,"bios"],["bios/cputest.zip",11874,"bios"],["bios/custom.pal",192,"bios"],["bios/dc/awbios.zip",34620,"bios"],["bios/dc/dc_boot.bin",2097152,"bios"],["bios/dc/dc_flash.bin",131072,"bios"],["bios/dc/font.bin",519984,"bios"],["bios/dc/naomi.zip",6134785,"bios"],["bios/dc/naomi_boot.bin",2097152,"bios"],["bios/delaweare.wad",83219726,"game_data"],["bios/disksys.rom",8192,"bios"],["bios/dle11.zip",28296,"bios"],["bios/dle20.zip",25955,"bios"],["bios/dle21.zip",24883,"bios"],["bios/doom.wad",11159840,"game_data"],["bios/doom2.wad",14943400,"game_data"],["bios/doom2f.wad",14607420,"game_data"],["bios/easyrpg.soundfont",148398306,"game_data"],["bios/ep128emu/roms/tvc22_ext.rom",8192,"bios"],["bios/ep128emu/roms/tvc22_sys.rom",16384,"bios"],["bios/ep128emu/roms/tvc_dos12d.rom",16384,"bios"],["bios/ep128emu/roms/tvcfileio.rom",8192,"bios"],["bios/esh.zip",16764,"bios"],["bios/eshalt.zip",5660,"bios"],["bios/eshalt2.zip",5277,"bios"],["bios/eshfix7.zip",5669,"bios"],["bios/eshfix7alt.zip",5678,"bios"],["bios/eshfix7alt2.zip",5669,"bios"],["bios/exec.bin",8192,"bios"],["bios/fbneo/hiscore.dat",328397,"bios"],["bios/fbneo/samples/donpachi.zip",208549253,"game_data"],["bios/fbneo/samples/sfz3mix.zip",101017377,"game_data"],["bios/firefox.zip",53410,"bios"],["bios/firefoxa.zip",51026,"bios"],["bios/firmware.bin",262144,"bios"],["bios/freedm.wad",22218796,"game_data"],["bios/freedoom1.wad",28795076,"game_data"],["bios/freedoom2.wad",28787748,"game_data"],["bios/freej2me_plus-lr.jar",1219093,"bios"],["bios/fuse/128-0.rom",16384,"bios"],["bios/fuse/128-1.rom",16384,"bios"],["bios/fuse/128p-0.rom",16384,"bios"],["bios/fuse/128p-1.rom",16384,"bios"],["bios/fuse/256s-0.rom",16384,"bios"],["bios/fuse/256s-1.rom",16384,"bios"],["bios/fuse/256s-2.rom",16384,"bios"],["bios/fuse/256s-3.rom",16384,"bios"],["bios/fuse/48.rom",16384,"bios"],["bios/fuse/didaktik80.rom",14336,"bios"],["bios/fuse/disciple.rom",8192,"bios"],["bios/fuse/gluck.rom",16384,"bios"],["bios/fuse/if1-2.rom",8192,"bios"],["bios/fuse/mf1.rom",8192,"bios"],["bios/fuse/mf128.rom",8192,"bios"],["bios/fuse/mf3.rom",8192,"bios"],["bios/fuse/opus.rom",8192,"bios"],["bios/fuse/plus2-0.rom",16384,"bios"],["bios/fuse/plus2-1.rom",16384,"bios"],["bios/fuse/plus3-0.rom",16384,"bios"],["bios/fuse/plus3-1.rom",16384,"bios"],["bios/fuse/plus3-2.rom",16384,"bios"],["bios/fuse/plus3-3.rom",16384,"bios"],["bios/fuse/plus3e-0.rom",16384,"bios"],["bios/fuse/plus3e-1.rom",16384,"bios"],["bios/fuse/plus3e-2.rom",16384,"bios"],["bios/fuse/plus3e-3.rom",16384,"bios"],["bios/fuse/plusd.rom",8192,"bios"],["bios/fuse/se-0.rom",16384,"bios"],["bios/fuse/se-1.rom",16384,"bios"],["bios/fuse/speccyboot-1.4.rom",8192,"bios"],["bios/fuse/tc2048.rom",16384,"bios"],["bios/fuse/tc2068-0.rom",16384,"bios"],["bios/fuse/tc2068-1.rom",8192,"bios"],["bios/fuse/trdos.rom",16384,"bios"],["bios/fuse/ttx2000s.rom",8192,"bios"],["bios/fuse/usource.rom",8192,"bios"],["bios/g7400.bin",1024,"bios"],["bios/galaxy.zip",48574,"bios"],["bios/galaxyp.zip",20042,"bios"],["bios/gamecontrollerdb.txt",609830,"game_data"],["bios/gb_bios.bin",256,"bios"],["bios/gba_bios.bin",16384,"bios"],["bios/gbc_bios.bin",2304,"bios"],["bios/gexpress.pce",32768,"bios"],["bios/ggenie.bin",32768,"bios"],["bios/gluck.rom",16384,"bios"],["bios/goldstar.bin",1048576,"bios"],["bios/gpworld.zip",86990,"bios"],["bios/grom.bin",2048,"bios"],["bios/gtg.zip",19748,"bios"],["bios/hacx.wad",19321722,"game_data"],["bios/hacx2.wad",20504847,"game_data"],["bios/harm1.wad",58396393,"game_data"],["bios/hatari/BOOT.ST",737280,"bios"],["bios/howard.o",513,"bios"],["bios/interstellar.zip",39757,"bios"],["bios/jagboot.rom",131072,"bios"],["bios/jagboot_m.rom",131072,"bios"],["bios/jopac.bin",1024,"bios"],["bios/kernal-901227-01.bin",8192,"bios"],["bios/kernal-901227-02.bin",8192,"bios"],["bios/kernal.901486-02.bin",8192,"bios"],["bios/keropi/cgrom.dat",786432,"bios"],["bios/keropi/iplrom.dat",131072,"bios"],["bios/keropi/iplrom30.dat",131072,"bios"],["bios/keropi/iplromco.dat",131072,"bios"],["bios/keropi/iplromxv.dat",131072,"bios"],["bios/kick31034.A1000",262144,"bios"],["bios/kick32034.A1000",262144,"bios"],["bios/kick33180.A500",262144,"bios"],["bios/kick34005.A500",262144,"bios"],["bios/kick37175.A500",524288,"bios"],["bios/kick37350.A600",524288,"bios"],["bios/kick39106.A1200",524288,"bios"],["bios/kick39106.A4000",524288,"bios"],["bios/kick40060.CD32",524288,"bios"],["bios/kick40060.CD32.ext",524288,"bios"],["bios/kick40063.A600",524288,"bios"],["bios/kick40068.A1200",524288,"bios"],["bios/kick40068.A4000",524288,"bios"],["bios/lair.zip",17906,"bios"],["bios/lair2.zip",25809,"bios"],["bios/lair2_211.zip",23278,"bios"],["bios/lair2_300.zip",24540,"bios"],["bios/lair2_314.zip",25195,"bios"],["bios/lair2_315.zip",25271,"bios"],["bios/lair2_316_euro.zip",25175,"bios"],["bios/lair2_318.zip",25592,"bios"],["bios/lair2_319_euro.zip",25493,"bios"],["bios/lair2_319_span.zip",25828,"bios"],["bios/lair_a.zip",21377,"bios"],["bios/lair_b.zip",4293,"bios"],["bios/lair_c.zip",968,"bios"],["bios/lair_d.zip",27677,"bios"],["bios/lair_d2.zip",4056,"bios"],["bios/lair_e.zip",20802,"bios"],["bios/lair_f.zip",6027,"bios"],["bios/lair_ita.zip",6408,"bios"],["bios/lair_n1.zip",26477,"bios"],["bios/lair_x.zip",24316,"bios"],["bios/laireuro.zip",10771,"bios"],["bios/lgp.zip",37609,"bios"],["bios/lynxboot.img",512,"bios"],["bios/mach3.zip",441761,"bios"],["bios/mame2003-plus/artwork/blueshrk.zip",925914,"game_data"],["bios/mame2003-plus/artwork/dotron.zip",2010009,"game_data"],["bios/mame2003-plus/artwork/frogs.zip",2832731,"game_data"],["bios/mame2003-plus/artwork/invaders.zip",4324198,"game_data"],["bios/mame2003-plus/artwork/omegrace.zip",1754523,"game_data"],["bios/mame2003-plus/artwork/skydiver.zip",117241,"game_data"],["bios/mame2003-plus/artwork/solarq.zip",1342645,"game_data"],["bios/mame2003-plus/artwork/warrior.zip",1125335,"game_data"],["bios/mame2003-plus/cheat.dat",7971360,"game_data"],["bios/mame2003-plus/hiscore.dat",131926,"game_data"],["bios/mame2003-plus/history.dat",38635890,"game_data"],["bios/mame2003-plus/mameinfo.dat",24837237,"game_data"],["bios/mpr-17933.bin",524288,"bios"],["bios/mpr-18811-mx.ic1",2097152,"bios"],["bios/mpr-19367-mx.ic1",2097152,"bios"],["bios/neocd/front-sp1.bin",524288,"bios"],["bios/neocd/neocd.bin",524288,"bios"],["bios/neocd/neocd_f.rom",524288,"bios"],["bios/neocd/neocd_sf.rom",524288,"bios"],["bios/neocd/neocd_st.rom",524288,"bios"],["bios/neocd/neocd_sz.rom",524288,"bios"],["bios/neocd/neocd_t.rom",524288,"bios"],["bios/neocd/neocd_z.rom",524288,"bios"],["bios/neocd/ng-lo.rom",65536,"bios"],["bios/neocd/top-sp1.bin",524288,"bios"],["bios/neocd/uni-bioscd.rom",524288,"bios"],["bios/neocdz.zip",1181333,"bios"],["bios/np2kai/2608_BD.WAV",19192,"bios"],["bios/np2kai/2608_HH.WAV",36722,"bios"],["bios/np2kai/2608_RIM.WAV",5288,"bios"],["bios/np2kai/2608_SD.WAV",15558,"bios"],["bios/np2kai/2608_TOM.WAV",23092,"bios"],["bios/np2kai/2608_TOP.WAV",57016,"bios"],["bios/np2kai/2608_bd.wav",19192,"bios"],["bios/np2kai/2608_hh.wav",36722,"bios"],["bios/np2kai/2608_rim.wav",5288,"bios"],["bios/np2kai/2608_sd.wav",15558,"bios"],["bios/np2kai/2608_tom.wav",23092,"bios"],["bios/np2kai/2608_top.wav",57016,"bios"],["bios/np2kai/FONT.ROM",288768,"bios"],["bios/np2kai/bios.rom",98304,"bios"],["bios/np2kai/font.bmp",524350,"bios"],["bios/np2kai/ide.rom",8192,"bios"],["bios/np2kai/pci.rom",32768,"bios"],["bios/np2kai/sasi.rom",4096,"bios"],["bios/np2kai/scsi.rom",8192,"bios"],["bios/np2kai/sound.rom",16384,"bios"],["bios/o2rom.bin",1024,"bios"],["bios/opera-boot.bin",131072,"bios"],["bios/panafz1-kanji.bin",933636,"bios"],["bios/panafz1.bin",1048576,"bios"],["bios/panafz10-norsa.bin",1048576,"bios"],["bios/panafz10.bin",1048576,"bios"],["bios/panafz10e-anvil-norsa.bin",1048576,"bios"],["bios/panafz10e-anvil.bin",1048576,"bios"],["bios/panafz10ja-anvil-kanji.bin",1048576,"bios"],["bios/panafz1j-kanji.bin",1048576,"bios"],["bios/panafz1j-norsa.bin",1048576,"bios"],["bios/panafz1j.bin",1048576,"bios"],["bios/pcfx.rom",1048576,"bios"],["bios/penthous.zip",2112419,"game_data"],["bios/plutonia.wad",17420824,"game_data"],["bios/psxonpsp660.bin",524288,"bios"],["bios/quasi88/DISK.ROM",2048,"bios"],["bios/quasi88/N88.ROM",32768,"bios"],["bios/quasi88/N88N.ROM",32768,"bios"],["bios/quasi88/N88_0.ROM",8192,"bios"],["bios/quasi88/N88_1.ROM",8192,"bios"],["bios/quasi88/N88_2.ROM",8192,"bios"],["bios/quasi88/N88_3.ROM",8192,"bios"],["bios/quasi88/font.rom",2048,"bios"],["bios/quasi88/font2.rom",2048,"bios"],["bios/quasi88/font3.rom",2048,"bios"],["bios/quasi88/n88jisho.rom",524288,"bios"],["bios/quasi88/n88knj1.rom",131072,"bios"],["bios/quasi88/n88knj2.rom",131072,"bios"],["bios/roadblaster.zip",20664,"bios"],["bios/rom.key",2069,"bios"],["bios/rotwb.wad",20592999,"game_data"],["bios/sae.zip",27734,"bios"],["bios/same_cdi/bios/cdi490a.zip",379558,"bios"],["bios/same_cdi/bios/cdi910.zip",487572,"bios"],["bios/same_cdi/bios/cdimono1.zip",745703,"bios"],["bios/same_cdi/bios/cdimono2.zip",244291,"bios"],["bios/sanyotry.bin",1048576,"bios"],["bios/saturn_bios.bin",524288,"bios"],["bios/scph1001.bin",524288,"bios"],["bios/scph101.bin",524288,"bios"],["bios/scph5500.bin",524288,"bios"],["bios/scph5501.bin",524288,"bios"],["bios/scph5502.bin",524288,"bios"],["bios/scph7001.bin",524288,"bios"],["bios/sdq.zip",11467,"bios"],["bios/sdqshort.zip",10147,"bios"],["bios/sdqshortalt.zip",10161,"bios"],["bios/sega_101.bin",524288,"bios"],["bios/sgb_bios.bin",256,"bios"],["bios/sk.bin",2097152,"bios"],["bios/sk2chip.bin",262144,"bios"],["bios/sl31253.bin",1024,"bios"],["bios/sl31254.bin",1024,"bios"],["bios/sl90025.bin",1024,"bios"],["bios/square1.pk3",45202919,"game_data"],["bios/stvbios.zip",2955630,"bios"],["bios/syscard1.pce",262144,"bios"],["bios/syscard2.pce",262144,"bios"],["bios/syscard2u.pce",262144,"bios"],["bios/syscard3.pce",262144,"bios"],["bios/syscard3u.pce",262144,"bios"],["bios/system/nds_bios_arm7.bin",16384,"bios"],["bios/system/nds_bios_arm9.bin",4096,"bios"],["bios/system/nds_firmware.bin",262144,"bios"],["bios/timetrav.zip",53103,"bios"],["bios/tnt.wad",18195736,"game_data"],["bios/tos.img",196608,"bios"],["bios/tq.zip",24144,"bios"],["bios/tq_alt.zip",3831,"bios"],["bios/tq_swear.zip",19758,"bios"],["bios/trdos.rom",16384,"bios"],["bios/uae_data/drive_click_A500.wav",3313326,"bios"],["bios/uae_data/drive_click_LOUD.wav",3308526,"bios"],["bios/uae_data/drive_snatch_A500.wav",34450,"bios"],["bios/uae_data/drive_snatch_LOUD.wav",39864,"bios"],["bios/uae_data/drive_spin_A500.wav",134294,"bios"],["bios/uae_data/drive_spin_LOUD.wav",20216,"bios"],["bios/uae_data/drive_spinnd_A500.wav",352430,"bios"],["bios/uae_data/drive_spinnd_LOUD.wav",241790,"bios"],["bios/uae_data/drive_startup_A500.wav",34450,"bios"],["bios/uae_data/drive_startup_LOUD.wav",43492,"bios"],["bios/upd7801g.s01",4096,"bios"],["bios/uvt.zip",62052,"bios"],["bios/voice/E480.WAV",101,"game_data"],["bios/voice/E481.WAV",554,"game_data"],["bios/voice/E482.WAV",554,"game_data"],["bios/voice/E483.WAV",1096,"game_data"],["bios/voice/E484.WAV",2219,"game_data"],["bios/voice/E485.WAV",4592,"game_data"],["bios/voice/E486.WAV",2902,"game_data"],["bios/voice/E487.WAV",804,"game_data"],["bios/voice/E488.WAV",1378,"game_data"],["bios/voice/E489.WAV",576,"game_data"],["bios/voice/E48A.WAV",1556,"game_data"],["bios/voice/E48B.WAV",1516,"game_data"],["bios/voice/E48C.WAV",794,"game_data"],["bios/voice/E48D.WAV",1510,"game_data"],["bios/voice/E48E.WAV",1892,"game_data"],["bios/voice/E48F.WAV",788,"game_data"],["bios/voice/E490.WAV",2020,"game_data"],["bios/voice/E491.WAV",1122,"game_data"],["bios/voice/E492.WAV",1862,"game_data"],["bios/voice/E493.WAV",2772,"game_data"],["bios/voice/E494.WAV",3120,"game_data"],["bios/voice/E495.WAV",854,"game_data"],["bios/voice/E496.WAV",1154,"game_data"],["bios/voice/E497.WAV",1122,"game_data"],["bios/voice/E498.WAV",1144,"game_data"],["bios/voice/E499.WAV",2056,"game_data"],["bios/voice/E49A.WAV",1302,"game_data"],["bios/voice/E49B.WAV",2492,"game_data"],["bios/voice/E49C.WAV",936,"game_data"],["bios/voice/E49D.WAV",2038,"game_data"],["bios/voice/E49E.WAV",1146,"game_data"],["bios/voice/E49F.WAV",2884,"game_data"],["bios/voice/E4A0.WAV",4096,"game_data"],["bios/voice/E4A1.WAV",1702,"game_data"],["bios/voice/E4A2.WAV",1570,"game_data"],["bios/voice/E4A3.WAV",2060,"game_data"],["bios/voice/E4A4.WAV",846,"game_data"],["bios/voice/E4A5.WAV",1756,"game_data"],["bios/voice/E4A6.WAV",2144,"game_data"],["bios/voice/E4A7.WAV",1388,"game_data"],["bios/voice/E4A8.WAV",1586,"game_data"],["bios/voice/E4A9.WAV",2022,"game_data"],["bios/voice/E4AA.WAV",1624,"game_data"],["bios/voice/E4AB.WAV",2302,"game_data"],["bios/voice/E4AC.WAV",2484,"game_data"],["bios/voice/E4AD.WAV",1252,"game_data"],["bios/voice/E4AE.WAV",1978,"game_data"],["bios/voice/E4AF.WAV",3984,"game_data"],["bios/voice/E4B0.WAV",2184,"game_data"],["bios/voice/E4B1.WAV",1448,"game_data"],["bios/voice/E4B2.WAV",2040,"game_data"],["bios/voice/E4B3.WAV",1762,"game_data"],["bios/voice/E4B4.WAV",3334,"game_data"],["bios/voice/E4B5.WAV",2604,"game_data"],["bios/voice/E4B6.WAV",2654,"game_data"],["bios/voice/E4B7.WAV",984,"game_data"],["bios/voice/E4B8.WAV",2156,"game_data"],["bios/voice/E4B9.WAV",890,"game_data"],["bios/voice/E4BA.WAV",3656,"game_data"],["bios/voice/E4BB.WAV",3166,"game_data"],["bios/voice/E4BC.WAV",3840,"game_data"],["bios/voice/E4BD.WAV",464,"game_data"],["bios/voice/E4BE.WAV",2084,"game_data"],["bios/voice/E4BF.WAV",646,"game_data"],["bios/voice/E4C0.WAV",5348,"game_data"],["bios/voice/E4C1.WAV",8577,"game_data"],["bios/voice/E4C2.WAV",5504,"game_data"],["bios/voice/E4C3.WAV",12420,"game_data"],["bios/voice/E4C4.WAV",11286,"game_data"],["bios/voice/E4C5.WAV",7194,"game_data"],["bios/voice/E4C6.WAV",7078,"game_data"],["bios/voice/E4C7.WAV",4566,"game_data"],["bios/voice/E4C8.WAV",7740,"game_data"],["bios/voice/E4C9.WAV",9504,"game_data"],["bios/voice/E4CA.WAV",12896,"game_data"],["bios/voice/E4FA.WAV",11049,"game_data"],["bios/voice/E4FB.WAV",7604,"game_data"],["bios/voice/E880.WAV",10745,"game_data"],["bios/voice/E881.WAV",7324,"game_data"],["bios/voice/E882.WAV",6876,"game_data"],["bios/voice/E883.WAV",7418,"game_data"],["bios/voice/E884.WAV",13296,"game_data"],["bios/voice/E885.WAV",10055,"game_data"],["bios/voice/E886.WAV",5827,"game_data"],["bios/voice/E887.WAV",6215,"game_data"],["bios/voice/E888.WAV",5264,"game_data"],["bios/voice/E889.WAV",8524,"game_data"],["bios/voice/E88A.WAV",4348,"game_data"],["bios/voice/E88B.WAV",4104,"game_data"],["bios/voice/E88C.WAV",9624,"game_data"],["bios/voice/E88D.WAV",6914,"game_data"],["bios/voice/E88E.WAV",8319,"game_data"],["bios/voice/E88F.WAV",9592,"game_data"],["bios/voice/E890.WAV",9479,"game_data"],["bios/voice/E891.WAV",8697,"game_data"],["bios/voice/E892.WAV",6878,"game_data"],["bios/voice/E893.WAV",6220,"game_data"],["bios/voice/E894.WAV",6830,"game_data"],["bios/voice/E895.WAV",6283,"game_data"],["bios/voice/E980.WAV",6300,"game_data"],["bios/voice/E981.WAV",5324,"game_data"],["bios/voice/E982.WAV",11267,"game_data"],["bios/voice/E983.WAV",7202,"game_data"],["bios/voice/E984.WAV",6732,"game_data"],["bios/voice/E985.WAV",6317,"game_data"],["bios/voice/E986.WAV",6638,"game_data"],["bios/voice/E987.WAV",8261,"game_data"],["bios/voice/E988.WAV",10269,"game_data"],["bios/voice/E989.WAV",5644,"game_data"],["bios/voice/E98A.WAV",6008,"game_data"],["bios/voice/E98B.WAV",10470,"game_data"],["bios/voice/E98C.WAV",6304,"game_data"],["bios/voice/E98D.WAV",3478,"game_data"],["bios/voice/E98E.WAV",12232,"game_data"],["bios/voice/E98F.WAV",13922,"game_data"],["bios/voice/E990.WAV",10460,"game_data"],["bios/voice/E991.WAV",2924,"game_data"],["bios/voice/E992.WAV",16808,"game_data"],["bios/voice/E993.WAV",12544,"game_data"],["bios/voice/E994.WAV",7100,"game_data"],["bios/voice/E995.WAV",6452,"game_data"],["bios/voice/E996.WAV",6685,"game_data"],["bios/voice/EA80.WAV",3092,"game_data"],["bios/voice/EA81.WAV",5390,"game_data"],["bios/voice/EA82.WAV",14341,"game_data"],["bios/voice/EA83.WAV",4719,"game_data"],["bios/voice/EA84.WAV",5252,"game_data"],["bios/voice/EA85.WAV",7018,"game_data"],["bios/voice/EA86.WAV",8480,"game_data"],["bios/voice/EA87.WAV",9496,"game_data"],["bios/voice/EA88.WAV",38600,"game_data"],["bios/voice/EA89.WAV",29892,"game_data"],["bios/voice/EA8A.WAV",11328,"game_data"],["bios/voice/EA8B.WAV",2604,"game_data"],["bios/voice/EA8C.WAV",16184,"game_data"],["bios/voice/EA8D.WAV",3308,"game_data"],["bios/voice/EA8E.WAV",3350,"game_data"],["bios/voice/EA8F.WAV",18174,"game_data"],["bios/voice/EA90.WAV",3348,"game_data"],["bios/voice/EA91.WAV",3299,"game_data"],["bios/voice/EA92.WAV",3302,"game_data"],["bios/voice/EA93.WAV",3306,"game_data"],["bios/voice/EA94.WAV",3267,"game_data"],["bios/voice/EA95.WAV",3388,"game_data"],["bios/voice/EA96.WAV",3392,"game_data"],["bios/voice/EA97.WAV",3393,"game_data"],["bios/voice/EA98.WAV",3359,"game_data"],["bios/voice/EA99.WAV",3300,"game_data"],["bios/voice/EA9A.WAV",3312,"game_data"],["bios/voice/EA9B.WAV",3402,"game_data"],["bios/voice/EA9C.WAV",3308,"game_data"],["bios/voice/EA9D.WAV",3313,"game_data"],["bios/voice/EA9E.WAV",3302,"game_data"],["bios/voice/EA9F.WAV",3340,"game_data"],["bios/voice/EAA0.WAV",3314,"game_data"],["bios/voice/EAA1.WAV",3306,"game_data"],["bios/voice/EAA2.WAV",3308,"game_data"],["bios/voice/EAA3.WAV",3314,"game_data"],["bios/voice/EAA4.WAV",3313,"game_data"],["bios/voice/EAA5.WAV",3311,"game_data"],["bios/voice/EAA6.WAV",3340,"game_data"],["bios/voice/EAA7.WAV",3302,"game_data"],["bios/voice/EB80.WAV",7226,"game_data"],["bios/voice/EB81.WAV",5558,"game_data"],["bios/voice/EB82.WAV",5566,"game_data"],["bios/voice/EB83.WAV",6276,"game_data"],["bios/voice/EB84.WAV",7508,"game_data"],["bios/voice/EB85.WAV",5400,"game_data"],["bios/voice/EB86.WAV",8981,"game_data"],["bios/voice/EB87.WAV",8844,"game_data"],["bios/voice/EB88.WAV",6554,"game_data"],["bios/voice/EB89.WAV",6932,"game_data"],["bios/voice/EB8A.WAV",7059,"game_data"],["bios/voice/EB8B.WAV",7544,"game_data"],["bios/voice/EB8C.WAV",5790,"game_data"],["bios/voice/EB8D.WAV",6700,"game_data"],["bios/voice/EB8E.WAV",6188,"game_data"],["bios/voice/EB8F.WAV",4880,"game_data"],["bios/voice/EB90.WAV",7480,"game_data"],["bios/voice/EB91.WAV",6804,"game_data"],["bios/voice/EB92.WAV",7419,"game_data"],["bios/voice/EB93.WAV",6105,"game_data"],["bios/voice/EB94.WAV",4972,"game_data"],["bios/voice/EB95.WAV",5084,"game_data"],["bios/voice/EB96.WAV",6492,"game_data"],["bios/voice/EB97.WAV",8819,"game_data"],["bios/voice/EB98.WAV",6104,"game_data"],["bios/voice/EB99.WAV",5896,"game_data"],["bios/voice/EB9A.WAV",5784,"game_data"],["bios/voice/EB9B.WAV",5742,"game_data"],["bios/voice/EB9C.WAV",6154,"game_data"],["bios/voice/EB9D.WAV",4984,"game_data"],["bios/voice/EC80.WAV",6815,"game_data"],["bios/voice/EC81.WAV",5628,"game_data"],["bios/voice/EC82.WAV",17440,"game_data"],["bios/voice/EC83.WAV",8162,"game_data"],["bios/voice/EC84.WAV",7944,"game_data"],["bios/voice/EC85.WAV",6848,"game_data"],["bios/voice/EC86.WAV",8225,"game_data"],["bios/voice/EC87.WAV",5588,"game_data"],["bios/voice/EC88.WAV",8954,"game_data"],["bios/voice/EC89.WAV",7340,"game_data"],["bios/voice/EC8A.WAV",9092,"game_data"],["bios/voice/EC8B.WAV",7754,"game_data"],["bios/voice/EC8C.WAV",7100,"game_data"],["bios/voice/EC8D.WAV",5732,"game_data"],["bios/voice/EC8E.WAV",6200,"game_data"],["bios/voice/EC8F.WAV",6504,"game_data"],["bios/voice/EC90.WAV",7853,"game_data"],["bios/voice/EC91.WAV",8378,"game_data"],["bios/voice/EC92.WAV",5336,"game_data"],["bios/voice/EC93.WAV",8294,"game_data"],["bios/voice/EC94.WAV",7838,"game_data"],["bios/voice/EC95.WAV",6927,"game_data"],["bios/voice/EC96.WAV",7524,"game_data"],["bios/voice/EC97.WAV",8140,"game_data"],["bios/voice/EC98.WAV",8370,"game_data"],["bios/voice/EC99.WAV",7292,"game_data"],["bios/voice/EC9A.WAV",6884,"game_data"],["bios/voice/EC9B.WAV",6846,"game_data"],["bios/voice/ED80.WAV",6308,"game_data"],["bios/voice/ED81.WAV",5772,"game_data"],["bios/voice/ED82.WAV",6794,"game_data"],["bios/voice/ED83.WAV",6680,"game_data"],["bios/voice/ED84.WAV",6624,"game_data"],["bios/voice/ED85.WAV",7450,"game_data"],["bios/voice/ED86.WAV",7055,"game_data"],["bios/voice/ED87.WAV",5955,"game_data"],["bios/voice/ED88.WAV",6789,"game_data"],["bios/voice/ED89.WAV",6542,"game_data"],["bios/voice/ED8A.WAV",6924,"game_data"],["bios/voice/ED8B.WAV",7062,"game_data"],["bios/voice/ED8C.WAV",6967,"game_data"],["bios/voice/ED8D.WAV",7205,"game_data"],["bios/voice/ED8E.WAV",7381,"game_data"],["bios/voice/ED8F.WAV",5168,"game_data"],["bios/voice/ED90.WAV",5344,"game_data"],["bios/voice/ED91.WAV",5345,"game_data"],["bios/voice/ED92.WAV",7924,"game_data"],["bios/voice/ED93.WAV",7415,"game_data"],["bios/voice/ED94.WAV",6820,"game_data"],["bios/voice/ED95.WAV",6464,"game_data"],["bios/voice/ED96.WAV",6576,"game_data"],["bios/voice/ED97.WAV",6124,"game_data"],["bios/voice/ED98.WAV",7688,"game_data"],["bios/voice/ED99.WAV",6369,"game_data"],["bios/voice/ED9A.WAV",6254,"game_data"],["bios/voice/EE80.WAV",6012,"game_data"],["bios/voice/EE81.WAV",8294,"game_data"],["bios/voice/EE82.WAV",7128,"game_data"],["bios/voice/EE83.WAV",4256,"game_data"],["bios/voice/EE84.WAV",7514,"game_data"],["bios/voice/EE85.WAV",8176,"game_data"],["bios/voice/EE86.WAV",6824,"game_data"],["bios/voice/EE87.WAV",8117,"game_data"],["bios/voice/EE88.WAV",8756,"game_data"],["bios/voice/EE89.WAV",7406,"game_data"],["bios/voice/EE8A.WAV",7352,"game_data"],["bios/voice/EE8B.WAV",8651,"game_data"],["bios/voice/EE8C.WAV",7511,"game_data"],["bios/voice/EE8D.WAV",8024,"game_data"],["bios/voice/EE8E.WAV",9809,"game_data"],["bios/voice/EE8F.WAV",8364,"game_data"],["bios/voice/EE90.WAV",4828,"game_data"],["bios/voice/EE91.WAV",6092,"game_data"],["bios/voice/EE92.WAV",5000,"game_data"],["bios/voice/EE93.WAV",7197,"game_data"],["bios/voice/EE94.WAV",6785,"game_data"],["bios/voice/EE95.WAV",6105,"game_data"],["bios/voice/EE96.WAV",7604,"game_data"],["bios/wildmidi.cfg",192,"game_data"],["bios/xmil/FNT0808.X1",2048,"bios"],["bios/xmil/FNT0816.X1",4096,"bios"],["bios/xmil/FNT1616.X1",306176,"bios"],["bios/xmil/IPLROM.X1",4096,"bios"],["bios/xmil/IPLROM.X1T",2048,"bios"],["neogeo/aes.zip",850311,"bios"],["neogeo/neogeo.zip",1952551,"bios"]],"format_version":1,"platform":"amberelec","sets":{"amstrad-cpc|cap32":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"amstrad-cpc|crocods":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"aquaplus-piece|piemu":{"bytes":516096,"files":[207],"optional":[],"required_bytes":516096},"arcade-laserdisc|hypseus-singe":{"bytes":2648486,"files":[200,201,202,203,204,205,209,210,219,220,221,222,235,240,241,242,243,244,245,246,247,249,259,260,261,270,271,272,273,274,275,280,281,325,326,327,335,337,343,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,391,468,471,484,485,486,504,507,508,509,522],"optional":[327],"required_bytes":2038656},"arcade|fbneo":{"bytes":309895027,"files":[277,278,279],"optional":[277,278,279],"required_bytes":0},"arcade|mame2003_plus":{"bytes":86009009,"files":[392,393,394,395,396,397,398,399,400,401,402,403],"optional":[392,393,394,395,396,397,398,399,400,401,402,403],"required_bytes":0},"arduboy|arduous":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"atari-2600|stella2014":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"atari-400-800|atari800":{"bytes":229376,"files":[14,15,16,17,18,176,177,178,179,197,211,212,213,214,215,216,217,218],"optional":[18,176,177,178,179,197,211,212,213,214,215,216,217,218],"required_bytes":45056},"atari-5200|a5200":{"bytes":2048,"files":[10],"optional":[],"required_bytes":2048},"atari-7800|prosystem":{"bytes":20480,"files":[12,13],"optional":[12],"required_bytes":4096},"atari-jaguar|virtualjaguar":{"bytes":786432,"files":[198,199,344,345],"optional":[198,199,344,345],"required_bytes":0},"atari-lynx|handy":{"bytes":1025,"files":[342,390],"optional":[342],"required_bytes":512},"atari-st|hatari":{"bytes":933888,"files":[341,506],"optional":[341],"required_bytes":196608},"blood|raze":{"bytes":16386979,"files":[20,36,190,192,194],"optional":[20,36,190,192,194],"required_bytes":0},"capcom-cps1|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"capcom-cps2|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"capcom-cps3|fbalpha2012":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"casio-pv1000|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"chip8|jaxe":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"colecovision|bluemsx":{"bytes":2474134,"files":[19,29,30,31,32,33,34,56,57,58,59,60,61,248],"optional":[30,31,32,33,34],"required_bytes":222539},"commodore-amiga-cd32|puae2021":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"commodore-amiga|puae2021":{"bytes":18823838,"files":[22,23,44,45,46,47,48,49,50,51,52,53,196,237,238,355,356,357,358,359,360,361,362,363,364,365,366,367,469,511,512,513,514,515,516,517,518,519,520],"optional":[196,237,238,355,356,360,361,362,469,511,512,513,514,515,516,517,518,519,520],"required_bytes":8912896},"commodore-c128|vice_x128":{"bytes":106496,"files":[38,39,40,41,42],"optional":[38,39,40,41,42],"required_bytes":0},"commodore-c64|vice_x64":{"bytes":114688,"files":[38,39,40,42,43,347,348],"optional":[38,39,40,42,43,347,348],"required_bytes":0},"commodore-plus4|vice_xplus4":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"commodore-vic20|vice_xvic":{"bytes":12288,"files":[239,349],"optional":[239,349],"required_bytes":0},"doom|gzdoom":{"bytes":613275828,"files":[206,257,262,263,264,283,284,285,338,339,340,453,470,494,505],"optional":[206,257,262,263,264,283,284,285,338,339,340,453,470,494,505],"required_bytes":0},"dos|dosbox_pure":{"bytes":41236388,"files":[24,25,26,27,54,55,180,181,182,183,184,185,186,187,188,189],"optional":[24,25,26,27,54,55,180,181,182,183,184,185,186,187,188,189],"required_bytes":0},"duke3d|raze":{"bytes":24114107,"files":[28,172,452],"optional":[28,172,452],"required_bytes":0},"enterprise-64-128|ep128emu_core":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"entex-advision|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"exhumed|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"fairchild-channelf|freechaf":{"bytes":3072,"files":[491,492,493],"optional":[491,492,493],"required_bytes":0},"famicom|nestopia":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gamate|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gameking|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"gamepock|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"handheld-electronic|gw":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"hartung-game-master|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"intellivision|freeintv":{"bytes":36864,"files":[35,37,276,336],"optional":[],"required_bytes":36864},"j2me|freej2me_plus":{"bytes":1219093,"files":[286],"optional":[],"required_bytes":1219093},"lowresnx|lowresnx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"mega-duck|sameduck":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"msx2|bluemsx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"msx|bluemsx":{"bytes":8543963,"files":[30,31,32,33,34,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],"optional":[30,31,32,33,34,150],"required_bytes":6259600},"nam|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nec-pc-88|quasi88":{"bytes":892928,"files":[455,456,457,458,459,460,461,462,463,464,465,466,467],"optional":[462,463,464,465,466,467],"required_bytes":100352},"nec-pc-engine-cd|mednafen_pce_fast":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nec-pc-engine|mednafen_pce_fast":{"bytes":1343488,"files":[331,496,497,498,499,500],"optional":[498,500],"required_bytes":819200},"nec-pcfx|beetle_pcfx":{"bytes":1048576,"files":[451],"optional":[],"required_bytes":1048576},"nec-supergrafx|mednafen_supergrafx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"neogeo|fbneo":{"bytes":2802862,"files":[799,800],"optional":[],"required_bytes":2802862},"nintendo-64|":{"bytes":8454540,"files":[11,170,171],"optional":[],"required_bytes":8454540},"nintendo-ds|drastic":{"bytes":565248,"files":[226,227,282,501,502,503],"optional":[501,502,503],"required_bytes":282624},"nintendo-fds|nestopia":{"bytes":1030561,"files":[173,258],"optional":[],"required_bytes":1030561},"nintendo-gba|mgba":{"bytes":19200,"files":[328,329,330,488],"optional":[],"required_bytes":19200},"nintendo-gbc|gambatte":{"bytes":2560,"files":[328,330],"optional":[],"required_bytes":2560},"nintendo-gb|gambatte":{"bytes":2560,"files":[328,330],"optional":[],"required_bytes":2560},"nintendo-nes|nestopia":{"bytes":192,"files":[250],"optional":[250],"required_bytes":0},"nintendo-pokemon-mini|pokemini":{"bytes":4096,"files":[224],"optional":[224],"required_bytes":0},"nintendo-satellaview|snes9x":{"bytes":1048576,"files":[21],"optional":[],"required_bytes":1048576},"nintendo-snes|snes9x":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"nintendo-sufami-turbo|snes9x":{"bytes":262144,"files":[191],"optional":[],"required_bytes":262144},"nintendo-virtualboy|beetle_vb":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"odyssey2|o2em":{"bytes":1606321,"files":[236,324,346,439,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792],"optional":[],"required_bytes":1606321},"olivetti-pc128|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"openbor|openbor":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"panasonic-3do|opera":{"bytes":13123332,"files":[9,334,440,441,442,443,444,445,446,447,448,449,450,476],"optional":[440,441,443,445,446,447,448,449,450],"required_bytes":4718592},"pc-98|np2kai":{"bytes":1294790,"files":[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438],"optional":[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438],"required_bytes":0},"philips-cdi|same_cdi":{"bytes":1857124,"files":[472,473,474,475],"optional":[472,473,475],"required_bytes":745703},"philips-videopac|o2em":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"pico8|fake08":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"powerslave|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"redneck|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"rpgmaker|easyrpg":{"bytes":148398498,"files":[265,793],"optional":[265,793],"required_bytes":0},"scummvm|scummvm-standalone":{"bytes":1703936,"files":[25,26,54,55],"optional":[25,26,54,55],"required_bytes":0},"scv|emuscv":{"bytes":4096,"files":[521],"optional":[],"required_bytes":4096},"sega-32x|picodrive":{"bytes":3328,"files":[6,7,8],"optional":[6,7,8],"required_bytes":0},"sega-dreamcast-arcade|flycast2021":{"bytes":8266557,"files":[251,255,256],"optional":[],"required_bytes":8266557},"sega-dreamcast-arcade|flycast2021le":{"bytes":8266557,"files":[251,255,256],"optional":[],"required_bytes":8266557},"sega-dreamcast|flycast2021":{"bytes":2748208,"files":[252,253,254],"optional":[254],"required_bytes":2228224},"sega-dreamcast|flycast2021le":{"bytes":2748208,"files":[252,253,254],"optional":[254],"required_bytes":2228224},"sega-gamegear|gearsystem":{"bytes":1024,"files":[223],"optional":[],"required_bytes":1024},"sega-genesis|genesis_plus_gx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"sega-mastersystem|gearsystem":{"bytes":32768,"files":[225,231,232,234],"optional":[225],"required_bytes":24576},"sega-megacd|genesis_plus_gx":{"bytes":393216,"files":[228,229,230],"optional":[],"required_bytes":393216},"sega-megadrive|genesis_plus_gx":{"bytes":2426880,"files":[208,233,332,489,490],"optional":[208,233,332,489,490],"required_bytes":0},"sega-saturn|yabasanshiro":{"bytes":8722798,"files":[404,405,406,477,487,495],"optional":[],"required_bytes":8722798},"sega-sc3000|bluemsx":{"bytes":2251595,"files":[30,31,32,33,34],"optional":[30,31,32,33,34],"required_bytes":0},"sega-sg1000|gearsystem":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"shadow-warrior|raze":{"bytes":26056769,"files":[193],"optional":[193],"required_bytes":0},"sharp-x1|x1":{"bytes":318464,"files":[794,795,796,797,798],"optional":[794,795,796],"required_bytes":6144},"sharp-x68000|px68k":{"bytes":1310720,"files":[350,351,352,353,354],"optional":[],"required_bytes":1310720},"sinclair-zx-spectrum|fuse":{"bytes":645120,"files":[0,1,2,3,4,5,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,333,510],"optional":[],"required_bytes":645120},"sinclair-zx81|81":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"snk-neogeo-cd|neocd":{"bytes":8442300,"files":[407,408,409,410,411,412,413,414,415,416,417,418,800],"optional":[407,408,409,410,411,412,413,416,417],"required_bytes":3723708},"snk-ngpc|beetle_ngp":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"snk-ngp|beetle_ngp":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"solarus|solarus":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"sony-playstation|pcsx_rearmed":{"bytes":3670016,"files":[454,478,479,480,481,482,483],"optional":[454,478,479,483],"required_bytes":1572864},"sony-psp|ppsspp":{"bytes":1785762,"files":[174,175],"optional":[174,175],"required_bytes":0},"thomson-mo5|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-mo6|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to770|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to7|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to8d|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to8|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to9plus|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"thomson-to9|theodore":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"tic80|tic80":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"uzebox|uzem":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"vectrex|vecx":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"videoton-tvc|ep128emu_core":{"bytes":49152,"files":[266,267,268,269],"optional":[266,267,268,269],"required_bytes":0},"vircon32|vircon32":{"bytes":1073060,"files":[195],"optional":[195],"required_bytes":0},"vtech-vsmile|":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"watara-supervision|potator":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wolfenstein3d|ecwolf":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wonderswan-color|beetle_wswan":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"wonderswan|beetle_wswan":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"ww2gi|raze":{"bytes":0,"files":[],"optional":[],"required_bytes":0},"zmachine|mojozork":{"bytes":0,"files":[],"optional":[],"required_bytes":0}}} diff --git a/install/games/index.json b/install/games/index.json index fd0d7a7fb..d067af923 100644 --- a/install/games/index.json +++ b/install/games/index.json @@ -1 +1 @@ -{"arcade":{"fbneo":{"file":"arcade/fbneo.json","gzip_size":115955,"sha256":"88961c9a6be804772baa767f6ee3a9162478c30c60fe55c8363d8fe4fbc909da","size":423362},"flycast":{"file":"arcade/flycast.json","gzip_size":1841,"sha256":"957189a6e993fda08e21c90ffc6ad94aed9ca9e6dd9ed8c7724e29db036791cb","size":5441},"mame":{"file":"arcade/mame.json","gzip_size":154527,"sha256":"b12010301293a218ecfac45706d81a26c3ac0c27eebeca7409bc8f6ce0163e9e","size":604648},"mame0258":{"file":"arcade/mame0258.json","gzip_size":141151,"sha256":"7ecff1979ed2ac123ea3ba4825dde6e2c31906415165fabefc9af93fa48a6de4","size":556059},"mame0278":{"file":"arcade/mame0278.json","gzip_size":148595,"sha256":"7881e3516f451ec83e886aaf41ebac9d60f497e1f954f49749d52890d7955cbf","size":582797},"mame2000":{"file":"arcade/mame2000.json","gzip_size":8624,"sha256":"f0d69b0872ecfc2845eeb7304543e5b17c11db82060b5514c206b6962ed08263","size":23316},"mame2003":{"file":"arcade/mame2003.json","gzip_size":17456,"sha256":"3b44e2a92c80a8f104b7781fcc1c776d025ad2cf4986638efa3ea041baa9a56d","size":48929},"mame2003_plus":{"file":"arcade/mame2003_plus.json","gzip_size":21077,"sha256":"2857283556fa49c20d8160ed113465bf0c2e643ed0b8acd2d38266a78be8e25e","size":62373},"mame2010":{"file":"arcade/mame2010.json","gzip_size":30869,"sha256":"50b1b381b4b07463f69f1f4c512dd1c98a78d4d0e9c3aeaf49b7b1b007b42152","size":96528},"mame2015":{"file":"arcade/mame2015.json","gzip_size":86990,"sha256":"afeb8c32f651421f74c6de057b0c0b837acd14c533b5160bb31f4411e0afffec","size":360117},"mame2016":{"file":"arcade/mame2016.json","gzip_size":101249,"sha256":"1f75147977d9d082a38b8f8e47a02b301f3d6e6db97c9b9282f3e7f27f26ee47","size":406190}},"containers":{"7z":{"description":"Per-file CRCs and sizes sit in the header at the end of the archive, LZMA-compressed by default (kEncodedHeader). One LZMA decode of the header, independent of the archive size, gives them. Python's lzma is an optional module.","re_read":true,"signature":{"bytes_hex":"377abcaf271c","offset":0},"source_ref":"ip7z/7zip@b88c6bc0 DOC/7zFormat.txt:171-189, DOC/7zFormat.txt:318-334, CPP/7zip/Archive/7z/7zHandlerOut.cpp:859"},"cd-sector":{"description":"User data of a CD sector. In a 2048-byte image (.iso) sector N starts at N * 2048. In a raw 2352-byte image it starts at N * 2352 plus 16 for Mode 1 and plus 24 for Mode 2 Form 1 (12 sync bytes, a 4-byte header, and for Mode 2 an 8-byte subheader).","re_read":true,"sector_size":{"iso":2048,"raw":2352},"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:157-171, src/util/cd_image.h:28-34","user_data_offset":{"mode1":16,"mode2":24}},"chd-v5":{"description":"MAME compressed hunks, big-endian. The header holds sizes, codecs and hashes only, never the system or the region. The overall SHA-1 is what MAME software lists record. Neither SHA-1 equals a Redump track hash: chdman hashes 2448-byte frames (subcode included, zero-filled), pads each track to 4 frames and byte-swaps audio, all tracks in one stream.","fields":{"compressors":{"encoding":"fourcc4","length":16,"offset":16},"header_length":{"encoding":"u32be","length":4,"offset":8,"value":124},"hunk_bytes":{"encoding":"u32be","length":4,"offset":56},"logical_bytes":{"encoding":"u64be","length":8,"offset":32},"map_offset":{"encoding":"u64be","length":8,"offset":40},"metadata_offset":{"encoding":"u64be","length":8,"offset":48},"overall_sha1":{"encoding":"hex","length":20,"offset":84},"parent_sha1":{"encoding":"hex","length":20,"offset":104},"raw_sha1":{"encoding":"hex","length":20,"offset":64},"unit_bytes":{"encoding":"u32be","length":4,"offset":60},"version":{"encoding":"u32be","length":4,"offset":12,"value":5}},"magic":{"bytes":"MComprHD","offset":0},"media_tags":{"CHCD":"cd","CHGD":"gd-rom","CHGT":"gd-rom","CHT2":"cd","CHTR":"cd","DVD ":"dvd","GDDD":"hard-disk"},"metadata_entry":{"description":"16-byte entry header, payload follows. Linked list from metadata_offset.","flags":{"encoding":"u8","length":1,"offset":4},"length":{"encoding":"u24be","length":3,"offset":5},"next":{"encoding":"u64be","length":8,"offset":8},"tag":{"encoding":"ascii","length":4,"offset":0}},"re_read":true,"source_ref":"mamedev/mame@f34f0250 src/lib/util/chd.h:148-162, src/lib/util/chd.cpp:2021-2061, src/lib/util/chd.cpp:2822-2831, src/lib/util/chd.h:212-235, src/lib/util/chd.cpp:1709-1749, src/tools/chdman.cpp:443-445, src/tools/chdman.cpp:2195-2203, src/lib/util/cdrom.cpp:2669-2672, src/emu/romload.cpp:1211"},"gamecube-disc":{"description":"Where disc offset 0 sits inside each container Dolphin opens.","formats":{"ciso":{"disc_header_at":32768,"magic":"CISO"},"gcz":{"disc_header_at":null,"magic_u32le":2970337281,"note":"block 0 is zlib unless bit 63 of its pointer is set"},"iso":{"disc_header_at":0,"magic":null},"rvz":{"disc_header_at":88,"magic":"RVZ\u0001","note":"first 0x80 disc bytes copied into header 2"},"wbfs":{"disc_header_at":null,"magic":"WBFS","note":"disc offset 0 at wlba[0] << wbfs_sector_shift"},"wia":{"disc_header_at":88,"magic":"WIA\u0001","note":"first 0x80 disc bytes copied into header 2"}},"re_read":true,"source_ref":"dolphin-emu/dolphin@0d93fc03 Source/Core/DiscIO/WIABlob.h:80-119, Source/Core/DiscIO/WIABlob.cpp:320-330, Source/Core/DiscIO/CISOBlob.cpp:66-69, Source/Core/DiscIO/CompressedBlob.cpp:140-150, Source/Core/DiscIO/WbfsBlob.cpp:148-155"},"iso9660":{"description":"Primary volume descriptor in sector 16 ('CD001' at offset 1), root directory record at PVD offset 156 (34 bytes). A file is found by name in the root directory, with the ';1' version suffix.","pvd_sector":16,"re_read":true,"root_record_offset":156,"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:68-90, src/util/iso_reader.h:60-99"},"zip":{"description":"The central directory gives each member's CRC-32 (offset 16) and uncompressed size (offset 24) without inflating. Python's zipfile reads it on open (ZipInfo.CRC, ZipInfo.file_size).","re_read":true,"source_ref":"python/cpython@fa919fdf Lib/zipfile.py:99-115, Lib/zipfile.py:1293-1347"}},"data_version":"73dcd1decc0bab2e","fallback":{"amberelec":{"file":"fallback/amberelec.json","gzip_size":10507,"sha256":"ee5714e160a845b2d8e775d1ea16268841cbb713c9ff4b8f5db5681cfc5f1ed3","size":48421},"batocera":{"file":"fallback/batocera.json","gzip_size":42311,"sha256":"4ab4d63a9d94111b81629f7ba383f35eb5af274097ca7fe7a56ea8fadd8635ab","size":309418},"bizhawk":{"file":"fallback/bizhawk.json","gzip_size":1944,"sha256":"152b14f3aff69714698a58837d6331ebcbcd3aaaa5f62939b9c743e535a319f4","size":7320},"emudeck":{"file":"fallback/emudeck.json","gzip_size":26333,"sha256":"f30e59fb09bbd9f3737c4aa2c2164d75dadbd2b08be17821dbf521747ffd564b","size":110298},"emuelec":{"file":"fallback/emuelec.json","gzip_size":15046,"sha256":"e77c87df67e6536362f09257199b500e055046f91b3ced09c2baf569a7d8785c","size":69084},"knulli":{"file":"fallback/knulli.json","gzip_size":39818,"sha256":"47a7153000636a41e1c9fd2a75c06df5ff5b66234eed63160cb227561158c1be","size":267590},"minui":{"file":"fallback/minui.json","gzip_size":701,"sha256":"d68b30917db60263e57331271ebc33d00520dcbc15cdcaba8ccaf2901be2c870","size":2761},"misterfpga":{"file":"fallback/misterfpga.json","gzip_size":1898,"sha256":"b8f457378063d2f9b4010c2fefc21561df71e2e2d06f4ad1a7d945f4ad0a6f55","size":9569},"myminui":{"file":"fallback/myminui.json","gzip_size":1887,"sha256":"029242a5d03083b697c3c801f5a7f86687d62432fa925e0ec1c4759c3e3c20a5","size":7993},"nextui":{"file":"fallback/nextui.json","gzip_size":3088,"sha256":"3c28a4e3d67d5e5b653303419423c4326845b7e8b047c5f4ee1fdf44da0f5faf","size":15502},"recalbox":{"file":"fallback/recalbox.json","gzip_size":13869,"sha256":"6854fff04b6e4d619f92e76b0427f45fd0bd06c1d88f9037b603c0a0dc9c9efc","size":62692},"retroarch":{"file":"fallback/retroarch.json","gzip_size":45040,"sha256":"cf8e25bad8e91d3de2c201fd13af6d21bf5ab124c2fadddf103c88f6e13f6b7e","size":217832},"retrobat":{"file":"fallback/retrobat.json","gzip_size":32950,"sha256":"59aae7e5e1c53931a456cfe4cf580e3c0dd3bf8bd77455baa7732670404a4786","size":139887},"retrodeck":{"file":"fallback/retrodeck.json","gzip_size":46077,"sha256":"3b453967dd8eafac0dd578e3036a2fdcfcaf064ded08e8a571c96956b2499b03","size":236917},"retropie":{"file":"fallback/retropie.json","gzip_size":37196,"sha256":"20a85de251a7e43246bbf55d6902bdcd3989b4969d1f61b771b9f4a51824463e","size":153232},"rocknix":{"file":"fallback/rocknix.json","gzip_size":9274,"sha256":"83a59961c7e5869fda2444f96870591dcf576f764d58f7bc5fe5e329e68a15b1","size":38952},"romm":{"file":"fallback/romm.json","gzip_size":6111,"sha256":"e4009ba31a3a5e08d7cf0c6cfcdfaa0e704faa19460d8e1c0fc169b745a4a15e","size":27444}},"folders":{"240ptestsuite":["nintendo-fds","nintendo-nes"],"2600":["atari-2600"],"2ship":["2ship"],"32x":["sega-32x"],"3d0":["panasonic-3do"],"3do":["panasonic-3do"],"3ds":["nintendo-3ds"],"5200":["atari-5200"],"64":["nintendo-64"],"64dd":["nintendo-64","nintendo-64dd"],"7800":["atari-7800"],"800":["atari-400-800"],"a2600":["atari-2600"],"a5200":["atari-5200"],"a7800":["atari-7800"],"a800":["atari-400-800"],"acclaim-zn1":["acclaim-zn1"],"acorn-archimedes":["acorn-archimedes"],"acorn-bbc-micro":["acorn-bbc-micro"],"acpc":["amstrad-cpc"],"actionmax":["arcade-laserdisc"],"adam":["coleco-adam"],"advision":["entex-advision"],"advmame":["arcade"],"agb":["nintendo-gba"],"ags":["ags"],"amiga":["commodore-amiga"],"amiga (puae)":["commodore-amiga","commodore-amiga-cd32","commodore-cdtv"],"amiga-cd32":["commodore-amiga-cd32"],"amiga1200":["commodore-amiga"],"amiga4000":["commodore-amiga"],"amiga500":["commodore-amiga"],"amiga600":["commodore-amiga"],"amigacd32":["commodore-amiga","commodore-amiga-cd32"],"amigacdtv":["commodore-amiga"],"amstrad":["amstrad-cpc"],"amstrad cpc (cpc)":["amstrad-cpc"],"amstrad-cpc":["amstrad-cpc"],"amstradcpc":["amstrad-cpc"],"amstradgx4000":["amstrad-cpc"],"apf-m1000":["apf-m1000"],"apfm1000":["apf-m1000"],"apple":["apple2"],"apple ii":["apple-ii"],"apple-ii":["apple-ii"],"apple-iigs":["apple-iigs"],"apple-ios":["apple-ios"],"apple-macintosh":["apple-macintosh"],"apple-macintosh-ii":["apple-macintosh-ii"],"apple2":["apple2"],"apple2gs":["apple-iigs"],"applemacintosh":["apple-macintosh"],"aquaplus-piece":["aquaplus-piece"],"aquarius":["mattel-aquarius"],"arcade":["arcade","capcom-cps1","capcom-cps2","capcom-cps3"],"arcade (mame)":["arcade"],"arcade-laserdisc":["arcade-laserdisc"],"arcadeatomiswave":["sammy-atomiswave"],"arcadehbmame":["arcade"],"arcadenaomi":["sammy-atomiswave"],"arcadeneogeo":["neogeo"],"arcadeneogeocd":["snk-neogeo-cd"],"arcadesegaatomiswave":["sammy-atomiswave"],"arcadeseganaomi":["sammy-atomiswave"],"arcadesnk":["neogeo"],"arcadesnkneogeo":["neogeo"],"arcadevertical":["arcade"],"arcadia":["emerson-arcadia-2001"],"arcatomiswave":["sammy-atomiswave"],"archimedes":["acorn-archimedes"],"arcnaomi":["sammy-atomiswave"],"arcneogeo":["neogeo"],"arcneogeocd":["snk-neogeo-cd"],"arcsegaatomiswave":["sammy-atomiswave"],"arcseganaomi":["sammy-atomiswave"],"arduboy":["arduboy"],"ast":["atari-st"],"aste":["atari-st"],"astrocade":["bally-astrocade"],"astrocde":["bally-astrocade"],"atari":["atari-2600"],"atari 2600 (a2600)":["atari-2600"],"atari 5200 (a5200)":["atari-5200"],"atari 7800":["atari-7800"],"atari 7800 (a7800)":["atari-7800"],"atari jaguar":["atari-jaguar"],"atari lynx (lynx)":["atari-lynx"],"atari st":["atari-st"],"atari-2600":["atari-2600"],"atari-2600-plus":["atari-2600"],"atari-400-800":["atari-400-800"],"atari-5200":["atari-5200"],"atari-7800":["atari-7800"],"atari-jaguar":["atari-jaguar"],"atari-jaguarcd":["atari-jaguarcd"],"atari-lynx":["atari-lynx"],"atari-lynx-mkii":["atari-lynx"],"atari-st":["atari-st"],"atari-zn1":["atari-zn1"],"atari2600":["atari-2600"],"atari5200":["atari-5200"],"atari5200 (a5200)":["atari-5200"],"atari7800":["atari-7800"],"atari7800 (a7800)":["atari-7800"],"atari800":["atari-400-800"],"atari8bit":["atari-400-800"],"atarifalcon":["atari-st"],"atarijaguar":["atari-jaguar"],"atarijaguarcd":["atari-jaguar","atari-jaguarcd"],"atarilynx":["atari-lynx"],"atarist":["atari-st"],"atariste":["atari-st"],"ataritt":["atari-st"],"atarixe":["atari-400-800"],"atarixegs":["xegs"],"atlus-zn1":["atlus-zn1"],"atom":["atom"],"atomiswave":["sammy-atomiswave","sega-dreamcast-arcade"],"aw":["sammy-atomiswave"],"bally-astrocade":["bally-astrocade"],"bandai-rx78":["bandai-rx78"],"bandai-wswan":["bandai-wswan"],"bandai-wswanc":["bandai-wswanc"],"bandaiwonderswan":["wonderswan"],"bandaiwonderswancolor":["wonderswan"],"bbc":["acorn-bbc-micro"],"bbcmicro":["acorn-bbc-micro"],"bbk":["bbk-longman-4980","bbk-longman-4988"],"bbk-longman-4980":["bbk-longman-4980"],"bbk-longman-4988":["bbk-longman-4988"],"beena":["sega-beena"],"bennugd":["bennugd"],"bermuda-syndrome":["bermuda-syndrome"],"bgb":["game-boy-color"],"bk":["elektronika-bk"],"blake-stone":["blake-stone"],"blood":["blood"],"bshift":["bshift"],"bstone":["blake-stone"],"bsx":["nintendo-satellaview"],"bsyndrome":["bermuda-syndrome"],"build":["blood","duke3d","exhumed","nam","powerslave","redneck","shadow-warrior","ww2gi"],"bws":["wonderswan"],"bwsc":["wonderswan"],"c-plus-4":["commodore-plus4"],"c128":["commodore-c128"],"c16":["commodore-plus4"],"c20":["commodore-vic20"],"c64":["commodore-c64"],"caesar3":["caesar3"],"camplynx":["camplynx"],"cannonball":["sega-outrun"],"capcom-cps1":["capcom-cps1"],"capcom-cps2":["capcom-cps2"],"capcom-cps3":["capcom-cps3"],"capcom-zn1":["capcom-zn1"],"capcom-zn2":["capcom-zn2"],"capcomcps1":["capcom-cps1"],"capcomcps2":["capcom-cps2"],"capcomcps3":["capcom-cps3"],"casio-loopy":["casio-loopy"],"casio-pv1000":["casio-pv1000"],"casio-pv2000":["casio-pv2000"],"casio_pv-1000":["casio-pv1000"],"casio_pv-2000":["casio-pv2000"],"casioloopy":["casio-loopy"],"cassettevision":["epochcv"],"catacomb":["catacomb-3d","catacomb-adventure"],"catacomb-3d":["catacomb-3d"],"catacomb-adventure":["catacomb-adventure"],"cave-story":["cave-story"],"cavestory":["cave-story"],"cbm-ii":["commodore-cbm-ii"],"cbmii":["commodore-cbm-ii"],"cd-i":["philips-cdi"],"cdi":["philips-cdi"],"cdimono1":["philips-cdi"],"cdtv":["commodore-amiga","commodore-cdtv"],"cgb":["nintendo-gbc"],"cgenie":["cgenie"],"cgenius":["commander-keen"],"channel f":["fairchild-channelf"],"channelf":["fairchild-channelf"],"chex":["chex"],"chf":["fairchild-channelf"],"chihiro":["sega-chihiro"],"chip-8":["chip8"],"chip8":["chip8"],"chipeight":["chip8"],"coco":["coco"],"coco3":["coco","coco3"],"coleco":["colecovision"],"coleco vision":["colecovision"],"coleco-adam":["coleco-adam"],"colecovision":["colecovision"],"colecovision (coleco)":["colecovision"],"commander-keen":["commander-keen"],"commanderx16":["commanderx16"],"commmodore-128":["commodore-c128"],"commodore":["commodore-c64"],"commodore 128 (c128)":["commodore-c128"],"commodore 64 (c64)":["commodore-c64"],"commodore pet (pet)":["commodore-pet"],"commodore plus4 (plus4)":["commodore-plus4"],"commodore vic20 (vic)":["commodore-vic20"],"commodore-64c":["commodore-c64"],"commodore-amiga":["commodore-amiga"],"commodore-amiga-cd32":["commodore-amiga-cd32"],"commodore-c128":["commodore-c128"],"commodore-c64":["commodore-c64"],"commodore-cbm-ii":["commodore-cbm-ii"],"commodore-cdtv":["commodore-cdtv"],"commodore-pet":["commodore-pet"],"commodore-plus4":["commodore-plus4"],"commodore-vic20":["commodore-vic20"],"commodore128":["commodore-c128"],"commodore64":["commodore-c64"],"commodoreamiga":["commodore-amiga"],"commodorec128":["commodore-c128"],"commodorec64":["commodore-c64"],"commodorecbmii":["commodore-cbm-ii"],"commodorepet":["commodore-pet"],"commodoreplus4":["commodore-plus4"],"commodorevic20":["commodore-vic20"],"corsixth":["theme-hospital"],"cougarboy":["mega-duck"],"cpc":["amstrad-cpc"],"cpet":["commodore-pet"],"cplus4":["commodore-plus4"],"cps":["arcade"],"cps1":["arcade","capcom-cps1"],"cps2":["arcade","capcom-cps2"],"cps3":["arcade","capcom-cps3"],"creativision":["crvision"],"crvision":["crvision"],"cstrike":["cstrike"],"cv":["colecovision"],"czero":["czero"],"czeror":["czeror"],"daphne":["arcade-laserdisc"],"dark-forces":["dark-forces"],"dark-forces-ii":["dark-forces-ii"],"dc":["sega-dreamcast"],"descent":["descent"],"descent2":["descent2"],"devilutionx":["diablo"],"diablo":["diablo"],"dice":["discrete-arcade"],"dinothawr":["dinothawr"],"discrete-arcade":["discrete-arcade"],"disksystem":["nintendo-fds"],"dmc":["dmc"],"dmg":["game-boy","nintendo-gb"],"doom":["doom"],"doom (doom)":["doom"],"doom (prboom)":["doom","heretic"],"doom3":["doom3"],"dos":["dos"],"dosbox":["dos"],"dragon":["coco","dragon64"],"dragon32":["coco","dragon32"],"dragon64":["coco","dragon64"],"dreamcast":["sega-dreamcast"],"dreamm":["dos","fmtowns","ibm-pc","tandy-1000"],"droidworks":["droidworks"],"ds":["nintendo-ds"],"dsi":["nintendo-ds","nintendo-dsi"],"duke3d":["duke3d"],"dusklight":["dusklight"],"dxx-rebirth":["descent","descent2"],"easyrpg":["rpgmaker"],"ecwolf":["wolfenstein3d"],"eduke32":["duke3d"],"eighthundred":["atari-400-800"],"eighting-zn1":["eighting-zn1"],"electron":["electron"],"elektor-tv-games-computer":["elektor-tv-games-computer"],"elektronika":["elektronika-bk"],"elektronika-bk":["elektronika-bk"],"elektronikabk":["elektronika-bk"],"emerson-arcadia-2001":["emerson-arcadia-2001"],"enemyterritory":["enemyterritory"],"enterprise":["enterprise-128","enterprise-64-128"],"enterprise-128":["enterprise-128"],"enterprise-64-128":["enterprise-64-128"],"enterprise128":["enterprise-128"],"entex-advision":["entex-advision"],"ep128":["enterprise-128"],"ep64-128":["enterprise-64-128"],"epochcv":["epochcv"],"epochsupercassettevision":["scv"],"epsxe":["sony-playstation"],"etlegacy":["enemyterritory"],"exelvision-exl100":["exelvision-exl100"],"exhumed":["exhumed"],"exl100":["exelvision-exl100"],"fairchild":["fairchild-channelf"],"fairchild-channel-f":["fairchild-channelf"],"fairchild-channelf":["fairchild-channelf"],"fairchildchannelf":["fairchild-channelf"],"fake08":["pico8"],"falcon":["atari-st"],"fallout":["fallout"],"fallout1-ce":["fallout"],"fallout2":["fallout2"],"fallout2-ce":["fallout2"],"famicom":["famicom","nintendo-nes"],"famicom disk system (fds)":["nintendo-fds"],"famicom-disk-system":["famicom-disk-system"],"famicomdisk":["nintendo-fds"],"famicomdisksystem":["famicom-disk-system"],"famicomds":["famicom-disk-system"],"fat plumber shit":["nintendo-nes"],"fba":["arcade"],"fbneo":["arcade"],"fbnneogeo":["neogeo"],"fc":["famicom","nintendo-fds","nintendo-nes"],"fcds":["famicom-disk-system"],"fcnes":["famicom"],"fds":["famicom-disk-system","nintendo-fds"],"fiftytwohundred":["atari-5200"],"finalburnneo":["arcade"],"flash":["flash"],"flashback":["flashback"],"flycast":["sega-dreamcast"],"fm-7":["fm7"],"fm7":["fm7"],"fmtowns":["fmtowns"],"fmtownsux":["fmtowns"],"fpinball":["fpinball"],"freej2me":["j2me"],"fury":["fury"],"galaksija":["galaksija"],"galretro":["galaksija"],"gamate":["gamate"],"game boy (gb)":["nintendo-gb"],"game boy advance (gba)":["nintendo-gba"],"game boy advance (mgba)":["nintendo-gba"],"game boy color (gbc)":["nintendo-gbc"],"game gear":["sega-gamegear"],"game-boy":["game-boy"],"game-boy-adavance-sp":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"game-boy-advance":["game-boy-advance"],"game-boy-color":["game-boy-color"],"game-boy-light":["nintendo-gb","nintendo-gbc"],"game-boy-micro":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"game-boy-pocket":["nintendo-gb","nintendo-gbc"],"game-televisison":["nintendo-fds","nintendo-nes"],"gameandwatch":["handheld-electronic"],"gameboy":["game-boy","nintendo-gb"],"gameboyadvance":["game-boy-advance","nintendo-gba"],"gameboycolor":["game-boy-color","nintendo-gbc"],"gamecom":["tiger-game-com"],"gamecube":["nintendo-gamecube"],"gamegear":["sega-gamegear"],"gamegearh":["sega-gamegear"],"gamegearhacks":["sega-gamegear"],"gameking":["gameking"],"gamemaster":["hartung-game-master"],"gamenwatch":["handheld-electronic"],"gamepark-gp32":["gamepark-gp32"],"gamepock":["gamepock"],"gamepocketcomputer":["gamepock"],"gametank":["gametank"],"gb":["game-boy","nintendo-gb","nintendo-gbc"],"gb2players":["nintendo-gb"],"gba":["game-boy-advance","nintendo-gba"],"gba2players":["nintendo-gba"],"gbadvance":["game-boy-advance"],"gbah":["nintendo-gba"],"gbahacks":["game-boy-advance"],"gbav":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"gbc":["game-boy-color","nintendo-gb","nintendo-gbc"],"gbc2players":["nintendo-gbc"],"gbch":["nintendo-gbc"],"gbchacks":["game-boy-color"],"gbcolor":["game-boy-color"],"gbdmg":["game-boy"],"gbh":["nintendo-gb"],"gbhacks":["game-boy"],"gbsp":["game-boy-advance"],"gc":["nintendo-gamecube"],"gce":["vectrex"],"gcevectrex":["vectrex"],"gearbox":["gearbox"],"gen":["sega-megadrive"],"gen32x":["sega-32x"],"gencd":["sega-megacd"],"genesis":["sega-genesis","sega-megadrive"],"genesiscd":["sega-megacd"],"genesishacks":["sega-megadrive"],"genh":["sega-megadrive"],"genmd":["sega-megadrive"],"gens":["sega-megadrive"],"gensegacd":["sega-megacd"],"gg":["sega-gamegear"],"ggsms":["sega-mastersystem"],"ghostship":["ghostship"],"gmaster":["hartung-game-master"],"gp32":["gamepark-gp32"],"gt":["gametank"],"gw":["handheld-electronic"],"gx4000":["amstrad-cpc"],"gzdoom":["chex","doom","heretic","hexen","strife"],"half-life":["half-life"],"halflife":["half-life"],"handheld-electronic":["handheld-electronic"],"handheldelectronic":["handheld-electronic"],"harcade":["arcade"],"hartung-game-master":["hartung-game-master"],"hbmame":["arcade"],"heretic":["heretic"],"hexen":["hexen"],"hikaru":["sega-hikaru"],"horizontal":["arcade"],"horizontalarcade":["arcade"],"hyper-neogeo64":["hyper-neogeo64"],"ibm-pc":["ibm-pc"],"ibm-pcjr":["ibm-pcjr"],"idquake":["quake"],"idquake2":["quake2"],"igs-pgm":["igs-pgm"],"intelli":["intellivision"],"intellivision":["intellivision"],"interact":["interact"],"interton-vc4000":["interton-vc4000"],"intv":["intellivision"],"iortcw":["return-to-castle-wolfenstein"],"ios":["apple-ios"],"iphone":["apple-ios"],"ique-player":["nintendo-64","nintendo-64dd"],"itv":["intellivision"],"j2me":["j2me"],"jag":["atari-jaguar"],"jaguar":["atari-jaguar"],"jaguarcd":["atari-jaguarcd"],"java":["j2me"],"jazz-jackrabbit":["jazz-jackrabbit"],"jazz-jackrabbit-2":["jazz-jackrabbit-2"],"jazz2":["jazz-jackrabbit-2"],"jedi-academy":["jedi-academy"],"jediknight2":["jediknight2"],"jkdf2":["dark-forces-ii","droidworks","mysteries-of-the-sith"],"jknight":["jedi-academy","jediknight2"],"kega":["sega-megadrive"],"konami-gq":["konami-gq"],"konami-gv":["konami-gv"],"laser310":["laser310"],"laseractive":["laseractive"],"laserdisc":["arcade-laserdisc"],"libgametank":["gametank"],"lindbergh":["sega-lindbergh"],"loopy":["casio-loopy"],"lowresnx":["lowresnx"],"lucasart":["scummvm"],"lucasarts":["scummvm"],"lynx":["atari-lynx"],"mac":["apple-macintosh","apple-macintosh-ii"],"macintosh":["apple-macintosh"],"magnavox":["odyssey2"],"magnavoxodyssey":["odyssey2"],"magnavoxodyssey2":["odyssey2"],"magnavoxvideopac":["odyssey2"],"mame":["arcade"],"mame-advmame":["arcade"],"mame-libretro":["arcade"],"mame-mame4all":["arcade"],"mame2000":["arcade"],"mame2003":["arcade"],"mame2003plus":["arcade"],"mame2010":["arcade"],"mark3":["sega-mastersystem"],"marty":["marty"],"master-system-girl":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"master-system-super-compact":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"mastersystem":["sega-mastersystem"],"mastersystemhacks":["sega-mastersystem"],"mattel-aquarius":["mattel-aquarius"],"mattelintellivision":["intellivision"],"mc10":["mc10"],"md":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megadrive"],"md32x":["sega-32x"],"mdcd":["sega-megacd"],"mdgen":["sega-megadrive"],"mdmsu":["sega-megadrive"],"mdmsu1":["sega-megadrive"],"mdsegacd":["sega-megacd"],"mega-duck":["mega-duck"],"mega-pc":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"megacd":["sega-megacd"],"megacdjp":["sega-megacd"],"megachip8":["chip8"],"megadrive":["sega-genesis","sega-megadrive"],"megadrive-japan":["sega-megadrive"],"megadrive-msu":["sega-megacd"],"megadrivecd":["sega-megacd"],"megadriveh":["sega-megadrive"],"megadrivehacks":["sega-megadrive"],"megadrivejp":["sega-genesis","sega-megadrive"],"megadrivemsu":["sega-megadrive"],"megaduck":["mega-duck"],"mgba":["game-boy-advance","nintendo-gba"],"microsoft msx (msx)":["msx"],"microsoft-xbox":["microsoft-xbox"],"microsoft-xbox-360":["microsoft-xbox-360"],"microsoftdos":["dos"],"microsoftmsx":["msx"],"midp":["j2me"],"minivmac":["apple-macintosh"],"mkxp":["rpgmaker"],"mkxp-z":["rpgmaker"],"mobile":["j2me"],"model2":["sega-model2"],"model2/roms":["sega-model2"],"model3":["sega-model3"],"mohaa":["mohaa"],"moto":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"ms":["sega-mastersystem"],"msdos":["dos"],"msdos (dos)":["dos"],"msu":["nintendo-snes"],"msu-md":["sega-megacd"],"msu1":["nintendo-snes"],"msumd":["sega-megacd","sega-megadrive"],"msx":["msx"],"msx1":["msx","msx1"],"msx2":["msx","msx2"],"msx2+":["msx2+"],"msx2plus":["msx2plus"],"msxturbor":["msx","msxturbor"],"multivision":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"mysteries-of-the-sith":["mysteries-of-the-sith"],"myvision":["myvision"],"mz2000":["mz2000"],"mz2500":["mz2500"],"mz700":["mz700"],"mz800":["mz800"],"mz80k":["mz80k"],"n3ds":["nintendo-3ds"],"n64":["nintendo-64"],"n64dd":["nintendo-64","nintendo-64dd"],"n64hacks":["nintendo-64"],"nam":["nam"],"namco-system11":["namco-system11"],"namco-system246":["namco-system246"],"namco-system256":["namco-system256"],"namco-system357":["namco-system357"],"namco2x6":["namco-system246"],"naomi":["sammy-atomiswave","sega-dreamcast-arcade","sega-naomi"],"naomi2":["sega-naomi2"],"naomigd":["sega-dreamcast-arcade","sega-naomigd"],"native32":["sunplus-native32"],"nds":["nintendo-ds"],"ndsi":["nintendo-dsi"],"ndsiware":["nintendo-dsi"],"nec-pc-88":["nec-pc-88"],"nec-pc-engine":["nec-pc-engine"],"nec-pc-engine-cd":["nec-pc-engine-cd"],"nec-pcfx":["nec-pcfx"],"nec-supergrafx":["nec-supergrafx"],"necpc8000":["nec-pc-88","pc80"],"necpc98":["pc-98"],"necpce":["nec-pc-engine"],"necpcecd":["nec-pc-engine-cd"],"necpcengine":["nec-pc-engine"],"necpcenginecd":["nec-pc-engine-cd"],"necpcfx":["nec-pcfx"],"necsgfx":["nec-supergrafx"],"necsupergrafx":["nec-supergrafx"],"nectg16":["nec-pc-engine"],"nectgcd":["nec-pc-engine-cd"],"necturbografx":["nec-pc-engine"],"necturbografx16":["nec-pc-engine"],"necturbografxcd":["nec-pc-engine-cd"],"neo geo pocket (ngp)":["snk-ngp"],"neo geo pocket color (ngpc)":["snk-ngpc"],"neo-geo-cd":["snk-neogeo-cd"],"neo-geo-pocket":["snk-neogeo-pocket"],"neo-geo-pocket-color":["neo-geo-pocket-color"],"neocd":["snk-neogeo-cd"],"neocdz":["snk-neogeo-cd"],"neogeo":["neogeo"],"neogeo cd (ngcd)":["snk-neogeo-cd"],"neogeo-cd":["snk-neogeo-cd"],"neogeo64":["hyper-neogeo64"],"neogeoaes":["snk-neogeo-aes"],"neogeocd":["snk-neogeo-cd"],"neogeocdjp":["snk-neogeo-cd"],"neogeomvs":["snk-neogeo-mvs"],"neogeopocket":["snk-neogeo-pocket","snk-ngp"],"neogeopocketcolor":["snk-neogeo-pocket","snk-ngpc"],"nes":["famicom","nintendo-nes"],"nescd":["famicom"],"nesds":["famicom"],"nesfc":["famicom"],"nesh":["nintendo-nes"],"neshacks":["famicom"],"new-nintendo-3ds":["nintendo-3ds"],"new-style-nes":["nintendo-fds","nintendo-nes"],"new-style-super-nes-model-sns-101":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"ng":["neogeo"],"ngage":["ngage"],"ngb":["game-boy"],"ngba":["game-boy-advance"],"ngbc":["game-boy-color"],"ngc":["nintendo-gamecube","snk-ngp"],"ngcd":["snk-neogeo-cd"],"ngp":["snk-neogeo-pocket","snk-ngp","snk-ngpc"],"ngpc":["snk-neogeo-pocket","snk-ngp","snk-ngpc"],"ngpocket":["snk-neogeo-pocket"],"ngpocketcolor":["snk-neogeo-pocket"],"ngw":["handheld-electronic"],"ninds":["nintendo-ds"],"ninetyeight":["pc-98"],"ningba":["game-boy-advance"],"ningbc":["game-boy-color"],"ninnes":["famicom"],"ninsnes":["nintendo-satellaview"],"nintendo ds (nds)":["nintendo-ds"],"nintendo entertainment system (fc)":["nintendo-nes"],"nintendo-3ds":["nintendo-3ds"],"nintendo-64":["nintendo-64"],"nintendo-64dd":["nintendo-64dd"],"nintendo-ds":["nintendo-ds"],"nintendo-ds-lite":["nintendo-ds","nintendo-dsi"],"nintendo-dsi":["nintendo-dsi"],"nintendo-dsi-xl":["nintendo-ds","nintendo-dsi"],"nintendo-fds":["nintendo-fds"],"nintendo-gamecube":["nintendo-gamecube"],"nintendo-gb":["nintendo-gb"],"nintendo-gba":["nintendo-gba"],"nintendo-gbc":["nintendo-gbc"],"nintendo-nes":["nintendo-nes"],"nintendo-pokemon-mini":["nintendo-pokemon-mini"],"nintendo-satellaview":["nintendo-satellaview"],"nintendo-sgb":["nintendo-sgb"],"nintendo-snes":["nintendo-snes"],"nintendo-sufami-turbo":["nintendo-sufami-turbo"],"nintendo-switch":["nintendo-switch"],"nintendo-virtualboy":["nintendo-virtualboy"],"nintendo-wii":["nintendo-wii"],"nintendo-wiiu":["nintendo-wiiu"],"nintendo3ds":["nintendo-3ds"],"nintendo64":["nintendo-64"],"nintendods":["nintendo-ds"],"nintendodsi":["nintendo-ds","nintendo-dsi"],"nintendoentertainmentsystem":["famicom"],"nintendofamicom":["famicom"],"nintendofamicomdisksystem":["famicom-disk-system"],"nintendogameandwatch":["handheld-electronic"],"nintendogameboy":["game-boy"],"nintendogameboyadvance":["game-boy-advance"],"nintendogameboycolor":["game-boy-color"],"nintendogb":["game-boy"],"nintendogba":["game-boy-advance"],"nintendogbc":["game-boy-color"],"nintendogw":["handheld-electronic"],"nintendon64":["nintendo-64"],"nintendones":["famicom"],"nintendonintendo64":["nintendo-64"],"nintendonintendo64dd":["nintendo-64"],"nintendonintendodsi":["nintendo-ds"],"nintendonintendoentertainmentsystem":["famicom"],"nintendopokemini":["nintendo-pokemon-mini"],"nintendopokemonmini":["nintendo-pokemon-mini"],"nintendosfc":["nintendo-satellaview"],"nintendosnes":["nintendo-satellaview"],"nintendosnesmsu":["nintendo-satellaview"],"nintendosnesmsu1":["nintendo-satellaview"],"nintendosupernintendo":["nintendo-satellaview"],"nintendosupernintendoentertainmentsystem":["nintendo-satellaview"],"nintendovb":["nintendo-virtualboy"],"nintendovitrualboy":["nintendo-virtualboy"],"nomad":["sega-megadrive"],"nsnes":["nintendo-satellaview"],"nsv":["nintendo-satellaview"],"nvb":["nintendo-virtualboy"],"nxengine":["cave-story"],"o2":["philips-videopac"],"o2em":["odyssey2"],"odyssey":["odyssey2","philips-videopac"],"odyssey-2-slash-videopac-g7000":["odyssey2"],"odyssey2":["odyssey2"],"olivetti-pc128":["olivetti-pc128"],"onscripter":["onscripter"],"openbeatsofrage":["openbor"],"openbor":["openbor"],"opengoal":["opengoal"],"openjazz":["jazz-jackrabbit"],"openlara":["tomb-raider"],"oric":["oric"],"oricatmos":["oricatmos"],"originalgameboy":["game-boy"],"outlaws":["outlaws"],"outrun":["sega-outrun"],"p2000t":["philips-p2000t"],"p8":["pico8"],"palm":["palm-os"],"palm-os":["palm-os"],"palmos":["palm-os"],"panasonic":["panasonic-3do"],"panasonic-3do":["panasonic-3do"],"pbp":["sony-playstation"],"pbps":["sony-playstation"],"pc":["dos"],"pc engine":["nec-pc-engine"],"pc-8800":["nec-pc-88"],"pc-98":["pc-98"],"pc-9800":["pc-98"],"pc-9800-series":["pc-98"],"pc-fx":["nec-pcfx"],"pc60":["pc60"],"pc80":["pc80"],"pc8000":["nec-pc-88","pc80"],"pc88":["nec-pc-88"],"pc8801":["nec-pc-88"],"pc98":["pc-98"],"pce":["nec-pc-engine","nec-supergrafx"],"pcecd":["nec-pc-engine","nec-pc-engine-cd"],"pcengine":["nec-pc-engine"],"pcenginecd":["nec-pc-engine","nec-pc-engine-cd"],"pcfx":["nec-pcfx"],"pcninetyeight":["pc-98"],"pcsx":["sony-playstation"],"pcv2":["bandai-wswan","bandai-wswanc"],"pcw":["pcw"],"pdark":["pdark"],"pegasus":["pegasus"],"pet":["commodore-pet"],"pgm":["arcade","igs-pgm"],"philips-cd-i":["philips-cdi"],"philips-cdi":["philips-cdi"],"philips-p2000t":["philips-p2000t"],"philips-vg5k":["philips-vg5k"],"philips-videopac":["philips-videopac"],"philipscdi":["philips-cdi"],"pico":["pico8","sega-pico"],"pico-8":["pico8"],"pico-8 (p8)":["pico8"],"pico-8/carts":["pico8"],"pico8":["pico8"],"piece":["aquaplus-piece"],"pkm":["nintendo-pokemon-mini"],"playstation":["sony-playstation"],"playstationchds":["sony-playstation"],"playstationpbps":["sony-playstation"],"playstationportable":["sony-psp"],"plus4":["commodore-plus4"],"pocket-challenge-v2":["pocket-challenge-v2"],"pocketchallengev2":["pocket-challenge-v2"],"pocketstation":["sony-pocketstation"],"poke":["nintendo-pokemon-mini"],"pokemini":["nintendo-pokemon-mini"],"pokemon-mini":["nintendo-pokemon-mini"],"pokemonmini":["nintendo-pokemon-mini"],"pokémon mini (pkm)":["nintendo-pokemon-mini"],"ports":["wolfenstein3d"],"ports/caesar3":["caesar3"],"ports/cave story":["cave-story"],"ports/dinothawr":["dinothawr"],"ports/doom":["chex","doom","heretic","hexen","strife"],"ports/doom 3":["doom3"],"ports/ecwolf/games":["wolfenstein3d"],"ports/flashback":["flashback"],"ports/out run":["sega-outrun"],"ports/prince of persia":["prince-of-persia"],"ports/quake":["quake"],"ports/quake 2":["quake2"],"ports/quake 3":["quake3"],"ports/rick dangerous":["xrick"],"ports/star trek voyager":["quake3"],"ports/tamagotchi":["tamagotchi-p1"],"ports/theme hospital":["theme-hospital"],"ports/tomb raider":["tomb-raider"],"ports/vvvvvv":["vvvvvv"],"ports/wolfenstein 3d":["wolfenstein3d"],"powerslave":["powerslave"],"ppsspp":["sony-psp"],"prboom":["doom","heretic"],"primehack":["nintendo-gamecube","nintendo-wii"],"prince-of-persia":["prince-of-persia"],"ps":["sony-playstation"],"ps1":["sony-playstation"],"ps2":["sony-playstation-2"],"ps3":["sony-playstation-3"],"ps4":["ps4"],"ps4/shortcuts":["ps4"],"pschd":["sony-playstation"],"pschds":["sony-playstation"],"psiso":["sony-playstation"],"psisos":["sony-playstation"],"psone":["sony-playstation"],"psp":["sony-psp"],"pspbp":["sony-playstation"],"pspbps":["sony-playstation"],"pspminis":["sony-psp"],"psvita":["sony-playstation-vita"],"psx":["sony-playstation"],"psxchd":["sony-playstation"],"psxchds":["sony-playstation"],"psxiso":["sony-playstation"],"psxisos":["sony-playstation"],"psxpbp":["sony-playstation"],"psxpbps":["sony-playstation"],"puae":["commodore-amiga","commodore-amiga-cd32","commodore-cdtv"],"pv1000":["casio-pv1000"],"pv2000":["casio-pv2000"],"ql":["sinclair-ql"],"quake":["quake"],"quake (quake)":["quake"],"quake2":["quake2"],"quake3":["quake3"],"raze":["blood","duke3d","exhumed","nam","powerslave","redneck","shadow-warrior","ww2gi"],"redneck":["redneck"],"redream":["sega-dreamcast"],"reminiscence":["flashback"],"retcom":["galaksija"],"retro8":["pico8"],"return-to-castle-wolfenstein":["return-to-castle-wolfenstein"],"ricochet":["ricochet"],"rott":["rott"],"rpgmaker":["rpgmaker"],"rtcw":["return-to-castle-wolfenstein","rott"],"rx78":["bandai-rx78"],"s32x":["sega-32x"],"sam-coupe":["sam-coupe"],"samcoupe":["sam-coupe"],"sameduck":["mega-duck"],"sammy-atomiswave":["sammy-atomiswave"],"sat":["sega-saturn"],"satella":["nintendo-satellaview"],"satellaview":["nintendo-satellaview"],"satourne":["sega-saturn"],"saturn":["sega-saturn"],"saturnjp":["sega-saturn"],"sc-3000":["sega-sc3000"],"sc3000":["sega-sc3000"],"scd":["sega-megacd"],"scumm":["scummvm"],"scummvm":["scummvm"],"scummvm/shortcuts":["scummvm"],"scv":["scv"],"sdc":["sega-dreamcast"],"sdlpop":["prince-of-persia"],"sega 32x (32x)":["sega-32x"],"sega cd (segacd)":["sega-megacd"],"sega dreamcast":["sega-dreamcast"],"sega game gear (gg)":["sega-gamegear"],"sega genesis (md)":["sega-megadrive"],"sega master system (sms)":["sms"],"sega sg-1000 (sg1000)":["sega-sg1000"],"sega-32x":["sega-32x"],"sega-ai":["sega-ai"],"sega-beena":["sega-beena"],"sega-chihiro":["sega-chihiro"],"sega-dreamcast":["sega-dreamcast"],"sega-dreamcast-arcade":["sega-dreamcast-arcade"],"sega-game-box-9":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-gamegear":["sega-gamegear"],"sega-genesis":["sega-genesis"],"sega-hikaru":["sega-hikaru"],"sega-lindbergh":["sega-lindbergh"],"sega-mark-iii":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-master-system-ii":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-mastersystem":["sega-mastersystem"],"sega-mega-drive-2-slash-genesis":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-mega-jet":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-megacd":["sega-megacd"],"sega-megadrive":["sega-megadrive"],"sega-model2":["sega-model2"],"sega-model3":["sega-model3"],"sega-naomi":["sega-naomi"],"sega-naomi2":["sega-naomi2"],"sega-naomigd":["sega-naomigd"],"sega-nomad":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-outrun":["sega-outrun"],"sega-pico":["sega-pico"],"sega-saturn":["sega-saturn"],"sega-sc3000":["sega-sc3000"],"sega-sf7000":["sega-sf7000"],"sega-sg1000":["sega-sg1000"],"sega-stv":["sega-stv"],"sega-systemsp":["sega-systemsp"],"sega-triforce":["sega-triforce"],"sega-vmu":["sega-vmu"],"sega32":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"sega32x":["sega-32x"],"sega32xjp":["sega-32x"],"sega32xna":["sega-32x"],"segaai":["sega-ai"],"segaatomiswave":["sammy-atomiswave"],"segacd":["sega-megacd"],"segadc":["sega-dreamcast"],"segadreamcast":["sega-dreamcast"],"segagamegear":["sega-gamegear"],"segagenesis":["sega-megadrive"],"segagenesismsu":["sega-megadrive"],"segagg":["sega-gamegear"],"segamastersystem":["sega-mastersystem"],"segamcd":["sega-megacd"],"segamdmsu":["sega-megadrive"],"segamegacd":["sega-megacd"],"segamegadrive":["sega-megadrive"],"segamodel3":["sega-model3"],"segams":["sega-mastersystem"],"seganaomi":["sammy-atomiswave"],"segapico":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"segasat":["sega-saturn"],"segasaturn":["sega-saturn"],"segascd":["sega-megacd"],"segasegacd":["sega-megacd"],"segasg1000":["sega-sg1000"],"segasgone":["sega-sg1000"],"segasms":["sega-mastersystem"],"segastv":["sega-stv"],"seggg":["sega-gamegear"],"segms":["sega-mastersystem"],"seventyeighthundred":["atari-7800"],"sfam":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"sfc":["nintendo-satellaview","nintendo-snes"],"sg-1000":["sega-sg1000"],"sg1000":["sega-sg1000"],"sg1k":["sega-sg1000"],"sgb":["nintendo-gb","nintendo-sgb"],"sgb-msu1":["nintendo-sgb"],"sgfx":["nec-pc-engine","nec-supergrafx"],"sgg":["sega-gamegear"],"sgonethousand":["sega-sg1000"],"sgx":["nec-pc-engine","nec-supergrafx"],"sgxcd":["nec-pc-engine"],"shadow-warrior":["shadow-warrior"],"sharp-x1":["sharp-x1"],"sharp-x68000":["sharp-x68000"],"sharpx1":["sharp-x1"],"sharpx6800":["sharp-x68000"],"sharpx68000":["sharp-x68000"],"sharpx68k":["sharp-x68000"],"sinclair-ql":["sinclair-ql"],"sinclair-spectrum":["sinclair-spectrum"],"sinclair-zx-spectrum":["sinclair-zx-spectrum"],"sinclair-zx-spectrum-next":["sinclair-zx-spectrum-next"],"sinclair-zx81":["sinclair-zx81"],"sinclairzx81":["sinclair-zx81"],"singe":["arcade-laserdisc"],"smbx":["smbx"],"sms":["sega-mastersystem","sms"],"smsgg":["sega-mastersystem"],"snes":["nintendo-satellaview","nintendo-snes"],"snes-hacks":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"snes-msu1":["nintendo-snes"],"snes9x":["nintendo-satellaview"],"snesh":["nintendo-snes"],"sneshacks":["nintendo-satellaview"],"snesmsu":["nintendo-satellaview"],"snesmsu1":["nintendo-satellaview","nintendo-snes"],"snesna":["nintendo-snes"],"sng":["neogeo"],"snk-neogeo-aes":["snk-neogeo-aes"],"snk-neogeo-cd":["snk-neogeo-cd"],"snk-neogeo-mvs":["snk-neogeo-mvs"],"snk-neogeo-pocket":["snk-neogeo-pocket"],"snk-ngp":["snk-ngp"],"snk-ngpc":["snk-ngpc"],"snkneogeo":["neogeo"],"snkneogeocd":["snk-neogeo-cd"],"snkneogeopocket":["snk-neogeo-pocket"],"snkneogeopocketcolor":["snk-neogeo-pocket"],"snkngcd":["snk-neogeo-cd"],"snkngp":["snk-neogeo-pocket"],"snkngpc":["snk-neogeo-pocket"],"socrates":["vtech-socrates"],"soh":["soh"],"solarus":["solarus"],"sonic-1-2013":["sonic-1-2013"],"sonic-2-2013":["sonic-2-2013"],"sonic-mania":["sonic-mania"],"sonic3-air":["sonic3-air"],"sonicretro":["sonic-1-2013","sonic-2-2013"],"sony playstation (ps)":["sony-playstation"],"sony-playstation":["sony-playstation"],"sony-playstation-2":["sony-playstation-2"],"sony-playstation-3":["sony-playstation-3"],"sony-playstation-vita":["sony-playstation-vita"],"sony-pocketstation":["sony-pocketstation"],"sony-psp":["sony-psp"],"sonyplaystation":["sony-playstation"],"sonyplaystationportable":["sony-psp"],"sonyps":["sony-playstation"],"sonyps1":["sony-playstation"],"sonypsp":["sony-psp"],"sonypsx":["sony-playstation"],"spec":["sinclair-zx-spectrum"],"spectravideo":["spectravideo"],"spectrum":["sinclair-spectrum","sinclair-zx-spectrum"],"spmp8000":["sunplus-spmp8000"],"ss":["sega-saturn"],"st":["atari-st"],"st-v":["sega-stv"],"star-control-2":["star-control-2"],"starship":["starship"],"ste":["atari-st"],"story":["onscripter"],"strife":["strife"],"studio-ii":["studio-ii"],"stv":["sega-stv"],"sufami":["nintendo-satellaview","nintendo-sufami-turbo"],"sufami-turbo":["nintendo-sufami-turbo"],"sufamiturbo":["nintendo-sufami-turbo"],"sunplus-native32":["sunplus-native32"],"sunplus-spmp8000":["sunplus-spmp8000"],"supa":["nintendo-snes"],"super game boy (sgb)":["nintendo-sgb"],"super nintendo entertainment system (sfc)":["nintendo-snes"],"super nintendo entertainment system (supa)":["nintendo-snes"],"super-famicom-jr-model-shvc-101":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"super-famicom-shvc-001":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"super-gb":["nintendo-sgb"],"super-mario-war":["super-mario-war"],"super-nintendo-original-european-version":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"superacan":["superacan"],"superbroswar":["super-mario-war"],"supercassettevision":["scv"],"superchip":["chip8"],"superfamicom":["nintendo-satellaview","nintendo-snes"],"supergameboy":["nintendo-sgb"],"supergrafx":["nec-supergrafx"],"supermariowar":["super-mario-war"],"supernes":["nintendo-satellaview","nintendo-snes"],"supernintendo":["nintendo-satellaview"],"supernintendoentertainmentsystem":["nintendo-satellaview"],"superpretendo":["nintendo-satellaview"],"supervision":["watara-supervision"],"supracan":["supracan"],"svi":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"svicoleco":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"svicolecovision":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"swancrystal":["bandai-wswan","bandai-wswanc"],"switch":["nintendo-switch"],"symbian":["symbian"],"systemsp":["sega-systemsp"],"t80":["tic80"],"taito-fx1":["taito-fx1"],"tamagotchi-p1":["tamagotchi-p1"],"tandy-1000":["tandy-1000"],"tandy-vis":["tandy-vis"],"tandy1000":["tandy-1000"],"tanodragon":["dragon64"],"tecmo-tps":["tecmo-tps"],"teknoparrot":["namco-system246","namco-system256","namco-system357","sammy-atomiswave","sega-chihiro","sega-hikaru","sega-lindbergh","sega-naomi","sega-naomi2","sega-naomigd","sega-triforce"],"tera-drive":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"texas-instruments-ti-83":["texas-instruments-ti-83"],"texasinstrumentsti83":["texas-instruments-ti-83"],"tfc":["tfc"],"tg":["nec-pc-engine"],"tg-cd":["nec-pc-engine-cd"],"tg16":["nec-pc-engine"],"tg16cd":["nec-pc-engine-cd"],"tgb_dual":["nintendo-gb"],"tgcd":["nec-pc-engine-cd"],"tgfx":["nec-pc-engine"],"tgfx16-cd":["nec-pc-engine-cd"],"tgrafx":["nec-pc-engine"],"tgrafx16":["nec-pc-engine"],"theforceengine":["dark-forces","outlaws"],"theme-hospital":["theme-hospital"],"theodore":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"thextech":["smbx"],"thirtytwox":["sega-32x"],"thomson":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"thomson-mo5":["thomson-mo5"],"thomson-mo6":["thomson-mo6"],"thomson-to7":["thomson-to7"],"thomson-to770":["thomson-to770"],"thomson-to8":["thomson-to8"],"thomson-to8d":["thomson-to8d"],"thomson-to9":["thomson-to9"],"thomson-to9plus":["thomson-to9plus"],"thomsonmoto":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"ti-99_4a":["ti99"],"ti83":["texas-instruments-ti-83"],"ti99":["ti99"],"ti994a":["ti99"],"tic":["tic80"],"tic-80":["tic80"],"tic80":["tic80"],"tiger-game-com":["tiger-game-com"],"to8":["thomson-to8"],"tomb-raider":["tomb-raider"],"tomb-raider-1":["tomb-raider-1"],"tomb-raider-2":["tomb-raider-2"],"tombraider":["tomb-raider"],"traider1":["tomb-raider-1"],"traider2":["tomb-raider-2"],"triforce":["sega-triforce"],"trs-80":["trs80"],"trs80":["trs80"],"trs80coco":["coco"],"tt":["atari-st"],"turbocd":["nec-pc-engine-cd"],"turbografx":["nec-pc-engine"],"turbografx-16 (pce)":["nec-pc-engine"],"turbografx-cd":["nec-pc-engine"],"turbografx16":["nec-pc-engine"],"turbografxcd":["nec-pc-engine-cd"],"turbographix":["nec-pc-engine"],"tutor":["tutor"],"tvc":["videoton-tvc"],"tvgames":["tvgames"],"tvgc":["elektor-tv-games-computer","emerson-arcadia-2001","interton-vc4000"],"twentysixhundred":["atari-2600"],"tyrian":["tyrian"],"tyrquake":["quake"],"uqm":["star-control-2","ur-quan-masters"],"ur-quan-masters":["ur-quan-masters"],"uzebox":["uzebox"],"varcade":["arcade"],"vb":["nintendo-virtualboy"],"vc4000":["interton-vc4000"],"vec":["vectrex"],"vecrtex":["vectrex"],"vectrex":["vectrex"],"vemulator":["sega-vmu"],"vertarcade":["arcade"],"vertical":["arcade"],"verticalarcade":["arcade"],"vg5000":["philips-vg5k"],"vg5k":["philips-vg5k"],"vgmplay":["vgmplay"],"vic":["commodore-vic20"],"vic-20":["commodore-vic20"],"vic20":["commodore-vic20"],"videobrain":["videobrain"],"videopac":["odyssey2","philips-videopac"],"videopac-g7400":["philips-videopac"],"videopacplus":["philips-videopac"],"videosystem-zn1":["videosystem-zn1"],"videoton-tvc":["videoton-tvc"],"vircon32":["vircon32"],"virtboy":["nintendo-virtualboy"],"virtuaboy":["nintendo-virtualboy"],"virtual boy (vb)":["nintendo-virtualboy"],"virtualboy":["nintendo-virtualboy"],"vis":["tandy-vis"],"visualstory":["onscripter"],"vmac":["apple-macintosh"],"vmu":["sega-vmu"],"vpinball":["vpinball"],"vsmile":["vtech-vsmile"],"vtech-socrates":["vtech-socrates"],"vtech-vsmile":["vtech-vsmile"],"vvvvvv":["vvvvvv"],"watara":["watara-supervision"],"watara-supervision":["watara-supervision"],"watarasupervision":["watara-supervision"],"wii":["nintendo-wii"],"wiiu":["nintendo-wiiu"],"wiiu/roms":["nintendo-wiiu"],"wiiware":["nintendo-wii"],"windows3x":["dos","ibm-pc","ibm-pcjr","pc-98","tandy-1000"],"windows9x":["dos","ibm-pc","ibm-pcjr","pc-98","tandy-1000"],"wolf":["wolfenstein3d"],"wolf3d":["wolfenstein3d"],"wolfenstein":["wolfenstein3d"],"wolfenstein3d":["wolfenstein3d"],"wonderswan":["bandai-wswan","wonderswan","wonderswan-color"],"wonderswan-color":["wonderswan-color"],"wonderswanc":["wonderswan-color"],"wonderswancolor":["wonderswan","wonderswan-color"],"ws":["bandai-wswan","bandai-wswanc","wonderswan","wonderswan-color"],"wsc":["wonderswan","wonderswan-color"],"wswan":["bandai-wswan"],"wswanc":["bandai-wswanc"],"ww2gi":["ww2gi"],"x1":["sharp-x1"],"x16":["commanderx16"],"x68000":["sharp-x68000"],"x68k":["sharp-x68000"],"xash3d_fwgs":["bshift","cstrike","czero","czeror","dmc","gearbox","half-life","ricochet","tfc"],"xbox":["microsoft-xbox"],"xbox360":["microsoft-xbox-360"],"xbox360/roms":["microsoft-xbox-360"],"xegs":["xegs"],"xone":["sharp-x1"],"xrick":["xrick"],"xroar":["coco"],"zc210":["zc210"],"zeldac":["zeldaclassic"],"zeldaclassic":["zeldaclassic"],"zinc":["acclaim-zn1","atari-zn1","atlus-zn1","capcom-zn1","capcom-zn2","eighting-zn1","konami-gq","konami-gv","namco-system11","taito-fx1","tecmo-tps","videosystem-zn1"],"zmachine":["zmachine"],"zsnes":["nintendo-satellaview"],"zx spectrum (zxs)":["sinclair-zx-spectrum"],"zx81":["sinclair-zx81"],"zxeightyone":["sinclair-zx81"],"zxnext":["sinclair-zx-spectrum-next"],"zxs":["sinclair-zx-spectrum"],"zxspectrum":["sinclair-zx-spectrum"]},"format_version":1,"licences":[{"mirror":{"licence":"MIT","repo":"https://github.com/hugo19941994/auto-datfile-generator","scope":"the mirror's scripts only, the DATs it republishes stay under the terms above"},"quote":"Unless otherwise stated on the website, the data made available through this website (\"Data\") may be freely used, copied, reproduced, modified, adapted, combined, published, distributed, and otherwise reused by anyone for any lawful purpose, to the extent that the website operator owns or controls the applicable rights or is authorized to grant such permission. No permission, attribution, citation, backlink, or acknowledgment of the website or its operators is required for such use.","read":"2026-11-03","terms_title":"Data Usage License","terms_updated":"2026-09-11","terms_url":"https://datomatic.no-intro.org/terms.html"},{"quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit","read":"2026-11-03","terms_url":"https://redump.info/about"}],"setups":{"allium":{"file":"setups/allium.json","gzip_size":5091,"sha256":"7e1b5914e15cc2ff710052fc7385fb9457ca955f5a633313d4ce4e8496b32033","size":35139},"amberelec":{"file":"setups/amberelec.json","gzip_size":5613,"sha256":"7c25ef2b727003a6ff285cb255286264acdc726fefbcea43f6f254ed708250be","size":38051},"archr":{"file":"setups/archr.json","gzip_size":7548,"sha256":"b5fe00e263b6df7c536260bbd8b7c41fe3e031a812f40644c8dacc93e049a88f","size":57318},"arkos":{"file":"setups/arkos.json","gzip_size":6069,"sha256":"0f4cf86ae6afb1ecb1c5019f8ac7c598044118b902f11aa9d8823e90ac2ca82d","size":39966},"batocera":{"file":"setups/batocera.json","gzip_size":14457,"sha256":"af163f68ee5069620ebf6b0fcb98ebd7ee721203c0dbf21d55244a024649d5fc","size":134476},"bizhawk":{"file":"setups/bizhawk.json","gzip_size":2469,"sha256":"1bd6306d2f485700b531d3d3ac502cbf36aaa9cfeb954f751ea3bb862aeb7aa9","size":16059},"chaos":{"file":"setups/chaos.json","gzip_size":5625,"sha256":"3a56b30c0992cd78eef8e097e9b1ef8aa479a664ea550d32d7777e18cbed0bb6","size":38023},"crossmix-os":{"file":"setups/crossmix-os.json","gzip_size":4628,"sha256":"8361175b1aebab116d878cc9117f531678969758c13a83b8ece2289c5eca9f46","size":30935},"darkos":{"file":"setups/darkos.json","gzip_size":5877,"sha256":"cc13afb7b04ac99eca20df747da975f55fb0757df63ef70b7923087f75f5a9df","size":37501},"emudeck":{"file":"setups/emudeck.json","gzip_size":8178,"sha256":"0a0d0b8a9c0fa9e6251dc28f88040ed6bc931a0f763ba1df0c07c72791995838","size":59403},"emudeck-windows":{"file":"setups/emudeck-windows.json","gzip_size":8145,"sha256":"e3b15545aafdc94411ba5cea61b6de9d9ce75889dff7ee6fefe3e63d4966fc17","size":60030},"emuelec":{"file":"setups/emuelec.json","gzip_size":7916,"sha256":"3117d2dd0ffb721e11f1e70385ed599f36d54c2d19db1dc598be52b5f8b73445","size":55398},"jelos":{"file":"setups/jelos.json","gzip_size":6646,"sha256":"52d5260b6ef397e1e41f957dc51808d8943848950322107336e886ae963bc2fd","size":47161},"knulli":{"file":"setups/knulli.json","gzip_size":11986,"sha256":"73cda1ec1afde3494896c2d82ae185eb0013721b817cf46293be84a7967900af","size":97205},"kolos":{"file":"setups/kolos.json","gzip_size":6170,"sha256":"1ab8b0c0a57bf6bb16f781bd1b97fe28e3c0d961a575af86546a482e5de4d150","size":43277},"koriki":{"file":"setups/koriki.json","gzip_size":4029,"sha256":"d2f15741cd1b16ac6f1f51dc1afa09a1831e6502b5d2ead7ee507a051ba414f1","size":22608},"lakka":{"file":"setups/lakka.json","gzip_size":517,"sha256":"3adec2a8c4f9a992e271382650338d00310db3de3bffd5448109c635ec03e2fd","size":1037},"minui":{"file":"setups/minui.json","gzip_size":2055,"sha256":"0a38d3d3b6d0fc16ed59a9fa420aba91a3402dc4ae584b349dc19076ad4818cc","size":10242},"misterfpga":{"file":"setups/misterfpga.json","gzip_size":3578,"sha256":"5c6e306970b67c12e6cc25c82328691fd13ad0c554ce1309efd1f0278158ad07","size":23518},"miyoocfw":{"file":"setups/miyoocfw.json","gzip_size":959,"sha256":"cb13cdcae35830c58d6465ff2f6e36c2d0558c576fd8eb8fd053537fb007573b","size":2285},"muos":{"file":"setups/muos.json","gzip_size":7386,"sha256":"3beffb9369d734978047ec64a440202704d9682bfe25c9c05e159c3b4618ed87","size":46601},"myminui":{"file":"setups/myminui.json","gzip_size":2797,"sha256":"8cac64f671ed745b8cd713be9e88b9f83e8e83061c32ff62fca646c91ea986ea","size":14717},"nextui":{"file":"setups/nextui.json","gzip_size":2950,"sha256":"e9eb9a3d06cc796bf54b185691144c828a2c7dc767a9b83c25fb310ca3b64d1d","size":15309},"onion":{"file":"setups/onion.json","gzip_size":6337,"sha256":"35cad2ef2a7162b93035cbeafd2ac881ba17a777ae11d05e16c4c4fb071071e8","size":34615},"pan4elec":{"file":"setups/pan4elec.json","gzip_size":5717,"sha256":"2534db783b7eb7037c4457fc9ae540d885aa6fdd3a59411df7856aeb64ef68b9","size":39455},"plumos-mf":{"file":"setups/plumos-mf.json","gzip_size":6141,"sha256":"5c2ae5292af66a32a16ad6c70ead6cbabef934c5e3e5261d6d92e9942bfd403b","size":33703},"plumos-pixel2":{"file":"setups/plumos-pixel2.json","gzip_size":6180,"sha256":"4c674898610e234f9a6711db34f9cebec91eaeb76d160e13a62eabd13a702720","size":31896},"recalbox":{"file":"setups/recalbox.json","gzip_size":9153,"sha256":"965c44508d9fe798954cdf392db0726e8b3be5796b0b5dea6b3a92aaba12bb47","size":69567},"retroarch":{"file":"setups/retroarch.json","gzip_size":476,"sha256":"025188a526422c7d79c996edc19c486c9b4f322798325a18405733066483b3d6","size":786},"retrobat":{"file":"setups/retrobat.json","gzip_size":10307,"sha256":"39e0945e6d33c1312f73b3b3ff26ee9a81d70d5061cd78a415ca87c0d68ad1b6","size":70854},"retrodeck":{"file":"setups/retrodeck.json","gzip_size":7183,"sha256":"f29336cedac2da9e8b1ccb89d9b608a9a8f147564ed6abafdaa8e0b4c922fbae","size":53597},"retropie":{"file":"setups/retropie.json","gzip_size":4670,"sha256":"f80f62e4d96cf62937da5f3e434fa6754bbf9eb17738b0d24062be7de9e5c4a2","size":24007},"rocknix":{"file":"setups/rocknix.json","gzip_size":7590,"sha256":"ff85bfdbdbc852265f5a7d71327e4df6512c53515a70add8d124f4ac3281689e","size":58836},"romm":{"file":"setups/romm.json","gzip_size":3790,"sha256":"73d2f0f4d95e9146ac9f850bf41e3a85bb133e543749dcecb785e80c67648946","size":30844},"spruceos":{"file":"setups/spruceos.json","gzip_size":6419,"sha256":"ccbe920491891b66c1db61e4c09abae154d367421856a8817d4c7e22111000c2","size":28367},"unofficialos":{"file":"setups/unofficialos.json","gzip_size":7152,"sha256":"bec913e663e25217e0a84db7bb0042a6f0b38d7d2a34d52e5de0c7a3fc5de4a6","size":51670}},"systems":{"atari-5200":{"file":"systems/atari-5200.json","gzip_size":4092,"sha256":"55bf18d45a6a7d75cda37ac27088b2510c4a27894157bca7f15452d67b5b76af","size":12435},"atari-7800":{"file":"systems/atari-7800.json","gzip_size":887,"sha256":"2ff726865df34502c72be99d18948dedd0782f19a38a215297c89c813d648481","size":1668},"atari-jaguar":{"file":"systems/atari-jaguar.json","gzip_size":292,"sha256":"a0215745664dcfdbe9f454e226561e61fdb8f60c0d72ba877b52e8f1b7929934","size":413},"atari-lynx":{"file":"systems/atari-lynx.json","gzip_size":1678,"sha256":"ab7cc8614064981951ddcca1c4a9d263b49b04fc0a89f2a984de08c20392a3d0","size":3634},"colecovision":{"file":"systems/colecovision.json","gzip_size":4412,"sha256":"9eb8ecd30e9877d6a36551ef03eb70b4151152023d0133a3b05109022d56151c","size":11293},"commodore-amiga":{"file":"systems/commodore-amiga.json","gzip_size":290,"sha256":"9988cce7dd6403204ab580edbc9522e5a9080c790bf04a98e6c3d435bbee42e3","size":788},"commodore-amiga-cd32":{"file":"systems/commodore-amiga-cd32.json","gzip_size":265,"sha256":"2c4d3823a40cdd4197209b2abaf38db755218130812f92c03ddad2ee0fd4a46d","size":456},"intellivision":{"file":"systems/intellivision.json","gzip_size":4507,"sha256":"748c7d7887370f16d5992fa7e53381108a24366584239543ccadf4347ccc8f01","size":12528},"laseractive":{"file":"systems/laseractive.json","gzip_size":363,"sha256":"d96ade3209fda8314cf9010a5ced458ad95037867fa204c8e457b05c46f5d80d","size":723},"msx":{"file":"systems/msx.json","gzip_size":214,"sha256":"e73b146104ffeb5ececb7173a5a3ce3903d0d0de1fde5e301658252c5675359b","size":285},"msx2plus":{"file":"systems/msx2plus.json","gzip_size":331,"sha256":"21b724cfbe529d2d992a7a633c570674c70753a42153befabe8c86c689b66c49","size":462},"nec-pc-engine":{"file":"systems/nec-pc-engine.json","gzip_size":9241,"sha256":"1fe6db213678d40878dfa6c411d1031319ef9f0d605b5653d1b4aa01e8a04452","size":27628},"nec-pc-engine-cd":{"file":"systems/nec-pc-engine-cd.json","gzip_size":12487,"sha256":"754e02b8e7e99135454008a89e883c9d6829a1f62cbc759abba2e5991866f9e9","size":43447},"nec-supergrafx":{"file":"systems/nec-supergrafx.json","gzip_size":831,"sha256":"111bd2ee40d75db1d140f263313bb6c97e31965883dbdf16906893e043f8d52d","size":1441},"neo-geo-pocket-color":{"file":"systems/neo-geo-pocket-color.json","gzip_size":3371,"sha256":"484bdf90a16917d464f28e8de1bbdce8d369c274d20d3d8c55ba0911a7a5e9ba","size":10072},"nintendo-3ds":{"file":"systems/nintendo-3ds.json","gzip_size":485,"sha256":"5e903462cea76f28681397aee0e6e3f119cd206ea60dd18ae734cbc5c5779cf7","size":808},"nintendo-64":{"file":"systems/nintendo-64.json","gzip_size":21504,"sha256":"24acf25d8c43e5227dc674057b41deffcc5c6db39f0f09e4ab258334749acd28","size":73974},"nintendo-64dd":{"file":"systems/nintendo-64dd.json","gzip_size":2541,"sha256":"82a62ff230513d4b3b7ec6bcb1ac8efe4101ff4e301dfea4300e13dea12cbc4a","size":7705},"nintendo-ds":{"file":"systems/nintendo-ds.json","gzip_size":186345,"sha256":"9f74ade6f2fff15b51c410ce83aafccdb3cb0c1701c9cd42a593ca84d1ab4c33","size":566900},"nintendo-dsi":{"file":"systems/nintendo-dsi.json","gzip_size":240,"sha256":"a470b580ca27fdf66bcf1213d3f7d3ab3acbf2a6272dd445a9ade5fc4cd4b569","size":345},"nintendo-fds":{"file":"systems/nintendo-fds.json","gzip_size":9025,"sha256":"59f40fb23866487b95f2a0b709b216c6c66de694f4528b0c4b53aae3fc1f4e7d","size":30626},"nintendo-gamecube":{"file":"systems/nintendo-gamecube.json","gzip_size":46580,"sha256":"afd0881edb18be56407268b9c2c6a6437e2670baa76203e4e03da33fac8ed4ee","size":189501},"nintendo-gb":{"file":"systems/nintendo-gb.json","gzip_size":39786,"sha256":"8cfeadc99c49af41435728dc1e5343ca14d632bcc4681e87f286ca41e3281868","size":127687},"nintendo-gba":{"file":"systems/nintendo-gba.json","gzip_size":76891,"sha256":"c254fa7973aa84f1b9e49f256437a03360d06ecf3b80838cae36bc5bbd84b80f","size":248499},"nintendo-gbc":{"file":"systems/nintendo-gbc.json","gzip_size":44917,"sha256":"3c281676ea9778761b00d454661d9fa7c5dfb70cbe435c1bb30158ef766d418f","size":154739},"nintendo-nes":{"file":"systems/nintendo-nes.json","gzip_size":89663,"sha256":"6e0e1d1f2681c10998518abe4b46cd2ea4a9f993316432876f19f8a52167e332","size":274177},"nintendo-pokemon-mini":{"file":"systems/nintendo-pokemon-mini.json","gzip_size":1537,"sha256":"083eed4eccdfcb12daab714d7cf3a595cbe7554010a7c79171916bc97b4611dc","size":4199},"nintendo-satellaview":{"file":"systems/nintendo-satellaview.json","gzip_size":13245,"sha256":"fc91880841ba301ff3fc2e7edfe53eed876edb33f9d7534d814d39dacd0a1654","size":51819},"nintendo-sgb":{"file":"systems/nintendo-sgb.json","gzip_size":746,"sha256":"617365112f8b93207b50323f761c4073d1c5aee87d877675822fb34247bab373","size":1621},"nintendo-snes":{"file":"systems/nintendo-snes.json","gzip_size":79838,"sha256":"5a1ffe5d5c958424793b77ce016c65205967f1d8ff910ffc6e8118f00b584001","size":249778},"nintendo-sufami-turbo":{"file":"systems/nintendo-sufami-turbo.json","gzip_size":1512,"sha256":"8070d9473708fee7ada3481daecd09e5389573652f1986e4a00275821337ac09","size":3210},"nintendo-wii":{"file":"systems/nintendo-wii.json","gzip_size":563,"sha256":"bff9fd15aa2896dbe9b5f60e713b04dd2d40dcfbee5dc8699a7ccec14536a466","size":1229},"odyssey2":{"file":"systems/odyssey2.json","gzip_size":3297,"sha256":"978953171a55509460854a4747ffbb94d9a0f16f0b2304abfe1aedbc3392582d","size":7851},"panasonic-3do":{"file":"systems/panasonic-3do.json","gzip_size":17243,"sha256":"38035ce01095a974ae7d0e1818f0d0c65f54cd89d326fa315893ef1062de9c0d","size":50013},"sega-32x":{"file":"systems/sega-32x.json","gzip_size":3894,"sha256":"6b0da0c37349c2340197d7a178f5862d942c43819f494ab2552e00e6dc83d360","size":16064},"sega-dreamcast":{"file":"systems/sega-dreamcast.json","gzip_size":36655,"sha256":"0041c8525fa27290841faa607ac8047e016f98896c5ff33b502495e8b37e14ed","size":122845},"sega-gamegear":{"file":"systems/sega-gamegear.json","gzip_size":14821,"sha256":"12ddb73bef81410d643f6b09ac0da2e49adb3dca8943f273f776d9c5c67583a2","size":54189},"sega-mastersystem":{"file":"systems/sega-mastersystem.json","gzip_size":14536,"sha256":"5669393a76b922ed2e14995c66c2804ccc7a1165a2416e50722c954aba560360","size":47411},"sega-megacd":{"file":"systems/sega-megacd.json","gzip_size":15396,"sha256":"ce94f85bf4ff3c8d4e58357c68cdb39a2b12d4b8052e61e77fd3189d2a3052c9","size":46794},"sega-megadrive":{"file":"systems/sega-megadrive.json","gzip_size":53279,"sha256":"10507cfccd4ec9fc2c63e71bbc83fda1001e565819665bb0b65d09f4506054bb","size":180871},"sega-naomi":{"file":"systems/sega-naomi.json","gzip_size":276,"sha256":"7da5520e2aa6c2f0e1e4e8f5417be5776d196960e793f740c3dd05ff37ab88e9","size":486},"sega-saturn":{"file":"systems/sega-saturn.json","gzip_size":66052,"sha256":"d3a87b71ce4771f0c4a93fa2d0621f100da77005b37e75faa541aec873a0f319","size":199102},"sega-stv":{"file":"systems/sega-stv.json","gzip_size":782,"sha256":"eb73b6449be6a70bf942f39c49322c03770ddd3bbb6a40f1add7f0ab90bd0841","size":2424},"sega-triforce":{"file":"systems/sega-triforce.json","gzip_size":286,"sha256":"7c68241a76bef2b4ff0cba2ea2f312250abc8585fcc52b41ced2bcbc76175726","size":539},"snk-neogeo-cd":{"file":"systems/snk-neogeo-cd.json","gzip_size":4649,"sha256":"ccc757ea85e9398347cc4ff1db29118a1923422aed21a7437d7c54806330fa8e","size":12370},"snk-neogeo-pocket":{"file":"systems/snk-neogeo-pocket.json","gzip_size":1070,"sha256":"c88819387ac6a344a017198e7bc2560fe306ba9f80350483dab29dd48a03342b","size":2179},"sony-playstation":{"file":"systems/sony-playstation.json","gzip_size":323936,"sha256":"e27d244a888c5246e00166eba8a893032cf96a85dff08905c77d696d997bd861","size":939819},"sony-playstation-2":{"file":"systems/sony-playstation-2.json","gzip_size":361140,"sha256":"410adb750ffbce2e2389facace712c1ad784cfa128da2763b5821ba5cc0ffac7","size":1075273},"vectrex":{"file":"systems/vectrex.json","gzip_size":1615,"sha256":"908725537d457bd597c180c61705f494209c412d728951944d86e504f40387ad","size":3457},"wonderswan":{"file":"systems/wonderswan.json","gzip_size":5961,"sha256":"e0949ae3fd96c11f54db7f56d1d9bc7b9613afe54d411ac16241095eb20f42ba","size":18778},"wonderswan-color":{"file":"systems/wonderswan-color.json","gzip_size":5618,"sha256":"41931c79d3546731ac4665f711c3d6296d30a26244be08e3bd9da01cbfdfa470","size":18027}}} +{"arcade":{"fbneo":{"file":"arcade/fbneo.json","gzip_size":115955,"sha256":"88961c9a6be804772baa767f6ee3a9162478c30c60fe55c8363d8fe4fbc909da","size":423362},"flycast":{"file":"arcade/flycast.json","gzip_size":1841,"sha256":"957189a6e993fda08e21c90ffc6ad94aed9ca9e6dd9ed8c7724e29db036791cb","size":5441},"mame":{"file":"arcade/mame.json","gzip_size":154527,"sha256":"b12010301293a218ecfac45706d81a26c3ac0c27eebeca7409bc8f6ce0163e9e","size":604648},"mame0258":{"file":"arcade/mame0258.json","gzip_size":141151,"sha256":"7ecff1979ed2ac123ea3ba4825dde6e2c31906415165fabefc9af93fa48a6de4","size":556059},"mame0278":{"file":"arcade/mame0278.json","gzip_size":148595,"sha256":"7881e3516f451ec83e886aaf41ebac9d60f497e1f954f49749d52890d7955cbf","size":582797},"mame2000":{"file":"arcade/mame2000.json","gzip_size":8624,"sha256":"f0d69b0872ecfc2845eeb7304543e5b17c11db82060b5514c206b6962ed08263","size":23316},"mame2003":{"file":"arcade/mame2003.json","gzip_size":17456,"sha256":"3b44e2a92c80a8f104b7781fcc1c776d025ad2cf4986638efa3ea041baa9a56d","size":48929},"mame2003_plus":{"file":"arcade/mame2003_plus.json","gzip_size":21077,"sha256":"2857283556fa49c20d8160ed113465bf0c2e643ed0b8acd2d38266a78be8e25e","size":62373},"mame2010":{"file":"arcade/mame2010.json","gzip_size":30869,"sha256":"50b1b381b4b07463f69f1f4c512dd1c98a78d4d0e9c3aeaf49b7b1b007b42152","size":96528},"mame2015":{"file":"arcade/mame2015.json","gzip_size":86990,"sha256":"afeb8c32f651421f74c6de057b0c0b837acd14c533b5160bb31f4411e0afffec","size":360117},"mame2016":{"file":"arcade/mame2016.json","gzip_size":101249,"sha256":"1f75147977d9d082a38b8f8e47a02b301f3d6e6db97c9b9282f3e7f27f26ee47","size":406190}},"containers":{"7z":{"description":"Per-file CRCs and sizes sit in the header at the end of the archive, LZMA-compressed by default (kEncodedHeader). One LZMA decode of the header, independent of the archive size, gives them. Python's lzma is an optional module.","re_read":true,"signature":{"bytes_hex":"377abcaf271c","offset":0},"source_ref":"ip7z/7zip@b88c6bc0 DOC/7zFormat.txt:171-189, DOC/7zFormat.txt:318-334, CPP/7zip/Archive/7z/7zHandlerOut.cpp:859"},"cd-sector":{"description":"User data of a CD sector. In a 2048-byte image (.iso) sector N starts at N * 2048. In a raw 2352-byte image it starts at N * 2352 plus 16 for Mode 1 and plus 24 for Mode 2 Form 1 (12 sync bytes, a 4-byte header, and for Mode 2 an 8-byte subheader).","re_read":true,"sector_size":{"iso":2048,"raw":2352},"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:157-171, src/util/cd_image.h:28-34","user_data_offset":{"mode1":16,"mode2":24}},"chd-v5":{"description":"MAME compressed hunks, big-endian. The header holds sizes, codecs and hashes only, never the system or the region. The overall SHA-1 is what MAME software lists record. Neither SHA-1 equals a Redump track hash: chdman hashes 2448-byte frames (subcode included, zero-filled), pads each track to 4 frames and byte-swaps audio, all tracks in one stream.","fields":{"compressors":{"encoding":"fourcc4","length":16,"offset":16},"header_length":{"encoding":"u32be","length":4,"offset":8,"value":124},"hunk_bytes":{"encoding":"u32be","length":4,"offset":56},"logical_bytes":{"encoding":"u64be","length":8,"offset":32},"map_offset":{"encoding":"u64be","length":8,"offset":40},"metadata_offset":{"encoding":"u64be","length":8,"offset":48},"overall_sha1":{"encoding":"hex","length":20,"offset":84},"parent_sha1":{"encoding":"hex","length":20,"offset":104},"raw_sha1":{"encoding":"hex","length":20,"offset":64},"unit_bytes":{"encoding":"u32be","length":4,"offset":60},"version":{"encoding":"u32be","length":4,"offset":12,"value":5}},"magic":{"bytes":"MComprHD","offset":0},"media_tags":{"CHCD":"cd","CHGD":"gd-rom","CHGT":"gd-rom","CHT2":"cd","CHTR":"cd","DVD ":"dvd","GDDD":"hard-disk"},"metadata_entry":{"description":"16-byte entry header, payload follows. Linked list from metadata_offset.","flags":{"encoding":"u8","length":1,"offset":4},"length":{"encoding":"u24be","length":3,"offset":5},"next":{"encoding":"u64be","length":8,"offset":8},"tag":{"encoding":"ascii","length":4,"offset":0}},"re_read":true,"source_ref":"mamedev/mame@f34f0250 src/lib/util/chd.h:148-162, src/lib/util/chd.cpp:2021-2061, src/lib/util/chd.cpp:2822-2831, src/lib/util/chd.h:212-235, src/lib/util/chd.cpp:1709-1749, src/tools/chdman.cpp:443-445, src/tools/chdman.cpp:2195-2203, src/lib/util/cdrom.cpp:2669-2672, src/emu/romload.cpp:1211"},"gamecube-disc":{"description":"Where disc offset 0 sits inside each container Dolphin opens.","formats":{"ciso":{"disc_header_at":32768,"magic":"CISO"},"gcz":{"disc_header_at":null,"magic_u32le":2970337281,"note":"block 0 is zlib unless bit 63 of its pointer is set"},"iso":{"disc_header_at":0,"magic":null},"rvz":{"disc_header_at":88,"magic":"RVZ\u0001","note":"first 0x80 disc bytes copied into header 2"},"wbfs":{"disc_header_at":null,"magic":"WBFS","note":"disc offset 0 at wlba[0] << wbfs_sector_shift"},"wia":{"disc_header_at":88,"magic":"WIA\u0001","note":"first 0x80 disc bytes copied into header 2"}},"re_read":true,"source_ref":"dolphin-emu/dolphin@0d93fc03 Source/Core/DiscIO/WIABlob.h:80-119, Source/Core/DiscIO/WIABlob.cpp:320-330, Source/Core/DiscIO/CISOBlob.cpp:66-69, Source/Core/DiscIO/CompressedBlob.cpp:140-150, Source/Core/DiscIO/WbfsBlob.cpp:148-155"},"iso9660":{"description":"Primary volume descriptor in sector 16 ('CD001' at offset 1), root directory record at PVD offset 156 (34 bytes). A file is found by name in the root directory, with the ';1' version suffix.","pvd_sector":16,"re_read":true,"root_record_offset":156,"source_ref":"stenzek/duckstation@526b4a12 src/util/iso_reader.cpp:68-90, src/util/iso_reader.h:60-99"},"zip":{"description":"The central directory gives each member's CRC-32 (offset 16) and uncompressed size (offset 24) without inflating. Python's zipfile reads it on open (ZipInfo.CRC, ZipInfo.file_size).","re_read":true,"source_ref":"python/cpython@fa919fdf Lib/zipfile.py:99-115, Lib/zipfile.py:1293-1347"}},"data_version":"674382ee4db19646","fallback":{"amberelec":{"file":"fallback/amberelec.json","gzip_size":10509,"sha256":"67db1b95497f894a997f9fd3a5bd7ee4f6866fb31ad89f573c4351af4df3fd87","size":48420},"batocera":{"file":"fallback/batocera.json","gzip_size":42311,"sha256":"4ab4d63a9d94111b81629f7ba383f35eb5af274097ca7fe7a56ea8fadd8635ab","size":309418},"bizhawk":{"file":"fallback/bizhawk.json","gzip_size":1944,"sha256":"152b14f3aff69714698a58837d6331ebcbcd3aaaa5f62939b9c743e535a319f4","size":7320},"emudeck":{"file":"fallback/emudeck.json","gzip_size":26333,"sha256":"f30e59fb09bbd9f3737c4aa2c2164d75dadbd2b08be17821dbf521747ffd564b","size":110298},"emuelec":{"file":"fallback/emuelec.json","gzip_size":15046,"sha256":"e77c87df67e6536362f09257199b500e055046f91b3ced09c2baf569a7d8785c","size":69084},"knulli":{"file":"fallback/knulli.json","gzip_size":39818,"sha256":"47a7153000636a41e1c9fd2a75c06df5ff5b66234eed63160cb227561158c1be","size":267590},"minui":{"file":"fallback/minui.json","gzip_size":701,"sha256":"d68b30917db60263e57331271ebc33d00520dcbc15cdcaba8ccaf2901be2c870","size":2761},"misterfpga":{"file":"fallback/misterfpga.json","gzip_size":1898,"sha256":"b8f457378063d2f9b4010c2fefc21561df71e2e2d06f4ad1a7d945f4ad0a6f55","size":9569},"myminui":{"file":"fallback/myminui.json","gzip_size":1887,"sha256":"029242a5d03083b697c3c801f5a7f86687d62432fa925e0ec1c4759c3e3c20a5","size":7993},"nextui":{"file":"fallback/nextui.json","gzip_size":3088,"sha256":"3c28a4e3d67d5e5b653303419423c4326845b7e8b047c5f4ee1fdf44da0f5faf","size":15502},"recalbox":{"file":"fallback/recalbox.json","gzip_size":13869,"sha256":"6854fff04b6e4d619f92e76b0427f45fd0bd06c1d88f9037b603c0a0dc9c9efc","size":62692},"retroarch":{"file":"fallback/retroarch.json","gzip_size":45040,"sha256":"cf8e25bad8e91d3de2c201fd13af6d21bf5ab124c2fadddf103c88f6e13f6b7e","size":217832},"retrobat":{"file":"fallback/retrobat.json","gzip_size":32950,"sha256":"59aae7e5e1c53931a456cfe4cf580e3c0dd3bf8bd77455baa7732670404a4786","size":139887},"retrodeck":{"file":"fallback/retrodeck.json","gzip_size":46077,"sha256":"3b453967dd8eafac0dd578e3036a2fdcfcaf064ded08e8a571c96956b2499b03","size":236917},"retropie":{"file":"fallback/retropie.json","gzip_size":37196,"sha256":"20a85de251a7e43246bbf55d6902bdcd3989b4969d1f61b771b9f4a51824463e","size":153232},"rocknix":{"file":"fallback/rocknix.json","gzip_size":9274,"sha256":"83a59961c7e5869fda2444f96870591dcf576f764d58f7bc5fe5e329e68a15b1","size":38952},"romm":{"file":"fallback/romm.json","gzip_size":6111,"sha256":"e4009ba31a3a5e08d7cf0c6cfcdfaa0e704faa19460d8e1c0fc169b745a4a15e","size":27444}},"folders":{"240ptestsuite":["nintendo-fds","nintendo-nes"],"2600":["atari-2600"],"2ship":["2ship"],"32x":["sega-32x"],"3d0":["panasonic-3do"],"3do":["panasonic-3do"],"3ds":["nintendo-3ds"],"5200":["atari-5200"],"64":["nintendo-64"],"64dd":["nintendo-64","nintendo-64dd"],"7800":["atari-7800"],"800":["atari-400-800"],"a2600":["atari-2600"],"a5200":["atari-5200"],"a7800":["atari-7800"],"a800":["atari-400-800"],"acclaim-zn1":["acclaim-zn1"],"acorn-archimedes":["acorn-archimedes"],"acorn-bbc-micro":["acorn-bbc-micro"],"acpc":["amstrad-cpc"],"actionmax":["arcade-laserdisc"],"adam":["coleco-adam"],"advision":["entex-advision"],"advmame":["arcade"],"agb":["nintendo-gba"],"ags":["ags"],"amiga":["commodore-amiga"],"amiga (puae)":["commodore-amiga","commodore-amiga-cd32","commodore-cdtv"],"amiga-cd32":["commodore-amiga-cd32"],"amiga1200":["commodore-amiga"],"amiga4000":["commodore-amiga"],"amiga500":["commodore-amiga"],"amiga600":["commodore-amiga"],"amigacd32":["commodore-amiga","commodore-amiga-cd32"],"amigacdtv":["commodore-amiga"],"amstrad":["amstrad-cpc"],"amstrad cpc (cpc)":["amstrad-cpc"],"amstrad-cpc":["amstrad-cpc"],"amstradcpc":["amstrad-cpc"],"amstradgx4000":["amstrad-cpc"],"apf-m1000":["apf-m1000"],"apfm1000":["apf-m1000"],"apple":["apple2"],"apple ii":["apple-ii"],"apple-ii":["apple-ii"],"apple-iigs":["apple-iigs"],"apple-ios":["apple-ios"],"apple-macintosh":["apple-macintosh"],"apple-macintosh-ii":["apple-macintosh-ii"],"apple2":["apple2"],"apple2gs":["apple-iigs"],"applemacintosh":["apple-macintosh"],"aquaplus-piece":["aquaplus-piece"],"aquarius":["mattel-aquarius"],"arcade":["arcade","capcom-cps1","capcom-cps2","capcom-cps3"],"arcade (mame)":["arcade"],"arcade-laserdisc":["arcade-laserdisc"],"arcadeatomiswave":["sammy-atomiswave"],"arcadehbmame":["arcade"],"arcadenaomi":["sammy-atomiswave"],"arcadeneogeo":["neogeo"],"arcadeneogeocd":["snk-neogeo-cd"],"arcadesegaatomiswave":["sammy-atomiswave"],"arcadeseganaomi":["sammy-atomiswave"],"arcadesnk":["neogeo"],"arcadesnkneogeo":["neogeo"],"arcadevertical":["arcade"],"arcadia":["emerson-arcadia-2001"],"arcatomiswave":["sammy-atomiswave"],"archimedes":["acorn-archimedes"],"arcnaomi":["sammy-atomiswave"],"arcneogeo":["neogeo"],"arcneogeocd":["snk-neogeo-cd"],"arcsegaatomiswave":["sammy-atomiswave"],"arcseganaomi":["sammy-atomiswave"],"arduboy":["arduboy"],"ast":["atari-st"],"aste":["atari-st"],"astrocade":["bally-astrocade"],"astrocde":["bally-astrocade"],"atari":["atari-2600"],"atari 2600 (a2600)":["atari-2600"],"atari 5200 (a5200)":["atari-5200"],"atari 7800":["atari-7800"],"atari 7800 (a7800)":["atari-7800"],"atari jaguar":["atari-jaguar"],"atari lynx (lynx)":["atari-lynx"],"atari st":["atari-st"],"atari-2600":["atari-2600"],"atari-2600-plus":["atari-2600"],"atari-400-800":["atari-400-800"],"atari-5200":["atari-5200"],"atari-7800":["atari-7800"],"atari-jaguar":["atari-jaguar"],"atari-jaguarcd":["atari-jaguarcd"],"atari-lynx":["atari-lynx"],"atari-lynx-mkii":["atari-lynx"],"atari-st":["atari-st"],"atari-zn1":["atari-zn1"],"atari2600":["atari-2600"],"atari5200":["atari-5200"],"atari5200 (a5200)":["atari-5200"],"atari7800":["atari-7800"],"atari7800 (a7800)":["atari-7800"],"atari800":["atari-400-800"],"atari8bit":["atari-400-800"],"atarifalcon":["atari-st"],"atarijaguar":["atari-jaguar"],"atarijaguarcd":["atari-jaguar","atari-jaguarcd"],"atarilynx":["atari-lynx"],"atarist":["atari-st"],"atariste":["atari-st"],"ataritt":["atari-st"],"atarixe":["atari-400-800"],"atarixegs":["xegs"],"atlus-zn1":["atlus-zn1"],"atom":["atom"],"atomiswave":["sammy-atomiswave","sega-dreamcast-arcade"],"aw":["sammy-atomiswave"],"bally-astrocade":["bally-astrocade"],"bandai-rx78":["bandai-rx78"],"bandai-wswan":["bandai-wswan"],"bandai-wswanc":["bandai-wswanc"],"bandaiwonderswan":["wonderswan"],"bandaiwonderswancolor":["wonderswan"],"bbc":["acorn-bbc-micro"],"bbcmicro":["acorn-bbc-micro"],"bbk":["bbk-longman-4980","bbk-longman-4988"],"bbk-longman-4980":["bbk-longman-4980"],"bbk-longman-4988":["bbk-longman-4988"],"beena":["sega-beena"],"bennugd":["bennugd"],"bermuda-syndrome":["bermuda-syndrome"],"bgb":["game-boy-color"],"bk":["elektronika-bk"],"blake-stone":["blake-stone"],"blood":["blood"],"bshift":["bshift"],"bstone":["blake-stone"],"bsx":["nintendo-satellaview"],"bsyndrome":["bermuda-syndrome"],"build":["blood","duke3d","exhumed","nam","powerslave","redneck","shadow-warrior","ww2gi"],"bws":["wonderswan"],"bwsc":["wonderswan"],"c-plus-4":["commodore-plus4"],"c128":["commodore-c128"],"c16":["commodore-plus4"],"c20":["commodore-vic20"],"c64":["commodore-c64"],"caesar3":["caesar3"],"camplynx":["camplynx"],"cannonball":["sega-outrun"],"capcom-cps1":["capcom-cps1"],"capcom-cps2":["capcom-cps2"],"capcom-cps3":["capcom-cps3"],"capcom-zn1":["capcom-zn1"],"capcom-zn2":["capcom-zn2"],"capcomcps1":["capcom-cps1"],"capcomcps2":["capcom-cps2"],"capcomcps3":["capcom-cps3"],"casio-loopy":["casio-loopy"],"casio-pv1000":["casio-pv1000"],"casio-pv2000":["casio-pv2000"],"casio_pv-1000":["casio-pv1000"],"casio_pv-2000":["casio-pv2000"],"casioloopy":["casio-loopy"],"cassettevision":["epochcv"],"catacomb":["catacomb-3d","catacomb-adventure"],"catacomb-3d":["catacomb-3d"],"catacomb-adventure":["catacomb-adventure"],"cave-story":["cave-story"],"cavestory":["cave-story"],"cbm-ii":["commodore-cbm-ii"],"cbmii":["commodore-cbm-ii"],"cd-i":["philips-cdi"],"cdi":["philips-cdi"],"cdimono1":["philips-cdi"],"cdtv":["commodore-amiga","commodore-cdtv"],"cgb":["nintendo-gbc"],"cgenie":["cgenie"],"cgenius":["commander-keen"],"channel f":["fairchild-channelf"],"channelf":["fairchild-channelf"],"chex":["chex"],"chf":["fairchild-channelf"],"chihiro":["sega-chihiro"],"chip-8":["chip8"],"chip8":["chip8"],"chipeight":["chip8"],"coco":["coco"],"coco3":["coco","coco3"],"coleco":["colecovision"],"coleco vision":["colecovision"],"coleco-adam":["coleco-adam"],"colecovision":["colecovision"],"colecovision (coleco)":["colecovision"],"commander-keen":["commander-keen"],"commanderx16":["commanderx16"],"commmodore-128":["commodore-c128"],"commodore":["commodore-c64"],"commodore 128 (c128)":["commodore-c128"],"commodore 64 (c64)":["commodore-c64"],"commodore pet (pet)":["commodore-pet"],"commodore plus4 (plus4)":["commodore-plus4"],"commodore vic20 (vic)":["commodore-vic20"],"commodore-64c":["commodore-c64"],"commodore-amiga":["commodore-amiga"],"commodore-amiga-cd32":["commodore-amiga-cd32"],"commodore-c128":["commodore-c128"],"commodore-c64":["commodore-c64"],"commodore-cbm-ii":["commodore-cbm-ii"],"commodore-cdtv":["commodore-cdtv"],"commodore-pet":["commodore-pet"],"commodore-plus4":["commodore-plus4"],"commodore-vic20":["commodore-vic20"],"commodore128":["commodore-c128"],"commodore64":["commodore-c64"],"commodoreamiga":["commodore-amiga"],"commodorec128":["commodore-c128"],"commodorec64":["commodore-c64"],"commodorecbmii":["commodore-cbm-ii"],"commodorepet":["commodore-pet"],"commodoreplus4":["commodore-plus4"],"commodorevic20":["commodore-vic20"],"corsixth":["theme-hospital"],"cougarboy":["mega-duck"],"cpc":["amstrad-cpc"],"cpet":["commodore-pet"],"cplus4":["commodore-plus4"],"cps":["arcade"],"cps1":["arcade","capcom-cps1"],"cps2":["arcade","capcom-cps2"],"cps3":["arcade","capcom-cps3"],"creativision":["crvision"],"crvision":["crvision"],"cstrike":["cstrike"],"cv":["colecovision"],"czero":["czero"],"czeror":["czeror"],"daphne":["arcade-laserdisc"],"dark-forces":["dark-forces"],"dark-forces-ii":["dark-forces-ii"],"dc":["sega-dreamcast"],"descent":["descent"],"descent2":["descent2"],"devilutionx":["diablo"],"diablo":["diablo"],"dice":["discrete-arcade"],"dinothawr":["dinothawr"],"discrete-arcade":["discrete-arcade"],"disksystem":["nintendo-fds"],"dmc":["dmc"],"dmg":["game-boy","nintendo-gb"],"doom":["doom"],"doom (doom)":["doom"],"doom (prboom)":["doom","heretic"],"doom3":["doom3"],"dos":["dos"],"dosbox":["dos"],"dragon":["coco","dragon64"],"dragon32":["coco","dragon32"],"dragon64":["coco","dragon64"],"dreamcast":["sega-dreamcast"],"dreamm":["dos","fmtowns","ibm-pc","tandy-1000"],"droidworks":["droidworks"],"ds":["nintendo-ds"],"dsi":["nintendo-ds","nintendo-dsi"],"duke3d":["duke3d"],"dusklight":["dusklight"],"dxx-rebirth":["descent","descent2"],"easyrpg":["rpgmaker"],"ecwolf":["wolfenstein3d"],"eduke32":["duke3d"],"eighthundred":["atari-400-800"],"eighting-zn1":["eighting-zn1"],"electron":["electron"],"elektor-tv-games-computer":["elektor-tv-games-computer"],"elektronika":["elektronika-bk"],"elektronika-bk":["elektronika-bk"],"elektronikabk":["elektronika-bk"],"emerson-arcadia-2001":["emerson-arcadia-2001"],"enemyterritory":["enemyterritory"],"enterprise":["enterprise-128","enterprise-64-128"],"enterprise-128":["enterprise-128"],"enterprise-64-128":["enterprise-64-128"],"enterprise128":["enterprise-128"],"entex-advision":["entex-advision"],"ep128":["enterprise-128"],"ep64-128":["enterprise-64-128"],"epochcv":["epochcv"],"epochsupercassettevision":["scv"],"epsxe":["sony-playstation"],"etlegacy":["enemyterritory"],"exelvision-exl100":["exelvision-exl100"],"exhumed":["exhumed"],"exl100":["exelvision-exl100"],"fairchild":["fairchild-channelf"],"fairchild-channel-f":["fairchild-channelf"],"fairchild-channelf":["fairchild-channelf"],"fairchildchannelf":["fairchild-channelf"],"fake08":["pico8"],"falcon":["atari-st"],"fallout":["fallout"],"fallout1-ce":["fallout"],"fallout2":["fallout2"],"fallout2-ce":["fallout2"],"famicom":["famicom","nintendo-nes"],"famicom disk system (fds)":["nintendo-fds"],"famicom-disk-system":["famicom-disk-system"],"famicomdisk":["nintendo-fds"],"famicomdisksystem":["famicom-disk-system"],"famicomds":["famicom-disk-system"],"fat plumber shit":["nintendo-nes"],"fba":["arcade"],"fbneo":["arcade"],"fbnneogeo":["neogeo"],"fc":["famicom","nintendo-fds","nintendo-nes"],"fcds":["famicom-disk-system"],"fcnes":["famicom"],"fds":["famicom-disk-system","nintendo-fds"],"fiftytwohundred":["atari-5200"],"finalburnneo":["arcade"],"flash":["flash"],"flashback":["flashback"],"flycast":["sega-dreamcast"],"fm-7":["fm7"],"fm7":["fm7"],"fmtowns":["fmtowns"],"fmtownsux":["fmtowns"],"fpinball":["fpinball"],"freej2me":["j2me"],"fury":["fury"],"galaksija":["galaksija"],"galretro":["galaksija"],"gamate":["gamate"],"game boy (gb)":["nintendo-gb"],"game boy advance (gba)":["nintendo-gba"],"game boy advance (mgba)":["nintendo-gba"],"game boy color (gbc)":["nintendo-gbc"],"game gear":["sega-gamegear"],"game-boy":["game-boy"],"game-boy-adavance-sp":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"game-boy-advance":["game-boy-advance"],"game-boy-color":["game-boy-color"],"game-boy-light":["nintendo-gb","nintendo-gbc"],"game-boy-micro":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"game-boy-pocket":["nintendo-gb","nintendo-gbc"],"game-televisison":["nintendo-fds","nintendo-nes"],"gameandwatch":["handheld-electronic"],"gameboy":["game-boy","nintendo-gb"],"gameboyadvance":["game-boy-advance","nintendo-gba"],"gameboycolor":["game-boy-color","nintendo-gbc"],"gamecom":["tiger-game-com"],"gamecube":["nintendo-gamecube"],"gamegear":["sega-gamegear"],"gamegearh":["sega-gamegear"],"gamegearhacks":["sega-gamegear"],"gameking":["gameking"],"gamemaster":["hartung-game-master"],"gamenwatch":["handheld-electronic"],"gamepark-gp32":["gamepark-gp32"],"gamepock":["gamepock"],"gamepocketcomputer":["gamepock"],"gametank":["gametank"],"gb":["game-boy","nintendo-gb","nintendo-gbc"],"gb2players":["nintendo-gb"],"gba":["game-boy-advance","nintendo-gba"],"gba2players":["nintendo-gba"],"gbadvance":["game-boy-advance"],"gbah":["nintendo-gba"],"gbahacks":["game-boy-advance"],"gbav":["nintendo-gb","nintendo-gba","nintendo-gbc","nintendo-sgb"],"gbc":["game-boy-color","nintendo-gb","nintendo-gbc"],"gbc2players":["nintendo-gbc"],"gbch":["nintendo-gbc"],"gbchacks":["game-boy-color"],"gbcolor":["game-boy-color"],"gbdmg":["game-boy"],"gbh":["nintendo-gb"],"gbhacks":["game-boy"],"gbsp":["game-boy-advance"],"gc":["nintendo-gamecube"],"gce":["vectrex"],"gcevectrex":["vectrex"],"gearbox":["gearbox"],"gen":["sega-megadrive"],"gen32x":["sega-32x"],"gencd":["sega-megacd"],"genesis":["sega-genesis","sega-megadrive"],"genesiscd":["sega-megacd"],"genesishacks":["sega-megadrive"],"genh":["sega-megadrive"],"genmd":["sega-megadrive"],"gens":["sega-megadrive"],"gensegacd":["sega-megacd"],"gg":["sega-gamegear"],"ggsms":["sega-mastersystem"],"ghostship":["ghostship"],"gmaster":["hartung-game-master"],"gp32":["gamepark-gp32"],"gt":["gametank"],"gw":["handheld-electronic"],"gx4000":["amstrad-cpc"],"gzdoom":["chex","doom","heretic","hexen","strife"],"half-life":["half-life"],"halflife":["half-life"],"handheld-electronic":["handheld-electronic"],"handheldelectronic":["handheld-electronic"],"harcade":["arcade"],"hartung-game-master":["hartung-game-master"],"hbmame":["arcade"],"heretic":["heretic"],"hexen":["hexen"],"hikaru":["sega-hikaru"],"horizontal":["arcade"],"horizontalarcade":["arcade"],"hyper-neogeo64":["hyper-neogeo64"],"ibm-pc":["ibm-pc"],"ibm-pcjr":["ibm-pcjr"],"idquake":["quake"],"idquake2":["quake2"],"igs-pgm":["igs-pgm"],"intelli":["intellivision"],"intellivision":["intellivision"],"interact":["interact"],"interton-vc4000":["interton-vc4000"],"intv":["intellivision"],"iortcw":["return-to-castle-wolfenstein"],"ios":["apple-ios"],"iphone":["apple-ios"],"ique-player":["nintendo-64","nintendo-64dd"],"itv":["intellivision"],"j2me":["j2me"],"jag":["atari-jaguar"],"jaguar":["atari-jaguar"],"jaguarcd":["atari-jaguarcd"],"java":["j2me"],"jazz-jackrabbit":["jazz-jackrabbit"],"jazz-jackrabbit-2":["jazz-jackrabbit-2"],"jazz2":["jazz-jackrabbit-2"],"jedi-academy":["jedi-academy"],"jediknight2":["jediknight2"],"jkdf2":["dark-forces-ii","droidworks","mysteries-of-the-sith"],"jknight":["jedi-academy","jediknight2"],"kega":["sega-megadrive"],"konami-gq":["konami-gq"],"konami-gv":["konami-gv"],"laser310":["laser310"],"laseractive":["laseractive"],"laserdisc":["arcade-laserdisc"],"libgametank":["gametank"],"lindbergh":["sega-lindbergh"],"loopy":["casio-loopy"],"lowresnx":["lowresnx"],"lucasart":["scummvm"],"lucasarts":["scummvm"],"lynx":["atari-lynx"],"mac":["apple-macintosh","apple-macintosh-ii"],"macintosh":["apple-macintosh"],"magnavox":["odyssey2"],"magnavoxodyssey":["odyssey2"],"magnavoxodyssey2":["odyssey2"],"magnavoxvideopac":["odyssey2"],"mame":["arcade"],"mame-advmame":["arcade"],"mame-libretro":["arcade"],"mame-mame4all":["arcade"],"mame2000":["arcade"],"mame2003":["arcade"],"mame2003plus":["arcade"],"mame2010":["arcade"],"mark3":["sega-mastersystem"],"marty":["marty"],"master-system-girl":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"master-system-super-compact":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"mastersystem":["sega-mastersystem"],"mastersystemhacks":["sega-mastersystem"],"mattel-aquarius":["mattel-aquarius"],"mattelintellivision":["intellivision"],"mc10":["mc10"],"md":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megadrive"],"md32x":["sega-32x"],"mdcd":["sega-megacd"],"mdgen":["sega-megadrive"],"mdmsu":["sega-megadrive"],"mdmsu1":["sega-megadrive"],"mdsegacd":["sega-megacd"],"mega-duck":["mega-duck"],"mega-pc":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"megacd":["sega-megacd"],"megacdjp":["sega-megacd"],"megachip8":["chip8"],"megadrive":["sega-genesis","sega-megadrive"],"megadrive-japan":["sega-megadrive"],"megadrive-msu":["sega-megacd"],"megadrivecd":["sega-megacd"],"megadriveh":["sega-megadrive"],"megadrivehacks":["sega-megadrive"],"megadrivejp":["sega-genesis","sega-megadrive"],"megadrivemsu":["sega-megadrive"],"megaduck":["mega-duck"],"mgba":["game-boy-advance","nintendo-gba"],"microsoft msx (msx)":["msx"],"microsoft-xbox":["microsoft-xbox"],"microsoft-xbox-360":["microsoft-xbox-360"],"microsoftdos":["dos"],"microsoftmsx":["msx"],"midp":["j2me"],"minivmac":["apple-macintosh"],"mkxp":["rpgmaker"],"mkxp-z":["rpgmaker"],"mobile":["j2me"],"model2":["sega-model2"],"model2/roms":["sega-model2"],"model3":["sega-model3"],"mohaa":["mohaa"],"moto":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"ms":["sega-mastersystem"],"msdos":["dos"],"msdos (dos)":["dos"],"msu":["nintendo-snes"],"msu-md":["sega-megacd"],"msu1":["nintendo-snes"],"msumd":["sega-megacd","sega-megadrive"],"msx":["msx"],"msx1":["msx","msx1"],"msx2":["msx","msx2"],"msx2+":["msx2+"],"msx2plus":["msx2plus"],"msxturbor":["msx","msxturbor"],"multivision":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"mysteries-of-the-sith":["mysteries-of-the-sith"],"myvision":["myvision"],"mz2000":["mz2000"],"mz2500":["mz2500"],"mz700":["mz700"],"mz800":["mz800"],"mz80k":["mz80k"],"n3ds":["nintendo-3ds"],"n64":["nintendo-64"],"n64dd":["nintendo-64","nintendo-64dd"],"n64hacks":["nintendo-64"],"nam":["nam"],"namco-system11":["namco-system11"],"namco-system246":["namco-system246"],"namco-system256":["namco-system256"],"namco-system357":["namco-system357"],"namco2x6":["namco-system246"],"naomi":["sammy-atomiswave","sega-dreamcast-arcade","sega-naomi"],"naomi2":["sega-naomi2"],"naomigd":["sega-dreamcast-arcade","sega-naomigd"],"native32":["sunplus-native32"],"nds":["nintendo-ds"],"ndsi":["nintendo-dsi"],"ndsiware":["nintendo-dsi"],"nec-pc-88":["nec-pc-88"],"nec-pc-engine":["nec-pc-engine"],"nec-pc-engine-cd":["nec-pc-engine-cd"],"nec-pcfx":["nec-pcfx"],"nec-supergrafx":["nec-supergrafx"],"necpc8000":["nec-pc-88","pc80"],"necpc98":["pc-98"],"necpce":["nec-pc-engine"],"necpcecd":["nec-pc-engine-cd"],"necpcengine":["nec-pc-engine"],"necpcenginecd":["nec-pc-engine-cd"],"necpcfx":["nec-pcfx"],"necsgfx":["nec-supergrafx"],"necsupergrafx":["nec-supergrafx"],"nectg16":["nec-pc-engine"],"nectgcd":["nec-pc-engine-cd"],"necturbografx":["nec-pc-engine"],"necturbografx16":["nec-pc-engine"],"necturbografxcd":["nec-pc-engine-cd"],"neo geo pocket (ngp)":["snk-ngp"],"neo geo pocket color (ngpc)":["snk-ngpc"],"neo-geo-cd":["snk-neogeo-cd"],"neo-geo-pocket":["snk-neogeo-pocket"],"neo-geo-pocket-color":["neo-geo-pocket-color"],"neocd":["snk-neogeo-cd"],"neocdz":["snk-neogeo-cd"],"neogeo":["neogeo"],"neogeo cd (ngcd)":["snk-neogeo-cd"],"neogeo-cd":["snk-neogeo-cd"],"neogeo64":["hyper-neogeo64"],"neogeoaes":["snk-neogeo-aes"],"neogeocd":["snk-neogeo-cd"],"neogeocdjp":["snk-neogeo-cd"],"neogeomvs":["snk-neogeo-mvs"],"neogeopocket":["snk-neogeo-pocket","snk-ngp"],"neogeopocketcolor":["snk-neogeo-pocket","snk-ngpc"],"nes":["famicom","nintendo-nes"],"nescd":["famicom"],"nesds":["famicom"],"nesfc":["famicom"],"nesh":["nintendo-nes"],"neshacks":["famicom"],"new-nintendo-3ds":["nintendo-3ds"],"new-style-nes":["nintendo-fds","nintendo-nes"],"new-style-super-nes-model-sns-101":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"ng":["neogeo"],"ngage":["ngage"],"ngb":["game-boy"],"ngba":["game-boy-advance"],"ngbc":["game-boy-color"],"ngc":["nintendo-gamecube","snk-ngp"],"ngcd":["snk-neogeo-cd"],"ngp":["snk-neogeo-pocket","snk-ngp","snk-ngpc"],"ngpc":["snk-neogeo-pocket","snk-ngp","snk-ngpc"],"ngpocket":["snk-neogeo-pocket"],"ngpocketcolor":["snk-neogeo-pocket"],"ngw":["handheld-electronic"],"ninds":["nintendo-ds"],"ninetyeight":["pc-98"],"ningba":["game-boy-advance"],"ningbc":["game-boy-color"],"ninnes":["famicom"],"ninsnes":["nintendo-satellaview"],"nintendo ds (nds)":["nintendo-ds"],"nintendo entertainment system (fc)":["nintendo-nes"],"nintendo-3ds":["nintendo-3ds"],"nintendo-64":["nintendo-64"],"nintendo-64dd":["nintendo-64dd"],"nintendo-ds":["nintendo-ds"],"nintendo-ds-lite":["nintendo-ds","nintendo-dsi"],"nintendo-dsi":["nintendo-dsi"],"nintendo-dsi-xl":["nintendo-ds","nintendo-dsi"],"nintendo-fds":["nintendo-fds"],"nintendo-gamecube":["nintendo-gamecube"],"nintendo-gb":["nintendo-gb"],"nintendo-gba":["nintendo-gba"],"nintendo-gbc":["nintendo-gbc"],"nintendo-nes":["nintendo-nes"],"nintendo-pokemon-mini":["nintendo-pokemon-mini"],"nintendo-satellaview":["nintendo-satellaview"],"nintendo-sgb":["nintendo-sgb"],"nintendo-snes":["nintendo-snes"],"nintendo-sufami-turbo":["nintendo-sufami-turbo"],"nintendo-switch":["nintendo-switch"],"nintendo-virtualboy":["nintendo-virtualboy"],"nintendo-wii":["nintendo-wii"],"nintendo-wiiu":["nintendo-wiiu"],"nintendo3ds":["nintendo-3ds"],"nintendo64":["nintendo-64"],"nintendods":["nintendo-ds"],"nintendodsi":["nintendo-ds","nintendo-dsi"],"nintendoentertainmentsystem":["famicom"],"nintendofamicom":["famicom"],"nintendofamicomdisksystem":["famicom-disk-system"],"nintendogameandwatch":["handheld-electronic"],"nintendogameboy":["game-boy"],"nintendogameboyadvance":["game-boy-advance"],"nintendogameboycolor":["game-boy-color"],"nintendogb":["game-boy"],"nintendogba":["game-boy-advance"],"nintendogbc":["game-boy-color"],"nintendogw":["handheld-electronic"],"nintendon64":["nintendo-64"],"nintendones":["famicom"],"nintendonintendo64":["nintendo-64"],"nintendonintendo64dd":["nintendo-64"],"nintendonintendodsi":["nintendo-ds"],"nintendonintendoentertainmentsystem":["famicom"],"nintendopokemini":["nintendo-pokemon-mini"],"nintendopokemonmini":["nintendo-pokemon-mini"],"nintendosfc":["nintendo-satellaview"],"nintendosnes":["nintendo-satellaview"],"nintendosnesmsu":["nintendo-satellaview"],"nintendosnesmsu1":["nintendo-satellaview"],"nintendosupernintendo":["nintendo-satellaview"],"nintendosupernintendoentertainmentsystem":["nintendo-satellaview"],"nintendovb":["nintendo-virtualboy"],"nintendovitrualboy":["nintendo-virtualboy"],"nomad":["sega-megadrive"],"nsnes":["nintendo-satellaview"],"nsv":["nintendo-satellaview"],"nvb":["nintendo-virtualboy"],"nxengine":["cave-story"],"o2":["philips-videopac"],"o2em":["odyssey2"],"odyssey":["odyssey2","philips-videopac"],"odyssey-2-slash-videopac-g7000":["odyssey2"],"odyssey2":["odyssey2"],"olivetti-pc128":["olivetti-pc128"],"onscripter":["onscripter"],"openbeatsofrage":["openbor"],"openbor":["openbor"],"opengoal":["opengoal"],"openjazz":["jazz-jackrabbit"],"openlara":["tomb-raider"],"oric":["oric"],"oricatmos":["oricatmos"],"originalgameboy":["game-boy"],"outlaws":["outlaws"],"outrun":["sega-outrun"],"p2000t":["philips-p2000t"],"p8":["pico8"],"palm":["palm-os"],"palm-os":["palm-os"],"palmos":["palm-os"],"panasonic":["panasonic-3do"],"panasonic-3do":["panasonic-3do"],"pbp":["sony-playstation"],"pbps":["sony-playstation"],"pc":["dos"],"pc engine":["nec-pc-engine"],"pc-8800":["nec-pc-88"],"pc-98":["pc-98"],"pc-9800":["pc-98"],"pc-9800-series":["pc-98"],"pc-fx":["nec-pcfx"],"pc60":["pc60"],"pc80":["pc80"],"pc8000":["nec-pc-88","pc80"],"pc88":["nec-pc-88"],"pc8801":["nec-pc-88"],"pc98":["pc-98"],"pce":["nec-pc-engine","nec-supergrafx"],"pcecd":["nec-pc-engine","nec-pc-engine-cd"],"pcengine":["nec-pc-engine"],"pcenginecd":["nec-pc-engine","nec-pc-engine-cd"],"pcfx":["nec-pcfx"],"pcninetyeight":["pc-98"],"pcsx":["sony-playstation"],"pcv2":["bandai-wswan","bandai-wswanc"],"pcw":["pcw"],"pdark":["pdark"],"pegasus":["pegasus"],"pet":["commodore-pet"],"pgm":["arcade","igs-pgm"],"philips-cd-i":["philips-cdi"],"philips-cdi":["philips-cdi"],"philips-p2000t":["philips-p2000t"],"philips-vg5k":["philips-vg5k"],"philips-videopac":["philips-videopac"],"philipscdi":["philips-cdi"],"pico":["pico8","sega-pico"],"pico-8":["pico8"],"pico-8 (p8)":["pico8"],"pico-8/carts":["pico8"],"pico8":["pico8"],"piece":["aquaplus-piece"],"pkm":["nintendo-pokemon-mini"],"playstation":["sony-playstation"],"playstationchds":["sony-playstation"],"playstationpbps":["sony-playstation"],"playstationportable":["sony-psp"],"plus4":["commodore-plus4"],"pocket-challenge-v2":["pocket-challenge-v2"],"pocketchallengev2":["pocket-challenge-v2"],"pocketstation":["sony-pocketstation"],"poke":["nintendo-pokemon-mini"],"pokemini":["nintendo-pokemon-mini"],"pokemon-mini":["nintendo-pokemon-mini"],"pokemonmini":["nintendo-pokemon-mini"],"pokémon mini (pkm)":["nintendo-pokemon-mini"],"ports":["wolfenstein3d"],"ports/caesar3":["caesar3"],"ports/cave story":["cave-story"],"ports/dinothawr":["dinothawr"],"ports/doom":["chex","doom","heretic","hexen","strife"],"ports/doom 3":["doom3"],"ports/ecwolf/games":["wolfenstein3d"],"ports/flashback":["flashback"],"ports/out run":["sega-outrun"],"ports/prince of persia":["prince-of-persia"],"ports/quake":["quake"],"ports/quake 2":["quake2"],"ports/quake 3":["quake3"],"ports/rick dangerous":["xrick"],"ports/star trek voyager":["quake3"],"ports/tamagotchi":["tamagotchi-p1"],"ports/theme hospital":["theme-hospital"],"ports/tomb raider":["tomb-raider"],"ports/vvvvvv":["vvvvvv"],"ports/wolfenstein 3d":["wolfenstein3d"],"powerslave":["powerslave"],"ppsspp":["sony-psp"],"prboom":["doom","heretic"],"primehack":["nintendo-gamecube","nintendo-wii"],"prince-of-persia":["prince-of-persia"],"ps":["sony-playstation"],"ps1":["sony-playstation"],"ps2":["sony-playstation-2"],"ps3":["sony-playstation-3"],"ps4":["ps4"],"ps4/shortcuts":["ps4"],"pschd":["sony-playstation"],"pschds":["sony-playstation"],"psiso":["sony-playstation"],"psisos":["sony-playstation"],"psone":["sony-playstation"],"psp":["sony-psp"],"pspbp":["sony-playstation"],"pspbps":["sony-playstation"],"pspminis":["sony-psp"],"psvita":["sony-playstation-vita"],"psx":["sony-playstation"],"psxchd":["sony-playstation"],"psxchds":["sony-playstation"],"psxiso":["sony-playstation"],"psxisos":["sony-playstation"],"psxpbp":["sony-playstation"],"psxpbps":["sony-playstation"],"puae":["commodore-amiga","commodore-amiga-cd32","commodore-cdtv"],"pv1000":["casio-pv1000"],"pv2000":["casio-pv2000"],"ql":["sinclair-ql"],"quake":["quake"],"quake (quake)":["quake"],"quake2":["quake2"],"quake3":["quake3"],"raze":["blood","duke3d","exhumed","nam","powerslave","redneck","shadow-warrior","ww2gi"],"redneck":["redneck"],"redream":["sega-dreamcast"],"reminiscence":["flashback"],"retcom":["galaksija"],"retro8":["pico8"],"return-to-castle-wolfenstein":["return-to-castle-wolfenstein"],"ricochet":["ricochet"],"rott":["rott"],"rpgmaker":["rpgmaker"],"rtcw":["return-to-castle-wolfenstein","rott"],"rx78":["bandai-rx78"],"s32x":["sega-32x"],"sam-coupe":["sam-coupe"],"samcoupe":["sam-coupe"],"sameduck":["mega-duck"],"sammy-atomiswave":["sammy-atomiswave"],"sat":["sega-saturn"],"satella":["nintendo-satellaview"],"satellaview":["nintendo-satellaview"],"satourne":["sega-saturn"],"saturn":["sega-saturn"],"saturnjp":["sega-saturn"],"sc-3000":["sega-sc3000"],"sc3000":["sega-sc3000"],"scd":["sega-megacd"],"scumm":["scummvm"],"scummvm":["scummvm"],"scummvm/shortcuts":["scummvm"],"scv":["scv"],"sdc":["sega-dreamcast"],"sdlpop":["prince-of-persia"],"sega 32x (32x)":["sega-32x"],"sega cd (segacd)":["sega-megacd"],"sega dreamcast":["sega-dreamcast"],"sega game gear (gg)":["sega-gamegear"],"sega genesis (md)":["sega-megadrive"],"sega master system (sms)":["sms"],"sega sg-1000 (sg1000)":["sega-sg1000"],"sega-32x":["sega-32x"],"sega-ai":["sega-ai"],"sega-beena":["sega-beena"],"sega-chihiro":["sega-chihiro"],"sega-dreamcast":["sega-dreamcast"],"sega-dreamcast-arcade":["sega-dreamcast-arcade"],"sega-game-box-9":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-gamegear":["sega-gamegear"],"sega-genesis":["sega-genesis"],"sega-hikaru":["sega-hikaru"],"sega-lindbergh":["sega-lindbergh"],"sega-mark-iii":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-master-system-ii":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-mastersystem":["sega-mastersystem"],"sega-mega-drive-2-slash-genesis":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-mega-jet":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-megacd":["sega-megacd"],"sega-megadrive":["sega-megadrive"],"sega-model2":["sega-model2"],"sega-model3":["sega-model3"],"sega-naomi":["sega-naomi"],"sega-naomi2":["sega-naomi2"],"sega-naomigd":["sega-naomigd"],"sega-nomad":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"sega-outrun":["sega-outrun"],"sega-pico":["sega-pico"],"sega-saturn":["sega-saturn"],"sega-sc3000":["sega-sc3000"],"sega-sf7000":["sega-sf7000"],"sega-sg1000":["sega-sg1000"],"sega-stv":["sega-stv"],"sega-systemsp":["sega-systemsp"],"sega-triforce":["sega-triforce"],"sega-vmu":["sega-vmu"],"sega32":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"sega32x":["sega-32x"],"sega32xjp":["sega-32x"],"sega32xna":["sega-32x"],"segaai":["sega-ai"],"segaatomiswave":["sammy-atomiswave"],"segacd":["sega-megacd"],"segadc":["sega-dreamcast"],"segadreamcast":["sega-dreamcast"],"segagamegear":["sega-gamegear"],"segagenesis":["sega-megadrive"],"segagenesismsu":["sega-megadrive"],"segagg":["sega-gamegear"],"segamastersystem":["sega-mastersystem"],"segamcd":["sega-megacd"],"segamdmsu":["sega-megadrive"],"segamegacd":["sega-megacd"],"segamegadrive":["sega-megadrive"],"segamodel3":["sega-model3"],"segams":["sega-mastersystem"],"seganaomi":["sammy-atomiswave"],"segapico":["sega-32x","sega-gamegear","sega-genesis","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sc3000","sega-sg1000"],"segasat":["sega-saturn"],"segasaturn":["sega-saturn"],"segascd":["sega-megacd"],"segasegacd":["sega-megacd"],"segasg1000":["sega-sg1000"],"segasgone":["sega-sg1000"],"segasms":["sega-mastersystem"],"segastv":["sega-stv"],"seggg":["sega-gamegear"],"segms":["sega-mastersystem"],"seventyeighthundred":["atari-7800"],"sfam":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"sfc":["nintendo-satellaview","nintendo-snes"],"sg-1000":["sega-sg1000"],"sg1000":["sega-sg1000"],"sg1k":["sega-sg1000"],"sgb":["nintendo-gb","nintendo-sgb"],"sgb-msu1":["nintendo-sgb"],"sgfx":["nec-pc-engine","nec-supergrafx"],"sgg":["sega-gamegear"],"sgonethousand":["sega-sg1000"],"sgx":["nec-pc-engine","nec-supergrafx"],"sgxcd":["nec-pc-engine"],"shadow-warrior":["shadow-warrior"],"sharp-x1":["sharp-x1"],"sharp-x68000":["sharp-x68000"],"sharpx1":["sharp-x1"],"sharpx6800":["sharp-x68000"],"sharpx68000":["sharp-x68000"],"sharpx68k":["sharp-x68000"],"sinclair-ql":["sinclair-ql"],"sinclair-spectrum":["sinclair-spectrum"],"sinclair-zx-spectrum":["sinclair-zx-spectrum"],"sinclair-zx-spectrum-next":["sinclair-zx-spectrum-next"],"sinclair-zx81":["sinclair-zx81"],"sinclairzx81":["sinclair-zx81"],"singe":["arcade-laserdisc"],"smbx":["smbx"],"sms":["sega-mastersystem","sms"],"smsgg":["sega-mastersystem"],"snes":["nintendo-satellaview","nintendo-snes"],"snes-hacks":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"snes-msu1":["nintendo-snes"],"snes9x":["nintendo-satellaview"],"snesh":["nintendo-snes"],"sneshacks":["nintendo-satellaview"],"snesmsu":["nintendo-satellaview"],"snesmsu1":["nintendo-satellaview","nintendo-snes"],"snesna":["nintendo-snes"],"sng":["neogeo"],"snk-neogeo-aes":["snk-neogeo-aes"],"snk-neogeo-cd":["snk-neogeo-cd"],"snk-neogeo-mvs":["snk-neogeo-mvs"],"snk-neogeo-pocket":["snk-neogeo-pocket"],"snk-ngp":["snk-ngp"],"snk-ngpc":["snk-ngpc"],"snkneogeo":["neogeo"],"snkneogeocd":["snk-neogeo-cd"],"snkneogeopocket":["snk-neogeo-pocket"],"snkneogeopocketcolor":["snk-neogeo-pocket"],"snkngcd":["snk-neogeo-cd"],"snkngp":["snk-neogeo-pocket"],"snkngpc":["snk-neogeo-pocket"],"socrates":["vtech-socrates"],"soh":["soh"],"solarus":["solarus"],"sonic-1-2013":["sonic-1-2013"],"sonic-2-2013":["sonic-2-2013"],"sonic-mania":["sonic-mania"],"sonic3-air":["sonic3-air"],"sonicretro":["sonic-1-2013","sonic-2-2013"],"sony playstation (ps)":["sony-playstation"],"sony-playstation":["sony-playstation"],"sony-playstation-2":["sony-playstation-2"],"sony-playstation-3":["sony-playstation-3"],"sony-playstation-vita":["sony-playstation-vita"],"sony-pocketstation":["sony-pocketstation"],"sony-psp":["sony-psp"],"sonyplaystation":["sony-playstation"],"sonyplaystationportable":["sony-psp"],"sonyps":["sony-playstation"],"sonyps1":["sony-playstation"],"sonypsp":["sony-psp"],"sonypsx":["sony-playstation"],"spec":["sinclair-zx-spectrum"],"spectravideo":["spectravideo"],"spectrum":["sinclair-spectrum","sinclair-zx-spectrum"],"spmp8000":["sunplus-spmp8000"],"ss":["sega-saturn"],"st":["atari-st"],"st-v":["sega-stv"],"star-control-2":["star-control-2"],"starship":["starship"],"ste":["atari-st"],"story":["onscripter"],"strife":["strife"],"studio-ii":["studio-ii"],"stv":["sega-stv"],"sufami":["nintendo-satellaview","nintendo-sufami-turbo"],"sufami-turbo":["nintendo-sufami-turbo"],"sufamiturbo":["nintendo-sufami-turbo"],"sunplus-native32":["sunplus-native32"],"sunplus-spmp8000":["sunplus-spmp8000"],"supa":["nintendo-snes"],"super game boy (sgb)":["nintendo-sgb"],"super nintendo entertainment system (sfc)":["nintendo-snes"],"super nintendo entertainment system (supa)":["nintendo-snes"],"super-famicom-jr-model-shvc-101":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"super-famicom-shvc-001":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"super-gb":["nintendo-sgb"],"super-mario-war":["super-mario-war"],"super-nintendo-original-european-version":["nintendo-satellaview","nintendo-snes","nintendo-sufami-turbo"],"superacan":["superacan"],"superbroswar":["super-mario-war"],"supercassettevision":["scv"],"superchip":["chip8"],"superfamicom":["nintendo-satellaview","nintendo-snes"],"supergameboy":["nintendo-sgb"],"supergrafx":["nec-supergrafx"],"supermariowar":["super-mario-war"],"supernes":["nintendo-satellaview","nintendo-snes"],"supernintendo":["nintendo-satellaview"],"supernintendoentertainmentsystem":["nintendo-satellaview"],"superpretendo":["nintendo-satellaview"],"supervision":["watara-supervision"],"supracan":["supracan"],"svi":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"svicoleco":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"svicolecovision":["colecovision","msx","msx2","msx2plus","msxturbor","sega-sc3000","sega-sf7000","sega-sg1000","spectravideo"],"swancrystal":["bandai-wswan","bandai-wswanc"],"switch":["nintendo-switch"],"symbian":["symbian"],"systemsp":["sega-systemsp"],"t80":["tic80"],"taito-fx1":["taito-fx1"],"tamagotchi-p1":["tamagotchi-p1"],"tandy-1000":["tandy-1000"],"tandy-vis":["tandy-vis"],"tandy1000":["tandy-1000"],"tanodragon":["dragon64"],"tecmo-tps":["tecmo-tps"],"teknoparrot":["namco-system246","namco-system256","namco-system357","sammy-atomiswave","sega-chihiro","sega-hikaru","sega-lindbergh","sega-naomi","sega-naomi2","sega-naomigd","sega-triforce"],"tera-drive":["sega-gamegear","sega-mastersystem","sega-megacd","sega-megadrive","sega-pico","sega-sg1000"],"texas-instruments-ti-83":["texas-instruments-ti-83"],"texasinstrumentsti83":["texas-instruments-ti-83"],"tfc":["tfc"],"tg":["nec-pc-engine"],"tg-cd":["nec-pc-engine-cd"],"tg16":["nec-pc-engine"],"tg16cd":["nec-pc-engine-cd"],"tgb_dual":["nintendo-gb"],"tgcd":["nec-pc-engine-cd"],"tgfx":["nec-pc-engine"],"tgfx16-cd":["nec-pc-engine-cd"],"tgrafx":["nec-pc-engine"],"tgrafx16":["nec-pc-engine"],"theforceengine":["dark-forces","outlaws"],"theme-hospital":["theme-hospital"],"theodore":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"thextech":["smbx"],"thirtytwox":["sega-32x"],"thomson":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"thomson-mo5":["thomson-mo5"],"thomson-mo6":["thomson-mo6"],"thomson-to7":["thomson-to7"],"thomson-to770":["thomson-to770"],"thomson-to8":["thomson-to8"],"thomson-to8d":["thomson-to8d"],"thomson-to9":["thomson-to9"],"thomson-to9plus":["thomson-to9plus"],"thomsonmoto":["olivetti-pc128","thomson-mo5","thomson-mo6","thomson-to7","thomson-to770","thomson-to8","thomson-to8d","thomson-to9","thomson-to9plus"],"ti-99_4a":["ti99"],"ti83":["texas-instruments-ti-83"],"ti99":["ti99"],"ti994a":["ti99"],"tic":["tic80"],"tic-80":["tic80"],"tic80":["tic80"],"tiger-game-com":["tiger-game-com"],"to8":["thomson-to8"],"tomb-raider":["tomb-raider"],"tomb-raider-1":["tomb-raider-1"],"tomb-raider-2":["tomb-raider-2"],"tombraider":["tomb-raider"],"traider1":["tomb-raider-1"],"traider2":["tomb-raider-2"],"triforce":["sega-triforce"],"trs-80":["trs80"],"trs80":["trs80"],"trs80coco":["coco"],"tt":["atari-st"],"turbocd":["nec-pc-engine-cd"],"turbografx":["nec-pc-engine"],"turbografx-16 (pce)":["nec-pc-engine"],"turbografx-cd":["nec-pc-engine"],"turbografx16":["nec-pc-engine"],"turbografxcd":["nec-pc-engine-cd"],"turbographix":["nec-pc-engine"],"tutor":["tutor"],"tvc":["videoton-tvc"],"tvgames":["tvgames"],"tvgc":["elektor-tv-games-computer","emerson-arcadia-2001","interton-vc4000"],"twentysixhundred":["atari-2600"],"tyrian":["tyrian"],"tyrquake":["quake"],"uqm":["star-control-2","ur-quan-masters"],"ur-quan-masters":["ur-quan-masters"],"uzebox":["uzebox"],"varcade":["arcade"],"vb":["nintendo-virtualboy"],"vc4000":["interton-vc4000"],"vec":["vectrex"],"vecrtex":["vectrex"],"vectrex":["vectrex"],"vemulator":["sega-vmu"],"vertarcade":["arcade"],"vertical":["arcade"],"verticalarcade":["arcade"],"vg5000":["philips-vg5k"],"vg5k":["philips-vg5k"],"vgmplay":["vgmplay"],"vic":["commodore-vic20"],"vic-20":["commodore-vic20"],"vic20":["commodore-vic20"],"videobrain":["videobrain"],"videopac":["odyssey2","philips-videopac"],"videopac-g7400":["philips-videopac"],"videopacplus":["philips-videopac"],"videosystem-zn1":["videosystem-zn1"],"videoton-tvc":["videoton-tvc"],"vircon32":["vircon32"],"virtboy":["nintendo-virtualboy"],"virtuaboy":["nintendo-virtualboy"],"virtual boy (vb)":["nintendo-virtualboy"],"virtualboy":["nintendo-virtualboy"],"vis":["tandy-vis"],"visualstory":["onscripter"],"vmac":["apple-macintosh"],"vmu":["sega-vmu"],"vpinball":["vpinball"],"vsmile":["vtech-vsmile"],"vtech-socrates":["vtech-socrates"],"vtech-vsmile":["vtech-vsmile"],"vvvvvv":["vvvvvv"],"watara":["watara-supervision"],"watara-supervision":["watara-supervision"],"watarasupervision":["watara-supervision"],"wii":["nintendo-wii"],"wiiu":["nintendo-wiiu"],"wiiu/roms":["nintendo-wiiu"],"wiiware":["nintendo-wii"],"windows3x":["dos","ibm-pc","ibm-pcjr","pc-98","tandy-1000"],"windows9x":["dos","ibm-pc","ibm-pcjr","pc-98","tandy-1000"],"wolf":["wolfenstein3d"],"wolf3d":["wolfenstein3d"],"wolfenstein":["wolfenstein3d"],"wolfenstein3d":["wolfenstein3d"],"wonderswan":["bandai-wswan","wonderswan","wonderswan-color"],"wonderswan-color":["wonderswan-color"],"wonderswanc":["wonderswan-color"],"wonderswancolor":["wonderswan","wonderswan-color"],"ws":["bandai-wswan","bandai-wswanc","wonderswan","wonderswan-color"],"wsc":["wonderswan","wonderswan-color"],"wswan":["bandai-wswan"],"wswanc":["bandai-wswanc"],"ww2gi":["ww2gi"],"x1":["sharp-x1"],"x16":["commanderx16"],"x68000":["sharp-x68000"],"x68k":["sharp-x68000"],"xash3d_fwgs":["bshift","cstrike","czero","czeror","dmc","gearbox","half-life","ricochet","tfc"],"xbox":["microsoft-xbox"],"xbox360":["microsoft-xbox-360"],"xbox360/roms":["microsoft-xbox-360"],"xegs":["xegs"],"xone":["sharp-x1"],"xrick":["xrick"],"xroar":["coco"],"zc210":["zc210"],"zeldac":["zeldaclassic"],"zeldaclassic":["zeldaclassic"],"zinc":["acclaim-zn1","atari-zn1","atlus-zn1","capcom-zn1","capcom-zn2","eighting-zn1","konami-gq","konami-gv","namco-system11","taito-fx1","tecmo-tps","videosystem-zn1"],"zmachine":["zmachine"],"zsnes":["nintendo-satellaview"],"zx spectrum (zxs)":["sinclair-zx-spectrum"],"zx81":["sinclair-zx81"],"zxeightyone":["sinclair-zx81"],"zxnext":["sinclair-zx-spectrum-next"],"zxs":["sinclair-zx-spectrum"],"zxspectrum":["sinclair-zx-spectrum"]},"format_version":1,"licences":[{"mirror":{"licence":"MIT","repo":"https://github.com/hugo19941994/auto-datfile-generator","scope":"the mirror's scripts only, the DATs it republishes stay under the terms above"},"quote":"Unless otherwise stated on the website, the data made available through this website (\"Data\") may be freely used, copied, reproduced, modified, adapted, combined, published, distributed, and otherwise reused by anyone for any lawful purpose, to the extent that the website operator owns or controls the applicable rights or is authorized to grant such permission. No permission, attribution, citation, backlink, or acknowledgment of the website or its operators is required for such use.","read":"2026-11-03","terms_title":"Data Usage License","terms_updated":"2026-09-11","terms_url":"https://datomatic.no-intro.org/terms.html"},{"quote":"Dumpers only submit metadata and Redump only stores metadata. This information is considered public domain to be used however people see fit","read":"2026-11-03","terms_url":"https://redump.info/about"}],"setups":{"allium":{"file":"setups/allium.json","gzip_size":5091,"sha256":"7e1b5914e15cc2ff710052fc7385fb9457ca955f5a633313d4ce4e8496b32033","size":35139},"amberelec":{"file":"setups/amberelec.json","gzip_size":5613,"sha256":"7c25ef2b727003a6ff285cb255286264acdc726fefbcea43f6f254ed708250be","size":38051},"archr":{"file":"setups/archr.json","gzip_size":7548,"sha256":"b5fe00e263b6df7c536260bbd8b7c41fe3e031a812f40644c8dacc93e049a88f","size":57318},"arkos":{"file":"setups/arkos.json","gzip_size":6069,"sha256":"0f4cf86ae6afb1ecb1c5019f8ac7c598044118b902f11aa9d8823e90ac2ca82d","size":39966},"batocera":{"file":"setups/batocera.json","gzip_size":14457,"sha256":"af163f68ee5069620ebf6b0fcb98ebd7ee721203c0dbf21d55244a024649d5fc","size":134476},"bizhawk":{"file":"setups/bizhawk.json","gzip_size":2469,"sha256":"1bd6306d2f485700b531d3d3ac502cbf36aaa9cfeb954f751ea3bb862aeb7aa9","size":16059},"chaos":{"file":"setups/chaos.json","gzip_size":5625,"sha256":"3a56b30c0992cd78eef8e097e9b1ef8aa479a664ea550d32d7777e18cbed0bb6","size":38023},"crossmix-os":{"file":"setups/crossmix-os.json","gzip_size":4628,"sha256":"8361175b1aebab116d878cc9117f531678969758c13a83b8ece2289c5eca9f46","size":30935},"darkos":{"file":"setups/darkos.json","gzip_size":5877,"sha256":"cc13afb7b04ac99eca20df747da975f55fb0757df63ef70b7923087f75f5a9df","size":37501},"emudeck":{"file":"setups/emudeck.json","gzip_size":8178,"sha256":"0a0d0b8a9c0fa9e6251dc28f88040ed6bc931a0f763ba1df0c07c72791995838","size":59403},"emudeck-windows":{"file":"setups/emudeck-windows.json","gzip_size":8145,"sha256":"e3b15545aafdc94411ba5cea61b6de9d9ce75889dff7ee6fefe3e63d4966fc17","size":60030},"emuelec":{"file":"setups/emuelec.json","gzip_size":7916,"sha256":"3117d2dd0ffb721e11f1e70385ed599f36d54c2d19db1dc598be52b5f8b73445","size":55398},"jelos":{"file":"setups/jelos.json","gzip_size":6646,"sha256":"52d5260b6ef397e1e41f957dc51808d8943848950322107336e886ae963bc2fd","size":47161},"knulli":{"file":"setups/knulli.json","gzip_size":11986,"sha256":"73cda1ec1afde3494896c2d82ae185eb0013721b817cf46293be84a7967900af","size":97205},"kolos":{"file":"setups/kolos.json","gzip_size":6170,"sha256":"1ab8b0c0a57bf6bb16f781bd1b97fe28e3c0d961a575af86546a482e5de4d150","size":43277},"koriki":{"file":"setups/koriki.json","gzip_size":4029,"sha256":"d2f15741cd1b16ac6f1f51dc1afa09a1831e6502b5d2ead7ee507a051ba414f1","size":22608},"lakka":{"file":"setups/lakka.json","gzip_size":517,"sha256":"3adec2a8c4f9a992e271382650338d00310db3de3bffd5448109c635ec03e2fd","size":1037},"minui":{"file":"setups/minui.json","gzip_size":2055,"sha256":"0a38d3d3b6d0fc16ed59a9fa420aba91a3402dc4ae584b349dc19076ad4818cc","size":10242},"misterfpga":{"file":"setups/misterfpga.json","gzip_size":3578,"sha256":"5c6e306970b67c12e6cc25c82328691fd13ad0c554ce1309efd1f0278158ad07","size":23518},"miyoocfw":{"file":"setups/miyoocfw.json","gzip_size":959,"sha256":"cb13cdcae35830c58d6465ff2f6e36c2d0558c576fd8eb8fd053537fb007573b","size":2285},"muos":{"file":"setups/muos.json","gzip_size":7386,"sha256":"3beffb9369d734978047ec64a440202704d9682bfe25c9c05e159c3b4618ed87","size":46601},"myminui":{"file":"setups/myminui.json","gzip_size":2797,"sha256":"8cac64f671ed745b8cd713be9e88b9f83e8e83061c32ff62fca646c91ea986ea","size":14717},"nextui":{"file":"setups/nextui.json","gzip_size":2950,"sha256":"e9eb9a3d06cc796bf54b185691144c828a2c7dc767a9b83c25fb310ca3b64d1d","size":15309},"onion":{"file":"setups/onion.json","gzip_size":6337,"sha256":"35cad2ef2a7162b93035cbeafd2ac881ba17a777ae11d05e16c4c4fb071071e8","size":34615},"pan4elec":{"file":"setups/pan4elec.json","gzip_size":5717,"sha256":"2534db783b7eb7037c4457fc9ae540d885aa6fdd3a59411df7856aeb64ef68b9","size":39455},"plumos-mf":{"file":"setups/plumos-mf.json","gzip_size":6141,"sha256":"5c2ae5292af66a32a16ad6c70ead6cbabef934c5e3e5261d6d92e9942bfd403b","size":33703},"plumos-pixel2":{"file":"setups/plumos-pixel2.json","gzip_size":6180,"sha256":"4c674898610e234f9a6711db34f9cebec91eaeb76d160e13a62eabd13a702720","size":31896},"recalbox":{"file":"setups/recalbox.json","gzip_size":9153,"sha256":"965c44508d9fe798954cdf392db0726e8b3be5796b0b5dea6b3a92aaba12bb47","size":69567},"retroarch":{"file":"setups/retroarch.json","gzip_size":476,"sha256":"025188a526422c7d79c996edc19c486c9b4f322798325a18405733066483b3d6","size":786},"retrobat":{"file":"setups/retrobat.json","gzip_size":10307,"sha256":"39e0945e6d33c1312f73b3b3ff26ee9a81d70d5061cd78a415ca87c0d68ad1b6","size":70854},"retrodeck":{"file":"setups/retrodeck.json","gzip_size":7183,"sha256":"f29336cedac2da9e8b1ccb89d9b608a9a8f147564ed6abafdaa8e0b4c922fbae","size":53597},"retropie":{"file":"setups/retropie.json","gzip_size":4670,"sha256":"f80f62e4d96cf62937da5f3e434fa6754bbf9eb17738b0d24062be7de9e5c4a2","size":24007},"rocknix":{"file":"setups/rocknix.json","gzip_size":7590,"sha256":"ff85bfdbdbc852265f5a7d71327e4df6512c53515a70add8d124f4ac3281689e","size":58836},"romm":{"file":"setups/romm.json","gzip_size":3790,"sha256":"73d2f0f4d95e9146ac9f850bf41e3a85bb133e543749dcecb785e80c67648946","size":30844},"spruceos":{"file":"setups/spruceos.json","gzip_size":6419,"sha256":"ccbe920491891b66c1db61e4c09abae154d367421856a8817d4c7e22111000c2","size":28367},"unofficialos":{"file":"setups/unofficialos.json","gzip_size":7152,"sha256":"bec913e663e25217e0a84db7bb0042a6f0b38d7d2a34d52e5de0c7a3fc5de4a6","size":51670}},"systems":{"atari-5200":{"file":"systems/atari-5200.json","gzip_size":4092,"sha256":"55bf18d45a6a7d75cda37ac27088b2510c4a27894157bca7f15452d67b5b76af","size":12435},"atari-7800":{"file":"systems/atari-7800.json","gzip_size":887,"sha256":"2ff726865df34502c72be99d18948dedd0782f19a38a215297c89c813d648481","size":1668},"atari-jaguar":{"file":"systems/atari-jaguar.json","gzip_size":292,"sha256":"a0215745664dcfdbe9f454e226561e61fdb8f60c0d72ba877b52e8f1b7929934","size":413},"atari-lynx":{"file":"systems/atari-lynx.json","gzip_size":1678,"sha256":"ab7cc8614064981951ddcca1c4a9d263b49b04fc0a89f2a984de08c20392a3d0","size":3634},"colecovision":{"file":"systems/colecovision.json","gzip_size":4412,"sha256":"9eb8ecd30e9877d6a36551ef03eb70b4151152023d0133a3b05109022d56151c","size":11293},"commodore-amiga":{"file":"systems/commodore-amiga.json","gzip_size":290,"sha256":"9988cce7dd6403204ab580edbc9522e5a9080c790bf04a98e6c3d435bbee42e3","size":788},"commodore-amiga-cd32":{"file":"systems/commodore-amiga-cd32.json","gzip_size":265,"sha256":"2c4d3823a40cdd4197209b2abaf38db755218130812f92c03ddad2ee0fd4a46d","size":456},"intellivision":{"file":"systems/intellivision.json","gzip_size":4507,"sha256":"748c7d7887370f16d5992fa7e53381108a24366584239543ccadf4347ccc8f01","size":12528},"laseractive":{"file":"systems/laseractive.json","gzip_size":363,"sha256":"d96ade3209fda8314cf9010a5ced458ad95037867fa204c8e457b05c46f5d80d","size":723},"msx":{"file":"systems/msx.json","gzip_size":214,"sha256":"e73b146104ffeb5ececb7173a5a3ce3903d0d0de1fde5e301658252c5675359b","size":285},"msx2plus":{"file":"systems/msx2plus.json","gzip_size":331,"sha256":"21b724cfbe529d2d992a7a633c570674c70753a42153befabe8c86c689b66c49","size":462},"nec-pc-engine":{"file":"systems/nec-pc-engine.json","gzip_size":9241,"sha256":"1fe6db213678d40878dfa6c411d1031319ef9f0d605b5653d1b4aa01e8a04452","size":27628},"nec-pc-engine-cd":{"file":"systems/nec-pc-engine-cd.json","gzip_size":12487,"sha256":"754e02b8e7e99135454008a89e883c9d6829a1f62cbc759abba2e5991866f9e9","size":43447},"nec-supergrafx":{"file":"systems/nec-supergrafx.json","gzip_size":831,"sha256":"111bd2ee40d75db1d140f263313bb6c97e31965883dbdf16906893e043f8d52d","size":1441},"neo-geo-pocket-color":{"file":"systems/neo-geo-pocket-color.json","gzip_size":3371,"sha256":"484bdf90a16917d464f28e8de1bbdce8d369c274d20d3d8c55ba0911a7a5e9ba","size":10072},"nintendo-3ds":{"file":"systems/nintendo-3ds.json","gzip_size":485,"sha256":"5e903462cea76f28681397aee0e6e3f119cd206ea60dd18ae734cbc5c5779cf7","size":808},"nintendo-64":{"file":"systems/nintendo-64.json","gzip_size":21504,"sha256":"24acf25d8c43e5227dc674057b41deffcc5c6db39f0f09e4ab258334749acd28","size":73974},"nintendo-64dd":{"file":"systems/nintendo-64dd.json","gzip_size":2541,"sha256":"82a62ff230513d4b3b7ec6bcb1ac8efe4101ff4e301dfea4300e13dea12cbc4a","size":7705},"nintendo-ds":{"file":"systems/nintendo-ds.json","gzip_size":186345,"sha256":"9f74ade6f2fff15b51c410ce83aafccdb3cb0c1701c9cd42a593ca84d1ab4c33","size":566900},"nintendo-dsi":{"file":"systems/nintendo-dsi.json","gzip_size":240,"sha256":"a470b580ca27fdf66bcf1213d3f7d3ab3acbf2a6272dd445a9ade5fc4cd4b569","size":345},"nintendo-fds":{"file":"systems/nintendo-fds.json","gzip_size":9025,"sha256":"59f40fb23866487b95f2a0b709b216c6c66de694f4528b0c4b53aae3fc1f4e7d","size":30626},"nintendo-gamecube":{"file":"systems/nintendo-gamecube.json","gzip_size":46580,"sha256":"afd0881edb18be56407268b9c2c6a6437e2670baa76203e4e03da33fac8ed4ee","size":189501},"nintendo-gb":{"file":"systems/nintendo-gb.json","gzip_size":39786,"sha256":"8cfeadc99c49af41435728dc1e5343ca14d632bcc4681e87f286ca41e3281868","size":127687},"nintendo-gba":{"file":"systems/nintendo-gba.json","gzip_size":76891,"sha256":"c254fa7973aa84f1b9e49f256437a03360d06ecf3b80838cae36bc5bbd84b80f","size":248499},"nintendo-gbc":{"file":"systems/nintendo-gbc.json","gzip_size":44917,"sha256":"3c281676ea9778761b00d454661d9fa7c5dfb70cbe435c1bb30158ef766d418f","size":154739},"nintendo-nes":{"file":"systems/nintendo-nes.json","gzip_size":89663,"sha256":"6e0e1d1f2681c10998518abe4b46cd2ea4a9f993316432876f19f8a52167e332","size":274177},"nintendo-pokemon-mini":{"file":"systems/nintendo-pokemon-mini.json","gzip_size":1537,"sha256":"083eed4eccdfcb12daab714d7cf3a595cbe7554010a7c79171916bc97b4611dc","size":4199},"nintendo-satellaview":{"file":"systems/nintendo-satellaview.json","gzip_size":13245,"sha256":"fc91880841ba301ff3fc2e7edfe53eed876edb33f9d7534d814d39dacd0a1654","size":51819},"nintendo-sgb":{"file":"systems/nintendo-sgb.json","gzip_size":746,"sha256":"617365112f8b93207b50323f761c4073d1c5aee87d877675822fb34247bab373","size":1621},"nintendo-snes":{"file":"systems/nintendo-snes.json","gzip_size":79838,"sha256":"5a1ffe5d5c958424793b77ce016c65205967f1d8ff910ffc6e8118f00b584001","size":249778},"nintendo-sufami-turbo":{"file":"systems/nintendo-sufami-turbo.json","gzip_size":1512,"sha256":"8070d9473708fee7ada3481daecd09e5389573652f1986e4a00275821337ac09","size":3210},"nintendo-wii":{"file":"systems/nintendo-wii.json","gzip_size":563,"sha256":"bff9fd15aa2896dbe9b5f60e713b04dd2d40dcfbee5dc8699a7ccec14536a466","size":1229},"odyssey2":{"file":"systems/odyssey2.json","gzip_size":3297,"sha256":"978953171a55509460854a4747ffbb94d9a0f16f0b2304abfe1aedbc3392582d","size":7851},"panasonic-3do":{"file":"systems/panasonic-3do.json","gzip_size":17243,"sha256":"38035ce01095a974ae7d0e1818f0d0c65f54cd89d326fa315893ef1062de9c0d","size":50013},"sega-32x":{"file":"systems/sega-32x.json","gzip_size":3894,"sha256":"6b0da0c37349c2340197d7a178f5862d942c43819f494ab2552e00e6dc83d360","size":16064},"sega-dreamcast":{"file":"systems/sega-dreamcast.json","gzip_size":36655,"sha256":"0041c8525fa27290841faa607ac8047e016f98896c5ff33b502495e8b37e14ed","size":122845},"sega-gamegear":{"file":"systems/sega-gamegear.json","gzip_size":14821,"sha256":"12ddb73bef81410d643f6b09ac0da2e49adb3dca8943f273f776d9c5c67583a2","size":54189},"sega-mastersystem":{"file":"systems/sega-mastersystem.json","gzip_size":14536,"sha256":"5669393a76b922ed2e14995c66c2804ccc7a1165a2416e50722c954aba560360","size":47411},"sega-megacd":{"file":"systems/sega-megacd.json","gzip_size":15396,"sha256":"ce94f85bf4ff3c8d4e58357c68cdb39a2b12d4b8052e61e77fd3189d2a3052c9","size":46794},"sega-megadrive":{"file":"systems/sega-megadrive.json","gzip_size":53279,"sha256":"10507cfccd4ec9fc2c63e71bbc83fda1001e565819665bb0b65d09f4506054bb","size":180871},"sega-naomi":{"file":"systems/sega-naomi.json","gzip_size":276,"sha256":"7da5520e2aa6c2f0e1e4e8f5417be5776d196960e793f740c3dd05ff37ab88e9","size":486},"sega-saturn":{"file":"systems/sega-saturn.json","gzip_size":66052,"sha256":"d3a87b71ce4771f0c4a93fa2d0621f100da77005b37e75faa541aec873a0f319","size":199102},"sega-stv":{"file":"systems/sega-stv.json","gzip_size":782,"sha256":"eb73b6449be6a70bf942f39c49322c03770ddd3bbb6a40f1add7f0ab90bd0841","size":2424},"sega-triforce":{"file":"systems/sega-triforce.json","gzip_size":286,"sha256":"7c68241a76bef2b4ff0cba2ea2f312250abc8585fcc52b41ced2bcbc76175726","size":539},"snk-neogeo-cd":{"file":"systems/snk-neogeo-cd.json","gzip_size":4649,"sha256":"ccc757ea85e9398347cc4ff1db29118a1923422aed21a7437d7c54806330fa8e","size":12370},"snk-neogeo-pocket":{"file":"systems/snk-neogeo-pocket.json","gzip_size":1070,"sha256":"c88819387ac6a344a017198e7bc2560fe306ba9f80350483dab29dd48a03342b","size":2179},"sony-playstation":{"file":"systems/sony-playstation.json","gzip_size":323936,"sha256":"e27d244a888c5246e00166eba8a893032cf96a85dff08905c77d696d997bd861","size":939819},"sony-playstation-2":{"file":"systems/sony-playstation-2.json","gzip_size":361140,"sha256":"410adb750ffbce2e2389facace712c1ad784cfa128da2763b5821ba5cc0ffac7","size":1075273},"vectrex":{"file":"systems/vectrex.json","gzip_size":1615,"sha256":"908725537d457bd597c180c61705f494209c412d728951944d86e504f40387ad","size":3457},"wonderswan":{"file":"systems/wonderswan.json","gzip_size":5961,"sha256":"e0949ae3fd96c11f54db7f56d1d9bc7b9613afe54d411ac16241095eb20f42ba","size":18778},"wonderswan-color":{"file":"systems/wonderswan-color.json","gzip_size":5618,"sha256":"41931c79d3546731ac4665f711c3d6296d30a26244be08e3bd9da01cbfdfa470","size":18027}}} diff --git a/schemas/database.schema.json b/schemas/database.schema.json index 8970b58bf..70e0f2db9 100644 --- a/schemas/database.schema.json +++ b/schemas/database.schema.json @@ -114,6 +114,9 @@ }, "by_path_suffix": { "$ref": "#/$defs/listIndex" + }, + "by_shadowed_alias": { + "$ref": "#/$defs/listIndex" } } } diff --git a/scripts/common.py b/scripts/common.py index e53889378..d8f8c3d49 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -90,6 +90,71 @@ def _casefold_name_index(by_name: dict) -> dict[str, list[str]]: return folded +# bios/Other/ and bios/Arcade/ file a copy by +# who loads it, not by machine. +BUCKET_FOLDERS = frozenset({"Other", "Arcade"}) + + +def names_manufacturer(sys_id: str, manufacturer: str) -> bool: + """Whether a system id names a maker folder: nec-pc-88 names NEC.""" + slug = manufacturer.lower().replace(" ", "-") + return sys_id == slug or sys_id.startswith(f"{slug}-") + + +def _maker_folder(path: str, bios_dir: str) -> str | None: + """The bios// folder a collection path is filed under.""" + prefix = f"{bios_dir.rstrip('/')}/" + if not path.startswith(prefix): + return None + parts = path[len(prefix):].split("/") + return parts[0] if len(parts) >= 2 else None + + +# One slot, keyed like the casefold view: the files dict, its size, the folders. +_maker_folders_cache: list[tuple[dict, int, frozenset[str]]] = [] + + +def _maker_folders(db: dict) -> frozenset[str]: + """Every maker folder the collection files a copy under.""" + files_db = db.get("files", {}) + if _maker_folders_cache: + source, size, folders = _maker_folders_cache[0] + if source is files_db and size == len(files_db): + return folders + bios_dir = str(db.get("bios_dir") or "bios") + folders = frozenset( + folder + for entry in files_db.values() + if (folder := _maker_folder(str(entry.get("path", "")), bios_dir)) + and folder not in BUCKET_FOLDERS + ) + _maker_folders_cache[:] = [(files_db, len(files_db), folders)] + return folders + + +def system_makers(file_entry: dict, db: dict) -> frozenset[str]: + """The maker folders a platform entry's system names. + + Only a platform's own entry is asked: one that names an owning emulator + is placed by that emulator's tree. Empty when the system names no maker + (pc88, arcade), so nothing is narrowed there. + """ + sys_id = str(file_entry.get("platform_system") or "") + if not sys_id or _owner_tokens(file_entry): + return frozenset() + return frozenset( + folder for folder in _maker_folders(db) if names_manufacturer(sys_id, folder) + ) + + +def other_maker(path: str, makers: frozenset[str], db: dict) -> bool: + """Whether a path is filed under a maker the entry's system does not name.""" + if not makers: + return False + folder = _maker_folder(path, str(db.get("bios_dir") or "bios")) + return folder is not None and folder not in BUCKET_FOLDERS and folder not in makers + + def name_match_size_ok(file_entry: dict, candidate_size: int | None) -> bool: """Whether a candidate found by name may be the file the entry describes. @@ -357,6 +422,19 @@ def load_platform_config(platform_name: str, platforms_dir: str = "platforms") - for sys_id, system in config.get("systems", {}).items() } + # Each entry carries the system that declares it: a hashless name match is + # narrowed to the maker folder that system names (resolve_local_file). + # Fresh dicts, since a YAML anchor can share one entry between systems. + config["systems"] = { + sys_id: { + **system, + "files": [{**f, "platform_system": sys_id} for f in system["files"]], + } + if isinstance(system, dict) and system.get("files") + else system + for sys_id, system in config.get("systems", {}).items() + } + # The registry key, which per-platform profile fields (installed_on, # not_bundled_on) name: the display name differs (MiSTer FPGA). config["_key"] = platform_name @@ -1573,6 +1651,10 @@ def resolve_local_file( # hash and path steps above run first, so collecting the real bytes makes # the entry resolve. unsourceable = bool(file_entry.get("unsourceable")) or own_file_absent + # A platform's own hashless entry whose system names a maker takes no copy + # filed under another maker: AmberELEC's nec-pc-88 DISK.ROM, which QUASI88 + # reads as the 2 KB PC-88 disk ROM, got the 16 KB MSX one by name. + makers = frozenset() if has_strong_hash else system_makers(file_entry, db) if not has_strong_hash and not unsourceable: candidates = [] @@ -1637,6 +1719,26 @@ def resolve_local_file( continue if os.path.exists(path) and path not in candidates: candidates.append(path) + if makers and candidates: + candidates = [p for p in candidates if not other_maker(p, makers, db)] + if not candidates: + # The name belongs to another maker's file here. An emulator + # of this system may still read it as an alias of one of its + # own files, an alias by_name leaves out because a primary + # already carries the name: QUASI88 reads DISK.ROM as + # n88sub.rom. + shadowed = db.get("indexes", {}).get("by_shadowed_alias", {}) + for try_name in own_names: + for match_sha1 in shadowed.get(try_name, []): + path = files_db.get(match_sha1, {}).get("path", "") + if ( + _maker_folder(path, str(db.get("bios_dir") or "bios")) + in makers + and _size_ok(match_sha1) + and os.path.exists(path) + and path not in candidates + ): + candidates.append(path) if candidates: if zipped_file: candidates = [p for p in candidates if ".zip" in os.path.basename(p)] @@ -1701,6 +1803,8 @@ def resolve_local_file( if zipped_file: candidates = [c for c in candidates if ".zip" in os.path.basename(c[0])] + # Another maker's file is no mismatch of this one, it is another file. + candidates = [c for c in candidates if not other_maker(c[0], makers, db)] # A size the emulator itself verifies settles a name collision, so a # candidate that fits is preferred over one that does not: "ROM" answers # both an Apple IIgs image and a Macintosh one. It ranks rather than diff --git a/scripts/generate_db.py b/scripts/generate_db.py index 3a9ebe0af..9d81396ef 100644 --- a/scripts/generate_db.py +++ b/scripts/generate_db.py @@ -294,6 +294,28 @@ def build_indexes(files: dict, aliases: dict) -> dict: } +def shadowed_alias_index( + shadowed: list[tuple[str, set[str], list[str]]], by_name: dict +) -> dict[str, list[str]]: + """Profile aliases that a primary's name keeps out of by_name. + + QUASI88 reads DISK.ROM as n88sub.rom, but DISK.ROM is the MSX disk ROM's + own name, so by_name never points it at the PC-88 file. The resolver reads + this index only where the system names a maker and no copy filed under + that maker answers the name. An entry with no hash designates the content + its own name holds alone in by_name. + """ + index: dict[str, set[str]] = {} + for entry_name, matched, taken in shadowed: + held = by_name.get(entry_name, []) + designated = matched or (set(held) if len(held) == 1 else set()) + for alias in taken: + fresh = designated - set(by_name.get(alias, [])) + if fresh: + index.setdefault(alias, set()).update(fresh) + return {alias: sorted(sha1s) for alias, sha1s in sorted(index.items())} + + def load_cache(cache_path: str) -> dict: """Load cache file if it exists.""" try: @@ -429,8 +451,9 @@ def main() -> int: if preserved: print(f" Preserved {preserved} large file entries from existing database") + shadowed: list[tuple[str, set[str], list[str]]] = [] try: - platform_aliases = _collect_all_aliases(files, aliases) + platform_aliases = _collect_all_aliases(files, aliases, shadowed) except UnreadableSource as exc: for source in exc.sources: print(f"Error: cannot read {source}", file=sys.stderr) @@ -446,6 +469,7 @@ def main() -> int: provenance_counts = annotate_provenance(files, snapshots) indexes = build_indexes(files, aliases) + indexes["by_shadowed_alias"] = shadowed_alias_index(shadowed, indexes["by_name"]) total_size = sum(entry["size"] for entry in files.values()) database = { @@ -508,11 +532,17 @@ class UnreadableSource(Exception): self.sources = sources -def _collect_all_aliases(files: dict, copies: dict | None = None) -> dict: +def _collect_all_aliases( + files: dict, + copies: dict | None = None, + shadowed: list[tuple[str, set[str], list[str]]] | None = None, +) -> dict: """Collect alternate filenames from platform YAMLs, core-info, and known aliases. Registers alternate names so generate_pack can resolve files stored under different names. ``copies`` maps a sha1 to the other files the scan found with that content. + ``shadowed`` receives, per profile entry, its name, the contents its hashes + designate and the aliases a primary's name already carries. """ md5_to_sha1 = {} name_to_sha1 = {} @@ -635,6 +665,13 @@ def _collect_all_aliases(files: dict, copies: dict | None = None) -> dict: entry_aliases.insert(0, entry_name) if not entry_aliases: continue + if shadowed is not None: + taken = [ + alias for alias in entry_aliases + if alias != entry_name and alias in named_primaries + ] + if taken: + shadowed.append((entry_name, set(matched), taken)) if not matched and len(holders.get(entry_name, ())) == 1: # A name carried by several contents names none of them: # quasi88's disk.rom aliases went to whichever diff --git a/scripts/generate_site.py b/scripts/generate_site.py index e92ea2803..d01343075 100644 --- a/scripts/generate_site.py +++ b/scripts/generate_site.py @@ -40,6 +40,8 @@ from typing import TypeVar sys.path.insert(0, os.path.dirname(__file__)) from common import ( + BUCKET_FOLDERS, + names_manufacturer, upstream_profile_index, build_zip_contents_index, GAME_DATA_TOPS, @@ -219,21 +221,10 @@ def _copy_places(db: dict) -> dict[str, set[tuple[str, str, str]]]: return places -# bios/Other/ and bios/Arcade/ file a copy by -# who loads it, not by machine. A copy also filed under a machine's maker -# places the system there. -_BUCKET_FOLDERS = frozenset({"Other", "Arcade"}) - - def _slug(manufacturer: str) -> str: return manufacturer.lower().replace(" ", "-") -def _names_manufacturer(sys_id: str, manufacturer: str) -> bool: - slug = _slug(manufacturer) - return sys_id == slug or sys_id.startswith(f"{slug}-") - - def _copies_by_path(db: dict) -> dict[str, set[tuple[str, str, str]]]: """The copy places of each content, keyed by the path the database keeps.""" files = db.get("files", {}) @@ -276,13 +267,13 @@ def _system_folder( declared = str(fe.get("name", "")).casefold() named = { (m, c) for m, c, base in held - if base.casefold() == declared or _names_manufacturer(sys_id, m) + if base.casefold() == declared or names_manufacturer(sys_id, m) } for place in named or {(m, c) for m, c, _ in held}: votes[place] = votes.get(place, 0) + 1 if votes: - own = [place for place in votes if _names_manufacturer(sys_id, place[0])] - makers = [place for place in votes if place[0] not in _BUCKET_FOLDERS] + own = [place for place in votes if names_manufacturer(sys_id, place[0])] + makers = [place for place in votes if place[0] not in BUCKET_FOLDERS] candidates = own or makers or list(votes) return max(sorted(candidates), key=lambda place: votes[place]) for fe in files: diff --git a/tests/test_maker_folder_names.py b/tests/test_maker_folder_names.py new file mode 100644 index 000000000..02194fbd5 --- /dev/null +++ b/tests/test_maker_folder_names.py @@ -0,0 +1,274 @@ +"""A hashless platform entry takes no file filed under another maker. + +AmberELEC's nec-pc-88 declares DISK.ROM with an empty md5. QUASI88 reads that +name as n88sub.rom, the 2 KB PC-88 disk ROM (libretro.c:1085), but the name +step served the 16 KB MSX disk ROM, the only primary called DISK.ROM. The +quasi88 alias could not point the name at the PC-88 file, since by_name +refuses an alias a primary already carries. by_shadowed_alias keeps it, and +the resolver reads it only once the system's own maker folder is all that +remains. +""" + +from __future__ import annotations + +import hashlib +import json +import os +import subprocess +import sys +import tempfile +import unittest +import zipfile +from pathlib import Path + +import yaml + +REPO_ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(REPO_ROOT / "scripts")) + +import common # noqa: E402 +import generate_db # noqa: E402 +import generate_pack as builder # noqa: E402 +import generate_site # noqa: E402 +from verify import verify_platform # noqa: E402 + +MSX_DISK = b"M" * 16384 +PC88_DISK = b"N" * 2048 + +QUASI88 = """\ +emulator: QUASI88 +type: libretro +systems: [nec-pc-88] +cores: [quasi88] +files: + - name: n88sub.rom + path: quasi88/n88sub.rom + required: false + aliases: [N88SUB.ROM, DISK.ROM] +""" + +PLATFORM = { + "platform": "Handheld", + "version": "1", + "verification_mode": "md5", + "base_destination": "", + "cores": ["quasi88"], + "systems": { + "nec-pc-88": { + "files": [ + {"name": "DISK.ROM", "destination": "bios/quasi88/DISK.ROM", + "required": True}, + ], + }, + "microsoft-msx": { + "files": [ + {"name": "DISK.ROM", "destination": "bios/Machines/DISK.ROM", + "required": True}, + ], + }, + }, +} + + +class _Collection(unittest.TestCase): + def setUp(self): + (REPO_ROOT / "tmp").mkdir(exist_ok=True) + self._tmp = tempfile.TemporaryDirectory(dir=REPO_ROOT / "tmp") + self._cwd = os.getcwd() + os.chdir(self._tmp.name) + for relative, payload in ( + ("bios/Microsoft/MSX/DISK.ROM", MSX_DISK), + ("bios/NEC/PC-88/n88sub.rom", PC88_DISK), + ): + Path(relative).parent.mkdir(parents=True, exist_ok=True) + Path(relative).write_bytes(payload) + Path("emulators").mkdir() + Path("platforms").mkdir() + Path("emulators/quasi88.yml").write_text(QUASI88) + Path("platforms/handheld.yml").write_text(yaml.dump(PLATFORM)) + Path("platforms/_registry.yml").write_text( + yaml.dump({"platforms": {"handheld": {"status": "active"}}}) + ) + subprocess.run( + [sys.executable, str(REPO_ROOT / "scripts/generate_db.py"), "--force", + "--bios-dir", "bios", "--output", "database.json"], + check=True, capture_output=True, + ) + self.db = common.load_database("database.json") + common._platform_config_cache.clear() + common._emulator_profiles_cache.clear() + self.config = common.load_platform_config("handheld", "platforms") + self.profiles = common.load_emulator_profiles("emulators") + + def tearDown(self): + common._platform_config_cache.clear() + common._emulator_profiles_cache.clear() + os.chdir(self._cwd) + self._tmp.cleanup() + + def _entry(self, system: str) -> dict: + return self.config["systems"][system]["files"][0] + + def _manifest(self) -> dict: + return builder.generate_manifest( + "handheld", "platforms", self.db, "bios", "platforms/_registry.yml", + emulators_dir="emulators", emu_profiles=self.profiles, offline=True, + ) + + +class ShadowedAliasIndex(_Collection): + def test_the_alias_a_primary_carries_is_kept_apart(self): + sha1 = hashlib.sha1(PC88_DISK).hexdigest() + indexes = self.db["indexes"] + self.assertEqual(indexes["by_shadowed_alias"]["DISK.ROM"], [sha1]) + self.assertNotIn(sha1, indexes["by_name"]["DISK.ROM"]) + + def test_an_entry_with_no_single_content_designates_nothing(self): + shadowed = [("a.rom", set(), ["B.ROM"]), ("c.rom", {"1" * 40}, ["B.ROM"])] + by_name = {"a.rom": ["2" * 40, "3" * 40], "B.ROM": ["4" * 40]} + self.assertEqual( + generate_db.shadowed_alias_index(shadowed, by_name), {"B.ROM": ["1" * 40]} + ) + + +class DiskRomGoesToThePc88File(_Collection): + def test_the_entry_knows_its_system(self): + self.assertEqual(self._entry("nec-pc-88")["platform_system"], "nec-pc-88") + + def test_resolution(self): + entry = self._entry("nec-pc-88") + path, status = common.resolve_local_file( + entry, self.db, dest_hint=entry["destination"] + ) + self.assertEqual((path, status), ("bios/NEC/PC-88/n88sub.rom", "name_exact")) + + def test_the_msx_system_keeps_the_msx_file(self): + entry = self._entry("microsoft-msx") + path, _status = common.resolve_local_file( + entry, self.db, dest_hint=entry["destination"] + ) + self.assertEqual(path, "bios/Microsoft/MSX/DISK.ROM") + + def test_a_declared_hash_still_decides(self): + entry = {**self._entry("nec-pc-88"), "md5": hashlib.md5(MSX_DISK).hexdigest()} + path, status = common.resolve_local_file(entry, self.db) + self.assertEqual((path, status), ("bios/Microsoft/MSX/DISK.ROM", "md5_exact")) + + def test_an_emulator_entry_is_not_narrowed(self): + entry = {**self._entry("nec-pc-88"), "source_profile": "msx-emu"} + path, _status = common.resolve_local_file(entry, self.db) + self.assertEqual(path, "bios/Microsoft/MSX/DISK.ROM") + + def test_no_pc88_copy_leaves_it_missing_not_mismatched(self): + Path("bios/NEC/PC-88/n88sub.rom").unlink() + entry = self._entry("nec-pc-88") + self.assertEqual( + common.resolve_local_file(entry, self.db, dest_hint=entry["destination"]), + (None, "not_found"), + ) + + def test_verify(self): + report = verify_platform(self.config, self.db, "emulators", self.profiles) + paths = {d["name"]: set() for d in report["details"]} + for d in report["details"]: + paths[d["name"]].add(d.get("path")) + self.assertEqual( + paths["DISK.ROM"], + {"bios/NEC/PC-88/n88sub.rom", "bios/Microsoft/MSX/DISK.ROM"}, + ) + + def test_pack(self): + zip_path = builder.generate_pack( + "handheld", "platforms", self.db, "bios", "out", + emulators_dir="emulators", emu_profiles=self.profiles, offline=True, + ) + with zipfile.ZipFile(zip_path) as zf: + self.assertEqual(zf.read("bios/quasi88/DISK.ROM"), PC88_DISK) + self.assertEqual(zf.read("bios/Machines/DISK.ROM"), MSX_DISK) + + def test_the_manifest_changes_only_that_row(self): + manifest = self._manifest() + original = (common.load_platform_config, common.system_makers) + + def untagged(*args, **kwargs): + config = original[0](*args, **kwargs) + for system in config["systems"].values(): + for f in system.get("files") or []: + f.pop("platform_system", None) + return config + + common._platform_config_cache.clear() + builder.load_platform_config = common.load_platform_config = untagged + common.system_makers = lambda *args: frozenset() + try: + before = self._manifest() + finally: + builder.load_platform_config = common.load_platform_config = original[0] + common.system_makers = original[1] + common._platform_config_cache.clear() + rows = {f["dest"]: f for f in manifest["files"]} + old_rows = {f["dest"]: f for f in before["files"]} + self.assertEqual(rows["bios/quasi88/DISK.ROM"]["size"], len(PC88_DISK)) + self.assertEqual(old_rows["bios/quasi88/DISK.ROM"]["size"], len(MSX_DISK)) + del rows["bios/quasi88/DISK.ROM"], old_rows["bios/quasi88/DISK.ROM"] + self.assertEqual(rows, old_rows) + moved = len(MSX_DISK) - len(PC88_DISK) + for key in ("total_size", "pack_size"): + self.assertEqual(before[key] - manifest[key], moved) + changed = {"files", "total_size", "pack_size", "generated"} + self.assertEqual( + json.dumps({k: v for k, v in manifest.items() if k not in changed}, sort_keys=True), + json.dumps({k: v for k, v in before.items() if k not in changed}, sort_keys=True), + ) + + +class SiteSharesTheMakerTest(unittest.TestCase): + def test_one_copy(self): + self.assertIs(generate_site.names_manufacturer, common.names_manufacturer) + self.assertIs(generate_site.BUCKET_FOLDERS, common.BUCKET_FOLDERS) + + +class NoHashlessNameMatchCrossesMakers(unittest.TestCase): + """Every registered platform: a name match never lands on another maker.""" + + def test_registry(self): + self.addCleanup(os.chdir, os.getcwd()) + os.chdir(REPO_ROOT) + db_path = REPO_ROOT / "database.json" + if not db_path.exists(): + self.skipTest("database.json not built") + db = common.load_database(str(db_path)) + registry = common.load_data_dir_registry("platforms") + folders = { + parts[1] + for entry in db["files"].values() + if len(parts := entry["path"].split("/")) >= 3 and parts[0] == "bios" + } - common.BUCKET_FOLDERS + crossings = [] + for platform in common.list_registered_platforms("platforms", include_archived=True): + config = common.load_platform_config(platform, "platforms") + for sys_id, system in config.get("systems", {}).items(): + makers = {f for f in folders if common.names_manufacturer(sys_id, f)} + if not makers: + continue + for entry in system.get("files") or []: + if any(entry.get(k) for k in ("sha1", "md5", "sha256", "crc32")): + continue + path, status = common.resolve_local_file( + entry, db, dest_hint=entry.get("destination", ""), + data_dir_registry=registry, + ) + parts = (path or "").split("/") + if ( + status.startswith("name") + and len(parts) >= 3 + and parts[0] == "bios" + and parts[1] not in common.BUCKET_FOLDERS + and parts[1] not in makers + ): + crossings.append(f"{platform} {sys_id} {entry.get('name')}: {path}") + self.assertEqual(crossings, []) + + +if __name__ == "__main__": + unittest.main() diff --git a/wiki/architecture.md b/wiki/architecture.md index 69889c947..215b16c8c 100644 --- a/wiki/architecture.md +++ b/wiki/architecture.md @@ -99,7 +99,8 @@ Upstream sources Scrapers parse generate_db.py scans batocera-systems builds database.json es_bios.xml (recalbox) (SHA1 primary key, core-info .info files indexes: by_md5, by_name, - FirmwareDatabase.cs by_crc32, by_sha256, by_path_suffix) + FirmwareDatabase.cs by_crc32, by_sha256, by_path_suffix, + by_shadowed_alias) bios_db.json.zip (MiSTer) MAME/FBNeo source @@ -412,6 +413,12 @@ resolution. before a path or a name, so a path never wins over a hash. The steps, in order, are listed under [file resolution chain](verification-modes.md#file-resolution-chain). +A platform entry with no hash is never answered by name with a file filed under +another maker than the one its system id names. When that leaves nothing, the +profile aliases a primary's name keeps out of `by_name` (`by_shadowed_alias`) +answer, within that maker's folder: AmberELEC's `nec-pc-88` `DISK.ROM` is QUASI88's +`n88sub.rom`, not the MSX disk ROM. + ## Platform inheritance Platform configs support `inherits:` to share definitions. diff --git a/wiki/verification-modes.md b/wiki/verification-modes.md index 0a888e71b..c9b6e5732 100644 --- a/wiki/verification-modes.md +++ b/wiki/verification-modes.md @@ -387,6 +387,17 @@ Two kinds of entry skip every answer given by a name alone: steps 6 and 9, the The content steps still apply to both, so collecting the real bytes, or restoring the asset, makes the entry resolve. +A platform's own entry with no hash, whose system id names a maker (`nec-pc-88` +names `NEC`), takes no file filed under another maker's folder in steps 6 and 7. +`bios/Other/` and `bios/Arcade/` file copies by emulator and stay open to it. +`load_platform_config` writes the system on each entry as `platform_system`. When +no copy is left, step 6 reads `by_shadowed_alias`, the profile aliases that +`by_name` refuses because a primary already carries the name, and keeps only the +files under the system's maker. AmberELEC's `DISK.ROM` got the 16 KB MSX disk ROM +by name. QUASI88 reads that name as `n88sub.rom`, the 2 KB PC-88 disk ROM, and +that is now the file served. An entry that names its emulator is placed by that +emulator's tree instead. + The `hash_mismatch` status means a file with the right name or path exists but its hash does not match. This still resolves to a local path (the file is present), but verification will report it as UNTESTED with a reason string showing the expected vs actual hash prefix.