Converted nl subtarget to use a filter rather than a script and driver list.

This commit is contained in:
Vas Crabb 2022-06-28 01:47:00 +10:00
parent ab6237da82
commit 77525a0d0f
4 changed files with 78 additions and 1328 deletions

View File

@ -1,438 +0,0 @@
-- license:BSD-3-Clause
-- copyright-holders:MAMEdev Team
---------------------------------------------------------------------------
--
-- nl.lua
--
-- Compiles all drivers using netlist code
-- Use make SUBTARGET=nl to build
--
---------------------------------------------------------------------------
--------------------------------------------------
-- Specify all the CPU cores necessary for the
-- drivers referenced in nl.lst.
--------------------------------------------------
CPUS["Z80"] = true
CPUS["M6502"] = true
CPUS["M6800"] = true
CPUS["M6803"] = true
CPUS["M6809"] = true
CPUS["MCS48"] = true
CPUS["I8085"] = true
CPUS["MCS51"] = true
--CPUS["M6800"] = true
--CPUS["M6809"] = true
--CPUS["M680X0"] = true
CPUS["M680X0"] = true
--CPUS["TMS9900"] = true
--CPUS["COP400"] = true
CPUS["F8"] = true
CPUS["CCPU"] = true
CPUS["MCS40"] = true
CPUS["TMS9900"] = true
--------------------------------------------------
-- Specify all the sound cores necessary for the
-- drivers referenced in nl.lst.
--------------------------------------------------
--SOUNDS["SAMPLES"] = true
SOUNDS["DAC"] = true
SOUNDS["DISCRETE"] = true
SOUNDS["AY8910"] = true
SOUNDS["MSM5205"] = true
--SOUNDS["ASTROCADE"] = true
SOUNDS["TMS5220"] = true
SOUNDS["OKIM6295"] = true
SOUNDS["UPD7759"] = true
--SOUNDS["HC55516"] = true
--SOUNDS["YM3812"] = true
--SOUNDS["CEM3394"] = true
--SOUNDS["VOTRAX"] = true
SOUNDS["YM2151"] = true
SOUNDS["YM2413"] = true
SOUNDS["BEEP"] = true
SOUNDS["SPEAKER"] = true
SOUNDS["DIGITALKER"] = true
SOUNDS["SN76477"] = true
SOUNDS["SN76496"] = true
SOUNDS["SP0250"] = true
SOUNDS["TMS36XX"] = true
SOUNDS["TMS5110"] = true
--------------------------------------------------
-- specify available video cores
--------------------------------------------------
VIDEOS["FIXFREQ"] = true
VIDEOS["PWM_DISPLAY"] = true
--------------------------------------------------
-- specify available machine cores
--------------------------------------------------
MACHINES["INPUT_MERGER"] = true
MACHINES["NETLIST"] = true
MACHINES["Z80DMA"] = true
MACHINES["Z80CTC"] = true
MACHINES["Z80DAISY"] = true
MACHINES["GEN_LATCH"] = true
MACHINES["AY31015"] = true
MACHINES["KB3600"] = true
MACHINES["COM8116"] = true
MACHINES["TTL7474"] = true
MACHINES["TTL74145"] = true
MACHINES["TTL74148"] = true
MACHINES["TTL74153"] = true
MACHINES["TTL74259"] = true
MACHINES["6522VIA"] = true
MACHINES["6821PIA"] = true
MACHINES["I8255"] = true
MACHINES["I8243"] = true
MACHINES["WATCHDOG"] = true
MACHINES["EEPROMDEV"] = true
MACHINES["UPD4701"] = true
MACHINES["CXD1095"] = true
--MACHINES["TTL74148"] = true
--MACHINES["TTL74153"] = true
--MACHINES["TTL7474"] = true
--MACHINES["RIOT6532"] = true
MACHINES["PIT8253"] = true
--MACHINES["Z80CTC"] = true
--MACHINES["68681"] = true
--MACHINES["BANKDEV"] = true
MACHINES["F3853"] = true
MACHINES["MB14241"] = true
MACHINES["STEPPERS"] = true
--------------------------------------------------
-- specify available bus cores
--------------------------------------------------
-- not needed by nl.lua but build system wants at least one bus
BUSES["CENTRONICS"] = true
--------------------------------------------------
-- This is the list of files that are necessary
-- for building all of the drivers referenced
-- in nl.lst
--------------------------------------------------
function createProjects_mame_nl(_target, _subtarget)
project ("mame_netlist")
targetsubdir(_target .."_" .. _subtarget)
kind (LIBTYPE)
uuid (os.uuid("drv-mame-nl"))
addprojectflags()
precompiledheaders_novs()
includedirs {
MAME_DIR .. "src/osd",
MAME_DIR .. "src/emu",
MAME_DIR .. "src/devices",
MAME_DIR .. "src/mame/shared",
MAME_DIR .. "src/lib",
MAME_DIR .. "src/lib/util",
MAME_DIR .. "3rdparty",
GEN_DIR .. "mame/layout",
ext_includedir("rapidjson"),
}
files{
MAME_DIR .. "src/mame/atari/pong.cpp",
MAME_DIR .. "src/mame/atari/nl_pong.cpp",
MAME_DIR .. "src/mame/atari/nl_pong.h",
MAME_DIR .. "src/mame/atari/nl_pongdoubles.cpp",
MAME_DIR .. "src/mame/atari/nl_pongdoubles.h",
MAME_DIR .. "src/mame/atari/nl_breakout.cpp",
MAME_DIR .. "src/mame/atari/nl_breakout.h",
MAME_DIR .. "src/mame/atari/nl_rebound.cpp",
MAME_DIR .. "src/mame/atari/nl_rebound.h",
MAME_DIR .. "src/mame/skeleton/nl_hazelvid.cpp",
MAME_DIR .. "src/mame/skeleton/nl_hazelvid.h",
MAME_DIR .. "src/mame/atari/atarittl.cpp",
MAME_DIR .. "src/mame/atari/nl_stuntcyc.cpp",
MAME_DIR .. "src/mame/atari/nl_stuntcyc.h",
MAME_DIR .. "src/mame/atari/nl_gtrak10.cpp",
MAME_DIR .. "src/mame/atari/nl_gtrak10.h",
MAME_DIR .. "src/mame/atari/nl_tank.cpp",
MAME_DIR .. "src/mame/atari/nl_tank.h",
MAME_DIR .. "src/mame/atari/nl_flyball.cpp",
MAME_DIR .. "src/mame/atari/nl_flyball.h",
MAME_DIR .. "src/mame/atari/flyball.cpp",
MAME_DIR .. "src/mame/atari/nl_destroyr.cpp",
MAME_DIR .. "src/mame/atari/nl_destroyr.h",
MAME_DIR .. "src/mame/atari/destroyr.cpp",
MAME_DIR .. "src/mame/skeleton/hazeltin.cpp",
MAME_DIR .. "src/mame/capcom/1942.cpp",
MAME_DIR .. "src/mame/capcom/1942.h",
MAME_DIR .. "src/mame/capcom/1942_v.cpp",
MAME_DIR .. "src/mame/capcom/nl_1942.cpp",
MAME_DIR .. "src/mame/capcom/nl_1942.h",
MAME_DIR .. "src/mame/vtech/gamemachine.cpp",
MAME_DIR .. "src/mame/vtech/nl_gamemachine.h",
MAME_DIR .. "src/mame/vtech/nl_gamemachine.cpp",
MAME_DIR .. "src/mame/nintendo/popeye.cpp",
MAME_DIR .. "src/mame/nintendo/popeye.h",
MAME_DIR .. "src/mame/nintendo/popeye_v.cpp",
MAME_DIR .. "src/mame/nintendo/nl_popeye.cpp",
MAME_DIR .. "src/mame/nintendo/nl_popeye.h",
MAME_DIR .. "src/mame/nintendo/mario.cpp",
MAME_DIR .. "src/mame/nintendo/mario.h",
MAME_DIR .. "src/mame/nintendo/nl_mario.cpp",
MAME_DIR .. "src/mame/nintendo/nl_mario.h",
MAME_DIR .. "src/mame/nintendo/mario_v.cpp",
MAME_DIR .. "src/mame/nintendo/mario_a.cpp",
MAME_DIR .. "src/mame/irem/m62.cpp",
MAME_DIR .. "src/mame/irem/m62.h",
MAME_DIR .. "src/mame/irem/m62_v.cpp",
MAME_DIR .. "src/mame/irem/irem.cpp",
MAME_DIR .. "src/mame/irem/irem.h",
MAME_DIR .. "src/mame/irem/nl_kidniki.cpp",
MAME_DIR .. "src/mame/irem/nl_kidniki.h",
MAME_DIR .. "src/mame/midw8080/mw8080bw.cpp",
MAME_DIR .. "src/mame/midw8080/mw8080bw.h",
MAME_DIR .. "src/mame/midw8080/mw8080bw_a.h",
MAME_DIR .. "src/mame/midw8080/mw8080bw_a.cpp",
MAME_DIR .. "src/mame/midw8080/mw8080bw_v.cpp",
MAME_DIR .. "src/mame/midw8080/nl_gunfight.cpp",
MAME_DIR .. "src/mame/midw8080/nl_gunfight.h",
MAME_DIR .. "src/mame/midw8080/nl_280zzzap.cpp",
MAME_DIR .. "src/mame/midw8080/nl_280zzzap.h",
MAME_DIR .. "src/mame/midway/sspeedr.cpp",
MAME_DIR .. "src/mame/midway/sspeedr.h",
MAME_DIR .. "src/mame/midway/sspeedr_v.cpp",
MAME_DIR .. "src/mame/midway/nl_sspeedr.cpp",
MAME_DIR .. "src/mame/midway/nl_sspeedr.h",
MAME_DIR .. "src/mame/univers/cheekyms_a.cpp",
MAME_DIR .. "src/mame/univers/cheekyms_a.h",
MAME_DIR .. "src/mame/univers/nl_cheekyms.cpp",
MAME_DIR .. "src/mame/univers/nl_cheekyms.h",
MAME_DIR .. "src/mame/univers/cheekyms.cpp",
MAME_DIR .. "src/mame/univers/cheekyms.h",
MAME_DIR .. "src/mame/univers/cheekyms_v.cpp",
MAME_DIR .. "src/mame/cinemat/cinemat.cpp",
MAME_DIR .. "src/mame/cinemat/cinemat.h",
MAME_DIR .. "src/mame/cinemat/cinemat_a.cpp",
MAME_DIR .. "src/mame/cinemat/cinemat_a.h",
MAME_DIR .. "src/mame/cinemat/cinemat_v.cpp",
MAME_DIR .. "src/mame/cinemat/nl_armora.cpp",
MAME_DIR .. "src/mame/cinemat/nl_armora.h",
MAME_DIR .. "src/mame/cinemat/nl_barrier.cpp",
MAME_DIR .. "src/mame/cinemat/nl_barrier.h",
MAME_DIR .. "src/mame/cinemat/nl_boxingb.cpp",
MAME_DIR .. "src/mame/cinemat/nl_boxingb.h",
MAME_DIR .. "src/mame/cinemat/nl_cinemat_common.h",
MAME_DIR .. "src/mame/cinemat/nl_ripoff.cpp",
MAME_DIR .. "src/mame/cinemat/nl_ripoff.h",
MAME_DIR .. "src/mame/cinemat/nl_solarq.cpp",
MAME_DIR .. "src/mame/cinemat/nl_solarq.h",
MAME_DIR .. "src/mame/cinemat/nl_spacewar.cpp",
MAME_DIR .. "src/mame/cinemat/nl_spacewar.h",
MAME_DIR .. "src/mame/cinemat/nl_speedfrk.cpp",
MAME_DIR .. "src/mame/cinemat/nl_speedfrk.h",
MAME_DIR .. "src/mame/cinemat/nl_starcas.cpp",
MAME_DIR .. "src/mame/cinemat/nl_starcas.h",
MAME_DIR .. "src/mame/cinemat/nl_starhawk.cpp",
MAME_DIR .. "src/mame/cinemat/nl_starhawk.h",
MAME_DIR .. "src/mame/cinemat/nl_sundance.cpp",
MAME_DIR .. "src/mame/cinemat/nl_sundance.h",
MAME_DIR .. "src/mame/cinemat/nl_tailg.cpp",
MAME_DIR .. "src/mame/cinemat/nl_tailg.h",
MAME_DIR .. "src/mame/cinemat/nl_warrior.cpp",
MAME_DIR .. "src/mame/cinemat/nl_warrior.h",
MAME_DIR .. "src/mame/galaxian/galaxian.cpp",
MAME_DIR .. "src/mame/galaxian/galaxian.h",
MAME_DIR .. "src/mame/galaxian/galaxian_a.cpp",
MAME_DIR .. "src/mame/galaxian/galaxian_a.h",
MAME_DIR .. "src/mame/galaxian/galaxian_v.cpp",
MAME_DIR .. "src/mame/galaxian/nl_konami.h",
MAME_DIR .. "src/mame/galaxian/nl_konami.cpp",
MAME_DIR .. "src/mame/shared/cclimber_a.cpp",
MAME_DIR .. "src/mame/shared/cclimber_a.h",
MAME_DIR .. "src/mame/zaccaria/nl_zac1b11142.cpp",
MAME_DIR .. "src/mame/zaccaria/nl_zac1b11142.h",
MAME_DIR .. "src/mame/zaccaria/zaccaria_a.cpp",
MAME_DIR .. "src/mame/zaccaria/zaccaria_a.h",
MAME_DIR .. "src/mame/zaccaria/zaccaria.cpp",
MAME_DIR .. "src/mame/zaccaria/zaccaria.h",
MAME_DIR .. "src/mame/zaccaria/zaccaria_v.cpp",
MAME_DIR .. "src/mame/misc/cocoloco.cpp",
MAME_DIR .. "src/mame/misc/nl_cocoloco.h",
MAME_DIR .. "src/mame/misc/nl_cocoloco.cpp",
MAME_DIR .. "src/mame/skeleton/palestra.cpp",
MAME_DIR .. "src/mame/skeleton/nl_palestra.cpp",
MAME_DIR .. "src/mame/skeleton/nl_palestra.h",
MAME_DIR .. "src/mame/sega/vicdual.cpp",
MAME_DIR .. "src/mame/sega/vicdual.h",
MAME_DIR .. "src/mame/sega/vicdual_a.cpp",
MAME_DIR .. "src/mame/sega/vicdual_a.h",
MAME_DIR .. "src/mame/sega/nl_brdrline.cpp",
MAME_DIR .. "src/mame/sega/nl_brdrline.h",
MAME_DIR .. "src/mame/sega/nl_frogs.cpp",
MAME_DIR .. "src/mame/sega/nl_frogs.h",
MAME_DIR .. "src/mame/sega/vicdual-97271p.cpp",
MAME_DIR .. "src/mame/sega/vicdual-97271p.h",
MAME_DIR .. "src/mame/sega/vicdual_v.cpp",
MAME_DIR .. "src/mame/sega/vicdual-97269pb.cpp",
MAME_DIR .. "src/mame/sega/vicdual-97269pb.h",
MAME_DIR .. "src/mame/sega/carnival.cpp",
MAME_DIR .. "src/mame/sega/depthch.cpp",
MAME_DIR .. "src/mame/sega/invinco.cpp",
MAME_DIR .. "src/mame/sega/pulsar_a.cpp",
MAME_DIR .. "src/mame/shared/segacrpt_device.cpp",
MAME_DIR .. "src/mame/shared/segacrpt_device.h",
MAME_DIR .. "src/mame/sega/segag80r.cpp",
MAME_DIR .. "src/mame/sega/segag80r.h",
MAME_DIR .. "src/mame/sega/segag80_m.cpp",
MAME_DIR .. "src/mame/sega/segag80_m.h",
MAME_DIR .. "src/mame/sega/segag80r_a.cpp",
MAME_DIR .. "src/mame/sega/segag80r_a.h",
MAME_DIR .. "src/mame/sega/segag80r_v.cpp",
MAME_DIR .. "src/mame/sega/segag80v.cpp",
MAME_DIR .. "src/mame/sega/segag80v.h",
MAME_DIR .. "src/mame/sega/segag80.cpp",
MAME_DIR .. "src/mame/sega/segag80.h",
MAME_DIR .. "src/mame/sega/segaspeech.cpp",
MAME_DIR .. "src/mame/sega/segaspeech.h",
MAME_DIR .. "src/mame/sega/segausb.cpp",
MAME_DIR .. "src/mame/sega/segausb.h",
MAME_DIR .. "src/mame/sega/nl_astrob.cpp",
MAME_DIR .. "src/mame/sega/nl_astrob.h",
MAME_DIR .. "src/mame/sega/nl_elim.cpp",
MAME_DIR .. "src/mame/sega/nl_elim.h",
MAME_DIR .. "src/mame/sega/nl_spacfury.cpp",
MAME_DIR .. "src/mame/sega/nl_spacfury.h",
MAME_DIR .. "src/mame/sega/segag80v_v.cpp",
MAME_DIR .. "src/mame/sega/zaxxon.cpp",
MAME_DIR .. "src/mame/sega/zaxxon.h",
MAME_DIR .. "src/mame/sega/zaxxon_a.cpp",
MAME_DIR .. "src/mame/sega/zaxxon_v.cpp",
MAME_DIR .. "src/mame/sega/segas16b.cpp",
MAME_DIR .. "src/mame/sega/segas16b_isgsm.cpp",
MAME_DIR .. "src/mame/sega/segas16b.h",
MAME_DIR .. "src/mame/sega/segas16b_v.cpp",
MAME_DIR .. "src/mame/sega/nl_segas16b.cpp",
MAME_DIR .. "src/mame/sega/nl_segas16b.h",
MAME_DIR .. "src/mame/sega/nl_segausb.cpp",
MAME_DIR .. "src/mame/sega/nl_segausb.h",
MAME_DIR .. "src/mame/sega/nl_segaspeech.cpp",
MAME_DIR .. "src/mame/sega/nl_segaspeech.h",
MAME_DIR .. "src/mame/sega/315_5195.cpp",
MAME_DIR .. "src/mame/sega/315_5195.h",
MAME_DIR .. "src/mame/sega/fd1089.cpp",
MAME_DIR .. "src/mame/sega/fd1089.h",
MAME_DIR .. "src/mame/sega/fd1094.cpp",
MAME_DIR .. "src/mame/sega/fd1094.h",
MAME_DIR .. "src/mame/sega/segaic16_m.cpp",
MAME_DIR .. "src/mame/sega/segaic16_m.h",
MAME_DIR .. "src/mame/sega/sega16sp.cpp",
MAME_DIR .. "src/mame/sega/sega16sp.h",
MAME_DIR .. "src/mame/shared/mc8123.cpp",
MAME_DIR .. "src/mame/shared/mc8123.h",
MAME_DIR .. "src/mame/sega/segaic16.cpp",
MAME_DIR .. "src/mame/sega/segaic16.h",
MAME_DIR .. "src/mame/sega/segaic16_road.cpp",
MAME_DIR .. "src/mame/sega/segaic16_road.h",
MAME_DIR .. "src/mame/skeleton/testpat.cpp",
MAME_DIR .. "src/mame/skeleton/nl_tp1983.cpp",
MAME_DIR .. "src/mame/skeleton/nl_tp1983.h",
MAME_DIR .. "src/mame/skeleton/nl_tp1985.cpp",
MAME_DIR .. "src/mame/skeleton/nl_tp1985.h",
MAME_DIR .. "src/mame/ramtek/nl_starcrus.h",
MAME_DIR .. "src/mame/ramtek/nl_starcrus.cpp",
MAME_DIR .. "src/mame/ramtek/starcrus.cpp",
MAME_DIR .. "src/mame/ramtek/starcrus.h",
MAME_DIR .. "src/mame/ramtek/starcrus_v.cpp",
MAME_DIR .. "src/mame/exidy/nl_carpolo.h",
MAME_DIR .. "src/mame/exidy/nl_carpolo.cpp",
MAME_DIR .. "src/mame/exidy/carpolo.cpp",
MAME_DIR .. "src/mame/exidy/carpolo.h",
MAME_DIR .. "src/mame/exidy/carpolo_m.cpp",
MAME_DIR .. "src/mame/exidy/carpolo_v.cpp",
MAME_DIR .. "src/mame/exidy/nl_fireone.h",
MAME_DIR .. "src/mame/exidy/nl_fireone.cpp",
MAME_DIR .. "src/mame/exidy/nl_starfire.h",
MAME_DIR .. "src/mame/exidy/nl_starfire.cpp",
MAME_DIR .. "src/mame/exidy/starfire.cpp",
MAME_DIR .. "src/mame/exidy/starfire.h",
MAME_DIR .. "src/mame/exidy/starfire_v.cpp",
MAME_DIR .. "src/mame/ramtek/nl_starcrus.cpp",
MAME_DIR .. "src/mame/ramtek/nl_starcrus.h",
MAME_DIR .. "src/mame/ramtek/starcrus.cpp",
MAME_DIR .. "src/mame/ramtek/starcrus.h",
MAME_DIR .. "src/mame/ramtek/starcrus_v.cpp",
MAME_DIR .. "src/mame/atari/dragrace.cpp",
MAME_DIR .. "src/mame/atari/dragrace.h",
MAME_DIR .. "src/mame/atari/dragrace_a.cpp",
MAME_DIR .. "src/mame/atari/dragrace_v.cpp",
-- Skeletons ...
MAME_DIR .. "src/mame/misc/a1supply.cpp",
MAME_DIR .. "src/mame/alliedl/aleisttl.cpp",
MAME_DIR .. "src/mame/misc/bailey.cpp",
MAME_DIR .. "src/mame/misc/chicago.cpp",
MAME_DIR .. "src/mame/misc/crazybal.cpp",
MAME_DIR .. "src/mame/misc/electra.cpp",
MAME_DIR .. "src/mame/exidy/exidyttl.cpp",
MAME_DIR .. "src/mame/misc/fungames.cpp",
MAME_DIR .. "src/mame/meadows/meadwttl.cpp",
MAME_DIR .. "src/mame/sega/monacogp.cpp",
MAME_DIR .. "src/mame/misc/pse.cpp",
MAME_DIR .. "src/mame/ramtek/ramtek.cpp",
MAME_DIR .. "src/mame/sega/segattl.cpp",
MAME_DIR .. "src/mame/taito/taitottl.cpp",
MAME_DIR .. "src/mame/misc/usbilliards.cpp",
MAME_DIR .. "src/mame/jpm/jpmsru.cpp",
MAME_DIR .. "src/mame/jpm/nl_jpmsru.cpp",
MAME_DIR .. "src/mame/shared/fruitsamples.cpp",
MAME_DIR .. "src/mame/shared/fruitsamples.h",
MAME_DIR .. "src/mame/shared/awpvid.cpp",
MAME_DIR .. "src/mame/shared/awpvid.h",
}
end
function linkProjects_mame_nl(_target, _subtarget)
links {
"mame_netlist",
}
end

78
src/mame/nl.flt Normal file
View File

@ -0,0 +1,78 @@
////////////////////////////////
// CPU-based systems //
////////////////////////////////
atari/flyball.cpp
capcom/1942.cpp
cinemat/cinemat.cpp
exidy/carpolo.cpp
exidy/starfire.cpp
irem/m62.cpp
jpm/jpmsru.cpp
midway/sspeedr.cpp
misc/cocoloco.cpp
nintendo/mario.cpp
nintendo/popeye.cpp
ramtek/starcrus.cpp
sega/segag80r.cpp
sega/segag80v.cpp
sega/segas16b.cpp
sega/segas16b_isgsm.cpp
sega/zaxxon.cpp
skeleton/hazeltin.cpp
skeleton/palestra.cpp
skeleton/testpat.cpp
univers/cheekyms.cpp
vtech/gamemachine.cpp
zaccaria/zaccaria.cpp
// from midw8080/mw8080bw.cpp
+gunfight
+gunfighto
+280zzzap
+lagunar
// from sega/vicdual.cpp
+brdrlinb
+brdrline
+brdrlinet
+brdrlins
+starrkr
+tranqgun
+frogs
// extra parents to allow validation to pass
+afighter
+fantzone
+sdi
+shinobi
+tetris
////////////////////////////////
// Non-CPU systems //
////////////////////////////////
atari/atarittl.cpp
atari/pong.cpp
///////////////////////////////
// Skeletons //
///////////////////////////////
alliedl/aleisttl.cpp
exidy/exidyttl.cpp
meadows/meadows.cpp
misc/a1supply.cpp
misc/bailey.cpp
misc/chicago.cpp
misc/crazybal.cpp
misc/electra.cpp
misc/fungames.cpp
misc/pse.cpp
misc/usbilliards.cpp
ramtek/ramtek.cpp
sega/monacogp.cpp
sega/segattl.cpp
taito/taitottl.cpp

View File

@ -1,689 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/******************************************************************************
nl.lst
List of all drivers using netlist code. This file is parsed by then
genie build system.
******************************************************************************/
/* Use CPUs */
@source:capcom/1942.cpp
1942 // 12/1984 (c) 1984
1942a // 12/1984 (c) 1984
1942abl // bootleg
1942b // 12/1984 (c) 1984
1942w // 12/1984 (c) 1984 + Williams Electronics license (c) 1985
1942p // prototype
1942h // hack (Two Bit Score?)
/* FIXME: games commented out complain about being a clone of a game not in the driver */
@source:cinemat/cinemat.cpp
armora // (c) 1980
armorap // (c) 1980
armorar // (c) 1980 Cinematronics (Rock-ola license)
barrier // (c) 1979 Vectorbeam
boxingb // (c) 1981
demon // (c) 1982 Rock-ola
qb3 // (c) 1982 Rock-ola - prototype
ripoff // (c) 1980
solarq // (c) 1981
spaceftr // (c) 1981 Zaccaria
spaceshp // (c) 1978 Cinematronics (Sega licence)
spacewar // (c) 1977
speedfrk // (c) 1979 Vectorbeam
starcas // (c) 1980
starcas1 // (c) 1980
starcasc // (c) 1980
starcase // (c) 1980 Cinematronics (Mottoeis license)
starcasp // (c) 1980 prototype
starhawk // (c) 1979
stellcas // bootleg
sundance // (c) 1979
tailg // (c) 1979
warrior // (c) 1979 Vectorbeam
wotw // (c) 1981
wotwc // (c) 1981
@source:exidy/carpolo.cpp
carpolo // (c) 1977
@source:exidy/starfire.cpp
fireone // (c) 1979 Exidy
starfir2 // (c) 1979 Exidy
starfire // Exidy [1979?]
starfirea // Exidy [1979?]
@source:atari/flyball.cpp
flyball
@source:galaxian/galaxian.cpp
600 // GX353 (c) 1981 Konami
amidar // GX337 (c) 1982 Konami
amidar1 // GX337 (c) 1981 Konami
amidarb // bootleg
amidaro // GX337 (c) 1982 Konami + Olympia license
amidars // GX337 (c) 1982 Konami
amidaru // GX337 (c) 1982 Konami + Stern license
amigo // bootleg
amigo2 // bootleg
anteater // (c) 1982 Tago
anteaterg // (c) 1983 TV-Tuning (F.E.G. license)
anteatergg // bootleg
anteateruk // (c) 1983 Free Enterprise Games
aracnis // bootleg
armorcar // (c) 1981 Stern
armorcar2 // (c) 1981 Stern
asideral // bootleg
astrians //
atlantis // (c) 1981 Comsoft
atlantis2 // (c) 1981 Comsoft
atlantisb // bootleg
azurian // (c) 1982 Rait Electronics Ltd
//batman2 // bootleg
blkhole // TDS (Tokyo Denshi Sekkei) & MINTS
bomber //
calipso // (c) 1982 Tago
catacomb // 1982 MTM Games
checkman // (c) 1982 Zilec-Zenitone
checkmanj // (c) 1982 Jaleco (Zenitone/Zilec in ROM CM4, and the programmer names)
chewing // ?? unknown
//devilfsg // (c) 1984 Vision / Artic (bootleg?)
dingo // (c) 1983 Ashby Computers and Graphics LTD. + Jaleco license
dingoe // (c) 1983 Ashby Computers and Graphics LTD. + Jaleco license
eagle // [1980] Centuri
eagle2 // [1980] Centuri
eagle3 // [1980] Centuri
exodus // Subelectro - bootleg?
explorer // bootleg
fantastc // (c) Taito (Brazil) - rewrite of Galaga
fantazia // bootleg
frogf // bootleg
frogg // bootleg
frogger // GX392 (c) 1981 Konami
froggeram // bootleg
froggermc // 800-3110 (c) 1981 Sega
froggers // bootleg
froggers1 // (c) 1981 Sega
froggers2 // 834-0068 (c) 1981 Sega
froggers3 //
froggrs //
froggervd // Video Dens
fourplay // multigame
galap1 // hack
galap4 // hack
galapx // hack
galaxbsf // hack
galaxbsf2 // bootleg
galaxian // (c) Namco
galaxiana // (c) Namco
galaxianbl // bootleg
galaxianbl2 // bootleg
galaxiani // (c) Irem
galaxianm // (c) Midway
galaxianmo // (c) Midway
galaxiant // (c) Taito
galaxrcgg // bootleg (Recreativos Covadonga)
galaxrf // bootleg (Recreativos Franco)
galaxrfgg // bootleg (Recreativos Franco)
galemp // (c) Taito do Brasil
galturbo // hack
//ghostmun //
gmgalax // bootleg
gteikoku // (c) Irem
gteikokub // bootleg
gteikokub2 // bootleg
gteikokub3 // bootleg (Honly Enterprises)
jumpbug // (c) 1981 Rock-ola
jumpbugb // (c) 1981 Sega
//jungsub // bootleg
kamakazi3 // Video Games (UK) Ltd., hack or bootleg?
kamikazp // bootleg (Potomac Games)
kingball // (c) 1980 Namco
kingballj // (c) 1980 Namco
kong // (c) Taito (Brazil) - rewrite of Donkey Kong
//ladybugg // bootleg
levers // (c) 1983 Rock-ola
losttomb // (c) 1982 Stern
losttombh // (c) 1982 Stern
luctoday // 1980 Sigma
mandinga // bootleg (Artemi)
mandingaeg // bootleg (Electrogame)
mandingarf // bootleg (Recreativos Franco S.A.)
mandingac // bootleg (Centromatic)
mltiwars // bootleg (Gayton Games)
monsterz // (c) 1982 Nihon (Arcade TV Game List - P.102, Left, 20 from top)
moonal2 // [1980] Nichibutsu
moonal2b // [1980] Nichibutsu
moonaln // [Nichibutsu] (Karateco license) or hack
mooncmw // bootleg
mooncptc // bootleg (Petaco S.A.)
mooncreg // bootleg
mooncrgx // bootleg
mooncrs2 // bootleg
mooncrs3 // bootleg
mooncrs4 // bootleg
mooncrs5 // bootleg
mooncrsb // bootleg
mooncrsl // bootleg (Laguna S.A.)
mooncrst // (c) 1980 Nichibutsu
mooncrstg // (c) 1980 Gremlin
mooncrstso // (c) 1980 SegaSA / Sonic
mooncrsto // (c) 1980 Nichibutsu
mooncrstu // (c) 1980 Nichibutsu USA
mooncrstuk // (c) 1980 Nichibutsu UK
mooncrstuku // (c) 1980 Nichibutsu UK
moonqsr // (c) 1980 Nichibutsu
moonwar // (c) 1981 Stern
moonwara // (c) 1981 Stern
mshuttle // (c) 1981 Nichibutsu
mshuttle2 // (c) 1981 Nichibutsu
mshuttlea // (c) 1981 Nichibutsu
mshuttlej // (c) 1981 Nichibutsu
mshuttlej2 // (c) 1981 Nichibutsu
ncentury // bootleg (Petaco S.A.)
offensiv // bootleg (Video Dens)
omegab // bootleg
omni // bootleg
orbitron // (c) 1982 Signatron USA (Arcade Tv Game List - P.160, Left, 22 from top)
//pacmanbl // bootleg
//pacmanbla // bootleg
//pacmanblb // bootleg
//pacmanblv // bootleg (Video Dens)
pajaroes // bootleg
//phoenxp2 // bootleg
pisces // Subelectro
piscesb // bootleg
quaak // bootleg
redufo // (c) Artic
redufob // bootleg
redufob2 // bootleg
scobra // GX316 (c) 1981 Konami
scobrab // GX316 (c) 1981 Karateco (bootleg?)
scobrae // GX316 (c) 1981 Stern
scobrae2 //
scobrag // AVG by Zaccaria (bootleg?)
scobraggi // bootleg (Cocamatic)
scobras // GX316 (c) 1981 Stern
scobrase // GX316 (c) 1981 Sega
scorpion // (c) 1982 Zaccaria
scorpiona // (c) 1982 Zaccaria
scorpionb // (c) 1982 Zaccaria
scorpionmc // bootleg
scramble // GX387 (c) 1981 Konami
scramblebb // bootleg?
kamikazesp // bootleg (Euromatic S.A.)
scramblebf // bootleg
scrambles // GX387 (c) 1981 Stern
scrambles2 // GX387 (c) 1981 Stern
scrambp // bootleg (Billport S.A.)
scramce // bootleg (Centromatic S.A.)
scrammr // bootleg (Model Racing)
scrampt // bootleg (Petaco S.A.)
scramrf // bootleg (Recreativos Franco)
sfx // (c) 1983 Nichibutsu
skelagon // (c) 1983 Nichibutsu USA
skybase // (c) 1982 Omori Electric Co., Ltd.
skyraidr // bootleg
smooncrs // Gremlin
spacbat2 // bootleg
spacbatt // bootleg
spacempr // bootleg
spactrai //
spcdrag // bootleg
spctbird // (c) Fortrek
spdcoin // (c) 1984 Stern
sstarcrs // Taito (Brazil)
starfght // hack
starfgmc // bootleg
stera // bootleg
streakng // [1980] Shoei
streaknga // [1980] Shoei
strfbomb // bootleg
superbon // bootleg
superg // hack
supergs // Silver Systems hack
supergx // [1980] Nichibutsu
suprheli // bootleg
swarm // hack
tazmania // (c) 1982 Stern
tdpgal // 1983 Design Labs / Thomas Automatics
tenspot // (c) 1982 Thomas Automatics
theend // (c) 1980 Konami
takeoff // (c) 1980 Sidam (bootleg)
theends // (c) 1980 Stern
//thepitm // bootleg
timefgtr // (c) Taito (Brazil) - rewrite of Time Pilot
tst_galx // Galaxian Test ROM
turpin // (c) 1981 Sega
turpins // (c) 1981 bootleg
turtles // (c) 1981 Stern
uniwars // (c) Irem
uniwarsa // (c) Karateco
victoryc // (c) Comsoft
victorycb // (c) Comsoft (bootleg)
videight // multigame
warofbug // (c) 1981 Armenia
warofbugg // German Version
warofbugu // (c) 1981 Armenia
zerotime // hack (Petaco S.A.)
zerotimed // hack (Datamat)
zerotimemc // hack (Marti Colls)
zigzagb // (c) 1982 LAX (bootleg)
zigzagb2 // (c) 1982 LAX (bootleg)
@source:vtech/gamemachine.cpp
gamemach //
@source:skeleton/hazeltin.cpp
hazl1500 // Hazeltine 1500 (c) 1977
@source:jpm/jpmsru.cpp
j_ewn // Each Way Nudger (JPM)
j_ewna //
j_ewnb //
j_ewnc //
j_ndu // Nudge Double Up (JPM)
j_ndua //
j_ndub //
j_dud // Nudge Double Up Deluxe (JPM)
j_duda //
j_dudb //
j_dt //
j_lan // Lite A Nudge (JPM)
j_lana //
j_lanb //
j_super2 // Super 2
j_ews // Each Way Shuffle (JPM)
j_ewsa //
j_ewsb //
j_ewsdlx // Each Way Shuffle Deluxe (CTL)
j_ssh // Silver Shuffle (CTL)
j_lt // Lucky 2's (JPM)
j_ts //
j_plus2 // Plus 2 (CTL)
j_goldn2 // Golden 2's (CTL)
j_sup2p // Super 2p Shuffle (MDM)
j_la // Lucky Aces
@source:irem/m62.cpp // m62.cpp
battroad // (c) 1984
horizon // (c) 1985
kidniki // (c) 1986 + Data East USA license
kidnikiu // (c) 1986 + Data East USA license
kungfub // bootleg
kungfub2 // bootleg
kungfum // (c) 1984
kungfumd // (c) 1984 + Data East license
ldrun // (c) 1984 licensed from Broderbund
ldrun2 // (c) 1984 licensed from Broderbund
ldrun3 // (c) 1985 licensed from Broderbund
ldrun3j // (c) 1985 licensed from Broderbund
ldrun4 // (c) 1986 licensed from Broderbund
ldruna // (c) 1984 licensed from Broderbund
lithero // bootleg
lotlot // (c) 1985 licensed from Tokuma Shoten
spartanx // (c) 1984 (Japan)
spelunk2 // (c) 1986 licensed from Broderbund
spelunkr // (c) 1985 licensed from Broderbund
spelunkrj // (c) 1985 licensed from Broderbund
yanchamr // (c) 1986 (Japan)
youjyudn // (c) 1986 (Japan)
@source:nintendo/mario.cpp
mario // (c) 1983 Nintendo of America
mariof // (c) 1983 Nintendo of America
marioe // (c) 1983 Nintendo of America
marioj // (c) 1983 Nintendo
masao // bootleg
@source:midw8080/mw8080bw.cpp
gunfight // 597 [1975] Dave Nutting Associates / Midway
gunfighto // 597 [1975] Dave Nutting Associates / Midway
280zzzap // 610 [1976] Dave Nutting Associates / Midway
lagunar // 622 [1977] Midway
@source:skeleton/palestra.cpp
palestra
@source:nintendo/popeye.cpp
skyskipr
popeye // (c) 1982
popeyeu // (c) 1982
popeyef // (c) 1982
popeyebl // bootleg
popeyeb2 // bootleg
popeyeb3 // bootleg
popeyej
popeyejo
popeyehs
@source:sega/segag80r.cpp
005 // (c) 1981
astrob // (c) 1981
astrob1 // (c) 1981
astrob2 // (c) 1981
astrob2a // (c) 1981
astrob2b // (c) 1981
astrobg // (c) 1981
monsterb // (c) 1982
monsterb2 // (c) 1982
pignewt // (c) 1983
pignewta // (c) 1983
sindbadm // 834-5244 (c) 1983 Sega
spaceod // (c) 1981
spaceod2 // (c) 1981
@source:sega/segag80v.cpp
elim2 // (c) 1981 Gremlin
elim2a // (c) 1981 Gremlin
elim2c // (c) 1981 Gremlin
elim4 // (c) 1981 Gremlin
elim4p // (c) 1981 Gremlin
spacfury // (c) 1981
spacfurya // no copyright notice
spacfuryb // no copyright notice
startrek // (c) 1982
tacscan // (c) 1982
zektor // (c) 1982
@source:sega/vicdual.cpp
brdrlinb // Karateco bootleg
brdrline // (c) 1980 Sega
brdrlinet // (c) 1981 Sega
brdrlins // Sidam bootleg
starrkr // (c) 1981 Sega
tranqgun // 413-428 (c) 1980 Sega
frogs // 112-119 [1978 Gremlin?]
@source:sega/zaxxon.cpp
congo // 605-5167 (c) 1983 (2 board stack)
congoa // 605-5167 (c) 1983 (3 board stack)
futspy // (c) 1984
ixion // (c) 1983
razmataz // modified 834-0213, 834-0214 (c) 1983
szaxxon // (c) 1982
tiptop // 605-5167 (c) 1983 (3 board stack)
zaxxon // (c) 1982
zaxxon2 // (c) 1982
zaxxon3 // (c) 1982
zaxxonb // bootleg
zaxxonj // (c) 1982
@source:sega/segas16b.cpp
aceattac // (c) 1988 (FD1094)
//afightere
//afighterf
//afighterg
//afighterh
aliensyn // (c) 1987 (Unprotected)
aliensyn3 // (c) 1987 (FD1089A)
aliensyn7 // (c) 1987 (MC-8123B)
aliensynj // (c) 1987 (FD1089A)
altbeast // (c) 1988 (8751)
altbeast2 // (c) 1988 (MC-8123B)
altbeast4 // (c) 1988 (MC-8123B)
altbeast5 // (c) 1988 (FD1094)
altbeast5d //
altbeast6 // (c) 1988 (8751)
altbeastj // (c) 1988 (8751)
altbeastj1 // (c) 1988 (protected)
altbeastj3 // (c) 1988 (FD1094)
altbeastj3d //
atomicp // (c) 1990 Philko - korean clone board
aurail // (c) 1990 Sega / Westone
aurail1 // (c) 1990 Sega / Westone (FD1089B)
aurail1d //
aurailj // (C) 1990 Sega / Westone (FD1089A)
aurailjd //
bayroute // (c) 1989 Sunsoft / Sega (FD1094)
bayroute1 // (c) 1989 Sunsoft / Sega (Unprotected)
bayrouted //
bayroutej // (c) 1989 Sunsoft / Sega (FD1094)
bayroutejd //
bullet // (c) 1987 (FD1094)
bulletd //
cencourt // (c) 1988 (MC-8123B)
cotton // (c) 1990 (FD1094)
cottond //
cottonj // (c) 1990 (FD1094)
cottonja // (c) 1990 (FD1094)
cottonjad //
cottonjd //
cottonu // (c) 1990 (FD1094)
cottonud //
ddux // (c) 1989 (FD1094)
ddux1 // (c) 1989 (8751)
dduxd //
dduxj // (c) 1989 (FD1094)
dduxjd //
//defense // (c) 1987 (FD1094)
dfjail //
dunkshot // (c) 1986 (FD1089A)
dunkshota // (c) 1986 (FD1089A)
dunkshoto // (c) 1986 (FD1089A)
eswat // (c) 1989 (FD1094)
eswatd //
eswatj // (c) 1989 (FD1094)
eswatj1 // (c) 1989 (FD1094)
eswatj1d //
eswatjd //
eswatu // (c) 1989 (FD1094)
eswatud //
exctleag // (c) 1988 (FD1094)
exctleagd //
fantzn2x // (c) 2008 Sega / M2
fantzn2xp // (c) 2008 Sega / M2
//fantzoneta // (c) 2008 Sega / M2 (bootleg conversion)
fpoint // (c) 1989 (Japan, FD1094)
fpoint1 // (c) 1989 (Japan, FD1094)
fpoint1d //
fpointbj // (c) 1989 (Datsu bootleg, Japan)
fpointbl // (c) 1989 (Datsu bootleg)
fpointbla //
fpointd //
goldnaxe // (c) 1989 (8751)
goldnaxe1 // (c) 1989 (FD1094)
goldnaxe1d //
goldnaxe2 // (c) 1989 (8751)
goldnaxe3 // (c) 1989 (FD1094)
goldnaxe3d //
goldnaxej // (c) 1989 (FD1094)
goldnaxejd //
goldnaxeu // (c) 1989 (FD1094)
goldnaxeud //
hwchamp // (c) 1987 (Unprotected)
hwchampj // (c) 1987 (FD1094)
hwchampjd //
lockonph //
mvp // (c) 1989 (FD1094)
mvpd //
mvpj // (c) 1989 (FD1094)
mvpjd //
passsht // (c) 1988 (FD1094)
passshta // (c) 1988 (FD1094)
passshtad //
passshtd //
passshtj // (c) 1988 (FD1094)
passshtjd //
riotcity // (c) 1991 Sega / Westone (Unprotected)
ryukyu // (c) 1990 (FD1094)
ryukyua // (c) 1990 (FD1094)
ryukyud //
//sdib // (c) 1987 (FD1089A)
//sdibl // (c) 1987 bootleg
//sdibl2 // bootleg
//sdibl3 // bootleg
//sdibl4 // bootleg
//sdibl5 // bootleg
//sdibl6 // bootleg
//shinobi2 // (c) 1987 (FD1094)
//shinobi2d //
//shinobi3 // (c) 1987 (MC-8123B)
//shinobi4 // (c) 1987 (MC-8123B)
//shinobi5 // (c) 1987 (Unprotected)
//shinobi6 // (c) 1987 (Unprotected)
sjryuko // (c) 1988 White Board (FD1094)
snapper // (c) 1990 Philko - korean clone board
sonicbom // (c) 1987 (FD1094)
sonicbomd //
suprleag // (c) 1987 (FD1094)
//tetris1 // (c) 1988 (FD1094) S16B
//tetris1d //
//tetris2 // (c) 1988 (FD1094) S16B
//tetris2d //
timescan // (c) 1987 (Unprotected)
toryumon // (c) 1995 (Unprotected)
tturf // (c) 1989 Sega / Sunsoft (8751)
tturfu // (c) 1989 Sega / Sunsoft (8751)
ultracin // (c) 1996 Sega (Unprotected)
wb3 // (c) 1988 Sega / Westone (8751)
wb32 // (c) 1988 Sega / Westone (FD1094)
wb32d //
wb33 // (c) 1988 Sega / Westone (FD1094)
wb33d //
wb34 // (c) 1988 Sega / Westone (FD1094)
wb34d //
wrestwar // (c) 1989 (8751)
wrestwar1 // (c) 1989 (FD1094)
wrestwar1d //
wrestwar2 // (c) 1989 (FD1094)
wrestwar2d //
@source:sega/segas16b_isgsm.cpp
isgsm //
shinfz //
tetrbx //
@source:midway/sspeedr.cpp
sspeedr // Midway
@source:ramtek/starcrus.cpp
starcrus
@source:skeleton/testpat.cpp
tp1983
tp1985
/******************************************************************************/
/* Do not use CPUs */
@source:atari/atarittl.cpp
antiairc // (c) 1975 Atari
crashnsc // (c) 1975 Atari
gtrak10 // (c) 1974 Atari / Kee
gtrak10a // (c) 1974 Atari / Kee
gtrak20 // (c) 1974 Atari / Kee
indy4 // (c) 1976 Atari / Kee
indy800 // (c) 1975 Atari / Kee
jetfight // (c) 1975 Atari
jetfighta // (c) 1975 Atari
lemans // (c) 1976 Atari
outlaw // (c) 1976 Atari
qwakttl // (c) 1974 Atari
sharkjaw // (c) 1975 Atari / Horror Games
steeplec // (c) 1975 Atari
stuntcyc // (c) 1976 Atari
tank // (c) 1974 Atari / Kee
tankii // (c) 1975 Atari / Kee
@source:atari/pong.cpp
breakout // (c) 1976 Atari
pong // (c) 1972 Atari
pongd // (c) 1973 Atari
rebound //
@source:univers/cheekyms.cpp
cheekyms // 8004 (c) [1980?]
@source:misc/cocoloco.cpp
cocoloco // 198?, Petaco S.A.
cocolocoa // 198?, Recel S.A.
cocolocob // 198?, Petaco S.A.
@source:zaccaria/zaccaria.cpp
jackrabt // (c) 1984
jackrabt2 // (c) 1984
jackrabts // (c) 1984
monymony // (c) 1983
// ******************************************************************************
// Skeletons
// ******************************************************************************
@source:misc/a1supply.cpp
tv21 // (c) 197? A-1 Supply
tv21_3 // (c) 197? A-1 Supply
tvpoker // (c) 197? A-1 Supply
@source:alliedl/aleisttl.cpp
sburners // (c) 1975 Allied Leisure
@source:misc/bailey.cpp
fun4 // (c) 1976 Bailey
fun4a // (c) 1976 Bailey
@source:misc/chicago.cpp
dmodrbcc // (c) 1976 Chicago Coin
@source:misc/crazybal.cpp
crazybal // (c) 1978 EGS
@source:misc/electra.cpp
avenger // (c) 1975 Electra
@source:exidy/exidyttl.cpp
attckexd // (c) 1977 Exidy
attckexd2 // (c) 1977 Exidy
deathrac // (c) 1976 Exidy
rhunting // bootleg of deathrac
@source:misc/fungames.cpp
biplane // (c) 1975 Fun Games
biplane4 // (c) 1976 Fun Games
take5 // (c) 1975 Fun Games
@source:meadows/meadwttl.cpp
bombaway // (c) 1976 Meadows
cgunship // (c) 1976 Meadows
ckidzo // (c) 1976 Meadows
mead4in1 // (c) 197? Meadows
@source:sega/monacogp.cpp
monacogp // (c) 1980 Sega
monacogpa // (c) 1980 Sega
@source:misc/pse.cpp
bazooka // (c) 1976 PSE
bazookabr // (c) 1977 Taito do Brasil
dpatrol // (c) 1977 PSE
dpatrola // (c) 1977 PSE / Telegames
gametree // (c) 1978 PSE
@source:ramtek/ramtek.cpp
bballrmt // (c) 1974 Ramtek
cleanswp // (c) 1974 Ramtek
hockyrmt // (c) 1973 Ramtek
soccrrmt // (c) 1973 Ramtek
trivia // (c) 1976 Ramtek
vollyrmt // (c) 1973 Ramtek
wipeormt // (c) 1974 Ramtek
@source:sega/segattl.cpp
fonz //
@source:taito/taitottl.cpp
fisco400 // (c) 1977 Taito
gunman // (c) 1977 Taito
missilex // (c) 1977 Taito
ttblock // (c) 1977 Taito
ttsracec // (c) 1978 Taito
zzblock // (c) 1979 Taito
@source:misc/usbilliards.cpp
sharkusb // (c) 1975 US Billiards

View File

@ -1,201 +0,0 @@
#!/usr/bin/python
import argparse
import glob
import os
import os.path
import re
import subprocess
import sys
def parse_command():
parser = argparse.ArgumentParser()
parser.add_argument('srcroot', metavar='<srcroot>', help='MAME source root directory')
return parser.parse_args()
def resolve_conflicts(root, *parts):
def walk(subdir):
for path, subdirs, files in os.walk(os.path.join(root, subdir)):
if len(subdirs):
raise Exception('Found %d unwanted subdirectories in %s' % (len(subdirs), path))
return files
present = set()
result = {}
for part in parts:
c = part[0]
for file in walk(part):
if file in present:
base, ext = os.path.splitext(file)
if not ext:
raise Exception('File %s has no extension' % (file, ))
nf = base + '_' + c + ext
#print('%s -> %s' % (os.path.join(part, file), nf))
if nf in present:
raise Exception('File %s still conflicted after renaming from %s' % (nf, file))
else:
nf = file
present.add(nf)
result[part + '/' + file] = nf
return result
def update_projects(root, renaming, *scripts):
keys = ('createMAMEProjects', 'createMESSProjects')
result = { 'video/konamiic.txt': 'konami' }
bad = False
for script in scripts:
fname = os.path.join(root, 'scripts', 'target', 'mame', script)
with open(fname, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
cp = None
with open(fname, 'w', encoding='utf-8') as f:
for l in lines:
ls = l.rstrip('\r\n')
for kk in keys:
p = ls.find(kk)
if p == 0 or p == 1:
p = ls.find('"')+1
p2 = ls.find('"', p)
cp = ls[p:p2]
if cp == 'mameshared':
cp = None
p = ls.find('MAME_DIR .. "src/mame/')
if p != -1:
p2 = ls.find('"', p + 22)
fn = ls[p+22:p2]
if cp is not None:
if fn in result:
print("Duplicated: %s (%s and %s)" % (fn, cp, result[fn]))
bad = True
result[fn] = cp
ap = cp
else:
if fn not in result:
bad = True
#print("Missing in projects and seen in another .lua: %s" % fn)
ap = '?'
else:
ap = result[fn]
ls = ls[:p+22] + ap + '/' + renaming[fn] + ls[p2:]
print(ls, file=f)
for k in renaming:
if k not in result:
print('Missing in projects: %s' % (k, ))
bad = True
if bad:
raise Exception('Error updating project scripts')
return result
def update_driver_list(fname, renaming, projectmap):
with open(fname, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
with open(fname, 'w', encoding='utf-8') as outfile:
for l in lines:
ls = l.rstrip('\r\n')
match = re.match('(.*@source:)([-_0-9a-z]+\\.cpp)\\b(\s*)(.*)', ls)
if match:
f = 'drivers/' + match.group(2)
r = projectmap[f] + '/' + renaming.get(f, match.group(2))
if match.group(3):
w = len(match.group(2)) + len(match.group(3))
if len(r) < w:
r = r + (' ' * (w - len(r)))
else:
r = r + ' '
print(match.group(1) + r + match.group(4), file=outfile)
else:
print(ls, file=outfile)
def update_driver_filter(fname, renaming, projectmap):
with open(fname, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
with open(fname, 'w', encoding='utf-8') as outfile:
for l in lines:
ls = l.rstrip('\r\n')
match = re.match('(.*)(?<![-_0-9a-z])([-_0-9a-z]+\\.cpp)\\b(.*)', ls)
if match:
f = 'drivers/' + match.group(2)
b = renaming.get(f, match.group(2))
print(match.group(1) + projectmap[f] + '/' + b + match.group(3), file=outfile)
else:
print(ls, file=outfile)
def relocate_source(root, filename, destbase, renaming, projectmap):
fsx = filename.split('/')
destproject = projectmap[filename]
sourcepath = os.path.join(root, 'src', 'mame', fsx[0], fsx[1])
destpath = os.path.join(root, 'src', 'mame', destproject, destbase)
with open(sourcepath, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
subprocess.run(['git', '-C', root, 'mv', os.path.join('src', 'mame', fsx[0], fsx[1]), os.path.join('src', 'mame', destproject, destbase)])
# Patch the include paths as needed
with open(destpath, 'w', encoding='utf-8') as fdh:
for l in lines:
p0 = 0
while l[p0] == ' ' or l[p0] == '\t':
p0 += 1
if l[p0:p0+8] == '#include':
itype = '"'
si = l.find('"')
if si != -1:
si += 1
ei = l.find('"', si)
fi = l[si:ei]
fix = fi.split('/')
fik = None
if len(fix) == 2:
fik = fi
elif len(fix) == 1:
fik = fsx[0] + '/' + fi
if (fik is not None) and (fik in projectmap):
fim = fpmap[fik]
if fim == destproject:
nfi = renaming[fik]
else:
nfi = fim + '/' + renaming[fik]
l = l[:si] + nfi + l[ei:]
fdh.write(l)
if __name__ == '__main__':
options = parse_command()
src = os.path.join(options.srcroot, 'src', 'mame')
areas = ('includes', 'drivers', 'audio', 'video', 'machine')
# Compute the future name of the files to avoid collisions
renaming = resolve_conflicts(src, *areas)
# Update the .lua files, lookup the per-file target names
fpmap = update_projects(options.srcroot, renaming, 'arcade.lua', 'mess.lua', 'ci.lua', 'dummy.lua', 'nl.lua', 'tiny.lua', 'virtual.lua')
# update .lst list files
for flt in glob.glob(os.path.join(src, '*.lst')):
update_driver_list(flt, renaming, fpmap)
# update .flt filter files
for flt in glob.glob(os.path.join(src, '*.flt')):
update_driver_filter(flt, renaming, fpmap)
# Create the new subdirectories
for d in fpmap.values():
os.makedirs(os.path.join(src, d), exist_ok=True)
# Move the files around
for fs, bfd in renaming.items():
relocate_source(options.srcroot, fs, bfd, renaming, fpmap)
for d in areas:
os.rmdir(os.path.join(src, d))