diff --git a/emulators/81.yml b/emulators/81.yml index f69854522..359fe2b86 100644 --- a/emulators/81.yml +++ b/emulators/81.yml @@ -275,7 +275,8 @@ files: mode: standalone size: 8192 md5: 5c11c61a2dd2ca4bf39328d9ff42d289 - source_ref: "upstream Source/ROMs/FDCs/interface1.edition1.rom" + note: "Listed for ZX Interface 1, but ConfigureFDCRom has no Interface 1 branch, so the choice is not applied. Read when the configuration file names it as ROMINTERFACE1." + source_ref: "upstream Source/ROMs/FDCs/interface1.edition1.rom, upstream Source/HW_.cpp:2618-2622, 3732, 4957-4980, upstream Source/Spectrum/spec48.cpp:332-334" - name: "+d.g+dos.v1-a.rom" system: sinclair-zx-spectrum required: false @@ -487,7 +488,8 @@ files: mode: standalone size: 16384 md5: 9f6f56003307b9d55be96f406fdbf2b1 - source_ref: "upstream Source/ROMs/spectrum48.arabic.rom" + note: "In no ROM list: read when chosen with the Browse button." + source_ref: "upstream Source/ROMs/spectrum48.arabic.rom, upstream Source/HW_.cpp:252, 3794-3797, 3806-3835, upstream Source/Spectrum/spec48.cpp:354" - name: spectrum48.arabic.version1.rom system: sinclair-zx-spectrum required: false @@ -603,8 +605,8 @@ files: mode: standalone size: 16384 md5: b7893ad25728fbf6410f08eddd4a1cad - note: "Microdigital TK90X (Spectrum clone)." - source_ref: "upstream Source/ROMs/tk90.rom" + note: "Microdigital TK90X (Spectrum clone). In no ROM list: read when chosen with the Browse button." + source_ref: "upstream Source/ROMs/tk90.rom, upstream Source/HW_.cpp:252, 3794-3797, 3806-3835, upstream Source/Spectrum/spec48.cpp:354" - name: tk95.rom system: sinclair-zx-spectrum required: false @@ -612,5 +614,5 @@ files: mode: standalone size: 16384 md5: b7893ad25728fbf6410f08eddd4a1cad - note: "Microdigital TK95 (Spectrum clone)." - source_ref: "upstream Source/ROMs/tk95.rom" + note: "Microdigital TK95 (Spectrum clone). In no ROM list: read when chosen with the Browse button." + source_ref: "upstream Source/ROMs/tk95.rom, upstream Source/HW_.cpp:252, 3794-3797, 3806-3835, upstream Source/Spectrum/spec48.cpp:354" diff --git a/emulators/a7800.yml b/emulators/a7800.yml index efbcab113..0a321d3df 100644 --- a/emulators/a7800.yml +++ b/emulators/a7800.yml @@ -96,11 +96,12 @@ files: required: false category: bios_zip system: atari-7800 - source_ref: "source hash/a7800.xml:8-21" + source_ref: "source hash/a7800.xml:8-21, source src/mame/drivers/a7800.cpp:1577, source src/emu/emuopts.cpp:40, source src/emu/softlist_dev.cpp:87, 309, source src/emu/romload.cpp:575-651, 1298-1302" note: >- Software list set for the High Score Cartridge configuration (CX78HSC, slot a78_hsc). Fatal when that configuration is selected and the set is - absent. + absent. The list is read from hash/a7800.xml, which the v5.2 release + archives for Linux, macOS and Windows carry beside the binary. contents: - name: highscre.bin description: High Score Cartridge ROM, read through the pass-through cart @@ -112,12 +113,13 @@ files: required: false category: bios_zip system: atari-7800 - source_ref: "source hash/a7800.xml:24-38" + source_ref: "source hash/a7800.xml:24-38, source src/mame/drivers/a7800.cpp:1577, source src/emu/emuopts.cpp:40, source src/emu/softlist_dev.cpp:87, 309, source src/emu/romload.cpp:575-651, 1298-1302" note: >- Software list set for the XM Expansion Module configuration (slot a78_xm), which reuses the High Score Cartridge ROM alongside 128KB RAM, POKEY and YM2151. Fatal when that configuration is selected and the set - is absent. + is absent. The list is read from hash/a7800.xml, which the v5.2 + release archives for Linux, macOS and Windows carry beside the binary. contents: - name: highscre.bin description: High Score Cartridge ROM, gated by XM control register bit 3 diff --git a/emulators/abuse.yml b/emulators/abuse.yml index e2def0df1..7985e7b9a 100644 --- a/emulators/abuse.yml +++ b/emulators/abuse.yml @@ -52,11 +52,11 @@ files: - name: "defaults.prp" category: game_data - description: "Default properties for level objects" - required: true + description: "Level editor window positions" + required: false bundled: true - source_ref: "data/abuse.lsp" - note: "Shipped in Abuse-0.9.1-win32.zip." + source_ref: "src/game.cpp:2373, src/dev.cpp:821-828, 3371-3374, src/property.cpp:155-159" + note: "Shipped in Abuse-0.9.1-win32.zip. Read at every start, and a missing file leaves the defaults. Written back after an -edit session." - name: "english.lsp" path: "lisp/english.lsp" @@ -64,5 +64,5 @@ files: description: "Localized strings loaded first by abuse.lsp" required: true bundled: true - source_ref: "data/abuse.lsp:9" + source_ref: "data/abuse.lsp:9-12, data/CMakeLists.txt:1-5, 10-16, src/loader2.cpp:284, 348-354" note: "Shipped in Abuse-0.9.1-win32.zip." diff --git a/emulators/advancemame.yml b/emulators/advancemame.yml index 11e2e4482..b1e4dd9c6 100644 --- a/emulators/advancemame.yml +++ b/emulators/advancemame.yml @@ -162,7 +162,9 @@ files: path: "neogeo.zip" required: true category: bios_zip - system: snk-neogeo-mvs + systems: + - snk-neogeo-mvs + - arcade source_ref: "src/drivers/neogeo.c:7941-7955,8555" note: >- Eight MVS BIOS variants selected with misc_bios (euro, euro-s1, us, @@ -230,7 +232,9 @@ files: path: "pgm.zip" required: true category: bios_zip - system: igs-pgm + systems: + - igs-pgm + - arcade source_ref: "src/drivers/pgm.c:4415-4426, src/drivers/pgm.c:6904" contents: - name: pgm_p01s.rom @@ -254,7 +258,9 @@ files: path: "stvbios.zip" required: true category: bios_zip - system: sega-stv + systems: + - sega-stv + - arcade source_ref: "src/drivers/stv.c:3251-3253,4281" note: >- Nine BIOS variants selected with misc_bios (japan, japana, us, japanb, @@ -311,7 +317,9 @@ files: path: "megaplay.zip" required: true category: bios_zip - system: sega-megaplay + systems: + - sega-megaplay + - arcade source_ref: "src/drivers/megaplay.c:793-796,991" note: >- Two BIOS variants selected with misc_bios (ver1, ver2), ver1 by @@ -333,7 +341,9 @@ files: path: "megatech.zip" required: true category: bios_zip - system: sega-megatech + systems: + - sega-megatech + - arcade source_ref: "src/drivers/megatech.c:456-459,868" contents: - name: epr12664.20 @@ -346,7 +356,9 @@ files: path: "decocass.zip" required: true category: bios_zip - system: deco-cassette + systems: + - deco-cassette + - arcade source_ref: "src/drivers/decocass.c:729-732,1215" note: >- Two main CPU BIOS variants selected with misc_bios (bios0, bios1), @@ -399,7 +411,9 @@ files: path: "playch10.zip" required: true category: bios_zip - system: nintendo-playch10 + systems: + - nintendo-playch10 + - arcade source_ref: "src/drivers/playch10.c:1650-1653,1661" note: >- Two BIOS variants selected with misc_bios (dual, single), dual by @@ -451,7 +465,9 @@ files: path: "nss.zip" required: true category: bios_zip - system: nintendo-nss + systems: + - nintendo-nss + - arcade source_ref: "src/drivers/nss.c:526-528,659" contents: - name: spc700.rom @@ -480,7 +496,9 @@ files: path: "skns.zip" required: true category: bios_zip - system: super-kaneko-nova + systems: + - super-kaneko-nova + - arcade source_ref: "src/drivers/suprnova.c:1272-1279,1767" note: >- Five region BIOS ROMs, all loaded into the same region. @@ -516,7 +534,9 @@ files: path: "konamigx.zip" required: true category: bios_zip - system: konami-gx + systems: + - konami-gx + - arcade source_ref: "src/drivers/konamigx.c:2180-2183,3521" contents: - name: 300a01.34k @@ -529,7 +549,9 @@ files: path: "konamigv.zip" required: true category: bios_zip - system: konami-gv + systems: + - konami-gv + - arcade source_ref: "src/drivers/konamigv.c:974-978,1060" contents: - name: 999a01.7e @@ -542,7 +564,9 @@ files: path: "cvs.zip" required: true category: bios_zip - system: century-cvs + systems: + - century-cvs + - arcade source_ref: "src/drivers/cvs.c:422-432,1403" contents: - name: 5b.bin @@ -566,7 +590,9 @@ files: path: "cpzn1.zip" required: true category: bios_zip - system: capcom-zn1 + systems: + - capcom-zn1 + - arcade source_ref: "src/drivers/zn.c:3188-3190, src/drivers/zn.c:4635" contents: - name: coh-1000c.353 @@ -579,7 +605,9 @@ files: path: "cpzn2.zip" required: true category: bios_zip - system: capcom-zn2 + systems: + - capcom-zn2 + - arcade source_ref: "src/drivers/zn.c:3423-3425, src/drivers/zn.c:4653" contents: - name: coh-3002c.353 @@ -592,7 +620,9 @@ files: path: "tps.zip" required: true category: bios_zip - system: tecmo-tps + systems: + - tecmo-tps + - arcade source_ref: "src/drivers/zn.c:3866-3868, src/drivers/zn.c:4700" contents: - name: coh-1002m.353 @@ -605,7 +635,9 @@ files: path: "taitofx1.zip" required: true category: bios_zip - system: taito-fx1 + systems: + - taito-fx1 + - arcade source_ref: "src/drivers/zn.c:4162-4164, src/drivers/zn.c:4733" contents: - name: coh-1000t.353 @@ -618,7 +650,9 @@ files: path: "psarc95.zip" required: true category: bios_zip - system: eighting-zn1 + systems: + - eighting-zn1 + - arcade source_ref: "src/drivers/zn.c:4434-4436, src/drivers/zn.c:4760" contents: - name: coh-1002e.353 @@ -631,7 +665,9 @@ files: path: "atluspsx.zip" required: true category: bios_zip - system: atlus-zn1 + systems: + - atlus-zn1 + - arcade source_ref: "src/drivers/zn.c:4605-4607, src/drivers/zn.c:4772" contents: - name: coh-1001l.353 @@ -644,7 +680,9 @@ files: path: "atpsx.zip" required: true category: bios_zip - system: atari-zn1 + systems: + - atari-zn1 + - arcade source_ref: "src/drivers/zn.c:4520-4522, src/drivers/zn.c:4680" contents: - name: coh-1000w.353 @@ -657,7 +695,9 @@ files: path: "acpsx.zip" required: true category: bios_zip - system: acclaim-zn1 + systems: + - acclaim-zn1 + - arcade source_ref: "src/drivers/zn.c:4543-4545, src/drivers/zn.c:4689" contents: - name: coh-1000a.353 @@ -670,7 +710,9 @@ files: path: "coh1002v.zip" required: true category: bios_zip - system: videosystem-zn1 + systems: + - videosystem-zn1 + - arcade source_ref: "src/drivers/zn.c:4090-4096, src/drivers/zn.c:4722" contents: - name: coh-1002v.ic353 @@ -683,7 +725,9 @@ files: path: "aleck64.zip" required: true category: bios_zip - system: nintendo-aleck64 + systems: + - nintendo-aleck64 + - arcade source_ref: "src/drivers/aleck64.c:697-699,778" contents: - name: pifdata.bin @@ -696,7 +740,9 @@ files: path: "atarisy1.zip" required: true category: bios_zip - system: atari-system1 + systems: + - atari-system1 + - arcade source_ref: "src/drivers/atarisy1.c:837-850, src/drivers/atarisy1.c:2299" contents: - name: "136032.114.j11" @@ -720,7 +766,9 @@ files: path: "cedmag.zip" required: true category: bios_zip - system: efo-cedar-magnet + systems: + - efo-cedar-magnet + - arcade source_ref: "src/drivers/cedar_magnet.c:881-890, src/drivers/cedar_magnet.c:948" contents: - name: "magnet-master-vid-e03.bin" @@ -733,7 +781,9 @@ files: path: "ar_bios.zip" required: true category: bios_zip - system: arcadia-systems + systems: + - arcadia-systems + - arcade source_ref: "src/drivers/arsystems.c:356-377,823" note: >- Three BIOS variants selected with misc_bios (onep300, onep211, @@ -801,7 +851,9 @@ files: path: "maxaflex.zip" required: true category: bios_zip - system: exidy-maxaflex + systems: + - exidy-maxaflex + - arcade source_ref: "src/drivers/maxaflex.c:520-529,585" contents: - name: atarixl.rom @@ -825,7 +877,9 @@ files: path: "crysbios.zip" required: true category: bios_zip - system: brezzasoft-crystal + systems: + - brezzasoft-crystal + - arcade source_ref: "src/drivers/crystal.c:924-929,1032" contents: - name: mx27l1000.u14 @@ -838,7 +892,9 @@ files: path: "macsbios.zip" required: true category: bios_zip - system: imax-macs + systems: + - imax-macs + - arcade source_ref: "src/drivers/macs.c:396-404,614" contents: - name: macsos_l.u43 @@ -857,7 +913,9 @@ files: path: "bctvidbs.zip" required: true category: bios_zip - system: barcrest-mpu4 + systems: + - barcrest-mpu4 + - arcade source_ref: "src/drivers/mpu4.c:2016-2019,2177" contents: - name: vid.p1 diff --git a/emulators/arcadeflashweb.yml b/emulators/arcadeflashweb.yml index 9d2931b9c..db394d5ad 100644 --- a/emulators/arcadeflashweb.yml +++ b/emulators/arcadeflashweb.yml @@ -131,7 +131,7 @@ files: note: >- Drawn behind the movie by the page's bg div. The same image is compiled into the binary for the QML side, so only this copy is read from disk. - source_ref: "ArcadeFlashWeb-release flash/flash.html:110, src/qml.qrc:23" + source_ref: "src/main.qml:327, 334, ArcadeFlashWeb-release flash/flash.html:110, src/qml.qrc:23, src/main.qml:457" - name: swfdump.exe size: 541095 diff --git a/emulators/beebem.yml b/emulators/beebem.yml index d0bd0654c..415881bd5 100644 --- a/emulators/beebem.yml +++ b/emulators/beebem.yml @@ -193,7 +193,7 @@ files: max_size: 131072 validation: [size] note: "Integra-B slot under the Torch configuration." - source_ref: "UserData/Roms_Torch.cfg:24" + source_ref: "UserData/Roms_Torch.cfg:24, BeebEmTorch.vbs:3, Src/BeebWin.cpp:5291-5297, 5960-5964, 473, Src/RomConfigFile.cpp:158-162, Src/BeebMem.cpp:1321-1337" - name: WDFS.rom path: BeebFile/BBCINT/WDFS.rom @@ -206,7 +206,7 @@ files: max_size: 131072 validation: [size] note: "Filing system slot under the Torch configuration." - source_ref: "UserData/Roms_Torch.cfg:26" + source_ref: "UserData/Roms_Torch.cfg:26, BeebEmTorch.vbs:3, Src/BeebWin.cpp:5291-5297, 5960-5964, 473, Src/RomConfigFile.cpp:158-162, Src/BeebMem.cpp:1321-1337" - name: MCP120-CBL.rom path: BeebFile/BBC/MCP120-CBL.rom @@ -219,7 +219,7 @@ files: max_size: 131072 validation: [size] note: "Host tube support for the Torch Z80 co-processor on a Model B." - source_ref: "UserData/Roms_Torch.cfg:5, Help/z80torch.html" + source_ref: "UserData/Roms_Torch.cfg:5, Help/z80torch.html, BeebEmTorch.vbs:3, Src/BeebWin.cpp:5291-5297, 5960-5964, 473, Src/RomConfigFile.cpp:158-162, Src/BeebMem.cpp:1321-1337" # -- BBC Model B Plus -- @@ -413,7 +413,7 @@ files: max_size: 131072 validation: [size] note: "Host tube support for the Torch Z80 co-processor on a Master." - source_ref: "UserData/Roms_Torch.cfg:79, Help/z80torch.html" + source_ref: "UserData/Roms_Torch.cfg:79, Help/z80torch.html, BeebEmTorch.vbs:3, Src/BeebWin.cpp:5291-5297, 5960-5964, 473, Src/RomConfigFile.cpp:158-162, Src/BeebMem.cpp:1321-1337" # -- BBC Master ET -- diff --git a/emulators/bluemsx.yml b/emulators/bluemsx.yml index e61d8b58a..265e0c6ba 100644 --- a/emulators/bluemsx.yml +++ b/emulators/bluemsx.yml @@ -92,7 +92,7 @@ files: required: true system: msx note: "MSX1 generic BIOS. Used by default 'MSX' machine config." - source_ref: "system/bluemsx/Machines/MSX/config.ini" + source_ref: "system/bluemsx/Machines/MSX/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX.rom path: "Machines/Shared Roms/MSX.rom" @@ -104,7 +104,7 @@ files: sha1: "e998f0c441f4f1800ef44e42cd1659150206cf79" md5: "364a1a579fe5cb8dba54519bcfcdac0d" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX/config.ini" + source_ref: "system/bluemsx/Machines/MSX/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXJ.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -114,7 +114,7 @@ files: required: false system: msx note: "MSX1 Japanese BIOS. Used by 'MSX - Japanese' machine." - source_ref: "system/bluemsx/Machines/MSX - Japanese/config.ini" + source_ref: "system/bluemsx/Machines/MSX - Japanese/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXJ.rom path: "Machines/Shared Roms/MSXJ.rom" @@ -126,7 +126,7 @@ files: sha1: "df48902f5f12af8867ae1a87f255145f0e5e0774" md5: "f005e55c680ba6e7b19f6d4dc8f73ce5" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX - Japanese/config.ini" + source_ref: "system/bluemsx/Machines/MSX - Japanese/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXBR.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -338,7 +338,7 @@ files: required: true system: msx2 note: "MSX2 generic main BIOS. Used by default 'MSX2' machine config." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2.rom path: "Machines/Shared Roms/MSX2.rom" @@ -350,7 +350,7 @@ files: sha1: "6103b39f1e38d1aa2d84b1c3219c44f1abb5436e" md5: "ec3a01c91f24fbddcbcab0ad301bc9ef" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2EXT.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -360,7 +360,7 @@ files: required: true system: msx2 note: "MSX2 extension BIOS (SubROM). Required alongside MSX2.rom." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:31, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2EXT.rom path: "Machines/Shared Roms/MSX2EXT.rom" @@ -372,7 +372,7 @@ files: sha1: "5c1f9c7fb655e43d38e5dd1fcc6b942b2ff68b02" md5: "2183c2aff17cf4297bdb496de78c2e8a" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:31, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2J.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -764,7 +764,7 @@ files: required: true system: msx2plus note: "MSX2+ main BIOS. Used by default 'MSX2+' machine config (auto-selected for .dsk/.cas/.rom)." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:31, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2P.rom path: "Machines/Shared Roms/MSX2P.rom" @@ -776,7 +776,7 @@ files: sha1: "e90f80a61d94c617850c415e12ad70ac41e66bb7" md5: "847cc025ffae665487940ff2639540e5" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:31, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2PEXT.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -786,7 +786,7 @@ files: required: true system: msx2plus note: "MSX2+ extension BIOS (SubROM)." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:35, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2PEXT.rom path: "Machines/Shared Roms/MSX2PEXT.rom" @@ -798,7 +798,7 @@ files: sha1: "fe0254cbfc11405b79e7c86c7769bd6322b04995" md5: "7c8243c71d8f143b2531f01afa6a05dc" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:35, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2PMUS.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -808,7 +808,7 @@ files: required: true system: msx2plus note: "MSX2+ MSX-MUSIC BIOS (FM-PAC built-in). Used by MSX2+ and MSX2 default configs." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:32, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSX2PMUS.rom path: "Machines/Shared Roms/MSX2PMUS.rom" @@ -820,7 +820,7 @@ files: sha1: "6354ccc5c100b1c558c9395fa8c00784d2e9b0a3" md5: "f877f32e6d8687474ac5ee83e40de23b" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:32, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # -- MSX turboR BIOS set -- @@ -832,7 +832,7 @@ files: required: true system: msxturboR note: "MSX turboR main BIOS." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:38, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTR.ROM path: "Machines/Shared Roms/MSXTR.ROM" @@ -844,7 +844,7 @@ files: sha1: "242e73d8284a012b275c0a266844ebbc4269d787" md5: "fd9513736823e470965949f2a3ec6a43" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:38, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTREXT.ROM installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -854,7 +854,7 @@ files: required: true system: msxturboR note: "MSX turboR extension BIOS." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:43, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTREXT.ROM path: "Machines/Shared Roms/MSXTREXT.ROM" @@ -866,7 +866,7 @@ files: sha1: "018d7a5222f28514908fb1b1513286a6558a6d05" md5: "824b1c4475a3bd3b91c5ae81ea940aa2" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:43, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTRMUS.ROM installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -876,7 +876,7 @@ files: required: true system: msxturboR note: "MSX turboR MSX-MUSIC BIOS." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:39, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTRMUS.ROM path: "Machines/Shared Roms/MSXTRMUS.ROM" @@ -888,7 +888,7 @@ files: sha1: "6aea1aef5ec31c1826c22edf580525f93baad425" md5: "c688a229f834f95f8c64df7d33188cd8" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:39, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTROPT.ROM installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -898,7 +898,7 @@ files: required: true system: msxturboR note: "MSX turboR option ROM (firmware utilities)." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:40, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXTROPT.ROM path: "Machines/Shared Roms/MSXTROPT.ROM" @@ -910,7 +910,7 @@ files: sha1: "b4433a3975c57dd440d6bf12dbd28b2ac1b90ef4" md5: "2cba0d812ec445cfe63ffa2cac8d42c2" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:40, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXDOS23.ROM installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -920,7 +920,7 @@ files: required: true system: msxturboR note: "MSX-DOS 2.3 ROM. Used by turboR default config for disk operations." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:45, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXDOS23.ROM path: "Machines/Shared Roms/MSXDOS23.ROM" @@ -932,7 +932,7 @@ files: sha1: "0527fb75775caa76c7eca8d449938ace83d36e96" md5: "56bf5b02fed377b7bb9d91f914965431" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSXturboR/config.ini" + source_ref: "system/bluemsx/Machines/MSXturboR/config.ini:45, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # -- Shared utility/extension ROMs -- @@ -943,7 +943,7 @@ files: size: 262144 required: false note: "Kanji font ROM (256 KB). Used by MSX2+, turboR, and Japanese MSX2 machines." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: KANJI.rom path: "Machines/Shared Roms/KANJI.rom" @@ -954,7 +954,7 @@ files: sha1: "5aff2d9b6efc723bc395b0f96f0adfa83cc54a49" md5: "acf53887c2d2783dc059a9b442c86b90" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:28, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXKANJI.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -963,7 +963,7 @@ files: size: 32768 required: false note: "MSX-Kanji driver ROM. Used by MSX2+, turboR, and Japanese MSX2 for kanji display." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:36, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MSXKANJI.rom path: "Machines/Shared Roms/MSXKANJI.rom" @@ -974,7 +974,7 @@ files: sha1: "dcc3a67732aa01c4f2ee8d1ad886444a4dbafe06" md5: "9dfdebfaa6b547222a40aab8bb2e29f8" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:36, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: FMPAC.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1004,7 +1004,7 @@ files: size: 16384 required: false note: "MSX-BASIC 2 extension ROM. Used by MSX2, MSX2+, and turboR default configs." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:34, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: XBASIC2.rom path: "Machines/Shared Roms/XBASIC2.rom" @@ -1015,7 +1015,7 @@ files: sha1: "47370bec7ca1f0615a54eda548b07fbc0c7ef398" md5: "0b6120f289336538bc564548109f97c6" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:34, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: PAINT.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1024,7 +1024,7 @@ files: size: 65536 required: false note: "Paint utility ROM. Loaded by the MSX2 - Arabic machine config." - source_ref: "system/bluemsx/Machines/MSX2 - Arabic/config.ini" + source_ref: "system/bluemsx/Machines/MSX2 - Arabic/config.ini:30, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: PAINT.rom path: "Machines/Shared Roms/PAINT.rom" @@ -1035,7 +1035,7 @@ files: sha1: "ace202e87337fbc54fea21e22c0b3af0abe6f4ae" md5: "41db0d7b37be479296ffd59fcd6775f0" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2 - Arabic/config.ini" + source_ref: "system/bluemsx/Machines/MSX2 - Arabic/config.ini:30, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: SWP.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1116,7 +1116,7 @@ files: size: 2097152 required: false note: "MoonSound (OPL4) wavetable ROM (2 MB). Used by MSX2, MSX2+, and turboR configs." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:26, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: MOONSOUND.rom path: "Machines/Shared Roms/MOONSOUND.rom" @@ -1127,7 +1127,7 @@ files: sha1: "32760893ce06dbe3930627755ba065cc3d8ec6ca" md5: "42af93619160ef2116416f74a6cb12f2" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2/config.ini" + source_ref: "system/bluemsx/Machines/MSX2/config.ini:26, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # -- Disk controller ROMs -- @@ -1138,7 +1138,7 @@ files: size: 16384 required: false note: "Panasonic disk controller ROM. Used by MSX2+ and turboR default configs." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:37, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: PANASONICDISK.rom path: "Machines/Shared Roms/PANASONICDISK.rom" @@ -1149,7 +1149,7 @@ files: sha1: "7ed7c55e0359737ac5e68d38cb6903f9e5d7c2b6" md5: "00aa02b6077de40a0b51d71a3c3e1d5f" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+/config.ini" + source_ref: "system/bluemsx/Machines/MSX2+/config.ini:37, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: PHILIPSDISK.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1158,7 +1158,7 @@ files: size: 16384 required: false note: "Philips disk controller ROM. Used by MSX1 and MSX2 default configs." - source_ref: "system/bluemsx/Machines/MSX/config.ini" + source_ref: "system/bluemsx/Machines/MSX/config.ini:29, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: PHILIPSDISK.rom path: "Machines/Shared Roms/PHILIPSDISK.rom" @@ -1169,7 +1169,7 @@ files: sha1: "c3efedda7ab947a06d9345f7b8261076fa7ceeef" md5: "01dd1d72ed9bb6afe8a9b441c198a1cd" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX/config.ini" + source_ref: "system/bluemsx/Machines/MSX/config.ini:29, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: NATIONALDISK.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1521,7 +1521,7 @@ files: required: true system: colecovision note: "ColecoVision BIOS ROM. Required for ColecoVision mode." - source_ref: "system/bluemsx/Machines/COL - ColecoVision/config.ini" + source_ref: "system/bluemsx/Machines/COL - ColecoVision/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: coleco.rom path: "Machines/COL - ColecoVision/coleco.rom" @@ -1533,7 +1533,7 @@ files: sha1: "45bedc4cbdeac66c7df59e9e599195c778d86a92" md5: "2c66f5911e5b42b8ebe113403548eee7" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/COL - ColecoVision/config.ini" + source_ref: "system/bluemsx/Machines/COL - ColecoVision/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # ============================================================ # SEGA SF-7000 BIOS @@ -1548,7 +1548,7 @@ files: required: true system: sega-sf7000 note: "Sega SF-7000 BIOS ROM. SG-1000 and SC-3000 have no BIOS requirement." - source_ref: "system/bluemsx/Machines/SEGA - SF-7000/config.ini" + source_ref: "system/bluemsx/Machines/SEGA - SF-7000/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: sf7000.rom path: "Machines/SEGA - SF-7000/sf7000.rom" @@ -1560,7 +1560,7 @@ files: sha1: "77339a6db2593aadc638bed77b8e9bed5d9d87e3" md5: "561b362f9aa4cbcb240461abf83c2e0d" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/SEGA - SF-7000/config.ini" + source_ref: "system/bluemsx/Machines/SEGA - SF-7000/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # ============================================================ # Spectravideo SVI BIOS files @@ -1574,7 +1574,7 @@ files: required: true system: spectravideo note: "SVI-318 BIOS ROM." - source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-318/config.ini" + source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-318/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: svi318.rom path: "Machines/SVI - Spectravideo SVI-318/svi318.rom" @@ -1586,7 +1586,7 @@ files: sha1: "07758272df475e5e06187aa3574241df1b14035b" md5: "ee6ad7ea29e791b03a28a9443e622648" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-318/config.ini" + source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-318/config.ini:23, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: svi328.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1596,7 +1596,7 @@ files: required: true system: spectravideo note: "SVI-328 BIOS ROM." - source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328/config.ini" + source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328/config.ini:26, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: svi328.rom path: "Machines/SVI - Spectravideo SVI-328/svi328.rom" @@ -1608,7 +1608,7 @@ files: sha1: "7d8daf52f78371ca2c9443e04827c8e1f98c8f2c" md5: "2cebd1db9dda475a011b7bce65c984a2" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328/config.ini" + source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328/config.ini:26, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: svi328a.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1630,7 +1630,7 @@ files: sha1: "10349ce675f6d6d47f0976e39cb7188eba858d89" md5: "352f054ab09605070bdff49d73f335cc" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328 MK2/config.ini:26" + source_ref: "system/bluemsx/Machines/SVI - Spectravideo SVI-328 MK2/config.ini:26, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # ============================================================ # Machine-specific ROMs (Machines//) @@ -1650,7 +1650,7 @@ files: required: false system: msx2plus note: "MSX2+ European main BIOS. Used by the 'MSX2+ - European' machine config." - source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:34" + source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:34, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: Msx2pe.rom path: "Machines/MSX2+ - European/Msx2pe.rom" @@ -1662,7 +1662,7 @@ files: sha1: "aea0e4a635efce5336e496d36e4cb0a4b79593ff" md5: "277fd57c13f301fb4b366845a32d673a" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:34" + source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:34, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: Msx2pexte.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1672,7 +1672,7 @@ files: required: false system: msx2plus note: "MSX2+ European extension BIOS (SubROM). Used by the 'MSX2+ - European' machine config." - source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:39" + source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:39, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: Msx2pexte.rom path: "Machines/MSX2+ - European/Msx2pexte.rom" @@ -1684,7 +1684,7 @@ files: sha1: "cf00ec60608010aac94cfe245eb7aa67cb44d110" md5: "f78ab735aaad7045badbda8f4c8ac751" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:39" + source_ref: "system/bluemsx/Machines/MSX2+ - European/config.ini:39, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: pesadelo.rom installed_on: [batocera, recalbox, retrobat, retrodeck, retropie] @@ -1694,7 +1694,7 @@ files: required: false system: msx note: "Forte II arcade board ROM (board type MSX-ForteII). Used by the 'Forte II Games - Pesadelo' machine config." - source_ref: "system/bluemsx/Machines/Forte II Games - Pesadelo/config.ini:27" + source_ref: "system/bluemsx/Machines/Forte II Games - Pesadelo/config.ini:27, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" - name: pesadelo.rom path: "Machines/Forte II Games - Pesadelo/pesadelo.rom" @@ -1706,7 +1706,7 @@ files: sha1: "12880dd7ad82acf04861843fb9d4f0f926d18f6b" md5: "ba53d700ec25bcb08020ce693319cd28" note: "Shipped in blueMSXv282full.zip." - source_ref: "system/bluemsx/Machines/Forte II Games - Pesadelo/config.ini:27" + source_ref: "system/bluemsx/Machines/Forte II Games - Pesadelo/config.ini:27, libretro.c:1196-1197, 1447, Src/Board/Machine.c:255-266, 397-470, 623-640, 1451" # ============================================================ # Databases (required for ROM identification/mapper detection) diff --git a/emulators/fmsx.yml b/emulators/fmsx.yml index ab89b3dd1..e0b62cdc0 100644 --- a/emulators/fmsx.yml +++ b/emulators/fmsx.yml @@ -71,7 +71,7 @@ files: required: true system: msx note: "MSX1 main BIOS (32 KB). Loaded for MSX1 model (fMSX/MSX.c:697)." - source_ref: "fMSX/ROMs/MSX.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 697, 2810-2831" # -- MSX2 BIOS -- @@ -83,7 +83,7 @@ files: required: true system: msx2 note: "MSX2 main BIOS (32 KB). Loaded for MSX2 model (fMSX/MSX.c:713)." - source_ref: "fMSX/ROMs/MSX2.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 713, 2810-2831" - name: MSX2EXT.ROM installed_on: [recalbox] @@ -93,7 +93,7 @@ files: required: true system: msx2 note: "MSX2 extension BIOS (16 KB). Loaded alongside MSX2.ROM (fMSX/MSX.c:714)." - source_ref: "fMSX/ROMs/MSX2EXT.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 714, 2810-2831" # -- MSX2+ BIOS (default model) -- @@ -105,7 +105,7 @@ files: required: true system: msx2plus note: "MSX2+ main BIOS (32 KB). Loaded for MSX2+ model, the default (fMSX/MSX.c:735)." - source_ref: "fMSX/ROMs/MSX2P.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 735, 2810-2831" - name: MSX2PEXT.ROM installed_on: [recalbox] @@ -115,7 +115,7 @@ files: required: true system: msx2plus note: "MSX2+ extension BIOS (16 KB). Loaded alongside MSX2P.ROM (fMSX/MSX.c:736)." - source_ref: "fMSX/ROMs/MSX2PEXT.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 736, 2810-2831" # -- Disk support -- @@ -126,7 +126,7 @@ files: sha1: 032cb1c1c75b9a191fa1230978971698d9d2a17f required: false note: "Disk controller BIOS (16 KB). Needed for .dsk content. Enable 'Simulate DiskROM' option (fMSX/MSX.c:784)." - source_ref: "fMSX/ROMs/DISK.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 784, 2810-2831" # -- Optional expansion ROMs -- @@ -137,7 +137,7 @@ files: sha1: 9d789166e3caf28e4742fe933d962e99618c633d required: false note: "FM-PAC cartridge ROM (64 KB, YM2413 FM synthesis). Auto-loaded into first free slot (fMSX/MSX.c:561)." - source_ref: "fMSX/ROMs/FMPAC.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 561, 2875-2890" - name: KANJI.ROM installed_on: [recalbox] @@ -146,7 +146,7 @@ files: sha1: 84a645becec0a25d3ab7a909cde1b242699a8662 required: false note: "Kanji font ROM (128 KB). Auto-loaded if present, no option needed (fMSX/MSX.c:534)." - source_ref: "fMSX/ROMs/KANJI.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 534, 2810-2831" - name: MSXDOS2.ROM installed_on: [recalbox] @@ -155,7 +155,7 @@ files: sha1: c36c9e0f96738a340381e23b4f97245388801a46 required: false note: "MSX-DOS 2 ROM (64 KB). Loaded when 'fmsx_dos2' option enabled and model is MSX2 or MSX2+ (fMSX/MSX.c:549)." - source_ref: "fMSX/ROMs/MSXDOS2.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 549, 2875-2890" - name: PAINTER.ROM installed_on: [recalbox] @@ -164,7 +164,7 @@ files: sha1: 7fd2a28c4fdaeb140f3c8c8fb90271b1472c97b9 required: false note: "Paint utility ROM (64 KB). Auto-loaded for MSX2 and MSX2+ models (fMSX/MSX.c:556)." - source_ref: "fMSX/ROMs/PAINTER.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 556, 2875-2890" - name: RS232.ROM installed_on: [recalbox] @@ -173,7 +173,7 @@ files: sha1: 7aec0134ad6a5177f4056fcb6047083e8e00529b required: false note: "RS-232C serial interface ROM (16 KB + 256 B). Loaded into slot 3:3 (fMSX/MSX.c:537)." - source_ref: "fMSX/ROMs/RS232.ROM" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 537, 2810-2831" # -- GameMaster (not bundled, requires core option) -- @@ -201,42 +201,42 @@ files: required: false md5: 85b38e4128bbc300e675f55b278683a8 note: "Default text font. Loaded by LoadFNT() (fMSX/MSX.c:527). Same content as CYRILLIC.FNT." - source_ref: "fMSX/ROMs/DEFAULT.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" - name: ITALIC.FNT installed_on: [recalbox] required: false md5: c83e50e9f33b8dd893c414691822740d note: "Italic text font." - source_ref: "fMSX/ROMs/ITALIC.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" - name: INTERNAT.FNT installed_on: [recalbox] required: false md5: ac4f4a90c1b1887db48ded39c9d9c847 note: "International text font." - source_ref: "fMSX/ROMs/INTERNAT.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" - name: CYRILLIC.FNT installed_on: [recalbox] required: false md5: 85b38e4128bbc300e675f55b278683a8 note: "Cyrillic text font. Same content as DEFAULT.FNT." - source_ref: "fMSX/ROMs/CYRILLIC.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" - name: KOREAN.FNT installed_on: [recalbox] required: false md5: 73291e76638a2f5aa2eceb843df468f4 note: "Korean text font." - source_ref: "fMSX/ROMs/KOREAN.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" - name: JAPANESE.FNT installed_on: [recalbox] required: false md5: aa28f0703b951a6be8df3e28e20d263d note: "Japanese text font." - source_ref: "fMSX/ROMs/JAPANESE.FNT, libretro.c:1547" + source_ref: "libretro.c:955-963, 1186, 1547, fMSX/MSX.c:523-527, 2787-2794" # -- Cartridge identification database -- @@ -252,4 +252,4 @@ files: required: false md5: 74b0f217fa0e2b8bb5a2f8e2ecc69da3 note: "SHA1 database for cartridge identification and mapper detection. Read when CARTS.CRC is absent or holds no matching line (fMSX/MSX.c:2716)." - source_ref: "fMSX/ROMs/CARTS.SHA" + source_ref: "libretro.c:1186, fMSX/MSX.c:523, 2716" diff --git a/emulators/gzdoom.yml b/emulators/gzdoom.yml index 212441074..ee25a5c18 100644 --- a/emulators/gzdoom.yml +++ b/emulators/gzdoom.yml @@ -156,7 +156,7 @@ files: # ================================================================ # IWADs (user-supplied). At least one is needed to launch a game. - # All source refs point to wadsrc_extra/static/iwadinfo.txt entries. + # Each ref gives the iwadinfo.txt entry, then the code that reads it. # ================================================================ # ---- Doom ---- @@ -166,7 +166,7 @@ files: system: doom path: "doom.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:420, 437, 659" + source_ref: "wadsrc_extra/static/iwadinfo.txt:420, 437, 659, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" note: "The Ultimate DOOM and DOOM Registered both use this name and are told apart by their lumps." - name: "doom2.wad" @@ -174,119 +174,119 @@ files: system: doom path: "doom2.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:640, 653" + source_ref: "wadsrc_extra/static/iwadinfo.txt:640, 653, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom2f.wad" category: game_data system: doom path: "doom2f.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:625, 657" + source_ref: "wadsrc_extra/static/iwadinfo.txt:625, 657, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doombfg.wad" category: game_data system: doom path: "doombfg.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:332, 666" + source_ref: "wadsrc_extra/static/iwadinfo.txt:332, 666, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom2bfg.wad" category: game_data system: doom path: "doom2bfg.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:560, 667" + source_ref: "wadsrc_extra/static/iwadinfo.txt:560, 667, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doomunity.wad" category: game_data system: doom path: "doomunity.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:369, 661" + source_ref: "wadsrc_extra/static/iwadinfo.txt:369, 661, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom2unity.wad" category: game_data system: doom path: "doom2unity.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:592, 655" + source_ref: "wadsrc_extra/static/iwadinfo.txt:592, 655, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doomkex.wad" category: game_data system: doom path: "doomkex.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:350, 662" + source_ref: "wadsrc_extra/static/iwadinfo.txt:350, 662, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom2kex.wad" category: game_data system: doom path: "doom2kex.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:576, 656" + source_ref: "wadsrc_extra/static/iwadinfo.txt:576, 656, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doomxbox.wad" category: game_data system: doom path: "doomxbox.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:403, 660" + source_ref: "wadsrc_extra/static/iwadinfo.txt:403, 660, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom2xbox.wad" category: game_data system: doom path: "doom2xbox.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:608, 654" + source_ref: "wadsrc_extra/static/iwadinfo.txt:608, 654, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "doom_complete.pk3" category: game_data system: doom path: "doom_complete.pk3" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:389, 652" + source_ref: "wadsrc_extra/static/iwadinfo.txt:389, 652, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "plutonia.wad" category: game_data system: doom path: "plutonia.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:545, 670" + source_ref: "wadsrc_extra/static/iwadinfo.txt:545, 670, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "plutoniaunity.wad" category: game_data system: doom path: "plutoniaunity.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:514, 671" + source_ref: "wadsrc_extra/static/iwadinfo.txt:514, 671, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "plutoniakex.wad" category: game_data system: doom path: "plutoniakex.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:529, 672" + source_ref: "wadsrc_extra/static/iwadinfo.txt:529, 672, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "tnt.wad" category: game_data system: doom path: "tnt.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:499, 673" + source_ref: "wadsrc_extra/static/iwadinfo.txt:499, 673, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "tntunity.wad" category: game_data system: doom path: "tntunity.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:468, 674" + source_ref: "wadsrc_extra/static/iwadinfo.txt:468, 674, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "tntkex.wad" category: game_data system: doom path: "tntkex.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:483, 675" + source_ref: "wadsrc_extra/static/iwadinfo.txt:483, 675, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "nerve.wad" category: game_data @@ -309,7 +309,7 @@ files: system: doom path: "extras.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:357, 376, 488, 534, 582, 598" + source_ref: "wadsrc_extra/static/iwadinfo.txt:357, 376, 488, 534, 582, 598, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:208-215, 320-341, 877-901" note: "Loaded from the IWAD directory by the KEX and Unity editions." - name: "soundtrack" @@ -336,7 +336,7 @@ files: path: "freedoom1.wad" required: false installed_on: [retropie] - source_ref: "wadsrc_extra/static/iwadinfo.txt:307, 676" + source_ref: "wadsrc_extra/static/iwadinfo.txt:307, 676, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "freedoom2.wad" category: game_data @@ -344,14 +344,14 @@ files: path: "freedoom2.wad" required: false installed_on: [retropie] - source_ref: "wadsrc_extra/static/iwadinfo.txt:294, 677" + source_ref: "wadsrc_extra/static/iwadinfo.txt:294, 677, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "freedm.wad" category: game_data system: doom path: "freedm.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:281, 680" + source_ref: "wadsrc_extra/static/iwadinfo.txt:281, 680, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" # ---- Heretic ---- @@ -360,7 +360,7 @@ files: system: heretic path: "heretic.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:241, 244, 254, 257, 681" + source_ref: "wadsrc_extra/static/iwadinfo.txt:241, 244, 254, 257, 681, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" note: "Both Heretic and Shadow of the Serpent Riders use this name and are told apart by the EXTENDED lump." - name: "blasphem.wad" @@ -369,7 +369,7 @@ files: system: heretic path: "blasphem.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:228, 692-693" + source_ref: "wadsrc_extra/static/iwadinfo.txt:228, 692-693, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" # ---- Hexen ---- @@ -378,14 +378,14 @@ files: system: hexen path: "hexen.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:188, 684" + source_ref: "wadsrc_extra/static/iwadinfo.txt:188, 684, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "hexdd.wad" category: game_data system: hexen path: "hexdd.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:196-207, 685" + source_ref: "wadsrc_extra/static/iwadinfo.txt:196-207, 685, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" note: "Deathkings expansion. Requires hexen.wad (Required = Hexen: Beyond Heretic)." # ---- Strife ---- @@ -395,14 +395,14 @@ files: system: strife path: "strife1.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:151, 688" + source_ref: "wadsrc_extra/static/iwadinfo.txt:151, 688, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "sve.wad" category: game_data system: strife path: "sve.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:136, 140, 689" + source_ref: "wadsrc_extra/static/iwadinfo.txt:136, 140, 689, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" note: "Veteran Edition. Required = Strife: Quest for the Sigil (loads voices.wad)." - name: "voices.wad" @@ -410,7 +410,7 @@ files: system: strife path: "voices.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:142, 155" + source_ref: "wadsrc_extra/static/iwadinfo.txt:142, 155, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:208-215, 320-341, 877-901" # ---- Chex Quest ---- @@ -419,14 +419,14 @@ files: system: chex path: "chex.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:123, 694" + source_ref: "wadsrc_extra/static/iwadinfo.txt:123, 694, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "chex3.wad" category: game_data system: chex path: "chex3.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:109, 695" + source_ref: "wadsrc_extra/static/iwadinfo.txt:109, 695, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" # ---- Standalone commercial / community IWADs ---- @@ -435,7 +435,7 @@ files: system: doom path: "hacx.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:83, 698" + source_ref: "wadsrc_extra/static/iwadinfo.txt:83, 698, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "hacx2.wad" category: game_data @@ -450,21 +450,21 @@ files: system: doom path: "action2.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:97, 696" + source_ref: "wadsrc_extra/static/iwadinfo.txt:97, 696, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "harm1.wad" category: game_data system: doom path: "harm1.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:57, 697" + source_ref: "wadsrc_extra/static/iwadinfo.txt:57, 697, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "square.pk3" category: game_data system: doom path: "square.pk3" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:33" + source_ref: "wadsrc_extra/static/iwadinfo.txt:33, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:320-341, 351-396, 626-670" note: "Absent from the Names block: picked up only when named with -iwad." - name: "square1.pk3" @@ -472,18 +472,18 @@ files: system: doom path: "square1.pk3" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:45, 700" + source_ref: "wadsrc_extra/static/iwadinfo.txt:45, 700, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "delaweare.wad" category: game_data system: doom path: "delaweare.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:22, 701" + source_ref: "wadsrc_extra/static/iwadinfo.txt:22, 701, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" - name: "rotwb.wad" category: game_data system: doom path: "rotwb.wad" required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:9, 702" + source_ref: "wadsrc_extra/static/iwadinfo.txt:9, 702, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:3796, src/d_iwad.cpp:286-296, 320-341, 351-396, 502-531" diff --git a/emulators/lzdoom.yml b/emulators/lzdoom.yml index 5be55755b..0f0c79515 100644 --- a/emulators/lzdoom.yml +++ b/emulators/lzdoom.yml @@ -200,7 +200,7 @@ files: # ================================================================ # IWADs (user-supplied). One is needed to start a game. - # All source refs point to wadsrc_extra/static/iwadinfo.txt. + # Each ref gives the iwadinfo.txt entry, then the code that reads it. # ================================================================ # ---- Doom ---- @@ -209,7 +209,7 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:315, 363, 378, 393, 576" + source_ref: "wadsrc_extra/static/iwadinfo.txt:315, 363, 378, 393, 576, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "The Ultimate DOOM, DOOM Registered, the BFG and XBox editions all use this name and are told apart by their lumps." - name: "doom1.wad" @@ -217,92 +217,92 @@ files: system: doom required: false installed_on: [retropie] - source_ref: "wadsrc_extra/static/iwadinfo.txt:402-412, 577" + source_ref: "wadsrc_extra/static/iwadinfo.txt:402-412, 577, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "DOOM Shareware." - name: "doom2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:489, 518, 545, 571" + source_ref: "wadsrc_extra/static/iwadinfo.txt:489, 518, 545, 571, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "doom2f.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:532, 572" + source_ref: "wadsrc_extra/static/iwadinfo.txt:532, 572, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "nerve.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:494, 523, 558, 562, 617" + source_ref: "wadsrc_extra/static/iwadinfo.txt:494, 523, 558, 562, 617, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 253-263, 286-309, 319-367, 466-499, 772-789" note: "No Rest for the Living, which requires DOOM 2. Also loaded from the IWAD directory by the BFG and XBox editions of DOOM 2." - name: "doomunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:331, 584" + source_ref: "wadsrc_extra/static/iwadinfo.txt:331, 584, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "doom2unity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:503, 585" + source_ref: "wadsrc_extra/static/iwadinfo.txt:503, 585, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "nerveunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:508" + source_ref: "wadsrc_extra/static/iwadinfo.txt:508, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 286-309, 772-789" note: "Loaded from the IWAD directory by DOOM 2: Unity Edition." - name: "extras.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:338, 508" + source_ref: "wadsrc_extra/static/iwadinfo.txt:338, 508, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 286-309, 772-789" note: "Loaded from the IWAD directory by the Unity editions." - name: "soundtrack" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:338, 508" + source_ref: "wadsrc_extra/static/iwadinfo.txt:338, 508, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 286-309, 772-789" note: "Loaded from the IWAD directory by the Unity editions." - name: "doom_complete.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:350, 570" + source_ref: "wadsrc_extra/static/iwadinfo.txt:350, 570, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "WadSmoosh merge of the Doom IWADs." - name: "plutonia.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:447, 461, 573" + source_ref: "wadsrc_extra/static/iwadinfo.txt:447, 461, 573, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "tnt.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:420, 434, 574" + source_ref: "wadsrc_extra/static/iwadinfo.txt:420, 434, 574, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "sigil_v1_21.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:468-478, 616" + source_ref: "wadsrc_extra/static/iwadinfo.txt:468-478, 616, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "Sigil, which requires The Ultimate DOOM." - name: "sigil_shreds.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:473" + source_ref: "wadsrc_extra/static/iwadinfo.txt:473, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 286-309, 772-789" note: "Loaded from the IWAD directory by Sigil." # ---- Freedoom (free) ---- @@ -312,20 +312,20 @@ files: system: doom required: false installed_on: [retropie] - source_ref: "wadsrc_extra/static/iwadinfo.txt:292, 589" + source_ref: "wadsrc_extra/static/iwadinfo.txt:292, 589, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "freedoom2.wad" category: game_data system: doom required: false installed_on: [retropie] - source_ref: "wadsrc_extra/static/iwadinfo.txt:280, 590" + source_ref: "wadsrc_extra/static/iwadinfo.txt:280, 590, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "freedm.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:268, 593" + source_ref: "wadsrc_extra/static/iwadinfo.txt:268, 593, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" # ---- Heretic ---- @@ -333,14 +333,14 @@ files: category: game_data system: heretic required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:231, 243, 594" + source_ref: "wadsrc_extra/static/iwadinfo.txt:231, 243, 594, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "Heretic and Shadow of the Serpent Riders share the name and are told apart by their lumps." - name: "heretic1.wad" category: game_data system: heretic required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:250-260, 596" + source_ref: "wadsrc_extra/static/iwadinfo.txt:250-260, 596, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "Heretic Shareware." - name: "blasphemer.wad" @@ -348,7 +348,7 @@ files: category: game_data system: heretic required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:219, 605-606" + source_ref: "wadsrc_extra/static/iwadinfo.txt:219, 605-606, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" # ---- Hexen ---- @@ -356,13 +356,13 @@ files: category: game_data system: hexen required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:181, 597" + source_ref: "wadsrc_extra/static/iwadinfo.txt:181, 597, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "hexdd.wad" category: game_data system: hexen required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:188-199, 598" + source_ref: "wadsrc_extra/static/iwadinfo.txt:188-199, 598, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "Deathkings expansion, which requires hexen.wad." # ---- Strife ---- @@ -371,20 +371,20 @@ files: category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:144, 601" + source_ref: "wadsrc_extra/static/iwadinfo.txt:144, 601, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "sve.wad" category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:130, 134, 602" + source_ref: "wadsrc_extra/static/iwadinfo.txt:130, 134, 602, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" note: "Veteran Edition, which requires Strife: Quest for the Sigil." - name: "voices.wad" category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:135, 148" + source_ref: "wadsrc_extra/static/iwadinfo.txt:135, 148, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:187-195, 286-309, 772-789" note: "Loaded from the IWAD directory by Strife." # ---- Chex Quest ---- @@ -393,13 +393,13 @@ files: category: game_data system: chex required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:118, 607" + source_ref: "wadsrc_extra/static/iwadinfo.txt:118, 607, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "chex3.wad" category: game_data system: chex required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:105, 608" + source_ref: "wadsrc_extra/static/iwadinfo.txt:105, 608, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" # ---- Standalone commercial and community IWADs ---- @@ -407,47 +407,47 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:81, 611" + source_ref: "wadsrc_extra/static/iwadinfo.txt:81, 611, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "hacx2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:69, 612" + source_ref: "wadsrc_extra/static/iwadinfo.txt:69, 612, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "action2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:93, 609" + source_ref: "wadsrc_extra/static/iwadinfo.txt:93, 609, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "harm1.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:57, 610" + source_ref: "wadsrc_extra/static/iwadinfo.txt:57, 610, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "square.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:33" + source_ref: "wadsrc_extra/static/iwadinfo.txt:33, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:286-309, 319-367, 566-604" note: "Absent from the Names block: picked up only when named with -iwad." - name: "square1.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:45, 613" + source_ref: "wadsrc_extra/static/iwadinfo.txt:45, 613, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "delaweare.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:22, 614" + source_ref: "wadsrc_extra/static/iwadinfo.txt:22, 614, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" - name: "rotwb.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:9, 615" + source_ref: "wadsrc_extra/static/iwadinfo.txt:9, 615, wadsrc_extra/CMakeLists.txt:3, src/d_main.cpp:2539, src/d_iwad.cpp:253-263, 286-309, 319-367, 466-499" diff --git a/emulators/mame.yml b/emulators/mame.yml index 7026a3b1a..a9439bbfe 100644 --- a/emulators/mame.yml +++ b/emulators/mame.yml @@ -173,7 +173,9 @@ notes: | unmodified. No hiscore support. Paths under system_dir/mame/ (artwork, cheat, hash, ini, plugins, samples, crosshair). ROM search: content_dir + system_dir/mame/bios + - system_dir/mame/roms. Cheats via per-game XML files. + system_dir/mame/roms, never system_dir itself + (src/osd/libretro/libretro-internal/retro_init.cpp:580-597), so the libretro + build reads its sets in mame/bios. Cheats via per-game XML files. The standalone build splits every search path on semicolons and tries each directory in turn until the file opens (src/emu/fileio.cpp:53-58, 330-392). rompath defaults to roms, samplepath to samples, hashpath to @@ -826,6 +828,7 @@ files: # SNK Neo Geo MVS/AES - name: neogeo.zip + path: "mame/bios/neogeo.zip" standalone_path: "neogeo.zip" required: true category: bios_zip @@ -975,6 +978,7 @@ files: # IGS PGM - name: pgm.zip + path: "mame/bios/pgm.zip" standalone_path: "pgm.zip" required: true category: bios_zip @@ -1000,6 +1004,7 @@ files: # Sega NAOMI / NAOMI 2 / GD-ROM / Atomiswave - name: naomi.zip + path: "mame/bios/naomi.zip" standalone_path: "naomi.zip" required: true category: bios_zip @@ -1138,6 +1143,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: naomi2.zip + path: "mame/bios/naomi2.zip" standalone_path: "naomi2.zip" required: true category: bios_zip @@ -1210,6 +1216,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: naomigd.zip + path: "mame/bios/naomigd.zip" standalone_path: "naomigd.zip" required: true category: bios_zip @@ -1262,6 +1269,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: awbios.zip + path: "mame/bios/awbios.zip" standalone_path: "awbios.zip" required: true category: bios_zip @@ -1282,6 +1290,7 @@ files: sha1: "5128fe2ddcced77332bdcab691c09958051fa564" - name: hod2bios.zip + path: "mame/bios/hod2bios.zip" standalone_path: "hod2bios.zip" required: false category: bios_zip @@ -1319,6 +1328,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: f355dlx.zip + path: "mame/bios/f355dlx.zip" standalone_path: "f355dlx.zip" required: false category: bios_zip @@ -1355,6 +1365,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: f355bios.zip + path: "mame/bios/f355bios.zip" standalone_path: "f355bios.zip" required: false category: bios_zip @@ -1383,6 +1394,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: airlbios.zip + path: "mame/bios/airlbios.zip" standalone_path: "airlbios.zip" required: false category: bios_zip @@ -1408,6 +1420,7 @@ files: # Sega ST-V / Lindbergh / SP / Hikaru / Chihiro / Triforce - name: stvbios.zip + path: "mame/bios/stvbios.zip" standalone_path: "stvbios.zip" required: true category: bios_zip @@ -1476,6 +1489,7 @@ files: sha1: "7d9364d546f3d3f839ec36be148076f8d26a65a6" - name: lindbios.zip + path: "mame/bios/lindbios.zip" standalone_path: "lindbios.zip" required: true category: bios_zip @@ -1507,6 +1521,7 @@ files: sha1: "f129787e487984edd23bf344f2e9500c85052275" - name: segasp.zip + path: "mame/bios/segasp.zip" standalone_path: "segasp.zip" system: sega-systemsp required: true @@ -1563,6 +1578,7 @@ files: sha1: "832a3db097af680d1d0eb9451b4650565f0cf8c7" - name: hikaru.zip + path: "mame/bios/hikaru.zip" standalone_path: "hikaru.zip" required: true category: bios_zip @@ -1596,6 +1612,7 @@ files: bad_dump: true - name: chihiro.zip + path: "mame/bios/chihiro.zip" standalone_path: "chihiro.zip" required: true category: bios_zip @@ -1632,6 +1649,7 @@ files: sha1: "82dad6e2a75bab4a4840dc6939462f1fb9b95101" - name: triforce.zip + path: "mame/bios/triforce.zip" standalone_path: "triforce.zip" required: true category: bios_zip @@ -1644,6 +1662,7 @@ files: sha1: "c3cb7227e4dbc2af861e76d00cb59726105a2e4c" - name: shtzone.zip + path: "mame/bios/shtzone.zip" standalone_path: "shtzone.zip" system: sega-shootingzone required: true @@ -1656,6 +1675,7 @@ files: sha1: "43fd8bfc395e3b2e3fbe9645d692a5eb04783d9c" - name: sammymdl.zip + path: "mame/bios/sammymdl.zip" standalone_path: "sammymdl.zip" system: sammy-medal required: true @@ -1680,6 +1700,7 @@ files: # Sega Mega Drive arcade - name: megaplay.zip + path: "mame/bios/megaplay.zip" standalone_path: "megaplay.zip" required: true category: bios_zip @@ -1721,6 +1742,7 @@ files: bad_dump: true - name: megatech.zip + path: "mame/bios/megatech.zip" standalone_path: "megatech.zip" required: true category: bios_zip @@ -1749,6 +1771,7 @@ files: sha1: "c9008c431a937c084fb475273093ca0b434b5f47" - name: isgsm.zip + path: "mame/bios/isgsm.zip" standalone_path: "isgsm.zip" system: sega-isgsm required: true @@ -1761,6 +1784,7 @@ files: sha1: "97ba0e0f0be832a5114d95151e519bc027f6675b" - name: systemy2.zip + path: "mame/bios/systemy2.zip" standalone_path: "systemy2.zip" system: sielectronics-y2 required: true @@ -1774,6 +1798,7 @@ files: # DECO Cassette - name: decocass.zip + path: "mame/bios/decocass.zip" standalone_path: "decocass.zip" required: true category: bios_zip @@ -1963,6 +1988,7 @@ files: # Nintendo arcade - name: playch10.zip + path: "mame/bios/playch10.zip" standalone_path: "playch10.zip" required: true category: bios_zip @@ -2055,6 +2081,7 @@ files: sha1: "d10acafc8da9ff479c270ec01180cca61efe62f5" - name: nss.zip + path: "mame/bios/nss.zip" standalone_path: "nss.zip" required: true category: bios_zip @@ -2078,6 +2105,7 @@ files: sha1: "e3942f9d508c3c8074c3c3941376c37ca68b8e54" - name: sfcbox.zip + path: "mame/bios/sfcbox.zip" standalone_path: "sfcbox.zip" required: true category: bios_zip @@ -2100,6 +2128,7 @@ files: sha1: "a3d336db585fe02a37c323422d9db6a33fd489a6" - name: aleck64.zip + path: "mame/bios/aleck64.zip" standalone_path: "aleck64.zip" system: nintendo-aleck64 required: true @@ -2121,6 +2150,7 @@ files: # Philips CD-i - name: cdibios.zip + path: "mame/bios/cdibios.zip" standalone_path: "cdibios.zip" required: true category: bios_zip @@ -2145,6 +2175,7 @@ files: # Commodore Cubo (CD32-based) - name: cubo.zip + path: "mame/bios/cubo.zip" standalone_path: "cubo.zip" required: true category: bios_zip @@ -2158,6 +2189,7 @@ files: # Namco boards - name: sys246.zip + path: "mame/bios/sys246.zip" standalone_path: "sys246.zip" required: true category: bios_zip @@ -2170,6 +2202,7 @@ files: sha1: "f0a74bbcaf801f3fd0b7002ebd0118564aae3528" - name: sys256.zip + path: "mame/bios/sys256.zip" standalone_path: "sys256.zip" required: true category: bios_zip @@ -2182,6 +2215,7 @@ files: sha1: "bc4fb4e1e53adbd92385f1726bd69663ff870f1e" - name: sys573.zip + path: "mame/bios/sys573.zip" standalone_path: "sys573.zip" required: true category: bios_zip @@ -2221,6 +2255,7 @@ files: # Konami - name: konamigx.zip + path: "mame/bios/konamigx.zip" standalone_path: "konamigx.zip" system: konami-gx required: true @@ -2233,6 +2268,7 @@ files: sha1: "c483aa98ff8ef40cdac359c19ad23fea5ecc1906" - name: konamigv.zip + path: "mame/bios/konamigv.zip" standalone_path: "konamigv.zip" required: true category: bios_zip @@ -2245,6 +2281,7 @@ files: sha1: "02a82a2fe1fba0404517c3602324bfa64e23e478" - name: kviper.zip + path: "mame/bios/kviper.zip" standalone_path: "kviper.zip" required: true category: bios_zip @@ -2265,6 +2302,7 @@ files: sha1: "ed7cd9b2763b3e377df9663943160f9871f65105" - name: gq863.zip + path: "mame/bios/gq863.zip" standalone_path: "gq863.zip" required: true category: bios_zip @@ -2281,6 +2319,7 @@ files: sha1: "cab5209f90f47b9ee6e721479913ad74e3ba84b1" - name: bubsys.zip + path: "mame/bios/bubsys.zip" standalone_path: "bubsys.zip" system: konami-bubblesystem required: true @@ -2305,6 +2344,7 @@ files: sha1: "7ab46f9d5d587665782cefc623b8de0124a6d38a" - name: konendev.zip + path: "mame/bios/konendev.zip" standalone_path: "konendev.zip" system: konami-endeavour required: true @@ -2317,6 +2357,7 @@ files: sha1: "3d2c40c9d504358d890364e26c9562e40314d8a4" - name: kpython.zip + path: "mame/bios/kpython.zip" standalone_path: "kpython.zip" system: konami-python required: true @@ -2329,6 +2370,7 @@ files: sha1: "4bc268a996825c1bdf6ae277d331fe7bdc0cc00c" - name: kpython2.zip + path: "mame/bios/kpython2.zip" standalone_path: "kpython2.zip" system: konami-python2 required: true @@ -2342,6 +2384,7 @@ files: # Sony ZN-based (PSX arcade, renamed from legacy cpzn/atpsx names) - name: coh1000c.zip + path: "mame/bios/coh1000c.zip" standalone_path: "coh1000c.zip" required: true category: bios_zip @@ -2364,6 +2407,7 @@ files: sha1: "966f3aee5d00e1312c455f855915d621e6cb0672" - name: coh3002c.zip + path: "mame/bios/coh3002c.zip" standalone_path: "coh3002c.zip" required: true category: bios_zip @@ -2380,6 +2424,7 @@ files: sha1: "3c3fb8227b05dace042dc1429b9f2355b1a15638" - name: coh1000t.zip + path: "mame/bios/coh1000t.zip" standalone_path: "coh1000t.zip" system: taito-fx1 required: true @@ -2396,6 +2441,7 @@ files: sha1: "96d94f2b06fb7ecd91454969f4959a583ffb9d5a" - name: coh1000a.zip + path: "mame/bios/coh1000a.zip" standalone_path: "coh1000a.zip" system: acclaim-zn1 required: true @@ -2412,6 +2458,7 @@ files: sha1: "decf77ab50f7f58c641c3214a11647924f3a8998" - name: coh1000w.zip + path: "mame/bios/coh1000w.zip" standalone_path: "coh1000w.zip" system: atari-zn1 required: true @@ -2428,6 +2475,7 @@ files: sha1: "8e87941bfb374172628c8a37647e3a66b7166aa8" - name: coh1001l.zip + path: "mame/bios/coh1001l.zip" standalone_path: "coh1001l.zip" system: atlus-zn1 required: true @@ -2444,6 +2492,7 @@ files: sha1: "8d2fe1facb4473cc20b4b477aaf881f9280939cf" - name: coh1002v.zip + path: "mame/bios/coh1002v.zip" standalone_path: "coh1002v.zip" system: videosystem-zn1 required: true @@ -2460,6 +2509,7 @@ files: sha1: "b01479dc75a4a8a86bee7ac7cd10af2bda332544" - name: coh1002e.zip + path: "mame/bios/coh1002e.zip" standalone_path: "coh1002e.zip" system: eighting-zn1 required: true @@ -2476,6 +2526,7 @@ files: sha1: "1069c1d9015028a51a1b314cfacb014ea90aa425" - name: coh1002m.zip + path: "mame/bios/coh1002m.zip" standalone_path: "coh1002m.zip" system: tecmo-tps required: true @@ -2493,6 +2544,7 @@ files: # Taito - name: coh3002t.zip + path: "mame/bios/coh3002t.zip" standalone_path: "coh3002t.zip" system: taito-gnet required: true @@ -2537,6 +2589,7 @@ files: sha1: "c6918dfbb6fcf686dde4b731e84f740177ab31f0" - name: coh1002t.zip + path: "mame/bios/coh1002t.zip" standalone_path: "coh1002t.zip" system: taito-gnet required: true @@ -2561,6 +2614,7 @@ files: sha1: "9ce888bd2a7e575c8ca71d978cb85de22afb5660" - name: taitotz.zip + path: "mame/bios/taitotz.zip" standalone_path: "taitotz.zip" system: taito-typezero required: true @@ -2578,6 +2632,7 @@ files: # Super Kaneko Nova System - name: skns.zip + path: "mame/bios/skns.zip" standalone_path: "skns.zip" required: true category: bios_zip @@ -2614,6 +2669,7 @@ files: sha1: "463962ffe19880135f0d95a7beda79e27448e872" - name: mac2bios.zip + path: "mame/bios/mac2bios.zip" standalone_path: "mac2bios.zip" system: imax-macs required: false @@ -2622,6 +2678,7 @@ files: note: "macs2os_l.bin and macs2os_h.bin are both NO_DUMP (src/mame/seta/macs.cpp:532-535). handle_missing_file (src/emu/romload.cpp:529-571) counts a missing NO_DUMP ROM as known bad, not an error, so the machine runs without the set." - name: macsbios.zip + path: "mame/bios/macsbios.zip" standalone_path: "macsbios.zip" system: imax-macs required: true @@ -2643,6 +2700,7 @@ files: # Panasonic 3DO - name: 3dobios.zip + path: "mame/bios/3dobios.zip" standalone_path: "3dobios.zip" required: true category: bios_zip @@ -2671,6 +2729,7 @@ files: sha1: "b01c53da256dde43ffec4ad3fc3adfa8d635e943" - name: alg3do.zip + path: "mame/bios/alg3do.zip" standalone_path: "alg3do.zip" system: panasonic-3do required: true @@ -2684,6 +2743,7 @@ files: # Hyper Neo-Geo 64 - name: hng64.zip + path: "mame/bios/hng64.zip" standalone_path: "hng64.zip" required: true category: bios_zip @@ -2733,6 +2793,7 @@ files: # Amiga-based - name: ar_bios.zip + path: "mame/bios/ar_bios.zip" standalone_path: "ar_bios.zip" system: arcadia-systems required: true @@ -2825,6 +2886,7 @@ files: sha1: "80070521476e92323a6baa6e55928ca5b751a332" - name: alg_bios.zip + path: "mame/bios/alg_bios.zip" standalone_path: "alg_bios.zip" system: alg-laserdisc required: true @@ -2839,6 +2901,7 @@ files: # Atari - name: atarisy1.zip + path: "mame/bios/atarisy1.zip" standalone_path: "atarisy1.zip" system: atari-system1 required: true @@ -2907,6 +2970,7 @@ files: sha1: "0a42a4816c89447b16e1f3245409591efea98a4a" - name: maxaflex.zip + path: "mame/bios/maxaflex.zip" standalone_path: "maxaflex.zip" system: exidy-maxaflex required: true @@ -2928,6 +2992,7 @@ files: # Crystal System - name: crysbios.zip + path: "mame/bios/crysbios.zip" standalone_path: "crysbios.zip" system: brezzasoft-crystal required: true @@ -2948,6 +3013,7 @@ files: # Galaxy Games # Aristocrat - name: aristmk5.zip + path: "mame/bios/aristmk5.zip" standalone_path: "aristmk5.zip" system: aristocrat-mk5 required: true @@ -3049,6 +3115,7 @@ files: sha1: "1ca091fba69e92f262dbb3d40f515703c8981793" - name: aristmk6.zip + path: "mame/bios/aristmk6.zip" standalone_path: "aristmk6.zip" system: aristocrat-mk6 required: true @@ -3453,6 +3520,7 @@ files: sha1: "6e9c9d7960fe0ef083ff824287a99d9c0b9f5e6a" - name: aristmk7.zip + path: "mame/bios/aristmk7.zip" standalone_path: "aristmk7.zip" system: aristocrat-mk7 required: true @@ -3466,6 +3534,7 @@ files: # Pinball - name: allied.zip + path: "mame/bios/allied.zip" standalone_path: "allied.zip" system: allied-leisure-pinball required: true @@ -3486,6 +3555,7 @@ files: sha1: "baa0f73fda08a3c5d6f1423fb329e4febb07ef97" - name: gp_110.zip + path: "mame/bios/gp_110.zip" standalone_path: "gp_110.zip" system: gameplan-mpu1 required: true @@ -3502,6 +3572,7 @@ files: sha1: "767e15e19e11399935c890c1d1034dccf1ad7f92" - name: gts1.zip + path: "mame/bios/gts1.zip" standalone_path: "gts1.zip" system: gottlieb-system1 required: true @@ -3518,6 +3589,7 @@ files: sha1: "31245daa9972ef8652caee69986585bb8239e86e" - name: recel.zip + path: "mame/bios/recel.zip" standalone_path: "recel.zip" system: recel-system3 required: true @@ -3534,6 +3606,7 @@ files: sha1: "8545e168a5f256150bcff12d1e6d8efffd08c3cd" - name: slvrball.zip + path: "mame/bios/slvrball.zip" standalone_path: "slvrball.zip" system: tab-silverball required: true @@ -3638,6 +3711,7 @@ files: # Nichibutsu - name: nichidvd.zip + path: "mame/bios/nichidvd.zip" standalone_path: "nichidvd.zip" system: nichibutsu-hrdvd required: true @@ -3659,6 +3733,7 @@ files: # EFO Cedar Magnet - name: cedmag.zip + path: "mame/bios/cedmag.zip" standalone_path: "cedmag.zip" system: efo-cedar-magnet required: true @@ -3672,6 +3747,7 @@ files: # Misc - name: iteagle.zip + path: "mame/bios/iteagle.zip" standalone_path: "iteagle.zip" system: itech-eagle required: true @@ -3760,6 +3836,7 @@ files: sha1: "213cbdd6cd37ad9b5bfc9545084892a68d29f5ff" - name: su2000.zip + path: "mame/bios/su2000.zip" standalone_path: "su2000.zip" system: virtuality-su2000 required: true @@ -3944,6 +4021,7 @@ files: sha1: "087b5a56ddb6bef6b1bc93b9a8e0d23de27aa399" - name: tourvis.zip + path: "mame/bios/tourvis.zip" standalone_path: "tourvis.zip" system: pce-tourvision required: true @@ -4007,6 +4085,7 @@ files: sha1: "881ea7802b9e241473bc8ced0472e0f1851c9886" - name: v4bios.zip + path: "mame/bios/v4bios.zip" standalone_path: "v4bios.zip" system: barcrest-mpu4 required: true @@ -4019,6 +4098,7 @@ files: sha1: "49798165640627eb31024319353da04380787b10" - name: miuchiz.zip + path: "mame/bios/miuchiz.zip" standalone_path: "miuchiz.zip" system: miuchiz required: true @@ -4031,6 +4111,7 @@ files: sha1: "633365fd19a3d0f2ce56cb499b2577a5fb53e466" - name: pumpitup.zip + path: "mame/bios/pumpitup.zip" standalone_path: "pumpitup.zip" system: andamiro-pumpitup required: true @@ -4058,6 +4139,7 @@ files: # Bally Astrocade - name: astrocde.zip + path: "mame/bios/astrocde.zip" standalone_path: "astrocde.zip" required: true category: bios_zip @@ -4070,6 +4152,7 @@ files: crc32: "ebc77f3a" - name: astrocdl.zip + path: "mame/bios/astrocdl.zip" standalone_path: "astrocdl.zip" required: false category: bios_zip @@ -4082,6 +4165,7 @@ files: crc32: "d7c517ba" - name: astrocdw.zip + path: "mame/bios/astrocdw.zip" standalone_path: "astrocdw.zip" required: false category: bios_zip @@ -4095,6 +4179,7 @@ files: # Apple IIgs - name: apple2gs.zip + path: "mame/bios/apple2gs.zip" standalone_path: "apple2gs.zip" required: true category: bios_zip @@ -4120,6 +4205,7 @@ files: # Apple Macintosh, machines and the devices they instantiate - name: mac128k.zip + path: "mame/bios/mac128k.zip" standalone_path: "mac128k.zip" required: true category: bios_zip @@ -4138,6 +4224,7 @@ files: crc32: "fd2665c2" - name: mac512k.zip + path: "mame/bios/mac512k.zip" standalone_path: "mac512k.zip" required: false category: bios_zip @@ -4155,6 +4242,7 @@ files: crc32: "d51f376e" - name: macplus.zip + path: "mame/bios/macplus.zip" standalone_path: "macplus.zip" required: true category: bios_zip @@ -4198,6 +4286,7 @@ files: crc32: "a28ba8ec" - name: macse.zip + path: "mame/bios/macse.zip" standalone_path: "macse.zip" required: true category: bios_zip @@ -4212,6 +4301,7 @@ files: crc32: "0f7ff80c" - name: macclasc.zip + path: "mame/bios/macclasc.zip" standalone_path: "macclasc.zip" required: true category: bios_zip @@ -4226,6 +4316,7 @@ files: crc32: "510d7d38" - name: mac2fdhd.zip + path: "mame/bios/mac2fdhd.zip" standalone_path: "mac2fdhd.zip" required: true category: bios_zip @@ -4240,6 +4331,7 @@ files: crc32: "ce3b966f" - name: maciix.zip + path: "mame/bios/maciix.zip" standalone_path: "maciix.zip" required: false category: bios_zip @@ -4255,6 +4347,7 @@ files: crc32: "ce3b966f" - name: maclc3.zip + path: "mame/bios/maclc3.zip" standalone_path: "maclc3.zip" required: true category: bios_zip @@ -4269,6 +4362,7 @@ files: crc32: "e578f5f3" - name: adbmodem.zip + path: "mame/bios/adbmodem.zip" standalone_path: "adbmodem.zip" required: true category: bios_zip @@ -4284,6 +4378,7 @@ files: sha1: "4a35a44605073ae6076a0292e2056ee4d938d1bd" - name: egret.zip + path: "mame/bios/egret.zip" standalone_path: "egret.zip" required: true category: bios_zip @@ -4310,6 +4405,7 @@ files: sha1: "8b0dae3ec66cdddbf71567365d2c462688aeb571" - name: mackbd_m0110.zip + path: "mame/bios/mackbd_m0110.zip" standalone_path: "mackbd_m0110.zip" required: true category: bios_zip @@ -4325,6 +4421,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: mackbd_m0110a.zip + path: "mame/bios/mackbd_m0110a.zip" standalone_path: "mackbd_m0110a.zip" required: true category: bios_zip @@ -4339,6 +4436,7 @@ files: sha1: "a80404a122d74721cda13b285c412057c2c78bd7" - name: mackbd_m0120.zip + path: "mame/bios/mackbd_m0120.zip" standalone_path: "mackbd_m0120.zip" required: true category: bios_zip @@ -4354,6 +4452,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: nb_mdc824.zip + path: "mame/bios/nb_mdc824.zip" standalone_path: "nb_mdc824.zip" required: true category: bios_zip @@ -4369,6 +4468,7 @@ files: sha1: "4d3c0632711b7b31c8e0c5cfdd7ec1904f178336" - name: nb_image.zip + path: "mame/bios/nb_image.zip" standalone_path: "nb_image.zip" required: false category: bios_zip @@ -4385,6 +4485,7 @@ files: # Acorn Electron - name: electron.zip + path: "mame/bios/electron.zip" standalone_path: "electron.zip" required: true category: bios_zip @@ -4400,6 +4501,7 @@ files: crc32: "b997f9cb" - name: electron64.zip + path: "mame/bios/electron64.zip" standalone_path: "electron64.zip" required: false category: bios_zip @@ -4418,6 +4520,7 @@ files: crc32: "f80a0cea" - name: electron_plus1.zip + path: "mame/bios/electron_plus1.zip" standalone_path: "electron_plus1.zip" required: true category: bios_zip @@ -4434,6 +4537,7 @@ files: sha1: "2de04ab7c81414d6c9c967f965c53fc276392463" - name: electron_plus3.zip + path: "mame/bios/electron_plus3.zip" standalone_path: "electron_plus3.zip" required: true category: bios_zip @@ -4472,6 +4576,7 @@ files: # Tandy MC-10 - name: mc10.zip + path: "mame/bios/mc10.zip" standalone_path: "mc10.zip" required: true category: bios_zip @@ -4485,6 +4590,7 @@ files: crc32: "11fda97e" - name: alice.zip + path: "mame/bios/alice.zip" standalone_path: "alice.zip" required: false category: bios_zip @@ -4499,6 +4605,7 @@ files: # NEC PC-8001 - name: pc8001.zip + path: "mame/bios/pc8001.zip" standalone_path: "pc8001.zip" required: true category: bios_zip @@ -4526,6 +4633,7 @@ files: crc32: "56653188" - name: pc8001mk2sr.zip + path: "mame/bios/pc8001mk2sr.zip" standalone_path: "pc8001mk2sr.zip" required: false category: bios_zip @@ -4556,6 +4664,7 @@ files: # Atari XE Game System - name: xegs.zip + path: "mame/bios/xegs.zip" standalone_path: "xegs.zip" required: true category: bios_zip @@ -4570,6 +4679,7 @@ files: # Casio Loopy - name: casloopy.zip + path: "mame/bios/casloopy.zip" standalone_path: "casloopy.zip" required: true category: bios_zip @@ -4587,6 +4697,7 @@ files: # Casio PV-2000 - name: pv2000.zip + path: "mame/bios/pv2000.zip" standalone_path: "pv2000.zip" required: true category: bios_zip @@ -4600,6 +4711,7 @@ files: # Coleco Adam - name: adam.zip + path: "mame/bios/adam.zip" standalone_path: "adam.zip" required: true category: bios_zip @@ -4636,6 +4748,7 @@ files: crc32: "035a7a3d" - name: adam_kb.zip + path: "mame/bios/adam_kb.zip" standalone_path: "adam_kb.zip" required: true category: bios_zip @@ -4649,6 +4762,7 @@ files: sha1: "83162ffc75847328a05429135b728a63efb05b93" - name: adam_prn.zip + path: "mame/bios/adam_prn.zip" standalone_path: "adam_prn.zip" required: true category: bios_zip @@ -4662,6 +4776,7 @@ files: sha1: "32b40679749ad0317c2c9ee9ca619fad6d850ce7" - name: adam_ddp.zip + path: "mame/bios/adam_ddp.zip" standalone_path: "adam_ddp.zip" required: true category: bios_zip @@ -4675,6 +4790,7 @@ files: sha1: "b970f11e8f443fa130fba02ad1f60da51bf89673" - name: adam_fdc.zip + path: "mame/bios/adam_fdc.zip" standalone_path: "adam_fdc.zip" required: true category: bios_zip @@ -4688,6 +4804,7 @@ files: sha1: "1cb68891c3af80e99efad7e309136ca37244f060" - name: adam_fdc_320kb.zip + path: "mame/bios/adam_fdc_320kb.zip" standalone_path: "adam_fdc_320kb.zip" required: false category: bios_zip @@ -4711,6 +4828,7 @@ files: sha1: "bc8dd00dd5cde9500a4cd7dc1e4d74330184472a" - name: adam_fdc_a720dipi.zip + path: "mame/bios/adam_fdc_a720dipi.zip" standalone_path: "adam_fdc_a720dipi.zip" required: false category: bios_zip @@ -4723,6 +4841,7 @@ files: sha1: "15b3aaebba38af84f6a1a6ccdf840ca3d58635da" - name: adam_fdc_fp720at.zip + path: "mame/bios/adam_fdc_fp720at.zip" standalone_path: "adam_fdc_fp720at.zip" required: false category: bios_zip @@ -4735,6 +4854,7 @@ files: sha1: "e593a89d7c6e7ea99e7ce376ffa2732d7b646d49" - name: adam_fdc_mihddd.zip + path: "mame/bios/adam_fdc_mihddd.zip" standalone_path: "adam_fdc_mihddd.zip" required: false category: bios_zip @@ -4747,6 +4867,7 @@ files: sha1: "f6df22339c93dca938b65d0cbe23abcad89ec230" - name: adam_spi.zip + path: "mame/bios/adam_spi.zip" standalone_path: "adam_spi.zip" required: false category: bios_zip @@ -4760,6 +4881,7 @@ files: # Entex Adventure Vision - name: advision.zip + path: "mame/bios/advision.zip" standalone_path: "advision.zip" required: true category: bios_zip @@ -4777,6 +4899,7 @@ files: # APF M-1000 / Imagination Machine - name: apfm1000.zip + path: "mame/bios/apfm1000.zip" standalone_path: "apfm1000.zip" required: true category: bios_zip @@ -4798,6 +4921,7 @@ files: # Sega Advanced Pico BEENA - name: beena.zip + path: "mame/bios/beena.zip" standalone_path: "beena.zip" required: true category: bios_zip @@ -4815,6 +4939,7 @@ files: # Bandai RX-78 - name: rx78.zip + path: "mame/bios/rx78.zip" standalone_path: "rx78.zip" required: true category: bios_zip @@ -4829,6 +4954,7 @@ files: # Sega AI Computer - name: segaai.zip + path: "mame/bios/segaai.zip" standalone_path: "segaai.zip" required: true category: bios_zip @@ -4857,6 +4983,7 @@ files: crc32: "e042754b" - name: segaai_soundbox.zip + path: "mame/bios/segaai_soundbox.zip" standalone_path: "segaai_soundbox.zip" required: false category: bios_zip @@ -4872,6 +4999,7 @@ files: # Camputers Lynx 48K - name: lynx48k.zip + path: "mame/bios/lynx48k.zip" standalone_path: "lynx48k.zip" required: true category: bios_zip @@ -4897,6 +5025,7 @@ files: # Camputers Lynx 96K - name: lynx96k.zip + path: "mame/bios/lynx96k.zip" standalone_path: "lynx96k.zip" required: true category: bios_zip @@ -4930,6 +5059,7 @@ files: # Camputers Lynx 128K - name: lynx128k.zip + path: "mame/bios/lynx128k.zip" standalone_path: "lynx128k.zip" required: true category: bios_zip @@ -4955,6 +5085,7 @@ files: # VTech CreatiVision - name: crvision.zip + path: "mame/bios/crvision.zip" standalone_path: "crvision.zip" required: true category: bios_zip @@ -4967,6 +5098,7 @@ files: crc32: "c3c590c6" - name: fnvision.zip + path: "mame/bios/fnvision.zip" standalone_path: "fnvision.zip" required: false category: bios_zip @@ -4980,6 +5112,7 @@ files: crc32: "05602697" - name: lasr2001.zip + path: "mame/bios/lasr2001.zip" standalone_path: "lasr2001.zip" required: false category: bios_zip @@ -4993,6 +5126,7 @@ files: crc32: "4dc35c39" - name: manager.zip + path: "mame/bios/manager.zip" standalone_path: "manager.zip" required: false category: bios_zip @@ -5011,6 +5145,7 @@ files: # VTech Laser 310 (VZ-300) - name: laser310.zip + path: "mame/bios/laser310.zip" standalone_path: "laser310.zip" required: true category: bios_zip @@ -5029,6 +5164,7 @@ files: # VTech Socrates Educational Video System - name: socrates.zip + path: "mame/bios/socrates.zip" standalone_path: "socrates.zip" required: true category: bios_zip @@ -5059,6 +5195,7 @@ files: # VTech V.Smile Console - name: vsmile.zip + path: "mame/bios/vsmile.zip" standalone_path: "vsmile.zip" required: true category: bios_zip @@ -5081,6 +5218,7 @@ files: # Bit Corporation Gamate - name: gamate.zip + path: "mame/bios/gamate.zip" standalone_path: "gamate.zip" required: true category: bios_zip @@ -5098,6 +5236,7 @@ files: # Epoch Game Pocket Computer - name: gamepock.zip + path: "mame/bios/gamepock.zip" standalone_path: "gamepock.zip" required: true category: bios_zip @@ -5111,6 +5250,7 @@ files: # Hartung Game Master - name: gmaster.zip + path: "mame/bios/gmaster.zip" standalone_path: "gmaster.zip" required: true category: bios_zip @@ -5124,6 +5264,7 @@ files: # Tiger game.com - name: gamecom.zip + path: "mame/bios/gamecom.zip" standalone_path: "gamecom.zip" required: true category: bios_zip @@ -5143,6 +5284,7 @@ files: # GamePark GP32 - name: gp32.zip + path: "mame/bios/gp32.zip" standalone_path: "gp32.zip" required: true category: bios_zip @@ -5176,6 +5318,7 @@ files: # Fujitsu FM-7 family - name: fm7.zip + path: "mame/bios/fm7.zip" standalone_path: "fm7.zip" required: true category: bios_zip @@ -5204,6 +5347,7 @@ files: crc32: "62402ac9" - name: fm77av.zip + path: "mame/bios/fm77av.zip" standalone_path: "fm77av.zip" required: true category: bios_zip @@ -5232,6 +5376,7 @@ files: crc32: "e9f16c42" - name: fmnew7.zip + path: "mame/bios/fmnew7.zip" standalone_path: "fmnew7.zip" required: false category: bios_zip @@ -5250,6 +5395,7 @@ files: # Technosys Aamber Pegasus - name: pegasus.zip + path: "mame/bios/pegasus.zip" standalone_path: "pegasus.zip" required: true category: bios_zip @@ -5296,6 +5442,7 @@ files: # Amstrad PCW (Joyce) - name: pcw8256.zip + path: "mame/bios/pcw8256.zip" standalone_path: "pcw8256.zip" required: true category: bios_zip @@ -5319,6 +5466,7 @@ files: crc32: "25260958" - name: pcw9512.zip + path: "mame/bios/pcw9512.zip" standalone_path: "pcw9512.zip" required: true category: bios_zip @@ -5338,6 +5486,7 @@ files: # vis.cpp: vis (parent, WORKING). Tandy/Memorex MD-2500 (1992). # CD-ROM-based multimedia system built on modified 286 PC hardware. - name: vis.zip + path: "mame/bios/vis.zip" standalone_path: "vis.zip" required: true category: bios_zip @@ -5360,6 +5509,7 @@ files: # Z80-based home computers (1977-1983). Only trs80 (Level I) is MACHINE_SUPPORTS_SAVE, # all others MACHINE_NOT_WORKING. Software lists: trs80_cass, trs80_flop, trs80_quik. - name: trs80.zip + path: "mame/bios/trs80.zip" standalone_path: "trs80.zip" required: true category: bios_zip @@ -5377,6 +5527,7 @@ files: crc32: "0033f2b9" - name: trs80l2.zip + path: "mame/bios/trs80l2.zip" standalone_path: "trs80l2.zip" required: true category: bios_zip @@ -5417,6 +5568,7 @@ files: crc32: "0033f2b9" - name: eg3003.zip + path: "mame/bios/eg3003.zip" standalone_path: "eg3003.zip" required: false category: bios_zip @@ -5449,6 +5601,7 @@ files: crc32: "150c5f1f" - name: sys80.zip + path: "mame/bios/sys80.zip" standalone_path: "sys80.zip" required: false category: bios_zip @@ -5466,6 +5619,7 @@ files: crc32: "0033f2b9" - name: ht1080z.zip + path: "mame/bios/ht1080z.zip" standalone_path: "ht1080z.zip" required: false category: bios_zip @@ -5479,6 +5633,7 @@ files: crc32: "e8c59d4f" - name: ht1080z2.zip + path: "mame/bios/ht1080z2.zip" standalone_path: "ht1080z2.zip" required: false category: bios_zip @@ -5496,6 +5651,7 @@ files: crc32: "6728f0ab" - name: ht108064.zip + path: "mame/bios/ht108064.zip" standalone_path: "ht108064.zip" required: false category: bios_zip @@ -5521,6 +5677,7 @@ files: crc32: "e76b73a4" - name: trs80m3.zip + path: "mame/bios/trs80m3.zip" standalone_path: "trs80m3.zip" required: true category: bios_zip @@ -5561,6 +5718,7 @@ files: crc32: "444c8b60" - name: trs80m4.zip + path: "mame/bios/trs80m4.zip" standalone_path: "trs80m4.zip" required: false category: bios_zip @@ -5580,6 +5738,7 @@ files: crc32: "444c8b60" - name: trs80m4p.zip + path: "mame/bios/trs80m4p.zip" standalone_path: "trs80m4p.zip" required: false category: bios_zip @@ -5605,6 +5764,7 @@ files: crc32: "1ac44bea" - name: cp500.zip + path: "mame/bios/cp500.zip" standalone_path: "cp500.zip" required: false category: bios_zip @@ -5627,6 +5787,7 @@ files: # cartridge slot with the "fdc" option by default, the coco_fdc device. # Software lists: coco_cart, coco_flop. - name: coco.zip + path: "mame/bios/coco.zip" standalone_path: "coco.zip" required: true category: bios_zip @@ -5659,6 +5820,7 @@ files: crc32: "a82a6254" - name: coco2b.zip + path: "mame/bios/coco2b.zip" standalone_path: "coco2b.zip" required: true category: bios_zip @@ -5676,6 +5838,7 @@ files: crc32: "a82a6254" - name: coco3.zip + path: "mame/bios/coco3.zip" standalone_path: "coco3.zip" required: true category: bios_zip @@ -5689,6 +5852,7 @@ files: crc32: "b4c88d6c" - name: coco3p.zip + path: "mame/bios/coco3p.zip" standalone_path: "coco3p.zip" required: true category: bios_zip @@ -5702,6 +5866,7 @@ files: crc32: "ff050d80" - name: coco_fdc.zip + path: "mame/bios/coco_fdc.zip" standalone_path: "coco_fdc.zip" required: true category: bios_zip @@ -5764,6 +5929,7 @@ files: # Dragon 64 - name: dragon64.zip + path: "mame/bios/dragon64.zip" standalone_path: "dragon64.zip" required: true category: bios_zip @@ -5782,6 +5948,7 @@ files: # Acorn Archimedes - name: aa310.zip + path: "mame/bios/aa310.zip" standalone_path: "aa310.zip" required: true category: bios_zip @@ -5935,6 +6102,7 @@ files: crc32: "96ed59b2" - name: archimedes_keyboard.zip + path: "mame/bios/archimedes_keyboard.zip" standalone_path: "archimedes_keyboard.zip" required: true category: bios_zip @@ -5949,6 +6117,7 @@ files: # Epoch Super Cassette Vision - name: scv.zip + path: "mame/bios/scv.zip" standalone_path: "scv.zip" required: true category: bios_zip @@ -5971,6 +6140,7 @@ files: # TI-99/4A - name: ti99_4a.zip + path: "mame/bios/ti99_4a.zip" standalone_path: "ti99_4a.zip" required: true category: bios_zip @@ -6000,6 +6170,7 @@ files: crc32: "37859301" - name: ti99_speech.zip + path: "mame/bios/ti99_speech.zip" standalone_path: "ti99_speech.zip" required: false category: bios_zip @@ -6020,6 +6191,7 @@ files: # Tomy Tutor - name: tutor.zip + path: "mame/bios/tutor.zip" standalone_path: "tutor.zip" required: true category: bios_zip @@ -6042,6 +6214,7 @@ files: # Philips VG-5000 - name: vg5k.zip + path: "mame/bios/vg5k.zip" standalone_path: "vg5k.zip" required: true category: bios_zip @@ -6071,6 +6244,7 @@ files: # bbcmc.cpp: bbcmc (parent, BBC Master Compact). Software lists bbc_flop, # bbc_cass and bbc_rom among others. - name: bbcm.zip + path: "mame/bios/bbcm.zip" standalone_path: "bbcm.zip" required: true category: bios_zip @@ -6128,6 +6302,7 @@ files: sha1: "f3cb7f12b7432caba28d067f01af575779220aac" - name: bbcmc.zip + path: "mame/bios/bbcmc.zip" standalone_path: "bbcmc.zip" required: true category: bios_zip @@ -6147,6 +6322,7 @@ files: sha1: "140d002d2d9cd34b47197a2ba823505af2a84633" - name: saa5050.zip + path: "mame/bios/saa5050.zip" standalone_path: "saa5050.zip" required: true category: bios_zip @@ -6163,6 +6339,7 @@ files: sha1: "6c8daba70374e5aa3a6402f24cdc5f8677d58a0f" - name: bbc_tube_80186.zip + path: "mame/bios/bbc_tube_80186.zip" standalone_path: "bbc_tube_80186.zip" required: false category: bios_zip @@ -6184,6 +6361,7 @@ files: sha1: "45dc8d7e7936afbec6de423569d9005a1c350316" - name: bbc_bitstik1.zip + path: "mame/bios/bbc_bitstik1.zip" standalone_path: "bbc_bitstik1.zip" required: false category: bios_zip @@ -6197,6 +6375,7 @@ files: sha1: "c6f2cf2f6d1e48819a8381c6a1c97ca8fa5ab117" - name: bbc_bitstik2.zip + path: "mame/bios/bbc_bitstik2.zip" standalone_path: "bbc_bitstik2.zip" required: false category: bios_zip @@ -6226,6 +6405,7 @@ files: # bk.cpp: bk0010 (parent) with clones bk001001, bk0010fd, bk0011 and # bk0011m. A clone looks for its ROMs in its own set, then in bk0010.zip. - name: bk0010.zip + path: "mame/bios/bk0010.zip" standalone_path: "bk0010.zip" required: true category: bios_zip @@ -6250,6 +6430,7 @@ files: # GCE Vectrex - name: vectrex.zip + path: "mame/bios/vectrex.zip" standalone_path: "vectrex.zip" required: true category: bios_zip @@ -6270,6 +6451,7 @@ files: # Enterprise 64/128 - name: ep64_exdos.zip + path: "mame/bios/ep64_exdos.zip" standalone_path: "ep64_exdos.zip" required: false category: bios_zip @@ -6287,6 +6469,7 @@ files: # Device ROMs: sound chip ROM data - name: qsound.zip + path: "mame/bios/qsound.zip" standalone_path: "qsound.zip" required: false category: bios_zip @@ -6306,6 +6489,7 @@ files: sha1: "555f50fe5cdf127619da7d854c03f4a244a0c501" - name: ym2413.zip + path: "mame/bios/ym2413.zip" standalone_path: "ym2413.zip" required: false category: bios_zip @@ -6325,6 +6509,7 @@ files: sha1: "bb5537717e0b34849456b5ca7d405403dc3f8fda" - name: ym2608.zip + path: "mame/bios/ym2608.zip" standalone_path: "ym2608.zip" required: false category: bios_zip @@ -6344,6 +6529,7 @@ files: sha1: "50b6c3e288eaa12ad275d4f323267bb72b0445df" - name: ekara.zip + path: "mame/bios/ekara.zip" standalone_path: "ekara.zip" system: tvgames required: true @@ -6356,6 +6542,7 @@ files: sha1: "d75dda7434933135d2f7e353840a9384e9a0d586" - name: ekaraa.zip + path: "mame/bios/ekaraa.zip" standalone_path: "ekaraa.zip" system: tvgames required: true @@ -6368,6 +6555,7 @@ files: sha1: "450fbe53826cdb87ec797f84b9757987afcc1ec5" - name: ekaraj.zip + path: "mame/bios/ekaraj.zip" standalone_path: "ekaraj.zip" system: tvgames required: true @@ -6380,6 +6568,7 @@ files: sha1: "58b7f36a81571a2df5e812c118fdf68812a05abc" - name: ekarag.zip + path: "mame/bios/ekarag.zip" standalone_path: "ekarag.zip" system: tvgames required: true @@ -6392,6 +6581,7 @@ files: sha1: "433e65a6ea029b67ee62b4b3de52ff3504cfdf16" - name: ekaras.zip + path: "mame/bios/ekaras.zip" standalone_path: "ekaras.zip" system: tvgames required: true @@ -6404,6 +6594,7 @@ files: sha1: "402053e22e371c5f5e8069a4bf3b33841e742375" - name: isinger.zip + path: "mame/bios/isinger.zip" standalone_path: "isinger.zip" system: tvgames required: true @@ -6416,6 +6607,7 @@ files: sha1: "879da069ca8c126232a1b2dfcce25c8615540e48" - name: ekaraphs.zip + path: "mame/bios/ekaraphs.zip" standalone_path: "ekaraphs.zip" system: tvgames required: true @@ -6428,6 +6620,7 @@ files: sha1: "baaf35d56fa45b6f995b8466331bb30f0035f734" - name: epitch.zip + path: "mame/bios/epitch.zip" standalone_path: "epitch.zip" system: tvgames required: true @@ -6440,6 +6633,7 @@ files: sha1: "58b7f36a81571a2df5e812c118fdf68812a05abc" - name: ekaramix.zip + path: "mame/bios/ekaramix.zip" standalone_path: "ekaramix.zip" system: tvgames required: true @@ -6452,6 +6646,7 @@ files: sha1: "26f8c9edcbbed77e86a1cb5a0b91c92a16fef433" - name: ddrfammt.zip + path: "mame/bios/ddrfammt.zip" standalone_path: "ddrfammt.zip" system: tvgames required: true @@ -6464,6 +6659,7 @@ files: sha1: "a1043047056dd27bca69767ee2044461ec549465" - name: popira.zip + path: "mame/bios/popira.zip" standalone_path: "popira.zip" system: tvgames required: true @@ -6476,6 +6672,7 @@ files: sha1: "fb2ae023fc8a188c79b2d6550f737e06c05e12da" - name: popirak.zip + path: "mame/bios/popirak.zip" standalone_path: "popirak.zip" system: tvgames required: true @@ -6488,6 +6685,7 @@ files: sha1: "7877ac33b57bdd8ceac6bda3b0006a3274ad4dce" - name: popira2.zip + path: "mame/bios/popira2.zip" standalone_path: "popira2.zip" system: tvgames required: true @@ -6500,6 +6698,7 @@ files: sha1: "8b6c812d37e2dc2f2531b0e47d84ad8485729dc5" - name: taikodp.zip + path: "mame/bios/taikodp.zip" standalone_path: "taikodp.zip" system: tvgames required: true @@ -6512,6 +6711,7 @@ files: sha1: "03cae465965935fc084fb906f8f5de7679f42dd1" - name: jpopira.zip + path: "mame/bios/jpopira.zip" standalone_path: "jpopira.zip" system: tvgames required: true @@ -6528,6 +6728,7 @@ files: sha1: "e8f4ab51445777fe459f9ff09333f548c4e3507c" - name: evio.zip + path: "mame/bios/evio.zip" standalone_path: "evio.zip" system: tvgames required: true @@ -6540,6 +6741,7 @@ files: sha1: "f2b7e213eb78065a63ef484a619bcfc61299e30e" - name: tak_daig.zip + path: "mame/bios/tak_daig.zip" standalone_path: "tak_daig.zip" system: tvgames required: true @@ -6552,6 +6754,7 @@ files: sha1: "7d7b54684f8b0b92daf02738560779c7df627b91" - name: gcslottv.zip + path: "mame/bios/gcslottv.zip" standalone_path: "gcslottv.zip" system: tvgames required: true @@ -6564,6 +6767,7 @@ files: sha1: "1c7fc0c85d817db1550d40c0258f424770e0bd81" - name: hikara.zip + path: "mame/bios/hikara.zip" standalone_path: "hikara.zip" system: tvgames required: true @@ -6576,6 +6780,7 @@ files: sha1: "684dcfeaa8ac2888da2055617603494ce5fed93c" - name: galgames.zip + path: "mame/bios/galgames.zip" standalone_path: "galgames.zip" system: ces-galaxy-games required: true @@ -7577,6 +7782,7 @@ files: # ref: upstream src/frontend/mame/infoxml.cpp:761-765, 786, 1010-1015, # upstream src/frontend/mame/infoxml.cpp:2129-2172 - name: 22vp931.zip + path: "mame/bios/22vp931.zip" standalone_path: "22vp931.zip" required: false category: bios_zip @@ -7591,6 +7797,7 @@ files: sha1: "ea2d7f6a044ed085ce5e09d8b1b1a21c37f0e9b8" - name: 3c505.zip + path: "mame/bios/3c505.zip" standalone_path: "3c505.zip" required: false category: bios_zip @@ -7627,6 +7834,7 @@ files: sha1: "ca5ddcb272ab2851e00473dc960b23039746e3d2" - name: 3xtwin.zip + path: "mame/bios/3xtwin.zip" standalone_path: "3xtwin.zip" required: false category: bios_zip @@ -7645,6 +7853,7 @@ files: sha1: "359428ce0047f9192a44790c8670af956cf6ed70" - name: 4dparprn.zip + path: "mame/bios/4dparprn.zip" standalone_path: "4dparprn.zip" required: false category: bios_zip @@ -7662,6 +7871,7 @@ files: sha1: "d6179664d6860df5ed26fce72f253e28f933b01a" - name: a1000kbd_de.zip + path: "mame/bios/a1000kbd_de.zip" standalone_path: "a1000kbd_de.zip" required: false category: bios_zip @@ -7678,6 +7888,7 @@ files: bad_dump: true - name: a1000kbd_dk.zip + path: "mame/bios/a1000kbd_dk.zip" standalone_path: "a1000kbd_dk.zip" required: false category: bios_zip @@ -7694,6 +7905,7 @@ files: bad_dump: true - name: a1000kbd_fr.zip + path: "mame/bios/a1000kbd_fr.zip" standalone_path: "a1000kbd_fr.zip" required: false category: bios_zip @@ -7710,6 +7922,7 @@ files: bad_dump: true - name: a1000kbd_gb.zip + path: "mame/bios/a1000kbd_gb.zip" standalone_path: "a1000kbd_gb.zip" required: false category: bios_zip @@ -7726,6 +7939,7 @@ files: bad_dump: true - name: a1000kbd_it.zip + path: "mame/bios/a1000kbd_it.zip" standalone_path: "a1000kbd_it.zip" required: false category: bios_zip @@ -7742,6 +7956,7 @@ files: bad_dump: true - name: a1000kbd_se.zip + path: "mame/bios/a1000kbd_se.zip" standalone_path: "a1000kbd_se.zip" required: false category: bios_zip @@ -7758,6 +7973,7 @@ files: bad_dump: true - name: a1000kbd_us.zip + path: "mame/bios/a1000kbd_us.zip" standalone_path: "a1000kbd_us.zip" required: false category: bios_zip @@ -7774,6 +7990,7 @@ files: bad_dump: true - name: a1200kbd_rb.zip + path: "mame/bios/a1200kbd_rb.zip" standalone_path: "a1200kbd_rb.zip" required: false category: bios_zip @@ -7789,6 +8006,7 @@ files: sha1: "301ec6a69404457d912c89e3fc54095eda9f0e93" - name: a1cass.zip + path: "mame/bios/a1cass.zip" standalone_path: "a1cass.zip" required: false category: bios_zip @@ -7808,6 +8026,7 @@ files: sha1: "851f3bd6863859a1a6909179a5e5bf744b3d807e" - name: a2000kbd_ch.zip + path: "mame/bios/a2000kbd_ch.zip" standalone_path: "a2000kbd_ch.zip" required: false category: bios_zip @@ -7823,6 +8042,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_de.zip + path: "mame/bios/a2000kbd_de.zip" standalone_path: "a2000kbd_de.zip" required: false category: bios_zip @@ -7838,6 +8058,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_dk.zip + path: "mame/bios/a2000kbd_dk.zip" standalone_path: "a2000kbd_dk.zip" required: false category: bios_zip @@ -7853,6 +8074,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_es.zip + path: "mame/bios/a2000kbd_es.zip" standalone_path: "a2000kbd_es.zip" required: false category: bios_zip @@ -7868,6 +8090,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_fr.zip + path: "mame/bios/a2000kbd_fr.zip" standalone_path: "a2000kbd_fr.zip" required: false category: bios_zip @@ -7883,6 +8106,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_g80_de.zip + path: "mame/bios/a2000kbd_g80_de.zip" standalone_path: "a2000kbd_g80_de.zip" required: false category: bios_zip @@ -7898,6 +8122,7 @@ files: sha1: "e787dc05de227f30a47ac5b9ee7a355c2e9e693b" - name: a2000kbd_g80_dk.zip + path: "mame/bios/a2000kbd_g80_dk.zip" standalone_path: "a2000kbd_g80_dk.zip" required: false category: bios_zip @@ -7913,6 +8138,7 @@ files: sha1: "e787dc05de227f30a47ac5b9ee7a355c2e9e693b" - name: a2000kbd_g80_gb.zip + path: "mame/bios/a2000kbd_g80_gb.zip" standalone_path: "a2000kbd_g80_gb.zip" required: false category: bios_zip @@ -7928,6 +8154,7 @@ files: sha1: "e787dc05de227f30a47ac5b9ee7a355c2e9e693b" - name: a2000kbd_g80_se.zip + path: "mame/bios/a2000kbd_g80_se.zip" standalone_path: "a2000kbd_g80_se.zip" required: false category: bios_zip @@ -7943,6 +8170,7 @@ files: sha1: "e787dc05de227f30a47ac5b9ee7a355c2e9e693b" - name: a2000kbd_g80_us.zip + path: "mame/bios/a2000kbd_g80_us.zip" standalone_path: "a2000kbd_g80_us.zip" required: false category: bios_zip @@ -7958,6 +8186,7 @@ files: sha1: "e787dc05de227f30a47ac5b9ee7a355c2e9e693b" - name: a2000kbd_gb.zip + path: "mame/bios/a2000kbd_gb.zip" standalone_path: "a2000kbd_gb.zip" required: false category: bios_zip @@ -7973,6 +8202,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_it.zip + path: "mame/bios/a2000kbd_it.zip" standalone_path: "a2000kbd_it.zip" required: false category: bios_zip @@ -7988,6 +8218,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_no.zip + path: "mame/bios/a2000kbd_no.zip" standalone_path: "a2000kbd_no.zip" required: false category: bios_zip @@ -8003,6 +8234,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_se.zip + path: "mame/bios/a2000kbd_se.zip" standalone_path: "a2000kbd_se.zip" required: false category: bios_zip @@ -8018,6 +8250,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2000kbd_us.zip + path: "mame/bios/a2000kbd_us.zip" standalone_path: "a2000kbd_us.zip" required: false category: bios_zip @@ -8033,6 +8266,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a2aevm80.zip + path: "mame/bios/a2aevm80.zip" standalone_path: "a2aevm80.zip" required: false category: bios_zip @@ -8054,6 +8288,7 @@ files: sha1: "f90658ffee7740f3cb30ecef2e151f7dc6098833" - name: a2ap16.zip + path: "mame/bios/a2ap16.zip" standalone_path: "a2ap16.zip" required: false category: bios_zip @@ -8075,6 +8310,7 @@ files: sha1: "19c95f91a67b948fc00a14621d574d629479d451" - name: a2ap16a.zip + path: "mame/bios/a2ap16a.zip" standalone_path: "a2ap16a.zip" required: false category: bios_zip @@ -8096,6 +8332,7 @@ files: sha1: "135f4f35607dd74941f0a3cae813227bf8a8a020" - name: a2aplcrd.zip + path: "mame/bios/a2aplcrd.zip" standalone_path: "a2aplcrd.zip" required: false category: bios_zip @@ -8112,6 +8349,7 @@ files: sha1: "71d633be864b6084362e85108a4e600cbe6e44fe" - name: a2autokbd.zip + path: "mame/bios/a2autokbd.zip" standalone_path: "a2autokbd.zip" required: false category: bios_zip @@ -8127,6 +8365,7 @@ files: sha1: "a0cb73e43f30b6a05bd766136dcd3cee1384bf5f" - name: a2booti.zip + path: "mame/bios/a2booti.zip" standalone_path: "a2booti.zip" required: false category: bios_zip @@ -8143,6 +8382,7 @@ files: sha1: "f505ad4685cd44e4cce5b8d6d27b9c4fea159f11" - name: a2bufgrapplerplus.zip + path: "mame/bios/a2bufgrapplerplus.zip" standalone_path: "a2bufgrapplerplus.zip" required: false category: bios_zip @@ -8164,6 +8404,7 @@ files: sha1: "f0907cf02d8c5dbf1bfacb0d626f2231142f0ff7" - name: a2bufgrapplerplusa.zip + path: "mame/bios/a2bufgrapplerplusa.zip" standalone_path: "a2bufgrapplerplusa.zip" required: false category: bios_zip @@ -8185,6 +8426,7 @@ files: sha1: "f0907cf02d8c5dbf1bfacb0d626f2231142f0ff7" - name: a2cffa02.zip + path: "mame/bios/a2cffa02.zip" standalone_path: "a2cffa02.zip" required: false category: bios_zip @@ -8202,6 +8444,7 @@ files: sha1: "d600692ed9626668233a22a48236af639410cb7b" - name: a2cffa2.zip + path: "mame/bios/a2cffa2.zip" standalone_path: "a2cffa2.zip" required: false category: bios_zip @@ -8219,6 +8462,7 @@ files: sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd" - name: a2corvus.zip + path: "mame/bios/a2corvus.zip" standalone_path: "a2corvus.zip" required: false category: bios_zip @@ -8236,6 +8480,7 @@ files: sha1: "dbd6efeb3b54c0523b8b4eda8b3d737413f6a91a" - name: a2diskiing.zip + path: "mame/bios/a2diskiing.zip" standalone_path: "a2diskiing.zip" required: false category: bios_zip @@ -8253,6 +8498,7 @@ files: sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16" - name: a2excel9.zip + path: "mame/bios/a2excel9.zip" standalone_path: "a2excel9.zip" required: false category: bios_zip @@ -8271,6 +8517,7 @@ files: sha1: "d2960851ce8f70df12d23021dfbe031ec5a8988f" - name: a2focdrv.zip + path: "mame/bios/a2focdrv.zip" standalone_path: "a2focdrv.zip" required: false category: bios_zip @@ -8288,6 +8535,7 @@ files: sha1: "acf414aa145fcfa1c12aca0269f1f7ada82f1c04" - name: a2grappler.zip + path: "mame/bios/a2grappler.zip" standalone_path: "a2grappler.zip" required: false category: bios_zip @@ -8305,6 +8553,7 @@ files: sha1: "791ebae64a7fad8f42bdfaec36b9e2d34f12ded8" - name: a2grapplerplus.zip + path: "mame/bios/a2grapplerplus.zip" standalone_path: "a2grapplerplus.zip" required: false category: bios_zip @@ -8328,6 +8577,7 @@ files: sha1: "433ae61a0553ee9c1628ea5b6376dac848c04cad" - name: a2hsscsi.zip + path: "mame/bios/a2hsscsi.zip" standalone_path: "a2hsscsi.zip" required: false category: bios_zip @@ -8345,6 +8595,7 @@ files: sha1: "7d32227299933bfc1b7f8bc2062906fdfe530674" - name: a2ieee488.zip + path: "mame/bios/a2ieee488.zip" standalone_path: "a2ieee488.zip" required: false category: bios_zip @@ -8362,6 +8613,7 @@ files: sha1: "d5cd452bdb7f9ab5c1d77806ffea4b63da77f714" - name: a2iwm.zip + path: "mame/bios/a2iwm.zip" standalone_path: "a2iwm.zip" required: false category: bios_zip @@ -8377,6 +8629,7 @@ files: sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16" - name: a2kb200.zip + path: "mame/bios/a2kb200.zip" standalone_path: "a2kb200.zip" required: false category: bios_zip @@ -8392,6 +8645,7 @@ files: sha1: "019742022a2a1b449cf3d739bfdd708af6202c44" - name: a2memexp.zip + path: "mame/bios/a2memexp.zip" standalone_path: "a2memexp.zip" required: false category: bios_zip @@ -8409,6 +8663,7 @@ files: sha1: "6e823a1fa40ed37eeddcef23f5df24da2ea1463e" - name: a2mouse.zip + path: "mame/bios/a2mouse.zip" standalone_path: "a2mouse.zip" required: false category: bios_zip @@ -8438,6 +8693,7 @@ files: sha1: "ba267b69a2fda2a2348b140979ece562411bb37b" - name: a2parprn.zip + path: "mame/bios/a2parprn.zip" standalone_path: "a2parprn.zip" required: false category: bios_zip @@ -8456,6 +8712,7 @@ files: bad_dump: true - name: a2pdromdr.zip + path: "mame/bios/a2pdromdr.zip" standalone_path: "a2pdromdr.zip" required: false category: bios_zip @@ -8472,6 +8729,7 @@ files: sha1: "f0733b7a68126adc5247a1008de2ea4f65ad645a" - name: a2pic.zip + path: "mame/bios/a2pic.zip" standalone_path: "a2pic.zip" required: false category: bios_zip @@ -8489,6 +8747,7 @@ files: sha1: "de8aa285dcac88b1cc80ec9128b092833f5174b6" - name: a2q68.zip + path: "mame/bios/a2q68.zip" standalone_path: "a2q68.zip" required: false category: bios_zip @@ -8506,6 +8765,7 @@ files: sha1: "e46d5e8256faece3723e9040f78fd1c8edb3ee0e" - name: a2q68plus.zip + path: "mame/bios/a2q68plus.zip" standalone_path: "a2q68plus.zip" required: false category: bios_zip @@ -8523,6 +8783,7 @@ files: sha1: "e46d5e8256faece3723e9040f78fd1c8edb3ee0e" - name: a2ramfac.zip + path: "mame/bios/a2ramfac.zip" standalone_path: "a2ramfac.zip" required: false category: bios_zip @@ -8552,6 +8813,7 @@ files: sha1: "9286d35907939aadb1fffd3e1d75603fe3e846ad" - name: a2romfp.zip + path: "mame/bios/a2romfp.zip" standalone_path: "a2romfp.zip" required: false category: bios_zip @@ -8587,6 +8849,7 @@ files: sha1: "a28852ff997b4790e53d8d0352112c4b1a395098" - name: a2romint.zip + path: "mame/bios/a2romint.zip" standalone_path: "a2romint.zip" required: false category: bios_zip @@ -8629,6 +8892,7 @@ files: sha1: "52a18bd578a4694420009cad7a7a5779a8c00226" - name: a2scsi.zip + path: "mame/bios/a2scsi.zip" standalone_path: "a2scsi.zip" required: false category: bios_zip @@ -8645,6 +8909,7 @@ files: sha1: "451c85c46b92e6ad2ad930f055ccf0fe3049936d" - name: a2sd.zip + path: "mame/bios/a2sd.zip" standalone_path: "a2sd.zip" required: false category: bios_zip @@ -8659,6 +8924,7 @@ files: sha1: "7e0acef01e622eeed6f8e87893d07c701bbef016" - name: a2sic.zip + path: "mame/bios/a2sic.zip" standalone_path: "a2sic.zip" required: false category: bios_zip @@ -8690,6 +8956,7 @@ files: sha1: "8ff44e892b2510573e9528d781b60429c38dbe30" - name: a2sider1.zip + path: "mame/bios/a2sider1.zip" standalone_path: "a2sider1.zip" required: false category: bios_zip @@ -8707,6 +8974,7 @@ files: sha1: "7f50b5e00cac4960204f50448a6e2d623b1a41e2" - name: a2sider2.zip + path: "mame/bios/a2sider2.zip" standalone_path: "a2sider2.zip" required: false category: bios_zip @@ -8724,6 +8992,7 @@ files: sha1: "8d0a5d6ce3b9a236771126033c4aba6c0cc5e704" - name: a2ssc.zip + path: "mame/bios/a2ssc.zip" standalone_path: "a2ssc.zip" required: false category: bios_zip @@ -8741,6 +9010,7 @@ files: sha1: "6dab633470c6bc4cb3e81d09fda46597caf8ee57" - name: a2superdrive.zip + path: "mame/bios/a2superdrive.zip" standalone_path: "a2superdrive.zip" required: false category: bios_zip @@ -8758,6 +9028,7 @@ files: sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46" - name: a2suprterm.zip + path: "mame/bios/a2suprterm.zip" standalone_path: "a2suprterm.zip" required: false category: bios_zip @@ -8773,6 +9044,7 @@ files: sha1: "66a7411c46c04a8089a7ddfb5ffd9809dd08a21f" - name: a2surance.zip + path: "mame/bios/a2surance.zip" standalone_path: "a2surance.zip" required: false category: bios_zip @@ -8788,6 +9060,7 @@ files: sha1: "723dc6cd32de5a0f27af7503764185ac58904c05" - name: a2swyft.zip + path: "mame/bios/a2swyft.zip" standalone_path: "a2swyft.zip" required: false category: bios_zip @@ -8806,6 +9079,7 @@ files: sha1: "38be885539cf91423a246378c411ac8b2f150ec6" - name: a2thunpl.zip + path: "mame/bios/a2thunpl.zip" standalone_path: "a2thunpl.zip" required: false category: bios_zip @@ -8823,6 +9097,7 @@ files: sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a" - name: a2tk10.zip + path: "mame/bios/a2tk10.zip" standalone_path: "a2tk10.zip" required: false category: bios_zip @@ -8838,6 +9113,7 @@ files: sha1: "27c5160b913e0f62120f384026d24b9f1acb6970" - name: a2tmstho.zip + path: "mame/bios/a2tmstho.zip" standalone_path: "a2tmstho.zip" required: false category: bios_zip @@ -8855,6 +9131,7 @@ files: sha1: "ae0173da61581a06188c1bee89e95a0aa536c411" - name: a2twarp.zip + path: "mame/bios/a2twarp.zip" standalone_path: "a2twarp.zip" required: false category: bios_zip @@ -8870,6 +9147,7 @@ files: sha1: "7b75534e7895e04859a0b1337801c6eeb0cef52a" - name: a2ultrme.zip + path: "mame/bios/a2ultrme.zip" standalone_path: "a2ultrme.zip" required: false category: bios_zip @@ -8895,6 +9173,7 @@ files: sha1: "d4a36837cb98bb65f7ddef7455eb5a7f8e648a82" - name: a2ulttrm.zip + path: "mame/bios/a2ulttrm.zip" standalone_path: "a2ulttrm.zip" required: false category: bios_zip @@ -8920,6 +9199,7 @@ files: sha1: "0ad0c5e802e48495da27f7bd26ee3ab1c92d74dd" - name: a2uniprint.zip + path: "mame/bios/a2uniprint.zip" standalone_path: "a2uniprint.zip" required: false category: bios_zip @@ -8937,6 +9217,7 @@ files: sha1: "0a2789ec2cb28f10a2836a91feabc24ceca8f142" - name: a2vidtrm.zip + path: "mame/bios/a2vidtrm.zip" standalone_path: "a2vidtrm.zip" required: false category: bios_zip @@ -9005,6 +9286,7 @@ files: sha1: "50c3df528109c65491a001ec74e50351a652c1fd" - name: a2vistaa800.zip + path: "mame/bios/a2vistaa800.zip" standalone_path: "a2vistaa800.zip" required: false category: bios_zip @@ -9020,6 +9302,7 @@ files: sha1: "8e0b4f4c6c467e2280bd250ee54f471728640964" - name: a2vtc1.zip + path: "mame/bios/a2vtc1.zip" standalone_path: "a2vtc1.zip" required: false category: bios_zip @@ -9045,6 +9328,7 @@ files: sha1: "0d9b1c3917e23ca35d5fbd405f05ff6e87122b92" - name: a2vulcan.zip + path: "mame/bios/a2vulcan.zip" standalone_path: "a2vulcan.zip" required: false category: bios_zip @@ -9060,6 +9344,7 @@ files: sha1: "1d668e856e33c6eeb10fe26975341afa8acb81f5" - name: a2vulgld.zip + path: "mame/bios/a2vulgld.zip" standalone_path: "a2vulgld.zip" required: false category: bios_zip @@ -9075,6 +9360,7 @@ files: sha1: "96a22c2540fa603648a4e638e176eee76523b4e1" - name: a2vuliie.zip + path: "mame/bios/a2vuliie.zip" standalone_path: "a2vuliie.zip" required: false category: bios_zip @@ -9090,6 +9376,7 @@ files: sha1: "d88ed27cd776f967b0e3440e05712b3830995f24" - name: a2zipdrv.zip + path: "mame/bios/a2zipdrv.zip" standalone_path: "a2zipdrv.zip" required: false category: bios_zip @@ -9107,6 +9394,7 @@ files: sha1: "46636bfed88c864139e3d2826661908a8c07c459" - name: a3fdc.zip + path: "mame/bios/a3fdc.zip" standalone_path: "a3fdc.zip" required: false category: bios_zip @@ -9122,6 +9410,7 @@ files: sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4" - name: a500kbd_ch.zip + path: "mame/bios/a500kbd_ch.zip" standalone_path: "a500kbd_ch.zip" required: false category: bios_zip @@ -9137,6 +9426,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_de.zip + path: "mame/bios/a500kbd_de.zip" standalone_path: "a500kbd_de.zip" required: false category: bios_zip @@ -9152,6 +9442,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_dk.zip + path: "mame/bios/a500kbd_dk.zip" standalone_path: "a500kbd_dk.zip" required: false category: bios_zip @@ -9167,6 +9458,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_es.zip + path: "mame/bios/a500kbd_es.zip" standalone_path: "a500kbd_es.zip" required: false category: bios_zip @@ -9182,6 +9474,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_fr.zip + path: "mame/bios/a500kbd_fr.zip" standalone_path: "a500kbd_fr.zip" required: false category: bios_zip @@ -9197,6 +9490,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_gb.zip + path: "mame/bios/a500kbd_gb.zip" standalone_path: "a500kbd_gb.zip" required: false category: bios_zip @@ -9212,6 +9506,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_it.zip + path: "mame/bios/a500kbd_it.zip" standalone_path: "a500kbd_it.zip" required: false category: bios_zip @@ -9227,6 +9522,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_no.zip + path: "mame/bios/a500kbd_no.zip" standalone_path: "a500kbd_no.zip" required: false category: bios_zip @@ -9242,6 +9538,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_se.zip + path: "mame/bios/a500kbd_se.zip" standalone_path: "a500kbd_se.zip" required: false category: bios_zip @@ -9257,6 +9554,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a500kbd_us.zip + path: "mame/bios/a500kbd_us.zip" standalone_path: "a500kbd_us.zip" required: false category: bios_zip @@ -9272,6 +9570,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_ch.zip + path: "mame/bios/a600kbd_ch.zip" standalone_path: "a600kbd_ch.zip" required: false category: bios_zip @@ -9287,6 +9586,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_de.zip + path: "mame/bios/a600kbd_de.zip" standalone_path: "a600kbd_de.zip" required: false category: bios_zip @@ -9302,6 +9602,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_dk.zip + path: "mame/bios/a600kbd_dk.zip" standalone_path: "a600kbd_dk.zip" required: false category: bios_zip @@ -9317,6 +9618,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_es.zip + path: "mame/bios/a600kbd_es.zip" standalone_path: "a600kbd_es.zip" required: false category: bios_zip @@ -9332,6 +9634,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_fr.zip + path: "mame/bios/a600kbd_fr.zip" standalone_path: "a600kbd_fr.zip" required: false category: bios_zip @@ -9347,6 +9650,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_gb.zip + path: "mame/bios/a600kbd_gb.zip" standalone_path: "a600kbd_gb.zip" required: false category: bios_zip @@ -9362,6 +9666,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_it.zip + path: "mame/bios/a600kbd_it.zip" standalone_path: "a600kbd_it.zip" required: false category: bios_zip @@ -9377,6 +9682,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_no.zip + path: "mame/bios/a600kbd_no.zip" standalone_path: "a600kbd_no.zip" required: false category: bios_zip @@ -9392,6 +9698,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_se.zip + path: "mame/bios/a600kbd_se.zip" standalone_path: "a600kbd_se.zip" required: false category: bios_zip @@ -9407,6 +9714,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: a600kbd_us.zip + path: "mame/bios/a600kbd_us.zip" standalone_path: "a600kbd_us.zip" required: false category: bios_zip @@ -9422,6 +9730,7 @@ files: sha1: "83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2" - name: abc1600mac.zip + path: "mame/bios/abc1600mac.zip" standalone_path: "abc1600mac.zip" required: false category: bios_zip @@ -9440,6 +9749,7 @@ files: sha1: "a3871f0d796bea9df8f25d41b3169dd4b8ef65ab" - name: abc1600mover.zip + path: "mame/bios/abc1600mover.zip" standalone_path: "abc1600mover.zip" required: false category: bios_zip @@ -9474,6 +9784,7 @@ files: sha1: "1129917845f8e505998b15288f02bf907487e4ac" - name: abc55.zip + path: "mame/bios/abc55.zip" standalone_path: "abc55.zip" required: false category: bios_zip @@ -9488,6 +9799,7 @@ files: sha1: "04a30141ac611d0544bbb786061515040c23480c" - name: abc77.zip + path: "mame/bios/abc77.zip" standalone_path: "abc77.zip" required: false category: bios_zip @@ -9502,6 +9814,7 @@ files: sha1: "04a30141ac611d0544bbb786061515040c23480c" - name: abc800kb.zip + path: "mame/bios/abc800kb.zip" standalone_path: "abc800kb.zip" required: false category: bios_zip @@ -9516,6 +9829,7 @@ files: sha1: "1824c5d304bbd09f97056cfa408e1b18b5219ba2" - name: abc80kb.zip + path: "mame/bios/abc80kb.zip" standalone_path: "abc80kb.zip" required: false category: bios_zip @@ -9530,6 +9844,7 @@ files: sha1: "f88be4918bfd6230b73335c6a75a3010d33b2caa" - name: abc830.zip + path: "mame/bios/abc830.zip" standalone_path: "abc830.zip" required: false category: bios_zip @@ -9565,6 +9880,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: abc832.zip + path: "mame/bios/abc832.zip" standalone_path: "abc832.zip" required: false category: bios_zip @@ -9600,6 +9916,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: abc834.zip + path: "mame/bios/abc834.zip" standalone_path: "abc834.zip" required: false category: bios_zip @@ -9635,6 +9952,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: abc838.zip + path: "mame/bios/abc838.zip" standalone_path: "abc838.zip" required: false category: bios_zip @@ -9670,6 +9988,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: abc850flop.zip + path: "mame/bios/abc850flop.zip" standalone_path: "abc850flop.zip" required: false category: bios_zip @@ -9704,6 +10023,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: abc99.zip + path: "mame/bios/abc99.zip" standalone_path: "abc99.zip" required: false category: bios_zip @@ -9734,6 +10054,7 @@ files: sha1: "0c1d9e320f82df05f4804992ef6f6f6cd20623f3" - name: abc_db4106.zip + path: "mame/bios/abc_db4106.zip" standalone_path: "abc_db4106.zip" required: false category: bios_zip @@ -9749,6 +10070,7 @@ files: sha1: "3f99ea2ef301d9e3415db152dad79171dc62cc2d" - name: abc_db4107.zip + path: "mame/bios/abc_db4107.zip" standalone_path: "abc_db4107.zip" required: false category: bios_zip @@ -9825,6 +10147,7 @@ files: sha1: "7ff8b2a19f71fe0279ab3e5a0a5fffcb6030360c" - name: abc_db4112.zip + path: "mame/bios/abc_db4112.zip" standalone_path: "abc_db4112.zip" required: false category: bios_zip @@ -9845,6 +10168,7 @@ files: sha1: "95c150d3152df318abd9267915d5669d2ec33895" - name: abc_fd2.zip + path: "mame/bios/abc_fd2.zip" standalone_path: "abc_fd2.zip" required: false category: bios_zip @@ -9867,6 +10191,7 @@ files: sha1: "d500377c34ac6c679c155f4a5208e1c3e00cd920" - name: abc_slutprov.zip + path: "mame/bios/abc_slutprov.zip" standalone_path: "abc_slutprov.zip" required: false category: bios_zip @@ -9881,6 +10206,7 @@ files: sha1: "f97cb6526a1d10b189164f26157522e382ca6bc6" - name: abc_ssa.zip + path: "mame/bios/abc_ssa.zip" standalone_path: "abc_ssa.zip" required: false category: bios_zip @@ -9903,6 +10229,7 @@ files: sha1: "9010cb3426bc61711ae940551b79b6ecba67defa" - name: abc_uni800.zip + path: "mame/bios/abc_uni800.zip" standalone_path: "abc_uni800.zip" required: false category: bios_zip @@ -9917,6 +10244,7 @@ files: sha1: "0c641f4cf321f0003da3fbd435edb138a9b949b4" - name: abc_unidisk.zip + path: "mame/bios/abc_unidisk.zip" standalone_path: "abc_unidisk.zip" required: false category: bios_zip @@ -9942,6 +10270,7 @@ files: sha1: "8db504d46ff0355c72bd58fd536abeb17425c532" - name: abcsio.zip + path: "mame/bios/abcsio.zip" standalone_path: "abcsio.zip" required: false category: bios_zip @@ -9960,6 +10289,7 @@ files: sha1: "d1f9b16530be28b03eeddb3f6ee4fa9e1cc9458e" - name: acb2072.zip + path: "mame/bios/acb2072.zip" standalone_path: "acb2072.zip" required: false category: bios_zip @@ -9984,6 +10314,7 @@ files: sha1: "82800005d532f0dc35cbf9ea6af75a97cb8b2e71" - name: ace80.zip + path: "mame/bios/ace80.zip" standalone_path: "ace80.zip" required: false category: bios_zip @@ -10001,6 +10332,7 @@ files: sha1: "8e9e9f12b78d545ccd90f5e30b6804ceeb6c939f" - name: ace_sp_reelctrl.zip + path: "mame/bios/ace_sp_reelctrl.zip" standalone_path: "ace_sp_reelctrl.zip" required: false category: bios_zip @@ -10016,6 +10348,7 @@ files: sha1: "44f78da8138caf4f79f1e8e9a2abe53d79c0fe79" - name: ace_sp_reelctrl_pcp.zip + path: "mame/bios/ace_sp_reelctrl_pcp.zip" standalone_path: "ace_sp_reelctrl_pcp.zip" required: false category: bios_zip @@ -10031,6 +10364,7 @@ files: sha1: "d1d6ea68d9aace4a4ea0de212f17426bccfe5856" - name: acorn_vdu80.zip + path: "mame/bios/acorn_vdu80.zip" standalone_path: "acorn_vdu80.zip" required: false category: bios_zip @@ -10046,6 +10380,7 @@ files: sha1: "04c326a745ba6a78185ebc2adeecb53a166a6ab3" - name: acs8600_ics.zip + path: "mame/bios/acs8600_ics.zip" standalone_path: "acs8600_ics.zip" required: false category: bios_zip @@ -10061,6 +10396,7 @@ files: sha1: "aee04574dea4c17112431536d3b7e3984b8afdc2" - name: agat7_flop.zip + path: "mame/bios/agat7_flop.zip" standalone_path: "agat7_flop.zip" required: false category: bios_zip @@ -10076,6 +10412,7 @@ files: sha1: "71626d3d2d4bbeeac2b77585b45a5566d20b8d34" - name: agat840k_hle.zip + path: "mame/bios/agat840k_hle.zip" standalone_path: "agat840k_hle.zip" required: false category: bios_zip @@ -10091,6 +10428,7 @@ files: sha1: "5d369bad6cdd6a70b0bb16480eba69640de87a2e" - name: agat9_flop.zip + path: "mame/bios/agat9_flop.zip" standalone_path: "agat9_flop.zip" required: false category: bios_zip @@ -10106,6 +10444,7 @@ files: sha1: "bf955189ebffe874c20ef649a3db8177dc16af61" - name: agat_fdc.zip + path: "mame/bios/agat_fdc.zip" standalone_path: "agat_fdc.zip" required: false category: bios_zip @@ -10125,6 +10464,7 @@ files: sha1: "b5305e82c81240a6fdc932a559b5493c59f302c6" - name: aha1542a.zip + path: "mame/bios/aha1542a.zip" standalone_path: "aha1542a.zip" required: false category: bios_zip @@ -10147,6 +10487,7 @@ files: sha1: "bba0d84fa1b67ea71905953c25201fa2020cf465" - name: aha1542b.zip + path: "mame/bios/aha1542b.zip" standalone_path: "aha1542b.zip" required: false category: bios_zip @@ -10216,6 +10557,7 @@ files: sha1: "5ad1bb4bde3e8c30380b05d32ac273c781ab12a8" - name: aha1542c.zip + path: "mame/bios/aha1542c.zip" standalone_path: "aha1542c.zip" required: false category: bios_zip @@ -10250,6 +10592,7 @@ files: sha1: "ae7900653357d5f32a2734bc13d9ec63bd805597" - name: aha1542cf.zip + path: "mame/bios/aha1542cf.zip" standalone_path: "aha1542cf.zip" required: false category: bios_zip @@ -10294,6 +10637,7 @@ files: sha1: "6edbdd9b0b15ef31ca0741cac31556d2d5266b6e" - name: aha1542cp.zip + path: "mame/bios/aha1542cp.zip" standalone_path: "aha1542cp.zip" required: false category: bios_zip @@ -10316,6 +10660,7 @@ files: sha1: "431dfc26312556ddd24fccc429b2b3e93bac5c2f" - name: aha1740.zip + path: "mame/bios/aha1740.zip" standalone_path: "aha1740.zip" required: false category: bios_zip @@ -10344,6 +10689,7 @@ files: sha1: "8ca143adfc7d20ad5d49f14dedabc8276454bf9e" - name: aha1742a.zip + path: "mame/bios/aha1742a.zip" standalone_path: "aha1742a.zip" required: false category: bios_zip @@ -10383,6 +10729,7 @@ files: sha1: "18cb3960dc47f2c14beb88f9680c1f66c4652b04" - name: aha2940.zip + path: "mame/bios/aha2940.zip" standalone_path: "aha2940.zip" required: false category: bios_zip @@ -10401,6 +10748,7 @@ files: sha1: "f134df1a542d6af8dd1878c6db0c734b7701d756" - name: aha2940au.zip + path: "mame/bios/aha2940au.zip" standalone_path: "aha2940au.zip" required: false category: bios_zip @@ -10423,6 +10771,7 @@ files: sha1: "93311b8c02e87492a40c1df6ea4eb60628bb2825" - name: alto2_cpu.zip + path: "mame/bios/alto2_cpu.zip" standalone_path: "alto2_cpu.zip" required: false category: bios_zip @@ -10609,6 +10958,7 @@ files: sha1: "583327a7d70cd02702c941c0e43c1e9408ff7fd0" - name: altos2_kbd.zip + path: "mame/bios/altos2_kbd.zip" standalone_path: "altos2_kbd.zip" required: false category: bios_zip @@ -10623,6 +10973,7 @@ files: sha1: "4b3f13e05058edef516a032a8a6652cc7e2d3be9" - name: am100kbd.zip + path: "mame/bios/am100kbd.zip" standalone_path: "am100kbd.zip" required: false category: bios_zip @@ -10638,6 +10989,7 @@ files: sha1: "9f24c54f7cee41f7fef41294f05c4bc89d65acfb" - name: amiga_a2091.zip + path: "mame/bios/amiga_a2091.zip" standalone_path: "amiga_a2091.zip" required: false category: bios_zip @@ -10698,6 +11050,7 @@ files: sha1: "761a1318106e49057f95258699076ec1079967ad" - name: amiga_a570.zip + path: "mame/bios/amiga_a570.zip" standalone_path: "amiga_a570.zip" required: false category: bios_zip @@ -10712,6 +11065,7 @@ files: sha1: "ed7e461d1fff3cda321631ae42b80e3cd4fa5ebb" - name: amiga_a590.zip + path: "mame/bios/amiga_a590.zip" standalone_path: "amiga_a590.zip" required: false category: bios_zip @@ -10791,6 +11145,7 @@ files: sha1: "761a1318106e49057f95258699076ec1079967ad" - name: amiga_ar1.zip + path: "mame/bios/amiga_ar1.zip" standalone_path: "amiga_ar1.zip" required: false category: bios_zip @@ -10813,6 +11168,7 @@ files: bad_dump: true - name: amiga_ar2.zip + path: "mame/bios/amiga_ar2.zip" standalone_path: "amiga_ar2.zip" required: false category: bios_zip @@ -10842,6 +11198,7 @@ files: bad_dump: true - name: amiga_ar3.zip + path: "mame/bios/amiga_ar3.zip" standalone_path: "amiga_ar3.zip" required: false category: bios_zip @@ -10873,6 +11230,7 @@ files: sha1: "a7431d22bfdb746a8bb6073c9edf7a2b65c6d307" - name: amiga_buddha.zip + path: "mame/bios/amiga_buddha.zip" standalone_path: "amiga_buddha.zip" required: false category: bios_zip @@ -10894,6 +11252,7 @@ files: sha1: "ec17a58962c373a2892090ec9b1722d2c326d631" - name: amiga_oktagon2008.zip + path: "mame/bios/amiga_oktagon2008.zip" standalone_path: "amiga_oktagon2008.zip" required: false category: bios_zip @@ -10909,6 +11268,7 @@ files: sha1: "56c441fa37d193393081b2e8ceae823bc7e97e49" - name: amiga_ripple.zip + path: "mame/bios/amiga_ripple.zip" standalone_path: "amiga_ripple.zip" required: false category: bios_zip @@ -10925,6 +11285,7 @@ files: sha1: "83762ef5a883e5c43ad321eaa03fde7454f70785" - name: ampex230_kbd.zip + path: "mame/bios/ampex230_kbd.zip" standalone_path: "ampex230_kbd.zip" required: false category: bios_zip @@ -10939,6 +11300,7 @@ files: sha1: "46953d6b511ee37ca0aa2316af39c875b22ee2a7" - name: ap2000.zip + path: "mame/bios/ap2000.zip" standalone_path: "ap2000.zip" required: false category: bios_zip @@ -10973,6 +11335,7 @@ files: sha1: "219ffa6ff661ce95d5772c9fc1967093718f04e9" - name: aplcd150.zip + path: "mame/bios/aplcd150.zip" standalone_path: "aplcd150.zip" required: false category: bios_zip @@ -10996,6 +11359,7 @@ files: sha1: "e4cd656e2a433229543e874a29f1567758170fc6" - name: aprissi.zip + path: "mame/bios/aprissi.zip" standalone_path: "aprissi.zip" required: false category: bios_zip @@ -11013,6 +11377,7 @@ files: sha1: "19f2bc1e60c3fd5e179c4a38f7ca4e3221553562" - name: arc_a448.zip + path: "mame/bios/arc_a448.zip" standalone_path: "arc_a448.zip" required: false category: bios_zip @@ -11030,6 +11395,7 @@ files: sha1: "8140e9cf82dc67324963766d33efd5c8ad6d53f8" - name: arc_a448b.zip + path: "mame/bios/arc_a448b.zip" standalone_path: "arc_a448b.zip" required: false category: bios_zip @@ -11047,6 +11413,7 @@ files: sha1: "125b5a505498d91ca049f95fd05e693b2396bda6" - name: arc_acejoy.zip + path: "mame/bios/arc_acejoy.zip" standalone_path: "arc_acejoy.zip" required: false category: bios_zip @@ -11063,6 +11430,7 @@ files: sha1: "1addf507844c6590d111765051a43fe571491224" - name: arc_armadeus.zip + path: "mame/bios/arc_armadeus.zip" standalone_path: "arc_armadeus.zip" required: false category: bios_zip @@ -11080,6 +11448,7 @@ files: sha1: "6129d91bcd21bdab75f1293f9daa7612feaffc4b" - name: arc_bbcio_aga30.zip + path: "mame/bios/arc_bbcio_aga30.zip" standalone_path: "arc_bbcio_aga30.zip" required: false category: bios_zip @@ -11098,6 +11467,7 @@ files: sha1: "ed8d0caa478f030e11348b23e915897f27dcf153" - name: arc_bbcio_aka10.zip + path: "mame/bios/arc_bbcio_aka10.zip" standalone_path: "arc_bbcio_aka10.zip" required: false category: bios_zip @@ -11126,6 +11496,7 @@ files: sha1: "4c3de606de594c8f6ed236ffa19374c76e307226" - name: arc_bbcio_we.zip + path: "mame/bios/arc_bbcio_we.zip" standalone_path: "arc_bbcio_we.zip" required: false category: bios_zip @@ -11144,6 +11515,7 @@ files: sha1: "05c79e38707e406eed23cec6b3d2730e8fe550e8" - name: arc_eaglem2.zip + path: "mame/bios/arc_eaglem2.zip" standalone_path: "arc_eaglem2.zip" required: false category: bios_zip @@ -11161,6 +11533,7 @@ files: sha1: "b3633b8e1d58f59f5894d14a737c69b6d9d5d46d" - name: arc_ether1_aka25.zip + path: "mame/bios/arc_ether1_aka25.zip" standalone_path: "arc_ether1_aka25.zip" required: false category: bios_zip @@ -11178,6 +11551,7 @@ files: sha1: "9a9404028d166d9cbb466513f514be5d3ea77956" - name: arc_ether2_aeh50.zip + path: "mame/bios/arc_ether2_aeh50.zip" standalone_path: "arc_ether2_aeh50.zip" required: false category: bios_zip @@ -11195,6 +11569,7 @@ files: sha1: "417000f1fa8f61f8092f8f74a0359ffb3ce72768" - name: arc_ether3_aeh54.zip + path: "mame/bios/arc_ether3_aeh54.zip" standalone_path: "arc_ether3_aeh54.zip" required: false category: bios_zip @@ -11212,6 +11587,7 @@ files: sha1: "103318a527ea5f9a3fe373bfb8f8d0ad3697617f" - name: arc_ethera.zip + path: "mame/bios/arc_ethera.zip" standalone_path: "arc_ethera.zip" required: false category: bios_zip @@ -11229,6 +11605,7 @@ files: sha1: "c6c9c9630b6777f4d49824b051fcd16fcb21b8f3" - name: arc_etherd.zip + path: "mame/bios/arc_etherd.zip" standalone_path: "arc_etherd.zip" required: false category: bios_zip @@ -11246,6 +11623,7 @@ files: sha1: "e972c1ab2ccfd20a6e5321549d555f8ae14e12f9" - name: arc_etherr.zip + path: "mame/bios/arc_etherr.zip" standalone_path: "arc_etherr.zip" required: false category: bios_zip @@ -11263,6 +11641,7 @@ files: sha1: "a8045e3749fbf24e721e84e57acb68753fa46428" - name: arc_faxpack.zip + path: "mame/bios/arc_faxpack.zip" standalone_path: "arc_faxpack.zip" required: false category: bios_zip @@ -11280,6 +11659,7 @@ files: sha1: "bbd1c4560c3bde1e61f81ae6505cd5d4658c6cb8" - name: arc_greyhawk.zip + path: "mame/bios/arc_greyhawk.zip" standalone_path: "arc_greyhawk.zip" required: false category: bios_zip @@ -11297,6 +11677,7 @@ files: sha1: "e8d5d271e2c10430ae858d2f4337fc73a0c63d82" - name: arc_hdisc_akd52.zip + path: "mame/bios/arc_hdisc_akd52.zip" standalone_path: "arc_hdisc_akd52.zip" required: false category: bios_zip @@ -11314,6 +11695,7 @@ files: sha1: "c8ebec931d6cef53b7b2965f526e8721c6cb3d28" - name: arc_hdisc_cw.zip + path: "mame/bios/arc_hdisc_cw.zip" standalone_path: "arc_hdisc_cw.zip" required: false category: bios_zip @@ -11331,6 +11713,7 @@ files: sha1: "da99cd0ee9d1eba237261f24b46e8399a2316086" - name: arc_hdisc_morley.zip + path: "mame/bios/arc_hdisc_morley.zip" standalone_path: "arc_hdisc_morley.zip" required: false category: bios_zip @@ -11348,6 +11731,7 @@ files: sha1: "42947aef6b2bafb4b971e5bc61aa31ecb385afe0" - name: arc_hdisc_we.zip + path: "mame/bios/arc_hdisc_we.zip" standalone_path: "arc_hdisc_we.zip" required: false category: bios_zip @@ -11365,6 +11749,7 @@ files: sha1: "783d94839f47ee27032027d02e2e3f808659c540" - name: arc_ide_be.zip + path: "mame/bios/arc_ide_be.zip" standalone_path: "arc_ide_be.zip" required: false category: bios_zip @@ -11398,6 +11783,7 @@ files: sha1: "f7d13fce76dbe7ac9a27fc7e4a859161bb98a9b5" - name: arc_ide_rdev.zip + path: "mame/bios/arc_ide_rdev.zip" standalone_path: "arc_ide_rdev.zip" required: false category: bios_zip @@ -11415,6 +11801,7 @@ files: sha1: "84e5d31d631b69401c47ef1ce91f11f1bb317597" - name: arc_iomidi_aka15.zip + path: "mame/bios/arc_iomidi_aka15.zip" standalone_path: "arc_iomidi_aka15.zip" required: false category: bios_zip @@ -11433,6 +11820,7 @@ files: sha1: "32e990c435b439d4a169e85a009fc6a864121c3f" - name: arc_lark.zip + path: "mame/bios/arc_lark.zip" standalone_path: "arc_lark.zip" required: false category: bios_zip @@ -11451,6 +11839,7 @@ files: sha1: "f0b2ba52d0069dfe00a7ba66fba23e0eb2346d8c" - name: arc_lbp4.zip + path: "mame/bios/arc_lbp4.zip" standalone_path: "arc_lbp4.zip" required: false category: bios_zip @@ -11474,6 +11863,7 @@ files: sha1: "b70afed20340e62279742996da9b0ccef51f08e2" - name: arc_midi2.zip + path: "mame/bios/arc_midi2.zip" standalone_path: "arc_midi2.zip" required: false category: bios_zip @@ -11492,6 +11882,7 @@ files: sha1: "d0440e4ef0fa7bbab2ea3d6f9f3f1d4513aec8c0" - name: arc_midi_aka16.zip + path: "mame/bios/arc_midi_aka16.zip" standalone_path: "arc_midi_aka16.zip" required: false category: bios_zip @@ -11520,6 +11911,7 @@ files: sha1: "f6ad28d3cf9a14af3c103f9fae74795f539f24e8" - name: arc_midimax.zip + path: "mame/bios/arc_midimax.zip" standalone_path: "arc_midimax.zip" required: false category: bios_zip @@ -11543,6 +11935,7 @@ files: sha1: "8cba82ed214246b9fb55e24e87e4629231490465" - name: arc_midimax2.zip + path: "mame/bios/arc_midimax2.zip" standalone_path: "arc_midimax2.zip" required: false category: bios_zip @@ -11561,6 +11954,7 @@ files: sha1: "d713bf8661542009defadb08cc6096af94efce3e" - name: arc_nexus_a500.zip + path: "mame/bios/arc_nexus_a500.zip" standalone_path: "arc_nexus_a500.zip" required: false category: bios_zip @@ -11578,6 +11972,7 @@ files: sha1: "4d1c8cf82fddde1e0772c475da1b3283986aa7d3" - name: arc_rom_aka05.zip + path: "mame/bios/arc_rom_aka05.zip" standalone_path: "arc_rom_aka05.zip" required: false category: bios_zip @@ -11596,6 +11991,7 @@ files: sha1: "e699157895433010b1ea110c78fbc80a4bc58f09" - name: arc_rom_r225.zip + path: "mame/bios/arc_rom_r225.zip" standalone_path: "arc_rom_r225.zip" required: false category: bios_zip @@ -11617,6 +12013,7 @@ files: sha1: "bb0825670bde59c80a73895141b2d8ad6ea87a2f" - name: arc_rs423.zip + path: "mame/bios/arc_rs423.zip" standalone_path: "arc_rs423.zip" required: false category: bios_zip @@ -11634,6 +12031,7 @@ files: sha1: "eb97839cd66dce33598aed90ac2f0624de1aa60d" - name: arc_scan256.zip + path: "mame/bios/arc_scan256.zip" standalone_path: "arc_scan256.zip" required: false category: bios_zip @@ -11651,6 +12049,7 @@ files: sha1: "9ea4bba1a752090b19a8ab9bf06414053fb8f7ff" - name: arc_scanjunior.zip + path: "mame/bios/arc_scanjunior.zip" standalone_path: "arc_scanjunior.zip" required: false category: bios_zip @@ -11669,6 +12068,7 @@ files: sha1: "3c63f8379d8fc222fc57838a9384ecec7c5d2484" - name: arc_scanjunior3.zip + path: "mame/bios/arc_scanjunior3.zip" standalone_path: "arc_scanjunior3.zip" required: false category: bios_zip @@ -11687,6 +12087,7 @@ files: sha1: "382193f2b6cf8ba5ed04481d99050fe2f691ad0a" - name: arc_scanlight.zip + path: "mame/bios/arc_scanlight.zip" standalone_path: "arc_scanlight.zip" required: false category: bios_zip @@ -11705,6 +12106,7 @@ files: sha1: "fa69fb69e01553b27409b65a37d3d30a376e7380" - name: arc_scanvideo.zip + path: "mame/bios/arc_scanvideo.zip" standalone_path: "arc_scanvideo.zip" required: false category: bios_zip @@ -11723,6 +12125,7 @@ files: sha1: "9fe739b42c5bf5dab69e3c1ffb1c3c5a5d8d7a50" - name: arc_scsi_aka30.zip + path: "mame/bios/arc_scsi_aka30.zip" standalone_path: "arc_scsi_aka30.zip" required: false category: bios_zip @@ -11740,6 +12143,7 @@ files: sha1: "6d52381fed7cfd0bd16e21566c2a5bcff98b72c0" - name: arc_scsi_aka31.zip + path: "mame/bios/arc_scsi_aka31.zip" standalone_path: "arc_scsi_aka31.zip" required: false category: bios_zip @@ -11757,6 +12161,7 @@ files: sha1: "1c2a2761a861d1560b6a245c5015059c2d0f71e7" - name: arc_scsi_aka32.zip + path: "mame/bios/arc_scsi_aka32.zip" standalone_path: "arc_scsi_aka32.zip" required: false category: bios_zip @@ -11785,6 +12190,7 @@ files: sha1: "42bddbe2841de7085371c5fe11d7c9b152070886" - name: arc_scsi_cumana.zip + path: "mame/bios/arc_scsi_cumana.zip" standalone_path: "arc_scsi_cumana.zip" required: false category: bios_zip @@ -11802,6 +12208,7 @@ files: sha1: "293b1dabd02cfa34251116d95dd19e8b58d0f0a5" - name: arc_scsi_ling.zip + path: "mame/bios/arc_scsi_ling.zip" standalone_path: "arc_scsi_ling.zip" required: false category: bios_zip @@ -11819,6 +12226,7 @@ files: sha1: "c05ea28f33afa98bd9d18bfe7dafee0a5fe7f2f4" - name: arc_scsi_morley.zip + path: "mame/bios/arc_scsi_morley.zip" standalone_path: "arc_scsi_morley.zip" required: false category: bios_zip @@ -11857,6 +12265,7 @@ files: sha1: "9164ef9edc9d2ed6a7a7c9ba6258e02db9b1d2cb" - name: arc_scsi_oak.zip + path: "mame/bios/arc_scsi_oak.zip" standalone_path: "arc_scsi_oak.zip" required: false category: bios_zip @@ -11889,6 +12298,7 @@ files: sha1: "c102d90e4f5c16fedde1ba4637170a39ed7ab371" - name: arc_scsi_vti.zip + path: "mame/bios/arc_scsi_vti.zip" standalone_path: "arc_scsi_vti.zip" required: false category: bios_zip @@ -11906,6 +12316,7 @@ files: sha1: "eb20b1369964cfaee156ba1fc3636997407cc7ba" - name: arc_serial.zip + path: "mame/bios/arc_serial.zip" standalone_path: "arc_serial.zip" required: false category: bios_zip @@ -11923,6 +12334,7 @@ files: sha1: "c100cc4f5e3d87233e6db6a1da04ac7c19ac2357" - name: arc_spectra.zip + path: "mame/bios/arc_spectra.zip" standalone_path: "arc_spectra.zip" required: false category: bios_zip @@ -11940,6 +12352,7 @@ files: sha1: "bac53e4cd1047606e6314992e2581acf09e1b658" - name: arc_ua_morley.zip + path: "mame/bios/arc_ua_morley.zip" standalone_path: "arc_ua_morley.zip" required: false category: bios_zip @@ -11958,6 +12371,7 @@ files: sha1: "423208fb3132400d3582b29481b8f7b7e6cd0c70" - name: arc_uma_morley.zip + path: "mame/bios/arc_uma_morley.zip" standalone_path: "arc_uma_morley.zip" required: false category: bios_zip @@ -11976,6 +12390,7 @@ files: sha1: "0db73540fc329b71a977a2be20c66ae2ae39df78" - name: arc_upa_hccs.zip + path: "mame/bios/arc_upa_hccs.zip" standalone_path: "arc_upa_hccs.zip" required: false category: bios_zip @@ -11994,6 +12409,7 @@ files: sha1: "1a5d5c2571624df6fbeff91045c5b40effeda1d9" - name: arc_upmidi_aka12.zip + path: "mame/bios/arc_upmidi_aka12.zip" standalone_path: "arc_upmidi_aka12.zip" required: false category: bios_zip @@ -12012,6 +12428,7 @@ files: sha1: "4e0e2cf2586c8f2fc1431458f677a45164749ab2" - name: asc88.zip + path: "mame/bios/asc88.zip" standalone_path: "asc88.zip" required: false category: bios_zip @@ -12030,6 +12447,7 @@ files: sha1: "49c44aafbb3f28478e4b5eeaa208b147fdf253b9" - name: ascsasi.zip + path: "mame/bios/ascsasi.zip" standalone_path: "ascsasi.zip" required: false category: bios_zip @@ -12045,6 +12463,7 @@ files: sha1: "e94b39875e29daff199d120c4e79dfb1adbedab2" - name: at_keybc.zip + path: "mame/bios/at_keybc.zip" standalone_path: "at_keybc.zip" required: false category: bios_zip @@ -12073,6 +12492,7 @@ files: sha1: "1ad475451db35a76d929824c035d582279fbe3a3" - name: atari1050.zip + path: "mame/bios/atari1050.zip" standalone_path: "atari1050.zip" required: false category: bios_zip @@ -12111,6 +12531,7 @@ files: sha1: "2e735fe1973000219dc81c463ca0d3fd90690d4a" - name: atari810.zip + path: "mame/bios/atari810.zip" standalone_path: "atari810.zip" required: false category: bios_zip @@ -12134,6 +12555,7 @@ files: sha1: "075b1948a5736599d5501f0125c745b1b9fcced4" - name: atom_discpack.zip + path: "mame/bios/atom_discpack.zip" standalone_path: "atom_discpack.zip" required: false category: bios_zip @@ -12148,6 +12570,7 @@ files: sha1: "71ea0a4b8d9c3caf9718fc7cc279f4306a23b39c" - name: atom_gdos.zip + path: "mame/bios/atom_gdos.zip" standalone_path: "atom_gdos.zip" required: false category: bios_zip @@ -12163,6 +12586,7 @@ files: sha1: "b8ded5f6ca78664b30e608631e95a5d2b0b3c1fc" - name: atom_gdos2015.zip + path: "mame/bios/atom_gdos2015.zip" standalone_path: "atom_gdos2015.zip" required: false category: bios_zip @@ -12177,6 +12601,7 @@ files: sha1: "ff776eff6aadaf1a7f6d856cd6d1f1f59ac97112" - name: atom_speech.zip + path: "mame/bios/atom_speech.zip" standalone_path: "atom_speech.zip" required: false category: bios_zip @@ -12192,6 +12617,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: atom_vdu80.zip + path: "mame/bios/atom_vdu80.zip" standalone_path: "atom_vdu80.zip" required: false category: bios_zip @@ -12208,6 +12634,7 @@ files: bad_dump: true - name: ax208.zip + path: "mame/bios/ax208.zip" standalone_path: "ax208.zip" required: false category: bios_zip @@ -12223,6 +12650,7 @@ files: sha1: "0dc7ab9bdaf73231d4d6627fe6308fe8103e1bbc" - name: ax208p.zip + path: "mame/bios/ax208p.zip" standalone_path: "ax208p.zip" required: false category: bios_zip @@ -12237,6 +12665,7 @@ files: sha1: "b119000f93251894a352ecf675ee42f2e5c347bd" - name: banshee_x86.zip + path: "mame/bios/banshee_x86.zip" standalone_path: "banshee_x86.zip" required: false category: bios_zip @@ -12260,6 +12689,7 @@ files: sha1: "48b0bc08d142be3aa0d937ee56afd299b3b20386" - name: basf7100_kbd.zip + path: "mame/bios/basf7100_kbd.zip" standalone_path: "basf7100_kbd.zip" required: false category: bios_zip @@ -12275,6 +12705,7 @@ files: sha1: "6262379ba565c1de072b2b21dc3141db1ec5129c" - name: bbc_24bbc.zip + path: "mame/bios/bbc_24bbc.zip" standalone_path: "bbc_24bbc.zip" required: false category: bios_zip @@ -12293,6 +12724,7 @@ files: sha1: "65493cc1f6ae31cf39298d67dad42ea23be4cae6" - name: bbc_2ndserial.zip + path: "mame/bios/bbc_2ndserial.zip" standalone_path: "bbc_2ndserial.zip" required: false category: bios_zip @@ -12311,6 +12743,7 @@ files: sha1: "9ebbe845734d77ebf1730ea622ce2db43f18b1c2" - name: bbc_acorn1770.zip + path: "mame/bios/bbc_acorn1770.zip" standalone_path: "bbc_acorn1770.zip" required: false category: bios_zip @@ -12346,6 +12779,7 @@ files: sha1: "cf2ebc422a8d24ec6f1a0320520c38a0e704109a" - name: bbc_acorn8271.zip + path: "mame/bios/bbc_acorn8271.zip" standalone_path: "bbc_acorn8271.zip" required: false category: bios_zip @@ -12401,6 +12835,7 @@ files: sha1: "387d2468c6e1360f5b531784ce95d5f71a50c2b5" - name: bbc_ams3.zip + path: "mame/bios/bbc_ams3.zip" standalone_path: "bbc_ams3.zip" required: false category: bios_zip @@ -12420,6 +12855,7 @@ files: sha1: "a9d9123667e65334b28b8588b09642478653e356" - name: bbc_ariesb20.zip + path: "mame/bios/bbc_ariesb20.zip" standalone_path: "bbc_ariesb20.zip" required: false category: bios_zip @@ -12441,6 +12877,7 @@ files: sha1: "d04bfd332d63f6f23dca2ef81a1d2074e3d88ee9" - name: bbc_ariesb32.zip + path: "mame/bios/bbc_ariesb32.zip" standalone_path: "bbc_ariesb32.zip" required: false category: bios_zip @@ -12457,6 +12894,7 @@ files: sha1: "466e3b68f1a8e0287ae095cb3c16dac6afc89dcb" - name: bbc_autoprom.zip + path: "mame/bios/bbc_autoprom.zip" standalone_path: "bbc_autoprom.zip" required: false category: bios_zip @@ -12478,6 +12916,7 @@ files: sha1: "9f584f0cc54bbbf6128e96f5f97fa811cc3d68ce" - name: bbc_beebspch.zip + path: "mame/bios/bbc_beebspch.zip" standalone_path: "bbc_beebspch.zip" required: false category: bios_zip @@ -12502,6 +12941,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: bbc_cc500.zip + path: "mame/bios/bbc_cc500.zip" standalone_path: "bbc_cc500.zip" required: false category: bios_zip @@ -12520,6 +12960,7 @@ files: sha1: "e645afdc5c7574a487ff484b79ea21a3b476f847" - name: bbc_chameleon.zip + path: "mame/bios/bbc_chameleon.zip" standalone_path: "bbc_chameleon.zip" required: false category: bios_zip @@ -12540,6 +12981,7 @@ files: sha1: "72cf334cdb866ba3dd2353fc7da0dfdb6abf63a7" - name: bbc_cisco.zip + path: "mame/bios/bbc_cisco.zip" standalone_path: "bbc_cisco.zip" required: false category: bios_zip @@ -12571,6 +13013,7 @@ files: sha1: "500339258bd5cad363709c774c0cee36a17986cb" - name: bbc_cms6502.zip + path: "mame/bios/bbc_cms6502.zip" standalone_path: "bbc_cms6502.zip" required: false category: bios_zip @@ -12596,6 +13039,7 @@ files: sha1: "4a7393f3a45ea309f744441c16723e2ef447a281" - name: bbc_cumana1.zip + path: "mame/bios/bbc_cumana1.zip" standalone_path: "bbc_cumana1.zip" required: false category: bios_zip @@ -12612,6 +13056,7 @@ files: sha1: "4bf31a420a9d752285b088ee4f08a64563527662" - name: bbc_cumana2.zip + path: "mame/bios/bbc_cumana2.zip" standalone_path: "bbc_cumana2.zip" required: false category: bios_zip @@ -12628,6 +13073,7 @@ files: sha1: "0dced741482321938842746ee47090ae443d7ad5" - name: bbc_cumana68k.zip + path: "mame/bios/bbc_cumana68k.zip" standalone_path: "bbc_cumana68k.zip" required: false category: bios_zip @@ -12645,6 +13091,7 @@ files: sha1: "1cb54119bf13b39d598573d8d6a7e9f70d88b50d" - name: bbc_cv1797.zip + path: "mame/bios/bbc_cv1797.zip" standalone_path: "bbc_cv1797.zip" required: false category: bios_zip @@ -12661,6 +13108,7 @@ files: sha1: "9cd39d011290b97d5ba05b6c745689a8553be5fc" - name: bbc_datacentre.zip + path: "mame/bios/bbc_datacentre.zip" standalone_path: "bbc_datacentre.zip" required: false category: bios_zip @@ -12687,6 +13135,7 @@ files: sha1: "524826112e436728ba54e73f3f6b25c7b43abd69" - name: bbc_detalker.zip + path: "mame/bios/bbc_detalker.zip" standalone_path: "bbc_detalker.zip" required: false category: bios_zip @@ -12701,6 +13150,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: bbc_ieee488.zip + path: "mame/bios/bbc_ieee488.zip" standalone_path: "bbc_ieee488.zip" required: false category: bios_zip @@ -12730,6 +13180,7 @@ files: sha1: "0d3fcb79e70cfa42eff8cc78bf29c2493898d6eb" - name: bbc_integrab.zip + path: "mame/bios/bbc_integrab.zip" standalone_path: "bbc_integrab.zip" required: false category: bios_zip @@ -12756,6 +13207,7 @@ files: sha1: "b2b7fc3258936296f83d720759caacba5378edec" - name: bbc_kenda.zip + path: "mame/bios/bbc_kenda.zip" standalone_path: "bbc_kenda.zip" required: false category: bios_zip @@ -12771,6 +13223,7 @@ files: sha1: "594ae1d1aeaa20a1d5d1c64cd94d43926dda4029" - name: bbc_magazzino.zip + path: "mame/bios/bbc_magazzino.zip" standalone_path: "bbc_magazzino.zip" required: false category: bios_zip @@ -12786,6 +13239,7 @@ files: sha1: "0d1959ff6456453842134be9b1a3dd2ee72ae884" - name: bbc_memexb20.zip + path: "mame/bios/bbc_memexb20.zip" standalone_path: "bbc_memexb20.zip" required: false category: bios_zip @@ -12801,6 +13255,7 @@ files: sha1: "aad311797e204b0b69450460f8b4605409c31ddd" - name: bbc_mertec.zip + path: "mame/bios/bbc_mertec.zip" standalone_path: "bbc_mertec.zip" required: false category: bios_zip @@ -12816,6 +13271,7 @@ files: sha1: "0c4017ffbb480168e54c6b153da257ec5ea29d4e" - name: bbc_morleyaa.zip + path: "mame/bios/bbc_morleyaa.zip" standalone_path: "bbc_morleyaa.zip" required: false category: bios_zip @@ -12831,6 +13287,7 @@ files: sha1: "c80f47e3f661b1636d21ff542c7a39a586008098" - name: bbc_multiform.zip + path: "mame/bios/bbc_multiform.zip" standalone_path: "bbc_multiform.zip" required: false category: bios_zip @@ -12852,6 +13309,7 @@ files: sha1: "0bc06ce54ab9a2242294bbbe9ce8f07e464bb674" - name: bbc_opus1770.zip + path: "mame/bios/bbc_opus1770.zip" standalone_path: "bbc_opus1770.zip" required: false category: bios_zip @@ -12873,6 +13331,7 @@ files: sha1: "a1ad3e9acbd15400e7da1e50bc6673835cde1fe7" - name: bbc_opus2791.zip + path: "mame/bios/bbc_opus2791.zip" standalone_path: "bbc_opus2791.zip" required: false category: bios_zip @@ -12903,6 +13362,7 @@ files: sha1: "05f461464707b4ca24636c9e726af561f227ccdb" - name: bbc_opus2793.zip + path: "mame/bios/bbc_opus2793.zip" standalone_path: "bbc_opus2793.zip" required: false category: bios_zip @@ -12923,6 +13383,7 @@ files: sha1: "a6a57bb907d6b9bd351029fb0471a3a9c343da24" - name: bbc_opus3.zip + path: "mame/bios/bbc_opus3.zip" standalone_path: "bbc_opus3.zip" required: false category: bios_zip @@ -12952,6 +13413,7 @@ files: sha1: "eca3631aa420691f96b72bfdf2e9c2b613e1bf33" - name: bbc_opus8272.zip + path: "mame/bios/bbc_opus8272.zip" standalone_path: "bbc_opus8272.zip" required: false category: bios_zip @@ -12972,6 +13434,7 @@ files: sha1: "0b7194a234c2316ba825e878e3f69928bf3bb595" - name: bbc_opusa.zip + path: "mame/bios/bbc_opusa.zip" standalone_path: "bbc_opusa.zip" required: false category: bios_zip @@ -12990,6 +13453,7 @@ files: sha1: "b9f5c749412528e4f8e9cda9f13e10f8405bb195" - name: bbc_pdram.zip + path: "mame/bios/bbc_pdram.zip" standalone_path: "bbc_pdram.zip" required: false category: bios_zip @@ -13008,6 +13472,7 @@ files: sha1: "265359d1fb9c0adca53912aa6a42a995b8225a3e" - name: bbc_pms64k.zip + path: "mame/bios/bbc_pms64k.zip" standalone_path: "bbc_pms64k.zip" required: false category: bios_zip @@ -13026,6 +13491,7 @@ files: sha1: "da9abe3b1b0bf34ee5d6ed7ee032686403436289" - name: bbc_ramdisc.zip + path: "mame/bios/bbc_ramdisc.zip" standalone_path: "bbc_ramdisc.zip" required: false category: bios_zip @@ -13044,6 +13510,7 @@ files: sha1: "17e727998756fe35ff451fd2ce1d4b5977be24fc" - name: bbc_raven20.zip + path: "mame/bios/bbc_raven20.zip" standalone_path: "bbc_raven20.zip" required: false category: bios_zip @@ -13065,6 +13532,7 @@ files: sha1: "e4f2acc07969e10c082355c82d8d1cbc1c08ee2e" - name: bbc_stl1770_1.zip + path: "mame/bios/bbc_stl1770_1.zip" standalone_path: "bbc_stl1770_1.zip" required: false category: bios_zip @@ -13081,6 +13549,7 @@ files: sha1: "22e60d4dda37335f61c27a92ba76ccc3e2102c4e" - name: bbc_stl1770_2.zip + path: "mame/bios/bbc_stl1770_2.zip" standalone_path: "bbc_stl1770_2.zip" required: false category: bios_zip @@ -13097,6 +13566,7 @@ files: sha1: "78ee759c0f762bc2717d8454a88f117516d28325" - name: bbc_stl2m128.zip + path: "mame/bios/bbc_stl2m128.zip" standalone_path: "bbc_stl2m128.zip" required: false category: bios_zip @@ -13112,6 +13582,7 @@ files: sha1: "d170632b88d0ab276a919b0076dca305094a39b2" - name: bbc_stl4m32.zip + path: "mame/bios/bbc_stl4m32.zip" standalone_path: "bbc_stl4m32.zip" required: false category: bios_zip @@ -13128,6 +13599,7 @@ files: sha1: "cf45217ac88480a6963cbf75e8cf684cd81c7b09" - name: bbc_stldfdc_1.zip + path: "mame/bios/bbc_stldfdc_1.zip" standalone_path: "bbc_stldfdc_1.zip" required: false category: bios_zip @@ -13144,6 +13616,7 @@ files: sha1: "c761102ac11be629676339e9e496fb78734e4399" - name: bbc_stlswr128.zip + path: "mame/bios/bbc_stlswr128.zip" standalone_path: "bbc_stlswr128.zip" required: false category: bios_zip @@ -13160,6 +13633,7 @@ files: sha1: "1821e74feca60b95766ead06df20f6db22e2b4bb" - name: bbc_stlswr16.zip + path: "mame/bios/bbc_stlswr16.zip" standalone_path: "bbc_stlswr16.zip" required: false category: bios_zip @@ -13176,6 +13650,7 @@ files: sha1: "1821e74feca60b95766ead06df20f6db22e2b4bb" - name: bbc_stlswr32.zip + path: "mame/bios/bbc_stlswr32.zip" standalone_path: "bbc_stlswr32.zip" required: false category: bios_zip @@ -13192,6 +13667,7 @@ files: sha1: "1821e74feca60b95766ead06df20f6db22e2b4bb" - name: bbc_stlswr64.zip + path: "mame/bios/bbc_stlswr64.zip" standalone_path: "bbc_stlswr64.zip" required: false category: bios_zip @@ -13208,6 +13684,7 @@ files: sha1: "1821e74feca60b95766ead06df20f6db22e2b4bb" - name: bbc_sweetalker.zip + path: "mame/bios/bbc_sweetalker.zip" standalone_path: "bbc_sweetalker.zip" required: false category: bios_zip @@ -13223,6 +13700,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: bbc_tube_16032.zip + path: "mame/bios/bbc_tube_16032.zip" standalone_path: "bbc_tube_16032.zip" required: false category: bios_zip @@ -13256,6 +13734,7 @@ files: sha1: "2ec67a74a81811d8c4ffaa3583e7a9c5fb2485ba" - name: bbc_tube_32016.zip + path: "mame/bios/bbc_tube_32016.zip" standalone_path: "bbc_tube_32016.zip" required: false category: bios_zip @@ -13299,6 +13778,7 @@ files: sha1: "e6a705232278c518340ddc69ea51af91965fa332" - name: bbc_tube_32016l.zip + path: "mame/bios/bbc_tube_32016l.zip" standalone_path: "bbc_tube_32016l.zip" required: false category: bios_zip @@ -13322,6 +13802,7 @@ files: sha1: "dfad1f4180c50757a74fcfe3a0ee7d7b48eb1bee" - name: bbc_tube_6502.zip + path: "mame/bios/bbc_tube_6502.zip" standalone_path: "bbc_tube_6502.zip" required: false category: bios_zip @@ -13350,6 +13831,7 @@ files: sha1: "9ecef24de58a48c3fbe01b12888c3f6a5d24f57f" - name: bbc_tube_6502e.zip + path: "mame/bios/bbc_tube_6502e.zip" standalone_path: "bbc_tube_6502e.zip" required: false category: bios_zip @@ -13369,6 +13851,7 @@ files: bad_dump: true - name: bbc_tube_6502p.zip + path: "mame/bios/bbc_tube_6502p.zip" standalone_path: "bbc_tube_6502p.zip" required: false category: bios_zip @@ -13402,6 +13885,7 @@ files: sha1: "4a00d4d3deec0ab43dc6647ac591bd71f4b24a51" - name: bbc_tube_65c102.zip + path: "mame/bios/bbc_tube_65c102.zip" standalone_path: "bbc_tube_65c102.zip" required: false category: bios_zip @@ -13430,6 +13914,7 @@ files: sha1: "9ecef24de58a48c3fbe01b12888c3f6a5d24f57f" - name: bbc_tube_80286.zip + path: "mame/bios/bbc_tube_80286.zip" standalone_path: "bbc_tube_80286.zip" required: false category: bios_zip @@ -13451,6 +13936,7 @@ files: sha1: "45dc8d7e7936afbec6de423569d9005a1c350316" - name: bbc_tube_a500.zip + path: "mame/bios/bbc_tube_a500.zip" standalone_path: "bbc_tube_a500.zip" required: false category: bios_zip @@ -13480,6 +13966,7 @@ files: sha1: "c46448435b86d1397c7cb144bece87e73a9220aa" - name: bbc_tube_a500d.zip + path: "mame/bios/bbc_tube_a500d.zip" standalone_path: "bbc_tube_a500d.zip" required: false category: bios_zip @@ -13509,6 +13996,7 @@ files: sha1: "9b6bdeef8d7fb22ef0203c2f531a4e0a55e22c6f" - name: bbc_tube_arm.zip + path: "mame/bios/bbc_tube_arm.zip" standalone_path: "bbc_tube_arm.zip" required: false category: bios_zip @@ -13542,6 +14030,7 @@ files: sha1: "abcc71cbc43489e89a87aac64e67b17daef5895a" - name: bbc_tube_arm7.zip + path: "mame/bios/bbc_tube_arm7.zip" standalone_path: "bbc_tube_arm7.zip" required: false category: bios_zip @@ -13565,6 +14054,7 @@ files: sha1: "babfb5bdb8265cf3ac7feff254146cb2d2773da1" - name: bbc_tube_casper.zip + path: "mame/bios/bbc_tube_casper.zip" standalone_path: "bbc_tube_casper.zip" required: false category: bios_zip @@ -13594,6 +14084,7 @@ files: sha1: "4195ce1ed928178fd645a267872a5b4f325d078a" - name: bbc_tube_cms6809.zip + path: "mame/bios/bbc_tube_cms6809.zip" standalone_path: "bbc_tube_cms6809.zip" required: false category: bios_zip @@ -13615,6 +14106,7 @@ files: sha1: "f431f27941e13a92cdd0a9e2eda891c73d59d835" - name: bbc_tube_matchbox.zip + path: "mame/bios/bbc_tube_matchbox.zip" standalone_path: "bbc_tube_matchbox.zip" required: false category: bios_zip @@ -13660,6 +14152,7 @@ files: sha1: "80343cb198b03ea91c8790d765f7d3869ba9bb32" - name: bbc_tube_pcplus.zip + path: "mame/bios/bbc_tube_pcplus.zip" standalone_path: "bbc_tube_pcplus.zip" required: false category: bios_zip @@ -13681,6 +14174,7 @@ files: sha1: "45dc8d7e7936afbec6de423569d9005a1c350316" - name: bbc_tube_rc6502.zip + path: "mame/bios/bbc_tube_rc6502.zip" standalone_path: "bbc_tube_rc6502.zip" required: false category: bios_zip @@ -13703,6 +14197,7 @@ files: sha1: "70b190e251e8807c4120c2ec7b930e62c19e3ea1" - name: bbc_tube_rc65816.zip + path: "mame/bios/bbc_tube_rc65816.zip" standalone_path: "bbc_tube_rc65816.zip" required: false category: bios_zip @@ -13725,6 +14220,7 @@ files: sha1: "b9943843f753470b636ee17ad820fa3ccad68249" - name: bbc_tube_x25.zip + path: "mame/bios/bbc_tube_x25.zip" standalone_path: "bbc_tube_x25.zip" required: false category: bios_zip @@ -13750,6 +14246,7 @@ files: sha1: "3d9e3f58f878d1f7c743b05e371845b3f7627129" - name: bbc_tube_z80.zip + path: "mame/bios/bbc_tube_z80.zip" standalone_path: "bbc_tube_z80.zip" required: false category: bios_zip @@ -13768,6 +14265,7 @@ files: sha1: "069077df498599a9c880d4ec9f4bc53fcc602d82" - name: bbc_tube_z80w.zip + path: "mame/bios/bbc_tube_z80w.zip" standalone_path: "bbc_tube_z80w.zip" required: false category: bios_zip @@ -13786,6 +14284,7 @@ files: sha1: "47211cead3a1b0f9830dcdef8e54e29522c69bf8" - name: bbc_tube_zep100.zip + path: "mame/bios/bbc_tube_zep100.zip" standalone_path: "bbc_tube_zep100.zip" required: false category: bios_zip @@ -13824,6 +14323,7 @@ files: sha1: "62b57c858a3baa4ff943c31f77d331c414772a61" - name: bbc_tube_zep100l.zip + path: "mame/bios/bbc_tube_zep100l.zip" standalone_path: "bbc_tube_zep100l.zip" required: false category: bios_zip @@ -13846,6 +14346,7 @@ files: sha1: "e6ee738e5f2f8556002b79d18caa8ef21f14e08d" - name: bbc_tube_zep100m.zip + path: "mame/bios/bbc_tube_zep100m.zip" standalone_path: "bbc_tube_zep100m.zip" required: false category: bios_zip @@ -13871,6 +14372,7 @@ files: sha1: "e6ee738e5f2f8556002b79d18caa8ef21f14e08d" - name: bbc_tube_zep100w.zip + path: "mame/bios/bbc_tube_zep100w.zip" standalone_path: "bbc_tube_zep100w.zip" required: false category: bios_zip @@ -13898,6 +14400,7 @@ files: sha1: "e6ee738e5f2f8556002b79d18caa8ef21f14e08d" - name: bbc_udm.zip + path: "mame/bios/bbc_udm.zip" standalone_path: "bbc_udm.zip" required: false category: bios_zip @@ -13929,6 +14432,7 @@ files: sha1: "6834e46cb15354003d553e6c2bdb4ed76b47a465" - name: bbc_voicebox.zip + path: "mame/bios/bbc_voicebox.zip" standalone_path: "bbc_voicebox.zip" required: false category: bios_zip @@ -13948,6 +14452,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: bbc_we32kram.zip + path: "mame/bios/bbc_we32kram.zip" standalone_path: "bbc_we32kram.zip" required: false category: bios_zip @@ -13984,6 +14489,7 @@ files: sha1: "1b59a3354cfc704ad8aa60b0ed16e4cd2d815031" - name: bbc_weddb2.zip + path: "mame/bios/bbc_weddb2.zip" standalone_path: "bbc_weddb2.zip" required: false category: bios_zip @@ -14010,6 +14516,7 @@ files: sha1: "6719dc958f2631e6dc8f045429797b289bfe649a" - name: bbc_weddb3.zip + path: "mame/bios/bbc_weddb3.zip" standalone_path: "bbc_weddb3.zip" required: false category: bios_zip @@ -14026,6 +14533,7 @@ files: sha1: "618b7a1551f91e2b18608428b9e581f3d920d4b5" - name: betadisk.zip + path: "mame/bios/betadisk.zip" standalone_path: "betadisk.zip" required: false category: bios_zip @@ -14269,6 +14777,7 @@ files: sha1: "21695e3f2a8f796386ce66eea8a246b0ac44810c" - name: bingoct.zip + path: "mame/bios/bingoct.zip" standalone_path: "bingoct.zip" required: false category: bios_zip @@ -14292,6 +14801,7 @@ files: sha1: "76feec0091afb92af8ced99af61495f28f981120" - name: bk_altpro.zip + path: "mame/bios/bk_altpro.zip" standalone_path: "bk_altpro.zip" required: false category: bios_zip @@ -14320,6 +14830,7 @@ files: sha1: "4796f373e343460b2c9acf769fd4ddfa46e6e90f" - name: bk_kmd.zip + path: "mame/bios/bk_kmd.zip" standalone_path: "bk_kmd.zip" required: false category: bios_zip @@ -14347,6 +14858,7 @@ files: sha1: "28eefbb63047b26e4aec104aeeca74e2f9d0276c" - name: bk_samara.zip + path: "mame/bios/bk_samara.zip" standalone_path: "bk_samara.zip" required: false category: bios_zip @@ -14365,6 +14877,7 @@ files: sha1: "abd1a48fbc1ec3a2bcb83e8d847dbce747453a1b" - name: bluechip.zip + path: "mame/bios/bluechip.zip" standalone_path: "bluechip.zip" required: false category: bios_zip @@ -14386,6 +14899,7 @@ files: sha1: "c11317cb9370e722950579a610a3effda313aeee" - name: bml3kanji.zip + path: "mame/bios/bml3kanji.zip" standalone_path: "bml3kanji.zip" required: false category: bios_zip @@ -14402,6 +14916,7 @@ files: bad_dump: true - name: bml3mp1802.zip + path: "mame/bios/bml3mp1802.zip" standalone_path: "bml3mp1802.zip" required: false category: bios_zip @@ -14418,6 +14933,7 @@ files: bad_dump: true - name: bml3mp1805.zip + path: "mame/bios/bml3mp1805.zip" standalone_path: "bml3mp1805.zip" required: false category: bios_zip @@ -14434,6 +14950,7 @@ files: bad_dump: true - name: bsmt2000.zip + path: "mame/bios/bsmt2000.zip" standalone_path: "bsmt2000.zip" required: false category: bios_zip @@ -14448,6 +14965,7 @@ files: sha1: "6ec9eb038fb8eb842c5482aebe1d149daf49f2e6" - name: bt542b.zip + path: "mame/bios/bt542b.zip" standalone_path: "bt542b.zip" required: false category: bios_zip @@ -14470,6 +14988,7 @@ files: sha1: "054ba1ea71b2aaab31ab9dd5aca955d861f5333b" - name: bt542bh.zip + path: "mame/bios/bt542bh.zip" standalone_path: "bt542bh.zip" required: false category: bios_zip @@ -14492,6 +15011,7 @@ files: sha1: "b9b327d50cd13f3e5b5b53892b18f233aff065b7" - name: bt545s.zip + path: "mame/bios/bt545s.zip" standalone_path: "bt545s.zip" required: false category: bios_zip @@ -14514,6 +15034,7 @@ files: sha1: "797a8dba182049949f7a5c14d8bef4b4e908305b" - name: bw2_ramcard.zip + path: "mame/bios/bw2_ramcard.zip" standalone_path: "bw2_ramcard.zip" required: false category: bios_zip @@ -14528,6 +15049,7 @@ files: sha1: "a776a27d64f7b857565594beb63aa2cd692dcf04" - name: bwtwo.zip + path: "mame/bios/bwtwo.zip" standalone_path: "bwtwo.zip" required: false category: bios_zip @@ -14549,6 +15071,7 @@ files: sha1: "78761bd2369cb0c58ef1344c697a47d3a659d4bc" - name: c1526.zip + path: "mame/bios/c1526.zip" standalone_path: "c1526.zip" required: false category: bios_zip @@ -14580,6 +15103,7 @@ files: sha1: "8b7f620a8f85e250b142d72b812a67fd0e292d68" - name: c1540.zip + path: "mame/bios/c1540.zip" standalone_path: "c1540.zip" required: false category: bios_zip @@ -14599,6 +15123,7 @@ files: sha1: "56dfe79b26f50af4e83fd9604857756d196516b9" - name: c1541.zip + path: "mame/bios/c1541.zip" standalone_path: "c1541.zip" required: false category: bios_zip @@ -14664,6 +15189,7 @@ files: sha1: "8e0547430135ba462525c224e76356bd3d430f11" - name: c1541c.zip + path: "mame/bios/c1541c.zip" standalone_path: "c1541c.zip" required: false category: bios_zip @@ -14685,6 +15211,7 @@ files: sha1: "38a7a489c7bbc8661cf63476bf1eb07b38b1c704" - name: c1541dd.zip + path: "mame/bios/c1541dd.zip" standalone_path: "c1541dd.zip" required: false category: bios_zip @@ -14700,6 +15227,7 @@ files: sha1: "e4d5b9ad6b719dd988276214aa4536d3525d313c" - name: c1541ii.zip + path: "mame/bios/c1541ii.zip" standalone_path: "c1541ii.zip" required: false category: bios_zip @@ -14725,6 +15253,7 @@ files: sha1: "d3b78c3dbac55f5199f33f3fe0036439811f7fb3" - name: c1541pd.zip + path: "mame/bios/c1541pd.zip" standalone_path: "c1541pd.zip" required: false category: bios_zip @@ -14744,6 +15273,7 @@ files: sha1: "2b26adc1f4192b6ca1514754f73c929087b24426" - name: c1541pdc.zip + path: "mame/bios/c1541pdc.zip" standalone_path: "c1541pdc.zip" required: false category: bios_zip @@ -14771,6 +15301,7 @@ files: sha1: "78846af2ee6a56fceee44f9246659685ab2cbb7e" - name: c1551.zip + path: "mame/bios/c1551.zip" standalone_path: "c1551.zip" required: false category: bios_zip @@ -14785,6 +15316,7 @@ files: sha1: "fae3c788ad9a6cc2dbdfbcf6c0264b2ca921d55e" - name: c1563.zip + path: "mame/bios/c1563.zip" standalone_path: "c1563.zip" required: false category: bios_zip @@ -14800,6 +15332,7 @@ files: sha1: "2c5111a9c15be7b7955f6c8775fea25ec10c0ca0" - name: c1570.zip + path: "mame/bios/c1570.zip" standalone_path: "c1570.zip" required: false category: bios_zip @@ -14815,6 +15348,7 @@ files: sha1: "5fc06dc82ff6840f183bd43a4d9b8a16956b2f56" - name: c1571.zip + path: "mame/bios/c1571.zip" standalone_path: "c1571.zip" required: false category: bios_zip @@ -14841,6 +15375,7 @@ files: sha1: "d4b79b60cf1eaa399d0932200eb7811e00455249" - name: c1571cr.zip + path: "mame/bios/c1571cr.zip" standalone_path: "c1571cr.zip" required: false category: bios_zip @@ -14861,6 +15396,7 @@ files: sha1: "823b178561302b403e6bfd8dd741d757efef3958" - name: c1581.zip + path: "mame/bios/c1581.zip" standalone_path: "c1581.zip" required: false category: bios_zip @@ -14892,6 +15428,7 @@ files: sha1: "65bbf2be7bcd5bdcbff609d6c66471ffb9d04bfe" - name: c2031.zip + path: "mame/bios/c2031.zip" standalone_path: "c2031.zip" required: false category: bios_zip @@ -14914,6 +15451,7 @@ files: sha1: "ec6b75ecfdd4744e5d57979ef6af990444c11ae1" - name: c2040.zip + path: "mame/bios/c2040.zip" standalone_path: "c2040.zip" required: false category: bios_zip @@ -14942,6 +15480,7 @@ files: sha1: "d539858f839f96393f218307df7394362a84a26a" - name: c2040_fdc.zip + path: "mame/bios/c2040_fdc.zip" standalone_path: "c2040_fdc.zip" required: false category: bios_zip @@ -14959,6 +15498,7 @@ files: sha1: "97df576397608455616331f8e837cb3404363fa2" - name: c3040.zip + path: "mame/bios/c3040.zip" standalone_path: "c3040.zip" required: false category: bios_zip @@ -14985,6 +15525,7 @@ files: sha1: "d539858f839f96393f218307df7394362a84a26a" - name: c4023.zip + path: "mame/bios/c4023.zip" standalone_path: "c4023.zip" required: false category: bios_zip @@ -15003,6 +15544,7 @@ files: sha1: "7a8c43d2e205f58d83709c04bc7795602a892ddd" - name: c4040.zip + path: "mame/bios/c4040.zip" standalone_path: "c4040.zip" required: false category: bios_zip @@ -15051,6 +15593,7 @@ files: sha1: "6645fa40b81be1ff7d1384e9b52df06a26ab0bfb" - name: c64_ar4x.zip + path: "mame/bios/c64_ar4x.zip" standalone_path: "c64_ar4x.zip" required: false category: bios_zip @@ -15064,6 +15607,7 @@ files: sha1: "f39975d24eb009325fa5fac86b475137cac04813" - name: c64_buscard.zip + path: "mame/bios/c64_buscard.zip" standalone_path: "c64_buscard.zip" required: false category: bios_zip @@ -15079,6 +15623,7 @@ files: sha1: "8fb4ba7e3d0b58dc01b66ef962955596f1b125b5" - name: c64_buscard2.zip + path: "mame/bios/c64_buscard2.zip" standalone_path: "c64_buscard2.zip" required: false category: bios_zip @@ -15094,6 +15639,7 @@ files: sha1: "04f0a248370281fd42389928e32d11aba597cf01" - name: c64_cspeech.zip + path: "mame/bios/c64_cspeech.zip" standalone_path: "c64_cspeech.zip" required: false category: bios_zip @@ -15107,6 +15653,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: c64_mscr.zip + path: "mame/bios/c64_mscr.zip" standalone_path: "c64_mscr.zip" required: false category: bios_zip @@ -15125,6 +15672,7 @@ files: sha1: "87e7335e626bdb73498b46c28c7baab72df38d1f" - name: c64_nl10.zip + path: "mame/bios/c64_nl10.zip" standalone_path: "c64_nl10.zip" required: false category: bios_zip @@ -15140,6 +15688,7 @@ files: sha1: "5b3b9e8a93d5d77a49160b3d0c2489ba7be99c9a" - name: c64_supercpu.zip + path: "mame/bios/c64_supercpu.zip" standalone_path: "c64_supercpu.zip" required: false category: bios_zip @@ -15155,6 +15704,7 @@ files: sha1: "6aa529a7b1b6de53e8979e407a77b4d5657727f5" - name: c64_xl80.zip + path: "mame/bios/c64_xl80.zip" standalone_path: "c64_xl80.zip" required: false category: bios_zip @@ -15169,6 +15719,7 @@ files: sha1: "4b244e6d94a7653a2e52c351589f0b469119fb04" - name: c64_z80videopak.zip + path: "mame/bios/c64_z80videopak.zip" standalone_path: "c64_z80videopak.zip" required: false category: bios_zip @@ -15183,6 +15734,7 @@ files: sha1: "4b244e6d94a7653a2e52c351589f0b469119fb04" - name: c8050.zip + path: "mame/bios/c8050.zip" standalone_path: "c8050.zip" required: false category: bios_zip @@ -15257,6 +15809,7 @@ files: sha1: "3a9a80f72ce76e5f5c72513f8ef7553212912ae3" - name: c8050fdc.zip + path: "mame/bios/c8050fdc.zip" standalone_path: "c8050fdc.zip" required: false category: bios_zip @@ -15274,6 +15827,7 @@ files: sha1: "97df576397608455616331f8e837cb3404363fa2" - name: c8250.zip + path: "mame/bios/c8250.zip" standalone_path: "c8250.zip" required: false category: bios_zip @@ -15348,6 +15902,7 @@ files: sha1: "3a9a80f72ce76e5f5c72513f8ef7553212912ae3" - name: c8250lp.zip + path: "mame/bios/c8250lp.zip" standalone_path: "c8250lp.zip" required: false category: bios_zip @@ -15389,6 +15944,7 @@ files: sha1: "3f7892a9bab84b633f45686bbbbe66bc2948c8e5" - name: c8280.zip + path: "mame/bios/c8280.zip" standalone_path: "c8280.zip" required: false category: bios_zip @@ -15434,6 +15990,7 @@ files: sha1: "a0994c80025240d2b49ffd209dbfe8a4de3975b0" - name: cadabc.zip + path: "mame/bios/cadabc.zip" standalone_path: "cadabc.zip" required: false category: bios_zip @@ -15477,6 +16034,7 @@ files: sha1: "54720d155b4990d9879b95c0d13592bb7534da09" - name: cbm2_hrga.zip + path: "mame/bios/cbm2_hrga.zip" standalone_path: "cbm2_hrga.zip" required: false category: bios_zip @@ -15492,6 +16050,7 @@ files: sha1: "d75ffa97b2dd4e1baefe4acaa130daae866ab0e8" - name: cbm2_hrgb.zip + path: "mame/bios/cbm2_hrgb.zip" standalone_path: "cbm2_hrgb.zip" required: false category: bios_zip @@ -15507,6 +16066,7 @@ files: sha1: "d75ffa97b2dd4e1baefe4acaa130daae866ab0e8" - name: cbm8000_hsg_a.zip + path: "mame/bios/cbm8000_hsg_a.zip" standalone_path: "cbm8000_hsg_a.zip" required: false category: bios_zip @@ -15526,6 +16086,7 @@ files: sha1: "12ed3176ddd632f52e91082ab574adcba2149684" - name: cbm8000_hsg_b.zip + path: "mame/bios/cbm8000_hsg_b.zip" standalone_path: "cbm8000_hsg_b.zip" required: false category: bios_zip @@ -15545,6 +16106,7 @@ files: sha1: "12ed3176ddd632f52e91082ab574adcba2149684" - name: cbm_interpod.zip + path: "mame/bios/cbm_interpod.zip" standalone_path: "cbm_interpod.zip" required: false category: bios_zip @@ -15566,6 +16128,7 @@ files: sha1: "7659c45b73f577233f7657c4da9141dcfe8b6d97" - name: cbm_serbox.zip + path: "mame/bios/cbm_serbox.zip" standalone_path: "cbm_serbox.zip" required: false category: bios_zip @@ -15580,6 +16143,7 @@ files: sha1: "9b922f1e9f9b71e771361c52d4df2aa5695488a5" - name: cchip.zip + path: "mame/bios/cchip.zip" standalone_path: "cchip.zip" required: false category: bios_zip @@ -15595,6 +16159,7 @@ files: sha1: "73bc4b46cd2d6805ec926f39f22af00e38a3f822" - name: ccs7710.zip + path: "mame/bios/ccs7710.zip" standalone_path: "ccs7710.zip" required: false category: bios_zip @@ -15638,6 +16203,7 @@ files: sha1: "d0df2aaf0134f8c1b929a4de0036fedc7e7164e2" - name: cd6809_fdc.zip + path: "mame/bios/cd6809_fdc.zip" standalone_path: "cd6809_fdc.zip" required: false category: bios_zip @@ -15653,6 +16219,7 @@ files: sha1: "9b2eec25188bed4326b84739a666435884e4ddf4" - name: cd90_015.zip + path: "mame/bios/cd90_015.zip" standalone_path: "cd90_015.zip" required: false category: bios_zip @@ -15668,6 +16235,7 @@ files: sha1: "31a6bb81baaeec5fc8de457c97264f9dfa92c18b" - name: cd90_351.zip + path: "mame/bios/cd90_351.zip" standalone_path: "cd90_351.zip" required: false category: bios_zip @@ -15695,6 +16263,7 @@ files: sha1: "7118636fb5c597c78c2fce17b02aed5e4ba38635" - name: cd90_640.zip + path: "mame/bios/cd90_640.zip" standalone_path: "cd90_640.zip" required: false category: bios_zip @@ -15710,6 +16279,7 @@ files: sha1: "5c72566c22d8160ef0c75959e1863a1309bbbe49" - name: cdd2000.zip + path: "mame/bios/cdd2000.zip" standalone_path: "cdd2000.zip" required: false category: bios_zip @@ -15740,6 +16310,7 @@ files: sha1: "882be4ed5daf70a686929fffcb66fa95b431bbe2" - name: cdr4210.zip + path: "mame/bios/cdr4210.zip" standalone_path: "cdr4210.zip" required: false category: bios_zip @@ -15764,6 +16335,7 @@ files: sha1: "6aafdedf12240ad347427287c0db289f90bd064d" - name: cdrn820s.zip + path: "mame/bios/cdrn820s.zip" standalone_path: "cdrn820s.zip" required: false category: bios_zip @@ -15788,6 +16360,7 @@ files: sha1: "e498dcd9006d257ced6cd0b50c76608e9a8023f7" - name: cdu415.zip + path: "mame/bios/cdu415.zip" standalone_path: "cdu415.zip" required: false category: bios_zip @@ -15811,6 +16384,7 @@ files: sha1: "72d0b192efc32f7c8985dd96df3e346c57a236e7" - name: cdu561_25.zip + path: "mame/bios/cdu561_25.zip" standalone_path: "cdu561_25.zip" required: false category: bios_zip @@ -15845,6 +16419,7 @@ files: sha1: "70aa550693020431ccbd374ff85e4de8809431df" - name: cdu75s.zip + path: "mame/bios/cdu75s.zip" standalone_path: "cdu75s.zip" required: false category: bios_zip @@ -15873,6 +16448,7 @@ files: sha1: "7d674116304bc6948fe4a52d9859b4eb5d40b914" - name: centennial_sl01m_15_11194.zip + path: "mame/bios/centennial_sl01m_15_11194.zip" standalone_path: "centennial_sl01m_15_11194.zip" required: false category: bios_zip @@ -15889,6 +16465,7 @@ files: bad_dump: true - name: centennial_sl02m_15_11194.zip + path: "mame/bios/centennial_sl02m_15_11194.zip" standalone_path: "centennial_sl02m_15_11194.zip" required: false category: bios_zip @@ -15905,6 +16482,7 @@ files: bad_dump: true - name: centennial_sl04m_15_11194.zip + path: "mame/bios/centennial_sl04m_15_11194.zip" standalone_path: "centennial_sl04m_15_11194.zip" required: false category: bios_zip @@ -15921,6 +16499,7 @@ files: bad_dump: true - name: cffa1.zip + path: "mame/bios/cffa1.zip" standalone_path: "cffa1.zip" required: false category: bios_zip @@ -15936,6 +16515,7 @@ files: sha1: "6a290be18485a06f243a3561c4e01be5aafa4bfe" - name: cfp1080s.zip + path: "mame/bios/cfp1080s.zip" standalone_path: "cfp1080s.zip" required: false category: bios_zip @@ -15959,6 +16539,7 @@ files: sha1: "605be871e75ff775554fc8ce4e09bc2e35a6db09" - name: cga.zip + path: "mame/bios/cga.zip" standalone_path: "cga.zip" required: false category: bios_zip @@ -15977,6 +16558,7 @@ files: sha1: "c2a8b10808bf51a3c123ba3eb1e9dd608231916f" - name: cga_iskr1030m.zip + path: "mame/bios/cga_iskr1030m.zip" standalone_path: "cga_iskr1030m.zip" required: false category: bios_zip @@ -15991,6 +16573,7 @@ files: sha1: "5bd7cb1705a69bd16115a4c9ed1c2748a5c8ad51" - name: cga_iskr1031.zip + path: "mame/bios/cga_iskr1031.zip" standalone_path: "cga_iskr1031.zip" required: false category: bios_zip @@ -16005,6 +16588,7 @@ files: sha1: "ad7e81a0c9abc224671422bbcf6f6262da92b510" - name: cga_m24.zip + path: "mame/bios/cga_m24.zip" standalone_path: "cga_m24.zip" required: false category: bios_zip @@ -16026,6 +16610,7 @@ files: sha1: "634c2d165d401883a955e144a0abfa2078a47013" - name: cga_mc1502.zip + path: "mame/bios/cga_mc1502.zip" standalone_path: "cga_mc1502.zip" required: false category: bios_zip @@ -16043,6 +16628,7 @@ files: sha1: "6766d275467672436e91ac2997ac6b77700eba1e" - name: cga_poisk2.zip + path: "mame/bios/cga_poisk2.zip" standalone_path: "cga_poisk2.zip" required: false category: bios_zip @@ -16060,6 +16646,7 @@ files: sha1: "d70f085b9b0cbd53df7c3122fbe7592998ba8fed" - name: cga_superimpose.zip + path: "mame/bios/cga_superimpose.zip" standalone_path: "cga_superimpose.zip" required: false category: bios_zip @@ -16074,6 +16661,7 @@ files: sha1: "c2a8b10808bf51a3c123ba3eb1e9dd608231916f" - name: cgenie_fdc.zip + path: "mame/bios/cgenie_fdc.zip" standalone_path: "cgenie_fdc.zip" required: false category: bios_zip @@ -16105,6 +16693,7 @@ files: bad_dump: true - name: cgthree.zip + path: "mame/bios/cgthree.zip" standalone_path: "cgthree.zip" required: false category: bios_zip @@ -16120,6 +16709,7 @@ files: sha1: "9bef98b2784b6e70167337bb27cd07952b348b5a" - name: chessmachine.zip + path: "mame/bios/chessmachine.zip" standalone_path: "chessmachine.zip" required: false category: bios_zip @@ -16165,6 +16755,7 @@ files: sha1: "cbb5b12b5917e36679d45bcbc36ea9285223a75d" - name: cit101_kbd.zip + path: "mame/bios/cit101_kbd.zip" standalone_path: "cit101_kbd.zip" required: false category: bios_zip @@ -16179,6 +16770,7 @@ files: sha1: "50fe6b5448f8ec330fa09e8b0125b5b09c680859" - name: cit101e_kbd.zip + path: "mame/bios/cit101e_kbd.zip" standalone_path: "cit101e_kbd.zip" required: false category: bios_zip @@ -16193,6 +16785,7 @@ files: sha1: "1bbbe0d422f87c856a10de5a1492297958ff47f6" - name: cit220p_kbd.zip + path: "mame/bios/cit220p_kbd.zip" standalone_path: "cit220p_kbd.zip" required: false category: bios_zip @@ -16207,6 +16800,7 @@ files: sha1: "c4e9ef8188afb18de373f2a537ca9b7a315bfb76" - name: clgd5401.zip + path: "mame/bios/clgd5401.zip" standalone_path: "clgd5401.zip" required: false category: bios_zip @@ -16236,6 +16830,7 @@ files: sha1: "b8f01c659df0531913add253d420277cba760be8" - name: clgd542x.zip + path: "mame/bios/clgd542x.zip" standalone_path: "clgd542x.zip" required: false category: bios_zip @@ -16325,6 +16920,7 @@ files: sha1: "fde41c45347b66ed4b1f99c3f7057e7411cdf4da" - name: clgd5434_pci.zip + path: "mame/bios/clgd5434_pci.zip" standalone_path: "clgd5434_pci.zip" required: false category: bios_zip @@ -16353,6 +16949,7 @@ files: sha1: "1ee70f6cc3c7b9a9afb402a1bc939f9f2e0cc739" - name: clgd5446_pci.zip + path: "mame/bios/clgd5446_pci.zip" standalone_path: "clgd5446_pci.zip" required: false category: bios_zip @@ -16376,6 +16973,7 @@ files: sha1: "ff667218261969c48082ec12aa91088a01b0cb2a" - name: clgd5465_laguna.zip + path: "mame/bios/clgd5465_laguna.zip" standalone_path: "clgd5465_laguna.zip" required: false category: bios_zip @@ -16392,6 +16990,7 @@ files: sha1: "251a953d442dc34738f80371cfbd0fd9f1097635" - name: cmdhd.zip + path: "mame/bios/cmdhd.zip" standalone_path: "cmdhd.zip" required: false category: bios_zip @@ -16406,6 +17005,7 @@ files: sha1: "defd8bc04a52904b8a3560f11c82126619513a10" - name: cmdrc2.zip + path: "mame/bios/cmdrc2.zip" standalone_path: "cmdrc2.zip" required: false category: bios_zip @@ -16425,6 +17025,7 @@ files: sha1: "eecf92fb8cc20a6c86e30f897d09d427509dd3d3" - name: cmi_ankbd.zip + path: "mame/bios/cmi_ankbd.zip" standalone_path: "cmi_ankbd.zip" required: false category: bios_zip @@ -16440,6 +17041,7 @@ files: sha1: "8c404f58ba3e5a50aa42f761e966c74374e96cc9" - name: cmi_mkbd.zip + path: "mame/bios/cmi_mkbd.zip" standalone_path: "cmi_mkbd.zip" required: false category: bios_zip @@ -16459,6 +17061,7 @@ files: sha1: "bc6784aaa5697c28eab126e20500139b8d0c1f50" - name: cms_4080term.zip + path: "mame/bios/cms_4080term.zip" standalone_path: "cms_4080term.zip" required: false category: bios_zip @@ -16477,6 +17080,7 @@ files: bad_dump: true - name: cmsscsi.zip + path: "mame/bios/cmsscsi.zip" standalone_path: "cmsscsi.zip" required: false category: bios_zip @@ -16499,6 +17103,7 @@ files: sha1: "f6028f6f2b16250950297e2ff5317ce463006796" - name: coco_dcmodem.zip + path: "mame/bios/coco_dcmodem.zip" standalone_path: "coco_dcmodem.zip" required: false category: bios_zip @@ -16514,6 +17119,7 @@ files: sha1: "703fe0aba4a603591078cb675ffd26a67c02df88" - name: coco_orch90.zip + path: "mame/bios/coco_orch90.zip" standalone_path: "coco_orch90.zip" required: false category: bios_zip @@ -16530,6 +17136,7 @@ files: sha1: "6a20fee9c70b36a6435ac8378f31d5b626017df0" - name: coco_psg.zip + path: "mame/bios/coco_psg.zip" standalone_path: "coco_psg.zip" required: false category: bios_zip @@ -16546,6 +17153,7 @@ files: sha1: "9c7c8a5cc419ca1aca4d1c5e9f1195997c2bc95c" - name: coco_rs232.zip + path: "mame/bios/coco_rs232.zip" standalone_path: "coco_rs232.zip" required: false category: bios_zip @@ -16561,6 +17169,7 @@ files: sha1: "3fad25f3462a0b581b9c182ac11ad90c8fa08cb6" - name: coco_scii.zip + path: "mame/bios/coco_scii.zip" standalone_path: "coco_scii.zip" required: false category: bios_zip @@ -16582,6 +17191,7 @@ files: sha1: "c1fa0fcbf1202a9b63aafd98dce777b502584230" - name: coco_ssc.zip + path: "mame/bios/coco_ssc.zip" standalone_path: "coco_ssc.zip" required: false category: bios_zip @@ -16602,6 +17212,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: coco_t4426.zip + path: "mame/bios/coco_t4426.zip" standalone_path: "coco_t4426.zip" required: false category: bios_zip @@ -16649,6 +17260,7 @@ files: sha1: "03f70dcc5f7ab60cd908427d45ebd85b6f464b93" - name: coco_wpk.zip + path: "mame/bios/coco_wpk.zip" standalone_path: "coco_wpk.zip" required: false category: bios_zip @@ -16663,6 +17275,7 @@ files: sha1: "0ff5fae512c7f1abe138504d51492404dd86be03" - name: coco_wpk2.zip + path: "mame/bios/coco_wpk2.zip" standalone_path: "coco_wpk2.zip" required: false category: bios_zip @@ -16677,6 +17290,7 @@ files: sha1: "0ff5fae512c7f1abe138504d51492404dd86be03" - name: coco_wpkrs.zip + path: "mame/bios/coco_wpkrs.zip" standalone_path: "coco_wpkrs.zip" required: false category: bios_zip @@ -16691,6 +17305,7 @@ files: sha1: "0ff5fae512c7f1abe138504d51492404dd86be03" - name: compiskb.zip + path: "mame/bios/compiskb.zip" standalone_path: "compiskb.zip" required: false category: bios_zip @@ -16705,6 +17320,7 @@ files: sha1: "c04e2d325b9c04818bc7c47c3bf32b13862b11ec" - name: comx_clm.zip + path: "mame/bios/comx_clm.zip" standalone_path: "comx_clm.zip" required: false category: bios_zip @@ -16736,6 +17352,7 @@ files: sha1: "4e041cec03dda6dba5e2598d060c49908a4fab2a" - name: comx_eb.zip + path: "mame/bios/comx_eb.zip" standalone_path: "comx_eb.zip" required: false category: bios_zip @@ -16762,6 +17379,7 @@ files: sha1: "eb6b6e7bc9e761d13554482025d8cb5e260c0619" - name: comx_epr.zip + path: "mame/bios/comx_epr.zip" standalone_path: "comx_epr.zip" required: false category: bios_zip @@ -16789,6 +17407,7 @@ files: sha1: "8bc914f52f0dd2cf792da74ec4e9e333365619ef" - name: comx_fd.zip + path: "mame/bios/comx_fd.zip" standalone_path: "comx_fd.zip" required: false category: bios_zip @@ -16803,6 +17422,7 @@ files: sha1: "290e19bdc89e3c8059e63d5ae3cca4daa194e1fe" - name: comx_pl80.zip + path: "mame/bios/comx_pl80.zip" standalone_path: "comx_pl80.zip" required: false category: bios_zip @@ -16844,6 +17464,7 @@ files: sha1: "ad83a3b57e2f0fbaa1e40644cd999b3f239635e8" - name: comx_prn.zip + path: "mame/bios/comx_prn.zip" standalone_path: "comx_prn.zip" required: false category: bios_zip @@ -16869,6 +17490,7 @@ files: sha1: "be02bd388bba0211ea72d4868264a63308e4318d" - name: comx_thm.zip + path: "mame/bios/comx_thm.zip" standalone_path: "comx_thm.zip" required: false category: bios_zip @@ -16884,6 +17506,7 @@ files: sha1: "3a8760c78bd8c7bec2dbf26657b930c9a6814803" - name: concept_kbd.zip + path: "mame/bios/concept_kbd.zip" standalone_path: "concept_kbd.zip" required: false category: bios_zip @@ -16899,6 +17522,7 @@ files: sha1: "fc58d77919739b66b85eb52b084af9716cd7f260" - name: cp2024.zip + path: "mame/bios/cp2024.zip" standalone_path: "cp2024.zip" required: false category: bios_zip @@ -16927,6 +17551,7 @@ files: sha1: "79bccc33835ba01fc4eb33fb4d412a691e7790c2" - name: cp31.zip + path: "mame/bios/cp31.zip" standalone_path: "cp31.zip" required: false category: bios_zip @@ -16953,6 +17578,7 @@ files: sha1: "c257a88672ab39d2f3fad681d22e062182b0236d" - name: cp450_fdc.zip + path: "mame/bios/cp450_fdc.zip" standalone_path: "cp450_fdc.zip" required: false category: bios_zip @@ -16968,6 +17594,7 @@ files: sha1: "827697fa5b755f5dc1efb054cdbbeb04e405405b" - name: cpc_brunword4.zip + path: "mame/bios/cpc_brunword4.zip" standalone_path: "cpc_brunword4.zip" required: false category: bios_zip @@ -17106,6 +17733,7 @@ files: sha1: "50c6417b26134b68a80912bdb91c8578eb00c8a2" - name: cpc_ddi1.zip + path: "mame/bios/cpc_ddi1.zip" standalone_path: "cpc_ddi1.zip" required: false category: bios_zip @@ -17120,6 +17748,7 @@ files: sha1: "39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb" - name: cpc_dkspeech.zip + path: "mame/bios/cpc_dkspeech.zip" standalone_path: "cpc_dkspeech.zip" required: false category: bios_zip @@ -17139,6 +17768,7 @@ files: sha1: "bf28e07d5fada3678faab77f582b802164e82f62" - name: cpc_hd20.zip + path: "mame/bios/cpc_hd20.zip" standalone_path: "cpc_hd20.zip" required: false category: bios_zip @@ -17159,6 +17789,7 @@ files: sha1: "8a20788be5f957e84e849c226aa97b55b2a3aab9" - name: cpc_mface2.zip + path: "mame/bios/cpc_mface2.zip" standalone_path: "cpc_mface2.zip" required: false category: bios_zip @@ -17173,6 +17804,7 @@ files: sha1: "1431ec628d38f000715545dd2186b684c5fe5a6f" - name: cpc_ser.zip + path: "mame/bios/cpc_ser.zip" standalone_path: "cpc_ser.zip" required: false category: bios_zip @@ -17192,6 +17824,7 @@ files: sha1: "13d033f2d1cad70140deb903d787ba514f236a59" - name: cpc_serams.zip + path: "mame/bios/cpc_serams.zip" standalone_path: "cpc_serams.zip" required: false category: bios_zip @@ -17213,6 +17846,7 @@ files: sha1: "145233fe8d4db9f5265eeac767d8ee8d45d14755" - name: cpc_smartwatch.zip + path: "mame/bios/cpc_smartwatch.zip" standalone_path: "cpc_smartwatch.zip" required: false category: bios_zip @@ -17228,6 +17862,7 @@ files: sha1: "61750d0535a1fbf2a4addad9def332cbcf8917c3" - name: cpc_ssa1.zip + path: "mame/bios/cpc_ssa1.zip" standalone_path: "cpc_ssa1.zip" required: false category: bios_zip @@ -17242,6 +17877,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: cpc_transtape.zip + path: "mame/bios/cpc_transtape.zip" standalone_path: "cpc_transtape.zip" required: false category: bios_zip @@ -17257,6 +17893,7 @@ files: sha1: "cc509d21216bf11d40f9a3e0791ef7f4ada03790" - name: cpuap.zip + path: "mame/bios/cpuap.zip" standalone_path: "cpuap.zip" required: false category: bios_zip @@ -17288,6 +17925,7 @@ files: sha1: "0800249eab8db490c1fb6fea6d65bc7e874c9a0c" - name: cq90_028.zip + path: "mame/bios/cq90_028.zip" standalone_path: "cq90_028.zip" required: false category: bios_zip @@ -17303,6 +17941,7 @@ files: sha1: "949c1f777c892da62c242215d79757d61e71e62b" - name: crd254sh.zip + path: "mame/bios/crd254sh.zip" standalone_path: "crd254sh.zip" required: false category: bios_zip @@ -17327,6 +17966,7 @@ files: sha1: "edb1f7d96f351ef70b8ade03449fb63e0e0a652b" - name: crvfdc01.zip + path: "mame/bios/crvfdc01.zip" standalone_path: "crvfdc01.zip" required: false category: bios_zip @@ -17342,6 +17982,7 @@ files: sha1: "b1e1e8a10618588b1b44b3be5d88857497f30b33" - name: crvfdc02.zip + path: "mame/bios/crvfdc02.zip" standalone_path: "crvfdc02.zip" required: false category: bios_zip @@ -17357,6 +17998,7 @@ files: sha1: "d27c3c6921e1bb3778a3f78decf106275bc0add1" - name: csd1.zip + path: "mame/bios/csd1.zip" standalone_path: "csd1.zip" required: false category: bios_zip @@ -17375,6 +18017,7 @@ files: sha1: "c67e79a7ffefc9e9eafc238cb6ff6bb718f19afb" - name: ct1741.zip + path: "mame/bios/ct1741.zip" standalone_path: "ct1741.zip" required: false category: bios_zip @@ -17397,6 +18040,7 @@ files: sha1: "c7637c92828843f47e6e2f956af639b07aee4571" - name: cuda.zip + path: "mame/bios/cuda.zip" standalone_path: "cuda.zip" required: false category: bios_zip @@ -17432,6 +18076,7 @@ files: sha1: "e5b13a2a904cc9fc612ed25b76718c501c11b00a" - name: cuda302.zip + path: "mame/bios/cuda302.zip" standalone_path: "cuda302.zip" required: false category: bios_zip @@ -17450,6 +18095,7 @@ files: sha1: "e5b13a2a904cc9fc612ed25b76718c501c11b00a" - name: cudalite.zip + path: "mame/bios/cudalite.zip" standalone_path: "cudalite.zip" required: false category: bios_zip @@ -17468,6 +18114,7 @@ files: sha1: "e5b13a2a904cc9fc612ed25b76718c501c11b00a" - name: cv8lc.zip + path: "mame/bios/cv8lc.zip" standalone_path: "cv8lc.zip" required: false category: bios_zip @@ -17483,6 +18130,7 @@ files: sha1: "a8552315d9127aee92416aa22893551851f42e5c" - name: cw7501.zip + path: "mame/bios/cw7501.zip" standalone_path: "cw7501.zip" required: false category: bios_zip @@ -17507,6 +18155,7 @@ files: sha1: "2986ee5eedbe0cb662a9a7e7fa4e6ca7ccd8c539" - name: d2fdc.zip + path: "mame/bios/d2fdc.zip" standalone_path: "d2fdc.zip" required: false category: bios_zip @@ -17524,6 +18173,7 @@ files: sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4" - name: d9060.zip + path: "mame/bios/d9060.zip" standalone_path: "d9060.zip" required: false category: bios_zip @@ -17591,6 +18241,7 @@ files: sha1: "95a48835bc2bd1c79fb1a63778de3807fb731ac6" - name: d9090.zip + path: "mame/bios/d9090.zip" standalone_path: "d9090.zip" required: false category: bios_zip @@ -17658,6 +18309,7 @@ files: sha1: "95a48835bc2bd1c79fb1a63778de3807fb731ac6" - name: db50xg.zip + path: "mame/bios/db50xg.zip" standalone_path: "db50xg.zip" required: false category: bios_zip @@ -17680,6 +18332,7 @@ files: sha1: "adf68689b4842ec5bc9b0ea1bb99cf66d2dec4de" - name: db60xg.zip + path: "mame/bios/db60xg.zip" standalone_path: "db60xg.zip" required: false category: bios_zip @@ -17702,6 +18355,7 @@ files: sha1: "adf68689b4842ec5bc9b0ea1bb99cf66d2dec4de" - name: dc320b.zip + path: "mame/bios/dc320b.zip" standalone_path: "dc320b.zip" required: false category: bios_zip @@ -17728,6 +18382,7 @@ files: sha1: "f4e3c8d7d12c394247c7ac82dedb895c88b9a907" - name: dc320e.zip + path: "mame/bios/dc320e.zip" standalone_path: "dc320e.zip" required: false category: bios_zip @@ -17754,6 +18409,7 @@ files: sha1: "b0847e442cae61da658e9041ad9fe3737e67a0ce" - name: dc820.zip + path: "mame/bios/dc820.zip" standalone_path: "dc820.zip" required: false category: bios_zip @@ -17780,6 +18436,7 @@ files: sha1: "523a3e3258f07a7f9445620294934bcbe62cd912" - name: dc820b.zip + path: "mame/bios/dc820b.zip" standalone_path: "dc820b.zip" required: false category: bios_zip @@ -17806,6 +18463,7 @@ files: sha1: "b0847e442cae61da658e9041ad9fe3737e67a0ce" - name: dectalk_isa.zip + path: "mame/bios/dectalk_isa.zip" standalone_path: "dectalk_isa.zip" required: false category: bios_zip @@ -17831,6 +18489,7 @@ files: sha1: "4b873a5e882205fcac79a27562054b5c4d1a117c" - name: dg640.zip + path: "mame/bios/dg640.zip" standalone_path: "dg640.zip" required: false category: bios_zip @@ -17845,6 +18504,7 @@ files: sha1: "4d09aae2f933478532b7d3d1a2dee7123d9828ca" - name: digilog_kbd.zip + path: "mame/bios/digilog_kbd.zip" standalone_path: "digilog_kbd.zip" required: false category: bios_zip @@ -17860,6 +18520,7 @@ files: sha1: "c80a7f9dff6942c8f54ba8a03bc72a87d075e00d" - name: dim68k_kbd.zip + path: "mame/bios/dim68k_kbd.zip" standalone_path: "dim68k_kbd.zip" required: false category: bios_zip @@ -17879,6 +18540,7 @@ files: sha1: "d1e87c8ccd17e4e2249fe89f13111ec881b7ebae" - name: dio98543.zip + path: "mame/bios/dio98543.zip" standalone_path: "dio98543.zip" required: false category: bios_zip @@ -17897,6 +18559,7 @@ files: sha1: "9ba9391cf39624ef8027ce42c84e100344b2a2b8" - name: dio98544.zip + path: "mame/bios/dio98544.zip" standalone_path: "dio98544.zip" required: false category: bios_zip @@ -17915,6 +18578,7 @@ files: sha1: "d2bcfd39452c38bc652df39f84c7041cfdf6bd51" - name: dio98550.zip + path: "mame/bios/dio98550.zip" standalone_path: "dio98550.zip" required: false category: bios_zip @@ -17930,6 +18594,7 @@ files: sha1: "d6b23a34850f24525ca5fb36de3deb91196d2dc5" - name: dio98603a.zip + path: "mame/bios/dio98603a.zip" standalone_path: "dio98603a.zip" required: false category: bios_zip @@ -18008,6 +18673,7 @@ files: sha1: "a9cbbaa5f053f374d6cbda614b727df35a61ace1" - name: dio98603b.zip + path: "mame/bios/dio98603b.zip" standalone_path: "dio98603b.zip" required: false category: bios_zip @@ -18070,6 +18736,7 @@ files: sha1: "6706ab97eab4465ea4fa2d6b07e8107468e83818" - name: dio98628.zip + path: "mame/bios/dio98628.zip" standalone_path: "dio98628.zip" required: false category: bios_zip @@ -18085,6 +18752,7 @@ files: sha1: "738fa16ac9a0f865938e7b197d26bd37c27b8660" - name: dio98629.zip + path: "mame/bios/dio98629.zip" standalone_path: "dio98629.zip" required: false category: bios_zip @@ -18100,6 +18768,7 @@ files: sha1: "b02b3688a8e415701905c7a1d8ae8848fd9b8b42" - name: diskii13.zip + path: "mame/bios/diskii13.zip" standalone_path: "diskii13.zip" required: false category: bios_zip @@ -18115,6 +18784,7 @@ files: sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a" - name: dm_clgd5430.zip + path: "mame/bios/dm_clgd5430.zip" standalone_path: "dm_clgd5430.zip" required: false category: bios_zip @@ -18133,6 +18803,7 @@ files: sha1: "15131e2b2db7a34971083a250e4a21ab7bd64a9d" - name: dmv_k220.zip + path: "mame/bios/dmv_k220.zip" standalone_path: "dmv_k220.zip" required: false category: bios_zip @@ -18163,6 +18834,7 @@ files: sha1: "eedae538636009a5b86fc78e50a03c72eeb0e73b" - name: dmv_k230.zip + path: "mame/bios/dmv_k230.zip" standalone_path: "dmv_k230.zip" required: false category: bios_zip @@ -18178,6 +18850,7 @@ files: sha1: "4f50ef25008851ae6f0c670f19d63f4e61249581" - name: dmv_k231.zip + path: "mame/bios/dmv_k231.zip" standalone_path: "dmv_k231.zip" required: false category: bios_zip @@ -18193,6 +18866,7 @@ files: sha1: "4f50ef25008851ae6f0c670f19d63f4e61249581" - name: dmv_k235.zip + path: "mame/bios/dmv_k235.zip" standalone_path: "dmv_k235.zip" required: false category: bios_zip @@ -18208,6 +18882,7 @@ files: sha1: "08d48ca3b84ab26c1a764792e04ec4def7dad2ad" - name: dmv_k806.zip + path: "mame/bios/dmv_k806.zip" standalone_path: "dmv_k806.zip" required: false category: bios_zip @@ -18222,6 +18897,7 @@ files: sha1: "b82c14dba6c25cb1f60cf623989ca8c0c1ee4cc3" - name: dmv_keyboard.zip + path: "mame/bios/dmv_keyboard.zip" standalone_path: "dmv_keyboard.zip" required: false category: bios_zip @@ -18237,6 +18913,7 @@ files: sha1: "ed09048ef03c602dba17ad6fcfe125c082c9bb17" - name: dragon_fdc.zip + path: "mame/bios/dragon_fdc.zip" standalone_path: "dragon_fdc.zip" required: false category: bios_zip @@ -18251,6 +18928,7 @@ files: sha1: "a8918c71d319237c1e3155bb38620acb114a80bc" - name: dragon_jcbsnd.zip + path: "mame/bios/dragon_jcbsnd.zip" standalone_path: "dragon_jcbsnd.zip" required: false category: bios_zip @@ -18266,6 +18944,7 @@ files: sha1: "d07bb9272e3d3928059853730ff656905a80b68e" - name: dragon_jcbspch.zip + path: "mame/bios/dragon_jcbspch.zip" standalone_path: "dragon_jcbspch.zip" required: false category: bios_zip @@ -18285,6 +18964,7 @@ files: sha1: "df3f64a7a3beeb91469932035af5e4f8a7872aad" - name: dragon_serial.zip + path: "mame/bios/dragon_serial.zip" standalone_path: "dragon_serial.zip" required: false category: bios_zip @@ -18300,6 +18980,7 @@ files: sha1: "14124dfb4bd78d1907e80d779cd7f3bae30564c9" - name: dragon_sprites.zip + path: "mame/bios/dragon_sprites.zip" standalone_path: "dragon_sprites.zip" required: false category: bios_zip @@ -18314,6 +18995,7 @@ files: sha1: "f1288653a12ba9a17ef721d0f4867160c3ca341f" - name: ds1001.zip + path: "mame/bios/ds1001.zip" standalone_path: "ds1001.zip" required: false category: bios_zip @@ -18328,6 +19010,7 @@ files: sha1: "7adf1d77bab12c50ebfa9921774f9aea1e74dd7b" - name: dsd4432.zip + path: "mame/bios/dsd4432.zip" standalone_path: "dsd4432.zip" required: false category: bios_zip @@ -18361,6 +19044,7 @@ files: sha1: "12c90cd62d2287ee5018801e4ceb1042051b6783" - name: dsd5217.zip + path: "mame/bios/dsd5217.zip" standalone_path: "dsd5217.zip" required: false category: bios_zip @@ -18400,6 +19084,7 @@ files: sha1: "5fe589a79806451abcbfbcff28eca39e925df264" - name: dsp56303.zip + path: "mame/bios/dsp56303.zip" standalone_path: "dsp56303.zip" required: false category: bios_zip @@ -18414,6 +19099,7 @@ files: sha1: "a1728cfaf31919f619a6c4d579f198c5a4bb9e44" - name: dsp56311.zip + path: "mame/bios/dsp56311.zip" standalone_path: "dsp56311.zip" required: false category: bios_zip @@ -18428,6 +19114,7 @@ files: sha1: "09a704dfb8be9e5863cb0523994ce5b4fb225801" - name: dsp56362.zip + path: "mame/bios/dsp56362.zip" standalone_path: "dsp56362.zip" required: false category: bios_zip @@ -18444,6 +19131,7 @@ files: sha1: "c18cbc0fb01ad423f99eb6421a36f3915e37e843" - name: duodock.zip + path: "mame/bios/duodock.zip" standalone_path: "duodock.zip" required: false category: bios_zip @@ -18458,6 +19146,7 @@ files: sha1: "be190b869b32f33bb1e59c7ae733853cd8133a4d" - name: dvk_kmd.zip + path: "mame/bios/dvk_kmd.zip" standalone_path: "dvk_kmd.zip" required: false category: bios_zip @@ -18481,6 +19170,7 @@ files: sha1: "6bc020054934a5562e763a18f915b8d612ccc70c" - name: dw_kbd.zip + path: "mame/bios/dw_kbd.zip" standalone_path: "dw_kbd.zip" required: false category: bios_zip @@ -18496,6 +19186,7 @@ files: sha1: "3183d93e34707f4b24f4f71db658c3cf317a631a" - name: ec1841_0002.zip + path: "mame/bios/ec1841_0002.zip" standalone_path: "ec1841_0002.zip" required: false category: bios_zip @@ -18513,6 +19204,7 @@ files: sha1: "c2a8b10808bf51a3c123ba3eb1e9dd608231916f" - name: ecb_grip21.zip + path: "mame/bios/ecb_grip21.zip" standalone_path: "ecb_grip21.zip" required: false category: bios_zip @@ -18528,6 +19220,7 @@ files: sha1: "2e89f0b0c378257ff7e41c50d57d90865c6e214b" - name: econet_e01.zip + path: "mame/bios/econet_e01.zip" standalone_path: "econet_e01.zip" required: false category: bios_zip @@ -18550,6 +19243,7 @@ files: sha1: "6f44a1a48108c60a64a1774cb30c1a59c4a6a199" - name: econet_e01s.zip + path: "mame/bios/econet_e01s.zip" standalone_path: "econet_e01s.zip" required: false category: bios_zip @@ -18572,6 +19266,7 @@ files: sha1: "9b8740face15b5541e2375b3054988af00757931" - name: ef9340_1.zip + path: "mame/bios/ef9340_1.zip" standalone_path: "ef9340_1.zip" required: false category: bios_zip @@ -18588,6 +19283,7 @@ files: bad_dump: true - name: ef9365.zip + path: "mame/bios/ef9365.zip" standalone_path: "ef9365.zip" required: false category: bios_zip @@ -18605,6 +19301,7 @@ files: sha1: "0f9a64d217a0f7f04ee0720d49c5b680ad0ae359" - name: ega.zip + path: "mame/bios/ega.zip" standalone_path: "ega.zip" required: false category: bios_zip @@ -18634,6 +19331,7 @@ files: sha1: "fd6dac76d43ab8b582e70f1d5cc931d679036fb9" - name: eidemax.zip + path: "mame/bios/eidemax.zip" standalone_path: "eidemax.zip" required: false category: bios_zip @@ -18670,6 +19368,7 @@ files: sha1: "e105f258f68ffe62acf2544f2f474850ce07a0a3" - name: einstein_sd.zip + path: "mame/bios/einstein_sd.zip" standalone_path: "einstein_sd.zip" required: false category: bios_zip @@ -18685,6 +19384,7 @@ files: sha1: "d0bc01e533d8963c596154435c5b2d156a96d470" - name: einstein_speech.zip + path: "mame/bios/einstein_speech.zip" standalone_path: "einstein_speech.zip" required: false category: bios_zip @@ -18700,6 +19400,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: eispc_kb.zip + path: "mame/bios/eispc_kb.zip" standalone_path: "eispc_kb.zip" required: false category: bios_zip @@ -18715,6 +19416,7 @@ files: sha1: "a939dd50622575c31fea9c7adb7a7db5403a7aca" - name: electron_ap1.zip + path: "mame/bios/electron_ap1.zip" standalone_path: "electron_ap1.zip" required: false category: bios_zip @@ -18741,6 +19443,7 @@ files: sha1: "f1053109ea236dd3e4b91ec64859480e8c2ed549" - name: electron_ap6.zip + path: "mame/bios/electron_ap6.zip" standalone_path: "electron_ap6.zip" required: false category: bios_zip @@ -18762,6 +19465,7 @@ files: sha1: "316a25aeeda0266dae510eea52324b087875740f" - name: electron_elksd128.zip + path: "mame/bios/electron_elksd128.zip" standalone_path: "electron_elksd128.zip" required: false category: bios_zip @@ -18777,6 +19481,7 @@ files: sha1: "d552149fec6a1deec2b75c740092bd311d67046f" - name: electron_elksd64.zip + path: "mame/bios/electron_elksd64.zip" standalone_path: "electron_elksd64.zip" required: false category: bios_zip @@ -18796,6 +19501,7 @@ files: sha1: "316a25aeeda0266dae510eea52324b087875740f" - name: electron_m2105.zip + path: "mame/bios/electron_m2105.zip" standalone_path: "electron_m2105.zip" required: false category: bios_zip @@ -18871,6 +19577,7 @@ files: sha1: "b369809275cb67dfd8a749265e91adb2d2558ae6" - name: electron_mc68k.zip + path: "mame/bios/electron_mc68k.zip" standalone_path: "electron_mc68k.zip" required: false category: bios_zip @@ -18898,6 +19605,7 @@ files: sha1: "90afb5910995511ae943ad62ea2967eff85e8ef7" - name: electron_mode7.zip + path: "mame/bios/electron_mode7.zip" standalone_path: "electron_mode7.zip" required: false category: bios_zip @@ -18919,6 +19627,7 @@ files: sha1: "3689a6ca8693fa9a6e53a02cf34d613303cb34d7" - name: electron_pwrjoy.zip + path: "mame/bios/electron_pwrjoy.zip" standalone_path: "electron_pwrjoy.zip" required: false category: bios_zip @@ -18934,6 +19643,7 @@ files: sha1: "6d3aa85a436db952906e84839496e681ea115168" - name: electron_romboxp.zip + path: "mame/bios/electron_romboxp.zip" standalone_path: "electron_romboxp.zip" required: false category: bios_zip @@ -18974,6 +19684,7 @@ files: sha1: "eb8609991a9a8fb017b8100bfca4248d65faeea8" - name: electron_sidewndr.zip + path: "mame/bios/electron_sidewndr.zip" standalone_path: "electron_sidewndr.zip" required: false category: bios_zip @@ -18989,6 +19700,7 @@ files: sha1: "771664dbf23bb14febeb414a0272762cd6091ead" - name: electron_voxbox.zip + path: "mame/bios/electron_voxbox.zip" standalone_path: "electron_voxbox.zip" required: false category: bios_zip @@ -19004,6 +19716,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: enetlc.zip + path: "mame/bios/enetlc.zip" standalone_path: "enetlc.zip" required: false category: bios_zip @@ -19027,6 +19740,7 @@ files: sha1: "ba4fd87765104701d5e6bf7962ed3a453e3c5711" - name: enetlctp.zip + path: "mame/bios/enetlctp.zip" standalone_path: "enetlctp.zip" required: false category: bios_zip @@ -19044,6 +19758,7 @@ files: sha1: "447ce6830600f47f63fdc21dd132539decb76001" - name: enetnbtp.zip + path: "mame/bios/enetnbtp.zip" standalone_path: "enetnbtp.zip" required: false category: bios_zip @@ -19061,6 +19776,7 @@ files: sha1: "dd14bf4328d9c1ea1d2e1d441da0233e6669e919" - name: enh2000.zip + path: "mame/bios/enh2000.zip" standalone_path: "enh2000.zip" required: false category: bios_zip @@ -19076,6 +19792,7 @@ files: sha1: "473dd2e06037799e6f562c443165d9b2b9f4a368" - name: enp10.zip + path: "mame/bios/enp10.zip" standalone_path: "enp10.zip" required: false category: bios_zip @@ -19130,6 +19847,7 @@ files: sha1: "b4d6bba88dd376cc492738d57742628f42e9265e" - name: epson_fx80.zip + path: "mame/bios/epson_fx80.zip" standalone_path: "epson_fx80.zip" required: false category: bios_zip @@ -19167,6 +19885,7 @@ files: sha1: "d5074f60497cc75d40996e6cef63231d3a3697f1" - name: epson_jx80.zip + path: "mame/bios/epson_jx80.zip" standalone_path: "epson_jx80.zip" required: false category: bios_zip @@ -19204,6 +19923,7 @@ files: sha1: "d5074f60497cc75d40996e6cef63231d3a3697f1" - name: epson_pf10.zip + path: "mame/bios/epson_pf10.zip" standalone_path: "epson_pf10.zip" required: false category: bios_zip @@ -19219,6 +19939,7 @@ files: sha1: "bb176e4baf938fe58c2d32f7c46d7bb7b0627755" - name: epson_qx_option_multifont.zip + path: "mame/bios/epson_qx_option_multifont.zip" standalone_path: "epson_qx_option_multifont.zip" required: false category: bios_zip @@ -19258,6 +19979,7 @@ files: sha1: "19246af07d6728ccd74a021265df827ecc6fe2b5" - name: epson_rx80.zip + path: "mame/bios/epson_rx80.zip" standalone_path: "epson_rx80.zip" required: false category: bios_zip @@ -19291,6 +20013,7 @@ files: sha1: "3e304f5331181aedb321d3db23a9387e3cfacf0c" - name: epson_tf20.zip + path: "mame/bios/epson_tf20.zip" standalone_path: "epson_tf20.zip" required: false category: bios_zip @@ -19306,6 +20029,7 @@ files: sha1: "c9bdf393f757ba5d8f838108ceb2b079be1d616e" - name: ergoline_kbd.zip + path: "mame/bios/ergoline_kbd.zip" standalone_path: "ergoline_kbd.zip" required: false category: bios_zip @@ -19320,6 +20044,7 @@ files: sha1: "8a2e1a894fda3e92fd760b8523121ba171281206" - name: esq2x40_vfx.zip + path: "mame/bios/esq2x40_vfx.zip" standalone_path: "esq2x40_vfx.zip" required: false category: bios_zip @@ -19335,6 +20060,7 @@ files: sha1: "097fc3e1930a49ab61f73ea7a6191c892004f823" - name: et4000.zip + path: "mame/bios/et4000.zip" standalone_path: "et4000.zip" required: false category: bios_zip @@ -19359,6 +20085,7 @@ files: sha1: "8644b4178cd0e841139bfa06c9da493dd74d22e8" - name: et4000_kasan16.zip + path: "mame/bios/et4000_kasan16.zip" standalone_path: "et4000_kasan16.zip" required: false category: bios_zip @@ -19382,6 +20109,7 @@ files: sha1: "1358feb2ccaca040a176bedc7c256ec481351b41" - name: et4kw32i.zip + path: "mame/bios/et4kw32i.zip" standalone_path: "et4kw32i.zip" required: false category: bios_zip @@ -19401,6 +20129,7 @@ files: sha1: "d5aee7205af8bd1fef0ecf1db2c07308a2b10b17" - name: et532_board.zip + path: "mame/bios/et532_board.zip" standalone_path: "et532_board.zip" required: false category: bios_zip @@ -19415,6 +20144,7 @@ files: sha1: "c8f3651768efe8282ceb914a99c2355735be8976" - name: ethudock.zip + path: "mame/bios/ethudock.zip" standalone_path: "ethudock.zip" required: false category: bios_zip @@ -19430,6 +20160,7 @@ files: sha1: "85474adc62de1bdca6ce7bf694a0158d467113cc" - name: europc_kbd.zip + path: "mame/bios/europc_kbd.zip" standalone_path: "europc_kbd.zip" required: false category: bios_zip @@ -19444,6 +20175,7 @@ files: sha1: "ddb7060abddee7294723833c303090de35c1e79c" - name: ev346.zip + path: "mame/bios/ev346.zip" standalone_path: "ev346.zip" required: false category: bios_zip @@ -19462,6 +20194,7 @@ files: sha1: "ef31b62f5ac38db7cacfc4d30e203a4cc1414913" - name: everdrive_md.zip + path: "mame/bios/everdrive_md.zip" standalone_path: "everdrive_md.zip" required: false category: bios_zip @@ -19477,6 +20210,7 @@ files: sha1: "fe71de7dd1f2117409b158ccd45c68b1d6781a9c" - name: ex1280.zip + path: "mame/bios/ex1280.zip" standalone_path: "ex1280.zip" required: false category: bios_zip @@ -19498,6 +20232,7 @@ files: sha1: "88c19cf36cb98e59810dad2a2f1f0e6c884cd7eb" - name: ex800.zip + path: "mame/bios/ex800.zip" standalone_path: "ex800.zip" required: false category: bios_zip @@ -19531,6 +20266,7 @@ files: sha1: "8e30ead727b9317154742efd881206e9f9bbf95b" - name: executive10_102_kbd.zip + path: "mame/bios/executive10_102_kbd.zip" standalone_path: "executive10_102_kbd.zip" required: false category: bios_zip @@ -19546,6 +20282,7 @@ files: sha1: "2701ab4eaaf89270575ecff841f813db1907a434" - name: exorterm155_device.zip + path: "mame/bios/exorterm155_device.zip" standalone_path: "exorterm155_device.zip" required: false category: bios_zip @@ -19581,6 +20318,7 @@ files: bad_dump: true - name: exos201.zip + path: "mame/bios/exos201.zip" standalone_path: "exos201.zip" required: false category: bios_zip @@ -19606,6 +20344,7 @@ files: sha1: "2eb6f6a5b2ebbd3489721ef632f3fbf162044cf4" - name: f4431_kbd.zip + path: "mame/bios/f4431_kbd.zip" standalone_path: "f4431_kbd.zip" required: false category: bios_zip @@ -19621,6 +20360,7 @@ files: sha1: "91d0ef181fe05e9474871e26dc75c313cb67c337" - name: fc_disksys.zip + path: "mame/bios/fc_disksys.zip" standalone_path: "fc_disksys.zip" required: false category: bios_zip @@ -19642,6 +20382,7 @@ files: sha1: "af5af53f66982e749643fdf8b2acbb7d4d3ed229" - name: fd148.zip + path: "mame/bios/fd148.zip" standalone_path: "fd148.zip" required: false category: bios_zip @@ -19657,6 +20398,7 @@ files: sha1: "c11317cb9370e722950579a610a3effda313aeee" - name: fd2000.zip + path: "mame/bios/fd2000.zip" standalone_path: "fd2000.zip" required: false category: bios_zip @@ -19677,6 +20419,7 @@ files: sha1: "0c61ba58269baf2b8aadf3bbc4648c7a5a6d2128" - name: fd4000.zip + path: "mame/bios/fd4000.zip" standalone_path: "fd4000.zip" required: false category: bios_zip @@ -19697,6 +20440,7 @@ files: sha1: "d936d76fd8b50ce4c65f885703653d7c1bd7d3c9" - name: fdc344.zip + path: "mame/bios/fdc344.zip" standalone_path: "fdc344.zip" required: false category: bios_zip @@ -19714,6 +20458,7 @@ files: sha1: "b639d92435ecf2a6d4aefd3576a6955028f6bde7" - name: fdcmag.zip + path: "mame/bios/fdcmag.zip" standalone_path: "fdcmag.zip" required: false category: bios_zip @@ -19732,6 +20477,7 @@ files: sha1: "9c4443169a0b104395404274470e62b8b65efcf4" - name: fga4he.zip + path: "mame/bios/fga4he.zip" standalone_path: "fga4he.zip" required: false category: bios_zip @@ -19751,6 +20497,7 @@ files: sha1: "fe4bc168ad7ccb186a6f8158964e2116435c994b" - name: filetto_cga.zip + path: "mame/bios/filetto_cga.zip" standalone_path: "filetto_cga.zip" required: false category: bios_zip @@ -19766,6 +20513,7 @@ files: sha1: "de84bdd9245df287bbd3bb808f0c3531d13a3545" - name: freedom220_kbd.zip + path: "mame/bios/freedom220_kbd.zip" standalone_path: "freedom220_kbd.zip" required: false category: bios_zip @@ -19781,6 +20529,7 @@ files: sha1: "477eb9f3d3abc89cfc9b5f9a924a794ca48750c4" - name: fsd1.zip + path: "mame/bios/fsd1.zip" standalone_path: "fsd1.zip" required: false category: bios_zip @@ -19795,6 +20544,7 @@ files: sha1: "ab16f56989b27d89babe5f89c5a8cb3da71a82f0" - name: fsd2.zip + path: "mame/bios/fsd2.zip" standalone_path: "fsd2.zip" required: false category: bios_zip @@ -19825,6 +20575,7 @@ files: sha1: "f279d327d5e16ea1b62fb18514fb679d0b442941" - name: g80_1500.zip + path: "mame/bios/g80_1500.zip" standalone_path: "g80_1500.zip" required: false category: bios_zip @@ -19840,6 +20591,7 @@ files: sha1: "009fc939f86bf70d288523446e292095d9706ab2" - name: gamtor_vga.zip + path: "mame/bios/gamtor_vga.zip" standalone_path: "gamtor_vga.zip" required: false category: bios_zip @@ -19855,6 +20607,7 @@ files: bad_dump: true - name: geforce256.zip + path: "mame/bios/geforce256.zip" standalone_path: "geforce256.zip" required: false category: bios_zip @@ -19872,6 +20625,7 @@ files: bad_dump: true - name: geforce256ddr.zip + path: "mame/bios/geforce256ddr.zip" standalone_path: "geforce256ddr.zip" required: false category: bios_zip @@ -19888,6 +20642,7 @@ files: sha1: "aaac61e99193221280c5913cf3ca503e5b5ea408" - name: gfxultra.zip + path: "mame/bios/gfxultra.zip" standalone_path: "gfxultra.zip" required: false category: bios_zip @@ -19906,6 +20661,7 @@ files: sha1: "117cfc972ce4645538ba7262222d8ff38bc2c58c" - name: gfxultrap.zip + path: "mame/bios/gfxultrap.zip" standalone_path: "gfxultrap.zip" required: false category: bios_zip @@ -19930,6 +20686,7 @@ files: sha1: "61321dfecf1bcdd8043836fabbe41786dbf3001b" - name: gic.zip + path: "mame/bios/gic.zip" standalone_path: "gic.zip" required: false category: bios_zip @@ -19945,6 +20702,7 @@ files: bad_dump: true - name: gpib_hardbox.zip + path: "mame/bios/gpib_hardbox.zip" standalone_path: "gpib_hardbox.zip" required: false category: bios_zip @@ -19988,6 +20746,7 @@ files: sha1: "151f99dc554d3762b805fc8383cf1b3e1455784f" - name: gpib_mshark.zip + path: "mame/bios/gpib_mshark.zip" standalone_path: "gpib_mshark.zip" required: false category: bios_zip @@ -20025,6 +20784,7 @@ files: sha1: "3b384951ff54c4b45a3a778a88966d13e2c9d57a" - name: gpib_softbox.zip + path: "mame/bios/gpib_softbox.zip" standalone_path: "gpib_softbox.zip" required: false category: bios_zip @@ -20068,6 +20828,7 @@ files: sha1: "4b26d5db36f828e01268f718799f145d09b449ad" - name: gpl16250va.zip + path: "mame/bios/gpl16250va.zip" standalone_path: "gpl16250va.zip" required: false category: bios_zip @@ -20089,6 +20850,7 @@ files: sha1: "988e0befd33884b05aeccd6821e5cdd53f6a849f" - name: gpl951xx.zip + path: "mame/bios/gpl951xx.zip" standalone_path: "gpl951xx.zip" required: false category: bios_zip @@ -20104,6 +20866,7 @@ files: sha1: "01752267b404d1bd3a61efa928223eb9e147faa3" - name: gunsense.zip + path: "mame/bios/gunsense.zip" standalone_path: "gunsense.zip" required: false category: bios_zip @@ -20127,6 +20890,7 @@ files: sha1: "91813a43851c48d400fde41b1198dabf55bade2d" - name: h89bus_io_decoder_444_43.zip + path: "mame/bios/h89bus_io_decoder_444_43.zip" standalone_path: "h89bus_io_decoder_444_43.zip" required: false category: bios_zip @@ -20142,6 +20906,7 @@ files: sha1: "11da9a9145de07f1f3bf1270a10e059dff30c693" - name: h89bus_io_decoder_444_61.zip + path: "mame/bios/h89bus_io_decoder_444_61.zip" standalone_path: "h89bus_io_decoder_444_61.zip" required: false category: bios_zip @@ -20157,6 +20922,7 @@ files: sha1: "92da6484d1339160400d6bc75578a977c5e4d23e" - name: h89bus_io_decoder_cdr86.zip + path: "mame/bios/h89bus_io_decoder_cdr86.zip" standalone_path: "h89bus_io_decoder_cdr86.zip" required: false category: bios_zip @@ -20172,6 +20938,7 @@ files: sha1: "879f9d265d77f8a74c70febd9a80d6896ab8ec7e" - name: h89bus_io_decoder_mms_61c.zip + path: "mame/bios/h89bus_io_decoder_mms_61c.zip" standalone_path: "h89bus_io_decoder_mms_61c.zip" required: false category: bios_zip @@ -20187,6 +20954,7 @@ files: sha1: "33c124f44c0f9cb99c9b17ad15411b4bc6407eae" - name: h8_cpu_8080.zip + path: "mame/bios/h8_cpu_8080.zip" standalone_path: "h8_cpu_8080.zip" required: false category: bios_zip @@ -20218,6 +20986,7 @@ files: sha1: "965244277a3a8039a987e4c3593b52196e39b7e7" - name: h8_ha_8_6.zip + path: "mame/bios/h8_ha_8_6.zip" standalone_path: "h8_ha_8_6.zip" required: false category: bios_zip @@ -20239,6 +21008,7 @@ files: sha1: "90082d02ffb1d27e8172b11fff465bd24343486e" - name: hcpu30.zip + path: "mame/bios/hcpu30.zip" standalone_path: "hcpu30.zip" required: false category: bios_zip @@ -20254,6 +21024,7 @@ files: sha1: "5431b0559b168a995e725b35e1465a0b8ee8aa72" - name: hd44780.zip + path: "mame/bios/hd44780.zip" standalone_path: "hd44780.zip" required: false category: bios_zip @@ -20276,6 +21047,7 @@ files: bad_dump: true - name: hd44780u.zip + path: "mame/bios/hd44780u.zip" standalone_path: "hd44780u.zip" required: false category: bios_zip @@ -20299,6 +21071,7 @@ files: bad_dump: true - name: hd61830.zip + path: "mame/bios/hd61830.zip" standalone_path: "hd61830.zip" required: false category: bios_zip @@ -20315,6 +21088,7 @@ files: bad_dump: true - name: hdae5000.zip + path: "mame/bios/hdae5000.zip" standalone_path: "hdae5000.zip" required: false category: bios_zip @@ -20346,6 +21120,7 @@ files: sha1: "c4da28f0ad16b1288774af761b3729142e8050b3" - name: he191_3425.zip + path: "mame/bios/he191_3425.zip" standalone_path: "he191_3425.zip" required: false category: bios_zip @@ -20361,6 +21136,7 @@ files: sha1: "4369de412cef907a3734ba511abe902d2d1b6cbf" - name: heath_gp19_tlb.zip + path: "mame/bios/heath_gp19_tlb.zip" standalone_path: "heath_gp19_tlb.zip" required: false category: bios_zip @@ -20413,6 +21189,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_igc_super19_tlb_device.zip + path: "mame/bios/heath_igc_super19_tlb_device.zip" standalone_path: "heath_igc_super19_tlb_device.zip" required: false category: bios_zip @@ -20436,6 +21213,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_igc_tlb_device.zip + path: "mame/bios/heath_igc_tlb_device.zip" standalone_path: "heath_igc_tlb_device.zip" required: false category: bios_zip @@ -20458,6 +21236,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_igc_ultra_tlb_device.zip + path: "mame/bios/heath_igc_ultra_tlb_device.zip" standalone_path: "heath_igc_ultra_tlb_device.zip" required: false category: bios_zip @@ -20481,6 +21260,7 @@ files: sha1: "ca39c602af48505139d2750a084b5f8f0e662ff7" - name: heath_igc_watz_tlb_device.zip + path: "mame/bios/heath_igc_watz_tlb_device.zip" standalone_path: "heath_igc_watz_tlb_device.zip" required: false category: bios_zip @@ -20510,6 +21290,7 @@ files: sha1: "1b23705290bdf9fc6342065c6a528c04bff67b13" - name: heath_imaginator_tlb.zip + path: "mame/bios/heath_imaginator_tlb.zip" standalone_path: "heath_imaginator_tlb.zip" required: false category: bios_zip @@ -20564,6 +21345,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_super19_tlb.zip + path: "mame/bios/heath_super19_tlb.zip" standalone_path: "heath_super19_tlb.zip" required: false category: bios_zip @@ -20608,6 +21390,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_superset_tlb.zip + path: "mame/bios/heath_superset_tlb.zip" standalone_path: "heath_superset_tlb.zip" required: false category: bios_zip @@ -20652,6 +21435,7 @@ files: sha1: "981962e5e05bbdc5a66b0e86870853ce5596e877" - name: heath_tlb.zip + path: "mame/bios/heath_tlb.zip" standalone_path: "heath_tlb.zip" required: false category: bios_zip @@ -20696,6 +21480,7 @@ files: sha1: "df49ce64ae48652346a91648c58178a34fb37d3c" - name: heath_ultra_tlb.zip + path: "mame/bios/heath_ultra_tlb.zip" standalone_path: "heath_ultra_tlb.zip" required: false category: bios_zip @@ -20740,6 +21525,7 @@ files: sha1: "ca39c602af48505139d2750a084b5f8f0e662ff7" - name: heath_watz_tlb.zip + path: "mame/bios/heath_watz_tlb.zip" standalone_path: "heath_watz_tlb.zip" required: false category: bios_zip @@ -20790,6 +21576,7 @@ files: sha1: "1b23705290bdf9fc6342065c6a528c04bff67b13" - name: hk68v10.zip + path: "mame/bios/hk68v10.zip" standalone_path: "hk68v10.zip" required: false category: bios_zip @@ -20808,6 +21595,7 @@ files: sha1: "e68699965645f0ce53de47625163c3eb02c8b727" - name: hp82900.zip + path: "mame/bios/hp82900.zip" standalone_path: "hp82900.zip" required: false category: bios_zip @@ -20822,6 +21610,7 @@ files: sha1: "fb4427f729eedba5ac01809718b841c7bdd85e1f" - name: hp82937.zip + path: "mame/bios/hp82937.zip" standalone_path: "hp82937.zip" required: false category: bios_zip @@ -20836,6 +21625,7 @@ files: sha1: "44dfc8c3f431cd37a270b094f1db751214009214" - name: hp82939.zip + path: "mame/bios/hp82939.zip" standalone_path: "hp82939.zip" required: false category: bios_zip @@ -20850,6 +21640,7 @@ files: sha1: "0f6a70eb8981a8a87c7514ce8226ff1af3ac1668" - name: hp9122c.zip + path: "mame/bios/hp9122c.zip" standalone_path: "hp9122c.zip" required: false category: bios_zip @@ -20869,6 +21660,7 @@ files: sha1: "93b2015037d76cc68b6252df03d6f184104605b9" - name: hp9133.zip + path: "mame/bios/hp9133.zip" standalone_path: "hp9133.zip" required: false category: bios_zip @@ -20892,6 +21684,7 @@ files: sha1: "61766b1f64473c17f01cbc97bd817f6076827d6a" - name: hp98034.zip + path: "mame/bios/hp98034.zip" standalone_path: "hp98034.zip" required: false category: bios_zip @@ -20906,6 +21699,7 @@ files: sha1: "3d7c1ace38c4d3178fdbf764c044535d9f6ac94f" - name: hp98035.zip + path: "mame/bios/hp98035.zip" standalone_path: "hp98035.zip" required: false category: bios_zip @@ -20920,6 +21714,7 @@ files: sha1: "34e89a37a2822f27af21969941201317dbff615b" - name: hp98046.zip + path: "mame/bios/hp98046.zip" standalone_path: "hp98046.zip" required: false category: bios_zip @@ -20934,6 +21729,7 @@ files: sha1: "d19c35b18fae52b841060ed879f860fd2cae3482" - name: hp9845_prt.zip + path: "mame/bios/hp9845_prt.zip" standalone_path: "hp9845_prt.zip" required: false category: bios_zip @@ -20949,6 +21745,7 @@ files: sha1: "1dfabd32f4bdef85f88a514bd1978b80b25a6e80" - name: hp9895.zip + path: "mame/bios/hp9895.zip" standalone_path: "hp9895.zip" required: false category: bios_zip @@ -20968,6 +21765,7 @@ files: sha1: "96edf9af78be75fbad2a0245b8af43958ba32752" - name: hpblp.zip + path: "mame/bios/hpblp.zip" standalone_path: "hpblp.zip" required: false category: bios_zip @@ -20990,6 +21788,7 @@ files: sha1: "9e13c0ef2aed6565c33795780b7102f2647cf2a0" - name: human_interface.zip + path: "mame/bios/human_interface.zip" standalone_path: "human_interface.zip" required: false category: bios_zip @@ -21008,6 +21807,7 @@ files: sha1: "90849a10bdb8c6e38e73ce027c9c0ad8b3956b1b" - name: i8244.zip + path: "mame/bios/i8244.zip" standalone_path: "i8244.zip" required: false category: bios_zip @@ -21022,6 +21822,7 @@ files: sha1: "415382715455b47b69401b3d60bd8f0036dd7fef" - name: i8245.zip + path: "mame/bios/i8245.zip" standalone_path: "i8245.zip" required: false category: bios_zip @@ -21036,6 +21837,7 @@ files: sha1: "415382715455b47b69401b3d60bd8f0036dd7fef" - name: ibm_mfc.zip + path: "mame/bios/ibm_mfc.zip" standalone_path: "ibm_mfc.zip" required: false category: bios_zip @@ -21054,6 +21856,7 @@ files: sha1: "e7edf28d20e6c146e3144526c89cd6beea64663b" - name: ibm_vga.zip + path: "mame/bios/ibm_vga.zip" standalone_path: "ibm_vga.zip" required: false category: bios_zip @@ -21073,6 +21876,7 @@ files: bad_dump: true - name: ibsap2.zip + path: "mame/bios/ibsap2.zip" standalone_path: "ibsap2.zip" required: false category: bios_zip @@ -21090,6 +21894,7 @@ files: sha1: "f40e7e50521636b441f86794bd19b77ecf9a67b4" - name: idpart_video.zip + path: "mame/bios/idpart_video.zip" standalone_path: "idpart_video.zip" required: false category: bios_zip @@ -21109,6 +21914,7 @@ files: sha1: "c6067e3fdda84e673aaa74ae6561b535157a8281" - name: ie15_device.zip + path: "mame/bios/ie15_device.zip" standalone_path: "ie15_device.zip" required: false category: bios_zip @@ -21154,6 +21960,7 @@ files: sha1: "6af9fb75f5375943d5c0ce9ed408e0fb4621b17e" - name: ie15kbd.zip + path: "mame/bios/ie15kbd.zip" standalone_path: "ie15kbd.zip" required: false category: bios_zip @@ -21190,6 +21997,7 @@ files: sha1: "0ee46f5be1b01fa917a6d483bb51463106ae441f" - name: imds2ioc.zip + path: "mame/bios/imds2ioc.zip" standalone_path: "imds2ioc.zip" required: false category: bios_zip @@ -21273,6 +22081,7 @@ files: sha1: "0ed98f9f06622949ee3cc2ffc572fb9702db0f81" - name: imi5000h.zip + path: "mame/bios/imi5000h.zip" standalone_path: "imi5000h.zip" required: false category: bios_zip @@ -21303,6 +22112,7 @@ files: sha1: "646c5a3e951535a80d24d9ce8764a3f373c508db" - name: in207100kbd.zip + path: "mame/bios/in207100kbd.zip" standalone_path: "in207100kbd.zip" required: false category: bios_zip @@ -21318,6 +22128,7 @@ files: sha1: "f3e5e7d9138abede70e97026f4b2e52e0df6ea31" - name: in213kbd.zip + path: "mame/bios/in213kbd.zip" standalone_path: "in213kbd.zip" required: false category: bios_zip @@ -21333,6 +22144,7 @@ files: sha1: "0fea01984959c8d8b7884ffca40bef402c9b99b8" - name: indusgt.zip + path: "mame/bios/indusgt.zip" standalone_path: "indusgt.zip" required: false category: bios_zip @@ -21356,6 +22168,7 @@ files: sha1: "5bceaad520dac9d0527723b3b454e8ec99748e5b" - name: intv_ecs.zip + path: "mame/bios/intv_ecs.zip" standalone_path: "intv_ecs.zip" required: false category: bios_zip @@ -21379,6 +22192,7 @@ files: sha1: "b3c14955f56c57e6f0d8fbb695771946cfcf6582" - name: intv_voice.zip + path: "mame/bios/intv_voice.zip" standalone_path: "intv_voice.zip" required: false category: bios_zip @@ -21394,6 +22208,7 @@ files: sha1: "618563e512ff5665183664f52270fa9606c9d289" - name: iq151_disc2.zip + path: "mame/bios/iq151_disc2.zip" standalone_path: "iq151_disc2.zip" required: false category: bios_zip @@ -21408,6 +22223,7 @@ files: sha1: "3e2ca80934177e7a32d0905f5a0ad14072f9dabf" - name: iq151_minigraf.zip + path: "mame/bios/iq151_minigraf.zip" standalone_path: "iq151_minigraf.zip" required: false category: bios_zip @@ -21426,6 +22242,7 @@ files: sha1: "475d294e4976f88ad13e77a39b1c607827c791dc" - name: iq151_ms15a.zip + path: "mame/bios/iq151_ms15a.zip" standalone_path: "iq151_ms15a.zip" required: false category: bios_zip @@ -21441,6 +22258,7 @@ files: sha1: "ebdc4278cfe6d3cc7dafbaa05bc6c239e4e6c09b" - name: iq151_video32.zip + path: "mame/bios/iq151_video32.zip" standalone_path: "iq151_video32.zip" required: false category: bios_zip @@ -21455,6 +22273,7 @@ files: sha1: "18800543daf4daed3f048193c6ae923b4b0e87db" - name: iq151_video64.zip + path: "mame/bios/iq151_video64.zip" standalone_path: "iq151_video64.zip" required: false category: bios_zip @@ -21469,6 +22288,7 @@ files: sha1: "4b2c1d41838d569228f61568c1a16a8d68b3dadf" - name: iris_kbd.zip + path: "mame/bios/iris_kbd.zip" standalone_path: "iris_kbd.zip" required: false category: bios_zip @@ -21484,6 +22304,7 @@ files: sha1: "ed59ef7ad493b686f8f2f764549772b75bbd0735" - name: isa_aga.zip + path: "mame/bios/isa_aga.zip" standalone_path: "isa_aga.zip" required: false category: bios_zip @@ -21501,6 +22322,7 @@ files: sha1: "aca488a16ae4ff05a1f4d14574379ff49cd48343" - name: isa_aga_pc200.zip + path: "mame/bios/isa_aga_pc200.zip" standalone_path: "isa_aga_pc200.zip" required: false category: bios_zip @@ -21518,6 +22340,7 @@ files: sha1: "99663bfb61798526e092205575370c2ad34249a1" - name: isa_epc_mda.zip + path: "mame/bios/isa_epc_mda.zip" standalone_path: "isa_epc_mda.zip" required: false category: bios_zip @@ -21536,6 +22359,7 @@ files: sha1: "38ab26224bbe66bbe2bb2ccac29b41cbf78bdbf8" - name: isa_finalchs.zip + path: "mame/bios/isa_finalchs.zip" standalone_path: "isa_finalchs.zip" required: false category: bios_zip @@ -21560,6 +22384,7 @@ files: sha1: "f422b19a806cef4fadd580caefaaf8c32b644098" - name: isa_hdc.zip + path: "mame/bios/isa_hdc.zip" standalone_path: "isa_hdc.zip" required: false category: bios_zip @@ -21578,6 +22403,7 @@ files: sha1: "601d7ceab282394ebab50763c267e915a6a2166a" - name: isa_hercules.zip + path: "mame/bios/isa_hercules.zip" standalone_path: "isa_hercules.zip" required: false category: bios_zip @@ -21602,6 +22428,7 @@ files: sha1: "3279dfeed4a0f5daa7b57d455c96eafdcbb6bf41" - name: isa_ibm_mda.zip + path: "mame/bios/isa_ibm_mda.zip" standalone_path: "isa_ibm_mda.zip" required: false category: bios_zip @@ -21620,6 +22447,7 @@ files: sha1: "c2a8b10808bf51a3c123ba3eb1e9dd608231916f" - name: isa_ibm_pgc.zip + path: "mame/bios/isa_ibm_pgc.zip" standalone_path: "isa_ibm_pgc.zip" required: false category: bios_zip @@ -21658,6 +22486,7 @@ files: sha1: "deb1195886268dcddce10459911e020f7a9f74f7" - name: isa_ibm_speech.zip + path: "mame/bios/isa_ibm_speech.zip" standalone_path: "isa_ibm_speech.zip" required: false category: bios_zip @@ -21676,6 +22505,7 @@ files: sha1: "0cb41d490db2ed59989d2eae14a002ad0382e7ad" - name: isa_pcmidi.zip + path: "mame/bios/isa_pcmidi.zip" standalone_path: "isa_pcmidi.zip" required: false category: bios_zip @@ -21694,6 +22524,7 @@ files: sha1: "9446c4939de557f839a74ca6fe7f41df46752e25" - name: isa_prose4001.zip + path: "mame/bios/isa_prose4001.zip" standalone_path: "isa_prose4001.zip" required: false category: bios_zip @@ -21720,6 +22551,7 @@ files: sha1: "5c8709c82dadaea7012859c20141ef8f59d5e473" - name: isbc202.zip + path: "mame/bios/isbc202.zip" standalone_path: "isbc202.zip" required: false category: bios_zip @@ -21747,6 +22579,7 @@ files: sha1: "fc3b7f9c3e71ea1442827c51247a9944c6d40b37" - name: isbc8024.zip + path: "mame/bios/isbc8024.zip" standalone_path: "isbc8024.zip" required: false category: bios_zip @@ -21768,6 +22601,7 @@ files: sha1: "565ab4740d3151eb4d8ef9ff3e02570cf7804be1" - name: isbc_215g.zip + path: "mame/bios/isbc_215g.zip" standalone_path: "isbc_215g.zip" required: false category: bios_zip @@ -21787,6 +22621,7 @@ files: sha1: "295dd4e75f699aaf93227cc4876cee8accae383a" - name: ivelultrkb.zip + path: "mame/bios/ivelultrkb.zip" standalone_path: "ivelultrkb.zip" required: false category: bios_zip @@ -21802,6 +22637,7 @@ files: sha1: "676b6e775d5159049cae5b6143398ec7b2bf437a" - name: jaleco_vj_pc.zip + path: "mame/bios/jaleco_vj_pc.zip" standalone_path: "jaleco_vj_pc.zip" required: false category: bios_zip @@ -21818,6 +22654,7 @@ files: bad_dump: true - name: jc1310.zip + path: "mame/bios/jc1310.zip" standalone_path: "jc1310.zip" required: false category: bios_zip @@ -21836,6 +22673,7 @@ files: sha1: "5a32d2001bb1a489657f9488136b5d621f803703" - name: jvs13551.zip + path: "mame/bios/jvs13551.zip" standalone_path: "jvs13551.zip" required: false category: bios_zip @@ -21872,6 +22710,7 @@ files: sha1: "8c4dc85438298e31e25f69542804a78ff0e20962" - name: k573_dio.zip + path: "mame/bios/k573_dio.zip" standalone_path: "k573_dio.zip" required: false category: bios_zip @@ -21887,6 +22726,7 @@ files: sha1: "2b108a56653f91cb3351718c45dfcf979bc35ef1" - name: k573kara.zip + path: "mame/bios/k573kara.zip" standalone_path: "k573kara.zip" required: false category: bios_zip @@ -21902,6 +22742,7 @@ files: sha1: "2b108a56653f91cb3351718c45dfcf979bc35ef1" - name: k573mcr.zip + path: "mame/bios/k573mcr.zip" standalone_path: "k573mcr.zip" required: false category: bios_zip @@ -21917,6 +22758,7 @@ files: sha1: "927f62f63b5caa7899392decacd12fea0e6fdbea" - name: k573msu.zip + path: "mame/bios/k573msu.zip" standalone_path: "k573msu.zip" required: false category: bios_zip @@ -21936,6 +22778,7 @@ files: sha1: "71b87c8b25b9613b4d4511c53d0a3a3aacf1499d" - name: k7659_keyboard.zip + path: "mame/bios/k7659_keyboard.zip" standalone_path: "k7659_keyboard.zip" required: false category: bios_zip @@ -21950,6 +22793,7 @@ files: sha1: "b97e7df93778fa371b96b6f4fb1a5b1c8b89d7ba" - name: kaypro10kbd.zip + path: "mame/bios/kaypro10kbd.zip" standalone_path: "kaypro10kbd.zip" required: false category: bios_zip @@ -21964,6 +22808,7 @@ files: sha1: "aa7cd3f476466203294675d56098dff45952b9b0" - name: kayproiikbd.zip + path: "mame/bios/kayproiikbd.zip" standalone_path: "kayproiikbd.zip" required: false category: bios_zip @@ -21978,6 +22823,7 @@ files: sha1: "7919385fe8badbb610b793a3f5e4077982094aaa" - name: kb_3270pc.zip + path: "mame/bios/kb_3270pc.zip" standalone_path: "kb_3270pc.zip" required: false category: bios_zip @@ -21993,6 +22839,7 @@ files: sha1: "a3701e4617383a4de0fd5e2e86c4b74beaf94a7b" - name: kb_ec1841.zip + path: "mame/bios/kb_ec1841.zip" standalone_path: "kb_ec1841.zip" required: false category: bios_zip @@ -22007,6 +22854,7 @@ files: sha1: "1db430c72c2d007ea0b8ae2514ff15c96baba308" - name: kb_iskr1030.zip + path: "mame/bios/kb_iskr1030.zip" standalone_path: "kb_iskr1030.zip" required: false category: bios_zip @@ -22022,6 +22870,7 @@ files: sha1: "03959d3350e012ebfe61cee9c062b6c1fdd8766e" - name: kb_ms_natural.zip + path: "mame/bios/kb_ms_natural.zip" standalone_path: "kb_ms_natural.zip" required: false category: bios_zip @@ -22037,6 +22886,7 @@ files: sha1: "72134882a5c03e785db07cc54dfb7572c0a730d9" - name: kb_pcat101.zip + path: "mame/bios/kb_pcat101.zip" standalone_path: "kb_pcat101.zip" required: false category: bios_zip @@ -22052,6 +22902,7 @@ files: sha1: "ac739dc0408ea0b3be60f85b7a2eb822753a054c" - name: kb_pcat84.zip + path: "mame/bios/kb_pcat84.zip" standalone_path: "kb_pcat84.zip" required: false category: bios_zip @@ -22066,6 +22917,7 @@ files: sha1: "5f722bdb3b57f5a532c02a5c3f78f30d785796f2" - name: kb_pcxt83.zip + path: "mame/bios/kb_pcxt83.zip" standalone_path: "kb_pcxt83.zip" required: false category: bios_zip @@ -22080,6 +22932,7 @@ files: sha1: "4f5b2a075c68f6493310ec1e2a24271ceea330df" - name: kbd_lle_en_us.zip + path: "mame/bios/kbd_lle_en_us.zip" standalone_path: "kbd_lle_en_us.zip" required: false category: bios_zip @@ -22099,6 +22952,7 @@ files: sha1: "4de550ff1eec7996c7f26e92c5d268aa24024a7f" - name: kc_d004.zip + path: "mame/bios/kc_d004.zip" standalone_path: "kc_d004.zip" required: false category: bios_zip @@ -22114,6 +22968,7 @@ files: sha1: "66f476de78fb474d9ac61c6eaffce3354fd66776" - name: kc_d004_gide.zip + path: "mame/bios/kc_d004_gide.zip" standalone_path: "kc_d004_gide.zip" required: false category: bios_zip @@ -22150,6 +23005,7 @@ files: sha1: "8232adb5e5f0b25b52f9873cff14831da3a0398a" - name: keytronic_l2207.zip + path: "mame/bios/keytronic_l2207.zip" standalone_path: "keytronic_l2207.zip" required: false category: bios_zip @@ -22171,6 +23027,7 @@ files: sha1: "a1c9c505eb3ccf132307b2ac0e04b0326f50621e" - name: keytronic_pc3270.zip + path: "mame/bios/keytronic_pc3270.zip" standalone_path: "keytronic_pc3270.zip" required: false category: bios_zip @@ -22185,6 +23042,7 @@ files: sha1: "b75b6d4509036406052157bc34159f7039cdc72e" - name: keytronic_pc3270_at.zip + path: "mame/bios/keytronic_pc3270_at.zip" standalone_path: "keytronic_pc3270_at.zip" required: false category: bios_zip @@ -22199,6 +23057,7 @@ files: sha1: "b75b6d4509036406052157bc34159f7039cdc72e" - name: km035.zip + path: "mame/bios/km035.zip" standalone_path: "km035.zip" required: false category: bios_zip @@ -22213,6 +23072,7 @@ files: sha1: "cfbf54f7e831b3fc0b8502a5eeb03b8618bb32b0" - name: ks0066.zip + path: "mame/bios/ks0066.zip" standalone_path: "ks0066.zip" required: false category: bios_zip @@ -22235,6 +23095,7 @@ files: bad_dump: true - name: labtam_3232.zip + path: "mame/bios/labtam_3232.zip" standalone_path: "labtam_3232.zip" required: false category: bios_zip @@ -22285,6 +23146,7 @@ files: sha1: "032df47e1ba34653b5837f68eefa3ecaac17a483" - name: labtam_8086cpu.zip + path: "mame/bios/labtam_8086cpu.zip" standalone_path: "labtam_8086cpu.zip" required: false category: bios_zip @@ -22305,6 +23167,7 @@ files: sha1: "c575d5d53f2fe99569af002c636754dedca09e3b" - name: labtam_vducom.zip + path: "mame/bios/labtam_vducom.zip" standalone_path: "labtam_vducom.zip" required: false category: bios_zip @@ -22356,6 +23219,7 @@ files: sha1: "61503b5109183a5814be3fcaa393fde8f5bd5359" - name: labtam_z80sbc.zip + path: "mame/bios/labtam_z80sbc.zip" standalone_path: "labtam_z80sbc.zip" required: false category: bios_zip @@ -22386,6 +23250,7 @@ files: sha1: "5bd6f3dd1c1f6f3e07706293bfc46a9bfc43d1f2" - name: lba_enhancer.zip + path: "mame/bios/lba_enhancer.zip" standalone_path: "lba_enhancer.zip" required: false category: bios_zip @@ -22404,6 +23269,7 @@ files: sha1: "d275193a870250f212dc29768d4e68fb43770e95" - name: lc7985.zip + path: "mame/bios/lc7985.zip" standalone_path: "lc7985.zip" required: false category: bios_zip @@ -22420,6 +23286,7 @@ files: bad_dump: true - name: ldv1000.zip + path: "mame/bios/ldv1000.zip" standalone_path: "ldv1000.zip" required: false category: bios_zip @@ -22434,6 +23301,7 @@ files: sha1: "52f91c304a878ba02b2fa1cda1a9489d6dd5a34f" - name: lha201.zip + path: "mame/bios/lha201.zip" standalone_path: "lha201.zip" required: false category: bios_zip @@ -22449,6 +23317,7 @@ files: sha1: "4316fd50ce03d1b8f522327c8caa79edc88ac55a" - name: lisa2fdc.zip + path: "mame/bios/lisa2fdc.zip" standalone_path: "lisa2fdc.zip" required: false category: bios_zip @@ -22468,6 +23337,7 @@ files: sha1: "f3164923330a51366a06d9d8a4a01ec7b0d3a8aa" - name: lisafdc.zip + path: "mame/bios/lisafdc.zip" standalone_path: "lisafdc.zip" required: false category: bios_zip @@ -22487,6 +23357,7 @@ files: sha1: "872211d21386cd9625b3735d7682e2b2ecff05b4" - name: lisavideo.zip + path: "mame/bios/lisavideo.zip" standalone_path: "lisavideo.zip" required: false category: bios_zip @@ -22501,6 +23372,7 @@ files: sha1: "3b0023bd90f2ca1be0b099160a566b044856885d" - name: lk201.zip + path: "mame/bios/lk201.zip" standalone_path: "lk201.zip" required: false category: bios_zip @@ -22519,6 +23391,7 @@ files: sha1: "9744c561d76fe85afaccc7a2485ce2865236873a" - name: lm24014h.zip + path: "mame/bios/lm24014h.zip" standalone_path: "lm24014h.zip" required: false category: bios_zip @@ -22534,6 +23407,7 @@ files: sha1: "4680d3ae99102369b4145604ee7c25fa83760784" - name: lrk331.zip + path: "mame/bios/lrk331.zip" standalone_path: "lrk331.zip" required: false category: bios_zip @@ -22556,6 +23430,7 @@ files: sha1: "1a33462a29b306b01960cf2ac0b209b2adf58dbe" - name: luna_68k_cmc.zip + path: "mame/bios/luna_68k_cmc.zip" standalone_path: "luna_68k_cmc.zip" required: false category: bios_zip @@ -22571,6 +23446,7 @@ files: sha1: "22290850761ed3dddb2369e062012679e2963fa3" - name: luna_68k_gpu.zip + path: "mame/bios/luna_68k_gpu.zip" standalone_path: "luna_68k_gpu.zip" required: false category: bios_zip @@ -22590,6 +23466,7 @@ files: sha1: "4a87417d9bf801e797bf504d18a6c6b5d3911706" - name: luna_68k_ioc.zip + path: "mame/bios/luna_68k_ioc.zip" standalone_path: "luna_68k_ioc.zip" required: false category: bios_zip @@ -22609,6 +23486,7 @@ files: sha1: "881623c3a64260f5cc1be066dbb47799d1f2ce14" - name: lux10828.zip + path: "mame/bios/lux10828.zip" standalone_path: "lux10828.zip" required: false category: bios_zip @@ -22649,6 +23527,7 @@ files: sha1: "04973ad69de8da403739caaebe0b0f6757e4a6b1" - name: lux21046.zip + path: "mame/bios/lux21046.zip" standalone_path: "lux21046.zip" required: false category: bios_zip @@ -22683,6 +23562,7 @@ files: sha1: "61ad271de53152c1640c0b364fce46d1b0b4c7e2" - name: lux21056.zip + path: "mame/bios/lux21056.zip" standalone_path: "lux21056.zip" required: false category: bios_zip @@ -22713,6 +23593,7 @@ files: sha1: "342b8e214a8c4c2b014604e53c45ef1bd1c69ea3" - name: lx800.zip + path: "mame/bios/lx800.zip" standalone_path: "lx800.zip" required: false category: bios_zip @@ -22746,6 +23627,7 @@ files: sha1: "9618c940dd10d5b43cd1edd5763b90e6447de667" - name: lx810l.zip + path: "mame/bios/lx810l.zip" standalone_path: "lx810l.zip" required: false category: bios_zip @@ -22779,6 +23661,7 @@ files: sha1: "8e6f2f98abcbd8af6e34b9ba746edf0d18aef843" - name: m1comm.zip + path: "mame/bios/m1comm.zip" standalone_path: "m1comm.zip" required: false category: bios_zip @@ -22800,6 +23683,7 @@ files: sha1: "0cd0983cc8b2f2d6b41617d0d0a24cc6c188e62a" - name: m20_8086.zip + path: "mame/bios/m20_8086.zip" standalone_path: "m20_8086.zip" required: false category: bios_zip @@ -22815,6 +23699,7 @@ files: sha1: "2bb424afd874cc6562e9642780eaac2391308053" - name: m24_kbd.zip + path: "mame/bios/m24_kbd.zip" standalone_path: "m24_kbd.zip" required: false category: bios_zip @@ -22830,6 +23715,7 @@ files: sha1: "b5076d40c255e17dc93478e2254ea19aff4918b3" - name: m24_z8000.zip + path: "mame/bios/m24_z8000.zip" standalone_path: "m24_z8000.zip" required: false category: bios_zip @@ -22845,6 +23731,7 @@ files: sha1: "ff048cf61b090b147be7e29a929a0be7b3ac8409" - name: m50458.zip + path: "mame/bios/m50458.zip" standalone_path: "m50458.zip" required: false category: bios_zip @@ -22866,6 +23753,7 @@ files: bad_dump: true - name: m50dass.zip + path: "mame/bios/m50dass.zip" standalone_path: "m50dass.zip" required: false category: bios_zip @@ -22880,6 +23768,7 @@ files: sha1: "f6aa309bc8be15c26d91f3cf048ea140a9ca12eb" - name: m68705p3.zip + path: "mame/bios/m68705p3.zip" standalone_path: "m68705p3.zip" required: false category: bios_zip @@ -22897,6 +23786,7 @@ files: sha1: "45104fe1dbd683d251ed2b9411b1f4befbb5aff4" - name: m68705p5.zip + path: "mame/bios/m68705p5.zip" standalone_path: "m68705p5.zip" required: false category: bios_zip @@ -22911,6 +23801,7 @@ files: sha1: "c154f78c23f10bb903a531cb19e99121d5f7c19c" - name: m68705r3.zip + path: "mame/bios/m68705r3.zip" standalone_path: "m68705r3.zip" required: false category: bios_zip @@ -22925,6 +23816,7 @@ files: sha1: "834ea00aef5de12dbcd6421a6e21d5ea96cfbf37" - name: m68705u3.zip + path: "mame/bios/m68705u3.zip" standalone_path: "m68705u3.zip" required: false category: bios_zip @@ -22939,6 +23831,7 @@ files: sha1: "834ea00aef5de12dbcd6421a6e21d5ea96cfbf37" - name: m68hc05pge.zip + path: "mame/bios/m68hc05pge.zip" standalone_path: "m68hc05pge.zip" required: false category: bios_zip @@ -22954,6 +23847,7 @@ files: sha1: "79dc721651bf47aec53f57885779c84c4781761d" - name: mach64isa.zip + path: "mame/bios/mach64isa.zip" standalone_path: "mach64isa.zip" required: false category: bios_zip @@ -22992,6 +23886,7 @@ files: sha1: "0f4cf9221179c675dafafde638bc00244b6feb63" - name: mackbd_m0110a_f.zip + path: "mame/bios/mackbd_m0110a_f.zip" standalone_path: "mackbd_m0110a_f.zip" required: false category: bios_zip @@ -23007,6 +23902,7 @@ files: sha1: "a80404a122d74721cda13b285c412057c2c78bd7" - name: mackbd_m0110a_j.zip + path: "mame/bios/mackbd_m0110a_j.zip" standalone_path: "mackbd_m0110a_j.zip" required: false category: bios_zip @@ -23022,6 +23918,7 @@ files: sha1: "a80404a122d74721cda13b285c412057c2c78bd7" - name: mackbd_m0110b.zip + path: "mame/bios/mackbd_m0110b.zip" standalone_path: "mackbd_m0110b.zip" required: false category: bios_zip @@ -23037,6 +23934,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: mackbd_m0110f.zip + path: "mame/bios/mackbd_m0110f.zip" standalone_path: "mackbd_m0110f.zip" required: false category: bios_zip @@ -23052,6 +23950,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: mackbd_m0110j.zip + path: "mame/bios/mackbd_m0110j.zip" standalone_path: "mackbd_m0110j.zip" required: false category: bios_zip @@ -23067,6 +23966,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: mackbd_m0110t.zip + path: "mame/bios/mackbd_m0110t.zip" standalone_path: "mackbd_m0110t.zip" required: false category: bios_zip @@ -23082,6 +23982,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: mackbd_m0120p.zip + path: "mame/bios/mackbd_m0120p.zip" standalone_path: "mackbd_m0120p.zip" required: false category: bios_zip @@ -23097,6 +23998,7 @@ files: sha1: "32a3b58afb445a8675b12a4de3aec2fa00c99222" - name: macxlfdc.zip + path: "mame/bios/macxlfdc.zip" standalone_path: "macxlfdc.zip" required: false category: bios_zip @@ -23118,6 +24020,7 @@ files: sha1: "aa446b0c4acb4cb6c9d0adfbbea900fb8c04c1e9" - name: macxlvideo.zip + path: "mame/bios/macxlvideo.zip" standalone_path: "macxlvideo.zip" required: false category: bios_zip @@ -23133,6 +24036,7 @@ files: sha1: "ec2533a6bd9e75d02fa69754fb82c7c28f0366ab" - name: mc1502_rom.zip + path: "mame/bios/mc1502_rom.zip" standalone_path: "mc1502_rom.zip" required: false category: bios_zip @@ -23147,6 +24051,7 @@ files: sha1: "003f872e12f00800e22ab6bbc009d36bfde67b9d" - name: mc_mk4_hopper.zip + path: "mame/bios/mc_mk4_hopper.zip" standalone_path: "mc_mk4_hopper.zip" required: false category: bios_zip @@ -23162,6 +24067,7 @@ files: sha1: "70ed27a9df57bc2bf9b6cd94ca86469fe6f9d5b4" - name: mcx128.zip + path: "mame/bios/mcx128.zip" standalone_path: "mcx128.zip" required: false category: bios_zip @@ -23183,6 +24089,7 @@ files: sha1: "c8fd92705fc42deb6a0ffac6274e27fd61ecd4cc" - name: md_kbd.zip + path: "mame/bios/md_kbd.zip" standalone_path: "md_kbd.zip" required: false category: bios_zip @@ -23198,6 +24105,7 @@ files: sha1: "20cf62fc31257b6c3e767152086f2604fead97bd" - name: md_rom_svp.zip + path: "mame/bios/md_rom_svp.zip" standalone_path: "md_rom_svp.zip" required: false category: bios_zip @@ -23211,6 +24119,7 @@ files: sha1: "0b951ea9c6094b3c34e4f0b64d031c75c237564f" - name: mdisplay3.zip + path: "mame/bios/mdisplay3.zip" standalone_path: "mdisplay3.zip" required: false category: bios_zip @@ -23226,6 +24135,7 @@ files: sha1: "88f06ec8f403eaaf7cbce4cc84807b5742ce7108" - name: mg1_kbd_device.zip + path: "mame/bios/mg1_kbd_device.zip" standalone_path: "mg1_kbd_device.zip" required: false category: bios_zip @@ -23240,6 +24150,7 @@ files: sha1: "c6e90b10241fa61e12124ef9a5cea15212d5866c" - name: mga2064w.zip + path: "mame/bios/mga2064w.zip" standalone_path: "mga2064w.zip" required: false category: bios_zip @@ -23278,6 +24189,7 @@ files: sha1: "d62d6a57c75f2266e3d0f85916f366d62ad56ce4" - name: microtan_kbd_mt009.zip + path: "mame/bios/microtan_kbd_mt009.zip" standalone_path: "microtan_kbd_mt009.zip" required: false category: bios_zip @@ -23293,6 +24205,7 @@ files: sha1: "89dcc0712745ed9ba876a78eefd55e9a54fc4fad" - name: microtouch.zip + path: "mame/bios/microtouch.zip" standalone_path: "microtouch.zip" required: false category: bios_zip @@ -23322,6 +24235,7 @@ files: sha1: "5a60d7d1f8a0b3898aabcabe43dc51e9f90306f7" - name: midcsd.zip + path: "mame/bios/midcsd.zip" standalone_path: "midcsd.zip" required: false category: bios_zip @@ -23337,6 +24251,7 @@ files: sha1: "360f3f59877f0bc25b4154782a2011963dd80a52" - name: midssio.zip + path: "mame/bios/midssio.zip" standalone_path: "midssio.zip" required: false category: bios_zip @@ -23352,6 +24267,7 @@ files: sha1: "9ac9b01d24affc0ee9227a4364c4fd8f8290343a" - name: mie.zip + path: "mame/bios/mie.zip" standalone_path: "mie.zip" required: false category: bios_zip @@ -23370,6 +24286,7 @@ files: sha1: "864d14d58732dd4e2ee538ccc71fa8df7013ba06" - name: mindset_sound_module.zip + path: "mame/bios/mindset_sound_module.zip" standalone_path: "mindset_sound_module.zip" required: false category: bios_zip @@ -23385,6 +24302,7 @@ files: sha1: "30cdc0dedaa5246f4952df452a99ca22e3cd0636" - name: minichif.zip + path: "mame/bios/minichif.zip" standalone_path: "minichif.zip" required: false category: bios_zip @@ -23400,6 +24318,7 @@ files: sha1: "c1296995238ef23f18e7fec70a144a0566a25a27" - name: mks3.zip + path: "mame/bios/mks3.zip" standalone_path: "mks3.zip" required: false category: bios_zip @@ -23415,6 +24334,7 @@ files: sha1: "fee3628ac49556a60a597ee6ea71fb48646c6229" - name: mm1kb.zip + path: "mame/bios/mm1kb.zip" standalone_path: "mm1kb.zip" required: false category: bios_zip @@ -23430,6 +24350,7 @@ files: sha1: "925c9ee22db13566416cdbc505c03d4116ff8d5f" - name: mm5740.zip + path: "mame/bios/mm5740.zip" standalone_path: "mm5740.zip" required: false category: bios_zip @@ -23466,6 +24387,7 @@ files: sha1: "e7b9feba5f789f388d27820b5f3fa591d41b4ab1" - name: mockingboardd.zip + path: "mame/bios/mockingboardd.zip" standalone_path: "mockingboardd.zip" required: false category: bios_zip @@ -23502,6 +24424,7 @@ files: sha1: "e8d20f4b59fe867ff76434d35a14d2cbdc8533e3" - name: model1io.zip + path: "mame/bios/model1io.zip" standalone_path: "model1io.zip" required: false category: bios_zip @@ -23528,6 +24451,7 @@ files: sha1: "c19d044d4c2fe551474492aa51922587394dd371" - name: model1io2.zip + path: "mame/bios/model1io2.zip" standalone_path: "model1io2.zip" required: false category: bios_zip @@ -23554,6 +24478,7 @@ files: sha1: "81892251d466f630a96af25bde652c20e47d7ede" - name: mpcb828.zip + path: "mame/bios/mpcb828.zip" standalone_path: "mpcb828.zip" required: false category: bios_zip @@ -23569,6 +24494,7 @@ files: sha1: "5378e33ef62309bc0c8cbe9ccbd87fd871bdc195" - name: mpcb896.zip + path: "mame/bios/mpcb896.zip" standalone_path: "mpcb896.zip" required: false category: bios_zip @@ -23584,6 +24510,7 @@ files: sha1: "550aab8b0c8d85c9a69fe94ae042b6bb9f9d7db1" - name: mpcb963.zip + path: "mame/bios/mpcb963.zip" standalone_path: "mpcb963.zip" required: false category: bios_zip @@ -23599,6 +24526,7 @@ files: sha1: "58bcc2afb66168f1d44a0366b6a5ccc4c22e0f32" - name: mpcba79.zip + path: "mame/bios/mpcba79.zip" standalone_path: "mpcba79.zip" required: false category: bios_zip @@ -23614,6 +24542,7 @@ files: sha1: "a35f7117cb657122dedd71864e58d8c08ca12190" - name: mpcbb68.zip + path: "mame/bios/mpcbb68.zip" standalone_path: "mpcbb68.zip" required: false category: bios_zip @@ -23629,6 +24558,7 @@ files: sha1: "5c286e87f051c6bd38137f47f89975f507b11b12" - name: mpcbb92.zip + path: "mame/bios/mpcbb92.zip" standalone_path: "mpcbb92.zip" required: false category: bios_zip @@ -23644,6 +24574,7 @@ files: sha1: "9ddc6cccc80fee2a5ac77307b33a70b074b8c7d6" - name: mpf1_epb.zip + path: "mame/bios/mpf1_epb.zip" standalone_path: "mpf1_epb.zip" required: false category: bios_zip @@ -23659,6 +24590,7 @@ files: sha1: "489e597c12a14a1cf9568d18b299e4f4ae656f71" - name: mpf1_epb_ibp.zip + path: "mame/bios/mpf1_epb_ibp.zip" standalone_path: "mpf1_epb_ibp.zip" required: false category: bios_zip @@ -23674,6 +24606,7 @@ files: sha1: "296842ee5bac23f41f46534663d4f0bfc04075cf" - name: mpf1_iom_ip.zip + path: "mame/bios/mpf1_iom_ip.zip" standalone_path: "mpf1_iom_ip.zip" required: false category: bios_zip @@ -23689,6 +24622,7 @@ files: sha1: "2c3c26290e041e913d00d7e0d65d53480e27187c" - name: mpf1_prt.zip + path: "mame/bios/mpf1_prt.zip" standalone_path: "mpf1_prt.zip" required: false category: bios_zip @@ -23704,6 +24638,7 @@ files: sha1: "f31536ee9dbb9babb9ce16a7490db654ca0b5749" - name: mpf1_prt_ip.zip + path: "mame/bios/mpf1_prt_ip.zip" standalone_path: "mpf1_prt_ip.zip" required: false category: bios_zip @@ -23719,6 +24654,7 @@ files: sha1: "6a3e7daa7834d67fd572261ed4a9a62c4594fe3f" - name: mpf1_sgb.zip + path: "mame/bios/mpf1_sgb.zip" standalone_path: "mpf1_sgb.zip" required: false category: bios_zip @@ -23734,6 +24670,7 @@ files: sha1: "13f3c7243d691b66ad5f0dcbbc16488c8905a394" - name: mpf1_ssb.zip + path: "mame/bios/mpf1_ssb.zip" standalone_path: "mpf1_ssb.zip" required: false category: bios_zip @@ -23749,6 +24686,7 @@ files: sha1: "35847f8164eed4c0794a8b74e5d7fa972b10eb90" - name: mpf1_ssb_ip.zip + path: "mame/bios/mpf1_ssb_ip.zip" standalone_path: "mpf1_ssb_ip.zip" required: false category: bios_zip @@ -23764,6 +24702,7 @@ files: sha1: "42a1ce714fe9017cc9c2838757bf072414c752d0" - name: mpf1_tva_ip.zip + path: "mame/bios/mpf1_tva_ip.zip" standalone_path: "mpf1_tva_ip.zip" required: false category: bios_zip @@ -23779,6 +24718,7 @@ files: sha1: "3a5b0dba5d1e2edda8563b55010c86efd1548d0b" - name: mpf1_vid.zip + path: "mame/bios/mpf1_vid.zip" standalone_path: "mpf1_vid.zip" required: false category: bios_zip @@ -23799,6 +24739,7 @@ files: sha1: "9cf717de353b86c38f94b805d31a16d8079896af" - name: mps1200.zip + path: "mame/bios/mps1200.zip" standalone_path: "mps1200.zip" required: false category: bios_zip @@ -23814,6 +24755,7 @@ files: sha1: "0ceb753c17599bc69458cfbb1cb3e81c2b60d107" - name: mps1250.zip + path: "mame/bios/mps1250.zip" standalone_path: "mps1250.zip" required: false category: bios_zip @@ -23829,6 +24771,7 @@ files: sha1: "bb7357e83497b333e3f95548d94970003b2dfa9d" - name: mpu401.zip + path: "mame/bios/mpu401.zip" standalone_path: "mpu401.zip" required: false category: bios_zip @@ -23847,6 +24790,7 @@ files: sha1: "00efbfb96aeb997b69bb16981c6751d3c784bb87" - name: mr9735_002.zip + path: "mame/bios/mr9735_002.zip" standalone_path: "mr9735_002.zip" required: false category: bios_zip @@ -23863,6 +24807,7 @@ files: bad_dump: true - name: ms7004.zip + path: "mame/bios/ms7004.zip" standalone_path: "ms7004.zip" required: false category: bios_zip @@ -23877,6 +24822,7 @@ files: sha1: "2d7cc7cd182f2ee09ecf2c539e33db3c2195f778" - name: msdsd1.zip + path: "mame/bios/msdsd1.zip" standalone_path: "msdsd1.zip" required: false category: bios_zip @@ -23896,6 +24842,7 @@ files: sha1: "99dd15c6d97938eba73880b18986a037e90742ab" - name: msdsd2.zip + path: "mame/bios/msdsd2.zip" standalone_path: "msdsd2.zip" required: false category: bios_zip @@ -23915,6 +24862,7 @@ files: sha1: "4beec0b7ce2349add3b0a5bceee60826637df8d9" - name: msm6222b01.zip + path: "mame/bios/msm6222b01.zip" standalone_path: "msm6222b01.zip" required: false category: bios_zip @@ -23930,6 +24878,7 @@ files: sha1: "e108b520e6d20459a7bbd5958bbfa1d551a690bd" - name: msmt070.zip + path: "mame/bios/msmt070.zip" standalone_path: "msmt070.zip" required: false category: bios_zip @@ -23945,6 +24894,7 @@ files: sha1: "25bfb863336315975568f137e7e76bdc8101ab02" - name: msmt071.zip + path: "mame/bios/msmt071.zip" standalone_path: "msmt071.zip" required: false category: bios_zip @@ -23960,6 +24910,7 @@ files: sha1: "49bd1890cc71dd8a7cbf5e17bf04843d6e075299" - name: msmt081.zip + path: "mame/bios/msmt081.zip" standalone_path: "msmt081.zip" required: false category: bios_zip @@ -23975,6 +24926,7 @@ files: sha1: "a5da37c3d9e040fc6d9ca99b82a25ed3ce4c57ff" - name: msmt094.zip + path: "mame/bios/msmt094.zip" standalone_path: "msmt094.zip" required: false category: bios_zip @@ -24018,6 +24970,7 @@ files: sha1: "a33cd5c0f3e45fdd7e22df2ff1648f4d73b09b19" - name: msx_cart_bm_012.zip + path: "mame/bios/msx_cart_bm_012.zip" standalone_path: "msx_cart_bm_012.zip" required: false category: bios_zip @@ -24033,6 +24986,7 @@ files: sha1: "6d07637ad3a61b509221ed4650eed18442371010" - name: msx_cart_easispeech.zip + path: "mame/bios/msx_cart_easispeech.zip" standalone_path: "msx_cart_easispeech.zip" required: false category: bios_zip @@ -24047,6 +25001,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: msx_cart_sfg01.zip + path: "mame/bios/msx_cart_sfg01.zip" standalone_path: "msx_cart_sfg01.zip" required: false category: bios_zip @@ -24062,6 +25017,7 @@ files: sha1: "434651305f92aa770a89e40b81125fb22d91603d" - name: msx_cart_sfg05.zip + path: "mame/bios/msx_cart_sfg05.zip" standalone_path: "msx_cart_sfg05.zip" required: false category: bios_zip @@ -24089,6 +25045,7 @@ files: bad_dump: true - name: msx_cart_skw01.zip + path: "mame/bios/msx_cart_skw01.zip" standalone_path: "msx_cart_skw01.zip" required: false category: bios_zip @@ -24111,6 +25068,7 @@ files: sha1: "f0901a63de6c95a42ce6ad82dd5e6bfba4bcf180" - name: msx_cart_sunrise_ataide.zip + path: "mame/bios/msx_cart_sunrise_ataide.zip" standalone_path: "msx_cart_sunrise_ataide.zip" required: false category: bios_zip @@ -24152,6 +25110,7 @@ files: sha1: "cbeb5830ee740747aa61ef5b896e2eb6d7acd7ab" - name: msx_moonsound.zip + path: "mame/bios/msx_moonsound.zip" standalone_path: "msx_moonsound.zip" required: false category: bios_zip @@ -24167,6 +25126,7 @@ files: sha1: "32760893ce06dbe3930627755ba065cc3d8ec6ca" - name: mtx_cfx.zip + path: "mame/bios/mtx_cfx.zip" standalone_path: "mtx_cfx.zip" required: false category: bios_zip @@ -24207,6 +25167,7 @@ files: sha1: "3e8dcc3d88158e0dc30d7d9ecec7e427883f7171" - name: mtx_sdxbas.zip + path: "mame/bios/mtx_sdxbas.zip" standalone_path: "mtx_sdxbas.zip" required: false category: bios_zip @@ -24228,6 +25189,7 @@ files: sha1: "f08e6a8cffbb3ca39633be6e9958bec85d1e5981" - name: mtx_sdxcpm.zip + path: "mame/bios/mtx_sdxcpm.zip" standalone_path: "mtx_sdxcpm.zip" required: false category: bios_zip @@ -24248,6 +25210,7 @@ files: sha1: "f84883f79bed34501e5828336894fad929bddbb5" - name: mu5lcd.zip + path: "mame/bios/mu5lcd.zip" standalone_path: "mu5lcd.zip" required: false category: bios_zip @@ -24263,6 +25226,7 @@ files: sha1: "3db0b16f27b501ff8d8ac3fb631dd315571230d3" - name: mulcd.zip + path: "mame/bios/mulcd.zip" standalone_path: "mulcd.zip" required: false category: bios_zip @@ -24282,6 +25246,7 @@ files: sha1: "2ff0899bfee7795ba52a3d56c96edf31d9e6a3f9" - name: mvme120.zip + path: "mame/bios/mvme120.zip" standalone_path: "mvme120.zip" required: false category: bios_zip @@ -24312,6 +25277,7 @@ files: sha1: "2f933d0eb46d00db0051ce23c3e53ccef75a2c69" - name: mvme121.zip + path: "mame/bios/mvme121.zip" standalone_path: "mvme121.zip" required: false category: bios_zip @@ -24342,6 +25308,7 @@ files: sha1: "2f933d0eb46d00db0051ce23c3e53ccef75a2c69" - name: mvme122.zip + path: "mame/bios/mvme122.zip" standalone_path: "mvme122.zip" required: false category: bios_zip @@ -24372,6 +25339,7 @@ files: sha1: "2f933d0eb46d00db0051ce23c3e53ccef75a2c69" - name: mvme123.zip + path: "mame/bios/mvme123.zip" standalone_path: "mvme123.zip" required: false category: bios_zip @@ -24402,6 +25370,7 @@ files: sha1: "2f933d0eb46d00db0051ce23c3e53ccef75a2c69" - name: mvme147.zip + path: "mame/bios/mvme147.zip" standalone_path: "mvme147.zip" required: false category: bios_zip @@ -24432,6 +25401,7 @@ files: sha1: "ff9db90a05c295819ce7ca7c1a6ac67b04003728" - name: mvme180.zip + path: "mame/bios/mvme180.zip" standalone_path: "mvme180.zip" required: false category: bios_zip @@ -24462,6 +25432,7 @@ files: sha1: "0105317abf0105216078c94c02c223dd1cd61068" - name: mvme181.zip + path: "mame/bios/mvme181.zip" standalone_path: "mvme181.zip" required: false category: bios_zip @@ -24492,6 +25463,7 @@ files: sha1: "5871b5194e7fc623923f5df005b0463002e85626" - name: mvme187.zip + path: "mame/bios/mvme187.zip" standalone_path: "mvme187.zip" required: false category: bios_zip @@ -24512,6 +25484,7 @@ files: sha1: "62515c6e0dbeca6d18f373ad33e185096f10d2fc" - name: mvme327a.zip + path: "mame/bios/mvme327a.zip" standalone_path: "mvme327a.zip" required: false category: bios_zip @@ -24532,6 +25505,7 @@ files: sha1: "ec5fc0709d8e91119d39231ace66f4fcbdb457e9" - name: mvme328.zip + path: "mame/bios/mvme328.zip" standalone_path: "mvme328.zip" required: false category: bios_zip @@ -24562,6 +25536,7 @@ files: sha1: "0a39873b5a17f71db86afcd361141e5b9f6786e9" - name: mvme350.zip + path: "mame/bios/mvme350.zip" standalone_path: "mvme350.zip" required: false category: bios_zip @@ -24580,6 +25555,7 @@ files: sha1: "d0929dbfeb0cfda63df6b5bc29ee27fbf665def7" - name: mz1e30.zip + path: "mame/bios/mz1e30.zip" standalone_path: "mz1e30.zip" required: false category: bios_zip @@ -24601,6 +25577,7 @@ files: sha1: "8b4f722e9a61c3e6aacebcda03c67253b8d9f468" - name: mz1p16.zip + path: "mame/bios/mz1p16.zip" standalone_path: "mz1p16.zip" required: false category: bios_zip @@ -24635,6 +25612,7 @@ files: sha1: "2e059c2f7d653294c77fe8e1a37436b4c028e122" - name: mzr8105.zip + path: "mame/bios/mzr8105.zip" standalone_path: "mzr8105.zip" required: false category: bios_zip @@ -24653,6 +25631,7 @@ files: sha1: "a00b68f4d649bcc09a29361f8692e52be12b3792" - name: nabupc_keyboard.zip + path: "mame/bios/nabupc_keyboard.zip" standalone_path: "nabupc_keyboard.zip" required: false category: bios_zip @@ -24667,6 +25646,7 @@ files: sha1: "2f6ff63ca2f2ac90f3e03ef4f2b79883205e8a4e" - name: namco50.zip + path: "mame/bios/namco50.zip" standalone_path: "namco50.zip" required: false category: bios_zip @@ -24681,6 +25661,7 @@ files: sha1: "f03c79451e73b3a93c1591cdb27fedc9f130508d" - name: namco51.zip + path: "mame/bios/namco51.zip" standalone_path: "namco51.zip" required: false category: bios_zip @@ -24695,6 +25676,7 @@ files: sha1: "50de79e0d6a76bda95ffb02fcce369a79e6abfec" - name: namco52.zip + path: "mame/bios/namco52.zip" standalone_path: "namco52.zip" required: false category: bios_zip @@ -24709,6 +25691,7 @@ files: sha1: "4883b2fdbc99eb7b9906357fcc53915842c2c186" - name: namco53.zip + path: "mame/bios/namco53.zip" standalone_path: "namco53.zip" required: false category: bios_zip @@ -24723,6 +25706,7 @@ files: sha1: "758d8583d658e4f1df93184009d86c3eb8713899" - name: namco54.zip + path: "mame/bios/namco54.zip" standalone_path: "namco54.zip" required: false category: bios_zip @@ -24737,6 +25721,7 @@ files: sha1: "01bdf984a49e8d0cc8761b2cc162fd6434d5afbe" - name: namco62.zip + path: "mame/bios/namco62.zip" standalone_path: "namco62.zip" required: false category: bios_zip @@ -24751,6 +25736,7 @@ files: sha1: "fe0a60fc339ac2eeed4879a64c1aab130f9d4cfe" - name: namco_amc.zip + path: "mame/bios/namco_amc.zip" standalone_path: "namco_amc.zip" required: false category: bios_zip @@ -24766,6 +25752,7 @@ files: sha1: "803652b7b8fde2196b7fb742ba8b9843e4fcd2de" - name: namco_asca1.zip + path: "mame/bios/namco_asca1.zip" standalone_path: "namco_asca1.zip" required: false category: bios_zip @@ -24781,6 +25768,7 @@ files: sha1: "497af1059f85c07bea2dd0d303481623f6019dcf" - name: namco_asca3.zip + path: "mame/bios/namco_asca3.zip" standalone_path: "namco_asca3.zip" required: false category: bios_zip @@ -24796,6 +25784,7 @@ files: sha1: "9d7ebe274c0d26f5f38747224d42d0375e2ed14c" - name: namco_asca3a.zip + path: "mame/bios/namco_asca3a.zip" standalone_path: "namco_asca3a.zip" required: false category: bios_zip @@ -24811,6 +25800,7 @@ files: sha1: "ffa8782ca641d71d57df23ed1c5911db05d3df97" - name: namco_asca5.zip + path: "mame/bios/namco_asca5.zip" standalone_path: "namco_asca5.zip" required: false category: bios_zip @@ -24826,6 +25816,7 @@ files: sha1: "320db5e78ae23c5f94e368432d51573b409995db" - name: namco_csz1.zip + path: "mame/bios/namco_csz1.zip" standalone_path: "namco_csz1.zip" required: false category: bios_zip @@ -24841,6 +25832,7 @@ files: sha1: "b5df211988d856572fcc313480e693c8561784e4" - name: namco_cyberlead.zip + path: "mame/bios/namco_cyberlead.zip" standalone_path: "namco_cyberlead.zip" required: false category: bios_zip @@ -24856,6 +25848,7 @@ files: sha1: "d938b1e1ae596d0ab1007352f61b0b800363c762" - name: namco_cyberlead_led.zip + path: "mame/bios/namco_cyberlead_led.zip" standalone_path: "namco_cyberlead_led.zip" required: false category: bios_zip @@ -24871,6 +25864,7 @@ files: sha1: "61d61338e1bb414af32dbdc1e24d54c02fb9196e" - name: namco_cyberleada.zip + path: "mame/bios/namco_cyberleada.zip" standalone_path: "namco_cyberleada.zip" required: false category: bios_zip @@ -24886,6 +25880,7 @@ files: sha1: "d938b1e1ae596d0ab1007352f61b0b800363c762" - name: namco_emio102.zip + path: "mame/bios/namco_emio102.zip" standalone_path: "namco_emio102.zip" required: false category: bios_zip @@ -24901,6 +25896,7 @@ files: sha1: "71d61d9218543e1b0b2a6c550a8ff2b7c6267257" - name: namco_fca10.zip + path: "mame/bios/namco_fca10.zip" standalone_path: "namco_fca10.zip" required: false category: bios_zip @@ -24916,6 +25912,7 @@ files: sha1: "9d7ebe274c0d26f5f38747224d42d0375e2ed14c" - name: namco_fca11.zip + path: "mame/bios/namco_fca11.zip" standalone_path: "namco_fca11.zip" required: false category: bios_zip @@ -24939,6 +25936,7 @@ files: sha1: "a1a487361053af564f6ec67e545413e370a3b38c" - name: namco_fcb.zip + path: "mame/bios/namco_fcb.zip" standalone_path: "namco_fcb.zip" required: false category: bios_zip @@ -24959,6 +25957,7 @@ files: sha1: "9d7ebe274c0d26f5f38747224d42d0375e2ed14c" - name: namco_tssio.zip + path: "mame/bios/namco_tssio.zip" standalone_path: "namco_tssio.zip" required: false category: bios_zip @@ -24974,6 +25973,7 @@ files: sha1: "1330189184a636328d956c0e435f8d9ad2e96a80" - name: namco_xmiu1.zip + path: "mame/bios/namco_xmiu1.zip" standalone_path: "namco_xmiu1.zip" required: false category: bios_zip @@ -24989,6 +25989,7 @@ files: sha1: "6fa5dc81d258137c1b1ad427d49d136d0bbf53fa" - name: namcoc65.zip + path: "mame/bios/namcoc65.zip" standalone_path: "namcoc65.zip" required: false category: bios_zip @@ -25003,6 +26004,7 @@ files: sha1: "2c420d34dba21e409bf78ddca710fc7de65a6642" - name: namcoc67.zip + path: "mame/bios/namcoc67.zip" standalone_path: "namcoc67.zip" required: false category: bios_zip @@ -25018,6 +26020,7 @@ files: sha1: "c9ec18d5f88d53976b94444eedc64d5568155958" - name: namcoc68.zip + path: "mame/bios/namcoc68.zip" standalone_path: "namcoc68.zip" required: false category: bios_zip @@ -25032,6 +26035,7 @@ files: sha1: "38d1ad1b1287cadef0c999aff9357927315f8e6b" - name: namcoc69.zip + path: "mame/bios/namcoc69.zip" standalone_path: "namcoc69.zip" required: false category: bios_zip @@ -25046,6 +26050,7 @@ files: sha1: "61a4981fc2716c228b6121fedcbf1ed6f34dc2de" - name: namcoc70.zip + path: "mame/bios/namcoc70.zip" standalone_path: "namcoc70.zip" required: false category: bios_zip @@ -25060,6 +26065,7 @@ files: sha1: "7ce91eda76e86b5cab625e2b67c463b7d143832e" - name: namcoc71.zip + path: "mame/bios/namcoc71.zip" standalone_path: "namcoc71.zip" required: false category: bios_zip @@ -25075,6 +26081,7 @@ files: sha1: "e363ac50f5556f83308d4cc191b455e9b62bcfc8" - name: namcoc74.zip + path: "mame/bios/namcoc74.zip" standalone_path: "namcoc74.zip" required: false category: bios_zip @@ -25089,6 +26096,7 @@ files: sha1: "8f3248b1890abb2e649927240ae46f73bb171e3b" - name: namcoc75.zip + path: "mame/bios/namcoc75.zip" standalone_path: "namcoc75.zip" required: false category: bios_zip @@ -25103,6 +26111,7 @@ files: sha1: "3103e5a0a2867620309fd4fe478a2be0effbeff8" - name: namcoc76.zip + path: "mame/bios/namcoc76.zip" standalone_path: "namcoc76.zip" required: false category: bios_zip @@ -25117,6 +26126,7 @@ files: sha1: "ceb184ef0486caf715dd997101999785f67a40b8" - name: nanoreseau_mo.zip + path: "mame/bios/nanoreseau_mo.zip" standalone_path: "nanoreseau_mo.zip" required: false category: bios_zip @@ -25132,6 +26142,7 @@ files: sha1: "b5b7cb6d12493d849330b6b5628efd1a83a4bbf5" - name: nanoreseau_to.zip + path: "mame/bios/nanoreseau_to.zip" standalone_path: "nanoreseau_to.zip" required: false category: bios_zip @@ -25147,6 +26158,7 @@ files: sha1: "973209f4baa5e81bf7885c0602949e064bac7862" - name: nb_aenet.zip + path: "mame/bios/nb_aenet.zip" standalone_path: "nb_aenet.zip" required: false category: bios_zip @@ -25164,6 +26176,7 @@ files: sha1: "01ddc15ee84b17128203cb812f29bac6b20fd642" - name: nb_amc3b.zip + path: "mame/bios/nb_amc3b.zip" standalone_path: "nb_amc3b.zip" required: false category: bios_zip @@ -25181,6 +26194,7 @@ files: sha1: "d0a41df667e6b51fbc63f9251d593f4fc49104ba" - name: nb_btbug.zip + path: "mame/bios/nb_btbug.zip" standalone_path: "nb_btbug.zip" required: false category: bios_zip @@ -25204,6 +26218,7 @@ files: sha1: "c783d19a5e4c536e58e1e7e201ec47e8fb78d435" - name: nb_c264.zip + path: "mame/bios/nb_c264.zip" standalone_path: "nb_c264.zip" required: false category: bios_zip @@ -25225,6 +26240,7 @@ files: sha1: "98d35ed3fb0bca4a9bee1cdb2af0d3f22b379386" - name: nb_laserview.zip + path: "mame/bios/nb_laserview.zip" standalone_path: "nb_laserview.zip" required: false category: bios_zip @@ -25242,6 +26258,7 @@ files: sha1: "fd505505226abb5fea7c10ed14e8841077ef1be6" - name: nb_m2hr.zip + path: "mame/bios/nb_m2hr.zip" standalone_path: "nb_m2hr.zip" required: false category: bios_zip @@ -25259,6 +26276,7 @@ files: sha1: "37c59f38ae34021d0cb86c2e76a598b7e6077c0d" - name: nb_m2vc.zip + path: "mame/bios/nb_m2vc.zip" standalone_path: "nb_m2vc.zip" required: false category: bios_zip @@ -25276,6 +26294,7 @@ files: sha1: "abe85d8a882bb2b8187a28bd6707fc2f5d77eedd" - name: nb_mdc48.zip + path: "mame/bios/nb_mdc48.zip" standalone_path: "nb_mdc48.zip" required: false category: bios_zip @@ -25293,6 +26312,7 @@ files: sha1: "4ae21d6d7bbaa6fc7aa301bee2b791ed33b1dcf9" - name: nb_pcs8.zip + path: "mame/bios/nb_pcs8.zip" standalone_path: "nb_pcs8.zip" required: false category: bios_zip @@ -25310,6 +26330,7 @@ files: sha1: "bd4ceb4b229c9ce3e8f5386d5132ff26de6067e1" - name: nb_qdlink.zip + path: "mame/bios/nb_qdlink.zip" standalone_path: "nb_qdlink.zip" required: false category: bios_zip @@ -25327,6 +26348,7 @@ files: sha1: "d70bc32ad50ceb5cb75c6251293cacd65d8313aa" - name: nb_rtpd.zip + path: "mame/bios/nb_rtpd.zip" standalone_path: "nb_rtpd.zip" required: false category: bios_zip @@ -25344,6 +26366,7 @@ files: sha1: "4abb64e49201e966c17a255a94b670564b229934" - name: nb_sp8s3.zip + path: "mame/bios/nb_sp8s3.zip" standalone_path: "nb_sp8s3.zip" required: false category: bios_zip @@ -25367,6 +26390,7 @@ files: sha1: "124c9847bf07733d131c977c4395cfbbb6470973" - name: nb_spdq.zip + path: "mame/bios/nb_spdq.zip" standalone_path: "nb_spdq.zip" required: false category: bios_zip @@ -25384,6 +26408,7 @@ files: sha1: "9511c2df47140f4279196d3b8836b53429879dd9" - name: nb_thungx.zip + path: "mame/bios/nb_thungx.zip" standalone_path: "nb_thungx.zip" required: false category: bios_zip @@ -25401,6 +26426,7 @@ files: sha1: "c5a1eab749b76aaf3e0ede2120fa99dd7f720196" - name: nb_thungx16.zip + path: "mame/bios/nb_thungx16.zip" standalone_path: "nb_thungx16.zip" required: false category: bios_zip @@ -25415,6 +26441,7 @@ files: sha1: "ea008fa93f56807f48d9535f70efebdf3def2609" - name: nb_vikbw.zip + path: "mame/bios/nb_vikbw.zip" standalone_path: "nb_vikbw.zip" required: false category: bios_zip @@ -25432,6 +26459,7 @@ files: sha1: "d08349edfc82a0bd5ea848e053e1712092308f74" - name: nb_wkstn.zip + path: "mame/bios/nb_wkstn.zip" standalone_path: "nb_wkstn.zip" required: false category: bios_zip @@ -25449,6 +26477,7 @@ files: sha1: "697412843cfd56be2b382f8952ef3f5a8323066a" - name: nb_wspt.zip + path: "mame/bios/nb_wspt.zip" standalone_path: "nb_wspt.zip" required: false category: bios_zip @@ -25466,6 +26495,7 @@ files: sha1: "ce2bf2374bb994c17962dba8f3d11bc1260e2644" - name: ncr53c825_pci.zip + path: "mame/bios/ncr53c825_pci.zip" standalone_path: "ncr53c825_pci.zip" required: false category: bios_zip @@ -25484,6 +26514,7 @@ files: sha1: "ed22a726976fdc34db6176a1384609f93d50f27a" - name: neon250.zip + path: "mame/bios/neon250.zip" standalone_path: "neon250.zip" required: false category: bios_zip @@ -25500,6 +26531,7 @@ files: sha1: "1ddda1494d5b32148e2c9e7a6557f00ee9cffea6" - name: nes_rob.zip + path: "mame/bios/nes_rob.zip" standalone_path: "nes_rob.zip" required: false category: bios_zip @@ -25515,6 +26547,7 @@ files: sha1: "a87e2f0f5e454c093d1352ac368aa9e82e9f6790" - name: newbrain_eim.zip + path: "mame/bios/newbrain_eim.zip" standalone_path: "newbrain_eim.zip" required: false category: bios_zip @@ -25541,6 +26574,7 @@ files: sha1: "f90db4f8318777313a862b3d5bab83c2fd260010" - name: newbrain_fdc.zip + path: "mame/bios/newbrain_fdc.zip" standalone_path: "newbrain_fdc.zip" required: false category: bios_zip @@ -25565,6 +26599,7 @@ files: sha1: "c2aa1d27d4f3a24ab0c8135df746a4a44201a7f4" - name: nlq401.zip + path: "mame/bios/nlq401.zip" standalone_path: "nlq401.zip" required: false category: bios_zip @@ -25599,6 +26634,7 @@ files: sha1: "b6374abaebb8e484e573caa21b1cc87f1554c8d6" - name: nmk004.zip + path: "mame/bios/nmk004.zip" standalone_path: "nmk004.zip" required: false category: bios_zip @@ -25613,6 +26649,7 @@ files: sha1: "f55f9e6bb55bfa56f9f797518dca032aaa3f6a32" - name: nokia_crtc186.zip + path: "mame/bios/nokia_crtc186.zip" standalone_path: "nokia_crtc186.zip" required: false category: bios_zip @@ -25636,6 +26673,7 @@ files: sha1: "9810732a52ee6b8313d27462b27acc7e4d5badeb" - name: novell_dcb.zip + path: "mame/bios/novell_dcb.zip" standalone_path: "novell_dcb.zip" required: false category: bios_zip @@ -25654,6 +26692,7 @@ files: sha1: "a13c0aab46084a0805256f1d2b8b8beaccc9e253" - name: np600a3.zip + path: "mame/bios/np600a3.zip" standalone_path: "np600a3.zip" required: false category: bios_zip @@ -25676,6 +26715,7 @@ files: sha1: "520773e235a826438b025381cd3861df86d4965d" - name: nss_tvinterface.zip + path: "mame/bios/nss_tvinterface.zip" standalone_path: "nss_tvinterface.zip" required: false category: bios_zip @@ -25722,6 +26762,7 @@ files: sha1: "b20d7856e4739bafcd66434adf9881824f8a611b" - name: omniwave.zip + path: "mame/bios/omniwave.zip" standalone_path: "omniwave.zip" required: false category: bios_zip @@ -25736,6 +26777,7 @@ files: sha1: "1e894c0345eaf0ea713f36a75b065f7ee419c63c" - name: omti8621isa.zip + path: "mame/bios/omti8621isa.zip" standalone_path: "omti8621isa.zip" required: false category: bios_zip @@ -25758,6 +26800,7 @@ files: sha1: "4f382dbb0ca4873c44afd48c5bffb50b9c89e7dc" - name: oric_jasmin.zip + path: "mame/bios/oric_jasmin.zip" standalone_path: "oric_jasmin.zip" required: false category: bios_zip @@ -25773,6 +26816,7 @@ files: sha1: "70e59b8abd67092f050462abc6cb5271e4c15f01" - name: oric_microdisc.zip + path: "mame/bios/oric_microdisc.zip" standalone_path: "oric_microdisc.zip" required: false category: bios_zip @@ -25788,6 +26832,7 @@ files: sha1: "0d2ef6e67322f48f4b7e08d8bbe68827e2074561" - name: osa_analyst.zip + path: "mame/bios/osa_analyst.zip" standalone_path: "osa_analyst.zip" required: false category: bios_zip @@ -25854,6 +26899,7 @@ files: sha1: "d336cb2096780b4d3bcceda0d2ed1246e780cd8d" - name: osa_bforce.zip + path: "mame/bios/osa_bforce.zip" standalone_path: "osa_bforce.zip" required: false category: bios_zip @@ -25869,6 +26915,7 @@ files: sha1: "7baa809ffc09117a27bdeede655f92bc3a6d1626" - name: osa_maestro.zip + path: "mame/bios/osa_maestro.zip" standalone_path: "osa_maestro.zip" required: false category: bios_zip @@ -25950,6 +26997,7 @@ files: sha1: "d336cb2096780b4d3bcceda0d2ed1246e780cd8d" - name: osa_maestroa.zip + path: "mame/bios/osa_maestroa.zip" standalone_path: "osa_maestroa.zip" required: false category: bios_zip @@ -25971,6 +27019,7 @@ files: sha1: "ef81b9a0dcfbd8427025cfe9bf738d42a7a1139a" - name: osa_sparc.zip + path: "mame/bios/osa_sparc.zip" standalone_path: "osa_sparc.zip" required: false category: bios_zip @@ -26030,6 +27079,7 @@ files: sha1: "44b3394e0586c126ee95129c65e6692ffc01fa8e" - name: oti64111_pci.zip + path: "mame/bios/oti64111_pci.zip" standalone_path: "oti64111_pci.zip" required: false category: bios_zip @@ -26048,6 +27098,7 @@ files: sha1: "16826d93bc2a09d91b52cca3f72447501daee2d2" - name: p1_fdc.zip + path: "mame/bios/p1_fdc.zip" standalone_path: "p1_fdc.zip" required: false category: bios_zip @@ -26079,6 +27130,7 @@ files: sha1: "b188ba856bd28e4964a88feb0b0b2ba7eb320efc" - name: p1_hdc.zip + path: "mame/bios/p1_hdc.zip" standalone_path: "p1_hdc.zip" required: false category: bios_zip @@ -26110,6 +27162,7 @@ files: sha1: "5cf2ae0ec1fa3edb3fe882c805da0bbc3ac21792" - name: p1_rom.zip + path: "mame/bios/p1_rom.zip" standalone_path: "p1_rom.zip" required: false category: bios_zip @@ -26135,6 +27188,7 @@ files: sha1: "f2d1a6c90e4708bcc56186b2fb906fa852667084" - name: p72.zip + path: "mame/bios/p72.zip" standalone_path: "p72.zip" required: false category: bios_zip @@ -26168,6 +27222,7 @@ files: sha1: "10430f1d3b73ad413d77053515d9d53831a1341b" - name: pa7246.zip + path: "mame/bios/pa7246.zip" standalone_path: "pa7246.zip" required: false category: bios_zip @@ -26183,6 +27238,7 @@ files: sha1: "5c21cf1f241ef1fa0b41009ea41e81771729785f" - name: partner_gdp.zip + path: "mame/bios/partner_gdp.zip" standalone_path: "partner_gdp.zip" required: false category: bios_zip @@ -26198,6 +27254,7 @@ files: sha1: "7c7c2d855fdfb90c86ed47c1b33c354c922ed4d0" - name: pc1512kb.zip + path: "mame/bios/pc1512kb.zip" standalone_path: "pc1512kb.zip" required: false category: bios_zip @@ -26213,6 +27270,7 @@ files: sha1: "4422c6475596c3881c11b6a6266811c336d55d19" - name: pc1640_iga.zip + path: "mame/bios/pc1640_iga.zip" standalone_path: "pc1640_iga.zip" required: false category: bios_zip @@ -26227,6 +27285,7 @@ files: sha1: "98302006ee38a17c09bd75504cc18c0649174e33" - name: pc6022.zip + path: "mame/bios/pc6022.zip" standalone_path: "pc6022.zip" required: false category: bios_zip @@ -26261,6 +27320,7 @@ files: sha1: "fab85e88566ffa10923dec3a1a6b0d8346bc69ec" - name: pc80s31.zip + path: "mame/bios/pc80s31.zip" standalone_path: "pc80s31.zip" required: false category: bios_zip @@ -26284,6 +27344,7 @@ files: sha1: "80da2dee49d4307f00895a129a5cfeff00cf5321" - name: pc80s31k.zip + path: "mame/bios/pc80s31k.zip" standalone_path: "pc80s31k.zip" required: false category: bios_zip @@ -26305,6 +27366,7 @@ files: sha1: "1492116f15c426f9796dc2bb6fcccf2656c0ca75" - name: pc88va2_fd_if.zip + path: "mame/bios/pc88va2_fd_if.zip" standalone_path: "pc88va2_fd_if.zip" required: false category: bios_zip @@ -26319,6 +27381,7 @@ files: sha1: "a9375aa480f85e1422a0e1385acb0ea170c5c2e0" - name: pc9801_14.zip + path: "mame/bios/pc9801_14.zip" standalone_path: "pc9801_14.zip" required: false category: bios_zip @@ -26338,6 +27401,7 @@ files: sha1: "5b014c5de1b8e41a412cafd61d7e9d18abdeb6be" - name: pc9801_26.zip + path: "mame/bios/pc9801_26.zip" standalone_path: "pc9801_26.zip" required: false category: bios_zip @@ -26370,6 +27434,7 @@ files: bad_dump: true - name: pc9801_27.zip + path: "mame/bios/pc9801_27.zip" standalone_path: "pc9801_27.zip" required: false category: bios_zip @@ -26385,6 +27450,7 @@ files: sha1: "b607707d74b5a7d3ba211825de31a8f32aec8146" - name: pc9801_55l.zip + path: "mame/bios/pc9801_55l.zip" standalone_path: "pc9801_55l.zip" required: false category: bios_zip @@ -26404,6 +27470,7 @@ files: sha1: "182bb45ba0da7a4f9113e268e04ffca8403cf164" - name: pc9801_55u.zip + path: "mame/bios/pc9801_55u.zip" standalone_path: "pc9801_55u.zip" required: false category: bios_zip @@ -26423,6 +27490,7 @@ files: sha1: "7781dab492df889148e070a7da7ead207e18ed04" - name: pc9801_86.zip + path: "mame/bios/pc9801_86.zip" standalone_path: "pc9801_86.zip" required: false category: bios_zip @@ -26446,6 +27514,7 @@ files: bad_dump: true - name: pc98_fdd_2dd.zip + path: "mame/bios/pc98_fdd_2dd.zip" standalone_path: "pc98_fdd_2dd.zip" required: false category: bios_zip @@ -26465,6 +27534,7 @@ files: sha1: "4160a6db096dbeff18e50cbee98f5d5c1a29e2d1" - name: pc98_fdd_2hd.zip + path: "mame/bios/pc98_fdd_2hd.zip" standalone_path: "pc98_fdd_2hd.zip" required: false category: bios_zip @@ -26481,6 +27551,7 @@ files: bad_dump: true - name: pc98_otomichan_kai.zip + path: "mame/bios/pc98_otomichan_kai.zip" standalone_path: "pc98_otomichan_kai.zip" required: false category: bios_zip @@ -26502,6 +27573,7 @@ files: bad_dump: true - name: pcd_kbd.zip + path: "mame/bios/pcd_kbd.zip" standalone_path: "pcd_kbd.zip" required: false category: bios_zip @@ -26517,6 +27589,7 @@ files: sha1: "3d6140764d3d043428c941826370ebf1597c63bd" - name: pcd_video.zip + path: "mame/bios/pcd_video.zip" standalone_path: "pcd_video.zip" required: false category: bios_zip @@ -26531,6 +27604,7 @@ files: sha1: "98b9cd0f38c51b4988a3aed0efcf004bedd115ff" - name: pcx_video.zip + path: "mame/bios/pcx_video.zip" standalone_path: "pcx_video.zip" required: false category: bios_zip @@ -26553,6 +27627,7 @@ files: sha1: "145a6648d75c1dc4788f9bc7790281ef7e8f8426" - name: pd32.zip + path: "mame/bios/pd32.zip" standalone_path: "pd32.zip" required: false category: bios_zip @@ -26575,6 +27650,7 @@ files: sha1: "6a8b0e6cd27fd3a7d7ca870790c6793edf9de083" - name: pd3_30hr.zip + path: "mame/bios/pd3_30hr.zip" standalone_path: "pd3_30hr.zip" required: false category: bios_zip @@ -26592,6 +27668,7 @@ files: sha1: "be34c8604b8a1ae9c9f3b0b90faba9a1a64a5855" - name: pd3_30hrint.zip + path: "mame/bios/pd3_30hrint.zip" standalone_path: "pd3_30hrint.zip" required: false category: bios_zip @@ -26607,6 +27684,7 @@ files: sha1: "be34c8604b8a1ae9c9f3b0b90faba9a1a64a5855" - name: pd3_c264.zip + path: "mame/bios/pd3_c264.zip" standalone_path: "pd3_c264.zip" required: false category: bios_zip @@ -26624,6 +27702,7 @@ files: sha1: "0584deb38b402718f2abef456b0035b34fddb473" - name: pd3_lviw.zip + path: "mame/bios/pd3_lviw.zip" standalone_path: "pd3_lviw.zip" required: false category: bios_zip @@ -26641,6 +27720,7 @@ files: sha1: "1e58593b1a8720193d1651b0d8a0d43e4e47563d" - name: pd3_mclr.zip + path: "mame/bios/pd3_mclr.zip" standalone_path: "pd3_mclr.zip" required: false category: bios_zip @@ -26658,6 +27738,7 @@ files: sha1: "9141eb1a0e5061e0409d65a89b4eaeb119ee4ffb" - name: pd3_mclrint.zip + path: "mame/bios/pd3_mclrint.zip" standalone_path: "pd3_mclrint.zip" required: false category: bios_zip @@ -26673,6 +27754,7 @@ files: sha1: "9141eb1a0e5061e0409d65a89b4eaeb119ee4ffb" - name: pd3_pc16.zip + path: "mame/bios/pd3_pc16.zip" standalone_path: "pd3_pc16.zip" required: false category: bios_zip @@ -26690,6 +27772,7 @@ files: sha1: "e41ecc7d12fc13bc74f9223ca02920e8a7eb072b" - name: pd3_pcs8.zip + path: "mame/bios/pd3_pcs8.zip" standalone_path: "pd3_pcs8.zip" required: false category: bios_zip @@ -26705,6 +27788,7 @@ files: sha1: "ef2d7ad3309a0df16ec392a82110118830d276b5" - name: pdc20262.zip + path: "mame/bios/pdc20262.zip" standalone_path: "pdc20262.zip" required: false category: bios_zip @@ -26728,6 +27812,7 @@ files: sha1: "ace4872c6060e9dd8458540c0f3193d1a9b4321a" - name: pdc20268.zip + path: "mame/bios/pdc20268.zip" standalone_path: "pdc20268.zip" required: false category: bios_zip @@ -26746,6 +27831,7 @@ files: sha1: "7303819fee09922db5fd0d9632b0e1734cb70fb5" - name: pds30_emac.zip + path: "mame/bios/pds30_emac.zip" standalone_path: "pds30_emac.zip" required: false category: bios_zip @@ -26763,6 +27849,7 @@ files: sha1: "65a8e87180a793cd54d30930cc030b95723369f1" - name: pds_hyper.zip + path: "mame/bios/pds_hyper.zip" standalone_path: "pds_hyper.zip" required: false category: bios_zip @@ -26781,6 +27868,7 @@ files: sha1: "4ebe1ead72064c470b7262c14e7e6887643816bf" - name: pds_sefp.zip + path: "mame/bios/pds_sefp.zip" standalone_path: "pds_sefp.zip" required: false category: bios_zip @@ -26802,6 +27890,7 @@ files: sha1: "4673d9f341766c49ff1264b7819916e28a20518f" - name: pdslc_macconlc.zip + path: "mame/bios/pdslc_macconlc.zip" standalone_path: "pdslc_macconlc.zip" required: false category: bios_zip @@ -26819,6 +27908,7 @@ files: sha1: "317255bcb552ef43f43f85109706ed860baaf6dc" - name: pencil2_coleco.zip + path: "mame/bios/pencil2_coleco.zip" standalone_path: "pencil2_coleco.zip" required: false category: bios_zip @@ -26834,6 +27924,7 @@ files: sha1: "ca889d41ea41a781edde7eb004ab530043fbc1a7" - name: permedia2.zip + path: "mame/bios/permedia2.zip" standalone_path: "permedia2.zip" required: false category: bios_zip @@ -26869,6 +27960,7 @@ files: sha1: "9f02e4d1a64c42e4a17df8428d8cc9a72e78e0d5" - name: pet_superpet.zip + path: "mame/bios/pet_superpet.zip" standalone_path: "pet_superpet.zip" required: false category: bios_zip @@ -26903,6 +27995,7 @@ files: sha1: "9b4a5134d20345171e7303445f87c4e0b9addc96" - name: pg200.zip + path: "mame/bios/pg200.zip" standalone_path: "pg200.zip" required: false category: bios_zip @@ -26918,6 +28011,7 @@ files: sha1: "145e12e5cf22b6db4958651a04d892f4a4215bb1" - name: plg100_vl.zip + path: "mame/bios/plg100_vl.zip" standalone_path: "plg100_vl.zip" required: false category: bios_zip @@ -26932,6 +28026,7 @@ files: sha1: "13d54c33a4708c77de2dc1e02210da107add6ce6" - name: plg150_ap.zip + path: "mame/bios/plg150_ap.zip" standalone_path: "plg150_ap.zip" required: false category: bios_zip @@ -26954,6 +28049,7 @@ files: sha1: "c0b5dfb1fbb5a3ddd33e6303039fbc197478abd2" - name: polyvti.zip + path: "mame/bios/polyvti.zip" standalone_path: "polyvti.zip" required: false category: bios_zip @@ -26969,6 +28065,7 @@ files: sha1: "7b9fee0c8ef2605b85d12b6d9fe8feb82418c63a" - name: pr8210.zip + path: "mame/bios/pr8210.zip" standalone_path: "pr8210.zip" required: false category: bios_zip @@ -26983,6 +28080,7 @@ files: sha1: "b514326ca1f52d6d89056868f9d17eabd4e3f31d" - name: prav8ckb.zip + path: "mame/bios/prav8ckb.zip" standalone_path: "prav8ckb.zip" required: false category: bios_zip @@ -26998,6 +28096,7 @@ files: sha1: "f4bb44507889fd06d9e952aeb6c44be66ec6f8e9" - name: premier_fdc.zip + path: "mame/bios/premier_fdc.zip" standalone_path: "premier_fdc.zip" required: false category: bios_zip @@ -27012,6 +28111,7 @@ files: sha1: "eb686ce6afe63e4d4011b333a882ca812c69307f" - name: profighterq.zip + path: "mame/bios/profighterq.zip" standalone_path: "profighterq.zip" required: false category: bios_zip @@ -27063,6 +28163,7 @@ files: sha1: "d9c0a7a2c466fa1fcc1680ee5dc3777714c05fe5" - name: profighterqa.zip + path: "mame/bios/profighterqa.zip" standalone_path: "profighterqa.zip" required: false category: bios_zip @@ -27118,6 +28219,7 @@ files: sha1: "bdf291d2e3601d7b48c348b1d99b8872b1b4fedd" - name: profighterqb.zip + path: "mame/bios/profighterqb.zip" standalone_path: "profighterqb.zip" required: false category: bios_zip @@ -27161,6 +28263,7 @@ files: sha1: "d83dc1b50771f5d8b68293c85b0b94e257521bd3" - name: profighterx.zip + path: "mame/bios/profighterx.zip" standalone_path: "profighterx.zip" required: false category: bios_zip @@ -27212,6 +28315,7 @@ files: sha1: "51f461756668a51e4f9b800168412dab26cd5ca9" - name: promotion3210.zip + path: "mame/bios/promotion3210.zip" standalone_path: "promotion3210.zip" required: false category: bios_zip @@ -27230,6 +28334,7 @@ files: sha1: "bd43f05ae7ddb4bbf515132b72b32719b60e6950" - name: ps2_keybc.zip + path: "mame/bios/ps2_keybc.zip" standalone_path: "ps2_keybc.zip" required: false category: bios_zip @@ -27251,6 +28356,7 @@ files: sha1: "ac45a4d0f30b046ada300f1d105bcf0fb2db318a" - name: psion_3fax.zip + path: "mame/bios/psion_3fax.zip" standalone_path: "psion_3fax.zip" required: false category: bios_zip @@ -27265,6 +28371,7 @@ files: sha1: "85d6f7e3cd316be5f49e7dd25755673144fce3d7" - name: psion_3link_ser.zip + path: "mame/bios/psion_3link_ser.zip" standalone_path: "psion_3link_ser.zip" required: false category: bios_zip @@ -27280,6 +28387,7 @@ files: sha1: "11cab06779ea19f109970dfa641b89f0121bfd95" - name: psx_cd.zip + path: "mame/bios/psx_cd.zip" standalone_path: "psx_cd.zip" required: false category: bios_zip @@ -27365,6 +28473,7 @@ files: sha1: "6fe45fd6fb96b12a25a45f39b5efd0be5e3f3e86" - name: psxgboost.zip + path: "mame/bios/psxgboost.zip" standalone_path: "psxgboost.zip" required: false category: bios_zip @@ -27380,6 +28489,7 @@ files: sha1: "c20ab073f61242f37665f12199b95cfa3a83e9fc" - name: pvga1a.zip + path: "mame/bios/pvga1a.zip" standalone_path: "pvga1a.zip" required: false category: bios_zip @@ -27419,6 +28529,7 @@ files: sha1: "d53d2a9aeffc7c41199fe91bc3d6d2e4d90173c8" - name: pvga1a_jk.zip + path: "mame/bios/pvga1a_jk.zip" standalone_path: "pvga1a_jk.zip" required: false category: bios_zip @@ -27484,6 +28595,7 @@ files: sha1: "218811ae3f58002eece74c4e444309d8a2a21836" - name: px320a.zip + path: "mame/bios/px320a.zip" standalone_path: "px320a.zip" required: false category: bios_zip @@ -27528,6 +28640,7 @@ files: sha1: "5b70f32e83d8c19d2895d38d0f7e15f2eee326fd" - name: qg640.zip + path: "mame/bios/qg640.zip" standalone_path: "qg640.zip" required: false category: bios_zip @@ -27549,6 +28662,7 @@ files: sha1: "815b195c37ca1053e5cddfa1efd4764c4550f4b5" - name: ql_cumanafdi.zip + path: "mame/bios/ql_cumanafdi.zip" standalone_path: "ql_cumanafdi.zip" required: false category: bios_zip @@ -27570,6 +28684,7 @@ files: sha1: "323120cd3e1eaa38f6d0ae74367a4835a5a2a011" - name: ql_gold.zip + path: "mame/bios/ql_gold.zip" standalone_path: "ql_gold.zip" required: false category: bios_zip @@ -27590,6 +28705,7 @@ files: sha1: "e80851fc536eef2b83c611e717e563b05bba8b3d" - name: ql_kdi.zip + path: "mame/bios/ql_kdi.zip" standalone_path: "ql_kdi.zip" required: false category: bios_zip @@ -27606,6 +28722,7 @@ files: sha1: "ff8158d25864d920f3f6df259167e91c2784692c" - name: ql_mhd.zip + path: "mame/bios/ql_mhd.zip" standalone_path: "ql_mhd.zip" required: false category: bios_zip @@ -27621,6 +28738,7 @@ files: sha1: "1beb87a207ecd0f47a43ed4b1bcc81d89ac75ffc" - name: ql_mpfdi.zip + path: "mame/bios/ql_mpfdi.zip" standalone_path: "ql_mpfdi.zip" required: false category: bios_zip @@ -27637,6 +28755,7 @@ files: sha1: "f9f5e5d55f3046f63b4eae59222b81290d626e72" - name: ql_opdbm.zip + path: "mame/bios/ql_opdbm.zip" standalone_path: "ql_opdbm.zip" required: false category: bios_zip @@ -27651,6 +28770,7 @@ files: sha1: "de485e89272e3b51086967333cda9de806ba3876" - name: ql_pcmlqdi.zip + path: "mame/bios/ql_pcmlqdi.zip" standalone_path: "ql_pcmlqdi.zip" required: false category: bios_zip @@ -27667,6 +28787,7 @@ files: sha1: "d2038f0b1a62e8e65ec86660d03c25489ce40274" - name: ql_qldisc.zip + path: "mame/bios/ql_qldisc.zip" standalone_path: "ql_qldisc.zip" required: false category: bios_zip @@ -27688,6 +28809,7 @@ files: sha1: "de8c5a4257107a4a41bc94c532cbfb7c65bfb472" - name: ql_qplus4.zip + path: "mame/bios/ql_qplus4.zip" standalone_path: "ql_qplus4.zip" required: false category: bios_zip @@ -27702,6 +28824,7 @@ files: sha1: "53d6828c1b6ba052b862fd80ac8a364b0078330d" - name: ql_qubide.zip + path: "mame/bios/ql_qubide.zip" standalone_path: "ql_qubide.zip" required: false category: bios_zip @@ -27735,6 +28858,7 @@ files: sha1: "4cf0da7ff5c7a950e8e13f8ed7125fff10ddda0d" - name: ql_sdisk.zip + path: "mame/bios/ql_sdisk.zip" standalone_path: "ql_sdisk.zip" required: false category: bios_zip @@ -27749,6 +28873,7 @@ files: sha1: "bf531758145ffd083e01c1cf9c45d0e9264a3b53" - name: ql_sqboard256.zip + path: "mame/bios/ql_sqboard256.zip" standalone_path: "ql_sqboard256.zip" required: false category: bios_zip @@ -27775,6 +28900,7 @@ files: sha1: "a3a233e4f6c8450055fa537601a2a2eef143edca" - name: ql_sqboard512.zip + path: "mame/bios/ql_sqboard512.zip" standalone_path: "ql_sqboard512.zip" required: false category: bios_zip @@ -27801,6 +28927,7 @@ files: sha1: "a3a233e4f6c8450055fa537601a2a2eef143edca" - name: ql_sqmouse.zip + path: "mame/bios/ql_sqmouse.zip" standalone_path: "ql_sqmouse.zip" required: false category: bios_zip @@ -27826,6 +28953,7 @@ files: sha1: "a3a233e4f6c8450055fa537601a2a2eef143edca" - name: ql_sqmouse512.zip + path: "mame/bios/ql_sqmouse512.zip" standalone_path: "ql_sqmouse512.zip" required: false category: bios_zip @@ -27852,6 +28980,7 @@ files: sha1: "a3a233e4f6c8450055fa537601a2a2eef143edca" - name: ql_trump.zip + path: "mame/bios/ql_trump.zip" standalone_path: "ql_trump.zip" required: false category: bios_zip @@ -27887,6 +29016,7 @@ files: sha1: "de0f67408021a3b33b3916514a5f81d9c8edad93" - name: ql_trump256.zip + path: "mame/bios/ql_trump256.zip" standalone_path: "ql_trump256.zip" required: false category: bios_zip @@ -27922,6 +29052,7 @@ files: sha1: "de0f67408021a3b33b3916514a5f81d9c8edad93" - name: ql_trump512.zip + path: "mame/bios/ql_trump512.zip" standalone_path: "ql_trump512.zip" required: false category: bios_zip @@ -27957,6 +29088,7 @@ files: sha1: "de0f67408021a3b33b3916514a5f81d9c8edad93" - name: ql_trump768.zip + path: "mame/bios/ql_trump768.zip" standalone_path: "ql_trump768.zip" required: false category: bios_zip @@ -27992,6 +29124,7 @@ files: sha1: "de0f67408021a3b33b3916514a5f81d9c8edad93" - name: qsound_hle.zip + path: "mame/bios/qsound_hle.zip" standalone_path: "qsound_hle.zip" required: false category: bios_zip @@ -28009,6 +29142,7 @@ files: sha1: "555f50fe5cdf127619da7d854c03f4a244a0c501" - name: qts1.zip + path: "mame/bios/qts1.zip" standalone_path: "qts1.zip" required: false category: bios_zip @@ -28032,6 +29166,7 @@ files: sha1: "05d97009b5b8034dda520f655c73c474da97f822" - name: quadro.zip + path: "mame/bios/quadro.zip" standalone_path: "quadro.zip" required: false category: bios_zip @@ -28053,6 +29188,7 @@ files: sha1: "006b72eb2bcb549686e4e39f8ca17972435178e4" - name: qvision_wavestar.zip + path: "mame/bios/qvision_wavestar.zip" standalone_path: "qvision_wavestar.zip" required: false category: bios_zip @@ -28069,6 +29205,7 @@ files: sha1: "0b32c371cc0fe17acbd7c566e707fd6687f5e7ae" - name: qx10_keyboard_ascii.zip + path: "mame/bios/qx10_keyboard_ascii.zip" standalone_path: "qx10_keyboard_ascii.zip" required: false category: bios_zip @@ -28084,6 +29221,7 @@ files: sha1: "26b7f447acfe2c605dbe0fc98e6c777f0fa8a94d" - name: qx10_keyboard_hasci.zip + path: "mame/bios/qx10_keyboard_hasci.zip" standalone_path: "qx10_keyboard_hasci.zip" required: false category: bios_zip @@ -28099,6 +29237,7 @@ files: sha1: "26b7f447acfe2c605dbe0fc98e6c777f0fa8a94d" - name: rageiidvd.zip + path: "mame/bios/rageiidvd.zip" standalone_path: "rageiidvd.zip" required: false category: bios_zip @@ -28125,6 +29264,7 @@ files: sha1: "a068ef73d56b5fc200076283d32676b818404f1b" - name: rc2014_micro.zip + path: "mame/bios/rc2014_micro.zip" standalone_path: "rc2014_micro.zip" required: false category: bios_zip @@ -28140,6 +29280,7 @@ files: sha1: "40a030b931ebe6cca654ce056c228297f245b057" - name: rc2014_mini_cpm.zip + path: "mame/bios/rc2014_mini_cpm.zip" standalone_path: "rc2014_mini_cpm.zip" required: false category: bios_zip @@ -28155,6 +29296,7 @@ files: sha1: "c96e9ebd6ce019c264aaea156532fcf807d4c74c" - name: rc2014_pagable_rom.zip + path: "mame/bios/rc2014_pagable_rom.zip" standalone_path: "rc2014_pagable_rom.zip" required: false category: bios_zip @@ -28176,6 +29318,7 @@ files: sha1: "ff5b3873abdcbe8ab48f62a9dbdf39314b938e89" - name: rc2014_rom_ram_512k.zip + path: "mame/bios/rc2014_rom_ram_512k.zip" standalone_path: "rc2014_rom_ram_512k.zip" required: false category: bios_zip @@ -28247,6 +29390,7 @@ files: sha1: "5c642cb3113bc0a51562dc92c8b46bde414adb6c" - name: rc2014_switchable_rom.zip + path: "mame/bios/rc2014_switchable_rom.zip" standalone_path: "rc2014_switchable_rom.zip" required: false category: bios_zip @@ -28283,6 +29427,7 @@ files: sha1: "0077ab5e669da6e95ed2f66c9e759067c4236e36" - name: riva128.zip + path: "mame/bios/riva128.zip" standalone_path: "riva128.zip" required: false category: bios_zip @@ -28309,6 +29454,7 @@ files: sha1: "894c855c6d676de0d04d396f7e93a0e6cb98a4b3" - name: riva128zx.zip + path: "mame/bios/riva128zx.zip" standalone_path: "riva128zx.zip" required: false category: bios_zip @@ -28335,6 +29481,7 @@ files: sha1: "7126c4c4d20c48848defc5dd05f0d5b698948015" - name: rivatnt.zip + path: "mame/bios/rivatnt.zip" standalone_path: "rivatnt.zip" required: false category: bios_zip @@ -28366,6 +29513,7 @@ files: sha1: "602ba5812e608bb7275336e9abab4b822f7b1b98" - name: rivatnt2.zip + path: "mame/bios/rivatnt2.zip" standalone_path: "rivatnt2.zip" required: false category: bios_zip @@ -28387,6 +29535,7 @@ files: sha1: "709632adf1e156fab3af0723b73a1e6c2c39e987" - name: rivatnt2_m64.zip + path: "mame/bios/rivatnt2_m64.zip" standalone_path: "rivatnt2_m64.zip" required: false category: bios_zip @@ -28453,6 +29602,7 @@ files: sha1: "529a79296c914a2dcdd568221b9aac914869bade" - name: rivatnt2_ultra.zip + path: "mame/bios/rivatnt2_ultra.zip" standalone_path: "rivatnt2_ultra.zip" required: false category: bios_zip @@ -28469,6 +29619,7 @@ files: sha1: "733d8c3f179f89f0e238ffb95717c0fafd1053aa" - name: rm_mq2.zip + path: "mame/bios/rm_mq2.zip" standalone_path: "rm_mq2.zip" required: false category: bios_zip @@ -28484,6 +29635,7 @@ files: sha1: "ba523af357b61bbe6192727139850f36597d79f1" - name: robotron_k7070.zip + path: "mame/bios/robotron_k7070.zip" standalone_path: "robotron_k7070.zip" required: false category: bios_zip @@ -28509,6 +29661,7 @@ files: sha1: "62516f2e1cb62698445f80fd823d39a1a78a7807" - name: robotron_k7071.zip + path: "mame/bios/robotron_k7071.zip" standalone_path: "robotron_k7071.zip" required: false category: bios_zip @@ -28531,6 +29684,7 @@ files: sha1: "8428e344df95451a34ad01322e245d2357712010" - name: rolm_pdc.zip + path: "mame/bios/rolm_pdc.zip" standalone_path: "rolm_pdc.zip" required: false category: bios_zip @@ -28545,6 +29699,7 @@ files: sha1: "e1a465c2274a63e81dba7a71fc8b30f10c03baf0" - name: rolm_smioc.zip + path: "mame/bios/rolm_smioc.zip" standalone_path: "rolm_smioc.zip" required: false category: bios_zip @@ -28559,6 +29714,7 @@ files: sha1: "8ee9879033623490ce6703ba5429af2b16dbae84" - name: rt1000b.zip + path: "mame/bios/rt1000b.zip" standalone_path: "rt1000b.zip" required: false category: bios_zip @@ -28577,6 +29733,7 @@ files: sha1: "4a5b2219b9ea5bfbeefaf6b958f4095c53c0e8b4" - name: rtpc_kbd.zip + path: "mame/bios/rtpc_kbd.zip" standalone_path: "rtpc_kbd.zip" required: false category: bios_zip @@ -28591,6 +29748,7 @@ files: sha1: "d7305e978e9c047a34d2c26176ce7ac0467f1219" - name: rtpc_kls.zip + path: "mame/bios/rtpc_kls.zip" standalone_path: "rtpc_kls.zip" required: false category: bios_zip @@ -28606,6 +29764,7 @@ files: sha1: "83858109c39d5be37e49f24d1db4e2b15f38843e" - name: rx01.zip + path: "mame/bios/rx01.zip" standalone_path: "rx01.zip" required: false category: bios_zip @@ -28665,6 +29824,7 @@ files: sha1: "abf87d731213e51413c6ef3172f14353da36e791" - name: s100_am310.zip + path: "mame/bios/s100_am310.zip" standalone_path: "s100_am310.zip" required: false category: bios_zip @@ -28680,6 +29840,7 @@ files: sha1: "20716814381eb751261ee0607f3efff0d5375bd5" - name: s100_djdma.zip + path: "mame/bios/s100_djdma.zip" standalone_path: "s100_djdma.zip" required: false category: bios_zip @@ -28711,6 +29872,7 @@ files: sha1: "1e58dfb7b8a2a5bbaa6589d4018042626fd5ceaf" - name: s100_nsmdsa.zip + path: "mame/bios/s100_nsmdsa.zip" standalone_path: "s100_nsmdsa.zip" required: false category: bios_zip @@ -28726,6 +29888,7 @@ files: bad_dump: true - name: s100_nsmdsad.zip + path: "mame/bios/s100_nsmdsad.zip" standalone_path: "s100_nsmdsad.zip" required: false category: bios_zip @@ -28740,6 +29903,7 @@ files: sha1: "bf1552c4818f30473798af4f54e65e1957e0db48" - name: s100_sj2db.zip + path: "mame/bios/s100_sj2db.zip" standalone_path: "s100_sj2db.zip" required: false category: bios_zip @@ -28755,6 +29919,7 @@ files: sha1: "e4b2ae886c0dd7717e2e02ae2e202115d8ec2def" - name: s1410.zip + path: "mame/bios/s1410.zip" standalone_path: "s1410.zip" required: false category: bios_zip @@ -28781,6 +29946,7 @@ files: sha1: "bf68e99dad182bfcbb5d488aeb440cba572a6ef8" - name: s3_764.zip + path: "mame/bios/s3_764.zip" standalone_path: "s3_764.zip" required: false category: bios_zip @@ -28800,6 +29966,7 @@ files: sha1: "c77b3f11cc15679121314823588887dd547cd715" - name: s8k_cpu.zip + path: "mame/bios/s8k_cpu.zip" standalone_path: "s8k_cpu.zip" required: false category: bios_zip @@ -28875,6 +30042,7 @@ files: sha1: "c2ab2bfaf21d60f69ea7ede01a929ac46511061b" - name: s8k_cpu10.zip + path: "mame/bios/s8k_cpu10.zip" standalone_path: "s8k_cpu10.zip" required: false category: bios_zip @@ -28902,6 +30070,7 @@ files: sha1: "86569a6c8649f691acbf7d42a825bde105460f55" - name: s8k_hpcpu.zip + path: "mame/bios/s8k_hpcpu.zip" standalone_path: "s8k_hpcpu.zip" required: false category: bios_zip @@ -28920,6 +30089,7 @@ files: sha1: "bc804e09cf6905c9f0ccc502a15c98841ee4b087" - name: s97269pb.zip + path: "mame/bios/s97269pb.zip" standalone_path: "s97269pb.zip" required: false category: bios_zip @@ -28943,6 +30113,7 @@ files: sha1: "5f4de97cfe6fe39da75761e0f434de28d30f3e3b" - name: s97801_device.zip + path: "mame/bios/s97801_device.zip" standalone_path: "s97801_device.zip" required: false category: bios_zip @@ -28987,6 +30158,7 @@ files: sha1: "649abcfde9752f427ec7d1efdc013a4f01dc271c" - name: s97801_kbd.zip + path: "mame/bios/s97801_kbd.zip" standalone_path: "s97801_kbd.zip" required: false category: bios_zip @@ -29023,6 +30195,7 @@ files: sha1: "970a45b509081603e25319e1bbf0f7941f91a056" - name: s_smp.zip + path: "mame/bios/s_smp.zip" standalone_path: "s_smp.zip" required: false category: bios_zip @@ -29041,6 +30214,7 @@ files: sha1: "97e352553e94242ae823547cd853eecda55c20f0" - name: saa5051.zip + path: "mame/bios/saa5051.zip" standalone_path: "saa5051.zip" required: false category: bios_zip @@ -29056,6 +30230,7 @@ files: bad_dump: true - name: saa5052.zip + path: "mame/bios/saa5052.zip" standalone_path: "saa5052.zip" required: false category: bios_zip @@ -29072,6 +30247,7 @@ files: bad_dump: true - name: saa5053.zip + path: "mame/bios/saa5053.zip" standalone_path: "saa5053.zip" required: false category: bios_zip @@ -29087,6 +30263,7 @@ files: bad_dump: true - name: saa5054.zip + path: "mame/bios/saa5054.zip" standalone_path: "saa5054.zip" required: false category: bios_zip @@ -29102,6 +30279,7 @@ files: bad_dump: true - name: saa5055.zip + path: "mame/bios/saa5055.zip" standalone_path: "saa5055.zip" required: false category: bios_zip @@ -29118,6 +30296,7 @@ files: bad_dump: true - name: saa5056.zip + path: "mame/bios/saa5056.zip" standalone_path: "saa5056.zip" required: false category: bios_zip @@ -29133,6 +30312,7 @@ files: bad_dump: true - name: saa5057.zip + path: "mame/bios/saa5057.zip" standalone_path: "saa5057.zip" required: false category: bios_zip @@ -29148,6 +30328,7 @@ files: bad_dump: true - name: saa5240a.zip + path: "mame/bios/saa5240a.zip" standalone_path: "saa5240a.zip" required: false category: bios_zip @@ -29163,6 +30344,7 @@ files: bad_dump: true - name: saa5240b.zip + path: "mame/bios/saa5240b.zip" standalone_path: "saa5240b.zip" required: false category: bios_zip @@ -29178,6 +30360,7 @@ files: bad_dump: true - name: saa5243e.zip + path: "mame/bios/saa5243e.zip" standalone_path: "saa5243e.zip" required: false category: bios_zip @@ -29192,6 +30375,7 @@ files: bad_dump: true - name: sad8852.zip + path: "mame/bios/sad8852.zip" standalone_path: "sad8852.zip" required: false category: bios_zip @@ -29210,6 +30394,7 @@ files: sha1: "7a3d43e6b1f6fcd4402c54aaacf169ac74141cd2" - name: satcdb.zip + path: "mame/bios/satcdb.zip" standalone_path: "satcdb.zip" required: false category: bios_zip @@ -29236,6 +30421,7 @@ files: sha1: "f4f6c2aac68c352814d396ae41f81f54ad228e68" - name: sb300p.zip + path: "mame/bios/sb300p.zip" standalone_path: "sb300p.zip" required: false category: bios_zip @@ -29251,6 +30437,7 @@ files: sha1: "1c6006fb8cb555eff0cb7c2783c776d05c6797f8" - name: sbus_hme.zip + path: "mame/bios/sbus_hme.zip" standalone_path: "sbus_hme.zip" required: false category: bios_zip @@ -29266,6 +30453,7 @@ files: sha1: "b54bb0f01c45accdbc58c3a86f8de34949374880" - name: sbus_sunpc.zip + path: "mame/bios/sbus_sunpc.zip" standalone_path: "sbus_sunpc.zip" required: false category: bios_zip @@ -29281,6 +30469,7 @@ files: sha1: "21c4c02bc5a3a0494301f19c54ba0e207568fb42" - name: sc119.zip + path: "mame/bios/sc119.zip" standalone_path: "sc119.zip" required: false category: bios_zip @@ -29307,6 +30496,7 @@ files: sha1: "cf4ad058931f0297fd2f8f81d15eb83ecbd29376" - name: scorpion_ic.zip + path: "mame/bios/scorpion_ic.zip" standalone_path: "scorpion_ic.zip" required: false category: bios_zip @@ -29344,6 +30534,7 @@ files: sha1: "91c273c94cd0dbca655e192dd01ac6dc3a4f60a8" - name: sdtandy_fdc.zip + path: "mame/bios/sdtandy_fdc.zip" standalone_path: "sdtandy_fdc.zip" required: false category: bios_zip @@ -29358,6 +30549,7 @@ files: sha1: "ca03942118f2deab2f6c8a89b8a4f41f2d0b94f1" - name: sed1200da.zip + path: "mame/bios/sed1200da.zip" standalone_path: "sed1200da.zip" required: false category: bios_zip @@ -29373,6 +30565,7 @@ files: sha1: "086406eb74e9ed97b309d2a4bdedc567626e9a98" - name: sed1200db.zip + path: "mame/bios/sed1200db.zip" standalone_path: "sed1200db.zip" required: false category: bios_zip @@ -29388,6 +30581,7 @@ files: sha1: "c8c856f1357286a2c8c806af81724a828345357e" - name: sed1200fa.zip + path: "mame/bios/sed1200fa.zip" standalone_path: "sed1200fa.zip" required: false category: bios_zip @@ -29402,6 +30596,7 @@ files: sha1: "086406eb74e9ed97b309d2a4bdedc567626e9a98" - name: sed1200fb.zip + path: "mame/bios/sed1200fb.zip" standalone_path: "sed1200fb.zip" required: false category: bios_zip @@ -29416,6 +30611,7 @@ files: sha1: "c8c856f1357286a2c8c806af81724a828345357e" - name: sed1278.zip + path: "mame/bios/sed1278.zip" standalone_path: "sed1278.zip" required: false category: bios_zip @@ -29439,6 +30635,7 @@ files: bad_dump: true - name: sega837_14438.zip + path: "mame/bios/sega837_14438.zip" standalone_path: "sega837_14438.zip" required: false category: bios_zip @@ -29458,6 +30655,7 @@ files: sha1: "ea1a32c4da1ed9745300bcdd7964a7c0964e3221" - name: sega_sp400.zip + path: "mame/bios/sega_sp400.zip" standalone_path: "sega_sp400.zip" required: false category: bios_zip @@ -29477,6 +30675,7 @@ files: sha1: "65016f3b022af30cc6b084af1e43b29168721a60" - name: segabill.zip + path: "mame/bios/segabill.zip" standalone_path: "segabill.zip" required: false category: bios_zip @@ -29493,6 +30692,7 @@ files: sha1: "edf5ade72d9fa2f4d5f83f9f89e6cecfadd77f56" - name: segadimm.zip + path: "mame/bios/segadimm.zip" standalone_path: "segadimm.zip" required: false category: bios_zip @@ -29580,6 +30780,7 @@ files: sha1: "1e39983779a62ebc6801ec6f2a5138717a7a5259" - name: seganetw.zip + path: "mame/bios/seganetw.zip" standalone_path: "seganetw.zip" required: false category: bios_zip @@ -29594,6 +30795,7 @@ files: sha1: "45d94d0c39be1cb3db9fab6610a88a550adda4e9" - name: sente6vb.zip + path: "mame/bios/sente6vb.zip" standalone_path: "sente6vb.zip" required: false category: bios_zip @@ -29609,6 +30811,7 @@ files: sha1: "f0c447adc5b67917851a9df978df851247e75c43" - name: serad.zip + path: "mame/bios/serad.zip" standalone_path: "serad.zip" required: false category: bios_zip @@ -29624,6 +30827,7 @@ files: sha1: "6a1c2d351d5552d54d835b7726b3f9b921605d0e" - name: sfd1001.zip + path: "mame/bios/sfd1001.zip" standalone_path: "sfd1001.zip" required: false category: bios_zip @@ -29654,6 +30858,7 @@ files: sha1: "3b954eb34f7ea088eed1d33ebc6d6e83a3e9be15" - name: sgi_gm1.zip + path: "mame/bios/sgi_gm1.zip" standalone_path: "sgi_gm1.zip" required: false category: bios_zip @@ -29668,6 +30873,7 @@ files: sha1: "ad22a07d0a57b012e708b38216b7f3e600e12597" - name: sgi_ip2.zip + path: "mame/bios/sgi_ip2.zip" standalone_path: "sgi_ip2.zip" required: false category: bios_zip @@ -29698,6 +30904,7 @@ files: sha1: "32907201621ef128c4150721570085c554df918e" - name: sgi_ip4.zip + path: "mame/bios/sgi_ip4.zip" standalone_path: "sgi_ip4.zip" required: false category: bios_zip @@ -29752,6 +30959,7 @@ files: sha1: "aceb115a2f4d2e3a229b2c2c3b20314674113705" - name: sgi_kbd.zip + path: "mame/bios/sgi_kbd.zip" standalone_path: "sgi_kbd.zip" required: false category: bios_zip @@ -29766,6 +30974,7 @@ files: sha1: "a000a2b29e8629c686b29a5af22beedcc94710dc" - name: sgi_pm1.zip + path: "mame/bios/sgi_pm1.zip" standalone_path: "sgi_pm1.zip" required: false category: bios_zip @@ -29796,6 +31005,7 @@ files: sha1: "ec2827ec430af78446ec1c11a99742ae3be59521" - name: sgi_pm2.zip + path: "mame/bios/sgi_pm2.zip" standalone_path: "sgi_pm2.zip" required: false category: bios_zip @@ -29827,6 +31037,7 @@ files: sha1: "1cab5ce1c7df43ebeffab04b388d2e07c9853f8f" - name: side116.zip + path: "mame/bios/side116.zip" standalone_path: "side116.zip" required: false category: bios_zip @@ -29845,6 +31056,7 @@ files: sha1: "a5b130a6d17c972d6c378cb2cd8113a4039631fe" - name: simutrek.zip + path: "mame/bios/simutrek.zip" standalone_path: "simutrek.zip" required: false category: bios_zip @@ -29864,6 +31076,7 @@ files: sha1: "1eb3467f1c41553375b2c21952cd593b167f5416" - name: sis630_gui.zip + path: "mame/bios/sis630_gui.zip" standalone_path: "sis630_gui.zip" required: false category: bios_zip @@ -29886,6 +31099,7 @@ files: bad_dump: true - name: sis6326_agp.zip + path: "mame/bios/sis6326_agp.zip" standalone_path: "sis6326_agp.zip" required: false category: bios_zip @@ -29911,6 +31125,7 @@ files: sha1: "332ab9499142e8f7a235afe046e8e8d21a28580d" - name: sis6326_dvd.zip + path: "mame/bios/sis6326_dvd.zip" standalone_path: "sis6326_dvd.zip" required: false category: bios_zip @@ -29926,6 +31141,7 @@ files: sha1: "7566f1483c3e963762ef19b4deeb8fc24ccd217f" - name: sis6326_pci.zip + path: "mame/bios/sis6326_pci.zip" standalone_path: "sis6326_pci.zip" required: false category: bios_zip @@ -29953,6 +31169,7 @@ files: sha1: "7ce995ec0d8b9ac4f0f40ccd0a61d7fc209d313f" - name: sis900_eth.zip + path: "mame/bios/sis900_eth.zip" standalone_path: "sis900_eth.zip" required: false category: bios_zip @@ -29969,6 +31186,7 @@ files: bad_dump: true - name: smoc501.zip + path: "mame/bios/smoc501.zip" standalone_path: "smoc501.zip" required: false category: bios_zip @@ -29993,6 +31211,7 @@ files: sha1: "96c73a3a2ecdc8c903e920f2afba5b4edd5cdba6" - name: sms_diypaddle.zip + path: "mame/bios/sms_diypaddle.zip" standalone_path: "sms_diypaddle.zip" required: false category: bios_zip @@ -30010,6 +31229,7 @@ files: sha1: "dd9e20f2447c43dbe29a49bb3a4fd8049775acd3" - name: smvme2000.zip + path: "mame/bios/smvme2000.zip" standalone_path: "smvme2000.zip" required: false category: bios_zip @@ -30041,6 +31261,7 @@ files: sha1: "78427f7b9a6f676945c2cdb90632a16a619c83f9" - name: sn74s262.zip + path: "mame/bios/sn74s262.zip" standalone_path: "sn74s262.zip" required: false category: bios_zip @@ -30057,6 +31278,7 @@ files: bad_dump: true - name: sn74s263.zip + path: "mame/bios/sn74s263.zip" standalone_path: "sn74s263.zip" required: false category: bios_zip @@ -30073,6 +31295,7 @@ files: bad_dump: true - name: sns_dsp1bleg.zip + path: "mame/bios/sns_dsp1bleg.zip" standalone_path: "sns_dsp1bleg.zip" required: false category: bios_zip @@ -30087,6 +31310,7 @@ files: sha1: "3a218b0e4572a8eba6d0121b17fdac9529609220" - name: sns_dsp1leg.zip + path: "mame/bios/sns_dsp1leg.zip" standalone_path: "sns_dsp1leg.zip" required: false category: bios_zip @@ -30101,6 +31325,7 @@ files: sha1: "0a03ccb1fd2bea91151c745a4d1f217ae784f889" - name: sns_dsp1leg_hi.zip + path: "mame/bios/sns_dsp1leg_hi.zip" standalone_path: "sns_dsp1leg_hi.zip" required: false category: bios_zip @@ -30115,6 +31340,7 @@ files: sha1: "0a03ccb1fd2bea91151c745a4d1f217ae784f889" - name: sns_dsp2leg.zip + path: "mame/bios/sns_dsp2leg.zip" standalone_path: "sns_dsp2leg.zip" required: false category: bios_zip @@ -30129,6 +31355,7 @@ files: sha1: "06dd9fcb118d18f6bbe234e013cb8780e06d6e63" - name: sns_dsp3leg.zip + path: "mame/bios/sns_dsp3leg.zip" standalone_path: "sns_dsp3leg.zip" required: false category: bios_zip @@ -30143,6 +31370,7 @@ files: sha1: "1b133741fad810eb7320c21ecfdd427d25a46da1" - name: sns_dsp4leg.zip + path: "mame/bios/sns_dsp4leg.zip" standalone_path: "sns_dsp4leg.zip" required: false category: bios_zip @@ -30157,6 +31385,7 @@ files: sha1: "76fd25f7dc26c3b3f7868a3aa78c7684068713e5" - name: sns_rom_sgb.zip + path: "mame/bios/sns_rom_sgb.zip" standalone_path: "sns_rom_sgb.zip" required: false category: bios_zip @@ -30171,6 +31400,7 @@ files: sha1: "aa2f50a77dfb4823da96ba99309085a3c6278515" - name: sns_rom_sgb2.zip + path: "mame/bios/sns_rom_sgb2.zip" standalone_path: "sns_rom_sgb2.zip" required: false category: bios_zip @@ -30185,6 +31415,7 @@ files: sha1: "93407ea10d2f30ab96a314d8eca44fe160aea734" - name: sns_seta10leg.zip + path: "mame/bios/sns_seta10leg.zip" standalone_path: "sns_seta10leg.zip" required: false category: bios_zip @@ -30199,6 +31430,7 @@ files: sha1: "cc1984e989cb94e3dcbb5f99e085b5414e18a017" - name: sns_seta11leg.zip + path: "mame/bios/sns_seta11leg.zip" standalone_path: "sns_seta11leg.zip" required: false category: bios_zip @@ -30213,6 +31445,7 @@ files: sha1: "1375b8c1efc8cae4962b57dfe22f6b78e1ddacc8" - name: softcard3.zip + path: "mame/bios/softcard3.zip" standalone_path: "softcard3.zip" required: false category: bios_zip @@ -30228,6 +31461,7 @@ files: sha1: "aff45dd8850641b4616b61750c104e7ee45a99a4" - name: sound_orchestra.zip + path: "mame/bios/sound_orchestra.zip" standalone_path: "sound_orchestra.zip" required: false category: bios_zip @@ -30249,6 +31483,7 @@ files: bad_dump: true - name: spc1000_fdd_exp.zip + path: "mame/bios/spc1000_fdd_exp.zip" standalone_path: "spc1000_fdd_exp.zip" required: false category: bios_zip @@ -30264,6 +31499,7 @@ files: sha1: "8e9d8f63a7fb87af417e95603e71cf537a6e83f1" - name: speakboard.zip + path: "mame/bios/speakboard.zip" standalone_path: "speakboard.zip" required: false category: bios_zip @@ -30283,6 +31519,7 @@ files: sha1: "3def9ee386ab6c31436888261bded042cd64a0eb" - name: spectred_kbd.zip + path: "mame/bios/spectred_kbd.zip" standalone_path: "spectred_kbd.zip" required: false category: bios_zip @@ -30298,6 +31535,7 @@ files: sha1: "136c2b562999a6e340fe0e9a3776cea8c2e3647e" - name: spectrum_beta128.zip + path: "mame/bios/spectrum_beta128.zip" standalone_path: "spectrum_beta128.zip" required: false category: bios_zip @@ -30329,6 +31567,7 @@ files: sha1: "745e9caf576e64a5386ad845256d28593d34cc40" - name: spectrum_betacbi.zip + path: "mame/bios/spectrum_betacbi.zip" standalone_path: "spectrum_betacbi.zip" required: false category: bios_zip @@ -30365,6 +31604,7 @@ files: sha1: "3e5f7d43218b5bd2a6e2aa28220c77cb651f5daa" - name: spectrum_betaclone.zip + path: "mame/bios/spectrum_betaclone.zip" standalone_path: "spectrum_betaclone.zip" required: false category: bios_zip @@ -30406,6 +31646,7 @@ files: sha1: "cdbd0ac2262ede3852998174f88ae333419a570f" - name: spectrum_betaplus.zip + path: "mame/bios/spectrum_betaplus.zip" standalone_path: "spectrum_betaplus.zip" required: false category: bios_zip @@ -30452,6 +31693,7 @@ files: sha1: "bf8cee39eb4b2a09a3f07db4cb8e7952bce4d3dd" - name: spectrum_betav2.zip + path: "mame/bios/spectrum_betav2.zip" standalone_path: "spectrum_betav2.zip" required: false category: bios_zip @@ -30473,6 +31715,7 @@ files: sha1: "1c5ec9f56651ae527cdc092af1c602803104d5c3" - name: spectrum_betav3.zip + path: "mame/bios/spectrum_betav3.zip" standalone_path: "spectrum_betav3.zip" required: false category: bios_zip @@ -30499,6 +31742,7 @@ files: sha1: "9480e5402bb8611b88657107a8aad889f353071b" - name: spectrum_d40.zip + path: "mame/bios/spectrum_d40.zip" standalone_path: "spectrum_d40.zip" required: false category: bios_zip @@ -30519,6 +31763,7 @@ files: sha1: "b8473235feecff4eccbace56a90cf1d8c79506eb" - name: spectrum_d80.zip + path: "mame/bios/spectrum_d80.zip" standalone_path: "spectrum_d80.zip" required: false category: bios_zip @@ -30540,6 +31785,7 @@ files: sha1: "b8473235feecff4eccbace56a90cf1d8c79506eb" - name: spectrum_d80v2.zip + path: "mame/bios/spectrum_d80v2.zip" standalone_path: "spectrum_d80v2.zip" required: false category: bios_zip @@ -30556,6 +31802,7 @@ files: sha1: "e8d3355051fb287dd0dda34ba8824442130c8254" - name: spectrum_disciple.zip + path: "mame/bios/spectrum_disciple.zip" standalone_path: "spectrum_disciple.zip" required: false category: bios_zip @@ -30589,6 +31836,7 @@ files: sha1: "b872377ea9f91b29a811b0d484699ffe87bdf9fd" - name: spectrum_flpone.zip + path: "mame/bios/spectrum_flpone.zip" standalone_path: "spectrum_flpone.zip" required: false category: bios_zip @@ -30609,6 +31857,7 @@ files: sha1: "eb1d28bf8aa35bfab3a45a5827f252498ac2c651" - name: spectrum_gamma.zip + path: "mame/bios/spectrum_gamma.zip" standalone_path: "spectrum_gamma.zip" required: false category: bios_zip @@ -30625,6 +31874,7 @@ files: sha1: "dffeb9f47b3eca94afbb61373eba003efd4675ff" - name: spectrum_intf1.zip + path: "mame/bios/spectrum_intf1.zip" standalone_path: "spectrum_intf1.zip" required: false category: bios_zip @@ -30645,6 +31895,7 @@ files: sha1: "5cfb6bca4177c45fefd571734576b55e3a127c08" - name: spectrum_kempcentref.zip + path: "mame/bios/spectrum_kempcentref.zip" standalone_path: "spectrum_kempcentref.zip" required: false category: bios_zip @@ -30660,6 +31911,7 @@ files: sha1: "b26e9f720a215019b8710a4a094d6fde6ecae5fd" - name: spectrum_kempcentreu.zip + path: "mame/bios/spectrum_kempcentreu.zip" standalone_path: "spectrum_kempcentreu.zip" required: false category: bios_zip @@ -30675,6 +31927,7 @@ files: sha1: "6d0772e81cfd9bc994b1c91d4e01b45e0fc0d3d3" - name: spectrum_kempdisc.zip + path: "mame/bios/spectrum_kempdisc.zip" standalone_path: "spectrum_kempdisc.zip" required: false category: bios_zip @@ -30701,6 +31954,7 @@ files: sha1: "4a75fb4951d74e254c230d56b5566c924b3c38f6" - name: spectrum_lprint.zip + path: "mame/bios/spectrum_lprint.zip" standalone_path: "spectrum_lprint.zip" required: false category: bios_zip @@ -30715,6 +31969,7 @@ files: sha1: "3e4c7ecd8c3eb011cdf75eb23faf8d8ea8329757" - name: spectrum_lprint3.zip + path: "mame/bios/spectrum_lprint3.zip" standalone_path: "spectrum_lprint3.zip" required: false category: bios_zip @@ -30745,6 +32000,7 @@ files: sha1: "d9c0297c05e8092fb7e0198f4172d3d4e6ed252c" - name: spectrum_mface1.zip + path: "mame/bios/spectrum_mface1.zip" standalone_path: "spectrum_mface1.zip" required: false category: bios_zip @@ -30775,6 +32031,7 @@ files: sha1: "a7e03e7fee3aa05ce1501072aab4534ea7bae257" - name: spectrum_mface128.zip + path: "mame/bios/spectrum_mface128.zip" standalone_path: "spectrum_mface128.zip" required: false category: bios_zip @@ -30795,6 +32052,7 @@ files: sha1: "8df204ab490b87c389971ce0c7fb5f9cbd281f14" - name: spectrum_mface128v1.zip + path: "mame/bios/spectrum_mface128v1.zip" standalone_path: "spectrum_mface128v1.zip" required: false category: bios_zip @@ -30815,6 +32073,7 @@ files: sha1: "6cd6fd2c0fbb40a989a568db9d08ba8eed49cbbd" - name: spectrum_mface1v1.zip + path: "mame/bios/spectrum_mface1v1.zip" standalone_path: "spectrum_mface1v1.zip" required: false category: bios_zip @@ -30830,6 +32089,7 @@ files: sha1: "c3018d1b495b8bc0a135038db0987de7091c9d4c" - name: spectrum_mface1v2.zip + path: "mame/bios/spectrum_mface1v2.zip" standalone_path: "spectrum_mface1v2.zip" required: false category: bios_zip @@ -30845,6 +32105,7 @@ files: sha1: "b442eb634a72fb63f1ccbbd0021a7a581152888d" - name: spectrum_mface1v3.zip + path: "mame/bios/spectrum_mface1v3.zip" standalone_path: "spectrum_mface1v3.zip" required: false category: bios_zip @@ -30860,6 +32121,7 @@ files: sha1: "20cd508b0143166558a7238c7a9ccfbe37b90b0d" - name: spectrum_mface3.zip + path: "mame/bios/spectrum_mface3.zip" standalone_path: "spectrum_mface3.zip" required: false category: bios_zip @@ -30889,6 +32151,7 @@ files: sha1: "6573c2b8f55f66ef71ce3992f654080141e09739" - name: spectrum_mikroplus.zip + path: "mame/bios/spectrum_mikroplus.zip" standalone_path: "spectrum_mikroplus.zip" required: false category: bios_zip @@ -30904,6 +32167,7 @@ files: sha1: "66cc823587b520af9636eed7a342d69d3dd15123" - name: spectrum_mpoker.zip + path: "mame/bios/spectrum_mpoker.zip" standalone_path: "spectrum_mpoker.zip" required: false category: bios_zip @@ -30918,6 +32182,7 @@ files: sha1: "fd918519e4bd0eb8220d157a1c3f314669764657" - name: spectrum_mprint.zip + path: "mame/bios/spectrum_mprint.zip" standalone_path: "spectrum_mprint.zip" required: false category: bios_zip @@ -30938,6 +32203,7 @@ files: sha1: "1356bfae3264b952f83a33e25af536c0f13f50e7" - name: spectrum_opus.zip + path: "mame/bios/spectrum_opus.zip" standalone_path: "spectrum_opus.zip" required: false category: bios_zip @@ -30973,6 +32239,7 @@ files: sha1: "098a812c4707251f647553a2abc1436afa38f43c" - name: spectrum_plus2test.zip + path: "mame/bios/spectrum_plus2test.zip" standalone_path: "spectrum_plus2test.zip" required: false category: bios_zip @@ -30988,6 +32255,7 @@ files: sha1: "2ed54f8ccf1ef26045bb409bb86c859ee23e83d1" - name: spectrum_plusd.zip + path: "mame/bios/spectrum_plusd.zip" standalone_path: "spectrum_plusd.zip" required: false category: bios_zip @@ -31021,6 +32289,7 @@ files: sha1: "5142068ae01ff29979b08e6b322512750fbc6a04" - name: spectrum_proceed.zip + path: "mame/bios/spectrum_proceed.zip" standalone_path: "spectrum_proceed.zip" required: false category: bios_zip @@ -31037,6 +32306,7 @@ files: sha1: "c999b0e4f5537405ed56c4c96beca5e7f5eb2b1e" - name: spectrum_sdi.zip + path: "mame/bios/spectrum_sdi.zip" standalone_path: "spectrum_sdi.zip" required: false category: bios_zip @@ -31052,6 +32322,7 @@ files: sha1: "52405bb42e46a12b57806fd7f26691681afe2d8e" - name: spectrum_spdos.zip + path: "mame/bios/spectrum_spdos.zip" standalone_path: "spectrum_spdos.zip" required: false category: bios_zip @@ -31067,6 +32338,7 @@ files: sha1: "bb0706cf1538da8acd12b8c9cd2cd75ca689ec44" - name: spectrum_speccydos.zip + path: "mame/bios/spectrum_speccydos.zip" standalone_path: "spectrum_speccydos.zip" required: false category: bios_zip @@ -31093,6 +32365,7 @@ files: sha1: "e72d2ea19cbe8f3459e4fc9d3c57975dc9917bd6" - name: spectrum_specmate.zip + path: "mame/bios/spectrum_specmate.zip" standalone_path: "spectrum_specmate.zip" required: false category: bios_zip @@ -31107,6 +32380,7 @@ files: sha1: "c8f128610eeb5142d4d80f28e5dd07b7a5ab6b84" - name: spectrum_swiftdisc.zip + path: "mame/bios/spectrum_swiftdisc.zip" standalone_path: "spectrum_swiftdisc.zip" required: false category: bios_zip @@ -31128,6 +32402,7 @@ files: sha1: "5afe0364afedc83c03995d44914fe7f207fb5c28" - name: spectrum_swiftdisc2.zip + path: "mame/bios/spectrum_swiftdisc2.zip" standalone_path: "spectrum_swiftdisc2.zip" required: false category: bios_zip @@ -31157,6 +32432,7 @@ files: sha1: "2ad28d44bc33a50ed5f93f2520f25100dd36841d" - name: spectrum_usource.zip + path: "mame/bios/spectrum_usource.zip" standalone_path: "spectrum_usource.zip" required: false category: bios_zip @@ -31172,6 +32448,7 @@ files: sha1: "fae53678a85ba503b77ed2d877de2635b284eef1" - name: spectrum_uspeech.zip + path: "mame/bios/spectrum_uspeech.zip" standalone_path: "spectrum_uspeech.zip" required: false category: bios_zip @@ -31191,6 +32468,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: spectrum_vtx5000.zip + path: "mame/bios/spectrum_vtx5000.zip" standalone_path: "spectrum_vtx5000.zip" required: false category: bios_zip @@ -31212,6 +32490,7 @@ files: sha1: "4490186845b198ca9191dd711bd38274cba6f04b" - name: spectrum_wafa.zip + path: "mame/bios/spectrum_wafa.zip" standalone_path: "spectrum_wafa.zip" required: false category: bios_zip @@ -31227,6 +32506,7 @@ files: sha1: "e979f9b1ada4a723ec69734c1848adbbf8d920c5" - name: st_kbd.zip + path: "mame/bios/st_kbd.zip" standalone_path: "st_kbd.zip" required: false category: bios_zip @@ -31242,6 +32522,7 @@ files: sha1: "1102f20d38f333234041c13687d82528b7cde2e1" - name: stereo_fx.zip + path: "mame/bios/stereo_fx.zip" standalone_path: "stereo_fx.zip" required: false category: bios_zip @@ -31260,6 +32541,7 @@ files: sha1: "e66c2619a6c05199554b5702d67877ae3799d415" - name: stic.zip + path: "mame/bios/stic.zip" standalone_path: "stic.zip" required: false category: bios_zip @@ -31274,6 +32556,7 @@ files: sha1: "f9608bb4ad1cfe3640d02844c7ad8e0bcd974917" - name: sun1_cpu.zip + path: "mame/bios/sun1_cpu.zip" standalone_path: "sun1_cpu.zip" required: false category: bios_zip @@ -31415,6 +32698,7 @@ files: sha1: "9b268792b28d858d6b6a1b6c4148af88a8d6b735" - name: sun_gem.zip + path: "mame/bios/sun_gem.zip" standalone_path: "sun_gem.zip" required: false category: bios_zip @@ -31430,6 +32714,7 @@ files: sha1: "b22046b8b574acf7818ebb00dc8d78c04c170ac0" - name: sv603.zip + path: "mame/bios/sv603.zip" standalone_path: "sv603.zip" required: false category: bios_zip @@ -31445,6 +32730,7 @@ files: sha1: "8a30abe5ffef810b0f99b86db38b1b3c9d259b78" - name: sv806.zip + path: "mame/bios/sv806.zip" standalone_path: "sv806.zip" required: false category: bios_zip @@ -31466,6 +32752,7 @@ files: sha1: "3f16d5513ad35692488ae7d864f660e76c6e8ed3" - name: sw1000xg.zip + path: "mame/bios/sw1000xg.zip" standalone_path: "sw1000xg.zip" required: false category: bios_zip @@ -31524,6 +32811,7 @@ files: sha1: "46a7a7225cd7e1818ba551325d2af5ac1bf5b2bf" - name: swp30.zip + path: "mame/bios/swp30.zip" standalone_path: "swp30.zip" required: false category: bios_zip @@ -31541,6 +32829,7 @@ files: sha1: "ab3aeacc7a6261cd77019d2f3febd2c21986bf46" - name: swtpc8212_device.zip + path: "mame/bios/swtpc8212_device.zip" standalone_path: "swtpc8212_device.zip" required: false category: bios_zip @@ -31588,6 +32877,7 @@ files: sha1: "813d2e85ddb258c5b032b959e695ad33200cbcc4" - name: sx1541.zip + path: "mame/bios/sx1541.zip" standalone_path: "sx1541.zip" required: false category: bios_zip @@ -31617,6 +32907,7 @@ files: sha1: "8e0547430135ba462525c224e76356bd3d430f11" - name: sys68k_cpu1.zip + path: "mame/bios/sys68k_cpu1.zip" standalone_path: "sys68k_cpu1.zip" required: false category: bios_zip @@ -31648,6 +32939,7 @@ files: sha1: "1e24530a6d5dc4fb77fde67acae08d371e59fc0f" - name: sys68k_cpu20.zip + path: "mame/bios/sys68k_cpu20.zip" standalone_path: "sys68k_cpu20.zip" required: false category: bios_zip @@ -31675,6 +32967,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21.zip + path: "mame/bios/sys68k_cpu21.zip" standalone_path: "sys68k_cpu21.zip" required: false category: bios_zip @@ -31702,6 +32995,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21a.zip + path: "mame/bios/sys68k_cpu21a.zip" standalone_path: "sys68k_cpu21a.zip" required: false category: bios_zip @@ -31729,6 +33023,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21b.zip + path: "mame/bios/sys68k_cpu21b.zip" standalone_path: "sys68k_cpu21b.zip" required: false category: bios_zip @@ -31756,6 +33051,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21s.zip + path: "mame/bios/sys68k_cpu21s.zip" standalone_path: "sys68k_cpu21s.zip" required: false category: bios_zip @@ -31783,6 +33079,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21ya.zip + path: "mame/bios/sys68k_cpu21ya.zip" standalone_path: "sys68k_cpu21ya.zip" required: false category: bios_zip @@ -31810,6 +33107,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu21yb.zip + path: "mame/bios/sys68k_cpu21yb.zip" standalone_path: "sys68k_cpu21yb.zip" required: false category: bios_zip @@ -31837,6 +33135,7 @@ files: sha1: "49b272184a04570b09004de71fae0ed0d1bf5929" - name: sys68k_cpu30.zip + path: "mame/bios/sys68k_cpu30.zip" standalone_path: "sys68k_cpu30.zip" required: false category: bios_zip @@ -31868,6 +33167,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_cpu30be.zip + path: "mame/bios/sys68k_cpu30be.zip" standalone_path: "sys68k_cpu30be.zip" required: false category: bios_zip @@ -31899,6 +33199,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_cpu30x.zip + path: "mame/bios/sys68k_cpu30x.zip" standalone_path: "sys68k_cpu30x.zip" required: false category: bios_zip @@ -31930,6 +33231,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_cpu30xa.zip + path: "mame/bios/sys68k_cpu30xa.zip" standalone_path: "sys68k_cpu30xa.zip" required: false category: bios_zip @@ -31961,6 +33263,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_cpu30za.zip + path: "mame/bios/sys68k_cpu30za.zip" standalone_path: "sys68k_cpu30za.zip" required: false category: bios_zip @@ -31992,6 +33295,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_cpu33.zip + path: "mame/bios/sys68k_cpu33.zip" standalone_path: "sys68k_cpu33.zip" required: false category: bios_zip @@ -32015,6 +33319,7 @@ files: sha1: "651dfc2f9a865fc6adf49dad90f9e705f2889919" - name: sys68k_iscsi1.zip + path: "mame/bios/sys68k_iscsi1.zip" standalone_path: "sys68k_iscsi1.zip" required: false category: bios_zip @@ -32046,6 +33351,7 @@ files: sha1: "074085ef96e1fe2a551938bdeee6a9cab40ff09c" - name: sys68k_isio1.zip + path: "mame/bios/sys68k_isio1.zip" standalone_path: "sys68k_isio1.zip" required: false category: bios_zip @@ -32065,6 +33371,7 @@ files: sha1: "215f7ff90d9dbe2bea54510e3722fb33d4e54193" - name: t5182.zip + path: "mame/bios/t5182.zip" standalone_path: "t5182.zip" required: false category: bios_zip @@ -32079,6 +33386,7 @@ files: sha1: "a1c9e1ac293f107f69cc5788cf6abc3db1646e33" - name: tanbus_ra32krom.zip + path: "mame/bios/tanbus_ra32krom.zip" standalone_path: "tanbus_ra32krom.zip" required: false category: bios_zip @@ -32106,6 +33414,7 @@ files: sha1: "5e49edda4b550506aca70d1f7e7de7a352f0359f" - name: tanbus_tandos.zip + path: "mame/bios/tanbus_tandos.zip" standalone_path: "tanbus_tandos.zip" required: false category: bios_zip @@ -32127,6 +33436,7 @@ files: sha1: "b1e42cbf7197e693073d2578561803ea4c8efa8c" - name: tanbus_tanex.zip + path: "mame/bios/tanbus_tanex.zip" standalone_path: "tanbus_tanex.zip" required: false category: bios_zip @@ -32182,6 +33492,7 @@ files: sha1: "93d205ffb07a339f801b9aa9469e069de321c41c" - name: tanbus_vid8082.zip + path: "mame/bios/tanbus_vid8082.zip" standalone_path: "tanbus_vid8082.zip" required: false category: bios_zip @@ -32197,6 +33508,7 @@ files: sha1: "1db8b055306067eb62940c0e9e63d97a2fab20f9" - name: tandberg_tdv2100_disp_logic.zip + path: "mame/bios/tandberg_tdv2100_disp_logic.zip" standalone_path: "tandberg_tdv2100_disp_logic.zip" required: false category: bios_zip @@ -32228,6 +33540,7 @@ files: sha1: "014d524d977927c140237c47e8ba692c1a89397a" - name: tandberg_tdv2100_keyboard.zip + path: "mame/bios/tandberg_tdv2100_keyboard.zip" standalone_path: "tandberg_tdv2100_keyboard.zip" required: false category: bios_zip @@ -32247,6 +33560,7 @@ files: sha1: "a8985ae2c90f8e7361c3e4418314925b17e72b10" - name: tandy_1000_graphics.zip + path: "mame/bios/tandy_1000_graphics.zip" standalone_path: "tandy_1000_graphics.zip" required: false category: bios_zip @@ -32262,6 +33576,7 @@ files: sha1: "b63da2a656b6c0a8a32f2be8bdcb51aed983a450" - name: tandy_1000x_graphics.zip + path: "mame/bios/tandy_1000x_graphics.zip" standalone_path: "tandy_1000x_graphics.zip" required: false category: bios_zip @@ -32277,6 +33592,7 @@ files: sha1: "b63da2a656b6c0a8a32f2be8bdcb51aed983a450" - name: tdl12.zip + path: "mame/bios/tdl12.zip" standalone_path: "tdl12.zip" required: false category: bios_zip @@ -32294,6 +33610,7 @@ files: sha1: "1cf0bf8702747ff3047691d2b661bb08d40754f0" - name: technica.zip + path: "mame/bios/technica.zip" standalone_path: "technica.zip" required: false category: bios_zip @@ -32310,6 +33627,7 @@ files: bad_dump: true - name: tek410x_kbd.zip + path: "mame/bios/tek410x_kbd.zip" standalone_path: "tek410x_kbd.zip" required: false category: bios_zip @@ -32325,6 +33643,7 @@ files: sha1: "165ffc2c0775c1a3c2cc3ec86fb05adc8e8bb3eb" - name: tek_msu_fdc.zip + path: "mame/bios/tek_msu_fdc.zip" standalone_path: "tek_msu_fdc.zip" required: false category: bios_zip @@ -32340,6 +33659,7 @@ files: sha1: "b29b3705692d50f15f7e8bbba12a24c69817d52e" - name: teletex800.zip + path: "mame/bios/teletex800.zip" standalone_path: "teletex800.zip" required: false category: bios_zip @@ -32354,6 +33674,7 @@ files: sha1: "4911332709a8dcda12e72bcdf7a0acd58d65cbfd" - name: tetriskr_cga.zip + path: "mame/bios/tetriskr_cga.zip" standalone_path: "tetriskr_cga.zip" required: false category: bios_zip @@ -32400,6 +33721,7 @@ files: sha1: "14dfd3dbd51f8bd6f3290293b8ea1c165e8cf7fd" - name: tgui9680.zip + path: "mame/bios/tgui9680.zip" standalone_path: "tgui9680.zip" required: false category: bios_zip @@ -32415,6 +33737,7 @@ files: sha1: "67896a854d43a575037613b3506aea6dae5d6a19" - name: ti99_arcturus.zip + path: "mame/bios/ti99_arcturus.zip" standalone_path: "ti99_arcturus.zip" required: false category: bios_zip @@ -32440,6 +33763,7 @@ files: sha1: "65850c57e9480a5d8bdd852692f18d0162ca1406" - name: ti99_bwg.zip + path: "mame/bios/ti99_bwg.zip" standalone_path: "ti99_bwg.zip" required: false category: bios_zip @@ -32457,6 +33781,7 @@ files: sha1: "6ad77033ed268f986d9a5439e65f7d391c4b7651" - name: ti99_ccdcc.zip + path: "mame/bios/ti99_ccdcc.zip" standalone_path: "ti99_ccdcc.zip" required: false category: bios_zip @@ -32478,6 +33803,7 @@ files: sha1: "26f8096ae60f3839902b4e8764c5fde283ad4ba2" - name: ti99_ccfdc.zip + path: "mame/bios/ti99_ccfdc.zip" standalone_path: "ti99_ccfdc.zip" required: false category: bios_zip @@ -32499,6 +33825,7 @@ files: sha1: "7744f777b51eedf614f766576bbc3f8c2c2e0042" - name: ti99_ddcc1.zip + path: "mame/bios/ti99_ddcc1.zip" standalone_path: "ti99_ddcc1.zip" required: false category: bios_zip @@ -32516,6 +33843,7 @@ files: sha1: "17af3130d3631b1bc1aa4d7e32a1b1feb66bbfb6" - name: ti99_evpc.zip + path: "mame/bios/ti99_evpc.zip" standalone_path: "ti99_evpc.zip" required: false category: bios_zip @@ -32533,6 +33861,7 @@ files: sha1: "6e8060f86e3bb9c36f244d88825e3fe237bfe9a9" - name: ti99_fdc.zip + path: "mame/bios/ti99_fdc.zip" standalone_path: "ti99_fdc.zip" required: false category: bios_zip @@ -32554,6 +33883,7 @@ files: sha1: "3646c3bcd2dce16b918ee01ea65312f36ae811d2" - name: ti99_gkracker.zip + path: "mame/bios/ti99_gkracker.zip" standalone_path: "ti99_gkracker.zip" required: false category: bios_zip @@ -32571,6 +33901,7 @@ files: sha1: "a3bd5257c63e190800921b52dbe3ffa91ad91113" - name: ti99_hfdc.zip + path: "mame/bios/ti99_hfdc.zip" standalone_path: "ti99_hfdc.zip" required: false category: bios_zip @@ -32588,6 +33919,7 @@ files: sha1: "11df2ecef51de6f543e4eaf8b2529d3e65d0bd59" - name: ti99_myarcmem.zip + path: "mame/bios/ti99_myarcmem.zip" standalone_path: "ti99_myarcmem.zip" required: false category: bios_zip @@ -32605,6 +33937,7 @@ files: sha1: "4dc7fdfa46842957bcbb0cf2c37764e4bb6d877a" - name: ti99_pcode.zip + path: "mame/bios/ti99_pcode.zip" standalone_path: "ti99_pcode.zip" required: false category: bios_zip @@ -32657,6 +33990,7 @@ files: sha1: "24e2608179921aef312cdee6f455e3f46deb30d0" - name: ti99_rs232.zip + path: "mame/bios/ti99_rs232.zip" standalone_path: "ti99_rs232.zip" required: false category: bios_zip @@ -32674,6 +34008,7 @@ files: sha1: "ee609a18a21f1a3ddab334e8798d5f2a0fcefa91" - name: ti99_thermal.zip + path: "mame/bios/ti99_thermal.zip" standalone_path: "ti99_thermal.zip" required: false category: bios_zip @@ -32691,6 +34026,7 @@ files: sha1: "2f923e59a3a52b3645e8d26e11a697f320c6d4cb" - name: ti99_tipi.zip + path: "mame/bios/ti99_tipi.zip" standalone_path: "ti99_tipi.zip" required: false category: bios_zip @@ -32718,6 +34054,7 @@ files: sha1: "99986d6ef89ab3eeba08eb6593193e99292458fb" - name: ti99_whtscsi.zip + path: "mame/bios/ti99_whtscsi.zip" standalone_path: "ti99_whtscsi.zip" required: false category: bios_zip @@ -32735,6 +34072,7 @@ files: sha1: "f8d8861863e6a17042428e94967fd4ffc4b9d1de" - name: ti_hx5102.zip + path: "mame/bios/ti_hx5102.zip" standalone_path: "ti_hx5102.zip" required: false category: bios_zip @@ -32754,6 +34092,7 @@ files: sha1: "2f1d01378943436f0abd5b20710f6c8c175fde13" - name: tiki100_8088.zip + path: "mame/bios/tiki100_8088.zip" standalone_path: "tiki100_8088.zip" required: false category: bios_zip @@ -32780,6 +34119,7 @@ files: sha1: "b6d4a7a3eb29d97971443b8a31ec5a4ce5ced0d8" - name: tim011_kbd.zip + path: "mame/bios/tim011_kbd.zip" standalone_path: "tim011_kbd.zip" required: false category: bios_zip @@ -32794,6 +34134,7 @@ files: sha1: "d6d505271d91df4e079ec3c0a4abbe75ae9d649b" - name: tk02.zip + path: "mame/bios/tk02.zip" standalone_path: "tk02.zip" required: false category: bios_zip @@ -32809,6 +34150,7 @@ files: sha1: "cd57e630371b4d0314e3f15693753fb195c7257d" - name: tms320c30.zip + path: "mame/bios/tms320c30.zip" standalone_path: "tms320c30.zip" required: false category: bios_zip @@ -32825,6 +34167,7 @@ files: bad_dump: true - name: tms320c31.zip + path: "mame/bios/tms320c31.zip" standalone_path: "tms320c31.zip" required: false category: bios_zip @@ -32841,6 +34184,7 @@ files: bad_dump: true - name: tms320c32.zip + path: "mame/bios/tms320c32.zip" standalone_path: "tms320c32.zip" required: false category: bios_zip @@ -32857,6 +34201,7 @@ files: bad_dump: true - name: tms320vc33.zip + path: "mame/bios/tms320vc33.zip" standalone_path: "tms320vc33.zip" required: false category: bios_zip @@ -32872,6 +34217,7 @@ files: bad_dump: true - name: tp880v.zip + path: "mame/bios/tp880v.zip" standalone_path: "tp880v.zip" required: false category: bios_zip @@ -32888,6 +34234,7 @@ files: sha1: "724f54573b1b0c79f20250fdb6434bb2248c5e04" - name: tp881v.zip + path: "mame/bios/tp881v.zip" standalone_path: "tp881v.zip" required: false category: bios_zip @@ -32909,6 +34256,7 @@ files: sha1: "8e5bfd427c0bdea4ab350333fd5a814712014302" - name: trio64dx_pci.zip + path: "mame/bios/trio64dx_pci.zip" standalone_path: "trio64dx_pci.zip" required: false category: bios_zip @@ -32942,6 +34290,7 @@ files: sha1: "e652dd2cec49d5edf3cb207e410233963efa22b8" - name: trs80m2kb.zip + path: "mame/bios/trs80m2kb.zip" standalone_path: "trs80m2kb.zip" required: false category: bios_zip @@ -32957,6 +34306,7 @@ files: sha1: "c944cb9be062c9eed4f20a5b2568c8019dc71e27" - name: tsvme104.zip + path: "mame/bios/tsvme104.zip" standalone_path: "tsvme104.zip" required: false category: bios_zip @@ -32977,6 +34327,7 @@ files: sha1: "3b9834731f2b1a47f8c840c5e47d9fc4a8769d42" - name: turbogx.zip + path: "mame/bios/turbogx.zip" standalone_path: "turbogx.zip" required: false category: bios_zip @@ -32992,6 +34343,7 @@ files: sha1: "e4a51d78e199cd57f2fcb9d45b25dfae2bd537e4" - name: turbogxp.zip + path: "mame/bios/turbogxp.zip" standalone_path: "turbogxp.zip" required: false category: bios_zip @@ -33007,6 +34359,7 @@ files: sha1: "721fc378d4b952b5cbb271e16bd67bc02439efdc" - name: tv950kb.zip + path: "mame/bios/tv950kb.zip" standalone_path: "tv950kb.zip" required: false category: bios_zip @@ -33022,6 +34375,7 @@ files: sha1: "99e73e9c74b10055733e89b92adbc5bf7f4ff338" - name: tv955kb.zip + path: "mame/bios/tv955kb.zip" standalone_path: "tv955kb.zip" required: false category: bios_zip @@ -33037,6 +34391,7 @@ files: sha1: "0b62003ab7931822f1bcac8370517c685849f62c" - name: tvc_hbf.zip + path: "mame/bios/tvc_hbf.zip" standalone_path: "tvc_hbf.zip" required: false category: bios_zip @@ -33068,6 +34423,7 @@ files: sha1: "2fa44ad089a51f453b580e0b13e3be96a0f14649" - name: tvga9000.zip + path: "mame/bios/tvga9000.zip" standalone_path: "tvga9000.zip" required: false category: bios_zip @@ -33092,6 +34448,7 @@ files: sha1: "9cff3cb86a85dcbd34234bc4fd1dd0011f3d48fd" - name: ubpnic.zip + path: "mame/bios/ubpnic.zip" standalone_path: "ubpnic.zip" required: false category: bios_zip @@ -33110,6 +34467,7 @@ files: sha1: "e0effcf33a25954d990d0d01d5c0ac009a1f282d" - name: ultra12f.zip + path: "mame/bios/ultra12f.zip" standalone_path: "ultra12f.zip" required: false category: bios_zip @@ -33144,6 +34502,7 @@ files: sha1: "48d6e65001a262b3e99d373fa59e0672c5ec4284" - name: ultra12f32.zip + path: "mame/bios/ultra12f32.zip" standalone_path: "ultra12f32.zip" required: false category: bios_zip @@ -33166,6 +34525,7 @@ files: sha1: "110e724b4116fc2cbd050d9f2e541d2366fd9f4c" - name: ultra14f.zip + path: "mame/bios/ultra14f.zip" standalone_path: "ultra14f.zip" required: false category: bios_zip @@ -33188,6 +34548,7 @@ files: sha1: "9c1539f8473f8330be323e728e7aabccc77542d0" - name: ultra24f.zip + path: "mame/bios/ultra24f.zip" standalone_path: "ultra24f.zip" required: false category: bios_zip @@ -33218,6 +34579,7 @@ files: sha1: "052602e4788b7364670f7c0b5fe0bb0eacc4d9ac" - name: umc6650.zip + path: "mame/bios/umc6650.zip" standalone_path: "umc6650.zip" required: false category: bios_zip @@ -33233,6 +34595,7 @@ files: sha1: "f94805457976d60b91e8df18f9f49cccec77be78" - name: uniap2ti.zip + path: "mame/bios/uniap2ti.zip" standalone_path: "uniap2ti.zip" required: false category: bios_zip @@ -33248,6 +34611,7 @@ files: sha1: "220cc21d86f1ab63a301ae7a9c5ff0f3f6cddb70" - name: upd7220.zip + path: "mame/bios/upd7220.zip" standalone_path: "upd7220.zip" required: false category: bios_zip @@ -33266,6 +34630,7 @@ files: sha1: "e154b3106a80c9c98d9f2ee18efcd7f4b4aa7d49" - name: uts_400kbd.zip + path: "mame/bios/uts_400kbd.zip" standalone_path: "uts_400kbd.zip" required: false category: bios_zip @@ -33281,6 +34646,7 @@ files: sha1: "84081e108aa5801047851b435fd4b043922b2f6e" - name: uts_extw.zip + path: "mame/bios/uts_extw.zip" standalone_path: "uts_extw.zip" required: false category: bios_zip @@ -33296,6 +34662,7 @@ files: sha1: "a6486576525f7eec617fd7f9db469063f8c357fc" - name: v102_kbd.zip + path: "mame/bios/v102_kbd.zip" standalone_path: "v102_kbd.zip" required: false category: bios_zip @@ -33311,6 +34678,7 @@ files: sha1: "b26ebdde63ec0e94c08780285def39a282e128b3" - name: v50_kbd.zip + path: "mame/bios/v50_kbd.zip" standalone_path: "v50_kbd.zip" required: false category: bios_zip @@ -33325,6 +34693,7 @@ files: sha1: "5224887097004894ab9f4876f3217f3da08801da" - name: v550_kbd.zip + path: "mame/bios/v550_kbd.zip" standalone_path: "v550_kbd.zip" required: false category: bios_zip @@ -33340,6 +34709,7 @@ files: sha1: "2d88202d0548e934800f07667c8d13a3762b12fa" - name: vanta.zip + path: "mame/bios/vanta.zip" standalone_path: "vanta.zip" required: false category: bios_zip @@ -33365,6 +34735,7 @@ files: sha1: "b28a56bcf466fcd9308541acaa1c7c94f493149a" - name: vector4_kbd.zip + path: "mame/bios/vector4_kbd.zip" standalone_path: "vector4_kbd.zip" required: false category: bios_zip @@ -33379,6 +34750,7 @@ files: sha1: "0023f0639e2f1d9e8860c6c4244e25fd8bf82331" - name: vic1515.zip + path: "mame/bios/vic1515.zip" standalone_path: "vic1515.zip" required: false category: bios_zip @@ -33394,6 +34766,7 @@ files: sha1: "035c23dc83923eea34feea260445356a909fbd98" - name: vic1520.zip + path: "mame/bios/vic1520.zip" standalone_path: "vic1520.zip" required: false category: bios_zip @@ -33415,6 +34788,7 @@ files: sha1: "74c15b2cc1f7632bffa37439609cbdb50b82ea92" - name: vic20_fe3.zip + path: "mame/bios/vic20_fe3.zip" standalone_path: "vic20_fe3.zip" required: false category: bios_zip @@ -33433,6 +34807,7 @@ files: sha1: "e64d69870b757a409abeb5f19e34866eef37ab18" - name: vic20_videopak.zip + path: "mame/bios/vic20_videopak.zip" standalone_path: "vic20_videopak.zip" required: false category: bios_zip @@ -33448,6 +34823,7 @@ files: bad_dump: true - name: victor9k_fdc.zip + path: "mame/bios/victor9k_fdc.zip" standalone_path: "victor9k_fdc.zip" required: false category: bios_zip @@ -33466,6 +34842,7 @@ files: sha1: "6eeff3d2063ae2d97452101aa61e27ef83a467e5" - name: victor9k_kb.zip + path: "mame/bios/victor9k_kb.zip" standalone_path: "victor9k_kb.zip" required: false category: bios_zip @@ -33481,6 +34858,7 @@ files: sha1: "61d92ba90f98f8978bbd9303c1ac3134cde8cdcb" - name: videnh2.zip + path: "mame/bios/videnh2.zip" standalone_path: "videnh2.zip" required: false category: bios_zip @@ -33496,6 +34874,7 @@ files: sha1: "91f3e4a56382aea91d9197f06550e42fcfbcd1bf" - name: virge_pci.zip + path: "mame/bios/virge_pci.zip" standalone_path: "virge_pci.zip" required: false category: bios_zip @@ -33518,6 +34897,7 @@ files: sha1: "e885371816d3237f7badd57ccd602cd863c9c9f8" - name: virgedx_pci.zip + path: "mame/bios/virgedx_pci.zip" standalone_path: "virgedx_pci.zip" required: false category: bios_zip @@ -33545,6 +34925,7 @@ files: sha1: "9a7f58fab7811342a00bbc76837b4f9015913ddb" - name: virgevx_pci.zip + path: "mame/bios/virgevx_pci.zip" standalone_path: "virgevx_pci.zip" required: false category: bios_zip @@ -33562,6 +34943,7 @@ files: sha1: "fdab43f15da1d66bca286583f9da86873f3e22de" - name: vision864.zip + path: "mame/bios/vision864.zip" standalone_path: "vision864.zip" required: false category: bios_zip @@ -33580,6 +34962,7 @@ files: sha1: "340a64402958d2ee734d929dfce147d9afcf23f4" - name: vision964.zip + path: "mame/bios/vision964.zip" standalone_path: "vision964.zip" required: false category: bios_zip @@ -33598,6 +34981,7 @@ files: sha1: "004e2432c4783f1539a7989e7d9ee422df09e695" - name: vision968.zip + path: "mame/bios/vision968.zip" standalone_path: "vision968.zip" required: false category: bios_zip @@ -33626,6 +35010,7 @@ files: sha1: "236829f1e6065a2f0ebee91f71891d8402f0ab5a" - name: voicebox.zip + path: "mame/bios/voicebox.zip" standalone_path: "voicebox.zip" required: false category: bios_zip @@ -33640,6 +35025,7 @@ files: sha1: "e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc" - name: voodoo_3000_x86.zip + path: "mame/bios/voodoo_3000_x86.zip" standalone_path: "voodoo_3000_x86.zip" required: false category: bios_zip @@ -33665,6 +35051,7 @@ files: sha1: "298b305c38bda9d5848894dfd6aabcc5af8c61bf" - name: votraxtnt.zip + path: "mame/bios/votraxtnt.zip" standalone_path: "votraxtnt.zip" required: false category: bios_zip @@ -33701,6 +35088,7 @@ files: sha1: "af83b9e84f44c126b24ee754a22e34ca992a8d3d" - name: votrsc01.zip + path: "mame/bios/votrsc01.zip" standalone_path: "votrsc01.zip" required: false category: bios_zip @@ -33715,6 +35103,7 @@ files: sha1: "268b5884dce04e49e2376df3e2dc82e852b708c1" - name: votrsc01a.zip + path: "mame/bios/votrsc01a.zip" standalone_path: "votrsc01a.zip" required: false category: bios_zip @@ -33750,6 +35139,7 @@ files: sha1: "1d6da90b1807a01b5e186ef08476119a862b5e6d" - name: vp700.zip + path: "mame/bios/vp700.zip" standalone_path: "vp700.zip" required: false category: bios_zip @@ -33765,6 +35155,7 @@ files: sha1: "8fa88740cae82d8d62ea34891a657d3ca1fb732a" - name: vtech_fdc.zip + path: "mame/bios/vtech_fdc.zip" standalone_path: "vtech_fdc.zip" required: false category: bios_zip @@ -33782,6 +35173,7 @@ files: sha1: "59d1cbcfa6c5e1906a32704fbf0d9670f0d1fd8b" - name: vtech_rs232.zip + path: "mame/bios/vtech_rs232.zip" standalone_path: "vtech_rs232.zip" required: false category: bios_zip @@ -33805,6 +35197,7 @@ files: sha1: "28e00c7ff33143a948308330859bee54b474e114" - name: vtech_rtty.zip + path: "mame/bios/vtech_rtty.zip" standalone_path: "vtech_rtty.zip" required: false category: bios_zip @@ -33822,6 +35215,7 @@ files: sha1: "de737ef0e0b582b3102da473836af1fa159a2e78" - name: vtech_sdloader.zip + path: "mame/bios/vtech_sdloader.zip" standalone_path: "vtech_sdloader.zip" required: false category: bios_zip @@ -33849,6 +35243,7 @@ files: sha1: "d4f8fa0c7a70984334be3e5c831017cfc53683b2" - name: vtech_wordpro.zip + path: "mame/bios/vtech_wordpro.zip" standalone_path: "vtech_wordpro.zip" required: false category: bios_zip @@ -33873,6 +35268,7 @@ files: sha1: "b4de50f943243f18a2bfabef354b76d77178c189" - name: wangpc_lic.zip + path: "mame/bios/wangpc_lic.zip" standalone_path: "wangpc_lic.zip" required: false category: bios_zip @@ -33888,6 +35284,7 @@ files: sha1: "81e52e70e0c6e34715119b121ec19a7758cd6772" - name: wangpc_rtc.zip + path: "mame/bios/wangpc_rtc.zip" standalone_path: "wangpc_rtc.zip" required: false category: bios_zip @@ -33903,6 +35300,7 @@ files: sha1: "6b3f0d787d014b1fd3925812c905ddb63c5055f1" - name: wangpc_wdc.zip + path: "mame/bios/wangpc_wdc.zip" standalone_path: "wangpc_wdc.zip" required: false category: bios_zip @@ -33922,6 +35320,7 @@ files: sha1: "060c576d70069ece2d0dbce86ffc448df2b169e7" - name: wangpckb.zip + path: "mame/bios/wangpckb.zip" standalone_path: "wangpckb.zip" required: false category: bios_zip @@ -33936,6 +35335,7 @@ files: sha1: "2bb34a1de2d94b2885d9e8fcd4964296f6276c5c" - name: wd1002a_wx1.zip + path: "mame/bios/wd1002a_wx1.zip" standalone_path: "wd1002a_wx1.zip" required: false category: bios_zip @@ -33953,6 +35353,7 @@ files: sha1: "3bd29538832d3084cbddeec92593988772755283" - name: wd1007a.zip + path: "mame/bios/wd1007a.zip" standalone_path: "wd1007a.zip" required: false category: bios_zip @@ -33970,6 +35371,7 @@ files: sha1: "5ff6a70b1b44962654d02f85916c1b09bc4ebc96" - name: wd90c00_jk.zip + path: "mame/bios/wd90c00_jk.zip" standalone_path: "wd90c00_jk.zip" required: false category: bios_zip @@ -34010,6 +35412,7 @@ files: bad_dump: true - name: wd90c11_lr.zip + path: "mame/bios/wd90c11_lr.zip" standalone_path: "wd90c11_lr.zip" required: false category: bios_zip @@ -34029,6 +35432,7 @@ files: sha1: "10fd263ab0187d8960d4cb2954254732ac29472f" - name: wd90c30_lr.zip + path: "mame/bios/wd90c30_lr.zip" standalone_path: "wd90c30_lr.zip" required: false category: bios_zip @@ -34058,6 +35462,7 @@ files: sha1: "902418504a446f0a484fd3da6f65d3cff3987280" - name: wd90c31_lr.zip + path: "mame/bios/wd90c31_lr.zip" standalone_path: "wd90c31_lr.zip" required: false category: bios_zip @@ -34082,6 +35487,7 @@ files: sha1: "7f236d6acb34d07480584d51f6bb57836ff262c4" - name: wd90c31a_lr.zip + path: "mame/bios/wd90c31a_lr.zip" standalone_path: "wd90c31a_lr.zip" required: false category: bios_zip @@ -34106,6 +35512,7 @@ files: sha1: "52ed7b8301ec5ebab0d87bab8cddd9cc8612e2ab" - name: wd90c31a_zs.zip + path: "mame/bios/wd90c31a_zs.zip" standalone_path: "wd90c31a_zs.zip" required: false category: bios_zip @@ -34124,6 +35531,7 @@ files: sha1: "52cefcc9a1b7374c7414bb93a7805207ba5b7fe3" - name: wd90c33_zz.zip + path: "mame/bios/wd90c33_zz.zip" standalone_path: "wd90c33_zz.zip" required: false category: bios_zip @@ -34142,6 +35550,7 @@ files: sha1: "0f93213ed439059d23e0793478793ffd6188ce12" - name: wd90c90_jk.zip + path: "mame/bios/wd90c90_jk.zip" standalone_path: "wd90c90_jk.zip" required: false category: bios_zip @@ -34161,6 +35570,7 @@ files: sha1: "578ee0e8f9a5e56df6c05386978d0f41c638ddcf" - name: wd9710_pci.zip + path: "mame/bios/wd9710_pci.zip" standalone_path: "wd9710_pci.zip" required: false category: bios_zip @@ -34179,6 +35589,7 @@ files: sha1: "b5dbb28d60adf53c711ec16bc45eab102e40b6a2" - name: wdxt_gen.zip + path: "mame/bios/wdxt_gen.zip" standalone_path: "wdxt_gen.zip" required: false category: bios_zip @@ -34201,6 +35612,7 @@ files: sha1: "8c22bd664177eb6126f3011eda8c5655fffe0ef2" - name: wg130.zip + path: "mame/bios/wg130.zip" standalone_path: "wg130.zip" required: false category: bios_zip @@ -34215,6 +35627,7 @@ files: sha1: "93ebe213ea7a085c67d88974ed39ac3e9bf8059b" - name: wyse700.zip + path: "mame/bios/wyse700.zip" standalone_path: "wyse700.zip" required: false category: bios_zip @@ -34236,6 +35649,7 @@ files: sha1: "1beeb133c5e39eee9914bdc5924039d70b5edcad" - name: x68k_cz6bs1.zip + path: "mame/bios/x68k_cz6bs1.zip" standalone_path: "x68k_cz6bs1.zip" required: false category: bios_zip @@ -34251,6 +35665,7 @@ files: sha1: "49616c09a8986ffe6a12ad600febe512f7ba8ae4" - name: x820iikb.zip + path: "mame/bios/x820iikb.zip" standalone_path: "x820iikb.zip" required: false category: bios_zip @@ -34266,6 +35681,7 @@ files: sha1: "3f05959f54a558b273567b1b4f0c7cdf46d8d9bf" - name: x820kb.zip + path: "mame/bios/x820kb.zip" standalone_path: "x820kb.zip" required: false category: bios_zip @@ -34280,6 +35696,7 @@ files: sha1: "3f05959f54a558b273567b1b4f0c7cdf46d8d9bf" - name: xerox820_16_8.zip + path: "mame/bios/xerox820_16_8.zip" standalone_path: "xerox820_16_8.zip" required: false category: bios_zip @@ -34295,6 +35712,7 @@ files: sha1: "a5f20c74fc53f9d695d8894534ab69a39e2c38d8" - name: xerox820_emii_flpy5.zip + path: "mame/bios/xerox820_emii_flpy5.zip" standalone_path: "xerox820_emii_flpy5.zip" required: false category: bios_zip @@ -34314,6 +35732,7 @@ files: sha1: "54d205e5a7ed80feb7cd06eddc863110fc655dde" - name: xerox820_emii_rgd5.zip + path: "mame/bios/xerox820_emii_rgd5.zip" standalone_path: "xerox820_emii_rgd5.zip" required: false category: bios_zip @@ -34333,6 +35752,7 @@ files: sha1: "54d205e5a7ed80feb7cd06eddc863110fc655dde" - name: xetec_c5181.zip + path: "mame/bios/xetec_c5181.zip" standalone_path: "xetec_c5181.zip" required: false category: bios_zip @@ -34348,6 +35768,7 @@ files: sha1: "431c57e876c7432c07469c461e7438678ebb0043" - name: xt446.zip + path: "mame/bios/xt446.zip" standalone_path: "xt446.zip" required: false category: bios_zip @@ -34387,6 +35808,7 @@ files: sha1: "bdca8c5158f452f2b5535c7d658c9b22c6d66048" - name: xtide.zip + path: "mame/bios/xtide.zip" standalone_path: "xtide.zip" required: false category: bios_zip @@ -34526,6 +35948,7 @@ files: sha1: "c0053710ebac15284e740889967d73a6657734c7" - name: ym2423.zip + path: "mame/bios/ym2423.zip" standalone_path: "ym2423.zip" required: false category: bios_zip @@ -34539,6 +35962,7 @@ files: sha1: "59c51918f02891d6a0e917f7ebc27e42f7eadd15" - name: ymf281.zip + path: "mame/bios/ymf281.zip" standalone_path: "ymf281.zip" required: false category: bios_zip @@ -34552,6 +35976,7 @@ files: sha1: "5242d7b9c677c48e156ba5753db1a73db627a1a9" - name: z8671.zip + path: "mame/bios/z8671.zip" standalone_path: "z8671.zip" required: false category: bios_zip @@ -34566,6 +35991,7 @@ files: sha1: "290a24c77debd2e280fe31380287838c5fb7cabd" - name: z8682.zip + path: "mame/bios/z8682.zip" standalone_path: "z8682.zip" required: false category: bios_zip @@ -34581,6 +36007,7 @@ files: bad_dump: true - name: zip100_ide.zip + path: "mame/bios/zip100_ide.zip" standalone_path: "zip100_ide.zip" required: false category: bios_zip @@ -34609,6 +36036,7 @@ files: sha1: "b8df2a733838db5116982a7295484b77b272287c" - name: zorba_kbd.zip + path: "mame/bios/zorba_kbd.zip" standalone_path: "zorba_kbd.zip" required: false category: bios_zip @@ -34623,6 +36051,7 @@ files: sha1: "4b6fca9379d5199d1347ad1187cbfdebfc4c73e7" - name: zxbus_neogs.zip + path: "mame/bios/zxbus_neogs.zip" standalone_path: "zxbus_neogs.zip" required: false category: bios_zip diff --git a/emulators/mame0258.yml b/emulators/mame0258.yml index 3df4ed857..b31382b7f 100644 --- a/emulators/mame0258.yml +++ b/emulators/mame0258.yml @@ -104,6 +104,7 @@ notes: 'libretro/mame built at the 0.258 release. BIOS root sets read from mamed sets and their ROMs are that release''s, not the current one''s.' files: - name: 3dobios.zip + path: mame/bios/3dobios.zip required: true category: bios_zip system: panasonic-3do @@ -130,6 +131,7 @@ files: sha1: b01c53da256dde43ffec4ad3fc3adfa8d635e943 description: Sanyo TRY 3DO Interactive Multiplayer - name: airlbios.zip + path: mame/bios/airlbios.zip required: false category: bios_zip system: sega-naomi @@ -152,6 +154,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: aleck64.zip + path: mame/bios/aleck64.zip required: true category: bios_zip source_ref: "upstream src/mame/nintendo/aleck64.cpp:1416" @@ -169,6 +172,7 @@ files: crc32: 4f2ae525 sha1: eab43f8cc52c8551d9cff6fced18ef80eaba6f05 - name: alg3do.zip + path: mame/bios/alg3do.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/3do.cpp:296" @@ -178,6 +182,7 @@ files: crc32: b832da9a sha1: 520d3d1b5897800af47f92efd2444a26b7a7dead - name: alg_bios.zip + path: mame/bios/alg_bios.zip required: true category: bios_zip source_ref: "upstream src/mame/amiga/alg.cpp:926" @@ -188,6 +193,7 @@ files: sha1: 891e9a547772fe0c6c19b610baf8bc4ea7fcb785 description: Kickstart 1.3 (34.5) - name: allied.zip + path: mame/bios/allied.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/allied.cpp:775" @@ -205,6 +211,7 @@ files: crc32: 13f42789 sha1: baa0f73fda08a3c5d6f1423fb329e4febb07ef97 - name: ar_bios.zip + path: mame/bios/ar_bios.zip required: true category: bios_zip source_ref: "upstream src/mame/amiga/arsystems.cpp:1015" @@ -294,6 +301,7 @@ files: crc32: a5cc4515 sha1: 80070521476e92323a6baa6e55928ca5b751a332 - name: aristmk5.zip + path: mame/bios/aristmk5.zip required: true category: bios_zip source_ref: "upstream src/mame/acorn/aristmk5.cpp:8644" @@ -383,6 +391,7 @@ files: crc32: 941d4cdb sha1: 1ca091fba69e92f262dbb3d40f515703c8981793 - name: aristmk6.zip + path: mame/bios/aristmk6.zip required: true category: bios_zip source_ref: "upstream src/mame/aristocrat/aristmk6.cpp:6544" @@ -772,6 +781,7 @@ files: crc32: 117b75f2 sha1: 2129286853d3c50b8a943b71334d4ef6b98adc05 - name: atarisy1.zip + path: mame/bios/atarisy1.zip required: true category: bios_zip source_ref: "upstream src/mame/atari/atarisy1.cpp:2554" @@ -837,6 +847,7 @@ files: crc32: 92d6a0b4 sha1: 0a42a4816c89447b16e1f3245409591efea98a4a - name: awbios.zip + path: mame/bios/awbios.zip required: true category: bios_zip system: sammy-atomiswave @@ -855,6 +866,7 @@ files: crc32: 82a105f0 sha1: 5128fe2ddcced77332bdcab691c09958051fa564 - name: bubsys.zip + path: mame/bios/bubsys.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/nemesis.cpp:3162" @@ -876,6 +888,7 @@ files: crc32: 2f44f970 sha1: 7ab46f9d5d587665782cefc623b8de0124a6d38a - name: cdibios.zip + path: mame/bios/cdibios.zip required: true category: bios_zip system: philips-cdi @@ -897,6 +910,7 @@ files: sha1: 56d0acd7caad51c7de703247cd6d842b36173079 bad_dump: true - name: cedmag.zip + path: mame/bios/cedmag.zip required: true category: bios_zip source_ref: "upstream src/mame/efo/cedar_magnet.cpp:1167" @@ -906,6 +920,7 @@ files: crc32: 86c4a4f0 sha1: 6db1a006b2e0b2a7cc9748ade881debb098b6757 - name: chihiro.zip + path: mame/bios/chihiro.zip required: true category: bios_zip system: sega-chihiro @@ -940,6 +955,7 @@ files: crc32: 7742ab62 sha1: 82dad6e2a75bab4a4840dc6939462f1fb9b95101 - name: coh1000a.zip + path: mame/bios/coh1000a.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5364" @@ -953,6 +969,7 @@ files: crc32: c425eaf5 sha1: decf77ab50f7f58c641c3214a11647924f3a8998 - name: coh1000c.zip + path: mame/bios/coh1000c.zip required: true category: bios_zip system: capcom-zn1 @@ -973,6 +990,7 @@ files: crc32: bb7ba033 sha1: 966f3aee5d00e1312c455f855915d621e6cb0672 - name: coh1000t.zip + path: mame/bios/coh1000t.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5397" @@ -986,6 +1004,7 @@ files: crc32: daac13e7 sha1: 96d94f2b06fb7ecd91454969f4959a583ffb9d5a - name: coh1000w.zip + path: mame/bios/coh1000w.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5360" @@ -999,6 +1018,7 @@ files: crc32: 1cac067e sha1: 8e87941bfb374172628c8a37647e3a66b7166aa8 - name: coh1001l.zip + path: mame/bios/coh1001l.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5445" @@ -1012,6 +1032,7 @@ files: crc32: 181668b3 sha1: 8d2fe1facb4473cc20b4b477aaf881f9280939cf - name: coh1002e.zip + path: mame/bios/coh1002e.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5423" @@ -1025,6 +1046,7 @@ files: crc32: a7dd922e sha1: 1069c1d9015028a51a1b314cfacb014ea90aa425 - name: coh1002m.zip + path: mame/bios/coh1002m.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5371" @@ -1038,6 +1060,7 @@ files: crc32: 50dc8322 sha1: cef4011c6c06d6fce546e1db5d9fbae155eabf57 - name: coh1002v.zip + path: mame/bios/coh1002v.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:5391" @@ -1051,6 +1074,7 @@ files: crc32: 1ce271df sha1: b01479dc75a4a8a86bee7ac7cd10af2bda332544 - name: coh3002c.zip + path: mame/bios/coh3002c.zip required: true category: bios_zip system: capcom-zn2 @@ -1065,6 +1089,7 @@ files: crc32: 7808fcef sha1: 3c3fb8227b05dace042dc1429b9f2355b1a15638 - name: coh3002t.zip + path: mame/bios/coh3002t.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/taitogn.cpp:1096" @@ -1096,6 +1121,7 @@ files: sha1: 047852d456b6ff85f8e640887caa03cf3e63ffad description: G-NET BIOS v2 flasher - name: crysbios.zip + path: mame/bios/crysbios.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/crystal.cpp:818" @@ -1111,6 +1137,7 @@ files: sha1: f60c016be2ff11e47b2192acddb92676043af501 description: AMG0110D PCB - name: cubo.zip + path: mame/bios/cubo.zip required: true category: bios_zip system: commodore-cubo @@ -1121,6 +1148,7 @@ files: crc32: d3837ae4 sha1: 06807db3181637455f4d46582d9972afec8956d9 - name: decocass.zip + path: mame/bios/decocass.zip required: true category: bios_zip system: deco-cassette @@ -1307,6 +1335,7 @@ files: crc32: a6df18fd sha1: 1f9ea47e372d31767c936c15852b43df2b0ee8ff - name: f355bios.zip + path: mame/bios/f355bios.zip required: false category: bios_zip system: sega-naomi @@ -1333,6 +1362,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: f355dlx.zip + path: mame/bios/f355dlx.zip required: false category: bios_zip system: sega-naomi @@ -1367,6 +1397,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: galgbios.zip + path: mame/bios/galgbios.zip required: true category: bios_zip source_ref: "upstream src/mame/ces/galgames.cpp:1240" @@ -1388,6 +1419,7 @@ files: crc32: e3ae423c sha1: 66d1964845a99a5ed4b19b4135b55cde6b5fe295 - name: gp_110.zip + path: mame/bios/gp_110.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/gp_1.cpp:577" @@ -1401,6 +1433,7 @@ files: crc32: a223f2e8 sha1: 767e15e19e11399935c890c1d1034dccf1ad7f92 - name: gq863.zip + path: mame/bios/gq863.zip required: true category: bios_zip system: konami-twinkle @@ -1415,6 +1448,7 @@ files: crc32: 6f42a09e sha1: cab5209f90f47b9ee6e721479913ad74e3ba84b1 - name: gts1.zip + path: mame/bios/gts1.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/gts1.cpp:1076" @@ -1428,6 +1462,7 @@ files: crc32: 4cd312dd sha1: 31245daa9972ef8652caee69986585bb8239e86e - name: hikaru.zip + path: mame/bios/hikaru.zip required: true category: bios_zip system: sega-hikaru @@ -1450,6 +1485,7 @@ files: crc32: 7cbf2fb6 sha1: 7384e3c9314add7d61f93c9edd9fb7788d08f423 - name: hng64.zip + path: mame/bios/hng64.zip required: true category: bios_zip system: hyper-neogeo64 @@ -1496,6 +1532,7 @@ files: crc32: dabec5d2 sha1: 19c5be89c57387d6ea563b3dc55674d0692af98e - name: hod2bios.zip + path: mame/bios/hod2bios.zip required: false category: bios_zip system: sega-naomi @@ -1530,6 +1567,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: isgsm.zip + path: mame/bios/isgsm.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/segas16b_isgsm.cpp:608" @@ -1539,6 +1577,7 @@ files: crc32: 2292585c sha1: 97ba0e0f0be832a5114d95151e519bc027f6675b - name: iteagle.zip + path: mame/bios/iteagle.zip required: true category: bios_zip source_ref: "upstream src/mame/itech/iteagle.cpp:715" @@ -1619,6 +1658,7 @@ files: crc32: 4f1ff45a sha1: 213cbdd6cd37ad9b5bfc9545084892a68d29f5ff - name: konamigv.zip + path: mame/bios/konamigv.zip required: true category: bios_zip system: konami-gv @@ -1629,6 +1669,7 @@ files: crc32: ad498d2d sha1: 02a82a2fe1fba0404517c3602324bfa64e23e478 - name: konamigx.zip + path: mame/bios/konamigx.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/konamigx.cpp:4045" @@ -1638,6 +1679,7 @@ files: crc32: d5fa95f5 sha1: c483aa98ff8ef40cdac359c19ad23fea5ecc1906 - name: konendev.zip + path: mame/bios/konendev.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/konendev.cpp:723" @@ -1647,6 +1689,7 @@ files: crc32: 36122a98 sha1: 3d2c40c9d504358d890364e26c9562e40314d8a4 - name: kpython.zip + path: mame/bios/kpython.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/kpython.cpp:376" @@ -1656,6 +1699,7 @@ files: crc32: 98de405e sha1: 4bc268a996825c1bdf6ae277d331fe7bdc0cc00c - name: kpython2.zip + path: mame/bios/kpython2.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/kpython2.cpp:1918" @@ -1665,6 +1709,7 @@ files: crc32: 79d60546 sha1: 0ea98a25a32145dda514de2f0d4bfbbd806bd00c - name: kviper.zip + path: mame/bios/kviper.zip required: true category: bios_zip system: konami-viper @@ -1683,6 +1728,7 @@ files: crc32: f1511505 sha1: ed7cd9b2763b3e377df9663943160f9871f65105 - name: lindbios.zip + path: mame/bios/lindbios.zip required: true category: bios_zip system: sega-lindbergh @@ -1712,11 +1758,13 @@ files: crc32: f78d14d7 sha1: f129787e487984edd23bf344f2e9500c85052275 - name: mac2bios.zip + path: mame/bios/mac2bios.zip required: false category: bios_zip source_ref: "upstream src/mame/seta/macs.cpp:796" contents: [] - name: macsbios.zip + path: mame/bios/macsbios.zip required: true category: bios_zip source_ref: "upstream src/mame/seta/macs.cpp:795" @@ -1730,6 +1778,7 @@ files: crc32: 538b68e4 sha1: a0534147791e94e726f49451d0e95671ae0a87d5 - name: maxaflex.zip + path: mame/bios/maxaflex.zip required: true category: bios_zip source_ref: "upstream src/mame/atari/maxaflex.cpp:450" @@ -1747,6 +1796,7 @@ files: crc32: edf5c950 sha1: 9ad046ea41a61585dd8d2f2d4167a3cc39d2928f - name: megaplay.zip + path: mame/bios/megaplay.zip required: true category: bios_zip system: sega-megaplay @@ -1786,6 +1836,7 @@ files: sha1: ba79183e4b522d1b57a46a56fc7d9b85de24df36 bad_dump: true - name: megatech.zip + path: mame/bios/megatech.zip required: true category: bios_zip system: sega-megatech @@ -1812,6 +1863,7 @@ files: sha1: c9008c431a937c084fb475273093ca0b434b5f47 description: Ver 0 Rev B (alt?) - name: naomi.zip + path: mame/bios/naomi.zip required: true category: bios_zip system: sega-naomi @@ -1940,6 +1992,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: naomi2.zip + path: mame/bios/naomi2.zip required: true category: bios_zip system: sega-naomi2 @@ -2006,6 +2059,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: naomigd.zip + path: mame/bios/naomigd.zip required: true category: bios_zip system: sega-naomigd @@ -2056,6 +2110,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: neogeo.zip + path: mame/bios/neogeo.zip required: true category: bios_zip system: snk-neogeo-mvs @@ -2202,6 +2257,7 @@ files: crc32: c2ea0cfd sha1: fd4a618cdcdbf849374f0a50dd8efe9dbab706c3 - name: nichidvd.zip + path: mame/bios/nichidvd.zip required: true category: bios_zip source_ref: "upstream src/mame/nichibutsu/hrdvd.cpp:1008" @@ -2219,6 +2275,7 @@ files: crc32: '36135792' sha1: 1b9c50bd02df8227b228b35cc485efd5a13ec639 - name: nss.zip + path: mame/bios/nss.zip required: true category: bios_zip system: nintendo-nss @@ -2240,6 +2297,7 @@ files: sha1: e3942f9d508c3c8074c3c3941376c37ca68b8e54 description: Nintendo Super System (Single Cart BIOS v3, hack?) - name: pgm.zip + path: mame/bios/pgm.zip required: true category: bios_zip system: igs-pgm @@ -2262,6 +2320,7 @@ files: crc32: 45ae7159 sha1: d3ed3ff3464557fd0df6b069b2e431528b0ebfa8 - name: playch10.zip + path: mame/bios/playch10.zip required: true category: bios_zip system: nintendo-playch10 @@ -2352,6 +2411,7 @@ files: crc32: 48de65dc sha1: d10acafc8da9ff479c270ec01180cca61efe62f5 - name: pumpitup.zip + path: mame/bios/pumpitup.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/xtom3d.cpp:453" @@ -2369,11 +2429,13 @@ files: crc32: 9c436cfa sha1: 480ea52e74721d1963ced41be5c482b7b913ccd2 - name: recel.zip + path: mame/bios/recel.zip required: false category: bios_zip source_ref: "upstream src/mame/pinball/recel.cpp:505" contents: [] - name: sammymdl.zip + path: mame/bios/sammymdl.zip required: true category: bios_zip source_ref: "upstream src/mame/sigma/sigmab98.cpp:2301" @@ -2383,6 +2445,7 @@ files: crc32: c3c74dc5 sha1: 07352e6dba7514214e778ba39e1ca773e4698858 - name: segasp.zip + path: mame/bios/segasp.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/segasp.cpp:977" @@ -2436,6 +2499,7 @@ files: crc32: 947ddfad sha1: 832a3db097af680d1d0eb9451b4650565f0cf8c7 - name: sfcbox.zip + path: mame/bios/sfcbox.zip required: true category: bios_zip system: nintendo-sfcbox @@ -2456,6 +2520,7 @@ files: crc32: ad3ec05c sha1: a3d336db585fe02a37c323422d9db6a33fd489a6 - name: shtzone.zip + path: mame/bios/shtzone.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/shtzone.cpp:362" @@ -2465,6 +2530,7 @@ files: crc32: ea8901d9 sha1: 43fd8bfc395e3b2e3fbe9645d692a5eb04783d9c - name: skns.zip + path: mame/bios/skns.zip required: true category: bios_zip system: super-kaneko-nova @@ -2499,6 +2565,7 @@ files: crc32: 1d90517c sha1: 463962ffe19880135f0d95a7beda79e27448e872 - name: stvbios.zip + path: mame/bios/stvbios.zip required: true category: bios_zip system: sega-stv @@ -2565,6 +2632,7 @@ files: crc32: 15432ae2 sha1: 7d9364d546f3d3f839ec36be148076f8d26a65a6 - name: su2000.zip + path: mame/bios/su2000.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/su2000.cpp:302" @@ -2746,6 +2814,7 @@ files: crc32: d84b58c2 sha1: 087b5a56ddb6bef6b1bc93b9a8e0d23de27aa399 - name: sys246.zip + path: mame/bios/sys246.zip required: true category: bios_zip system: namco-system246 @@ -2756,6 +2825,7 @@ files: crc32: 2b2e41a2 sha1: f0a74bbcaf801f3fd0b7002ebd0118564aae3528 - name: sys256.zip + path: mame/bios/sys256.zip required: true category: bios_zip system: namco-system256 @@ -2766,6 +2836,7 @@ files: crc32: b2a8eeb6 sha1: bc4fb4e1e53adbd92385f1726bd69663ff870f1e - name: sys573.zip + path: mame/bios/sys573.zip required: true category: bios_zip system: namco-system573 @@ -2802,6 +2873,7 @@ files: sha1: 779177e6312ef272483eeb64a5e84bbae6e301f2 description: Found on Dancing Stage Euro Mix 2 - name: taitotz.zip + path: mame/bios/taitotz.zip required: true category: bios_zip source_ref: "upstream src/mame/taito/taitotz.cpp:3057" @@ -2815,6 +2887,7 @@ files: crc32: c7c2dc6b sha1: bf88c818166c285130c5c73d6982f009da26e143 - name: tourvis.zip + path: mame/bios/tourvis.zip required: true category: bios_zip source_ref: "upstream src/mame/pce/tourvis.cpp:476" @@ -2875,6 +2948,7 @@ files: sha1: 881ea7802b9e241473bc8ced0472e0f1851c9886 description: VT-11 - name: triforce.zip + path: mame/bios/triforce.zip required: true category: bios_zip system: sega-triforce @@ -2885,6 +2959,7 @@ files: crc32: d1883221 sha1: c3cb7227e4dbc2af861e76d00cb59726105a2e4c - name: v4bios.zip + path: mame/bios/v4bios.zip required: true category: bios_zip source_ref: "upstream src/mame/barcrest/mpu4vid.cpp:8677" diff --git a/emulators/mame0278.yml b/emulators/mame0278.yml index f37e94c1f..786261693 100644 --- a/emulators/mame0278.yml +++ b/emulators/mame0278.yml @@ -104,6 +104,7 @@ notes: 'libretro/mame built at the 0.278 release. BIOS root sets read from mamed sets and their ROMs are that release''s, not the current one''s.' files: - name: 3dobios.zip + path: mame/bios/3dobios.zip required: true category: bios_zip system: panasonic-3do @@ -130,6 +131,7 @@ files: sha1: b01c53da256dde43ffec4ad3fc3adfa8d635e943 description: Sanyo TRY 3DO Interactive Multiplayer - name: airlbios.zip + path: mame/bios/airlbios.zip required: false category: bios_zip system: sega-naomi @@ -152,6 +154,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: aleck64.zip + path: mame/bios/aleck64.zip required: true category: bios_zip source_ref: "upstream src/mame/nintendo/aleck64.cpp:1415" @@ -169,6 +172,7 @@ files: crc32: 4f2ae525 sha1: eab43f8cc52c8551d9cff6fced18ef80eaba6f05 - name: alg3do.zip + path: mame/bios/alg3do.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/3do.cpp:296" @@ -178,6 +182,7 @@ files: crc32: b832da9a sha1: 520d3d1b5897800af47f92efd2444a26b7a7dead - name: alg_bios.zip + path: mame/bios/alg_bios.zip required: true category: bios_zip source_ref: "upstream src/mame/amiga/alg.cpp:925" @@ -188,6 +193,7 @@ files: sha1: 891e9a547772fe0c6c19b610baf8bc4ea7fcb785 description: Kickstart 1.3 (34.5) - name: allied.zip + path: mame/bios/allied.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/allied.cpp:775" @@ -205,6 +211,7 @@ files: crc32: 13f42789 sha1: baa0f73fda08a3c5d6f1423fb329e4febb07ef97 - name: ar_bios.zip + path: mame/bios/ar_bios.zip required: true category: bios_zip source_ref: "upstream src/mame/amiga/arsystems.cpp:1013" @@ -294,6 +301,7 @@ files: crc32: a5cc4515 sha1: 80070521476e92323a6baa6e55928ca5b751a332 - name: aristmk5.zip + path: mame/bios/aristmk5.zip required: true category: bios_zip source_ref: "upstream src/mame/acorn/aristmk5.cpp:9293" @@ -392,6 +400,7 @@ files: crc32: 941d4cdb sha1: 1ca091fba69e92f262dbb3d40f515703c8981793 - name: aristmk6.zip + path: mame/bios/aristmk6.zip required: true category: bios_zip source_ref: "upstream src/mame/aristocrat/aristmk6.cpp:6636" @@ -789,6 +798,7 @@ files: crc32: 117b75f2 sha1: 2129286853d3c50b8a943b71334d4ef6b98adc05 - name: aristmk7.zip + path: mame/bios/aristmk7.zip required: true category: bios_zip source_ref: "upstream src/mame/aristocrat/aristmk7.cpp:233" @@ -798,6 +808,7 @@ files: crc32: f2fea07e sha1: 285038473fbe3a5708045e2f8b14562f3c24b203 - name: atarisy1.zip + path: mame/bios/atarisy1.zip required: true category: bios_zip source_ref: "upstream src/mame/atari/atarisy1.cpp:2553" @@ -863,6 +874,7 @@ files: crc32: 92d6a0b4 sha1: 0a42a4816c89447b16e1f3245409591efea98a4a - name: awbios.zip + path: mame/bios/awbios.zip required: true category: bios_zip system: sammy-atomiswave @@ -881,6 +893,7 @@ files: crc32: 82a105f0 sha1: 5128fe2ddcced77332bdcab691c09958051fa564 - name: bubsys.zip + path: mame/bios/bubsys.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/nemesis.cpp:3234" @@ -902,6 +915,7 @@ files: crc32: 2f44f970 sha1: 7ab46f9d5d587665782cefc623b8de0124a6d38a - name: cdibios.zip + path: mame/bios/cdibios.zip required: true category: bios_zip system: philips-cdi @@ -923,6 +937,7 @@ files: sha1: 56d0acd7caad51c7de703247cd6d842b36173079 bad_dump: true - name: cedmag.zip + path: mame/bios/cedmag.zip required: true category: bios_zip source_ref: "upstream src/mame/efo/cedar_magnet.cpp:1166" @@ -932,6 +947,7 @@ files: crc32: 86c4a4f0 sha1: 6db1a006b2e0b2a7cc9748ade881debb098b6757 - name: chihiro.zip + path: mame/bios/chihiro.zip required: true category: bios_zip system: sega-chihiro @@ -966,6 +982,7 @@ files: crc32: 7742ab62 sha1: 82dad6e2a75bab4a4840dc6939462f1fb9b95101 - name: coh1000a.zip + path: mame/bios/coh1000a.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6072" @@ -979,6 +996,7 @@ files: crc32: c425eaf5 sha1: decf77ab50f7f58c641c3214a11647924f3a8998 - name: coh1000c.zip + path: mame/bios/coh1000c.zip required: true category: bios_zip system: capcom-zn1 @@ -999,6 +1017,7 @@ files: crc32: bb7ba033 sha1: 966f3aee5d00e1312c455f855915d621e6cb0672 - name: coh1000t.zip + path: mame/bios/coh1000t.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6046" @@ -1012,6 +1031,7 @@ files: crc32: daac13e7 sha1: 96d94f2b06fb7ecd91454969f4959a583ffb9d5a - name: coh1000w.zip + path: mame/bios/coh1000w.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6081" @@ -1025,6 +1045,7 @@ files: crc32: 1cac067e sha1: 8e87941bfb374172628c8a37647e3a66b7166aa8 - name: coh1001l.zip + path: mame/bios/coh1001l.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6085" @@ -1038,6 +1059,7 @@ files: crc32: 181668b3 sha1: 8d2fe1facb4473cc20b4b477aaf881f9280939cf - name: coh1002e.zip + path: mame/bios/coh1002e.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6095" @@ -1051,6 +1073,7 @@ files: crc32: a7dd922e sha1: 1069c1d9015028a51a1b314cfacb014ea90aa425 - name: coh1002m.zip + path: mame/bios/coh1002m.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6146" @@ -1064,6 +1087,7 @@ files: crc32: 50dc8322 sha1: cef4011c6c06d6fce546e1db5d9fbae155eabf57 - name: coh1002t.zip + path: mame/bios/coh1002t.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/taitogn.cpp:1378" @@ -1085,6 +1109,7 @@ files: crc32: 9100dbf2 sha1: 9ce888bd2a7e575c8ca71d978cb85de22afb5660 - name: coh1002v.zip + path: mame/bios/coh1002v.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/zn.cpp:6089" @@ -1098,6 +1123,7 @@ files: crc32: 1ce271df sha1: b01479dc75a4a8a86bee7ac7cd10af2bda332544 - name: coh3002c.zip + path: mame/bios/coh3002c.zip required: true category: bios_zip system: capcom-zn2 @@ -1112,6 +1138,7 @@ files: crc32: 7808fcef sha1: 3c3fb8227b05dace042dc1429b9f2355b1a15638 - name: coh3002t.zip + path: mame/bios/coh3002t.zip required: true category: bios_zip source_ref: "upstream src/mame/sony/taitogn.cpp:1377" @@ -1153,6 +1180,7 @@ files: sha1: c6918dfbb6fcf686dde4b731e84f740177ab31f0 description: MB2011 - name: crysbios.zip + path: mame/bios/crysbios.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/crystal.cpp:818" @@ -1168,6 +1196,7 @@ files: sha1: f60c016be2ff11e47b2192acddb92676043af501 description: AMG0110D PCB - name: cubo.zip + path: mame/bios/cubo.zip required: true category: bios_zip system: commodore-cubo @@ -1178,6 +1207,7 @@ files: crc32: d3837ae4 sha1: 06807db3181637455f4d46582d9972afec8956d9 - name: decocass.zip + path: mame/bios/decocass.zip required: true category: bios_zip system: deco-cassette @@ -1364,6 +1394,7 @@ files: crc32: a6df18fd sha1: 1f9ea47e372d31767c936c15852b43df2b0ee8ff - name: f355bios.zip + path: mame/bios/f355bios.zip required: false category: bios_zip system: sega-naomi @@ -1390,6 +1421,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: f355dlx.zip + path: mame/bios/f355dlx.zip required: false category: bios_zip system: sega-naomi @@ -1424,6 +1456,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: galgbios.zip + path: mame/bios/galgbios.zip required: true category: bios_zip source_ref: "upstream src/mame/ces/galgames.cpp:1288" @@ -1445,6 +1478,7 @@ files: crc32: e3ae423c sha1: 66d1964845a99a5ed4b19b4135b55cde6b5fe295 - name: gp_110.zip + path: mame/bios/gp_110.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/gp_1.cpp:577" @@ -1458,6 +1492,7 @@ files: crc32: a223f2e8 sha1: 767e15e19e11399935c890c1d1034dccf1ad7f92 - name: gq863.zip + path: mame/bios/gq863.zip required: true category: bios_zip system: konami-twinkle @@ -1472,6 +1507,7 @@ files: crc32: 6f42a09e sha1: cab5209f90f47b9ee6e721479913ad74e3ba84b1 - name: gts1.zip + path: mame/bios/gts1.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/gts1.cpp:1074" @@ -1485,6 +1521,7 @@ files: crc32: 4cd312dd sha1: 31245daa9972ef8652caee69986585bb8239e86e - name: hikaru.zip + path: mame/bios/hikaru.zip required: true category: bios_zip system: sega-hikaru @@ -1516,6 +1553,7 @@ files: sha1: 6c2de7dae32bef855d9bc556568c3a170f54caa5 bad_dump: true - name: hng64.zip + path: mame/bios/hng64.zip required: true category: bios_zip system: hyper-neogeo64 @@ -1562,6 +1600,7 @@ files: crc32: dabec5d2 sha1: 19c5be89c57387d6ea563b3dc55674d0692af98e - name: hod2bios.zip + path: mame/bios/hod2bios.zip required: false category: bios_zip system: sega-naomi @@ -1596,6 +1635,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: isgsm.zip + path: mame/bios/isgsm.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/segas16b_isgsm.cpp:608" @@ -1605,6 +1645,7 @@ files: crc32: 2292585c sha1: 97ba0e0f0be832a5114d95151e519bc027f6675b - name: iteagle.zip + path: mame/bios/iteagle.zip required: true category: bios_zip source_ref: "upstream src/mame/itech/iteagle.cpp:715" @@ -1685,6 +1726,7 @@ files: crc32: 4f1ff45a sha1: 213cbdd6cd37ad9b5bfc9545084892a68d29f5ff - name: konamigv.zip + path: mame/bios/konamigv.zip required: true category: bios_zip system: konami-gv @@ -1695,6 +1737,7 @@ files: crc32: ad498d2d sha1: 02a82a2fe1fba0404517c3602324bfa64e23e478 - name: konamigx.zip + path: mame/bios/konamigx.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/konamigx.cpp:4196" @@ -1704,6 +1747,7 @@ files: crc32: d5fa95f5 sha1: c483aa98ff8ef40cdac359c19ad23fea5ecc1906 - name: konendev.zip + path: mame/bios/konendev.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/konendev.cpp:914" @@ -1713,6 +1757,7 @@ files: crc32: 36122a98 sha1: 3d2c40c9d504358d890364e26c9562e40314d8a4 - name: kpython.zip + path: mame/bios/kpython.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/kpython.cpp:376" @@ -1722,6 +1767,7 @@ files: crc32: 98de405e sha1: 4bc268a996825c1bdf6ae277d331fe7bdc0cc00c - name: kpython2.zip + path: mame/bios/kpython2.zip required: true category: bios_zip source_ref: "upstream src/mame/konami/kpython2.cpp:1918" @@ -1731,6 +1777,7 @@ files: crc32: 79d60546 sha1: 0ea98a25a32145dda514de2f0d4bfbbd806bd00c - name: kviper.zip + path: mame/bios/kviper.zip required: true category: bios_zip system: konami-viper @@ -1749,6 +1796,7 @@ files: crc32: f1511505 sha1: ed7cd9b2763b3e377df9663943160f9871f65105 - name: lindbios.zip + path: mame/bios/lindbios.zip required: true category: bios_zip system: sega-lindbergh @@ -1778,11 +1826,13 @@ files: crc32: f78d14d7 sha1: f129787e487984edd23bf344f2e9500c85052275 - name: mac2bios.zip + path: mame/bios/mac2bios.zip required: false category: bios_zip source_ref: "upstream src/mame/seta/macs.cpp:791" contents: [] - name: macsbios.zip + path: mame/bios/macsbios.zip required: true category: bios_zip source_ref: "upstream src/mame/seta/macs.cpp:790" @@ -1800,6 +1850,7 @@ files: crc32: 669096c1 sha1: 36f55a2e4865bdf0506746a4df51bfb1944f905e - name: maxaflex.zip + path: mame/bios/maxaflex.zip required: true category: bios_zip source_ref: "upstream src/mame/atari/maxaflex.cpp:450" @@ -1817,6 +1868,7 @@ files: crc32: edf5c950 sha1: 9ad046ea41a61585dd8d2f2d4167a3cc39d2928f - name: megaplay.zip + path: mame/bios/megaplay.zip required: true category: bios_zip system: sega-megaplay @@ -1856,6 +1908,7 @@ files: sha1: ba79183e4b522d1b57a46a56fc7d9b85de24df36 bad_dump: true - name: megatech.zip + path: mame/bios/megatech.zip required: true category: bios_zip system: sega-megatech @@ -1882,6 +1935,7 @@ files: sha1: c9008c431a937c084fb475273093ca0b434b5f47 description: Ver 0 Rev B (alt?) - name: miuchiz.zip + path: mame/bios/miuchiz.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/miuchiz.cpp:227" @@ -1891,6 +1945,7 @@ files: crc32: 2ff7ec96 sha1: 633365fd19a3d0f2ce56cb499b2577a5fb53e466 - name: naomi.zip + path: mame/bios/naomi.zip required: true category: bios_zip system: sega-naomi @@ -2023,6 +2078,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: naomi2.zip + path: mame/bios/naomi2.zip required: true category: bios_zip system: sega-naomi2 @@ -2089,6 +2145,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: naomigd.zip + path: mame/bios/naomigd.zip required: true category: bios_zip system: sega-naomigd @@ -2139,6 +2196,7 @@ files: crc32: 3ea24b6a sha1: 3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc - name: neogeo.zip + path: mame/bios/neogeo.zip required: true category: bios_zip system: snk-neogeo-mvs @@ -2285,6 +2343,7 @@ files: crc32: c2ea0cfd sha1: fd4a618cdcdbf849374f0a50dd8efe9dbab706c3 - name: nichidvd.zip + path: mame/bios/nichidvd.zip required: true category: bios_zip source_ref: "upstream src/mame/nichibutsu/hrdvd.cpp:1010" @@ -2302,6 +2361,7 @@ files: crc32: '36135792' sha1: 1b9c50bd02df8227b228b35cc485efd5a13ec639 - name: nss.zip + path: mame/bios/nss.zip required: true category: bios_zip system: nintendo-nss @@ -2323,6 +2383,7 @@ files: sha1: e3942f9d508c3c8074c3c3941376c37ca68b8e54 description: Nintendo Super System (Single Cart BIOS v3, hack?) - name: pgm.zip + path: mame/bios/pgm.zip required: true category: bios_zip system: igs-pgm @@ -2345,6 +2406,7 @@ files: crc32: 45ae7159 sha1: d3ed3ff3464557fd0df6b069b2e431528b0ebfa8 - name: playch10.zip + path: mame/bios/playch10.zip required: true category: bios_zip system: nintendo-playch10 @@ -2435,6 +2497,7 @@ files: crc32: 48de65dc sha1: d10acafc8da9ff479c270ec01180cca61efe62f5 - name: pumpitup.zip + path: mame/bios/pumpitup.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/xtom3d.cpp:993" @@ -2458,6 +2521,7 @@ files: crc32: 9c436cfa sha1: 480ea52e74721d1963ced41be5c482b7b913ccd2 - name: recel.zip + path: mame/bios/recel.zip required: true category: bios_zip source_ref: "upstream src/mame/pinball/recel.cpp:547" @@ -2471,6 +2535,7 @@ files: crc32: 39a70611 sha1: 8545e168a5f256150bcff12d1e6d8efffd08c3cd - name: sammymdl.zip + path: mame/bios/sammymdl.zip required: true category: bios_zip source_ref: "upstream src/mame/sigma/sigmab98.cpp:2409" @@ -2491,6 +2556,7 @@ files: sha1: c3ceea196e5c1c6a9e03cf3a22e9f25f0099a38e description: IPL Ver. 1.0 - name: segasp.zip + path: mame/bios/segasp.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/segasp.cpp:1041" @@ -2544,6 +2610,7 @@ files: crc32: 947ddfad sha1: 832a3db097af680d1d0eb9451b4650565f0cf8c7 - name: sfcbox.zip + path: mame/bios/sfcbox.zip required: true category: bios_zip system: nintendo-sfcbox @@ -2564,6 +2631,7 @@ files: crc32: ad3ec05c sha1: a3d336db585fe02a37c323422d9db6a33fd489a6 - name: shtzone.zip + path: mame/bios/shtzone.zip required: true category: bios_zip source_ref: "upstream src/mame/sega/shtzone.cpp:378" @@ -2573,6 +2641,7 @@ files: crc32: ea8901d9 sha1: 43fd8bfc395e3b2e3fbe9645d692a5eb04783d9c - name: skns.zip + path: mame/bios/skns.zip required: true category: bios_zip system: super-kaneko-nova @@ -2607,6 +2676,7 @@ files: crc32: 1d90517c sha1: 463962ffe19880135f0d95a7beda79e27448e872 - name: stvbios.zip + path: mame/bios/stvbios.zip required: true category: bios_zip system: sega-stv @@ -2673,6 +2743,7 @@ files: crc32: 15432ae2 sha1: 7d9364d546f3d3f839ec36be148076f8d26a65a6 - name: su2000.zip + path: mame/bios/su2000.zip required: true category: bios_zip source_ref: "upstream src/mame/misc/su2000.cpp:302" @@ -2854,6 +2925,7 @@ files: crc32: d84b58c2 sha1: 087b5a56ddb6bef6b1bc93b9a8e0d23de27aa399 - name: sys246.zip + path: mame/bios/sys246.zip required: true category: bios_zip system: namco-system246 @@ -2864,6 +2936,7 @@ files: crc32: 2b2e41a2 sha1: f0a74bbcaf801f3fd0b7002ebd0118564aae3528 - name: sys256.zip + path: mame/bios/sys256.zip required: true category: bios_zip system: namco-system256 @@ -2874,6 +2947,7 @@ files: crc32: b2a8eeb6 sha1: bc4fb4e1e53adbd92385f1726bd69663ff870f1e - name: sys573.zip + path: mame/bios/sys573.zip required: true category: bios_zip system: namco-system573 @@ -2910,6 +2984,7 @@ files: sha1: 779177e6312ef272483eeb64a5e84bbae6e301f2 description: Found on Dancing Stage Euro Mix 2 - name: taitotz.zip + path: mame/bios/taitotz.zip required: true category: bios_zip source_ref: "upstream src/mame/taito/taitotz.cpp:3014" @@ -2923,6 +2998,7 @@ files: crc32: c7c2dc6b sha1: bf88c818166c285130c5c73d6982f009da26e143 - name: tourvis.zip + path: mame/bios/tourvis.zip required: true category: bios_zip source_ref: "upstream src/mame/pce/tourvis.cpp:475" @@ -2983,6 +3059,7 @@ files: sha1: 881ea7802b9e241473bc8ced0472e0f1851c9886 description: VT-11 - name: triforce.zip + path: mame/bios/triforce.zip required: true category: bios_zip system: sega-triforce @@ -2993,6 +3070,7 @@ files: crc32: d1883221 sha1: c3cb7227e4dbc2af861e76d00cb59726105a2e4c - name: v4bios.zip + path: mame/bios/v4bios.zip required: true category: bios_zip source_ref: "upstream src/mame/barcrest/mpu4vid.cpp:8696" diff --git a/emulators/mamearcade.yml b/emulators/mamearcade.yml index 1eea839c2..3a6ee87bd 100644 --- a/emulators/mamearcade.yml +++ b/emulators/mamearcade.yml @@ -67,7 +67,9 @@ notes: | selection via src/mame/arcade.flt: 1130 arcade drivers from the full set. Excludes console/computer/pinball/fruit machine drivers. 50 BIOS root sets (vs 99 in full MAME). romload.cpp unmodified. - ROM search: content_dir + system_dir/mame/bios + system_dir/mame/roms. + ROM search: content_dir + system_dir/mame/bios + system_dir/mame/roms, never + system_dir itself (src/osd/libretro/libretro-internal/retro_init.cpp:580-597), + so the sets are read in mame/bios. files: # Support trees under system_dir/mame/, the paths Set_Path_Option passes @@ -104,6 +106,7 @@ files: # SNK Neo Geo MVS (AES excluded via arcade.flt) - name: neogeo.zip + path: "mame/bios/neogeo.zip" required: true category: bios_zip system: snk-neogeo-mvs @@ -252,6 +255,7 @@ files: # IGS PGM - name: pgm.zip + path: "mame/bios/pgm.zip" required: true category: bios_zip system: igs-pgm @@ -276,6 +280,7 @@ files: # Sega NAOMI / NAOMI 2 / GD-ROM / Atomiswave - name: naomi.zip + path: "mame/bios/naomi.zip" required: true category: bios_zip system: sega-naomi @@ -413,6 +418,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: naomi2.zip + path: "mame/bios/naomi2.zip" required: true category: bios_zip system: sega-naomi2 @@ -484,6 +490,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: naomigd.zip + path: "mame/bios/naomigd.zip" required: true category: bios_zip system: sega-naomigd @@ -535,6 +542,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: awbios.zip + path: "mame/bios/awbios.zip" required: true category: bios_zip system: sammy-atomiswave @@ -554,6 +562,7 @@ files: sha1: "5128fe2ddcced77332bdcab691c09958051fa564" - name: hod2bios.zip + path: "mame/bios/hod2bios.zip" required: false category: bios_zip system: sega-naomi @@ -590,6 +599,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: f355dlx.zip + path: "mame/bios/f355dlx.zip" required: false category: bios_zip system: sega-naomi @@ -625,6 +635,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: f355bios.zip + path: "mame/bios/f355bios.zip" required: false category: bios_zip system: sega-naomi @@ -652,6 +663,7 @@ files: sha1: "3a730ebcf56e0060fef6b1b02eb2eb7cfb7e61dc" - name: airlbios.zip + path: "mame/bios/airlbios.zip" required: false category: bios_zip system: sega-naomi @@ -676,6 +688,7 @@ files: # Sega ST-V - name: stvbios.zip + path: "mame/bios/stvbios.zip" required: true category: bios_zip system: sega-stv @@ -743,6 +756,7 @@ files: sha1: "7d9364d546f3d3f839ec36be148076f8d26a65a6" - name: sammymdl.zip + path: "mame/bios/sammymdl.zip" required: true category: bios_zip system: sammy-medal @@ -766,6 +780,7 @@ files: # Sega Mega Drive arcade - name: megaplay.zip + path: "mame/bios/megaplay.zip" required: true category: bios_zip system: sega-megaplay @@ -806,6 +821,7 @@ files: bad_dump: true - name: megatech.zip + path: "mame/bios/megatech.zip" required: true category: bios_zip system: sega-megatech @@ -833,6 +849,7 @@ files: sha1: "c9008c431a937c084fb475273093ca0b434b5f47" - name: isgsm.zip + path: "mame/bios/isgsm.zip" required: true category: bios_zip system: sega-isgsm @@ -845,6 +862,7 @@ files: # DECO Cassette - name: decocass.zip + path: "mame/bios/decocass.zip" required: true category: bios_zip system: deco-cassette @@ -1033,6 +1051,7 @@ files: # Nintendo arcade - name: playch10.zip + path: "mame/bios/playch10.zip" required: true category: bios_zip system: nintendo-playch10 @@ -1124,6 +1143,7 @@ files: sha1: "d10acafc8da9ff479c270ec01180cca61efe62f5" - name: nss.zip + path: "mame/bios/nss.zip" required: true category: bios_zip system: nintendo-nss @@ -1146,6 +1166,7 @@ files: sha1: "e3942f9d508c3c8074c3c3941376c37ca68b8e54" - name: aleck64.zip + path: "mame/bios/aleck64.zip" required: true category: bios_zip system: nintendo-aleck64 @@ -1166,6 +1187,7 @@ files: # Philips CD-i - name: cdibios.zip + path: "mame/bios/cdibios.zip" required: true category: bios_zip system: philips-cdi @@ -1189,6 +1211,7 @@ files: # Commodore Cubo (CD32-based) - name: cubo.zip + path: "mame/bios/cubo.zip" required: true category: bios_zip system: commodore-cubo @@ -1201,6 +1224,7 @@ files: # Namco - name: sys573.zip + path: "mame/bios/sys573.zip" required: true category: bios_zip system: namco-system573 @@ -1239,6 +1263,7 @@ files: # Konami - name: konamigx.zip + path: "mame/bios/konamigx.zip" required: true category: bios_zip system: konami-gx @@ -1250,6 +1275,7 @@ files: sha1: "c483aa98ff8ef40cdac359c19ad23fea5ecc1906" - name: konamigv.zip + path: "mame/bios/konamigv.zip" required: true category: bios_zip system: konami-gv @@ -1261,6 +1287,7 @@ files: sha1: "02a82a2fe1fba0404517c3602324bfa64e23e478" - name: kviper.zip + path: "mame/bios/kviper.zip" required: true category: bios_zip system: konami-viper @@ -1280,6 +1307,7 @@ files: sha1: "ed7cd9b2763b3e377df9663943160f9871f65105" - name: gq863.zip + path: "mame/bios/gq863.zip" required: true category: bios_zip system: konami-twinkle @@ -1295,6 +1323,7 @@ files: sha1: "cab5209f90f47b9ee6e721479913ad74e3ba84b1" - name: bubsys.zip + path: "mame/bios/bubsys.zip" required: true category: bios_zip system: konami-bubble-system @@ -1319,6 +1348,7 @@ files: # Sony ZN-based (PSX arcade) - name: coh1000c.zip + path: "mame/bios/coh1000c.zip" required: true category: bios_zip system: capcom-zn1 @@ -1340,6 +1370,7 @@ files: sha1: "966f3aee5d00e1312c455f855915d621e6cb0672" - name: coh3002c.zip + path: "mame/bios/coh3002c.zip" required: true category: bios_zip system: capcom-zn2 @@ -1355,6 +1386,7 @@ files: sha1: "3c3fb8227b05dace042dc1429b9f2355b1a15638" - name: coh1000t.zip + path: "mame/bios/coh1000t.zip" required: true category: bios_zip system: taito-fx1 @@ -1370,6 +1402,7 @@ files: sha1: "96d94f2b06fb7ecd91454969f4959a583ffb9d5a" - name: coh1000a.zip + path: "mame/bios/coh1000a.zip" required: true category: bios_zip system: acclaim-zn1 @@ -1385,6 +1418,7 @@ files: sha1: "decf77ab50f7f58c641c3214a11647924f3a8998" - name: coh1000w.zip + path: "mame/bios/coh1000w.zip" required: true category: bios_zip system: atari-zn1 @@ -1400,6 +1434,7 @@ files: sha1: "8e87941bfb374172628c8a37647e3a66b7166aa8" - name: coh1001l.zip + path: "mame/bios/coh1001l.zip" required: true category: bios_zip system: atlus-zn1 @@ -1415,6 +1450,7 @@ files: sha1: "8d2fe1facb4473cc20b4b477aaf881f9280939cf" - name: coh1002v.zip + path: "mame/bios/coh1002v.zip" required: true category: bios_zip system: videosystem-zn1 @@ -1430,6 +1466,7 @@ files: sha1: "b01479dc75a4a8a86bee7ac7cd10af2bda332544" - name: coh1002e.zip + path: "mame/bios/coh1002e.zip" required: true category: bios_zip system: eighting-zn1 @@ -1445,6 +1482,7 @@ files: sha1: "1069c1d9015028a51a1b314cfacb014ea90aa425" - name: coh1002m.zip + path: "mame/bios/coh1002m.zip" required: true category: bios_zip system: tecmo-tps @@ -1461,6 +1499,7 @@ files: # Taito - name: coh3002t.zip + path: "mame/bios/coh3002t.zip" required: true category: bios_zip system: taito-gnet @@ -1504,6 +1543,7 @@ files: sha1: "c6918dfbb6fcf686dde4b731e84f740177ab31f0" - name: coh1002t.zip + path: "mame/bios/coh1002t.zip" required: true category: bios_zip system: taito-gnet @@ -1528,6 +1568,7 @@ files: # Super Kaneko Nova System - name: skns.zip + path: "mame/bios/skns.zip" required: true category: bios_zip system: super-kaneko-nova @@ -1563,6 +1604,7 @@ files: sha1: "463962ffe19880135f0d95a7beda79e27448e872" - name: mac2bios.zip + path: "mame/bios/mac2bios.zip" required: false category: bios_zip system: imax-macs @@ -1570,6 +1612,7 @@ files: note: "macs2os_l.bin and macs2os_h.bin are both NO_DUMP (src/mame/seta/macs.cpp:532-535). handle_missing_file (src/emu/romload.cpp:529-571) counts a missing NO_DUMP ROM as known bad, not an error, so the machine runs without the set." - name: macsbios.zip + path: "mame/bios/macsbios.zip" required: true category: bios_zip system: imax-macs @@ -1590,6 +1633,7 @@ files: # Hyper Neo-Geo 64 - name: hng64.zip + path: "mame/bios/hng64.zip" required: true category: bios_zip system: hyper-neogeo64 @@ -1638,6 +1682,7 @@ files: # Amiga-based - name: ar_bios.zip + path: "mame/bios/ar_bios.zip" required: true category: bios_zip system: arcadia-systems @@ -1730,6 +1775,7 @@ files: # Atari - name: atarisy1.zip + path: "mame/bios/atarisy1.zip" required: true category: bios_zip system: atari-system1 @@ -1797,6 +1843,7 @@ files: sha1: "0a42a4816c89447b16e1f3245409591efea98a4a" - name: maxaflex.zip + path: "mame/bios/maxaflex.zip" required: true category: bios_zip system: exidy-maxaflex @@ -1817,6 +1864,7 @@ files: # Crystal System - name: crysbios.zip + path: "mame/bios/crysbios.zip" required: true category: bios_zip system: brezzasoft-crystal @@ -1835,6 +1883,7 @@ files: # Galaxy Games - name: galgames.zip + path: "mame/bios/galgames.zip" required: true category: bios_zip system: ces-galaxy-games @@ -1867,6 +1916,7 @@ files: # EFO Cedar Magnet - name: cedmag.zip + path: "mame/bios/cedmag.zip" required: true category: bios_zip system: efo-cedar-magnet @@ -1879,6 +1929,7 @@ files: # Misc - name: iteagle.zip + path: "mame/bios/iteagle.zip" required: true category: bios_zip system: itech-eagle @@ -1966,6 +2017,7 @@ files: sha1: "213cbdd6cd37ad9b5bfc9545084892a68d29f5ff" - name: pumpitup.zip + path: "mame/bios/pumpitup.zip" required: true category: bios_zip system: andamiro-pumpitup diff --git a/emulators/mamemess.yml b/emulators/mamemess.yml index 043df037f..eace3aea0 100644 --- a/emulators/mamemess.yml +++ b/emulators/mamemess.yml @@ -57,7 +57,9 @@ notes: | romload.cpp unmodified. No hiscore support. Paths under system_dir/mame/ (artwork, cheat, hash, ini, plugins, samples, - crosshair). ROM search: content_dir + system_dir/mame/bios + system_dir/mame/roms. + crosshair). ROM search: content_dir + system_dir/mame/bios + system_dir/mame/roms, + never system_dir itself (src/osd/libretro/libretro-internal/retro_init.cpp:580-597), + so the sets are read in mame/bios. Hash directory contains software list XMLs needed for MESS software loading. mess.flt exceptions: adds AES (+aes), CD-i consoles (+cdimono1, +cdimono2, @@ -457,6 +459,7 @@ files: # Miuchiz Virtual Companions - name: miuchiz.zip + path: "mame/bios/miuchiz.zip" required: true category: bios_zip source_ref: "upstream src/mame/misc/miuchiz.cpp:227" @@ -468,6 +471,7 @@ files: # XaviX TV games: e-kara family - name: ekara.zip + path: "mame/bios/ekara.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2904" @@ -478,6 +482,7 @@ files: sha1: "d75dda7434933135d2f7e353840a9384e9a0d586" - name: ekaraa.zip + path: "mame/bios/ekaraa.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2905" @@ -488,6 +493,7 @@ files: sha1: "450fbe53826cdb87ec797f84b9757987afcc1ec5" - name: ekaraj.zip + path: "mame/bios/ekaraj.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2906" @@ -498,6 +504,7 @@ files: sha1: "58b7f36a81571a2df5e812c118fdf68812a05abc" - name: ekarag.zip + path: "mame/bios/ekarag.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2907" @@ -508,6 +515,7 @@ files: sha1: "433e65a6ea029b67ee62b4b3de52ff3504cfdf16" - name: ekaras.zip + path: "mame/bios/ekaras.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2908" @@ -518,6 +526,7 @@ files: sha1: "402053e22e371c5f5e8069a4bf3b33841e742375" - name: isinger.zip + path: "mame/bios/isinger.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2910" @@ -528,6 +537,7 @@ files: sha1: "879da069ca8c126232a1b2dfcce25c8615540e48" - name: ekaraphs.zip + path: "mame/bios/ekaraphs.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2913" @@ -538,6 +548,7 @@ files: sha1: "baaf35d56fa45b6f995b8466331bb30f0035f734" - name: epitch.zip + path: "mame/bios/epitch.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2916" @@ -548,6 +559,7 @@ files: sha1: "58b7f36a81571a2df5e812c118fdf68812a05abc" - name: ekaramix.zip + path: "mame/bios/ekaramix.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2919" @@ -559,6 +571,7 @@ files: # XaviX TV games: DDR / Popira / misc - name: ddrfammt.zip + path: "mame/bios/ddrfammt.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2922" @@ -569,6 +582,7 @@ files: sha1: "a1043047056dd27bca69767ee2044461ec549465" - name: popira.zip + path: "mame/bios/popira.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2925" @@ -579,6 +593,7 @@ files: sha1: "fb2ae023fc8a188c79b2d6550f737e06c05e12da" - name: popirak.zip + path: "mame/bios/popirak.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2927" @@ -589,6 +604,7 @@ files: sha1: "7877ac33b57bdd8ceac6bda3b0006a3274ad4dce" - name: popira2.zip + path: "mame/bios/popira2.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2930" @@ -599,6 +615,7 @@ files: sha1: "8b6c812d37e2dc2f2531b0e47d84ad8485729dc5" - name: taikodp.zip + path: "mame/bios/taikodp.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2933" @@ -609,6 +626,7 @@ files: sha1: "03cae465965935fc084fb906f8f5de7679f42dd1" - name: jpopira.zip + path: "mame/bios/jpopira.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2936" @@ -623,6 +641,7 @@ files: sha1: "e8f4ab51445777fe459f9ff09333f548c4e3507c" - name: evio.zip + path: "mame/bios/evio.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2939" @@ -633,6 +652,7 @@ files: sha1: "f2b7e213eb78065a63ef484a619bcfc61299e30e" - name: tak_daig.zip + path: "mame/bios/tak_daig.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2944" @@ -643,6 +663,7 @@ files: sha1: "7d7b54684f8b0b92daf02738560779c7df627b91" - name: gcslottv.zip + path: "mame/bios/gcslottv.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2946" @@ -653,6 +674,7 @@ files: sha1: "1c7fc0c85d817db1550d40c0258f424770e0bd81" - name: hikara.zip + path: "mame/bios/hikara.zip" required: true category: bios_zip source_ref: "source src/mame/tvgames/xavix.cpp:2951" @@ -664,6 +686,7 @@ files: # Bally Astrocade - name: astrocde.zip + path: "mame/bios/astrocde.zip" required: true category: bios_zip system: bally-astrocade @@ -675,6 +698,7 @@ files: crc32: "ebc77f3a" - name: astrocdl.zip + path: "mame/bios/astrocdl.zip" required: false category: bios_zip system: bally-astrocade @@ -686,6 +710,7 @@ files: crc32: "d7c517ba" - name: astrocdw.zip + path: "mame/bios/astrocdw.zip" required: false category: bios_zip system: bally-astrocade @@ -698,6 +723,7 @@ files: # Apple II family: machine ROM sets - name: apple2.zip + path: "mame/bios/apple2.zip" required: true category: bios_zip system: apple2 @@ -729,6 +755,7 @@ files: crc32: "079589c4" - name: apple2p.zip + path: "mame/bios/apple2p.zip" required: true category: bios_zip system: apple2 @@ -764,6 +791,7 @@ files: crc32: "079589c4" - name: apple2e.zip + path: "mame/bios/apple2e.zip" required: true category: bios_zip system: apple2 @@ -787,6 +815,7 @@ files: crc32: "e47045f4" - name: apple2ee.zip + path: "mame/bios/apple2ee.zip" required: true category: bios_zip system: apple2 @@ -811,6 +840,7 @@ files: # Apple II: peripheral device ROM sets - name: a2diskiing.zip + path: "mame/bios/a2diskiing.zip" required: true category: bios_zip system: apple2 @@ -823,6 +853,7 @@ files: crc32: "ce7144f6" - name: d2fdc.zip + path: "mame/bios/d2fdc.zip" required: true category: bios_zip system: apple2 @@ -835,6 +866,7 @@ files: crc32: "b72a2c70" - name: a2cffa02.zip + path: "mame/bios/a2cffa02.zip" required: false category: bios_zip system: apple2 @@ -847,6 +879,7 @@ files: crc32: "3ecafce5" - name: votrsc01.zip + path: "mame/bios/votrsc01.zip" required: false category: bios_zip system: apple2 @@ -859,6 +892,7 @@ files: crc32: "528d1c57" - name: votrsc01a.zip + path: "mame/bios/votrsc01a.zip" required: false category: bios_zip system: apple2 @@ -872,6 +906,7 @@ files: # Apple IIgs - name: apple2gs.zip + path: "mame/bios/apple2gs.zip" required: true category: bios_zip system: apple-iigs @@ -896,6 +931,7 @@ files: # Casio Loopy - name: casloopy.zip + path: "mame/bios/casloopy.zip" required: true category: bios_zip system: casio-loopy @@ -912,6 +948,7 @@ files: # Casio PV-2000 - name: pv2000.zip + path: "mame/bios/pv2000.zip" required: true category: bios_zip system: casio-pv2000 @@ -924,6 +961,7 @@ files: # Coleco Adam - name: adam.zip + path: "mame/bios/adam.zip" required: true category: bios_zip system: coleco-adam @@ -959,6 +997,7 @@ files: crc32: "035a7a3d" - name: adam_kb.zip + path: "mame/bios/adam_kb.zip" required: true category: bios_zip system: coleco-adam @@ -970,6 +1009,7 @@ files: crc32: "ef204746" - name: adam_prn.zip + path: "mame/bios/adam_prn.zip" required: true category: bios_zip system: coleco-adam @@ -981,6 +1021,7 @@ files: crc32: "e8db783b" - name: adam_ddp.zip + path: "mame/bios/adam_ddp.zip" required: true category: bios_zip system: coleco-adam @@ -992,6 +1033,7 @@ files: crc32: "6b9ea1cf" - name: adam_fdc.zip + path: "mame/bios/adam_fdc.zip" required: true category: bios_zip system: coleco-adam @@ -1003,30 +1045,35 @@ files: crc32: "4b0b7143" - name: adam_fdc_320kb.zip + path: "mame/bios/adam_fdc_320kb.zip" required: false category: bios_zip system: coleco-adam source_ref: "upstream src/devices/bus/adamnet/fdc.cpp:76-85" - name: adam_fdc_a720dipi.zip + path: "mame/bios/adam_fdc_a720dipi.zip" required: false category: bios_zip system: coleco-adam source_ref: "upstream src/devices/bus/adamnet/fdc.cpp:92-96" - name: adam_fdc_fp720at.zip + path: "mame/bios/adam_fdc_fp720at.zip" required: false category: bios_zip system: coleco-adam source_ref: "upstream src/devices/bus/adamnet/fdc.cpp:103-107" - name: adam_fdc_mihddd.zip + path: "mame/bios/adam_fdc_mihddd.zip" required: false category: bios_zip system: coleco-adam source_ref: "upstream src/devices/bus/adamnet/fdc.cpp:114-117" - name: adam_spi.zip + path: "mame/bios/adam_spi.zip" required: false category: bios_zip system: coleco-adam @@ -1034,6 +1081,7 @@ files: # Entex Adventure Vision - name: advision.zip + path: "mame/bios/advision.zip" required: true category: bios_zip system: entex-advision @@ -1050,6 +1098,7 @@ files: # Bandai RX-78 - name: rx78.zip + path: "mame/bios/rx78.zip" required: true category: bios_zip system: bandai-rx78 @@ -1063,6 +1112,7 @@ files: # VTech CreatiVision - name: crvision.zip + path: "mame/bios/crvision.zip" required: true category: bios_zip system: crvision @@ -1074,6 +1124,7 @@ files: crc32: "c3c590c6" - name: fnvision.zip + path: "mame/bios/fnvision.zip" required: false category: bios_zip system: crvision @@ -1086,6 +1137,7 @@ files: crc32: "05602697" - name: lasr2001.zip + path: "mame/bios/lasr2001.zip" required: false category: bios_zip system: crvision @@ -1098,6 +1150,7 @@ files: crc32: "4dc35c39" - name: manager.zip + path: "mame/bios/manager.zip" required: false category: bios_zip system: crvision @@ -1115,6 +1168,7 @@ files: # VTech Laser 310 (VZ-300) - name: laser310.zip + path: "mame/bios/laser310.zip" required: true category: bios_zip system: laser310 @@ -1132,6 +1186,7 @@ files: # VTech Socrates Educational Video System - name: socrates.zip + path: "mame/bios/socrates.zip" required: true category: bios_zip system: vtech-socrates @@ -1161,6 +1216,7 @@ files: # Mattel Aquarius - name: aquarius.zip + path: "mame/bios/aquarius.zip" required: true category: bios_zip system: mattel-aquarius @@ -1180,6 +1236,7 @@ files: crc32: "e117f57c" - name: aquarius2.zip + path: "mame/bios/aquarius2.zip" required: true category: bios_zip system: mattel-aquarius @@ -1199,6 +1256,7 @@ files: crc32: "e117f57c" - name: aquarius_ar.zip + path: "mame/bios/aquarius_ar.zip" required: true category: bios_zip system: mattel-aquarius @@ -1215,6 +1273,7 @@ files: # Camputers Lynx 48K - name: lynx48k.zip + path: "mame/bios/lynx48k.zip" required: true category: bios_zip system: camplynx @@ -1239,6 +1298,7 @@ files: # Camputers Lynx 96K - name: lynx96k.zip + path: "mame/bios/lynx96k.zip" required: true category: bios_zip system: camplynx @@ -1271,6 +1331,7 @@ files: # Camputers Lynx 128K - name: lynx128k.zip + path: "mame/bios/lynx128k.zip" required: true category: bios_zip system: camplynx @@ -1295,6 +1356,7 @@ files: # EACA Colour Genie: parent machine ROM set - name: cgenie.zip + path: "mame/bios/cgenie.zip" required: true category: bios_zip system: cgenie @@ -1327,6 +1389,7 @@ files: # EACA Colour Genie: clone: New Zealand - name: cgenienz.zip + path: "mame/bios/cgenienz.zip" required: false category: bios_zip system: cgenie @@ -1347,6 +1410,7 @@ files: # EACA Colour Genie: expansion: FDC - name: cgenie_fdc.zip + path: "mame/bios/cgenie_fdc.zip" required: false category: bios_zip system: cgenie @@ -1372,6 +1436,7 @@ files: # Acorn Atom: parent machine ROM set - name: atom.zip + path: "mame/bios/atom.zip" required: true category: bios_zip system: atom @@ -1388,6 +1453,7 @@ files: # Acorn Atom: clone: Atom with BBC Basic - name: atombbc.zip + path: "mame/bios/atombbc.zip" required: false category: bios_zip system: atom @@ -1404,6 +1470,7 @@ files: # Acorn Atom: clone: Busicomputers Prophet 2 - name: prophet2.zip + path: "mame/bios/prophet2.zip" required: false category: bios_zip system: atom @@ -1424,6 +1491,7 @@ files: # Acorn Atom: bus device: Disc Pack (default on pl6) - name: atom_discpack.zip + path: "mame/bios/atom_discpack.zip" required: false category: bios_zip system: atom @@ -1437,6 +1505,7 @@ files: # Acorn Atom: bus device: GDOS - name: atom_gdos.zip + path: "mame/bios/atom_gdos.zip" required: false category: bios_zip system: atom @@ -1449,6 +1518,7 @@ files: # Acorn Atom: bus device: GDOS-2015 - name: atom_gdos2015.zip + path: "mame/bios/atom_gdos2015.zip" required: false category: bios_zip system: atom @@ -1461,6 +1531,7 @@ files: # Acorn Atom: bus device: Speech Module - name: atom_speech.zip + path: "mame/bios/atom_speech.zip" required: false category: bios_zip system: atom @@ -1473,6 +1544,7 @@ files: # Acorn Atom: bus device: 80 Column VDU - name: atom_vdu80.zip + path: "mame/bios/atom_vdu80.zip" required: false category: bios_zip system: atom @@ -1485,6 +1557,7 @@ files: # Tiger game.com - name: gamecom.zip + path: "mame/bios/gamecom.zip" required: true category: bios_zip system: tiger-game-com @@ -1501,6 +1574,7 @@ files: # Bit Corporation Gamate - name: gamate.zip + path: "mame/bios/gamate.zip" required: true category: bios_zip system: gamate @@ -1517,6 +1591,7 @@ files: # Epoch Game Pocket Computer - name: gamepock.zip + path: "mame/bios/gamepock.zip" required: true category: bios_zip system: gamepock @@ -1529,6 +1604,7 @@ files: # Hartung Game Master - name: gmaster.zip + path: "mame/bios/gmaster.zip" required: true category: bios_zip system: hartung-game-master @@ -1541,6 +1617,7 @@ files: # Fujitsu FM-7 family - name: fm7.zip + path: "mame/bios/fm7.zip" required: true category: bios_zip system: fm7 @@ -1568,6 +1645,7 @@ files: crc32: "62402ac9" - name: fm77av.zip + path: "mame/bios/fm77av.zip" required: true category: bios_zip system: fm7 @@ -1595,6 +1673,7 @@ files: crc32: "e9f16c42" - name: fmnew7.zip + path: "mame/bios/fmnew7.zip" required: false category: bios_zip system: fm7 @@ -1612,6 +1691,7 @@ files: # Sharp MZ-80K (Japanese, parent) - name: mz80kj.zip + path: "mame/bios/mz80kj.zip" required: true category: bios_zip system: mz80k @@ -1636,6 +1716,7 @@ files: # Sharp MZ-80K (clone) - name: mz80k.zip + path: "mame/bios/mz80k.zip" required: true category: bios_zip system: mz80k @@ -1668,6 +1749,7 @@ files: # Sharp MZ-2000 - name: mz2000.zip + path: "mame/bios/mz2000.zip" required: true category: bios_zip system: mz2000 @@ -1684,6 +1766,7 @@ files: # Sharp MZ-2500 - name: mz2500.zip + path: "mame/bios/mz2500.zip" required: true category: bios_zip system: mz2500 @@ -1716,6 +1799,7 @@ files: # Sharp MZ-700 - name: mz700.zip + path: "mame/bios/mz700.zip" required: true category: bios_zip system: mz700 @@ -1732,6 +1816,7 @@ files: # Sharp MZ-800 - name: mz800.zip + path: "mame/bios/mz800.zip" required: true category: bios_zip system: mz800 @@ -1756,6 +1841,7 @@ files: # NEC PC-6001 family - name: pc6001.zip + path: "mame/bios/pc6001.zip" required: true category: bios_zip system: pc60 @@ -1775,6 +1861,7 @@ files: crc32: "b0142d32" - name: pc6001a.zip + path: "mame/bios/pc6001a.zip" required: false category: bios_zip system: pc60 @@ -1794,6 +1881,7 @@ files: crc32: "49c21d08" - name: pc6001mk2.zip + path: "mame/bios/pc6001mk2.zip" required: true category: bios_zip system: pc60 @@ -1821,6 +1909,7 @@ files: crc32: "20c8f3eb" - name: pc6601.zip + path: "mame/bios/pc6601.zip" required: false category: bios_zip system: pc60 @@ -1848,6 +1937,7 @@ files: crc32: "20c8f3eb" - name: pc6001mk2sr.zip + path: "mame/bios/pc6001mk2sr.zip" required: true category: bios_zip system: pc60 @@ -1867,6 +1957,7 @@ files: crc32: "73bc3256" - name: pc6601sr.zip + path: "mame/bios/pc6601sr.zip" required: false category: bios_zip system: pc60 @@ -1911,6 +2002,7 @@ files: # Technosys Aamber Pegasus - name: pegasus.zip + path: "mame/bios/pegasus.zip" required: true category: bios_zip system: pegasus @@ -1956,6 +2048,7 @@ files: # Funtech Super A'Can - name: supracan.zip + path: "mame/bios/supracan.zip" required: true category: bios_zip system: supracan @@ -1975,6 +2068,7 @@ files: crc32: "bf950ab7" - name: umc6650.zip + path: "mame/bios/umc6650.zip" required: true category: bios_zip system: supracan @@ -1990,6 +2084,7 @@ files: # vis.cpp: vis (parent, WORKING). Tandy/Memorex MD-2500 (1992). # CD-ROM-based multimedia system built on modified 286 PC hardware. - name: vis.zip + path: "mame/bios/vis.zip" required: true category: bios_zip system: tandy-vis @@ -2011,6 +2106,7 @@ files: # Z80-based home computers (1977-1983). Only trs80 (Level I) is MACHINE_SUPPORTS_SAVE, # all others MACHINE_NOT_WORKING. Software lists: trs80_cass, trs80_flop, trs80_quik. - name: trs80.zip + path: "mame/bios/trs80.zip" required: true category: bios_zip system: trs80 @@ -2027,6 +2123,7 @@ files: crc32: "0033f2b9" - name: trs80l2.zip + path: "mame/bios/trs80l2.zip" required: true category: bios_zip system: trs80 @@ -2066,6 +2163,7 @@ files: crc32: "0033f2b9" - name: eg3003.zip + path: "mame/bios/eg3003.zip" required: false category: bios_zip system: trs80 @@ -2097,6 +2195,7 @@ files: crc32: "150c5f1f" - name: sys80.zip + path: "mame/bios/sys80.zip" required: false category: bios_zip system: trs80 @@ -2113,6 +2212,7 @@ files: crc32: "0033f2b9" - name: ht1080z.zip + path: "mame/bios/ht1080z.zip" required: false category: bios_zip system: trs80 @@ -2125,6 +2225,7 @@ files: crc32: "e8c59d4f" - name: ht1080z2.zip + path: "mame/bios/ht1080z2.zip" required: false category: bios_zip system: trs80 @@ -2141,6 +2242,7 @@ files: crc32: "6728f0ab" - name: ht108064.zip + path: "mame/bios/ht108064.zip" required: false category: bios_zip system: trs80 @@ -2165,6 +2267,7 @@ files: crc32: "e76b73a4" - name: trs80m3.zip + path: "mame/bios/trs80m3.zip" required: true category: bios_zip system: trs80 @@ -2204,6 +2307,7 @@ files: crc32: "444c8b60" - name: trs80m4.zip + path: "mame/bios/trs80m4.zip" required: false category: bios_zip system: trs80 @@ -2222,6 +2326,7 @@ files: crc32: "444c8b60" - name: trs80m4p.zip + path: "mame/bios/trs80m4p.zip" required: false category: bios_zip system: trs80 @@ -2246,6 +2351,7 @@ files: crc32: "1ac44bea" - name: cp500.zip + path: "mame/bios/cp500.zip" required: false category: bios_zip system: trs80 @@ -2263,6 +2369,7 @@ files: # TI-99/4A family: machine ROM sets - name: ti99_4a.zip + path: "mame/bios/ti99_4a.zip" required: true category: bios_zip system: ti99 @@ -2291,6 +2398,7 @@ files: crc32: "37859301" - name: ti99_4.zip + path: "mame/bios/ti99_4.zip" required: false category: bios_zip system: ti99 @@ -2320,6 +2428,7 @@ files: # TI-99/4A: peripheral device ROM sets - name: ti99_speech.zip + path: "mame/bios/ti99_speech.zip" required: false category: bios_zip system: ti99 @@ -2336,6 +2445,7 @@ files: crc32: "65d00401" - name: ti99_fdc.zip + path: "mame/bios/ti99_fdc.zip" required: false category: bios_zip system: ti99 @@ -2352,6 +2462,7 @@ files: crc32: "2c921087" - name: ti99_bwg.zip + path: "mame/bios/ti99_bwg.zip" required: false category: bios_zip system: ti99 @@ -2364,6 +2475,7 @@ files: crc32: "06f1ec89" - name: ti99_ccdcc.zip + path: "mame/bios/ti99_ccdcc.zip" required: false category: bios_zip system: ti99 @@ -2380,6 +2492,7 @@ files: crc32: "9c4e5c08" - name: ti99_ccfdc.zip + path: "mame/bios/ti99_ccfdc.zip" required: false category: bios_zip system: ti99 @@ -2396,6 +2509,7 @@ files: crc32: "0cad8f5b" - name: ti99_rs232.zip + path: "mame/bios/ti99_rs232.zip" required: false category: bios_zip system: ti99 @@ -2408,6 +2522,7 @@ files: crc32: "eab382fb" - name: ti99_evpc.zip + path: "mame/bios/ti99_evpc.zip" required: false category: bios_zip system: ti99 @@ -2420,6 +2535,7 @@ files: crc32: "a062b75d" - name: ti99_hfdc.zip + path: "mame/bios/ti99_hfdc.zip" required: false category: bios_zip system: ti99 @@ -2432,6 +2548,7 @@ files: crc32: "66fbe0ed" - name: ti99_pcode.zip + path: "mame/bios/ti99_pcode.zip" required: false category: bios_zip system: ti99 @@ -2480,6 +2597,7 @@ files: crc32: "46a06b8b" - name: ti99_ddcc1.zip + path: "mame/bios/ti99_ddcc1.zip" required: false category: bios_zip system: ti99 @@ -2492,6 +2610,7 @@ files: crc32: "042968a9" - name: ti99_myarcmem.zip + path: "mame/bios/ti99_myarcmem.zip" required: false category: bios_zip system: ti99 @@ -2504,6 +2623,7 @@ files: crc32: "41fbb96d" - name: ti99_tipi.zip + path: "mame/bios/ti99_tipi.zip" required: false category: bios_zip system: ti99 @@ -2524,6 +2644,7 @@ files: crc32: "3b9cb922" - name: ti99_whtscsi.zip + path: "mame/bios/ti99_whtscsi.zip" required: false category: bios_zip system: ti99 @@ -2536,6 +2657,7 @@ files: crc32: "6e067c22" - name: ti99_arcturus.zip + path: "mame/bios/ti99_arcturus.zip" required: false category: bios_zip system: ti99 @@ -2556,6 +2678,7 @@ files: crc32: "e9ce9f4e" - name: ti99_gkracker.zip + path: "mame/bios/ti99_gkracker.zip" required: false category: bios_zip system: ti99 diff --git a/emulators/msx-emu.yml b/emulators/msx-emu.yml index 8a16aa246..cb482d63f 100644 --- a/emulators/msx-emu.yml +++ b/emulators/msx-emu.yml @@ -238,19 +238,6 @@ files: description: "C-BIOS MSX-MUSIC ROM, slot 3-1 from page 2" source_ref: "MSX.emu/res/firmware/Machines/MSX2+ - C-BIOS/config.ini:31, MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468,1168-1181, MSX.emu/src/blueMSX/Memory/romMapperMsxMusic.c:55-68" - - name: "cbios.txt" - path: "cbios.txt" - system: msx - required: false - bundled: true - category: game_data - size: 10469 - sha1: "78ae5c049bc94ee1284536c419388b1ab7ac218c" - description: "C-BIOS 0.29 release notes and licence, bundled beside the machine folders" - note: >- - Shipped in the application bundle. No code reads it. - source_ref: "MSX.emu/res/firmware/cbios.txt" - - name: "config.ini" path: "Machines/MSX/config.ini" system: msx diff --git a/emulators/openmsx-libretro.yml b/emulators/openmsx-libretro.yml index 98df73e1b..4b2131c3a 100644 --- a/emulators/openmsx-libretro.yml +++ b/emulators/openmsx-libretro.yml @@ -53,7 +53,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_VG_8020" - source_ref: "share/machines/Philips_VG_8020.xml:52-55" + source_ref: "share/machines/Philips_VG_8020.xml:52-55, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-75p_basic-bios1.rom" aliases: ["cx5m_basic-bios1.rom"] @@ -62,7 +62,7 @@ files: required: false validation: [sha1] description: "Read by machines Sony_HB-75P, Yamaha_CX5M" - source_ref: "share/machines/Sony_HB-75P.xml:59-62, share/machines/Yamaha_CX5M.xml:54-57" + source_ref: "share/machines/Sony_HB-75P.xml:59-62, share/machines/Yamaha_CX5M.xml:54-57, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/machines/Yamaha_CX5M.xml names it cx5m_basic-bios1.rom." - name: "hb-75p_firmware.rom" @@ -71,7 +71,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-75P" - source_ref: "share/machines/Sony_HB-75P.xml:66-69" + source_ref: "share/machines/Sony_HB-75P.xml:66-69, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hx-10_basic-bios1.rom" path: "openmsx/share/systemroms/hx-10_basic-bios1.rom" @@ -79,7 +79,7 @@ files: required: false validation: [sha1] description: "Read by machine Toshiba_HX-10" - source_ref: "share/machines/Toshiba_HX-10.xml:58-61" + source_ref: "share/machines/Toshiba_HX-10.xml:58-61, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "sfg-01.rom" path: "openmsx/share/systemroms/sfg-01.rom" @@ -87,7 +87,7 @@ files: required: false validation: [sha1] description: "Read by machine Yamaha_CX5M and extension Yamaha_SFG-01" - source_ref: "share/machines/Yamaha_CX5M.xml:80-83, share/extensions/Yamaha_SFG-01.xml:31-34" + source_ref: "share/machines/Yamaha_CX5M.xml:80-83, share/extensions/Yamaha_SFG-01.xml:31-34, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "NMS8245SystemROM1.08.bin" path: "openmsx/share/systemroms/NMS8245SystemROM1.08.bin" @@ -95,7 +95,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:61-65, share/machines/Philips_NMS_8245.xml:92-96, share/machines/Philips_NMS_8245.xml:134-138" + source_ref: "share/machines/Philips_NMS_8245.xml:61-65, share/machines/Philips_NMS_8245.xml:92-96, share/machines/Philips_NMS_8245.xml:134-138, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "NMS8245SystemROM1.06.bin" path: "openmsx/share/systemroms/NMS8245SystemROM1.06.bin" @@ -103,7 +103,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:66-70, share/machines/Philips_NMS_8245.xml:97-101, share/machines/Philips_NMS_8245.xml:139-143" + source_ref: "share/machines/Philips_NMS_8245.xml:66-70, share/machines/Philips_NMS_8245.xml:97-101, share/machines/Philips_NMS_8245.xml:139-143, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "NMS8245SystemROM1.05.bin" path: "openmsx/share/systemroms/NMS8245SystemROM1.05.bin" @@ -111,7 +111,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:71-75, share/machines/Philips_NMS_8245.xml:102-106" + source_ref: "share/machines/Philips_NMS_8245.xml:71-75, share/machines/Philips_NMS_8245.xml:102-106, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms8245_basic-bios2.rom" aliases: ["nms8250_basic-bios2.rom"] @@ -120,7 +120,7 @@ files: required: false validation: [sha1] description: "Read by machines Philips_NMS_8245, Philips_NMS_8250" - source_ref: "share/machines/Philips_NMS_8245.xml:76-79, share/machines/Philips_NMS_8250.xml:23-26" + source_ref: "share/machines/Philips_NMS_8245.xml:76-79, share/machines/Philips_NMS_8250.xml:23-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/machines/Philips_NMS_8250.xml names it nms8250_basic-bios2.rom." - name: "nms8245_msx2sub.rom" @@ -129,7 +129,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:107-111" + source_ref: "share/machines/Philips_NMS_8245.xml:107-111, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "NMS8245SystemROM1.05.bin" path: "openmsx/share/systemroms/7e6a267e/NMS8245SystemROM1.05.bin" @@ -137,7 +137,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:144-148" + source_ref: "share/machines/Philips_NMS_8245.xml:144-148, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms8245_disk.rom" path: "openmsx/share/systemroms/nms8245_disk.rom" @@ -145,7 +145,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8245" - source_ref: "share/machines/Philips_NMS_8245.xml:149-153" + source_ref: "share/machines/Philips_NMS_8245.xml:149-153, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms8250_msx2sub.rom" path: "openmsx/share/systemroms/nms8250_msx2sub.rom" @@ -153,7 +153,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8250" - source_ref: "share/machines/Philips_NMS_8250.xml:39-42" + source_ref: "share/machines/Philips_NMS_8250.xml:39-42, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms8250_disk.rom" path: "openmsx/share/systemroms/nms8250_disk.rom" @@ -161,7 +161,7 @@ files: required: false validation: [sha1] description: "Read by machine Philips_NMS_8250" - source_ref: "share/machines/Philips_NMS_8250.xml:62-67" + source_ref: "share/machines/Philips_NMS_8250.xml:62-67, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f700p_basic-bios2.rom" path: "openmsx/share/systemroms/hb-f700p_basic-bios2.rom" @@ -169,7 +169,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F700P" - source_ref: "share/machines/Sony_HB-F700P.xml:65-68" + source_ref: "share/machines/Sony_HB-F700P.xml:65-68, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f700p_msx2sub.rom" path: "openmsx/share/systemroms/hb-f700p_msx2sub.rom" @@ -177,7 +177,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F700P" - source_ref: "share/machines/Sony_HB-F700P.xml:83-87" + source_ref: "share/machines/Sony_HB-F700P.xml:83-87, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f700p_disk.rom" path: "openmsx/share/systemroms/hb-f700p_disk.rom" @@ -185,7 +185,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F700P" - source_ref: "share/machines/Sony_HB-F700P.xml:94-98" + source_ref: "share/machines/Sony_HB-F700P.xml:94-98, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xd_basic-bios2.rom" path: "openmsx/share/systemroms/hb-f1xd_basic-bios2.rom" @@ -193,7 +193,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XD" - source_ref: "share/machines/Sony_HB-F1XD.xml:69-72" + source_ref: "share/machines/Sony_HB-F1XD.xml:69-72, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xd_msx2sub.rom" path: "openmsx/share/systemroms/hb-f1xd_msx2sub.rom" @@ -201,7 +201,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XD" - source_ref: "share/machines/Sony_HB-F1XD.xml:85-88" + source_ref: "share/machines/Sony_HB-F1XD.xml:85-88, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xd_disk.rom" aliases: ["hbd-20w.rom", "hbd-f1.rom"] @@ -210,7 +210,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XD and extensions Sony_HBD-20W, Sony_HBD-F1" - source_ref: "share/machines/Sony_HB-F1XD.xml:95-98, share/extensions/Sony_HBD-20W.xml:21-24, share/extensions/Sony_HBD-F1.xml:21-24" + source_ref: "share/machines/Sony_HB-F1XD.xml:95-98, share/extensions/Sony_HBD-20W.xml:21-24, share/extensions/Sony_HBD-F1.xml:21-24, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/extensions/Sony_HBD-20W.xml names it hbd-20w.rom, and share/extensions/Sony_HBD-F1.xml names it hbd-f1.rom." - name: "hb-f1xv_kanjifont.rom" @@ -220,7 +220,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV and extension Sony_HBI-J1" - source_ref: "share/machines/Sony_HB-F1XV.xml:30-33, share/extensions/Sony_HBI-J1.xml:15-18" + source_ref: "share/machines/Sony_HB-F1XV.xml:30-33, share/extensions/Sony_HBI-J1.xml:15-18, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/extensions/Sony_HBI-J1.xml names it hbi-j1_kanjifont.rom." - name: "Sony_HB-F1XV.rom" @@ -229,7 +229,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV" - source_ref: "share/machines/Sony_HB-F1XV.xml:89-93, share/machines/Sony_HB-F1XV.xml:136-140, share/machines/Sony_HB-F1XV.xml:148-152, share/machines/Sony_HB-F1XV.xml:166-170, share/machines/Sony_HB-F1XV.xml:182-186" + source_ref: "share/machines/Sony_HB-F1XV.xml:89-93, share/machines/Sony_HB-F1XV.xml:136-140, share/machines/Sony_HB-F1XV.xml:148-152, share/machines/Sony_HB-F1XV.xml:166-170, share/machines/Sony_HB-F1XV.xml:182-186, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xv_basic-bios2p.rom" path: "openmsx/share/systemroms/hb-f1xv_basic-bios2p.rom" @@ -237,7 +237,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV" - source_ref: "share/machines/Sony_HB-F1XV.xml:94-97" + source_ref: "share/machines/Sony_HB-F1XV.xml:94-97, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xv.rom" aliases: ["hbi-j1_msx-je.rom"] @@ -246,7 +246,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV and extension Sony_HBI-J1" - source_ref: "share/machines/Sony_HB-F1XV.xml:108-111, share/extensions/Sony_HBI-J1.xml:27-30" + source_ref: "share/machines/Sony_HB-F1XV.xml:108-111, share/extensions/Sony_HBI-J1.xml:27-30, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/extensions/Sony_HBI-J1.xml names it hbi-j1_msx-je.rom." - name: "hb-f1xv_msx2sub.rom" @@ -256,7 +256,7 @@ files: required: false validation: [sha1] description: "Read by machines Sony_HB-F1XV, Panasonic_FS-A1WSX" - source_ref: "share/machines/Sony_HB-F1XV.xml:141-144, share/machines/Panasonic_FS-A1WSX.xml:158-161" + source_ref: "share/machines/Sony_HB-F1XV.xml:141-144, share/machines/Panasonic_FS-A1WSX.xml:158-161, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/machines/Panasonic_FS-A1WSX.xml names it fs-a1wsx_msx2psub.rom." - name: "hb-f1xv_kanjibasic.rom" @@ -266,7 +266,7 @@ files: required: false validation: [sha1] description: "Read by machines Sony_HB-F1XV, Panasonic_FS-A1WSX" - source_ref: "share/machines/Sony_HB-F1XV.xml:153-156, share/machines/Panasonic_FS-A1WSX.xml:165-168" + source_ref: "share/machines/Sony_HB-F1XV.xml:153-156, share/machines/Panasonic_FS-A1WSX.xml:165-168, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/machines/Panasonic_FS-A1WSX.xml names it fs-a1wsx_kanjibasic.rom." - name: "hb-f1xv_disk.rom" @@ -275,7 +275,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV" - source_ref: "share/machines/Sony_HB-F1XV.xml:171-174" + source_ref: "share/machines/Sony_HB-F1XV.xml:171-174, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb-f1xv_fmbasic.rom" path: "openmsx/share/systemroms/hb-f1xv_fmbasic.rom" @@ -283,7 +283,7 @@ files: required: false validation: [sha1] description: "Read by machine Sony_HB-F1XV" - source_ref: "share/machines/Sony_HB-F1XV.xml:187-190" + source_ref: "share/machines/Sony_HB-F1XV.xml:187-190, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1wsx_kanjifont.rom" aliases: ["fs-a1st_kanjifont.rom", "fs-a1gt_kanjifont.rom"] @@ -292,7 +292,7 @@ files: required: false validation: [sha1] description: "Read by machines Panasonic_FS-A1WSX, Panasonic_FS-A1ST, Panasonic_FS-A1GT" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:28-31, share/machines/Panasonic_FS-A1ST.xml:32-35, share/machines/Panasonic_FS-A1GT.xml:140-143" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:28-31, share/machines/Panasonic_FS-A1ST.xml:32-35, share/machines/Panasonic_FS-A1GT.xml:140-143, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/machines/Panasonic_FS-A1ST.xml names it fs-a1st_kanjifont.rom, and share/machines/Panasonic_FS-A1GT.xml names it fs-a1gt_kanjifont.rom." - name: "fs-a1wsx_IC18.rom" @@ -301,7 +301,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1WSX" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:97-101, share/machines/Panasonic_FS-A1WSX.xml:114-118, share/machines/Panasonic_FS-A1WSX.xml:153-157, share/machines/Panasonic_FS-A1WSX.xml:177-181" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:97-101, share/machines/Panasonic_FS-A1WSX.xml:114-118, share/machines/Panasonic_FS-A1WSX.xml:153-157, share/machines/Panasonic_FS-A1WSX.xml:177-181, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1wsx_basic-bios2p.rom" path: "openmsx/share/systemroms/fs-a1wsx_basic-bios2p.rom" @@ -309,7 +309,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1WSX" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:102-105" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:102-105, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1wsx_fmbasic.rom" path: "openmsx/share/systemroms/fs-a1wsx_fmbasic.rom" @@ -317,7 +317,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1WSX" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:119-123" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:119-123, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1wsx_disk.rom" path: "openmsx/share/systemroms/fs-a1wsx_disk.rom" @@ -325,7 +325,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1WSX" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:182-185" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:182-185, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1wsx_firmware.rom" path: "openmsx/share/systemroms/fs-a1wsx_firmware.rom" @@ -333,7 +333,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1WSX" - source_ref: "share/machines/Panasonic_FS-A1WSX.xml:211-214" + source_ref: "share/machines/Panasonic_FS-A1WSX.xml:211-214, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1st_firmware.rom" path: "openmsx/share/systemroms/fs-a1st_firmware.rom" @@ -341,7 +341,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1ST" - source_ref: "share/machines/Panasonic_FS-A1ST.xml:22-26" + source_ref: "share/machines/Panasonic_FS-A1ST.xml:22-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-a1gt_firmware.rom" path: "openmsx/share/systemroms/fs-a1gt_firmware.rom" @@ -349,7 +349,7 @@ files: required: false validation: [sha1] description: "Read by machine Panasonic_FS-A1GT" - source_ref: "share/machines/Panasonic_FS-A1GT.xml:22-26" + source_ref: "share/machines/Panasonic_FS-A1GT.xml:22-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ascii_msxdos22.rom" path: "openmsx/share/systemroms/ascii_msxdos22.rom" @@ -357,7 +357,7 @@ files: required: false validation: [sha1] description: "Read by extension ASCII_MSX-DOS2" - source_ref: "share/extensions/ASCII_MSX-DOS2.xml:18-21, share/extensions/ASCII_MSX-DOS2.xml:36-40" + source_ref: "share/extensions/ASCII_MSX-DOS2.xml:18-21, share/extensions/ASCII_MSX-DOS2.xml:36-40, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msx-write_kanjifont.rom" aliases: ["ec-702_kanjifont.rom"] @@ -366,7 +366,7 @@ files: required: false validation: [sha1] description: "Read by extensions ASCII_Japanese_MSX-Write, Konami_EC-702" - source_ref: "share/extensions/ASCII_Japanese_MSX-Write.xml:15-18, share/extensions/Konami_EC-702.xml:14-17" + source_ref: "share/extensions/ASCII_Japanese_MSX-Write.xml:15-18, share/extensions/Konami_EC-702.xml:14-17, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/extensions/Konami_EC-702.xml names it ec-702_kanjifont.rom." - name: "Japanese MSX-Write (1986) (Ascii) (J).rom" @@ -375,7 +375,7 @@ files: required: false validation: [sha1] description: "Read by extension ASCII_Japanese_MSX-Write" - source_ref: "share/extensions/ASCII_Japanese_MSX-Write.xml:26-29" + source_ref: "share/extensions/ASCII_Japanese_MSX-Write.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msx-write_ii_kanjifont.rom" path: "openmsx/share/systemroms/msx-write_ii_kanjifont.rom" @@ -383,7 +383,7 @@ files: required: false validation: [sha1] description: "Read by extension ASCII_Japanese_MSX-Write_II" - source_ref: "share/extensions/ASCII_Japanese_MSX-Write_II.xml:15-18" + source_ref: "share/extensions/ASCII_Japanese_MSX-Write_II.xml:15-18, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "Japanese MSX-Write II (1988) (Ascii) (J).rom" path: "openmsx/share/systemroms/Japanese MSX-Write II (1988) (Ascii) (J).rom" @@ -391,7 +391,7 @@ files: required: false validation: [sha1] description: "Read by extension ASCII_Japanese_MSX-Write_II" - source_ref: "share/extensions/ASCII_Japanese_MSX-Write_II.xml:28-31" + source_ref: "share/extensions/ASCII_Japanese_MSX-Write_II.xml:28-31, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msxdos22.rom" path: "openmsx/share/systemroms/msxdos22.rom" @@ -399,7 +399,7 @@ files: required: false validation: [sha1] description: "Read by extension msxdos2" - source_ref: "share/extensions/msxdos2.xml:17-22" + source_ref: "share/extensions/msxdos2.xml:17-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "avt_dpf-550_disk.rom" path: "openmsx/share/systemroms/avt_dpf-550_disk.rom" @@ -407,7 +407,7 @@ files: required: false validation: [sha1] description: "Read by extension AVT_DPF-550" - source_ref: "share/extensions/AVT_DPF-550.xml:20-23" + source_ref: "share/extensions/AVT_DPF-550.xml:20-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "mu-pack.rom" path: "openmsx/share/systemroms/mu-pack.rom" @@ -415,7 +415,7 @@ files: required: false validation: [sha1] description: "Read by extension mu-PACK" - source_ref: "share/extensions/mu-PACK.xml:26-29" + source_ref: "share/extensions/mu-PACK.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fmpak.rom" path: "openmsx/share/systemroms/fmpak.rom" @@ -423,7 +423,7 @@ files: required: false validation: [sha1] description: "Read by extension Checkmark_FM_Stereo_PAK" - source_ref: "share/extensions/Checkmark_FM_Stereo_PAK.xml:25-28" + source_ref: "share/extensions/Checkmark_FM_Stereo_PAK.xml:25-28, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "computer_mates_disk_interface.rom" path: "openmsx/share/systemroms/computer_mates_disk_interface.rom" @@ -431,7 +431,7 @@ files: required: false validation: [sha1] description: "Read by extension Computer_Mates_Disk_Interface" - source_ref: "share/extensions/Computer_Mates_Disk_Interface.xml:44-47" + source_ref: "share/extensions/Computer_Mates_Disk_Interface.xml:44-47, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ROM_Hunter_Mk2.rom" path: "openmsx/share/systemroms/ROM_Hunter_Mk2.rom" @@ -439,7 +439,7 @@ files: required: false validation: [sha1] description: "Read by extension ROM_Hunter_Mk2" - source_ref: "share/extensions/ROM_Hunter_Mk2.xml:17-20" + source_ref: "share/extensions/ROM_Hunter_Mk2.xml:17-20, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ddx_3.0.rom" path: "openmsx/share/systemroms/ddx_3.0.rom" @@ -447,7 +447,7 @@ files: required: false validation: [sha1] description: "Read by extension DDX_3.0" - source_ref: "share/extensions/DDX_3.0.xml:20-25" + source_ref: "share/extensions/DDX_3.0.xml:20-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "mr512.rom" path: "openmsx/share/systemroms/mr512.rom" @@ -455,7 +455,7 @@ files: required: false validation: [sha1] description: "Read by extension MegaRAM_Disk" - source_ref: "share/extensions/MegaRAM_Disk.xml:19-22" + source_ref: "share/extensions/MegaRAM_Disk.xml:19-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ESPUNAPI_IO.rom" path: "openmsx/share/systemroms/ESPUNAPI_IO.rom" @@ -463,7 +463,7 @@ files: required: false validation: [sha1] description: "Read by extension smxwifi" - source_ref: "share/extensions/smxwifi.xml:18-21" + source_ref: "share/extensions/smxwifi.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "chakkari.rom" path: "openmsx/share/systemroms/chakkari.rom" @@ -471,7 +471,7 @@ files: required: false validation: [sha1] description: "Read by extension Epson_Chakkari_Copy" - source_ref: "share/extensions/Epson_Chakkari_Copy.xml:18-22" + source_ref: "share/extensions/Epson_Chakkari_Copy.xml:18-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "rs232.rom" path: "openmsx/share/systemroms/rs232.rom" @@ -479,7 +479,7 @@ files: required: false validation: [sha1] description: "Read by extension rs232" - source_ref: "share/extensions/rs232.xml:18-22" + source_ref: "share/extensions/rs232.xml:18-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ct-80e.rom" path: "openmsx/share/systemroms/ct-80e.rom" @@ -487,7 +487,7 @@ files: required: false validation: [sha1] description: "Read by extension Gradiente_CT-80E" - source_ref: "share/extensions/Gradiente_CT-80E.xml:26-29" + source_ref: "share/extensions/Gradiente_CT-80E.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "mpc-310h.rom" path: "openmsx/share/systemroms/mpc-310h.rom" @@ -495,7 +495,7 @@ files: required: false validation: [sha1] description: "Read by extension Hitachi_MPC-310H" - source_ref: "share/extensions/Hitachi_MPC-310H.xml:20-23" + source_ref: "share/extensions/Hitachi_MPC-310H.xml:20-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "yrw801.rom" path: "openmsx/share/systemroms/yrw801.rom" @@ -503,7 +503,7 @@ files: required: false validation: [sha1] description: "Read by extensions Jun_Soft_DalSoRi_R2, moonsound" - source_ref: "share/extensions/Jun_Soft_DalSoRi_R2.xml:22-25, share/extensions/moonsound.xml:16-19" + source_ref: "share/extensions/Jun_Soft_DalSoRi_R2.xml:22-25, share/extensions/moonsound.xml:16-19, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "Konami EC-701 program.rom" path: "openmsx/share/systemroms/Konami EC-701 program.rom" @@ -511,7 +511,7 @@ files: required: false validation: [sha1] description: "Read by extension Konami_EC-701" - source_ref: "share/extensions/Konami_EC-701.xml:17-21" + source_ref: "share/extensions/Konami_EC-701.xml:17-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "Konami EC-701 dictionary.rom" path: "openmsx/share/systemroms/Konami EC-701 dictionary.rom" @@ -519,7 +519,7 @@ files: required: false validation: [sha1] description: "Read by extension Konami_EC-701" - source_ref: "share/extensions/Konami_EC-701.xml:22-25" + source_ref: "share/extensions/Konami_EC-701.xml:22-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "megaflashrom_scc+_sd.rom" path: "openmsx/share/systemroms/megaflashrom_scc+_sd.rom" @@ -527,7 +527,7 @@ files: required: false validation: [sha1] description: "Flash content read by extension MegaFlashROM_SCC+_SD, found by its sha1 alone: the XML names no file" - source_ref: "share/extensions/MegaFlashROM_SCC+_SD.xml:20-22" + source_ref: "share/extensions/MegaFlashROM_SCC+_SD.xml:20-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "cdx-2.rom" path: "openmsx/share/systemroms/cdx-2.rom" @@ -535,7 +535,7 @@ files: required: false validation: [sha1] description: "Read by extension Microsol_CDX-2" - source_ref: "share/extensions/Microsol_CDX-2.xml:20-23" + source_ref: "share/extensions/Microsol_CDX-2.xml:20-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ml-30dc.rom" path: "openmsx/share/systemroms/ml-30dc.rom" @@ -543,7 +543,7 @@ files: required: false validation: [sha1] description: "Read by extension Mitsubishi_ML-30DC_ML-30FD" - source_ref: "share/extensions/Mitsubishi_ML-30DC_ML-30FD.xml:19-22" + source_ref: "share/extensions/Mitsubishi_ML-30DC_ML-30FD.xml:19-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fmpac.rom" path: "openmsx/share/systemroms/fmpac.rom" @@ -551,7 +551,7 @@ files: required: false validation: [sha1] description: "Read by extensions mbstereo, fmpac" - source_ref: "share/extensions/mbstereo.xml:23-27, share/extensions/fmpac.xml:22-26" + source_ref: "share/extensions/mbstereo.xml:23-27, share/extensions/fmpac.xml:22-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "novaxis.rom" path: "openmsx/share/systemroms/novaxis.rom" @@ -559,7 +559,7 @@ files: required: false validation: [sha1] description: "Read by extension Gouda_SCSI" - source_ref: "share/extensions/Gouda_SCSI.xml:18-21" + source_ref: "share/extensions/Gouda_SCSI.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msxpibios.rom" path: "openmsx/share/systemroms/msxpibios.rom" @@ -567,7 +567,7 @@ files: required: false validation: [sha1] description: "Read by extension MSXPi" - source_ref: "share/extensions/MSXPi.xml:28-35" + source_ref: "share/extensions/MSXPi.xml:28-35, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msxaudio13.OPL3_mono.rom" path: "openmsx/share/systemroms/msxaudio13.OPL3_mono.rom" @@ -575,7 +575,7 @@ files: required: false validation: [sha1] description: "Read by extension OPL3Cartridge2_mono" - source_ref: "share/extensions/OPL3Cartridge2_mono.xml:29-34" + source_ref: "share/extensions/OPL3Cartridge2_mono.xml:29-34, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msxaudio13.OPL3_stereo.rom" path: "openmsx/share/systemroms/msxaudio13.OPL3_stereo.rom" @@ -583,7 +583,7 @@ files: required: false validation: [sha1] description: "Read by extension OPL3Cartridge2_stereo" - source_ref: "share/extensions/OPL3Cartridge2_stereo.xml:29-34" + source_ref: "share/extensions/OPL3Cartridge2_stereo.xml:29-34, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "cf-sm003_main.rom" path: "openmsx/share/systemroms/cf-sm003_main.rom" @@ -591,7 +591,7 @@ files: required: false validation: [sha1] description: "Read by extension National_CF-SM003" - source_ref: "share/extensions/National_CF-SM003.xml:18-21" + source_ref: "share/extensions/National_CF-SM003.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "cf-sm003_kanjifont.rom" path: "openmsx/share/systemroms/cf-sm003_kanjifont.rom" @@ -599,7 +599,7 @@ files: required: false validation: [sha1] description: "Read by extension National_CF-SM003" - source_ref: "share/extensions/National_CF-SM003.xml:22-25" + source_ref: "share/extensions/National_CF-SM003.xml:22-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "cf-sm003_data.rom" aliases: ["skw-01_data.rom"] @@ -608,7 +608,7 @@ files: required: false validation: [sha1] description: "Read by extensions National_CF-SM003, Yamaha_SKW-01" - source_ref: "share/extensions/National_CF-SM003.xml:26-29, share/extensions/Yamaha_SKW-01.xml:26-29" + source_ref: "share/extensions/National_CF-SM003.xml:26-29, share/extensions/Yamaha_SKW-01.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" note: "share/extensions/Yamaha_SKW-01.xml names it skw-01_data.rom." - name: "NEOSC.ROM" @@ -617,7 +617,7 @@ files: required: false validation: [sha1] description: "Read by extension Neos_MA-20R" - source_ref: "share/extensions/Neos_MA-20R.xml:21-24" + source_ref: "share/extensions/Neos_MA-20R.xml:21-24, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "NEOSV.ROM" path: "openmsx/share/systemroms/NEOSV.ROM" @@ -625,7 +625,7 @@ files: required: false validation: [sha1] description: "Read by extension Neos_MA-20V" - source_ref: "share/extensions/Neos_MA-20V.xml:22-25" + source_ref: "share/extensions/Neos_MA-20V.xml:22-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-fd1a.rom" path: "openmsx/share/systemroms/fs-fd1a.rom" @@ -633,7 +633,7 @@ files: required: false validation: [sha1] description: "Read by extension Panasonic_FS-FD1A" - source_ref: "share/extensions/Panasonic_FS-FD1A.xml:17-20" + source_ref: "share/extensions/Panasonic_FS-FD1A.xml:17-20, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-ca1.rom" path: "openmsx/share/systemroms/fs-ca1.rom" @@ -641,7 +641,7 @@ files: required: false validation: [sha1] description: "Read by extension Panasonic_FS-CA1" - source_ref: "share/extensions/Panasonic_FS-CA1.xml:25-30" + source_ref: "share/extensions/Panasonic_FS-CA1.xml:25-30, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-pw1_kanjifont.rom" path: "openmsx/share/systemroms/fs-pw1_kanjifont.rom" @@ -649,7 +649,7 @@ files: required: false validation: [sha1] description: "Read by extension Panasonic_FS-PW1" - source_ref: "share/extensions/Panasonic_FS-PW1.xml:15-18" + source_ref: "share/extensions/Panasonic_FS-PW1.xml:15-18, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fs-pw1_msxword.rom" path: "openmsx/share/systemroms/fs-pw1_msxword.rom" @@ -657,7 +657,7 @@ files: required: false validation: [sha1] description: "Read by extension Panasonic_FS-PW1" - source_ref: "share/extensions/Panasonic_FS-PW1.xml:26-29" + source_ref: "share/extensions/Panasonic_FS-PW1.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms1200_6.rom" path: "openmsx/share/systemroms/nms1200_6.rom" @@ -665,7 +665,7 @@ files: required: false validation: [sha1] description: "Read by extension Philips_NMS_1200" - source_ref: "share/extensions/Philips_NMS_1200.xml:19-23" + source_ref: "share/extensions/Philips_NMS_1200.xml:19-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nms1205.rom" path: "openmsx/share/systemroms/nms1205.rom" @@ -673,7 +673,7 @@ files: required: false validation: [sha1] description: "Read by extension Philips_NMS_1205" - source_ref: "share/extensions/Philips_NMS_1205.xml:39-42" + source_ref: "share/extensions/Philips_NMS_1205.xml:39-42, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "msxaudio12pre4a.rom" path: "openmsx/share/systemroms/msxaudio12pre4a.rom" @@ -681,7 +681,7 @@ files: required: false validation: [sha1] description: "Read by extension Boosted_audio" - source_ref: "share/extensions/Boosted_audio.xml:36-42" + source_ref: "share/extensions/Boosted_audio.xml:36-42, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "carnivore2.rom" path: "openmsx/share/systemroms/carnivore2.rom" @@ -689,7 +689,7 @@ files: required: false validation: [sha1] description: "Flash content read by extension Carnivore2, found by its sha1 alone: the XML names no file" - source_ref: "share/extensions/Carnivore2.xml:19-23" + source_ref: "share/extensions/Carnivore2.xml:19-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "mfd-001_disk.rom" path: "openmsx/share/systemroms/mfd-001_disk.rom" @@ -697,7 +697,7 @@ files: required: false validation: [sha1] description: "Read by extension Sanyo_MFD-001" - source_ref: "share/extensions/Sanyo_MFD-001.xml:18-21" + source_ref: "share/extensions/Sanyo_MFD-001.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "mrs-001.rom" path: "openmsx/share/systemroms/mrs-001.rom" @@ -705,7 +705,7 @@ files: required: false validation: [sha1] description: "Read by extension Sanyo_MRS-001" - source_ref: "share/extensions/Sanyo_MRS-001.xml:19-22" + source_ref: "share/extensions/Sanyo_MRS-001.xml:19-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hb3600_disk.rom" path: "openmsx/share/systemroms/hb3600_disk.rom" @@ -713,7 +713,7 @@ files: required: false validation: [sha1] description: "Read by extension Sharp_HB-3600" - source_ref: "share/extensions/Sharp_HB-3600.xml:18-21" + source_ref: "share/extensions/Sharp_HB-3600.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hddrom.rom" path: "openmsx/share/systemroms/hddrom.rom" @@ -721,7 +721,7 @@ files: required: false validation: [sha1] description: "Read by extension Beer_IDE" - source_ref: "share/extensions/Beer_IDE.xml:18-23" + source_ref: "share/extensions/Beer_IDE.xml:18-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hbi-j1_kanjibasic.rom" path: "openmsx/share/systemroms/hbi-j1_kanjibasic.rom" @@ -729,7 +729,7 @@ files: required: false validation: [sha1] description: "Read by extension Sony_HBI-J1" - source_ref: "share/extensions/Sony_HBI-J1.xml:38-41" + source_ref: "share/extensions/Sony_HBI-J1.xml:38-41, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hbd-50.rom" path: "openmsx/share/systemroms/hbd-50.rom" @@ -737,7 +737,7 @@ files: required: false validation: [sha1] description: "Read by extension Sony_HBD-50" - source_ref: "share/extensions/Sony_HBD-50.xml:24-28" + source_ref: "share/extensions/Sony_HBD-50.xml:24-28, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hbk-30.rom" path: "openmsx/share/systemroms/hbk-30.rom" @@ -745,7 +745,7 @@ files: required: false validation: [sha1] description: "Read by extension Sony_HBK-30" - source_ref: "share/extensions/Sony_HBK-30.xml:19-22" + source_ref: "share/extensions/Sony_HBK-30.xml:19-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hbi-232.rom" path: "openmsx/share/systemroms/hbi-232.rom" @@ -753,7 +753,7 @@ files: required: false validation: [sha1] description: "Read by extension Sony_HBI-232" - source_ref: "share/extensions/Sony_HBI-232.xml:18-21" + source_ref: "share/extensions/Sony_HBI-232.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "sensor-kid.rom" path: "openmsx/share/systemroms/sensor-kid.rom" @@ -761,7 +761,7 @@ files: required: false validation: [sha1] description: "Read by extension SensorKid" - source_ref: "share/extensions/SensorKid.xml:20-23" + source_ref: "share/extensions/SensorKid.xml:20-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "svi-707_disk.rom" path: "openmsx/share/systemroms/svi-707_disk.rom" @@ -769,7 +769,7 @@ files: required: false validation: [sha1] description: "Read by extension Spectravideo_SVI-707" - source_ref: "share/extensions/Spectravideo_SVI-707.xml:19-22" + source_ref: "share/extensions/Spectravideo_SVI-707.xml:19-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "svi-707_cpm.rom" path: "openmsx/share/systemroms/svi-707_cpm.rom" @@ -777,7 +777,7 @@ files: required: false validation: [sha1] description: "Read by extension Spectravideo_SVI-707" - source_ref: "share/extensions/Spectravideo_SVI-707.xml:23-26" + source_ref: "share/extensions/Spectravideo_SVI-707.xml:23-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "Nextor-2.1.1.SunriseIDE.ROM" path: "openmsx/share/systemroms/Nextor-2.1.1.SunriseIDE.ROM" @@ -785,7 +785,7 @@ files: required: false validation: [sha1] description: "Read by extension SunriseIDE_Nextor" - source_ref: "share/extensions/SunriseIDE_Nextor.xml:17-22" + source_ref: "share/extensions/SunriseIDE_Nextor.xml:17-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ide250.dat" path: "openmsx/share/systemroms/ide250.dat" @@ -793,7 +793,7 @@ files: required: false validation: [sha1] description: "Read by extension ide" - source_ref: "share/extensions/ide.xml:17-22" + source_ref: "share/extensions/ide.xml:17-22, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "nowindDos2.rom" path: "openmsx/share/systemroms/nowindDos2.rom" @@ -801,7 +801,7 @@ files: required: false validation: [sha1] description: "Read by extension nowind" - source_ref: "share/extensions/nowind.xml:17-23" + source_ref: "share/extensions/nowind.xml:17-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "ym2608_adpcm_rom.bin" path: "openmsx/share/systemroms/ym2608_adpcm_rom.bin" @@ -809,7 +809,7 @@ files: required: false validation: [sha1] description: "Read by extension Makoto" - source_ref: "share/extensions/Makoto.xml:15-18" + source_ref: "share/extensions/Makoto.xml:15-18, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "TDC600.rom" path: "openmsx/share/systemroms/TDC600.rom" @@ -817,7 +817,7 @@ files: required: false validation: [sha1] description: "Read by extension Talent_TDC-600" - source_ref: "share/extensions/Talent_TDC-600.xml:18-21" + source_ref: "share/extensions/Talent_TDC-600.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "dpf-550_disk.rom" path: "openmsx/share/systemroms/dpf-550_disk.rom" @@ -825,7 +825,7 @@ files: required: false validation: [sha1] description: "Read by extension Talent_DPF-550" - source_ref: "share/extensions/Talent_DPF-550.xml:18-21" + source_ref: "share/extensions/Talent_DPF-550.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "Tecall_MSX_RAMFILE_TM220.rom" path: "openmsx/share/systemroms/Tecall_MSX_RAMFILE_TM220.rom" @@ -833,7 +833,7 @@ files: required: false validation: [sha1] description: "Read by extension Tecall_MSX_RAMFILE_TM220" - source_ref: "share/extensions/Tecall_MSX_RAMFILE_TM220.xml:17-20" + source_ref: "share/extensions/Tecall_MSX_RAMFILE_TM220.xml:17-20, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hx-f101pe.rom" path: "openmsx/share/systemroms/hx-f101pe.rom" @@ -841,7 +841,7 @@ files: required: false validation: [sha1] description: "Read by extension Toshiba_HX-F101PE" - source_ref: "share/extensions/Toshiba_HX-F101PE.xml:20-23" + source_ref: "share/extensions/Toshiba_HX-F101PE.xml:20-23, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "hx-mu900.rom" path: "openmsx/share/systemroms/hx-mu900.rom" @@ -849,7 +849,7 @@ files: required: false validation: [sha1] description: "Read by extension Toshiba_HX-MU900" - source_ref: "share/extensions/Toshiba_HX-MU900.xml:26-29" + source_ref: "share/extensions/Toshiba_HX-MU900.xml:26-29, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "fd-03.rom" path: "openmsx/share/systemroms/fd-03.rom" @@ -857,7 +857,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_FD-03" - source_ref: "share/extensions/Yamaha_FD-03.xml:20-26" + source_ref: "share/extensions/Yamaha_FD-03.xml:20-26, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "FD-051.BIN" path: "openmsx/share/systemroms/FD-051.BIN" @@ -865,7 +865,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_FD-05" - source_ref: "share/extensions/Yamaha_FD-05.xml:22-25" + source_ref: "share/extensions/Yamaha_FD-05.xml:22-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "sfg-05.rom" path: "openmsx/share/systemroms/sfg-05.rom" @@ -873,7 +873,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_SFG-05" - source_ref: "share/extensions/Yamaha_SFG-05.xml:31-34" + source_ref: "share/extensions/Yamaha_SFG-05.xml:31-34, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "skw-05_main.rom" path: "openmsx/share/systemroms/skw-05_main.rom" @@ -881,7 +881,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_SKW-05_embedded" - source_ref: "share/extensions/Yamaha_SKW-05_embedded.xml:32-36" + source_ref: "share/extensions/Yamaha_SKW-05_embedded.xml:32-36, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "skw-05_data.rom" path: "openmsx/share/systemroms/skw-05_data.rom" @@ -889,7 +889,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_SKW-05_embedded" - source_ref: "share/extensions/Yamaha_SKW-05_embedded.xml:37-40" + source_ref: "share/extensions/Yamaha_SKW-05_embedded.xml:37-40, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "skw-01_main.rom" path: "openmsx/share/systemroms/skw-01_main.rom" @@ -897,7 +897,7 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_SKW-01" - source_ref: "share/extensions/Yamaha_SKW-01.xml:18-21" + source_ref: "share/extensions/Yamaha_SKW-01.xml:18-21, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" - name: "skw-01_kanjifont.rom" path: "openmsx/share/systemroms/skw-01_kanjifont.rom" @@ -905,4 +905,4 @@ files: required: false validation: [sha1] description: "Read by extension Yamaha_SKW-01" - source_ref: "share/extensions/Yamaha_SKW-01.xml:22-25" + source_ref: "share/extensions/Yamaha_SKW-01.xml:22-25, build/libretro_share.py:17-23, src/libretro/LibretroCore.cc:146-160, src/config/HardwareConfig.cc:35-45, 249-277, src/memory/Rom.cc:135-136, 165-218" diff --git a/emulators/openmsx.yml b/emulators/openmsx.yml index c8f8d3913..aa080e505 100644 --- a/emulators/openmsx.yml +++ b/emulators/openmsx.yml @@ -80,7 +80,7 @@ files: size: 65536 description: "NMS 8245 combined system ROM (BIOS+BASIC 0x0000-0x7FFF, Sub ROM 0x8000-0xBFFF, FDC 0xC000-0xFFFF)" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2_EN.xml:24,65,111" + source_ref: "share/machines/Boosted_MSX2_EN.xml:24,65,111, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fmpac.rom path: "share/systemroms/fmpac.rom" @@ -88,7 +88,7 @@ files: required: true description: "Panasonic SW-M004 FMPAC (FM-PAC) sound cartridge ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2_EN.xml:83" + source_ref: "share/machines/Boosted_MSX2_EN.xml:83, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: phc-70fd2_basickun.rom path: "share/systemroms/phc-70fd2_basickun.rom" @@ -96,7 +96,7 @@ files: required: true description: "Sanyo PHC-70FD2 MSX-BASIC Kun compiler ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2_EN.xml:89, share/machines/Boosted_MSX2+_JP.xml:167, share/machines/Boosted_MSXturboR_with_IDE.xml:79" + source_ref: "share/machines/Boosted_MSX2_EN.xml:89, share/machines/Boosted_MSX2+_JP.xml:167, share/machines/Boosted_MSXturboR_with_IDE.xml:79, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: yrw801.rom path: "share/systemroms/yrw801.rom" @@ -104,7 +104,7 @@ files: required: true description: "Yamaha YRW801 MoonSound wavetable ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2_EN.xml:186, share/machines/Boosted_MSX2+_JP.xml:120, share/machines/Boosted_MSXturboR_with_IDE.xml:203" + source_ref: "share/machines/Boosted_MSX2_EN.xml:186, share/machines/Boosted_MSX2+_JP.xml:120, share/machines/Boosted_MSXturboR_with_IDE.xml:203, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" # ------------------------------------------------------- # Boosted_MSX2+_JP (msx2+) @@ -116,7 +116,7 @@ files: required: true description: "FS-A1WSX MSX2+ BIOS and BASIC ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:143" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:143, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-a1wsx_fmbasic.rom path: "share/systemroms/fs-a1wsx_fmbasic.rom" @@ -124,7 +124,7 @@ files: required: true description: "FS-A1WSX MSX-MUSIC (OPLL) ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:155" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:155, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-a1wsx_msx2psub.rom installed_on: [retropie] @@ -133,7 +133,7 @@ files: required: true description: "FS-A1WSX MSX2+ Sub ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:218" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:218, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" note: "RetroPie unpacks openmsxroms.tar.gz into the installed share/systemroms, which the file pool scans. This ROM is in it as MSX2PEXT.ROM and is found by its SHA1." - name: fs-a1wsx_kanjibasic.rom @@ -142,7 +142,7 @@ files: required: true description: "FS-A1WSX Kanji Driver with BASIC ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:225" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:225, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-a1wsx_disk.rom path: "share/systemroms/fs-a1wsx_disk.rom" @@ -150,7 +150,7 @@ files: required: true description: "FS-A1WSX FDC (TC8566AF) disk controller ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:237" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:237, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-a1wsx_firmware.rom path: "share/systemroms/fs-a1wsx_firmware.rom" @@ -158,7 +158,7 @@ files: required: true description: "FS-A1WSX Panasonic firmware ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:251" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:251, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-a1wsx_kanjifont.rom path: "share/systemroms/fs-a1wsx_kanjifont.rom" @@ -167,7 +167,7 @@ files: required: true description: "Kanji font ROM (shared by FS-A1WSX and FS-A1GT machines)" validation: [sha1] - source_ref: "share/machines/Boosted_MSX2+_JP.xml:27-28, share/machines/Panasonic_FS-A1WSX.xml:29-30, share/machines/Boosted_MSXturboR_with_IDE.xml:215-216, share/machines/Panasonic_FS-A1GT.xml:141-142" + source_ref: "share/machines/Boosted_MSX2+_JP.xml:27-28, share/machines/Panasonic_FS-A1WSX.xml:29-30, share/machines/Boosted_MSXturboR_with_IDE.xml:215-216, share/machines/Panasonic_FS-A1GT.xml:141-142, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" note: "Panasonic_FS-A1WSX.xml and Boosted_MSX2+_JP.xml name it fs-a1wsx_kanjifont.rom, Panasonic_FS-A1GT.xml and Boosted_MSXturboR_with_IDE.xml name it fs-a1gt_kanjifont.rom, all four with the same sha1." # ------------------------------------------------------- @@ -182,7 +182,7 @@ files: required: true description: "FS-A1GT turboR combined firmware (512KB, contains BIOS, Sub ROM, Kanji, FDC, MSX-MUSIC, Opening ROM)" validation: [sha1] - source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:23" + source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:23, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: ide250.dat path: "share/systemroms/ide250.dat" @@ -190,7 +190,7 @@ files: required: true description: "Sunrise IDE 2.50 interface ROM" validation: [sha1] - source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:49" + source_ref: "share/machines/Boosted_MSXturboR_with_IDE.xml:49, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: ide250.zip path: "share/systemroms/ide250.zip" @@ -213,7 +213,7 @@ files: required: true description: "ColecoVision system BIOS ROM" validation: [sha1] - source_ref: "share/machines/ColecoVision_SGM.xml:57" + source_ref: "share/machines/ColecoVision_SGM.xml:57, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" # ------------------------------------------------------- # Spectravideo_SVI-328 (spectravideo) @@ -224,7 +224,7 @@ files: required: true description: "SVI-328 BASIC v1.11 ROM" validation: [sha1] - source_ref: "share/machines/Spectravideo_SVI-328.xml:52" + source_ref: "share/machines/Spectravideo_SVI-328.xml:52, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" # ------------------------------------------------------- # Pioneer_PX-7 (laserdisc) @@ -236,7 +236,7 @@ files: required: true description: "Pioneer PX-7 MSX1 BIOS and BASIC ROM" validation: [sha1] - source_ref: "share/machines/Pioneer_PX-7.xml:67" + source_ref: "share/machines/Pioneer_PX-7.xml:67, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: px-7_pbasic.rom path: "share/systemroms/px-7_pbasic.rom" @@ -244,7 +244,7 @@ files: required: true description: "Pioneer PX-7 LaserDisc PBASIC controller ROM" validation: [sha1] - source_ref: "share/machines/Pioneer_PX-7.xml:82" + source_ref: "share/machines/Pioneer_PX-7.xml:82, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" # ------------------------------------------------------- # Machines whose ROMs RetroBat lists. Each ROM is found in the @@ -261,7 +261,7 @@ files: size: 32768 description: "National CF-3300 MSX1 BIOS and BASIC ROM (also used by CF-1200, CF-2700, CF-3000, FS-1300)" validation: [sha1] - source_ref: "share/machines/National_CF-3300.xml:51-52" + source_ref: "share/machines/National_CF-3300.xml:51-52, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: cf-3300_disk.rom path: "share/systemroms/cf-3300_disk.rom" @@ -270,7 +270,7 @@ files: size: 16384 description: "National CF-3300 disk controller ROM (also used by Gradiente Expert DD Plus)" validation: [sha1] - source_ref: "share/machines/National_CF-3300.xml:75-76" + source_ref: "share/machines/National_CF-3300.xml:75-76, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-5500_basic-bios2.rom path: "share/systemroms/fs-5500_basic-bios2.rom" @@ -279,7 +279,7 @@ files: size: 32768 description: "National FS-5500 MSX2 BIOS and BASIC ROM" validation: [sha1] - source_ref: "share/machines/National_FS-5500F2.xml:76-77, share/machines/National_FS-5500F1.xml:78" + source_ref: "share/machines/National_FS-5500F2.xml:76-77, share/machines/National_FS-5500F1.xml:78, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-5500_msx2sub.rom path: "share/systemroms/fs-5500_msx2sub.rom" @@ -288,7 +288,7 @@ files: size: 16384 description: "National FS-5500 MSX2 Sub ROM" validation: [sha1] - source_ref: "share/machines/National_FS-5500F2.xml:100-101, share/machines/National_FS-5500F1.xml:102" + source_ref: "share/machines/National_FS-5500F2.xml:100-101, share/machines/National_FS-5500F1.xml:102, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-5500_kanjibasic.rom path: "share/systemroms/fs-5500_kanjibasic.rom" @@ -297,7 +297,7 @@ files: size: 32768 description: "National FS-5500 Kanji Driver ROM (also used by FS-4600F and FS-5000F2)" validation: [sha1] - source_ref: "share/machines/National_FS-5500F2.xml:107-108, share/machines/National_FS-5500F1.xml:109" + source_ref: "share/machines/National_FS-5500F2.xml:107-108, share/machines/National_FS-5500F1.xml:109, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-5500_kanjifont.rom path: "share/systemroms/fs-5500_kanjifont.rom" @@ -306,7 +306,7 @@ files: size: 131072 description: "National FS-5500 Kanji font ROM (also used by FS-4000, FS-4500 and FS-4700F)" validation: [sha1] - source_ref: "share/machines/National_FS-5500F2.xml:20-21, share/machines/National_FS-5500F1.xml:22" + source_ref: "share/machines/National_FS-5500F2.xml:20-21, share/machines/National_FS-5500F1.xml:22, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: fs-5500_superimp.rom path: "share/systemroms/fs-5500_superimp.rom" @@ -315,7 +315,7 @@ files: size: 32768 description: "National FS-5500 Super Impose ROM" validation: [sha1] - source_ref: "share/machines/National_FS-5500F2.xml:117-118, share/machines/National_FS-5500F1.xml:119" + source_ref: "share/machines/National_FS-5500F2.xml:117-118, share/machines/National_FS-5500F1.xml:119, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: nms8245_msx2sub.rom path: "share/systemroms/nms8245_msx2sub.rom" @@ -326,7 +326,7 @@ files: size: 16384 description: "Philips NMS 8245 MSX2 Sub ROM (1.05/1.06 and 1.08 revisions)" validation: [sha1] - source_ref: "share/machines/Philips_NMS_8245.xml:108-110" + source_ref: "share/machines/Philips_NMS_8245.xml:108-110, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: vg8020_basic-bios1.rom path: "share/systemroms/vg8020_basic-bios1.rom" @@ -335,7 +335,7 @@ files: size: 32768 description: "Philips VG 8020 MSX1 BIOS and BASIC ROM (also used by AVT DPC-200, Goldstar FC-200, Toshiba HX-20E, HX-22I, HX-51I)" validation: [sha1] - source_ref: "share/machines/Philips_VG_8020.xml:53-54" + source_ref: "share/machines/Philips_VG_8020.xml:53-54, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: svi-738_basic-bios1.rom path: "share/systemroms/svi-738_basic-bios1.rom" @@ -344,7 +344,7 @@ files: size: 32768 description: "Spectravideo SVI-738 MSX1 BIOS and BASIC ROM" validation: [sha1] - source_ref: "share/machines/Spectravideo_SVI-738.xml:53-54" + source_ref: "share/machines/Spectravideo_SVI-738.xml:53-54, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: svi-738_se_basic-bios1.rom path: "share/systemroms/svi-738_se_basic-bios1.rom" @@ -353,7 +353,7 @@ files: size: 32768 description: "Spectravideo SVI-738 (Sweden) MSX1 BIOS and BASIC ROM" validation: [sha1] - source_ref: "share/machines/Spectravideo_SVI-738_SE.xml:53-54" + source_ref: "share/machines/Spectravideo_SVI-738_SE.xml:53-54, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: svi-738_rs232.rom path: "share/systemroms/svi-738_rs232.rom" @@ -362,7 +362,7 @@ files: size: 8192 description: "Spectravideo SVI-738 RS-232 interface ROM" validation: [sha1] - source_ref: "share/machines/Spectravideo_SVI-738.xml:76-77, share/machines/Spectravideo_SVI-738_SE.xml:76-77" + source_ref: "share/machines/Spectravideo_SVI-738.xml:76-77, share/machines/Spectravideo_SVI-738_SE.xml:76-77, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" - name: svi-738_disk.rom path: "share/systemroms/svi-738_disk.rom" @@ -373,4 +373,4 @@ files: required: false description: "Spectravideo SVI-738 disk controller ROM" validation: [sha1] - source_ref: "share/machines/Spectravideo_SVI-738.xml:90-93, share/machines/Spectravideo_SVI-738_SE.xml:90-93" + source_ref: "share/machines/Spectravideo_SVI-738.xml:90-93, share/machines/Spectravideo_SVI-738_SE.xml:90-93, build/install.py:39, src/config/HardwareConfig.cc:25-33, 249-277, src/memory/Rom.cc:97-98, 120-195" diff --git a/emulators/openttd.yml b/emulators/openttd.yml index e5b1b7dd2..3816fde12 100644 --- a/emulators/openttd.yml +++ b/emulators/openttd.yml @@ -75,7 +75,7 @@ files: description: "Transport Tycoon Deluxe DOS graphics, base" required: false md5: "9311676280e5b14077a8ee41c1b42192" - source_ref: "media/baseset/orig_dos.obg:20, media/baseset/orig_dos_de.obg:20" + source_ref: "media/baseset/orig_dos.obg:20, media/baseset/orig_dos_de.obg:20, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGI.GRF" path: "baseset/TRGI.GRF" @@ -84,7 +84,7 @@ files: description: "Transport Tycoon Deluxe DOS graphics, logos" required: false md5: "da6a6c9dcc451eec88d79211437b76a8" - source_ref: "media/baseset/orig_dos.obg:21, media/baseset/orig_dos_de.obg:21" + source_ref: "media/baseset/orig_dos.obg:21, media/baseset/orig_dos_de.obg:21, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGC.GRF" path: "baseset/TRGC.GRF" @@ -93,7 +93,7 @@ files: description: "Transport Tycoon Deluxe DOS graphics, sub-arctic climate" required: false md5: "ed446637e034104c5559b32c18afe78d" - source_ref: "media/baseset/orig_dos.obg:22, media/baseset/orig_dos_de.obg:22" + source_ref: "media/baseset/orig_dos.obg:22, media/baseset/orig_dos_de.obg:22, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGH.GRF" path: "baseset/TRGH.GRF" @@ -102,7 +102,7 @@ files: description: "Transport Tycoon Deluxe DOS graphics, sub-tropical climate" required: false md5: "ee6616fb0e6ef6b24892c58c93d86fc9" - source_ref: "media/baseset/orig_dos.obg:23, media/baseset/orig_dos_de.obg:23" + source_ref: "media/baseset/orig_dos.obg:23, media/baseset/orig_dos_de.obg:23, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGT.GRF" path: "baseset/TRGT.GRF" @@ -111,7 +111,7 @@ files: description: "Transport Tycoon Deluxe DOS graphics, toyland" required: false md5: "e30e8a398ae86c03dc534a8ac7dfb3b6" - source_ref: "media/baseset/orig_dos.obg:24" + source_ref: "media/baseset/orig_dos.obg:24, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGT.GRF" path: "baseset/TRGT.GRF" @@ -121,7 +121,7 @@ files: required: false md5: "fcde1d7e8a74197d72a62695884b909e" note: "The German DOS CD differs from the other DOS releases only in this file." - source_ref: "media/baseset/orig_dos_de.obg:24" + source_ref: "media/baseset/orig_dos_de.obg:24, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRG1R.GRF" path: "baseset/TRG1R.GRF" @@ -130,7 +130,7 @@ files: description: "Transport Tycoon Deluxe Windows graphics, base" required: false md5: "b04ce593d8c5016e07473a743d7d3358" - source_ref: "media/baseset/orig_win.obg:20" + source_ref: "media/baseset/orig_win.obg:20, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGIR.GRF" path: "baseset/TRGIR.GRF" @@ -139,7 +139,7 @@ files: description: "Transport Tycoon Deluxe Windows graphics, logos" required: false md5: "0c2484ff6be49fc63a83be6ab5c38f32" - source_ref: "media/baseset/orig_win.obg:21" + source_ref: "media/baseset/orig_win.obg:21, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGCR.GRF" path: "baseset/TRGCR.GRF" @@ -148,7 +148,7 @@ files: description: "Transport Tycoon Deluxe Windows graphics, sub-arctic climate" required: false md5: "3668f410c761a050b5e7095a2b14879b" - source_ref: "media/baseset/orig_win.obg:22" + source_ref: "media/baseset/orig_win.obg:22, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGHR.GRF" path: "baseset/TRGHR.GRF" @@ -157,7 +157,7 @@ files: description: "Transport Tycoon Deluxe Windows graphics, sub-tropical climate" required: false md5: "06bf2b7a31766f048baac2ebe43457b1" - source_ref: "media/baseset/orig_win.obg:23" + source_ref: "media/baseset/orig_win.obg:23, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "TRGTR.GRF" path: "baseset/TRGTR.GRF" @@ -166,7 +166,7 @@ files: description: "Transport Tycoon Deluxe Windows graphics, toyland" required: false md5: "de53650517fe661ceaa3138c6edb0eb8" - source_ref: "media/baseset/orig_win.obg:24" + source_ref: "media/baseset/orig_win.obg:24, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:717, src/gfxinit.cpp:352-354" - name: "SAMPLE.CAT" path: "baseset/SAMPLE.CAT" @@ -175,7 +175,7 @@ files: description: "Transport Tycoon Deluxe DOS sound samples" required: false md5: "422ea3dd074d2859bb51639a6e0e85da" - source_ref: "media/baseset/orig_dos.obs:14" + source_ref: "media/baseset/orig_dos.obs:14, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:791" - name: "SAMPLE.CAT" path: "baseset/SAMPLE.CAT" @@ -184,7 +184,7 @@ files: description: "Transport Tycoon Deluxe Windows sound samples" required: false md5: "9212e81e72badd4bbe1eaeae66458e10" - source_ref: "media/baseset/orig_win.obs:14" + source_ref: "media/baseset/orig_win.obs:14, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:791" - name: "GM.CAT" path: "baseset/GM.CAT" @@ -193,7 +193,7 @@ files: description: "Transport Tycoon Deluxe DOS music catalogue" required: false md5: "7a29d2d0c4f7d2e03091ffa9b2bdfffb" - source_ref: "media/baseset/orig_dos.obm:44" + source_ref: "media/baseset/orig_dos.obm:44, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM-TTO.CAT" path: "baseset/GM-TTO.CAT" @@ -202,7 +202,7 @@ files: description: "Transport Tycoon Original music catalogue" required: false md5: "26e85ff84b0063aa5da05dd4698fc76e" - source_ref: "media/baseset/orig_tto.obm:63" + source_ref: "media/baseset/orig_tto.obm:63, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT00.GM" path: "baseset/GM_TT00.GM" @@ -211,7 +211,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Tycoon DELUXE Theme" required: false md5: "45cfec1b9d8c7a0ad45e755833cbf221" - source_ref: "media/baseset/orig_win.obm:44, media/baseset/orig_win.obm:68" + source_ref: "media/baseset/orig_win.obm:44, media/baseset/orig_win.obm:68, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT01.GM" path: "baseset/GM_TT01.GM" @@ -220,7 +220,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Snarl Up" required: false md5: "ab14ed3392d848abd2a2e90a9d75d121" - source_ref: "media/baseset/orig_win.obm:45, media/baseset/orig_win.obm:69" + source_ref: "media/baseset/orig_win.obm:45, media/baseset/orig_win.obm:69, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT02.GM" path: "baseset/GM_TT02.GM" @@ -229,7 +229,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Easy Driver" required: false md5: "dd4f696e4be5987ce738257b08b50171" - source_ref: "media/baseset/orig_win.obm:46, media/baseset/orig_win.obm:70" + source_ref: "media/baseset/orig_win.obm:46, media/baseset/orig_win.obm:70, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT03.GM" path: "baseset/GM_TT03.GM" @@ -238,7 +238,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Little Red Diesel" required: false md5: "a1bfde23343df9e4063419bf29c166b8" - source_ref: "media/baseset/orig_win.obm:47, media/baseset/orig_win.obm:71" + source_ref: "media/baseset/orig_win.obm:47, media/baseset/orig_win.obm:71, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT04.GM" path: "baseset/GM_TT04.GM" @@ -247,7 +247,7 @@ files: description: "Transport Tycoon Deluxe Windows music, City Groove" required: false md5: "4e6943aa0c455203d76c79389054747d" - source_ref: "media/baseset/orig_win.obm:48, media/baseset/orig_win.obm:72" + source_ref: "media/baseset/orig_win.obm:48, media/baseset/orig_win.obm:72, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT05.GM" path: "baseset/GM_TT05.GM" @@ -256,7 +256,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Aliens Ate My Railway" required: false md5: "cee281cb85a2e2343552d97640545a47" - source_ref: "media/baseset/orig_win.obm:49, media/baseset/orig_win.obm:73" + source_ref: "media/baseset/orig_win.obm:49, media/baseset/orig_win.obm:73, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT06.GM" path: "baseset/GM_TT06.GM" @@ -265,7 +265,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Stoke It" required: false md5: "26d1de5efa8675f94065784e9d539e49" - source_ref: "media/baseset/orig_win.obm:50, media/baseset/orig_win.obm:74" + source_ref: "media/baseset/orig_win.obm:50, media/baseset/orig_win.obm:74, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT07.GM" path: "baseset/GM_TT07.GM" @@ -274,7 +274,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Don't Walk!" required: false md5: "6f2691e17558f552ec4c565e4ab7139c" - source_ref: "media/baseset/orig_win.obm:51, media/baseset/orig_win.obm:75" + source_ref: "media/baseset/orig_win.obm:51, media/baseset/orig_win.obm:75, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT08.GM" path: "baseset/GM_TT08.GM" @@ -283,7 +283,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Sawyer's Tune" required: false md5: "a42bf2cb3340a822f1a69646fc7a487d" - source_ref: "media/baseset/orig_win.obm:52, media/baseset/orig_win.obm:76" + source_ref: "media/baseset/orig_win.obm:52, media/baseset/orig_win.obm:76, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT09.GM" path: "baseset/GM_TT09.GM" @@ -292,7 +292,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Fell Apart On Me" required: false md5: "eb35761a58a8df3c59ed8929cce13916" - source_ref: "media/baseset/orig_win.obm:53, media/baseset/orig_win.obm:77" + source_ref: "media/baseset/orig_win.obm:53, media/baseset/orig_win.obm:77, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT10.GM" path: "baseset/GM_TT10.GM" @@ -301,7 +301,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Can't Get There From Here" required: false md5: "42fecd686720a785d20a78590c466a82" - source_ref: "media/baseset/orig_win.obm:54, media/baseset/orig_win.obm:78" + source_ref: "media/baseset/orig_win.obm:54, media/baseset/orig_win.obm:78, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT11.GM" path: "baseset/GM_TT11.GM" @@ -310,7 +310,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Hard Drivin'" required: false md5: "50ef1ef02e49d2112786dd45e69dc3ee" - source_ref: "media/baseset/orig_win.obm:55, media/baseset/orig_win.obm:79" + source_ref: "media/baseset/orig_win.obm:55, media/baseset/orig_win.obm:79, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT12.GM" path: "baseset/GM_TT12.GM" @@ -319,7 +319,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Road Hog" required: false md5: "4ce707a0e0e72419f0681dd9bd95271b" - source_ref: "media/baseset/orig_win.obm:56, media/baseset/orig_win.obm:80" + source_ref: "media/baseset/orig_win.obm:56, media/baseset/orig_win.obm:80, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT13.GM" path: "baseset/GM_TT13.GM" @@ -328,7 +328,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Hold That Train!" required: false md5: "e765753be29d889ec818f38009103619" - source_ref: "media/baseset/orig_win.obm:57, media/baseset/orig_win.obm:81" + source_ref: "media/baseset/orig_win.obm:57, media/baseset/orig_win.obm:81, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT14.GM" path: "baseset/GM_TT14.GM" @@ -337,7 +337,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Broomer's Oil Rag" required: false md5: "270e2d63bd32b95a4d007ce15a6ce45f" - source_ref: "media/baseset/orig_win.obm:58, media/baseset/orig_win.obm:82" + source_ref: "media/baseset/orig_win.obm:58, media/baseset/orig_win.obm:82, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT15.GM" path: "baseset/GM_TT15.GM" @@ -346,7 +346,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Goss Groove" required: false md5: "89e116a1c0c69f1845cc903a9bfbe460" - source_ref: "media/baseset/orig_win.obm:59, media/baseset/orig_win.obm:83" + source_ref: "media/baseset/orig_win.obm:59, media/baseset/orig_win.obm:83, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT16.GM" path: "baseset/GM_TT16.GM" @@ -355,7 +355,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Small Town" required: false md5: "f824e2371b3bedfe61aad4b9c62dd6be" - source_ref: "media/baseset/orig_win.obm:60, media/baseset/orig_win.obm:84" + source_ref: "media/baseset/orig_win.obm:60, media/baseset/orig_win.obm:84, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT17.GM" path: "baseset/GM_TT17.GM" @@ -364,7 +364,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Cruise Control" required: false md5: "1b23eebb0796c1ab99cd97fa7082cf7b" - source_ref: "media/baseset/orig_win.obm:61, media/baseset/orig_win.obm:85" + source_ref: "media/baseset/orig_win.obm:61, media/baseset/orig_win.obm:85, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT18.GM" path: "baseset/GM_TT18.GM" @@ -373,7 +373,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Stroll On" required: false md5: "15650de3bad645d0e88c4f5c7a2df92a" - source_ref: "media/baseset/orig_win.obm:62, media/baseset/orig_win.obm:86" + source_ref: "media/baseset/orig_win.obm:62, media/baseset/orig_win.obm:86, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT19.GM" path: "baseset/GM_TT19.GM" @@ -382,7 +382,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Funk Central" required: false md5: "7aec079e15bd09588660b85545ac4dfc" - source_ref: "media/baseset/orig_win.obm:63, media/baseset/orig_win.obm:87" + source_ref: "media/baseset/orig_win.obm:63, media/baseset/orig_win.obm:87, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT20.GM" path: "baseset/GM_TT20.GM" @@ -391,7 +391,7 @@ files: description: "Transport Tycoon Deluxe Windows music, Jammit" required: false md5: "1509097889dee617aa1e9a1738a5a930" - source_ref: "media/baseset/orig_win.obm:64, media/baseset/orig_win.obm:88" + source_ref: "media/baseset/orig_win.obm:64, media/baseset/orig_win.obm:88, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" - name: "GM_TT21.GM" path: "baseset/GM_TT21.GM" @@ -400,4 +400,4 @@ files: description: "Transport Tycoon Deluxe Windows music, Movin' On" required: false md5: "a8d0aaad02e1a762d8d54cf81da56bab" - source_ref: "media/baseset/orig_win.obm:65, media/baseset/orig_win.obm:89" + source_ref: "media/baseset/orig_win.obm:65, media/baseset/orig_win.obm:89, media/baseset/CMakeLists.txt:4-15, 38-62, cmake/InstallAndPackage.cmake:28-34, src/base_media_base.h:198-204, src/base_media_func.h:42-139, 164-181, src/openttd.cpp:803, src/music.cpp:119-175" diff --git a/emulators/qemu.yml b/emulators/qemu.yml index b8bce138b..e596e06bf 100644 --- a/emulators/qemu.yml +++ b/emulators/qemu.yml @@ -13,7 +13,7 @@ version_basis: pattern: 'info->library_version\s+=\s+"([^"]+)' display_name: "QEMU" cores: [qemu] -systems: [ibm-pc, x86, x86-64, ppc, ppc64, sparc, sparc64, arm, aarch64, mips, mips64, riscv32, riscv64, s390x, m68k, alpha, hppa] +systems: [ibm-pc, x86, x86-64, ppc, ppc64, sparc, sparc64, arm, aarch64, mips, mips64, riscv32, riscv64, s390x, m68k, alpha] # QEMU (Quick Emulator) libretro core, based on QEMU 9.0.50. # Builds 17 targets: aarch64, alpha, arm, i386, m68k, mips(el), mips64(el), @@ -39,11 +39,11 @@ files: sha1: "f402170ee4f374c304a7ce0b139d6cecb1732aff" md5: "e9ca30100c47a26b66488444c5b0bd15" size: 131072 - required: true + required: false note: > - SeaBIOS legacy BIOS for x86/x86_64 PC emulation. Default firmware - loaded by pc_sysfw.c for standard PC machine types. - source_ref: "source hw/i386/pc_sysfw.c:222, 243" + SeaBIOS for the ISA PC machine, and for a PC machine whose firmware + option is cleared. The pc and q35 machines load bios-256k.bin. + source_ref: "source hw/i386/pc_sysfw.c:222, 243, source hw/i386/x86-common.c:993-994" - name: "SeaBIOS (256 KB)" installed_on: [retrodeck] @@ -51,11 +51,12 @@ files: sha1: "5fe6078506094333106e6b3f33c7185dea7f0268" md5: "d3dab3095c73cad67afd3cc16a88479c" size: 262144 - required: false + required: true note: > - SeaBIOS 256 KB variant. Some machine types or configurations - may prefer this larger image. - source_ref: "source pc-bios/meson.build:30" + Firmware of the pc and q35 machines, set by their default machine + options. pc is the default machine the core starts for an .iso, + .img or .qcow, and a missing image stops QEMU. + source_ref: "source pc-bios/meson.build:30, source ui/libretro.c:24-29, 734, source hw/i386/pc_piix.c:466, 486, source hw/i386/pc_q35.c:349, source hw/i386/x86-common.c:993-1003, 1043-1045" - name: "SeaBIOS microvm" installed_on: [retrodeck] @@ -76,8 +77,8 @@ files: md5: "387c48aef9497c6c2b914b1e6b9bc7aa" size: 16384 required: false - note: "Minimal x86 firmware for fast Linux kernel booting." - source_ref: "source pc-bios/meson.build:32" + note: "Firmware of the microvm machine when ACPI is off." + source_ref: "source pc-bios/meson.build:32, source hw/i386/microvm.c:57, 277-281, source hw/i386/x86-common.c:993-994" # ======================================================== # x86 VGA BIOS (SeaVGABIOS / LGPL VGA BIOS) @@ -248,7 +249,7 @@ files: size: 67072 required: false note: "iPXE PXE boot ROM for Intel e1000 NIC (8086:100e)." - source_ref: "source pc-bios/meson.build:47" + source_ref: "source pc-bios/meson.build:47, source hw/pci/pci.c:2362-2363" - name: "PXE eepro100" installed_on: [retrodeck] @@ -268,7 +269,7 @@ files: size: 61440 required: false note: "iPXE PXE boot ROM for NE2000 PCI NIC (1050:0940)." - source_ref: "source pc-bios/meson.build:49" + source_ref: "source pc-bios/meson.build:49, source hw/pci/pci.c:2362-2363" - name: "PXE pcnet" installed_on: [retrodeck] @@ -278,7 +279,7 @@ files: size: 61440 required: false note: "iPXE PXE boot ROM for AMD PCnet NIC (1022:2000)." - source_ref: "source pc-bios/meson.build:50" + source_ref: "source pc-bios/meson.build:50, source hw/pci/pci.c:2362-2363" - name: "PXE rtl8139" installed_on: [retrodeck] @@ -288,7 +289,7 @@ files: size: 61440 required: false note: "iPXE PXE boot ROM for Realtek RTL8139 NIC (10ec:8139)." - source_ref: "source pc-bios/meson.build:51" + source_ref: "source pc-bios/meson.build:51, source hw/pci/pci.c:2362-2363" - name: "PXE virtio" installed_on: [retrodeck] @@ -298,7 +299,7 @@ files: size: 60416 required: false note: "iPXE PXE boot ROM for VirtIO NIC (1af4:1000)." - source_ref: "source pc-bios/meson.build:52" + source_ref: "source pc-bios/meson.build:52, source hw/pci/pci.c:2362-2363" # ======================================================== # EFI NETWORK BOOT ROMs (iPXE UEFI) @@ -331,7 +332,7 @@ files: size: 159232 required: false note: "iPXE EFI boot ROM for Intel eepro100 NIC." - source_ref: "source pc-bios/meson.build:54" + source_ref: "source pc-bios/meson.build:54, source hw/pci/pci.c:2362-2363" - name: "EFI ne2k_pci" installed_on: [retrodeck] @@ -386,85 +387,21 @@ files: # ======================================================== # EDK2 UEFI FIRMWARE # ======================================================== - - name: "EDK2 x86_64 UEFI" - path: "qemu/edk2-x86_64-code.fd" - sha1: "eac1a94b8e0d7c53fd5df001c36794ec34c7c724" - size: 3653632 - required: false - note: "TianoCore UEFI firmware for x86_64. Built from edk2-stable202302." - source_ref: "source pc-bios/meson.build:12" - - - name: "EDK2 x86_64 Secure Boot UEFI" - path: "qemu/edk2-x86_64-secure-code.fd" - sha1: "617abe2746696bb4a309d72cecb446dc76a2a61e" - size: 3653632 - required: false - note: "TianoCore UEFI firmware for x86_64 with Secure Boot support." - source_ref: "source pc-bios/meson.build:13" - - - name: "EDK2 i386 UEFI" - path: "qemu/edk2-i386-code.fd" - sha1: "45b8faebdfaaf19d16e3a7c5f60d69214685071c" - size: 3653632 - required: false - note: "TianoCore UEFI firmware for i386." - source_ref: "source pc-bios/meson.build:9" - - - name: "EDK2 i386 Secure Boot UEFI" - path: "qemu/edk2-i386-secure-code.fd" - sha1: "6982abec8ef2ed7c8293163d5a0bd69a01a2126f" - size: 3653632 - required: false - note: "TianoCore UEFI firmware for i386 with Secure Boot support." - source_ref: "source pc-bios/meson.build:10" - - - name: "EDK2 i386 UEFI vars template" - path: "qemu/edk2-i386-vars.fd" - sha1: "b62e676c9317a32aaa9ee1d76268d8c55663bd6e" - size: 540672 - required: false - note: "UEFI variable store template for i386/x86_64 EDK2 firmware." - source_ref: "source pc-bios/meson.build:11" - - name: "EDK2 AArch64 UEFI" path: "qemu/edk2-aarch64-code.fd" sha1: "514edbce58bfa877170673c1799351a7dab3b6df" size: 67108864 required: false - note: "TianoCore UEFI firmware for AArch64 (ARM 64-bit)." - source_ref: "source pc-bios/meson.build:4" + note: "TianoCore UEFI firmware for AArch64 (ARM 64-bit). Starts with -bios on the virt machine." + source_ref: "source pc-bios/meson.build:4, source hw/arm/virt.c:1331" - name: "EDK2 ARM UEFI" path: "qemu/edk2-arm-code.fd" sha1: "c20f01c28b59b388abb9d0febeec45d801a632f0" size: 67108864 required: false - note: "TianoCore UEFI firmware for ARM (32-bit)." - source_ref: "source pc-bios/meson.build:5" - - - name: "EDK2 ARM UEFI vars template" - path: "qemu/edk2-arm-vars.fd" - sha1: "b051167e0e57bd13d77ed92ef7b474872f44ec6d" - size: 67108864 - required: false - note: "UEFI variable store template for ARM/AArch64 EDK2 firmware." - source_ref: "source pc-bios/meson.build:6" - - - name: "EDK2 RISC-V UEFI" - path: "qemu/edk2-riscv-code.fd" - sha1: "2c8633d881ece0c4794d740138a318f7e9af480c" - size: 33554432 - required: false - note: "TianoCore UEFI firmware for RISC-V 64-bit." - source_ref: "source pc-bios/meson.build:7" - - - name: "EDK2 RISC-V UEFI vars template" - path: "qemu/edk2-riscv-vars.fd" - sha1: "c4e6cce4247ba8f32f528c1c69f49228f616677f" - size: 33554432 - required: false - note: "UEFI variable store template for RISC-V EDK2 firmware." - source_ref: "source pc-bios/meson.build:8" + note: "TianoCore UEFI firmware for ARM (32-bit). Starts with -bios on the virt machine." + source_ref: "source pc-bios/meson.build:5, source hw/arm/virt.c:1331" # ======================================================== # POWERPC FIRMWARE @@ -507,15 +444,6 @@ files: note: "Minimal Open Firmware shim for -machine pseries,x-vof=on. Also default for Pegasos II." source_ref: "source hw/ppc/spapr.c:107, source hw/ppc/pegasos2.c:43" - - name: "VOF NVRAM" - installed_on: [retrodeck] - path: "qemu/vof-nvram.bin" - sha1: "5d1184609b87f78635f0575467a1c3f440900ff0" - size: 16384 - required: false - note: "NVRAM template for VOF (Virtual Open Firmware)." - source_ref: "source pc-bios/meson.build:83" - - name: "U-Boot e500" installed_on: [retrodeck] path: "qemu/u-boot.e500" @@ -532,7 +460,7 @@ files: size: 524288 required: false note: "U-Boot for Sam460ex (AmigaOne) PowerPC board." - source_ref: "source pc-bios/meson.build:74" + source_ref: "source pc-bios/meson.build:74, source hw/ppc/sam460ex.c:46, 120-126, source hw/core/loader.c:1078-1079" - name: "QEMU VGA Mac driver" installed_on: [retrodeck] @@ -643,27 +571,6 @@ files: note: "Network boot firmware for s390x emulation." source_ref: "source hw/s390x/ipl.c:497" - # ======================================================== - # HP-PA FIRMWARE - # ======================================================== - - name: "HP-PA firmware (32-bit)" - installed_on: [retrodeck] - path: "qemu/hppa-firmware.img" - sha1: "605c36ede6c120c6cc7efe147a75a3dc4b7e4fb0" - size: 167820 - required: false - note: "SeaBIOS-hppa firmware for 32-bit HP-PARISC emulation." - source_ref: "source hw/hppa/machine.c:424" - - - name: "HP-PA firmware (64-bit)" - installed_on: [retrodeck] - path: "qemu/hppa-firmware64.img" - sha1: "b42f6d4ca74073de6c038579b4a9323ad0a6b398" - size: 206024 - required: false - note: "SeaBIOS-hppa firmware for 64-bit HP-PARISC emulation." - source_ref: "source hw/hppa/machine.c:424" - # ======================================================== # MIPS FIRMWARE (not shipped, user-supplied) # ======================================================== @@ -745,24 +652,6 @@ files: note: "Device tree blob for PowerPC Canyonlands (460EX) / Sam460ex board." source_ref: "source hw/ppc/sam460ex.c:45" - - name: "Petalogix ML605 DTB (MicroBlaze)" - installed_on: [retrodeck] - path: "qemu/petalogix-ml605.dtb" - sha1: "892d265838866869b8a8ef104252ff5b2fda156f" - size: 9882 - required: false - note: "Device tree blob for Xilinx Petalogix ML605 MicroBlaze board. MicroBlaze target not built in libretro core." - source_ref: "source pc-bios/meson.build:91" - - - name: "Petalogix S3ADSP1800 DTB (MicroBlaze)" - installed_on: [retrodeck] - path: "qemu/petalogix-s3adsp1800.dtb" - sha1: "976600e3f89ecc1f3564b7077f53c58e0b565280" - size: 8161 - required: false - note: "Device tree blob for Xilinx Petalogix S3ADSP1800 MicroBlaze board. MicroBlaze target not built in libretro core." - source_ref: "source pc-bios/meson.build:90" - - name: "Virtex ML507 DTB (PPC)" path: "qemu/virtex-ml507.dtb" @@ -776,16 +665,25 @@ notes: this path via qemu_add_data_dir() in ui/libretro.c:659-660. default_usage: > For typical x86/x86_64 usage (loading .iso/.img/.qcow files directly), - only bios.bin (or bios-256k.bin) and vgabios.bin are strictly needed. - Other VGA BIOS variants are loaded depending on the emulated GPU. - PXE/EFI ROMs are only needed for network booting. + the default pc machine needs bios-256k.bin and the VGA BIOS of its + display. Other VGA BIOS variants are loaded depending on the emulated GPU. + A NIC reads its default romfile. The pxe-*.rom images and efi-eepro100.rom + are read only when a romfile= option names them (hw/pci/pci.c:2362-2363). multi_arch: > The libretro build targets 17 architectures. Non-x86 firmware is only needed when using .qemu_cmd_line files that invoke a different qemu-system-* binary (e.g. qemu-system-ppc for MacOS 9). edk2: > EDK2 UEFI firmware is shipped as bz2-compressed blobs in pc-bios/. These - provide UEFI boot for x86, ARM, and RISC-V machine types. Users specify - them via -bios or pflash in .qemu_cmd_line files. + provide UEFI boot for x86, ARM, and RISC-V machine types. No machine + names them: a .qemu_cmd_line names a code image with -bios, which is + looked up in the data directory. pflash drives, the variable store + templates included, are opened by path from the content folder + (ui/libretro.c:697). The ARM and AArch64 code images boot through + -bios on the virt machine. The x86 images are 3653632 bytes, not a + multiple of 64 KiB, so x86_bios_rom_init refuses them + (hw/i386/x86-common.c:1000-1002), and the RISC-V image is S-mode code + for pflash0 that -bios does not start: those are read only as pflash + drives, never from the system directory. experimental: "This core is marked is_experimental=true in its .info file." version: "Based on QEMU 9.0.50 (io12/qemu-libretro)" diff --git a/emulators/raze.yml b/emulators/raze.yml index 3684d53cd..c16b1be3d 100644 --- a/emulators/raze.yml +++ b/emulators/raze.yml @@ -95,7 +95,7 @@ files: size: 26524524 crc32: "bbc9ce44" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:3, 48-59" + source_ref: "wadsrc/static/engine/grpinfo.txt:3, 48-59, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D (South Korean Censored)" @@ -106,7 +106,7 @@ files: size: 26385383 crc32: "aa4f6a40" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:4, 61-72" + source_ref: "wadsrc/static/engine/grpinfo.txt:4, 61-72, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D: Atomic Edition" @@ -117,7 +117,7 @@ files: size: 44356548 crc32: "fd3dcff1" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:5, 74-85" + source_ref: "wadsrc/static/engine/grpinfo.txt:5, 74-85, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D: Plutonium Pak" @@ -128,7 +128,7 @@ files: size: 44348015 crc32: "f514a6ac" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:6, 113-124" + source_ref: "wadsrc/static/engine/grpinfo.txt:6, 113-124, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D: Atomic Edition (WT)" @@ -139,7 +139,7 @@ files: size: 44356548 crc32: "982afe4a" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:7, 87-98" + source_ref: "wadsrc/static/engine/grpinfo.txt:7, 87-98, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "World Tour release." - name: "DUKE3D.GRP" @@ -151,7 +151,7 @@ files: size: 44486702 crc32: "89792e05" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:100-111" + source_ref: "wadsrc/static/engine/grpinfo.txt:100-111, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "World Tour release, second known build." - name: "DUKE3D.GRP" @@ -163,7 +163,7 @@ files: size: 9690241 crc32: "02f18900" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:8, 126-136" + source_ref: "wadsrc/static/engine/grpinfo.txt:8, 126-136, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D Shareware 1.0" @@ -174,7 +174,7 @@ files: size: 10429258 crc32: "a28aa589" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:9, 138-148" + source_ref: "wadsrc/static/engine/grpinfo.txt:9, 138-148, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D Shareware 1.1" @@ -185,7 +185,7 @@ files: size: 10442980 crc32: "912e1e8d" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:10, 150-160" + source_ref: "wadsrc/static/engine/grpinfo.txt:10, 150-160, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKE3D.GRP" description: "Duke Nukem 3D Shareware 1.3D" @@ -196,7 +196,7 @@ files: size: 11035779 crc32: "983ad923" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:11, 162-172" + source_ref: "wadsrc/static/engine/grpinfo.txt:11, 162-172, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKEDC.GRP" description: "Duke it out in D.C. (1.3D)" @@ -207,7 +207,7 @@ files: size: 7926624 crc32: "a9242158" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:14, 198-208" + source_ref: "wadsrc/static/engine/grpinfo.txt:14, 198-208, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the 1.3D release (dependency DUKE13_CRC)." - name: "DUKEDC.GRP" @@ -219,7 +219,7 @@ files: size: 8225517 crc32: "b79d997f" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:15, 210-220" + source_ref: "wadsrc/static/engine/grpinfo.txt:15, 210-220, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." - name: "DUKEDC.GRP" @@ -231,7 +231,7 @@ files: size: 8410183 crc32: "a8cf80da" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:16, 222-232" + source_ref: "wadsrc/static/engine/grpinfo.txt:16, 222-232, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKEDC.GRP" description: "Duke it out in D.C." @@ -242,7 +242,7 @@ files: size: 8410187 crc32: "39a692bf" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:234-245" + source_ref: "wadsrc/static/engine/grpinfo.txt:234-245, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKEDC.GRP" description: "Duke it out in D.C." @@ -253,7 +253,7 @@ files: size: 8410183 crc32: "777c77b1" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:247-258" + source_ref: "wadsrc/static/engine/grpinfo.txt:247-258, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "DUKEDC.GRP" description: "Duke it out in D.C." @@ -264,7 +264,7 @@ files: size: 8410149 crc32: "c63b6a8b" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:260-271" + source_ref: "wadsrc/static/engine/grpinfo.txt:260-271, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "VACATION.GRP" description: "Duke Caribbean: Life's a Beach (1.3)" @@ -275,7 +275,7 @@ files: size: 23559381 crc32: "4a2dbb62" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:17, 273-285" + source_ref: "wadsrc/static/engine/grpinfo.txt:17, 273-285, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the 1.3D release (dependency DUKE13_CRC)." - name: "VACATION.GRP" @@ -287,7 +287,7 @@ files: size: 22551333 crc32: "2f4fccee" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:18, 287-299" + source_ref: "wadsrc/static/engine/grpinfo.txt:18, 287-299, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." - name: "VACATION.GRP" @@ -299,7 +299,7 @@ files: size: 22521880 crc32: "b62b42fd" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:19, 301-313" + source_ref: "wadsrc/static/engine/grpinfo.txt:19, 301-313, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "VACATION.GRP" description: "Duke Caribbean: Life's a Beach" @@ -310,7 +310,7 @@ files: size: 22213819 crc32: "18f01c5b" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:20, 316-328" + source_ref: "wadsrc/static/engine/grpinfo.txt:20, 316-328, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "VACATION.GRP" description: "Duke Caribbean: Life's a Beach" @@ -321,7 +321,7 @@ files: size: 22397273 crc32: "65b5f690" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:330-343" + source_ref: "wadsrc/static/engine/grpinfo.txt:330-343, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "VACATION.GRP" description: "Duke Caribbean: Life's a Beach" @@ -332,7 +332,7 @@ files: size: 22201375 crc32: "b28e883c" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:345-358" + source_ref: "wadsrc/static/engine/grpinfo.txt:345-358, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "VACATION.GRP" description: "Duke Caribbean: Life's a Beach" @@ -343,7 +343,7 @@ files: size: 22213795 crc32: "64cf2351" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:360-373" + source_ref: "wadsrc/static/engine/grpinfo.txt:360-373, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "NWINTER.GRP" description: "Duke: Nuclear Winter" @@ -354,7 +354,7 @@ files: size: 16169365 crc32: "f1cae8e4" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:21, 375-388" + source_ref: "wadsrc/static/engine/grpinfo.txt:21, 375-388, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." - name: "NWINTER.GRP" @@ -366,7 +366,7 @@ files: size: 10965909 crc32: "c7efbfa9" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:390-402" + source_ref: "wadsrc/static/engine/grpinfo.txt:390-402, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the Atomic Edition (dependency DUKE15_CRC)." - name: "penthous.zip" @@ -378,7 +378,7 @@ files: size: 2112419 crc32: "7cd82a3b" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:459-470" + source_ref: "wadsrc/static/engine/grpinfo.txt:459-470, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "The original ZIP release, identified as a whole file. Addon of the Atomic Edition (dependency DUKE15_CRC)." # ================================================================ @@ -394,7 +394,7 @@ files: size: 8200353 crc32: "b291418f" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:32, 485-499" + source_ref: "wadsrc/static/engine/grpinfo.txt:32, 485-499, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "BLOOD.RFF" description: "BLOOD: 1.1" @@ -405,7 +405,7 @@ files: size: 8231173 crc32: "c3a99936" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:33, 501-515" + source_ref: "wadsrc/static/engine/grpinfo.txt:33, 501-515, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "BLOOD.RFF" description: "BLOOD: One Unit Whole Blood" @@ -416,7 +416,7 @@ files: size: 9570681 crc32: "a8fdda84" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:34, 517-531" + source_ref: "wadsrc/static/engine/grpinfo.txt:34, 517-531, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "BLOOD.RFF" description: "BLOOD: Unknown Version" @@ -432,7 +432,7 @@ files: system: blood path: "SOUNDS.RFF" required: false - source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542" + source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 772-828, 696-704, 830-875" note: "Named by loadgrp in every Blood block and loaded with the main resource." - name: "GUI.RFF" @@ -440,7 +440,7 @@ files: system: blood path: "GUI.RFF" required: false - source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542" + source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 772-828, 696-704, 830-875" note: "Named by loadgrp in every Blood block and loaded with the main resource." - name: "BLOOD.GRP" @@ -448,7 +448,7 @@ files: system: blood path: "BLOOD.GRP" required: false - source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542" + source_ref: "wadsrc/static/engine/grpinfo.txt:494, 510, 526, 542, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 772-828, 696-704, 830-875" note: "Named by loadgrp in every Blood block and loaded with the main resource." - name: "SURFACE.DAT" @@ -496,7 +496,7 @@ files: size: 47536148 crc32: "7545319f" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:36, 614-625" + source_ref: "wadsrc/static/engine/grpinfo.txt:36, 614-625, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior (Europe)" @@ -507,7 +507,7 @@ files: size: 47536148 crc32: "d4a1e153" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:627-638" + source_ref: "wadsrc/static/engine/grpinfo.txt:627-638, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior (UK)" @@ -518,7 +518,7 @@ files: size: 47536148 crc32: "3ee68767" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:640-651" + source_ref: "wadsrc/static/engine/grpinfo.txt:640-651, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior (Censored)" @@ -529,7 +529,7 @@ files: size: 47537951 crc32: "1a8776d2" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:653-664" + source_ref: "wadsrc/static/engine/grpinfo.txt:653-664, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior Shareware 1.0" @@ -540,7 +540,7 @@ files: size: 25702245 crc32: "daa6bece" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:666-676" + source_ref: "wadsrc/static/engine/grpinfo.txt:666-676, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior Shareware 1.1" @@ -551,7 +551,7 @@ files: size: 25833456 crc32: "f21a6b35" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:678-688" + source_ref: "wadsrc/static/engine/grpinfo.txt:678-688, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "SW.GRP" description: "Shadow Warrior Shareware 1.2" @@ -562,7 +562,7 @@ files: size: 26056769 crc32: "08a7fa1f" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:690-700" + source_ref: "wadsrc/static/engine/grpinfo.txt:690-700, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "WT.GRP" description: "Shadow Warrior: Wanton Destruction" @@ -573,7 +573,7 @@ files: size: 48698128 crc32: "a9aaa7b7" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:37, 714-724" + source_ref: "wadsrc/static/engine/grpinfo.txt:37, 714-724, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the registered game (dependency SWREG12_CRC)." - name: "WT.GRP" @@ -585,7 +585,7 @@ files: size: 48698128 crc32: "8b6e8011" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:726-736" + source_ref: "wadsrc/static/engine/grpinfo.txt:726-736, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "TD.GRP" description: "Shadow Warrior: Twin Dragon" @@ -596,7 +596,7 @@ files: size: 12499012 crc32: "a1a65be8" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:38, 751-762" + source_ref: "wadsrc/static/engine/grpinfo.txt:38, 751-762, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" note: "Addon of the registered game (dependency SWREG12_CRC)." - name: "TD.GRP" @@ -608,7 +608,7 @@ files: size: 6236287 crc32: "b5b71277" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:764-774" + source_ref: "wadsrc/static/engine/grpinfo.txt:764-774, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "TD.GRP" description: "Shadow Warrior: Twin Dragon" @@ -619,7 +619,7 @@ files: size: 6235578 crc32: "acc8dcde" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:776-786" + source_ref: "wadsrc/static/engine/grpinfo.txt:776-786, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "TDRAGON.EXE" description: "Shadow Warrior: Twin Dragon, loose files" @@ -652,7 +652,7 @@ files: size: 27020745 crc32: "303cbd89" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:40, wadsrc/static/engine/grpinfo.txt:927-938" + source_ref: "wadsrc/static/engine/grpinfo.txt:40, wadsrc/static/engine/grpinfo.txt:927-938, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "STUFF.DAT" description: "Exhumed" @@ -663,7 +663,7 @@ files: size: 27108170 crc32: "e3b172f1" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:41, wadsrc/static/engine/grpinfo.txt:940-951" + source_ref: "wadsrc/static/engine/grpinfo.txt:41, wadsrc/static/engine/grpinfo.txt:940-951, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "STUFF.DAT" description: "Powerslave Demo" @@ -674,7 +674,7 @@ files: size: 27020745 crc32: "1d8c7645" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:42, wadsrc/static/engine/grpinfo.txt:953-963" + source_ref: "wadsrc/static/engine/grpinfo.txt:42, wadsrc/static/engine/grpinfo.txt:953-963, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" # ================================================================ # Redneck Rampage @@ -689,7 +689,7 @@ files: size: 141174222 crc32: "19d9bc79" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:28, wadsrc/static/engine/grpinfo.txt:814-827" + source_ref: "wadsrc/static/engine/grpinfo.txt:28, wadsrc/static/engine/grpinfo.txt:814-827, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "REDNECK.GRP" description: "Redneck Rampage Rides Again" @@ -700,7 +700,7 @@ files: size: 191798609 crc32: "958018c6" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:29, wadsrc/static/engine/grpinfo.txt:829-842" + source_ref: "wadsrc/static/engine/grpinfo.txt:29, wadsrc/static/engine/grpinfo.txt:829-842, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "GAME66.CON" description: "Redneck Rampage: Suckin' Grits on Route 66" @@ -724,7 +724,7 @@ files: size: 43448927 crc32: "75c1f07b" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:24, wadsrc/static/engine/grpinfo.txt:872-884" + source_ref: "wadsrc/static/engine/grpinfo.txt:24, wadsrc/static/engine/grpinfo.txt:872-884, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "NAPALM.GRP" description: "NAPALM" @@ -735,7 +735,7 @@ files: size: 44365728 crc32: "3de1589a" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:25, wadsrc/static/engine/grpinfo.txt:886-898" + source_ref: "wadsrc/static/engine/grpinfo.txt:25, wadsrc/static/engine/grpinfo.txt:886-898, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" - name: "WW2GI.GRP" description: "WWII GI" @@ -746,4 +746,4 @@ files: size: 77939508 crc32: "907b82bf" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:26, wadsrc/static/engine/grpinfo.txt:900-912" + source_ref: "wadsrc/static/engine/grpinfo.txt:26, wadsrc/static/engine/grpinfo.txt:900-912, wadsrc/CMakeLists.txt:2, source/core/version.h:66, source/core/searchpaths.cpp:393-613, 621-660, 696-704, 830-875" diff --git a/emulators/scummvm.yml b/emulators/scummvm.yml index 08fa6d172..59887d876 100644 --- a/emulators/scummvm.yml +++ b/emulators/scummvm.yml @@ -112,7 +112,7 @@ files: required: false sha1: "aa2dfd12c11c6e6f3baaf7bf199bd6bcd71a520c" md5: "ee71d6cd464c618c632e6fd62b430d2c" - source_ref: "upstream dists/scummvm.rc:24" + source_ref: "upstream dists/scummvm.rc:24, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source gui/gui-manager.cpp:87-88, source gui/ThemeEngine.cpp:2229-2256, 2052-2066" note: "Modern GUI theme for ScummVM launcher." - name: "scummclassic.zip" @@ -121,7 +121,7 @@ files: required: false sha1: "69836fb392710f2182df07bab8960e8a2d92c1a9" md5: "8f37bd19dd51be456ac8f005fd5669a8" - source_ref: "upstream dists/scummvm.rc:23" + source_ref: "upstream dists/scummvm.rc:23, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source gui/gui-manager.cpp:87-88, source gui/ThemeEngine.cpp:2229-2256, 2052-2066" note: "Classic GUI theme for ScummVM launcher." - name: "scummremastered.zip" @@ -130,7 +130,7 @@ files: required: false sha1: "03e53349eefc39ce25220bfcb1ae4a580704d29d" md5: "0d990484d0dfc1680b20cfabcae373cd" - source_ref: "upstream dists/scummvm.rc:25" + source_ref: "upstream dists/scummvm.rc:25, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source gui/gui-manager.cpp:87-88, source gui/ThemeEngine.cpp:2229-2256, 2052-2066" note: "Remastered GUI theme for ScummVM launcher." - name: "residualvm.zip" @@ -139,7 +139,7 @@ files: required: false sha1: "589b622f55c9944c4883e4163d4d49508e22e056" md5: "b2811fa9b209733b61cd49ddb21e1e95" - source_ref: "upstream dists/scummvm.rc:26" + source_ref: "upstream dists/scummvm.rc:26, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source gui/gui-manager.cpp:87-88, source gui/ThemeEngine.cpp:2229-2256, 2052-2066" note: "ResidualVM theme for 3D adventure games (Grim Fandango, Myst III)." - name: "gui-icons.dat" @@ -148,7 +148,7 @@ files: required: false sha1: "38e74e6994924781487a0d39cc53dc4708a90c1c" md5: "9c59e0e9875434456ec1b7eb8e51666f" - source_ref: "upstream dists/scummvm.rc:27" + source_ref: "upstream dists/scummvm.rc:27, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source gui/gui-manager.cpp:118" note: "GUI icon pack used by the ScummVM launcher interface." - name: "shaders.dat" @@ -157,7 +157,7 @@ files: required: false sha1: "c67ec35c3f6e2ba7f09b8f61a78df7f713ff040c" md5: "f073f17187d0bfa3e7ebb7f328847969" - source_ref: "upstream dists/scummvm.rc:28" + source_ref: "upstream dists/scummvm.rc:28, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source backends/graphics/opengl/opengl-graphics.cpp:423, source gui/shaderbrowser-dialog.cpp:88" note: "Compiled shader pack for the GUI rendering pipeline." - name: "translations.dat" @@ -166,7 +166,7 @@ files: required: false sha1: "e5b6f6d6473e2d6aa0a250fd9983b573ebf6fbe4" md5: "a206e54bac1af13559ac8b2d9e550577" - source_ref: "upstream dists/scummvm.rc:43" + source_ref: "upstream dists/scummvm.rc:43, source backends/platform/libretro/scripts/bundle_datafiles.sh:74, source backends/platform/libretro/src/libretro-os-utils.cpp:241, source common/translation.h:288, source common/translation.cpp:282-290" note: "GUI translation strings for ScummVM launcher localization." # ================================================================ @@ -180,7 +180,7 @@ files: required: false sha1: "379f9def6d0de4b4bad18b0177df81783a51f17b" md5: "73cf5bd61896442a990e363f284a0bc2" - source_ref: "source dists/engine-data/engine_data_core.mk" + source_ref: "source dists/engine-data/engine_data_core.mk, source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/achievements.cpp:105-109" note: "Achievement definitions for supported games." - name: "classicmacfonts.dat" @@ -189,7 +189,7 @@ files: required: false sha1: "768b6231c6068e3d9b4f2cc6b1b1e5485578fde1" md5: "d4264d4573f22d290e033e1d834d7221" - source_ref: "source dists/engine-data/engine_data_core.mk" + source_ref: "source dists/engine-data/engine_data_core.mk, source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source graphics/macgui/macfontmanager.cpp:222" note: "Classic Macintosh bitmap fonts for Mac game rendering." - name: "encoding.dat" @@ -198,7 +198,7 @@ files: required: false sha1: "11d3873337827195bc16c3d3175ad00f1777ed95" md5: "f2e88b2faec499a4914c3a0bcffc7db1" - source_ref: "source dists/engine-data/engine_data_core.mk" + source_ref: "source dists/engine-data/engine_data_core.mk, source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source common/str-enc.cpp:142" note: "Character encoding tables for text rendering across languages." - name: "helpdialog.zip" @@ -207,7 +207,7 @@ files: required: false sha1: "386d8a89e180f8abab53e5d5926b6a81ee4b31dd" md5: "a9584a928c0f52ef28b33d8702983c35" - source_ref: "source dists/engine-data/engine_data_core.mk" + source_ref: "source dists/engine-data/engine_data_core.mk, source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source gui/helpdialog.cpp:69, 147-148, source graphics/image-archive.cpp:50-54" note: "Help dialog assets for the in-game help system." - name: "macgui.dat" @@ -216,7 +216,7 @@ files: required: false sha1: "1eed577281b8819367d1ee99b1a76ff3e1920735" md5: "d97f2965013b343dd3d4fdbbc7192f15" - source_ref: "source dists/engine-data/engine_data_core.mk" + source_ref: "source dists/engine-data/engine_data_core.mk, source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source graphics/macgui/datafiles.cpp:37, 81" note: "Macintosh GUI widget data for Mac-style game interfaces." # ================================================================ @@ -230,7 +230,7 @@ files: required: false sha1: "775b12b7e787bbaaeb73aa45b1ad3bb383e041ef" md5: "4f9dd40b455876d5c54b5ebd93aec88c" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ACCESS)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ACCESS), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/access/resources.cpp:44" note: "Engine data for Access Software games (e.g. Amazon, Martian Memorandum)." - name: "bagel.dat" @@ -239,7 +239,7 @@ files: required: false sha1: "f83084c72b1ff8e16f9c013e5ef7cfbb5f3cc835" md5: "f6d90885f6962f89de02e34031111599" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_BAGEL)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_BAGEL), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/bagel/spacebar/baglib/bagel.cpp:113, source common/engine_data.cpp:253" note: "Engine data for Bagel engine games." - name: "cryo.dat" @@ -248,7 +248,7 @@ files: required: false sha1: "220c2fe52d26b8607abeb2ad4a8ea4324daea5ba" md5: "fc5886ea5388f20eae299bb408da5bcc" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_CRYO)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_CRYO), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/cryo/resource.cpp:303" note: "Engine data for Cryo Interactive games (e.g. Dune, Lost Eden)." - name: "cryomni3d.dat" @@ -257,7 +257,7 @@ files: required: false sha1: "3971847e26be0abad8196caf03e5852a81ddbdea" md5: "7224c7a94074addeb69015b1346695d2" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_CRYOMNI3D)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_CRYOMNI3D), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/cryomni3d/cryomni3d.cpp:82" note: "Engine data for CryOmni3D games (Versailles 1685)." - name: "darkseed.dat" @@ -266,7 +266,7 @@ files: required: false sha1: "343172f1bfff8cb8c4abefa95e211379f39583b7" md5: "9a9cfe40dcca517f130d4430bd1af643" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_DARKSEED)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_DARKSEED), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/darkseed/darkseed.cpp:66-71" note: "Engine data for Dark Seed (H.R. Giger adventure game)." - name: "drascula.dat" @@ -275,7 +275,7 @@ files: required: false sha1: "05c97e92439b67aea8f6eb7fc96db023edf62124" md5: "b304979ed642a6dcaf26f43f8a37a1de" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_DRASCULA)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_DRASCULA), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/drascula/drascula.cpp:987" note: "Engine data for Drascula: The Vampire Strikes Back." - name: "freescape.dat" @@ -284,7 +284,7 @@ files: required: false sha1: "c6b3d3152e4e2ff4c9bf55e103bb39ed7faca2bd" md5: "71697f90fb0c7747616dbb0799ce966b" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_FREESCAPE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_FREESCAPE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/freescape/freescape.h:61, source engines/freescape/assets.cpp:115" note: "Engine data for Freescape games (Driller, Dark Side, Total Eclipse)." - name: "got.aud" @@ -293,7 +293,7 @@ files: required: false sha1: "209ab6d86a7c44f241689c5511b2027f7ad2c7c4" md5: "d13cc3c481e84e787ec8aa86dffc565f" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GOT)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GOT), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/got/sound.cpp:38, 194-198" note: "Audio data for Game of Thrones engine." - name: "got.gfx" @@ -302,7 +302,7 @@ files: required: false sha1: "0c9603da78b980bcf391bbf5f9103a5a642c4ee8" md5: "a29f591769bd731df0d9ddd3a191fe8c" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GOT)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GOT), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/got/gfx/gfx_chunks.cpp:85" note: "Graphics data for Game of Thrones engine." - name: "hadesch_translations.dat" @@ -311,7 +311,7 @@ files: required: false sha1: "17aae444b3010e72e092635d25d3b93c104b0ad2" md5: "7857da7e56a11e0749fb45100c323b3c" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_HADESCH)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_HADESCH), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/hadesch/hadesch.cpp:476" note: "Translation data for Hades Challenge." - name: "hugo.dat" @@ -320,7 +320,7 @@ files: required: false sha1: "74a5fa172f5327fedc145cb9eccc8fd050b9cfb9" md5: "a865e70f1b0998a500f522dab441c8fc" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_HUGO)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_HUGO), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/hugo/hugo.cpp:457" note: "Engine data for Hugo's House of Horrors trilogy." - name: "kyra.dat" @@ -329,7 +329,7 @@ files: required: false sha1: "31b0b9418af2f9dd4e4094aada05d48eb355975b" md5: "ebddd7bbd97135a427083db5daf6f9fc" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_KYRA)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_KYRA), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/kyra/resource/resource.h:1252, source engines/kyra/resource/staticres.cpp:138-145" note: "Engine data for Kyrandia series (Legend of Kyrandia, Hand of Fate, Malcolm's Revenge)." - name: "lure.dat" @@ -338,7 +338,7 @@ files: required: false sha1: "516347ec0ec2a397265d1b2fb053aa3758382e09" md5: "6f90cf73f36453d332d5c9cee311f81c" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_LURE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_LURE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/lure/luredefs.h:31, source engines/lure/lure.cpp:56" note: "Engine data for Lure of the Temptress." - name: "macventure.dat" @@ -347,7 +347,7 @@ files: required: false sha1: "e431e718e3c784532422ea2654d5fc6042a95c09" md5: "3b1faf40e685b955372e02f54ed70263" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MACVENTURE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MACVENTURE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/macventure/datafiles.cpp:40, 76" note: "Engine data for MacVenture games (Shadowgate, Deja Vu, Uninvited)." - name: "mm.dat" @@ -356,7 +356,7 @@ files: required: false sha1: "0816fe29b57911b28cbf774348f5492062326a85" md5: "01f074a6ac34dd86fcc6d1e8090614f0" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MM)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MM), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/mm/xeen/files.cpp:72, source engines/mm/mm1/globals.cpp:61, source common/engine_data.cpp:253" note: "Engine data for Might and Magic engine." - name: "mort.dat" @@ -365,7 +365,7 @@ files: required: false sha1: "0b9d0fa2a18eadf61aeddc19128ef90898ab7206" md5: "3cfb16d7bab4d77606b3b1274b8ae870" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MORTEVIELLE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MORTEVIELLE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/mortevielle/mortevielle.h:87, source engines/mortevielle/mortevielle.cpp:299" note: "Engine data for Mortville Manor." - name: "myst3.dat" @@ -374,7 +374,7 @@ files: required: false sha1: "5fbf7b1a596219f0daab60a8ceb2f1e59e042243" md5: "54e9056211f2fff255b6f66a3fe39a8d" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MYST3)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MYST3), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/myst3/database.cpp:460" note: "Engine data for Myst III: Exile." - name: "nancy.dat" @@ -383,7 +383,7 @@ files: required: false sha1: "7c8907d33da59afd4e4b62eee67541910e0b78d9" md5: "eb7cfdb3f74972beb8f43196e4e44001" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_NANCY)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_NANCY), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/nancy/nancy.cpp:1111" note: "Engine data for Nancy Drew adventure games." - name: "neverhood.dat" @@ -392,7 +392,7 @@ files: required: false sha1: "490012c996ba0c56dd8d077e1418ee53b1e96397" md5: "dfaab12ffb265646f31f51b6904246d1" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_NEVERHOOD)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_NEVERHOOD), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/neverhood/neverhood.cpp:91" note: "Engine data for The Neverhood." - name: "prince_translation.dat" @@ -401,7 +401,7 @@ files: required: false sha1: "57403a286c4d251384442a507d285b2dc5ce330e" md5: "993adab2fd44277d5fd7aa5971e7099c" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_PRINCE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_PRINCE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/prince/prince.cpp:339" note: "Translation data for The Prince and the Coward." - name: "queen.tbl" @@ -410,7 +410,7 @@ files: required: false sha1: "7bafa28dfd9b3be17430d467d8787d8204437ba0" md5: "93c6d6379eb0290ce93854a6888ec3f4" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_QUEEN)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_QUEEN), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/queen/resource.cpp:32, 149" note: "Resource table for Flight of the Amazon Queen." - name: "sky.cpt" @@ -419,7 +419,7 @@ files: required: false sha1: "fa03ede717223eaf011491d2066e37eb112e735b" md5: "9d00157b1cebd6368cbf88135c098f40" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_SKY)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_SKY), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/sky/compact.cpp:127" note: "Compact table for Beneath a Steel Sky." - name: "supernova.dat" @@ -428,7 +428,7 @@ files: required: false sha1: "8a571cfc431b5fe794f0262f0e55f72927ab27b4" md5: "89664136c503a30894d5c713be5bfe90" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_SUPERNOVA)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_SUPERNOVA), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/supernova/supernova.h:50, source engines/supernova/supernova.cpp:466" note: "Engine data for Mission Supernova." - name: "teenagent.dat" @@ -437,7 +437,7 @@ files: required: false sha1: "0d488164930332bae3aa1ad38cef44abbe3d00a6" md5: "4594620989a0bfd8b120da2de7ac30de" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TEENAGENT)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TEENAGENT), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/teenagent/resources.cpp:308" note: "Engine data for Teenagent." - name: "titanic.dat" @@ -446,7 +446,7 @@ files: required: false sha1: "15f51828f08fdbe01b56123e96312b5859a968c0" md5: "4b2fb71201dc3795cff45df6200a1918" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TITANIC)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TITANIC), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/titanic/support/files_manager.cpp:40" note: "Engine data for Starship Titanic." - name: "tony.dat" @@ -455,7 +455,7 @@ files: required: false sha1: "a5e19f364bda6a0d2330495114c9ad665bb79ad0" md5: "891022a4e2917bb54b5cdc9a46f5b3df" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TONY)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TONY), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/tony/tony.cpp:182" note: "Engine data for Tony Tough and the Night of Roasted Moths." - name: "toon.dat" @@ -464,7 +464,7 @@ files: required: false sha1: "85bb688125d66f2797a41f153ce1fa177027a83f" md5: "2b71a5d9aa19219d46711e8a77451f0f" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TOON)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_TOON), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/toon/toon.cpp:5419" note: "Engine data for Toonstruck." - name: "ultima.dat" @@ -473,7 +473,7 @@ files: required: false sha1: "e049932518390257f4d49b1691cad229e6060079" md5: "e359fb7f14c4cb072b6e9300a23a6d62" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ULTIMA)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ULTIMA), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/ultima/shared/engine/data_archive.cpp:31, 84-85" note: "Engine data for Ultima series (Ultima IV-VIII, Savage Empire, Martian Dreams)." - name: "ultima8.dat" @@ -482,7 +482,7 @@ files: required: false sha1: "6319d3a245297697c1e4def78dc231a3f30708bb" md5: "e5b95811b05b9f0f593b49c860391200" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ULTIMA)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_ULTIMA), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/ultima/ultima8/ultima8.cpp:177-182" note: "Engine data specific to Ultima VIII: Pagan." - name: "wintermute.zip" @@ -491,7 +491,7 @@ files: required: false sha1: "5302f543384b21fb55466118a6966e5ef46b85f6" md5: "9783248899f9cb531f0a3e0a711ab8b3" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_WINTERMUTE)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_WINTERMUTE), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/wintermute/base/base_file_manager.cpp:408" note: "Engine data for Wintermute engine games." - name: "fonts.dat" @@ -500,7 +500,7 @@ files: required: false sha1: "1eaef39122559500fbbc705c9425500311d23e03" md5: "6df29d218962e155d0a2114006af45c0" - source_ref: "source dists/engine-data/engine_data.mk (USE_FREETYPE2)" + source_ref: "source dists/engine-data/engine_data.mk (USE_FREETYPE2), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source graphics/fonts/ttf.cpp:954-958, source engines/scumm/he/font_he.cpp:269-273" note: "FreeType2 font data for text rendering." - name: "fonts-cjk.dat" @@ -509,7 +509,7 @@ files: required: false sha1: "b46f5a744387d1991d66a06292811f217ae063e2" md5: "18b8811c1bbc297be45f38c3bd6a0728" - source_ref: "source dists/engine-data/engine_data_big.mk (USE_FREETYPE2)" + source_ref: "source dists/engine-data/engine_data_big.mk (USE_FREETYPE2), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source graphics/fonts/ttf.cpp:975-979" note: "CJK (Chinese/Japanese/Korean) font data. Large file, only for systems with enough memory." - name: "fonts-imgui.dat" @@ -518,7 +518,7 @@ files: required: false sha1: "659a025dfa39a8caada7dac6e69b4d7c88217b3f" md5: "9eb64ec7aa31dc2f5b55541415ecdf8b" - source_ref: "source dists/engine-data/engine_data.mk (USE_IMGUI)" + source_ref: "source dists/engine-data/engine_data.mk (USE_IMGUI), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source backends/imgui/imgui_fonts.cpp:83" note: "ImGui font data for debug overlay rendering." - name: "grim-patch.lab" @@ -527,7 +527,7 @@ files: required: false sha1: "3c43b7a0125f88a9f83ae4307dca57867ffd637c" md5: "32b777b824f02b1e1259903740964058" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GRIM)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_GRIM), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/grim/resource.cpp:126-129" note: "Patch data for Grim Fandango." - name: "monkey4-patch.m4b" @@ -536,7 +536,7 @@ files: required: false sha1: "49fc530e77b61f326f6e1d5a5147daa2fd67d1e2" md5: "9eb7b7e7cc7dad1fe08be6e73d749abe" - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MONKEY4)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_MONKEY4), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source engines/grim/resource.cpp:159" note: "Patch data for Escape from Monkey Island." # ================================================================ @@ -547,7 +547,7 @@ files: installed_on: [lakka, recalbox, retrobat, retrodeck, retropie] path: "scummvm/extra/pred.dic" required: false - source_ref: "source dists/engine-data/engine_data.mk (ENABLE_AGI)" + source_ref: "source dists/engine-data/engine_data.mk (ENABLE_AGI), source backends/platform/libretro/scripts/bundle_datafiles.sh:75-77, source backends/platform/libretro/src/libretro-os-utils.cpp:243, source gui/predictivedialog.cpp:119" note: "Predictive text dictionary for AGI engine text input (King's Quest, Space Quest, etc)." # ================================================================ diff --git a/emulators/tr1x.yml b/emulators/tr1x.yml index 3cf5e8829..fcd3d7726 100644 --- a/emulators/tr1x.yml +++ b/emulators/tr1x.yml @@ -54,19 +54,19 @@ files: unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:39" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:39, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:123-131, src/trx/game/level/format/pipeline.c:96" - name: "gym.phd" path: "games/tr1/levels/gym.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:61" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:61, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:123-131, src/trx/game/level/format/pipeline.c:96" - name: "level1.phd" path: "games/tr1/levels/level1.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:99" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:99, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Caves" - name: "level2.phd" @@ -74,126 +74,126 @@ files: unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:120" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:120, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "City of Vilcabamba" - name: "level3a.phd" path: "games/tr1/levels/level3a.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:139" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:139, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Lost Valley" - name: "level3b.phd" path: "games/tr1/levels/level3b.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:159" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:159, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Tomb of Qualopec" - name: "level4.phd" path: "games/tr1/levels/level4.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:180" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:180, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "St. Francis' Folly" - name: "level5.phd" path: "games/tr1/levels/level5.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:202" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:202, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Colosseum" - name: "level6.phd" path: "games/tr1/levels/level6.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:223" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:223, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Palace Midas" - name: "level7a.phd" path: "games/tr1/levels/level7a.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:242" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:242, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Cistern" - name: "level7b.phd" path: "games/tr1/levels/level7b.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:263" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:263, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Tomb of Tihocan" - name: "level8a.phd" path: "games/tr1/levels/level8a.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:290" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:290, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "City of Khamoon" - name: "level8b.phd" path: "games/tr1/levels/level8b.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:313" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:313, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Obelisk of Khamoon" - name: "level8c.phd" path: "games/tr1/levels/level8c.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:335" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:335, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Sanctuary of the Scion" - name: "level10a.phd" path: "games/tr1/levels/level10a.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:358" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:358, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Natla's Mines" - name: "level10b.phd" path: "games/tr1/levels/level10b.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:392" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:392, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Atlantis" - name: "level10c.phd" path: "games/tr1/levels/level10c.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:418" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:418, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Great Pyramid" - name: "cut1.phd" path: "games/tr1/levels/cut1.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:508" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:508, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 1 (after Qualopec)" - name: "cut2.phd" path: "games/tr1/levels/cut2.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:531" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:531, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 2 (after Tihocan)" - name: "cut3.phd" path: "games/tr1/levels/cut3.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:552" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:552, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 3 (Khamoon ambush)" - name: "cut4.phd" path: "games/tr1/levels/cut4.phd" required: true category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:575" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:575, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 4 (Natla's mines)" # FMV cutscenes @@ -205,7 +205,7 @@ files: path: "games/tr1/fmv/core.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:601" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:601, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" note: "Core Design legal screen." - name: "escape.avi" @@ -213,7 +213,7 @@ files: path: "games/tr1/fmv/escape.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:602" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:602, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" note: "Eidos legal screen." - name: "cafe.avi" @@ -221,7 +221,7 @@ files: path: "games/tr1/fmv/cafe.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:603" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:603, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" note: "Intro cutscene." - name: "mansion.avi" @@ -229,56 +229,56 @@ files: path: "games/tr1/fmv/mansion.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:604" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:604, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "snow.avi" aliases: [snow.rpl] path: "games/tr1/fmv/snow.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:605" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:605, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "lift.avi" aliases: [lift.rpl] path: "games/tr1/fmv/lift.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:606" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:606, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "vision.avi" aliases: [vision.rpl] path: "games/tr1/fmv/vision.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:607" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:607, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "canyon.avi" aliases: [canyon.rpl] path: "games/tr1/fmv/canyon.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:608" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:608, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "pyramid.avi" aliases: [pyramid.rpl] path: "games/tr1/fmv/pyramid.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:609" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:609, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "prison.avi" aliases: [prison.rpl] path: "games/tr1/fmv/prison.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:610" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:610, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "end.avi" aliases: [end.rpl] path: "games/tr1/fmv/end.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr1/gameflow.json5:611" + source_ref: "data/trx/ship/games/tr1/gameflow.json5:611, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" # Music tracks (retail CD audio, ripped as trackNN.). # Enumerated by the ship tree in docs/trx/INSTALLING.md. diff --git a/emulators/tr2x.yml b/emulators/tr2x.yml index ee7d7fedf..8d6d5c68e 100644 --- a/emulators/tr2x.yml +++ b/emulators/tr2x.yml @@ -55,7 +55,7 @@ files: unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:35" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:35, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 264-273, src/trx/game/paths.c:203-212, src/trx/game/level/pipeline.c:179" note: "Shared sample bank, loaded for every level." # Levels @@ -65,167 +65,167 @@ files: unsourceable: "retail data the collection does not hold, and a same-named file of another game must not stand in" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:15" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:15, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:123-131, src/trx/game/level/format/pipeline.c:96" - name: "assault.tr2" path: "games/tr2/levels/assault.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:57" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:57, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:123-131, src/trx/game/level/format/pipeline.c:96" note: "Lara's Home / assault course." - name: "wall.tr2" path: "games/tr2/levels/wall.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:89" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:89, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Great Wall" - name: "boat.tr2" path: "games/tr2/levels/boat.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:125" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:125, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Venice" - name: "venice.tr2" path: "games/tr2/levels/venice.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:151" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:151, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Bartoli's Hideout" - name: "opera.tr2" path: "games/tr2/levels/opera.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:179" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:179, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Opera House" - name: "rig.tr2" path: "games/tr2/levels/rig.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:211" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:211, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Offshore Rig" - name: "platform.tr2" path: "games/tr2/levels/platform.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:241" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:241, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Diving Area" - name: "unwater.tr2" path: "games/tr2/levels/unwater.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:271" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:271, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "40 Fathoms" - name: "keel.tr2" path: "games/tr2/levels/keel.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:301" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:301, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Wreck of the Maria Doria" - name: "living.tr2" path: "games/tr2/levels/living.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:334" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:334, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Living Quarters" - name: "deck.tr2" path: "games/tr2/levels/deck.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:365" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:365, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Deck" - name: "skidoo.tr2" path: "games/tr2/levels/skidoo.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:398" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:398, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Tibetan Foothills" - name: "monastry.tr2" path: "games/tr2/levels/monastry.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:427" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:427, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Barkhang Monastery" - name: "catacomb.tr2" path: "games/tr2/levels/catacomb.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:457" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:457, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Catacombs of the Talion" - name: "icecave.tr2" path: "games/tr2/levels/icecave.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:486" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:486, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Ice Palace" - name: "emprtomb.tr2" path: "games/tr2/levels/emprtomb.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:515" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:515, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Temple of Xian" - name: "floating.tr2" path: "games/tr2/levels/floating.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:546" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:546, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Floating Islands" - name: "xian.tr2" path: "games/tr2/levels/xian.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:573" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:573, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Dragon's Lair" - name: "house.tr2" path: "games/tr2/levels/house.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:600" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:600, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Home Sweet Home" - name: "cut1.tr2" path: "games/tr2/levels/cut1.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:714" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:714, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 1" - name: "cut2.tr2" path: "games/tr2/levels/cut2.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:729" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:729, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 2" - name: "cut3.tr2" path: "games/tr2/levels/cut3.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:744" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:744, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 3" - name: "cut4.tr2" path: "games/tr2/levels/cut4.tr2" required: true category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:761" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:761, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Cutscene level 4" # FMV cutscenes @@ -237,7 +237,7 @@ files: path: "games/tr2/fmv/logo.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:780" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:780, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" note: "Eidos legal screen." - name: "ANCIENT.AVI" @@ -245,7 +245,7 @@ files: path: "games/tr2/fmv/ancient.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:781" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:781, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" note: "Intro cutscene." - name: "MODERN.AVI" @@ -253,42 +253,42 @@ files: path: "games/tr2/fmv/modern.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:782" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:782, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "LANDING.AVI" aliases: [landing.rpl] path: "games/tr2/fmv/landing.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:783" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:783, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "MS.AVI" aliases: [ms.rpl] path: "games/tr2/fmv/ms.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:784" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:784, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "CRASH.AVI" aliases: [crash.rpl] path: "games/tr2/fmv/crash.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:785" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:785, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "JEEP.AVI" aliases: [jeep.rpl] path: "games/tr2/fmv/jeep.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:786" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:786, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" - name: "END.AVI" aliases: [end.rpl] path: "games/tr2/fmv/end.rpl" required: false category: game_data - source_ref: "data/trx/ship/games/tr2/gameflow.json5:787" + source_ref: "data/trx/ship/games/tr2/gameflow.json5:787, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 1100-1130, src/trx/game/paths.c:192-202" # Music tracks (retail CD audio, ripped as N.). # Enumerated by the ship tree in docs/trx/INSTALLING.md (TR2 uses the @@ -700,7 +700,7 @@ files: sha1: "8d8109c1afbb2b443c1c1f57add4676f17b5dc84" md5: "04ad2f33e48081a6b27a7f0ebf90968d" category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:58" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:58, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "The Cold War" - name: "level2.tr2" @@ -711,7 +711,7 @@ files: sha1: "6c9417d3b03cc2fd9fac62cea0910d9ef107ee1b" md5: "d9b53b88dd70eec1e4b31182f3286bf5" category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:90" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:90, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Fool's Gold" - name: "level3.tr2" @@ -722,7 +722,7 @@ files: sha1: "e92f045520d6e0aaec2c42dd2c28d34a0677df70" md5: "ca4294e3bd8835ebf06e114b479a22c2" category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:115" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:115, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Furnace of the Gods" - name: "level4.tr2" @@ -733,7 +733,7 @@ files: sha1: "83ffcd559e656186bc807e1040485f72956dbc00" md5: "63ff8be5c7abf37d7065456afeda029f" category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:140" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:140, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Kingdom" - name: "level5.tr2" @@ -744,5 +744,5 @@ files: sha1: "4508d23e8475ef6afd7a1756763dd606f23c15a9" md5: "88c8124b6d152b9f3fe1c4eeec4428a5" category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:177" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:177, tools/shared/docker/game_entrypoint.py:50-53, 196-206, src/trx/game/shell/flow.c:383-385, src/trx/game/shell/mod.c:540-543, src/trx/game/paths.c:104-110, src/trx/game/game_flow/reader.c:1214-1217, 900-910, src/trx/game/paths.c:111-121, src/trx/game/level/format/pipeline.c:96" note: "Nightmare in Vegas" diff --git a/emulators/uzdoom.yml b/emulators/uzdoom.yml index efb0a7e40..b237d16e3 100644 --- a/emulators/uzdoom.yml +++ b/emulators/uzdoom.yml @@ -228,7 +228,7 @@ files: # ================================================================ # IWADs (user-supplied). At least one is needed to launch a game. - # All source refs point to wadsrc_extra/static/iwadinfo.txt entries. + # Each ref gives the iwadinfo.txt entry, then the code that reads it. # ================================================================ # ---- Doom ---- @@ -246,144 +246,190 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:420, 437, 659" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:420, 437, 659, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:420, 437, 659, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" note: "The Ultimate DOOM and DOOM Registered both use this name and are told apart by their lumps." - name: "doom2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:640, 653" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:640, 653, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:640, 653, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom2f.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:625, 657" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:625, 657, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:625, 657, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doombfg.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:332, 666" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:332, 666, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:332, 666, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom2bfg.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:560, 667" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:560, 667, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:560, 667, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doomunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:369, 661" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:369, 661, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:369, 661, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom2unity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:592, 655" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:592, 655, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:592, 655, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doomkex.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:350, 662" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:350, 662, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:350, 662, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom2kex.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:576, 656" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:576, 656, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:576, 656, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doomxbox.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:403, 660" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:403, 660, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:403, 660, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom2xbox.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:608, 654" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:608, 654, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:608, 654, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "doom_complete.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:389, 652" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:389, 652, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:389, 652, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "plutonia.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:545, 670" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:545, 670, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:545, 668, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "plutoniaunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:514, 671" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:514, 671, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:514, 669, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "plutoniakex.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:529, 672" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:529, 672, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:529, 670, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "tnt.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:499, 673" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:499, 673, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:499, 671, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "tntunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:468, 674" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:468, 674, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:468, 672, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "tntkex.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:483, 675" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:483, 675, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:483, 673, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "nerve.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:565, 614, src/d_iwad.cpp:924-950" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:565, 614, src/d_iwad.cpp:924-950" + libretro: "wadsrc_extra/static/iwadinfo.txt:565, 614, src/d_iwad.cpp:948-974" note: "No Rest for the Living. Autoloaded by Doom 2 BFG and Xbox editions." - name: "nerveunity.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:598, src/d_iwad.cpp:924-950" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:598, src/d_iwad.cpp:924-950" + libretro: "wadsrc_extra/static/iwadinfo.txt:598, src/d_iwad.cpp:948-974" note: "Loaded from the IWAD directory by DOOM 2: Unity Edition." - name: "extras.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:357, 376, 488, 534, 582, 598" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:357, 376, 488, 534, 582, 598, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:214-221, 326-352, 924-947" + libretro: "wadsrc_extra/static/iwadinfo.txt:357, 376, 488, 534, 582, 598, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:221-228, 333-359, 948-971, src/common/platform/libretro/retro_core.cpp:61" note: "Loaded from the IWAD directory by the KEX and Unity editions." - name: "soundtrack" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:376, 598, src/d_iwad.cpp:924-950" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:376, 598, src/d_iwad.cpp:924-950" + libretro: "wadsrc_extra/static/iwadinfo.txt:376, 598, src/d_iwad.cpp:948-974" note: "Loaded from the IWAD directory by the DOOM and DOOM 2 Unity editions." - name: "id24res.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:341, 360, 379, src/d_iwad.cpp:896-912" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:341, 360, 379, src/d_iwad.cpp:896-912" + libretro: "wadsrc_extra/static/iwadinfo.txt:341, 360, 379, src/d_iwad.cpp:920-936" note: "id24 resource WAD. SupportWAD of every id IWAD block, loaded when found and i_loadsupportwad is set." # ---- Freedoom (free) ---- @@ -392,19 +438,25 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:307, 676" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:307, 676, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:307, 674, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "freedoom2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:294, 677" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:294, 677, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:294, 675, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "freedm.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:281, 680" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:281, 680, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:281, 678, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" # ---- Heretic ---- @@ -412,7 +464,9 @@ files: category: game_data system: heretic required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:241, 244, 254, 257, 681" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:241, 244, 254, 257, 681, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:241, 244, 254, 257, 679, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" note: "Both Heretic and Shadow of the Serpent Riders use this name and are told apart by the EXTENDED lump." - name: "blasphem.wad" @@ -420,7 +474,9 @@ files: category: game_data system: heretic required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:228, 692-693" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:228, 692-693, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:228, 690-691, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" # ---- Hexen ---- @@ -428,13 +484,17 @@ files: category: game_data system: hexen required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:188, 684" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:188, 684, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:188, 682, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "hexdd.wad" category: game_data system: hexen required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:196-207, 685" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:196-207, 685, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:196-207, 683, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" note: "Deathkings expansion. Requires hexen.wad (Required = Hexen: Beyond Heretic)." # ---- Strife ---- @@ -443,20 +503,26 @@ files: category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:151, 688" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:151, 688, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:151, 686, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "sve.wad" category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:136, 140, 689" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:136, 140, 689, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:136, 140, 687, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" note: "Veteran Edition. Required = Strife: Quest for the Sigil (loads voices.wad)." - name: "voices.wad" category: game_data system: strife required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:142, 155" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:142, 155, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:214-221, 326-352, 924-947" + libretro: "wadsrc_extra/static/iwadinfo.txt:142, 155, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:221-228, 333-359, 948-971, src/common/platform/libretro/retro_core.cpp:61" # ---- Chex Quest ---- @@ -464,13 +530,17 @@ files: category: game_data system: chex required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:123, 694" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:123, 694, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:123, 692, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "chex3.wad" category: game_data system: chex required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:109, 695" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:109, 695, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:109, 693, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" # ---- Standalone commercial / community IWADs ---- @@ -478,48 +548,64 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:83, 698" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:83, 698, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:83, 696, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "hacx2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:65-75, 699, src/d_iwad.cpp:362-407, src/common/filesystem/source/resourcefile.cpp:150-165" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:65-75, 699, src/d_iwad.cpp:362-407, src/common/filesystem/source/resourcefile.cpp:150-165" + libretro: "wadsrc_extra/static/iwadinfo.txt:65-75, 697, src/d_iwad.cpp:369-414, src/common/filesystem/source/resourcefile.cpp:150-165" note: "Identified by the MAP01 map and the HACX-E lump, whatever the container: every candidate is opened by its magic, so a zip under this name is read as a pk3. The Hacx 2.0 repository builds that zip from src/, where hacx-e.txt is the HACX-E lump and maps/MAP01.wad the first map." - name: "action2.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:97, 696" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:97, 696, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:97, 694, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "harm1.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:57, 697" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:57, 697, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:57, 695, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "square.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:33" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:33, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:326-352, 362-407, 643-692" + libretro: "wadsrc_extra/static/iwadinfo.txt:33, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:333-359, 369-414, 663-716, src/common/platform/libretro/retro_core.cpp:61" note: "Absent from the Names block: picked up only when named with -iwad." - name: "square1.pk3" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:45, 700" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:45, 700, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:45, 698, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "delaweare.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:22, 701" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:22, 701, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:22, 699, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" - name: "rotwb.wad" category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:9, 702" + source_ref: + standalone: "wadsrc_extra/static/iwadinfo.txt:9, 702, wadsrc_extra/CMakeLists.txt:1, src/d_main.cpp:4207, src/d_iwad.cpp:292-302, 326-352, 362-407, 518-547" + libretro: "wadsrc_extra/static/iwadinfo.txt:9, 700, wadsrc_extra/CMakeLists.txt:1, src/common/platform/libretro/embedded_pk3.S.in:26-31, src/common/platform/libretro/retro_resources.h:18-19, src/d_main.cpp:4243, src/d_iwad.cpp:299-309, 333-359, 369-414, 537-566, src/common/platform/libretro/retro_core.cpp:61" diff --git a/emulators/vice.yml b/emulators/vice.yml index f85f64fc1..e859eb24c 100644 --- a/emulators/vice.yml +++ b/emulators/vice.yml @@ -469,7 +469,7 @@ files: md5: 57af4ae21d4b705c2991d98ed5c1f7b8 crc32: f833d117 note: "C64 BASIC V2 ROM (DTV copy). Embedded in core." - source_ref: "vice/data/C64DTV/basic-901226-01.bin" + source_ref: "vice/data/C64DTV/basic-901226-01.bin, vice/src/c64/c64rom.h:31, vice/src/c64dtv/c64dtv-resources.c:92, 157, retrodep/embedded/c64dtvembedded.c:43-48" - name: "vice/C64DTV/chargen-901225-01.bin" system: commodore-c64dtv @@ -481,7 +481,7 @@ files: md5: 12a4202f5331d45af846af6c58fba946 crc32: ec4272ee note: "C64 Character Generator (DTV copy). Embedded in core." - source_ref: "vice/data/C64DTV/chargen-901225-01.bin" + source_ref: "vice/data/C64DTV/chargen-901225-01.bin, vice/src/c64/c64rom.h:60, vice/src/c64dtv/c64dtv-resources.c:74, 151, retrodep/embedded/c64dtvembedded.c:43-48" - name: "vice/C64DTV/kernal-901227-03.bin" system: commodore-c64dtv @@ -493,7 +493,7 @@ files: md5: 39065497630802346bce17963f13c092 crc32: dbe3e7c7 note: "C64 Kernal Rev 3 (DTV copy). Embedded in core." - source_ref: "vice/data/C64DTV/kernal-901227-03.bin" + source_ref: "vice/data/C64DTV/kernal-901227-03.bin, vice/src/c64/c64rom.h:52, vice/src/c64dtv/c64dtv-resources.c:83, 154, retrodep/embedded/c64dtvembedded.c:43-48" # ------------------------------------------------------- # VIC-20 ROMs (vice_xvic) diff --git a/emulators/zesarux.yml b/emulators/zesarux.yml index cc64d798c..4b2bcc19e 100644 --- a/emulators/zesarux.yml +++ b/emulators/zesarux.yml @@ -1027,15 +1027,6 @@ files: source_ref: "src/soundchips/gs.h:34, src/soundchips/gs.h:29, src/soundchips/gs.c:525-545" note: "General Sound firmware v1.05a. GS_ROM_SIZE is in KB and the read is GS_ROM_SIZE*1024." - - name: "gs104.rom" - sha1: "c865121306eb3a7d811d82fbcc653b4dc1d6fa3d" - size: 32768 - required: false - bundled: true - system: sinclair-zx-spectrum - source_ref: "src/configure:1933" - note: "General Sound firmware v1.04. Shipped alongside gs105a.rom, but GS_ROM_NAME is fixed and there is no option to point the loader elsewhere, so it is usable only in place of gs105a.rom." - # ============================================================ # Alternate machine ROMs, selectable with --romfile (src/start.c:4877-4881, # loaded at src/cpu.c:3776-3779). Documented in the shipped src/ALTERNATEROMS. diff --git a/install.ps1 b/install.ps1 index 75033ba8b..07014e7cc 100644 --- a/install.ps1 +++ b/install.ps1 @@ -16,7 +16,7 @@ # and Invoke-WebRequest throws on a cut transfer before the hash is read: # the site's build rewrites this line there (scripts/sitebootstrap.py). $mismatchAdvice = "The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that." - $defaultInstallSha256 = "456a32e79668e125f2ebe573b549247210c59fed6389e78dc1482b57d3a36712" + $defaultInstallSha256 = "37442a7c0d307b0b95a40d7630cf57025a6498fea6223076892371b2d6363147" # The pin above refuses any changed byte: this cap only stops a body that # cannot be the installer (a sign-in portal's page) before it is hashed. $maximumInstallerBytes = 8MB diff --git a/install.py b/install.py index 3bd093ddc..0d0031846 100644 --- a/install.py +++ b/install.py @@ -814,6 +814,15 @@ EVENT_KEYS: dict[str, tuple[str, ...]] = { # when all were in place), kept the backup folders as in summary. # ok false with reason when it was refused or failed. "app": ("system", "folder", "ok", "reason", "dests", "written", "kept"), + # The install record of the BIOS folder (path, beside it in + # retrobios-backup). status: applied (before choices, its choice taken + # as the run's because nothing on the command line chose), written + # (before the summary, once the install placed files), unreadable (said + # once and ignored) or not_written (the install itself unharmed). choice is + # the recorded options as words, date when it was written, files the + # files it holds for the platform. A kind of its own, since schema 1 + # never adds a key to an existing kind. + "record": ("platform", "folder", "path", "status", "choice", "date", "files", "message"), "end": ("code",), } # Seconds between two progress events while bytes arrive. @@ -6099,6 +6108,410 @@ def _kept_lines() -> list[str]: return lines +# The install record: what the runs placed in a BIOS folder, each file with +# its hash, and the choice they made, which the next run's plan takes. It +# lives in the backup holder beside the folder, never loose in it, for the +# reason the backups do. On a card it travels with the card. +RECORD_SCHEMA = 1 +RECORD_SUFFIX = ".install.json" +# The options a record keeps as the choice: what the list was narrowed to. +RECORD_CHOICE = ("--system", "--core", "--emulator", "--region", "--for-games", + "--required-only", "--all-files", "--target", "--every-board", + "--no-game-data", "--installed-cores", "--declared-only") +# The record's choice options that narrow the list, --all-files aside. +RECORD_NARROWING = tuple(flag for flag in RECORD_CHOICE if flag != "--all-files") +_MONTHS = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", + "Dec") +# The records already said unreadable in this run, said once each. +_RECORD_SAID: set[str] = set() +# Per platform, the record whose choice this run took (apply_record). +_RECORD_TAKEN: dict[str, dict] = {} + + +def record_paths(folder: Path) -> list[Path]: + """Where the record of folder is looked for, in order: the holder beside + it, then the one inside it that a folder with no writable parent gets.""" + folder = Path(os.path.abspath(folder)) + name = f"{folder.name or 'folder'}{RECORD_SUFFIX}" + return [holder / name for holder, _prefix in KeptFiles._holders(folder)] + + +# Read whole, never past this: a record of every file of the longest list +# holds 1.6 MB per setup, and a few setups share one folder. +MAX_RECORD_BYTES = 16 * 1024 * 1024 +# The choice options that take a value. --for-games takes one or none. +_RECORD_VALUED = ("--system", "--core", "--emulator", "--region", "--target") + + +def games_folder_kept(value: str, folder: Path) -> bool: + """Whether a recorded --for-games folder may be read again: an absolute + path under the folder that holds the BIOS folder (a card's root, the + setup's own folder), never another drive or a network share.""" + if not value or value.startswith(("\\\\", "//")) or not os.path.isabs(value): + return False + parent = os.path.normcase(os.path.normpath(os.path.dirname(os.path.abspath(folder)))) + games = os.path.normcase(os.path.normpath(value)) + try: + return os.path.commonpath([parent, games]) == parent + except ValueError: + # Two drives on Windows: no common path. + return False + + +def valid_choice(choice: list[str], folder: Path) -> bool: + """Whether every word of a recorded choice is an option of the choice or + the value right after one: a record naming --dest, --from or --manifest + would put them in the commands printed for the user to copy.""" + words = list(choice) + while words: + flag = words.pop(0) + if flag not in RECORD_CHOICE: + return False + if flag in _RECORD_VALUED: + if not words or words[0].startswith("-") or not words[0].strip(): + return False + value = words.pop(0) + if any(ord(char) < 32 or ord(char) == 127 for char in value): + return False + elif flag == "--for-games" and words and not words[0].startswith("--"): + if not games_folder_kept(words.pop(0), folder): + return False + return True + + +def _valid_setup(setup: object, folder: Path) -> bool: + if not isinstance(setup, dict): + return False + choice, files = setup.get("choice"), setup.get("files") + return (isinstance(setup.get("written"), str) and isinstance(choice, list) + and all(isinstance(word, str) for word in choice) and valid_choice(choice, folder) + and isinstance(files, list) + and all(isinstance(item, dict) and isinstance(item.get("dest"), str) + and isinstance(item.get("sha1"), str) and isinstance(item.get("size"), int) + for item in files)) + + +class RecordRead(NamedTuple): + """What reading a record found: the record with its usable setups, where + it is, why it cannot be used, whether a newer installer wrote it, and + the setups it holds that cannot be used.""" + + data: dict | None + path: Path | None + problem: str + newer: bool = False + dropped: tuple = () + + +def _read_record_bytes(path: Path) -> bytes: + """The bytes of a record that is a regular file of a record's size. A + FIFO, a device or a folder is refused before it is read: reading one + waited forever.""" + info = os.stat(path) + if not stat.S_ISREG(info.st_mode): + raise OSError(errno.EINVAL, "it is not a file") + if info.st_size > MAX_RECORD_BYTES: + raise OSError(errno.EFBIG, "it is larger than any record") + flags = os.O_RDONLY | getattr(os, "O_NONBLOCK", 0) | getattr(os, "O_BINARY", 0) + handle = os.open(path, flags) + try: + # Opened without waiting, then checked again: what is open now is + # what is read, whatever took the name since the stat. + if not stat.S_ISREG(os.fstat(handle).st_mode): + raise OSError(errno.EINVAL, "it is not a file") + chunks, left = [], MAX_RECORD_BYTES + 1 + while left > 0: + chunk = os.read(handle, min(left, 1 << 20)) + if not chunk: + break + chunks.append(chunk) + left -= len(chunk) + finally: + os.close(handle) + data = b"".join(chunks) + if len(data) > MAX_RECORD_BYTES: + raise OSError(errno.EFBIG, "it is larger than any record") + return data + + +def load_record(folder: Path) -> RecordRead: + """The record of folder, read once (RecordRead).""" + for path in record_paths(folder): + try: + text = _read_record_bytes(path).decode("utf-8") + except (FileNotFoundError, NotADirectoryError): + continue + except (OSError, UnicodeDecodeError) as exc: + reason = getattr(exc, "strerror", None) or str(exc) + return RecordRead(None, path, f"The install record {path} cannot be read ({reason})") + try: + data = json.loads(text) + except ValueError: + return RecordRead(None, path, f"The install record {path} is damaged") + schema = data.get("schema") if isinstance(data, dict) else None + if isinstance(schema, int) and not isinstance(schema, bool) and schema > RECORD_SCHEMA: + # Its shape is the newer installer's: kept for it, never read. + return RecordRead(None, path, f"The install record {path} was written by a newer " + "installer", newer=True) + if (not isinstance(data, dict) or not isinstance(data.get("setups"), dict) + or not isinstance(data.get("folder"), str) or schema != RECORD_SCHEMA): + return RecordRead(None, path, f"The install record {path} is damaged") + setups = {name: setup for name, setup in data["setups"].items() + if _valid_setup(setup, folder)} + dropped = tuple(sorted(str(name) for name in data["setups"] if name not in setups)) + return RecordRead({**data, "setups": setups}, path, "", dropped=dropped) + return RecordRead(None, None, "") + + +def read_record(folder: Path) -> tuple[dict | None, Path | None, str]: + """(the record of folder, where it is, why it cannot be used). Neither a + record nor a reason where there is none.""" + found = load_record(folder) + return found.data, found.path, found.problem + + +def setup_record(plat: str, folder: Path) -> tuple[dict | None, Path | None, str]: + """The record of plat in folder, where it is, and why it cannot be used. + A record written for a folder of another name (copied, or renamed with + it) is not this folder's. A setup of it that cannot be used (an option + the choice has no place for, a games folder elsewhere) is damaged, the + others still read.""" + found = load_record(folder) + if found.data is None: + return None, found.path, found.problem + written_for = str(found.data.get("folder") or "") + if Path(written_for).name != Path(os.path.abspath(folder)).name: + return None, found.path, "" + if plat in found.dropped: + return None, found.path, f"The install record {found.path} is damaged" + return found.data["setups"].get(plat), found.path, "" + + +def record_day(setup: dict) -> str: + """The day a record was written, as the plan says it: 3 Nov.""" + try: + when = datetime.datetime.fromisoformat(setup["written"].replace("Z", "+00:00")) + # Year 1 or 9999 cannot be moved to local time: an unknown day. + local = when.astimezone() + except (KeyError, TypeError, AttributeError, ValueError, OverflowError, OSError): + return "" + day = f"{local.day} {_MONTHS[local.month - 1]}" + return day if local.year == datetime.datetime.now().year else f"{day} {local.year}" + + +def record_options(argv: list[str]) -> list[tuple[str, str | None]]: + """A record's choice as (option, value) pairs.""" + options: list[tuple[str, str | None]] = [] + words = list(argv) + while words: + flag = words.pop(0) + valued = flag in _VALUED_OPTIONS or ( + flag == "--for-games" and words and not words[0].startswith("--")) + options.append((flag, words.pop(0) if valued and words else None)) + return options + + +def record_argv(options: Iterable[tuple[str, str | None]]) -> list[str]: + """The choice options a record keeps, as words, in the command's order.""" + kept = sorted((option for option in options if option[0] in RECORD_CHOICE), + key=_command_rank) + if not any(flag in RECORD_NARROWING for flag, _value in kept): + # The whole list, chosen as such: a card that holds games later + # still gets what was installed before. + kept = [("--all-files", None)] + return [word for flag, value in kept for word in ([flag] if value is None else [flag, value])] + + +def record_says(setup: dict, manifest: dict | None = None) -> str: + """The recorded choice in words: Game Boy Advance, the games, the + options chosen, every file.""" + options = record_options(setup.get("choice") or []) + systems = [system_title(value, manifest) for flag, value in options + if flag == "--system" and value] + if systems: + shown = ", ".join(systems[:3]) + return shown + (f" and {len(systems) - 3} more" if len(systems) > 3 else "") + if any(flag == "--for-games" for flag, _value in options): + return "the games" + if any(flag in RECORD_NARROWING for flag, _value in options): + return "the options chosen" + return "every file" + + +def record_changes(setup: dict, entries: Iterable[dict]) -> tuple[int, int]: + """Of the files a choice keeps now, those the list changed since the + record and those it did not hold then: (updated, new).""" + recorded = {(str(item.get("root") or ""), item["dest"]): item["sha1"] + for item in setup.get("files") or []} + updated = new = 0 + for entry in entries: + sha1 = recorded.get((str(entry.get("root") or ""), str(entry.get("dest")))) + if sha1 is None: + new += 1 + elif entry.get("sha1") and sha1 != entry.get("sha1"): + updated += 1 + return updated, new + + +def record_file(entry: dict, origin: str, root: str = "") -> dict: + """One file a run wrote, as the record keeps it.""" + return {"dest": str(entry["dest"]), "root": root or str(entry.get("root") or ""), + "sha1": str(entry.get("sha1") or ""), "size": int(entry.get("size") or 0), + "from": origin} + + +def write_record( + folder: Path, plat: str, manifest: dict, choice: list[str], files: list[dict], +) -> tuple[Path | None, dict, str]: + """Write what this run placed in folder for plat, merged with what + earlier runs placed: (where, the record of plat, why it was not + written). A record that cannot be read is replaced.""" + folder = Path(os.path.abspath(folder)) + read = load_record(folder) + if read.newer: + # What a newer installer wrote is kept for it: rewritten here, the + # other setups' history would go. + if str(read.path) not in _RECORD_SAID: + _RECORD_SAID.add(str(read.path)) + print(f" {read.problem}: left as it is.") + return None, {"files": [], "written": ""}, f"{read.problem}: left as it is" + found = read.path + # A record that cannot be read is replaced, said when it was read. One + # with a setup that cannot be used keeps its others. + data = read.data if read.data is not None else {"setups": {}} + previous = data["setups"].get(plat) or {} + merged = {(str(item.get("root") or ""), item["dest"]): item + for item in previous.get("files") or []} + for item in files: + merged[(item["root"], item["dest"])] = item + setup = { + "written": datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), + "list": {"version": manifest.get("version"), "generated": manifest.get("generated")}, + "choice": choice, + "files": [merged[key] for key in sorted(merged)], + } + data = {"schema": RECORD_SCHEMA, "installer": installer_id(), "folder": str(folder), + "setups": {**data["setups"], plat: setup}} + text = json.dumps(data, separators=(",", ":"), sort_keys=True) + "\n" + places = record_paths(folder) + if found is not None and found in places: + # Rewritten where it was read: never a second record of one folder. + places = [found] + [place for place in places if place != found] + failure = "nothing could be written beside the folder" + for path in places: + scratch: Path | None = None + try: + path.parent.mkdir(exist_ok=True) + _check_holder(path.parent) + with tempfile.NamedTemporaryFile( + "w", encoding="utf-8", dir=path.parent, prefix=f".{path.name}.", + suffix=".part", delete=False) as handle: + scratch = Path(handle.name) + handle.write(text) + os.replace(scratch, path) + except OSError as exc: + failure = exc.strerror or str(exc) + if scratch is not None and os.path.lexists(scratch): + try: + scratch.unlink() + except OSError as left: + failure += f", and {scratch} stays ({left.strerror or left})" + continue + return path, setup, "" + return None, setup, f"The install record could not be written ({failure})" + + +def record_menu_words(setup: dict | None) -> str: + """What line mode's menu says of a recorded choice it opens on.""" + if setup is None: + return "" + day = record_day(setup) + return f"Same choice as on {day}." if day else "Same choice as last time." + + +def choice_given(args: argparse.Namespace) -> bool: + """Whether the command line chose what to install, which a record then + never replaces: an option of the choice, or a file list of its own.""" + # A namespace built by a caller that predates an option lacks it. + return (getattr(args, "for_games", None) is not None or LOCAL.manifest is not None + or any(getattr(args, flag[2:].replace("-", "_"), None) + for flag in RECORD_CHOICE if flag != "--for-games")) + + +def say_record_problem(plat: str, folder: Path, path: Path | None, problem: str) -> None: + """A record that cannot be used, said once and ignored.""" + key = str(path) + if not problem or key in _RECORD_SAID: + return + _RECORD_SAID.add(key) + message = f"{problem}, so it is ignored." + print(f" {message}") + EVENTS.emit("record", platform=plat, folder=str(folder), path=key, status="unreadable", + choice=[], date="", files=0, message=message) + + +def by_record(args: argparse.Namespace) -> bool: + """Whether the run's choice came from the install record: nothing of + it was typed, so a part that cannot apply is left out, never refused.""" + return bool(getattr(args, "from_record", False)) + + +def drop_recorded(args: argparse.Namespace, plat: str, flag: str, why: str, + keep: list[str] | None = None) -> None: + """Leave out a recorded option that cannot apply, in one line: the run + goes on, and the record written after it no longer holds it. keep, for + an option of several names, is the names that still apply.""" + name = flag[2:].replace("-", "_") + chosen = _INVOCATION.chosen.get(plat, []) + if keep: + setattr(args, name, list(keep)) + _INVOCATION.chosen[plat] = [option for option in chosen if option[0] != flag] + [ + (flag, value) for value in keep] + else: + setattr(args, name, build_parser().get_default(name)) + _INVOCATION.chosen[plat] = [option for option in chosen if option[0] != flag] + print(f" Left out of the recorded choice: {flag} ({why}).") + + +def apply_record(args: argparse.Namespace, plat: str, folder: Path) -> dict | None: + """Take the choice recorded for plat in folder as the run's, as if its + options had been typed: the plan's first choice. Returns the record, + None where none is taken.""" + setup, path, problem = setup_record(plat, folder) + say_record_problem(plat, folder, path, problem) + if setup is None: + return None + try: + parsed = build_parser().parse_args(setup["choice"]) + except SystemExit: + say_record_problem(plat, folder, path, + f"The install record {path} names options this installer lacks") + return None + for flag in RECORD_CHOICE: + name = flag[2:].replace("-", "_") + setattr(args, name, getattr(parsed, name)) + if args.for_games is not None: + args.all_files = False + args.from_record = True + options = record_options(setup["choice"]) + if any(flag in RECORD_NARROWING for flag, _value in options): + # Said where it narrows the list: the whole list again is the run + # a person expects, and said nothing new. + _RECORD_TAKEN[plat] = setup + _INVOCATION.chosen[plat] = [option for option in options if option[0] != "--all-files"] + if isinstance(args.for_games, Path) and not _is_dir(args.for_games): + # The games folder recorded is gone: the card's own games are read. + _INVOCATION.chosen[plat] = [(flag, None if flag == "--for-games" else value) + for flag, value in _INVOCATION.chosen[plat]] + args.for_games = True + print(" Left out of the recorded choice: its games folder (no longer there).") + message = record_menu_words(setup) + EVENTS.emit("record", platform=plat, folder=str(folder), path=str(path), status="applied", + choice=list(setup["choice"]), date=setup["written"], + files=len(setup["files"]), message=message) + return setup + + def restore_kept(run: Path, dry_run: bool = False) -> int: """Put every file of a backup run folder back where it was. @@ -6769,6 +7182,14 @@ class Invocation: words += ["--dest", self.word(str(dest.absolute()))] elif dest: words += ["--dest", dest] + for flag, value in self.flags(plat): + if flag in without: + continue + words += [flag] if value is None else [flag, self.word(value)] + return " ".join(words) + + def flags(self, plat: str) -> list[tuple[str, str | None]]: + """The options of the run for plat, in the command's order.""" options = self.options if plat in self.chosen: # A choice made at the questions replaces the narrowing the @@ -6776,11 +7197,7 @@ class Invocation: # the systems of the first run and of the second. replaced = {*_CHOICE_OPTIONS, *(flag for flag, _value in self.chosen[plat])} options = [option for option in options if option[0] not in replaced] - for flag, value in sorted([*options, *self.chosen.get(plat, [])], key=_command_rank): - if flag in without: - continue - words += [flag] if value is None else [flag, self.word(value)] - return " ".join(words) + return sorted([*options, *self.chosen.get(plat, [])], key=_command_rank) _INVOCATION = Invocation() @@ -7956,13 +8373,15 @@ def install_data_directory(entry: dict, bios_path: Path, Returns counts: present, installed, changed (the source no longer holds the recorded bytes), absent (not in the archive), error, the reason - the archive could not be read, and not_kept, the (path, reason) of each - file in place that differs and could not be moved aside, left as it is. + the archive could not be read, not_kept, the (path, reason) of each + file in place that differs and could not be moved aside, left as it is, + and written, each file written (dest below the BIOS folder, sha1, size). """ root, needed, present = state or data_directory_state(entry, bios_path) needed = dict(needed) + written: list[dict] = [] counts = {"present": present, "installed": 0, "changed": 0, "absent": 0, "error": "", - "not_kept": []} + "not_kept": [], "written": written} if not needed: return counts _writing.set() @@ -7999,12 +8418,13 @@ def install_data_directory(entry: dict, bios_path: Path, continue target = _destination_path(root, rel) target.parent.mkdir(parents=True, exist_ok=True) + slot = f"{entry['dest']}/{rel}" if entry.get("dest") else rel outcome = _install_data_member( - opener, meta, target, bios_path, - f"{entry['dest']}/{rel}" if entry.get("dest") else rel, - rel, counts["not_kept"]) + opener, meta, target, bios_path, slot, rel, counts["not_kept"]) if outcome: counts[outcome] += 1 + if outcome == "installed": + written.append({"dest": slot, "sha1": meta["sha1"], "size": meta["size"]}) except _Offline as exc: # Kept apart, so the advice is the offline one, not the network's. counts["error"] = OfflineReason(str(exc)) @@ -9595,6 +10015,11 @@ def _prompt_custom_selection( elif playing and played is not None: kept_games = menu_choice(files, omitted, installed, GamesChoice(played), cutting)[0] print(f" h) only for the games {played.where()}: {_sized(kept_games)}") + # The screen's "Same choice as last time: no": the whole list. + widen = (plat in _RECORD_TAKEN and current is not None + and not (playing and isinstance(current, GamesChoice))) + if widen: + print(f" e) everything: {_sized(shown)}") if installed is not None and current != INSTALLED_ONLY: print(f" i) only what the installed cores read: {_sized(installed[0])}") # What c asks, named: "systems, cores and regions" was offered with @@ -9614,6 +10039,7 @@ def _prompt_custom_selection( print(" q) quit") keys = [*([] if emptied else [""]), "q", *(["c"] if choosable else []), *((["r", "e"] if isinstance(current, GamesChoice) else ["h"]) if playing else []), + *(["e"] if widen else []), *(["i"] if installed is not None and current != INSTALLED_ONLY else []), *(["f"] if copying else []), *(["g"] if games.games else [])] others = [key for key in keys if key not in ("", "q")] @@ -9668,10 +10094,12 @@ def _print_menu_head( if current == INSTALLED_ONLY: named = ", only what the installed cores read" elif isinstance(current, GamesChoice): - named = f", {current.words()}" + (" (--for-games)" if current is given else "") + named = f", {current.words()}" + (" (--for-games)" if current is given + and plat not in _RECORD_TAKEN else "") elif isinstance(current, tuple): systems, cores, regions = current - flag = current is given + # A recorded choice was typed by nobody: no option is named. + flag = current is given and plat not in _RECORD_TAKEN listed = choosable_systems(files, omitted, cores, regions) total = len(listed) # The systems chosen that still hold a file: Sega Dreamcast holding @@ -10206,6 +10634,55 @@ def _narrow_to_emulators( return files, omitted +def _known_names(values: list[str] | None, known: list[str], label: str, + aliases: dict[str, str] | None = None) -> list[str]: + """The names of values that resolve against known, the others left out.""" + kept = [] + for value in values or []: + try: + resolve_choices([value], known, label, aliases) + except ValueError: + continue + kept.append(value) + return kept + + +def _recorded_names(args: argparse.Namespace, plat: str, flag: str, known: list[str], + aliases: dict[str, str] | None = None) -> None: + """A recorded --system, --core or --emulator kept to the names the list + still holds, the others left out in one line.""" + name = flag[2:].replace("-", "_") + values = list(getattr(args, name) or []) + kept = _known_names(values, known, flag[2:], aliases) + if kept != values: + gone = ", ".join(value for value in values if value not in kept) + drop_recorded(args, plat, flag, f"{gone} no longer on the list", kept) + + +def _recorded_emulators(args: argparse.Namespace, plat: str, manifest: dict, + files: list[dict], omitted: list[dict]) -> None: + """A recorded --emulator that cannot narrow this list, left out.""" + if "system_cores" not in manifest: + drop_recorded(args, plat, "--emulator", "the list does not say which emulators " + "read which systems") + return + _recorded_names(args, plat, "--emulator", sorted(emulator_names(manifest, files, omitted))) + + +def _recorded_regions(args: argparse.Namespace, plat: str) -> None: + """A recorded --region kept to the regions this installer knows.""" + values = list(args.region or []) + kept = [] + for value in values: + try: + resolve_regions([value]) + except ValueError: + continue + kept.append(value) + if kept != values: + drop_recorded(args, plat, "--region", "a region this installer does not know", kept) + + def _requested_narrowing( args: argparse.Namespace, plat: str, files: list[dict], omitted: list[dict], manifest: dict | None = None, @@ -10222,6 +10699,22 @@ def _requested_narrowing( asked = [(flag, axis) for flag, given, axis in ( ("--system", args.system, "systems"), ("--core", args.core, "cores"), ("--region", args.region, "regions")) if given] + if getattr(args, "from_record", False): + # A recorded option that cannot narrow this list is left out: nobody + # typed it, and every run without options would stop on it. + for flag, axis in asked: + if axis not in recorded: + drop_recorded(args, plat, flag, f"the list records no {axis}") + asked = [(flag, axis) for flag, axis in asked if axis in recorded] + _recorded_regions(args, plat) + choices = available_choices(files, omitted) + if args.system: + _recorded_names(args, plat, "--system", choices["systems"], + system_aliases(manifest)) + if args.core: + _recorded_names(args, plat, "--core", choices["cores"]) + if not (args.system or args.core or args.region): + return None for flag, axis in asked: if axis in recorded: continue @@ -14267,6 +14760,8 @@ def main() -> None: # the menu. Yes to every question is no question. args.no_input = True _INVOCATION.record(args) + if os.environ.get(TUI_RECORD_ENV): + args.from_record = True if os.environ.get(TUI_LIST_ENV): # The full screen's own copy of the list, deleted when it closes: a # command naming it fails once the screen is gone. @@ -16101,10 +16596,58 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: # The BIOS folders read for misplaced files, one per platform. bios_indexes: list[FolderIndex] = [] + # The choice the folder's record keeps is the plan's first choice, taken + # as its options would be: before the checks of --target and + # --installed-cores, which it may hold. Never where the command line + # chose, nor for a run over several setups. + _RECORD_TAKEN.clear() + + def remember(plat: str, folder: Path, manifest: dict, written: list[dict], + games: bool) -> None: + """Record what this install placed in folder and the choice it made, + games being the card's games applied with no --for-games.""" + if not written and setup_record(plat, folder)[0] is None: + # Nothing of ours is there to record, and no choice to keep. + return + # A games folder is kept only where the next run reads it from a + # record (games_folder_kept): elsewhere the card's own games are. + options = [(flag, value if flag != "--for-games" or not value + else os.path.abspath(value) + if games_folder_kept(os.path.abspath(value), folder) else None) + for flag, value in _INVOCATION.flags(plat)] + if games: + options += [("--for-games", None), + *([("--required-only", None)] if args.required_only else [])] + choice = record_argv(options) + path, setup, problem = write_record(folder, plat, manifest, choice, written) + if problem: + detail(f" {problem}.") + count = len(setup["files"]) + EVENTS.emit("record", platform=plat, folder=str(folder), + path=str(path or record_paths(folder)[0]), + status="not_written" if problem else "written", choice=choice, + date=setup["written"], files=count, + message=f"{problem}." if problem else + f"Recorded {_plural(count, 'file')} and this choice in {path}.") + + if len(platforms) == 1 and not listing and not choice_given(args): + apply_record(args, *platforms[0]) + # --target is checked for every platform before anything is written, as # --installed-cores is below: EmuDeck installed 3.2 GB and only then was # steamos refused for RetroArch, with no summary of what had landed. target_lists: dict[str, dict] = {} + if args.target and by_record(args) and len(platforms) == 1: + # The screen's runs carry the record's options as typed ones. + plat = platforms[0][0] + if LOCAL.offline and local_targets(plat) is None and plat in TARGET_PLATFORMS: + drop_recorded(args, plat, "--target", "the board list needs the internet") + else: + with contextlib.redirect_stderr(io.StringIO()): + known = fetch_targets(plat) + if known is None or args.target not in known: + drop_recorded(args, plat, "--target", "the board list does not name it" + if known is not None else "the board list could not be read") if args.target: for plat_name, _bios_path in platforms: targets = fetch_targets(plat_name) @@ -16139,6 +16682,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: searched = [args.cores_dir] if args.cores_dir else core_dirs(plat_name, bios_path) cores_found[(plat_name, bios_path)] = installed_cores(searched) cores_searched[(plat_name, bios_path)] = searched + elif args.installed_cores and by_record(args): + drop_recorded(args, plat_name, "--installed-cores", + f"{plat_name} ships its cores with the system") elif args.installed_cores: print( f"Error: {plat_name} ships its cores with the system. " @@ -16147,7 +16693,10 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: ) sys.exit(1) if args.installed_cores and not cores_found[(plat_name, bios_path)]: - _no_core_found(plat_name, bios_path, searched) + if by_record(args): + drop_recorded(args, plat_name, "--installed-cores", "no core is installed") + else: + _no_core_found(plat_name, bios_path, searched) for plat_name, bios_path in platforms: if bios_path not in installed_paths: @@ -16190,6 +16739,8 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: ) game_data_cut = 0 + if args.no_game_data and not manifest.get("categorized") and by_record(args): + drop_recorded(args, plat_name, "--no-game-data", "the list marks no game data") if args.no_game_data and not manifest.get("categorized"): # Without the field nothing is marked, and the run would # install the game data it was asked to leave out. @@ -16273,6 +16824,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: found_cores = [] elif found_cores: detail(f" {_plural(len(found_cores), 'core')} installed") + if args.installed_cores and "system_cores" not in manifest and by_record(args): + drop_recorded(args, plat_name, "--installed-cores", + "the list does not say which cores read which systems") if args.installed_cores: if "system_cores" not in manifest: print( @@ -16298,6 +16852,8 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: else (files, omitted_files))) continue + if args.emulator and by_record(args): + _recorded_emulators(args, plat_name, manifest, files, omitted_files) if args.emulator: files, omitted_files = _narrow_to_emulators( args.emulator, manifest, plat_name, files, omitted_files @@ -16409,6 +16965,8 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: + ([("--no-game-data", None)] if cut and cut[0] else [])) return _INVOCATION.command(plat, folder) + # The record's options, which the menu's commands overwrite. + record_options_kept = _INVOCATION.chosen.get(plat_name) selection = _prompt_custom_selection( plat_name, bare, bare_omitted + unplaced, installed, detected_os(plat_name, bios_path) or display, @@ -16417,14 +16975,18 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: bool(target or args.installed_cores or args.declared_only or len(files) + game_data_cut + len(unplaced) != listed), command_for, cut, - game_data_only_words([system_title(system, manifest) for system in - game_data_only(given[0] if isinstance(given, tuple) - else [], files)]) - if args.no_game_data else "", + " ".join(filter(None, [ + record_menu_words(_RECORD_TAKEN.get(plat_name)), + game_data_only_words([system_title(system, manifest) for system in + game_data_only(given[0] if isinstance(given, tuple) + else [], files)]) + if args.no_game_data else ""])), None if games_applied else games_plan, ) # Its head named the BIOS folder: the result does not again. OUTPUT.where_said = True + kept_record = plat_name in _RECORD_TAKEN and selection is not None and ( + selection is given or selection == given) if selection is None and LOCAL.pack is not None: smaller = " Nothing copied." elif selection is None: @@ -16456,6 +17018,12 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: _INVOCATION.chosen[plat_name] = [] else: _INVOCATION.chosen.pop(plat_name, None) + if kept_record and record_options_kept is not None: + # Enter on the recorded choice: still the record's options. + _INVOCATION.chosen[plat_name] = record_options_kept + elif selection is None and plat_name in _RECORD_TAKEN and not games_applied: + # e: every file, the recorded narrowing given up. + args.system = args.core = args.region = None if selection is not None: before = len(files) files, omitted_files = narrow(files, omitted_files, *selection) @@ -16567,6 +17135,7 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: bios_path = library detail("\nChecking existing files...") + record_files: list[dict] = [] to_download, up_to_date, mismatched = check_local( files, bios_path, jobs=args.jobs, term=term ) @@ -16672,6 +17241,10 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: else: print(f"\n {EVERYTHING_IN_PLACE}") print(f" BIOS folder: {shown_path(bios_path)}") + if plat_name in _RECORD_TAKEN: + # The files counted are the recorded choice's, not the list's. + print(f" {record_menu_words(_RECORD_TAKEN[plat_name])} " + "--all-files checks every file.") absent = _absent_required(omitted_files, bios_path) # The collection cannot supply these, so they leave the exit # code alone, but a user asking why a game will not start needs @@ -16710,6 +17283,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: trees, kept, copy_plan_lines(to_download, copies, bios_index, bios_path, files, args.verbose, True), verbose=args.verbose, manifest=manifest) + if plat_name in _RECORD_TAKEN: + print(f" {record_menu_words(_RECORD_TAKEN[plat_name])} " + "--all-files lists every file.") for line in unreadable_lines(unread, args.verbose): print(line) for line in hint: @@ -16784,9 +17360,11 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: coming = len(to_download) - len(lacking) + trees_missing weight = dl_size + sum(data_fetch_bytes(entry, state[1]) for entry, state in data_states) + taken = _RECORD_TAKEN.get(plat_name) print(f"\nInstalling {_plural(coming, 'file')} ({format_size(weight)}) for " f"{detected_os(plat_name, bios_path) or display}" - + (", what the games need" if games_applied else "") + ".") + + (", what the games need" if games_applied else "") + + (f", same choice as on {record_day(taken)}" if taken else "") + ".") print(f"BIOS folder: {shown_path(bios_path)}") OUTPUT.where_said = True if unread: @@ -16878,6 +17456,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: # counted them, over the files that landed: matched by the end # of a failed path, a.bin was dropped when x/a.bin failed. landed.extend(progress.landed) + record_files += [record_file(entry, "copy" if id(entry) in copies + else "pack" if LOCAL.pack is not None else "download") + for entry in progress.landed] files_pending += len(to_download) - progress.installed if interrupted \ else len(failed) total_errors += len(failed) @@ -16886,6 +17467,8 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: total_seconds += progress.elapsed() if interrupted: total_interrupted = True + remember(plat_name, bios_path, manifest, record_files, + games_applied and args.for_games is None) break elif len(platforms) > 1: # One setup's run ends on "Done. Everything is in place.": said @@ -16931,6 +17514,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: total_seconds += progress.elapsed() total_downloaded += counts["installed"] data_landed += counts["installed"] + record_files += [record_file(item, "pack" if LOCAL.pack is not None + else "download", "data") + for item in counts.get("written", [])] total_up_to_date += counts["present"] if isinstance(counts["error"], OfflineReason): # Left out as the BIOS files above are: counted missing, @@ -16971,6 +17557,9 @@ def _install(args: argparse.Namespace, real_stdout: TextIO) -> None: failures.append((where, f"{NOT_KEPT} ({reason})")) total_errors += 1 + remember(plat_name, bios_path, manifest, record_files, + games_applied and args.for_games is None) + if os_type == "android" and not args.check and hide_from_media_scanner(bios_path): detail(f" Added {NOMEDIA} to {shown_path(bios_path)}: the gallery and music " "apps leave its images, sounds and videos out") @@ -17086,6 +17675,10 @@ TUI_ESC_WAIT = 0.04 TUI_FRAME = 0.1 # Set for a child run handed the interface's own copy of the file list. TUI_LIST_ENV = "RETROBIOS_TUI_LIST" +# Set for a child run whose choice options are the install record's, kept +# on the screen: a part of them that cannot apply is left out, as line mode +# leaves it out of a record it reads, never refused. +TUI_RECORD_ENV = "RETROBIOS_TUI_RECORDED" _PASTE_START = "\x1b[200~" _PASTE_END = "\x1b[201~" # Turned on by the interface, so a pasted path arrives as one piece and its @@ -18019,6 +18612,16 @@ class TuiState: self.games: dict | None = None self.games_reading: tuple | None = None self.games_unavailable: dict | None = None + # The install record of the setup and folder chosen (read for + # record_for), whose choice the plan opens on when the command line + # chose nothing (cli_choice), and the options of it no row shows. + self.record: dict | None = None + self.record_for: tuple | None = None + self.record_flags: list = [] + self.cli_choice: bool = False + # Opened on the plan of the one setup found: its Change where row + # goes back to the setups. + self.opened_on_plan: bool = False @property def screen(self) -> str: @@ -18475,6 +19078,12 @@ def tui_flags(state: TuiState) -> list[tuple[str, str | None]]: flags.append(("--installed-cores", None)) if state.jobs != 8: flags.append(("--jobs", str(state.jobs))) + flags += state.record_flags + if (state.record is not None and not state.for_games + and not any(flag in RECORD_NARROWING for flag, _value in flags)): + # The whole list, chosen over a recorded narrower one: said so to + # the runs, whose own reading of the record would narrow it again. + flags.append(("--all-files", None)) flags += [("--from", str(folder)) for folder in state.from_folders] if (os.environ.get(OFFLINE_VARIABLE) == OFFLINE_FLAG_VALUE and not any(flag == "--offline" for flag, _v in flags)): @@ -18505,6 +19114,19 @@ def tui_argv(state: TuiState, run: str, python: str, script: str) -> list[str]: return argv + _TUI_MODES[run] +def tui_run_env(state: TuiState, own_list: bool) -> dict | None: + """The environment of a child run: None for this one's own, else with + the markers the run reads (TUI_LIST_ENV, TUI_RECORD_ENV).""" + marks = {TUI_LIST_ENV: "1"} if own_list else {} + if tui_record_kept(state): + marks[TUI_RECORD_ENV] = "1" + if not marks and TUI_RECORD_ENV not in os.environ: + return None + env = {key: value for key, value in os.environ.items() if key != TUI_RECORD_ENV} + env.update(marks) + return env + + def tui_hint(state: TuiState) -> Invocation: """The command the screen's choices make, every option of the run in it: what "Same choice without questions" and the sudo advice give.""" @@ -18960,14 +19582,12 @@ def _plan_rows(state: TuiState) -> list[TuiRow]: return rows + ([game_data] if game_data is not None else []) + [ *_details_row(state), TuiRow("options", "Options"), TuiRow("quit", "Quit")] if not (_needed(check) if check else 0) and not check.get("data_missing"): - return [TuiRow("close", "Close"), *_games_rows(state), *_details_row(state), - TuiRow("options", "Options")] - # The size the pack can give: "Install 6.6 GB" from a pack holding - # none of the files. - lacking = set(_tui_pack_lacks(state, [event["dest"] for event in state.files])) - size = (_ticked_estimate(state)[1] if _tui_estimating(state) - else check.get("bytes_needed", 0) - sum(event["size"] for event in state.files - if event["dest"] in lacking)) + return [TuiRow("close", "Close"), *_games_rows(state), *_record_rows(state), + *_where_rows(state), *_details_row(state), TuiRow("options", "Options")] + # The size the headline says: "Install 6.6 GB" stood under "14930 files + # to download, 6.8 GB", the copies counted in one and the data files in + # the other. + size = _ticked_estimate(state)[1] if _tui_estimating(state) else _plan_fetch(state, check)[1] label = (f"{TUI_INSTALL_ROW} {format_size(size)}" if size >= CONFIRM_FROM_BYTES else TUI_INSTALL_ROW) rows = [TuiRow("install", label)] @@ -19006,6 +19626,7 @@ def _plan_rows(state: TuiState) -> list[TuiRow]: # Right under Install: the choice the plan opened on, the whole list one # press away. rows += _games_rows(state) + rows += _record_rows(state) if "systems" in recorded_axes((state.manifest or {}).get("files", [])) and ( len(state.systems) > 1 or state.cli_systems): rows.append(TuiRow("systems", TUI_SYSTEMS_ROW)) @@ -19018,7 +19639,27 @@ def _plan_rows(state: TuiState) -> list[TuiRow]: rows.append(TuiRow("misplaced", "Show the files in the wrong place")) if state.unreadable: rows.append(TuiRow("unreadable", "Show the files that could not be read")) - return rows + [*_details_row(state), TuiRow("options", "Options"), TuiRow("quit", "Quit")] + return rows + [*_where_rows(state), *_details_row(state), TuiRow("options", "Options"), + TuiRow("quit", "Quit")] + + +# The plan's row for the record's choice, and the one back to the setups. +TUI_RECORD_ROW = "Same choice as last time" +TUI_WHERE_ROW = TuiRow("where", "Change where") + + +def _record_rows(state: TuiState) -> list[TuiRow]: + """Same choice as last time: yes or no, where the folder has a record.""" + if state.record is None or state.cli_choice: + return [] + day = record_day(state.record) + label = f"Same choice as on {day}" if day else TUI_RECORD_ROW + return [TuiRow("record", f"{label}: {_yes(tui_record_kept(state))}")] + + +def _where_rows(state: TuiState) -> list[TuiRow]: + """Change where, on a plan opened straight on the one setup found.""" + return [TUI_WHERE_ROW] if state.opened_on_plan and state.stack[:1] == ["setup"] else [] # The plan's explanations, counts and reasons, one press away: a pad has @@ -19503,9 +20144,88 @@ def _start_run(state: TuiState, run: str) -> list[tuple]: return [("run", run)] +def _record_key(options: Iterable[tuple[str, str | None]]) -> list: + """A choice in a form two spellings of it share: one name per --system + and --core, in any order.""" + pairs = record_options(record_argv(options)) + return sorted((flag, name.strip()) for flag, value in pairs + for name in ((value or "").split(",") if flag in ("--system", "--core") + else [value or ""]) if name.strip() or value is None) + + +def tui_record_kept(state: TuiState) -> bool: + """Whether the plan's choice is the one the record keeps.""" + if state.record is None: + return False + return _record_key(tui_flags(state)) == _record_key( + record_options(state.record["choice"])) + + +def _tui_record_take(state: TuiState) -> None: + """The recorded choice made the screen's, as its options would make it.""" + setup = state.record or {} + try: + parsed = build_parser().parse_args(setup.get("choice") or []) + except SystemExit: + state.status = "The install record names options this installer lacks, so it is ignored." + state.record = None + return + state.cli_systems = list(parsed.system or []) + state.cores = [token.strip() for value in parsed.core or [] for token in value.split(",") + if token.strip()] + try: + state.regions = resolve_regions(parsed.region) if parsed.region else [] + except ValueError: + state.regions = [] + state.no_game_data = bool(parsed.no_game_data) + state.installed_only = bool(parsed.installed_cores) + state.for_games = parsed.for_games is not None + state.games_folder = parsed.for_games if isinstance(parsed.for_games, Path) else None + state.required_only = bool(parsed.required_only) and state.for_games + state.games_choice = "record" + state.record_flags = [(flag, value) for flag, value in record_options(setup["choice"]) + if flag in ("--target", "--emulator", "--every-board", + "--declared-only")] + + +def _tui_record_drop(state: TuiState) -> None: + """The recorded choice given up: the choice nothing narrows.""" + state.cli_systems, state.cores, state.regions, state.record_flags = [], [], [], [] + state.no_game_data = state.installed_only = state.required_only = False + state.for_games, state.games_folder, state.games_choice = None, None, "" + # The systems of the recorded check go, and with them its ticks. + state.systems, state.ticked, state.keep_ticked, state.widened_from = [], set(), None, None + + +def _tui_record_load(state: TuiState) -> None: + """Read the record of the setup and folder chosen, once for each, and + take its choice where nothing chose: the command line, or the screen + for an earlier folder.""" + key = (state.platform, state.dest) + if state.dest is None or state.record_for == key: + return + taken = tui_record_kept(state) + state.record_for = key + setup, path, problem = setup_record(state.platform, state.dest) + if problem and str(path) not in _RECORD_SAID: + _RECORD_SAID.add(str(path)) + state.status = f"{problem}, so it is ignored." + if taken: + _tui_record_drop(state) + # Games read on a card are what the plan found, not a choice. + found = ("--for-games", "--required-only") if state.games_choice in ("", "probe") else () + state.record = None + untouched = not any(flag in RECORD_NARROWING and flag not in found + for flag, _value in tui_flags(state)) + state.record = setup + if setup is not None and not state.cli_choice and untouched: + _tui_record_take(state) + + def _start_check(state: TuiState) -> list[tuple]: """Check the chosen folder, after fetching the file list once, the systems ticked kept (_keep_choice).""" + _tui_record_load(state) _keep_choice(state) _games_look(state) state.refocus = "" @@ -19528,7 +20248,7 @@ def _games_look(state: TuiState) -> None: looked at too, from what this run already read (no network): its games make "For the games on this card" the choice, unless the user or the command line decided.""" - if (state.games_choice in ("user", "cli") or state.games_probed is None + if (state.games_choice in ("user", "cli", "record") or state.games_probed is None or state.dest is None or state.games_probed == (state.platform, state.dest)): return count = games_probe(state.platform, state.dest, network=False, os_type=state.os_type) @@ -20130,6 +20850,28 @@ def _activate(state: TuiState, row: TuiRow) -> list[tuple]: return _push(state, action) if action == "recheck": return _start_check(state) + if action == "where": + effects = [("kill",)] if state.running else [] + state.running, state.run_id = False, state.run_id + 1 + del state.stack[1:] + return effects + if action == "record": + # No: the choice nothing narrows, the card's games when it holds + # some. Yes: the recorded choice again. Counted again either way. + if tui_record_kept(state): + _tui_record_drop(state) + if state.dest is not None: + count = games_probe(state.platform, state.dest, network=False, + os_type=state.os_type) + state.games_probed = (state.platform, state.dest) + state.games_here = count or 0 + state.for_games, state.games_choice = bool(count), "probe" + else: + _tui_record_drop(state) + _tui_record_take(state) + effects = _start_check(state) + state.refocus = "record" + return effects if action in ("games", "startonly"): # One press, then counted again: the games decide the systems, # so the ticks start again from every system they need. @@ -21485,7 +22227,7 @@ def tui_receive(state: TuiState, message: tuple) -> list[tuple]: _kind, plat, dest, count = message if plat == state.platform and dest == state.dest: state.games_probed = (plat, dest) - if state.games_choice not in ("user", "cli"): + if state.games_choice not in ("user", "cli", "record"): state.games_here = count or 0 state.for_games, state.games_choice = bool(count), "probe" return [] @@ -21985,25 +22727,36 @@ def _last_name(folder: str) -> str: return Path(folder).name or folder -def _plan_lines(check: dict, dest: Path | None, state: TuiState) -> list: - need = _needed(check) - data = check.get("data_missing", 0) - # A file found on this machine is copied, not downloaded: the count and - # the size to download leave it out, from the check's own events. On - # Confirm the dry run's files are matched the same way: it called the - # files a --from folder holds downloads, and sent an offline user for - # a pack. +def _plan_fetch(state: TuiState, check: dict) -> tuple[int, int, list, list, dict]: + """(files to fetch, bytes the install fetches with the data files', + dests copied from this machine, dests the pack lacks, the size of each + file): the one size the plan's headline and its Install row say. + + A file found on this machine is copied, not downloaded: the count and + the size to download leave it out, from the check's own events. On + Confirm the dry run's files are matched the same way: it called the + files a --from folder holds downloads, and sent an offline user for a + pack. The files the pack does not hold are left out too: the plan + offered "Install 6.6 GB" from a pack that held none of them. + """ dry = check is state.dry and check is not state.check sizes = {event["dest"]: event["size"] for event in (state.dry_files if dry else state.files)} copied = _plan_copies(state, check) if dry or check is state.check else [] - # The files the pack does not hold are said before a size is promised, - # and left out of it: the plan offered "Install 6.6 GB" from a pack that - # held none of them. lacking = _tui_pack_lacks(state, [dest_ for dest_ in sizes if dest_ not in copied]) - fetch = max(0, need - len(copied) - len(lacking)) - fetch_bytes = max(0, check["bytes_needed"] - sum(sizes[dest_] for dest_ in copied) + fetch = max(0, _needed(check) - len(copied) - len(lacking)) + fetch_bytes = max(0, check.get("bytes_needed", 0) - sum(sizes[dest_] for dest_ in copied) - sum(sizes[dest_] for dest_ in lacking)) + data_bytes = check.get("data_bytes", 0) if check.get("data_missing", 0) else 0 + return fetch, fetch_bytes + data_bytes, copied, lacking, sizes + + +def _plan_lines(check: dict, dest: Path | None, state: TuiState) -> list: + need = _needed(check) + data = check.get("data_missing", 0) + dry = check is state.dry and check is not state.check + fetch, fetched, copied, lacking, sizes = _plan_fetch(state, check) + fetch_bytes = fetched - (check.get("data_bytes", 0) if data else 0) elsewhere = (_tui_found_elsewhere(state, set(copied) if dry else None) if check is state.check or dry else {}) offline = _offline_only() @@ -22149,6 +22902,8 @@ def _plan_lines(check: dict, dest: Path | None, state: TuiState) -> list: if check is state.check: lines += _unplaced_lines(_choice_summary(state), state, "Choose it in Options, Save folder (--save-dir).") + if check is state.check: + lines += _found_lines(state) if check is state.check and state.from_folders: # A folder copied from that holds none of them: the plan came back # the same, still saying to copy from a folder. @@ -22603,6 +23358,23 @@ def _plan_text(state: TuiState) -> list: said = ", ".join(named) if said and not said.startswith("for "): said = f"for this choice: {said}" + since: list = [] + if tui_record_kept(state) and not state.cli_choice and state.record is not None: + # The record's systems by name, its row saying whose choice it is: + # nobody typed --system. The games and the other options are said + # as the plan says them. + what = record_says(state.record, state.manifest) + if what == "every file": + said = "" + elif what not in ("the games", "the options chosen"): + said = f"for {what}" + updated, new = record_changes(state.record, [ + entry for entry in (state.manifest or {}).get("files") or [] + if entry.get("dest") in state.checked_dests]) + changes = [*([f"{_plural(updated, 'file')} updated in the list"] if updated else []), + *([f"{new} new"] if new else [])] + if changes: + since = [_detail(f"Since then: {', '.join(changes)}.")] # A system --system named that --no-game-data left empty, in line mode's # words. listed = {row["system"] for row in state.systems} @@ -22641,7 +23413,7 @@ def _plan_text(state: TuiState) -> list: f"{parts}") lines[at:at] = [*([_detail(state.card_note)] if state.card_note and state.card_note != state.status else []), - *([f"{said[0].upper()}{said[1:]}."] if said else []), + *([f"{said[0].upper()}{said[1:]}."] if said else []), *since, *([emptied_named] if emptied_named else []), *choice, *([_detail(parts)] if parts else []), *games_plan_words(state)] if state.version: @@ -23179,6 +23951,20 @@ def _unavailable(state: TuiState) -> tuple[list[dict], int]: return needed, others +def _found_lines(state: TuiState) -> list[TuiLine]: + """What the setups screen said of this machine, on a plan that opened + in its place: the setup found by its label, and the notes (ES-DE found, + what detection printed) on Details, one line on the plan saying so.""" + if not state.opened_on_plan or not state.setups: + return [] + lines = _details([f"Found here: {state.setups[0][2]}.", *state.notes]) + if state.notes: + brief = _styled(f"{_plural(len(state.notes), 'note')} on this machine: Details.") + brief.brief = True + lines.insert(0, brief) + return lines + + def _unavailable_brief(state: TuiState) -> list[TuiLine]: """The count of the files an emulator needs that cannot be supplied, on the screen itself: their names are on Details, and in place with @@ -24065,6 +24851,7 @@ def tui_start( if args.manifest is not None: state.manifest_path = Path(args.manifest).absolute() state.manifest_given = True + state.cli_choice = choice_given(args) or state.manifest_given plat = normalize_platform(args.platform, say=False) if args.platform else "" if detect: captured = io.StringIO() @@ -24137,6 +24924,14 @@ def tui_start( if state.dest_given is None and not args.platform: state.doubts = [(plat, mount) for mount in _mounted_cards() for plat in share_doubt(mount)[0]] + if (state.dest_given is None and not state.doubts and not state.refused + and len(state.setups) == 1): + # One setup found and no card in doubt: its plan, Change where (or + # Back) one press away. A folder detection could not look in may + # hold another setup: the setups are listed then, with it. + found, folder, _label = state.setups[0] + state.opened_on_plan = True + return state, _choose(state, found, folder, proposed=True) if state.dest_given is not None or not (state.setups or state.doubts): state.stack = ["platforms"] state.focus["platforms"] = _platform_focus(state, dest_default(state.setups)) @@ -24732,7 +25527,7 @@ def run_tui(args: argparse.Namespace) -> int: if kind == "fetch": threading.Thread(target=_tui_fetch_games, args=(effect[1], inbox, buffer, state.dest, - state.games_choice not in ("user", "cli")), + state.games_choice not in ("user", "cli", "record")), daemon=True).start() elif kind == "run": for run in current: @@ -24751,7 +25546,7 @@ def run_tui(args: argparse.Namespace) -> int: try: current.append(_EngineRun( tui_argv(state, effect[1], sys.executable, script), log, inbox, - state.run_id, {**os.environ, TUI_LIST_ENV: "1"} if own_list else None)) + state.run_id, tui_run_env(state, own_list))) except OSError as exc: inbox.put(("ended", state.run_id, 1, [f"The installer could not be started: {exc}"])) diff --git a/install.sh b/install.sh index a606cca06..461ba515b 100755 --- a/install.sh +++ b/install.sh @@ -23,7 +23,7 @@ DEFAULT_INSTALL_URL="https://raw.githubusercontent.com/Abdess/retrobios/main/ins # curl or wget stop on a cut transfer before the hash is read: the site's # build rewrites this line there (scripts/sitebootstrap.py). MISMATCH_ADVICE="The download was most likely cut short: try again. Within minutes of an update of this project the two files can come from caches of different ages. Waiting five minutes settles that." -DEFAULT_INSTALL_SHA256="456a32e79668e125f2ebe573b549247210c59fed6389e78dc1482b57d3a36712" +DEFAULT_INSTALL_SHA256="37442a7c0d307b0b95a40d7630cf57025a6498fea6223076892371b2d6363147" # The pin above refuses any changed byte: this cap only stops a body that # cannot be the installer (a sign-in portal's page) before it is hashed. MAX_INSTALLER_BYTES=8388608 diff --git a/install/launchers/index.json b/install/launchers/index.json index 8cee38296..e6f2a2d46 100644 --- a/install/launchers/index.json +++ b/install/launchers/index.json @@ -27,8 +27,8 @@ { "dest": "roms/ports/retrobios/install.py", "repo_path": "install.py", - "size": 1162452, - "sha256": "456a32e79668e125f2ebe573b549247210c59fed6389e78dc1482b57d3a36712", + "size": 1201450, + "sha256": "37442a7c0d307b0b95a40d7630cf57025a6498fea6223076892371b2d6363147", "executable": false }, { @@ -71,8 +71,8 @@ "muos": { "archive": { "dest": "ARCHIVE/RetroBIOS.muxapp", - "size": 1216077, - "sha256": "b9e623839a8cf71d929a860b53a6c4c82cbfde551151912e1aba0347532be965" + "size": 1255075, + "sha256": "23393eb6b88f7a7875bd034e79c02d81e80409c9403290bb96a75166bf7a60b6" }, "members": [ { @@ -92,8 +92,8 @@ { "name": "RetroBIOS/install.py", "repo_path": "install.py", - "size": 1162452, - "sha256": "456a32e79668e125f2ebe573b549247210c59fed6389e78dc1482b57d3a36712", + "size": 1201450, + "sha256": "37442a7c0d307b0b95a40d7630cf57025a6498fea6223076892371b2d6363147", "executable": false }, { @@ -166,8 +166,8 @@ { "dest": ".config/modules/retrobios/install.py", "repo_path": "install.py", - "size": 1162452, - "sha256": "456a32e79668e125f2ebe573b549247210c59fed6389e78dc1482b57d3a36712", + "size": 1201450, + "sha256": "37442a7c0d307b0b95a40d7630cf57025a6498fea6223076892371b2d6363147", "executable": false }, { diff --git a/platforms/batocera.yml b/platforms/batocera.yml index fccda9985..3accfa622 100644 --- a/platforms/batocera.yml +++ b/platforms/batocera.yml @@ -6814,6 +6814,59 @@ launchers: fails_when_missing: false source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/shadps4/shadps4Generator.py:46,\ \ 228" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: ;/userdata/bios/mame;/userdata/bios + passes_to: command line -rompath + fails_when_missing: false + depends_on_option: messMode == -1 + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:129-130" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: ;/userdata/bios/mame;/userdata/bios;/userdata/roms/mame; + passes_to: command line -rompath + fails_when_missing: false + depends_on_option: "not (messMode == -1) and softList in subdirSoftList" + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:129,\ + \ 132-133" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: ;/userdata/bios/mame;/userdata/bios;/userdata/roms/mame + passes_to: command line -rompath + fails_when_missing: false + depends_on_option: "not (messMode == -1) and not (softList in subdirSoftList)" + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:129,\ + \ 132, 135" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: /userdata/bios/mame/samples + passes_to: command line -samplepath + fails_when_missing: false + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:142" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: /var/run/mame_artwork/;/usr/bin/mame/artwork/;/userdata/bios/mame/artwork;/userdata/decorations + passes_to: command line -artpath + fails_when_missing: false + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:143" +- emulator: mame + build: standalone + kind: passes_path + names: [] + search_dir: /userdata/bios/mame/artwork/crosshairs + passes_to: command line -crosshairpath + fails_when_missing: false + source_ref: "package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py:189" configs_root: path: /userdata/system/configs from_bios: ../system/configs diff --git a/platforms/retropie.yml b/platforms/retropie.yml index 34276c303..f63b8e80e 100644 --- a/platforms/retropie.yml +++ b/platforms/retropie.yml @@ -693,6 +693,24 @@ launchers: passes_to: rompath in $md_conf_root/mame/mame.ini fails_when_missing: false source_ref: "scriptmodules/emulators/mame.sh:133" +- emulator: mame + package: mame + build: standalone + kind: passes_path + names: [] + search_dir: $romdir/mame/samples;$romdir/arcade/samples + passes_to: samplepath in $md_conf_root/mame/mame.ini + fails_when_missing: false + source_ref: "scriptmodules/emulators/mame.sh:135" +- emulator: mame + package: mame + build: standalone + kind: passes_path + names: [] + search_dir: $romdir/mame/artwork;$romdir/arcade/artwork + passes_to: artpath in $md_conf_root/mame/mame.ini + fails_when_missing: false + source_ref: "scriptmodules/emulators/mame.sh:136" - emulator: mame4all package: mame4all repo: "git https://github.com/RetroPie/mame4all-pi.git master" @@ -703,6 +721,24 @@ launchers: kind: package names: [] source_ref: "scriptmodules/emulators/mame4all.sh:12, 16, 91-92" +- emulator: mame4all + package: mame4all + build: standalone + kind: passes_path + names: [] + search_dir: $romdir/mame-mame4all/samples;$romdir/arcade/samples + passes_to: samplepath in $md_conf_root/mame-mame4all/mame.cfg + fails_when_missing: false + source_ref: "scriptmodules/emulators/mame4all.sh:78" +- emulator: mame4all + package: mame4all + build: standalone + kind: passes_path + names: [] + search_dir: $romdir/mame-mame4all;$romdir/arcade + passes_to: rompath in $md_conf_root/mame-mame4all/mame.cfg + fails_when_missing: false + source_ref: "scriptmodules/emulators/mame4all.sh:79" - emulator: minivmac package: minivmac repo: "git https://github.com/minivmac/minivmac.git master" diff --git a/schemas/install-events.schema.json b/schemas/install-events.schema.json index a252c8fce..0a6713ed3 100644 --- a/schemas/install-events.schema.json +++ b/schemas/install-events.schema.json @@ -38,6 +38,7 @@ "downloaded", "summary", "app", + "record", "end" ] } @@ -127,6 +128,9 @@ { "$ref": "#/$defs/app" }, + { + "$ref": "#/$defs/record" + }, { "$ref": "#/$defs/end" } @@ -1091,6 +1095,59 @@ } } }, + "record": { + "type": "object", + "additionalProperties": false, + "required": [ + "event", + "platform", + "folder", + "path", + "status", + "choice", + "date", + "files", + "message" + ], + "properties": { + "event": { + "const": "record" + }, + "platform": { + "type": "string" + }, + "folder": { + "type": "string" + }, + "path": { + "type": "string" + }, + "status": { + "enum": [ + "applied", + "written", + "unreadable", + "not_written" + ] + }, + "choice": { + "type": "array", + "items": { + "type": "string" + } + }, + "date": { + "type": "string" + }, + "files": { + "type": "integer", + "minimum": 0 + }, + "message": { + "type": "string" + } + } + }, "end": { "type": "object", "additionalProperties": false, diff --git a/scripts/common.py b/scripts/common.py index d70cda1c0..cb3e294d1 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -2760,27 +2760,49 @@ def expand_directory_entries( if not any(entry.get("type") == "directory" for entry in files): return files + # A file the profile names itself is left to that entry, in the same + # build and below the same root: MAME's libretro floppy samples share + # their path with the standalone tree RetroPie reads below roms/. + other_build = "libretro" if standalone else "standalone" named = { - destination(entry) for entry in files if entry.get("type") != "directory" + (entry.get("root") or "", destination(entry)) for entry in files + if entry.get("type") != "directory" and entry.get("mode") != other_build } expanded: list[dict] = [] for entry in files: if entry.get("type") != "directory": expanded.append(entry) continue - members = directory_members(db, destination(entry)) + target = destination(entry) + # A directory a platform moved (platform_layouts) is the profile's + # tree at the platform's place: the collection holds it under the + # layout path, and the platform's folder proves nothing (RetroDECK + # hands MAME samplepath $bios_path/mame-sa/samples). + layout = str(entry.get("layout_path") or "") if standalone else "" + members = directory_members(db, layout) if layout else {} + if not members: + # A layout tail two trees answer (MAME's hash/) leaves the + # platform's own tail. + layout = "" + members = directory_members(db, target) + if layout and layout.strip("/") != target.strip("/"): + source, place = layout.strip("/") + "/", target.strip("/") + "/" + members = { + place + dest[len(source):]: sha1 + for dest, sha1 in members.items() if dest.startswith(source) + } if not members: expanded.append(entry) continue inherited = { key: value for key, value in entry.items() - if key not in ("type", "standalone_path") + if key not in ("type", "standalone_path", "layout_path") } expanded.extend( {**inherited, "name": dest, "path": dest, "sha1": sha1} for dest, sha1 in members.items() - if dest not in named + if (entry.get("root") or "", dest) not in named ) return expanded @@ -2905,6 +2927,32 @@ def own_build_tags(config: dict, standalone: set[str]) -> set[str]: } +def twin_build_names(config: dict) -> set[str]: + """The libretro core names of emulators a platform also runs standalone + under another name. + + RetroBat's es_systems.cfg offers MAME as the libretro core mame and as + the standalone mame64, two names of one profile: the platform runs it + both ways, and each build reads its own layout. + """ + standalone = {str(c) for c in config.get("standalone_cores") or []} + libretro = {str(c) for c in config.get("cores") or []} - standalone if isinstance( + config.get("cores"), list + ) else set() + if not standalone or not libretro: + return set() + profiles = load_emulator_profiles(str(Path(__file__).resolve().parent.parent / "emulators")) + found: set[str] = set() + for key, profile in profiles.items(): + kind = str(profile.get("type", "")) + if "libretro" not in kind or "standalone" not in kind: + continue + names = {key, *(str(c) for c in profile.get("cores") or [])} + if names & standalone: + found |= names & libretro + return found + + def standalone_set(config: dict) -> set[str]: """The emulators a platform launches standalone, with its dual-mode ones. @@ -2924,6 +2972,7 @@ def standalone_set(config: dict) -> set[str]: & set(map(str, config.get("standalone_cores") or [])) } names |= own_build_tags(config, names) + names |= {DUAL_MODE_PREFIX + n for n in twin_build_names(config)} # The system directory each core is handed travels the same way, so # platform_layouts places a core's files below it for every reader. names |= { @@ -3157,6 +3206,29 @@ def standalone_bindings_for( ) +def _placed_entry(entry: dict, profile: dict, placed: tuple[str, str]) -> dict: + """A standalone entry moved to the (tree, path) a platform reads it from.""" + tree, path = placed + moved = {**entry, "standalone_path": path, + "layout_path": standalone_layout_path(entry, profile)} + if entry.get("load_from"): + # The build's own root no longer applies: RetroDECK hands + # Cemu's MLC, read from its data directory, to bios/cemu. + load_from = entry["load_from"] + moved["load_from"] = { + **(load_from if isinstance(load_from, dict) else {"libretro": load_from}), + "standalone": "system_dir", + } + if tree == "install": + # Below the roms root inside the install tree (AmberELEC's + # /storage/roms): a plain dest the platform prefix skips. + return {**moved, "unprefixed": True} + # A file the launcher runs from the roms directory (ROCKNIX's + # roms/pico-8) or an emulator folder (RetroBat's emulators/pico8) + # is relative to it, and says so. + return {**moved, "root": tree} if tree else moved + + def platform_layouts( emu_name: str, profile: dict, standalone_cores: set[str] ) -> list[tuple[dict, bool]]: @@ -3191,7 +3263,14 @@ def platform_layouts( for system in own: family.setdefault(system, set()).update(entry_launch_systems(f, index) - own) - def bindings_of(entry: dict) -> dict[str, tuple[str, str]]: + # The systems the launcher records name: a launch for one of them reads + # the folder its record gives, every other launch the folder the records + # naming none give. + named_systems = frozenset().union(*( + h.systems for h in _handed(standalone_cores) if h.emulator in names + )) if per_system else frozenset() + + def launch_systems(entry: dict) -> frozenset[str]: systems: frozenset[str] = frozenset() if per_system: own = entry_launch_systems(entry, {}) @@ -3205,12 +3284,53 @@ def platform_layouts( systems = systems.union(*( index.get(MACHINE_KEY + _norm_system_id(s), set()) for s in own )) + return systems + + def bindings_for(systems: frozenset[str]) -> dict[str, tuple[str, str]]: if systems not in by_systems: by_systems[systems] = standalone_bindings_for( emu_name, profile, standalone_cores, systems ) return by_systems[systems] + def bindings_of(entry: dict) -> dict[str, tuple[str, str]]: + return bindings_for(launch_systems(entry)) + + # The layout folders a search setting stands for (standalone_pools): + # bound, the launcher passes the setting and the default is not read. + pool_folders = { + str(v).strip("/") for v in (profile.get("standalone_pools") or {}).values() + } - {""} + + def passed_setting(entry: dict) -> bool: + layout = str(standalone_layout_path(entry, profile) or "") + bindings = bindings_of(entry) + return any( + folder in bindings and (layout == folder or layout.startswith(folder + "/")) + for folder in pool_folders + ) + + def destinations(entry: dict) -> list[tuple[str, str] | None]: + """Each place the entry's launches read it from, in launch order. + + An entry of a system a record names is read where that record puts + it. One also launched for systems no record names is read, for those + launches, where the records naming none put it: EmuELEC starts + AdvanceMAME with dir_rom roms/arcade for arcade and roms/mame for + mame and cps1-3 (advmame.sh:26-30), and an arcade set is read in both. + """ + systems = launch_systems(entry) + found = [standalone_destination(entry, profile, bindings_for(systems))] + # A system the platform's list or machines put the entry under + # stands for the entry's own ids: XRoar's coco3 is launched as coco. + own = entry_launch_systems(entry, {}) + launched = (systems - own) | (own & named_systems) if systems != own else systems + if launched & named_systems and launched - named_systems: + generic = standalone_destination(entry, profile, bindings_for(frozenset())) + if generic not in found: + found.append(generic) + return found + layout_entries = [ f for f in profile.get("files") or [] if isinstance(f, dict) and standalone_layout_path(f, profile) is not None @@ -3228,30 +3348,18 @@ def platform_layouts( if not isinstance(f, dict) or standalone_layout_path(f, profile) is None: files.append(f) continue - placed = standalone_destination(f, profile, bindings_of(f)) - if placed is None or placed[0] == "outside": + places = [p for p in destinations(f) if p is not None and p[0] != "outside"] + if not places: files.append({**f, "unplaced": OUTSIDE_BIOS_FOLDER}) continue - tree, path = placed - moved = {**f, "standalone_path": path, - "layout_path": standalone_layout_path(f, profile)} - if f.get("load_from"): - # The build's own root no longer applies: RetroDECK hands - # Cemu's MLC, read from its data directory, to bios/cemu. - load_from = f["load_from"] - moved["load_from"] = { - **(load_from if isinstance(load_from, dict) else {"libretro": load_from}), - "standalone": "system_dir", - } - if tree == "install": - # Below the roms root inside the install tree (AmberELEC's - # /storage/roms): a plain dest the platform prefix skips. - files.append({**moved, "unprefixed": True}) - continue - # A file the launcher runs from the roms directory (ROCKNIX's - # roms/pico-8) or an emulator folder (RetroBat's emulators/pico8) - # is relative to it, and says so. - files.append({**moved, "root": tree} if tree else moved) + moved = f + if f.get("bundled") and passed_setting(f): + # The copy installed with the emulator sits where the setting + # pointed before the launcher moved it: RetroBat passes MAME + # -hash bios/mame/hash (Mame64.Generator.cs:172, 177-178), and + # the hash/ beside mame.exe is no longer read. + moved = {k: v for k, v in f.items() if k != "bundled"} + files.extend(_placed_entry(moved, profile, placed) for placed in places) standalone = {**profile, "files": files} dual = {c.removeprefix(DUAL_MODE_PREFIX) for c in standalone_cores if c.startswith(DUAL_MODE_PREFIX)} diff --git a/scripts/generate_event_schema.py b/scripts/generate_event_schema.py index 8b9eab202..0242aae8d 100644 --- a/scripts/generate_event_schema.py +++ b/scripts/generate_event_schema.py @@ -37,10 +37,11 @@ KEY_TYPES: dict[str, dict] = { **dict.fromkeys(( "installer", "os", "os_name", "stage", "reason", "platform", "message", "folder", "dest", "system", "name", "bios_dir", "path", "member", - "list_version", "installed_version", "board", "core", + "list_version", "installed_version", "board", "core", "date", ), _TEXT), "mode": {"enum": ["install", "check", "dry-run", "list"]}, "state": {"enum": ["present", "wrong_hash", "missing"]}, + "status": {"enum": ["applied", "written", "unreadable", "not_written"]}, **dict.fromkeys(( "files", "files_done", "files_total", "bytes", "bytes_done", "bytes_total", "bytes_local", "bytes_network", "size", "present", "missing", "wrong_hash", @@ -48,7 +49,7 @@ KEY_TYPES: dict[str, dict] = { "pending", "code", "games", "recognised", "not_games", ), _COUNT), **dict.fromkeys(("truncated", "ok", "interrupted", "required_only", "applied", "info"), _FLAG), - **dict.fromkeys(("systems", "other_drives", "dests", "written"), _NAMES), + **dict.fromkeys(("systems", "other_drives", "dests", "written", "choice"), _NAMES), **dict.fromkeys(("platforms", "failed", "skipped", "left_out", "kept", "found", "fallback"), _RECORDS), } diff --git a/scripts/launchers.py b/scripts/launchers.py index 6d959339a..2884035b9 100644 --- a/scripts/launchers.py +++ b/scripts/launchers.py @@ -314,8 +314,9 @@ BIOS_ROOT_VARIABLES = ("$biosdir", "$home/RetroPie/BIOS", "${biosPath}", "$bios_ # The name a platform's launch code gives its roms root: RetroDECK's # component scripts write $roms_path (retrodeck_launchers), the setting whose -# default is the roms root (config/retrodeck/retrodeck.json:5). -ROMS_ROOT_VARIABLES = ("$roms_path", "${roms_path}") +# default is the roms root (config/retrodeck/retrodeck.json:5), RetroPie's +# scriptmodules $romdir (retropie_packages.sh:47-49). +ROMS_ROOT_VARIABLES = ("$roms_path", "${roms_path}", "$romdir", "${romdir}") # The kinds that hand an emulator a whole directory. A scans_dir record sets # the directory the emulator picks its file from: ROCKNIX writes ARMSX2's diff --git a/scripts/packextras.py b/scripts/packextras.py index 1531c384a..e47228a7b 100644 --- a/scripts/packextras.py +++ b/scripts/packextras.py @@ -1545,6 +1545,11 @@ def _collect_emulator_extras( extra["system_dir"] = f["system_dir"] if f.get("unprefixed"): extra["unprefixed"] = True + # A copy placed outside the BIOS tree resolves by its layout + # path alone, as the first pass does: EmuELEC's + # roms/mame/stvbios.zip took bios/Arcade/MAME's set by that tail. + if f.get("layout_path"): + extra["layout_path"] = f["layout_path"] extra["claim_order"] = (2, 0, emu_name) if _take(extra, full_dest, seen_dests, taken): extras.append(extra) diff --git a/scripts/release_notes.py b/scripts/release_notes.py index c18cc503c..db3572ed2 100644 --- a/scripts/release_notes.py +++ b/scripts/release_notes.py @@ -238,9 +238,9 @@ def render(record: dict, platforms_dir: str, whats_new: str, folders = _extract_folders(record, platforms_dir) tag = str(record.get("tag", "")) lines = [ - "### Get your BIOS", + "### Get the BIOS files", "", - "Paste this in a terminal. It finds your setup and installs the missing BIOS files.", + "Paste this in a terminal. It finds the setup and installs the missing BIOS files.", "", "**Linux, macOS, Steam Deck**", "```sh", @@ -252,11 +252,11 @@ def render(record: dict, platforms_dir: str, whats_new: str, install_command("powershell"), "```", "", - f"**On a handheld**: [get the app for your system]({SITE}{HANDHELD_PAGE}).", + f"**On a handheld**: [get the app for the system]({SITE}{HANDHELD_PAGE}).", "", "### Full packs", "", - "Large downloads, for a device without internet. Extract into your BIOS folder.", + "Large downloads, for a device without internet. Extract into the BIOS folder.", "", ] if any(len(pack["assets"]) > 1 for pack in packs.values()): diff --git a/scripts/scraper/_hash_merge.py b/scripts/scraper/_hash_merge.py index 4fe3cc93d..b83531a83 100644 --- a/scripts/scraper/_hash_merge.py +++ b/scripts/scraper/_hash_merge.py @@ -578,8 +578,10 @@ def _append_new_entries(text: str, files: list[dict], original: str) -> str: return text lines = [] + profile_type = str(existing_data.get("type") or "") for fe in new_entries: lines.append(f"\n - name: {_yaml_scalar(fe['name'])}") + lines.extend(set_path_lines(profile_type, fe["name"])) lines.append(f" required: {str(fe['required']).lower()}") lines.append(" category: bios_zip") if fe.get("source_ref"): @@ -715,10 +717,27 @@ def _rewrite_systems(section: str, systems: dict[str, list[str]]) -> str: return "\n".join(out) -def _format_device_entry(name: str, device: dict, role: str) -> str: +def set_path_lines(profile_type: str, name: str) -> list[str]: + """Where each build of a MAME profile reads a set it lists. + + The libretro build searches the content folder, then /mame/bios + and /mame/roms (libretro-internal/retro_init.cpp, + Set_Path_Option), never the system folder itself. The standalone build + reads the top of its rompath. + """ + if "libretro" not in profile_type: + return [] + lines = [f' path: "mame/bios/{name}"'] + if "standalone" in profile_type: + lines.append(f' standalone_path: "{name}"') + return lines + + +def _format_device_entry(name: str, device: dict, role: str, profile_type: str = "") -> str: """One generated device entry, in the field order of the written ones.""" lines = [ f" - name: {_zip_scalar(name)}", + *set_path_lines(profile_type, name), " required: false", " category: bios_zip", *_system_lines(device.get("systems") or []), @@ -779,7 +798,9 @@ def merge_mame_devices( name = f"{set_name}.zip" existing = entries.get(name) if not existing: - new_blocks[name] = _format_device_entry(name, device, role) + new_blocks[name] = _format_device_entry( + name, device, role, str(profile.get("type") or "") + ) report["added"].append(set_name) continue if any(e.get("category") != "bios_zip" for e in existing): diff --git a/scripts/scraper/batocera_launchers.py b/scripts/scraper/batocera_launchers.py index 723e7d5ad..f7e44d1ea 100644 --- a/scripts/scraper/batocera_launchers.py +++ b/scripts/scraper/batocera_launchers.py @@ -1119,10 +1119,32 @@ def patched_paths(read: Callable[[str], str], patches: tuple[str, ...] = PATH_PA return launchers +# Generators whose command line hands the emulator /userdata/bios folders as +# search paths: MAME's -rompath and -samplepath (mame/mameGenerator.py). +SEARCH_PATH_GENERATORS = ("mame/mameGenerator.py",) + + +def search_paths(cg: Configgen) -> list[Launcher]: + """Every /userdata/bios path a generator's command line names, read as + KNULLI's generic reader reads its fork of the same generator.""" + try: + from .knulli_launchers import GenericSites, bios_sites # noqa: PLC0415 + except ImportError: + from knulli_launchers import GenericSites, bios_sites # type: ignore[no-redef] # noqa: PLC0415 + # A boot disk image the command line names (the Macintosh's + # /userdata/bios/.img) is a file, no search path. + return [ + launcher + for path in SEARCH_PATH_GENERATORS + for launcher in bios_sites(cg, GenericSites(path, "passes_path")) + if re.match(r"command line -\w", launcher.passes_to or "") + ] + + EXTRACTORS: tuple[Callable[[Configgen], list[Launcher]], ...] = ( duckstation, duckstation_legacy, hatari, xemu, melonds, mupen64plus, x16emu, gsplus, lexaloffle, environment_directories, config_directories, - core_file_options, working_directories, + core_file_options, working_directories, search_paths, ) diff --git a/scripts/scraper/mame_hash_scraper.py b/scripts/scraper/mame_hash_scraper.py index 550d34b12..28557323b 100644 --- a/scripts/scraper/mame_hash_scraper.py +++ b/scripts/scraper/mame_hash_scraper.py @@ -453,6 +453,10 @@ def release_profile( name = f"{set_name}.zip" entry: dict[str, Any] = { "name": name, + # The libretro build searches the content folder, then + # /mame/bios and /mame/roms (retro_init.cpp, + # Set_Path_Option): the system folder itself is not read. + "path": f"mame/bios/{name}", "required": settled_required(known.get(name, {}), data), "category": "bios_zip", } diff --git a/scripts/scraper/retropie_launchers.py b/scripts/scraper/retropie_launchers.py index a56cd9a2c..1f48b28c0 100644 --- a/scripts/scraper/retropie_launchers.py +++ b/scripts/scraper/retropie_launchers.py @@ -32,6 +32,9 @@ SECTIONS = ("emulators", "libretrocores", "ports") PACKAGES_SCRIPT = "retropie_packages.sh" BIOSDIR = "$biosdir" +# The roms root (retropie_packages.sh:47-49): MAME's mame.ini lists rom, +# sample and artwork folders below it (scriptmodules/emulators/mame.sh:133-136). +ROMDIR = "$romdir" # The package whose config every lr- core runs under. LIBRETRO_FRONTEND = "retroarch" # The launch scripts copied next to an emulator spell the directory out. @@ -464,6 +467,20 @@ class Scripts: return results +def _search_list_in_roms(event: "Event") -> bool: + """An iniSet whose value is a list of folders below the roms root. + + One folder alone is where a program writes (cfg_directory, nvram_directory + and the others MAME's mame.ini sets): a list is where it searches. + """ + if len(event.words) < 3 or len(event.words[2]) != 1: + return False + parts = [p for p in event.words[2][0].split(";") if p] + return len(parts) > 1 and all( + p.startswith(ROMDIR + "/") or p.startswith("${romdir}/") for p in parts + ) + + def _mentions_bios(text: str) -> bool: return BIOSDIR in text or "${biosdir}" in text or BIOS_SPELLED in text @@ -541,6 +558,12 @@ class PackageReader: if command == "addEmulator": self._add_emulator(event) return + if command == "iniSet" and not _mentions_bios(event.raw): + # A search path below the roms root: MAME reads its samples from + # samplepath $romdir/mame/samples;$romdir/arcade/samples. + if _search_list_in_roms(event): + self._ini_set(event) + return if not _mentions_bios(event.raw): return if command in HOUSEKEEPING: diff --git a/scripts/validate_schemas.py b/scripts/validate_schemas.py index c28cd2d82..97b40707a 100644 --- a/scripts/validate_schemas.py +++ b/scripts/validate_schemas.py @@ -87,6 +87,7 @@ def _validate_yaml_directory( out.extend(_systems_outside_profile(path, data)) out.extend(_doubled_paths(path)) out.extend(_group_requirement_split(path, data)) + out.extend(_data_only_source_refs(path, data)) return out @@ -155,6 +156,65 @@ def _group_requirement_split(path: Path, document: object) -> list[str]: return out +_CODE_SUFFIXES = frozenset( + "c cc cpp cxx c++ h hh hpp hxx inc inl ipp m mm mjs cjs js jsx ts tsx py cs java kt " + "go rs lua pas pp asm s sh bash zsh ps1 bat cmd vbs swift d zig nim qml qc rb pl php " + "scala ml hs dart vue ino z80 smali".split() +) +_CODE_FILE = re.compile(r"[\w+.-]\.([A-Za-z0-9+]+)\b") +_BINARY_EVIDENCE = re.compile( + r"\b0x[0-9a-fA-F]+\b|\bFUN_[0-9a-fA-F]+\b|\.(?:so|dll|exe|dylib|dex|apk|jar|elf|nro|xex)\b", + re.IGNORECASE, +) + +# Profiles whose files cite no published code. Each reason says why the +# check cannot apply yet. +DATA_ONLY_REF_EXCEPTIONS: dict[str, str] = { + "ace-dl": "closed source: the refs describe what the shipped binary opens", + "cpcemu": "closed source: the refs describe what the shipped binary opens", + "drastic": "closed source: the shader format files are read by the shipped binary", + "lexaloffle": "closed source: PICO-8 reads pico8_gpio, the refs are its readme and the KNULLI install script", + "mfme": "closed source: the refs are the release notes of the shipped binary", +} + + +def _ref_cites_code(ref: str) -> bool: + """A source_ref part names a source file, or a binary with an address.""" + from sourceref import split_source_ref + + if _BINARY_EVIDENCE.search(ref): + return True + for part in split_source_ref(ref): + for suffix in _CODE_FILE.findall(part.raw): + if suffix.lower() in _CODE_SUFFIXES: + return True + return False + + +def _data_only_source_refs(path: Path, document: object) -> list[str]: + """A files[] source_ref that cites only data or build files. + + A data file is evidence that the emulator reads a file only once the + code that ships and parses it is cited too: iwadinfo.txt names the + IWADs, d_iwad.cpp is what reads it. 655 entries in 27 profiles cited + the table alone, and six of them named a file no code opens. + """ + if not isinstance(document, dict) or path.stem in DATA_ONLY_REF_EXCEPTIONS: + return [] + out: list[str] = [] + for index, entry in enumerate(document.get("files") or []): + if not isinstance(entry, dict) or not entry.get("source_ref"): + continue + refs = entry["source_ref"] + for ref in refs.values() if isinstance(refs, dict) else [refs]: + if ref and not _ref_cites_code(str(ref)): + out.append( + f"{path.relative_to(ROOT)}: files[{index}] ({entry.get('name')}) " + f"source_ref cites no code that reads the file: {ref}" + ) + return out + + def _checks_without_values(path: Path, document: object) -> list[str]: """A check an entry declares with nothing to compare against. diff --git a/tests/fixtures/tui/colour-120x40.txt b/tests/fixtures/tui/colour-120x40.txt index 9cf8474af..08b62e689 100644 --- a/tests/fixtures/tui/colour-120x40.txt +++ b/tests/fixtures/tui/colour-120x40.txt @@ -1064,3 +1064,44 @@ ^[[0;1;35mA/Enter^[[0m Back +=== plan-record +^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: RetroArch^[[0m + +^[[0;1m ^[[0;1;35m1^[[0;1m file to download, ^[[0;1;35m16.0 KB^[[0m + BIOS folder: ^[[0;1m~/.config/retroarch/system^[[0m + For nintendo-gba. + +^[[0;7;35m > Install^[[0m + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + + + + + + + + + + + + + + + + + ^[[0;1;35mA/Enter^[[0m Install ^[[0;2mB/Esc^[[0m Back ^[[0;2mY/o^[[0m Options ^[[0;2m?^[[0m Help diff --git a/tests/fixtures/tui/colour-40x12.txt b/tests/fixtures/tui/colour-40x12.txt index 2c14f4510..dd8c187aa 100644 --- a/tests/fixtures/tui/colour-40x12.txt +++ b/tests/fixtures/tui/colour-40x12.txt @@ -336,3 +336,16 @@ ^[[0;2m Shortened to fit this window.^[[0m ^[[0;1;35mA^[[0m Back +=== plan-record +^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: RetroArch^[[0m + +^[[0;1m ^[[0;1;35m1^[[0;1m file to download, ^[[0;1;35m16.0 KB^[[0m + BIOS folder: + ^[[0;1m~/.config/retroarch/system^[[0m + +^[[0;7;35m > Install^[[0m + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder +^[[0;2m 1-4 of 8^[[0m + ^[[0;1;35mA^[[0m Install ^[[0;2mB^[[0m Back ^[[0;2mY^[[0m Options ^[[0;2m?^[[0m Help diff --git a/tests/fixtures/tui/colour-40x15.txt b/tests/fixtures/tui/colour-40x15.txt index 9ec9e5490..981d77e67 100644 --- a/tests/fixtures/tui/colour-40x15.txt +++ b/tests/fixtures/tui/colour-40x15.txt @@ -414,3 +414,19 @@ ^[[0;1;35mA^[[0m Back +=== plan-record +^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: RetroArch^[[0m + +^[[0;1m ^[[0;1;35m1^[[0;1m file to download, ^[[0;1;35m16.0 KB^[[0m + BIOS folder: + ^[[0;1m~/.config/retroarch/system^[[0m + For nintendo-gba. +^[[0;7;35m > Install^[[0m + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + ^[[0;1;35mA^[[0m Install ^[[0;2mB^[[0m Back ^[[0;2mY^[[0m Options ^[[0;2m?^[[0m Help diff --git a/tests/fixtures/tui/colour-80x24.txt b/tests/fixtures/tui/colour-80x24.txt index 64a66ec3e..efa50239c 100644 --- a/tests/fixtures/tui/colour-80x24.txt +++ b/tests/fixtures/tui/colour-80x24.txt @@ -648,3 +648,28 @@ ^[[0;1;35mA/Enter^[[0m Back +=== plan-record +^[[0;1m ^[[0;1;35mRetroBIOS^[[0;1m: RetroArch^[[0m + +^[[0;1m ^[[0;1;35m1^[[0;1m file to download, ^[[0;1;35m16.0 KB^[[0m + BIOS folder: ^[[0;1m~/.config/retroarch/system^[[0m + For nintendo-gba. + +^[[0;7;35m > Install^[[0m + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + ^[[0;1;35mA/Enter^[[0m Install ^[[0;2mB/Esc^[[0m Back ^[[0;2mY/o^[[0m Options ^[[0;2m?^[[0m Help diff --git a/tests/fixtures/tui/plan-record-120x40.txt b/tests/fixtures/tui/plan-record-120x40.txt new file mode 100644 index 000000000..acea8e5bc --- /dev/null +++ b/tests/fixtures/tui/plan-record-120x40.txt @@ -0,0 +1,40 @@ + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + + + + + + + + + + + + + + + + + A/Enter Install B/Esc Back Y/o Options ? Help diff --git a/tests/fixtures/tui/plan-record-40x12.txt b/tests/fixtures/tui/plan-record-40x12.txt new file mode 100644 index 000000000..439d2a286 --- /dev/null +++ b/tests/fixtures/tui/plan-record-40x12.txt @@ -0,0 +1,12 @@ + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + A Install B Back Y Options ? Help diff --git a/tests/fixtures/tui/plan-record-40x15.txt b/tests/fixtures/tui/plan-record-40x15.txt new file mode 100644 index 000000000..0ca0559e4 --- /dev/null +++ b/tests/fixtures/tui/plan-record-40x15.txt @@ -0,0 +1,15 @@ + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + A Install B Back Y Options ? Help diff --git a/tests/fixtures/tui/plan-record-80x24.txt b/tests/fixtures/tui/plan-record-80x24.txt new file mode 100644 index 000000000..cacafb755 --- /dev/null +++ b/tests/fixtures/tui/plan-record-80x24.txt @@ -0,0 +1,24 @@ + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + A/Enter Install B/Esc Back Y/o Options ? Help diff --git a/tests/fixtures/tui/route-evmapy.txt b/tests/fixtures/tui/route-evmapy.txt index d799d290a..c25b7c0e5 100644 --- a/tests/fixtures/tui/route-evmapy.txt +++ b/tests/fixtures/tui/route-evmapy.txt @@ -1183,3 +1183,57 @@ A Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + A Install B Back Y Options +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + A Install B Back Y Options +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + A Install B Back Y Options diff --git a/tests/fixtures/tui/route-gptokeyb.txt b/tests/fixtures/tui/route-gptokeyb.txt index 9e9647ae4..5816841a0 100644 --- a/tests/fixtures/tui/route-gptokeyb.txt +++ b/tests/fixtures/tui/route-gptokeyb.txt @@ -1183,3 +1183,57 @@ A Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + A Install B Back Y Options +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + A Install B Back Y Options +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + A Install B Back Y Options diff --git a/tests/fixtures/tui/route-gptokeyb_muxterm.txt b/tests/fixtures/tui/route-gptokeyb_muxterm.txt index 9390cd9a6..526fa0b87 100644 --- a/tests/fixtures/tui/route-gptokeyb_muxterm.txt +++ b/tests/fixtures/tui/route-gptokeyb_muxterm.txt @@ -1183,3 +1183,57 @@ A Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + A Install B Back Y Options +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + A Install B Back Y Options +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + A Install B Back Y Options diff --git a/tests/fixtures/tui/route-keys.txt b/tests/fixtures/tui/route-keys.txt index 571fc7b59..7e0713cf4 100644 --- a/tests/fixtures/tui/route-keys.txt +++ b/tests/fixtures/tui/route-keys.txt @@ -1348,3 +1348,57 @@ Enter Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + Enter Install Esc Back o Options +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + Enter Install Esc Back o Options +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + Enter Install Esc Back o Options ? Help diff --git a/tests/fixtures/tui/route-miyoo.txt b/tests/fixtures/tui/route-miyoo.txt index d828a7dac..96e86e306 100644 --- a/tests/fixtures/tui/route-miyoo.txt +++ b/tests/fixtures/tui/route-miyoo.txt @@ -1286,3 +1286,57 @@ A Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + A Install R2 Back L2 Options +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + A Install R2 Back L2 Options +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + A Install R2 Back L2 Options diff --git a/tests/fixtures/tui/route-muxterm.txt b/tests/fixtures/tui/route-muxterm.txt index 397254a58..47490ee63 100644 --- a/tests/fixtures/tui/route-muxterm.txt +++ b/tests/fixtures/tui/route-muxterm.txt @@ -1402,3 +1402,57 @@ Start Back +=== plan-record 40x12 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + 1-4 of 8 + Start Install B Back +=== plan-record 40x15 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: + ~/.config/retroarch/system + For nintendo-gba. + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy from an old card or a folder + Change where + Details + Options + Quit + Start Install B Back +=== plan-record 80x24 + RetroBIOS: RetroArch + + 1 file to download, 16.0 KB + BIOS folder: ~/.config/retroarch/system + For nintendo-gba. + + > Install + Same choice as on 3 Nov: yes + Choose systems + Copy the BIOS files from an old card or a folder + Change where + Details + Options + Quit + + + + + + + + + + Start Install B Back diff --git a/tests/test_data_only_refs.py b/tests/test_data_only_refs.py new file mode 100644 index 000000000..345f7d091 --- /dev/null +++ b/tests/test_data_only_refs.py @@ -0,0 +1,83 @@ +"""A files[] source_ref must cite the code that reads the file.""" + +from __future__ import annotations + +import tests # noqa: F401 offline, scratch under tmp/, the suite's own cache + +import sys +import unittest +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(REPO_ROOT / "scripts")) + +try: + import validate_schemas +except ImportError as exc: + validate_schemas = None + IMPORT_ERROR = str(exc) +else: + IMPORT_ERROR = "" + + +def _profile(ref: object) -> dict: + return {"files": [{"name": "doom.wad", "source_ref": ref}]} + + +@unittest.skipIf(validate_schemas is None, f"validate_schemas unavailable: {IMPORT_ERROR}") +class DataOnlySourceRefs(unittest.TestCase): + path = REPO_ROOT / "emulators" / "synthetic.yml" + + def errors(self, ref: object) -> list[str]: + return validate_schemas._data_only_source_refs(self.path, _profile(ref)) + + def test_a_data_table_alone_is_refused(self): + self.assertEqual(len(self.errors("wadsrc_extra/static/iwadinfo.txt:420, 437")), 1) + + def test_a_build_file_alone_is_refused(self): + for ref in ("pc-bios/meson.build:30", "wadsrc/CMakeLists.txt:1", + "dists/engine-data/engine_data.mk (ENABLE_KYRA)", "src/configure:1933"): + with self.subTest(ref=ref): + self.assertEqual(len(self.errors(ref)), 1) + + def test_a_file_in_the_tree_alone_is_refused(self): + self.assertEqual(len(self.errors("fMSX/ROMs/MSX.ROM")), 1) + + def test_the_table_with_its_reader_passes(self): + self.assertEqual(self.errors( + "wadsrc_extra/static/iwadinfo.txt:420, wadsrc_extra/CMakeLists.txt:1, " + "src/d_iwad.cpp:286-296, 502-531"), []) + + def test_a_role_prefix_is_read_through(self): + self.assertEqual(self.errors("source pc-bios/meson.build:30, source hw/i386/pc_piix.c:466"), []) + + def test_a_binary_with_an_address_passes(self): + for ref in ("libemucore.so 0x1a2b3c", "Fusion.exe 0x00401000", + "bigpemu FUN_006d8be0 (BootROM read)", "nethersx2 v2.2n classes.dex icons/star-%d.png"): + with self.subTest(ref=ref): + self.assertEqual(self.errors(ref), []) + + def test_each_build_mode_is_judged(self): + self.assertEqual(len(self.errors({"standalone": "src/main.cpp:10", "libretro": "data/list.txt:3"})), 1) + + def test_an_excepted_profile_is_not_judged(self): + name = next(iter(validate_schemas.DATA_ONLY_REF_EXCEPTIONS)) + path = REPO_ROOT / "emulators" / f"{name}.yml" + self.assertEqual(validate_schemas._data_only_source_refs(path, _profile("history.txt:38")), []) + + def test_every_exception_names_a_profile_and_a_reason(self): + for name, reason in validate_schemas.DATA_ONLY_REF_EXCEPTIONS.items(): + with self.subTest(profile=name): + self.assertTrue((REPO_ROOT / "emulators" / f"{name}.yml").is_file()) + self.assertTrue(reason.strip()) + + def test_the_profiles_cite_their_readers(self): + errors: list[str] = [] + for path in sorted((REPO_ROOT / "emulators").glob("*.yml")): + errors.extend(validate_schemas._data_only_source_refs( + path, validate_schemas._load_source(path))) + self.assertEqual(errors, []) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_doc_pages.py b/tests/test_doc_pages.py index 95e17cd8f..f0b5270c8 100644 --- a/tests/test_doc_pages.py +++ b/tests/test_doc_pages.py @@ -1697,7 +1697,7 @@ class InstallerVariablesAreDocumented(unittest.TestCase): --dry-run, and no page named it or the folder it defaults to.""" # Set by the full-screen interface for the runs it starts, never by a user. - INTERNAL = {"RETROBIOS_TUI_LIST"} + INTERNAL = {"RETROBIOS_TUI_LIST", "RETROBIOS_TUI_RECORDED"} def test_every_variable_install_py_reads_is_in_the_table(self): source = (ROOT / "install.py").read_text(encoding="utf-8") diff --git a/tests/test_hash_merge.py b/tests/test_hash_merge.py index 8b63de4b3..22e63b710 100644 --- a/tests/test_hash_merge.py +++ b/tests/test_hash_merge.py @@ -488,6 +488,8 @@ class AReleaseProfileDescribesItsOwnRelease(unittest.TestCase): self.assertEqual(files["neogeo.zip"]["system"], "snk-neogeo-mvs") self.assertNotIn("system", files["newset.zip"]) self.assertEqual(files["neogeo.zip"]["source_ref"], "upstream src/mame/neogeo/neogeo.cpp:10") + # The libretro build reads /mame/bios, never the system root. + self.assertEqual(files["neogeo.zip"]["path"], "mame/bios/neogeo.zip") def test_a_set_the_release_runs_without_is_not_required(self): """recel is undumped at 0.258: the current profile's true does not apply.""" diff --git a/tests/test_install.py b/tests/test_install.py index b2a6d4734..ab31cb1df 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -6954,10 +6954,19 @@ class EventsDescribeTheRun(unittest.TestCase, _SyntheticTree): # The last transfer: every byte came over the network. self.assertEqual([e for e in events if e["event"] == "transfer"][-1], {"event": "transfer", "bytes_local": 0, "bytes_network": 245}) + record = next(e for e in events if e["event"] == "record") + # What the run placed, and its choice, the whole list: written + # right before the summary. + self.assertEqual({key: record[key] for key in ("folder", "status", "choice", "files")}, + {"folder": str(self.bios), "status": "written", + "choice": ["--all-files"], "files": 3}) + self.assertEqual(record["path"], str(self.home / install.BACKUP_DIR + / f"{self.bios.name}.install.json")) self.assertEqual([e for e in events if e["event"] not in ("progress", "transfer")], self._head("install", installer) + [ {"event": "download", "platform": "retroarch", "files": 3, "bytes": 245}, *done, + record, {"event": "summary", "mode": "install", "installed": 3, "up_to_date": 1, "pending": 0, "failed": [], "skipped": self.SKIPPED, "left_out": [], "kept": [{"folder": kept[0]["folder"], "files": 1, "bytes": 11}], @@ -7565,7 +7574,11 @@ class KeptFilesEndToEnd(unittest.TestCase, _SyntheticTree): "--no-input", "--jobs", "1", "--verbose") self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) self.assertEqual((self.bios / "b.bin").read_bytes(), self.FILES["bios/A/b.bin"]) - runs = list((self.home / install.BACKUP_DIR).iterdir()) + # The install record sits beside the run folders, a file of its own. + held = list((self.home / install.BACKUP_DIR).iterdir()) + runs = [path for path in held if path.is_dir()] + self.assertEqual(sorted(path.name for path in held if not path.is_dir()), + [f"{self.bios.name}.install.json"]) self.assertEqual(len(runs), 1) self.assertIn("Kept 1 file already there (11 B), which the collection's copies " f"replaced, in {runs[0]}", proc.stdout) @@ -7594,7 +7607,8 @@ class KeptFilesEndToEnd(unittest.TestCase, _SyntheticTree): again = _install_run(self.env, "--platform", "retroarch", "--dest", str(self.bios), "--no-input", "--jobs", "1") self.assertEqual(again.returncode, 0, again.stderr) - self.assertEqual(len(list((self.home / install.BACKUP_DIR).iterdir())), 2) + self.assertEqual(len([path for path in (self.home / install.BACKUP_DIR).iterdir() + if path.is_dir()]), 2) diff --git a/tests/test_install_journeys.py b/tests/test_install_journeys.py index ee3595afa..5d95df491 100644 --- a/tests/test_install_journeys.py +++ b/tests/test_install_journeys.py @@ -25,6 +25,7 @@ import subprocess import sys import tempfile import threading +import time import unittest from pathlib import Path @@ -41,15 +42,17 @@ ESC = "\x1b" # (keys to start the install or reach the answer, keys in all). One system # is reached through None and the filter, the other device's folder typed -# as ~/bios. +# as ~/bios. With one setup found the screen opens on its plan: one key +# fewer, and one more for another device, whose Esc goes back to the +# setups. The second run of one system takes its install record's choice. JOURNEY_KEYS = { - "first_install": (2, 3), - "card_with_games": (2, 3), - "update": (2, 3), - "one_system": (14, 15), - "one_system_again": (2, 3), - "what_is_missing": (5, 6), - "another_device": (19, 20), + "first_install": (1, 2), + "card_with_games": (1, 2), + "update": (1, 2), + "one_system": (13, 14), + "one_system_again": (1, 2), + "what_is_missing": (4, 5), + "another_device": (20, 21), } # Words each journey's screens show by default, summed over the screens it @@ -58,13 +61,15 @@ JOURNEY_KEYS = { # word: its length is the machine's. A change that adds words raises a # number here and says why. JOURNEY_WORDS = { - "first_install": 63, - "card_with_games": 106, - "update": 79, - "one_system": 193, - "one_system_again": 68, - "what_is_missing": 223, - "another_device": 230, + "first_install": 47, + "card_with_games": 87, + "update": 70, + "one_system": 179, + "one_system_again": 67, + "what_is_missing": 207, + # The plan of the setup found comes first now (33 words), the setups + # one Esc away, and the last plan names Change where (2 words). + "another_device": 265, } # Which setup? names every setup, Preview every file: lists, not prose. SCREEN_CEILING = 90 @@ -75,7 +80,9 @@ LINE_TEXT = { "card_with_games": (4, 29), "update": (5, 36), "one_system": (4, 18), - "what_is_missing": (3, 15), + # After one system installed, the check counts the install record's + # choice: one line says so, and how to count every file. + "what_is_missing": (4, 25), "another_device": (4, 18), } @@ -221,10 +228,9 @@ class Journeys(unittest.TestCase): repo = Repository(self) dest = repo.retroarch_here() term = self.start(repo) - screen = term.wait("Where to install?", timeout=40) - self.assertIn("> RetroArch", screen) - self.press(term, "\r") - term.wait("files to download", timeout=40) + # The one setup found: its plan first. + screen = term.wait("files to download", timeout=40) + self.assertIn("Change where", screen) self.press(term, "\r") started = self.keys self.assertEqual(self.finish(term), 0) @@ -241,8 +247,6 @@ class Journeys(unittest.TestCase): (card / "ROMS" / "GBA").mkdir(parents=True) (card / "ROMS" / "GBA" / "unknown.gba").write_bytes(b"not in any catalog") term = self.start(repo, env={"JOURNEY_CARD": str(card)}) - term.wait("Where to install?", timeout=40) - self.press(term, "\r") screen = term.wait("For the games on this card: yes", timeout=60) self.assertIn("For the 1 game on this card.", screen) self.press(term, "\r") @@ -265,8 +269,6 @@ class Journeys(unittest.TestCase): changed["size"] += 1 repo.write_list() term = self.start(repo) - term.wait("Where to install?", timeout=40) - self.press(term, "\r") term.wait("1 file to download", timeout=40) self.press(term, "\r") started = self.keys @@ -278,8 +280,6 @@ class Journeys(unittest.TestCase): repo = Repository(self) dest = repo.retroarch_here() term = self.start(repo) - term.wait("Where to install?", timeout=40) - self.press(term, "\r") term.wait("files to download", timeout=40) for _step in range(12): if "> Choose systems" in term.settle(): @@ -298,24 +298,25 @@ class Journeys(unittest.TestCase): self.assertEqual(self.finish(term), 0) self.counted("one_system", started, self.keys) self.assertEqual(written(dest), ["gba_bios.bin"]) - # The next release: the earlier choice is not kept, and two keys - # install the whole list. + # The next release changes its file: the plan opens on the same + # choice, read from the install record, and one key installs it. + changed = next(e for e in repo.listed["files"] if e["dest"] == "gba_bios.bin") + changed["size"] += 1 + repo.write_list() term = self.start(repo) - term.wait("Where to install?", timeout=40) - self.press(term, "\r") - term.wait("files to download", timeout=40) + screen = term.wait("1 file to download", timeout=40) + self.assertRegex(screen, r"Same choice as on \d+ [A-Z][a-z]{2}: yes") self.press(term, "\r") started = self.keys self.assertEqual(self.finish(term), 0) self.counted("one_system_again", started, self.keys) - self.assertEqual(written(dest), sorted(e["dest"] for e in repo.listed["files"])) + self.assertEqual(written(dest), ["gba_bios.bin"]) + self.assertEqual((dest / "gba_bios.bin").stat().st_size, changed["size"]) def test_what_is_missing(self): repo = Repository(self) repo.retroarch_here() term = self.start(repo) - term.wait("Where to install?", timeout=40) - self.press(term, "\r") term.wait("files to download", timeout=40) self.press(term, "o") term.wait("Each row is an option") @@ -332,6 +333,9 @@ class Journeys(unittest.TestCase): repo = Repository(self) repo.retroarch_here() term = self.start(repo) + # The plan of the one setup found first: Esc goes back to the setups. + term.wait("files to download", timeout=40) + self.press(term, ESC) term.wait("Where to install?", timeout=40) for _step in range(12): if "> Another setup or folder" in term.settle(): @@ -478,5 +482,282 @@ class LineModeJourneys(unittest.TestCase): self.run_line(repo, *base, "--check", "--verbose").stdout) +def events(proc: subprocess.CompletedProcess, kind: str | None = None) -> list[dict]: + said = [json.loads(line) for line in proc.stdout.splitlines() if line.startswith("{")] + return [event for event in said if kind is None or event["event"] == kind] + + +class InstallRecord(unittest.TestCase): + """What an install placed, recorded beside the BIOS folder, and its + choice taken by the next run when nothing on the command line chose.""" + + def setUp(self): + self.repo = Repository(self) + self.dest = self.repo.root / "retroarch" / "system" + self.record = self.dest.parent / install.BACKUP_DIR / "system.install.json" + + def run_line(self, *args: str, dest: Path | None = None) -> subprocess.CompletedProcess: + return subprocess.run( + [sys.executable, str(REPO_ROOT / "install.py"), "--platform", "retroarch", + "--dest", str(dest or self.dest), *args], + env=self.repo.env, capture_output=True, text=True, timeout=120, check=False, + stdin=subprocess.DEVNULL) + + def dests(self, proc: subprocess.CompletedProcess) -> list[str]: + return sorted(event["dest"] for event in events(proc, "file")) + + def everything(self) -> list[str]: + return sorted(entry["dest"] for entry in self.repo.listed["files"]) + + def test_the_record_holds_each_file_written_and_its_hash(self): + proc = self.run_line("--system", "nintendo-gba", "--yes", "--events") + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + said = events(proc, "record") + self.assertEqual([event["status"] for event in said], ["written"]) + self.assertEqual(said[0]["choice"], ["--system", "nintendo-gba"]) + self.assertEqual((said[0]["path"], said[0]["files"]), (str(self.record), 1)) + # Before the summary, its keys those of EVENT_KEYS. + kinds = [event["event"] for event in events(proc)] + self.assertEqual(kinds.index("record") + 1, kinds.index("summary")) + self.assertEqual(list(said[0])[1:], list(install.EVENT_KEYS["record"])) + kept = json.loads(self.record.read_text(encoding="utf-8")) + files = kept["setups"]["retroarch"]["files"] + self.assertEqual([item["dest"] for item in files], ["gba_bios.bin"]) + self.assertEqual(files[0]["sha1"], hashlib.sha1( + (self.dest / "gba_bios.bin").read_bytes()).hexdigest()) + self.assertEqual((files[0]["from"], files[0]["root"]), ("download", "")) + self.assertEqual(kept["folder"], str(self.dest)) + # Nothing of it in the BIOS folder, which some cores read whole. + self.assertEqual(written(self.dest), ["gba_bios.bin"]) + + def test_the_next_run_takes_the_recorded_choice(self): + self.run_line("--system", "nintendo-gba", "--yes") + (self.dest / "gba_bios.bin").unlink() + proc = self.run_line("--yes", "--events") + self.assertEqual(proc.returncode, 0, proc.stderr) + kinds = [event["event"] for event in events(proc)] + self.assertLess(kinds.index("record"), kinds.index("choices")) + applied = events(proc, "record")[0] + self.assertEqual((applied["status"], applied["choice"]), + ("applied", ["--system", "nintendo-gba"])) + self.assertEqual(self.dests(proc), ["gba_bios.bin"]) + self.assertEqual(written(self.dest), ["gba_bios.bin"]) + (self.dest / "gba_bios.bin").unlink() + proc = self.run_line("--yes") + self.assertRegex(proc.stdout, r"Installing 1 file \(.*\) for RetroArch, same choice " + r"as on \d+ [A-Z][a-z]{2}\.") + + def test_the_command_line_replaces_the_record(self): + self.run_line("--system", "nintendo-gba", "--yes") + self.assertEqual(self.dests(self.run_line("--system", "sega-megadrive", "--check", + "--events")), + sorted(e["dest"] for e in self.repo.listed["files"] + if "sega-megadrive" in e.get("systems", []))) + whole = self.run_line("--all-files", "--check", "--events") + self.assertEqual(self.dests(whole), self.everything()) + self.assertEqual(events(whole, "record"), []) + + def test_a_record_that_cannot_be_read_is_said_once_and_ignored(self): + self.dest.mkdir(parents=True) + self.record.parent.mkdir() + self.record.write_text("{not json", encoding="utf-8") + proc = self.run_line("--yes", "--events") + self.assertEqual(proc.returncode, 0, proc.stderr) + said = events(proc, "record") + self.assertEqual([event["status"] for event in said], ["unreadable", "written"]) + self.assertIn("is damaged, so it is ignored.", said[0]["message"]) + # Said once to a person (standard error under --events), once as an event. + self.assertEqual(proc.stderr.count("so it is ignored"), 1) + self.assertEqual(self.dests(proc), self.everything()) + # Replaced by a record that reads. + self.assertEqual(json.loads(self.record.read_text())["schema"], install.RECORD_SCHEMA) + for text in ('{"schema": 99, "setups": {}}', '{"schema": 1, "setups": {"retroarch": 3}}', + "\xff\xfe"): + with self.subTest(record=text): + self.record.write_bytes(text.encode("latin-1")) + proc = self.run_line("--check", "--events") + self.assertEqual(events(proc, "record")[0]["status"], "unreadable") + self.assertEqual(self.dests(proc), self.everything()) + + def test_a_record_for_another_folder_is_not_applied(self): + self.run_line("--system", "nintendo-gba", "--yes") + # A sibling folder shares the holder, never the record. + other = self.dest.parent / "bios" + proc = self.run_line("--check", "--events", dest=other) + self.assertEqual(events(proc, "record"), []) + self.assertEqual(self.dests(proc), self.everything()) + # The record copied under the sibling's name still names the first. + shutil.copy(self.record, self.record.with_name("bios.install.json")) + proc = self.run_line("--check", "--events", dest=other) + self.assertEqual(events(proc, "record"), []) + self.assertEqual(self.dests(proc), self.everything()) + # The record of another setup in the same folder is not this one's. + proc = subprocess.run( + [sys.executable, str(REPO_ROOT / "install.py"), "--platform", "batocera", + "--dest", str(self.dest), "--check", "--events"], + env=self.repo.env, capture_output=True, text=True, timeout=120, check=False, + stdin=subprocess.DEVNULL) + self.assertEqual(events(proc, "record"), []) + self.assertEqual(self.dests(proc), self.everything()) + + def test_line_mode_chooses_what_the_screen_chooses(self): + """The plan's choice from the record is the same set of files on the + screen and in line mode: the screen's options, given to a run, and a + run given none.""" + self.run_line("--system", "nintendo-gba", "--yes") + (self.dest / "gba_bios.bin").unlink() + state = install.TuiState() + state.platform, state.dest = "retroarch", self.dest + install._tui_record_load(state) + self.assertTrue(install.tui_record_kept(state)) + flags = [flag if value is None else f"{flag}={value}" + for flag, value in install.tui_flags(state)] + screen = self.run_line(*flags, "--dry-run", "--events") + line = self.run_line("--dry-run", "--events") + self.assertEqual(self.dests(screen), ["gba_bios.bin"]) + self.assertEqual(self.dests(line), self.dests(screen)) + self.assertEqual(events(line, "check")[0]["bytes_needed"], + events(screen, "check")[0]["bytes_needed"]) + + +def record_text(folder: Path, choice: list[str], **setups: object) -> str: + """A record of folder whose retroarch setup chose choice.""" + setup = {"written": "2026-11-03T12:00:00Z", "list": {}, "choice": choice, + "files": [{"dest": "gba_bios.bin", "root": "", "sha1": "0" * 40, "size": 1, + "from": "download"}]} + return json.dumps({"schema": install.RECORD_SCHEMA, "installer": "x", "folder": str(folder), + "setups": {"retroarch": setup, **setups}}) + + +class RecordReview(unittest.TestCase): + """A record is data another program or a person may have written: what + it holds is checked before any of it is used or printed.""" + + setUp = InstallRecord.setUp + run_line = InstallRecord.run_line + dests = InstallRecord.dests + everything = InstallRecord.everything + + def write(self, choice: list[str], **setups: object) -> None: + self.dest.mkdir(parents=True, exist_ok=True) + self.record.parent.mkdir(exist_ok=True) + self.record.write_text(record_text(self.dest, choice, **setups), encoding="utf-8") + + def test_a_word_outside_the_choice_rejects_the_whole_record(self): + for choice in (["--system", "nintendo-gba", "--from", "/mnt/x"], + ["--manifest", "http://example.invalid/list.json"], + ["--system", "nintendo-gba", "--dest", "/etc"], + ["--system", "--yes"], ["--system", "a\nb"], ["nintendo-gba"]): + with self.subTest(choice=choice): + self.write(choice) + proc = self.run_line("--check", "--events") + said = events(proc, "record") + self.assertEqual([event["status"] for event in said], ["unreadable"], said) + self.assertEqual(self.dests(proc), self.everything()) + text = proc.stdout + proc.stderr + for word in ("/mnt/x", "example.invalid", "/etc"): + self.assertNotIn(word, text) + # The screen reads it through the same function. + state = install.TuiState() + state.platform, state.dest = "retroarch", self.dest + install._tui_record_load(state) + self.assertIsNone(state.record) + self.assertEqual(install.tui_flags(state), []) + + def test_a_recorded_games_folder_stays_beside_the_bios_folder(self): + parent = self.dest.parent + self.assertTrue(install.games_folder_kept(str(parent / "roms"), self.dest)) + self.assertTrue(install.games_folder_kept(str(parent), self.dest)) + for value in ("/etc", str(parent.parent / "other"), "roms", "\\\\server\\share", + "//server/share", ""): + with self.subTest(value=value): + self.assertFalse(install.games_folder_kept(value, self.dest)) + self.write(["--for-games", "/etc"]) + proc = self.run_line("--check", "--events") + self.assertEqual(events(proc, "record")[0]["status"], "unreadable") + self.assertEqual(self.dests(proc), self.everything()) + + def test_a_recorded_option_that_cannot_apply_is_left_out(self): + """A run nobody typed options for went on failing: the list has no + cores, no categories and no board list, and a region is unknown.""" + for choice, typed in ((["--system", "nintendo-gba", "--region", "atlantis"], + ["--region", "atlantis"]), + (["--system", "nintendo-gba", "--emulator", "nosuch"], + ["--emulator", "nosuch"]), + (["--system", "nintendo-gba", "--installed-cores"], + ["--installed-cores"]), + (["--system", "nintendo-gba", "--target", "nosuch"], + ["--target", "nosuch"]), + (["--system", "nintendo-gba", "--no-game-data"], + ["--no-game-data"])): + with self.subTest(choice=choice): + self.write(choice) + proc = self.run_line("--yes", "--events") + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(proc.stderr.count("Left out of the recorded choice"), 1, + proc.stderr) + self.assertEqual(self.dests(proc), ["gba_bios.bin"]) + # Written again without it: the next run says nothing. + kept = json.loads(self.record.read_text())["setups"]["retroarch"]["choice"] + self.assertEqual(kept, ["--system", "nintendo-gba"]) + # Typed, it is refused as before. + self.assertNotEqual(self.run_line(*typed, "--check").returncode, 0) + + def test_a_date_no_clock_can_show_is_an_unknown_day(self): + if not hasattr(time, "tzset"): + self.skipTest("no tzset") + zone = os.environ.get("TZ") + + def back() -> None: + if zone is None: + os.environ.pop("TZ", None) + else: + os.environ["TZ"] = zone + time.tzset() + + self.addCleanup(back) + for tz, written in (("UTC+5", "0001-01-01T00:00:00Z"), + ("UTC-5", "9999-12-31T23:59:59Z")): + with self.subTest(written=written): + os.environ["TZ"] = tz + time.tzset() + self.assertEqual(install.record_day({"written": written}), "") + + def test_a_record_that_is_no_file_is_never_read(self): + self.dest.mkdir(parents=True) + self.record.parent.mkdir() + os.mkfifo(self.record) + proc = self.run_line("--check", "--events") + self.assertIn("it is not a file", events(proc, "record")[0]["message"]) + self.assertEqual(self.dests(proc), self.everything()) + self.record.unlink() + with open(self.record, "wb") as handle: + handle.truncate(install.MAX_RECORD_BYTES + 1) + self.assertIn("larger than any record", install.load_record(self.dest).problem) + + def test_a_newer_record_is_left_as_it_is(self): + self.dest.mkdir(parents=True) + self.record.parent.mkdir() + newer = json.dumps({"schema": install.RECORD_SCHEMA + 1, "setups": {"x": {}}}) + self.record.write_text(newer, encoding="utf-8") + proc = self.run_line("--yes", "--events") + self.assertEqual(proc.returncode, 0, proc.stderr) + self.assertEqual([event["status"] for event in events(proc, "record")], + ["unreadable", "not_written"]) + self.assertEqual(self.record.read_text(encoding="utf-8"), newer) + self.assertEqual(proc.stderr.count("written by a newer installer"), 1) + + def test_a_bad_setup_is_dropped_and_the_others_kept(self): + good = {"written": "2026-11-03T12:00:00Z", "list": {}, "choice": ["--all-files"], + "files": []} + self.write(["--system", "nintendo-gba"], lakka=good, batocera={"choice": 3}) + path, _setup, problem = install.write_record(self.dest, "retropie", {}, ["--all-files"], + []) + self.assertEqual((path, problem), (self.record, "")) + kept = json.loads(self.record.read_text())["setups"] + self.assertEqual(sorted(kept), ["lakka", "retroarch", "retropie"]) + self.assertEqual(kept["retroarch"]["choice"], ["--system", "nintendo-gba"]) + + if __name__ == "__main__": unittest.main() diff --git a/tests/test_install_tui.py b/tests/test_install_tui.py index eae7a1ed3..e8e69cf95 100644 --- a/tests/test_install_tui.py +++ b/tests/test_install_tui.py @@ -378,6 +378,14 @@ def screen_text(lines) -> str: return re.sub(r"(?<=[/\\]) ", "", " ".join(" ".join(lines).split())) +def listed(state: install.TuiState) -> install.TuiState: + """The setups found, as Back shows them from the plan the screen opens + on when it found one setup.""" + if state.opened_on_plan and state.screen != "setup": + install.tui_update(state, Key("esc")) + return state + + def fresh_state() -> install.TuiState: state = install.TuiState(os_type="linux", home=HOME) state.setups = [("retroarch", SYSTEM_DIR, "RetroArch"), @@ -761,7 +769,9 @@ class Flow(unittest.TestCase): mock.patch.object(install, "detect_platforms", return_value=[]), \ mock.patch.object(install, "detect_frontends", return_value=[]): state, effects = install.tui_start(_args(), "linux") - self.assertEqual((state.screen, effects), ("setup", [])) + # The one setup found: its plan first, the list one Back away. + self.assertEqual((state.screen, effects), ("checking", [("fetch", "minui")])) + self.assertEqual(listed(state).screen, "setup") label = f"MinUI SD card ({card.name})" self.assertEqual(state.setups, [("minui", card, label)]) self.assertEqual([row.label for row in install.tui_rows(state)], @@ -1032,9 +1042,55 @@ def golden_states() -> dict: told = golden_states_result() told.stack.append("details") states["result-details"] = told + states["plan-record"] = record_state() return states +def record_setup(choice: list[str] | None = None) -> dict: + """A record kept on 3 November of this year: the plan says 3 Nov in + any year it runs.""" + year = time.localtime().tm_year + return {"written": f"{year}-11-03T12:00:00Z", "list": {"version": "v1", "generated": ""}, + "choice": ["--system", "nintendo-gba"] if choice is None else choice, + "files": [{"dest": "gba_bios.bin", "root": "", "sha1": "0" * 40, "size": 16384, + "from": "download"}]} + + +def record_state(setup: dict | None = None) -> install.TuiState: + """The plan of a RetroArch folder whose record kept Game Boy Advance, + its file changed by a release since, opened on the one setup found.""" + setup = record_setup() if setup is None else setup + state = fresh_state() + state.setups = state.setups[:1] + manifest = json.loads(json.dumps(MANIFEST)) + manifest["files"][2]["sha1"] = "1" * 40 + with mock.patch.object(install, "setup_record", + return_value=(setup, SYSTEM_DIR.parent / "x", "")), \ + mock.patch.object(install.Path, "exists", return_value=True), \ + mock.patch.object(install, "found_setups", + return_value=(state.setups, set())), \ + mock.patch.object(install, "detect_frontends", return_value=[]), \ + mock.patch.object(install, "_mounted_cards", return_value=[]), \ + mock.patch.object(install, "_DETECTION_REFUSED", []), \ + mock.patch.object(install.Path, "home", return_value=HOME): + state, effects = install.tui_start(_args(), "linux") + assert effects == [("fetch", "retroarch")], effects + # Drawn as the other screens are, whatever the shell running the tests. + state.home, state.pad = HOME, "both" + effects = install.tui_receive(state, ("manifest", "retroarch", manifest)) + assert effects == [("run", "check")], effects + gba = [event for event in FILES if event["dest"] == "gba_bios.bin"] + systems = [event for event in SYSTEMS if event["system"] == "nintendo-gba"] + check = {**CHECK, "files": 1, "present": 0, "missing": 1, "wrong_hash": 0, + "bytes_needed": 16384, "not_installable": 0} + for event in [*gba, *systems, check]: + install.tui_receive(state, ("event", state.run_id, event)) + with mock.patch.object(install, "_tui_folder_facts", return_value={ + "free": 50 * 1024 ** 3, "writable": True, "cores": ["pcsx_rearmed"]}): + install.tui_receive(state, ("ended", state.run_id, 1, [])) + return state + + def golden_states_result() -> install.TuiState: """The result golden_states draws, a file failed and one kept.""" result = checked_state() @@ -1075,6 +1131,132 @@ def result_states() -> dict: } +class RecordedPlan(unittest.TestCase): + """The plan of a folder with an install record: opened on the one setup + found, on the recorded choice, one press from installing it again.""" + + def row(self, state: install.TuiState, action: str) -> install.TuiRow: + return next(row for row in install.tui_rows(state) if row.action == action) + + def test_opens_on_the_plan_of_the_one_setup_found(self): + state = record_state() + self.assertTrue(state.opened_on_plan) + self.assertEqual(state.stack, ["setup", "plan"]) + self.assertEqual(install.tui_rows(state)[0].action, "install") + press(state, "end", "up", "up", "up") + self.assertEqual(install.tui_rows(state)[state.focus["plan"]].label, "Change where") + press(state, "enter") + self.assertEqual(state.screen, "setup") + + def test_the_notes_of_the_setups_screen_are_on_the_plan(self): + """Opened on the plan, the ES-DE note and the setup's label, which + only the setups screen showed, were never seen.""" + setups = fresh_state().setups[:1] + with mock.patch.object(install, "found_setups", return_value=(setups, set())), \ + mock.patch.object(install, "detect_frontends", return_value=["esde"]), \ + mock.patch.object(install, "_mounted_cards", return_value=[]), \ + mock.patch.object(install, "_DETECTION_REFUSED", []), \ + mock.patch.object(install.Path, "exists", return_value=True): + state, _effects = install.tui_start(_args(), "linux") + self.assertTrue(state.opened_on_plan) + install.tui_receive(state, ("manifest", "retroarch", MANIFEST)) + for event in [*FILES, *SYSTEMS, CHECK]: + install.tui_receive(state, ("event", state.run_id, event)) + with mock.patch.object(install, "_tui_folder_facts", return_value={ + "free": 50 * 1024 ** 3, "writable": True}): + install.tui_receive(state, ("ended", state.run_id, 1, [])) + state.pad = "both" + plan = screen_text(install.tui_view(state, 80, 24)) + self.assertIn("1 note on this machine: Details.", plan) + self.assertNotIn(install.TUI_ESDE_NOTE, plan) + # The plan's budget, plus the note line (6 words) and Change where (2). + self.assertLessEqual(screen_words(install.tui_view(state, 80, 24)), + SCREEN_WORDS["plan"][2] + 8) + state.focus["plan"] = [row.action for row in install.tui_rows(state)].index("details") + press(state, "enter") + details = screen_text(install.tui_view(state, 120, 40)) + self.assertIn(screen_text([install.TUI_ESDE_NOTE]), details) + self.assertIn("Found here: RetroArch.", details) + + def test_several_setups_open_the_list(self): + with mock.patch.object(install, "found_setups", return_value=( + fresh_state().setups, set())), \ + mock.patch.object(install, "detect_frontends", return_value=[]), \ + mock.patch.object(install, "_mounted_cards", return_value=[]), \ + mock.patch.object(install, "_DETECTION_REFUSED", []): + state, effects = install.tui_start(_args(), "linux") + self.assertEqual((state.screen, effects, state.opened_on_plan), ("setup", [], False)) + + def test_one_press_installs_the_recorded_choice(self): + state = record_state() + self.assertEqual(self.row(state, "record").label, "Same choice as on 3 Nov: yes") + self.assertIn("For nintendo-gba.", screen_text( + install.tui_view(state, 80, 24))) + self.assertEqual(press(state, "enter"), [("run", "install")]) + argv = install.tui_argv(state, "install", "py", "install.py") + self.assertIn("--system=nintendo-gba", argv) + self.assertNotIn("--all-files", argv) + + def test_no_takes_the_whole_list_and_yes_brings_it_back(self): + state = record_state() + state.focus["plan"] = install.tui_rows(state).index(self.row(state, "record")) + with mock.patch.object(install, "games_probe", return_value=None): + effects = press(state, "enter") + self.assertEqual(effects, [("run", "check")]) + flags = install.tui_flags(state) + self.assertIn(("--all-files", None), flags) + self.assertFalse([flag for flag in flags if flag[0] == "--system"]) + self.assertFalse(install.tui_record_kept(state)) + for event in [*FILES, *SYSTEMS, CHECK]: + install.tui_receive(state, ("event", state.run_id, event)) + with mock.patch.object(install, "_tui_folder_facts", return_value={ + "free": 50 * 1024 ** 3, "writable": True}): + install.tui_receive(state, ("ended", state.run_id, 1, [])) + self.assertEqual(self.row(state, "record").label, "Same choice as on 3 Nov: no") + self.assertEqual(install.tui_rows(state)[state.focus["plan"]].action, "record") + self.assertEqual(press(state, "enter"), [("run", "check")]) + self.assertIn(("--system", "nintendo-gba"), install.tui_flags(state)) + self.assertTrue(install.tui_record_kept(state)) + + def test_the_command_line_choice_wins(self): + with mock.patch.object(install, "setup_record", + return_value=(record_setup(), SYSTEM_DIR, "")), \ + mock.patch.object(install.Path, "exists", return_value=True): + state, _effects = install.tui_start( + _args(platform="retroarch", dest=str(SYSTEM_DIR), system=["sony-playstation"]), + "linux", detect=False) + self.assertEqual(install._tui_system_flags(state), [("--system", "sony-playstation")]) + self.assertFalse(install.tui_record_kept(state)) + self.assertEqual(install._record_rows(state), []) + + def test_a_record_that_cannot_be_read_is_said_once(self): + problem = "The install record /x/system.install.json is damaged" + install._RECORD_SAID.discard("/x/system.install.json") + with mock.patch.object(install, "setup_record", + return_value=(None, Path("/x/system.install.json"), problem)), \ + mock.patch.object(install.Path, "exists", return_value=True): + state, _effects = install.tui_start( + _args(platform="retroarch", dest=str(SYSTEM_DIR)), "linux", detect=False) + self.assertEqual(str(state.status), f"{problem}, so it is ignored.") + state.status, state.record_for = "", None + install._tui_record_load(state) + self.assertEqual(state.status, "") + self.assertIsNone(state.record) + self.assertNotIn("--all-files", str(install.tui_flags(state))) + + def test_the_install_row_says_the_size_the_headline_says(self): + """14930 files to download, 6.8 GB stood above Install 6.6 GB: the + data files counted in one, the copies in the other.""" + big = 2 * 1024 ** 3 + state = checked_state() + state.files[0] = {**state.files[0], "size": big} + state.check = {**state.check, "bytes_needed": state.check["bytes_needed"] + big, + "data_missing": 3, "data_bytes": 300 * 1024 ** 2} + headline = str(install._plan_lines(state.check, state.dest, state)[0]) + size = headline.rsplit(", ", 1)[1] + self.assertEqual(install.tui_rows(state)[0].label, f"Install {size}") + + class Views(unittest.TestCase): """Every screen as text, at the sizes a handheld and a desktop show.""" @@ -2387,6 +2569,9 @@ class CardsSpaceAndConfirm(unittest.TestCase): mock.patch.object(install, "detect_platforms", return_value=[]), \ mock.patch.object(install, "detect_frontends", return_value=[]): state, effects = install.tui_start(_args(), "linux") + self.assertEqual(effects, [("fetch", "retroarch")]) + self.assertEqual(state.dest, root / "MUOS" / "bios") + listed(state) label = f"muOS SD card ({root.name})" self.assertEqual(state.setups, [("retroarch", root / "MUOS" / "bios", label)]) text = screen_text(install.tui_view(state, 120, 40)) @@ -4527,6 +4712,14 @@ class WindowsHasNoPosixModules(unittest.TestCase): # --- End to end, on a pseudo-terminal ------------------------------------- +def on_setups(term: Pty) -> str: + """The setups found, one Back from the plan the screen opens on when it + found one setup: the first screen as it was before.""" + term.wait("> Install") + term.send("\x1b") + return term.wait("Where to install?") + + class Pty: """install.py on a pseudo-terminal, its screen read back through pyte.""" @@ -4925,14 +5118,13 @@ class EndToEnd(unittest.TestCase): self.assertAppOnCard(root, "KNULLI") self.assertIn("--add-app", term.after()) - def test_three_presses_install_everything(self): + def test_two_presses_install_everything(self): repo = self.repo() term = self.start() - screen = term.wait("Where to install?") - self.assertIn("> RetroArch", screen) - term.send("\r") + # The one setup found here: its plan first. screen = term.wait("files to download") self.assertIn("5 files to download, 30 B", screen) + self.assertIn("Change where", screen) self.assertIn("> Install", screen) term.send("\r") term.wait("5 files installed.") @@ -4979,8 +5171,6 @@ class EndToEnd(unittest.TestCase): self.assertIn("6 files installed", proc.stdout) else: term = self.start() - term.wait("Where to install?") - term.send("\r") screen = term.wait("files to download") self.assertIn("6 files to download", screen) # The second folder the run writes to, named on the @@ -5159,7 +5349,7 @@ class EndToEnd(unittest.TestCase): def test_ctrl_c_on_the_first_screen(self): self.repo() term = self.start() - term.wait("Where to install?") + term.wait("> Install") term.send("\x03") self.assertEqual(term.close(), 130) self.assertIn(b"\x1b[?2004l\x1b[0m\x1b[?25h\x1b[?1049l", term.raw) @@ -5169,7 +5359,7 @@ class EndToEnd(unittest.TestCase): self.repo() term = self.start() - term.wait("Where to install?") + term.wait("> Install") mark = len(term.raw) os.kill(term.pid, signal.SIGTSTP) end = time.monotonic() + 10 @@ -5182,7 +5372,7 @@ class EndToEnd(unittest.TestCase): self.assertIn(b"\x1b[?25h\x1b[?1049l", term.raw[mark:]) mark = len(term.raw) os.kill(term.pid, signal.SIGCONT) - term.wait("A/Enter Continue") + term.wait("A/Enter Install") end = time.monotonic() + 5 while b"\x1b[?1049h" not in term.raw[mark:] and time.monotonic() < end: term._pump(0.05) @@ -5194,11 +5384,11 @@ class EndToEnd(unittest.TestCase): """The terminal gone, the farewell has nowhere to go: the code is 129 (SIGHUP), not 120 from the flush failing at exit.""" self.repo() - for screen_name, keys_first in (("Where to install?", ()), - ("files to download", ("\r",))): + for screen_name, keys_first in (("files to download", ()), + ("Where to install?", ("\x1b",))): with self.subTest(screen=screen_name): term = self.start() - term.wait("Where to install?") + term.wait("files to download") term.send(*keys_first) term.wait(screen_name) os.close(term.fd) @@ -5247,12 +5437,12 @@ class EndToEnd(unittest.TestCase): self.repo() self.env[install.TUI_IDLE_ENV] = "1" term = self.start() - term.wait("Where to install?") + term.wait("> Install") self.assertEqual(term.close(), install.QUIT_CODE) self.assertIn("No button pressed, closing.", term.after()) # A key pressed, the screen stays: the person is there. term = self.start() - term.wait("Where to install?") + term.wait("> Install") term.send(DOWN) end = time.monotonic() + 2.5 while time.monotonic() < end: @@ -5282,7 +5472,7 @@ class EndToEnd(unittest.TestCase): with self.subTest(env=env): self.env.update(env) term = self.start(cols=40, rows=12) - term.wait("Where to install?") + on_setups(term) screen = term.wait(bar) self.assertEqual(screen.splitlines()[-1].strip(), bar) term.send("q") @@ -5293,7 +5483,7 @@ class EndToEnd(unittest.TestCase): def test_resize_redraws(self): self.repo() term = self.start(cols=40, rows=15) - term.wait("Where to install?") + on_setups(term) term.resize(100, 30) term.send(DOWN) screen = term.wait("> Another setup or folder") @@ -5379,7 +5569,7 @@ class EndToEnd(unittest.TestCase): self.env.pop("NO_COLOR", None) self.env.update({"TERM": "xterm", **env}) term = self.start() - screen = term.wait("Where to install?") + screen = on_setups(term) self.assertIn("> RetroArch", screen) screens[name] = screen # pyte reads the colours drawn: RetroBIOS in the accent. @@ -5612,7 +5802,7 @@ class TheTerminalComesBack(unittest.TestCase): def ended(self, how) -> Pty: self.repo() term = self.start() - term.wait("Where to install?") + term.wait("> Install") # Every way out below starts with the clicks asked for, written # right after the frame. term.settle() @@ -5672,7 +5862,7 @@ class TheTerminalComesBack(unittest.TestCase): job control it stops, and fg brings the screen back.""" term = self.shell() self.typed(term, f"{shlex.quote(sys.executable)} {REPO_ROOT / 'install.py'} --tui") - term.wait("Where to install?") + term.wait("> Install") mark = len(term.raw) term.send("\x1a") end = time.monotonic() + 10 @@ -5687,7 +5877,7 @@ class TheTerminalComesBack(unittest.TestCase): while b"\x1b[?1049h" not in term.raw[mark:] and time.monotonic() < end: term._pump(0.05) self.assertIn(b"\x1b[?1049h", term.raw[mark:]) - term.wait("Where to install?") + term.wait("> Install") self.assertFalse(termios.tcgetattr(term.fd)[3] & termios.ECHO) # The clicks come back with the screen. term.settle() @@ -5709,7 +5899,7 @@ class TheTerminalComesBack(unittest.TestCase): term = Pty(["--tui"], self.env, program=program) self.addCleanup(lambda term=term: term.status is None and os.killpg(term.pid, 9)) - term.wait("Where to install?") + term.wait("> Install") term.send("\x1a") screen = term.wait("Ctrl-Z is ignored") self.assertIn("no shell started this installer", " ".join(screen.split())) @@ -5765,8 +5955,6 @@ class TheTerminalComesBack(unittest.TestCase): self.addCleanup(lambda: term.status is None and os.killpg(term.pid, 9)) term.wait("PROMPT$") self.typed(term, f"sh {REPO_ROOT / 'install.sh'} --jobs 1") - term.wait("Where to install?") - term.send("\r") term.wait("to download") term.send("\r") term.wait("Installing") @@ -10803,7 +10991,7 @@ class MouseOnAPty(unittest.TestCase): def test_taps_choose_a_row_and_press_the_bar(self): self.repo() term = self.start() - term.wait("Where to install?") + on_setups(term) term.settle() self.assertIn(install._MOUSE_ON.encode(), term.raw) row = self.line_of(term, "Another setup") @@ -11455,8 +11643,6 @@ class TapsOnAPty(unittest.TestCase): def test_taps_on_systems_tick_and_write_nothing(self): repo = self.repo() term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("> Install") row = self.line_of(term, "Choose systems") self.click(term, 20, row) @@ -11482,8 +11668,6 @@ class TapsOnAPty(unittest.TestCase): def test_the_result_is_left_by_a_tap_on_exit(self): self.repo() term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("files to download") row = self.line_of(term, "> Install") self.click(term, 20, row) @@ -12365,8 +12549,6 @@ class TapsOnAPtySeeFirst(unittest.TestCase): def test_one_tap_on_the_bar_install_installs_nothing(self): repo = self.repo() term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("> Install") term.settle() self.click(term, *self.bar_entry(term, "Install")) @@ -12380,7 +12562,7 @@ class TapsOnAPtySeeFirst(unittest.TestCase): def test_a_double_tap_on_continue_neither_quits_nor_installs(self): repo = self.repo() term = self.start() - term.wait("Where to install?") + on_setups(term) term.settle() col, line = self.bar_entry(term, "Continue") report = sgr(col + 1, line + 1) + sgr(col + 1, line + 1, release=True) @@ -12402,7 +12584,7 @@ class TapsOnAPtySeeFirst(unittest.TestCase): with self.subTest(gap=gap): repo = self.repo() term = self.start() - term.wait("Where to install?") + on_setups(term) term.settle() time.sleep(install.TUI_TAP_SETTLE) col, line = self.bar_entry(term, "Continue") @@ -12422,8 +12604,6 @@ class TapsOnAPtySeeFirst(unittest.TestCase): def test_continue_then_install_in_one_cell_stops_on_confirm(self): repo = self.repo() term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("> Install") row = self.line_of(term, "Choose systems") self.click(term, 20, row) @@ -12465,8 +12645,6 @@ class TapsOnAPtySeeFirst(unittest.TestCase): repo = self.repo(GameDataRepository) term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("> Install") for _step in range(8): if "> Choose systems" in term.settle(): @@ -12508,8 +12686,6 @@ class TapsOnAPtySeeFirst(unittest.TestCase): def test_two_taps_on_a_region_untick_it_where_it_was(self): self.repo() term = self.start() - term.wait("Where to install?") - term.send("\r") term.wait("> Install") term.send("o") term.wait("Preferred regions") @@ -12662,8 +12838,10 @@ class ChoiceStateInBothModes(unittest.TestCase): mock.patch.object(install, "detect_frontends", return_value=[]), \ mock.patch.object(install.Path, "home", return_value=home): state, _effects = install.tui_start(_args(), "linux") - text = self.screen(state) - # Named on the first screen, its plan one Enter away. + # Its plan first, the setups one Back away. + self.assertEqual(state.dest, card / "bios") + text = self.screen(listed(state)) + # Named on the setups, its plan one Enter away. self.assertIn(f"> ArkOS SD card ({name}", text) self.assertNotIn("Nothing was found here", text) install.tui_update(state, Key("enter")) @@ -12977,7 +13155,7 @@ class DriveIsACardByItsFiles(unittest.TestCase): mock.patch.object(install, "detect_frontends", return_value=[]), \ mock.patch.object(install.Path, "home", return_value=self.root / "home"): state, _effects = install.tui_start(_args(), "linux") - return state + return listed(state) def folder_screen(self, mounts: list) -> tuple[install.TuiState, str, list]: """RetroArch chosen on the first screen: (state, Which folder? at @@ -13176,8 +13354,6 @@ class TheSettleRunsFromTheFrameShown(unittest.TestCase): env = {**self.env, "SLOW": "0.5"} term = Pty([], env, 80, 24, program=[sys.executable, str(wrapper)]) self.addCleanup(lambda: term.status is None and os.kill(term.pid, 9)) - term.wait("Where to install?") - term.send("\r") term.wait("> Install") term.settle() term.send("o") @@ -14949,6 +15125,10 @@ SCREEN_WORDS = { "quit": (14, 14, 12, 12), "help": (24, 26, 26, 26), "plan-games": (36, 46, 54, 54), "games": (36, 45, 44, 44), "plan-details": (30, 30, 29, 29), "result-details": (30, 30, 19, 19), + # The plan's words, plus the recorded choice by name, its row (the one + # press back to the whole list) and Change where (back to the setups, + # the plan having opened on the one found). + "plan-record": (38, 42, 42, 42), } diff --git a/tests/test_launcher_placement.py b/tests/test_launcher_placement.py index b02453c77..b8a24598c 100644 --- a/tests/test_launcher_placement.py +++ b/tests/test_launcher_placement.py @@ -851,6 +851,60 @@ class MameSearchPaths(unittest.TestCase): e.get("unplaced") == "outside_bios_folder" for e in self.sets(view) )) + def test_a_passed_search_setting_leaves_the_bundled_tree_unread(self) -> None: + # RetroBat passes -hash bios/mame/hash and -sp bios/mame/samples + # (Mame64.Generator.cs:30, 101, 106-107, 172, 177-178), RetroDECK + # writes samplepath $bios_path/mame-sa/samples (component_prepare.sh:94): + # the trees beside the executable are not read, the pack brings them. + for platform, tree, place in ( + ("retrobat", "hash/", "mame/hash/"), + ("retrobat", "floppy/", "mame/samples/floppy/"), + ("knulli", "floppy/", "mame/samples/floppy/"), + ("retrodeck", "floppy/", "mame-sa/samples/floppy/"), + ): + view = standalone_view("mame", platform) + (entry,) = [e for e in view["files"] + if e["name"] == tree and e.get("mode") == "standalone"] + self.assertEqual(entry["standalone_path"], place, platform) + self.assertNotIn("bundled", entry, platform) + # Where no launcher passes the setting, the bundled copy is read. + view = standalone_view("mame", "emudeck") + (entry,) = [e for e in view["files"] + if e["name"] == "hash/" and e.get("mode") == "standalone"] + self.assertTrue(entry.get("bundled")) + + def test_retropie_reads_samples_below_its_roms(self) -> None: + # samplepath $romdir/mame/samples;$romdir/arcade/samples (mame.sh:135). + view = standalone_view("mame", "retropie") + (bbc,) = [e for e in view["files"] if e["name"] == "bbc.zip"] + self.assertEqual((bbc["standalone_path"], bbc.get("root")), + ("mame/samples/bbc.zip", "roms")) + (tree,) = [e for e in view["files"] + if e["name"] == "floppy/" and e.get("mode") == "standalone"] + self.assertEqual((tree["standalone_path"], tree.get("root")), + ("mame/samples/floppy/", "roms")) + self.assertNotIn("bundled", tree) + + def test_batocera_keeps_the_sets_at_the_root_and_samples_in_bios_mame(self) -> None: + # -rompath ;/userdata/bios/mame;/userdata/bios and + # -samplepath /userdata/bios/mame/samples (mameGenerator.py:129-142). + view = standalone_view("mame", "batocera") + self.assertTrue(all(e["standalone_path"] == e["name"] for e in self.sets(view))) + (bbc,) = [e for e in view["files"] if e["name"] == "bbc.zip"] + self.assertEqual(bbc["standalone_path"], "mame/samples/bbc.zip") + + def test_a_moved_tree_is_found_by_its_layout_path(self) -> None: + from common import expand_directory_entries, load_database + + db = load_database(str(REPO_ROOT / "database.json")) + view = standalone_view("mame", "retrodeck") + (tree,) = [e for e in view["files"] + if e["name"] == "floppy/" and e.get("mode") == "standalone"] + members = expand_directory_entries([tree], db, standalone=True) + self.assertEqual(len(members), 19) + for member in members: + self.assertTrue(member["path"].startswith("mame-sa/samples/floppy/")) + def test_psxmame_reads_bios_psxmame_bios(self) -> None: # -rompath bios/psxmame/bios; (PSXMame.Generator.cs:38-48). view = standalone_view("psxmame", "retrobat") @@ -859,6 +913,35 @@ class MameSearchPaths(unittest.TestCase): self.assertEqual(entry["standalone_path"], "psxmame/bios/" + entry["name"]) +class LibretroMameSetsInMameBios(unittest.TestCase): + """libretro/mame searches the content folder, then /mame/bios and + /mame/roms, never the system folder itself + (src/osd/libretro/libretro-internal/retro_init.cpp:580-597).""" + + def test_every_libretro_mame_set_is_read_in_mame_bios(self) -> None: + profiles = load_emulator_profiles(str(REPO_ROOT / "emulators")) + for key in ("mame", "mame0258", "mame0278", "mamearcade", "mamemess"): + sets = [f for f in profiles[key]["files"] if f.get("category") == "bios_zip" + and f.get("mode") != "standalone" and f["name"] != "bbc.zip"] + self.assertTrue(sets, key) + for entry in sets: + self.assertEqual(entry.get("path"), "mame/bios/" + entry["name"], key) + + def test_the_standalone_build_keeps_its_rompath_layout(self) -> None: + profile = load_emulator_profiles(str(REPO_ROOT / "emulators"))["mame"] + for entry in profile["files"]: + if str(entry.get("path", "")).startswith("mame/bios/"): + self.assertEqual(entry.get("standalone_path"), entry["name"]) + + def test_retrobat_lays_out_both_builds(self) -> None: + # es_systems.cfg offers the libretro core mame and the standalone + # mame64, two names of one profile. + profile = load_emulator_profiles(str(REPO_ROOT / "emulators"))["mame"] + config = load_platform_config("retrobat", str(REPO_ROOT / "platforms")) + builds = sorted(s for _v, s in platform_layouts("mame", profile, standalone_set(config))) + self.assertEqual(builds, [False, True]) + + class GzdoomOnRetroDECK(unittest.TestCase): """RetroDECK writes RETRODECKROMSDIR/doom into [IWADSearch.Directories] (gzdoom.ini:9, component_prepare.sh:27).""" @@ -883,13 +966,38 @@ class AdvanceMameOnEmuELEC(unittest.TestCase): """advmame.rc sets dir_rom /storage/roms/mame, /storage/roms/arcade for the arcade system (advmame.rc:11, advmame.sh:26-30).""" - def test_the_sets_land_in_roms_mame(self) -> None: + def test_the_sets_land_in_roms_mame_and_roms_arcade(self) -> None: + # Started for arcade it reads roms/arcade, for mame and cps1-3 + # roms/mame (es_systems.json, advmame.sh:26-30): an arcade set is + # read in both. view = standalone_view("advancemame", "emuelec") sets = [e for e in view["files"] if e.get("category") == "bios_zip"] - self.assertEqual(len(sets), 29) + self.assertEqual(len(sets), 58) + places: dict[str, set[str]] = {} for entry in sets: - self.assertEqual(entry["standalone_path"], "mame/" + entry["name"]) self.assertTrue(entry.get("unprefixed")) + places.setdefault(entry["name"], set()).add(entry["standalone_path"]) + self.assertEqual(len(places), 29) + for name, paths in places.items(): + self.assertEqual(paths, {"mame/" + name, "arcade/" + name}) + + def test_both_copies_are_one_file(self) -> None: + # Outside the BIOS tree the folder is no proof of content: each copy + # resolves by its layout path, so both folders hold the same file. + from common import load_database + + db = load_database(str(REPO_ROOT / "database.json")) + with redirect_stdout(io.StringIO()): + manifest = generate_manifest( + "emuelec", str(REPO_ROOT / "platforms"), db, str(REPO_ROOT / "bios"), + str(REPO_ROOT / "platforms" / "_registry.yml"), + emulators_dir=str(REPO_ROOT / "emulators"), offline=True, + ) + by_dest = {f["dest"]: f["sha1"] for f in manifest["files"]} + sets = [d.removeprefix("arcade/") for d in by_dest if d.startswith("arcade/")] + self.assertEqual(len(sets), 29) + for name in sets: + self.assertEqual(by_dest["arcade/" + name], by_dest["mame/" + name], name) def test_the_roms_folder_is_no_proof_of_content(self) -> None: # bios/Arcade/MAME/konamigv.zip is MAME 0.289's set, not AdvanceMAME's. @@ -897,7 +1005,8 @@ class AdvanceMameOnEmuELEC(unittest.TestCase): db = load_database(str(REPO_ROOT / "database.json")) view = standalone_view("advancemame", "emuelec") - (entry,) = [e for e in view["files"] if e["name"] == "konamigv.zip"] + entry = next(e for e in view["files"] + if e["name"] == "konamigv.zip" and e["standalone_path"].startswith("mame/")) moved, _status = resolve_local_file(entry, db, dest_hint=entry["standalone_path"]) plain = {k: v for k, v in entry.items() if k not in ("layout_path", "standalone_path", "unprefixed")} diff --git a/tests/test_launchers.py b/tests/test_launchers.py index c211f63ca..2921a3d2f 100644 --- a/tests/test_launchers.py +++ b/tests/test_launchers.py @@ -529,6 +529,46 @@ OPENMSX_FILEPOOL = ''' def generate(self, system, rom): file.write("filepool add -path /userdata/bios/openmsx -types system_rom -position 2\\n")''' +MAME = f"{GENERATORS}/mame/mameGenerator.py" +MAME_PATHS = f"{GENERATORS}/mame/mamePaths.py" +MAME_HEAD = """from __future__ import annotations +from ...batoceraPaths import BIOS +from .mamePaths import MAME_BIOS +class MameGenerator: + def generate(self, system, rom, playersControllers, metadata, guns, wheels, gameResolution):""" +MAME_COMMAND = """ if messMode == -1: + commandArray += [ "-rompath", f"{romDirname};{MAME_BIOS};{BIOS}" ]""" +MAME_SAMPLES = """ commandArray += [ "-samplepath", MAME_BIOS / "samples" ]""" +MAME_BOOT = """ if boot_disk: + bootDisk = f"/userdata/bios/{boot_disk}.img" + commandArray += [ bootType, bootDisk ]""" + + +class MameSearchPaths(unittest.TestCase): + """mameGenerator.py:129-142 at batocera-43.1: -rompath and -samplepath.""" + + def test_the_command_line_search_paths_are_recorded(self): + from scraper.batocera_launchers import search_paths + + cg = configgen({ + MAME: placed({1: MAME_HEAD, 129: MAME_COMMAND, 142: MAME_SAMPLES, 378: MAME_BOOT}), + MAME_PATHS: "from ...batoceraPaths import BIOS\nMAME_BIOS = BIOS / 'mame'\n", + }) + records = [r.entry() for r in search_paths(cg)] + self.assertEqual( + [(r["emulator"], r["search_dir"], r["passes_to"], r.get("depends_on_option")) + for r in records], + [ + ("mame", ";/userdata/bios/mame;/userdata/bios", + "command line -rompath", "messMode == -1"), + ("mame", "/userdata/bios/mame/samples", "command line -samplepath", None), + ], + ) + self.assertEqual(records[0]["source_ref"], f"{MAME}:129-130") + # The boot disk the command names is a file, no search path. + self.assertFalse([r for r in records if "boot_disk" in r["search_dir"]]) + + class ConfigDirectories(unittest.TestCase): """A BIOS directory written into the emulator's config, at batocera-43.1.""" diff --git a/tests/test_launchers_retropie.py b/tests/test_launchers_retropie.py index b57cc60b8..1e194179a 100644 --- a/tests/test_launchers_retropie.py +++ b/tests/test_launchers_retropie.py @@ -239,6 +239,45 @@ class LinksAndCopies(unittest.TestCase): self.assertEqual(base[0]["names"], ["hiscore.dat", "cheat.dat"]) +MAME = module("mame", """ + function configure_mame() { + local system="mame" + local temp_ini_mame="$(mktemp)" + iniConfig " " "" "$temp_ini_mame" + iniSet "rompath" "$romdir/$system;$romdir/arcade;$biosdir/$system" + iniSet "hashpath" "$md_inst/hash" + iniSet "samplepath" "$romdir/$system/samples;$romdir/arcade/samples" + iniSet "cfg_directory" "$romdir/$system/cfg" + copyDefaultConfig "$temp_ini_mame" "$md_conf_root/$system/mame.ini" + addEmulator 0 "$md_id" "arcade" "$md_inst/mame %BASENAME%" + addSystem "arcade" + } +""", 109) + + +class IniSearchLists(unittest.TestCase): + """MAME's mame.ini lists folders below $romdir (mame.sh:133-136).""" + + def test_a_list_below_the_roms_root_is_a_search_path(self): + found = [r for r in records({f"{EMULATORS}/mame.sh": MAME}, "mame") + if r["kind"] == "passes_path"] + self.assertEqual( + [(r["search_dir"], r["passes_to"].split(" in ")[0]) for r in found], + [ + ("$romdir/mame;$romdir/arcade;$biosdir/mame", "rompath"), + ("$romdir/mame/samples;$romdir/arcade/samples", "samplepath"), + ], + ) + self.assertEqual(found[1]["source_ref"], f"{EMULATORS}/mame.sh:115") + + def test_one_folder_written_to_is_no_search_path(self): + # cfg_directory is where MAME writes, $md_inst/hash a folder of the + # package itself. + found = records({f"{EMULATORS}/mame.sh": MAME}, "mame") + self.assertFalse([r for r in found if "cfg" in str(r.get("search_dir"))]) + self.assertFalse([r for r in found if "hash" in str(r.get("search_dir"))]) + + class CommandLines(unittest.TestCase): def test_sdltrs_passes_one_rom_per_machine(self): found = records({f"{EMULATORS}/sdltrs.sh": SDLTRS}, "sdltrs") diff --git a/tests/test_release_packs.py b/tests/test_release_packs.py index c70712674..87a8cb5b0 100644 --- a/tests/test_release_packs.py +++ b/tests/test_release_packs.py @@ -347,7 +347,7 @@ class TheReleaseNotesNameTheSetupsWithoutAZip(unittest.TestCase): # The installer's handheld section, which opens on every download. handheld = text.index(f"{SITE}wiki/installer/#on-a-handheld-the-retrobios-port") packs = text.index("### Full packs") - self.assertLess(text.index("### Get your BIOS"), command) + self.assertLess(text.index("### Get the BIOS files"), command) self.assertLess(command, handheld) self.assertLess(handheld, packs) self.assertLess(packs, text.index("| Platform")) diff --git a/tests/test_site_pronouns.py b/tests/test_site_pronouns.py index 7acc265a4..1914d30f8 100644 --- a/tests/test_site_pronouns.py +++ b/tests/test_site_pronouns.py @@ -186,6 +186,23 @@ class SitePronouns(unittest.TestCase): hits = _hits(files) self.assertEqual(hits, [], "\n".join(hits)) + def test_release_notes(self): + """The release page is public text too. Rendered from the committed + record, and once more with a pack in parts, its own paragraph.""" + sys.path.insert(0, str(ROOT / "scripts")) + import release_notes + import release_record + + record = release_record.load_record(ROOT / "release.json") + first = next(iter(record["packs"])) + parted = {**record, "packs": {**record["packs"], first: { + **record["packs"][first], "assets": ["a.part1of2.zip", "a.part2of2.zip"]}}} + platforms = str(ROOT / "platforms") + hits = [f"release notes:{number}: {line}" + for sample in (record, parted) + for number, line in pronouns(release_notes.render(sample, platforms, "x"))] + self.assertEqual(hits, [], "\n".join(hits)) + def test_every_allowed_quote_says_why(self): for quoted, reason in {**NAMES, **INSTALLER, **SOURCE}.items(): with self.subTest(quoted=quoted): diff --git a/wiki/first-install.md b/wiki/first-install.md index 6b41c84a4..51ac8c74e 100644 --- a/wiki/first-install.md +++ b/wiki/first-install.md @@ -68,7 +68,7 @@ On Batocera, Recalbox and similar setups, see ## 2. Check the setup it found -It opens a menu: +With one setup, it opens on **Install**. Otherwise: ``` RetroBIOS: Where to install? @@ -91,7 +91,7 @@ touch screen, tap a row twice to open it, once to tick a box. Press Enter on **Install**. **Choose systems** picks the consoles to keep. -**Game data** (only a game reads it) has its own row. +**Game data** has its own row. **Old card?** In a card reader, choose **Copy the BIOS files from an old card or a folder**, then the card. diff --git a/wiki/installer.md b/wiki/installer.md index 920f1860e..6d07fd746 100644 --- a/wiki/installer.md +++ b/wiki/installer.md @@ -169,8 +169,14 @@ Enter checks the BIOS folder when nothing can be copied. ## The full-screen interface { #the-full-screen-interface } Run at a terminal, the installer opens a full screen that a keyboard or a -controller drives. Three presses of A or Enter install everything the setup -reads: the setup found here, the plan, then the result. The plan screen says +controller drives. With one setup found here, it opens on that setup's plan, +and two presses of A or Enter install everything it reads: the plan, then the +result. **Change where** (or B) goes back to the setups, which open first when +none or several are found. What that screen would have noted (ES-DE found, the +setup's name) is under **Details**, one plan line saying so. After an install, the plan of the same folder opens +on the same choice (**Same choice as on 10 Nov: yes**, the +[install record](#the-install-record)), and **no** takes the whole list, or the +games of the card when it holds some. The plan screen says what it installs, its size and where, before anything is written. **Details** (`d`) adds the rest: how many files are in place, the free space, the files left out and why. @@ -371,6 +377,8 @@ file list is downloaded once and handed to each run. that archive in use and downloads its own copy. A file already there with other contents is moved aside first, see [Files already in the folder](#files-you-already-had). 8. Copies into standalone emulator directories, only with `--standalone-copies`. +9. Writes the [install record](#the-install-record): each file it placed, with + its SHA-1, and the choice it made. The file list names the version of the platform it was built for (Batocera 43.1, RetroBat 8.3.1). Where the system writes its own version in a file, the @@ -444,6 +452,61 @@ ones, grouped by system with the emulators that read them, and point at the emulator pages. They do not change the exit code of `--check`, since no run of the installer can fetch them. +## The install record { #the-install-record } + +An install that places files writes what it placed in a record beside the BIOS +folder: `retrobios-backup/.install.json`, in the same holder as +the [backups](#files-you-already-had). A folder with nothing writable beside it +(a drive's root) keeps it in `retrobios-backup` inside the folder. It is never +loose in the BIOS folder, which DuckStation, SwanStation and Rustation read +whole. On a card it travels with the card. + +The record is JSON, one entry per setup: + +```json +{"schema": 1, "installer": "48e57b2f26e2", + "folder": "/home/me/.config/retroarch/system", + "setups": {"retroarch": { + "written": "2026-11-10T09:48:36Z", + "list": {"version": "v1.22.2", "generated": "2026-11-10T01:52:59Z"}, + "choice": ["--system", "nintendo-gba"], + "files": [{"dest": "gba_bios.bin", "root": "", "sha1": "4176d5fc...", + "size": 16384, "from": "download"}]}}} +``` + +`files` holds each file this run and the earlier ones wrote, with the SHA-1 +checked before it was moved into place: `root` is empty for the BIOS folder, +`save` for the save directory and `data` for a data tree's member, and `from` +says `download`, `copy` (this machine, `--from`) or `pack`. A file that was +already in place is not added: the record names only what the installer wrote. +`choice` is the options of the run that decided what to install, `--all-files` +for the whole list. + +The next run for the same setup and folder takes that choice when nothing on +the command line chose: line mode installs the same systems +(`Installing 1 file (16.0 KB) for RetroArch, same choice as on 10 Nov.`), and +the full screen opens on it (**Same choice as on 10 Nov: yes**). Any option of +the choice (`--system`, `--core`, `--region`, `--for-games`, `--no-game-data`, +`--target`, `--every-board`, `--emulator`, `--installed-cores`, `--declared-only`) +replaces it, `--all-files` installs the whole list, and a run over several +setups or from a file list (`--manifest`) never reads it. `--check` and +`--dry-run` read it too, and say so. To forget it, delete the file. + +A record is read only when it is a regular file of at most 16 MiB whose +choice holds nothing but the options above and their values. A games folder +(`--for-games FOLDER`) is kept only under the folder that holds the BIOS +folder, so a record never sends the games scan to another drive or a network +share: any other folder is recorded as `--for-games` alone, the card's own +games. A record that breaks any of this, or cannot be read, is said once and +ignored, and the next install writes a new one, keeping the other setups' +entries that read. One written by a newer installer is left as it is. A +recorded option the list can no longer apply (a region, an emulator, a board, +the installed cores, game data on a list that marks none) is left out in one +line, `Left out of the recorded choice: --target (...)`, and the run goes on: +typed on the command line, the same option is refused as before. A record kept +for a folder of another name (copied or renamed with it) is not applied. With `--events` the record +gives a `record` event, see [Machine-readable events](#machine-readable-events). + ## Reading a run { #reading-a-run } @@ -1902,11 +1965,12 @@ other schemas under `api/v1/schemas/`. | `downloaded` | `dest`, `ok`, `reason`, `size`, `files_done`, `files_total`, `bytes_done`, `bytes_total` | Each finished file, downloaded or copied from where a `found` event named it. `reason` says why one failed, and is empty otherwise | | `summary` | `mode`, `installed`, `up_to_date`, `pending`, `failed`, `skipped`, `left_out`, `kept`, `interrupted` | The outcome. `pending` counts what a next run would still fetch, `failed` lists `{dest, reason}`, `skipped` lists `{reason, label, files, required}` for the files the collection cannot supply, `left_out` lists `{category, label, files, dests}` for what `--no-game-data` left out, and is empty without it. `kept` lists `{folder, files, bytes}`, one per backup folder, for the files in place the run moved aside before replacing them (with `--dry-run`, would move), and is empty when none. Not written for a listing | | `app` | `system`, `folder`, `ok`, `reason`, `dests`, `written`, `kept` | After `summary`, with `--add-app` or a yes to its question: the RetroBIOS app on the card of `system` whose root is `folder`. `dests` lists the app's files below that root, `written` the ones this run wrote (empty when each was in place), `kept` the backup folders as in `summary`. `ok` is false, with `reason`, when the card takes no app (before anything is written, code 2), when the install did not finish, or when a file could not be fetched, verified or written (code 1) | +| `record` | `platform`, `folder`, `path`, `status`, `choice`, `date`, `files`, `message` | The [install record](#the-install-record) of `folder`, kept at `path`. `status` is `applied` before `choices` when the run took its choice, nothing on the command line having chosen, `written` before `summary` once an install placed files, `unreadable` when it cannot be read (said once, ignored), or `not_written` when it could not be saved, the install itself unharmed. `choice` is the recorded options as words, `date` when it was written (UTC), `files` how many files it holds for the platform | | `end` | `code` | Last line, with the exit status the process returns (see [Exit status](#exit-status)) | -Schema 1 can gain a kind (`found` came with `--from`, `declared` with `--declared-only`, `unsearched` with the search that goes on past a closed folder, `app` with `--add-app`, `data` with the size of the data trees, `version` with the list's version), never a key of an +Schema 1 can gain a kind (`found` came with `--from`, `declared` with `--declared-only`, `unsearched` with the search that goes on past a closed folder, `app` with `--add-app`, `data` with the size of the data trees, `version` with the list's version, `record` with the install record), never a key of an existing kind: a reader skips a kind it does not know. An option refused before the run starts (`install.py: error:`, code 2) writes no event at all. A program reads a missing `end` as that case, or as a