fix: exporters match exact native formats with display names

This commit is contained in:
Abdessamad Derraz
2026-03-30 16:09:02 +02:00
parent 74269bab84
commit e2d0510f4e
8 changed files with 170 additions and 26 deletions

View File

@@ -183,6 +183,7 @@ systems:
required: true required: true
md5: 0bac0c6a50104045d902df4503a4c30b md5: 0bac0c6a50104045d902df4503a4c30b
native_id: atari800 native_id: atari800
name: Atari 800
atari-5200: atari-5200:
files: files:
- name: 5200.rom - name: 5200.rom
@@ -190,6 +191,7 @@ systems:
required: true required: true
md5: 281f20ea4320404ec820fb7ec0693b38 md5: 281f20ea4320404ec820fb7ec0693b38
native_id: atari5200 native_id: atari5200
name: Atari 5200
atari-st: atari-st:
files: files:
- name: tos.img - name: tos.img
@@ -337,6 +339,7 @@ systems:
required: true required: true
md5: e5ea0f216fb446f1c4a4f476bc5f03d4 md5: e5ea0f216fb446f1c4a4f476bc5f03d4
native_id: atarist native_id: atarist
name: Atari ST
atari-lynx: atari-lynx:
files: files:
- name: lynxboot.img - name: lynxboot.img
@@ -344,6 +347,7 @@ systems:
required: true required: true
md5: fcd403db69f54290b51035d82f835e7b md5: fcd403db69f54290b51035d82f835e7b
native_id: lynx native_id: lynx
name: Lynx
magnavox-odyssey2: magnavox-odyssey2:
files: files:
- name: o2rom.bin - name: o2rom.bin
@@ -355,6 +359,7 @@ systems:
required: true required: true
md5: f1071cdb0b6b10dde94d3bc8a6146387 md5: f1071cdb0b6b10dde94d3bc8a6146387
native_id: odyssey2 native_id: odyssey2
name: Odyssey 2
videopacplus: videopacplus:
files: files:
- name: g7400.bin - name: g7400.bin
@@ -366,6 +371,7 @@ systems:
required: true required: true
md5: 279008e4a0db2dc5f1c048853b033828 md5: 279008e4a0db2dc5f1c048853b033828
native_id: videopacplus native_id: videopacplus
name: Videopac+ G7400
mattel-intellivision: mattel-intellivision:
files: files:
- name: exec.bin - name: exec.bin
@@ -377,6 +383,7 @@ systems:
required: true required: true
md5: 0cd5946c6473e42e8e4c2137785e427f md5: 0cd5946c6473e42e8e4c2137785e427f
native_id: intellivision native_id: intellivision
name: Mattel Intellivision
nec-pc-engine: nec-pc-engine:
files: files:
- name: syscard3.pce - name: syscard3.pce
@@ -388,6 +395,7 @@ systems:
required: true required: true
md5: 38179df8f4ac870017db21ebcbf53114 md5: 38179df8f4ac870017db21ebcbf53114
native_id: pcengine native_id: pcengine
name: Supergrafx
nec-pc-fx: nec-pc-fx:
files: files:
- name: pcfx.rom - name: pcfx.rom
@@ -395,6 +403,7 @@ systems:
required: true required: true
md5: 08e36edbea28a017f79f8d4f7ff9b6d7 md5: 08e36edbea28a017f79f8d4f7ff9b6d7
native_id: pcfx native_id: pcfx
name: PC-FX
snk-neogeo: snk-neogeo:
files: files:
- name: neogeo.zip - name: neogeo.zip
@@ -402,6 +411,7 @@ systems:
required: true required: true
md5: dffb72f116d36d025068b23970a4f6df md5: dffb72f116d36d025068b23970a4f6df
native_id: neogeo native_id: neogeo
name: NeoGeo
snk-neogeo-cd: snk-neogeo-cd:
files: files:
- name: neocd_f.rom - name: neocd_f.rom
@@ -445,6 +455,7 @@ systems:
required: true required: true
md5: 08ca8b2dba6662e8024f9e789711c6fc md5: 08ca8b2dba6662e8024f9e789711c6fc
native_id: neogeocd native_id: neogeocd
name: NeoGeo CD
sharp-x68000: sharp-x68000:
files: files:
- name: iplrom.dat - name: iplrom.dat
@@ -456,6 +467,7 @@ systems:
required: true required: true
md5: cb0a5cfcf7247a7eab74bb2716260269 md5: cb0a5cfcf7247a7eab74bb2716260269
native_id: x68000 native_id: x68000
name: Sharp x68000
3do: 3do:
files: files:
- name: panafz1.bin - name: panafz1.bin
@@ -471,6 +483,7 @@ systems:
required: true required: true
md5: 8639fd5e549bd6238cfee79e3e749114 md5: 8639fd5e549bd6238cfee79e3e749114
native_id: 3do native_id: 3do
name: 3DO
sega-dreamcast: sega-dreamcast:
files: files:
- name: dc_boot.bin - name: dc_boot.bin
@@ -478,6 +491,7 @@ systems:
required: true required: true
md5: e10c53c2f8b90bab96ead2d368858623 md5: e10c53c2f8b90bab96ead2d368858623
native_id: dreamcast native_id: dreamcast
name: Dreamcast
sega-dreamcast-arcade: sega-dreamcast-arcade:
files: files:
- name: naomi.zip - name: naomi.zip
@@ -597,6 +611,7 @@ systems:
md5: 960ece0dc22a7c5ff81c812a2993e7cc md5: 960ece0dc22a7c5ff81c812a2993e7cc
zipped_file: x76f100_eeprom.bin zipped_file: x76f100_eeprom.bin
native_id: naomi native_id: naomi
name: Naomi 2
sega-mega-cd: sega-mega-cd:
files: files:
- name: bios_CD_E.bin - name: bios_CD_E.bin
@@ -612,6 +627,7 @@ systems:
required: true required: true
md5: 278a9397d192149e84e820ac621a8edd md5: 278a9397d192149e84e820ac621a8edd
native_id: segacd native_id: segacd
name: Sega CD
megadrive-msu: megadrive-msu:
files: files:
- name: bios_CD_E.bin - name: bios_CD_E.bin
@@ -627,6 +643,7 @@ systems:
required: true required: true
md5: 278a9397d192149e84e820ac621a8edd md5: 278a9397d192149e84e820ac621a8edd
native_id: megadrive-msu native_id: megadrive-msu
name: MSU-MD
sega-saturn: sega-saturn:
files: files:
- name: sega_101.bin - name: sega_101.bin
@@ -650,6 +667,7 @@ systems:
required: true required: true
md5: af5828fdff51384f99b3c4926be27762 md5: af5828fdff51384f99b3c4926be27762
native_id: saturn native_id: saturn
name: Sega Saturn
sony-playstation: sony-playstation:
files: files:
- name: psxonpsp660.bin - name: psxonpsp660.bin
@@ -681,6 +699,7 @@ systems:
required: true required: true
md5: 1e68c231d0896b7eadcad1d7d8e76129 md5: 1e68c231d0896b7eadcad1d7d8e76129
native_id: psx native_id: psx
name: PSX
sony-playstation-2: sony-playstation-2:
files: files:
- name: ps2-0230a-20080220.bin - name: ps2-0230a-20080220.bin
@@ -688,6 +707,7 @@ systems:
required: true required: true
md5: 21038400dc633070a78ad53090c53017 md5: 21038400dc633070a78ad53090c53017
native_id: ps2 native_id: ps2
name: PS2
sony-playstation-3: sony-playstation-3:
files: files:
- name: PS3UPDAT.PUP - name: PS3UPDAT.PUP
@@ -695,6 +715,7 @@ systems:
required: true required: true
md5: 05fe32f5dc8c78acbcd84d36ee7fdc5b md5: 05fe32f5dc8c78acbcd84d36ee7fdc5b
native_id: ps3 native_id: ps3
name: PS3
nintendo-fds: nintendo-fds:
files: files:
- name: disksys.rom - name: disksys.rom
@@ -702,6 +723,7 @@ systems:
required: true required: true
md5: ca30b50f880eb660a320674ed365ef7a md5: ca30b50f880eb660a320674ed365ef7a
native_id: fds native_id: fds
name: Nintendo Family Computer Disk System
nintendo-ds: nintendo-ds:
files: files:
- name: firmware.bin - name: firmware.bin
@@ -730,6 +752,7 @@ systems:
destination: dsi_nand.bin destination: dsi_nand.bin
required: true required: true
native_id: nds native_id: nds
name: Nintendo DS
nintendo-gba: nintendo-gba:
files: files:
- name: gba_bios.bin - name: gba_bios.bin
@@ -749,6 +772,7 @@ systems:
required: true required: true
md5: d574d4f9c12f305074798f54c091a8b4 md5: d574d4f9c12f305074798f54c091a8b4
native_id: gba native_id: gba
name: Nintendo Gameboy Advance
nintendo-satellaview: nintendo-satellaview:
files: files:
- name: BS-X.bin - name: BS-X.bin
@@ -756,6 +780,7 @@ systems:
required: true required: true
md5: 96cf17bf589fcbfa6f8de2dc84f19fa2 md5: 96cf17bf589fcbfa6f8de2dc84f19fa2
native_id: satellaview native_id: satellaview
name: Satellaview
sufami: sufami:
files: files:
- name: STBIOS.bin - name: STBIOS.bin
@@ -763,6 +788,7 @@ systems:
required: true required: true
md5: d3a44ba7d42a74d3ac58cb9c14c6a5ca md5: d3a44ba7d42a74d3ac58cb9c14c6a5ca
native_id: sufami native_id: sufami
name: Sufami
nintendo-sgb: nintendo-sgb:
files: files:
- name: sgb_boot.bin - name: sgb_boot.bin
@@ -782,6 +808,7 @@ systems:
required: true required: true
md5: 8ecd73eb4edf7ed7e81aef1be80031d5 md5: 8ecd73eb4edf7ed7e81aef1be80031d5
native_id: sgb native_id: sgb
name: Super Game Boy
microsoft-msx: microsoft-msx:
files: files:
- name: MSX.ROM - name: MSX.ROM
@@ -861,6 +888,7 @@ systems:
required: true required: true
md5: 42af93619160ef2116416f74a6cb12f2 md5: 42af93619160ef2116416f74a6cb12f2
native_id: msx native_id: msx
name: MSX-Turbo
xbox: xbox:
files: files:
- name: mcpx_1.0.bin - name: mcpx_1.0.bin
@@ -872,6 +900,7 @@ systems:
required: true required: true
md5: 39cee882148a87f93cb440b99dde3ceb md5: 39cee882148a87f93cb440b99dde3ceb
native_id: xbox native_id: xbox
name: Xbox
amiga500: amiga500:
files: files:
- name: kick33180.A500 - name: kick33180.A500
@@ -915,6 +944,7 @@ systems:
required: true required: true
md5: e40a5dfb3d017ba8779faba30cbd1c8e md5: e40a5dfb3d017ba8779faba30cbd1c8e
native_id: amiga500 native_id: amiga500
name: Amiga 500
commodore-amiga: commodore-amiga:
files: files:
- name: kick34005.A500 - name: kick34005.A500
@@ -982,6 +1012,7 @@ systems:
required: true required: true
md5: bb72565701b1b6faece07d68ea5da639 md5: bb72565701b1b6faece07d68ea5da639
native_id: amigacdtv native_id: amigacdtv
name: Amiga CD32
pc60: pc60:
files: files:
- name: pc6001.zip - name: pc6001.zip
@@ -1050,6 +1081,7 @@ systems:
md5: 9d61f3cbd47c4a281c5241c4f1d80919 md5: 9d61f3cbd47c4a281c5241c4f1d80919
zipped_file: cgrom68.64 zipped_file: cgrom68.64
native_id: pc60 native_id: pc60
name: NEC PC-6000
nec-pc-88: nec-pc-88:
files: files:
- name: N88.ROM - name: N88.ROM
@@ -1085,6 +1117,7 @@ systems:
required: true required: true
md5: fc4b76a402ba501e6ba6de4b3e8b4273 md5: fc4b76a402ba501e6ba6de4b3e8b4273
native_id: pc88 native_id: pc88
name: NEC PC-8800
nec-pc-98: nec-pc-98:
files: files:
- name: BIOS.ROM - name: BIOS.ROM
@@ -1108,6 +1141,7 @@ systems:
required: true required: true
md5: 7da1e5b7c482d4108d22a5b09631d967 md5: 7da1e5b7c482d4108d22a5b09631d967
native_id: pc98 native_id: pc98
name: NEC PC-9800
loopy: loopy:
files: files:
- name: casloopy.zip - name: casloopy.zip
@@ -1125,6 +1159,7 @@ systems:
md5: c0f1c899c9ca098663d046d60779711d md5: c0f1c899c9ca098663d046d60779711d
zipped_file: hn62434fa.lsi352 zipped_file: hn62434fa.lsi352
native_id: loopy native_id: loopy
name: Casio Loopy
fairchild-channel-f: fairchild-channel-f:
files: files:
- name: sl31253.bin - name: sl31253.bin
@@ -1140,6 +1175,7 @@ systems:
required: true required: true
md5: 95d339631d867c8f1d15a5f2ec26069d md5: 95d339631d867c8f1d15a5f2ec26069d
native_id: channelf native_id: channelf
name: Fairchild ChannelF
sharp-x1: sharp-x1:
files: files:
- name: IPLROM.X1 - name: IPLROM.X1
@@ -1151,6 +1187,7 @@ systems:
required: true required: true
md5: 56c28adcf1f3a2f87cf3d57c378013f5 md5: 56c28adcf1f3a2f87cf3d57c378013f5
native_id: x1 native_id: x1
name: Sharp X1
fmtowns: fmtowns:
files: files:
- name: FMT_DIC.ROM - name: FMT_DIC.ROM
@@ -1238,6 +1275,7 @@ systems:
md5: 1a15f6c1b58ec7e5f850118610a787a7 md5: 1a15f6c1b58ec7e5f850118610a787a7
zipped_file: mytownsux.rom zipped_file: mytownsux.rom
native_id: fmtowns native_id: fmtowns
name: Fujistu FM-Towns
gp32: gp32:
files: files:
- name: gp32.zip - name: gp32.zip
@@ -1274,6 +1312,7 @@ systems:
md5: d4af2bc352bdaf4972ea40902feda114 md5: d4af2bc352bdaf4972ea40902feda114
zipped_file: gp32mfv2.bin zipped_file: gp32mfv2.bin
native_id: gp32 native_id: gp32
name: GamePark GP32
laser310: laser310:
files: files:
- name: laser310.zip - name: laser310.zip
@@ -1290,6 +1329,7 @@ systems:
md5: f7e5d9a3eb2b57bf5f4e2a4565318a8f md5: f7e5d9a3eb2b57bf5f4e2a4565318a8f
zipped_file: vtechv21.u12 zipped_file: vtechv21.u12
native_id: laser310 native_id: laser310
name: VTech Laser 310
scv: scv:
files: files:
- name: upd7801g.s01 - name: upd7801g.s01
@@ -1297,6 +1337,7 @@ systems:
required: true required: true
md5: 635a978fd40db9a18ee44eff449fc126 md5: 635a978fd40db9a18ee44eff449fc126
native_id: scv native_id: scv
name: Super Cassette Vision
apple-iigs: apple-iigs:
files: files:
- name: ROM1 - name: ROM1
@@ -1332,6 +1373,7 @@ systems:
md5: 68ff96a624237d233e8d4c701f660dd1 md5: 68ff96a624237d233e8d4c701f660dd1
zipped_file: apple2gs.chr zipped_file: apple2gs.chr
native_id: gsplus native_id: gsplus
name: Apple IIgs
zc210: zc210:
files: files:
- name: zcdata.dat - name: zcdata.dat
@@ -1387,6 +1429,7 @@ systems:
required: true required: true
md5: e0ba7a8634b12cfee4b6760a6f89051a md5: e0ba7a8634b12cfee4b6760a6f89051a
native_id: zc210 native_id: zc210
name: Zelda Classic
apple-macintosh-ii: apple-macintosh-ii:
files: files:
- name: MacII.ROM - name: MacII.ROM
@@ -1594,6 +1637,7 @@ systems:
destination: mac755.chd destination: mac755.chd
required: true required: true
native_id: macintosh native_id: macintosh
name: Apple Macintosh
sc3000: sc3000:
files: files:
- name: sc3000.zip - name: sc3000.zip
@@ -1605,18 +1649,21 @@ systems:
md5: a6a47eae38600e41cc67e887e36e70b7 md5: a6a47eae38600e41cc67e887e36e70b7
zipped_file: sc3000.rom zipped_file: sc3000.rom
native_id: sc3000 native_id: sc3000
name: Sega SC-3000
segaai: segaai:
files: files:
- name: segaai.zip - name: segaai.zip
destination: segaai.zip destination: segaai.zip
required: true required: true
native_id: segaai native_id: segaai
name: Sega AI Computer
beena: beena:
files: files:
- name: beena.zip - name: beena.zip
destination: beena.zip destination: beena.zip
required: true required: true
native_id: beena native_id: beena
name: Advanced Pico Beena
coco: coco:
files: files:
- name: coco.zip - name: coco.zip
@@ -1678,12 +1725,14 @@ systems:
md5: 8cab28f4b7311b8df63c07bb3b59bfd5 md5: 8cab28f4b7311b8df63c07bb3b59bfd5
zipped_file: disk11.rom zipped_file: disk11.rom
native_id: coco native_id: coco
name: Tandy Color Computer
cgenie: cgenie:
files: files:
- name: cgenie.zip - name: cgenie.zip
destination: cgenie.zip destination: cgenie.zip
required: true required: true
native_id: cgenie native_id: cgenie
name: Colour Genie
dragon64: dragon64:
files: files:
- name: dragon64.zip - name: dragon64.zip
@@ -1711,6 +1760,7 @@ systems:
required: true required: true
zipped_file: d32.rom zipped_file: d32.rom
native_id: dragon64 native_id: dragon64
name: Dragon 64
mc10: mc10:
files: files:
- name: mc10.zip - name: mc10.zip
@@ -1730,6 +1780,7 @@ systems:
md5: 78af465c2f31cf4e05dec1efda77da01 md5: 78af465c2f31cf4e05dec1efda77da01
zipped_file: alice.rom zipped_file: alice.rom
native_id: mc10 native_id: mc10
name: Tandy MC-10
trs80: trs80:
files: files:
- name: trs80.zip - name: trs80.zip
@@ -1761,6 +1812,7 @@ systems:
destination: trs80m4p.zip destination: trs80m4p.zip
required: true required: true
native_id: trs80 native_id: trs80
name: TRS-80
tutor: tutor:
files: files:
- name: tutor.zip - name: tutor.zip
@@ -1777,6 +1829,7 @@ systems:
md5: 5770834c10946ac2c3617504ba530884 md5: 5770834c10946ac2c3617504ba530884
zipped_file: tutor2.bin zipped_file: tutor2.bin
native_id: tutor native_id: tutor
name: Tomy Tutor
ti99: ti99:
files: files:
- name: ti99_4a.zip - name: ti99_4a.zip
@@ -1821,6 +1874,7 @@ systems:
md5: 206daf498ac5d0141de1d47d38afd899 md5: 206daf498ac5d0141de1d47d38afd899
zipped_file: cd2326a.u2b zipped_file: cd2326a.u2b
native_id: ti99 native_id: ti99
name: Texas Instruments TI-99
astrocade: astrocade:
files: files:
- name: astrocde.zip - name: astrocde.zip
@@ -1832,6 +1886,7 @@ systems:
md5: 7d25a26e5c4841b364cfe6b1735eaf03 md5: 7d25a26e5c4841b364cfe6b1735eaf03
zipped_file: astro.bin zipped_file: astro.bin
native_id: astrocade native_id: astrocade
name: Bally Astrocade
gmaster: gmaster:
files: files:
- name: gmaster.zip - name: gmaster.zip
@@ -1843,6 +1898,7 @@ systems:
md5: 6bff08b5e5f96de405cd56d5f04a08f8 md5: 6bff08b5e5f96de405cd56d5f04a08f8
zipped_file: d78c11agf_e19.u1 zipped_file: d78c11agf_e19.u1
native_id: gmaster native_id: gmaster
name: Hartung Game Master
adam: adam:
files: files:
- name: adam.zip - name: adam.zip
@@ -1951,6 +2007,7 @@ systems:
md5: 3cdf2fe48ac4224b56f26c03f6c68982 md5: 3cdf2fe48ac4224b56f26c03f6c68982
zipped_file: printer.u2 zipped_file: printer.u2
native_id: adam native_id: adam
name: Coleco Adam
coleco-colecovision: coleco-colecovision:
files: files:
- name: colecovision.rom - name: colecovision.rom
@@ -1958,6 +2015,7 @@ systems:
required: true required: true
md5: 2c66f5911e5b42b8ebe113403548eee7 md5: 2c66f5911e5b42b8ebe113403548eee7
native_id: colecovision native_id: colecovision
name: ColecoVision
bbc: bbc:
files: files:
- name: bbcb.zip - name: bbcb.zip
@@ -2150,6 +2208,7 @@ systems:
required: true required: true
md5: f083f49d6fe66344c650d7e74249cb96 md5: f083f49d6fe66344c650d7e74249cb96
native_id: bbc native_id: bbc
name: BBC Micro
pcw: pcw:
files: files:
- name: pcw8256.zip - name: pcw8256.zip
@@ -2174,6 +2233,7 @@ systems:
md5: b664af93987d575b0248832832c61505 md5: b664af93987d575b0248832832c61505
zipped_file: 40103.ic109 zipped_file: 40103.ic109
native_id: pcw native_id: pcw
name: Amstrad PCW
apfm1000: apfm1000:
files: files:
- name: apfm1000.zip - name: apfm1000.zip
@@ -2195,6 +2255,7 @@ systems:
md5: 89a7cfa5469ce24773721d65b28f8544 md5: 89a7cfa5469ce24773721d65b28f8544
zipped_file: trash-ii.bin zipped_file: trash-ii.bin
native_id: apfm1000 native_id: apfm1000
name: APF M-1000
fm7: fm7:
files: files:
- name: fm7.zip - name: fm7.zip
@@ -2254,6 +2315,7 @@ systems:
md5: 7db27dede3e358017d518101850bccfa md5: 7db27dede3e358017d518101850bccfa
zipped_file: subsyscg.rom zipped_file: subsyscg.rom
native_id: fm7 native_id: fm7
name: Fujitsu FM-7
archimedes: archimedes:
files: files:
- name: aa310.zip - name: aa310.zip
@@ -2463,6 +2525,7 @@ systems:
md5: 1a8617c1abe3e0729d20ce844e1e12a8 md5: 1a8617c1abe3e0729d20ce844e1e12a8
zipped_file: acorn_0280,022-01_philips_8051ah-2.bin zipped_file: acorn_0280,022-01_philips_8051ah-2.bin
native_id: archimedes native_id: archimedes
name: Acorn Archimedes
atom: atom:
files: files:
- name: atom.zip - name: atom.zip
@@ -2484,6 +2547,7 @@ systems:
md5: 9627dfb5f8302db8dd5702dbf7c09f72 md5: 9627dfb5f8302db8dd5702dbf7c09f72
zipped_file: dosrom.u15 zipped_file: dosrom.u15
native_id: atom native_id: atom
name: Acorn Atom
electron: electron:
files: files:
- name: electron.zip - name: electron.zip
@@ -2544,6 +2608,7 @@ systems:
md5: 5c39baa89fe8a40a5167a53cc5ae7791 md5: 5c39baa89fe8a40a5167a53cc5ae7791
zipped_file: pres_adfs_115.rom zipped_file: pres_adfs_115.rom
native_id: electron native_id: electron
name: Acorn Electron
apple-ii: apple-ii:
files: files:
- name: apple2e.zip - name: apple2e.zip
@@ -2671,6 +2736,7 @@ systems:
md5: 5f1be0c1cdff26f5956eef9643911886 md5: 5f1be0c1cdff26f5956eef9643911886
zipped_file: 341-0028-a.rom zipped_file: 341-0028-a.rom
native_id: apple2 native_id: apple2
name: Apple II
camplynx: camplynx:
files: files:
- name: lynx48k.zip - name: lynx48k.zip
@@ -2753,6 +2819,7 @@ systems:
md5: f9f54913cdedb22bb8f0c549ad121379 md5: f9f54913cdedb22bb8f0c549ad121379
zipped_file: lynx128-3.ic3 zipped_file: lynx128-3.ic3
native_id: camplynx native_id: camplynx
name: Camputers Lynx
mz80k: mz80k:
files: files:
- name: mz80k.zip - name: mz80k.zip
@@ -2782,6 +2849,7 @@ systems:
md5: 4138784bdd2e2cbacd6c55eff195b2ac md5: 4138784bdd2e2cbacd6c55eff195b2ac
zipped_file: mz80kfdif.rom zipped_file: mz80kfdif.rom
native_id: mz80k native_id: mz80k
name: Sharp MZ-80K
mz700: mz700:
files: files:
- name: mz700.zip - name: mz700.zip
@@ -2798,6 +2866,7 @@ systems:
md5: e9045d57e8574f3eb3f775c02369fbfe md5: e9045d57e8574f3eb3f775c02369fbfe
zipped_file: mz700fon.int zipped_file: mz700fon.int
native_id: mz700 native_id: mz700
name: Sharp MZ-700
mz800: mz800:
files: files:
- name: mz800.zip - name: mz800.zip
@@ -2809,6 +2878,7 @@ systems:
md5: 7d3909267b3f3e6ce7aa999de0ded226 md5: 7d3909267b3f3e6ce7aa999de0ded226
zipped_file: mz800.rom zipped_file: mz800.rom
native_id: mz800 native_id: mz800
name: Sharp MZ-800
mz2000: mz2000:
files: files:
- name: mz2000.zip - name: mz2000.zip
@@ -2825,6 +2895,7 @@ systems:
md5: dea49b39998885631db16de1176e71b9 md5: dea49b39998885631db16de1176e71b9
zipped_file: font.bin zipped_file: font.bin
native_id: mz2000 native_id: mz2000
name: Sharp MZ-2000
mz2500: mz2500:
files: files:
- name: mz2500.zip - name: mz2500.zip
@@ -2861,6 +2932,7 @@ systems:
md5: 04843d14a8e2f69a7fcaff394a8cc012 md5: 04843d14a8e2f69a7fcaff394a8cc012
zipped_file: phone.rom zipped_file: phone.rom
native_id: mz2500 native_id: mz2500
name: Sharp MZ-2500
vgmplay: vgmplay:
files: files:
- name: qsound.zip - name: qsound.zip
@@ -2888,6 +2960,7 @@ systems:
md5: 8740932cda05e518a9955f1d08d6786f md5: 8740932cda05e518a9955f1d08d6786f
zipped_file: ym2608_adpcm_rom.bin zipped_file: ym2608_adpcm_rom.bin
native_id: vgmplay native_id: vgmplay
name: Video Game Music Player
gamepock: gamepock:
files: files:
- name: gamepock.zip - name: gamepock.zip
@@ -2899,6 +2972,7 @@ systems:
md5: a0dd595eafb407a6a4b4ed800005a394 md5: a0dd595eafb407a6a4b4ed800005a394
zipped_file: egpcboot.bin zipped_file: egpcboot.bin
native_id: gamepock native_id: gamepock
name: Epoch Game Pocket Computer
gamecom: gamecom:
files: files:
- name: gamecom.zip - name: gamecom.zip
@@ -2915,6 +2989,7 @@ systems:
md5: f7bcefb6daf923c8e5ea2eb69f619efe md5: f7bcefb6daf923c8e5ea2eb69f619efe
zipped_file: internal.bin zipped_file: internal.bin
native_id: gamecom native_id: gamecom
name: Tiger Game.com
xegs: xegs:
files: files:
- name: xegs.zip - name: xegs.zip
@@ -2926,6 +3001,7 @@ systems:
md5: 42cbd989802c17d0ac3731d33270d835 md5: 42cbd989802c17d0ac3731d33270d835
zipped_file: c101687.rom zipped_file: c101687.rom
native_id: xegs native_id: xegs
name: Atari XE Game System
crvision: crvision:
files: files:
- name: crvision.zip - name: crvision.zip
@@ -2937,6 +3013,7 @@ systems:
md5: 3b1ef759d8e3fb4071582efd33dd05f9 md5: 3b1ef759d8e3fb4071582efd33dd05f9
zipped_file: crvision.u20 zipped_file: crvision.u20
native_id: crvision native_id: crvision
name: VTech CreatiVision
vsmile: vsmile:
files: files:
- name: vsmile.zip - name: vsmile.zip
@@ -2958,6 +3035,7 @@ systems:
md5: 11e59253c578c8f16ea2375ec398e4e9 md5: 11e59253c578c8f16ea2375ec398e4e9
zipped_file: vsmile_v103.bin zipped_file: vsmile_v103.bin
native_id: vsmile native_id: vsmile
name: VTech V.Smile
socrates: socrates:
files: files:
- name: socrates.zip - name: socrates.zip
@@ -2989,6 +3067,7 @@ systems:
md5: 31c29c57e3d3e6788ba5817eaaa8b17a md5: 31c29c57e3d3e6788ba5817eaaa8b17a
zipped_file: speech_eng_vsm3.bin zipped_file: speech_eng_vsm3.bin
native_id: socrates native_id: socrates
name: VTech Socrates
rx78: rx78:
files: files:
- name: rx78.zip - name: rx78.zip
@@ -3000,6 +3079,7 @@ systems:
md5: f613b15c4b965013e4827d2ad79c7080 md5: f613b15c4b965013e4827d2ad79c7080
zipped_file: ipl.rom zipped_file: ipl.rom
native_id: rx78 native_id: rx78
name: Bandai RX-78
advision: advision:
files: files:
- name: advision.zip - name: advision.zip
@@ -3016,6 +3096,7 @@ systems:
md5: fc5e71445e4947a9d00eedbc66b13a8f md5: fc5e71445e4947a9d00eedbc66b13a8f
zipped_file: b8223__cop411l-kcn_n.u8 zipped_file: b8223__cop411l-kcn_n.u8
native_id: advision native_id: advision
name: Entex Adventure Vision
gamate: gamate:
files: files:
- name: gamate.zip - name: gamate.zip
@@ -3032,12 +3113,14 @@ systems:
md5: ef67993a94503c4b7798b5901c7dda52 md5: ef67993a94503c4b7798b5901c7dda52
zipped_file: gamate_bios_umc.bin zipped_file: gamate_bios_umc.bin
native_id: gamate native_id: gamate
name: Bitcorp Gamate
pv2000: pv2000:
files: files:
- name: pv2000.zip - name: pv2000.zip
destination: pv2000.zip destination: pv2000.zip
required: true required: true
native_id: pv2000 native_id: pv2000
name: Casio PV-2000
pc80: pc80:
files: files:
- name: pc8001.zip - name: pc8001.zip
@@ -3092,6 +3175,7 @@ systems:
md5: d81c6d5d7ad1a4bbbd6ae22a01257603 md5: d81c6d5d7ad1a4bbbd6ae22a01257603
zipped_file: kanji1.rom zipped_file: kanji1.rom
native_id: pc80 native_id: pc80
name: NEC PC-8001
cdi: cdi:
files: files:
- name: cdimono1.zip - name: cdimono1.zip
@@ -3123,6 +3207,7 @@ systems:
md5: 3d20cf7550f1b723158b42a1fd5bac62 md5: 3d20cf7550f1b723158b42a1fd5bac62
zipped_file: zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206 zipped_file: zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206
native_id: cdi native_id: cdi
name: Phillips CD-i
hikaru: hikaru:
files: files:
- name: hikaru.zip - name: hikaru.zip
@@ -3138,6 +3223,7 @@ systems:
required: true required: true
md5: ee643e8c7369fe7feca610d4daa4a57c md5: ee643e8c7369fe7feca610d4daa4a57c
native_id: hikaru native_id: hikaru
name: Hikaru
sony-playstation-vita: sony-playstation-vita:
files: files:
- name: PSP2UPDAT.PUP - name: PSP2UPDAT.PUP
@@ -3149,6 +3235,7 @@ systems:
required: true required: true
md5: f2c7b12fe85496ec88a0391b514d6e3b md5: f2c7b12fe85496ec88a0391b514d6e3b
native_id: psvita native_id: psvita
name: PS Vita
vectrex: vectrex:
files: files:
- name: vectrex.zip - name: vectrex.zip
@@ -3165,6 +3252,7 @@ systems:
md5: a9c238473229912eb757ff3dfe6f4631 md5: a9c238473229912eb757ff3dfe6f4631
zipped_file: exec_rom_intl_284001-1.bin zipped_file: exec_rom_intl_284001-1.bin
native_id: vectrex native_id: vectrex
name: GCE Vectrex
scummvm: scummvm:
files: files:
- name: MT32_PCM.ROM - name: MT32_PCM.ROM
@@ -3176,6 +3264,7 @@ systems:
required: true required: true
md5: 5626206284b22c2734f3e9efefcd2675 md5: 5626206284b22c2734f3e9efefcd2675
native_id: scummvm native_id: scummvm
name: ScummVM
supracan: supracan:
files: files:
- name: supracan.zip - name: supracan.zip
@@ -3187,6 +3276,7 @@ systems:
md5: 53c4343e062bb3b337370bbb58e64d16 md5: 53c4343e062bb3b337370bbb58e64d16
zipped_file: internal_68k.bin zipped_file: internal_68k.bin
native_id: supracan native_id: supracan
name: Supr'A'can
tandy-vis: tandy-vis:
files: files:
- name: vis.zip - name: vis.zip
@@ -3203,6 +3293,7 @@ systems:
md5: 758f8fec271fbf526bb22b36e88f154b md5: 758f8fec271fbf526bb22b36e88f154b
zipped_file: p513bk1b.bin zipped_file: p513bk1b.bin
native_id: vis native_id: vis
name: Tandy Video Information System
nintendo-64dd: nintendo-64dd:
files: files:
- name: 64DD_IPL.bin - name: 64DD_IPL.bin
@@ -3210,6 +3301,7 @@ systems:
required: true required: true
md5: 8d3d9f294b6e174bc7b1d2fd1c727530 md5: 8d3d9f294b6e174bc7b1d2fd1c727530
native_id: n64dd native_id: n64dd
name: Nintendo 64DD
nintendo-gamecube: nintendo-gamecube:
files: files:
- name: IPL.bin - name: IPL.bin
@@ -3225,6 +3317,7 @@ systems:
required: true required: true
md5: b17148254a5799684c7d783206504926 md5: b17148254a5799684c7d783206504926
native_id: gamecube native_id: gamecube
name: Nintendo GameCube
chihiro: chihiro:
files: files:
- name: mcpx_1.0.bin - name: mcpx_1.0.bin
@@ -3236,6 +3329,7 @@ systems:
required: true required: true
md5: f23d7e00ae8fbf88908ed1f9165f35eb md5: f23d7e00ae8fbf88908ed1f9165f35eb
native_id: chihiro native_id: chihiro
name: Sega Chihiro
oricatmos: oricatmos:
files: files:
- name: basic11.rom - name: basic11.rom
@@ -3247,6 +3341,7 @@ systems:
required: true required: true
md5: c888b36bf0fc222c3585c3fabe556d21 md5: c888b36bf0fc222c3585c3fabe556d21
native_id: oricatmos native_id: oricatmos
name: Oric Atmos
enterprise-64-128: enterprise-64-128:
files: files:
- name: basic21.bin - name: basic21.bin
@@ -3361,6 +3456,7 @@ systems:
md5: 47258d03aec37bc24df5dbc5d50fc9f8 md5: 47258d03aec37bc24df5dbc5d50fc9f8
zipped_file: exdos13.rom zipped_file: exdos13.rom
native_id: enterprise native_id: enterprise
name: Enterprise
videoton-tvc: videoton-tvc:
files: files:
- name: tvc22_sys.rom - name: tvc22_sys.rom
@@ -3413,6 +3509,7 @@ systems:
md5: 5ce95a26ceed5bec73995d83568da9cf md5: 5ce95a26ceed5bec73995d83568da9cf
zipped_file: tvc22_d7.64k zipped_file: tvc22_d7.64k
native_id: tvc native_id: tvc
name: Videoton TVC
triforce: triforce:
files: files:
- name: segaboot.gcm - name: segaboot.gcm
@@ -3420,6 +3517,7 @@ systems:
required: true required: true
md5: 2ef01c0e93f7ee3a0a4b139aa14728b9 md5: 2ef01c0e93f7ee3a0a4b139aa14728b9
native_id: triforce native_id: triforce
name: Triforce
bk: bk:
files: files:
- name: B11M_BOS.ROM - name: B11M_BOS.ROM
@@ -3513,6 +3611,7 @@ systems:
md5: fe4627d1e3a1535874085050733263e7 md5: fe4627d1e3a1535874085050733263e7
zipped_file: bk11m_324_bos.rom zipped_file: bk11m_324_bos.rom
native_id: bk native_id: bk
name: Elektronika BK
standalone_cores: standalone_cores:
- abuse - abuse
- azahar - azahar

View File

@@ -30,3 +30,26 @@ class BaseExporter(ABC):
def _is_pattern(name: str) -> bool: def _is_pattern(name: str) -> bool:
"""Check if a filename is a placeholder pattern (not a real file).""" """Check if a filename is a placeholder pattern (not a real file)."""
return "<" in name or ">" in name or "*" in name return "<" in name or ">" in name or "*" in name
@staticmethod
def _display_name(
sys_id: str, scraped_sys: dict | None = None,
) -> str:
"""Get display name for a system from scraped data or slug."""
if scraped_sys:
name = scraped_sys.get("name")
if name:
return name
# Fallback: convert slug to display name with acronym handling
_UPPER = {
"3do", "cps1", "cps2", "cps3", "dos", "gba", "gbc", "msx",
"nes", "nds", "ngp", "psp", "psx", "sms", "snes", "tvc",
}
parts = sys_id.replace("-", " ").split()
result = []
for p in parts:
if p.lower() in _UPPER:
result.append(p.upper())
else:
result.append(p.capitalize())
return " ".join(result)

View File

@@ -11,9 +11,6 @@ from pathlib import Path
from .base_exporter import BaseExporter from .base_exporter import BaseExporter
def _slug_to_display(slug: str) -> str:
"""Convert slug to display name: 'atari-5200' -> 'Atari 5200'."""
return slug.replace("-", " ").title()
class Exporter(BaseExporter): class Exporter(BaseExporter):
@@ -31,15 +28,11 @@ class Exporter(BaseExporter):
) -> None: ) -> None:
# Build native_id and display name maps from scraped data # Build native_id and display name maps from scraped data
native_map: dict[str, str] = {} native_map: dict[str, str] = {}
display_map: dict[str, str] = {}
if scraped_data: if scraped_data:
for sys_id, sys_data in scraped_data.get("systems", {}).items(): for sys_id, sys_data in scraped_data.get("systems", {}).items():
nid = sys_data.get("native_id") nid = sys_data.get("native_id")
if nid: if nid:
native_map[sys_id] = nid native_map[sys_id] = nid
dname = sys_data.get("name")
if dname:
display_map[sys_id] = dname
lines: list[str] = ["systems = {", ""] lines: list[str] = ["systems = {", ""]
@@ -51,7 +44,8 @@ class Exporter(BaseExporter):
continue continue
native_id = native_map.get(sys_id, sys_id) native_id = native_map.get(sys_id, sys_id)
display_name = display_map.get(sys_id, _slug_to_display(sys_id)) scraped_sys = scraped_data.get("systems", {}).get(sys_id) if scraped_data else None
display_name = self._display_name(sys_id, scraped_sys)
# Build biosFiles entries as compact single-line dicts # Build biosFiles entries as compact single-line dicts
bios_parts: list[str] = [] bios_parts: list[str] = []

View File

@@ -15,9 +15,6 @@ from pathlib import Path
from .base_exporter import BaseExporter from .base_exporter import BaseExporter
def _slug_to_display(slug: str) -> str:
"""Convert slug to display name."""
return slug.replace("-", " ").title()
class Exporter(BaseExporter): class Exporter(BaseExporter):
@@ -34,15 +31,11 @@ class Exporter(BaseExporter):
scraped_data: dict | None = None, scraped_data: dict | None = None,
) -> None: ) -> None:
native_map: dict[str, str] = {} native_map: dict[str, str] = {}
display_map: dict[str, str] = {}
if scraped_data: if scraped_data:
for sys_id, sys_data in scraped_data.get("systems", {}).items(): for sys_id, sys_data in scraped_data.get("systems", {}).items():
nid = sys_data.get("native_id") nid = sys_data.get("native_id")
if nid: if nid:
native_map[sys_id] = nid native_map[sys_id] = nid
dname = sys_data.get("name")
if dname:
display_map[sys_id] = dname
lines: list[str] = [ lines: list[str] = [
'<?xml version="1.0" encoding="UTF-8"?>', '<?xml version="1.0" encoding="UTF-8"?>',
@@ -58,7 +51,8 @@ class Exporter(BaseExporter):
continue continue
native_id = native_map.get(sys_id, sys_id) native_id = native_map.get(sys_id, sys_id)
display_name = display_map.get(sys_id, _slug_to_display(sys_id)) scraped_sys = scraped_data.get("systems", {}).get(sys_id) if scraped_data else None
display_name = self._display_name(sys_id, scraped_sys)
lines.append(f' <system fullname="{display_name}" platform="{native_id}">') lines.append(f' <system fullname="{display_name}" platform="{native_id}">')

View File

@@ -15,9 +15,6 @@ from pathlib import Path
from .base_exporter import BaseExporter from .base_exporter import BaseExporter
def _slug_to_display(slug: str) -> str:
"""Convert slug to display name."""
return slug.replace("-", " ").title()
class Exporter(BaseExporter): class Exporter(BaseExporter):
@@ -34,15 +31,11 @@ class Exporter(BaseExporter):
scraped_data: dict | None = None, scraped_data: dict | None = None,
) -> None: ) -> None:
native_map: dict[str, str] = {} native_map: dict[str, str] = {}
display_map: dict[str, str] = {}
if scraped_data: if scraped_data:
for sys_id, sys_data in scraped_data.get("systems", {}).items(): for sys_id, sys_data in scraped_data.get("systems", {}).items():
nid = sys_data.get("native_id") nid = sys_data.get("native_id")
if nid: if nid:
native_map[sys_id] = nid native_map[sys_id] = nid
dname = sys_data.get("name")
if dname:
display_map[sys_id] = dname
output: OrderedDict[str, dict] = OrderedDict() output: OrderedDict[str, dict] = OrderedDict()
@@ -54,7 +47,8 @@ class Exporter(BaseExporter):
continue continue
native_id = native_map.get(sys_id, sys_id) native_id = native_map.get(sys_id, sys_id)
display_name = display_map.get(sys_id, _slug_to_display(sys_id)) scraped_sys = scraped_data.get("systems", {}).get(sys_id) if scraped_data else None
display_name = self._display_name(sys_id, scraped_sys)
bios_files: list[OrderedDict] = [] bios_files: list[OrderedDict] = []
for fe in files: for fe in files:

View File

@@ -46,16 +46,28 @@ class Exporter(BaseExporter):
if nid: if nid:
native_map[sys_id] = nid native_map[sys_id] = nid
# Match exact header format of libretro-database/dat/System.dat
version = ""
if scraped_data:
version = scraped_data.get("dat_version", scraped_data.get("version", ""))
lines: list[str] = [ lines: list[str] = [
"clrmamepro (", "clrmamepro (",
'\tname "System"', '\tname "System"',
'\tdescription "System"', '\tdescription "System"',
'\tcomment "System, firmware, and BIOS files used by libretro cores."', '\tcomment "System, firmware, and BIOS files used by libretro cores."',
]
if version:
lines.append(f"\tversion {version}")
lines.extend([
'\tauthor "libretro"',
'\thomepage "https://github.com/libretro/libretro-database/blob/master/dat/System.dat"',
'\turl "https://raw.githubusercontent.com/libretro/libretro-database/master/dat/System.dat"',
")", ")",
"", "",
"game (", "game (",
'\tname "System"', '\tname "System"',
] '\tcomment "System"',
])
systems = truth_data.get("systems", {}) systems = truth_data.get("systems", {})
for sys_id in sorted(systems): for sys_id in sorted(systems):

View File

@@ -303,12 +303,25 @@ class Scraper(BaseScraper):
"""Generate a platform YAML config dict from scraped data.""" """Generate a platform YAML config dict from scraped data."""
requirements = self.fetch_requirements() requirements = self.fetch_requirements()
# Parse source to extract display names per system
raw = self._fetch_raw()
source_dict = self._extract_systems_dict(raw)
display_names: dict[str, str] = {}
for sys_key, sys_data in source_dict.items():
dname = sys_data.get("name", "")
if dname:
slug = SYSTEM_SLUG_MAP.get(sys_key, sys_key)
display_names[slug] = dname
systems = {} systems = {}
for req in requirements: for req in requirements:
if req.system not in systems: if req.system not in systems:
sys_entry: dict = {"files": []} sys_entry: dict = {"files": []}
if req.native_id: if req.native_id:
sys_entry["native_id"] = req.native_id sys_entry["native_id"] = req.native_id
dname = display_names.get(req.system)
if dname:
sys_entry["name"] = dname
systems[req.system] = sys_entry systems[req.system] = sys_entry
entry = { entry = {

View File

@@ -121,10 +121,25 @@ class Scraper(BaseScraper):
"""Generate a platform YAML config dict from scraped data.""" """Generate a platform YAML config dict from scraped data."""
requirements = self.fetch_requirements() requirements = self.fetch_requirements()
# Parse source to extract display names per system
raw = self._fetch_raw()
source_data = json.loads(raw)
display_names: dict[str, str] = {}
for sys_key, sys_data in source_data.items():
if isinstance(sys_data, dict):
dname = sys_data.get("name", "")
if dname:
slug = SYSTEM_SLUG_MAP.get(sys_key, sys_key)
display_names[slug] = dname
systems = {} systems = {}
for req in requirements: for req in requirements:
if req.system not in systems: if req.system not in systems:
systems[req.system] = {"files": []} sys_entry: dict = {"files": []}
dname = display_names.get(req.system)
if dname:
sys_entry["name"] = dname
systems[req.system] = sys_entry
entry = { entry = {
"name": req.name, "name": req.name,